aboutsummaryrefslogtreecommitdiff
path: root/src/lib9pclient/fs.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2006-07-23 02:55:34 +0000
committerrsc <devnull@localhost>2006-07-23 02:55:34 +0000
commit73a5509ae929e41ca0047254a880c8efd4aa72a1 (patch)
treef3e313e86f79c9f5bae32f529548d6e805210eea /src/lib9pclient/fs.c
parent9b3357a896417eb166cf94dd2a04aa391fef21c8 (diff)
downloadplan9port-73a5509ae929e41ca0047254a880c8efd4aa72a1.tar.gz
plan9port-73a5509ae929e41ca0047254a880c8efd4aa72a1.tar.bz2
plan9port-73a5509ae929e41ca0047254a880c8efd4aa72a1.zip
more functions
Diffstat (limited to 'src/lib9pclient/fs.c')
-rw-r--r--src/lib9pclient/fs.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/lib9pclient/fs.c b/src/lib9pclient/fs.c
index 44f2f474..c6b1c3e9 100644
--- a/src/lib9pclient/fs.c
+++ b/src/lib9pclient/fs.c
@@ -14,6 +14,7 @@ static int _fsgettag(Mux*, void*);
static int _fssettag(Mux*, void*, uint);
int chatty9pclient;
+int eofkill9pclient;
enum
{
@@ -318,9 +319,13 @@ static int
_fssend(Mux *mux, void *pkt)
{
CFsys *fs;
+ int n;
fs = mux->aux;
- return iowrite(fs->iosend, fs->fd, pkt, GBIT32((uchar*)pkt));
+ n = iowrite(fs->iosend, fs->fd, pkt, GBIT32((uchar*)pkt));
+ if(n < 0 && eofkill9pclient)
+ threadexitsall(nil);
+ return n;
}
static void*
@@ -333,8 +338,11 @@ _fsrecv(Mux *mux)
fs = mux->aux;
n = ioreadn(fs->iorecv, fs->fd, buf, 4);
- if(n != 4)
+ if(n != 4){
+ if(eofkill9pclient)
+ threadexitsall(nil);
return nil;
+ }
n = GBIT32(buf);
pkt = malloc(n+4);
if(pkt == nil){
@@ -356,3 +364,9 @@ _fsrecv(Mux *mux)
}
return pkt;
}
+
+Qid
+fsqid(CFid *fid)
+{
+ return fid->qid;
+}