| #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" |