execvp.c 411 B

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