1: #include <stdio.h>
2: #include <stdlib.h>
3: #include <string.h>
4: #include <unistd.h>
5: #include <fcntl.h>
6: #include <elwix.h>
7:
8:
9: static void
10: display(array_t *arr)
11: {
12: register int i;
13:
14: for (i = 0; i < array_Size(arr); i++) {
15: if (AIT_TYPE(array(arr, i, ait_val_t*)) == string)
16: printf("arr[%d]=%s (%d)\n", i, AIT_ADDR(array(arr, i, ait_val_t*)),
17: AIT_LEN(array(arr, i, ait_val_t*)));
18: else
19: printf("arr[%d]#%ld (%d)\n", i, AIT_RAW(array(arr, i, ait_val_t*)),
20: AIT_LEN(array(arr, i, ait_val_t*)));
21: }
22: }
23:
24: int
25: main(int argc, char **argv)
26: {
27: array_t *arr;
28: u_char buf[BUFSIZ];
29: int f, len, ret = 0;
30:
31: arr = ait_array2vars((const char**) argv, 42);
32: if (!arr)
33: return 1;
34:
35: display(arr);
36:
37: printf("\nNeeded buffer size = %d\n", ait_vars2tlv(NULL, 0, arr));
38: printf("Serialized data to buffer = %d\n", (len = ait_vars2tlv(buf, sizeof buf, arr)));
39:
40: f = open("test_tlv.bin", O_CREAT | O_WRONLY, 0644);
41: if (f == -1) {
42: ret = 2;
43: goto err;
44: }
45: if ((len = write(f, buf, len)) == -1) {
46: ret = 3;
47: goto err;
48: } else
49: printf("Wrote %d bytes to file test_tlv.bin\n", len);
50:
51: ait_freeVars(&arr);
52:
53: arr = ait_tlv2vars(buf, len);
54: if (!arr) {
55: ret = 4;
56: goto err;
57: }
58: printf("\n>>> Built vars array from TLV buffer\n\n");
59: display(arr);
60:
61: arr = ait_tlv2vars(buf, sizeof buf);
62: if (!arr) {
63: ret = 5;
64: goto err;
65: }
66: printf("\n>>> Built vars array from TLV buffer with zeros at the end\n\n");
67: display(arr);
68: err:
69: if (f > 2)
70: close(f);
71: ait_freeVars(&arr);
72: return ret;
73: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>