home *** CD-ROM | disk | FTP | other *** search
- /*
- * quit.c
- *
- * By Ross Ridge
- * Public Domain
- * 92/02/01 07:30:14
- *
- * quit with a diagnostic message printed on stderr
- *
- */
-
- #define NOTLIB
- #include "defs.h"
-
- #ifdef USE_SCCS_IDS
- static const char SCCSid[] = "@(#) mytinfo quit.c 3.2 92/02/01 public domain, By Ross Ridge";
- #endif
-
- char *prg_name;
-
- #if defined(USE_PROTOTYPES) && !defined(lint)
- void (*cleanup)(int);
- #else
- void (*cleanup)();
- #endif
-
- /* PRINTFLIKE2 */
- #ifdef USE_STDARG
- #ifdef USE_PROTOTYPES
- void
- quit(int e, char *fmt, ...)
- #else
- void quit(e, fmt)
- int e;
- char *fmt;
- #endif
- #else
- void quit(va_alist)
- va_dcl
- #endif
- {
- #ifndef USE_STDARG
- int e;
- char *fmt;
- #endif
- va_list ap;
-
- #ifdef USE_STDARG
- va_start(ap, fmt);
- #else
- va_start(ap);
- e = va_arg(ap, int);
- fmt = va_arg(ap, char *);
- #endif
-
- (*cleanup)(e);
-
- if (e != 0)
- fprintf(stderr, "%s: ", prg_name);
- #ifdef USE_DOPRNT
- _doprnt(fmt, ap, stderr);
- #else
- vfprintf(stderr, fmt, ap);
- #endif
- putc('\n', stderr);
- if (e > 0 && e < sys_nerr) {
- fprintf(stderr, "%d - %s\n", e, sys_errlist[e]);
- }
- fflush(stderr);
- exit(e);
- }
-