From: Luca Boccassi Date: Mon, 22 Feb 2021 18:45:36 +0000 (+0000) Subject: sysext: split parsing SYSTEMD_SYSEXT_HIERARCHIES in a common helper X-Git-Tag: v248-rc3~114^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=280b3781bd03a728e1e2f78ad85ac3df4b4b010b;p=thirdparty%2Fsystemd.git sysext: split parsing SYSTEMD_SYSEXT_HIERARCHIES in a common helper --- diff --git a/src/shared/extension-release.c b/src/shared/extension-release.c index 5eecf5a3236..5676e2c0630 100644 --- a/src/shared/extension-release.c +++ b/src/shared/extension-release.c @@ -77,3 +77,18 @@ int extension_release_validate( log_debug("Version info of extension '%s' matches host.", name); return 1; } + +int parse_env_extension_hierarchies(char ***ret_hierarchies) { + int r; + + r = getenv_path_list("SYSTEMD_SYSEXT_HIERARCHIES", ret_hierarchies); + if (r < 0) + return log_debug_errno(r, "Failed to parse SYSTEMD_SYSEXT_HIERARCHIES environment variable : %m"); + if (!*ret_hierarchies) { + *ret_hierarchies = strv_new("/usr", "/opt"); + if (!*ret_hierarchies) + return -ENOMEM; + } + + return 0; +} diff --git a/src/shared/extension-release.h b/src/shared/extension-release.h index 5c77010b0e1..d026a9b225b 100644 --- a/src/shared/extension-release.h +++ b/src/shared/extension-release.h @@ -10,3 +10,6 @@ int extension_release_validate( const char *host_os_release_version_id, const char *host_os_release_sysext_level, char **extension_release); + +/* Parse SYSTEMD_SYSEXT_HIERARCHIES and if not set, return "/usr /opt" */ +int parse_env_extension_hierarchies(char ***ret_hierarchies); diff --git a/src/sysext/sysext.c b/src/sysext/sysext.c index 60f4dee3530..f68eaa12dba 100644 --- a/src/sysext/sysext.c +++ b/src/sysext/sysext.c @@ -982,16 +982,10 @@ static int run(int argc, char *argv[]) { /* For debugging purposes it might make sense to do this for other hierarchies than /usr/ and * /opt/, but let's make that a hacker/debugging feature, i.e. env var instead of cmdline * switch. */ - r = getenv_path_list("SYSTEMD_SYSEXT_HIERARCHIES", &arg_hierarchies); + r = parse_env_extension_hierarchies(&arg_hierarchies); if (r < 0) return log_error_errno(r, "Failed to parse $SYSTEMD_SYSEXT_HIERARCHIES environment variable: %m"); - if (!arg_hierarchies) { - arg_hierarchies = strv_new("/usr", "/opt"); - if (!arg_hierarchies) - return log_oom(); - } - return sysext_main(argc, argv); }