Annotation of libelwix/example/test_tlv.c, revision 1.2.2.1

1.2       misho       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)
1.2.2.1 ! misho      16:                        printf("arr[%d]=%s (%d) type=%d\n", i, AIT_ADDR(array(arr, i, ait_val_t*)), 
        !            17:                                        AIT_LEN(array(arr, i, ait_val_t*)), 
        !            18:                                        AIT_TYPE(array(arr, i, ait_val_t*)));
        !            19:                else if (AIT_TYPE(array(arr, i, ait_val_t*)) == f32) 
        !            20:                        printf("arr[%d]#%f (%d) type=%d\n", i, AIT_GET_F32(array(arr, i, ait_val_t*)), 
        !            21:                                        AIT_LEN(array(arr, i, ait_val_t*)), 
        !            22:                                        AIT_TYPE(array(arr, i, ait_val_t*)));
        !            23:                else if (AIT_TYPE(array(arr, i, ait_val_t*)) == f64) 
        !            24:                        printf("arr[%d]#%lf (%d) type=%d\n", i, AIT_GET_F64(array(arr, i, ait_val_t*)), 
        !            25:                                        AIT_LEN(array(arr, i, ait_val_t*)), 
        !            26:                                        AIT_TYPE(array(arr, i, ait_val_t*)));
1.2       misho      27:                else
1.2.2.1 ! misho      28:                        printf("arr[%d]#%ld (%d) type=%d\n", i, AIT_RAW(array(arr, i, ait_val_t*)), 
        !            29:                                        AIT_LEN(array(arr, i, ait_val_t*)), 
        !            30:                                        AIT_TYPE(array(arr, i, ait_val_t*)));
1.2       misho      31:        }
                     32: }
                     33: 
                     34: int
                     35: main(int argc, char **argv)
                     36: {
                     37:        array_t *arr;
                     38:        u_char buf[BUFSIZ];
                     39:        int f, len, ret = 0;
                     40: 
                     41:        arr = ait_array2vars((const char**) argv, 42);
                     42:        if (!arr)
                     43:                return 1;
                     44: 
                     45:        display(arr);
                     46: 
                     47:        printf("\nNeeded buffer size = %d\n", ait_vars2tlv(NULL, 0, arr));
                     48:        printf("Serialized data to buffer = %d\n", (len = ait_vars2tlv(buf, sizeof buf, arr)));
                     49: 
                     50:        f = open("test_tlv.bin", O_CREAT | O_WRONLY, 0644);
                     51:        if (f == -1) {
                     52:                ret = 2;
                     53:                goto err;
                     54:        }
                     55:        if ((len = write(f, buf, len)) == -1) {
                     56:                ret = 3;
                     57:                goto err;
                     58:        } else
                     59:                printf("Wrote %d bytes to file test_tlv.bin\n", len);
                     60: 
                     61:        ait_freeVars(&arr);
                     62: 
                     63:        arr = ait_tlv2vars(buf, len);
                     64:        if (!arr) {
                     65:                ret = 4;
                     66:                goto err;
                     67:        }
                     68:        printf("\n>>> Built vars array from TLV buffer\n\n");
                     69:        display(arr);
                     70: 
                     71:        arr = ait_tlv2vars(buf, sizeof buf);
                     72:        if (!arr) {
                     73:                ret = 5;
                     74:                goto err;
                     75:        }
                     76:        printf("\n>>> Built vars array from TLV buffer with zeros at the end\n\n");
                     77:        display(arr);
                     78: err:
                     79:        if (f > 2)
                     80:                close(f);
                     81:        ait_freeVars(&arr);
                     82:        return ret;
                     83: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>