Use standard __VA_OPT__ instead of GNU's ##__VA_ARGS__

C23 has standardized a way to write variadic macros that accept
zero arguments:
https://open-std.org/JTC1/SC22/WG14/www/docs/n3033.htm

Use that instead of the GNU extension when available.
This commit is contained in:
Simon Ser 2024-01-05 11:48:33 +01:00 committed by Simon Zeni
parent 315e022f2f
commit 3880ee15d7
3 changed files with 33 additions and 3 deletions

View file

@ -64,13 +64,23 @@ void _wlr_vlog(enum wlr_log_importance verbosity, const char *format, va_list ar
#define _WLR_FILENAME __FILE__
#endif
#define wlr_log(verb, fmt, ...) \
_wlr_log(verb, "[%s:%d] " fmt, _WLR_FILENAME, __LINE__, ##__VA_ARGS__)
#define wlr_vlog(verb, fmt, args) \
_wlr_vlog(verb, "[%s:%d] " fmt, _WLR_FILENAME, __LINE__, args)
#if __STDC_VERSION__ >= 202311L
#define wlr_log(verb, fmt, ...) \
_wlr_log(verb, "[%s:%d] " fmt, _WLR_FILENAME, __LINE__ __VA_OPT__(,) __VA_ARGS__)
#define wlr_log_errno(verb, fmt, ...) \
wlr_log(verb, fmt ": %s" __VA_OPT__(,) __VA_ARGS__, strerror(errno))
#else
#define wlr_log(verb, fmt, ...) \
_wlr_log(verb, "[%s:%d] " fmt, _WLR_FILENAME, __LINE__, ##__VA_ARGS__)
#define wlr_log_errno(verb, fmt, ...) \
wlr_log(verb, fmt ": %s", ##__VA_ARGS__, strerror(errno))
#endif
#endif