URI: 
       tlog.c - ploot - simple plotting tools
  HTML git clone git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
       ---
       tlog.c (1502B)
       ---
            1 #include "log.h"
            2 
            3 #include <string.h>
            4 
            5 /*
            6  * log.c - log to standard error according to the log level
            7  *
            8  * Instead of logging to syslog, delegate logging to a separate
            9  * tool, such as FreeBSD's daemon(8), POSIX's logger(1).
           10  *
           11  * log_init() sets the log level to the "LOG" environment variable
           12  * if set, or to 4 (log down to info included) otherwise.
           13  */
           14 
           15 #include <errno.h>
           16 #include <stdlib.h>
           17 #include <stdio.h>
           18 
           19 #define LOG_DEFAULT 2  /* info */
           20 
           21 int log_level = -1;
           22 
           23 void
           24 vlogf(int level, char const *flag, char const *fmt, va_list va)
           25 {
           26         char *env;
           27 
           28         if (log_level == -1) {
           29                 env = getenv("LOG");
           30                 log_level = env ? atoi(env) : 0;
           31                 log_level = log_level > 0 ? log_level : LOG_DEFAULT;
           32         }
           33 
           34         if (log_level < level)
           35                 return;
           36 
           37         fprintf(stderr, "%s: ", flag);
           38         vfprintf(stderr, fmt, va);
           39 
           40         if (errno)
           41                 fprintf(stderr, ": %s", strerror(errno));
           42         errno = 0;
           43 
           44         fprintf(stderr, "\n");
           45         fflush(stderr);
           46 }
           47 
           48 void
           49 die(int exitcode, char const *fmt, ...)
           50 {
           51         va_list va;
           52 
           53         va_start(va, fmt);
           54         vlogf(0, "error", fmt, va);
           55         va_end(va);
           56         exit(exitcode);
           57 }
           58 
           59 void
           60 error(char const *fmt, ...)
           61 {
           62         va_list va;
           63 
           64         va_start(va, fmt);
           65         vlogf(0, "error", fmt, va);
           66         va_end(va);
           67 }
           68 
           69 void
           70 warn(char const *fmt, ...)
           71 {
           72         va_list va;
           73 
           74         va_start(va, fmt);
           75         vlogf(1, "warn", fmt, va);
           76         va_end(va);
           77 }
           78 
           79 void
           80 info(char const *fmt, ...)
           81 {
           82         va_list va;
           83 
           84         va_start(va, fmt);
           85         vlogf(2, "info", fmt, va);
           86         va_end(va);
           87 }
           88 
           89 void
           90 debug(char const *fmt, ...)
           91 {
           92         va_list va;
           93 
           94         va_start(va, fmt);
           95         vlogf(3, "debug", fmt, va);
           96         va_end(va);
           97 }