diff options
author | ljo <ljo@FreeBSD.org> | 1994-10-26 18:17:41 +0000 |
---|---|---|
committer | ljo <ljo@FreeBSD.org> | 1994-10-26 18:17:41 +0000 |
commit | 2195d627fb793fec6c00bdddf1c4d46982b9f27f (patch) | |
tree | c2961f38c1507b80baefaca1d568747c113f28c0 /lib/libF77/getenv_.c | |
parent | 80b2e1963004e4ae0173b4f9bc965518ba81d3b0 (diff) | |
download | FreeBSD-src-2195d627fb793fec6c00bdddf1c4d46982b9f27f.zip FreeBSD-src-2195d627fb793fec6c00bdddf1c4d46982b9f27f.tar.gz |
Library for f2c (part 2 of 2)
Obtained from: netlib.att.com
Diffstat (limited to 'lib/libF77/getenv_.c')
-rw-r--r-- | lib/libF77/getenv_.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/libF77/getenv_.c b/lib/libF77/getenv_.c new file mode 100644 index 0000000..2a035ea --- /dev/null +++ b/lib/libF77/getenv_.c @@ -0,0 +1,51 @@ +#include "f2c.h" + +/* + * getenv - f77 subroutine to return environment variables + * + * called by: + * call getenv (ENV_NAME, char_var) + * where: + * ENV_NAME is the name of an environment variable + * char_var is a character variable which will receive + * the current value of ENV_NAME, or all blanks + * if ENV_NAME is not defined + */ + +#ifdef KR_headers +VOID getenv_(fname, value, flen, vlen) char *value, *fname; ftnlen vlen, flen; +#else +void getenv_(char *fname, char *value, ftnlen flen, ftnlen vlen) +#endif +{ +extern char **environ; +register char *ep, *fp, *flast; +register char **env = environ; + +flast = fname + flen; +for(fp = fname ; fp < flast ; ++fp) + if(*fp == ' ') + { + flast = fp; + break; + } + +while (ep = *env++) + { + for(fp = fname; fp<flast ; ) + if(*fp++ != *ep++) + goto endloop; + + if(*ep++ == '=') { /* copy right hand side */ + while( *ep && --vlen>=0 ) + *value++ = *ep++; + + goto blank; + } +endloop: ; + } + +blank: + while( --vlen >= 0 ) + *value++ = ' '; +} |