From e5888a1ffdae813d7575f5fb02275c6bb07e5199 Mon Sep 17 00:00:00 2001 From: Taru Karttunen Date: Wed, 30 Mar 2011 15:46:40 +0300 Subject: Import sources from 2011-03-30 iso image --- sys/src/libndb/ndbfree.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100755 sys/src/libndb/ndbfree.c (limited to 'sys/src/libndb/ndbfree.c') diff --git a/sys/src/libndb/ndbfree.c b/sys/src/libndb/ndbfree.c new file mode 100755 index 000000000..d3f27feb5 --- /dev/null +++ b/sys/src/libndb/ndbfree.c @@ -0,0 +1,76 @@ +#include +#include +#include +#include +#include +#include "ndbhf.h" + +/* + * free a parsed entry + */ +void +ndbfree(Ndbtuple *t) +{ + Ndbtuple *tn; + + for(; t; t = tn){ + tn = t->entry; + if(t->val != t->valbuf){ + free(t->val); + } + free(t); + } +} + +/* + * set a value in a tuple + */ +void +ndbsetval(Ndbtuple *t, char *val, int n) +{ + if(n < Ndbvlen){ + if(t->val != t->valbuf){ + free(t->val); + t->val = t->valbuf; + } + } else { + if(t->val != t->valbuf) + t->val = realloc(t->val, n+1); + else + t->val = malloc(n+1); + if(t->val == nil) + sysfatal("ndbsetval %r"); + } + strncpy(t->val, val, n); + t->val[n] = 0; +} + +/* + * allocate a tuple + */ +Ndbtuple* +ndbnew(char *attr, char *val) +{ + Ndbtuple *t; + + t = mallocz(sizeof(*t), 1); + if(t == nil) + sysfatal("ndbnew %r"); + if(attr != nil) + strncpy(t->attr, attr, sizeof(t->attr)-1); + t->val = t->valbuf; + if(val != nil) + ndbsetval(t, val, strlen(val)); + ndbsetmalloctag(t, getcallerpc(&attr)); + return t; +} + +/* + * set owner of a tuple + */ +void +ndbsetmalloctag(Ndbtuple *t, uintptr tag) +{ + for(; t; t=t->entry) + setmalloctag(t, tag); +} -- cgit v1.2.3