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(""));