X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fsystemd.git;a=blobdiff_plain;f=src%2Fjournal%2Fjournald-server.c;h=f286e3030f77b7df1f8fc382ce338fbd7abb7f3a;hp=140d40667eb2b4bd463a10a2e228688c95fdb2ba;hb=6bedfcbb2970e06a4d3280c8fb62083d252ede73;hpb=63a94c49ddee0447374013758252a9a6b30c3f7a
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
index 140d40667eb..f286e3030f7 100644
--- a/src/journal/journald-server.c
+++ b/src/journal/journald-server.c
@@ -19,7 +19,6 @@
along with systemd; If not, see .
***/
-#include
#ifdef HAVE_SELINUX
#include
#endif
@@ -27,6 +26,7 @@
#include
#include
#include
+#include
#include "libudev.h"
#include "sd-daemon.h"
@@ -36,16 +36,11 @@
#include "acl-util.h"
#include "cgroup-util.h"
#include "conf-parser.h"
+#include "extract-word.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "hashmap.h"
#include "hostname-util.h"
-#include "missing.h"
-#include "mkdir.h"
-#include "process-util.h"
-#include "rm-rf.h"
-#include "selinux-util.h"
-#include "signal-util.h"
-#include "socket-util.h"
#include "journal-authenticate.h"
#include "journal-file.h"
#include "journal-internal.h"
@@ -57,6 +52,15 @@
#include "journald-server.h"
#include "journald-stream.h"
#include "journald-syslog.h"
+#include "missing.h"
+#include "mkdir.h"
+#include "parse-util.h"
+#include "process-util.h"
+#include "rm-rf.h"
+#include "selinux-util.h"
+#include "signal-util.h"
+#include "socket-util.h"
+#include "string-util.h"
#define USER_JOURNALS_MAX 1024
@@ -1287,8 +1291,7 @@ static int setup_signals(Server *s) {
static int server_parse_proc_cmdline(Server *s) {
_cleanup_free_ char *line = NULL;
- const char *w, *state;
- size_t l;
+ const char *p;
int r;
r = proc_cmdline(&line);
@@ -1297,12 +1300,16 @@ static int server_parse_proc_cmdline(Server *s) {
return 0;
}
- FOREACH_WORD_QUOTED(w, l, line, state) {
+ p = line;
+ for(;;) {
_cleanup_free_ char *word;
- word = strndup(w, l);
- if (!word)
- return -ENOMEM;
+ r = extract_first_word(&p, &word, NULL, 0);
+ if (r < 0)
+ return log_error_errno(r, "Failed to parse journald syntax \"%s\": %m", line);
+
+ if (r == 0)
+ break;
if (startswith(word, "systemd.journald.forward_to_syslog=")) {
r = parse_boolean(word + 35);