]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
path-lookup: modernize get_paths_from_environ()
authorMike Yuan <me@yhndnzj.com>
Sun, 25 Aug 2024 18:32:18 +0000 (20:32 +0200)
committerMike Yuan <me@yhndnzj.com>
Sun, 6 Oct 2024 17:32:55 +0000 (19:32 +0200)
Use retval rather than additional param to indicate
whether the normal paths shall be appended.

src/libsystemd/sd-path/path-lookup.c

index 673a255685c640a304341ad0999e96e5b5027e23..64bb46096a5497ff5c881c267b1a81c17d4d40cf 100644 (file)
@@ -371,34 +371,29 @@ static int patch_root_prefix_strv(char **l, const char *root_dir) {
         return 0;
 }
 
-static int get_paths_from_environ(const char *var, char ***paths, bool *append) {
+static int get_paths_from_environ(const char *var, char ***ret) {
         const char *e;
         int r;
 
         assert(var);
-        assert(paths);
-        assert(append);
-
-        *append = false;
+        assert(ret);
 
         e = getenv(var);
-        if (e) {
-                const char *k;
+        if (!e) {
+                *ret = NULL;
+                return 0;
+        }
 
-                k = endswith(e, ":");
-                if (k) {
-                        e = strndupa_safe(e, k - e);
-                        *append = true;
-                }
+        bool append = endswith(e, ":"); /* Whether to append the normal search paths after what's obtained
+                                           from envvar */
 
-                /* FIXME: empty components in other places should be rejected. */
+        /* FIXME: empty components in other places should be rejected. */
 
-                r = path_split_and_make_absolute(e, paths);
-                if (r < 0)
-                        return r;
-        }
+        r = path_split_and_make_absolute(e, ret);
+        if (r < 0)
+                return r;
 
-        return 0;
+        return append;
 }
 
 int lookup_paths_init(
@@ -416,7 +411,6 @@ int lookup_paths_init(
                 *transient = NULL,
                 *persistent_control = NULL, *runtime_control = NULL,
                 *persistent_attached = NULL, *runtime_attached = NULL;
-        bool append = false; /* Add items from SYSTEMD_UNIT_PATH before normal directories */
         _cleanup_strv_free_ char **paths = NULL;
         int r;
 
@@ -478,11 +472,11 @@ int lookup_paths_init(
                 return r;
 
         /* First priority is whatever has been passed to us via env vars */
-        r = get_paths_from_environ("SYSTEMD_UNIT_PATH", &paths, &append);
+        r = get_paths_from_environ("SYSTEMD_UNIT_PATH", &paths);
         if (r < 0)
                 return r;
 
-        if (!paths || append) {
+        if (!paths || r > 0) {
                 /* Let's figure something out. */
 
                 _cleanup_strv_free_ char **add = NULL;
@@ -680,16 +674,15 @@ void lookup_paths_log(LookupPaths *lp) {
 }
 
 char **generator_binary_paths(RuntimeScope scope) {
-        bool append = false; /* Add items from SYSTEMD_GENERATOR_PATH before normal directories */
         _cleanup_strv_free_ char **paths = NULL;
         int r;
 
         /* First priority is whatever has been passed to us via env vars */
-        r = get_paths_from_environ("SYSTEMD_GENERATOR_PATH", &paths, &append);
+        r = get_paths_from_environ("SYSTEMD_GENERATOR_PATH", &paths);
         if (r < 0)
                 return NULL;
 
-        if (!paths || append) {
+        if (!paths || r > 0) {
                 _cleanup_strv_free_ char **add = NULL;
 
                 switch (scope) {
@@ -730,15 +723,14 @@ char **generator_binary_paths(RuntimeScope scope) {
 
 char **env_generator_binary_paths(RuntimeScope runtime_scope) {
         _cleanup_strv_free_ char **paths = NULL, **add = NULL;
-        bool append = false; /* Add items from SYSTEMD_ENVIRONMENT_GENERATOR_PATH before normal directories */
         int r;
 
         /* First priority is whatever has been passed to us via env vars */
-        r = get_paths_from_environ("SYSTEMD_ENVIRONMENT_GENERATOR_PATH", &paths, &append);
+        r = get_paths_from_environ("SYSTEMD_ENVIRONMENT_GENERATOR_PATH", &paths);
         if (r < 0)
                 return NULL;
 
-        if (!paths || append) {
+        if (!paths || r > 0) {
                 switch (runtime_scope) {
 
                 case RUNTIME_SCOPE_SYSTEM: