Commit Diff


commit - 571a81388989d4015da4f2dd8ebf303c65b1ea01
commit + 9d26dce77c16b353a5ee3cab945d7e420fc3ee76
blob - 8372ca49fab12a0706360717269a6025111e7a03
blob + a9054e8f2cca5fb025a378c89520b9010b0ce91b
--- 9pclib.c
+++ 9pclib.c
@@ -71,6 +71,13 @@ write_str_auto(const char *str)
 }
 
 void
+write_64(uint64_t x)
+{
+	x = htole64(x);
+	evbuffer_add(evb, &x, sizeof(x));
+}
+
+void
 write_32(uint32_t fid)
 {
 	fid = htole32(fid);
@@ -84,6 +91,12 @@ write_16(uint16_t tag)
 	evbuffer_add(evb, &tag, sizeof(tag));
 }
 
+void
+write_8(uint8_t x)
+{
+	evbuffer_add(evb, &x, sizeof(x));
+}
+
 
 
 void
@@ -160,3 +173,28 @@ twalk(uint32_t fid, uint32_t newfid, const char **wnam
 	for (i = 0; i < nwname; ++i)
 		write_str_auto(wnames[i]);
 }
+
+void
+topen(uint32_t fid, uint8_t mode)
+{
+	uint32_t	len;
+
+	/* fid[4] mode[1] */
+	len = sizeof(fid) + sizeof(mode);
+	write_hdr_auto(len, Topen);
+	write_fid(fid);
+	write_8(mode);
+}
+
+void
+tread(uint32_t fid, uint64_t off, uint32_t count)
+{
+	uint32_t	len;
+
+	/* fid[4] off[8] count[4] */
+	len = sizeof(fid) + sizeof(off) + sizeof(count);
+	write_hdr_auto(len, Tread);
+	write_fid(fid);
+	write_off(off);
+	write_32(count);
+}
blob - 4f193f4e89d090541f949fd6cea3bd3ff6950dd5
blob + 96accaa0e329fa150af852aeff826ab2951443c6
--- 9pclib.h
+++ 9pclib.h
@@ -30,9 +30,12 @@ void		 write_hdr(uint32_t, uint8_t, uint16_t);
 void		 write_hdr_auto(uint32_t, uint8_t);
 void		 write_str(uint16_t, const char *);
 void		 write_str_auto(const char *);
+void		 write_64(uint64_t);
 void		 write_32(uint32_t);
 void		 write_16(uint16_t);
+void		 write_8(uint8_t);
 
+#define write_off write_64
 #define write_fid write_32
 #define write_tag write_16
 
@@ -41,5 +44,7 @@ void		 tattach(uint32_t, uint32_t, const char *, const
 void		 tclunk(uint32_t);
 void		 tflush(uint16_t);
 void		 twalk(uint32_t, uint32_t, const char **, size_t);
+void		 topen(uint32_t, uint8_t);
+void		 tread(uint32_t, uint64_t, uint32_t);
 
 #endif