diff options
Diffstat (limited to 'newlib/libc/sys/sysvi386/exec.c')
-rw-r--r-- | newlib/libc/sys/sysvi386/exec.c | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/newlib/libc/sys/sysvi386/exec.c b/newlib/libc/sys/sysvi386/exec.c deleted file mode 100644 index 6587d50..0000000 --- a/newlib/libc/sys/sysvi386/exec.c +++ /dev/null @@ -1,54 +0,0 @@ -#include <sys/unistd.h> -#include <errno.h> - -extern char **environ; - -int -execv (const char *path, char * const *args) { - extern int execve (const char *, char * const *, char * const*); - return execve (path, args, environ); -} - -int -execl(const char *path, const char *arg1, ...) { - return execv (path, &arg1); -} - -/* - * Copy string, until c or <nul> is encountered. - * NUL-terminate the destination string (s1). - */ - -static char * -strccpy (char *s1, char *s2, char c) { - char *dest = s1; - while (*s2 && *s2 != c) { - *s1++ = *s2++; - } - *s1 = 0; - return dest; -} - -int -execvp(const char *file, char * const *args) { - extern char *getenv (const char *); - char *path = getenv ("PATH"); - char buf[MAXNAMLEN]; - - if (file[0] == '/') { /* absolute pathname -- easy out */ - return execv (file, args); - } - - buf[0] = 0; /* lots of initialization here 8-) */ - while (*path) { - strccpy (buf, path, ':'); - strcat (buf, "/"); - strcat (buf, file); - execv (buf, args); - if (errno != ENOENT) - return -1; - while (*path && *path != ':') - path++; - } - return -1; -} |