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.
This commit is contained in:
Dave Reisner 2012-10-06 16:32:17 -04:00
parent 8bd3b8620c
commit 1a3f40f912
1 changed files with 6 additions and 2 deletions

View File

@ -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);