| #include <string.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <errno.h> |
| #include <iconv.h> |
| #include <locale.h> |
| |
| static const char testbuf[] = { |
| 0xEF, 0xBE, 0x9F, 0xD0, 0xB4, 0xEF, 0xBE, 0x9F, 0x29, 0xEF, 0xBE, 0x8E, |
| 0xEF, 0xBE, 0x9F, 0xEF, 0xBD, 0xB6, 0xEF, 0xBD, 0xB0, 0xEF, 0xBE, 0x9D |
| }; |
| |
| static int |
| do_test (void) |
| { |
| setlocale (LC_ALL, "de_DE.UTF-8"); |
| iconv_t ic = iconv_open ("ISO-2022-JP//TRANSLIT", "UTF-8"); |
| if (ic == (iconv_t) -1) |
| { |
| puts ("iconv_open failed"); |
| return 1; |
| } |
| size_t outremain = sizeof testbuf; |
| char outbuf[outremain]; |
| char *inp = (char *) testbuf; |
| char *outp = outbuf; |
| size_t inremain = sizeof testbuf; |
| |
| int ret = iconv (ic, &inp, &inremain, &outp, &outremain); |
| |
| int result = 0; |
| if (ret == (size_t) -1) |
| { |
| if (errno == E2BIG) |
| puts ("buffer too small reported. OK"); |
| else |
| { |
| printf ("iconv failed with %d (%m)\n", errno); |
| result = 0; |
| } |
| } |
| else |
| { |
| printf ("iconv returned %d\n", ret); |
| result = 1; |
| } |
| |
| return result; |
| } |
| |
| #define TEST_FUNCTION do_test () |
| #include "../test-skeleton.c" |