fixed the call tag.

This commit is contained in:
barant 2025-01-09 07:54:22 -08:00
parent 83321a2f43
commit 4a17002d22

View File

@ -16,12 +16,12 @@ namespace jet {
throw coreutils::Exception("pgm keyword must be specified."); throw coreutils::Exception("pgm keyword must be specified.");
for(ix = 0; ix <= 50; ++ix) for(ix = 0; ix <= 50; ++ix)
argv[ix] = NULL; argv[ix] = NULL;
argv[0] = keywords[resolveKeyword("pgm")].c_str(); // TODO: Need to peel off the program name only and pass as argv[0]. argv[0] = resolveKeyword("pgm").c_str(); // TODO: Need to peel off the program name only and pass as argv[0].
for(ix = 1; ix <= 50; ++ix) { for(ix = 1; ix <= 50; ++ix) {
coreutils::MString arg("arg"); coreutils::MString arg("arg");
arg << ix; arg << ix;
if(keywordDefined(arg)) { if(keywordDefined(arg)) {
argv[ix] = keywords[resolveKeyword(arg)].c_str(); argv[ix] = resolveKeyword(arg).c_str();
} else } else
break; break;
} }
@ -31,7 +31,7 @@ namespace jet {
close(fdo[0]); close(fdo[0]);
dup2(fdo[1], 1); dup2(fdo[1], 1);
if(keywordDefined("input")) { if(keywordDefined("input")) {
coreutils::ZString input(variables[resolveKeyword("input")]); coreutils::ZString input(resolveKeyword("input"));
pipe(fdi); pipe(fdi);
if(fork() == 0) { if(fork() == 0) {
close(fdi[0]); close(fdi[0]);
@ -42,18 +42,18 @@ namespace jet {
close(fdi[1]); close(fdi[1]);
dup2(fdi[0], 0); dup2(fdi[0], 0);
} }
rc = execvpe(variables[resolveKeyword("pgm")].c_str(), argv, global.envp); rc = execvpe(resolveKeyword("pgm").c_str(), argv, global.envp);
close(fdo[1]); close(fdo[1]);
exit(errno); exit(errno);
} }
close(fdo[1]); close(fdo[1]);
if(keywordDefined("name")) { if(keywordDefined("name")) {
storeVariable(keywords[resolveKeyword("name")]); storeVariable(resolveKeyword("name"));
} else } else
out.read(fdo[0]); out.read(fdo[0]);
waitpid(pid, &status, 0); waitpid(pid, &status, 0);
if(keywordDefined("error")) { if(keywordDefined("error")) {
global.variables[keywords[resolveKeyword("error")]] = (status >> 8 & 255); global.variables[resolveKeyword("error")] = (status >> 8 & 255);
} }
} }