home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * LOG.C
- *
- * $Header: Beta:src/uucp/src/lib/RCS/log.c,v 1.1 90/02/02 12:08:38 dillon Exp Locker: dillon $
- *
- * (C) Copyright 1989-1990 by Matthew Dillon, All Rights Reserved.
- *
- * ulog(level, ctl, args...)
- */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <fcntl.h>
- #include <time.h>
-
- #include "log.h"
- #include "config.h"
-
- Prototype void ulog(int, const char *, ...);
-
- int LogLevel = -1;
- int LogToStdout = 0;
- char *LogProgram = "-";
- char *LogHost = "-";
- char *LogWho = "-";
- char *LogFile;
- char LogBuf[512];
-
- void
- ulog(level, ctl)
- int level;
- const char *ctl;
- {
- long clock;
- struct tm *ut;
- int logfd;
- int len;
- char *logFile;
- long *args = (long *)&ctl + 1; /* should use varargs */
-
- if (LogFile)
- logFile = LogFile;
- else
- logFile = MakeConfigPath(UUSPOOL, "LOGFILE");
-
- if (level > LogLevel)
- return;
-
- (void)time(&clock);
- ut = localtime(&clock);
-
- sprintf(LogBuf, "(%02d/%02d-%02d:%02d:%02d) %s,%s,%s ",
- ut->tm_mon+1, ut->tm_mday, ut->tm_hour, ut->tm_min, ut->tm_sec,
- LogProgram,
- LogHost,
- LogWho
- );
- sprintf(LogBuf + strlen(LogBuf), ctl,
- args[0], args[1], args[2],
- args[3], args[4], args[5]
- );
-
- len = strlen(LogBuf);
- LogBuf[len++] = '\n';
- LogBuf[len] = 0;
-
- DEBUG(0, "%s", LogBuf);
-
- if (LogToStdout) {
- write(1, LogBuf, len);
- return;
- }
- LockFile("LOG-UPDATE");
- logfd = open(logFile, O_CREAT|O_WRONLY|O_APPEND, 0644);
- if (logfd >= 0) {
- write(logfd, LogBuf, len);
- close(logfd);
- } else {
- fprintf(stderr, "Can't open %s\n", logFile);
- }
- UnLockFile("LOG-UPDATE");
- }
-
-