aboutsummaryrefslogtreecommitdiff
path: root/src/lib9/convS2M.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-09-13 01:37:14 +0000
committerrsc <devnull@localhost>2005-09-13 01:37:14 +0000
commitfb941e08c52162fb41a14732be1ab70f20b450e3 (patch)
treec317bd44e1ed4b5e7fa5854785fdfa6a40348a84 /src/lib9/convS2M.c
parentb7eed2e0e14b980bed4ced80a357189a981d28bc (diff)
downloadplan9port-fb941e08c52162fb41a14732be1ab70f20b450e3.tar.gz
plan9port-fb941e08c52162fb41a14732be1ab70f20b450e3.tar.bz2
plan9port-fb941e08c52162fb41a14732be1ab70f20b450e3.zip
Add 9P2000.u functions.
Diffstat (limited to 'src/lib9/convS2M.c')
-rw-r--r--src/lib9/convS2M.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/lib9/convS2M.c b/src/lib9/convS2M.c
index 6e9d2719..c004babc 100644
--- a/src/lib9/convS2M.c
+++ b/src/lib9/convS2M.c
@@ -46,7 +46,7 @@ stringsz(char *s)
}
uint
-sizeS2M(Fcall *f)
+sizeS2Mu(Fcall *f, int dotu)
{
uint n;
int i;
@@ -141,6 +141,8 @@ sizeS2M(Fcall *f)
case Rerror:
n += stringsz(f->ename);
+ if(dotu)
+ n += BIT16SZ;
break;
case Rflush:
@@ -198,7 +200,13 @@ sizeS2M(Fcall *f)
}
uint
-convS2M(Fcall *f, uchar *ap, uint nap)
+sizeS2M(Fcall *f)
+{
+ return sizeS2Mu(f, 0);
+}
+
+uint
+convS2Mu(Fcall *f, uchar *ap, uint nap, int dotu)
{
uchar *p;
uint i, size;
@@ -331,6 +339,10 @@ convS2M(Fcall *f, uchar *ap, uint nap)
case Rerror:
p = pstring(p, f->ename);
+ if(dotu){
+ PBIT16(p, f->errornum);
+ p += BIT16SZ;
+ }
break;
case Rflush:
@@ -397,3 +409,9 @@ convS2M(Fcall *f, uchar *ap, uint nap)
return 0;
return size;
}
+
+uint
+convS2M(Fcall *f, uchar *ap, uint nap)
+{
+ return convS2Mu(f, ap, nap, 0);
+}