|
|
1.1 ! root 1: /* pidstatus.c - report child's status */ ! 2: ! 3: #include "../h/mh.h" ! 4: #include <signal.h> ! 5: #include <stdio.h> ! 6: ! 7: ! 8: #ifndef BSD42 ! 9: static char *sigs[] = { ! 10: NULL, ! 11: "Hangup", ! 12: "Interrupt", ! 13: "Quit", ! 14: "Illegal instruction", ! 15: "Trace/BPT trap", ! 16: "IOT trap", ! 17: "EMT trap", ! 18: "Floating exception", ! 19: "Killed", ! 20: "Bus error", ! 21: "Segmentation fault", ! 22: "Bad system call", ! 23: "Broken pipe", ! 24: "Alarm clock", ! 25: "Terminated", ! 26: #ifdef SIGURG ! 27: "Urgent I/O condition", ! 28: #else ! 29: NULL, ! 30: #endif ! 31: "Stopped (signal)", ! 32: "Stopped", ! 33: "Continued", ! 34: "Child exited", ! 35: "Stopped (tty input)", ! 36: "Stopped (tty output)", ! 37: "Tty input interrupt", ! 38: "Cputime limit exceeded", ! 39: "Filesize limit exceeded", ! 40: NULL ! 41: }; ! 42: #else ! 43: extern char *sys_siglist[]; ! 44: #endif BSD42 ! 45: ! 46: /* */ ! 47: ! 48: int pidstatus (status, fp, cp) ! 49: register int status; ! 50: register FILE *fp; ! 51: register char *cp; ! 52: { ! 53: int signum; ! 54: ! 55: if ((status & 0xff00) == 0xff00) ! 56: return status; ! 57: ! 58: switch (signum = status & 0x007f) { ! 59: case OK: ! 60: if (signum = ((status & 0xff00) >> 8)) { ! 61: if (cp) ! 62: fprintf (fp, "%s: ", cp); ! 63: fprintf (fp, "Exit %d\n", signum); ! 64: } ! 65: break; ! 66: ! 67: case SIGINT: ! 68: break; ! 69: ! 70: default: ! 71: if (cp) ! 72: fprintf (fp, "%s: ", cp); ! 73: #ifndef BSD42 ! 74: if (signum >= sizeof sigs || sigs[signum] == NULL) ! 75: fprintf (fp, "Signal %d", signum); ! 76: else ! 77: fprintf (fp, "%s", sigs[signum]); ! 78: #else BSD42 ! 79: if (signum >= NSIG) ! 80: fprintf (fp, "Signal %d", signum); ! 81: else ! 82: fprintf (fp, "%s", sys_siglist[signum]); ! 83: #endif BSD42 ! 84: fprintf (fp, "%s\n", status & 0x80 ? " (core dumped)" : ""); ! 85: break; ! 86: } ! 87: ! 88: return status; ! 89: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.