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

Diff for /src/usr.bin/tmux/log.c between version 1.6 and 1.7

version 1.6, 2012/03/17 18:38:58 version 1.7, 2012/05/25 08:28:10
Line 27 
Line 27 
   
 #include "tmux.h"  #include "tmux.h"
   
 /* Logging type. */  
 #define LOG_TYPE_OFF 0  
 #define LOG_TYPE_TTY 1  
 #define LOG_TYPE_FILE 2  
 int     log_type = LOG_TYPE_OFF;  
   
 /* Log file, if needed. */  /* Log file, if needed. */
 FILE   *log_file;  FILE            *log_file = stderr;
   
 /* Debug level. */  /* Debug level. */
 int     log_level;  int              log_level = 0;
   
 void             log_event_cb(int, const char *);  void             log_event_cb(int, const char *);
 void             log_vwrite(int, const char *, va_list);  void             log_vwrite(const char *, va_list);
 __dead void      log_vfatal(const char *, va_list);  __dead void      log_vfatal(const char *, va_list);
   
 /* Log callback for libevent. */  /* Log callback for libevent. */
Line 50 
Line 44 
         log_warnx("%s", msg);          log_warnx("%s", msg);
 }  }
   
 /* Open logging to tty. */  
 void  
 log_open_tty(int level)  
 {  
         log_type = LOG_TYPE_TTY;  
         log_level = level;  
   
         setlinebuf(stderr);  
         setlinebuf(stdout);  
         event_set_log_callback(log_event_cb);  
   
         tzset();  
 }  
   
 /* Open logging to file. */  /* Open logging to file. */
 void  void
 log_open_file(int level, const char *path)  log_open(int level, const char *path)
 {  {
         log_file = fopen(path, "w");          log_file = fopen(path, "w");
         if (log_file == NULL)          if (log_file == NULL)
                 return;                  return;
   
         log_type = LOG_TYPE_FILE;  
         log_level = level;          log_level = level;
   
         setlinebuf(log_file);          setlinebuf(log_file);
Line 85 
Line 63 
 void  void
 log_close(void)  log_close(void)
 {  {
         if (log_type == LOG_TYPE_FILE)          if (log_file != stderr)
                 fclose(log_file);                  fclose(log_file);
   
         event_set_log_callback(NULL);          event_set_log_callback(NULL);
   
         log_type = LOG_TYPE_OFF;  
 }  }
   
 /* Write a log message. */  /* Write a log message. */
 void  void
 log_vwrite(int pri, const char *msg, va_list ap)  log_vwrite(const char *msg, va_list ap)
 {  {
         char    *fmt;          char    *fmt;
         FILE    *f = log_file;  
   
         switch (log_type) {          if (asprintf(&fmt, "%s\n", msg) == -1)
         case LOG_TYPE_TTY:                  exit(1);
                 if (pri == LOG_INFO)          if (vfprintf(log_file, fmt, ap) == -1)
                         f = stdout;                  exit(1);
                 else          fflush(log_file);
                         f = stderr;          free(fmt);
                 /* FALLTHROUGH */  
         case LOG_TYPE_FILE:  
                 if (asprintf(&fmt, "%s\n", msg) == -1)  
                         exit(1);  
                 if (vfprintf(f, fmt, ap) == -1)  
                         exit(1);  
                 fflush(f);  
                 free(fmt);  
                 break;  
         }  
 }  }
   
 /* Log a warning with error string. */  /* Log a warning with error string. */
Line 128 
Line 93 
         va_start(ap, msg);          va_start(ap, msg);
         if (asprintf(&fmt, "%s: %s", msg, strerror(errno)) == -1)          if (asprintf(&fmt, "%s: %s", msg, strerror(errno)) == -1)
                 exit(1);                  exit(1);
         log_vwrite(LOG_CRIT, fmt, ap);          log_vwrite(fmt, ap);
         free(fmt);          free(fmt);
         va_end(ap);          va_end(ap);
 }  }
Line 140 
Line 105 
         va_list ap;          va_list ap;
   
         va_start(ap, msg);          va_start(ap, msg);
         log_vwrite(LOG_CRIT, msg, ap);          log_vwrite(msg, ap);
         va_end(ap);          va_end(ap);
 }  }
   
Line 152 
Line 117 
   
         if (log_level > -1) {          if (log_level > -1) {
                 va_start(ap, msg);                  va_start(ap, msg);
                 log_vwrite(LOG_INFO, msg, ap);                  log_vwrite(msg, ap);
                 va_end(ap);                  va_end(ap);
         }          }
 }  }
Line 165 
Line 130 
   
         if (log_level > 0) {          if (log_level > 0) {
                 va_start(ap, msg);                  va_start(ap, msg);
                 log_vwrite(LOG_DEBUG, msg, ap);                  log_vwrite(msg, ap);
                 va_end(ap);                  va_end(ap);
         }          }
 }  }
Line 178 
Line 143 
   
         if (log_level > 1) {          if (log_level > 1) {
                 va_start(ap, msg);                  va_start(ap, msg);
                 log_vwrite(LOG_DEBUG, msg, ap);                  log_vwrite(msg, ap);
                 va_end(ap);                  va_end(ap);
         }          }
 }  }
Line 192 
Line 157 
         if (errno != 0) {          if (errno != 0) {
                 if (asprintf(&fmt, "fatal: %s: %s", msg, strerror(errno)) == -1)                  if (asprintf(&fmt, "fatal: %s: %s", msg, strerror(errno)) == -1)
                         exit(1);                          exit(1);
                 log_vwrite(LOG_CRIT, fmt, ap);                  log_vwrite(fmt, ap);
         } else {          } else {
                 if (asprintf(&fmt, "fatal: %s", msg) == -1)                  if (asprintf(&fmt, "fatal: %s", msg) == -1)
                         exit(1);                          exit(1);
                 log_vwrite(LOG_CRIT, fmt, ap);                  log_vwrite(fmt, ap);
         }          }
         free(fmt);          free(fmt);
   

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7