2 * Copyright 1987, 1988 by MIT Student Information Processing Board.
4 * For copyright info, see mit-sipb-copyright.h.
8 #include "mit-sipb-copyright.h"
11 * Our environment only provides for ANSI's <stdarg.h> when using GNU
18 /* We don't have the v*printf routines... */
19 #define vfprintf(stream,fmt,args) _doprnt(fmt,args,stream)
21 #if __STDC__ && !VARARGS
23 #else /* varargs: not STDC or no <stdarg> */
24 /* Non-ANSI, always take <varargs.h> path. */
29 # define vfprintf(stream,fmt,args) _doprnt(fmt,args,stream)
32 #include "error_table.h"
36 * Protect us from header version (externally visible) of com_err, so
37 * we can survive in a <varargs.h> environment. I think.
39 #define com_err com_err_external
45 #define vfprintf(stream,fmt,args) _doprnt(fmt,args,stream)
48 static const char rcsid[] =
54 default_com_err_proc (const char *whoami, long code, const char *fmt, va_list args)
56 default_com_err_proc (whoami, code, fmt, args)
64 fputs(whoami, stderr);
68 fputs(error_message(code), stderr);
72 vfprintf (stderr, fmt, args);
75 /* should do this only on a tty in raw mode */
81 typedef void (*errf) (const char *, long, const char *, va_list);
83 typedef void (*errf) ();
86 errf com_err_hook = default_com_err_proc;
88 void com_err_va (whoami, code, fmt, args)
94 (*com_err_hook) (whoami, code, fmt, args);
98 void com_err (const char *whoami,
100 const char *fmt, ...)
103 void com_err (va_alist)
106 const char *whoami, *fmt;
112 com_err_hook = default_com_err_proc;
115 whoami = va_arg (pvar, const char *);
116 code = va_arg (pvar, long);
117 fmt = va_arg (pvar, const char *);
121 com_err_va (whoami, code, fmt, pvar);
125 errf set_com_err_hook (new_proc)
128 errf x = com_err_hook;
130 com_err_hook = new_proc;
132 com_err_hook = default_com_err_proc;
136 errf reset_com_err_hook () {
137 errf x = com_err_hook;
138 com_err_hook = default_com_err_proc;