X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fload-dropin.c;h=ffc68b4d737fdaa269e1e5f7ea05ea25184b7b95;hp=35040090ac3bbe186d2d295b7b4630e76d3dc040;hb=ac45dec934b0932d03fbd498a3c6e8e90a01813f;hpb=9fa3006323e86962ceaa3171b906cf2b1c2cf525 diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c index 35040090a..ffc68b4d7 100644 --- a/src/core/load-dropin.c +++ b/src/core/load-dropin.c @@ -58,6 +58,7 @@ static int iterate_dir( if (errno == ENOENT) return 0; + log_error("Failed to open directory %s: %m", path); return -errno; } @@ -100,8 +101,7 @@ static int process_dir( UnitDependency dependency, char ***strv) { - int r; - char *path; + _cleanup_free_ char *path = NULL; assert(u); assert(unit_path); @@ -112,39 +112,23 @@ static int process_dir( if (!path) return log_oom(); - if (u->manager->unit_path_cache && - !set_get(u->manager->unit_path_cache, path)) - r = 0; - else - r = iterate_dir(u, path, dependency, strv); - free(path); - - if (r < 0) - return r; + if (!u->manager->unit_path_cache || set_get(u->manager->unit_path_cache, path)) + iterate_dir(u, path, dependency, strv); if (u->instance) { - char *template; + _cleanup_free_ char *template = NULL, *p = NULL; /* Also try the template dir */ template = unit_name_template(name); if (!template) return log_oom(); - path = strjoin(unit_path, "/", template, suffix, NULL); - free(template); - - if (!path) + p = strjoin(unit_path, "/", template, suffix, NULL); + if (!p) return log_oom(); - if (u->manager->unit_path_cache && - !set_get(u->manager->unit_path_cache, path)) - r = 0; - else - r = iterate_dir(u, path, dependency, strv); - free(path); - - if (r < 0) - return r; + if (!u->manager->unit_path_cache || set_get(u->manager->unit_path_cache, p)) + iterate_dir(u, p, dependency, strv); } return 0; @@ -162,12 +146,8 @@ char **unit_find_dropin_paths(Unit *u) { SET_FOREACH(t, u->names, i) { char **p; - STRV_FOREACH(p, u->manager->lookup_paths.unit_path) { - /* This loads the drop-in config snippets */ - r = process_dir(u, *p, t, ".d", _UNIT_DEPENDENCY_INVALID, &strv); - if (r < 0) - return NULL; - } + STRV_FOREACH(p, u->manager->lookup_paths.unit_path) + process_dir(u, *p, t, ".d", _UNIT_DEPENDENCY_INVALID, &strv); } if (strv_isempty(strv)) @@ -186,7 +166,6 @@ char **unit_find_dropin_paths(Unit *u) { int unit_load_dropin(Unit *u) { Iterator i; char *t, **f; - int r; assert(u); @@ -196,26 +175,20 @@ int unit_load_dropin(Unit *u) { char **p; STRV_FOREACH(p, u->manager->lookup_paths.unit_path) { - r = process_dir(u, *p, t, ".wants", UNIT_WANTS, NULL); - if (r < 0) - return r; - - r = process_dir(u, *p, t, ".requires", UNIT_REQUIRES, NULL); - if (r < 0) - return r; + process_dir(u, *p, t, ".wants", UNIT_WANTS, NULL); + process_dir(u, *p, t, ".requires", UNIT_REQUIRES, NULL); } } u->dropin_paths = unit_find_dropin_paths(u); - if (! u->dropin_paths) + if (!u->dropin_paths) return 0; STRV_FOREACH(f, u->dropin_paths) { - r = config_parse(u->id, *f, NULL, - UNIT_VTABLE(u)->sections, config_item_perf_lookup, - (void*) load_fragment_gperf_lookup, false, false, u); - if (r < 0) - return r; + config_parse(u->id, *f, NULL, + UNIT_VTABLE(u)->sections, + config_item_perf_lookup, load_fragment_gperf_lookup, + false, false, false, u); } u->dropin_mtime = now(CLOCK_REALTIME);