Annotation of 41BSD/cmd/sh/error.c, revision 1.1.1.1

1.1       root        1: #
                      2: /*
                      3:  * UNIX shell
                      4:  *
                      5:  * S. R. Bourne
                      6:  * Bell Telephone Laboratories
                      7:  *
                      8:  */
                      9: 
                     10: #include       "defs.h"
                     11: 
                     12: 
                     13: /* ========    error handling  ======== */
                     14: 
                     15: exitset()
                     16: {
                     17:        assnum(&exitadr,exitval);
                     18: }
                     19: 
                     20: sigchk()
                     21: {
                     22:        /* Find out if it is time to go away.
                     23:         * `trapnote' is set to SIGSET when fault is seen and
                     24:         * no trap has been set.
                     25:         */
                     26:        IF trapnote&SIGSET
                     27:        THEN    exitsh(SIGFAIL);
                     28:        FI
                     29: }
                     30: 
                     31: failed(s1,s2)
                     32:        STRING  s1, s2;
                     33: {
                     34:        prp(); prs(s1); 
                     35:        IF s2
                     36:        THEN    prs(colon); prs(s2);
                     37:        FI
                     38:        newline(); exitsh(ERROR);
                     39: }
                     40: 
                     41: error(s)
                     42:        STRING  s;
                     43: {
                     44:        failed(s,NIL);
                     45: }
                     46: 
                     47: exitsh(xno)
                     48:        INT     xno;
                     49: {
                     50:        /* Arrive here from `FATAL' errors
                     51:         *  a) exit command,
                     52:         *  b) default trap,
                     53:         *  c) fault with no trap set.
                     54:         *
                     55:         * Action is to return to command level or exit.
                     56:         */
                     57:        exitval=xno;
                     58:        IF (flags & (forked|errflg|ttyflg)) != ttyflg
                     59:        THEN    done();
                     60:        ELSE    clearup();
                     61:                longjmp(errshell,1);
                     62:        FI
                     63: }
                     64: 
                     65: done()
                     66: {
                     67:        REG STRING      t;
                     68:        IF t=trapcom[0]
                     69:        THEN    trapcom[0]=0; /*should free but not long */
                     70:                execexp(t,0);
                     71:        FI
                     72:        rmtemp(0);
                     73:        exit(exitval);
                     74: }
                     75: 
                     76: rmtemp(base)
                     77:        IOPTR           base;
                     78: {
                     79:        WHILE iotemp>base
                     80:        DO  unlink(iotemp->ioname);
                     81:            iotemp=iotemp->iolst;
                     82:        OD
                     83: }

unix.superglobalmegacorp.com

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