2000-06-17 Ulrich Drepper <drepper@redhat.com>
+ * locale/programs/ld-ctype.c (ctype_output): Really write out
+ mboutdigits information.
+ * localedata/tst-trans.c: Add code to test printf's I flag with locale.
+ * localedata/tst-trans.sh: Set GCONV_PATH for compilation environment.
+ * localedata/tests/trans.def: Add outdigit information.
+
+ * localedata/tst-mbswcs3.c: Remove comment.
+
* stdio-common/vfprintf.c (vfprintf): Fix handling of I flag.
* stdio-common/tiformat.c (sprint_ints): Add tests for I flag.
* libio/tst_wprintf.c (main): Add test for I flag.
them with a NUL byte following. The NUL byte wouldn't be
necessary but it makes it easier for the user. */
total = 0;
- for (cnt = elem - _NL_CTYPE_INDIGITS0_MB;
+ for (cnt = elem - _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS0_MB);
cnt < ctype->mbdigits_act; cnt += 10)
total += ctype->mbdigits[cnt]->nbytes + 1;
iov[2 + elem + offset].iov_base = (char *) alloca (total);
iov[2 + elem + offset].iov_len = total;
cp = iov[2 + elem + offset].iov_base;
- for (cnt = elem - _NL_CTYPE_INDIGITS0_MB;
+ for (cnt = elem - _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS0_MB);
cnt < ctype->mbdigits_act; cnt += 10)
{
cp = mempcpy (cp, ctype->mbdigits[cnt]->bytes,
there might be more than one. We simply concatenate all of
them with a NUL byte following. The NUL byte wouldn't be
necessary but it makes it easier for the user. */
- cnt = elem - _NL_CTYPE_OUTDIGIT0_MB;
+ cnt = elem - _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT0_MB);
total = ctype->mboutdigits[cnt]->nbytes + 1;
iov[2 + elem + offset].iov_base = (char *) alloca (total);
iov[2 + elem + offset].iov_len = total;
*(char *) mempcpy (iov[2 + elem + offset].iov_base,
- ctype->mbdigits[cnt]->bytes,
- ctype->mbdigits[cnt]->nbytes) = '\0';
+ ctype->mboutdigits[cnt]->bytes,
+ ctype->mboutdigits[cnt]->nbytes) = '\0';
idx[elem + 1] = idx[elem] + iov[2 + elem + offset].iov_len;
break;
(uint32_t *) alloca (total * sizeof (uint32_t));
iov[2 + elem + offset].iov_len = total * sizeof (uint32_t);
- for (cnt = elem - _NL_CTYPE_INDIGITS0_WC;
+ for (cnt = elem - _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS0_WC);
cnt < ctype->wcdigits_act; cnt += 10)
((uint32_t *) iov[2 + elem + offset].iov_base)[cnt / 10]
= ctype->wcdigits[cnt];
break;
case _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT0_WC) ... _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT9_WC):
- cnt = elem - _NL_CTYPE_OUTDIGIT0_WC;
+ cnt = elem - _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT0_WC);
iov[2 + elem + offset].iov_base = &ctype->wcoutdigits[cnt];
iov[2 + elem + offset].iov_len = sizeof (uint32_t);
idx[elem + 1] = idx[elem] + iov[2 + elem + offset].iov_len;
charconv test
test (<A>,<B>);(<B>,<C>)
+
+outdigit <a>;<b>;<c>;<d>;<e>;<f>;<g>;<h>;<i>;<j>
+
END LC_CTYPE
LC_COLLATE
return result;
}
-
-/* Expected output:
-
-wcsrtombs(dst,&src,1,&state) -> 1, src = srcbuf+1, dst = buf+1
-wcsrtombs(dst,&src,1,&state) -> 1, src = srcbuf+2, dst = buf+2
-wcsrtombs(dst,&src,3,&state) -> 3, src = srcbuf+3, dst = buf+5
-wcsrtombs(dst,&src,1,&state) -> 1, src = srcbuf+3, dst = buf+6
-
-*/
-
-/* Output of a non-restarting implementation:
-
-wcsrtombs(dst,&src,1,&state) -> 1, src = srcbuf+1, dst = buf+1
-wcsrtombs(dst,&src,1,&state) -> 0, src = srcbuf+1, dst = buf+1
-wcsrtombs(dst,&src,3,&state) -> 3, src = srcbuf+2, dst = buf+4
-wcsrtombs(dst,&src,1,&state) -> 0, src = srcbuf+2, dst = buf+4
-wrong results
-
-*/
#include <locale.h>
#include <stdio.h>
+#include <wchar.h>
#include <wctype.h>
int
main (void)
{
+ char buf[30];
+ wchar_t wbuf[30];
wctrans_t t;
wint_t wch;
int errors = 0;
+ int len;
setlocale (LC_ALL, "");
if (wch != L'C')
errors = 1;
+ /* Test the output digit handling. */
+ swprintf (wbuf, sizeof (wbuf) / sizeof (wbuf[0]), L"%Id", 0x499602D2);
+ errors |= wcscmp (wbuf, L"bcdefghija") != 0;
+ len = wcslen (wbuf);
+ errors |= len != 10;
+ printf ("len = %d, wbuf = L\"%ls\"\n", len, wbuf);
+
+ snprintf (buf, sizeof buf, "%Id", 0x499602D2);
+ errors |= strcmp (buf, "bcdefghija") != 0;
+ len = strlen (buf);
+ errors |= len != 10;
+ printf ("len = %d, buf = \"%s\"\n", len, buf);
+
return errors;
}
exit 1
# Run the test program.
-LOCPATH=${common_objpfx}localedata LC_ALL=tt_TT \
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
+LOCPATH=${common_objpfx}localedata GCONV_PATH=${common_objpfx}iconvdata \
+LC_ALL=tt_TT ${common_objpfx}elf/ld.so --library-path $common_objpfx \
${common_objpfx}localedata/tst-trans > ${common_objpfx}localedata/tst-trans.out
exit $?