Skip to content

Commit ae7ea47

Browse files
author
olevole
committed
jexec_env: get error code from child process, #816
1 parent 506563e commit ae7ea47

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

misc/src/jexec_env.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ int execute_cmd(char *jname, char **argv)
4343
int home_set=0, jexec_index=0, freebsd_ver=0;
4444
FILE *fp;
4545
char buffer[128];
46+
int status=0;
47+
int errcode=0;
4648

4749
if (!workdir) {
4850
fprintf(stderr, "Environment variable 'workdir' is not set.\n");
@@ -143,28 +145,27 @@ int execute_cmd(char *jname, char **argv)
143145
// fprintf(stderr, "No command specified.\n");
144146
// exit(1);
145147
// }
146-
147148
// Execute the command with the new environment
148149
execv("/usr/sbin/jexec", jexec_argv);
149150
// If execv returns, it failed
150151
perror("execv failed");
151152
exit(1);
152153
} else if (pid > 0) {
153-
wait(NULL);
154+
waitpid(pid, &status, 0);
155+
errcode=WEXITSTATUS(status);
154156
} else {
155157
perror("fork failed");
156158
exit(1);
157159
}
158160

159-
return 0;
161+
return errcode;
160162
}
161163

162164
int main(int argc, char **argv)
163165
{
166+
int errcode=0;
164167
char *jname = NULL;
165-
166168
jname=argv[1];
167-
168-
execute_cmd(jname, argv);
169-
return 0;
169+
errcode=execute_cmd(jname, argv);
170+
exit(errcode);
170171
}

0 commit comments

Comments
 (0)