| #include <iconv.h> |
| #include <stdint.h> |
| #include <stdio.h> |
| |
| |
| 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" |