home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / TELECOM / stg_v4.lzh / syslog_.c < prev    next >
C/C++ Source or Header  |  1994-11-11  |  2KB  |  116 lines

  1. /*
  2.  * syslog functions - semi unix compatible
  3.  *
  4.  * 92/10/28 StG - initial version
  5. */
  6.  
  7. /* unix already has these functions */
  8. #ifndef _UNIX
  9.  
  10. #include "stglib.h"
  11.  
  12. #include <time.h>
  13.  
  14. char syslogbf[256];
  15.  
  16. extern int errno;
  17.  
  18. char *_prgname();
  19.  
  20. char syslog_id[64];
  21.  
  22. openlog(pcIdent,iOpts,iBogus)
  23. char *pcIdent;
  24. int iOpts;
  25. int iBogus;
  26. {
  27.     strncpy(syslog_id,pcIdent,63);
  28. }
  29.  
  30. vsyslog(code,fmt,ap)
  31. int code;
  32. char *fmt;
  33. va_list ap;
  34. {
  35.     int hLog;        /* log file */
  36.     int errno_;        /* errno save */
  37.     int uid;        /* user id */
  38.     long lTime;        /* current time */
  39.     struct tm *psTime;
  40.  
  41.     errno_=errno;    /* return same errno function started with */
  42.     uid=getuid();    /* return to same uid as started with */
  43.  
  44.     setuid(0);        /* must be user 0 to write log file */
  45.  
  46.     time(&lTime);
  47.     psTime=localtime(&lTime);
  48. /*
  49.     stringf(syslogbf,LOG_FILE,
  50.         psTime->tm_year,psTime->tm_mon+1,psTime->tm_mday);
  51.         */
  52.     strcpy(syslogbf,LOG_FILE);
  53.  
  54.     hLog=open("/log",3);
  55.     if (hLog==ERR)
  56.     {
  57.         hLog=open(syslogbf,3);
  58.         if (hLog==ERR)
  59.         {
  60.             hLog=creat(syslogbf,3);
  61.             if (hLog==ERR)
  62.             {
  63.                 return(ERR);
  64.             }
  65.         }
  66.         else
  67.             lseek(hLog,0L,2);
  68.     }
  69.  
  70.     if (code<32 || code>=127)
  71.         code='?';
  72.  
  73.     stringf(syslogbf,"%02d/%02d/%02d %02d:%02d:%02d %c ",
  74.         psTime->tm_year,
  75.         psTime->tm_mon+1,
  76.         psTime->tm_mday,
  77.         psTime->tm_hour,
  78.         psTime->tm_min,
  79.         psTime->tm_sec,
  80.         code);
  81.  
  82. /*
  83.     if (code!=LOG_LOGIN && code!=LOG_BADPW && code!=LOG_SMON)
  84.     {
  85.         strcat(syslogbf,_prgname());
  86.         strcat(syslogbf,": ");
  87.     }
  88. */
  89.     if (*syslog_id)
  90.     {
  91.         strcat(syslogbf,syslog_id);
  92.         strcat(syslogbf,": ");
  93.     }
  94.  
  95.     errno=errno_; /* report correct error */
  96.     _strfmt(syslogbf+strlen(syslogbf),fmt,ap);
  97.     strcat(syslogbf,"\n");
  98.  
  99.     writeln(hLog,syslogbf,200);
  100.     close(hLog);
  101.  
  102.     setuid(uid);
  103.     errno=errno_;
  104.     return(0);
  105. }
  106.  
  107. syslog(code,fmt,p)
  108. int code;
  109. char *fmt;
  110. char *p;
  111. {
  112.     return(vsyslog(code,fmt,&p));
  113. }
  114.  
  115. #endif
  116.