aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVassili Tchersky <vt+git@vbc.su>2025-02-20 13:55:03 +0100
committerBernd Schubert <bernd@bsbernd.com>2025-02-20 18:25:29 +0100
commitc516c643de27cc5fb7d30495f5c9047651a64447 (patch)
treee81736251faebec0207d2de126d1a2f5eea2ab5a
parent8ca2fe632de965c13d26e64dc1ff8517240a4078 (diff)
downloadlibfuse-c516c643de27cc5fb7d30495f5c9047651a64447.tar.gz
fuse_log: simplify default log function
fuse_log_level is guaranteed to be the same as libc as syslog is a network protocol and levels are numerical constants enforced in RFCs. Syslog is originally BSD-only and was imported by glibc and standardised in SUS and POSIX. Use vsyslog rather than formatting a new intermediate string. Signed-off-by: Vassili Tchersky <vt+git@vbc.su>
-rw-r--r--lib/fuse_log.c47
1 files changed, 5 insertions, 42 deletions
diff --git a/lib/fuse_log.c b/lib/fuse_log.c
index c1d16c1..5039b04 100644
--- a/lib/fuse_log.c
+++ b/lib/fuse_log.c
@@ -10,58 +10,21 @@
#include "fuse_log.h"
-#include <stdarg.h>
#include <stdio.h>
#include <stdbool.h>
#include <syslog.h>
+#include <stdarg.h>
#define MAX_SYSLOG_LINE_LEN 512
static bool to_syslog = false;
-static void default_log_func(__attribute__((unused)) enum fuse_log_level level,
- const char *fmt, va_list ap)
+static void default_log_func(enum fuse_log_level level, const char *fmt, va_list ap)
{
- if (to_syslog) {
- int sys_log_level = LOG_ERR;
-
- /*
- * with glibc fuse_log_level has identical values as
- * syslog levels, but we also support BSD - better we convert to
- * be sure.
- */
- switch (level) {
- case FUSE_LOG_DEBUG:
- sys_log_level = LOG_DEBUG;
- break;
- case FUSE_LOG_INFO:
- sys_log_level = LOG_INFO;
- break;
- case FUSE_LOG_NOTICE:
- sys_log_level = LOG_NOTICE;
- break;
- case FUSE_LOG_WARNING:
- sys_log_level = LOG_WARNING;
- break;
- case FUSE_LOG_ERR:
- sys_log_level = LOG_ERR;
- break;
- case FUSE_LOG_CRIT:
- sys_log_level = LOG_CRIT;
- break;
- case FUSE_LOG_ALERT:
- sys_log_level = LOG_ALERT;
- break;
- case FUSE_LOG_EMERG:
- sys_log_level = LOG_EMERG;
- }
-
- char log[MAX_SYSLOG_LINE_LEN];
- vsnprintf(log, MAX_SYSLOG_LINE_LEN, fmt, ap);
- syslog(sys_log_level, "%s", log);
- } else {
+ if (to_syslog)
+ vsyslog(level, fmt, ap);
+ else
vfprintf(stderr, fmt, ap);
- }
}
static fuse_log_func_t log_func = default_log_func;