From: Mike Yuan Date: Fri, 4 Oct 2024 10:57:23 +0000 (+0200) Subject: path-lookup: move find_portable_profile() to portable-util X-Git-Tag: v257-rc1~317^2~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=feae34d64ea3e037a2a6b631b768ea36c90d30bb;p=thirdparty%2Fsystemd.git path-lookup: move find_portable_profile() to portable-util --- diff --git a/src/analyze/analyze-security.c b/src/analyze/analyze-security.c index f7e9b942132..fb4fd654f52 100644 --- a/src/analyze/analyze-security.c +++ b/src/analyze/analyze-security.c @@ -26,6 +26,7 @@ #include "nulstr-util.h" #include "parse-util.h" #include "path-util.h" +#include "portable-util.h" #include "pretty-print.h" #include "seccomp-util.h" #include "service.h" diff --git a/src/basic/path-lookup.c b/src/basic/path-lookup.c index 234b1973948..d4d888c3620 100644 --- a/src/basic/path-lookup.c +++ b/src/basic/path-lookup.c @@ -901,31 +901,3 @@ char **env_generator_binary_paths(RuntimeScope runtime_scope) { return TAKE_PTR(paths); } - -int find_portable_profile(const char *name, const char *unit, char **ret_path) { - const char *dot; - int r; - - assert(name); - assert(ret_path); - - assert_se(dot = strrchr(unit, '.')); - - NULSTR_FOREACH(p, PORTABLE_PROFILE_DIRS) { - _cleanup_free_ char *joined = NULL; - - joined = strjoin(p, "/", name, "/", dot + 1, ".conf"); - if (!joined) - return -ENOMEM; - - r = access_nofollow(joined, F_OK); - if (r >= 0) { - *ret_path = TAKE_PTR(joined); - return 0; - } - if (r != -ENOENT) - return r; - } - - return -ENOENT; -} diff --git a/src/basic/path-lookup.h b/src/basic/path-lookup.h index fab6edd6ca1..1176ad8871c 100644 --- a/src/basic/path-lookup.h +++ b/src/basic/path-lookup.h @@ -3,8 +3,6 @@ #include -#include "constants.h" -#include "macro.h" #include "runtime-scope.h" typedef enum LookupPathsFlags { @@ -69,6 +67,3 @@ void lookup_paths_done(LookupPaths *p); char **generator_binary_paths(RuntimeScope scope); char **env_generator_binary_paths(RuntimeScope scope); - -#define PORTABLE_PROFILE_DIRS CONF_PATHS_NULSTR("systemd/portable/profile") -int find_portable_profile(const char *name, const char *unit, char **ret_path); diff --git a/src/portable/portable.c b/src/portable/portable.c index f0c508c306f..b1055aa8c36 100644 --- a/src/portable/portable.c +++ b/src/portable/portable.c @@ -32,6 +32,7 @@ #include "os-util.h" #include "path-lookup.h" #include "portable.h" +#include "portable-util.h" #include "process-util.h" #include "rm-rf.h" #include "selinux-util.h" diff --git a/src/shared/meson.build b/src/shared/meson.build index 7b519e9ee81..e759293364d 100644 --- a/src/shared/meson.build +++ b/src/shared/meson.build @@ -144,6 +144,7 @@ shared_sources = files( 'pkcs11-util.c', 'plymouth-util.c', 'polkit-agent.c', + 'portable-util.c', 'pretty-print.c', 'capsule-util.c', 'ptyfwd.c', diff --git a/src/shared/portable-util.c b/src/shared/portable-util.c new file mode 100644 index 00000000000..85c128a1b44 --- /dev/null +++ b/src/shared/portable-util.c @@ -0,0 +1,34 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#include "fs-util.h" +#include "nulstr-util.h" +#include "portable-util.h" +#include "string-util.h" + +int find_portable_profile(const char *name, const char *unit, char **ret_path) { + const char *dot; + int r; + + assert(name); + assert(ret_path); + + assert_se(dot = strrchr(unit, '.')); + + NULSTR_FOREACH(p, PORTABLE_PROFILE_DIRS) { + _cleanup_free_ char *joined = NULL; + + joined = strjoin(p, "/", name, "/", dot + 1, ".conf"); + if (!joined) + return -ENOMEM; + + r = access_nofollow(joined, F_OK); + if (r >= 0) { + *ret_path = TAKE_PTR(joined); + return 0; + } + if (r != -ENOENT) + return r; + } + + return -ENOENT; +} diff --git a/src/shared/portable-util.h b/src/shared/portable-util.h new file mode 100644 index 00000000000..2c89fe3eb8c --- /dev/null +++ b/src/shared/portable-util.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +#pragma once + +#include "constants.h" +#include "macro.h" + +#define PORTABLE_PROFILE_DIRS CONF_PATHS_NULSTR("systemd/portable/profile") + +int find_portable_profile(const char *name, const char *unit, char **ret_path);