|
|
1.1 ! root 1: #include "mk.h" ! 2: ! 3: setvar(name, value) ! 4: char *name; ! 5: char *value; ! 6: { ! 7: symlook(name, S_VAR, value)->value = value; ! 8: symlook(name, S_MAKEVAR, ""); ! 9: } ! 10: ! 11: static char **nextv; ! 12: ! 13: static void ! 14: vcopy(s) ! 15: register Symtab *s; ! 16: { ! 17: register char **p; ! 18: extern char *myenv[]; ! 19: ! 20: if(symlook(s->name, S_NOEXPORT, (char *)0)) ! 21: return; ! 22: for(p = myenv; *p; p++) ! 23: if(strcmp(*p, s->name) == 0) return; ! 24: if(*nextv) ! 25: free(*nextv); ! 26: *nextv++ = envpr(s->name, s->value); ! 27: } ! 28: ! 29: char ** ! 30: vardump(p) ! 31: char **p; ! 32: { ! 33: nextv = p; ! 34: symtraverse(S_VAR, vcopy); ! 35: *nextv = 0; ! 36: return(nextv); ! 37: } ! 38: ! 39: static void ! 40: print1(s) ! 41: register Symtab *s; ! 42: { ! 43: Fprint(1, "\t%s='%s'\n", s->name, s->value); ! 44: } ! 45: ! 46: dumpv(s) ! 47: char *s; ! 48: { ! 49: Fprint(1, "%s:\n", s); ! 50: symtraverse(S_VAR, print1); ! 51: } ! 52: ! 53: char * ! 54: envpr(name, value) ! 55: register char *name; ! 56: register char *value; ! 57: { ! 58: char buf[BIGBLOCK]; ! 59: ! 60: sprint(buf, "%s=", name); ! 61: strcpy(strchr(buf, 0), value); ! 62: return(strdup(buf)); ! 63: } ! 64: ! 65: #include <ctype.h> ! 66: ! 67: char * ! 68: shname(s) ! 69: char *s; ! 70: { ! 71: register unsigned char *a = (unsigned char *)s; ! 72: ! 73: /* always go one !! */ ! 74: a++; ! 75: while(isalnum(*a) || (*a == '_')) a++; ! 76: return((char *)a); ! 77: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.