log: include 'fmt' in __VA_ARGS__

This ensures all calls have at least one __VA_ARGS__ argument, thus
making them ISO C99 compliant.
This commit is contained in:
Daniel Eklöf 2020-08-23 07:44:02 +02:00
parent dabdffafa5
commit c779a5ec7d
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
4 changed files with 27 additions and 26 deletions

View file

@ -105,10 +105,10 @@ static const char *const search_binding_action_map[] = {
static_assert(ALEN(search_binding_action_map) == BIND_ACTION_SEARCH_COUNT,
"search binding action map size mismatch");
#define LOG_AND_NOTIFY_ERR(fmt, ...) \
#define LOG_AND_NOTIFY_ERR(...) \
do { \
LOG_ERR(fmt, ## __VA_ARGS__); \
char *text = xasprintf(fmt, ## __VA_ARGS__); \
LOG_ERR(__VA_ARGS__); \
char *text = xasprintf(__VA_ARGS__); \
struct user_notification notif = { \
.kind = USER_NOTIFICATION_ERROR, \
.text = text, \
@ -116,10 +116,10 @@ static_assert(ALEN(search_binding_action_map) == BIND_ACTION_SEARCH_COUNT,
tll_push_back(conf->notifications, notif); \
} while (0)
#define LOG_AND_NOTIFY_WARN(fmt, ...) \
#define LOG_AND_NOTIFY_WARN(...) \
do { \
LOG_WARN(fmt, ## __VA_ARGS__); \
char *text = xasprintf(fmt, ## __VA_ARGS__); \
LOG_WARN(__VA_ARGS__); \
char *text = xasprintf(__VA_ARGS__); \
struct user_notification notif = { \
.kind = USER_NOTIFICATION_WARNING, \
.text = text, \
@ -127,14 +127,14 @@ static_assert(ALEN(search_binding_action_map) == BIND_ACTION_SEARCH_COUNT,
tll_push_back(conf->notifications, notif); \
} while (0)
#define LOG_AND_NOTIFY_ERRNO(fmt, ...) \
#define LOG_AND_NOTIFY_ERRNO(...) \
do { \
int _errno = errno; \
LOG_ERRNO(fmt, ## __VA_ARGS__); \
int len = snprintf(NULL, 0, fmt, ## __VA_ARGS__); \
LOG_ERRNO(__VA_ARGS__); \
int len = snprintf(NULL, 0, __VA_ARGS__); \
int errno_len = snprintf(NULL, 0, ": %s", strerror(_errno)); \
char *text = xmalloc(len + errno_len + 1); \
snprintf(text, len + errno_len + 1, fmt, ## __VA_ARGS__); \
snprintf(text, len + errno_len + 1, __VA_ARGS__); \
snprintf(&text[len], errno_len + 1, ": %s", strerror(_errno)); \
struct user_notification notif = { \
.kind = USER_NOTIFICATION_ERROR, \

26
log.h
View file

@ -23,21 +23,21 @@ void log_errno_provided(
const char *file, int lineno, int _errno,
const char *fmt, ...) PRINTF(6);
#define LOG_ERR(fmt, ...) \
log_msg(LOG_CLASS_ERROR, LOG_MODULE, __FILE__, __LINE__, fmt, ## __VA_ARGS__)
#define LOG_ERRNO(fmt, ...) \
log_errno(LOG_CLASS_ERROR, LOG_MODULE, __FILE__, __LINE__, fmt, ## __VA_ARGS__)
#define LOG_ERRNO_P(fmt, _errno, ...) \
#define LOG_ERR(...) \
log_msg(LOG_CLASS_ERROR, LOG_MODULE, __FILE__, __LINE__, __VA_ARGS__)
#define LOG_ERRNO(...) \
log_errno(LOG_CLASS_ERROR, LOG_MODULE, __FILE__, __LINE__, __VA_ARGS__)
#define LOG_ERRNO_P(_errno, ...) \
log_errno_provided(LOG_CLASS_ERROR, LOG_MODULE, __FILE__, __LINE__, \
_errno, fmt, ## __VA_ARGS__)
#define LOG_WARN(fmt, ...) \
log_msg(LOG_CLASS_WARNING, LOG_MODULE, __FILE__, __LINE__, fmt, ## __VA_ARGS__)
#define LOG_INFO(fmt, ...) \
log_msg(LOG_CLASS_INFO, LOG_MODULE, __FILE__, __LINE__, fmt, ## __VA_ARGS__)
_errno, __VA_ARGS__)
#define LOG_WARN(...) \
log_msg(LOG_CLASS_WARNING, LOG_MODULE, __FILE__, __LINE__, __VA_ARGS__)
#define LOG_INFO(...) \
log_msg(LOG_CLASS_INFO, LOG_MODULE, __FILE__, __LINE__, __VA_ARGS__)
#if defined(LOG_ENABLE_DBG) && LOG_ENABLE_DBG
#define LOG_DBG(fmt, ...) \
log_msg(LOG_CLASS_DEBUG, LOG_MODULE, __FILE__, __LINE__, fmt, ## __VA_ARGS__)
#define LOG_DBG(...) \
log_msg(LOG_CLASS_DEBUG, LOG_MODULE, __FILE__, __LINE__, __VA_ARGS__)
#else
#define LOG_DBG(fmt, ...)
#define LOG_DBG(...)
#endif

View file

@ -281,7 +281,7 @@ slave_spawn(int ptmx, int argc, const char *cwd, char *const *argv,
sigprocmask(SIG_SETMASK, &mask, NULL) < 0)
{
const int _errno = errno;
LOG_ERRNO_P("failed to restore signals", errno);
LOG_ERRNO_P(errno, "failed to restore signals");
(void)!write(fork_pipe[1], &_errno, sizeof(_errno));
_exit(_errno);
}
@ -332,7 +332,8 @@ slave_spawn(int ptmx, int argc, const char *cwd, char *const *argv,
return -1;
} else if (ret == sizeof(_errno)) {
LOG_ERRNO_P(
"%s: failed to execute", _errno, argc == 0 ? conf_shell : argv[0]);
_errno, "%s: failed to execute",
argc == 0 ? conf_shell : argv[0]);
return -1;
} else
LOG_DBG("%s: successfully started", conf_shell);

View file

@ -61,7 +61,7 @@ spawn(struct reaper *reaper, const char *cwd, char *const argv[],
LOG_ERRNO("failed to read from pipe");
return false;
} else {
LOG_ERRNO_P("%s: failed to spawn", _errno, argv[0]);
LOG_ERRNO_P(_errno, "%s: failed to spawn", argv[0]);
errno = _errno;
waitpid(pid, NULL, 0);
return false;