|
|
1.1 ! root 1: ! 2: /* ! 3: * rdenv ( varname, result ) - read the environment variable named ! 4: * "varname", and if it can be read, put its value in "result" ! 5: * return 0 on success, -1 on failure ! 6: */ ! 7: ! 8: #include "spitblks.h" ! 9: ! 10: /* the environment pointer */ ! 11: extern char **environ; ! 12: ! 13: rdenv ( varname, result ) ! 14: register struct scblk *varname, *result; ! 15: { ! 16: register n; ! 17: register char *p, *q, **env; ! 18: ! 19: /* one iteration per environment variable */ ! 20: env = environ; ! 21: while ( p = *env ) { ! 22: q = varname -> str; ! 23: n = varname -> len; ! 24: ! 25: /* match the variable against the environment */ ! 26: while ( n > 0 && *p == *q && *p != '\0' && *p != '=' ) { ! 27: p++; ! 28: q++; ! 29: n--; ! 30: } ! 31: ! 32: /* if successful, copy result and return */ ! 33: if ( *p == '=' && n == 0 ) { ! 34: p++; ! 35: q = result -> str; ! 36: while ( *p != '\0' && n < result -> len ) { ! 37: *q++ = *p++; ! 38: n++; ! 39: } ! 40: result -> len = n; ! 41: return 0; ! 42: } ! 43: ! 44: env++; ! 45: } ! 46: ! 47: return -1; ! 48: } ! 49:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.