diff options
author | Jakob Kaivo <jkk@ung.org> | 2020-08-12 13:55:12 -0400 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2020-08-12 13:55:12 -0400 |
commit | c3f7489af9a3a93be968364c8cbb7bf600643605 (patch) | |
tree | caaee1b100598bb6bce3854ee2be56b3abcda233 /src/stdlib/getenv.c | |
parent | da692588c1f74f0e5ab5fe6e243b8cffcb812b1a (diff) |
make environment available even without POSIX environ
Diffstat (limited to 'src/stdlib/getenv.c')
-rw-r--r-- | src/stdlib/getenv.c | 20 |
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]; } /*** |