37 lines
566 B
C
37 lines
566 B
C
char *getenv();
|
|
char *index();
|
|
|
|
execlp(name, argv)
|
|
char *name, *argv;
|
|
{
|
|
return(execvp(name, &argv));
|
|
}
|
|
|
|
execvp(name, argv)
|
|
char *name, **argv;
|
|
{
|
|
char *path = getenv("PATH");
|
|
register char *c = "";
|
|
char progname[1024];
|
|
|
|
if (path == 0) path = ":/bin:/usr/bin";
|
|
if (! index(name, '/')) c = path;
|
|
|
|
do {
|
|
register char *p = progname;
|
|
register char *n = name;
|
|
char *c1 = c;
|
|
|
|
while (*c && *c != ':') {
|
|
*p++ = *c++;
|
|
}
|
|
if (c != c1) *p++ = '/';
|
|
if (*c) c++;
|
|
while (*n) *p++ = *n++;
|
|
*p = 0;
|
|
|
|
execv(progname, argv);
|
|
} while (*c);
|
|
return(-1);
|
|
}
|