summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/stdlib/getenv.c7
-rw-r--r--libc/stdlib/putenv.c21
-rw-r--r--libc/stdlib/setenv.c3
-rw-r--r--libc/unistd/execl.c4
-rw-r--r--libc/unistd/execlp.c3
-rw-r--r--libc/unistd/execv.c5
-rw-r--r--libc/unistd/execvp.c4
7 files changed, 17 insertions, 30 deletions
diff --git a/libc/stdlib/getenv.c b/libc/stdlib/getenv.c
index b5d4de9aa..ca50402b9 100644
--- a/libc/stdlib/getenv.c
+++ b/libc/stdlib/getenv.c
@@ -4,10 +4,9 @@
*/
#include <string.h>
#include <stdlib.h>
+#include <unistd.h>
#include <malloc.h>
-extern char **environ;
-
char *getenv(var)
const char *var;
{
@@ -16,10 +15,10 @@ const char *var;
len = strlen(var);
- if (!environ)
+ if (!__environ)
return 0;
- for (p = environ; *p; p++) {
+ for (p = __environ; *p; p++) {
if (memcmp(var, *p, len) == 0 && (*p)[len] == '=')
return *p + len + 1;
}
diff --git a/libc/stdlib/putenv.c b/libc/stdlib/putenv.c
index 5b2ebcb3c..5f27e57d7 100644
--- a/libc/stdlib/putenv.c
+++ b/libc/stdlib/putenv.c
@@ -4,10 +4,9 @@
*/
#include <string.h>
#include <stdlib.h>
+#include <unistd.h>
#include <malloc.h>
-extern char **environ;
-
#define ADD_NUM 4
int putenv(var)
@@ -25,14 +24,14 @@ const char *var;
else
len = r - var;
- if (!environ) {
- environ = (char **) malloc(ADD_NUM * sizeof(char *));
- memset(environ, 0, sizeof(char *) * ADD_NUM);
+ if (!__environ) {
+ __environ = (char **) malloc(ADD_NUM * sizeof(char *));
+ memset(__environ, 0, sizeof(char *) * ADD_NUM);
extras = ADD_NUM;
}
- for (p = environ; *p; p++) {
+ for (p = __environ; *p; p++) {
if (memcmp(var, *p, len) == 0 && (*p)[len] == '=') {
while ((p[0] = p[1]))
p++;
@@ -43,20 +42,20 @@ const char *var;
if (r == 0)
return 0;
if (extras <= 0) { /* Need more space */
- d = malloc((p - environ + 1 + ADD_NUM) * sizeof(char *));
+ d = malloc((p - __environ + 1 + ADD_NUM) * sizeof(char *));
if (d == 0)
return -1;
- memcpy((void *) d, (void *) environ,
+ memcpy((void *) d, (void *) __environ,
- (p - environ + 1) * sizeof(char *));
- p = d + (p - environ);
+ (p - __environ + 1) * sizeof(char *));
+ p = d + (p - __environ);
extras = ADD_NUM;
if (mall_env)
free(mall_env);
- environ = d;
+ __environ = d;
mall_env = d;
}
*p++ = strdup((char *) var);
diff --git a/libc/stdlib/setenv.c b/libc/stdlib/setenv.c
index 6628e4cc7..a027ced96 100644
--- a/libc/stdlib/setenv.c
+++ b/libc/stdlib/setenv.c
@@ -21,9 +21,6 @@ Cambridge, MA 02139, USA. */
#include <unistd.h>
#include <errno.h>
-#if !defined(HAVE_GNU_LD) && !defined (__ELF__)
-#define __environ environ
-#endif
#if defined(_REENTRENT) || defined(_THREAD_SAFE)
# include <pthread.h>
diff --git a/libc/unistd/execl.c b/libc/unistd/execl.c
index 531c2ee60..a05867ef8 100644
--- a/libc/unistd/execl.c
+++ b/libc/unistd/execl.c
@@ -3,8 +3,6 @@
#include <unistd.h>
#include <stdarg.h>
-extern char **environ;
-
int execl(__const char *path, __const char *arg, ...)
{
const char *shortargv[16];
@@ -42,7 +40,7 @@ int execl(__const char *path, __const char *arg, ...)
va_end(args);
- i = execve(path, (char *const *) argv, environ);
+ i = execve(path, (char *const *) argv, __environ);
if (argv != shortargv)
free(argv);
diff --git a/libc/unistd/execlp.c b/libc/unistd/execlp.c
index 50fb4a032..fef10d376 100644
--- a/libc/unistd/execlp.c
+++ b/libc/unistd/execlp.c
@@ -3,7 +3,6 @@
#include <unistd.h>
#include <stdarg.h>
-extern char **environ;
extern int execvep(const char *path, char *__const argv[], char *__const envp[]);
int execlp(__const char *file, __const char *arg, ...)
@@ -43,7 +42,7 @@ int execlp(__const char *file, __const char *arg, ...)
va_end(args);
- i = execvep(file, (char *const *) argv, environ);
+ i = execvep(file, (char *const *) argv, __environ);
if (argv != shortargv)
free(argv);
diff --git a/libc/unistd/execv.c b/libc/unistd/execv.c
index 6c8ba0d97..486f53745 100644
--- a/libc/unistd/execv.c
+++ b/libc/unistd/execv.c
@@ -1,9 +1,6 @@
-
#include <unistd.h>
-extern char **environ;
-
int execv(__const char *path, char *__const argv[])
{
- return execve(path, argv, environ);
+ return execve(path, argv, __environ);
}
diff --git a/libc/unistd/execvp.c b/libc/unistd/execvp.c
index 943303332..e7e496063 100644
--- a/libc/unistd/execvp.c
+++ b/libc/unistd/execvp.c
@@ -1,10 +1,8 @@
-
#include <unistd.h>
-extern char **environ;
extern int execvep(const char *path, char *__const argv[], char *__const envp[]);
int execvp(__const char *path, char *__const argv[])
{
- return execvep(path, argv, environ);
+ return execvep(path, argv, __environ);
}