|
|
1.1 root 1: /*
2: # GETENV(3.icon)
3: #
4: # Get contents of environment variables
5: #
6: # Stephen B. Wampler
7: #
8: # Last modified 8/19/84
9: #
10: */
11:
12: #include "../h/rt.h"
13:
14: /*
15: * getenv(s) - return contents of environment variable s
16: */
17:
18: Xgetenv(nargs, arg1, arg0)
19: int nargs;
20: struct descrip arg1, arg0;
21: {
22: register char *p;
23: register int len;
24: char sbuf[MAXSTRING];
25: extern char *getenv();
26: extern char *alcstr();
27:
28: DeRef(arg1)
29:
30: if (!QUAL(arg1)) /* check legality of argument */
31: runerr(103, &arg1);
32: if (STRLEN(arg1) <= 0 || STRLEN(arg1) >= MAXSTRING)
33: runerr(401, &arg1);
34: qtos(&arg1, sbuf); /* convert argument to C-style string */
35:
36: if ((p = getenv(sbuf)) != NULL) { /* get environment variable */
37: len = strlen(p);
38: sneed(len);
39: STRLEN(arg0) = len;
40: STRLOC(arg0) = alcstr(p, len);
41: }
42: else /* fail if variable not in environment */
43: fail();
44: }
45:
46: Procblock(getenv,-1)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.