Blame


1 056fe1ba 2003-11-23 devnull #include <u.h>
2 056fe1ba 2003-11-23 devnull #include <libc.h>
3 056fe1ba 2003-11-23 devnull #include <venti.h>
4 056fe1ba 2003-11-23 devnull
5 056fe1ba 2003-11-23 devnull int
6 056fe1ba 2003-11-23 devnull vtputstring(Packet *p, char *s)
7 056fe1ba 2003-11-23 devnull {
8 056fe1ba 2003-11-23 devnull uchar buf[2];
9 056fe1ba 2003-11-23 devnull int n;
10 056fe1ba 2003-11-23 devnull
11 056fe1ba 2003-11-23 devnull if(s == nil){
12 056fe1ba 2003-11-23 devnull werrstr("null string in packet");
13 056fe1ba 2003-11-23 devnull return -1;
14 056fe1ba 2003-11-23 devnull }
15 056fe1ba 2003-11-23 devnull n = strlen(s);
16 056fe1ba 2003-11-23 devnull if(n > VtMaxStringSize){
17 056fe1ba 2003-11-23 devnull werrstr("string too long in packet");
18 056fe1ba 2003-11-23 devnull return -1;
19 056fe1ba 2003-11-23 devnull }
20 056fe1ba 2003-11-23 devnull buf[0] = n>>8;
21 056fe1ba 2003-11-23 devnull buf[1] = n;
22 056fe1ba 2003-11-23 devnull packetappend(p, buf, 2);
23 056fe1ba 2003-11-23 devnull packetappend(p, (uchar*)s, n);
24 056fe1ba 2003-11-23 devnull return 0;
25 056fe1ba 2003-11-23 devnull }
26 056fe1ba 2003-11-23 devnull
27 056fe1ba 2003-11-23 devnull int
28 056fe1ba 2003-11-23 devnull vtgetstring(Packet *p, char **ps)
29 056fe1ba 2003-11-23 devnull {
30 056fe1ba 2003-11-23 devnull uchar buf[2];
31 056fe1ba 2003-11-23 devnull int n;
32 056fe1ba 2003-11-23 devnull char *s;
33 056fe1ba 2003-11-23 devnull
34 056fe1ba 2003-11-23 devnull if(packetconsume(p, buf, 2) < 0)
35 056fe1ba 2003-11-23 devnull return -1;
36 056fe1ba 2003-11-23 devnull n = (buf[0]<<8) + buf[1];
37 056fe1ba 2003-11-23 devnull if(n > VtMaxStringSize) {
38 056fe1ba 2003-11-23 devnull werrstr("string too long in packet");
39 056fe1ba 2003-11-23 devnull return -1;
40 056fe1ba 2003-11-23 devnull }
41 056fe1ba 2003-11-23 devnull s = vtmalloc(n+1);
42 056fe1ba 2003-11-23 devnull if(packetconsume(p, (uchar*)s, n) < 0){
43 056fe1ba 2003-11-23 devnull vtfree(s);
44 056fe1ba 2003-11-23 devnull return -1;
45 056fe1ba 2003-11-23 devnull }
46 056fe1ba 2003-11-23 devnull s[n] = 0;
47 056fe1ba 2003-11-23 devnull *ps = s;
48 056fe1ba 2003-11-23 devnull return 0;
49 056fe1ba 2003-11-23 devnull }