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

Defined functions

done defined in line 65; used 6 times
error defined in line 41; used 9 times
exitsh defined in line 47; used 5 times
rmtemp defined in line 76; used 2 times
Last modified: 1981-07-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 766
Valid CSS Valid XHTML 1.0 Strict