Only provide execvpe(3) when needed

Check for the existence of execvpe(3) and only provide the FreeBSD
compat version if required.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by:	Brooks Davis <brooks.davis@sri.com>
Closes #15609
This commit is contained in:
Brooks Davis 2023-11-30 16:04:18 -08:00 committed by Tony Hutter
parent 32cd2da551
commit 5668411713
3 changed files with 6 additions and 2 deletions

View File

@ -31,7 +31,7 @@ AC_DEFUN([ZFS_AC_CONFIG_USER], [
ZFS_AC_CONFIG_USER_MAKEDEV_IN_MKDEV ZFS_AC_CONFIG_USER_MAKEDEV_IN_MKDEV
ZFS_AC_CONFIG_USER_ZFSEXEC ZFS_AC_CONFIG_USER_ZFSEXEC
AC_CHECK_FUNCS([issetugid mlockall strlcat strlcpy]) AC_CHECK_FUNCS([execvpe issetugid mlockall strlcat strlcpy])
AC_SUBST(RM) AC_SUBST(RM)
]) ])

View File

@ -57,6 +57,8 @@
extern size_t spl_pagesize(void); extern size_t spl_pagesize(void);
#define PAGESIZE (spl_pagesize()) #define PAGESIZE (spl_pagesize())
#ifndef HAVE_EXECVPE
extern int execvpe(const char *name, char * const argv[], char * const envp[]); extern int execvpe(const char *name, char * const argv[], char * const envp[]);
#endif
#endif #endif

View File

@ -38,7 +38,8 @@
#define ZFS_KMOD "openzfs" #define ZFS_KMOD "openzfs"
#endif #endif
#ifndef HAVE_EXECVPE
/* FreeBSD prior to 15 lacks execvpe */
static int static int
execvPe(const char *name, const char *path, char * const *argv, execvPe(const char *name, const char *path, char * const *argv,
char * const *envp) char * const *envp)
@ -192,6 +193,7 @@ execvpe(const char *name, char * const argv[], char * const envp[])
return (execvPe(name, path, argv, envp)); return (execvPe(name, path, argv, envp));
} }
#endif /* !HAVE_EXECVPE */
static __thread char errbuf[ERRBUFLEN]; static __thread char errbuf[ERRBUFLEN];