aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/samterm
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-01-20 22:59:50 +0000
committerrsc <devnull@localhost>2005-01-20 22:59:50 +0000
commitf0264abf2684f96c011ad56b292378a67074c148 (patch)
treec258ecffc636b332a3a8113b33d4476333c18a96 /src/cmd/samterm
parent303cb7c6dbb49fd57cb97af77f93fab620eee8d7 (diff)
downloadplan9port-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.c3
-rw-r--r--src/cmd/samterm/plan9.c5
-rw-r--r--src/cmd/samterm/samterm.h1
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*);