From: Dave Reisner Date: Sat, 6 Oct 2012 20:32:17 +0000 (-0400) Subject: sysctl: avoiding exiting with error on -EEXIST X-Git-Tag: v195~160 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=1a3f40f912670d3dea3811a4560b368412090b81 sysctl: avoiding exiting with error on -EEXIST If the final key in any sysctl.d file is a duplicate, systemd-sysctl will exit with an error (and no explaination why). Ignore this, as duplicate keys are to be expected when overriding settings in the directory hierarchy. --- diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c index e77f49608..a68d67fd4 100644 --- a/src/sysctl/sysctl.c +++ b/src/sysctl/sysctl.c @@ -167,9 +167,13 @@ 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);