home *** CD-ROM | disk | FTP | other *** search
- /*
- * syslog.c
- *
- * Dummy version of syslog routines that use stdio to stderr.
- * Designed for debugging during development.
- *
- * Arnold Robbins
- * Emory University Computing Center
- * 7/87
- */
-
- extern int errno;
- extern int sys_nerr;
- extern char *sys_errlist[];
-
- /*
- * Surround each header with an ifdef so that
- * the whole file may be included if desired.
- */
-
- #ifndef NULL
- #include <stdio.h>
- #endif
-
- #ifndef LOG_EMERG
- #include <syslog.h>
- #endif
-
- #ifndef va_dcl
- #include <varargs.h>
- #endif
-
- static char *str;
-
- int openlog (s, i, j)
- char *s;
- int i, j;
- {
- str = s;
- #ifdef lint
- i = i;
- j = j;
- #endif
- return(0);
- }
-
- closelog () { }
-
- setlogmask (mask)
- int mask;
- {
- #ifdef lint
- mask = mask;
- #endif
- }
-
- syslog (va_alist)
- va_dcl
- {
- va_list ap;
- char *format, c, form[30];
- int i, j;
- double d;
- char *cp, *x;
- int err = errno, pri;
- static char *level[] = {
- "emergency",
- "alert",
- "critical",
- "error",
- "warning",
- "notice",
- "info",
- "debug"
- };
-
- va_start(ap);
- pri = va_arg(ap, int);
-
- x = "unknown";
- if (pri >= LOG_EMERG && pri <= LOG_DEBUG)
- x = level[pri];
-
- fprintf (stderr, "%s: %s: ", str, x);
-
- format = va_arg(ap, char *);
- while (c = *format++)
- {
- int done;
-
- if (c != '%')
- {
- putc (c, stderr);
- continue;
- }
- j = 0;
- form[j++] = c;
- done = 0;
- while (! done)
- {
- c = *format++;
- switch (c) {
- default: /* XXX */
- case 'o': case 'c': case 'd': case 's': case 'u':
- case 'e': case 'E': case 'f': case 'g': case 'G':
- case 'x': case 'X':
- done++;
- /* fall thru */
- case ' ': case '+': case '-': case '.': case '#':
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- case 'l':
- form[j++] = c;
- break;
- case 'm':
- errno = err;
- if (errno < sys_nerr)
- fputs (sys_errlist[errno], stderr);
- else
- fprintf (stderr, "error %d", errno);
- goto out;
- case '%':
- putc ('%', stderr);
- goto out;
- }
- }
- form[j] = '\0';
- switch (form[j-1]) {
- case 'x':
- case 'X':
- case 'o':
- case 'c':
- case 'd':
- case 'u':
- i = va_arg(ap, int);
- fprintf (stderr, form, i);
- break;
- case 'e':
- case 'E':
- case 'f':
- case 'g':
- case 'G':
- d = va_arg(ap, double);
- fprintf (stderr, form, d);
- break;
- case 's':
- cp = va_arg(ap, char *);
- fprintf (stderr, form, cp);
- break;
- }
- out: ;
- }
- if (format[-1] != '\n')
- putc ('\n', stderr);
-
- va_end(ap);
- }
-