home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / uucp / auucp+-1.02 / fuucp_plus_src.lzh / lib / log.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-11-21  |  1.6 KB  |  85 lines

  1.  
  2. /*
  3.  *  LOG.C
  4.  *
  5.  *  $Header: Beta:src/uucp/src/lib/RCS/log.c,v 1.1 90/02/02 12:08:38 dillon Exp Locker: dillon $
  6.  *
  7.  *  (C) Copyright 1989-1990 by Matthew Dillon,  All Rights Reserved.
  8.  *
  9.  *  ulog(level, ctl, args...)
  10.  */
  11.  
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include <fcntl.h>
  15. #include <time.h>
  16.  
  17. #include "log.h"
  18. #include "config.h"
  19.  
  20. Prototype void ulog(int, const char *, ...);
  21.  
  22. int    LogLevel = -1;
  23. int    LogToStdout = 0;
  24. char    *LogProgram = "-";
  25. char    *LogHost = "-";
  26. char    *LogWho = "-";
  27. char    *LogFile;
  28. char    LogBuf[512];
  29.  
  30. void
  31. ulog(level, ctl)
  32. int level;
  33. const char *ctl;
  34. {
  35.     long clock;
  36.     struct tm *ut;
  37.     int logfd;
  38.     int len;
  39.     char *logFile;
  40.     long *args = (long *)&ctl + 1;  /*  should use varargs  */
  41.  
  42.     if (LogFile)
  43.     logFile = LogFile;
  44.     else
  45.     logFile = MakeConfigPath(UUSPOOL, "LOGFILE");
  46.  
  47.     if (level > LogLevel)
  48.     return;
  49.  
  50.     (void)time(&clock);
  51.     ut = localtime(&clock);
  52.  
  53.     sprintf(LogBuf, "(%02d/%02d-%02d:%02d:%02d) %s,%s,%s ",
  54.     ut->tm_mon+1, ut->tm_mday, ut->tm_hour, ut->tm_min, ut->tm_sec,
  55.     LogProgram,
  56.     LogHost,
  57.     LogWho
  58.     );
  59.     sprintf(LogBuf + strlen(LogBuf), ctl,
  60.     args[0], args[1], args[2],
  61.     args[3], args[4], args[5]
  62.     );
  63.  
  64.     len = strlen(LogBuf);
  65.     LogBuf[len++] = '\n';
  66.     LogBuf[len] = 0;
  67.  
  68.     DEBUG(0, "%s", LogBuf);
  69.  
  70.     if (LogToStdout) {
  71.     write(1, LogBuf, len);
  72.     return;
  73.     }
  74.     LockFile("LOG-UPDATE");
  75.     logfd = open(logFile, O_CREAT|O_WRONLY|O_APPEND, 0644);
  76.     if (logfd >= 0) {
  77.     write(logfd, LogBuf, len);
  78.     close(logfd);
  79.     } else {
  80.     fprintf(stderr, "Can't open %s\n", logFile);
  81.     }
  82.     UnLockFile("LOG-UPDATE");
  83. }
  84.  
  85.