chiark / gitweb /
log: introduce log_metav
authorLennart Poettering <lennart@poettering.net>
Wed, 14 Mar 2012 13:54:41 +0000 (14:54 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 14 Mar 2012 13:54:41 +0000 (14:54 +0100)
src/log.c
src/log.h

index e1f511cca6189d87c995bad265d6fa760bc99065..949936762a14c91830bd917029afeca91a205b47 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -582,26 +582,22 @@ int log_dump_internal(
         return r;
 }
 
-int log_meta(
+int log_metav(
         int level,
         const char*file,
         int line,
         const char *func,
-        const char *format, ...) {
+        const char *format,
+        va_list ap) {
 
         char buffer[LINE_MAX];
         int saved_errno, r;
-        va_list ap;
 
         if (_likely_(LOG_PRI(level) > log_max_level))
                 return 0;
 
         saved_errno = errno;
-
-        va_start(ap, format);
         vsnprintf(buffer, sizeof(buffer), format, ap);
-        va_end(ap);
-
         char_array_0(buffer);
 
         r = log_dispatch(level, file, line, func, buffer);
@@ -610,6 +606,23 @@ int log_meta(
         return r;
 }
 
+int log_meta(
+        int level,
+        const char*file,
+        int line,
+        const char *func,
+        const char *format, ...) {
+
+        int r;
+        va_list ap;
+
+        va_start(ap, format);
+        r = log_metav(level, file, line, func, format, ap);
+        va_end(ap);
+
+        return r;
+}
+
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wformat-nonliteral"
 _noreturn_ static void log_assert(const char *text, const char *file, int line, const char *func, const char *format) {
index 7028a13275fce78d0fa91f566881a47aa5dcd4eb..cf9f7fa5696cd8009a0e12270e21d1348e331032 100644 (file)
--- a/src/log.h
+++ b/src/log.h
@@ -24,6 +24,7 @@
 
 #include <syslog.h>
 #include <stdbool.h>
+#include <stdarg.h>
 
 #include "macro.h"
 
@@ -73,6 +74,14 @@ int log_meta(
         const char *func,
         const char *format, ...) _printf_attr_(5,6);
 
+int log_metav(
+        int level,
+        const char*file,
+        int line,
+        const char *func,
+        const char *format,
+        va_list ap);
+
 _noreturn_ void log_assert_failed(const char *text, const char *file, int line, const char *func);
 _noreturn_ void log_assert_failed_unreachable(const char *text, const char *file, int line, const char *func);