8 extern char **__environ
;
10 int __execvpe(const char *file
, char *const argv
[], char *const envp
[])
12 const char *p
, *z
, *path
= getenv("PATH");
17 if (!*file
) return -1;
19 if (strchr(file
, '/'))
20 return execve(file
, argv
, envp
);
22 if (!path
) path
= "/usr/local/bin:/bin:/usr/bin";
23 k
= strnlen(file
, NAME_MAX
+1);
28 l
= strnlen(path
, PATH_MAX
-1)+1;
33 if (!z
) z
= p
+strlen(p
);
40 memcpy(b
+(z
-p
)+(z
>p
), file
, k
+1);
41 execve(b
, argv
, envp
);
53 if (seen_eacces
) errno
= EACCES
;
57 int execvp(const char *file
, char *const argv
[])
59 return __execvpe(file
, argv
, __environ
);
62 weak_alias(__execvpe
, execvpe
);