#include #include #include #include #include static int do_test (void) { setlocale (LC_ALL, "de_DE.UTF-8"); iconv_t cd = iconv_open ("ISO-2022-JP//TRANSLIT", ""); if (cd == (iconv_t) -1) { puts ("iconv_open failed"); return 1; } char instr1[] = "\xc2\xa3\xe2\x82\xac\n"; const char expstr1[] = "\033$B!r\033(BEUR\n"; char outstr[32]; size_t inlen = sizeof (instr1); size_t outlen = sizeof (outstr); char *inptr = instr1; char *outptr = outstr; size_t r = iconv (cd, &inptr, &inlen, &outptr, &outlen); if (r != 1 || inlen != 0 || outlen != sizeof (outstr) - sizeof (expstr1) || memcmp (outstr, expstr1, sizeof (expstr1)) != 0) { puts ("wrong first conversion"); return 1; } char instr2[] = "\xe3\x88\xb1\n"; const char expstr2[] = "(\033$B3t\033(B)\n"; inlen = sizeof (instr2); outlen = sizeof (outstr); inptr = instr2; outptr = outstr; r = iconv (cd, &inptr, &inlen, &outptr, &outlen); if (r != 1 || inlen != 0 || outlen != sizeof (outstr) - sizeof (expstr2) || memcmp (outstr, expstr2, sizeof (expstr2)) != 0) { puts ("wrong second conversion"); return 1; } if (iconv_close (cd) != 0) { puts ("iconv_close failed"); return 1; } return 0; } #define TEST_FUNCTION do_test () #include "../test-skeleton.c"