diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-01-03 17:39:24 -0700 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-01-03 17:39:24 -0700 |
commit | a6c1ed4716cf02626ea035beb6dd4a921642ba80 (patch) | |
tree | ef582c1b52819e27bdd16097ec03b69799d04ede /newlib/libc/posix/execvp.c | |
parent | f6c9a624fa8a6878a7fb2b02f55e4990a20feb59 (diff) |
Use libc from agbcc instead of standalone newlib\nYou must have AGBCC commit 80d029caec189587f8b9294b6c8a5a489b8f5f88 in order to compile pmd_red.gbalibc
Diffstat (limited to 'newlib/libc/posix/execvp.c')
-rw-r--r-- | newlib/libc/posix/execvp.c | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/newlib/libc/posix/execvp.c b/newlib/libc/posix/execvp.c deleted file mode 100644 index 6957f61..0000000 --- a/newlib/libc/posix/execvp.c +++ /dev/null @@ -1,88 +0,0 @@ -/* execvp.c */ - -/* This and the other exec*.c files in this directory require - the target to provide the _execve syscall. */ - -#include <_ansi.h> -#include <stdlib.h> -#include <unistd.h> -#include <errno.h> -#include <ctype.h> - -#ifdef __CYGWIN32__ -static char path_delim; -#define PATH_DELIM path_delim -#else -#define PATH_DELIM ':' -#endif - -/* - * Copy string, until c or <nul> is encountered. - * NUL-terminate the destination string (s1). - */ - -static char * -_DEFUN (strccpy, (s1, s2, c), - char *s1 _AND - char *s2 _AND - char c) -{ - char *dest = s1; - - while (*s2 && *s2 != c) - *s1++ = *s2++; - *s1 = 0; - - return dest; -} - -int -_DEFUN (execvp, (file, argv), - _CONST char *file _AND - char * _CONST argv[]) -{ - char *path = getenv ("PATH"); - char buf[MAXNAMLEN]; - - /* If $PATH doesn't exist, just pass FILE on unchanged. */ - if (!path) - return execv (file, argv); - - /* If FILE contains a directory, don't search $PATH. */ - if (strchr (file, '/') -#ifdef __CYGWIN32__ - || strchr (file, '\\') -#endif - ) - return execv (file, argv); - -#ifdef __CYGWIN32__ - /* If a drive letter is passed, the path is still an absolute one. - Technically this isn't true, but Cygwin is currently defined so - that it is. */ - if ((isalpha (file[0]) && file[1] == ':') - || file[0] == '\\') - return execv (file, argv); -#endif - -#ifdef __CYGWIN32__ - path_delim = cygwin_posix_path_list_p (path) ? ':' : ';'; -#endif - - while (*path) - { - strccpy (buf, path, PATH_DELIM); - /* An empty entry means the current directory. */ - if (*buf != 0) - strcat (buf, "/"); - strcat (buf, file); - if (execv (buf, argv) == -1 && errno != ENOENT) - return -1; - while (*path && *path != PATH_DELIM) - path++; - if (*path == PATH_DELIM) - path++; /* skip over delim */ - } - - return -1; -} |