change Tcreate message in 9P2000.u
diff --git a/include/fcall.h b/include/fcall.h index dc46cb5..58323b6 100644 --- a/include/fcall.h +++ b/include/fcall.h
@@ -44,6 +44,7 @@ /* 9P2000.u extensions */ int errornum; /* Rerror */ + char *extension; /* Tcreate */ } Fcall;
diff --git a/src/cmd/9pserve.c b/src/cmd/9pserve.c index 01a9f86..06c95f5 100644 --- a/src/cmd/9pserve.c +++ b/src/cmd/9pserve.c
@@ -449,6 +449,12 @@ } 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 @@ 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 23b688a..3df83da 100644 --- a/src/lib9/convM2S.c +++ b/src/lib9/convM2S.c
@@ -161,6 +161,8 @@ 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 b59d95b..b01a022 100644 --- a/src/lib9/convS2M.c +++ b/src/lib9/convS2M.c
@@ -102,6 +102,8 @@ n += stringsz(f->name); n += BIT32SZ; n += BIT8SZ; + if(dotu) + n += stringsz(f->extension); break; case Tread: @@ -287,6 +289,8 @@ p += BIT32SZ; PBIT8(p, f->mode); p += BIT8SZ; + if(dotu) + p = pstring(p, f->extension); break; case Tread: