1*3e12c5d1SDavid du Colombier #include <unistd.h>
2*3e12c5d1SDavid du Colombier #include <string.h>
3*3e12c5d1SDavid du Colombier #include <sys/limits.h>
4*3e12c5d1SDavid du Colombier
5*3e12c5d1SDavid du Colombier /*
6*3e12c5d1SDavid du Colombier * BUG: instead of looking at PATH env variable,
7*3e12c5d1SDavid du Colombier * just try prepending /bin/ if name fails...
8*3e12c5d1SDavid du Colombier */
9*3e12c5d1SDavid du Colombier
10*3e12c5d1SDavid du Colombier extern char **environ;
11*3e12c5d1SDavid du Colombier
12*3e12c5d1SDavid du Colombier int
execlp(const char * name,const char * arg0,...)13*3e12c5d1SDavid du Colombier execlp(const char *name, const char *arg0, ...)
14*3e12c5d1SDavid du Colombier {
15*3e12c5d1SDavid du Colombier int n;
16*3e12c5d1SDavid du Colombier char buf[PATH_MAX];
17*3e12c5d1SDavid du Colombier
18*3e12c5d1SDavid du Colombier if((n=execve(name, &arg0, environ)) < 0){
19*3e12c5d1SDavid du Colombier strcpy(buf, "/bin/");
20*3e12c5d1SDavid du Colombier strcpy(buf+5, name);
21*3e12c5d1SDavid du Colombier n = execve(buf, &name+1, environ);
22*3e12c5d1SDavid du Colombier }
23*3e12c5d1SDavid du Colombier return n;
24*3e12c5d1SDavid du Colombier }
25