shithub: purgatorio

ref: c116550e6a41572796e4db65e4f6acbcb3d9d6f8
dir: /liblogfs/gn.c/

View raw version
#include "logfsos.h"
#include "logfs.h"
#include "fcall.h"
#include "local.h"

int
logfsgn(uchar **pp, uchar *mep, char **v)
{
	uchar *p = *pp;
	int l;
	if(p + BIT16SZ > mep)
		return 0;
	l = GBIT16(p); p += BIT16SZ;
	if(p + l > mep)
		return 0;
	*pp = p + l;
	if(l == 0) {
		*v = 0;
		return 1;
	}
	*v = (char *)(p - 1);
	memmove(p - 1, p, l);
	p[l - 1] = 0;
	return 1;
}