Annotation of 43BSD/bin/sh/error.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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