summaryrefslogtreecommitdiffstats
path: root/libdaemon/dlog.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-10-21 18:47:42 +0200
committerLennart Poettering <lennart@poettering.net>2008-10-21 18:47:42 +0200
commit1360acec0ad064334c90c6ea770d648060c450d4 (patch)
tree6f7461072f3d1b77632bf88ac8309a5562182eac /libdaemon/dlog.c
parentce931b0a5e1a6a4045d7c30c5d877488907dc87d (diff)
parent7067029368ab389b92f5a7329899188d47f191ba (diff)
Merge commit 'flameeyes/verbosity'
Diffstat (limited to 'libdaemon/dlog.c')
-rw-r--r--libdaemon/dlog.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/libdaemon/dlog.c b/libdaemon/dlog.c
index f9f6639..b9f224e 100644
--- a/libdaemon/dlog.c
+++ b/libdaemon/dlog.c
@@ -32,6 +32,20 @@
enum daemon_log_flags daemon_log_use = DAEMON_LOG_AUTO|DAEMON_LOG_STDERR;
const char* daemon_log_ident = NULL;
+static int daemon_verbosity_level = LOG_WARNING;
+
+void daemon_set_verbosity(int verbosity_prio) {
+
+ /* Allow using negative verbosity levels to hide _all_ messages */
+ if ( verbosity_prio > 0 &&
+ (verbosity_prio & LOG_PRIMASK) != LOG_PRIMASK ) {
+ daemon_log(LOG_ERR, "The value %d is not a valid priority value",
+ verbosity_prio);
+ }
+
+ daemon_verbosity_level = verbosity_prio & LOG_PRIMASK;
+}
+
void daemon_logv(int prio, const char* template, va_list arglist) {
int saved_errno;
@@ -42,6 +56,9 @@ void daemon_logv(int prio, const char* template, va_list arglist) {
vsyslog(prio | LOG_DAEMON, template, arglist);
}
+ if ( prio > daemon_verbosity_level )
+ goto end_daemon_logv;
+
if (daemon_log_use & DAEMON_LOG_STDERR) {
vfprintf(stderr, template, arglist);
fprintf(stderr, "\n");
@@ -52,6 +69,7 @@ void daemon_logv(int prio, const char* template, va_list arglist) {
fprintf(stdout, "\n");
}
+ end_daemon_logv:
errno = saved_errno;
}