Move modprobe & depmod's identical logging code into a shared file
[opensuse:module-init-tools.git] / logging.c
1 #define _GNU_SOURCE /* asprintf */
2
3 #include <stdlib.h>
4 #include <stdarg.h>
5 #include <stdio.h>
6 #include <syslog.h>
7
8 #include "logging.h"
9
10 /* Do we use syslog for messages or stderr? */
11 int logging = 0;
12
13 void message(const char *prefix, const char *fmt, va_list *arglist)
14 {
15         char *buf, *buf2;
16
17         vasprintf(&buf, fmt, *arglist);
18         asprintf(&buf2, "%s%s", prefix, buf);
19
20         if (logging)
21                 syslog(LOG_NOTICE, "%s", buf2);
22         else
23                 fprintf(stderr, "%s", buf2);
24         free(buf2);
25         free(buf);
26 }
27
28 int warned = 0;
29 void warn(const char *fmt, ...)
30 {
31         va_list arglist;
32         warned++;
33         va_start(arglist, fmt);
34         message("WARNING: ", fmt, &arglist);
35         va_end(arglist);
36 }
37
38 void fatal(const char *fmt, ...)
39 {
40         va_list arglist;
41         va_start(arglist, fmt);
42         message("FATAL: ", fmt, &arglist);
43         va_end(arglist);
44         exit(1);
45 }
46