basic/stdio-util: allow xsprintf() to be used without any arguments
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 7 Oct 2022 13:26:36 +0000 (15:26 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 11 Oct 2022 14:10:21 +0000 (16:10 +0200)
xsprintf(buf, "…: %m") would fail, now it works.

src/basic/stdio-util.h

index 69d7062ec6f38eeac130c4a25c51e629053deba5..f647f125ac8e7d25a2a89dbc20a36a61be3b9c0b 100644 (file)
@@ -9,16 +9,16 @@
 #include "macro.h"
 #include "memory-util.h"
 
-#define snprintf_ok(buf, len, fmt, ...)                                \
-        ({                                                             \
-                char *_buf = (buf);                                    \
-                size_t _len = (len);                                   \
-                int _snpf = snprintf(_buf, _len, (fmt), __VA_ARGS__);  \
-                _snpf >= 0 && (size_t) _snpf < _len ? _buf : NULL;     \
+#define snprintf_ok(buf, len, fmt, ...)                                 \
+        ({                                                              \
+                char *_buf = (buf);                                     \
+                size_t _len = (len);                                    \
+                int _snpf = snprintf(_buf, _len, (fmt), ##__VA_ARGS__); \
+                _snpf >= 0 && (size_t) _snpf < _len ? _buf : NULL;      \
         })
 
 #define xsprintf(buf, fmt, ...) \
-        assert_message_se(snprintf_ok(buf, ELEMENTSOF(buf), fmt, __VA_ARGS__), "xsprintf: " #buf "[] must be big enough")
+        assert_message_se(snprintf_ok(buf, ELEMENTSOF(buf), fmt, ##__VA_ARGS__), "xsprintf: " #buf "[] must be big enough")
 
 #define VA_FORMAT_ADVANCE(format, ap)                                   \
 do {                                                                    \