Annotation of coherent/b/STREAMS/conf/bin/src/ehand.h, revision 1.1.1.1

1.1       root        1: #ifndef        EHAND_H
                      2: #define        EHAND_H
                      3: 
                      4: /*
                      5:  *-IMPORTS:
                      6:  *     <sys/compat.h>
                      7:  *             CONST
                      8:  *             EXTERN_C_BEGIN
                      9:  *             EXTERN_C_END
                     10:  *             PROTO ()
                     11:  *     <setjmp.h>
                     12:  *             jmp_buf
                     13:  *             setjmp ()
                     14:  */
                     15: 
                     16: #include <sys/compat.h>
                     17: #include <setjmp.h>
                     18: 
                     19: /*
                     20:  * Structure used for error control.
                     21:  */
                     22: 
                     23: typedef struct ehandler        ehand_t;
                     24: 
                     25: struct ehandler {
                     26:        ehand_t       * eh_next;
                     27:        jmp_buf         eh_buf;
                     28: };
                     29: 
                     30: extern ehand_t       * estack_base;
                     31: 
                     32: #define        PUSH_HANDLER(eh)        setjmp (((eh).eh_next = estack_base,\
                     33:                                         estack_base = & (eh), (eh).eh_buf))
                     34: #define        POP_HANDLER(eh)         (estack_base != & (eh) ? \
                     35:                                 error_error (__FILE__, __LINE__) : \
                     36:                                 (void) (estack_base = (eh).eh_next))
                     37: #define        CHAIN_ERROR(eh)         (chain_error (& (eh)))
                     38: 
                     39: 
                     40: EXTERN_C_BEGIN
                     41: 
                     42: NO_RETURN void throw_error     PROTO ((CONST char * _fmt, ...));
                     43: void           report_error    PROTO ((CONST char * _fmt, ...));
                     44: void           error_error     PROTO ((CONST char * _file, int _line));
                     45: void           chain_error     PROTO ((ehand_t * _ehand));
                     46: 
                     47: EXTERN_C_END
                     48: 
                     49: 
                     50: #endif /* ! define (EHAND_H) */

unix.superglobalmegacorp.com

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