diff options
author | rsc <devnull@localhost> | 2005-01-20 22:59:50 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2005-01-20 22:59:50 +0000 |
commit | f0264abf2684f96c011ad56b292378a67074c148 (patch) | |
tree | c258ecffc636b332a3a8113b33d4476333c18a96 /src/cmd/samterm | |
parent | 303cb7c6dbb49fd57cb97af77f93fab620eee8d7 (diff) | |
download | plan9port-f0264abf2684f96c011ad56b292378a67074c148.tar.gz plan9port-f0264abf2684f96c011ad56b292378a67074c148.tar.bz2 plan9port-f0264abf2684f96c011ad56b292378a67074c148.zip |
ignore host read eof while exiting
Diffstat (limited to 'src/cmd/samterm')
-rw-r--r-- | src/cmd/samterm/mesg.c | 3 | ||||
-rw-r--r-- | src/cmd/samterm/plan9.c | 5 | ||||
-rw-r--r-- | src/cmd/samterm/samterm.h | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/src/cmd/samterm/mesg.c b/src/cmd/samterm/mesg.c index c7371812..09b492a6 100644 --- a/src/cmd/samterm/mesg.c +++ b/src/cmd/samterm/mesg.c @@ -17,6 +17,7 @@ uchar outdata[DATASIZE]; short outcount; int hversion; int hostfd[2]; +int exiting; void inmesg(Hmesg, int); int inshort(int); @@ -29,6 +30,7 @@ void hplumb(int); void clrlock(void); int snarfswap(char*, int, char**); + void rcv(void) { @@ -298,6 +300,7 @@ inmesg(Hmesg type, int count) break; case Hexit: + exiting = 1; outT0(Texit); threadexitsall(nil); break; diff --git a/src/cmd/samterm/plan9.c b/src/cmd/samterm/plan9.c index 5f5c33d0..3d2df85d 100644 --- a/src/cmd/samterm/plan9.c +++ b/src/cmd/samterm/plan9.c @@ -279,6 +279,11 @@ hostproc(void *arg) n = read(hostfd[0], hostbuf[i].data, sizeof hostbuf[i].data); if(0) fprint(2, "hostproc %d\n", n); if(n <= 0){ + if(n == 0){ + if(exiting) + threadexits(nil); + werrstr("unexpected eof"); + } fprint(2, "samterm: host read error: %r\n"); threadexitsall("host"); } diff --git a/src/cmd/samterm/samterm.h b/src/cmd/samterm/samterm.h index 68e2dbb6..dfe2f345 100644 --- a/src/cmd/samterm/samterm.h +++ b/src/cmd/samterm/samterm.h @@ -87,6 +87,7 @@ extern Channel *hostc; extern int hversion; extern int plumbfd; extern int hostfd[2]; +extern int exiting; #define gettext sam_gettext /* stupid gcc built-in functions */ Rune *gettext(Flayer*, long, ulong*); |