From 2724dfbd17552f892a0d8b39b96cbe9e49d66fdb Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Sun, 6 Nov 2022 10:12:21 -0500 Subject: 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. --- src/util.h | 4 ++++ src/xspawn.c | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/util.h b/src/util.h index 2e89af6..ac08e4d 100644 --- a/src/util.h +++ b/src/util.h @@ -58,6 +58,10 @@ # define BFS_HAS_MNTENT BFS_HAS_INCLUDE(, __GLIBC__) #endif +#ifndef BFS_HAS_PATHS +# define BFS_HAS_PATHS BFS_HAS_INCLUDE(, true) +#endif + #ifndef BFS_HAS_SYS_ACL # define BFS_HAS_SYS_ACL BFS_HAS_INCLUDE(, 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 #include +#if BFS_HAS_PATHS +# include +#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; } -- cgit v1.2.3