#include #include #include #include #include #include static void display(array_t *arr) { register int i; for (i = 0; i < array_Size(arr); i++) { if (AIT_TYPE(array(arr, i, ait_val_t*)) == string) printf("arr[%d]=%s (%d)\n", i, AIT_ADDR(array(arr, i, ait_val_t*)), AIT_LEN(array(arr, i, ait_val_t*))); else printf("arr[%d]#%ld (%d)\n", i, AIT_RAW(array(arr, i, ait_val_t*)), AIT_LEN(array(arr, i, ait_val_t*))); } } int main(int argc, char **argv) { array_t *arr; u_char buf[BUFSIZ]; int f, len, ret = 0; arr = ait_array2vars((const char**) argv, 42); if (!arr) return 1; display(arr); printf("\nNeeded buffer size = %d\n", ait_vars2tlv(NULL, 0, arr)); printf("Serialized data to buffer = %d\n", (len = ait_vars2tlv(buf, sizeof buf, arr))); f = open("test_tlv.bin", O_CREAT | O_WRONLY, 0644); if (f == -1) { ret = 2; goto err; } if ((len = write(f, buf, len)) == -1) { ret = 3; goto err; } else printf("Wrote %d bytes to file test_tlv.bin\n", len); ait_freeVars(&arr); arr = ait_tlv2vars(buf, len); if (!arr) { ret = 4; goto err; } printf("\n>>> Built vars array from TLV buffer\n\n"); display(arr); arr = ait_tlv2vars(buf, sizeof buf); if (!arr) { ret = 5; goto err; } printf("\n>>> Built vars array from TLV buffer with zeros at the end\n\n"); display(arr); err: if (f > 2) close(f); ait_freeVars(&arr); return ret; }