From: Lennart Poettering Date: Wed, 24 Feb 2016 20:43:09 +0000 (+0100) Subject: install: be more accurate when checking whether something is runtime configuration X-Git-Tag: v230~185^2~56 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=385eb996344f3b2a9223b66e83b853c844c02947;p=thirdparty%2Fsystemd.git install: be more accurate when checking whether something is runtime configuration Let's actually check the runtime config dir, instead of just /run. --- diff --git a/src/shared/install.c b/src/shared/install.c index f8023433991..59582e573db 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -118,6 +118,22 @@ static int path_is_config(const LookupPaths *p, const char *path) { path_equal(parent, p->runtime_config); } +static int path_is_runtime(const LookupPaths *p, const char *path) { + _cleanup_free_ char *parent = NULL; + + assert(p); + assert(path); + + if (path_startswith(path, "/run")) + return true; + + parent = dirname_malloc(path); + if (!parent) + return -ENOMEM; + + return path_equal(parent, p->runtime_config); +} + static int verify_root_dir(UnitFileScope scope, const char **root_dir) { int r; @@ -1950,7 +1966,11 @@ int unit_file_lookup_state( switch (i->type) { case UNIT_FILE_TYPE_MASKED: - state = path_startswith(i->path, "/run") ? UNIT_FILE_MASKED_RUNTIME : UNIT_FILE_MASKED; + r = path_is_runtime(paths, i->path); + if (r < 0) + return r; + + state = r > 0 ? UNIT_FILE_MASKED_RUNTIME : UNIT_FILE_MASKED; break; case UNIT_FILE_TYPE_REGULAR: