home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume26 / mytinfo / part01 / quit.c < prev    next >
C/C++ Source or Header  |  1992-12-26  |  1KB  |  72 lines

  1. /*
  2.  * quit.c
  3.  *
  4.  * By Ross Ridge
  5.  * Public Domain
  6.  * 92/02/01 07:30:14
  7.  *
  8.  * quit with a diagnostic message printed on stderr
  9.  *
  10.  */
  11.  
  12. #define NOTLIB
  13. #include "defs.h"
  14.  
  15. #ifdef USE_SCCS_IDS
  16. static const char SCCSid[] = "@(#) mytinfo quit.c 3.2 92/02/01 public domain, By Ross Ridge";
  17. #endif
  18.  
  19. char *prg_name;
  20.  
  21. #if defined(USE_PROTOTYPES) && !defined(lint)
  22. void (*cleanup)(int);
  23. #else
  24. void (*cleanup)();
  25. #endif
  26.  
  27. /* PRINTFLIKE2 */
  28. #ifdef USE_STDARG
  29. #ifdef USE_PROTOTYPES
  30. void
  31. quit(int e, char *fmt, ...)
  32. #else
  33. void quit(e, fmt)
  34. int e;
  35. char *fmt;
  36. #endif
  37. #else
  38. void quit(va_alist)
  39. va_dcl
  40. #endif
  41. {
  42. #ifndef USE_STDARG
  43.     int e;
  44.     char *fmt;
  45. #endif
  46.     va_list ap;
  47.  
  48. #ifdef USE_STDARG
  49.     va_start(ap, fmt);
  50. #else
  51.     va_start(ap);
  52.     e = va_arg(ap, int);
  53.     fmt = va_arg(ap, char *);
  54. #endif
  55.  
  56.     (*cleanup)(e);
  57.  
  58.     if (e != 0)
  59.         fprintf(stderr, "%s: ", prg_name);
  60. #ifdef USE_DOPRNT
  61.     _doprnt(fmt, ap, stderr);
  62. #else
  63.     vfprintf(stderr, fmt, ap);
  64. #endif
  65.     putc('\n', stderr);
  66.     if (e > 0 && e < sys_nerr) {
  67.         fprintf(stderr, "%d - %s\n", e, sys_errlist[e]);
  68.     }
  69.     fflush(stderr);
  70.     exit(e);
  71. }
  72.