[BACK]Return to log.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/log.c between version 1.25 and 1.25.2.2

version 1.25, 2003/01/11 18:29:43 version 1.25.2.2, 2004/03/04 18:18:15
Line 40 
Line 40 
 #include "xmalloc.h"  #include "xmalloc.h"
   
 #include <syslog.h>  #include <syslog.h>
   #include <vis.h>
   
 static LogLevel log_level = SYSLOG_LEVEL_INFO;  static LogLevel log_level = SYSLOG_LEVEL_INFO;
 static int log_on_stderr = 1;  static int log_on_stderr = 1;
Line 124 
Line 125 
 /* Log this message (information that usually should go to the log). */  /* Log this message (information that usually should go to the log). */
   
 void  void
 log(const char *fmt,...)  logit(const char *fmt,...)
 {  {
         va_list args;          va_list args;
   
Line 177 
Line 178 
         va_end(args);          va_end(args);
 }  }
   
 /* Fatal cleanup */  
   
 struct fatal_cleanup {  
         struct fatal_cleanup *next;  
         void (*proc) (void *);  
         void *context;  
 };  
   
 static struct fatal_cleanup *fatal_cleanups = NULL;  
   
 /* Registers a cleanup function to be called by fatal() before exiting. */  
   
 void  
 fatal_add_cleanup(void (*proc) (void *), void *context)  
 {  
         struct fatal_cleanup *cu;  
   
         cu = xmalloc(sizeof(*cu));  
         cu->proc = proc;  
         cu->context = context;  
         cu->next = fatal_cleanups;  
         fatal_cleanups = cu;  
 }  
   
 /* Removes a cleanup frunction to be called at fatal(). */  
   
 void  
 fatal_remove_cleanup(void (*proc) (void *context), void *context)  
 {  
         struct fatal_cleanup **cup, *cu;  
   
         for (cup = &fatal_cleanups; *cup; cup = &cu->next) {  
                 cu = *cup;  
                 if (cu->proc == proc && cu->context == context) {  
                         *cup = cu->next;  
                         xfree(cu);  
                         return;  
                 }  
         }  
         fatal("fatal_remove_cleanup: no such cleanup function: 0x%lx 0x%lx",  
             (u_long) proc, (u_long) context);  
 }  
   
 /* Remove all cleanups, to be called after fork() */  
 void  
 fatal_remove_all_cleanups(void)  
 {  
         struct fatal_cleanup *cu, *next_cu;  
   
         for (cu = fatal_cleanups; cu; cu = next_cu) {  
                 next_cu = cu->next;  
                 xfree(cu);  
         }  
         fatal_cleanups = NULL;  
 }  
   
 /* Cleanup and exit */  
 void  
 fatal_cleanup(void)  
 {  
         struct fatal_cleanup *cu, *next_cu;  
         static int called = 0;  
   
         if (called)  
                 exit(255);  
         called = 1;  
         /* Call cleanup functions. */  
         for (cu = fatal_cleanups; cu; cu = next_cu) {  
                 next_cu = cu->next;  
                 debug("Calling cleanup 0x%lx(0x%lx)",  
                     (u_long) cu->proc, (u_long) cu->context);  
                 (*cu->proc) (cu->context);  
         }  
         exit(255);  
 }  
   
   
 /*  /*
  * Initialize the log.   * Initialize the log.
  */   */
Line 331 
Line 255 
 void  void
 do_log(LogLevel level, const char *fmt, va_list args)  do_log(LogLevel level, const char *fmt, va_list args)
 {  {
           struct syslog_data sdata = SYSLOG_DATA_INIT;
         char msgbuf[MSGBUFSIZ];          char msgbuf[MSGBUFSIZ];
         char fmtbuf[MSGBUFSIZ];          char fmtbuf[MSGBUFSIZ];
         char *txt = NULL;          char *txt = NULL;
Line 379 
Line 304 
         } else {          } else {
                 vsnprintf(msgbuf, sizeof(msgbuf), fmt, args);                  vsnprintf(msgbuf, sizeof(msgbuf), fmt, args);
         }          }
           strnvis(fmtbuf, msgbuf, sizeof(fmtbuf), VIS_SAFE|VIS_OCTAL);
         if (log_on_stderr) {          if (log_on_stderr) {
                 fprintf(stderr, "%s\r\n", msgbuf);                  snprintf(msgbuf, sizeof msgbuf, "%s\r\n", fmtbuf);
                   write(STDERR_FILENO, msgbuf, strlen(msgbuf));
         } else {          } else {
                 openlog(argv0 ? argv0 : __progname, LOG_PID, log_facility);                  openlog_r(argv0 ? argv0 : __progname, LOG_PID, log_facility, &sdata);
                 syslog(pri, "%.500s", msgbuf);                  syslog_r(pri, &sdata, "%.500s", fmtbuf);
                 closelog();                  closelog_r(&sdata);
         }          }
 }  }

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.25.2.2