From: Bruno Haible <bruno@clisp.org>
Date: Sun, 1 Mar 2009 17:12:43 +0000 (+0100)
Subject: Omit an error message that the caller can do better.
X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f3597013e3eb1aa59d16aa6c453fd806859b9898;p=pspp

Omit an error message that the caller can do better.
---

diff --git a/ChangeLog b/ChangeLog
index 55ece94b29..79726a80ab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2009-03-01  Eric Blake  <ebb9@byu.net>
+            Bruno Haible  <bruno@clisp.org>
+
+	* lib/wait-process.h (wait_subprocess): Describe effect of termsigp on
+	error messages.
+	* lib/wait-process.c (wait_subprocess): Omit error message about
+	deadly signal sent to the child of termsigp != NULL.
+
 2009-03-01  Eric Blake  <ebb9@byu.net>
 
 	* lib/wait-process.c (wait_subprocess): Remove unnecessary cast.
diff --git a/lib/wait-process.c b/lib/wait-process.c
index 45bb4574ff..cf55ec19e9 100644
--- a/lib/wait-process.c
+++ b/lib/wait-process.c
@@ -269,7 +269,7 @@ wait_subprocess (pid_t child, const char *progname,
       if (info.si_status == SIGPIPE && ignore_sigpipe)
 	return 0;
 # endif
-      if (exit_on_error || !null_stderr)
+      if (exit_on_error || (!null_stderr && termsigp == NULL))
 	error (exit_on_error ? EXIT_FAILURE : 0, 0,
 	       _("%s subprocess got fatal signal %d"),
 	       progname, info.si_status);
@@ -341,7 +341,7 @@ wait_subprocess (pid_t child, const char *progname,
       if (WTERMSIG (status) == SIGPIPE && ignore_sigpipe)
 	return 0;
 # endif
-      if (exit_on_error || !null_stderr)
+      if (exit_on_error || (!null_stderr && termsigp == NULL))
 	error (exit_on_error ? EXIT_FAILURE : 0, 0,
 	       _("%s subprocess got fatal signal %d"),
 	       progname, (int) WTERMSIG (status));
diff --git a/lib/wait-process.h b/lib/wait-process.h
index b064c28198..cb24fd71d7 100644
--- a/lib/wait-process.h
+++ b/lib/wait-process.h
@@ -48,9 +48,10 @@ extern "C" {
      slave process.
    - If exit_on_error is true, any error will cause the main process to exit
      with an error status.
-   - If termsigp is not NULL, *termsig will be set to the signal that
+   - If termsigp is not NULL: *termsig will be set to the signal that
      terminated the subprocess (if supported by the platform: not on native
-     Windows platforms), otherwise 0.
+     Windows platforms), otherwise 0, and the error message about the signal
+     that terminated the subprocess will be omitted.
    Prerequisites: The signal handler for SIGCHLD should not be set to SIG_IGN,
    otherwise this function will not work.  */
 extern int wait_subprocess (pid_t child, const char *progname,