|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)uulog.c 5.6 (Berkeley) 5/4/88"; ! 3: #endif ! 4: ! 5: #include "uucp.h" ! 6: ! 7: struct timeb Now; ! 8: ! 9: main(argc, argv) ! 10: char *argv[]; ! 11: { ! 12: #ifndef LOGBYSITE ! 13: FILE *plogf; ! 14: char u[64], s[64]; ! 15: #endif /* !LOGBYSITE */ ! 16: char *sys, *user; ! 17: int c; ! 18: extern char *optarg; ! 19: extern int optind; ! 20: ! 21: char buf[BUFSIZ]; ! 22: ! 23: strcpy(Progname, "uulog"); ! 24: sys = user = NULL; ! 25: ! 26: while ((c = getopt(argc, argv, "s:u:")) != EOF) ! 27: switch (c) { ! 28: case 's': ! 29: sys = optarg; ! 30: if (strlen(sys) > MAXBASENAME) ! 31: sys[MAXBASENAME] = '\0'; ! 32: if (versys(&sys) != SUCCESS){ ! 33: fprintf(stderr,"uulog: unknown system %s\n", sys); ! 34: sys = NULL; ! 35: } ! 36: break; ! 37: case 'u': ! 38: user = optarg; ! 39: break; ! 40: case '?': ! 41: default: ! 42: fprintf(stderr, "unknown flag %s\n", argv[optind-1]); ! 43: break; ! 44: } ! 45: ! 46: if (user == NULL && sys == NULL) { ! 47: fprintf(stderr, "usage: uulog [-u user] [-s sys]\n"); ! 48: exit(1); ! 49: } ! 50: ! 51: #ifdef LOGBYSITE ! 52: if (chdir(SPOOL) < 0) { ! 53: perror(SPOOL); ! 54: exit(1); ! 55: } ! 56: /* this program is really obsolete, this is a rude backward compat */ ! 57: if (user) { ! 58: sprintf(buf, "exec cat LOG/uu*/* | egrep '^%s '", user); ! 59: system(buf); ! 60: } ! 61: if (sys) { ! 62: sprintf(buf,"exec cat LOG/uu*/%s", sys); ! 63: system(buf); ! 64: } ! 65: #else !LOGBYSITE ! 66: plogf = fopen(LOGFILE, "r"); ! 67: if (plogf == NULL) { ! 68: syslog(LOG_WARNING, "fopen(%s) failed: %m", LOGFILE); ! 69: cleanup(1); ! 70: } ! 71: while (fgets(buf, BUFSIZ, plogf) != NULL) { ! 72: sscanf(buf, "%s%s", u, s); ! 73: if (user != NULL && !(prefix(user, u) || prefix(u, user))) ! 74: continue; ! 75: if (sys != NULL && !(prefix(sys, s) || prefix(s, sys))) ! 76: continue; ! 77: fputs(buf, stdout); ! 78: fflush(stdout); ! 79: } ! 80: #endif !LOGBYSITE ! 81: exit(0); ! 82: } ! 83: ! 84: cleanup(code) ! 85: int code; ! 86: { ! 87: exit(code); ! 88: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.