mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
0e16ecfa1e
* locale/programs/ld-ctype.c (ctype_finish): Take all characters from the input charset into account when generating the hash table. (allocate_arrays): Correct setting default width. Not all empty slots in the table are filled, only those not covert explicitly by the locale description and in the charset. * stdio-common/vfscanf.c: Make sure to always return WEOF and EOF for wide character version. For %C handling, test correct pointer variable for NULL. * wcsmbs/wctob.c: Handle WEOF special. * wcsmbs/wcwidth.h: 0xff in width array means invalid character. * wctype/wctype.h: Protect gcc-isms with __extension__. Avoid always-true test to avoid warning.
83 lines
1.6 KiB
C
83 lines
1.6 KiB
C
/*
|
|
TOWCTRANS: wint_t towctrans (wint_t wc, wctrans_t desc);
|
|
*/
|
|
|
|
#define TST_FUNCTION towctrans
|
|
|
|
#include "tsp_common.c"
|
|
#include "dat_towctrans.c"
|
|
|
|
|
|
int
|
|
tst_towctrans (FILE *fp, int debug_flg)
|
|
{
|
|
TST_DECL_VARS (wint_t);
|
|
wint_t wc;
|
|
const char *ts;
|
|
#if SHOJI_IS_RIGHT
|
|
int dummy=0;
|
|
#endif
|
|
wctrans_t wto;
|
|
|
|
TST_DO_TEST (towctrans)
|
|
{
|
|
TST_HEAD_LOCALE (towctrans, S_TOWCTRANS);
|
|
TST_DO_REC (towctrans)
|
|
{
|
|
TST_GET_ERRET (towctrans);
|
|
wc = TST_INPUT (towctrans).wc;
|
|
ts = TST_INPUT (towctrans).ts;
|
|
|
|
#if SHOJI_IS_RIGHT
|
|
if ((wto = wctrans (ts)) == (wctrans_t) 0)
|
|
{
|
|
#if 0
|
|
result (fp, C_IGNORED, S_TOWCTRANS, locale, rec+1, seq_num+1, 3,
|
|
"Skip this data because the wctrans object is not invalid.");
|
|
warn_count++;
|
|
continue;
|
|
#else
|
|
wto = &dummy; /* not good ... */
|
|
#endif
|
|
if (debug_flg)
|
|
{
|
|
fprintf (stdout, "towctrans() ------ wctrans() returnd 0.\n");
|
|
}
|
|
}
|
|
#else
|
|
wto = wctrans (ts);
|
|
#endif
|
|
|
|
TST_CLEAR_ERRNO;
|
|
ret = towctrans (wc, wto);
|
|
TST_SAVE_ERRNO;
|
|
|
|
if (debug_flg)
|
|
{
|
|
fprintf (stdout, "towctrans() [ %s : %d ] ret = 0x%x\n",
|
|
locale, rec+1, ret);
|
|
fprintf (stdout, " errno = %d\n",
|
|
errno_save);
|
|
}
|
|
|
|
TST_IF_RETURN (S_TOWCTRANS)
|
|
{
|
|
if (ret != 0)
|
|
{
|
|
result (fp, C_SUCCESS, S_TOWCTRANS, locale, rec+1,
|
|
seq_num+1, 3, MS_PASSED);
|
|
}
|
|
else
|
|
{
|
|
err_count++;
|
|
result (fp, C_FAILURE, S_TOWCTRANS, locale, rec+1,
|
|
seq_num+1, 3,
|
|
"the function returned 0, but should be non-zero");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return err_count;
|
|
}
|