xref: /original-bsd/lib/libc/stdlib/getenv.c (revision 7e7b101a)
1 /* @(#)getenv.c	4.1 (Berkeley) 12/21/80 */
2 /*
3  *	getenv(name)
4  *	returns ptr to value associated with name, if any, else NULL
5  */
6 #define NULL	0
7 extern	char **environ;
8 char	*nvmatch();
9 
10 char *
11 getenv(name)
12 register char *name;
13 {
14 	register char **p = environ;
15 	register char *v;
16 
17 	while (*p != NULL)
18 		if ((v = nvmatch(name, *p++)) != NULL)
19 			return(v);
20 	return(NULL);
21 }
22 
23 /*
24  *	s1 is either name, or name=value
25  *	s2 is name=value
26  *	if names match, return value of s2, else NULL
27  *	used for environment searching: see getenv
28  */
29 
30 static char *
31 nvmatch(s1, s2)
32 register char *s1, *s2;
33 {
34 
35 	while (*s1 == *s2++)
36 		if (*s1++ == '=')
37 			return(s2);
38 	if (*s1 == '\0' && *(s2-1) == '=')
39 		return(s2);
40 	return(NULL);
41 }
42