[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.41 and 1.42

version 1.41, 2008/06/10 04:50:25 version 1.42, 2011/06/17 21:44:30
Line 52 
Line 52 
 static int log_on_stderr = 1;  static int log_on_stderr = 1;
 static int log_facility = LOG_AUTH;  static int log_facility = LOG_AUTH;
 static char *argv0;  static char *argv0;
   static log_handler_fn *log_handler;
   static void *log_handler_ctx;
   
 extern char *__progname;  extern char *__progname;
   
Line 244 
Line 246 
                 exit(1);                  exit(1);
         }          }
   
           log_handler = NULL;
           log_handler_ctx = NULL;
   
         log_on_stderr = on_stderr;          log_on_stderr = on_stderr;
         if (on_stderr)          if (on_stderr)
                 return;                  return;
Line 293 
Line 298 
 #define MSGBUFSIZ 1024  #define MSGBUFSIZ 1024
   
 void  void
   set_log_handler(log_handler_fn *handler, void *ctx)
   {
           log_handler = handler;
           log_handler_ctx = ctx;
   }
   
   void
   do_log2(LogLevel level, const char *fmt,...)
   {
           va_list args;
   
           va_start(args, fmt);
           do_log(level, fmt, args);
           va_end(args);
   }
   
   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;          struct syslog_data sdata = SYSLOG_DATA_INIT;
Line 301 
Line 323 
         char *txt = NULL;          char *txt = NULL;
         int pri = LOG_INFO;          int pri = LOG_INFO;
         int saved_errno = errno;          int saved_errno = errno;
           log_handler_fn *tmp_handler;
   
         if (level > log_level)          if (level > log_level)
                 return;                  return;
Line 339 
Line 362 
                 pri = LOG_ERR;                  pri = LOG_ERR;
                 break;                  break;
         }          }
         if (txt != NULL) {          if (txt != NULL && log_handler == NULL) {
                 snprintf(fmtbuf, sizeof(fmtbuf), "%s: %s", txt, fmt);                  snprintf(fmtbuf, sizeof(fmtbuf), "%s: %s", txt, fmt);
                 vsnprintf(msgbuf, sizeof(msgbuf), fmtbuf, args);                  vsnprintf(msgbuf, sizeof(msgbuf), fmtbuf, args);
         } else {          } else {
                 vsnprintf(msgbuf, sizeof(msgbuf), fmt, args);                  vsnprintf(msgbuf, sizeof(msgbuf), fmt, args);
         }          }
         strnvis(fmtbuf, msgbuf, sizeof(fmtbuf), VIS_SAFE|VIS_OCTAL);          strnvis(fmtbuf, msgbuf, sizeof(fmtbuf), VIS_SAFE|VIS_OCTAL);
         if (log_on_stderr) {          if (log_handler != NULL) {
                   /* Avoid recursion */
                   tmp_handler = log_handler;
                   log_handler = NULL;
                   tmp_handler(level, fmtbuf, log_handler_ctx);
                   log_handler = tmp_handler;
           } else if (log_on_stderr) {
                 snprintf(msgbuf, sizeof msgbuf, "%s\r\n", fmtbuf);                  snprintf(msgbuf, sizeof msgbuf, "%s\r\n", fmtbuf);
                 write(STDERR_FILENO, msgbuf, strlen(msgbuf));                  write(STDERR_FILENO, msgbuf, strlen(msgbuf));
         } else {          } else {

Legend:
Removed from v.1.41  
changed lines
  Added in v.1.42