1*3e12c5d1SDavid du Colombier #include <unistd.h> 2*3e12c5d1SDavid du Colombier #include <sys/limits.h> 3*3e12c5d1SDavid du Colombier #include <string.h> 4*3e12c5d1SDavid du Colombier 5*3e12c5d1SDavid du Colombier extern char **environ; 6*3e12c5d1SDavid du Colombier 7*3e12c5d1SDavid du Colombier /* 8*3e12c5d1SDavid du Colombier * BUG: instead of looking at PATH env variable, 9*3e12c5d1SDavid du Colombier * just try prepending /bin/ if name fails... 10*3e12c5d1SDavid du Colombier */ 11*3e12c5d1SDavid du Colombier 12*3e12c5d1SDavid du Colombier int execvp(const char * name,const char ** argv)13*3e12c5d1SDavid du Colombierexecvp(const char *name, const char **argv) 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, argv, environ)) < 0){ 19*3e12c5d1SDavid du Colombier strcpy(buf, "/bin/"); 20*3e12c5d1SDavid du Colombier strcpy(buf+5, name); 21*3e12c5d1SDavid du Colombier n = execve(buf, argv, environ); 22*3e12c5d1SDavid du Colombier } 23*3e12c5d1SDavid du Colombier return n; 24*3e12c5d1SDavid du Colombier } 25