#include "env.h" #include "../malloc/malloc.h" const char **envp; const char **__getenvpair(const char *key); u8 __match_env_key(const char *p, const char *key); const char *getenv(const char *key) { const char **p = __getenvpair(key); const char *value; if (p == 0) return ""; value = *p; while (*value != '=') ++value; return ++value; } void setenv(const char *key, const char *value) { const char **p = __getenvpair(key); *p = value; } const char **__getenvpair(const char *key) { const char **p = envp; while (*p) { if (__match_env_key(*p, key)) { return p; } ++p; } return 0; } const char **getenvp() { return envp; } u8 __match_env_key(const char *p, const char *key) { while (*key && *p) { if (*key != *p) return 0; ++p; ++key; } if (*p != '=') return 0; return 1; } void init_env(int argc, const char **argv, const char **envp__) { envp = envp__; } #ifdef ENV_UNIT_TEST #include "../io/io.h" int main(int argc, const char **argv) { wstdf("HOME: %s\n", getenv("HOSTNAME")); } #endif