Annotation of 43BSD/contrib/mh/sbr/pidstatus.c, revision 1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.