From 3e6107910ecbf6034ec277a8b181d27a3033a0fa Mon Sep 17 00:00:00 2001 From: rsc Date: Fri, 22 Oct 2004 17:05:24 +0000 Subject: exit 9p on interrupt signal. should do better job here. --- src/cmd/9p.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/cmd/9p.c') diff --git a/src/cmd/9p.c b/src/cmd/9p.c index e6646b7d..9a5aa67c 100644 --- a/src/cmd/9p.c +++ b/src/cmd/9p.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -54,6 +55,8 @@ threadmain(int argc, char **argv) usage(); }ARGEND + signal(SIGINT, SIG_DFL); + if(argc < 1) usage(); @@ -180,7 +183,7 @@ void xwrite(int argc, char **argv) { char buf[1024]; - int n; + int n, did; Fid *fid; ARGBEGIN{ @@ -191,10 +194,17 @@ xwrite(int argc, char **argv) if(argc != 1) usage(); + did = 0; fid = xopen(argv[0], OWRITE|OTRUNC); - while((n = read(0, buf, sizeof buf)) > 0) + while((n = read(0, buf, sizeof buf)) > 0){ + did = 1; if(fswrite(fid, buf, n) != n) sysfatal("write error: %r"); + } + if(n == 0 && !did){ + if(fswrite(fid, buf, 0) != 0) + sysfatal("write error: %r"); + } if(n < 0) sysfatal("read error: %r"); exits(0); -- cgit v1.2.3