xref: /inferno-os/liblogfs/gn.c (revision 28942ead413418b56c5be78e8c4c400881fba72e)
1 #include "logfsos.h"
2 #include "logfs.h"
3 #include "fcall.h"
4 #include "local.h"
5 
6 int
logfsgn(uchar ** pp,uchar * mep,char ** v)7 logfsgn(uchar **pp, uchar *mep, char **v)
8 {
9 	uchar *p = *pp;
10 	int l;
11 	if(p + BIT16SZ > mep)
12 		return 0;
13 	l = GBIT16(p); p += BIT16SZ;
14 	if(p + l > mep)
15 		return 0;
16 	*pp = p + l;
17 	if(l == 0) {
18 		*v = 0;
19 		return 1;
20 	}
21 	*v = (char *)(p - 1);
22 	memmove(p - 1, p, l);
23 	p[l - 1] = 0;
24 	return 1;
25 }
26 
27