log: make log_buf() return how much it wrote
authorJens Axboe <axboe@fb.com>
Wed, 24 May 2017 03:43:44 +0000 (21:43 -0600)
committerJens Axboe <axboe@fb.com>
Wed, 24 May 2017 03:43:44 +0000 (21:43 -0600)
Signed-off-by: Jens Axboe <axboe@fb.com>
log.h

diff --git a/log.h b/log.h
index a39dea61893194e7a45740e653dc1e57a39181de..66546c446c397f19bb2d13fad09d292305220c1b 100644 (file)
--- a/log.h
+++ b/log.h
@@ -16,13 +16,15 @@ extern size_t log_valist(const char *str, va_list);
 extern size_t log_info_buf(const char *buf, size_t len);
 extern int log_info_flush(void);
 
 extern size_t log_info_buf(const char *buf, size_t len);
 extern int log_info_flush(void);
 
-#define log_buf(buf, format, args...)          \
-do {                                           \
-       if ((buf) != NULL)                      \
-               __log_buf(buf, format, ##args); \
-       else                                    \
-               log_info(format, ##args);       \
-} while (0)
+#define log_buf(buf, format, args...)                  \
+({                                                     \
+       size_t __ret;                                   \
+       if ((buf) != NULL)                              \
+               __ret = __log_buf(buf, format, ##args); \
+       else                                            \
+               __ret = log_info(format, ##args);       \
+       __ret;                                          \
+})
 
 enum {
        FIO_LOG_DEBUG   = 1,
 
 enum {
        FIO_LOG_DEBUG   = 1,