|
|
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 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. ! 16: */ ! 17: ! 18: #if defined(LIBC_SCCS) && !defined(lint) ! 19: static char sccsid[] = "@(#)getenv.c 5.5 (Berkeley) 6/27/88"; ! 20: #endif /* LIBC_SCCS and not lint */ ! 21: ! 22: #include <stdio.h> ! 23: ! 24: /* ! 25: * getenv -- ! 26: * Returns ptr to value associated with name, if any, else NULL. ! 27: */ ! 28: char * ! 29: getenv(name) ! 30: char *name; ! 31: { ! 32: int offset; ! 33: char *_findenv(); ! 34: ! 35: return(_findenv(name, &offset)); ! 36: } ! 37: ! 38: /* ! 39: * _findenv -- ! 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. ! 46: */ ! 47: char * ! 48: _findenv(name, offset) ! 49: register char *name; ! 50: int *offset; ! 51: { ! 52: extern char **environ; ! 53: register int len; ! 54: register char **P, *C; ! 55: ! 56: for (C = name, len = 0; *C && *C != '='; ++C, ++len); ! 57: for (P = environ; *P; ++P) ! 58: if (!strncmp(*P, name, len)) ! 59: if (*(C = *P + len) == '=') { ! 60: *offset = P - environ; ! 61: return(++C); ! 62: } ! 63: return(NULL); ! 64: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.