aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLucas De Marchi <lucas.demarchi@profusion.mobi>2012-11-06 18:26:34 -0200
committerLucas De Marchi <lucas.demarchi@profusion.mobi>2012-11-06 18:52:09 -0200
commit52a50fe2e548d3a3c112074e9c4e89237c257161 (patch)
tree7592d5a15399dff756fa2504c795c00c2c71b98c
parent92aad74925f788097b54a3f45392e7d272c0201b (diff)
downloadkmod-52a50fe2e548d3a3c112074e9c4e89237c257161.tar.gz
tools: share setting up libkmod log
This also fixes a bug in "e6996c5 rmmod: route all messages to syslog if told to" in which "+ verbose" was removed. Instead of letting verbose add to kmod_get_log_priority(), let it be similar to the other programs instead.
-rw-r--r--tools/depmod.c3
-rw-r--r--tools/log.c10
-rw-r--r--tools/log.h3
-rw-r--r--tools/modprobe.c3
-rw-r--r--tools/rmmod.c3
5 files changed, 17 insertions, 5 deletions
diff --git a/tools/depmod.c b/tools/depmod.c
index 2107770..8741d06 100644
--- a/tools/depmod.c
+++ b/tools/depmod.c
@@ -2673,7 +2673,8 @@ static int do_depmod(int argc, char *argv[])
CRIT("kmod_new(\"%s\", {NULL}) failed: %m\n", cfg.dirname);
goto cmdline_failed;
}
- kmod_set_log_priority(ctx, verbose);
+
+ log_setup_kmod_log(ctx, verbose);
err = depmod_init(&depmod, &cfg, ctx);
if (err < 0) {
diff --git a/tools/log.c b/tools/log.c
index 4ca4687..229f41c 100644
--- a/tools/log.c
+++ b/tools/log.c
@@ -21,9 +21,11 @@
#include <stdlib.h>
#include <syslog.h>
+#include "libkmod.h"
#include "kmod.h"
static bool log_use_syslog;
+static int log_priority = LOG_ERR;
void log_open(bool use_syslog)
{
@@ -67,3 +69,11 @@ void log_kmod(void *data, int priority, const char *file, int line,
free(str);
(void)data;
}
+
+void log_setup_kmod_log(struct kmod_ctx *ctx, int priority)
+{
+ log_priority = priority;
+
+ kmod_set_log_priority(ctx, log_priority);
+ kmod_set_log_fn(ctx, log_kmod, NULL);
+}
diff --git a/tools/log.h b/tools/log.h
index 6005029..d4fbcdf 100644
--- a/tools/log.h
+++ b/tools/log.h
@@ -28,6 +28,9 @@ void log_close(void);
void log_kmod(void *data, int priority, const char *file, int line,
const char *fn, const char *format, va_list args);
+struct kmod_ctx;
+void log_setup_kmod_log(struct kmod_ctx *ctx, int priority);
+
_always_inline_ const char *prio_to_str(int prio);
diff --git a/tools/modprobe.c b/tools/modprobe.c
index 78bbd22..92fd9da 100644
--- a/tools/modprobe.c
+++ b/tools/modprobe.c
@@ -929,8 +929,7 @@ static int do_modprobe(int argc, char **orig_argv)
goto done;
}
- kmod_set_log_priority(ctx, verbose);
- kmod_set_log_fn(ctx, log_kmod, NULL);
+ log_setup_kmod_log(ctx, verbose);
kmod_load_resources(ctx);
diff --git a/tools/rmmod.c b/tools/rmmod.c
index f7201ae..e39a1f0 100644
--- a/tools/rmmod.c
+++ b/tools/rmmod.c
@@ -180,8 +180,7 @@ static int do_rmmod(int argc, char *argv[])
goto done;
}
- kmod_set_log_priority(ctx, kmod_get_log_priority(ctx));
- kmod_set_log_fn(ctx, log_kmod, NULL);
+ log_setup_kmod_log(ctx, verbose);
for (i = optind; i < argc; i++) {
struct kmod_module *mod;