]> mj.ucw.cz Git - libucw.git/commitdiff
Added a new module for formatting of process exit status messages.
authorMartin Mares <mj@ucw.cz>
Sat, 10 Apr 2004 14:43:30 +0000 (14:43 +0000)
committerMartin Mares <mj@ucw.cz>
Sat, 10 Apr 2004 14:43:30 +0000 (14:43 +0000)
lib/exitstatus.c [new file with mode: 0644]

diff --git a/lib/exitstatus.c b/lib/exitstatus.c
new file mode 100644 (file)
index 0000000..ed649f6
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ *     Sherlock Library -- Formatting of Process Exit Status
+ *
+ *     (c) 2004 Martin Mares <mj@ucw.cz>
+ *
+ *     This software may be freely distributed and used according to the terms
+ *     of the GNU Lesser General Public License.
+ */
+
+#include "lib/lib.h"
+
+#include <stdio.h>
+#include <sys/wait.h>
+#include <errno.h>
+
+int
+format_exit_status(byte *msg, int stat)
+{
+  if (stat < 0)
+    sprintf(msg, "failed to fork (err=%d)", errno);
+  else if (WIFEXITED(stat) && WEXITSTATUS(stat) < 256)
+    {
+      if (WEXITSTATUS(stat))
+       sprintf(msg, "died with exit code %d", WEXITSTATUS(stat));
+      else
+       {
+         msg[0] = 0;
+         return 0;
+       }
+    }
+  else if (WIFSIGNALED(stat))
+    sprintf(msg, "died on signal %d", WTERMSIG(stat));
+  else
+    sprintf(msg, "died with status %x", stat);
+  return 1;
+}