chiark / gitweb /
tests: add a few more tests to test-util.c
[elogind.git] / src / shared / log.c
index b39b5acb5bd469e4ae8cabc681031c91f87da267..ff2dd453509a2b813c942c6208211dea026887d6 100644 (file)
@@ -448,16 +448,22 @@ static int log_do_header(char *header, size_t size,
         snprintf(header, size,
                  "PRIORITY=%i\n"
                  "SYSLOG_FACILITY=%i\n"
-                 "CODE_FILE=%s\n"
-                 "CODE_LINE=%i\n"
-                 "CODE_FUNCTION=%s\n"
+                 "%s%.*s%s"
+                 "%s%.*i%s"
+                 "%s%.*s%s"
                  "%s%.*s%s"
                  "SYSLOG_IDENTIFIER=%s\n",
                  LOG_PRI(level),
                  LOG_FAC(level),
-                 file,
-                 line,
-                 func,
+                 file ? "CODE_FILE=" : "",
+                 file ? LINE_MAX : 0, file, /* %.0s means no output */
+                 file ? "\n" : "",
+                 line ? "CODE_LINE=" : "",
+                 line ? 1 : 0, line, /* %.0d means no output too, special case for 0 */
+                 line ? "\n" : "",
+                 func ? "CODE_FUNCTION=" : "",
+                 func ? LINE_MAX : 0, func,
+                 func ? "\n" : "",
                  object ? object_name : "",
                  object ? LINE_MAX : 0, object, /* %.0s means no output */
                  object ? "\n" : "",
@@ -535,11 +541,11 @@ static int log_dispatch(
 
                         k = write_to_journal(level, file, line, func,
                                              object_name, object, buffer);
-                        if (k < 0) {
-                                if (k != -EAGAIN)
+                        if (k <= 0) {
+                                if (k < 0 && k != -EAGAIN)
                                         log_close_journal();
                                 log_open_kmsg();
-                        } else if (k > 0)
+                        } else
                                 r++;
                 }
 
@@ -548,11 +554,11 @@ static int log_dispatch(
 
                         k = write_to_syslog(level, file, line, func,
                                             object_name, object, buffer);
-                        if (k < 0) {
-                                if (k != -EAGAIN)
+                        if (k <= 0) {
+                                if (k < 0 && k != -EAGAIN)
                                         log_close_syslog();
                                 log_open_kmsg();
-                        } else if (k > 0)
+                        } else
                                 r++;
                 }
 
@@ -565,10 +571,11 @@ static int log_dispatch(
 
                         k = write_to_kmsg(level, file, line, func,
                                           object_name, object, buffer);
-                        if (k < 0) {
-                                log_close_kmsg();
+                        if (k <= 0) {
+                                if (k < 0 && k != -EAGAIN)
+                                        log_close_kmsg();
                                 log_open_console();
-                        } else if (k > 0)
+                        } else
                                 r++;
                 }