diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2022-11-06 10:12:21 -0500 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2022-11-06 16:37:14 -0500 |
commit | 2724dfbd17552f892a0d8b39b96cbe9e49d66fdb (patch) | |
tree | 5a1534a0f0097427e00f45859b110acefddf35f3 /src | |
parent | b7a222b6f9e0b7acea4a108928267b5ed658fdb5 (diff) | |
download | bfs-2724dfbd17552f892a0d8b39b96cbe9e49d66fdb.tar.xz |
xspawn: Use _PATH_DEFPATH if _CS_PATH is not defined
And set errno correctly if neither one is. Fixes
tests/posix/exec_nopath on Android.
Diffstat (limited to 'src')
-rw-r--r-- | src/util.h | 4 | ||||
-rw-r--r-- | src/xspawn.c | 12 |
2 files changed, 14 insertions, 2 deletions
@@ -58,6 +58,10 @@ # define BFS_HAS_MNTENT BFS_HAS_INCLUDE(<mntent.h>, __GLIBC__) #endif +#ifndef BFS_HAS_PATHS +# define BFS_HAS_PATHS BFS_HAS_INCLUDE(<paths.h>, true) +#endif + #ifndef BFS_HAS_SYS_ACL # define BFS_HAS_SYS_ACL BFS_HAS_INCLUDE(<sys/acl.h>, true) #endif diff --git a/src/xspawn.c b/src/xspawn.c index 67e0572..43a6f1c 100644 --- a/src/xspawn.c +++ b/src/xspawn.c @@ -24,6 +24,10 @@ #include <sys/wait.h> #include <unistd.h> +#if BFS_HAS_PATHS +# include <paths.h> +#endif + /** * Types of spawn actions. */ @@ -260,11 +264,15 @@ char *bfs_spawn_resolve(const char *exe) { const char *path = getenv("PATH"); char *confpath = NULL; -#ifdef _CS_PATH if (!path) { +#if defined(_CS_PATH) path = confpath = xconfstr(_CS_PATH); - } +#elif defined(_PATH_DEFPATH) + path = _PATH_DEFPATH; +#else + errno = ENOENT; #endif + } if (!path) { return NULL; } |