/* execxxx stuff for MiNT/TOS; written by Eric R. Smith, and placed in the public domain */ #include #include #include #include extern char **environ; int execve(path, argv, envp) char *path; char **argv; char **envp; { return _spawnve(P_OVERLAY, path, argv, envp); } int execv(path, argv) char *path; char **argv; { return _spawnve(P_OVERLAY, path, argv, environ); } #ifdef __STDC__ int execle(char *path, ...) #else int execle(path) char *path; #endif { va_list args; char ***envp; va_start(args, path); for (envp = (char ***) args ; *envp ; envp++) ; return _spawnve(P_OVERLAY, path, (char **)args, *(envp+1)); } #ifdef __STDC__ int execl(char *path, ...) #else int execl(path) char *path; #endif { va_list args; va_start(args, path); return _spawnve(P_OVERLAY, path, (char **)args, environ); } /* execvp, execlp: try to execute a program on the default system execution path. WARNING: the current directory is always searched first. */ extern char *findfile(), *getenv(); static char *extensions[] = { "ttp", "prg", "tos", NULL }; int execvp(name, argv) char *name; char **argv; { char *execname; execname = findfile(name, getenv("PATH"), extensions); if (!execname) { errno = ENOENT; return -1; /* file not found */ } return _spawnve(P_OVERLAY, execname, argv, (char **)NULL); } #ifdef __STDC__ int execlp(char *name, ...) #else int execlp(name) char *name; #endif { va_list args; va_start(args, name); return execvp(name, (char **)args); }