Commit | Line | Data |
---|---|---|
b8f253e8 KM |
1 | #ifndef lint |
2 | static char sccsid[] = "@(#)getenv.c 5.1 (Berkeley) %G%"; | |
3 | #endif not lint | |
4 | ||
24f434cb BJ |
5 | /* |
6 | * getenv(name) | |
7 | * returns ptr to value associated with name, if any, else NULL | |
8 | */ | |
9 | #define NULL 0 | |
10 | extern char **environ; | |
11 | char *nvmatch(); | |
12 | ||
13 | char * | |
14 | getenv(name) | |
15 | register char *name; | |
16 | { | |
17 | register char **p = environ; | |
18 | register char *v; | |
19 | ||
20 | while (*p != NULL) | |
21 | if ((v = nvmatch(name, *p++)) != NULL) | |
22 | return(v); | |
23 | return(NULL); | |
24 | } | |
25 | ||
26 | /* | |
27 | * s1 is either name, or name=value | |
28 | * s2 is name=value | |
29 | * if names match, return value of s2, else NULL | |
30 | * used for environment searching: see getenv | |
31 | */ | |
32 | ||
33 | static char * | |
34 | nvmatch(s1, s2) | |
35 | register char *s1, *s2; | |
36 | { | |
37 | ||
38 | while (*s1 == *s2++) | |
39 | if (*s1++ == '=') | |
40 | return(s2); | |
41 | if (*s1 == '\0' && *(s2-1) == '=') | |
42 | return(s2); | |
43 | return(NULL); | |
44 | } |