/* * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands. * See the copyright notice in the ACK home directory, in the file "Copyright". */ /* $Id$ */ #include #include extern char* _findenv(const char* name, int* offset); /* * getenv(name) -- * Returns ptr to value associated with name, if any, else NULL. */ char* getenv(const char* name) { int offset; return (_findenv(name, &offset)); } /* * _findenv(name,offset) -- * Returns pointer to value associated with name, if any, else NULL. * Sets offset to be the offset of the name/value combination in the * environmental array, for use by setenv(3) and unsetenv(3). * Explicitly removes '=' in argument name. * * This routine *should* be a static; don't use it. */ char* _findenv(register const char* name, int* offset) { extern char** environ; register int len; register char** P; register const char* C; if (!environ) return NULL; for (C = name, len = 0; *C && *C != '='; ++C, ++len) ; for (P = environ; *P; ++P) if (!strncmp(*P, name, len)) if (*(C = *P + len) == '=') { *offset = P - environ; return (char*)(++C); } return (NULL); }