src/lib/common.c
author Tero Marttila <terom@fixme.fi>
Thu, 25 Sep 2008 21:28:08 +0300
changeset 2 11757d6b43a6
parent 1 b31db3248246
permissions -rw-r--r--
more functionality for hello
1
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#include <stdlib.h>
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#include <stdio.h>
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
#include <stdarg.h>
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
#include <string.h>
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
#include <errno.h>
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
#include "common.h"
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
static void _generic_err_vargs (int use_stderr, const char *func, int perr, const char *fmt, va_list va) {
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
    FILE *stream = use_stderr ? stderr : stdout;
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
    if (func)
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
        fprintf(stream, "%s: ", func);
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
    
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
    vfprintf(stream, fmt, va);
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
    
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
    if (perr)
2
11757d6b43a6 more functionality for hello
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    18
        fprintf(stream, ": %s\n", strerror(perr > 0 ? errno : -perr));
1
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
    fprintf(stream, "\n");
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
}
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
void _generic_err (int use_stderr, const char *func, int perr, const char *fmt, ...) {
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
    va_list va;
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
    va_start(va, fmt);
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
    _generic_err_vargs(use_stderr, func, perr, fmt, va);
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
    va_end(va);
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
}
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
void _generic_err_exit (int use_stderr, const char *func, int perr, const char *fmt, ...) {
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
    va_list va;
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
    va_start(va, fmt);
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
    _generic_err_vargs(use_stderr, func, perr, fmt, va);
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
    va_end(va);
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
      
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
    exit(EXIT_FAILURE);
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
}
b31db3248246 a working hello
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40