From 778242986fc1d75e6f5c8cbac5d49fc3152984ef Mon Sep 17 00:00:00 2001 From: Kim Woelders Date: Tue, 17 Jul 2018 14:02:44 +0200 Subject: [PATCH] Debug tweaks - Add gcc printf format check to _log() - Show thread ids - Enable setting debug level --- ttynvt.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/ttynvt.c b/ttynvt.c index 2ebf337..c00856e 100644 --- a/ttynvt.c +++ b/ttynvt.c @@ -29,6 +29,9 @@ #define RX_BUF_SIZE 1024 +#define _PRF_N_(no) __attribute__((__format__(__printf__, (no), (no) + 1))) +#define _PRF2_ _PRF_N_(2) + static struct ttynvt_param { unsigned int major; @@ -69,17 +72,28 @@ typedef struct ttynvt { tn_ctx_t *tn; } ttynvt_t; -static void _log(int prio, const char *fmt, ...) +#include +#define gettid() (pid_t)syscall(__NR_gettid) + +_PRF2_ static void _log(int prio, const char *fmt, ...) { va_list arg; + char buf[256]; va_start(arg, fmt); +#if 0 vsyslog(prio, fmt, arg); +#else + vsnprintf(buf, sizeof(buf), fmt, arg); + syslog(prio, "[%d] %s", gettid(), buf); +#endif va_end(arg); } #define DBG(...) \ - if (ttynvt_param.debug) _log(LOG_DEBUG, __VA_ARGS__) + if (ttynvt_param.debug > 0) _log(LOG_DEBUG, __VA_ARGS__) +#define DBG2(...) \ + if (ttynvt_param.debug > 1) _log(LOG_DEBUG, __VA_ARGS__) static int _check_dev(void) @@ -812,7 +826,7 @@ static const struct cuse_lowlevel_ops ttynvt_op = { #define TTYNET_OPT(t, p, v) { t, offsetof(struct ttynvt_param, p), v } static const struct fuse_opt ttynvt_opts[] = { - TTYNET_OPT("-D", debug, 1), + TTYNET_OPT("-D %d", debug, 1), TTYNET_OPT("-M %u", major, 1), TTYNET_OPT("--maj=%u", major, 1), TTYNET_OPT("-m %u", minor, 1), @@ -829,7 +843,7 @@ static const struct fuse_opt ttynvt_opts[] = { static void print_help(void) { fprintf(stderr, "ttynvt Usage:\n" - "\t-D\tEnable debug\n" + "\t-D level\tEnable debug\n" "\t-M major, --maj=major\n" "\t-m minor, --min=minor\n" "\t-n name, --name=name (default: ttyNVT0)\n"