xref: /original-bsd/usr.bin/f77/libU77/getenv_.c (revision dd61ec61)
1*dd61ec61Sbostic /*-
2*dd61ec61Sbostic  * Copyright (c) 1980 The Regents of the University of California.
3*dd61ec61Sbostic  * All rights reserved.
4798b8eb7Sdlw  *
5*dd61ec61Sbostic  * %sccs.include.proprietary.c%
62a45810dSkre  */
72a45810dSkre 
8*dd61ec61Sbostic #ifndef lint
9*dd61ec61Sbostic static char sccsid[] = "@(#)getenv_.c	5.2 (Berkeley) 04/12/91";
10*dd61ec61Sbostic #endif /* not lint */
11*dd61ec61Sbostic 
122a45810dSkre /*
13798b8eb7Sdlw  * return environment variables
14798b8eb7Sdlw  *
15798b8eb7Sdlw  * calling sequence:
16798b8eb7Sdlw  *	character*20 evar
17798b8eb7Sdlw  *	call getenv (ENV_NAME, evar)
18798b8eb7Sdlw  * where:
19798b8eb7Sdlw  *	ENV_NAME is the name of an environment variable
20798b8eb7Sdlw  *	evar is a character variable which will receive
21798b8eb7Sdlw  *		the current value of ENV_NAME,
22798b8eb7Sdlw  *		or all blanks if ENV_NAME is not defined
23798b8eb7Sdlw  */
24798b8eb7Sdlw 
25798b8eb7Sdlw extern char **environ;
26798b8eb7Sdlw 
getenv_(fname,value,flen,vlen)27798b8eb7Sdlw getenv_(fname, value, flen, vlen)
28798b8eb7Sdlw char *value, *fname;
29798b8eb7Sdlw long int vlen, flen;
30798b8eb7Sdlw {
31798b8eb7Sdlw 	register char *ep, *fp;
32798b8eb7Sdlw 	register char **env = environ;
33798b8eb7Sdlw 	int i;
34798b8eb7Sdlw 
35798b8eb7Sdlw 	while (ep = *env++) {
36798b8eb7Sdlw 		for (fp=fname, i=0; i <= flen; i++) {
37798b8eb7Sdlw 			if (i == flen || *fp == ' ') {
38798b8eb7Sdlw 				if (*ep++ == '=') {
39798b8eb7Sdlw 					b_char(ep, value, vlen);
40798b8eb7Sdlw 					return(0);
41798b8eb7Sdlw 				}
42798b8eb7Sdlw 				else break;
43798b8eb7Sdlw 			}
44798b8eb7Sdlw 			else if (*ep++ != *fp++) break;
45798b8eb7Sdlw 		}
46798b8eb7Sdlw 	}
47798b8eb7Sdlw 	b_char(" ", value, vlen);
48798b8eb7Sdlw 	return(0);
49798b8eb7Sdlw }
50