freeswitch/libs/libtpl-1.5/tests/test32.c

45 lines
1.0 KiB
C
Executable File

#include "tpl.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char*argv[]) {
tpl_bin bin;
tpl_node *tn;
int i;
char *file = "/tmp/test32.tpl";
char str[10];
strcpy(str,"good egg");
bin.addr = str;
bin.sz = 4; /* just going to pack 'good' (no NUL) */
tn = tpl_map("A(B)", &bin);
for(i=0; i < 5; i++) {
tpl_pack(tn,1);
bin.addr = (char*)(bin.addr) + 1;
}
memset(str,0,10); /* just to test that buf was copied */
tpl_dump(tn,TPL_FILE,file);
tpl_free(tn);
bin.addr = NULL;
bin.sz = 0;
tn = tpl_map("A(B)", &bin);
tpl_load(tn,TPL_FILE,file);
while (tpl_unpack(tn,1) > 0) {
/* print the buffer char-by-char ; its not a nul-termd string */
printf("buffer length: %u\n", bin.sz);
for(i=0; i < bin.sz; i++) printf("%c", ((char*)bin.addr)[i]);
printf("\n");
if (bin.sz > 0)
free(bin.addr); /* malloc'd for us by tpl_unpack, we must free */
}
tpl_free(tn);
return(0);
}