File:  [ELWIX - Embedded LightWeight unIX -] / libelwix / example / test_tlv.c
Revision 1.1.2.2: download - view: text, annotated - select for diffs - revision graph
Mon Jan 24 17:07:24 2022 UTC (2 years, 4 months ago) by misho
Branches: elwix5_1
finish TLV serializing engine with UT

    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>