Mercurial > hg > octave-lojdl > gnulib-hg
changeset 6759:5d118b8eb6a4
* lib/wait-process.h (wait_subprocess): Accept a new exitsignal argument.
* lib/wait-process.c (wait_subprocess): Always set *exitsignal to 0 when
present and set it to the offending signal when the child exits due to
a signal.
* lib/csharpcomp.c, lib/execute.c, lib/javacomp.c: Update all callers.
author | Derek R. Price <derek@ximbiot.com> |
---|---|
date | Tue, 25 Apr 2006 20:58:26 +0000 |
parents | 31433c96e3b7 |
children | 3b3881a78c10 |
files | lib/ChangeLog lib/csharpcomp.c lib/execute.c lib/javacomp.c lib/wait-process.c lib/wait-process.h |
diffstat | 6 files changed, 21 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,11 @@ +2006-04-25 Derek Price <derek@ximbiot.com> + + * wait-process.h (wait_subprocess): Accept a new exitsignal argument. + * wait-process.c (wait_subprocess): Always set *exitsignal to 0 when + present and set it to the offending signal when the child exits due to + a signal. + * csharpcomp.c, execute.c, javacomp.c: Update all callers. + 2006-04-25 Paul Eggert <eggert@cs.ucla.edu> * getdate.y (get_date): When adding relative date, start with the
--- a/lib/csharpcomp.c +++ b/lib/csharpcomp.c @@ -295,7 +295,8 @@ fclose (fp); /* Remove zombie process from process list, and retrieve exit status. */ - exitstatus = wait_subprocess (child, "mcs", false, false, true, true); + exitstatus = wait_subprocess (child, "mcs", NULL, false, false, true, + true); for (i = 0; i < sources_count; i++) if (argv[argc - sources_count + i] != sources[i]) @@ -366,7 +367,7 @@ /* Remove zombie process from process list, and retrieve exit status. */ exitstatus = - wait_subprocess (child, "csc", false, true, true, false); + wait_subprocess (child, "csc", NULL, false, true, true, false); if (exitstatus != 0) csc_present = false; }
--- a/lib/execute.c +++ b/lib/execute.c @@ -308,7 +308,7 @@ unblock_fatal_signals (); } - return wait_subprocess (child, progname, ignore_sigpipe, null_stderr, + return wait_subprocess (child, progname, NULL, ignore_sigpipe, null_stderr, slave_process, exit_on_error); #endif
--- a/lib/javacomp.c +++ b/lib/javacomp.c @@ -240,7 +240,7 @@ /* Remove zombie process from process list, and retrieve exit status. */ exitstatus = - wait_subprocess (child, "gcj", false, true, true, false); + wait_subprocess (child, "gcj", NULL, false, true, true, false); if (exitstatus != 0) gcj_present = false; }
--- a/lib/wait-process.c +++ b/lib/wait-process.c @@ -251,7 +251,7 @@ If it didn't terminate correctly, exit if exit_on_error is true, otherwise return 127. */ int -wait_subprocess (pid_t child, const char *progname, +wait_subprocess (pid_t child, const char *progname, int *exitsignal, bool ignore_sigpipe, bool null_stderr, bool slave_process, bool exit_on_error) { @@ -345,6 +345,7 @@ WAIT_T status; *(int *) &status = 0; + if (exitsignal) *exitsignal = 0; for (;;) { int result = waitpid (child, &status, 0); @@ -394,6 +395,7 @@ error (exit_on_error ? EXIT_FAILURE : 0, 0, _("%s subprocess got fatal signal %d"), progname, (int) WTERMSIG (status)); + if (exitsignal) *exitsignal = WTERMSIG (status); return 127; } if (WEXITSTATUS (status) == 127)
--- a/lib/wait-process.h +++ b/lib/wait-process.h @@ -34,11 +34,14 @@ /* Wait for a subprocess to finish. Return its exit code. If it didn't terminate correctly, exit if exit_on_error is true, otherwise - return 127. + return 127 and set exitsignal if the child terminated because of a signal. Arguments: - child is the pid of the subprocess. - progname is the name of the program executed by the subprocess, used for error messages. + - exitsignal is an optional pointer to an int to hold the signal number of + any signal that caused the child to exit. It will be set to zero if this + function exits with an error not caused by the child catching a signal. - If ignore_sigpipe is true, consider a subprocess termination due to SIGPIPE as equivalent to a success. This is suitable for processes whose only purpose is to write to standard output. This flag can be safely set @@ -50,6 +53,7 @@ - If exit_on_error is true, any error will cause the main process to exit with an error status. */ extern int wait_subprocess (pid_t child, const char *progname, + int *exitsignal, bool ignore_sigpipe, bool null_stderr, bool slave_process, bool exit_on_error);