|
|
1.1 root 1: /*
2: * Copyright (c) 1987 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that: (1) source distributions retain this entire copyright
7: * notice and comment, and (2) distributions including binaries display
8: * the following acknowledgement: ``This product includes software
9: * developed by the University of California, Berkeley and its contributors''
10: * in the documentation or other materials provided with the distribution
11: * and in all advertising materials mentioning features or use of this
12: * software. Neither the name of the University nor the names of its
13: * contributors may be used to endorse or promote products derived
14: * from this software without specific prior written permission.
15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18: */
19:
20: #if defined(LIBC_SCCS) && !defined(lint)
21: static char sccsid[] = "@(#)getenv.c 5.7 (Berkeley) 6/1/90";
22: #endif /* LIBC_SCCS and not lint */
23:
24: #include <stdlib.h>
25: #include <stddef.h>
26:
27: /*
28: * getenv --
29: * Returns ptr to value associated with name, if any, else NULL.
30: */
31: char *
32: getenv(name)
33: char *name;
34: {
35: int offset;
36: char *_findenv();
37:
38: return(_findenv(name, &offset));
39: }
40:
41: /*
42: * _findenv --
43: * Returns pointer to value associated with name, if any, else NULL.
44: * Sets offset to be the offset of the name/value combination in the
45: * environmental array, for use by setenv(3) and unsetenv(3).
46: * Explicitly removes '=' in argument name.
47: *
48: * This routine *should* be a static; don't use it.
49: */
50: char *
51: _findenv(name, offset)
52: register char *name;
53: int *offset;
54: {
55: extern char **environ;
56: register int len;
57: register char **P, *C;
58:
59: for (C = name, len = 0; *C && *C != '='; ++C, ++len);
60: for (P = environ; *P; ++P)
61: if (!strncmp(*P, name, len))
62: if (*(C = *P + len) == '=') {
63: *offset = P - environ;
64: return(++C);
65: }
66: return(NULL);
67: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.