36 lines
714 B
C
36 lines
714 B
C
#include <stddef.h>
|
|
#include <string.h>
|
|
|
|
extern const char **__crt_environ();
|
|
|
|
char *__crt_sys_getenv(const char *name)
|
|
{
|
|
const char **envp = __crt_environ();
|
|
|
|
for (int i = 0; envp[i] != NULL; i++) {
|
|
int equal = -1;
|
|
const char *env = envp[i];
|
|
|
|
for (int ii = 0; env[ii] != '\0'; ii++) {
|
|
if (env[ii] == '=') {
|
|
equal = ii;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (equal == -1) {
|
|
continue;
|
|
}
|
|
|
|
char env_name[equal + 1];
|
|
memcpy(env_name, env, equal);
|
|
env_name[equal] = '\0';
|
|
|
|
if (!strcmp(env_name, name)) {
|
|
return (char *)(env + equal + 1);
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|