Blame


1 d957951b 2005-02-11 devnull #include <u.h>
2 d957951b 2005-02-11 devnull #include <libc.h>
3 d957951b 2005-02-11 devnull #include <bio.h>
4 d957951b 2005-02-11 devnull #include <ctype.h>
5 d957951b 2005-02-11 devnull #include <ndb.h>
6 d957951b 2005-02-11 devnull #include "ndbhf.h"
7 d957951b 2005-02-11 devnull
8 d957951b 2005-02-11 devnull /*
9 d957951b 2005-02-11 devnull * free a parsed entry
10 d957951b 2005-02-11 devnull */
11 d957951b 2005-02-11 devnull void
12 d957951b 2005-02-11 devnull ndbfree(Ndbtuple *t)
13 d957951b 2005-02-11 devnull {
14 d957951b 2005-02-11 devnull Ndbtuple *tn;
15 d957951b 2005-02-11 devnull
16 d957951b 2005-02-11 devnull for(; t; t = tn){
17 d957951b 2005-02-11 devnull tn = t->entry;
18 d957951b 2005-02-11 devnull if(t->val != t->valbuf){
19 d957951b 2005-02-11 devnull free(t->val);
20 d957951b 2005-02-11 devnull }
21 d957951b 2005-02-11 devnull free(t);
22 d957951b 2005-02-11 devnull }
23 d957951b 2005-02-11 devnull }
24 d957951b 2005-02-11 devnull
25 d957951b 2005-02-11 devnull /*
26 d957951b 2005-02-11 devnull * set a value in a tuple
27 d957951b 2005-02-11 devnull */
28 d957951b 2005-02-11 devnull void
29 d957951b 2005-02-11 devnull ndbsetval(Ndbtuple *t, char *val, int n)
30 d957951b 2005-02-11 devnull {
31 d957951b 2005-02-11 devnull if(n < Ndbvlen){
32 d957951b 2005-02-11 devnull if(t->val != t->valbuf){
33 d957951b 2005-02-11 devnull free(t->val);
34 d957951b 2005-02-11 devnull t->val = t->valbuf;
35 d957951b 2005-02-11 devnull }
36 d957951b 2005-02-11 devnull } else {
37 d957951b 2005-02-11 devnull if(t->val != t->valbuf)
38 d957951b 2005-02-11 devnull t->val = realloc(t->val, n+1);
39 d957951b 2005-02-11 devnull else
40 d957951b 2005-02-11 devnull t->val = malloc(n+1);
41 d957951b 2005-02-11 devnull if(t->val == nil)
42 d957951b 2005-02-11 devnull sysfatal("ndbsetval %r");
43 d957951b 2005-02-11 devnull }
44 d957951b 2005-02-11 devnull strncpy(t->val, val, n);
45 d957951b 2005-02-11 devnull t->val[n] = 0;
46 d957951b 2005-02-11 devnull }
47 d957951b 2005-02-11 devnull
48 d957951b 2005-02-11 devnull /*
49 d957951b 2005-02-11 devnull * allocate a tuple
50 d957951b 2005-02-11 devnull */
51 d957951b 2005-02-11 devnull Ndbtuple*
52 d957951b 2005-02-11 devnull ndbnew(char *attr, char *val)
53 d957951b 2005-02-11 devnull {
54 d957951b 2005-02-11 devnull Ndbtuple *t;
55 d957951b 2005-02-11 devnull
56 d957951b 2005-02-11 devnull t = mallocz(sizeof(*t), 1);
57 d957951b 2005-02-11 devnull if(t == nil)
58 d957951b 2005-02-11 devnull sysfatal("ndbnew %r");
59 d957951b 2005-02-11 devnull if(attr != nil)
60 d957951b 2005-02-11 devnull strncpy(t->attr, attr, sizeof(t->attr)-1);
61 d957951b 2005-02-11 devnull t->val = t->valbuf;
62 d957951b 2005-02-11 devnull if(val != nil)
63 d957951b 2005-02-11 devnull ndbsetval(t, val, strlen(val));
64 fa325e9b 2020-01-10 cross return t;
65 d957951b 2005-02-11 devnull }