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