10 static char *myenv[] =
20 "stem0", /* must be in order from here */
38 for(p = myenv; *p; p++)
39 symlook(*p, S_INTERNAL, (void *)"");
40 readenv(); /* o.s. dependent */
44 envinsert(char *name, Word *value)
48 if (nextv >= envsize) {
50 envy = (Envy *) Realloc((char *) envy, envsize*sizeof(Envy));
52 envy[nextv].name = name;
53 envy[nextv++].values = value;
57 envupd(char *name, Word *value)
61 for(e = envy; e->name; e++)
62 if(strcmp(name, e->name) == 0){
77 if(symlook(s->name, S_NOEXPORT, 0))
79 for(p = myenv; *p; p++)
80 if(strcmp(*p, s->name) == 0)
82 envinsert(s->name, (Word *) s->value);
91 for(p = myenv; *p; p++)
92 envinsert(*p, stow(""));
94 symtraverse(S_VAR, ecopy);
99 buildenv(Job *j, int slot)
106 envupd("target", wdup(j->t));
107 if(j->r->attr®EXP)
108 envupd("stem",newword(""));
110 envupd("stem", newword(j->stem));
111 envupd("prereq", wdup(j->p));
112 sprint(buf, "%d", getpid());
113 envupd("pid", newword(buf));
114 sprint(buf, "%d", slot);
115 envupd("nproc", newword(buf));
116 envupd("newprereq", wdup(j->np));
117 envupd("alltarget", wdup(j->at));
121 cp = strchr(w->s, '(');
123 qp = strchr(cp+1, ')');
137 envupd("newmember", v);
138 /* update stem0 -> stem9 */
139 for(p = myenv; *p; p++)
140 if(strcmp(*p, "stem0") == 0)
142 for(i = 0; *p; i++, p++){
143 if((j->r->attr®EXP) && j->match[i])
144 envupd(*p, newword(j->match[i]));
146 envupd(*p, newword(""));