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

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)
        !            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>