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 |