commit f0264abf2684f96c011ad56b292378a67074c148
parent 303cb7c6dbb49fd57cb97af77f93fab620eee8d7
Author: rsc <devnull@localhost>
Date: Thu, 20 Jan 2005 22:59:50 +0000
ignore host read eof while exiting
Diffstat:
3 files changed, 9 insertions(+), 0 deletions(-)
diff --git 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
@@ -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
@@ -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*);