typo...
[unix-history] / usr / src / lib / libc / stdlib / getenv.c
CommitLineData
535b4307
KB
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
9e31603f
KB
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley. The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
535b4307
KB
16 */
17
2ce81398 18#if defined(LIBC_SCCS) && !defined(lint)
9e31603f 19static char sccsid[] = "@(#)getenv.c 5.5 (Berkeley) %G%";
535b4307 20#endif /* LIBC_SCCS and not lint */
b8f253e8 21
834cc75f
KB
22#include <stdio.h>
23
24f434cb 24/*
535b4307 25 * getenv --
834cc75f 26 * Returns ptr to value associated with name, if any, else NULL.
24f434cb 27 */
24f434cb
BJ
28char *
29getenv(name)
834cc75f 30 char *name;
24f434cb 31{
535b4307
KB
32 int offset;
33 char *_findenv();
24f434cb 34
535b4307 35 return(_findenv(name, &offset));
24f434cb
BJ
36}
37
38/*
535b4307 39 * _findenv --
834cc75f
KB
40 * Returns pointer to value associated with name, if any, else NULL.
41 * Sets offset to be the offset of the name/value combination in the
42 * environmental array, for use by setenv(3) and unsetenv(3).
43 * Explicitly removes '=' in argument name.
44 *
45 * This routine *should* be a static; don't use it.
24f434cb 46 */
834cc75f 47char *
535b4307 48_findenv(name, offset)
834cc75f 49 register char *name;
535b4307 50 int *offset;
24f434cb 51{
535b4307
KB
52 extern char **environ;
53 register int len;
54 register char **P, *C;
24f434cb 55
535b4307
KB
56 for (C = name, len = 0; *C && *C != '='; ++C, ++len);
57 for (P = environ; *P; ++P)
58 if (!strncmp(*P, name, len))
834cc75f
KB
59 if (*(C = *P + len) == '=') {
60 *offset = P - environ;
61 return(++C);
62 }
24f434cb
BJ
63 return(NULL);
64}