diff options
author | Vassili Tchersky <vt+git@vbc.su> | 2025-02-20 13:55:03 +0100 |
---|---|---|
committer | Bernd Schubert <bernd@bsbernd.com> | 2025-02-20 18:25:29 +0100 |
commit | c516c643de27cc5fb7d30495f5c9047651a64447 (patch) | |
tree | e81736251faebec0207d2de126d1a2f5eea2ab5a | |
parent | 8ca2fe632de965c13d26e64dc1ff8517240a4078 (diff) | |
download | libfuse-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.c | 47 |
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; |