(root)/
glibc-2.38/
iconvdata/
bug-iconv5.c
       1  #include <iconv.h>
       2  #include <stdint.h>
       3  #include <stdio.h>
       4  
       5  
       6  static int
       7  do_test (void)
       8  {
       9    iconv_t cd = iconv_open ("utf-8", "unicode");
      10    if (cd == (iconv_t) -1)
      11      {
      12        puts ("cannot open iconv module");
      13        return 1;
      14      }
      15  
      16    static const uint16_t us[] = { 0xfeff, 0x0041, 0x0042, 0x0043 };
      17    char buf[100];
      18  
      19    char *inbuf;
      20    size_t inlen;
      21    char *outbuf;
      22    size_t outlen;
      23    size_t n;
      24  
      25    inbuf = (char *) us;
      26    inlen = sizeof (us);
      27    outbuf = buf;
      28    outlen = sizeof (buf);
      29    n = iconv (cd, &inbuf, &inlen, &outbuf, &outlen);
      30    if (n == (size_t) -1 || inlen != 0 || outlen != sizeof (buf) - 3)
      31      {
      32        puts ("first conversion failed");
      33        return 1;
      34      }
      35  
      36    iconv (cd, NULL, NULL, NULL, NULL);
      37  
      38    inbuf = (char *) us;
      39    inlen = sizeof (us);
      40    outbuf = buf;
      41    outlen = sizeof (buf);
      42    n = iconv (cd, &inbuf, &inlen, &outbuf, &outlen);
      43    if (n == (size_t) -1 || inlen != 0 || outlen != sizeof (buf) - 3)
      44      {
      45        puts ("second conversion failed");
      46        return 1;
      47      }
      48  
      49    return 0;
      50  }
      51  
      52  #define TEST_FUNCTION do_test ()
      53  #include "../test-skeleton.c"