6e5ee11ca95cd971984038cf65bae00d9c898707 galt Wed Jun 4 15:40:02 2014 -0700 Since we have git, it is easy to rename errabort.c to errAbort.c without losing any history. diff --git src/inc/errAbort.h src/inc/errAbort.h new file mode 100644 index 0000000..4fd645b --- /dev/null +++ src/inc/errAbort.h @@ -0,0 +1,93 @@ +/* ErrAbort.h - our error handler. + * + * This maintains two stacks - a warning message printer + * stack, and a "abort handler" stack. + * + * By default the warnings will go to stderr, and + * aborts will exit the program. You can push a + * function on to the appropriate stack to change + * this behavior. The top function on the stack + * gets called. + * + * Most functions in this library will call errAbort() + * if they run out of memory. + * + * This file is copyright 2002 Jim Kent, but license is hereby + * granted for all use - public, private or commercial. */ + +#ifndef ERRABORT_H +#define ERRABORT_H + +boolean isErrAbortInProgress(); +/* Flag to indicate that an error abort is in progress. + * Needed so that a warn handler can tell if it's really + * being called because of a warning or an error. */ + +void errAbort(char *format, ...) +/* Abort function, with optional (printf formatted) error message. */ +#if defined(__GNUC__) +__attribute__((format(printf, 1, 2))) +#endif +; + +void vaErrAbort(char *format, va_list args); +/* Abort function, with optional (vprintf formatted) error message. */ + +void errnoAbort(char *format, ...) +/* Prints error message from UNIX errno first, then does errAbort. */ +#if defined(__GNUC__) +__attribute__((format(printf, 1, 2))) +#endif +; + +typedef void (*AbortHandler)(); +/* Function that can abort. */ + +void pushAbortHandler(AbortHandler handler); +/* Set abort handler */ + +void popAbortHandler(); +/* Revert to old abort handler. */ + +void noWarnAbort(); +/* Abort without message. */ + +void pushDebugAbort(); +/* Push abort handler that will invoke debugger. */ + +void vaWarn(char *format, va_list args); +/* Call top of warning stack to issue warning. */ + +void warn(char *format, ...) +/* Issue a warning message. */ +#if defined(__GNUC__) +__attribute__((format(printf, 1, 2))) +#endif +; + +void errnoWarn(char *format, ...) +/* Prints error message from UNIX errno first, then does rest of warning. */ +#if defined(__GNUC__) +__attribute__((format(printf, 1, 2))) +#endif +; + +typedef void (*WarnHandler)(char *format, va_list args); +/* Function that can warn. */ + +void pushWarnHandler(WarnHandler handler); +/* Set warning handler */ + +void popWarnHandler(); +/* Revert to old warn handler. */ + +void pushWarnAbort(); +/* Push handler that will abort on warnings. */ + +void pushSilentWarnHandler(); +/* Set warning handler to be quiet. Do a popWarnHandler to restore. */ + +void errAbortDebugnPushPopErr(); +/* generate stack dump if there is a error in the push/pop functions */ + +#endif /* ERRABORT_H */