summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/__main.c6
-rw-r--r--src/stdlib/_stdlib.h6
-rw-r--r--src/stdlib/getenv.c1
3 files changed, 6 insertions, 7 deletions
diff --git a/src/__main.c b/src/__main.c
index 3e681799..7e3cd95f 100644
--- a/src/__main.c
+++ b/src/__main.c
@@ -8,13 +8,7 @@ void __main(int argc, char **argv)
{
extern int main(int, char*[]);
- #ifdef _POSIX_SOURCE
- extern char **environ;
environ = argv + argc + 1;
- __stdlib.environ = environ;
- #else
- __stdlib.environ = argv + argc + 1;
- #endif
stdin = __stdio.FILES + 0;
stdin->fd = 0;
diff --git a/src/stdlib/_stdlib.h b/src/stdlib/_stdlib.h
index 089de7df..929981a6 100644
--- a/src/stdlib/_stdlib.h
+++ b/src/stdlib/_stdlib.h
@@ -20,4 +20,10 @@ struct __stdlib {
extern struct __stdlib __stdlib;
+#ifdef _POSIX_SOURCE
+extern char **environ;
+#else
+#define environ __stdlib.environ
+#endif
+
#endif
diff --git a/src/stdlib/getenv.c b/src/stdlib/getenv.c
index 23b48d54..1eba2241 100644
--- a/src/stdlib/getenv.c
+++ b/src/stdlib/getenv.c
@@ -6,7 +6,6 @@
char * getenv(const char * name)
{
- char **environ = __stdlib.environ;
size_t len = strlen(name);
size_t i = 0;