#include #include #include static int do_test (void) { iconv_t cd = iconv_open ("utf-8", "unicode"); if (cd == (iconv_t) -1) { puts ("cannot open iconv module"); return 1; } static const uint16_t us[] = { 0xfeff, 0x0041, 0x0042, 0x0043 }; char buf[100]; char *inbuf; size_t inlen; char *outbuf; size_t outlen; size_t n; inbuf = (char *) us; inlen = sizeof (us); outbuf = buf; outlen = sizeof (buf); n = iconv (cd, &inbuf, &inlen, &outbuf, &outlen); if (n == (size_t) -1 || inlen != 0 || outlen != sizeof (buf) - 3) { puts ("first conversion failed"); return 1; } iconv (cd, NULL, NULL, NULL, NULL); inbuf = (char *) us; inlen = sizeof (us); outbuf = buf; outlen = sizeof (buf); n = iconv (cd, &inbuf, &inlen, &outbuf, &outlen); if (n == (size_t) -1 || inlen != 0 || outlen != sizeof (buf) - 3) { puts ("second conversion failed"); return 1; } return 0; } #define TEST_FUNCTION do_test () #include "../test-skeleton.c"