|
|
1.1 ! root 1: /* ! 2: * Exec a program with no environment. ! 3: */ ! 4: ! 5: #include <stdio.h> ! 6: ! 7: extern int errno; ! 8: extern char *getenv(), *index(); ! 9: ! 10: main (argc, argv) ! 11: int argc; ! 12: char *argv[]; ! 13: { ! 14: execvep(argv[1], &argv[1], 0); ! 15: printf("exec failed, errno %d\n", errno); ! 16: } ! 17: ! 18: execvep (name, argv, envp) ! 19: char *name, *argv[], *envp[]; ! 20: { ! 21: char *path; ! 22: register char *cp; ! 23: char fullname[1000]; ! 24: ! 25: path = getenv("PATH"); ! 26: if (path == NULL) { ! 27: path = ""; ! 28: cp = NULL; ! 29: } else { ! 30: cp = index(path, ':'); ! 31: } ! 32: for (;;) { ! 33: if (cp != NULL) { ! 34: *cp = '\0'; ! 35: } ! 36: sprintf(fullname, "%s/%s", path, name); ! 37: execve(fullname, argv, envp); ! 38: if (cp != NULL) { ! 39: path = cp + 1; ! 40: cp = index(path, ':'); ! 41: } else { ! 42: break; ! 43: } ! 44: } ! 45: return -1; ! 46: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.