Annotation of 43BSD/contrib/xns/xnslib/except.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * except.c
        !             3:  *
        !             4:  * Support routines for C exceptions
        !             5:  *
        !             6:  (c) Jeffrey Mogul     Stanford        18 February 1983
        !             7:  */
        !             8: 
        !             9: #include <stdio.h>
        !            10: #include "except.h"
        !            11: 
        !            12: extern int errno;
        !            13: extern int sys_nerr;
        !            14: extern char *sys_errlist[];
        !            15: 
        !            16: _Except_Buf *_Except_Header = 0;
        !            17: int ExceptMode = 0;
        !            18: 
        !            19: raise(code, msg)
        !            20: int code;
        !            21: char *msg;
        !            22: {
        !            23:        register _Except_Buf *EBp = _Except_Header;
        !            24:        
        !            25:        if (EBp == 0) { /* uncaught exception */
        !            26:            if (ExceptMode&EX_MODE_REPORT) {
        !            27:                fprintf(stderr,"Uncaught exception: %d, %s\n",
        !            28:                        code, msg);
        !            29:            }
        !            30:            if (ExceptMode&EX_MODE_ABORT)
        !            31:                abort();
        !            32:            else
        !            33:                exit(code);
        !            34:        }
        !            35: 
        !            36:        EBp->Code = code;
        !            37:        EBp->Message = msg;
        !            38:        
        !            39:        _Except_Header = EBp->Prev;
        !            40:        
        !            41:        longjmp(EBp->Environ, 1);
        !            42: }
        !            43: 
        !            44: raise_sys()
        !            45: {
        !            46:        register int errnum = errno;
        !            47: 
        !            48:        if ((errnum < 1) || (errnum >= sys_nerr)) {
        !            49:            raise(-1, "Unknown Unix error code");
        !            50:        }
        !            51:        else {
        !            52:            raise(errnum, sys_errlist[errnum]);
        !            53:        }
        !            54: }

unix.superglobalmegacorp.com

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