50 lines · 737 B · C
RawDownload
#include <u.h>#include <libc.h>#include <venti.h> intvtputstring(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;} intvtgetstring(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;}