common.c
author Tero Marttila <terom@fixme.fi>
Sun, 06 Jul 2008 23:33:24 +0300
changeset 26 6d615203d963
parent 24 8307d28329ae
permissions -rw-r--r--
support for PF_LOCAL, it works, but needs some more testing/cleanup old code

committer: Tero Marttila <terom@fixme.fi>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <errno.h>

#include "common.h"

static void _generic_err_vargs (int use_stderr, const char *func, int perr, const char *fmt, va_list va) {
    FILE *stream = use_stderr ? stderr : stdout;

    if (func)
        fprintf(stream, "%s: ", func);
    
    vfprintf(stream, fmt, va);
    
    if (perr)
        fprintf(stream, ": %s\n", strerror(errno));

    fprintf(stream, "\n");
}

void _generic_err (int use_stderr, const char *func, int perr, const char *fmt, ...) {
    va_list va;

    va_start(va, fmt);
    _generic_err_vargs(use_stderr, func, perr, fmt, va);
    va_end(va);
}

void _generic_err_exit (int use_stderr, const char *func, int perr, const char *fmt, ...) {
    va_list va;

    va_start(va, fmt);
    _generic_err_vargs(use_stderr, func, perr, fmt, va);
    va_end(va);
      
    exit(EXIT_FAILURE);
}