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)