execlp.c 419 B

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