chiark / gitweb /
sysctl: parse all keys in a config file
[elogind.git] / src / sysctl / sysctl.c
index e77f496089f760393adcb62dec02948630ae1831..035e0ec321c5a4d951fd91e7761fc6430edb0f29 100644 (file)
@@ -167,14 +167,18 @@ static int parse_file(const char *path, bool ignore_enoent) {
 
                 r = hashmap_put(sysctl_options, property, new_value);
                 if (r < 0) {
-                        if (r == -EEXIST)
+                        if (r == -EEXIST) {
+                                /* ignore this "error" to avoid returning it
+                                 * for the function when this is the last key
+                                 * in the file being parsed. */
+                                r = 0;
                                 log_debug("Skipping previously assigned sysctl variable %s", property);
-                        else
+                        else
                                 log_error("Failed to add sysctl variable %s to hashmap: %s", property, strerror(-r));
 
                         free(property);
                         free(new_value);
-                        if (r != -EEXIST)
+                        if (r != 0)
                                 goto finish;
                 }
         }