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