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

1.1     ! root        1: /* pidwait.c - wait for child to exit */
        !             2: 
        !             3: #include "../h/mh.h"
        !             4: #include <signal.h>
        !             5: #include <stdio.h>
        !             6: #ifdef BSD42
        !             7: #include <sys/wait.h>
        !             8: #endif BSD42
        !             9: 
        !            10: 
        !            11: int     pidwait (id, sigsok)
        !            12: register int     id,
        !            13:                 sigsok;
        !            14: {
        !            15:     register int    pid;
        !            16: #ifndef        BSD42
        !            17:     int     status;
        !            18: #else  BSD42
        !            19:     union wait status;
        !            20: #endif BSD42
        !            21:     int     (*hstat) (), (*istat) (), (*qstat) (), (*tstat) ();
        !            22: 
        !            23:     if (sigsok == NOTOK) {
        !            24:        hstat = signal (SIGHUP, SIG_IGN);
        !            25:        istat = signal (SIGINT, SIG_IGN);
        !            26:        qstat = signal (SIGQUIT, SIG_IGN);
        !            27:        tstat = signal (SIGTERM, SIG_IGN);
        !            28:     }
        !            29: 
        !            30:     while ((pid = wait (&status)) != NOTOK && pid != id)
        !            31:        continue;
        !            32: 
        !            33:     if (sigsok == NOTOK) {
        !            34:        (void) signal (SIGHUP, hstat);
        !            35:        (void) signal (SIGINT, istat);
        !            36:        (void) signal (SIGQUIT, qstat);
        !            37:        (void) signal (SIGTERM, tstat);
        !            38:     }
        !            39: 
        !            40: #ifndef        BSD42
        !            41:     return (pid == NOTOK ? NOTOK : status);
        !            42: #else  BSD42
        !            43:     return (pid == NOTOK ? NOTOK : status.w_status);
        !            44: #endif BSD42
        !            45: }

unix.superglobalmegacorp.com

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