author | Tero Marttila <terom@fixme.fi> |
Fri, 17 Oct 2008 18:53:05 +0300 | |
changeset 33 | c71f3053c714 |
parent 27 | 461be4cd34a3 |
permissions | -rw-r--r-- |
1 | 1 |
#include <stdlib.h> |
2 |
#include <stdio.h> |
|
3 |
#include <stdarg.h> |
|
4 |
#include <string.h> |
|
5 |
#include <errno.h> |
|
33 | 6 |
#include <assert.h> |
1 | 7 |
|
6
d2036d7799fd
new 'simple' module, plus hello_simple
Tero Marttila <terom@fixme.fi>
parents:
2
diff
changeset
|
8 |
#include "log.h" |
1 | 9 |
|
16 | 10 |
static void _generic_err_vargs (int flags, const char *func, int err, const char *fmt, va_list va) { |
11 |
FILE *stream = flags & LOG_DISPLAY_STDERR ? stderr : stdout; |
|
1 | 12 |
|
33 | 13 |
if (!fmt) |
14 |
return; |
|
15 |
||
27 | 16 |
if (flags & LOG_DISPLAY_FATAL) |
17 |
fprintf(stream, "FATAL: "); |
|
18 |
||
1 | 19 |
if (func) |
20 |
fprintf(stream, "%s: ", func); |
|
21 |
||
22 |
vfprintf(stream, fmt, va); |
|
23 |
||
16 | 24 |
if (flags & LOG_DISPLAY_PERR) |
24 | 25 |
fprintf(stream, ": %s\n", strerror(err == 0 ? errno : err)); |
16 | 26 |
|
27 |
if (!(flags & LOG_DISPLAY_NONL)) |
|
28 |
fprintf(stream, "\n"); |
|
1 | 29 |
} |
30 |
||
16 | 31 |
void _generic_err (int flags, const char *func, int err, const char *fmt, ...) { |
1 | 32 |
va_list va; |
33 |
||
34 |
va_start(va, fmt); |
|
16 | 35 |
_generic_err_vargs(flags, func, err, fmt, va); |
1 | 36 |
va_end(va); |
37 |
} |
|
38 |
||
16 | 39 |
void _generic_err_exit (int flags, const char *func, int err, const char *fmt, ...) { |
1 | 40 |
va_list va; |
41 |
||
33 | 42 |
assert(fmt); |
43 |
||
1 | 44 |
va_start(va, fmt); |
27 | 45 |
_generic_err_vargs(flags | LOG_DISPLAY_FATAL, func, err, fmt, va); |
1 | 46 |
va_end(va); |
47 |
||
48 |
exit(EXIT_FAILURE); |
|
49 |
} |
|
50 |