1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // Derived from BZ #9793
- #include <errno.h>
- #include <stdio.h>
- #if defined(__GLIBC__) && !defined(__UCLIBC__)
- #include <iconv.h>
- #endif
- static int
- do_test (void)
- {
- #if defined(__GLIBC__) && !defined(__UCLIBC__)
- iconv_t cd = iconv_open ("ASCII//TRANSLIT", "UTF-8");
- if (cd == (iconv_t) -1)
- {
- puts ("iconv_open failed");
- return 1;
- }
- char input[2] = { 0xc2, 0xae }; /* Registered trademark */
- char *inptr = input;
- size_t insize = sizeof (input);
- char output[2]; /* Too short to contain "(R)". */
- char *outptr = output;
- size_t outsize = sizeof (output);
- size_t ret = iconv (cd, &inptr, &insize, &outptr, &outsize);
- if (ret != (size_t) -1)
- {
- puts ("iconv succeeded");
- return 1;
- }
- if (errno != E2BIG)
- {
- puts ("iconv did not set errno to E2BIG");
- return 1;
- }
- int res = 0;
- if (inptr != input)
- {
- puts ("inptr changed");
- res = 1;
- }
- if (insize != sizeof (input))
- {
- puts ("insize changed");
- res = 1;
- }
- if (outptr != output)
- {
- puts ("outptr changed");
- res = 1;
- }
- if (outsize != sizeof (output))
- {
- puts ("outsize changed");
- res = 1;
- }
- if (iconv_close (cd) == -1)
- {
- puts ("iconv_close failed");
- res = 1;
- }
- return res;
- #else
- return 23;
- #endif
- }
- #define TEST_FUNCTION do_test ()
- #include "../test-skeleton.c"
|