fixed the call tag.
This commit is contained in:
parent
83321a2f43
commit
4a17002d22
12
__call.cpp
12
__call.cpp
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user