chiark / gitweb /
modules-load: drop /lib from search path if we don't have it split off
[elogind.git] / src / log.c
index 0594f7fde59cc208cc5940e31386f598d17d0545..949936762a14c91830bd917029afeca91a205b47 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -33,6 +33,8 @@
 #include "macro.h"
 #include "socket-util.h"
 
+#define SNDBUF_SIZE (8*1024*1024)
+
 static LogTarget log_target = LOG_TARGET_CONSOLE;
 static int log_max_level = LOG_INFO;
 
@@ -127,6 +129,8 @@ static int create_log_socket(int type) {
         if (fd < 0)
                 return -errno;
 
+        fd_inc_sndbuf(fd, SNDBUF_SIZE);
+
         return fd;
 }
 
@@ -578,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);
@@ -606,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) {
@@ -621,11 +638,11 @@ _noreturn_ static void log_assert(const char *text, const char *file, int line,
 }
 #pragma GCC diagnostic pop
 
-void log_assert_failed(const char *text, const char *file, int line, const char *func) {
+_noreturn_ void log_assert_failed(const char *text, const char *file, int line, const char *func) {
         log_assert(text, file, line, func, "Assertion '%s' failed at %s:%u, function %s(). Aborting.");
 }
 
-void log_assert_failed_unreachable(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) {
         log_assert(text, file, line, func, "Code should not be reached '%s' at %s:%u, function %s(). Aborting.");
 }