V10/cmd/spitbol/rdenv.c
/*
* rdenv ( varname, result ) - read the environment variable named
* "varname", and if it can be read, put its value in "result"
* return 0 on success, -1 on failure
*/
#include "spitblks.h"
/* the environment pointer */
extern char **environ;
rdenv ( varname, result )
register struct scblk *varname, *result;
{
register n;
register char *p, *q, **env;
/* one iteration per environment variable */
env = environ;
while ( p = *env ) {
q = varname -> str;
n = varname -> len;
/* match the variable against the environment */
while ( n > 0 && *p == *q && *p != '\0' && *p != '=' ) {
p++;
q++;
n--;
}
/* if successful, copy result and return */
if ( *p == '=' && n == 0 ) {
p++;
q = result -> str;
while ( *p != '\0' && n < result -> len ) {
*q++ = *p++;
n++;
}
result -> len = n;
return 0;
}
env++;
}
return -1;
}