work towards a clean compile on migrating set and get variables from Tag.
This commit is contained in:
1 parent
2549220914
commit
5c27df59da
25 files changed
+178
-306
No files matched your search
+6
-19
@@ -14,16 +14,14 @@ namespace jet {
|
||||
throw coreutils::Exception("call tag cannot have a container.");
|
||||
if(!keywordDefined("pgm"))
|
||||
throw coreutils::Exception("pgm keyword must be specified.");
|
||||
resolveKeyword("pgm");
|
||||
for(ix = 0; ix <= 50; ++ix)
|
||||
argv[ix] = NULL;
|
||||
argv[0] = keywords["pgm"].c_str(); // TODO: Need to peel off the program name only and pass as argv[0].
|
||||
argv[0] = keywords[resolveKeyword("pgm")].c_str(); // TODO: Need to peel off the program name only and pass as argv[0].
|
||||
for(ix = 1; ix <= 50; ++ix) {
|
||||
coreutils::MString arg("arg");
|
||||
arg << ix;
|
||||
if(keywordDefined(arg)) {
|
||||
resolveKeyword(arg);
|
||||
argv[ix] = keywords[arg].c_str();
|
||||
argv[ix] = keywords[resolveKeyword(arg)].c_str();
|
||||
} else
|
||||
break;
|
||||
}
|
||||
@@ -33,8 +31,7 @@ namespace jet {
|
||||
close(fdo[0]);
|
||||
dup2(fdo[1], 1);
|
||||
if(keywordDefined("input")) {
|
||||
resolveKeyword("input");
|
||||
coreutils::ZString input(variables["input"]);
|
||||
coreutils::ZString input(variables[resolveKeyword("input")]);
|
||||
pipe(fdi);
|
||||
if(fork() == 0) {
|
||||
close(fdi[0]);
|
||||
@@ -45,28 +42,18 @@ namespace jet {
|
||||
close(fdi[1]);
|
||||
dup2(fdi[0], 0);
|
||||
}
|
||||
rc = execvpe(variables["pgm"].c_str(), argv, global.envp);
|
||||
rc = execvpe(variables[resolveKeyword("pgm")].c_str(), argv, global.envp);
|
||||
close(fdo[1]);
|
||||
exit(errno);
|
||||
}
|
||||
close(fdo[1]);
|
||||
if(keywordDefined("name")) {
|
||||
resolveKeyword("name");
|
||||
if(!keywordDefined("scope") || (keywords["scope"] == "global"))
|
||||
global.variables[keywords["name"]].read(fdo[0]);
|
||||
else if(keywords["scope"] == "local")
|
||||
this->local->variables[keywords["name"]].read(fdo[0]);
|
||||
else if(keywords["scope"] == "parent")
|
||||
this->local->parent->local->variables[keywords["name"]].read(fdo[0]);
|
||||
else
|
||||
throw coreutils::Exception("scope value is not valid.");
|
||||
|
||||
storeVariable(keywords[resolveKeyword("name")]);
|
||||
} else
|
||||
out.read(fdo[0]);
|
||||
waitpid(pid, &status, 0);
|
||||
if(keywordDefined("error")) {
|
||||
resolveKeyword("error");
|
||||
global.variables[keywords["error"]] = (status >> 8 & 255);
|
||||
global.variables[keywords[resolveKeyword("error")]] = (status >> 8 & 255);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user