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>