summaryrefslogtreecommitdiff
path: root/newlib/libc/posix/execvp.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-01-03 17:39:24 -0700
committerPikalaxALT <pikalaxalt@gmail.com>2018-01-03 17:39:24 -0700
commita6c1ed4716cf02626ea035beb6dd4a921642ba80 (patch)
treeef582c1b52819e27bdd16097ec03b69799d04ede /newlib/libc/posix/execvp.c
parentf6c9a624fa8a6878a7fb2b02f55e4990a20feb59 (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.c88
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;
-}