Annotation of libelwix/example/test_tlv.c, revision 1.1.2.2
1.1.2.1 misho 1: #include <stdio.h>
2: #include <stdlib.h>
3: #include <string.h>
1.1.2.2 ! misho 4: #include <unistd.h>
! 5: #include <fcntl.h>
1.1.2.1 misho 6: #include <elwix.h>
7:
8:
1.1.2.2 ! misho 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:
1.1.2.1 misho 24: int
25: main(int argc, char **argv)
26: {
27: array_t *arr;
1.1.2.2 ! misho 28: u_char buf[BUFSIZ];
! 29: int f, len, ret = 0;
1.1.2.1 misho 30:
31: arr = ait_array2vars((const char**) argv, 42);
32: if (!arr)
33: return 1;
34:
1.1.2.2 ! misho 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;
1.1.2.1 misho 44: }
1.1.2.2 ! misho 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);
1.1.2.1 misho 50:
51: ait_freeVars(&arr);
1.1.2.2 ! misho 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;
1.1.2.1 misho 73: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>