]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
conf-parser: simplify things a bit by using strextend()
authorLennart Poettering <lennart@poettering.net>
Wed, 8 Nov 2017 20:38:51 +0000 (21:38 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 13 Nov 2017 09:24:03 +0000 (10:24 +0100)
src/shared/conf-parser.c

index c304ae333496262c829401798abf53743908771d..d1c73b6f2dd7168f3fb361ed44b54dee97862225 100644 (file)
@@ -186,7 +186,6 @@ static int parse_line(const char* unit,
         assert(l);
 
         l = strstrip(l);
-
         if (!*l)
                 return 0;
 
@@ -319,8 +318,8 @@ int config_parse(const char *unit,
 
         for (;;) {
                 _cleanup_free_ char *buf = NULL;
-                char *l, *p, *c = NULL, *e;
                 bool escaped = false;
+                char *l, *p, *e;
 
                 r = read_line(f, LONG_LINE_MAX, &buf);
                 if (r == 0)
@@ -356,15 +355,13 @@ int config_parse(const char *unit,
                                 return -ENOBUFS;
                         }
 
-                        c = strappend(continuation, l);
-                        if (!c) {
+                        if (!strextend(&continuation, l, NULL)) {
                                 if (warn)
                                         log_oom();
                                 return -ENOMEM;
                         }
 
-                        continuation = mfree(continuation);
-                        p = c;
+                        p = continuation;
                 } else
                         p = l;
 
@@ -378,9 +375,7 @@ int config_parse(const char *unit,
                 if (escaped) {
                         *(e-1) = ' ';
 
-                        if (c)
-                                continuation = c;
-                        else {
+                        if (!continuation) {
                                 continuation = strdup(l);
                                 if (!continuation) {
                                         if (warn)
@@ -405,13 +400,14 @@ int config_parse(const char *unit,
                                &section_ignored,
                                p,
                                userdata);
-                free(c);
-
                 if (r < 0) {
                         if (warn)
                                 log_warning_errno(r, "%s:%u: Failed to parse file: %m", filename, line);
                         return r;
+
                 }
+
+                continuation = mfree(continuation);
         }
 
         return 0;