1 #include <stdlib.h> 2 #include <string.h> 3 #include <unistd.h> 4 getenv(const char * name)5char *getenv(const char *name) 6 { 7 if (name == NULL || __environ == NULL) 8 return 0; 9 size_t i, l = 0; 10 const char *np; 11 char **p, *ep; 12 for (; *(name + l) && *(name + l) != '='; ++l); 13 for (p = __environ; (ep = *p) != NULL; ++p) { 14 for (np = name, i = l; i && *ep; i--) { 15 if (*ep++ != *np++) { 16 break; 17 } 18 } 19 if (i == 0 && *ep++ == '=') { 20 return (ep); 21 } 22 } 23 return 0; 24 } 25