lib9: dotu fixes in convS2M, convM2S
http://codereview.appspot.com/109049
This commit is contained in:
parent
e7c5e5ed94
commit
8ff457f56d
3 changed files with 36 additions and 6 deletions
|
|
@ -44,6 +44,7 @@ struct Fcall
|
||||||
|
|
||||||
/* 9P2000.u extensions */
|
/* 9P2000.u extensions */
|
||||||
int errornum; /* Rerror */
|
int errornum; /* Rerror */
|
||||||
|
int uidnum; /* Tattach, Tauth */
|
||||||
char *extension; /* Tcreate */
|
char *extension; /* Tcreate */
|
||||||
} Fcall;
|
} Fcall;
|
||||||
|
|
||||||
|
|
@ -73,6 +74,7 @@ struct Fcall
|
||||||
|
|
||||||
#define NOTAG (ushort)~0U /* Dummy tag */
|
#define NOTAG (ushort)~0U /* Dummy tag */
|
||||||
#define NOFID (u32int)~0U /* Dummy fid */
|
#define NOFID (u32int)~0U /* Dummy fid */
|
||||||
|
#define NOUID (-1) /* Dummy uid */
|
||||||
#define IOHDRSZ 24 /* ample room for Twrite/Rread header (iounit) */
|
#define IOHDRSZ 24 /* ample room for Twrite/Rread header (iounit) */
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,13 @@ convM2Su(uchar *ap, uint nap, Fcall *f, int dotu)
|
||||||
p = gstring(p, ep, &f->aname);
|
p = gstring(p, ep, &f->aname);
|
||||||
if(p == nil)
|
if(p == nil)
|
||||||
break;
|
break;
|
||||||
|
f->uidnum = NOUID;
|
||||||
|
if(dotu){
|
||||||
|
if(p+BIT32SZ > ep)
|
||||||
|
return 0;
|
||||||
|
f->uidnum = GBIT32(p);
|
||||||
|
p += BIT32SZ;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Tattach:
|
case Tattach:
|
||||||
|
|
@ -117,6 +124,13 @@ convM2Su(uchar *ap, uint nap, Fcall *f, int dotu)
|
||||||
p = gstring(p, ep, &f->aname);
|
p = gstring(p, ep, &f->aname);
|
||||||
if(p == nil)
|
if(p == nil)
|
||||||
break;
|
break;
|
||||||
|
f->uidnum = NOUID;
|
||||||
|
if(dotu){
|
||||||
|
if(p+BIT32SZ > ep)
|
||||||
|
return 0;
|
||||||
|
f->uidnum = GBIT32(p);
|
||||||
|
p += BIT32SZ;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Twalk:
|
case Twalk:
|
||||||
|
|
@ -233,10 +247,10 @@ convM2Su(uchar *ap, uint nap, Fcall *f, int dotu)
|
||||||
p = gstring(p, ep, &f->ename);
|
p = gstring(p, ep, &f->ename);
|
||||||
f->errornum = 0;
|
f->errornum = 0;
|
||||||
if(dotu){
|
if(dotu){
|
||||||
if(p+BIT16SZ > ep)
|
if(p+BIT32SZ > ep)
|
||||||
return 0;
|
return 0;
|
||||||
f->errornum = GBIT16(p);
|
f->errornum = GBIT32(p);
|
||||||
p += BIT16SZ;
|
p += BIT32SZ;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,8 @@ sizeS2Mu(Fcall *f, int dotu)
|
||||||
n += BIT32SZ;
|
n += BIT32SZ;
|
||||||
n += stringsz(f->uname);
|
n += stringsz(f->uname);
|
||||||
n += stringsz(f->aname);
|
n += stringsz(f->aname);
|
||||||
|
if(dotu)
|
||||||
|
n += BIT32SZ;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Tattach:
|
case Tattach:
|
||||||
|
|
@ -81,6 +83,8 @@ sizeS2Mu(Fcall *f, int dotu)
|
||||||
n += BIT32SZ;
|
n += BIT32SZ;
|
||||||
n += stringsz(f->uname);
|
n += stringsz(f->uname);
|
||||||
n += stringsz(f->aname);
|
n += stringsz(f->aname);
|
||||||
|
if(dotu)
|
||||||
|
n += BIT32SZ;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Twalk:
|
case Twalk:
|
||||||
|
|
@ -144,7 +148,7 @@ sizeS2Mu(Fcall *f, int dotu)
|
||||||
case Rerror:
|
case Rerror:
|
||||||
n += stringsz(f->ename);
|
n += stringsz(f->ename);
|
||||||
if(dotu)
|
if(dotu)
|
||||||
n += BIT16SZ;
|
n += BIT32SZ;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Rflush:
|
case Rflush:
|
||||||
|
|
@ -249,6 +253,11 @@ convS2Mu(Fcall *f, uchar *ap, uint nap, int dotu)
|
||||||
p += BIT32SZ;
|
p += BIT32SZ;
|
||||||
p = pstring(p, f->uname);
|
p = pstring(p, f->uname);
|
||||||
p = pstring(p, f->aname);
|
p = pstring(p, f->aname);
|
||||||
|
if(dotu){
|
||||||
|
f->uidnum = NOUID;
|
||||||
|
PBIT32(p, f->uidnum);
|
||||||
|
p += BIT32SZ;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Tattach:
|
case Tattach:
|
||||||
|
|
@ -258,6 +267,11 @@ convS2Mu(Fcall *f, uchar *ap, uint nap, int dotu)
|
||||||
p += BIT32SZ;
|
p += BIT32SZ;
|
||||||
p = pstring(p, f->uname);
|
p = pstring(p, f->uname);
|
||||||
p = pstring(p, f->aname);
|
p = pstring(p, f->aname);
|
||||||
|
if(dotu){
|
||||||
|
f->uidnum = NOUID;
|
||||||
|
PBIT32(p, f->uidnum);
|
||||||
|
p += BIT32SZ;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Twalk:
|
case Twalk:
|
||||||
|
|
@ -344,8 +358,8 @@ convS2Mu(Fcall *f, uchar *ap, uint nap, int dotu)
|
||||||
case Rerror:
|
case Rerror:
|
||||||
p = pstring(p, f->ename);
|
p = pstring(p, f->ename);
|
||||||
if(dotu){
|
if(dotu){
|
||||||
PBIT16(p, f->errornum);
|
PBIT32(p, f->errornum);
|
||||||
p += BIT16SZ;
|
p += BIT32SZ;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue