~ chicken-core (chicken-5) e0bfebabd53694a2ce18157edda87bc9a013c4f3
commit e0bfebabd53694a2ce18157edda87bc9a013c4f3 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Mon Apr 3 21:50:18 2017 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Mon Apr 3 21:50:18 2017 +0200 chicken-do: all wrong, of course diff --git a/chicken-do.c b/chicken-do.c index 0adf99a4..7c21b0a2 100644 --- a/chicken-do.c +++ b/chicken-do.c @@ -87,7 +87,7 @@ static int execute(char **argv) exit(1); } - exit(code); + return code; #else pid_t child = fork(); @@ -114,14 +114,9 @@ static int execute(char **argv) exit(1); } - if(WIFEXITED(status)) { - int s = WEXITSTATUS(status); - - if(s != 0) cleanup(); + if(WIFEXITED(status)) + return WEXITSTATUS(status); - exit(s); - } - if(WIFSIGNALED(status)) { fprintf(stderr, "subprocess killed by signal %d\n", WTERMSIG(status)); cleanup(); @@ -191,5 +186,9 @@ build: fflush(stdout); } - execute(args); + int s = execute(args); + + if(s != 0) cleanup(); + + return s; }Trap