diff options
Diffstat (limited to 'package/uclibc/0.9.33.2/0011-libc-add-non-standard-execvpe-function.patch')
-rw-r--r-- | package/uclibc/0.9.33.2/0011-libc-add-non-standard-execvpe-function.patch | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/package/uclibc/0.9.33.2/0011-libc-add-non-standard-execvpe-function.patch b/package/uclibc/0.9.33.2/0011-libc-add-non-standard-execvpe-function.patch deleted file mode 100644 index 81413338c0..0000000000 --- a/package/uclibc/0.9.33.2/0011-libc-add-non-standard-execvpe-function.patch +++ /dev/null @@ -1,163 +0,0 @@ -From 0eb30761a26c46aaf555464114851202ae9c27bd Mon Sep 17 00:00:00 2001 -From: Henning Heinold <heinold@inf.fu-berlin.de> -Date: Sat, 4 Jun 2011 21:23:15 +0200 -Subject: [PATCH] libc: add non standard execvpe function - -[Gustavo]: Drop TODO modification to make it compatible -Signed-off-by: Henning Heinold <heinold@inf.fu-berlin.de> -Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> ---- - include/unistd.h | 8 ++++++++ - libc/unistd/exec.c | 38 +++++++++++++++++++++++++++++++++----- - libc/unistd/execvpe.c | 7 +++++++ - 4 files changed, 52 insertions(+), 5 deletions(-) - create mode 100644 libc/unistd/execvpe.c - -diff --git a/include/unistd.h b/include/unistd.h -index feadf93..9479554 100644 ---- a/include/unistd.h -+++ b/include/unistd.h -@@ -619,6 +619,14 @@ extern int execlp (const char *__file, const char *__arg, ...) - __THROW __nonnull ((1)); - libc_hidden_proto(execlp) - -+#ifdef __USE_GNU -+/* Execute FILE, searching in the `PATH' environment variable if it contains -+ no slashes, with arguments ARGV and environment from a pointer */ -+extern int execvpe (__const char *__file, char *__const __argv[], char *__const __envp[]) -+ __THROW __nonnull ((1)); -+libc_hidden_proto(execvpe) -+#endif -+ - - #if defined __USE_MISC || defined __USE_XOPEN - /* Add INC to priority of the current process. */ -diff --git a/libc/unistd/exec.c b/libc/unistd/exec.c -index ba92989..8fa42e5 100644 ---- a/libc/unistd/exec.c -+++ b/libc/unistd/exec.c -@@ -32,6 +32,8 @@ - /**********************************************************************/ - #define EXEC_FUNC_COMMON 0 - #define EXEC_FUNC_EXECVP 1 -+#define EXEC_FUNC_EXECVPE 2 -+ - #if defined(__ARCH_USE_MMU__) - - /* We have an MMU, so use alloca() to grab space for buffers and arg lists. */ -@@ -58,6 +60,7 @@ - * execle(a) -> execve(-) - * execv(-) -> execve(-) - * execvp(a) -> execve(-) -+ * execvpe(a) -> execve(-) - */ - - # define EXEC_ALLOC_SIZE(VAR) /* nothing to do */ -@@ -219,15 +222,18 @@ libc_hidden_def(execlp) - - #endif - /**********************************************************************/ --#ifdef L_execvp -+#if defined (L_execvp) || defined(L_execvpe) - - - /* Use a default path that matches glibc behavior, since SUSv3 says - * this is implementation-defined. The default is current working dir, - * /bin, and then /usr/bin. */ - static const char default_path[] = ":/bin:/usr/bin"; -- -+#if defined (L_execvp) - int execvp(const char *path, char *const argv[]) -+#elif defined (L_execvpe) -+int execvpe(const char *path, char *const argv[], char *const envp[]) -+#endif - { - char *buf = NULL; - char *p; -@@ -245,7 +251,11 @@ int execvp(const char *path, char *const argv[]) - } - - if (strchr(path, '/')) { -+#if defined (L_execvp) - execve(path, argv, __environ); -+#elif defined (L_execvpe) -+ execve(path, argv, envp); -+#endif - if (errno == ENOEXEC) { - char **nargv; - EXEC_ALLOC_SIZE(size2) /* Do NOT add a semicolon! */ -@@ -254,11 +264,19 @@ int execvp(const char *path, char *const argv[]) - /* Need the dimension - 1. We omit counting the trailing - * NULL but we actually omit the first entry. */ - for (n=0 ; argv[n] ; n++) {} -+#if defined (L_execvp) - nargv = (char **) EXEC_ALLOC((n+2) * sizeof(char *), size2, EXEC_FUNC_EXECVP); -+#elif defined (L_execvpe) -+ nargv = (char **) EXEC_ALLOC((n+2) * sizeof(char *), size2, EXEC_FUNC_EXECVPE); -+#endif - nargv[0] = argv[0]; - nargv[1] = (char *)path; - memcpy(nargv+2, argv+1, n*sizeof(char *)); -+#if defined (L_execvp) - execve("/bin/sh", nargv, __environ); -+#elif defined (L_execvpe) -+ execve("/bin/sh", nargv, envp); -+#endif - EXEC_FREE(nargv, size2); - } - } else { -@@ -277,8 +295,11 @@ int execvp(const char *path, char *const argv[]) - return -1; - } - len = (FILENAME_MAX - 1) - plen; -- -+#if defined (L_execvp) - buf = EXEC_ALLOC(FILENAME_MAX, size, EXEC_FUNC_EXECVP); -+#elif defined (L_execvpe) -+ buf = EXEC_ALLOC(FILENAME_MAX, size, EXEC_FUNC_EXECVPE); -+#endif - { - int seen_small = 0; - s0 = buf + len; -@@ -300,8 +321,11 @@ int execvp(const char *path, char *const argv[]) - s[plen-1] = '/'; - } - -+#if defined (L_execvp) - execve(s, argv, __environ); -- -+#elif defined (L_execvpe) -+ execve(s, argv, envp); -+#endif - seen_small = 1; - - if (errno == ENOEXEC) { -@@ -325,7 +349,11 @@ int execvp(const char *path, char *const argv[]) - - return -1; - } -+#if defined (L_execvp) - libc_hidden_def(execvp) -- -+#elif defined (L_execvpe) -+libc_hidden_def(execvpe) - #endif -+ -+#endif /* #if defined (L_execvp) || defined(L_execvpe) */ - /**********************************************************************/ -diff --git a/libc/unistd/execvpe.c b/libc/unistd/execvpe.c -new file mode 100644 -index 0000000..c3c1e43 ---- /dev/null -+++ b/libc/unistd/execvpe.c -@@ -0,0 +1,7 @@ -+/* Copyright (C) 2011-2013 Hennning Heinold <heinold@inf.fu-berlin.de> -+ * -+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball. -+ */ -+ -+#define L_execvpe -+#include "exec.c" --- -1.8.1.5 - |