7 extern char **__environ;
9 int __execvpe(const char *file, char *const argv[], char *const envp[])
11 const char *p, *z, *path = getenv("PATH");
15 if (!*file) return -1;
17 if (strchr(file, '/'))
18 return execve(file, argv, envp);
20 if (!path) path = "/usr/local/bin:/bin:/usr/bin";
21 k = strnlen(file, NAME_MAX+1);
26 l = strnlen(path, PATH_MAX-1)+1;
31 if (!z) z = p+strlen(p);
38 memcpy(b+(z-p)+(z>p), file, k+1);
39 execve(b, argv, envp);
40 if (errno != ENOENT) return -1;
46 int execvp(const char *file, char *const argv[])
48 return __execvpe(file, argv, __environ);