123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /* Contributed by Owen Taylor <otaylor@redhat.com>. */
- #include <errno.h>
- #include <stddef.h>
- #include <stdio.h>
- #if defined(__GLIBC__) && !defined(__UCLIBC__)
- #include <iconv.h>
- #endif
- #define BUFSIZE 10000
- static int
- do_test (void)
- {
- #if defined(__GLIBC__) && !defined(__UCLIBC__)
- 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;
- #else
- return 23;
- #endif
- }
- #define TEST_FUNCTION do_test ()
- #include "../test-skeleton.c"
|