From b5c7be2fd69c027f5de9772e117885cb1c89f907 Mon Sep 17 00:00:00 2001 From: rsc Date: Fri, 3 Mar 2006 16:34:49 +0000 Subject: change Tcreate message in 9P2000.u --- include/fcall.h | 1 + src/cmd/9pserve.c | 8 +++++++- src/lib9/convM2S.c | 2 ++ src/lib9/convS2M.c | 4 ++++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/fcall.h b/include/fcall.h index dc46cb57..58323b6b 100644 --- a/include/fcall.h +++ b/include/fcall.h @@ -44,6 +44,7 @@ struct Fcall /* 9P2000.u extensions */ int errornum; /* Rerror */ + char *extension; /* Tcreate */ } Fcall; diff --git a/src/cmd/9pserve.c b/src/cmd/9pserve.c index 01a9f86d..06c95f55 100644 --- a/src/cmd/9pserve.c +++ b/src/cmd/9pserve.c @@ -449,6 +449,12 @@ connthread(void *arg) } m->afid->ref++; break; + case Tcreate: + if(dotu && !c->dotu && (m->tx.perm&(DMSYMLINK|DMDEVICE|DMNAMEDPIPE|DMSOCKET))){ + err(m, "unsupported file type"); + continue; + } + goto caseTopen; case Topenfd: if(m->tx.mode&~(OTRUNC|3)){ err(m, "bad openfd mode"); @@ -458,7 +464,7 @@ connthread(void *arg) m->tx.type = Topen; m->tpkt[4] = Topen; /* fall through */ - case Tcreate: + caseTopen: case Topen: case Tclunk: case Tread: diff --git a/src/lib9/convM2S.c b/src/lib9/convM2S.c index 23b688ab..3df83da2 100644 --- a/src/lib9/convM2S.c +++ b/src/lib9/convM2S.c @@ -161,6 +161,8 @@ convM2Su(uchar *ap, uint nap, Fcall *f, int dotu) p += BIT32SZ; f->mode = GBIT8(p); p += BIT8SZ; + if(dotu) + p = gstring(p, ep, &f->extension); break; case Tread: diff --git a/src/lib9/convS2M.c b/src/lib9/convS2M.c index b59d95b4..b01a0221 100644 --- a/src/lib9/convS2M.c +++ b/src/lib9/convS2M.c @@ -102,6 +102,8 @@ sizeS2Mu(Fcall *f, int dotu) n += stringsz(f->name); n += BIT32SZ; n += BIT8SZ; + if(dotu) + n += stringsz(f->extension); break; case Tread: @@ -287,6 +289,8 @@ convS2Mu(Fcall *f, uchar *ap, uint nap, int dotu) p += BIT32SZ; PBIT8(p, f->mode); p += BIT8SZ; + if(dotu) + p = pstring(p, f->extension); break; case Tread: -- cgit v1.2.3