|
|
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.