diff options
Diffstat (limited to 'libf2c/libF77/getenv_.c')
-rw-r--r-- | libf2c/libF77/getenv_.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/libf2c/libF77/getenv_.c b/libf2c/libF77/getenv_.c new file mode 100644 index 00000000000..b9916e6065e --- /dev/null +++ b/libf2c/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 G77_getenv_0 (fname, value, flen, vlen) char *value, *fname; ftnlen vlen, flen; +#else +void G77_getenv_0 (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++ = ' '; +} |