--- exec.c.orig 2010-07-06 16:02:22.000000000 -0700 +++ exec.c 2010-07-06 16:31:46.000000000 -0700 @@ -48,7 +48,11 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/exe #include "un-namespace.h" #include "libc_private.h" -extern char **environ; +#include <crt_externs.h> +#define environ (*_NSGetEnviron()) + +int +_execvpe(const char *name, char * const argv[], char * const envp[]); int execl(const char *name, const char *arg, ...) @@ -259,8 +263,9 @@ retry: (void)_execve(bp, argv, envp); } if (eacces) errno = EACCES; - else + else if (cur) errno = ENOENT; + /* else use existing errno from _execve */ done: return (-1); } @@ -271,7 +276,7 @@ execvP(const char *name, const char *pat return execvPe(name, path, argv, environ); } -int +__private_extern__ int _execvpe(const char *name, char * const argv[], char * const envp[]) { const char *path;