|
|
1.1 ! root 1: #include <stdarg.h> ! 2: #include <stdio.h> ! 3: #include <time.h> ! 4: #include "lib.h" ! 5: ! 6: #ifdef DOPRNT ! 7: #define vfprintf(fp, fmt, ap) _doprnt(fmt, ap, fp) ! 8: #endif ! 9: ! 10: char *prog = "(uninitialized)"; ! 11: ! 12: static FILE *logfp; ! 13: ! 14: void ! 15: openlog(char *logfile) ! 16: { ! 17: if (logfp) ! 18: fclose(logfp); ! 19: logfp = fopen(logfile, "a"); ! 20: } ! 21: ! 22: static void ! 23: vlprintf(char *fmt, va_list ap) ! 24: { ! 25: time_t now; ! 26: ! 27: if (logfp) { ! 28: time(&now); ! 29: fprintf(logfp, "%s [%d %.24s]: ", prog, getpid(), ctime(&now)); ! 30: vfprintf(logfp, fmt, ap); ! 31: putc('\n', logfp); ! 32: fflush(logfp); ! 33: } ! 34: } ! 35: ! 36: void ! 37: eprintf(char *fmt, ...) ! 38: { ! 39: va_list ap; ! 40: ! 41: fprintf(stderr, "%s: ", prog); ! 42: va_start(ap, fmt); ! 43: vfprintf(stderr, fmt, ap); ! 44: va_end(ap); ! 45: putc('\n', stderr); ! 46: ! 47: va_start(ap, fmt); ! 48: vlprintf(fmt, ap); ! 49: va_end(ap); ! 50: } ! 51: ! 52: void ! 53: lprintf(char *fmt, ...) ! 54: { ! 55: va_list ap; ! 56: ! 57: va_start(ap, fmt); ! 58: vlprintf(fmt, ap); ! 59: va_end(ap); ! 60: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.