From 90254ad6e0477ff67e488958f0f297c5f85a4c56 Mon Sep 17 00:00:00 2001
From: "Luke T. Shumaker" <lukeshu@lukeshu.com>
Date: Sat, 25 Jan 2025 22:46:25 -0700
Subject: lib9p: idl: Refactor how I handle data-lengths being signed

---
 lib9p/idl/2002-9P2000.9p | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

(limited to 'lib9p/idl/2002-9P2000.9p')

diff --git a/lib9p/idl/2002-9P2000.9p b/lib9p/idl/2002-9P2000.9p
index c1cd74b..f0df7d1 100644
--- a/lib9p/idl/2002-9P2000.9p
+++ b/lib9p/idl/2002-9P2000.9p
@@ -27,8 +27,11 @@ num tag = 2
 num fid = 4
     "NOFID = ~0"
 
+# data - u32le `n`, then `n` bytes of data
+struct d = "len[4] len*(dat[1])"
+
 # data - s32le `n`, then `n` bytes of data
-struct d = "len[4,max=s32_max] len*(dat[1])"
+struct d_signed = "len[4,max=s32_max] len*(dat[1])"
 
 # string - u16le `n`, then `n` bytes of UTF-8, without any nul-bytes
 struct s = "len[2] len*(utf8[1])"
@@ -142,8 +145,8 @@ msg Ropen    = "size[4,val=end-&size] typ[1,val=113] tag[tag] qid[qid] iounit[4]
 msg Tcreate  = "size[4,val=end-&size] typ[1,val=114] tag[tag] fid[fid] name[s] perm[dm] mode[o]"
 msg Rcreate  = "size[4,val=end-&size] typ[1,val=115] tag[tag] qid[qid] iounit[4]"
 msg Tread    = "size[4,val=end-&size] typ[1,val=116] tag[tag] fid[fid] offset[8,max=s64_max] count[4,max=s32_max]"
-msg Rread    = "size[4,val=end-&size] typ[1,val=117] tag[tag] data[d]" # for directories `data` is the sequence "cnt*(entries[stat])"
-msg Twrite   = "size[4,val=end-&size] typ[1,val=118] tag[tag] fid[fid] offset[8,max=s64_max] data[d]"
+msg Rread    = "size[4,val=end-&size] typ[1,val=117] tag[tag] data[d_signed]" # for directories `data` is the sequence "cnt*(entries[stat])"
+msg Twrite   = "size[4,val=end-&size] typ[1,val=118] tag[tag] fid[fid] offset[8,max=s64_max] data[d_signed]"
 msg Rwrite   = "size[4,val=end-&size] typ[1,val=119] tag[tag] count[4]"
 msg Tclunk   = "size[4,val=end-&size] typ[1,val=120] tag[tag] fid[fid]"
 msg Rclunk   = "size[4,val=end-&size] typ[1,val=121] tag[tag]"
-- 
cgit v1.2.3-2-g168b