diff options
author | rsc <devnull@localhost> | 2006-06-25 23:51:10 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2006-06-25 23:51:10 +0000 |
commit | ced6fd340e1a93fe87eac906d749a1989729e1ce (patch) | |
tree | 6d20c5a04c2d7eb92a09e177dc62915a77b55c41 /src/cmd/acme | |
parent | 98df7c80d83005ec6e4403a13014451c5dbfae3e (diff) | |
download | plan9port-ced6fd340e1a93fe87eac906d749a1989729e1ce.tar.gz plan9port-ced6fd340e1a93fe87eac906d749a1989729e1ce.tar.bz2 plan9port-ced6fd340e1a93fe87eac906d749a1989729e1ce.zip |
reopen plumber, build mail
Diffstat (limited to 'src/cmd/acme')
-rw-r--r-- | src/cmd/acme/look.c | 56 | ||||
-rw-r--r-- | src/cmd/acme/mkfile | 4 |
2 files changed, 44 insertions, 16 deletions
diff --git a/src/cmd/acme/look.c b/src/cmd/acme/look.c index a048a353..e8f926f5 100644 --- a/src/cmd/acme/look.c +++ b/src/cmd/acme/look.c @@ -21,32 +21,60 @@ Window* openfile(Text*, Expand*, int); int nuntitled; void -plumbproc(void *v) +plumbthread(void *v) { + CFid *fid; Plumbmsg *m; + Timer *t; USED(v); threadsetname("plumbproc"); + + /* + * Loop so that if plumber is restarted, acme need not be. + */ for(;;){ - m = plumbrecvfid(plumbeditfid); - if(m == nil) - threadexits(nil); - sendp(cplumb, m); + /* + * Connect to plumber. + */ + plumbunmount(); + while((fid = plumbopenfid("edit", OREAD|OCEXEC)) == nil){ + t = timerstart(2000); + recv(t->c, nil); + timerstop(t); + } + plumbeditfid = fid; + plumbsendfid = plumbopenfid("send", OWRITE|OCEXEC); + + /* + * Relay messages. + */ + for(;;){ + m = plumbrecvfid(plumbeditfid); + if(m == nil) + break; + sendp(cplumb, m); + } + + /* + * Lost connection. + */ + fid = plumbsendfid; + plumbsendfid = nil; + fsclose(fid); + + fid = plumbeditfid; + plumbeditfid = nil; + fsclose(fid); } } void startplumbing(void) { - plumbeditfid = plumbopenfid("edit", OREAD|OCEXEC); - if(plumbeditfid == nil) - fprint(2, "acme: can't initialize plumber: %r\n"); - else{ - cplumb = chancreate(sizeof(Plumbmsg*), 0); - chansetname(cplumb, "cplumb"); - threadcreate(plumbproc, nil, STACK); - } - plumbsendfid = plumbopenfid("send", OWRITE|OCEXEC); + cplumb = chancreate(sizeof(Plumbmsg*), 0); + chansetname(cplumb, "cplumb"); + threadcreate(plumbthread, nil, STACK); } diff --git a/src/cmd/acme/mkfile b/src/cmd/acme/mkfile index f4a902be..47ff8d6e 100644 --- a/src/cmd/acme/mkfile +++ b/src/cmd/acme/mkfile @@ -1,7 +1,7 @@ <$PLAN9/src/mkhdr TARG=acme -# DIRS=mail +DIRS=mail OFILES=\ acme.$O\ @@ -30,6 +30,6 @@ HFILES=dat.h\ fns.h\ <$PLAN9/src/mkone -# <$PLAN9/src/mkdirs +<$PLAN9/src/mkdirs edit.$O ecmd.$O elog.$O: edit.h |