8 extern char **__environ;
10 int __execvpe(const char *file, char *const argv[], char *const envp[])
12 const char *p, *z, *path = getenv("PATH");
16 if (!*file) return -1;
18 if (strchr(file, '/'))
19 return execve(file, argv, envp);
21 if (!path) path = "/usr/local/bin:/bin:/usr/bin";
22 k = strnlen(file, NAME_MAX+1);
27 l = strnlen(path, PATH_MAX-1)+1;
32 if (!z) z = p+strlen(p);
39 memcpy(b+(z-p)+(z>p), file, k+1);
40 execve(b, argv, envp);
41 if (errno != ENOENT) return -1;
47 int execvp(const char *file, char *const argv[])
49 return __execvpe(file, argv, __environ);
52 weak_alias(__execvpe, execvpe);