static void test_to_from_buf_1(void)

{

     unsigned niov;

     struct iovec *iov;

     size_t sz;

     unsigned char *ibuf, *obuf;

     unsigned i, j, n;



     iov_random(&iov, &niov);



     sz = iov_size(iov, niov);



     ibuf = g_malloc(sz + 8) + 4;

     memcpy(ibuf-4, "aaaa", 4); memcpy(ibuf + sz, "bbbb", 4);

     obuf = g_malloc(sz + 8) + 4;

     memcpy(obuf-4, "xxxx", 4); memcpy(obuf + sz, "yyyy", 4);



     /* fill in ibuf with 0123456... */

     for (i = 0; i < sz; ++i) {

         ibuf[i] = i & 255;

     }



     for (i = 0; i <= sz; ++i) {



         /* Test from/to buf for offset(i) in [0..sz] up to the end of buffer.

          * For last iteration with offset == sz, the procedure should

          * skip whole vector and process exactly 0 bytes */



         /* first set bytes [i..sz) to some "random" value */

         n = iov_memset(iov, niov, 0, 0xff, -1);

         g_assert(n == sz);



         /* next copy bytes [i..sz) from ibuf to iovec */

         n = iov_from_buf(iov, niov, i, ibuf + i, -1);

         g_assert(n == sz - i);



         /* clear part of obuf */

         memset(obuf + i, 0, sz - i);

         /* and set this part of obuf to values from iovec */

         n = iov_to_buf(iov, niov, i, obuf + i, -1);

         g_assert(n == sz - i);



         /* now compare resulting buffers */

         g_assert(memcmp(ibuf, obuf, sz) == 0);



         /* test just one char */

         n = iov_to_buf(iov, niov, i, obuf + i, 1);

         g_assert(n == (i < sz));

         if (n) {

             g_assert(obuf[i] == (i & 255));

         }



         for (j = i; j <= sz; ++j) {

             /* now test num of bytes cap up to byte no. j,

              * with j in [i..sz]. */



             /* clear iovec */

             n = iov_memset(iov, niov, 0, 0xff, -1);

             g_assert(n == sz);



             /* copy bytes [i..j) from ibuf to iovec */

             n = iov_from_buf(iov, niov, i, ibuf + i, j - i);

             g_assert(n == j - i);



             /* clear part of obuf */

             memset(obuf + i, 0, j - i);



             /* copy bytes [i..j) from iovec to obuf */

             n = iov_to_buf(iov, niov, i, obuf + i, j - i);

             g_assert(n == j - i);



             /* verify result */

             g_assert(memcmp(ibuf, obuf, sz) == 0);



             /* now actually check if the iovec contains the right data */

             test_iov_bytes(iov, niov, i, j - i);

         }

    }

    g_assert(!memcmp(ibuf-4, "aaaa", 4) && !memcmp(ibuf+sz, "bbbb", 4));

    g_free(ibuf-4);

    g_assert(!memcmp(obuf-4, "xxxx", 4) && !memcmp(obuf+sz, "yyyy", 4));

    g_free(obuf-4);

    iov_free(iov, niov);

}

static void test_to_from_buf_1(void)

{

     unsigned niov;

     struct iovec *iov;

     size_t sz;

     unsigned char *ibuf, *obuf;

     unsigned i, j, n;



     iov_random(&iov, &niov);



     sz = iov_size(iov, niov);



     ibuf = g_malloc(sz + 8) + 4;

     memcpy(ibuf-4, "aaaa", 4); memcpy(ibuf + sz, "bbbb", 4);

     obuf = g_malloc(sz + 8) + 4;

     memcpy(obuf-4, "xxxx", 4); memcpy(obuf + sz, "yyyy", 4);



     

     for (i = 0; i < sz; ++i) {

         ibuf[i] = i & 255;

     }



     for (i = 0; i <= sz; ++i) {



         







         

         n = iov_memset(iov, niov, 0, 0xff, -1);

         g_assert(n == sz);



         

         n = iov_from_buf(iov, niov, i, ibuf + i, -1);

         g_assert(n == sz - i);



         

         memset(obuf + i, 0, sz - i);

         

         n = iov_to_buf(iov, niov, i, obuf + i, -1);

         g_assert(n == sz - i);



         

         g_assert(memcmp(ibuf, obuf, sz) == 0);



         

         n = iov_to_buf(iov, niov, i, obuf + i, 1);

         g_assert(n == (i < sz));

         if (n) {

             g_assert(obuf[i] == (i & 255));

         }



         for (j = i; j <= sz; ++j) {

             





             

             n = iov_memset(iov, niov, 0, 0xff, -1);

             g_assert(n == sz);



             

             n = iov_from_buf(iov, niov, i, ibuf + i, j - i);

             g_assert(n == j - i);



             

             memset(obuf + i, 0, j - i);



             

             n = iov_to_buf(iov, niov, i, obuf + i, j - i);

             g_assert(n == j - i);



             

             g_assert(memcmp(ibuf, obuf, sz) == 0);



             

             test_iov_bytes(iov, niov, i, j - i);

         }

    }

    g_assert(!memcmp(ibuf-4, "aaaa", 4) && !memcmp(ibuf+sz, "bbbb", 4));

    g_free(ibuf-4);

    g_assert(!memcmp(obuf-4, "xxxx", 4) && !memcmp(obuf+sz, "yyyy", 4));

    g_free(obuf-4);

    iov_free(iov, niov);

}

static void FUNC_0(void)

{

     unsigned VAR_0;

     struct iovec *VAR_1;

     size_t sz;

     unsigned char *VAR_2, *VAR_3;

     unsigned VAR_4, VAR_5, VAR_6;



     iov_random(&VAR_1, &VAR_0);



     sz = iov_size(VAR_1, VAR_0);



     VAR_2 = g_malloc(sz + 8) + 4;

     memcpy(VAR_2-4, "aaaa", 4); memcpy(VAR_2 + sz, "bbbb", 4);

     VAR_3 = g_malloc(sz + 8) + 4;

     memcpy(VAR_3-4, "xxxx", 4); memcpy(VAR_3 + sz, "yyyy", 4);



     

     for (VAR_4 = 0; VAR_4 < sz; ++VAR_4) {

         VAR_2[VAR_4] = VAR_4 & 255;

     }



     for (VAR_4 = 0; VAR_4 <= sz; ++VAR_4) {



         







         

         VAR_6 = iov_memset(VAR_1, VAR_0, 0, 0xff, -1);

         g_assert(VAR_6 == sz);



         

         VAR_6 = iov_from_buf(VAR_1, VAR_0, VAR_4, VAR_2 + VAR_4, -1);

         g_assert(VAR_6 == sz - VAR_4);



         

         memset(VAR_3 + VAR_4, 0, sz - VAR_4);

         

         VAR_6 = iov_to_buf(VAR_1, VAR_0, VAR_4, VAR_3 + VAR_4, -1);

         g_assert(VAR_6 == sz - VAR_4);



         

         g_assert(memcmp(VAR_2, VAR_3, sz) == 0);



         

         VAR_6 = iov_to_buf(VAR_1, VAR_0, VAR_4, VAR_3 + VAR_4, 1);

         g_assert(VAR_6 == (VAR_4 < sz));

         if (VAR_6) {

             g_assert(VAR_3[VAR_4] == (VAR_4 & 255));

         }



         for (VAR_5 = VAR_4; VAR_5 <= sz; ++VAR_5) {

             





             

             VAR_6 = iov_memset(VAR_1, VAR_0, 0, 0xff, -1);

             g_assert(VAR_6 == sz);



             

             VAR_6 = iov_from_buf(VAR_1, VAR_0, VAR_4, VAR_2 + VAR_4, VAR_5 - VAR_4);

             g_assert(VAR_6 == VAR_5 - VAR_4);



             

             memset(VAR_3 + VAR_4, 0, VAR_5 - VAR_4);



             

             VAR_6 = iov_to_buf(VAR_1, VAR_0, VAR_4, VAR_3 + VAR_4, VAR_5 - VAR_4);

             g_assert(VAR_6 == VAR_5 - VAR_4);



             

             g_assert(memcmp(VAR_2, VAR_3, sz) == 0);



             

             test_iov_bytes(VAR_1, VAR_0, VAR_4, VAR_5 - VAR_4);

         }

    }

    g_assert(!memcmp(VAR_2-4, "aaaa", 4) && !memcmp(VAR_2+sz, "bbbb", 4));

    g_free(VAR_2-4);

    g_assert(!memcmp(VAR_3-4, "xxxx", 4) && !memcmp(VAR_3+sz, "yyyy", 4));

    g_free(VAR_3-4);

    iov_free(VAR_1, VAR_0);

}

static void FUNC_0(void)
{ unsigned VAR_0; struct iovec *VAR_1; size_t sz; unsigned char *VAR_2, *VAR_3; unsigned VAR_4, VAR_5, VAR_6; iov_random(&VAR_1, &VAR_0); sz = iov_size(VAR_1, VAR_0); VAR_2 = g_malloc(sz + 8) + 4; memcpy(VAR_2-4, "aaaa", 4); memcpy(VAR_2 + sz, "bbbb", 4); VAR_3 = g_malloc(sz + 8) + 4; memcpy(VAR_3-4, "xxxx", 4); memcpy(VAR_3 + sz, "yyyy", 4); for (VAR_4 = 0; VAR_4 < sz; ++VAR_4) { VAR_2[VAR_4] = VAR_4 & 255; } for (VAR_4 = 0; VAR_4 <= sz; ++VAR_4) { VAR_6 = iov_memset(VAR_1, VAR_0, 0, 0xff, -1); g_assert(VAR_6 == sz); VAR_6 = iov_from_buf(VAR_1, VAR_0, VAR_4, VAR_2 + VAR_4, -1); g_assert(VAR_6 == sz - VAR_4); memset(VAR_3 + VAR_4, 0, sz - VAR_4); VAR_6 = iov_to_buf(VAR_1, VAR_0, VAR_4, VAR_3 + VAR_4, -1); g_assert(VAR_6 == sz - VAR_4); g_assert(memcmp(VAR_2, VAR_3, sz) == 0); VAR_6 = iov_to_buf(VAR_1, VAR_0, VAR_4, VAR_3 + VAR_4, 1); g_assert(VAR_6 == (VAR_4 < sz)); if (VAR_6) { g_assert(VAR_3[VAR_4] == (VAR_4 & 255)); } for (VAR_5 = VAR_4; VAR_5 <= sz; ++VAR_5) { VAR_6 = iov_memset(VAR_1, VAR_0, 0, 0xff, -1); g_assert(VAR_6 == sz); VAR_6 = iov_from_buf(VAR_1, VAR_0, VAR_4, VAR_2 + VAR_4, VAR_5 - VAR_4); g_assert(VAR_6 == VAR_5 - VAR_4); memset(VAR_3 + VAR_4, 0, VAR_5 - VAR_4); VAR_6 = iov_to_buf(VAR_1, VAR_0, VAR_4, VAR_3 + VAR_4, VAR_5 - VAR_4); g_assert(VAR_6 == VAR_5 - VAR_4); g_assert(memcmp(VAR_2, VAR_3, sz) == 0); test_iov_bytes(VAR_1, VAR_0, VAR_4, VAR_5 - VAR_4); } } g_assert(!memcmp(VAR_2-4, "aaaa", 4) && !memcmp(VAR_2+sz, "bbbb", 4)); g_free(VAR_2-4); g_assert(!memcmp(VAR_3-4, "xxxx", 4) && !memcmp(VAR_3+sz, "yyyy", 4)); g_free(VAR_3-4); iov_free(VAR_1, VAR_0); }