new venti library.
This commit is contained in:
parent
9df487d720
commit
056fe1ba7f
28 changed files with 4635 additions and 0 deletions
50
src/libventi/string.c
Normal file
50
src/libventi/string.c
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
#include <u.h>
|
||||
#include <libc.h>
|
||||
#include <venti.h>
|
||||
|
||||
int
|
||||
vtputstring(Packet *p, char *s)
|
||||
{
|
||||
uchar buf[2];
|
||||
int n;
|
||||
|
||||
if(s == nil){
|
||||
werrstr("null string in packet");
|
||||
return -1;
|
||||
}
|
||||
n = strlen(s);
|
||||
if(n > VtMaxStringSize){
|
||||
werrstr("string too long in packet");
|
||||
return -1;
|
||||
}
|
||||
buf[0] = n>>8;
|
||||
buf[1] = n;
|
||||
packetappend(p, buf, 2);
|
||||
packetappend(p, (uchar*)s, n);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
vtgetstring(Packet *p, char **ps)
|
||||
{
|
||||
uchar buf[2];
|
||||
int n;
|
||||
char *s;
|
||||
|
||||
if(packetconsume(p, buf, 2) < 0)
|
||||
return -1;
|
||||
n = (buf[0]<<8) + buf[1];
|
||||
if(n > VtMaxStringSize) {
|
||||
werrstr("string too long in packet");
|
||||
return -1;
|
||||
}
|
||||
s = vtmalloc(n+1);
|
||||
if(packetconsume(p, (uchar*)s, n) < 0){
|
||||
vtfree(s);
|
||||
return -1;
|
||||
}
|
||||
s[n] = 0;
|
||||
*ps = s;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue