home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume21 / coda / part01 / log.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-04-08  |  2.1 KB  |  114 lines

  1. /*
  2. **  Copyright 1989 BBN Systems and Technologies Corporation.
  3. **  All Rights Reserved.
  4. **  This is free software, and may be distributed under the terms of the
  5. **  GNU Public License; see the file COPYING for more details.
  6. **
  7. **  Logging routines for CODA server.
  8. */
  9. #include "server.h"
  10. #include <time.h>
  11. #ifdef    RCSID
  12. static char RCS[] =
  13.     "$Header: log.c,v 2.0 90/03/23 14:41:50 rsalz Exp $";
  14. #endif    /* RCSID */
  15.  
  16.  
  17. STATIC int     PID;            /* Our process ID        */
  18. STATIC int     Sequence;        /* Log message sequence number    */
  19. STATIC char    *LogTerm = "\n";    /* Message terminator        */
  20. STATIC FILE    *Log;            /* Logfile stream        */
  21.  
  22.  
  23. STATIC char *
  24. TimeString()
  25. {
  26.     time_t     now;
  27.     char    *p;
  28.  
  29.     (void)time(&now);
  30.     p = ctime(&now);
  31.     /* Kill the newline, skip the day. */
  32.     p[24] = '\0';
  33.     return p + 4;
  34. }
  35.  
  36.  
  37. void
  38. LogOpen()
  39. {
  40.     PID = getpid();
  41.     Sequence = 0;
  42.  
  43.     /* Open a log file somewhere. */
  44.     if (EQ(LogFile, "-"))
  45.     Log = stdout;
  46.     else if ((Log = fopen(LogFile, "a")) == NULL) {
  47.     if (Log = fopen("/dev/console", "w"))
  48.         LogTerm = "\r\n";
  49.     else if ((Log = fopen("/dev/null", "w")) == NULL) {
  50.         perror("Can't open any logfiles");
  51.         abort();
  52.     }
  53.     }
  54.  
  55.     (void)fprintf(Log, "%d %d %s StartedWith %s%s",
  56.             PID, Sequence++, TimeString(),
  57.             TheHost,
  58.             LogTerm);
  59.     (void)fflush(Log);
  60. }
  61.  
  62.  
  63. void
  64. LogClose(p)
  65.     char    *p;
  66. {
  67.     (void)fprintf(Log, "%d %d %s Exit %s%s",
  68.             PID, Sequence++, TimeString(),
  69.             p,
  70.             LogTerm);
  71.     (void)fflush(Log);
  72. }
  73.  
  74.  
  75. void
  76. LogText(p)
  77.     char    *p;
  78. {
  79.     (void)fprintf(Log, "%d %d %s Message %s%s",
  80.             PID, Sequence++, TimeString(),
  81.             p,
  82.             LogTerm);
  83.     (void)fflush(Log);
  84. }
  85.  
  86.  
  87. void
  88. LogReadfile(p)
  89.     char    *p;
  90. {
  91.     char     buff[SIZE * 2];
  92.  
  93.     (void)fprintf(Log, "%d %d %s Readfile %s %s%s",
  94.             PID, Sequence++, TimeString(),
  95.             p, getwd(buff),
  96.             LogTerm);
  97.     (void)fflush(Log);
  98. }
  99.  
  100.  
  101. #ifdef    VERBOSE_LOG
  102. void
  103. LogSentItem(I)
  104.     ITEM    *I;
  105. {
  106.     (void)fprintf(Log, "%d %d %s Sentitem %s%s%s",
  107.             PID, Sequence++, TimeString(),
  108.             I->Name[0] == '/' ? "" : TheRoot,
  109.             I->Name,
  110.             LogTerm);
  111.     (void)fflush(Log);
  112. }
  113. #endif    /* VERBOSE_LOG */
  114.