chiark / gitweb /
journal: properly implement matching with multiple matches
[elogind.git] / src / conf-parser.c
index 970877650d642a269e27c8b2a28266c671646410..a71dcd0d8fb8c87460ea24f81b244334ce740519 100644 (file)
@@ -88,7 +88,8 @@ int config_item_perf_lookup(
         else {
                 char *key;
 
-                if (asprintf(&key, "%s.%s", section, lvalue) < 0)
+                key = join(section, ".", lvalue, NULL);
+                if (!key)
                         return -ENOMEM;
 
                 p = lookup(key, strlen(key));
@@ -131,8 +132,12 @@ static int next_assignment(
         if (r < 0)
                 return r;
 
-        if (func)
-                return func(filename, line, section, lvalue, ltype, rvalue, data, userdata);
+        if (r > 0) {
+                if (func)
+                        return func(filename, line, section, lvalue, ltype, rvalue, data, userdata);
+
+                return 0;
+        }
 
         /* Warn about unknown non-extension fields. */
         if (!relaxed && !startswith(lvalue, "X-"))
@@ -309,7 +314,7 @@ int config_parse(
                                 continuation = c;
                         else {
                                 continuation = strdup(l);
-                                if (!c) {
+                                if (!continuation) {
                                         r = -ENOMEM;
                                         goto finish;
                                 }