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