3 /* these routines are to un XDR structures. There are two forms */
4 /* provided, a plain for a gdbm data structure, and an opaque for */
5 /* data delivered across the network */
7 bool_t datum_decode (datum * content, void * data, xdrproc_t xdr_fn )
10 xdrmem_create(&xdrs, content->dptr,content->dsize, XDR_DECODE);
11 return (xdr_fn(&xdrs, data)) ;
14 bool_t item_decode (item * val, void *data, xdrproc_t xdr_fn)
18 xdrmem_create(&xdrs, val->item_val,val->item_len, XDR_DECODE);
19 return (xdr_fn(&xdrs, data));
22 static char *buf = NULL;
23 static int bufsize = 0;
25 bool_t item_encode(item * val, void * data, xdrproc_t xdr_fn)
30 buf = malloc(bufsize = 16384);
32 xdrmem_create(&xdrs, buf, bufsize-1024, XDR_ENCODE);
33 while (!xdr_fn(&xdrs, data))
36 buf = malloc(bufsize += 8192);
37 xdrmem_create(&xdrs, buf, bufsize-1024, XDR_ENCODE);
41 val->item_len = XDR_GETPOS(&xdrs);
45 bool_t datum_encode(datum * val, void * data, xdrproc_t xdr_fn)
50 buf = malloc(bufsize = 16384);
52 xdrmem_create(&xdrs, buf, bufsize, XDR_ENCODE);
53 while (!xdr_fn(&xdrs, data))
56 buf = malloc(bufsize += 8192);
57 xdrmem_create(&xdrs, buf, bufsize, XDR_ENCODE);
61 val->dsize = XDR_GETPOS(&xdrs);