src/lib/log.c
changeset 16 74fb62022fb3
parent 6 d2036d7799fd
child 24 82cfdb6680d1
equal deleted inserted replaced
15:a8d183e79ed9 16:74fb62022fb3
     4 #include <string.h>
     4 #include <string.h>
     5 #include <errno.h>
     5 #include <errno.h>
     6 
     6 
     7 #include "log.h"
     7 #include "log.h"
     8 
     8 
     9 static void _generic_err_vargs (int use_stderr, const char *func, int perr, const char *fmt, va_list va) {
     9 static void _generic_err_vargs (int flags, const char *func, int err, const char *fmt, va_list va) {
    10     FILE *stream = use_stderr ? stderr : stdout;
    10     FILE *stream = flags & LOG_DISPLAY_STDERR ? stderr : stdout;
    11 
    11 
    12     if (func)
    12     if (func)
    13         fprintf(stream, "%s: ", func);
    13         fprintf(stream, "%s: ", func);
    14     
    14     
    15     vfprintf(stream, fmt, va);
    15     vfprintf(stream, fmt, va);
    16     
    16     
    17     if (perr)
    17     if (flags & LOG_DISPLAY_PERR)
    18         fprintf(stream, ": %s\n", strerror(perr > 0 ? errno : -perr));
    18         fprintf(stream, ": %s\n", strerror(err == 0 ? errno : -err));
    19 
    19     
    20     fprintf(stream, "\n");
    20     if (!(flags & LOG_DISPLAY_NONL))
       
    21         fprintf(stream, "\n");
    21 }
    22 }
    22 
    23 
    23 void _generic_err (int use_stderr, const char *func, int perr, const char *fmt, ...) {
    24 void _generic_err (int flags, const char *func, int err, const char *fmt, ...) {
    24     va_list va;
    25     va_list va;
    25 
    26 
    26     va_start(va, fmt);
    27     va_start(va, fmt);
    27     _generic_err_vargs(use_stderr, func, perr, fmt, va);
    28     _generic_err_vargs(flags, func, err, fmt, va);
    28     va_end(va);
    29     va_end(va);
    29 }
    30 }
    30 
    31 
    31 void _generic_err_exit (int use_stderr, const char *func, int perr, const char *fmt, ...) {
    32 void _generic_err_exit (int flags, const char *func, int err, const char *fmt, ...) {
    32     va_list va;
    33     va_list va;
    33 
    34 
    34     va_start(va, fmt);
    35     va_start(va, fmt);
    35     _generic_err_vargs(use_stderr, func, perr, fmt, va);
    36     _generic_err_vargs(flags, func, err, fmt, va);
    36     va_end(va);
    37     va_end(va);
    37       
    38       
    38     exit(EXIT_FAILURE);
    39     exit(EXIT_FAILURE);
    39 }
    40 }
    40 
    41