/* Contributed by Owen Taylor . */ #include #include #include #include #define BUFSIZE 10000 static int do_test (void) { char inbuf[BUFSIZE]; wchar_t outbuf[BUFSIZE]; iconv_t cd; int i; char *inptr; char *outptr; size_t inbytes_left, outbytes_left; int count; int result = 0; for (i=0; i < BUFSIZE; i++) inbuf[i] = 'a'; cd = iconv_open ("UCS-4LE", "UTF-8"); inbytes_left = BUFSIZE; outbytes_left = BUFSIZE * 4; inptr = inbuf; outptr = (char *) outbuf; count = iconv (cd, &inptr, &inbytes_left, &outptr, &outbytes_left); if (count < 0) { if (errno == E2BIG) printf ("Received E2BIG\n"); else printf ("Received something else\n"); printf ("inptr change: %td\n", inptr - inbuf); printf ("inlen change: %zd\n", BUFSIZE - inbytes_left); printf ("outptr change: %td\n", outptr - (char *) outbuf); printf ("outlen change: %zd\n", BUFSIZE * 4 - outbytes_left); result = 1; } else printf ("Succeeded\n"); return result; } #define TEST_FUNCTION do_test () #include "../test-skeleton.c"