summaryrefslogtreecommitdiff
path: root/src/stdlib/getenv.c
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2020-08-12 13:55:12 -0400
committerJakob Kaivo <jkk@ung.org>2020-08-12 13:55:12 -0400
commitc3f7489af9a3a93be968364c8cbb7bf600643605 (patch)
treecaaee1b100598bb6bce3854ee2be56b3abcda233 /src/stdlib/getenv.c
parentda692588c1f74f0e5ab5fe6e243b8cffcb812b1a (diff)
make environment available even without POSIX environ
Diffstat (limited to 'src/stdlib/getenv.c')
-rw-r--r--src/stdlib/getenv.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/stdlib/getenv.c b/src/stdlib/getenv.c
index e5129dc4..4ba83edb 100644
--- a/src/stdlib/getenv.c
+++ b/src/stdlib/getenv.c
@@ -1,24 +1,22 @@
#include <stdlib.h>
#include "string.h"
+#include "_stdlib.h"
/** get an environment variable **/
char * getenv(const char * name)
{
- #ifdef _POSIX_SOURCE
- extern char **environ;
- int i = 0;
+ char **environ = __stdlib.environ;
+ size_t len = strlen(name);
+ size_t i = 0;
- while (environ[i] != 0) {
- if (!strncmp(environ[i], name, strlen(name)) && environ[i][strlen(name)] == '=')
- return environ[i];
- i++;
+ for (i = 0; environ[i] != NULL; i++) {
+ if (!strncmp(environ[i], name, len) && environ[i][len] == '=') {
+ break;
+ }
}
- #else
- (void)name;
- #endif
- return NULL;
+ return environ[i];
}
/***