execvp.c 577 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /* $Id$ */
  2. char *getenv();
  3. char *index();
  4. execlp(name, argv)
  5. char *name, *argv;
  6. {
  7. return(execvp(name, &argv));
  8. }
  9. execvp(name, argv)
  10. char *name, **argv;
  11. {
  12. char *path = getenv("PATH");
  13. register char *c = "";
  14. char progname[1024];
  15. if (path == 0) path = ":/bin:/usr/bin";
  16. if (! index(name, '/')) c = path;
  17. do {
  18. register char *p = progname;
  19. register char *n = name;
  20. char *c1 = c;
  21. while (*c && *c != ':') {
  22. *p++ = *c++;
  23. }
  24. if (c != c1) *p++ = '/';
  25. if (*c) c++;
  26. while (*n) *p++ = *n++;
  27. *p = 0;
  28. execv(progname, argv);
  29. } while (*c);
  30. return(-1);
  31. }