Browse Source

Use __environ instead of the GNU extension environ.
-Erik

Eric Andersen 23 years ago
parent
commit
e57fc6bbb2
7 changed files with 17 additions and 30 deletions
  1. 3 4
      libc/stdlib/getenv.c
  2. 10 11
      libc/stdlib/putenv.c
  3. 0 3
      libc/stdlib/setenv.c
  4. 1 3
      libc/unistd/execl.c
  5. 1 2
      libc/unistd/execlp.c
  6. 1 4
      libc/unistd/execv.c
  7. 1 3
      libc/unistd/execvp.c

+ 3 - 4
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;
 	}

+ 10 - 11
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);

+ 0 - 3
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>

+ 1 - 3
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);

+ 1 - 2
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);

+ 1 - 4
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);
 }

+ 1 - 3
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);
 }