commit - 846cec9ebc33dcbdd93d425a92fab6bc7acf355c
commit + bf486dfc1622cc8b62326bfa72631617f6edb050
blob - 264b34b6e0591046602251803a520c654eee8726
blob + 32b984becdf6bd18a91ad5f6da19693c19f1a2cd
--- src/cmd/9pserve.c
+++ src/cmd/9pserve.c
void dorootstat(void);
int stripudirread(Msg*);
int cvtustat(Fcall*, uchar**, int);
-void cvtuauthattach(Fcall*, uchar**);
-void cvtucreate(Fcall*, uchar**);
void
usage(void)
char *file, *x, *addr;
int fd;
+ rfork(RFNOTEG);
x = getenv("verbose9pserve");
if(x){
verbose = atoi(x);
m->tx.uname = getuser(); /* what srv.c used */
repack(&m->tx, &m->tpkt, c->dotu);
}
- if(dotu && !c->dotu)
- cvtuauthattach(&m->tx, &m->tpkt);
break;
case Twalk:
if((m->fid = gethash(c->fid, m->tx.fid)) == nil){
continue;
}
m->afid->ref++;
- if(dotu && !c->dotu)
- cvtuauthattach(&m->tx, &m->tpkt);
break;
case Tcreate:
if(dotu && !c->dotu && (m->tx.perm&(DMSYMLINK|DMDEVICE|DMNAMEDPIPE|DMSOCKET))){
err(m, "unsupported file type");
continue;
}
- if(dotu && !c->dotu)
- cvtucreate(&m->tx, &m->tpkt);
goto caseTopen;
case Topenfd:
if(m->tx.mode&~(OTRUNC|3)){
rx->data = nil; /* is this okay ??? */
return 0;
-}
-
-void*
-updateptr(uchar *p0, uchar *p0old, void *p)
-{
- return p0 + ((uchar*)p - p0old);
-}
-
-uchar*
-growpkt(uchar **ppkt, int sz)
-{
- int n;
- uchar *ap, *pkt;
-
- pkt = *ppkt;
- n = GBIT32(pkt);
- pkt = erealloc(pkt, n+sz);
- PBIT32(pkt, n+sz);
- ap = &pkt[n];
- memset(ap, 0, sz);
- *ppkt = pkt;
- return ap;
}
-void
-cvtuauthattach(Fcall *f, uchar **ppkt)
-{
- uchar *opkt, *ap;
-
- opkt = *ppkt;
- ap = growpkt(ppkt, BIT32SZ);
- PBIT32(ap, NOUID);
- if(*ppkt != opkt){
- f->uname = updateptr(*ppkt, opkt, f->uname);
- f->aname = updateptr(*ppkt, opkt, f->aname);
- }
-}
-void
-cvtucreate(Fcall *f, uchar **ppkt)
-{
- uchar *opkt;
-
- opkt = *ppkt;
- growpkt(ppkt, BIT16SZ); /* add an empty `extension' */
- if(*ppkt != opkt)
- f->name = updateptr(*ppkt, opkt, f->name);
-}