glibc/iconvdata/bug-iconv5.c

54 lines
1.0 KiB
C

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