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