aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/rc/exec.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-01-12 16:59:50 +0000
committerrsc <devnull@localhost>2005-01-12 16:59:50 +0000
commita9eaaa03e043ba8e1b2f67d7c8c7ba471db6ba4b (patch)
tree8bf6f1d90736df59a47098a94ea06a0501f99a76 /src/cmd/rc/exec.c
parent7b0c2f155dc4ac20d65c6a9899ae223053379fcd (diff)
downloadplan9port-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.c10
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();
}