X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fjournal%2Fjournald-kmsg.c;h=21649d06ce01e8f529a2a84d903af3f70ae95a2b;hp=4f5e7a0c52f2ad3c5df5e48a07f25b4ef03ffe26;hb=47c649b5de480b832bb11e0d52ba58d962d61fb2;hpb=b2e6df73aa508cc09b1b536a2fb9f90f152b89fa diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c index 4f5e7a0c5..21649d06c 100644 --- a/src/journal/journald-kmsg.c +++ b/src/journal/journald-kmsg.c @@ -28,7 +28,7 @@ #include #include -#include "journald.h" +#include "journald-server.h" #include "journald-kmsg.h" #include "journald-syslog.h" @@ -109,7 +109,7 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) { char *message = NULL, *syslog_priority = NULL, *syslog_pid = NULL, *syslog_facility = NULL, *syslog_identifier = NULL, *source_time = NULL; int priority, r; unsigned n = 0, z = 0, j; - usec_t usec; + unsigned long long usec; char *identifier = NULL, *pid = NULL, *e, *f, *k; uint64_t serial; size_t pl; @@ -151,7 +151,8 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) { /* Did we lose any? */ if (serial > *s->kernel_seqnum) - server_driver_message(s, SD_MESSAGE_JOURNAL_MISSED, "Missed %llu kernel messages", (unsigned long long) serial - *s->kernel_seqnum - 1); + server_driver_message(s, SD_MESSAGE_JOURNAL_MISSED, "Missed %"PRIu64" kernel messages", + serial - *s->kernel_seqnum - 1); /* Make sure we never read this one again. Note that * we always store the next message serial we expect @@ -171,7 +172,7 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) { e = f; *e = 0; - r = parse_usec(p, &usec); + r = safe_atollu(p, &usec); if (r < 0) return; @@ -250,10 +251,12 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) { break; g = udev_list_entry_get_name(ll); - b = strappend("_UDEV_DEVLINK=", g); if (g) { - IOVEC_SET_STRING(iovec[n++], b); - z++; + b = strappend("_UDEV_DEVLINK=", g); + if (b) { + IOVEC_SET_STRING(iovec[n++], b); + z++; + } } j++; @@ -263,8 +266,7 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) { } } - if (asprintf(&source_time, "_SOURCE_MONOTONIC_TIMESTAMP=%llu", - (unsigned long long) usec) >= 0) + if (asprintf(&source_time, "_SOURCE_MONOTONIC_TIMESTAMP=%llu", usec) >= 0) IOVEC_SET_STRING(iovec[n++], source_time); IOVEC_SET_STRING(iovec[n++], "_TRANSPORT=kernel"); @@ -275,7 +277,7 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) { if ((priority & LOG_FACMASK) == LOG_KERN) IOVEC_SET_STRING(iovec[n++], "SYSLOG_IDENTIFIER=kernel"); else { - syslog_parse_identifier((const char**) &p, &identifier, &pid); + pl -= syslog_parse_identifier((const char**) &p, &identifier, &pid); /* Avoid any messages we generated ourselves via * log_info() and friends. */ @@ -302,7 +304,7 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) { if (message) IOVEC_SET_STRING(iovec[n++], message); - server_dispatch_message(s, iovec, n, ELEMENTSOF(iovec), NULL, NULL, NULL, 0, NULL, priority); + server_dispatch_message(s, iovec, n, ELEMENTSOF(iovec), NULL, NULL, NULL, 0, NULL, priority, 0); finish: for (j = 0; j < z; j++)