summaryrefslogtreecommitdiff
path: root/src/basic
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-09-17 14:32:17 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-09-18 15:28:48 +0200
commit92673045b55dd58c568a0b31ada4516d55933024 (patch)
treec5dd0e5fdc8e63e6b6a0a7cd15017d4d2538facc /src/basic
parentcd4ff5aa1176c47a8d9042bbabc974d6e874d39e (diff)
downloadsystemd-92673045b55dd58c568a0b31ada4516d55933024.tar.gz
basic/path-util: enhance find_executable() for the fixed path case
Diffstat (limited to 'src/basic')
-rw-r--r--src/basic/path-util.c10
-rw-r--r--src/basic/path-util.h5
2 files changed, 10 insertions, 5 deletions
diff --git a/src/basic/path-util.c b/src/basic/path-util.c
index cecee3a541..a36cf8332c 100644
--- a/src/basic/path-util.c
+++ b/src/basic/path-util.c
@@ -585,9 +585,9 @@ char* path_join_internal(const char *first, ...) {
return joined;
}
-int find_executable(const char *name, char **ret) {
+int find_executable_full(const char *name, bool use_path_envvar, char **ret) {
int last_error, r;
- const char *p;
+ const char *p = NULL;
assert(name);
@@ -604,8 +604,10 @@ int find_executable(const char *name, char **ret) {
return 0;
}
- /* Plain getenv, not secure_getenv, because we want to actually allow the user to pick the binary. */
- p = getenv("PATH");
+ if (use_path_envvar)
+ /* Plain getenv, not secure_getenv, because we want to actually allow the user to pick the
+ * binary. */
+ p = getenv("PATH");
if (!p)
p = DEFAULT_PATH;
diff --git a/src/basic/path-util.h b/src/basic/path-util.h
index 3d52448334..bd8c14903e 100644
--- a/src/basic/path-util.h
+++ b/src/basic/path-util.h
@@ -88,7 +88,10 @@ int path_strv_make_absolute_cwd(char **l);
char** path_strv_resolve(char **l, const char *root);
char** path_strv_resolve_uniq(char **l, const char *root);
-int find_executable(const char *name, char **filename);
+int find_executable_full(const char *name, bool use_path_envvar, char **ret);
+static inline int find_executable(const char *name, char **ret) {
+ return find_executable_full(name, true, ret);
+}
bool paths_check_timestamp(const char* const* paths, usec_t *paths_ts_usec, bool update);