diff options
author | rsc <devnull@localhost> | 2005-01-12 16:59:50 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2005-01-12 16:59:50 +0000 |
commit | a9eaaa03e043ba8e1b2f67d7c8c7ba471db6ba4b (patch) | |
tree | 8bf6f1d90736df59a47098a94ea06a0501f99a76 /src/cmd/rc/exec.c | |
parent | 7b0c2f155dc4ac20d65c6a9899ae223053379fcd (diff) | |
download | plan9port-a9eaaa03e043ba8e1b2f67d7c8c7ba471db6ba4b.tar.gz plan9port-a9eaaa03e043ba8e1b2f67d7c8c7ba471db6ba4b.tar.bz2 plan9port-a9eaaa03e043ba8e1b2f67d7c8c7ba471db6ba4b.zip |
maintain $path and $PATH simultaneously
Diffstat (limited to 'src/cmd/rc/exec.c')
-rw-r--r-- | src/cmd/rc/exec.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/cmd/rc/exec.c b/src/cmd/rc/exec.c index ebed11d8..9ab7c29d 100644 --- a/src/cmd/rc/exec.c +++ b/src/cmd/rc/exec.c @@ -117,6 +117,7 @@ main(int argc, char *argv[]) Trapinit(); Vinit(); itoa(num, mypid=getpid()); + pathinit(); setvar("pid", newword(num, (word *)0)); setvar("cflag", flag['c']?newword(flag['c'][0], (word *)0) :(word *)0); @@ -369,7 +370,7 @@ void Xwrite(void){ runq->pc++; poplist(); } -char *list2str(word *words){ +char *_list2str(word *words, int c){ char *value, *s, *t; int len=0; word *ap; @@ -379,12 +380,15 @@ char *list2str(word *words){ s=value; for(ap=words;ap;ap=ap->next){ for(t=ap->word;*t;) *s++=*t++; - *s++=' '; + *s++=c; } if(s==value) *s='\0'; else s[-1]='\0'; return value; } +char *list2str(word *words){ + return _list2str(words, ' '); +} void Xmatch(void){ word *p; char *subject; @@ -464,6 +468,8 @@ void Xassign(void){ freewords(v->val); v->val=runq->argv->words; v->changed=1; + if(v->changefn) + v->changefn(v); runq->argv->words=0; poplist(); } |