diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2023-02-27 04:06:19 +0100 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2023-02-27 18:55:57 +0100 |
commit | d2df7632321c473cd57064e2350b219fbc3f6677 (patch) | |
tree | ec81d4c0e51397e48f95f43d6180fb1bac69e3b6 | |
parent | fb05a713789fd9c20d0432f023ce26f3c5b94251 (diff) | |
download | passt-d2df7632321c473cd57064e2350b219fbc3f6677.tar passt-d2df7632321c473cd57064e2350b219fbc3f6677.tar.gz passt-d2df7632321c473cd57064e2350b219fbc3f6677.tar.bz2 passt-d2df7632321c473cd57064e2350b219fbc3f6677.tar.lz passt-d2df7632321c473cd57064e2350b219fbc3f6677.tar.xz passt-d2df7632321c473cd57064e2350b219fbc3f6677.tar.zst passt-d2df7632321c473cd57064e2350b219fbc3f6677.zip |
log, conf, tap: Define die() as err() plus exit(), drop cppcheck workarounds
If we define die() as a variadic macro, passing __VA_ARGS__ to err(),
and calling exit() outside err() itself, we can drop the workarounds
introduced in commit 36f0199f6ef4 ("conf, tap: Silence two false
positive invalidFunctionArg from cppcheck").
Suggested-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r-- | conf.c | 3 | ||||
-rw-r--r-- | log.c | 14 | ||||
-rw-r--r-- | log.h | 7 | ||||
-rw-r--r-- | tap.c | 6 |
4 files changed, 12 insertions, 18 deletions
@@ -1064,9 +1064,6 @@ static void conf_ugid(char *runas, uid_t *uid, gid_t *gid) if ((fd = open("/proc/self/uid_map", O_RDONLY | O_CLOEXEC)) < 0) { die("Can't determine if we're in init namespace: %s", strerror(errno)); - - /* Silence cppcheck's invalidFunctionArg for 'fd' in read() */ - return; } if (read(fd, buf, BUFSIZ) != sizeof(root_uid_map) || @@ -46,7 +46,7 @@ int log_trace; /* --trace mode enabled */ #define BEFORE_DAEMON (setlogmask(0) == LOG_MASK(LOG_EMERG)) -#define logfn(name, level, doexit) \ +#define logfn(name, level) \ void name(const char *format, ...) { \ struct timespec tp; \ va_list args; \ @@ -75,9 +75,6 @@ void name(const char *format, ...) { \ if (format[strlen(format)] != '\n') \ fprintf(stderr, "\n"); \ } \ - \ - if (doexit) \ - exit(EXIT_FAILURE); \ } /* Prefixes for log file messages, indexed by priority */ @@ -90,11 +87,10 @@ const char *logfile_prefix[] = { " ", /* LOG_DEBUG */ }; -logfn(die, LOG_ERR, 1) -logfn(err, LOG_ERR, 0) -logfn(warn, LOG_WARNING, 0) -logfn(info, LOG_INFO, 0) -logfn(debug,LOG_DEBUG, 0) +logfn(err, LOG_ERR) +logfn(warn, LOG_WARNING) +logfn(info, LOG_INFO) +logfn(debug,LOG_DEBUG) /** * trace_init() - Set log_trace depending on trace (debug) mode @@ -10,12 +10,17 @@ #define LOGFILE_CUT_RATIO 30 /* When full, cut ~30% size */ #define LOGFILE_SIZE_MIN (5UL * MAX(BUFSIZ, PAGE_SIZE)) -void die(const char *format, ...); void err(const char *format, ...); void warn(const char *format, ...); void info(const char *format, ...); void debug(const char *format, ...); +#define die(...) \ + do { \ + err(__VA_ARGS__); \ + exit(EXIT_FAILURE); \ + } while (0) + extern int log_trace; void trace_init(int enable); #define trace(...) \ @@ -1037,13 +1037,9 @@ static void tap_sock_unix_init(struct ctx *c) snprintf(path, UNIX_PATH_MAX - 1, UNIX_SOCK_PATH, i); ex = socket(AF_UNIX, SOCK_STREAM | SOCK_NONBLOCK, 0); - if (ex < 0) { + if (ex < 0) die("UNIX domain socket check: %s", strerror(errno)); - /* Silence cppcheck's invalidFunctionArg for 'ex' */ - return; - } - ret = connect(ex, (const struct sockaddr *)&addr, sizeof(addr)); if (!ret || (errno != ENOENT && errno != ECONNREFUSED && errno != EACCES)) { |