diff options
110 files changed, 29302 insertions, 0 deletions
diff --git a/test/locale-mbwc/Makefile b/test/locale-mbwc/Makefile new file mode 100644 index 000000000..8f5a2dba8 --- /dev/null +++ b/test/locale-mbwc/Makefile @@ -0,0 +1,29 @@ +# uClibc locale tests +# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. +# tst_mbtowc tst_strcoll tst_strfmon tst_strxfrm \ + +TESTS := tst_iswalnum tst_iswalpha tst_iswcntrl \ + tst_iswctype tst_iswdigit tst_iswgraph \ + tst_iswlower tst_iswprint tst_iswpunct \ + tst_iswspace tst_iswupper tst_iswxdigit \ + tst_mblen tst_mbrlen tst_mbrtowc tst_mbsrtowcs \ + tst_mbstowcs tst_mbtowc tst_strcoll tst_strxfrm \ + tst_swscanf tst_towctrans tst_towlower \ + tst_towupper tst_wcrtomb tst_wcscat tst_wcschr \ + tst_wcscmp tst_wcscoll tst_wcscpy tst_wcscspn \ + tst_wcslen tst_wcsncat tst_wcsncmp tst_wcsncpy \ + tst_wcspbrk tst_wcsrtombs tst_wcsspn tst_wcsstr \ + tst_wcstod tst_wcstok tst_wcstombs tst_wcswidth \ + tst_wcsxfrm tst_wctob tst_wctomb tst_wctrans \ + tst_wctype tst_wcwidth tst_strfmon + + +# NOTE: For now disabled tst_strfmon to avoid build failure. +TESTS_DISABLED := tst_strfmon + +include ../Test.mak + +DODIFF_rint := 1 + +EXTRA_CFLAGS := -D__USE_GNU -fno-builtin + diff --git a/test/locale-mbwc/dat_isw-funcs.h b/test/locale-mbwc/dat_isw-funcs.h new file mode 100644 index 000000000..70aecb083 --- /dev/null +++ b/test/locale-mbwc/dat_isw-funcs.h @@ -0,0 +1,37 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_isw-funcs.h + * + * ISW*: int isw* (wint_t wc); + */ + +#include <errno.h> +#include <stdlib.h> +#include <wctype.h> +#include "tst_types.h" +#include "tgn_locdef.h" + +#define TST_ISW_LOC(FUNC, func) \ + TST_ISW## FUNC tst_isw## func ##_loc [] + +#define TST_ISW_REC(locale, func) \ + { Tisw## func, TST_LOC_## locale }, + +/* + * NOTE: + * Set ret_flg = 1, when a return value is expected to be 0 (FALSE). + * Set ret_flg = 0, when a return value is expected to be non-zero (TRUE). + * + * Since the functions return *non*-zero value for TRUE, can't + * compare an actual return value with an expected return value. + * Set the ret_flg=0 for TRUE cases and the tst_isw*() will check + * the non-zero value. + * + * { { WEOF }, { 0,1,0 } }, + * | | + * | ret_val: an expected return value + * ret_flg: if 1, compare an actual return value with the + * ret_val; if 0, the test program + * checks the actual return value. + */ diff --git a/test/locale-mbwc/dat_iswalnum.c b/test/locale-mbwc/dat_iswalnum.c new file mode 100644 index 000000000..509370359 --- /dev/null +++ b/test/locale-mbwc/dat_iswalnum.c @@ -0,0 +1,196 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_iswalnum.c + * + * ISW*: int iswalnum (wint_t wc); + */ + + +#include "dat_isw-funcs.h" + + +TST_ISW_LOC (ALNUM, alnum) = { + + { TST_ISW_REC (de, alnum) + { + { { 0x0080 }, { 0,1,0 } }, /* CTRL */ + { { 0x009F }, { 0,1,0 } }, /* CTRL */ + { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ + { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ + { { 0x00B0 }, { 0,1,0 } }, /* Degree */ + { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ + { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ + { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ + { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ + { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ + { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ + { { 0x00BB }, { 0,1,0 } }, /* >> */ + { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ + { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ + { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ + { { 0x00BF }, { 0,1,0 } }, /* UD ? */ + { { 0x00C0 }, { 0,0,0 } }, /* A Grave */ + { { 0x00D6 }, { 0,0,0 } }, /* O dia */ + { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ + { { 0x00D8 }, { 0,0,0 } }, /* O stroke */ + { { 0x00DF }, { 0,0,0 } }, /* small Sh */ + { { 0x00E0 }, { 0,0,0 } }, /* a grave */ + { { 0x00F6 }, { 0,0,0 } }, /* o dia */ + { { 0x00F7 }, { 0,1,0 } }, /* division */ + { { 0x00F8 }, { 0,0,0 } }, /* o stroke */ + { { 0x00FF }, { 0,0,0 } }, /* y dia */ + { .is_last = 1 } /* last element */ + } + }, + { TST_ISW_REC (de_UTF8, alnum) + { + { { 0x0080 }, { 0,1,0 } }, /* CTRL */ + { { 0x009F }, { 0,1,0 } }, /* CTRL */ + { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ + { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ + { { 0x00B0 }, { 0,1,0 } }, /* Degree */ + { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ + { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ + { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ + { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ + { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ + { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ + { { 0x00BB }, { 0,1,0 } }, /* >> */ + { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ + { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ + { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ + { { 0x00BF }, { 0,1,0 } }, /* UD ? */ + { { 0x00C0 }, { 0,0,0 } }, /* A Grave */ + { { 0x00D6 }, { 0,0,0 } }, /* O dia */ + { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ + { { 0x00D8 }, { 0,0,0 } }, /* O stroke */ + { { 0x00DF }, { 0,0,0 } }, /* small Sh */ + { { 0x00E0 }, { 0,0,0 } }, /* a grave */ + { { 0x00F6 }, { 0,0,0 } }, /* o dia */ + { { 0x00F7 }, { 0,1,0 } }, /* division */ + { { 0x00F8 }, { 0,0,0 } }, /* o stroke */ + { { 0x00FF }, { 0,0,0 } }, /* y dia */ + { .is_last = 1 } /* last element */ + } + }, + { TST_ISW_REC (enUS, alnum) + { + { { WEOF }, { 0,1,0 } }, + { { 0x0000 }, { 0,1,0 } }, + { { 0x001F }, { 0,1,0 } }, + { { 0x0020 }, { 0,1,0 } }, + { { 0x0021 }, { 0,1,0 } }, + { { 0x002F }, { 0,1,0 } }, + { { 0x0030 }, { 0,0,0 } }, + { { 0x0039 }, { 0,0,0 } }, + { { 0x003A }, { 0,1,0 } }, + { { 0x0040 }, { 0,1,0 } }, + { { 0x0041 }, { 0,0,0 } }, + { { 0x005A }, { 0,0,0 } }, + { { 0x005B }, { 0,1,0 } }, + { { 0x0060 }, { 0,1,0 } }, + { { 0x0061 }, { 0,0,0 } }, + { { 0x007A }, { 0,0,0 } }, + { { 0x007B }, { 0,1,0 } }, + { { 0x007E }, { 0,1,0 } }, + { { 0x007F }, { 0,1,0 } }, + { { 0x0080 }, { 0,1,0 } }, + { .is_last = 1 } /* last element */ + } + }, +#if 0 + { TST_ISW_REC (eucJP, alnum) +#else + { TST_ISW_REC (ja_UTF8, alnum) +#endif + { + { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ + { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ +#ifdef SHOJI_IS_RIGHT + { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ +#else + { { 0x3029 }, { 0,0,0 } }, /* Hangzhou NUM9 */ +#endif + { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ + { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ + { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ +#ifdef SHOJI_IS_RIGHT + { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ + { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ +#else + { { 0x3041 }, { 0,0,0 } }, /* HIRAGANA a */ + { { 0x3094 }, { 0,0,0 } }, /* HIRAGANA u" */ +#endif + { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ +#ifdef SHOJI_IS_RIGHT + { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ + { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ + { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ +#else + { { 0x309E }, { 0,0,0 } }, /* ITERATION MARK */ + { { 0x30A1 }, { 0,0,0 } }, /* KATAKANA a */ + { { 0x30FA }, { 0,0,0 } }, /* KATAKANA wo" */ +#endif + { { 0x30FB }, { 0,1,0 } }, /* KATAKANA MID.DOT */ +#ifdef SHOJI_IS_RIGHT + { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ +#else + { { 0x30FE }, { 0,0,0 } }, /* KATAKANA ITERATION */ +#endif + { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ + { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ +#ifdef SHOJI_IS_RIGHT + { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ +#else + { { 0x4E00 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E05 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E06 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x4E07 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x4FFF }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9000 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9006 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9007 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA5 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#endif + { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0xFF0F }, { 0,1,0 } }, /* FULL SLASH */ + { { 0xFF19 }, { 0,0,0 } }, /* FULL 9 */ + { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ + { { 0xFF3A }, { 0,0,0 } }, /* FULL Z */ + { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A }, { 0,0,0 } }, /* FULL z */ + { { 0xFF5E }, { 0,1,0 } }, /* FULL ~ (tilde) */ + { { 0xFF61 }, { 0,1,0 } }, /* HALF IDEO.STOP. . */ + { { 0xFF65 }, { 0,1,0 } }, /* HALF KATA MID.DOT */ +#ifdef SHOJI_IS_RIGHT + { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ + { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ + { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ + { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ + { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ +#else + { { 0xFF66 }, { 0,0,0 } }, /* HALF KATA WO */ + { { 0xFF6F }, { 0,0,0 } }, /* HALF KATA tu */ + { { 0xFF70 }, { 0,0,0 } }, /* HALF KATA PL - */ + { { 0xFF71 }, { 0,0,0 } }, /* HALF KATA A */ + { { 0xFF9E }, { 0,0,0 } }, /* HALF KATA MI */ +#endif + { .is_last = 1 } /* last element */ + } + }, + { TST_ISW_REC (end, alnum) } +}; diff --git a/test/locale-mbwc/dat_iswalpha.c b/test/locale-mbwc/dat_iswalpha.c new file mode 100644 index 000000000..c2b59fbf9 --- /dev/null +++ b/test/locale-mbwc/dat_iswalpha.c @@ -0,0 +1,169 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_iswalpha.c + * + * ISW*: int iswalpha (wint_t wc); + */ + + +#include "dat_isw-funcs.h" + + +TST_ISW_LOC (ALPHA, alpha) = { + + { TST_ISW_REC (de, alpha) + { + { { 0x0080 }, { 0,1,0 } }, /* CTRL */ + { { 0x009F }, { 0,1,0 } }, /* CTRL */ + { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ + { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ + { { 0x00B0 }, { 0,1,0 } }, /* Degree */ + { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ + { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ + { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ + { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ + { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ + { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ + { { 0x00BB }, { 0,1,0 } }, /* >> */ + { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ + { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ + { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ + { { 0x00BF }, { 0,1,0 } }, /* UD ? */ + { { 0x00C0 }, { 0,0,0 } }, /* A Grave */ + { { 0x00D6 }, { 0,0,0 } }, /* O dia */ + { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ + { { 0x00D8 }, { 0,0,0 } }, /* O stroke */ + { { 0x00DF }, { 0,0,0 } }, /* small Sh */ + { { 0x00E0 }, { 0,0,0 } }, /* a grave */ + { { 0x00F6 }, { 0,0,0 } }, /* o dia */ + { { 0x00F7 }, { 0,1,0 } }, /* division */ + { { 0x00F8 }, { 0,0,0 } }, /* o stroke */ + { { 0x00FF }, { 0,0,0 } }, /* y dia */ + { .is_last = 1 } /* last element */ + } + }, + { TST_ISW_REC (enUS, alpha) + { + { { WEOF }, { 0,1,0 } }, + { { 0x0000 }, { 0,1,0 } }, + { { 0x001F }, { 0,1,0 } }, + { { 0x0020 }, { 0,1,0 } }, + { { 0x0021 }, { 0,1,0 } }, + { { 0x002F }, { 0,1,0 } }, + { { 0x0030 }, { 0,1,0 } }, + { { 0x0039 }, { 0,1,0 } }, + { { 0x003A }, { 0,1,0 } }, + { { 0x0040 }, { 0,1,0 } }, + { { 0x0041 }, { 0,0,0 } }, + { { 0x005A }, { 0,0,0 } }, + { { 0x005B }, { 0,1,0 } }, + { { 0x0060 }, { 0,1,0 } }, + { { 0x0061 }, { 0,0,0 } }, + { { 0x007A }, { 0,0,0 } }, + { { 0x007B }, { 0,1,0 } }, + { { 0x007E }, { 0,1,0 } }, + { { 0x007F }, { 0,1,0 } }, + { { 0x0080 }, { 0,1,0 } }, /* 20 */ + { .is_last = 1 } /* last element */ + } + }, +#if 0 + { TST_ISW_REC (eucJP, alpha) +#else + { TST_ISW_REC (ja_UTF8, alpha) +#endif + { + { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ + { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ +#ifdef SHOJI_IS_RIGHT + { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ +#else + { { 0x3029 }, { 0,0,0 } }, /* Hangzhou NUM9 */ +#endif + { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ + { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ + { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ +#ifdef SHOJI_IS_RIGHT + { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ + { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ +#else + { { 0x3041 }, { 0,0,0 } }, /* HIRAGANA a */ + { { 0x3094 }, { 0,0,0 } }, /* HIRAGANA u" */ +#endif + { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ +#ifdef SHOJI_IS_RIGHT + { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ + { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ + { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ +#else + { { 0x309E }, { 0,0,0 } }, /* ITERATION MARK */ + { { 0x30A1 }, { 0,0,0 } }, /* KATAKANA a */ + { { 0x30FA }, { 0,0,0 } }, /* KATAKANA wo" */ +#endif + { { 0x30FB }, { 0,1,0 } }, /* KATAKANA MID.DOT */ +#ifdef SHOJI_IS_RIGHT + { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ +#else + { { 0x30FE }, { 0,0,0 } }, /* KATAKANA ITERATION */ +#endif + { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ + { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ +#ifdef SHOJI_IS_RIGHT + { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ +#else + { { 0x4E00 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E05 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E06 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x4E07 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x4FFF }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9000 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9006 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9007 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA5 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#endif + { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0xFF0F }, { 0,1,0 } }, /* FULL SLASH */ +#ifdef SHOJI_IS_RIGHT + { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ +#else + { { 0xFF19 }, { 0,0,0 } }, /* FULL 9 */ +#endif + { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ + { { 0xFF3A }, { 0,0,0 } }, /* FULL Z */ + { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A }, { 0,0,0 } }, /* FULL z */ + { { 0xFF5E }, { 0,1,0 } }, /* FULL ~ (tilde) */ + { { 0xFF61 }, { 0,1,0 } }, /* HALF IDEO.STOP. . */ + { { 0xFF65 }, { 0,1,0 } }, /* HALF KATA MID.DOT */ +#ifdef SHOJI_IS_RIGHT + { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ + { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ + { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ + { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ + { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ +#else + { { 0xFF66 }, { 0,0,0 } }, /* HALF KATA WO */ + { { 0xFF6F }, { 0,0,0 } }, /* HALF KATA tu */ + { { 0xFF70 }, { 0,0,0 } }, /* HALF KATA PL - */ + { { 0xFF71 }, { 0,0,0 } }, /* HALF KATA A */ + { { 0xFF9E }, { 0,0,0 } }, /* HALF KATA MI */ +#endif + { .is_last = 1 } /* last element */ + } + }, + { TST_ISW_REC (end, alpha) } +}; diff --git a/test/locale-mbwc/dat_iswcntrl.c b/test/locale-mbwc/dat_iswcntrl.c new file mode 100644 index 000000000..e6ec685ed --- /dev/null +++ b/test/locale-mbwc/dat_iswcntrl.c @@ -0,0 +1,125 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_iswcntrl.c + * + * ISW*: int iswcntrl (wint_t wc); + */ + + +#include "dat_isw-funcs.h" + + +TST_ISW_LOC (CNTRL, cntrl) = { + + { TST_ISW_REC (de, cntrl) + { + { { 0x0080 }, { 0,0,0 } }, /* CTRL */ + { { 0x009F }, { 0,0,0 } }, /* CTRL */ + { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ + { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ + { { 0x00B0 }, { 0,1,0 } }, /* Degree */ + { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ + { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ + { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ + { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ + { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ + { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ + { { 0x00BB }, { 0,1,0 } }, /* >> */ + { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ + { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ + { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ + { { 0x00BF }, { 0,1,0 } }, /* UD ? */ + { { 0x00C0 }, { 0,1,0 } }, /* A Grave */ + { { 0x00D6 }, { 0,1,0 } }, /* O dia */ + { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ + { { 0x00D8 }, { 0,1,0 } }, /* O stroke */ + { { 0x00DF }, { 0,1,0 } }, /* small Sh */ + { { 0x00E0 }, { 0,1,0 } }, /* a grave */ + { { 0x00F6 }, { 0,1,0 } }, /* o dia */ + { { 0x00F7 }, { 0,1,0 } }, /* division */ + { { 0x00F8 }, { 0,1,0 } }, /* o stroke */ + { { 0x00FF }, { 0,1,0 } }, /* y dia */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (enUS, cntrl) + { + { { WEOF }, { 0,1,0 } }, + { { 0x0000 }, { 0,0,0 } }, + { { 0x001F }, { 0,0,0 } }, + { { 0x0020 }, { 0,1,0 } }, + { { 0x0021 }, { 0,1,0 } }, + { { 0x002F }, { 0,1,0 } }, + { { 0x0030 }, { 0,1,0 } }, + { { 0x0039 }, { 0,1,0 } }, + { { 0x003A }, { 0,1,0 } }, + { { 0x0040 }, { 0,1,0 } }, + { { 0x0041 }, { 0,1,0 } }, + { { 0x005A }, { 0,1,0 } }, + { { 0x005B }, { 0,1,0 } }, + { { 0x0060 }, { 0,1,0 } }, + { { 0x0061 }, { 0,1,0 } }, + { { 0x007A }, { 0,1,0 } }, + { { 0x007B }, { 0,1,0 } }, + { { 0x007E }, { 0,1,0 } }, + { { 0x007F }, { 0,0,0 } }, + { { 0x0080 }, { 0,1,0 } }, + { .is_last = 1 } /* Last element. */ + } + }, +#if 0 + { TST_ISW_REC (eucJP, cntrl) +#else + { TST_ISW_REC (ja_UTF8, cntrl) +#endif + { + { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ + { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ + { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ + { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ + { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ + { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ + { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ + { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ + { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ + { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ + { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ + { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ + { { 0x30FB }, { 0,1,0 } }, /* KATAKANA MID.DOT */ + { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ + { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ + { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ + { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0xFF0F }, { 0,1,0 } }, /* FULL SLASH */ + { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ + { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ + { { 0xFF3A }, { 0,1,0 } }, /* FULL Z */ + { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A }, { 0,1,0 } }, /* FULL z */ + { { 0xFF5E }, { 0,1,0 } }, /* FULL ~ (tilde) */ + { { 0xFF61 }, { 0,1,0 } }, /* HALF IDEO.STOP. . */ + { { 0xFF65 }, { 0,1,0 } }, /* HALF KATA MID.DOT */ + { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ + { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ + { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ + { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ + { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC(end, cntrl) } +}; diff --git a/test/locale-mbwc/dat_iswctype.c b/test/locale-mbwc/dat_iswctype.c new file mode 100644 index 000000000..6448b328f --- /dev/null +++ b/test/locale-mbwc/dat_iswctype.c @@ -0,0 +1,667 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_iswctype.c + * + * ISWCTYPE: int iswctype( wint_t wc, wctype_t charclass ); + */ + +#include <errno.h> +#include <stdlib.h> +#include <wctype.h> +#include "tst_types.h" +#include "tgn_locdef.h" + +/* + * NOTE: + * Set ret_flg = 1, when a return value is expected to be 0 (FALSE). + * Set ret_flg = 0, when a return value is expected to be non-zero (TRUE). + * + * Since the functions return *non*-zero value for TRUE, can't + * compare an actual return value with an expected return value. + * Set the ret_flg=0 for TRUE cases and the tst_isw*() will check + * the non-zero value. + * + * { { WEOF }, { 0,1,0 } }, + * | | + * | ret_val: an expected return value + * ret_flg: if 1, compare an actual return value with the + * ret_val; if 0, the test program checks + * the actual return value. + */ + +TST_ISWCTYPE tst_iswctype_loc [] = { + { + { Tiswctype, TST_LOC_de }, + { + { { 0x009F, "alnum" }, { 0,1,0 } }, /* CTRL */ + { { 0x00A0, "alnum" }, { 0,1,0 } }, /* NB SPACE */ + { { 0x00A1, "alnum" }, { 0,1,0 } }, /* UD ! */ + { { 0x00B1, "alnum" }, { 0,1,0 } }, /* +- sign */ + { { 0x00B3, "alnum" }, { 0,1,0 } }, /* SUP 3 */ + { { 0x00B4, "alnum" }, { 0,1,0 } }, /* ACUTE */ + { { 0x00BB, "alnum" }, { 0,1,0 } }, /* >> */ + { { 0x00BE, "alnum" }, { 0,1,0 } }, /* 3/4 */ + { { 0x00BF, "alnum" }, { 0,1,0 } }, /* UD ? */ + { { 0x00C0, "alnum" }, { 0,0,0 } }, /* A Grave */ + { { 0x00D6, "alnum" }, { 0,0,0 } }, /* O dia */ + { { 0x00D7, "alnum" }, { 0,1,0 } }, /* multipl. */ + { { 0x00D8, "alnum" }, { 0,0,0 } }, /* O stroke */ + { { 0x00DF, "alnum" }, { 0,0,0 } }, /* small Sh */ + { { 0x00E0, "alnum" }, { 0,0,0 } }, /* a grave */ + { { 0x00F6, "alnum" }, { 0,0,0 } }, /* o dia */ + { { 0x00F7, "alnum" }, { 0,1,0 } }, /* division */ + { { 0x00F8, "alnum" }, { 0,0,0 } }, /* o stroke */ + { { 0x00FF, "alnum" }, { 0,0,0 } }, /* y dia */ + { { 0x0080, "alpha" }, { 0,1,0 } }, /* CTRL */ + { { 0x00A0, "alpha" }, { 0,1,0 } }, /* NB SPACE */ + { { 0x00A1, "alpha" }, { 0,1,0 } }, /* UD ! */ + { { 0x00B1, "alpha" }, { 0,1,0 } }, /* +- sign */ + { { 0x00B4, "alpha" }, { 0,1,0 } }, /* ACUTE */ + { { 0x00B8, "alpha" }, { 0,1,0 } }, /* CEDILLA */ + { { 0x00B9, "alpha" }, { 0,1,0 } }, /* SUP 1 */ + { { 0x00BB, "alpha" }, { 0,1,0 } }, /* >> */ + { { 0x00BE, "alpha" }, { 0,1,0 } }, /* 3/4 */ + { { 0x00BF, "alpha" }, { 0,1,0 } }, /* UD ? */ + { { 0x00C0, "alpha" }, { 0,0,0 } }, /* A Grave */ + { { 0x00D6, "alpha" }, { 0,0,0 } }, /* O dia */ + { { 0x00D7, "alpha" }, { 0,1,0 } }, /* multipl. */ + { { 0x00D8, "alpha" }, { 0,0,0 } }, /* O stroke */ + { { 0x00DF, "alpha" }, { 0,0,0 } }, /* small Sh */ + { { 0x00E0, "alpha" }, { 0,0,0 } }, /* a grave */ + { { 0x00F6, "alpha" }, { 0,0,0 } }, /* o dia */ + { { 0x00F7, "alpha" }, { 0,1,0 } }, /* division */ + { { 0x00F8, "alpha" }, { 0,0,0 } }, /* o stroke */ + { { 0x00FF, "alpha" }, { 0,0,0 } }, /* y dia */ + { { 0x0080, "cntrl" }, { 0,0,0 } }, /* CTRL */ + { { 0x009F, "cntrl" }, { 0,0,0 } }, /* CTRL */ + { { 0x00A0, "cntrl" }, { 0,1,0 } }, /* NB SPACE */ + { { 0x00F6, "cntrl" }, { 0,1,0 } }, /* o dia */ + { { 0x00FF, "cntrl" }, { 0,1,0 } }, /* y dia */ + { { 0x00B9, "digit" }, { 0,1,0 } }, /* SUP 1 */ + { { 0x00BE, "digit" }, { 0,1,0 } }, /* 3/4 */ + { { 0x009F, "graph" }, { 0,1,0 } }, /* CTRL */ +#ifdef SHOJI_IS_RIGHT + { { 0x00A0, "graph" }, { 0,1,0 } }, /* NB SPACE */ +#else + { { 0x00A0, "graph" }, { 0,0,0 } }, /* NB SPACE */ +#endif + { { 0x00A1, "graph" }, { 0,0,0 } }, /* UD ! */ + { { 0x00B1, "graph" }, { 0,0,0 } }, /* +- sign */ + { { 0x00B3, "graph" }, { 0,0,0 } }, /* SUP 3 */ + { { 0x00B4, "graph" }, { 0,0,0 } }, /* ACUTE */ + { { 0x00BB, "graph" }, { 0,0,0 } }, /* >> */ + { { 0x00BE, "graph" }, { 0,0,0 } }, /* 3/4 */ + { { 0x00C0, "graph" }, { 0,0,0 } }, /* A Grave */ + { { 0x00D6, "graph" }, { 0,0,0 } }, /* O dia */ + { { 0x00D7, "graph" }, { 0,0,0 } }, /* multipl. */ + { { 0x00D8, "graph" }, { 0,0,0 } }, /* O stroke */ + { { 0x00DF, "graph" }, { 0,0,0 } }, /* small Sh */ + { { 0x00F7, "graph" }, { 0,0,0 } }, /* division */ + { { 0x00F8, "graph" }, { 0,0,0 } }, /* o stroke */ + { { 0x00FF, "graph" }, { 0,0,0 } }, /* y dia */ + { { 0x009F, "print" }, { 0,1,0 } }, /* CTRL */ +#ifdef SHOJI_IS_RIGHT + { { 0x00A0, "print" }, { 0,1,0 } }, /* NB SPACE */ +#else + { { 0x00A0, "print" }, { 0,0,0 } }, /* NB SPACE */ +#endif + { { 0x00A1, "print" }, { 0,0,0 } }, /* UD ! */ + { { 0x00B1, "print" }, { 0,0,0 } }, /* +- sign */ + { { 0x00B4, "print" }, { 0,0,0 } }, /* ACUTE */ + { { 0x00B8, "print" }, { 0,0,0 } }, /* CEDILLA */ + { { 0x00B9, "print" }, { 0,0,0 } }, /* SUP 1 */ + { { 0x00BB, "print" }, { 0,0,0 } }, /* >> */ + { { 0x00BE, "print" }, { 0,0,0 } }, /* 3/4 */ + { { 0x00C0, "print" }, { 0,0,0 } }, /* A Grave */ + { { 0x00DF, "print" }, { 0,0,0 } }, /* small Sh */ + { { 0x00F6, "print" }, { 0,0,0 } }, /* o dia */ + { { 0x00F7, "print" }, { 0,0,0 } }, /* division */ + { { 0x00F8, "print" }, { 0,0,0 } }, /* o stroke */ + { { 0x00FF, "print" }, { 0,0,0 } }, /* y dia */ + { { 0x009F, "punct" }, { 0,1,0 } }, /* CTRL */ +#ifdef SHOJI_IS_RIGHT + { { 0x00A0, "punct" }, { 0,1,0 } }, /* NB SPACE */ +#else + { { 0x00A0, "punct" }, { 0,0,0 } }, /* NB SPACE */ +#endif + { { 0x00A1, "punct" }, { 0,0,0 } }, /* UD ! */ + { { 0x00B0, "punct" }, { 0,0,0 } }, /* Degree */ + { { 0x00B1, "punct" }, { 0,0,0 } }, /* +- sign */ + { { 0x00B2, "punct" }, { 0,0,0 } }, /* SUP 2 */ + { { 0x00B3, "punct" }, { 0,0,0 } }, /* SUP 3 */ + { { 0x00B4, "punct" }, { 0,0,0 } }, /* ACUTE */ + { { 0x00B8, "punct" }, { 0,0,0 } }, /* CEDILLA */ + { { 0x00B9, "punct" }, { 0,0,0 } }, /* SUP 1 */ + { { 0x00BB, "punct" }, { 0,0,0 } }, /* >> */ + { { 0x00BC, "punct" }, { 0,0,0 } }, /* 1/4 */ + { { 0x00BD, "punct" }, { 0,0,0 } }, /* 1/2 */ + { { 0x00BE, "punct" }, { 0,0,0 } }, /* 3/4 */ + { { 0x00BF, "punct" }, { 0,0,0 } }, /* UD ? */ + { { 0x00C0, "punct" }, { 0,1,0 } }, /* A Grave */ + { { 0x00D7, "punct" }, { 0,0,0 } }, /* multipl. */ + { { 0x00DF, "punct" }, { 0,1,0 } }, /* small Sh */ + { { 0x00F6, "punct" }, { 0,1,0 } }, /* o dia */ + { { 0x00F7, "punct" }, { 0,0,0 } }, /* division */ + { { 0x00FF, "punct" }, { 0,1,0 } }, /* y dia */ + { { 0x009F, "space" }, { 0,1,0 } }, /* CTRL */ + { { 0x00A0, "space" }, { 0,1,0 } }, /* NB SPACE */ + { { 0x00A1, "space" }, { 0,1,0 } }, /* UD ! */ + { { 0x00B1, "space" }, { 0,1,0 } }, /* +- sign */ + { { 0x00F8, "space" }, { 0,1,0 } }, /* o stroke */ + { { 0x00B3, "lower" }, { 0,1,0 } }, /* SUP 3 */ + { { 0x00B8, "lower" }, { 0,1,0 } }, /* CEDILLA */ + { { 0x00BE, "lower" }, { 0,1,0 } }, /* 3/4 */ + { { 0x00C0, "lower" }, { 0,1,0 } }, /* A Grave */ + { { 0x00D6, "lower" }, { 0,1,0 } }, /* O dia */ + { { 0x00D8, "lower" }, { 0,1,0 } }, /* O stroke */ + { { 0x00DF, "lower" }, { 0,0,0 } }, /* small Sh */ + { { 0x00E0, "lower" }, { 0,0,0 } }, /* a grave */ + { { 0x00F6, "lower" }, { 0,0,0 } }, /* o dia */ + { { 0x00F7, "lower" }, { 0,1,0 } }, /* division */ + { { 0x00F8, "lower" }, { 0,0,0 } }, /* o stroke */ + { { 0x00FF, "lower" }, { 0,0,0 } }, /* y dia */ + { { 0x00B4, "upper" }, { 0,1,0 } }, /* ACUTE */ + { { 0x00B8, "upper" }, { 0,1,0 } }, /* CEDILLA */ + { { 0x00B9, "upper" }, { 0,1,0 } }, /* SUP 1 */ + { { 0x00BE, "upper" }, { 0,1,0 } }, /* 3/4 */ + { { 0x00BF, "upper" }, { 0,1,0 } }, /* UD ? */ + { { 0x00C0, "upper" }, { 0,0,0 } }, /* A Grave */ + { { 0x00D6, "upper" }, { 0,0,0 } }, /* O dia */ + { { 0x00D7, "upper" }, { 0,1,0 } }, /* multipl. */ + { { 0x00D8, "upper" }, { 0,0,0 } }, /* O stroke */ + { { 0x00DF, "upper" }, { 0,1,0 } }, /* small Sh */ + { { 0x00FF, "upper" }, { 0,1,0 } }, /* y dia */ + { { 0x00B9, "xdigit" }, { 0,1,0 } }, /* SUP 1 */ + { { 0x00BC, "xdigit" }, { 0,1,0 } }, /* 1/4 */ + { .is_last = 1 } + } + }, + { + { Tiswctype, TST_LOC_enUS }, + { + { { WEOF, "alnum" }, { 0,1,0 } }, + { { 0x0000, "alnum" }, { 0,1,0 } }, + { { 0x001F, "alnum" }, { 0,1,0 } }, + { { 0x0020, "alnum" }, { 0,1,0 } }, + { { 0x0021, "alnum" }, { 0,1,0 } }, + { { 0x002F, "alnum" }, { 0,1,0 } }, + { { 0x0030, "alnum" }, { 0,0,0 } }, + { { 0x0039, "alnum" }, { 0,0,0 } }, + { { 0x003A, "alnum" }, { 0,1,0 } }, + { { 0x0040, "alnum" }, { 0,1,0 } }, + { { 0x0041, "alnum" }, { 0,0,0 } }, + { { 0x005A, "alnum" }, { 0,0,0 } }, + { { 0x005B, "alnum" }, { 0,1,0 } }, + { { 0x0060, "alnum" }, { 0,1,0 } }, + { { 0x0061, "alnum" }, { 0,0,0 } }, + { { 0x007A, "alnum" }, { 0,0,0 } }, + { { 0x007B, "alnum" }, { 0,1,0 } }, + { { 0x007E, "alnum" }, { 0,1,0 } }, + { { 0x007F, "alnum" }, { 0,1,0 } }, + { { 0x0080, "alnum" }, { 0,1,0 } }, + { { 0x0000, "alpha" }, { 0,1,0 } }, + { { 0x001F, "alpha" }, { 0,1,0 } }, + { { 0x0020, "alpha" }, { 0,1,0 } }, + { { 0x0021, "alpha" }, { 0,1,0 } }, + { { 0x002F, "alpha" }, { 0,1,0 } }, + { { 0x0030, "alpha" }, { 0,1,0 } }, + { { 0x0039, "alpha" }, { 0,1,0 } }, + { { 0x003A, "alpha" }, { 0,1,0 } }, + { { 0x0040, "alpha" }, { 0,1,0 } }, + { { 0x0041, "alpha" }, { 0,0,0 } }, + { { 0x005A, "alpha" }, { 0,0,0 } }, + { { 0x005B, "alpha" }, { 0,1,0 } }, + { { 0x0060, "alpha" }, { 0,1,0 } }, + { { 0x0061, "alpha" }, { 0,0,0 } }, + { { 0x007A, "alpha" }, { 0,0,0 } }, + { { 0x007B, "alpha" }, { 0,1,0 } }, + { { 0x007E, "alpha" }, { 0,1,0 } }, + { { 0x007F, "alpha" }, { 0,1,0 } }, + { { 0x0080, "alpha" }, { 0,1,0 } }, + { { 0x0009, "blank" }, { 0,0,0 } }, + { { 0x000B, "blank" }, { 0,1,0 } }, + { { 0x0020, "blank" }, { 0,0,0 } }, + { { 0x0000, "cntrl" }, { 0,0,0 } }, + { { 0x001F, "cntrl" }, { 0,0,0 } }, + { { 0x0020, "cntrl" }, { 0,1,0 } }, + { { 0x0021, "cntrl" }, { 0,1,0 } }, + { { 0x002F, "cntrl" }, { 0,1,0 } }, + { { 0x0030, "cntrl" }, { 0,1,0 } }, + { { 0x0039, "cntrl" }, { 0,1,0 } }, + { { 0x003A, "cntrl" }, { 0,1,0 } }, + { { 0x0040, "cntrl" }, { 0,1,0 } }, + { { 0x0041, "cntrl" }, { 0,1,0 } }, + { { 0x005A, "cntrl" }, { 0,1,0 } }, + { { 0x005B, "cntrl" }, { 0,1,0 } }, + { { 0x0060, "cntrl" }, { 0,1,0 } }, + { { 0x0061, "cntrl" }, { 0,1,0 } }, + { { 0x007A, "cntrl" }, { 0,1,0 } }, + { { 0x007B, "cntrl" }, { 0,1,0 } }, + { { 0x007E, "cntrl" }, { 0,1,0 } }, + { { 0x007F, "cntrl" }, { 0,0,0 } }, + { { 0x0080, "cntrl" }, { 0,0,0 } }, + { { 0x0000, "digit" }, { 0,1,0 } }, + { { 0x001F, "digit" }, { 0,1,0 } }, + { { 0x0020, "digit" }, { 0,1,0 } }, + { { 0x0021, "digit" }, { 0,1,0 } }, + { { 0x002F, "digit" }, { 0,1,0 } }, + { { 0x0030, "digit" }, { 0,0,0 } }, + { { 0x0039, "digit" }, { 0,0,0 } }, + { { 0x003A, "digit" }, { 0,1,0 } }, + { { 0x0040, "digit" }, { 0,1,0 } }, + { { 0x0041, "digit" }, { 0,1,0 } }, + { { 0x005A, "digit" }, { 0,1,0 } }, + { { 0x005B, "digit" }, { 0,1,0 } }, + { { 0x0060, "digit" }, { 0,1,0 } }, + { { 0x0061, "digit" }, { 0,1,0 } }, + { { 0x007A, "digit" }, { 0,1,0 } }, + { { 0x007B, "digit" }, { 0,1,0 } }, + { { 0x007E, "digit" }, { 0,1,0 } }, + { { 0x007F, "digit" }, { 0,1,0 } }, + { { 0x0080, "digit" }, { 0,1,0 } }, + { { 0x0000, "graph" }, { 0,1,0 } }, + { { 0x001F, "graph" }, { 0,1,0 } }, + { { 0x0020, "graph" }, { 0,1,0 } }, + { { 0x0021, "graph" }, { 0,0,0 } }, + { { 0x002F, "graph" }, { 0,0,0 } }, + { { 0x0030, "graph" }, { 0,0,0 } }, + { { 0x0039, "graph" }, { 0,0,0 } }, + { { 0x003A, "graph" }, { 0,0,0 } }, + { { 0x0040, "graph" }, { 0,0,0 } }, + { { 0x0041, "graph" }, { 0,0,0 } }, + { { 0x005A, "graph" }, { 0,0,0 } }, + { { 0x005B, "graph" }, { 0,0,0 } }, + { { 0x0060, "graph" }, { 0,0,0 } }, + { { 0x0061, "graph" }, { 0,0,0 } }, + { { 0x007A, "graph" }, { 0,0,0 } }, + { { 0x007B, "graph" }, { 0,0,0 } }, + { { 0x007E, "graph" }, { 0,0,0 } }, + { { 0x007F, "graph" }, { 0,1,0 } }, + { { 0x0080, "graph" }, { 0,1,0 } }, + { { 0x0000, "print" }, { 0,1,0 } }, + { { 0x001F, "print" }, { 0,1,0 } }, + { { 0x0020, "print" }, { 0,0,0 } }, + { { 0x0021, "print" }, { 0,0,0 } }, + { { 0x002F, "print" }, { 0,0,0 } }, + { { 0x0030, "print" }, { 0,0,0 } }, + { { 0x0039, "print" }, { 0,0,0 } }, + { { 0x003A, "print" }, { 0,0,0 } }, + { { 0x0040, "print" }, { 0,0,0 } }, + { { 0x0041, "print" }, { 0,0,0 } }, + { { 0x005A, "print" }, { 0,0,0 } }, + { { 0x005B, "print" }, { 0,0,0 } }, + { { 0x0060, "print" }, { 0,0,0 } }, + { { 0x0061, "print" }, { 0,0,0 } }, + { { 0x007A, "print" }, { 0,0,0 } }, + { { 0x007B, "print" }, { 0,0,0 } }, + { { 0x007E, "print" }, { 0,0,0 } }, + { { 0x007F, "print" }, { 0,1,0 } }, + { { 0x0080, "print" }, { 0,1,0 } }, + { { 0x0000, "punct" }, { 0,1,0 } }, + { { 0x001F, "punct" }, { 0,1,0 } }, + { { 0x0020, "punct" }, { 0,1,0 } }, + { { 0x0021, "punct" }, { 0,0,0 } }, + { { 0x002F, "punct" }, { 0,0,0 } }, + { { 0x0030, "punct" }, { 0,1,0 } }, + { { 0x0039, "punct" }, { 0,1,0 } }, + { { 0x003A, "punct" }, { 0,0,0 } }, + { { 0x0040, "punct" }, { 0,0,0 } }, + { { 0x0041, "punct" }, { 0,1,0 } }, + { { 0x005A, "punct" }, { 0,1,0 } }, + { { 0x005B, "punct" }, { 0,0,0 } }, + { { 0x0060, "punct" }, { 0,0,0 } }, + { { 0x0061, "punct" }, { 0,1,0 } }, + { { 0x007A, "punct" }, { 0,1,0 } }, + { { 0x007B, "punct" }, { 0,0,0 } }, + { { 0x007E, "punct" }, { 0,0,0 } }, + { { 0x007F, "punct" }, { 0,1,0 } }, + { { 0x0080, "punct" }, { 0,1,0 } }, + { { 0x0000, "space" }, { 0,1,0 } }, + { { 0x001F, "space" }, { 0,1,0 } }, + { { 0x0020, "space" }, { 0,0,0 } }, + { { 0x0021, "space" }, { 0,1,0 } }, + { { 0x002F, "space" }, { 0,1,0 } }, + { { 0x007E, "space" }, { 0,1,0 } }, + { { 0x007F, "space" }, { 0,1,0 } }, + { { 0x0080, "space" }, { 0,1,0 } }, + { { 0x0000, "lower" }, { 0,1,0 } }, + { { 0x001F, "lower" }, { 0,1,0 } }, + { { 0x0020, "lower" }, { 0,1,0 } }, + { { 0x0021, "lower" }, { 0,1,0 } }, + { { 0x002F, "lower" }, { 0,1,0 } }, + { { 0x0030, "lower" }, { 0,1,0 } }, + { { 0x0039, "lower" }, { 0,1,0 } }, + { { 0x003A, "lower" }, { 0,1,0 } }, + { { 0x0040, "lower" }, { 0,1,0 } }, + { { 0x0041, "lower" }, { 0,1,0 } }, + { { 0x005A, "lower" }, { 0,1,0 } }, + { { 0x005B, "lower" }, { 0,1,0 } }, + { { 0x0060, "lower" }, { 0,1,0 } }, + { { 0x0061, "lower" }, { 0,0,0 } }, + { { 0x007A, "lower" }, { 0,0,0 } }, + { { 0x007B, "lower" }, { 0,1,0 } }, + { { 0x007E, "lower" }, { 0,1,0 } }, + { { 0x007F, "lower" }, { 0,1,0 } }, + { { 0x0080, "lower" }, { 0,1,0 } }, + { { 0x0000, "upper" }, { 0,1,0 } }, + { { 0x001F, "upper" }, { 0,1,0 } }, + { { 0x0020, "upper" }, { 0,1,0 } }, + { { 0x0021, "upper" }, { 0,1,0 } }, + { { 0x002F, "upper" }, { 0,1,0 } }, + { { 0x0030, "upper" }, { 0,1,0 } }, + { { 0x0039, "upper" }, { 0,1,0 } }, + { { 0x003A, "upper" }, { 0,1,0 } }, + { { 0x0040, "upper" }, { 0,1,0 } }, + { { 0x0041, "upper" }, { 0,0,0 } }, + { { 0x005A, "upper" }, { 0,0,0 } }, + { { 0x005B, "upper" }, { 0,1,0 } }, + { { 0x0060, "upper" }, { 0,1,0 } }, + { { 0x0061, "upper" }, { 0,1,0 } }, + { { 0x007A, "upper" }, { 0,1,0 } }, + { { 0x007B, "upper" }, { 0,1,0 } }, + { { 0x007E, "upper" }, { 0,1,0 } }, + { { 0x007F, "upper" }, { 0,1,0 } }, + { { 0x0080, "upper" }, { 0,1,0 } }, + { { 0x0000, "xdigit" }, { 0,1,0 } }, + { { 0x001F, "xdigit" }, { 0,1,0 } }, + { { 0x0020, "xdigit" }, { 0,1,0 } }, + { { 0x0021, "xdigit" }, { 0,1,0 } }, + { { 0x002F, "xdigit" }, { 0,1,0 } }, + { { 0x0030, "xdigit" }, { 0,0,0 } }, + { { 0x0039, "xdigit" }, { 0,0,0 } }, + { { 0x003A, "xdigit" }, { 0,1,0 } }, + { { 0x0040, "xdigit" }, { 0,1,0 } }, + { { 0x0041, "xdigit" }, { 0,0,0 } }, + { { 0x005A, "xdigit" }, { 0,1,0 } }, + { { 0x005B, "xdigit" }, { 0,1,0 } }, + { { 0x0060, "xdigit" }, { 0,1,0 } }, + { { 0x0061, "xdigit" }, { 0,0,0 } }, + { { 0x007A, "xdigit" }, { 0,1,0 } }, + { { 0x007B, "xdigit" }, { 0,1,0 } }, + { { 0x007E, "xdigit" }, { 0,1,0 } }, + { { 0x007F, "xdigit" }, { 0,1,0 } }, + { { 0x0080, "xdigit" }, { 0,1,0 } }, + { { 0x0061, "xxxxxx" }, { 0,1,0 } }, + { .is_last = 1 } + } + }, + { +#if 0 + { Tiswctype, TST_LOC_eucJP }, +#else + { Tiswctype, TST_LOC_ja_UTF8 }, +#endif + { +#ifdef SHOJI_IS_RIGHT + { { 0x3029, "alnum" }, { 0,1,0 } }, /* Hangzhou NUM9 */ +#else + { { 0x3029, "alnum" }, { 0,0,0 } }, /* Hangzhou NUM9 */ +#endif + { { 0xFE4F, "alnum" }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0xFF19, "alnum" }, { 0,0,0 } }, /* FULL 9 */ + { { 0xFF20, "alnum" }, { 0,1,0 } }, /* FULL @ */ + { { 0xFF3A, "alnum" }, { 0,0,0 } }, /* FULL Z */ + { { 0xFF40, "alnum" }, { 0,1,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A, "alnum" }, { 0,0,0 } }, /* FULL z */ +#ifdef SHOJI_IS_RIGHT + { { 0xFF71, "alnum" }, { 0,1,0 } }, /* HALF KATA A */ +#else + { { 0xFF71, "alnum" }, { 0,0,0 } }, /* HALF KATA A */ +#endif +#ifdef SHOJI_IS_RIGHT + { { 0x3029, "alpha" }, { 0,1,0 } }, /* Hangzhou NUM9 */ +#else + { { 0x3029, "alpha" }, { 0,0,0 } }, /* Hangzhou NUM9 */ +#endif + { { 0xFE4F, "alpha" }, { 0,1,0 } }, /* CJK UNI.IDEO. */ +#ifdef SHOJI_IS_RIGHT + { { 0xFF19, "alpha" }, { 0,1,0 } }, /* FULL 9 */ +#else + { { 0xFF19, "alpha" }, { 0,0,0 } }, /* FULL 9 */ +#endif + { { 0xFF20, "alpha" }, { 0,1,0 } }, /* FULL @ */ + { { 0xFF3A, "alpha" }, { 0,0,0 } }, /* FULL Z */ + { { 0xFF40, "alpha" }, { 0,1,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A, "alpha" }, { 0,0,0 } }, /* FULL z */ +#ifdef SHOJI_IS_RIGHT + { { 0xFF71, "alpha" }, { 0,1,0 } }, /* HALF KATA A */ +#else + { { 0xFF71, "alpha" }, { 0,0,0 } }, /* HALF KATA A */ +#endif + { { 0x0080, "cntrl" }, { 0,0,0 } }, /* CNTRL */ + { { 0x3000, "cntrl" }, { 0,1,0 } }, /* IDEO. SPACE */ + { { 0x3029, "digit" }, { 0,1,0 } }, /* Hangzhou NUM9 */ + { { 0x32CB, "digit" }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ + /* 21: */ + { { 0x33FE, "digit" }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ + { { 0xFF19, "digit" }, { 0,1,0 } }, /* FULL 9 */ + { { 0x3000, "graph" }, { 0,1,0 } }, /* IDEO. SPACE */ +#ifdef SHOJI_IS_RIGHT + { { 0x3020, "graph" }, { 0,1,0 } }, /* POSTAL MARK FACE */ + { { 0x3029, "graph" }, { 0,1,0 } }, /* Hangzhou NUM9 */ + { { 0x302F, "graph" }, { 0,1,0 } }, /* Diacritics(Hangul) */ + { { 0x3037, "graph" }, { 0,1,0 } }, /* Separator Symbol */ + { { 0x303F, "graph" }, { 0,1,0 } }, /* IDEO. HALF SPACE */ +#else + { { 0x3020, "graph" }, { 0,0,0 } }, /* POSTAL MARK FACE */ + { { 0x3029, "graph" }, { 0,0,0 } }, /* Hangzhou NUM9 */ + { { 0x302F, "graph" }, { 0,0,0 } }, /* Diacritics(Hangul) */ + { { 0x3037, "graph" }, { 0,0,0 } }, /* Separator Symbol */ + { { 0x303F, "graph" }, { 0,0,0 } }, /* IDEO. HALF SPACE */ +#endif + /* 29: */ + { { 0x3041, "graph" }, { 0,0,0 } }, /* HIRAGANA a */ + /* Non jis: */ +#ifdef SHOJI_IS_RIGHT + { { 0x3094, "graph" }, { 0,1,0 } }, /* HIRAGANA u" */ +#else + { { 0x3094, "graph" }, { 0,0,0 } }, /* HIRAGANA u" */ +#endif + /* Non jis: */ +#ifdef SHOJI_IS_RIGHT + { { 0x3099, "graph" }, { 0,1,0 } }, /* SOUND MARK */ +#else + { { 0x3099, "graph" }, { 0,0,0 } }, /* SOUND MARK */ +#endif + { { 0x309E, "graph" }, { 0,0,0 } }, /* ITERATION MARK */ + /* 33: */ + { { 0x30A1, "graph" }, { 0,0,0 } }, /* KATAKANA a */ + /* Non jis: */ +#ifdef SHOJI_IS_RIGHT + { { 0x30FA, "graph" }, { 0,1,0 } }, /* KATAKANA wo" */ +#else + { { 0x30FA, "graph" }, { 0,0,0 } }, /* KATAKANA wo" */ +#endif + { { 0x30FB, "graph" }, { 0,0,0 } }, /* KATAKANA MID.DOT */ + { { 0x30FE, "graph" }, { 0,0,0 } }, /* KATAKANA ITERATION */ +#ifdef SHOJI_IS_RIGHT + { { 0x3191, "graph" }, { 0,1,0 } }, /* KANBUN REV.MARK */ + { { 0x3243, "graph" }, { 0,1,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB, "graph" }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE, "graph" }, { 0,1,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE, "graph" }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ +#else + { { 0x3191, "graph" }, { 0,0,0 } }, /* KANBUN REV.MARK */ + { { 0x3243, "graph" }, { 0,0,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB, "graph" }, { 0,0,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE, "graph" }, { 0,0,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE, "graph" }, { 0,0,0 } }, /* CJK IDEO.TEL.31th */ +#endif + { { 0x4E00, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E05, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#ifdef SHOJI_IS_RIGHT + { { 0x4E06, "graph" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ +#else + { { 0x4E06, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ +#endif + { { 0x4E07, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x4FFF, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9000, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9006, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#ifdef SHOJI_IS_RIGHT + { { 0x9007, "graph" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4, "graph" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ +#else + { { 0x9007, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ +#endif + /* 51 */ + { { 0x9FA5, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + /* Non jis: */ +#ifdef SHOJI_IS_RIGHT + { { 0xFE4F, "graph" }, { 0,1,0 } }, /* CJK UNI.IDEO. */ +#else + { { 0xFE4F, "graph" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#endif + { { 0xFF0F, "graph" }, { 0,0,0 } }, /* FULL SLASH */ + { { 0xFF19, "graph" }, { 0,0,0 } }, /* FULL 9 */ + { { 0xFF20, "graph" }, { 0,0,0 } }, /* FULL @ */ + { { 0xFF3A, "graph" }, { 0,0,0 } }, /* FULL Z */ + { { 0xFF40, "graph" }, { 0,0,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A, "graph" }, { 0,0,0 } }, /* FULL z */ + { { 0xFF5E, "graph" }, { 0,0,0 } }, /* FULL ~ (tilde) */ + { { 0xFF61, "graph" }, { 0,0,0 } }, /* HALF IDEO.STOP. . */ + { { 0xFF65, "graph" }, { 0,0,0 } }, /* HALF KATA MID.DOT */ + { { 0xFF66, "graph" }, { 0,0,0 } }, /* HALF KATA WO */ + { { 0xFF6F, "graph" }, { 0,0,0 } }, /* HALF KATA tu */ + { { 0xFF70, "graph" }, { 0,0,0 } }, /* HALF KATA PL - */ + { { 0xFF71, "graph" }, { 0,0,0 } }, /* HALF KATA A */ + { { 0xFF9E, "graph" }, { 0,0,0 } }, /* HALF KATA MI */ + { { 0x3000, "print" }, { 0,0,0 } }, /* IDEO. SPACE */ +#ifdef SHOJI_IS_RIGHT + { { 0x3020, "print" }, { 0,1,0 } }, /* POSTAL MARK FACE */ + { { 0x3029, "print" }, { 0,1,0 } }, /* Hangzhou NUM9 */ + { { 0x302F, "print" }, { 0,1,0 } }, /* Diacritics(Hangul) */ + { { 0x3037, "print" }, { 0,1,0 } }, /* Separator Symbol */ +#else + { { 0x3020, "print" }, { 0,0,0 } }, /* POSTAL MARK FACE */ + { { 0x3029, "print" }, { 0,0,0 } }, /* Hangzhou NUM9 */ + { { 0x302F, "print" }, { 0,0,0 } }, /* Diacritics(Hangul) */ + { { 0x3037, "print" }, { 0,0,0 } }, /* Separator Symbol */ +#endif + { { 0x4E00, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E05, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#ifdef SHOJI_IS_RIGHT + { { 0x4E06, "print" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ +#else + { { 0x4E06, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ +#endif + { { 0x4E07, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x4FFF, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9000, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9006, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#ifdef SHOJI_IS_RIGHT + { { 0x9007, "print" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4, "print" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ +#else + { { 0x9007, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ +#endif + /* 81: */ + { { 0x9FA5, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + /* Non jis: */ +#ifdef SHOJI_IS_RIGHT + { { 0xFE4F, "print" }, { 0,1,0 } }, /* CJK UNI.IDEO. */ +#else + { { 0xFE4F, "print" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#endif + { { 0x3000, "punct" }, { 0,1,0 } }, /* IDEO. SPACE */ +#ifdef SHOJI_IS_RIGHT + { { 0x3020, "punct" }, { 0,1,0 } }, /* POSTAL MARK FACE */ + { { 0x302F, "punct" }, { 0,1,0 } }, /* Diacritics(Hangul) */ + { { 0x3037, "punct" }, { 0,1,0 } }, /* FEED Separator */ + { { 0x303F, "punct" }, { 0,1,0 } }, /* IDEO. HALF SPACE */ +#else + { { 0x3020, "punct" }, { 0,0,0 } }, /* POSTAL MARK FACE */ + { { 0x302F, "punct" }, { 0,0,0 } }, /* Diacritics(Hangul) */ + { { 0x3037, "punct" }, { 0,0,0 } }, /* FEED Separator */ + { { 0x303F, "punct" }, { 0,0,0 } }, /* IDEO. HALF SPACE */ +#endif + { { 0x3041, "punct" }, { 0,1,0 } }, /* HIRAGANA a */ + { { 0x3094, "punct" }, { 0,1,0 } }, /* HIRAGANA u" */ + /* 90: */ +#ifdef SHOJI_IS_RIGHT + { { 0x3099, "punct" }, { 0,1,0 } }, /* SOUND MARK */ +#else + { { 0x3099, "punct" }, { 0,0,0 } }, /* SOUND MARK */ +#endif + { { 0x309E, "punct" }, { 0,1,0 } }, /* ITERATION MARK */ + { { 0x30A1, "punct" }, { 0,1,0 } }, /* KATAKANA a */ + { { 0x30FA, "punct" }, { 0,1,0 } }, /* KATAKANA wo" */ + { { 0x30FB, "punct" }, { 0,0,0 } }, /* KATAKANA MID.DOT */ + /* 95: */ + { { 0x30FE, "punct" }, { 0,1,0 } }, /* KATAKANA ITERATION */ +#ifdef SHOJI_IS_RIGHT + { { 0x3191, "punct" }, { 0,1,0 } }, /* KANBUN REV.MARK */ + { { 0x3243, "punct" }, { 0,1,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB, "punct" }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE, "punct" }, { 0,1,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE, "punct" }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ +#else + { { 0x3191, "punct" }, { 0,0,0 } }, /* KANBUN REV.MARK */ + { { 0x3243, "punct" }, { 0,0,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB, "punct" }, { 0,0,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE, "punct" }, { 0,0,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE, "punct" }, { 0,0,0 } }, /* CJK IDEO.TEL.31th */ +#endif + { { 0x9007, "punct" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4, "punct" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA5, "punct" }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0xFF0F, "punct" }, { 0,0,0 } }, /* FULL SLASH */ + /* 105: */ + { { 0xFF19, "punct" }, { 0,1,0 } }, /* FULL 9 */ + { { 0xFF20, "punct" }, { 0,0,0 } }, /* FULL @ */ + { { 0xFF3A, "punct" }, { 0,1,0 } }, /* FULL Z */ + { { 0xFF40, "punct" }, { 0,0,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A, "punct" }, { 0,1,0 } }, /* FULL z */ + { { 0xFF5E, "punct" }, { 0,0,0 } }, /* FULL ~ (tilde) */ + { { 0xFF61, "punct" }, { 0,0,0 } }, /* HALF IDEO.STOP. . */ + { { 0xFF65, "punct" }, { 0,0,0 } }, /* HALF KATA MID.DOT */ + { { 0xFF70, "punct" }, { 0,1,0 } }, /* HALF KATA PL - */ + { { 0xFF9E, "punct" }, { 0,1,0 } }, /* HALF KATA MI */ + /* 115: */ + { { 0x3000, "space" }, { 0,0,0 } }, /* IDEO. SPACE */ + { { 0x303F, "space" }, { 0,1,0 } }, /* IDEO. HALF SPACE */ + { { 0x3041, "lower" }, { 0,1,0 } }, /* HIRAGANA a */ + { { 0x3094, "lower" }, { 0,1,0 } }, /* HIRAGANA u" */ + { { 0x30A1, "lower" }, { 0,1,0 } }, /* KATAKANA a */ + { { 0x30FA, "lower" }, { 0,1,0 } }, /* KATAKANA wo" */ + { { 0xFF66, "lower" }, { 0,1,0 } }, /* HALF KATA WO */ + { { 0xFF6F, "lower" }, { 0,1,0 } }, /* HALF KATA tu */ + { { 0xFF70, "lower" }, { 0,1,0 } }, /* HALF KATA PL - */ + /* 124: */ + { { 0xFF71, "lower" }, { 0,1,0 } }, /* HALF KATA A */ + { { 0xFF9E, "lower" }, { 0,1,0 } }, /* HALF KATA MI */ + { { 0xFF71, "upper" }, { 0,1,0 } }, /* HALF KATA A */ + { { 0xFF19, "xdigit" }, { 0,1,0 } }, /* FULL 9 */ + { { 0x3000, "jspace" }, { 0,0,0 } }, /* IDEO. SPACE */ + /* Non jis? */ + { { 0x303F, "jspace" }, { 0,1,0 } }, /* IDEO.HALF SPACE */ + { { 0xFF19, "jdigit" }, { 0,0,0 } }, /* FULL 9 */ + { { 0x3041, "jhira" }, { 0,0,0 } }, /* HIRAGANA a */ + { { 0x3094, "jhira" }, { 0,1,0 } }, /* HIRAGANA u" */ + { { 0x30A1, "jkata" }, { 0,0,0 } }, /* KATAKANA a */ + /* Non jis: */ + { { 0x30FA, "jkata" }, { 0,1,0 } }, /* KATAKANA wo" */ + { { 0xFF66, "jkata" }, { 0,0,0 } }, /* HALF KATA WO */ + { { 0xFF6F, "jkata" }, { 0,0,0 } }, /* HALF KATA tu */ + { { 0x4E05, "jkanji" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#ifdef SHOJI_IS_RIGHT + /* <NO_WAIVER>: */ + { { 0x4E06, "jkanji" }, { 0,1,1 } }, /* CJK UNI.IDEO.NON-J */ +#else + /* XXX This character does not exist in EUC-JP. */ + { { 0x4E06, "jkanji" }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ +#endif + { { 0x4E07, "jkanji" }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { .is_last = 1 } + } + }, + { + { Tiswctype, TST_LOC_end } + } +}; + + +/* dat_isw-funcs.c */ diff --git a/test/locale-mbwc/dat_iswdigit.c b/test/locale-mbwc/dat_iswdigit.c new file mode 100644 index 000000000..70ca54479 --- /dev/null +++ b/test/locale-mbwc/dat_iswdigit.c @@ -0,0 +1,125 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_iswdigit.c + * + * ISW*: int iswdigit (wint_t wc); + */ + + +#include "dat_isw-funcs.h" + + +TST_ISW_LOC (DIGIT, digit) = { + + { TST_ISW_REC (de, digit) + { + { { 0x0080 }, { 0,1,0 } }, /* CTRL */ + { { 0x009F }, { 0,1,0 } }, /* CTRL */ + { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ + { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ + { { 0x00B0 }, { 0,1,0 } }, /* Degree */ + { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ + { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ + { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ + { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ + { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ + { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ + { { 0x00BB }, { 0,1,0 } }, /* >> */ + { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ + { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ + { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ + { { 0x00BF }, { 0,1,0 } }, /* UD ? */ + { { 0x00C0 }, { 0,1,0 } }, /* A Grave */ + { { 0x00D6 }, { 0,1,0 } }, /* O dia */ + { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ + { { 0x00D8 }, { 0,1,0 } }, /* O stroke */ + { { 0x00DF }, { 0,1,0 } }, /* small Sh */ + { { 0x00E0 }, { 0,1,0 } }, /* a grave */ + { { 0x00F6 }, { 0,1,0 } }, /* o dia */ + { { 0x00F7 }, { 0,1,0 } }, /* division */ + { { 0x00F8 }, { 0,1,0 } }, /* o stroke */ + { { 0x00FF }, { 0,1,0 } }, /* y dia */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (enUS, digit) + { + { { WEOF }, { 0,1,0 } }, + { { 0x0000 }, { 0,1,0 } }, + { { 0x001F }, { 0,1,0 } }, + { { 0x0020 }, { 0,1,0 } }, + { { 0x0021 }, { 0,1,0 } }, + { { 0x002F }, { 0,1,0 } }, + { { 0x0030 }, { 0,0,0 } }, + { { 0x0039 }, { 0,0,0 } }, + { { 0x003A }, { 0,1,0 } }, + { { 0x0040 }, { 0,1,0 } }, + { { 0x0041 }, { 0,1,0 } }, + { { 0x005A }, { 0,1,0 } }, + { { 0x005B }, { 0,1,0 } }, + { { 0x0060 }, { 0,1,0 } }, + { { 0x0061 }, { 0,1,0 } }, + { { 0x007A }, { 0,1,0 } }, + { { 0x007B }, { 0,1,0 } }, + { { 0x007E }, { 0,1,0 } }, + { { 0x007F }, { 0,1,0 } }, + { { 0x0080 }, { 0,1,0 } }, + { .is_last = 1 } /* Last element. */ + } + }, +#if 0 + { TST_ISW_REC (eucJP, digit) +#else + { TST_ISW_REC (ja_UTF8, digit) +#endif + { + { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ + { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ + { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ + { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ + { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ + { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ + { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ + { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ + { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ + { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ + { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ + { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ + { { 0x30FB }, { 0,1,0 } }, /* KATAKANA MID.DOT */ + { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ + { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ + { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ + { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0xFF0F }, { 0,1,0 } }, /* FULL SLASH */ + { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ + { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ + { { 0xFF3A }, { 0,1,0 } }, /* FULL Z */ + { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A }, { 0,1,0 } }, /* FULL z */ + { { 0xFF5E }, { 0,1,0 } }, /* FULL ~ (tilde) */ + { { 0xFF61 }, { 0,1,0 } }, /* HALF IDEO.STOP. . */ + { { 0xFF65 }, { 0,1,0 } }, /* HALF KATA MID.DOT */ + { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ + { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ + { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ + { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ + { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (end, digit) } +}; diff --git a/test/locale-mbwc/dat_iswgraph.c b/test/locale-mbwc/dat_iswgraph.c new file mode 100644 index 000000000..80cacb2a3 --- /dev/null +++ b/test/locale-mbwc/dat_iswgraph.c @@ -0,0 +1,167 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_iswgraph.c + * + * ISW*: int iswgraph (wint_t wc); + */ + + +#include "dat_isw-funcs.h" + + +TST_ISW_LOC (GRAPH, graph) = { + + { TST_ISW_REC (de, graph) + { + { { 0x0080 }, { 0,1,0 } }, /* CTRL */ + { { 0x009F }, { 0,1,0 } }, /* CTRL */ +#ifdef SHOJI_IS_RIGHT + { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ +#else + { { 0x00A0 }, { 0,0,0 } }, /* NB SPACE */ +#endif + { { 0x00A1 }, { 0,0,0 } }, /* UD ! */ + { { 0x00B0 }, { 0,0,0 } }, /* Degree */ + { { 0x00B1 }, { 0,0,0 } }, /* +- sign */ + { { 0x00B2 }, { 0,0,0 } }, /* SUP 2 */ + { { 0x00B3 }, { 0,0,0 } }, /* SUP 3 */ + { { 0x00B4 }, { 0,0,0 } }, /* ACUTE */ + { { 0x00B8 }, { 0,0,0 } }, /* CEDILLA */ + { { 0x00B9 }, { 0,0,0 } }, /* SUP 1 */ + { { 0x00BB }, { 0,0,0 } }, /* >> */ + { { 0x00BC }, { 0,0,0 } }, /* 1/4 */ + { { 0x00BD }, { 0,0,0 } }, /* 1/2 */ + { { 0x00BE }, { 0,0,0 } }, /* 3/4 */ + { { 0x00BF }, { 0,0,0 } }, /* UD ? */ + { { 0x00C0 }, { 0,0,0 } }, /* A Grave */ + { { 0x00D6 }, { 0,0,0 } }, /* O dia */ + { { 0x00D7 }, { 0,0,0 } }, /* multipl. */ + { { 0x00D8 }, { 0,0,0 } }, /* O stroke */ + { { 0x00DF }, { 0,0,0 } }, /* small Sh */ + { { 0x00E0 }, { 0,0,0 } }, /* a grave */ + { { 0x00F6 }, { 0,0,0 } }, /* o dia */ + { { 0x00F7 }, { 0,0,0 } }, /* division */ + { { 0x00F8 }, { 0,0,0 } }, /* o stroke */ + { { 0x00FF }, { 0,0,0 } }, /* y dia */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (enUS, graph) + { + { { WEOF }, { 0,1,0 } }, + { { 0x0000 }, { 0,1,0 } }, + { { 0x001F }, { 0,1,0 } }, + { { 0x0020 }, { 0,1,0 } }, + { { 0x0021 }, { 0,0,0 } }, + { { 0x002F }, { 0,0,0 } }, + { { 0x0030 }, { 0,0,0 } }, + { { 0x0039 }, { 0,0,0 } }, + { { 0x003A }, { 0,0,0 } }, + { { 0x0040 }, { 0,0,0 } }, + { { 0x0041 }, { 0,0,0 } }, + { { 0x005A }, { 0,0,0 } }, + { { 0x005B }, { 0,0,0 } }, + { { 0x0060 }, { 0,0,0 } }, + { { 0x0061 }, { 0,0,0 } }, + { { 0x007A }, { 0,0,0 } }, + { { 0x007B }, { 0,0,0 } }, + { { 0x007E }, { 0,0,0 } }, + { { 0x007F }, { 0,1,0 } }, + { { 0x0080 }, { 0,1,0 } }, /* 20 */ + { .is_last = 1 } /* Last element. */ + } + }, +#if 0 + { TST_ISW_REC( eucJP, graph ) +#else + { TST_ISW_REC( ja_UTF8, graph ) +#endif + { + { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ +#ifdef SHOJI_IS_RIGHT + { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ + { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ + { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ + { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ + { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ +#else + { { 0x3020 }, { 0,0,0 } }, /* POSTAL MARK FACE */ + { { 0x3029 }, { 0,0,0 } }, /* Hangzhou NUM9 */ + { { 0x302F }, { 0,0,0 } }, /* Diacritics(Hangul) */ + { { 0x3037 }, { 0,0,0 } }, /* Separator Symbol */ + { { 0x303F }, { 0,0,0 } }, /* IDEO. HALF SPACE */ +#endif + { { 0x3041 }, { 0,0,0 } }, /* HIRAGANA a */ +#ifdef SHOJI_IS_RIGHT + { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ /* non jis */ + { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ +#else + { { 0x3094 }, { 0,0,0 } }, /* HIRAGANA u" */ /* non jis */ + { { 0x3099 }, { 0,0,0 } }, /* SOUND MARK */ +#endif + { { 0x309E }, { 0,0,0 } }, /* ITERATION MARK */ /* 10 */ + { { 0x30A1 }, { 0,0,0 } }, /* KATAKANA a */ +#ifdef SHOJI_IS_RIGHT + { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ /* non jis */ +#else + { { 0x30FA }, { 0,0,0 } }, /* KATAKANA wo" */ /* non jis */ +#endif + { { 0x30FB }, { 0,0,0 } }, /* KATAKANA MID.DOT */ + { { 0x30FE }, { 0,0,0 } }, /* KATAKANA ITERATION */ +#ifdef SHOJI_IS_RIGHT + { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ + { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ +#else + { { 0x3191 }, { 0,0,0 } }, /* KANBUN REV.MARK */ + { { 0x3243 }, { 0,0,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB }, { 0,0,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE }, { 0,0,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE }, { 0,0,0 } }, /* CJK IDEO.TEL.31th */ +#endif + { { 0x4E00 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ /* 20 */ + { { 0x4E05 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#ifdef SHOJI_IS_RIGHT + { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ +#else + { { 0x4E06 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ +#endif + { { 0x4E07 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x4FFF }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9000 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9006 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#ifdef SHOJI_IS_RIGHT + { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ +#else + { { 0x9007 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ +#endif + { { 0x9FA5 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#ifdef SHOJI_IS_RIGHT + { { 0xFE4F }, { 0,1,0 } }, /* CJK Wave Low Line */ /* 30 */ +#else + { { 0xFE4F }, { 0,0,0 } }, /* CJK Wave Low Line */ /* 30 */ +#endif + { { 0xFF0F }, { 0,0,0 } }, /* FULL SLASH */ + { { 0xFF19 }, { 0,0,0 } }, /* FULL 9 */ + { { 0xFF20 }, { 0,0,0 } }, /* FULL @ */ + { { 0xFF3A }, { 0,0,0 } }, /* FULL Z */ + { { 0xFF40 }, { 0,0,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A }, { 0,0,0 } }, /* FULL z */ + { { 0xFF5E }, { 0,0,0 } }, /* FULL ~ (tilde) */ + { { 0xFF61 }, { 0,0,0 } }, /* HALF IDEO.STOP. . */ + { { 0xFF65 }, { 0,0,0 } }, /* HALF KATA MID.DOT */ + { { 0xFF66 }, { 0,0,0 } }, /* HALF KATA WO */ + { { 0xFF6F }, { 0,0,0 } }, /* HALF KATA tu */ + { { 0xFF70 }, { 0,0,0 } }, /* HALF KATA PL - */ + { { 0xFF71 }, { 0,0,0 } }, /* HALF KATA A */ + { { 0xFF9E }, { 0,0,0 } }, /* HALF KATA MI */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (end, graph) } +}; diff --git a/test/locale-mbwc/dat_iswlower.c b/test/locale-mbwc/dat_iswlower.c new file mode 100644 index 000000000..58ec08ed4 --- /dev/null +++ b/test/locale-mbwc/dat_iswlower.c @@ -0,0 +1,96 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_iswlower.c + * + * ISW*: int iswlower (wint_t wc); + */ + + +#include "dat_isw-funcs.h" + + +TST_ISW_LOC (LOWER, lower) = { + + { TST_ISW_REC (de, lower) + { + { { 0x0080 }, { 0,1,0 } }, /* CTRL */ + { { 0x009F }, { 0,1,0 } }, /* CTRL */ + { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ + { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ + { { 0x00B0 }, { 0,1,0 } }, /* Degree */ + { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ + { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ + { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ + { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ + { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ + { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ + { { 0x00BB }, { 0,1,0 } }, /* >> */ + { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ + { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ + { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ + { { 0x00BF }, { 0,1,0 } }, /* UD ? */ + { { 0x00C0 }, { 0,1,0 } }, /* A Grave */ + { { 0x00D6 }, { 0,1,0 } }, /* O dia */ + { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ + { { 0x00D8 }, { 0,1,0 } }, /* O stroke */ + { { 0x00DF }, { 0,0,0 } }, /* small Sh */ + { { 0x00E0 }, { 0,0,0 } }, /* a grave */ + { { 0x00F6 }, { 0,0,0 } }, /* o dia */ + { { 0x00F7 }, { 0,1,0 } }, /* division */ + { { 0x00F8 }, { 0,0,0 } }, /* o stroke */ + { { 0x00FF }, { 0,0,0 } }, /* y dia */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (enUS, lower) + { + { { WEOF }, { 0,1,0 } }, + { { 0x0000 }, { 0,1,0 } }, + { { 0x001F }, { 0,1,0 } }, + { { 0x0020 }, { 0,1,0 } }, + { { 0x0021 }, { 0,1,0 } }, + { { 0x002F }, { 0,1,0 } }, + { { 0x0030 }, { 0,1,0 } }, + { { 0x0039 }, { 0,1,0 } }, + { { 0x003A }, { 0,1,0 } }, + { { 0x0040 }, { 0,1,0 } }, + { { 0x0041 }, { 0,1,0 } }, + { { 0x005A }, { 0,1,0 } }, + { { 0x005B }, { 0,1,0 } }, + { { 0x0060 }, { 0,1,0 } }, + { { 0x0061 }, { 0,0,0 } }, + { { 0x007A }, { 0,0,0 } }, + { { 0x007B }, { 0,1,0 } }, + { { 0x007E }, { 0,1,0 } }, + { { 0x007F }, { 0,1,0 } }, + { { 0x0080 }, { 0,1,0 } }, + { .is_last = 1 } /* Last element. */ + } + }, +#if 0 + { TST_ISW_REC (eucJP, lower) +#else + { TST_ISW_REC (ja_UTF8, lower) +#endif + { + { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ + { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ + { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ + { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ + { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ + { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ + { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ + { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ + { { 0xFF3A }, { 0,1,0 } }, /* FULL Z */ + { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A }, { 0,0,0 } }, /* FULL z */ + { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ + { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ + { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (end, lower) } + +}; diff --git a/test/locale-mbwc/dat_iswprint.c b/test/locale-mbwc/dat_iswprint.c new file mode 100644 index 000000000..bcd96d059 --- /dev/null +++ b/test/locale-mbwc/dat_iswprint.c @@ -0,0 +1,170 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_iswprint.c + * + * ISW*: int iswprint (wint_t wc); + */ + + +#include "dat_isw-funcs.h" + + +TST_ISW_LOC (PRINT, print) = { + + { TST_ISW_REC (de, print) + { + { { 0x0080 }, { 0,1,0 } }, /* CTRL */ + { { 0x009F }, { 0,1,0 } }, /* CTRL */ +#ifdef SHOJI_IS_RIGHT + { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ +#else + { { 0x00A0 }, { 0,0,0 } }, /* NB SPACE */ +#endif + { { 0x00A1 }, { 0,0,0 } }, /* UD ! */ + { { 0x00B0 }, { 0,0,0 } }, /* Degree */ + { { 0x00B1 }, { 0,0,0 } }, /* +- sign */ + { { 0x00B2 }, { 0,0,0 } }, /* SUP 2 */ + { { 0x00B3 }, { 0,0,0 } }, /* SUP 3 */ + { { 0x00B4 }, { 0,0,0 } }, /* ACUTE */ + { { 0x00B8 }, { 0,0,0 } }, /* CEDILLA */ + { { 0x00B9 }, { 0,0,0 } }, /* SUP 1 */ + { { 0x00BB }, { 0,0,0 } }, /* >> */ + { { 0x00BC }, { 0,0,0 } }, /* 1/4 */ + { { 0x00BD }, { 0,0,0 } }, /* 1/2 */ + { { 0x00BE }, { 0,0,0 } }, /* 3/4 */ + { { 0x00BF }, { 0,0,0 } }, /* UD ? */ + { { 0x00C0 }, { 0,0,0 } }, /* A Grave */ + { { 0x00D6 }, { 0,0,0 } }, /* O dia */ + { { 0x00D7 }, { 0,0,0 } }, /* multipl. */ + { { 0x00D8 }, { 0,0,0 } }, /* O stroke */ + { { 0x00DF }, { 0,0,0 } }, /* small Sh */ + { { 0x00E0 }, { 0,0,0 } }, /* a grave */ + { { 0x00F6 }, { 0,0,0 } }, /* o dia */ + { { 0x00F7 }, { 0,0,0 } }, /* division */ + { { 0x00F8 }, { 0,0,0 } }, /* o stroke */ + { { 0x00FF }, { 0,0,0 } }, /* y dia */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (enUS, print) + { + { { WEOF }, { 0,1,0 } }, /* 01 */ + { { 0x0000 }, { 0,1,0 } }, + { { 0x001F }, { 0,1,0 } }, + { { 0x0020 }, { 0,0,0 } }, + { { 0x0021 }, { 0,0,0 } }, + { { 0x002F }, { 0,0,0 } }, + { { 0x0030 }, { 0,0,0 } }, + { { 0x0039 }, { 0,0,0 } }, + { { 0x003A }, { 0,0,0 } }, + { { 0x0040 }, { 0,0,0 } }, + { { 0x0041 }, { 0,0,0 } }, + { { 0x005A }, { 0,0,0 } }, + { { 0x005B }, { 0,0,0 } }, + { { 0x0060 }, { 0,0,0 } }, + { { 0x0061 }, { 0,0,0 } }, + { { 0x007A }, { 0,0,0 } }, + { { 0x007B }, { 0,0,0 } }, + { { 0x007E }, { 0,0,0 } }, + { { 0x007F }, { 0,1,0 } }, + { { 0x0080 }, { 0,1,0 } }, /* 20 */ +#ifdef NO_WAIVER + { { 0x3042 }, { 0,1,0 } }, /* <WAIVER> */ +#endif + { .is_last = 1 } /* Last element. */ + } + }, +#if 0 + { TST_ISW_REC (eucJP, print) +#else + { TST_ISW_REC (ja_UTF8, print) +#endif + { + { { 0x3000 }, { 0,0,0 } }, /* IDEO. SPACE */ +#ifdef SHOJI_IS_RIGHT + { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ + { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ + { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ + { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ + { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ +#else + { { 0x3020 }, { 0,0,0 } }, /* POSTAL MARK FACE */ + { { 0x3029 }, { 0,0,0 } }, /* Hangzhou NUM9 */ + { { 0x302F }, { 0,0,0 } }, /* Diacritics(Hangul) */ + { { 0x3037 }, { 0,0,0 } }, /* Separator Symbol */ + { { 0x303F }, { 0,0,0 } }, /* IDEO. HALF SPACE */ +#endif + { { 0x3041 }, { 0,0,0 } }, /* HIRAGANA a */ +#ifdef SHOJI_IS_RIGHT + { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ /* non jis */ + { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ +#else + { { 0x3094 }, { 0,0,0 } }, /* HIRAGANA u" */ /* non jis */ + { { 0x3099 }, { 0,0,0 } }, /* SOUND MARK */ +#endif + { { 0x309E }, { 0,0,0 } }, /* ITERATION MARK */ /* 10 */ + { { 0x30A1 }, { 0,0,0 } }, /* KATAKANA a */ +#ifdef SHOJI_IS_RIGHT + { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ /* non jis */ +#else + { { 0x30FA }, { 0,0,0 } }, /* KATAKANA wo" */ /* non jis */ +#endif + { { 0x30FB }, { 0,0,0 } }, /* KATAKANA MID.DOT */ + { { 0x30FE }, { 0,0,0 } }, /* KATAKANA ITERATION */ +#ifdef SHOJI_IS_RIGHT + { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ + { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ +#else + { { 0x3191 }, { 0,0,0 } }, /* KANBUN REV.MARK */ + { { 0x3243 }, { 0,0,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB }, { 0,0,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE }, { 0,0,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE }, { 0,0,0 } }, /* CJK IDEO.TEL.31th */ +#endif + { { 0x4E00 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ /* 20 */ + { { 0x4E05 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#ifdef SHOJI_IS_RIGHT + { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ +#else + { { 0x4E06 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ +#endif + { { 0x4E07 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x4FFF }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9000 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ + { { 0x9006 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#ifdef SHOJI_IS_RIGHT + { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ +#else + { { 0x9007 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4 }, { 0,0,0 } }, /* CJK UNI.IDEO.NON-J */ +#endif + { { 0x9FA5 }, { 0,0,0 } }, /* CJK UNI.IDEO. */ +#ifdef SHOJI_IS_RIGHT + { { 0xFE4F }, { 0,1,0 } }, /* WAVE LOW LINE */ /* 30 */ +#else + { { 0xFE4F }, { 0,0,0 } }, /* WAVE LOW LINE */ /* 30 */ +#endif + { { 0xFF0F }, { 0,0,0 } }, /* FULL SLASH */ + { { 0xFF19 }, { 0,0,0 } }, /* FULL 9 */ + { { 0xFF20 }, { 0,0,0 } }, /* FULL @ */ + { { 0xFF3A }, { 0,0,0 } }, /* FULL Z */ + { { 0xFF40 }, { 0,0,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A }, { 0,0,0 } }, /* FULL z */ + { { 0xFF5E }, { 0,0,0 } }, /* FULL ~ (tilde) */ + { { 0xFF61 }, { 0,0,0 } }, /* HALF IDEO.STOP. . */ + { { 0xFF65 }, { 0,0,0 } }, /* HALF KATA MID.DOT */ + { { 0xFF66 }, { 0,0,0 } }, /* HALF KATA WO */ /* 40 */ + { { 0xFF6F }, { 0,0,0 } }, /* HALF KATA tu */ + { { 0xFF70 }, { 0,0,0 } }, /* HALF KATA PL - */ + { { 0xFF71 }, { 0,0,0 } }, /* HALF KATA A */ + { { 0xFF9E }, { 0,0,0 } }, /* HALF KATA MI */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (end, print) } +}; diff --git a/test/locale-mbwc/dat_iswpunct.c b/test/locale-mbwc/dat_iswpunct.c new file mode 100644 index 000000000..2b3612ff8 --- /dev/null +++ b/test/locale-mbwc/dat_iswpunct.c @@ -0,0 +1,155 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_iswpunct.c + * + * ISW*: int iswpunct (wint_t wc); + */ + + +#include "dat_isw-funcs.h" + + +TST_ISW_LOC (PUNCT, punct) = { + + { TST_ISW_REC (de, punct) + { + { { 0x0080 }, { 0,1,0 } }, /* CTRL */ + { { 0x009F }, { 0,1,0 } }, /* CTRL */ +#ifdef SHOJI_IS_RIGHT + { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ +#else + { { 0x00A0 }, { 0,0,0 } }, /* NB SPACE */ +#endif + { { 0x00A1 }, { 0,0,0 } }, /* UD ! */ + { { 0x00B0 }, { 0,0,0 } }, /* Degree */ + { { 0x00B1 }, { 0,0,0 } }, /* +- sign */ + { { 0x00B2 }, { 0,0,0 } }, /* SUP 2 */ + { { 0x00B3 }, { 0,0,0 } }, /* SUP 3 */ + { { 0x00B4 }, { 0,0,0 } }, /* ACUTE */ + { { 0x00B8 }, { 0,0,0 } }, /* CEDILLA */ + { { 0x00B9 }, { 0,0,0 } }, /* SUP 1 */ + { { 0x00BB }, { 0,0,0 } }, /* >> */ + { { 0x00BC }, { 0,0,0 } }, /* 1/4 */ + { { 0x00BD }, { 0,0,0 } }, /* 1/2 */ + { { 0x00BE }, { 0,0,0 } }, /* 3/4 */ + { { 0x00BF }, { 0,0,0 } }, /* UD ? */ + { { 0x00C0 }, { 0,1,0 } }, /* A Grave */ + { { 0x00D6 }, { 0,1,0 } }, /* O dia */ + { { 0x00D7 }, { 0,0,0 } }, /* multipl. */ + { { 0x00D8 }, { 0,1,0 } }, /* O stroke */ + { { 0x00DF }, { 0,1,0 } }, /* small Sh */ + { { 0x00E0 }, { 0,1,0 } }, /* a grave */ + { { 0x00F6 }, { 0,1,0 } }, /* o dia */ + { { 0x00F7 }, { 0,0,0 } }, /* division */ + { { 0x00F8 }, { 0,1,0 } }, /* o stroke */ + { { 0x00FF }, { 0,1,0 } }, /* y dia */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (enUS, punct) + { + { { WEOF }, { 0,1,0 } }, /* 01 */ + { { 0x0000 }, { 0,1,0 } }, + { { 0x001F }, { 0,1,0 } }, + { { 0x0020 }, { 0,1,0 } }, + { { 0x0021 }, { 0,0,0 } }, + { { 0x002F }, { 0,0,0 } }, + { { 0x0030 }, { 0,1,0 } }, + { { 0x0039 }, { 0,1,0 } }, + { { 0x003A }, { 0,0,0 } }, + { { 0x0040 }, { 0,0,0 } }, + { { 0x0041 }, { 0,1,0 } }, + { { 0x005A }, { 0,1,0 } }, + { { 0x005B }, { 0,0,0 } }, + { { 0x0060 }, { 0,0,0 } }, + { { 0x0061 }, { 0,1,0 } }, + { { 0x007A }, { 0,1,0 } }, + { { 0x007B }, { 0,0,0 } }, + { { 0x007E }, { 0,0,0 } }, + { { 0x007F }, { 0,1,0 } }, + { { 0x0080 }, { 0,1,0 } }, /* 20 */ + { .is_last = 1 } /* Last element. */ + } + }, +#if 0 + { TST_ISW_REC (eucJP, punct) +#else + { TST_ISW_REC (ja_UTF8, punct) +#endif + { + { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ +#ifdef SHOJI_IS_RIGHT + { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ +#else + { { 0x3020 }, { 0,0,0 } }, /* POSTAL MARK FACE */ +#endif + { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ +#ifdef SHOJI_IS_RIGHT + { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ + { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ + { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ +#else + { { 0x302F }, { 0,0,0 } }, /* Diacritics(Hangul) */ + { { 0x3037 }, { 0,0,0 } }, /* Separator Symbol */ + { { 0x303F }, { 0,0,0 } }, /* IDEO. HALF SPACE */ +#endif + { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ + { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ +#ifdef SHOJI_IS_RIGHT + { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ +#else + { { 0x3099 }, { 0,0,0 } }, /* SOUND MARK */ +#endif + { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ /* 10 */ + { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ + { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ + { { 0x30FB }, { 0,0,0 } }, /* KATAKANA MID.DOT */ + { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ +#ifdef SHOJI_IS_RIGHT + { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ + { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ +#else + { { 0x3191 }, { 0,0,0 } }, /* KANBUN REV.MARK */ + { { 0x3243 }, { 0,0,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB }, { 0,0,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE }, { 0,0,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE }, { 0,0,0 } }, /* CJK IDEO.TEL.31th */ +#endif + { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ /* 20 */ + { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ +#ifdef SHOJI_IS_RIGHT + { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ /* 30 */ +#else + { { 0xFE4F }, { 0,0,0 } }, /* CJK UNI.IDEO. */ /* 30 */ +#endif + { { 0xFF0F }, { 0,0,0 } }, /* FULL SLASH */ + { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ + { { 0xFF20 }, { 0,0,0 } }, /* FULL @ */ + { { 0xFF3A }, { 0,1,0 } }, /* FULL Z */ + { { 0xFF40 }, { 0,0,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A }, { 0,1,0 } }, /* FULL z */ + { { 0xFF5E }, { 0,0,0 } }, /* FULL ~ (tilde) */ + { { 0xFF61 }, { 0,0,0 } }, /* HALF IDEO.STOP. . */ + { { 0xFF65 }, { 0,0,0 } }, /* HALF KATA MID.DOT */ + { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ /* 40 */ + { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ + { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ + { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ + { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (end, punct) } +}; diff --git a/test/locale-mbwc/dat_iswspace.c b/test/locale-mbwc/dat_iswspace.c new file mode 100644 index 000000000..2131b87ae --- /dev/null +++ b/test/locale-mbwc/dat_iswspace.c @@ -0,0 +1,129 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_iswspace.c + * + * ISW*: int iswspace (wint_t wc); + */ + + +#include "dat_isw-funcs.h" + + +TST_ISW_LOC (SPACE, space) = { + + { TST_ISW_REC (de, space) + { + { { 0x0080 }, { 0,1,0 } }, /* CTRL */ + { { 0x009F }, { 0,1,0 } }, /* CTRL */ + { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ + { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ + { { 0x00B0 }, { 0,1,0 } }, /* Degree */ + { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ + { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ + { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ + { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ + { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ + { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ + { { 0x00BB }, { 0,1,0 } }, /* >> */ + { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ + { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ + { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ + { { 0x00BF }, { 0,1,0 } }, /* UD ? */ + { { 0x00C0 }, { 0,1,0 } }, /* A Grave */ + { { 0x00D6 }, { 0,1,0 } }, /* O dia */ + { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ + { { 0x00D8 }, { 0,1,0 } }, /* O stroke */ + { { 0x00DF }, { 0,1,0 } }, /* small Sh */ + { { 0x00E0 }, { 0,1,0 } }, /* a grave */ + { { 0x00F6 }, { 0,1,0 } }, /* o dia */ + { { 0x00F7 }, { 0,1,0 } }, /* division */ + { { 0x00F8 }, { 0,1,0 } }, /* o stroke */ + { { 0x00FF }, { 0,1,0 } }, /* y dia */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (enUS, space) + { + { { WEOF }, { 0,1,0 } }, + { { 0x0000 }, { 0,1,0 } }, + { { 0x0008 }, { 0,1,0 } }, + { { 0x0009 }, { 0,0,0 } }, + { { 0x000D }, { 0,0,0 } }, + { { 0x000E }, { 0,1,0 } }, + { { 0x001F }, { 0,1,0 } }, + { { 0x0020 }, { 0,0,0 } }, + { { 0x0021 }, { 0,1,0 } }, + { { 0x002F }, { 0,1,0 } }, + { { 0x0030 }, { 0,1,0 } }, + { { 0x0039 }, { 0,1,0 } }, + { { 0x003A }, { 0,1,0 } }, + { { 0x0040 }, { 0,1,0 } }, + { { 0x0041 }, { 0,1,0 } }, + { { 0x005A }, { 0,1,0 } }, + { { 0x005B }, { 0,1,0 } }, + { { 0x0060 }, { 0,1,0 } }, + { { 0x0061 }, { 0,1,0 } }, + { { 0x007A }, { 0,1,0 } }, /* 20 */ + { { 0x007B }, { 0,1,0 } }, + { { 0x007E }, { 0,1,0 } }, + { { 0x007F }, { 0,1,0 } }, + { { 0x0080 }, { 0,1,0 } }, + { .is_last = 1 } /* Last element. */ + } + }, +#if 0 + { TST_ISW_REC (eucJP, space) +#else + { TST_ISW_REC (ja_UTF8, space) +#endif + { + { { 0x3000 }, { 0,0,0 } }, /* IDEO. SPACE */ + { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ + { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ + { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ + { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ + { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ /* No JIS */ + { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ + { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ + { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ + { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ + { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ + { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ + { { 0x30FB }, { 0,1,0 } }, /* KATAKANA MID.DOT */ + { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ + { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ + { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ + { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0xFF0F }, { 0,1,0 } }, /* FULL SLASH */ + { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ + { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ + { { 0xFF3A }, { 0,1,0 } }, /* FULL Z */ + { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A }, { 0,1,0 } }, /* FULL z */ + { { 0xFF5E }, { 0,1,0 } }, /* FULL ~ (tilde) */ + { { 0xFF61 }, { 0,1,0 } }, /* HALF IDEO.STOP. . */ + { { 0xFF65 }, { 0,1,0 } }, /* HALF KATA MID.DOT */ + { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ + { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ + { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ + { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ + { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (end, space) } +}; diff --git a/test/locale-mbwc/dat_iswupper.c b/test/locale-mbwc/dat_iswupper.c new file mode 100644 index 000000000..865f42fe5 --- /dev/null +++ b/test/locale-mbwc/dat_iswupper.c @@ -0,0 +1,94 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_iswupper.c + * + * ISW*: int iswupper (wint_t wc); + */ + + +#include "dat_isw-funcs.h" + + +TST_ISW_LOC (UPPER, upper) = { + + { TST_ISW_REC (de, upper) + { + { { 0x0080 }, { 0,1,0 } }, /* CTRL */ + { { 0x009F }, { 0,1,0 } }, /* CTRL */ + { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ + { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ + { { 0x00B0 }, { 0,1,0 } }, /* Degree */ + { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ + { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ + { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ + { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ + { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ + { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ + { { 0x00BB }, { 0,1,0 } }, /* >> */ + { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ + { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ + { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ + { { 0x00BF }, { 0,1,0 } }, /* UD ? */ + { { 0x00C0 }, { 0,0,0 } }, /* A Grave */ + { { 0x00D6 }, { 0,0,0 } }, /* O dia */ + { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ + { { 0x00D8 }, { 0,0,0 } }, /* O stroke */ + { { 0x00DF }, { 0,1,0 } }, /* small Sh */ + { { 0x00E0 }, { 0,1,0 } }, /* a grave */ + { { 0x00F6 }, { 0,1,0 } }, /* o dia */ + { { 0x00F7 }, { 0,1,0 } }, /* division */ + { { 0x00F8 }, { 0,1,0 } }, /* o stroke */ + { { 0x00FF }, { 0,1,0 } }, /* y dia */ + { .is_last = 1 } /* Last entry. */ + } + }, + { TST_ISW_REC (enUS, upper) + { + { { WEOF }, { 0,1,0 } }, + { { 0x0000 }, { 0,1,0 } }, + { { 0x001F }, { 0,1,0 } }, + { { 0x0020 }, { 0,1,0 } }, + { { 0x0021 }, { 0,1,0 } }, + { { 0x002F }, { 0,1,0 } }, + { { 0x0030 }, { 0,1,0 } }, + { { 0x0039 }, { 0,1,0 } }, + { { 0x003A }, { 0,1,0 } }, + { { 0x0040 }, { 0,1,0 } }, + { { 0x0041 }, { 0,0,0 } }, + { { 0x005A }, { 0,0,0 } }, + { { 0x005B }, { 0,1,0 } }, + { { 0x0060 }, { 0,1,0 } }, + { { 0x0061 }, { 0,1,0 } }, + { { 0x007A }, { 0,1,0 } }, + { { 0x007B }, { 0,1,0 } }, + { { 0x007E }, { 0,1,0 } }, + { { 0x007F }, { 0,1,0 } }, + { { 0x0080 }, { 0,1,0 } }, + { .is_last = 1 } /* Last entry. */ + } + }, +#if 0 + { TST_ISW_REC (eucJP, upper) +#else + { TST_ISW_REC (ja_UTF8, upper) +#endif + { + { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ + { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ + { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ + { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ + { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ + { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ + { { 0xFF3A }, { 0,0,0 } }, /* FULL Z */ + { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A }, { 0,1,0 } }, /* FULL z */ + { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ + { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ + { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ + { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ + { .is_last = 1 } /* Last entry. */ + } + }, + { TST_ISW_REC (end, upper) } +}; diff --git a/test/locale-mbwc/dat_iswxdigit.c b/test/locale-mbwc/dat_iswxdigit.c new file mode 100644 index 000000000..5d6c652f5 --- /dev/null +++ b/test/locale-mbwc/dat_iswxdigit.c @@ -0,0 +1,125 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_iswxdigit.c + * + * ISW*: int iswxdigit (wint_t wc); + */ + + +#include "dat_isw-funcs.h" + + +TST_ISW_LOC (XDIGIT, xdigit) = { + + { TST_ISW_REC (de, xdigit) + { + { { 0x0080 }, { 0,1,0 } }, /* CTRL */ + { { 0x009F }, { 0,1,0 } }, /* CTRL */ + { { 0x00A0 }, { 0,1,0 } }, /* NB SPACE */ + { { 0x00A1 }, { 0,1,0 } }, /* UD ! */ + { { 0x00B0 }, { 0,1,0 } }, /* Degree */ + { { 0x00B1 }, { 0,1,0 } }, /* +- sign */ + { { 0x00B2 }, { 0,1,0 } }, /* SUP 2 */ + { { 0x00B3 }, { 0,1,0 } }, /* SUP 3 */ + { { 0x00B4 }, { 0,1,0 } }, /* ACUTE */ + { { 0x00B8 }, { 0,1,0 } }, /* CEDILLA */ + { { 0x00B9 }, { 0,1,0 } }, /* SUP 1 */ + { { 0x00BB }, { 0,1,0 } }, /* >> */ + { { 0x00BC }, { 0,1,0 } }, /* 1/4 */ + { { 0x00BD }, { 0,1,0 } }, /* 1/2 */ + { { 0x00BE }, { 0,1,0 } }, /* 3/4 */ + { { 0x00BF }, { 0,1,0 } }, /* UD ? */ + { { 0x00C0 }, { 0,1,0 } }, /* A Grave */ + { { 0x00D6 }, { 0,1,0 } }, /* O dia */ + { { 0x00D7 }, { 0,1,0 } }, /* multipl. */ + { { 0x00D8 }, { 0,1,0 } }, /* O stroke */ + { { 0x00DF }, { 0,1,0 } }, /* small Sh */ + { { 0x00E0 }, { 0,1,0 } }, /* a grave */ + { { 0x00F6 }, { 0,1,0 } }, /* o dia */ + { { 0x00F7 }, { 0,1,0 } }, /* division */ + { { 0x00F8 }, { 0,1,0 } }, /* o stroke */ + { { 0x00FF }, { 0,1,0 } }, /* y dia */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC( enUS, xdigit ) + { + { { WEOF }, { 0,1,0 } }, + { { 0x0000 }, { 0,1,0 } }, + { { 0x001F }, { 0,1,0 } }, + { { 0x0020 }, { 0,1,0 } }, + { { 0x0021 }, { 0,1,0 } }, + { { 0x002F }, { 0,1,0 } }, + { { 0x0030 }, { 0,0,0 } }, + { { 0x0039 }, { 0,0,0 } }, + { { 0x003A }, { 0,1,0 } }, + { { 0x0040 }, { 0,1,0 } }, + { { 0x0041 }, { 0,0,0 } }, + { { 0x005A }, { 0,1,0 } }, + { { 0x005B }, { 0,1,0 } }, + { { 0x0060 }, { 0,1,0 } }, + { { 0x0061 }, { 0,0,0 } }, + { { 0x007A }, { 0,1,0 } }, + { { 0x007B }, { 0,1,0 } }, + { { 0x007E }, { 0,1,0 } }, + { { 0x007F }, { 0,1,0 } }, + { { 0x0080 }, { 0,1,0 } }, + { .is_last = 1 } /* Last element. */ + } + }, +#if 0 + { TST_ISW_REC( eucJP, xdigit ) +#else + { TST_ISW_REC( ja_UTF8, xdigit ) +#endif + { + { { 0x3000 }, { 0,1,0 } }, /* IDEO. SPACE */ + { { 0x3020 }, { 0,1,0 } }, /* POSTAL MARK FACE */ + { { 0x3029 }, { 0,1,0 } }, /* Hangzhou NUM9 */ + { { 0x302F }, { 0,1,0 } }, /* Diacritics(Hangul) */ + { { 0x3037 }, { 0,1,0 } }, /* Separator Symbol */ + { { 0x303F }, { 0,1,0 } }, /* IDEO. HALF SPACE */ + { { 0x3041 }, { 0,1,0 } }, /* HIRAGANA a */ + { { 0x3094 }, { 0,1,0 } }, /* HIRAGANA u" */ + { { 0x3099 }, { 0,1,0 } }, /* SOUND MARK */ + { { 0x309E }, { 0,1,0 } }, /* ITERATION MARK */ + { { 0x30A1 }, { 0,1,0 } }, /* KATAKANA a */ + { { 0x30FA }, { 0,1,0 } }, /* KATAKANA wo" */ + { { 0x30FB }, { 0,1,0 } }, /* KATAKANA MID.DOT */ + { { 0x30FE }, { 0,1,0 } }, /* KATAKANA ITERATION */ + { { 0x3191 }, { 0,1,0 } }, /* KANBUN REV.MARK */ + { { 0x3243 }, { 0,1,0 } }, /* IDEO. MARK (reach) */ + { { 0x32CB }, { 0,1,0 } }, /* IDEO.TEL.SYM.DEC12 */ + { { 0x32FE }, { 0,1,0 } }, /* MARU KATAKANA wo */ + { { 0x33FE }, { 0,1,0 } }, /* CJK IDEO.TEL.31th */ + { { 0x4E00 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E05 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4E06 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x4E07 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x4FFF }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9000 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9006 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0x9007 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA4 }, { 0,1,0 } }, /* CJK UNI.IDEO.NON-J */ + { { 0x9FA5 }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0xFE4F }, { 0,1,0 } }, /* CJK UNI.IDEO. */ + { { 0xFF0F }, { 0,1,0 } }, /* FULL SLASH */ + { { 0xFF19 }, { 0,1,0 } }, /* FULL 9 */ + { { 0xFF20 }, { 0,1,0 } }, /* FULL @ */ + { { 0xFF3A }, { 0,1,0 } }, /* FULL Z */ + { { 0xFF40 }, { 0,1,0 } }, /* FULL GRAVE ACC. */ + { { 0xFF5A }, { 0,1,0 } }, /* FULL z */ + { { 0xFF5E }, { 0,1,0 } }, /* FULL ~ (tilde) */ + { { 0xFF61 }, { 0,1,0 } }, /* HALF IDEO.STOP. . */ + { { 0xFF65 }, { 0,1,0 } }, /* HALF KATA MID.DOT */ + { { 0xFF66 }, { 0,1,0 } }, /* HALF KATA WO */ + { { 0xFF6F }, { 0,1,0 } }, /* HALF KATA tu */ + { { 0xFF70 }, { 0,1,0 } }, /* HALF KATA PL - */ + { { 0xFF71 }, { 0,1,0 } }, /* HALF KATA A */ + { { 0xFF9E }, { 0,1,0 } }, /* HALF KATA MI */ + { .is_last = 1 } /* Last element. */ + } + }, + { TST_ISW_REC (end, xdigit) } +}; diff --git a/test/locale-mbwc/dat_mblen.c b/test/locale-mbwc/dat_mblen.c new file mode 100644 index 000000000..8da038c75 --- /dev/null +++ b/test/locale-mbwc/dat_mblen.c @@ -0,0 +1,137 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_mblen.c + * + * MBLEN: int mblen (char *s, size_t n); + */ + + +/* + * NOTE: + * int mblen (char *s, size_t n); + * + * where n: a maximum number of bytes + * + * return - the number of bytes + * + * CAUTION: + * + * o When you feed a null pointer for a string (s) to the function, + * set s_flg=0 instead of putting just a 'NULL' there. + * Even if you set a 'NULL', it doens't mean a NULL pointer. + * + * o When s is a null pointer, the function checks state dependency. + * + * state-dependent encoding - return NON-zero + * state-independent encoding - return 0 + * + * If state-dependent encoding is expected, set + * + * s_flg = 0, ret_flg = 0, ret_val = +1 + * + * If state-independent encoding is expected, set + * + * s_flg = 0, ret_flg = 0, ret_val = 0 + * + * + * When you set ret_flg=1, the test program simply compares an + * actual return value with an expected value. You can check + * state-independent case (return value is 0) in that way, but + * you can not check state-dependent case. So when you check + * state- dependency in this test function: tst_mblen(), set + * ret_flg=0 always. It's a special case, and the test + * function takes care of it. + * + * s_flg=0 ret_flg=0 + * | | + * { 0, 0 }, { 0, 0, 0, x } + * | | + * not used ret_val: 0/+1 + * (expected val) */ + + +TST_MBLEN tst_mblen_loc [] = { + { + { Tmblen, TST_LOC_de }, + { + /* 01: a character. */ + { { 1, "\300", USE_MBCURMAX }, { 0, 1, 1 } }, + /* 02: a character. */ + { { 1, "\309", USE_MBCURMAX }, { 0, 1, 1 } }, + /* 03: a character + an invalid byte. */ + { { 1, "Z\204", USE_MBCURMAX }, { 0, 1, +1 } }, + /* 04: control/invalid characters. */ + { { 1, "\177\000", USE_MBCURMAX }, { 0, 1, +1 } }, + /* 05: a null string. */ + { { 1, "", USE_MBCURMAX }, { 0, 1, 0 } }, + /* 06: a null pointer. */ + { { 0, "", USE_MBCURMAX }, { 0, 0, 0 } }, + /* Last element. */ + { .is_last = 1 } + } + }, + { + { Tmblen, TST_LOC_enUS }, + { + /* 01: a character. */ + { { 1, "A", USE_MBCURMAX }, { 0, 1, 1 } }, + /* 02: a character. */ + { { 1, "a", USE_MBCURMAX }, { 0, 1, 1 } }, + /* 03: a character + an invalid byte. */ + { { 1, "Z\204", USE_MBCURMAX }, { 0, 1, +1 } }, + /* 04: control/invalid characters. */ + { { 1, "\177\000", USE_MBCURMAX }, { 0, 1, +1 } }, + /* 05: a null string. */ + { { 1, "", USE_MBCURMAX }, { 0, 1, 0 } }, + /* 06: a null pointer. */ + { { 0, "", USE_MBCURMAX }, { 0, 0, 0 } }, + /* Last element. */ + { .is_last = 1 } + } + }, +#if 0 + { + { Tmblen, TST_LOC_eucJP }, + { + /* 01: a character. */ + { { 1, "\264\301", USE_MBCURMAX }, { 0, 1, 2 } }, + /* 02: a character. */ + { { 1, "\216\261", USE_MBCURMAX }, { 0, 1, 2 } }, + /* 03: a character + an invalid byte. */ + { { 1, "\260\241\200", USE_MBCURMAX }, { 0, 1, 2 } }, + /* 04: control/invalid characters. */ + { { 1, "\377\202", USE_MBCURMAX }, { EILSEQ, 1, -1 } }, + /* 05: a null string. */ + { { 1, "", USE_MBCURMAX }, { 0, 1, 0 } }, + /* 06: a null pointer. */ + { { 0, "", USE_MBCURMAX }, { 0, 0, 0 } }, + /* Last element. */ + { .is_last = 1 } + } + }, +#else + { + { Tmblen, TST_LOC_ja_UTF8 }, + { + /* 01: a character. */ + { { 1, "\346\274\242", USE_MBCURMAX }, { 0, 1, 3 } }, + /* 02: a character. */ + { { 1, "\357\275\261", USE_MBCURMAX }, { 0, 1, 3 } }, + /* 03: a character + an invalid byte. */ + { { 1, "\345\272\234\200", USE_MBCURMAX }, { 0, 1, 3 } }, + /* 04: control/invalid characters. */ + { { 1, "\377\202", USE_MBCURMAX }, { EILSEQ, 1, -1 } }, + /* 05: a null string. */ + { { 1, "", USE_MBCURMAX }, { 0, 1, 0 } }, + /* 06: a null pointer. */ + { { 0, "", USE_MBCURMAX }, { 0, 0, 0 } }, + /* Last element. */ + { .is_last = 1 } + } + }, +#endif + { + { Tmblen, TST_LOC_end} + } +}; diff --git a/test/locale-mbwc/dat_mbrlen.c b/test/locale-mbwc/dat_mbrlen.c new file mode 100644 index 000000000..63ae19fb2 --- /dev/null +++ b/test/locale-mbwc/dat_mbrlen.c @@ -0,0 +1,222 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_mbrlen.c + * + * MBRLEN: size_t mbrlen (const char *s, size_t n, mbstate_t *ps); + */ + +/* + * NOTE: + * (1) A mbstate object is initialized for + * every new data record by the test program. + * + * (2) USE_MBCURMAX is defined as a value of 99. + * + */ + + +TST_MBRLEN tst_mbrlen_loc [] = { + { + { Tmbrlen, TST_LOC_de }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, "", 0, 0, 0 }, + { 1, "", 1, 0, 0 }, + { 1, "\300", USE_MBCURMAX, 0, 0 }, + } + }, + { + { + { 0, 1, 0, }, + { 0, 1, 0, }, + { 0, 1, 1, }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, "\300\001", 0, 0, 0 }, + { 1, "\300\001", 1, 0, 0 }, + { 1, "\317\001", USE_MBCURMAX, 0, 0 }, + } + }, + { + { + { 0, 1, 0, }, + { 0, 1, 1, }, + { 0, 1, 1, }, + } + } + }, + { .is_last = 1 } + } + }, + { + { Tmbrlen, TST_LOC_enUS }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, "A", 0, 0, 0 }, + { 1, "A", 1, 0, 0 }, + { 1, "A", USE_MBCURMAX, 0, 0 }, + } + }, + { + { + { 0, 1, 0, }, + { 0, 1, 1, }, + { 0, 1, 1, }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, "\317\001", 0, 1, 0 }, + { 1, "\317\001", 1, 1, 0 }, + { 1, "\317\001", USE_MBCURMAX, 1, 0 }, + } + }, + { + { + { 0, 1, 0, }, + { EILSEQ, 1, -1, }, + { EILSEQ, 1, -1, }, + } + } + }, + { .is_last = 1 } + } + }, +#if 0 + { + { Tmbrlen, TST_LOC_eucJP }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, "\317\302", 1, 1, 1 }, + { 0, "", 0, 1, 0 }, + { 1, "\317\302", USE_MBCURMAX, 1, 1 }, + } + }, + { + { + { 0, 1, -2, }, + { 0, 1, -1, }, + { 0, 1, 2, }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, "\317", 1, 1, 0 }, + { 1, "\302", 1, 1, 0 }, + { 1, "\317\302", USE_MBCURMAX, 0, 0 }, + } + }, + { + { + { 0, 1, -2, }, +#ifdef SHOJI_IS_RIGHT + { 0, 1, +2, }, +#else + /* XXX ISO C explicitly says that the return value does not + XXX reflect the bytes contained in the state. */ + { 0, 1, +1, }, +#endif + { 0, 1, 2, }, + } + } + }, + { /*----------------- #03 -----------------*/ + { + { + { 1, "\216\217", 0, 0, 0 }, + { 1, "\216\217", 1, 0, 0 }, + { 1, "\216\217", USE_MBCURMAX, 0, 0 }, + } + }, + { + { + { 0, 1, 0, }, + { 0, 1, -2, }, + { EILSEQ, 1, -1, }, + } + } + }, + { .is_last = 1 } + } + }, +#else + { + { Tmbrlen, TST_LOC_ja_UTF8 }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, "\345\222\214", 1, 1, 1 }, + { 0, "", 0, 1, 0 }, + { 1, "\345\222\214", USE_MBCURMAX, 1, 1 }, + } + }, + { + { + { 0, 1, -2, }, + { 0, 1, -1, }, + { 0, 1, 3, }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, "\317", 1, 1, 0 }, + { 1, "\266", 1, 1, 0 }, + { 1, "\345\222\214", USE_MBCURMAX, 0, 0 }, + } + }, + { + { + { 0, 1, -2, }, +#ifdef SHOJI_IS_RIGHT + { 0, 1, +2, }, +#else + /* XXX ISO C explicitly says that the return value does not + XXX reflect the bytes contained in the state. */ + { 0, 1, +1, }, +#endif + { 0, 1, 3, }, + } + } + }, + { /*----------------- #03 -----------------*/ + { + { + { 1, "\302\303", 0, 0, 0 }, + { 1, "\302\303", 1, 0, 0 }, + { 1, "\302\303", USE_MBCURMAX, 0, 0 }, + } + }, + { + { + { 0, 1, 0, }, + { 0, 1, -2, }, + { EILSEQ, 1, -1, }, + } + } + }, + { .is_last = 1 } + } + }, +#endif + { + { Tmbrlen, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_mbrtowc.c b/test/locale-mbwc/dat_mbrtowc.c new file mode 100644 index 000000000..b8eb3dd21 --- /dev/null +++ b/test/locale-mbwc/dat_mbrtowc.c @@ -0,0 +1,140 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_mbrtowc.c + * + * MBTOWC: size_t mbrtowc (wchar_t *pwc, char *s, size_t n, + * mbstate_t *ps); + */ + +#include <limits.h> + +/* Note: + assumes en_US = en_US.ascii +*/ + + + + +TST_MBRTOWC tst_mbrtowc_loc [] = { + { + { Tmbrtowc, TST_LOC_de }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, 1, "ÄÖÜ", 1, 0, 0 }, + { 1, 1, "ÄÖÜ", 2, 0, 0 }, + { 1, 1, "ÄÖÜ", USE_MBCURMAX, 0, 0 }, + } + }, + { + { + { 0, 1, 1, 0x00C4 }, + { 0, 1, 1, 0x00C4 }, + { 0, 1, 1, 0x00C4 }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, 1, "ÄÖÜ", 1, 0, 0 }, + { 1, 1, "ÄÖÜ", 2, 0, 0 }, + { 1, 1, "ÄÖÜ", USE_MBCURMAX, 0, 0 }, + } + }, + { + { + { 0, 1, 1, 0x00C4 }, + { 0, 1, 1, 0x00C4 }, + { 0, 1, 1, 0x00C4 }, + } + } + }, + { .is_last = 1 } + } + }, +#if 0 + /* XXX: These tests don't make sense to me. */ + { + { Tmbrtowc, TST_LOC_enUS }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, 1, "ÄÖÜ", 1, 0, 0 }, + { 1, 1, "ÄÖÜ", 2, 0, 0 }, + { 1, 1, "ÄÖÜ", USE_MBCURMAX, 0, 0 }, + } + }, + { + { + { 0, 1, 1, 0x00C4 }, + { 0, 1, 1, 0x00C4 }, + { 0, 1, 1, 0x00C4 }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, 1, "ÄÖÜ", 1, 0, 0 }, + { 1, 1, "ÄÖÜ", 2, 0, 0 }, + { 1, 1, "ÄÖÜ", USE_MBCURMAX, 0, 0 }, + } + }, + { + { + { 0, 1, 1, 0x00C4 }, + { 0, 1, 1, 0x00C4 }, + { 0, 1, 1, 0x00C4 }, + } + } + }, + { .is_last = 1 } + } + }, + { + { Tmbrtowc, TST_LOC_eucJP }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, 1, "ÄÖÜ", 1, 0, 0 }, + { 1, 1, "ÄÖÜ", 2, 0, 0 }, + { 1, 1, "ÄÖÜ", USE_MBCURMAX, 0, 0 }, + } + }, + { + { + { 0, 1, 1, 0x00C4 }, + { 0, 1, 1, 0x00C4 }, + { 0, 1, 1, 0x00C4 }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, 1, "ÄÖÜ", 1, 0, 0 }, + { 1, 1, "ÄÖÜ", 2, 0, 0 }, + { 1, 1, "ÄÖÜ", USE_MBCURMAX, 0, 0 }, + } + }, + { + { + { 0, 1, 1, 0x00C4 }, + { 0, 1, 1, 0x00C4 }, + { 0, 1, 1, 0x00C4 }, + } + } + }, + { .is_last = 1 } + } + }, +#endif + { + { Tmbrtowc, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_mbsrtowcs.c b/test/locale-mbwc/dat_mbsrtowcs.c new file mode 100644 index 000000000..30a0a6c02 --- /dev/null +++ b/test/locale-mbwc/dat_mbsrtowcs.c @@ -0,0 +1,180 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_mbsrtowcs.c + * + * MBSRTOWCS: size_t mbsrtowcs (wchar_t *ws, char **s, size_t n, + * mbstate_t *ps); + */ + + +TST_MBSRTOWCS tst_mbsrtowcs_loc [] = { + { + { Tmbsrtowcs, TST_LOC_de }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, "üäö", 4, 0,0 }, + { 1, "üäö", 3, 0,0 }, + { 1, "üäö", 2, 0,0 }, + } + }, + { + { + { 0,1,3, { 0x00FC,0x00E4,0x00F6,0x0000 } }, + { 0,1,3, { 0x00FC,0x00E4,0x00F6,0x0000 } }, + { 0,1,2, { 0x00FC,0x00E4,0x00F6,0x0000 } }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, "üäö", 4, 0,0 }, + { 1, "", 1, 0,0 }, + { 0, "üäö", 4, 0,0 }, + } + }, + { + { + { 0,1,3, { 0x00FC,0x00E4,0x00F6,0x0000 } }, + { 0,1,0, { 0x0000 } }, + { 0,1,3, { 0x0000 } }, + } + } + }, + { /*----------------- END -----------------*/ + .is_last = 1 + } + } + }, + + { + { Tmbsrtowcs, TST_LOC_enUS }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, "ABC", 4, 0,0 }, + { 1, "ABC", 3, 0,0 }, + { 1, "ABC", 2, 0,0 }, + } + }, + { + { + { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, + { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, + { 0,1,2, { 0x0041,0x0042,0x0043,0x0000 } }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, "ABC", 4, 0,0 }, + { 1, "", 1, 0,0 }, + { 0, "ABC", 4, 0,0 }, + } + }, + { + { + { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, + { 0,1,0, { 0x0000 } }, + { 0,1,3, { 0x0000 } }, + } + } + }, + { /*----------------- END -----------------*/ + .is_last = 1 + } + } + }, + +#if 0 + { + { Tmbsrtowcs, TST_LOC_eucJP }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, "\244\242\244\244\244\246ABC", 7, 0,0 }, + { 1, "\244\242\244\244\244\246ABC", 6, 0,0 }, + { 1, "\244\242\244\244\244\246ABC", 4, 0,0 }, + } + }, + { + { + { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, + { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, + { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 } }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, "\244\242\244\244\244\246ABC", 7, 0,0 }, + { 1, "", 1, 0,0 }, + { 0, "\244\242\244\244\244\246ABC", 7, 0,0 }, + } + }, + { + { + { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, + { 0,1,0, { 0x0000 } }, + { 0,1,6, { 0x0000 } }, + } + } + }, + { /*----------------- END -----------------*/ + .is_last = 1 + } + } + }, +#else + { + { Tmbsrtowcs, TST_LOC_ja_UTF8 }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, "\343\201\202\343\201\204\343\201\206ABC", 7, 0,0 }, + { 1, "\343\201\202\343\201\204\343\201\206ABC", 6, 0,0 }, + { 1, "\343\201\202\343\201\204\343\201\206ABC", 4, 0,0 }, + } + }, + { + { + { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, + { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, + { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 } }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, "\343\201\202\343\201\204\343\201\206ABC", 7, 0,0 }, + { 1, "", 1, 0,0 }, + { 0, "\343\201\202\343\201\204\343\201\206ABC", 7, 0,0 }, + } + }, + { + { + { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, + { 0,1,0, { 0x0000 } }, + { 0,1,6, { 0x0000 } }, + } + } + }, + { /*----------------- END -----------------*/ + .is_last = 1 + } + } + }, +#endif + { + { Tmbsrtowcs, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_mbstowcs.c b/test/locale-mbwc/dat_mbstowcs.c new file mode 100644 index 000000000..3b8ce65dd --- /dev/null +++ b/test/locale-mbwc/dat_mbstowcs.c @@ -0,0 +1,190 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_mbstowcs.c + * + * MBSTOWCS: size_t mbstowcs (wchar_t *ws, char *s, size_t n); + */ + +#include <limits.h> + +TST_MBSTOWCS tst_mbstowcs_loc [] = { + { + { Tmbstowcs, TST_LOC_de }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, 1, "ABC", 4 }, + { 1, 1, "ABC", 3 }, + { 1, 1, "ABC", 2 }, + } + }, + { + { + { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, + { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, + { 0,1,2, { 0x0041,0x0042,0x0043,0x0000 } }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, 1, "ABC", 4 }, + { 1, 1, "", 1 }, + { 0, 1, "ABC", 4 }, + } + }, + { + { + { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, + { 0,1,0, { 0x0000 } }, + { 0,1,3, { 0x0000 } }, + } + } + }, + { .is_last = 1 } + } + }, + { + { Tmbstowcs, TST_LOC_enUS }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, 1, "ABC", 4 }, + { 1, 1, "ABC", 3 }, + { 1, 1, "ABC", 2 }, + } + }, + { + { + { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, + { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, + { 0,1,2, { 0x0041,0x0042,0x0043,0x0000 } }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, 1, "ABC", 4 }, + { 1, 1, "", 1 }, + { 0, 1, "ABC", 4 }, + } + }, + { + { + { 0,1,3, { 0x0041,0x0042,0x0043,0x0000 } }, + { 0,1,0, { 0x0000 } }, + { 0,1,3, { 0x0000 } }, + } + } + }, + { .is_last = 1 } + } + }, +#if 0 + { + { Tmbstowcs, TST_LOC_eucJP }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, 1, "\244\242\244\244\244\246ABC", 7 }, + { 1, 1, "\244\242\244\244\244\246ABC", 6 }, + { 1, 1, "\244\242\244\244\244\246ABC", 4 }, + } + }, + { + { + { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, + { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, + { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 } }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { +#ifdef SHOJI_IS_RIGHT + /* XXX I really don't understand the first and third line. + the result of the first line is the same as the first + in the last test (i.e., returns 6). Also, the third + test will simply convert everything. */ + { 1, 1, "\244\242\244\244\244\246ABC", 7 }, + { 1, 1, "", 1 }, + { 0, 1, "\244\242\244\244\244\246ABC", 7 }, +#else + { 1, 1, "\244\242\244\244\244\246ABC", 4 }, + { 1, 1, "", 1 }, + { 0, 1, "\244\242\244\244\244\246ABC", 0 }, +#endif + } + }, + { + { + { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 } }, + { 0,1,0, { 0x0000 } }, + { 0,1,6, { 0x0000 } }, + } + } + }, + { .is_last = 1 } + } + }, +#else + { + { Tmbstowcs, TST_LOC_ja_UTF8 }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, 1, "\343\201\202\343\201\204\343\201\206ABC", 7 }, + { 1, 1, "\343\201\202\343\201\204\343\201\206ABC", 6 }, + { 1, 1, "\343\201\202\343\201\204\343\201\206ABC", 4 }, + } + }, + { + { + { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, + { 0,1,6, { 0x3042,0x3044,0x3046,0x0041,0x0042,0x0043,0x0000 }}, + { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 } }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { +#ifdef SHOJI_IS_RIGHT + /* XXX I really don't understand the first and third line. + the result of the first line is the same as the first + in the last test (i.e., returns 6). Also, the third + test will simply convert everything. */ + { 1, 1, "\244\242\244\244\244\246ABC", 7 }, + { 1, 1, "", 1 }, + { 0, 1, "\244\242\244\244\244\246ABC", 7 }, +#else + { 1, 1, "\343\201\202\343\201\204\343\201\206ABC", 4 }, + { 1, 1, "", 1 }, + { 0, 1, "\343\201\202\343\201\204\343\201\206ABC", 7 }, +#endif + } + }, + { + { + { 0,1,4, { 0x3042,0x3044,0x3046,0x0041,0x0000 } }, + { 0,1,0, { 0x0000 } }, + { 0,1,6, { 0x0000 } }, + } + } + }, + { .is_last = 1 } + } + }, +#endif + { + { Tmbstowcs, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_mbtowc.c b/test/locale-mbwc/dat_mbtowc.c new file mode 100644 index 000000000..6527dfc2e --- /dev/null +++ b/test/locale-mbwc/dat_mbtowc.c @@ -0,0 +1,444 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_mbtowc.c + * + * MBTOWC: int mbtowc (wchar_t *wp, char *s, size_t n); + */ + +/* NOTE: + * + * int mbtowc (wchar_t *wp, char *s, size_t n); + * + * where n: a maximum number of bytes + * return: the number of bytes + * + * + * o When you feed a null pointer for a string (s) to the function, + * set s_flg=0 instead of putting just a 'NULL' there. + * Even if you put a 'NULL', it means a null string as well as "". + * + * o When s is a null pointer, the function checks state dependency. + * + * state-dependent encoding - return NON-zero + * state-independent encoding - return 0 + * + * If state-dependent encoding is expected, set + * + * s_flg = 0, ret_flg = 0, ret_val = +1 + * + * If state-independent encoding is expected, set + * + * s_flg = 0, ret_flg = 0, ret_val = 0 + * + * + * When you set ret_flg=1, the test program simply compares + * an actual return value with an expected value. You can + * check state-independent case (return value is 0) in that + * way, but you can not check state-dependent case. So when + * you check state- dependency in this test function: + * tst_mbtowc(), set ret_flg=0 always. It's a special case + * and the test function takes care of it. + * + * w_flg + * | s: (a null string; can't be (char *)NULL) + * | | + * input. { 1, 0, (char)NULL, MB_LEN_MAX }, + * | + * s_flg=0: makes _s_ a null pointer. + * + * expect { 0,0,0,x, 0x0000 }, + * | | + * | ret_val: 0/+1 + * ret_flg=0 + * + * + * Test data for State dependent encodings: + * + * mbtowc( NULL, NULL, 0 ); ... first data + * mbtowc( &wc, s1, n1 ); ... second data + * mbtowc( &wc, s2, n2 ); ... third data + * */ + +#include <limits.h> + +TST_MBTOWC tst_mbtowc_loc [] = { + { + { Tmbtowc, TST_LOC_de }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, 1, "\xfc\xe4\xf6", 1 }, + { 1, 1, "\xfc\xe4\xf6", 2 }, + { 1, 1, "\xfc\xe4\xf6", MB_LEN_MAX }, + } + }, + { + { + { 0, 1, 1, 0x00FC }, + { 0, 1, 1, 0x00FC }, + { 0, 1, 1, 0x00FC }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, 1, "\177", MB_LEN_MAX }, + { 1, 1, "\200", MB_LEN_MAX }, + { 1, 1, "\201", MB_LEN_MAX }, + } + }, + { + { + { 0, 1, 1, 0x007F }, + { 0, 1, 1, 0x0080 }, + { 0, 1, 1, 0x0081 }, + } + } + }, + { /*----------------- #03 -----------------*/ + { + { + { 1, 1, "", MB_LEN_MAX }, + { 0, 1, "\xfc\xe4\xf6", 1 }, + { 0, 1, "\xfc\xe4\xf6", 2 }, + } + }, + { + { + { 0, 1, 0, 0x0000 }, + { 0, 1, 1, 0x0000 }, + { 0, 1, 1, 0x0000 }, + } + } + }, + { /*----------------- #04 -----------------*/ + { + { + { 0, 1, "\xfc\xe4\xf6", MB_LEN_MAX }, + { 0, 1, "\177", MB_LEN_MAX }, + { 0, 1, "", MB_LEN_MAX }, + } + }, + { + { + { 0, 1, 1, 0x0000 }, + { 0, 1, 1, 0x0000 }, + { 0, 1, 0, 0x0000 }, + } + } + }, + { /*----------------- #05 -----------------*/ + { + { + { 0, 1, "\xfc\xe4\xf6", MB_LEN_MAX }, + { 0, 1, "\177", MB_LEN_MAX }, + { 0, 0, (char)NULL, MB_LEN_MAX }, + } + }, + { + { + { 0, 1, 1, 0x0000 }, + { 0, 1, 1, 0x0000 }, + { 0, 0, 0, 0x0000 }, + } + } + }, + { .is_last = 1 } + } + }, + { + { Tmbtowc, TST_LOC_enUS }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, 1, "ABC", 1 }, + { 1, 1, "ABC", 2 }, + { 1, 1, "ABC", MB_LEN_MAX }, + } + }, + { + { + { 0, 1, 1, 0x0041 }, + { 0, 1, 1, 0x0041 }, + { 0, 1, 1, 0x0041 }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, 1, "\177", MB_LEN_MAX }, + { 1, 1, "\200", MB_LEN_MAX }, + { 1, 1, "\201", MB_LEN_MAX }, + } + }, + { + { + { 0, 1, 1, 0x007F }, + { EILSEQ, 1, -1, 0x0000 }, + { EILSEQ, 1, -1, 0x0000 }, + } + } + }, + { /*----------------- #03 -----------------*/ + { + { + { 1, 1, "", MB_LEN_MAX }, + { 0, 1, "ABC", 1 }, + { 0, 1, "ABC", 2 }, + } + }, + { + { + { 0, 1, 0, 0x0000 }, + { 0, 1, 1, 0x0000 }, + { 0, 1, 1, 0x0000 }, + } + } + }, + { /*----------------- #04 -----------------*/ + { + { + { 0, 1, "ABC", MB_LEN_MAX }, + { 0, 1, "\177", MB_LEN_MAX }, + { 0, 1, "", MB_LEN_MAX }, + } + }, + { + { + { 0, 1, 1, 0x0000 }, + { 0, 1, 1, 0x0000 }, + { 0, 1, 0, 0x0000 }, + } + } + }, + { /*----------------- #05 -----------------*/ + { + { + { 0, 1, "ABC", MB_LEN_MAX }, + { 0, 1, "\177", MB_LEN_MAX }, + { 0, 0, (char)NULL, MB_LEN_MAX }, + } + }, + { + { + { 0, 1, 1, 0x0000 }, + { 0, 1, 1, 0x0000 }, + { 0, 0, 0, 0x0000 }, + } + } + }, + { .is_last = 1 } + } + }, +#if 0 + { + { Tmbtowc, TST_LOC_eucJP }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, 1, "\244\242A", 1 }, + { 1, 1, "\244\242A", 2 }, + { 1, 1, "\244\242A", MB_LEN_MAX }, + } + }, + { + { +#ifdef SHOJI_IS_RIGHT + { EILSEQ, 1, -1, 0x0000 }, +#else + /* XXX EILSEQ was introduced in ISO C99. */ + { 0, 1, -1, 0x0000 }, +#endif + { 0, 1, 2, 0x3042 }, + { 0, 1, 2, 0x3042 }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, 1, "\177\244\242", MB_LEN_MAX }, + { 1, 1, "\377\244\242", MB_LEN_MAX }, + { 1, 1, "\201\244\242", MB_LEN_MAX }, + } + }, + { + { + { 0, 1, +1, 0x007F }, +#ifdef SHOJI_IS_RIGHT + { EILSEQ, 1, -1, 0x0000 }, +#else + { 0, 1, -1, 0x0000 }, +#endif + { 0, 1, +1, 0x0081 }, + } + } + }, + { /*----------------- #03 -----------------*/ + { + { + { 1, 1, "", MB_LEN_MAX }, + { 0, 1, "\244\242A", 1 }, + { 0, 1, "\244\242A", 2 }, + } + }, + { + { + { 0, 1, 0, 0x0000 }, +#ifdef SHOJI_IS_RIGHT + { EILSEQ, 1, -1, 0x0000 }, +#else + /* XXX EILSEQ was introduced in ISO C99. */ + { 0, 1, -1, 0x0000 }, +#endif + { 0, 1, 2, 0x0000 }, + } + } + }, + { /*----------------- #04 -----------------*/ + { + { + { 0, 1, "\244\242A", MB_LEN_MAX }, + { 0, 1, "\177\244\242", MB_LEN_MAX }, + { 0, 1, "", MB_LEN_MAX }, + } + }, + { + { + { 0, 1, 2, 0x0000 }, + { 0, 1, +1, 0x0000 }, + { 0, 1, 0, 0x0000 }, + } + } + }, + { /*----------------- #05 -----------------*/ + { + { + { 0, 1, "\244\242A", MB_LEN_MAX }, + { 0, 1, "\177\244\242", MB_LEN_MAX }, + { 0, 0, (char)NULL, MB_LEN_MAX }, + } + }, + { + { + { 0, 1, 2, 0x0000 }, + { 0, 1, +1, 0x0000 }, + { 0, 0, 0, 0x0000 }, + } + } + }, + { .is_last = 1 } + } + }, +#else + { + { Tmbtowc, TST_LOC_ja_UTF8 }, + { + { /*----------------- #01 -----------------*/ + { + { + { 1, 1, "\343\201\202A", 1 }, + { 1, 1, "\343\201\202A", 3 }, + { 1, 1, "\343\201\202A", MB_LEN_MAX }, + } + }, + { + { +#ifdef SHOJI_IS_RIGHT + { EILSEQ, 1, -1, 0x0000 }, +#else + /* XXX EILSEQ was introduced in ISO C99. */ + { 0, 1, -1, 0x0000 }, +#endif + { 0, 1, 3, 0x3042 }, + { 0, 1, 3, 0x3042 }, + } + } + }, + { /*----------------- #02 -----------------*/ + { + { + { 1, 1, "\177\343\201\202", MB_LEN_MAX }, + { 1, 1, "\377\343\201\202", MB_LEN_MAX }, + { 1, 1, "\302\201\343\201\202", MB_LEN_MAX }, + } + }, + { + { + { 0, 1, +1, 0x007F }, +#ifdef SHOJI_IS_RIGHT + { EILSEQ, 1, -1, 0x0000 }, +#else + { 0, 1, -1, 0x0000 }, +#endif + { 0, 1, +2, 0x0081 }, + } + } + }, + { /*----------------- #03 -----------------*/ + { + { + { 1, 1, "", MB_LEN_MAX }, + { 0, 1, "\343\201\202A", 1 }, + { 0, 1, "\343\201\202A", 3 }, + } + }, + { + { + { 0, 1, 0, 0x0000 }, +#ifdef SHOJI_IS_RIGHT + { EILSEQ, 1, -1, 0x0000 }, +#else + /* XXX EILSEQ was introduced in ISO C99. */ + { 0, 1, -1, 0x0000 }, +#endif + { 0, 1, 3, 0x0000 }, + } + } + }, + { /*----------------- #04 -----------------*/ + { + { + { 0, 1, "\343\201\202A", MB_LEN_MAX }, + { 0, 1, "\177\343\201\202", MB_LEN_MAX }, + { 0, 1, "", MB_LEN_MAX }, + } + }, + { + { + { 0, 1, 3, 0x0000 }, + { 0, 1, +1, 0x0000 }, + { 0, 1, 0, 0x0000 }, + } + } + }, + { /*----------------- #05 -----------------*/ + { + { + { 0, 1, "\343\201\202A", MB_LEN_MAX }, + { 0, 1, "\177\343\201\202", MB_LEN_MAX }, + { 0, 0, (char)NULL, MB_LEN_MAX }, + } + }, + { + { + { 0, 1, 3, 0x0000 }, + { 0, 1, +1, 0x0000 }, + { 0, 0, 0, 0x0000 }, + } + } + }, + { .is_last = 1 } + } + }, +#endif + { + { Tmbtowc, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_strcoll.c b/test/locale-mbwc/dat_strcoll.c new file mode 100644 index 000000000..e12037ca0 --- /dev/null +++ b/test/locale-mbwc/dat_strcoll.c @@ -0,0 +1,209 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_strcoll.c + * + * STRCOLL: int strcoll (const char *s1, const char *s2); + */ + +/* + NOTE: + + If a return value is expected to be 0, set ret_flg=1 and the + expected value = 0. If a return value is expected to be a + positive/negative value, set ret_flg=0, and set the expected value + = +1/-1. + There is inconsistensy between tst_strcoll() and tst_wcscoll()(it + has cmp_flg) for input data. I'll fix it. + + Assuming en_US to be en_US.ascii. (maybe, should be iso8859-1). + + + + ASCII CODE : A,B,C, ... , a, b, c, ... B,a:-1 a,B:+1 + DICTIONARY : A,a,B,b,C,c,.... a,B:-1 B,a:+1 */ + +TST_STRCOLL tst_strcoll_loc [] = { + { + { Tstrcoll, TST_LOC_de }, + { + { /*input.*/ { "ÄBCDEFG", "ÄBCDEFG" }, /* #1 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { "XX Ä XX", "XX B XX" }, /* #2 */ + /*expect*/ { 0,0,-1, }, + }, + { /*input.*/ { "XX B XX", "XX Ä XX" }, /* #3 */ + /*expect*/ { 0,0,+1, }, + }, + { /*input.*/ { "B", "a" }, /* #4 */ + /*expect*/ { 0,0,+1, }, + }, + { /*input.*/ { "a", "B" }, /* #5 */ + /*expect*/ { 0,0,-1, }, + }, + { /*input.*/ { "b", "A" }, /* #6 */ + /*expect*/ { 0,0,+1, }, + }, + { /*input.*/ { "A", "b" }, /* #7 */ + /*expect*/ { 0,0,-1, }, + }, + { /*input.*/ { "ä", "B" }, /* #8 */ + /*expect*/ { 0,0,-1, }, + }, + { /*input.*/ { "B", "ä" }, /* #9 */ + /*expect*/ { 0,0,+1, }, + }, + { .is_last = 1 } /* Last element. */ + } + }, + { + { Tstrcoll, TST_LOC_en }, + { + { /*input.*/ { "ABCDEFG", "ABCDEFG" }, /* #1 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { "XX a XX", "XX B XX" }, /* #2 */ + /*expect*/ { 0,0,-1, }, + }, + { /*input.*/ { "XX B XX", "XX a XX" }, /* #3 */ + /*expect*/ { 0,0,+1, }, + }, + { + /* <WAIVER> */ + /*input.*/ { "B", "a" }, /* #4 */ +#ifdef SHOJI_IS_RIGHT + /*expect*/ { 0,0,-1, }, +#else + /* XXX We are not testing the C locale. */ + /*expect*/ { 0,0,+1, }, +#endif + }, + { + /* <WAIVER> */ + /*input.*/ { "a", "B" }, /* #5 */ +#ifdef SHOJI_IS_RIGHT + /*expect*/ { 0,0,+1, }, +#else + /* XXX We are not testing the C locale. */ + /*expect*/ { 0,0,-1, }, +#endif + }, + { /*input.*/ { "b", "A" }, /* #6 */ + /*expect*/ { 0,0,+1, }, + }, + { /*input.*/ { "A", "b" }, /* #7 */ + /*expect*/ { 0,0,-1, }, + }, +#ifdef NO_WAIVER + /* XXX I do not yet know whether strcoll really should reject + characters outside the multibyte character range. */ + { + /* #8 */ /* <WAIVER> */ + /*input.*/ { "\244\242\244\244\244\246\244\250\244\252", "ABCDEFG" }, + /*expect*/ { EINVAL,0,0, }, + }, + { + /* #9 */ /* <WAIVER> */ + /*input.*/ { "ABCZEFG", "\244\242\244\244\244\246\244\250\244\252" }, + /*expect*/ { EINVAL,0,0, }, + }, +#endif + { .is_last = 1 } /* Last element. */ + } + }, +#if 0 + { + { Tstrcoll, TST_LOC_eucJP }, + { + { /*input.*/ { "\244\242\244\244\244\246\244\250\244\252", + "\244\242\244\244\244\246\244\250\244\252" }, /* #1 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { "\244\242\244\244\244\246\244\250\244\252", + "\244\242\244\244\244\363\244\250\244\252" }, /* #2 */ + /*expect*/ { 0,0,-1, }, + }, + { /*input.*/ { "\244\242\244\244\244\363\244\250\244\252", + "\244\242\244\244\244\246\244\250\244\252" }, /* #3 */ + /*expect*/ { 0,0,+1, }, + }, + { /*input.*/ { "B", "a" }, /* #4 */ + /*expect*/ { 0,0,-1, }, + }, + { /*input.*/ { "a", "B" }, /* #5 */ + /*expect*/ { 0,0,+1, }, + }, + { /*input.*/ { "b", "A" }, /* #6 */ + /*expect*/ { 0,0,+1, }, + }, + { /*input.*/ { "A", "b" }, /* #7 */ + /*expect*/ { 0,0,-1, }, + }, +#ifdef NO_WAIVER + /* XXX I do not yet know whether strcoll really should reject + characters outside the multibyte character range. */ + { + /* <WAIVER> */ + /*input.*/ { "\200\216\217", "ABCDEFG" }, /* #8 */ + /*expect*/ { EINVAL,0,0, }, + }, + { + /* <WAIVER> */ + /*input.*/ { "ABCZEFG", "\200\216\217" }, /* #9 */ + /*expect*/ { EINVAL,0,0, }, + }, +#endif + { .is_last = 1 } /* Last element. */ + } + }, +#else + { + { Tstrcoll, TST_LOC_ja_UTF8 }, + { + { /*input.*/ { "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212", + "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212" }, /* #1 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212", + "\343\201\202\343\201\204\343\202\223\343\201\210\343\201\212" }, /* #2 */ + /*expect*/ { 0,0,-1, }, + }, + { /*input.*/ { "\343\201\202\343\201\204\343\202\223\343\201\210\343\201\212", + "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212" }, /* #3 */ + /*expect*/ { 0,0,+1, }, + }, + { /*input.*/ { "B", "a" }, /* #4 */ + /*expect*/ { 0,0,-1, }, + }, + { /*input.*/ { "a", "B" }, /* #5 */ + /*expect*/ { 0,0,+1, }, + }, + { /*input.*/ { "b", "A" }, /* #6 */ + /*expect*/ { 0,0,+1, }, + }, + { /*input.*/ { "A", "b" }, /* #7 */ + /*expect*/ { 0,0,-1, }, + }, +#ifdef NO_WAIVER + /* XXX I do not yet know whether strcoll really should reject + characters outside the multibyte character range. */ + { + /* <WAIVER> */ + /*input.*/ { "\200\216\217", "ABCDEFG" }, /* #8 */ + /*expect*/ { EINVAL,0,0, }, + }, + { + /* <WAIVER> */ + /*input.*/ { "ABCZEFG", "\200\216\217" }, /* #9 */ + /*expect*/ { EINVAL,0,0, }, + }, +#endif + { .is_last = 1 } /* Last element. */ + } + }, +#endif + { + { Tstrcoll, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_strfmon.c b/test/locale-mbwc/dat_strfmon.c new file mode 100644 index 000000000..8c28bba52 --- /dev/null +++ b/test/locale-mbwc/dat_strfmon.c @@ -0,0 +1,268 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY + * + * FILE: dat_strfmon.c + * + * STRFMON: size_t strfmon (char *buf, size_t nbyte, char *fmt, ... ); + */ + +/* + * NOTE: + * + * The buffer size should be enough to contain a string including a + * null char. + * Returns the number of bytes of the string (NOT including a null char). + */ + +TST_STRFMON tst_strfmon_loc [] = { + { + { Tstrfmon, TST_LOC_de }, + { + { + /* #01 */ + /*inp*/ { 24, "%n %% %i", 123.00 }, + /*exp*/ { 0,1,23, "123,00 EUR % 123,00 EUR" }, + }, + { + /* #02 */ + /*inp*/ { 24, "%n %% %i", 123.00 }, + /*exp*/ { 0,1,23, "123,00 EUR % 123,00 EUR" }, + }, + { + /* #03 */ + /*inp*/ { 23, "%n %% %i", 123.00 }, + /*exp*/ { E2BIG,1,-1, "" }, + }, + { + /* #04 */ + /*inp*/ { 31, "%n|%i", 1234.561 }, + /*exp*/ { 0,1,25, "1.234,56 EUR|1.234,56 EUR"}, + }, + { + /* #05 */ + /*inp*/ { 33, "%n|%i", -1234.561 }, + /*exp*/ { 0,1,27, "-1.234,56 EUR|-1.234,56 EUR"}, + }, + { + /* #06 */ + /*inp*/ { 33, "%13n|%12i", 1234.561 }, + /*exp*/ { 0,1,26, " 1.234,56 EUR|1.234,56 EUR"}, + }, + { + /* #07 */ + /*inp*/ { 33, "%12n|%12i", -1234.561 }, + /*exp*/ { 0,1,27, "-1.234,56 EUR|-1.234,56 EUR"}, + }, + { + /* #08 */ + /*inp*/ { 33, "%#5n|%#5i", 1234.561 }, + /*exp*/ { 0,1,29, " 1.234,56 EUR| 1.234,56 EUR"}, + }, + { + /* #09 */ + /*inp*/ { 33, "%#5n|%#5i", -1234.561 }, + /*exp*/ { 0,1,29, "- 1.234,56 EUR|- 1.234,56 EUR"}, + }, + { + /* #10 */ + /*inp*/ { 33, "%=*#5n|%=*#5i", 1234.561 }, + /*exp*/ { 0,1,29, " *1.234,56 EUR| *1.234,56 EUR"}, + }, + { + /* #11 */ + /*inp*/ { 33, "%=0#5n|%=0#5i", -1234.561 }, + /*exp*/ { 0,1,29, "-01.234,56 EUR|-01.234,56 EUR"}, + }, + { + /* #12 */ + /*inp*/ { 33, "%^#5n|%^#5i", -1234.561 }, + /*exp*/ { 0,1,27, "- 1234,56 EUR|- 1234,56 EUR"}, + }, + { + /* #13 */ + /*inp*/ { 33, "%#5.0n|%#5.0i", 1234.444 }, + /*exp*/ { 0,1,23, " 1.234 EUR| 1.234 EUR" }, + }, + { + /* #14 */ + /*inp*/ { 33, "%#5.0n|%#5.4i", -1234.555 }, + /*exp*/ { 0,1,28, "- 1.235 EUR|- 1.234,5550 EUR"}, + }, + { + /* #15 */ + /*inp*/ { 33, "%(#5n|%!(#5i", -1234.561 }, + /*exp*/ { 0,1,27, "( 1.234,56 EUR)|( 1.234,56)"}, + }, + { .is_last = 1 } + } + }, + { + { Tstrfmon, TST_LOC_enUS }, + { + { + /* #01 */ + /*inp*/ { 22, "%n %% %i", 123.00 }, + /*exp*/ { 0,1,20, "$123.00 % USD 123.00" }, + }, + { + /* #02 */ + /*inp*/ { 21, "%n %% %i", 123.00 }, + /*exp*/ { 0,1,20, "$123.00 % USD 123.00" }, + }, + { + /* #03 */ + /*inp*/ { 20, "%n %% %i", 123.00 }, + /*exp*/ { E2BIG,1,-1, "" }, + }, + { + /* #04 */ + /*inp*/ { 30, "%n|%i", 1234.561 }, + /*exp*/ { 0,1,22, "$1,234.56|USD 1,234.56" }, + }, + { + /* #05 */ + /*inp*/ { 32, "%n|%i", -1234.561 }, + /*exp*/ { 0,1,24, "-$1,234.56|-USD 1,234.56" }, + }, + { + /* #06 */ + /*inp*/ { 30, "%12n|%12i", 1234.561 }, + /*exp*/ { 0,1,25, " $1,234.56|USD 1,234.56"}, + }, + { + /* #07 */ + /*inp*/ { 32, "%12n|%12i", -1234.561 }, + /*exp*/ { 0,1,26, " -$1,234.56|-USD 1,234.56"}, + }, + { + /* #08 */ + /*inp*/ { 32, "%#5n|%#5i", 1234.561 }, + /*exp*/ { 0,1,26, " $ 1,234.56| USD 1,234.56"}, + }, + { + /* #09 */ + /*inp*/ { 32, "%#5n|%#5i", -1234.561 }, + /*exp*/ { 0,1,26, "-$ 1,234.56|-USD 1,234.56"}, + }, + { + /* #10 */ + /*inp*/ { 32, "%=*#5n|%=*#5i", 1234.561 }, + /*exp*/ { 0,1,26, " $*1,234.56| USD *1,234.56"}, + }, + { + /* #11 */ + /*inp*/ { 32, "%=0#5n|%=0#5i", -1234.561 }, + /*exp*/ { 0,1,26, "-$01,234.56|-USD 01,234.56"}, + }, + { + /* #12 */ + /*inp*/ { 32, "%^#5n|%^#5i", -1234.561 }, + /*exp*/ { 0,1,24, "-$ 1234.56|-USD 1234.56" }, + }, + { + /* #13 */ + /*inp*/ { 32, "%#5.0n|%#5.0i", 1234.444 }, + /*exp*/ { 0,1,20, " $ 1,234| USD 1,234" }, + }, + { + /* #14 */ + /*inp*/ { 32, "%#5.0n|%#5.4i", -1234.555 }, + /*exp*/ { 0,1,25, "-$ 1,235|-USD 1,234.5550"}, + }, + { + /* #15 */ + /*inp*/ { 32, "%(#5n|%!(#5i", -1234.561 }, + /*exp*/ { 0,1,24, "($ 1,234.56)|( 1,234.56)" }, + }, + { .is_last = 1 } + } + }, + { +#if 0 + { Tstrfmon, TST_LOC_eucJP }, +#else + { Tstrfmon, TST_LOC_ja_UTF8 }, +#endif + { + { + /* #01 */ + /*inp*/ { 17, "%n %% %i", 123.00 }, + /*exp*/ { 0,1,15, "\241\357123 % JPY 123" }, + }, + { + /* #02 */ + /*inp*/ { 16, "%n %% %i", 123.00 }, + /*exp*/ { 0,1,15, "\241\357123 % JPY 123" }, + }, + { + /* #03 */ + /*inp*/ { 15, "%n %% %i", 123.00 }, + /*exp*/ { E2BIG,1,-1, "" }, + }, + { + /* #04 */ + /*inp*/ { 30, "%n|%i", 1234.561 }, + /*exp*/ { 0,1,17, "\241\3571,235|JPY 1,235" }, + }, + { + /* #05 */ + /*inp*/ { 32, "%n|%i", -1234.561 }, + /*exp*/ { 0,1,19, "\241\357-1,235|JPY -1,235" }, + }, + { + /* #06 */ + /*inp*/ { 32, "%12n|%12i", 1234.561 }, + /*exp*/ { 0,1,25, " \241\3571,235| JPY 1,235" }, + }, + { + /* #07 */ + /*inp*/ { 32, "%12n|%12i", -1234.561 }, + /*exp*/ { 0,1,25, " \241\357-1,235| JPY -1,235" }, + }, + { + /* #08 */ + /*inp*/ { 32, "%#5n|%#5i", 1234.561 }, + /*exp*/ { 0,1,21, " \241\357 1,235| JPY 1,235" }, + }, + { + /* #09 */ + /*inp*/ { 32, "%#5n|%#5i", -1234.561 }, + /*exp*/ { 0,1,21, "\241\357- 1,235|JPY - 1,235" }, + }, + { + /* #10 */ + /*inp*/ { 32, "%=*#5n|%=*#5i", 1234.561 }, + /*exp*/ { 0,1,21, " \241\357*1,235| JPY *1,235" }, + }, + { + /* #11 */ + /*inp*/ { 32, "%=0#5n|%=0#5i", -1234.561 }, + /*exp*/ { 0,1,21, "\241\357-01,235|JPY -01,235" }, + }, + { + /* #12 */ + /*inp*/ { 32, "%^#5n|%^#5i", -1234.561 }, + /*exp*/ { 0,1,19, "\241\357- 1235|JPY - 1235" }, + }, + { + /* #13 */ + /*inp*/ { 32, "%#5.0n|%#5.0i", 1234.444 }, + /*exp*/ { 0,1,21, " \241\357 1,234| JPY 1,234" }, + }, + { + /* #14 */ + /*inp*/ { 32, "%#5.0n|%#5.4i", -1234.555 }, + /*exp*/ { 0,1,26, "\241\357- 1,235|JPY - 1,234.5550"}, + }, + { + /* #15 */ + /*inp*/ { 32, "%(#5n|%!(#5i", -1234.561 }, + /*exp*/ { 0,1,19, "(\241\357 1,235)|( 1,235)" }, + }, + { .is_last = 1 } + } + }, + { + { Tstrfmon, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_strxfrm.c b/test/locale-mbwc/dat_strxfrm.c new file mode 100644 index 000000000..0c672d3d7 --- /dev/null +++ b/test/locale-mbwc/dat_strxfrm.c @@ -0,0 +1,147 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY + * + * FILE: dat_strxfrm.c + * + * STRXFRM: size_t strxfrm (char *s1, const char s2, size_t n); + */ + + +/* + * NOTE: + * + * Return value and errno value are checked only for 2nd string: + * org2[]; n1 and n2 don't mean bytes to be translated. + * It means a buffer size including a null character. + * Results of this test depens on results of strcoll(). + * If you got errors, check both test results. + * + * The buffer size should be enough to contain a string including a + * null char. Returns the number of bytes of the string (NOT + * including a null char). + */ + + + +TST_STRXFRM tst_strxfrm_loc [] = { + { + { Tstrxfrm, TST_LOC_de }, + { + { /*inp*/ { "\xf6\xc4\xe4\xfc", "\xf6\xc4\xe4\xfc", 17, 17 }, /* #01 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "aA", "Aa", 10, 10 }, /* #02 */ + /*exp*/ { 0,0,0 , }, + }, + { /*inp*/ { "Aa", "aA", 10, 10 }, /* #03 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "abc", "", 13, 13 }, /* #04 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "a", "B", 7, 7 }, /* #05 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "B", "a", 7, 7 }, /* #06 */ + /*exp*/ { 0,0,0, }, + }, + { + /* hiragana == latin1 */ + /*inp*/ { "abc", "\244\241\244\242", 13, 9 }, /* #07 */ + /*exp*/ { 0,0,0, }, + }, + { .is_last = 1 } + } + }, + { + { Tstrxfrm, TST_LOC_enUS }, + { + { /*inp*/ { "abcd", "abcd", 17, 17 }, /* #01 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "aA", "Aa", 10, 10 }, /* #02 */ + /*exp*/ { 0,0,0 , }, + }, + { /*inp*/ { "Aa", "aA", 10, 10 }, /* #03 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "abc", "", 13, 13 }, /* #04 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "a", "B", 7, 7 }, /* #05 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "B", "a", 7, 7 }, /* #06 */ + /*exp*/ { 0,0,0, }, + }, +#ifdef NO_WAIVER + { + /* <WAIVER> */ + /*inp*/ { "abc", "\244\241\244\242", 13, 9 }, /* #07 */ + /*exp*/ { EINVAL,0,0, }, + }, +#endif + { .is_last = 1 } + } + }, +#if 0 + { + { Tstrxfrm, TST_LOC_eucJP }, /* ??? */ + { + { + /* #01 */ + /*inp*/ { "\244\242\244\241", "\244\241\244\242", 5, 5 }, + /*exp*/ { 0,0,0, }, + }, + { + /* #02 */ + /*inp*/ { "\244\241\244\242", "\244\242\244\241", 5, 5 }, + /*exp*/ { 0,0,0, }, + }, + { + /* #03 */ + /*inp*/ { "\244\242\216\261", "\216\261\244\242", 5, 5 }, + /*exp*/ { 0,0,0, }, + }, +#ifdef NO_WAIVER + { + /*inp*/ { "AAA", "\216\217", 5, 5 }, /* #04 */ /* <WAIVER> */ + /*exp*/ { EINVAL,0,0, }, + }, +#endif + { .is_last = 1 } + } + }, +#else + { + { Tstrxfrm, TST_LOC_ja_UTF8 }, /* ??? */ + { + { + /* #01 */ + /*inp*/ { "\343\201\202\343\201\201", "\343\201\201\343\201\202", 7, 7 }, + /*exp*/ { 0,0,0, }, + }, + { + /* #02 */ + /*inp*/ { "\343\201\201\343\201\202", "\343\201\202\343\201\201", 7, 7 }, + /*exp*/ { 0,0,0, }, + }, + { + /* #03 */ + /*inp*/ { "\343\201\202\357\275\261", "\357\275\261343\201\202", 7, 7 }, + /*exp*/ { 0,0,0, }, + }, +#ifdef NO_WAIVER + { + /*inp*/ { "AAA", "\340\277\220", 5, 5 }, /* #04 */ /* <WAIVER> */ + /*exp*/ { EINVAL,0,0, }, + }, +#endif + { .is_last = 1 } + } + }, +#endif + { + { Tstrxfrm, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_swscanf.c b/test/locale-mbwc/dat_swscanf.c new file mode 100644 index 000000000..088f165f7 --- /dev/null +++ b/test/locale-mbwc/dat_swscanf.c @@ -0,0 +1,185 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY + * + * FILE: dat_swscanf.c + * + * SWSCANF: int swscanf (const wchar_t *s, const wchar_t *fmt, ...); + */ + + +#include <errno.h> +#include <stdlib.h> +#include "tst_types.h" +#include "tgn_locdef.h" + + +TST_SWSCANF tst_swscanf_loc [] = +{ + { + { Tswscanf, TST_LOC_de }, + { + /*------------------------ 01 -----------------------*/ + { { { + 0x002D, 0x0031, 0x003A, /* %d: -1 */ + 0x0032, 0x003A, /* %u: 2 */ + 0x0033, 0x002C, 0x0033, 0x003A, /* %f: 3.3 */ + 0x00E4, 0x003A, /* %c: 'ä' */ + 0x00C4, 0x00DC, 0x0000, 0x0000, /* %s: "ÄÜ" */ + }, + L"%d:%u:%f:%c:%s", 0 + }, + { /* The fields are: err_val, ret_flag, ret_val, + val_int, val_uns, val_flt, val_c, val_s, val_S. */ + 0,1,5, + -1, 2, 3.3, 'ä', "ÄÜ", { 0x0000, }, + }, + }, + /*------------------------ 02 -----------------------*/ + { { { + 0x00E4, 0x00C4, 0x0000 /* "äÄ" */ + }, + L"%lc", 'C' + }, + { 0,1,1, + 0,0,0,0,"", { 0x00E4, 0x0000 }, + }, + }, + /*------------------------ 03 -----------------------*/ + { { { + 0x00E4, 0x00C4, 0x0000 /* "äÄ" */ + }, + L"%ls", 'S' + }, + { 0,1,1, + 0,0,0,0,"", { 0x00E4, 0x00C4, 0x0000 }, + }, + }, + /*------------------------ 04 -----------------------*/ + /* <NO_WAIVER> x 2 */ + { { { + 0x00E4, 0x00C4, 0x0000 /* "äÄ" */ + }, + L"1%d:2%d:3%d:4%d:5%d:6%d:7%d:8%d:9%d", 0 + }, +#ifdef SHOJI_IS_RIGHT + { 1,EINVAL,1,WEOF, + 0,0,0,0,"", { 0x0000 }, +#else + { 0,1,0, + 0,0,0,0,"", { 0x0000 }, +#endif + }, + }, + /*---------------------------------------------------*/ + { .is_last = 1} /* Last element. */ + } + }, + { + { Tswscanf, TST_LOC_enUS }, + { + /*------------------------ 01 -----------------------*/ + { { { 0x002D, 0x0031, 0x003A, + 0x0032, 0x003A, + 0x0035, 0x0034, 0x002E, 0x0033, 0x0045, 0x002D, 0x0031, 0x003A, + 0x0041, 0x003A, + 0x0061, 0x0062, 0x0000, 0x0000, + }, + L"%d:%u:%f:%c:%s", 0 + }, + { 0,1,5, + -1, 2, 5.43, 'A', "ab", { 0x0000 }, + }, + }, + /*------------------------ 02 -----------------------*/ + /* <NO_WAIVER> x 2 */ + { { { + 0x0063, 0x0064, 0x0000 + }, + L"%C", 'C' + }, + { 0,1,1, + 0,0,0,0,"", { 0x0063, 0x0000 }, + }, + }, + /*------------------------ 03 -----------------------*/ + { { { + 0x0063, 0x0064, 0x0000 + }, + L"%S", 'S' + }, + { 0,1,1, + 0,0,0,0,"", { 0x0063, 0x0064, 0x0000 }, + }, + }, + /*---------------------------------------------------*/ + { .is_last = 1} /* Last element. */ + } + }, + { +#if 0 + { Tswscanf, TST_LOC_eucJP }, +#else + { Tswscanf, TST_LOC_ja_UTF8 }, +#endif + { + /*------------------------ 01 -----------------------*/ + { { { 0x002D, 0x0031, 0x003A, + 0x0032, 0x003A, + 0x0033, 0x002E, 0x0033, 0x003A, + 0x0062, 0x003A, + 0x0061, 0x0062, 0x0000, 0x0000, + }, + L"%d:%u:%f:%c:%s", 0 + }, + { 0,1,5, + -1, 2, 3.3, 'b', "ab", { 0x0000 } + }, + }, + /*------------------------ 02 -----------------------*/ + { { { + 0x30A2, 0x30A4, 0x0000 + }, + L"%ls", 'S' + }, + { 0,1,1, + 0,0,0,0,"", { 0x30A2, 0x30A4, 0x0000 } + }, + }, + /*------------------------ 03 -----------------------*/ + { { { + 0x0031, 0x003A, + 0x0030, 0x003A, + 0x0033, 0x002E, 0x0039, 0x003A, + 0x0061, 0x003A, + 0x0063, 0x0064, 0x0000, 0x0000, + }, + L"%2$d:%1$u:%3$f:%4$c:%5$s", 0 + }, + { 0,1,5, + 0, 1, 3.9, 'a', "cd", { 0x0000 } + }, + }, +#ifdef SHOJI_IS_RIGHT + /* XXX This test does not make sense. The format string is + L"\x1\x2\x25\x53" and it is supposed to match the words + 0x30A2, 0x30A4, 0x0001. */ + /*------------------------ 04 -----------------------*/ + /* <NO_WAIVER> x 2 */ + { { { + 0x30A2, 0x30A4, 0x0001, 0x0000 + }, + { 0x0001,0x0002,0x0025,0x0053,0x0000 }, 'S' + }, + { EILSEQ,1,EOF, + 0,0,0,0,"", { 0x0000 } + }, + }, +#endif + /*---------------------------------------------------*/ + { .is_last = 1} /* Last element. */ + } + }, + { + { Tswscanf, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_tow-funcs.h b/test/locale-mbwc/dat_tow-funcs.h new file mode 100644 index 000000000..44564374c --- /dev/null +++ b/test/locale-mbwc/dat_tow-funcs.h @@ -0,0 +1,24 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_tow-funcs.h + * + * ISW*: int tow*( wint_t wc ); + */ + +#include <errno.h> +#include <stdlib.h> +#include <wctype.h> +#include "tst_types.h" +#include "tgn_locdef.h" + +#define TST_TOW_LOC(FUNC, func) \ + TST_TOW## FUNC tst_tow## func ##_loc[] + +#define TST_TOW_REC(locale, func) \ + { Ttow## func, TST_LOC_## locale }, + +/* + * NOTE: + * need more test data! + */ diff --git a/test/locale-mbwc/dat_towctrans.c b/test/locale-mbwc/dat_towctrans.c new file mode 100644 index 000000000..cf3712a21 --- /dev/null +++ b/test/locale-mbwc/dat_towctrans.c @@ -0,0 +1,97 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_towctrans.c + * + * TOWCTRANS: wint_t towctrans (wint_t wc, wctrans_t charclass); + */ + +#include <errno.h> +#include <stdlib.h> +#include <wctype.h> +#include "tst_types.h" +#include "tgn_locdef.h" + +/* + * NOTE: + * Set ret_flg = 1, when a return value is expected to be 0 (FALSE). + * Set ret_flg = 0, when a return value is expected to be non-zero (TRUE). + * + * Since the functions return *non*-zero value for TRUE, can't + * compare an actual return value with an expected return value. + * Set the ret_flg=0 for TRUE cases and the tst_isw*() will check + * the non-zero value. + * + * { { WEOF }, { 0,0,1,0 } }, + * | | + * | ret_val: an expected return value + * ret_flg: if 1, compare an actual return value with the + * ret_val; if 0, the test program checks + * the actual return value. + * + * CAUTION: if a charclass is invalid, the test function gives + * towctrans() an invalid wctrans object instead of a return value + * from wctrans() which is supposed to be 0. + */ + +TST_TOWCTRANS tst_towctrans_loc [] = { + { + { Ttowctrans, TST_LOC_C }, + { +#ifdef SHOJI_IS_RIGHT + { { 0x0010, "xxxxxxx" }, { EINVAL,1,0x0010 } }, +#else + { { 0x0010, "xxxxxxx" }, { 0, 1,0x0010 } }, +#endif + { { 0x007F, "tolower" }, { 0, 1,0x007F } }, + { { 0x0061, "toupper" }, { 0, 1,0x0041 } }, + { { 0x0041, "tolower" }, { 0, 1,0x0061 } }, + { .is_last = 1 } + } + }, + { + { Ttowctrans, TST_LOC_de }, + { +#ifdef SHOJI_IS_RIGHT + { { 0x0010, "tojkata" }, { EINVAL,1,0x0010 } }, +#else + { { 0x0010, "tojkata" }, { 0, 1,0x0010 } }, +#endif + { { 0x0080, "tolower" }, { 0, 1,0x0080 } }, + { { 0x00EC, "toupper" }, { 0, 1,0x00CC } }, + { { 0x00CC, "tolower" }, { 0, 1,0x00EC } }, + { .is_last = 1 } + } + }, + { + { Ttowctrans, TST_LOC_enUS }, + { +#ifdef SHOJI_IS_RIGHT + { { 0x0010, "xxxxxxx" }, { EINVAL,1,0x0010 } }, +#else + { { 0x0010, "xxxxxxx" }, { 0, 1,0x0010 } }, +#endif + { { 0x007F, "tolower" }, { 0, 1,0x007F } }, + { { 0x0061, "toupper" }, { 0, 1,0x0041 } }, + { { 0x0041, "tolower" }, { 0, 1,0x0061 } }, + { .is_last = 1 } + } + }, + { +#if 0 + { Ttowctrans, TST_LOC_eucJP }, +#else + { Ttowctrans, TST_LOC_ja_UTF8 }, +#endif + { + { { 0xFF21, "tolower" }, { 0, 1,0xFF41 } }, + { { 0xFF41, "toupper" }, { 0, 1,0xFF21 } }, + { { 0x30A1, "tojhira" }, { 0, 1,0x3041 } }, + { { 0x3041, "tojkata" }, { 0, 1,0x30A1 } }, + { .is_last = 1 } + } + }, + { + { Ttowctrans, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_towlower.c b/test/locale-mbwc/dat_towlower.c new file mode 100644 index 000000000..b6dd275fd --- /dev/null +++ b/test/locale-mbwc/dat_towlower.c @@ -0,0 +1,47 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_towlower.c + * + * ISW*: int towlower (wint_t wc); + */ + + +#include "dat_tow-funcs.h" + + +TST_TOW_LOC (LOWER, lower) = { + + { TST_TOW_REC (de, lower) + { + { { WEOF }, { 0, 1, (wint_t)-1 } }, + { { 0x0080 }, { 0, 1, 0x0080 } }, + { { 0x00CC }, { 0, 1, 0x00EC } }, + { { 0x00EC }, { 0, 1, 0x00EC } }, + { .is_last = 1 } /* Last element. */ + } + }, + { TST_TOW_REC (enUS, lower) + { + { { WEOF }, { 0, 1, (wint_t)-1 } }, + { { 0x007F }, { 0, 1, 0x007F } }, + { { 0x0041 }, { 0, 1, 0x0061 } }, + { { 0x0061 }, { 0, 1, 0x0061 } }, + { .is_last = 1 } /* Last element. */ + } + }, +#if 0 + { TST_TOW_REC (eucJP, lower) +#else + { TST_TOW_REC (ja_UTF8, lower) +#endif + { + { { 0x007F }, { 0, 1, 0x007F } }, + { { 0x0080 }, { 0, 1, 0x0080 } }, + { { 0xFF21 }, { 0, 1, 0xFF41 } }, + { { 0xFF41 }, { 0, 1, 0xFF41 } }, + { .is_last = 1 } /* Last element. */ + } + }, + { TST_TOW_REC (end, lower) } +}; diff --git a/test/locale-mbwc/dat_towupper.c b/test/locale-mbwc/dat_towupper.c new file mode 100644 index 000000000..704ad44a6 --- /dev/null +++ b/test/locale-mbwc/dat_towupper.c @@ -0,0 +1,47 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_towupper.c + * + * ISW*: int towupper (wint_t wc); + */ + + +#include "dat_tow-funcs.h" + + +TST_TOW_LOC (UPPER, upper) = { + + { TST_TOW_REC (de, upper) + { + { { WEOF }, { 0, 1, (wint_t)-1 } }, + { { 0x0080 }, { 0, 1, 0x0080 } }, + { { 0x00EC }, { 0, 1, 0x00CC } }, + { { 0x00CC }, { 0, 1, 0x00CC } }, + { .is_last = 1 } /* Last element. */ + } + }, + { TST_TOW_REC (enUS, upper) + { + { { WEOF }, { 0, 1, (wint_t)-1 } }, + { { 0x0080 }, { 0, 1, 0x0080 } }, + { { 0x0041 }, { 0, 1, 0x0041 } }, + { { 0x0061 }, { 0, 1, 0x0041 } }, + { .is_last = 1 } /* Last element. */ + } + }, +#if 0 + { TST_TOW_REC (eucJP, upper) +#else + { TST_TOW_REC (ja_UTF8, upper) +#endif + { + { { WEOF }, { 0, 1, (wint_t)-1 } }, + { { 0x007F }, { 0, 1, 0x007F } }, + { { 0xFF41 }, { 0, 1, 0xFF21 } }, + { { 0xFF21 }, { 0, 1, 0xFF21 } }, + { .is_last = 1 } /* Last element. */ + } + }, + { TST_TOW_REC (end, upper) } +}; diff --git a/test/locale-mbwc/dat_wcrtomb.c b/test/locale-mbwc/dat_wcrtomb.c new file mode 100644 index 000000000..055f7b08c --- /dev/null +++ b/test/locale-mbwc/dat_wcrtomb.c @@ -0,0 +1,122 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcrtomb.c + * + * WCRTOMB: intwcrtomb (char *s, wchar_t wc, mbstate_t *ps); + * + */ + +TST_WCRTOMB tst_wcrtomb_loc [] = { + { + { Twcrtomb, TST_LOC_de }, + { + /* #01 : normal case */ + { /*input.*/ { 1, 0x00FC, 0,0 }, + /*expect*/ { 0, 1,1, "ü" }, + }, + /* #02 : normal case */ + { /*input.*/ { 1, 0x00D6, 0,0 }, + /*expect*/ { 0, 1,1, "Ö" }, + }, + /* #03 : error case */ + { /*input.*/ { 1, 0xFFA1, 0,0 }, + /*expect*/ { EILSEQ,1,-1, "" }, + }, + /* #04 : */ + { /*input.*/ { 0, 0x0041, 0,0 }, + /*expect*/ { 0, 1,1, "" }, + }, + /* #05 : */ + { /*input.*/ { 0, 0x0092, 0,0 }, + /*expect*/ { 0, 1,1, "" }, + }, + { .is_last = 1 } + } + }, + { + { Twcrtomb, TST_LOC_enUS }, + { + /* #01 : normal case */ + { /*input.*/ { 1, 0x0041, 0,0 }, + /*expect*/ { 0, 1,1, "A" }, + }, + /* #02 : normal case */ + { /*input.*/ { 1, 0x0042, 0,0 }, + /*expect*/ { 0, 1,1, "B" }, + }, + /* #03 : error case */ + /* <WAIVER> x 2 */ + { /*input.*/ { 1, 0x0092, 0,0 }, /* assume ascii */ + /*expect*/ { EILSEQ,1,-1, "" }, + }, + /* #04 : */ + { /*input.*/ { 0, 0x0041, 0,0 }, + /*expect*/ { 0, 1,1, "" }, + }, + /* #05 : */ + { /*input.*/ { 0, 0x0092, 0,0 }, + /*expect*/ { 0, 1,1, "" }, + }, + { .is_last = 1 } + } + }, +#if 0 + { + { Twcrtomb, TST_LOC_eucJP }, + { + /* #01 : normal case */ + { /*input.*/ { 1, 0x3042, 0,0 }, + /*expect*/ { 0, 1,2, "\244\242" }, + }, + /* #02 : normal case */ + { /*input.*/ { 1, 0x3044, 0,0 }, + /*expect*/ { 0, 1,2, "\244\244" }, + }, + /* #03 : normal case */ + { /*input.*/ { 1, 0x008E, 0,0 }, + /*expect*/ { EILSEQ, 1,-1, "" }, + }, + /* #04 : */ + { /*input.*/ { 0, 0x3042, 0,0 }, + /*expect*/ { 0, 0,0, "" }, + }, + /* #05 : */ + { /*input.*/ { 0, 0x008E, 0,0 }, + /*expect*/ { 0, 0,0, "" }, + }, + { .is_last = 1 } + } + }, +#else + { + { Twcrtomb, TST_LOC_ja_UTF8 }, + { + /* #01 : normal case */ + { /*input.*/ { 1, 0x3042, 0,0 }, + /*expect*/ { 0, 1,3, "\343\201\202" }, + }, + /* #02 : normal case */ + { /*input.*/ { 1, 0x3044, 0,0 }, + /*expect*/ { 0, 1,3, "\343\201\204" }, + }, + /* #03 : normal case */ + { /*input.*/ { 1, 0x008E, 0,0 }, + /*expect*/ { EILSEQ, 1,-1, "" }, + }, + /* #04 : */ + { /*input.*/ { 0, 0x3042, 0,0 }, + /*expect*/ { 0, 0,0, "" }, + }, + /* #05 : */ + { /*input.*/ { 0, 0x008E, 0,0 }, + /*expect*/ { 0, 0,0, "" }, + }, + { .is_last = 1 } + } + }, +#endif + { + { Twcrtomb, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_wcscat.c b/test/locale-mbwc/dat_wcscat.c new file mode 100644 index 000000000..f54e72de3 --- /dev/null +++ b/test/locale-mbwc/dat_wcscat.c @@ -0,0 +1,116 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcscat.c + * + * WCSCAT: wchar_t *wcscat (wchar_t *ws1, wchar_t *ws2) + */ + +/* NOTE: + Since this is not a locale sensitive function, + it doesn't make sense to test the function on some + locales. Better make different test cases for each locale ... + (Also some wc* functions are not locale sensitive.) +*/ + + +TST_WCSCAT tst_wcscat_loc [] = { + + { + {Twcscat, TST_LOC_de}, + { + /* 1 */ + {{{ 0x00C1,0x00C2,0x0000 }, + { 0x00C3,0x00C4,0x0000 }, }, + { 0, 0, 0, + { 0x00C1,0x00C2,0x00C3,0x00C4,0x0000 } }, + }, + /* 2 */ + {{{ 0x0001,0x0002,0x0000 }, + { 0x0003,0x0004,0x0000 }, }, + { 0, 0, 0, + { 0x0001,0x0002,0x0003,0x0004,0x0000 } }, + }, + /* 3 */ + {{{ 0x0000 }, + { 0x00C3,0x00C4,0x0000 }, }, + { 0, 0, 0, + { 0x00C3,0x00C4,0x0000 } }, + }, + /* 4 */ + {{{ 0x0001,0xFFFF,0x0000 }, + { 0x0080,0x0090,0x0000 }, }, + { 0, 0, 0, + { 0x0001,0xFFFF,0x0080,0x0090,0x0000 } }, + }, + {.is_last = 1} + } + }, + { + {Twcscat, TST_LOC_enUS}, + { + /* 1 */ + {{{ 0x0041,0x0042,0x0000 }, + { 0x0043,0x0044,0x0000 }, }, + { 0, 0, 0, + { 0x0041,0x0042,0x0043,0x0044,0x0000 } }, + }, + /* 2 */ + {{{ 0x0001,0x0002,0x0000 }, + { 0x0003,0x0004,0x0000 }, }, + { 0, 0, 0, + { 0x0001,0x0002,0x0003,0x0004,0x0000 } }, + }, + /* 3 */ + {{{ 0x0000 }, + { 0x0043,0x0044,0x0000 }, }, + { 0, 0, 0, + { 0x0043,0x0044,0x0000 } }, + }, + /* 4 */ + {{{ 0x0001,0xFFFF,0x0000 }, + { 0x0080,0x0090,0x0000 }, }, + { 0, 0, 0, + { 0x0001,0xFFFF,0x0080,0x0090,0x0000 } }, + }, + {.is_last = 1} + } + }, + { +#if 0 + {Twcscat, TST_LOC_eucJP}, +#else + {Twcscat, TST_LOC_ja_UTF8}, +#endif + { + /* 1 */ + {{{ 0x30A2,0x74E0,0x0000 }, + { 0xFF71,0x0041,0x0000 }, }, + { 0, 0, 0, + { 0x30A2,0x74E0,0xFF71,0x0041,0x0000 } }, + }, + /* 2 */ + {{{ 0x0001,0x0002,0x0000 }, + { 0x0003,0x0004,0x0000 }, }, + { 0, 0, 0, + { 0x0001,0x0002,0x0003,0x0004,0x0000 } }, + }, + /* 3 */ + {{{ 0x30A2,0xFF71,0x0000 }, + { 0x0000 }, }, + { 0, 0, 0, + { 0x30A2,0xFF71,0x0000 } }, + }, + /* 4 */ + {{{ 0x0001,0xFFFF,0x0000 }, + { 0x0080,0x0090,0x0000 }, }, + { 0, 0, 0, + { 0x0001,0xFFFF,0x0080,0x0090,0x0000 } }, + }, + {.is_last = 1} + } + }, + { + {Twcscat, TST_LOC_end} + } +}; diff --git a/test/locale-mbwc/dat_wcschr.c b/test/locale-mbwc/dat_wcschr.c new file mode 100644 index 000000000..aa355e98e --- /dev/null +++ b/test/locale-mbwc/dat_wcschr.c @@ -0,0 +1,94 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcschr.c + * + * WCSCHR: wchar_t *wcschr (const wchar_t *ws, wchar_t wc); + */ + +TST_WCSCHR tst_wcschr_loc [] = { + + { { Twcschr, TST_LOC_de }, + { + { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x00C0 }, /* #1 */ + /*expect*/ { 0,1,(wchar_t *)NULL }, + }, + { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x00C1 }, /* #2 */ + /*expect*/ { 0,0,0 }, + }, + { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x00C2 }, /* #3 */ + /*expect*/ { 0,0,0 }, + }, + { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x00C3 }, /* #4 */ + /*expect*/ { 0,0,0 }, + }, + { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0x0000 }, /* #5 */ + /*expect*/ { 0,0,0 }, + }, + { /*input.*/ { { 0x0000,0x00C2,0x00C3,0x0000 }, 0x00C1 }, /* #6 */ + /*expect*/ { 0,1,(wchar_t *)NULL }, + }, + { /*input.*/ { { 0x0000,0x00C2,0x00C3,0x0000 }, 0x0000 }, /* #7 */ + /*expect*/ { 0,0,0 }, + }, + { .is_last = 1 } + } + }, + { { Twcschr, TST_LOC_enUS }, + { + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0040 }, /* #1 */ + /*expect*/ { 0,1,(wchar_t *)NULL }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0041 }, /* #2 */ + /*expect*/ { 0,0,0 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0042 }, /* #3 */ + /*expect*/ { 0,0,0 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0043 }, /* #4 */ + /*expect*/ { 0,0,0 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 0x0000 }, /* #5 */ + /*expect*/ { 0,0,0 }, + }, + { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, 0x0041 }, /* #6 */ + /*expect*/ { 0,1,(wchar_t *)NULL }, + }, + { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, 0x0000 }, /* #7 */ + /*expect*/ { 0,0,0 }, + }, + { .is_last = 1 } + } + }, +#if 0 + { { Twcschr, TST_LOC_eucJP }, +#else + { { Twcschr, TST_LOC_ja_UTF8 }, +#endif + { + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x3040 }, /* #1 */ + /*expect*/ { 0,1,(wchar_t *)NULL }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x3041 }, /* #2 */ + /*expect*/ { 0,0,0 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x3042 }, /* #3 */ + /*expect*/ { 0,0,0 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x3043 }, /* #4 */ + /*expect*/ { 0,0,0 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0x0000 }, /* #5 */ + /*expect*/ { 0,0,0 }, + }, + { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, 0x3041 }, /* #6 */ + /*expect*/ { 0,1,(wchar_t *)NULL }, + }, + { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, 0x0000 }, /* #7 */ + /*expect*/ { 0,0,0 }, + }, + { .is_last = 1 } + } + }, + { { Twcschr, TST_LOC_end } } +}; diff --git a/test/locale-mbwc/dat_wcscmp.c b/test/locale-mbwc/dat_wcscmp.c new file mode 100644 index 000000000..a2da5519b --- /dev/null +++ b/test/locale-mbwc/dat_wcscmp.c @@ -0,0 +1,137 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcscmp.c + * + * WCSCMP: int wcscmp (const wchar_t *ws1, const wchar_t *ws2); + */ + +/* NOTE: + This is not a locale sensitive function and + it may not make sence testing it for each locale ... +*/ + + +TST_WCSCMP tst_wcscmp_loc [] = { + { + { Twcscmp, TST_LOC_de }, + { + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #1 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0000,0x00D1,0x00D3,0x0000 }, + { 0x0000,0x00D2,0x00D3,0x0000 }, }, /* #2 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D1,0x00D3,0x0000 }, + { 0x0000,0x00D2,0x00D3,0x0000 }, }, /* #3 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D1,0x00D3,0x0000 }, }, /* #4 */ + /*expect*/ { 0,1,-1, }, + }, + { /*input.*/ { { 0x00D1,0x00D5,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #5 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x00D9,0x0000 }, }, /* #6 */ + /*expect*/ { 0,1,-1, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x0000 }, + { 0x00D1,0x00D2,0x00D9,0x0000 }, }, /* #7 */ + /*expect*/ { 0,1,-1, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D9,0x0000 }, + { 0x00D1,0x00D2,0x0000 }, }, /* #8 */ + /*expect*/ { 0,1,1, }, + }, + { .is_last = 1 } + } + }, + { + { Twcscmp, TST_LOC_enUS }, + { + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, }, /* #1 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0000,0x0041,0x0043,0x0000 }, + { 0x0000,0x0042,0x0043,0x0000 }, }, /* #2 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0041,0x0043,0x0000 }, + { 0x0000,0x0042,0x0043,0x0000 }, }, /* #3 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, + { 0x0041,0x0041,0x0043,0x0000 }, }, /* #4 */ + /*expect*/ { 0,1,-1, }, + }, + { /*input.*/ { { 0x0041,0x0045,0x0043,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, }, /* #5 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0049,0x0000 }, }, /* #6 */ + /*expect*/ { 0,1,-1, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0000 }, + { 0x0041,0x0042,0x0049,0x0000 }, }, /* #7 */ + /*expect*/ { 0,1,-1, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0049,0x0000 }, + { 0x0041,0x0042,0x0000 }, }, /* #8 */ + /*expect*/ { 0,1,1, }, + }, + { .is_last = 1 } + } + }, + { +#if 0 + { Twcscmp, TST_LOC_eucJP}, +#else + { Twcscmp, TST_LOC_ja_UTF8}, +#endif + { + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x3043,0x0000 }, }, /* #1 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0000,0x3041,0x3043,0x0000 }, + { 0x0000,0x3042,0x3043,0x0000 }, }, /* #2 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3041,0x3043,0x0000 }, + { 0x0000,0x3042,0x3043,0x0000 }, }, /* #3 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, + { 0x3041,0x3041,0x3043,0x0000 }, }, /* #4 */ + /*expect*/ { 0,1,-1, }, + }, + { /*input.*/ { { 0x3041,0x3045,0x3043,0x0000 }, + { 0x3041,0x3042,0x3043,0x0000 }, }, /* #5 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x3049,0x0000 }, }, /* #6 */ + /*expect*/ { 0,1,-1, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x0000 }, + { 0x3041,0x3042,0x3049,0x0000 }, }, /* #7 */ + /*expect*/ { 0,1,-1, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3049,0x0000 }, + { 0x3041,0x3042,0x0000 }, }, /* #8 */ + /*expect*/ { 0,1,1, }, + }, + { .is_last = 1 } + } + }, + { + { Twcschr, TST_LOC_end} + } +}; diff --git a/test/locale-mbwc/dat_wcscoll.c b/test/locale-mbwc/dat_wcscoll.c new file mode 100644 index 000000000..a9733ad8b --- /dev/null +++ b/test/locale-mbwc/dat_wcscoll.c @@ -0,0 +1,210 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcscoll.c + * + * WCSCOLL: int wcscoll (const wchar_t *ws1, const wchar_t *ws2); + */ + +/* + * CAUTION: + * When LC_COLLATE (or LC_ALL) is set for ja_JP.EUC, + * wcscoll() core-dumps for big values such as 0x3041 + * (0x0041 is okay) in glibc 2.1.2. + * + * NOTE: + * a) When 0 is expected as a return value, set ret_flg=1. + * - the return value is compared with an expected value: ret_val. + * b) When a positive value is expected as a return value, + * set ret_flg=0 and set cmp_flg=+1. + * - the return value is not compared with the expected value + * (can not be compared); instead, the test program checks + * if the return value is positive when cmp_flg=+1. + * c) When a negative value is expected as a return value, + * ...... + * d) When data contains invalid values, set err_val to the expected errno. + * Set ret_flg=0 and cmp_flg=0 so that it doesn't compare + * the return value with an expected value or doesn't check + * the sign of the return value. + * + * + * ------------------------------------------- + * CASE err_val ret_flg ret_val cmp_flg + * ------------------------------------------- + * a) 0 1 0 0 + * b) 0 0 0 +1 + * c) 0 0 0 -1 + * d) EINVAL 0 0 0 + * ------------------------------------------- + */ + + +TST_WCSCOLL tst_wcscoll_loc [] = { + + { { Twcscoll, TST_LOC_de }, + { + { /*input.*/ { { 0x00E1,0x00E2,0x00E3,0x0000 }, + { 0x00E1,0x00E2,0x00E3,0x0000 }, }, /* #1 */ + /*expect*/ { 0,1,0, 0, }, + }, + { /*input.*/ { { 0x0000,0x00E1,0x00E3,0x0000 }, + { 0x0000,0x00E2,0x00E3,0x0000 }, }, /* #2 */ + /*expect*/ { 0,1,0, 0, }, + }, + { /*input.*/ { { 0x00E1,0x00E1,0x00E3,0x0000 }, + { 0x0000,0x00E2,0x00E3,0x0000 }, }, /* #3 */ + /*expect*/ { 0,0,0, +1, }, + }, + { /*input.*/ { { 0x0000,0x00E2,0x00E3,0x0000 }, + { 0x00E1,0x00E1,0x00E3,0x0000 }, }, /* #4 */ + /*expect*/ { 0,0,0, -1, }, + }, + { /*input.*/ { { 0x00E1,0x0042,0x00E3,0x0000 }, + { 0x00E1,0x0061,0x00E3,0x0000 }, }, /* #5 */ + /*expect*/ { 0,0,0, +1, }, + }, + { /*input.*/ { { 0x00E1,0x0061,0x00E3,0x0000 }, + { 0x00E1,0x0042,0x00E3,0x0000 }, }, /* #6 */ + /*expect*/ { 0,0,0, -1, }, + }, + { /*input.*/ { { 0x00E1,0x00E2,0x0000 }, + { 0x00E1,0x00E2,0x00E9,0x0000 }, }, /* #7 */ + /*expect*/ { 0,0,0, -1, }, + }, + { /*input.*/ { { 0x00E1,0x00E2,0x00E9,0x0000 }, + { 0x00E1,0x00E2,0x0000 }, }, /* #8 */ + /*expect*/ { 0,0,0, +1, }, + }, + { /*input.*/ { { 0x00E1,0x0092,0x00E9,0x0000 }, + { 0x00E1,0x008E,0x00E9,0x0000 }, }, /* #9 */ + /*expect*/ { 0,0,0, +1, }, + }, + { /*input.*/ { { 0x00E1,0x008E,0x00E9,0x0000 }, + { 0x00E1,0x0092,0x00E9,0x0000 }, }, /* #10 */ + /*expect*/ { 0,0,0, -1, }, + }, + { .is_last = 1 } + } + }, + { { Twcscoll, TST_LOC_en }, + { + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, }, /* #1 */ + /*expect*/ { 0,1,0, 0, }, + }, + { /*input.*/ { { 0x0000,0x0041,0x0043,0x0000 }, + { 0x0000,0x0042,0x0043,0x0000 }, }, /* #2 */ + /*expect*/ { 0,1,0, 0, }, + }, + { /*input.*/ { { 0x0041,0x0041,0x0043,0x0000 }, + { 0x0000,0x0042,0x0043,0x0000 }, }, /* #3 */ + /*expect*/ { 0,0,0, +1, }, + }, + { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, + { 0x0041,0x0041,0x0043,0x0000 }, }, /* #4 */ + /*expect*/ { 0,0,0, -1, }, + }, +#ifdef SHOJI_IS_RIGHT + /* <WAIVER> */ /* assume ascii */ + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0061,0x0043,0x0000 }, }, /* #5 */ + /*expect*/ { 0,0,0, -1, }, + }, + /* <WAIVER> */ /* assume ascii */ + { /*input.*/ { { 0x0041,0x0061,0x0043,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, }, /* #6 */ + /*expect*/ { 0,0,0, +1, }, + }, +#else + /* XXX Correct order is lowercase before uppercase. */ + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0061,0x0043,0x0000 }, }, /* #5 */ + /*expect*/ { 0,0,0, +1, }, + }, + { /*input.*/ { { 0x0041,0x0061,0x0043,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, }, /* #6 */ + /*expect*/ { 0,0,0, -1, }, + }, +#endif + { /*input.*/ { { 0x0041,0x0042,0x0000 }, + { 0x0041,0x0042,0x0049,0x0000 }, }, /* #7 */ + /*expect*/ { 0,0,0, -1, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0049,0x0000 }, + { 0x0041,0x0042,0x0000 }, }, /* #8 */ + /*expect*/ { 0,0,0, +1, }, + }, +#ifdef SHOJI_IS_RIGHT + { /*input.*/ { { 0x0041,0x0092,0x0049,0x0000 }, + { 0x0041,0x008E,0x0049,0x0000 }, }, /* #9 */ + /*expect*/ { 0,0,0, +1, }, + }, + { /*input.*/ { { 0x0041,0x008E,0x0049,0x0000 }, + { 0x0041,0x0092,0x0049,0x0000 }, }, /* #10 */ + /*expect*/ { 0,0,0, -1, }, + }, +#else + /* Do not assume position of character out of range. */ + { /*input.*/ { { 0x0041,0x0092,0x0049,0x0000 }, + { 0x0041,0x008E,0x0049,0x0000 }, }, /* #9 */ + /*expect*/ { 0,0,0, 0, }, + }, + { /*input.*/ { { 0x0041,0x008E,0x0049,0x0000 }, + { 0x0041,0x0092,0x0049,0x0000 }, }, /* #10 */ + /*expect*/ { 0,0,0, 0, }, + }, +#endif + { .is_last = 1 } + } + }, +#if 0 + { { Twcscoll, TST_LOC_eucJP }, +#else + { { Twcscoll, TST_LOC_ja_UTF8 }, +#endif + { + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x3043,0x0000 }, }, /* #1 */ + /*expect*/ { 0,1,0, 0, }, + }, + { /*input.*/ { { 0x0000,0x3041,0x3043,0x0000 }, + { 0x0000,0x3042,0x3043,0x0000 }, }, /* #2 */ + /*expect*/ { 0,1,0, 0, }, + }, + { /*input.*/ { { 0x3041,0x3041,0x3043,0x0000 }, + { 0x0000,0x3042,0x3043,0x0000 }, }, /* #3 */ + /*expect*/ { 0,0,0, +1, }, + }, + { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, + { 0x3041,0x3041,0x3043,0x0000 }, }, /* #4 */ + /*expect*/ { 0,0,0, -1, }, + }, + { /*input.*/ { { 0x3041,0x0042,0x3043,0x0000 }, + { 0x3041,0x0061,0x3043,0x0000 }, }, /* #5 */ + /*expect*/ { 0,0,0, -1, }, + }, + { /*input.*/ { { 0x3041,0x0061,0x3043,0x0000 }, + { 0x3041,0x0042,0x3043,0x0000 }, }, /* #6 */ + /*expect*/ { 0,0,0, +1, }, + }, + { /*input.*/ { { 0x3041,0x3042,0xFF71,0x0000 }, + { 0x3041,0x3042,0x30A2,0x0000 }, }, /* #7 */ + /*expect*/ { 0,0,0, -1, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x30A2,0x0000 }, + { 0x3041,0x3042,0xFF71,0x0000 }, }, /* #8 */ + /*expect*/ { 0,0,0, +1, }, + }, + { /*input.*/ { { 0x30FF,0x3092,0x3049,0x0000 }, + { 0x3041,0x308E,0x3049,0x0000 }, }, /* #9 */ + /*expect*/ { 0,0,0, -1, }, + }, + { /*input.*/ { { 0x3041,0x308E,0x3049,0x0000 }, + { 0x30FF,0x3092,0x3049,0x0000 }, }, /* #10 */ + /*expect*/ { 0,0,0, +1, }, + }, + { .is_last = 1 } + } + }, + { { Twcscoll, TST_LOC_end } } +}; diff --git a/test/locale-mbwc/dat_wcscpy.c b/test/locale-mbwc/dat_wcscpy.c new file mode 100644 index 000000000..b376bfc5c --- /dev/null +++ b/test/locale-mbwc/dat_wcscpy.c @@ -0,0 +1,44 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcscpy.c + * + * WCSCPY: wchar_t *wcscpy (wchar_t *ws1, const wchar_t *ws2); + */ + +TST_WCSCPY tst_wcscpy_loc [] = { + + { { Twcscpy, TST_LOC_de }, + { + { { { 0x00F1,0x00F2,0x00F3,0x0000 }, }, /* 1 */ + { 0,0,0, { 0x00F1,0x00F2,0x00F3,0x0000, } }, }, + { { { 0x0000,0x00F2,0x00F3,0x0000 }, }, /* 2 */ + { 0,0,0, { 0x0000, } }, }, + { .is_last = 1 } + } + }, + { { Twcscpy, TST_LOC_enUS }, + { + { { { 0x0041,0x0082,0x0043,0x0000 }, }, /* 1 */ + { 0,0,0, { 0x0041,0x0082,0x0043,0x0000, } }, }, + { { { 0x0000,0x0082,0x0043,0x0000 }, }, /* 2 */ + { 0,0,0, { 0x0000, } }, }, + { .is_last = 1 } + } + }, +#if 0 + { { Twcscpy, TST_LOC_eucJP }, +#else + { { Twcscpy, TST_LOC_ja_UTF8 }, +#endif + { + { { { 0x3041,0x0092,0x3043,0x0000 }, }, /* 1 */ + { 0,0,0, { 0x3041,0x0092,0x3043,0x0000, } }, }, + { { { 0x0000,0x0092,0x3043,0x0000 }, }, /* 2 */ + { 0,0,0, { 0x0000, } }, }, + { .is_last = 1 } + } + }, + { { Twcscpy, TST_LOC_end }} + +}; diff --git a/test/locale-mbwc/dat_wcscspn.c b/test/locale-mbwc/dat_wcscspn.c new file mode 100644 index 000000000..f6eb0c3bb --- /dev/null +++ b/test/locale-mbwc/dat_wcscspn.c @@ -0,0 +1,164 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcscspn.c + * + * WCSCSPN: size_t wcscspn (const wchar_t *ws1, const wchar_t *ws2); + */ + + +TST_WCSCSPN tst_wcscspn_loc [] = { + + { { Twcscspn, TST_LOC_de }, + { + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x0000 }, }, /* #1 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D2,0x0000 }, }, /* #2 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D3,0x0000 }, }, /* #3 */ + /*expect*/ { 0,1,2, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D2,0x00D3,0x0000 }, }, /* #4 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D2,0x00D3,0x00D4,0x0000 }, }, /* #5 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D3,0x00D4,0x00D5,0x0000 }, }, /* #6 */ + /*expect*/ { 0,1,2, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #7 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, + { 0x00D2,0x000 }, }, /* #8 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x0000,0x00D2,0x00D3,0x0000 }, }, /* #9 */ + /*expect*/ { 0,1,3, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x0000 }, + { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #10 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x0000 }, + { 0x00D1,0x00D3,0x00D4,0x0000 }, }, /* #11 */ + /*expect*/ { 0,1,0, }, + }, + { .is_last = 1 } + } + }, + { { Twcscspn, TST_LOC_enUS }, + { + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0000 }, }, /* #1 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0042,0x0000 }, }, /* #2 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0043,0x0000 }, }, /* #3 */ + /*expect*/ { 0,1,2, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0042,0x0043,0x0000 }, }, /* #4 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0042,0x0043,0x0044,0x0000 }, }, /* #5 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0043,0x0044,0x0045,0x0000 }, }, /* #6 */ + /*expect*/ { 0,1,2, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, }, /* #7 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, + { 0x0042,0x000 }, }, /* #8 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0000,0x0042,0x0043,0x0000 }, }, /* #9 */ + /*expect*/ { 0,1,3, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, }, /* #10 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0000 }, + { 0x0041,0x0043,0x0044,0x0000 }, }, /* #11 */ + /*expect*/ { 0,1,0, }, + }, + { .is_last = 1 } + } + }, +#if 0 + { { Twcscspn, TST_LOC_eucJP }, +#else + { { Twcscspn, TST_LOC_ja_UTF8 }, +#endif + { + { /*input.*/ { { 0x3041,0x3042,0x0043,0x0000 }, + { 0x3041,0x0000 }, }, /* #1 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x0043,0x0000 }, + { 0x3042,0x0000 }, }, /* #2 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3043,0x0000 }, }, /* #3 */ + /*expect*/ { 0,1,2, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3042,0x3043,0x0000 }, }, /* #4 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3042,0x3043,0x3044,0x0000 }, }, /* #5 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3043,0x3044,0x3045,0x0000 }, }, /* #6 */ + /*expect*/ { 0,1,2, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x3043,0x0000 }, }, /* #7 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, + { 0x3042,0x0000 }, }, /* #8 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x0000,0x3042,0x3043,0x0000 }, }, /* #9 */ + /*expect*/ { 0,1,3, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x0000 }, + { 0x3041,0x3042,0x3043,0x0000 }, }, /* #10 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x0000 }, + { 0x3041,0x3043,0x3044,0x0000 }, }, /* #11 */ + /*expect*/ { 0,1,0, }, + }, + { .is_last = 1 } + } + }, + { { Twcscspn, TST_LOC_end }} +}; diff --git a/test/locale-mbwc/dat_wcslen.c b/test/locale-mbwc/dat_wcslen.c new file mode 100644 index 000000000..7bb2c892b --- /dev/null +++ b/test/locale-mbwc/dat_wcslen.c @@ -0,0 +1,62 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY + * + * FILE: dat_wcslen.c + * + * WCSLEN: size_t wcslen (const wchar_t *ws); + */ + + +/* + * NOTE: + * + * a header in each expected data: + * + * int err_val; ... expected value for errno + * <typ> ret_flg; ... set ret_flg=1 to compare an expected + * value with an actual value + * <typ> ret_val; ... expected value for return + */ + + +TST_WCSLEN tst_wcslen_loc [] = { + + { { Twcslen, TST_LOC_de }, + { + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 } }, /* #01 */ + /*expect*/ { 0,1,3, }, + }, + { /*input.*/ { { 0x0000 } }, /* #02 */ + /*expect*/ { 0,1,0, }, + }, + { .is_last = 1 } + } + }, + { { Twcslen, TST_LOC_enUS }, + { + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 } }, /* #01 */ + /*expect*/ { 0,1,3, }, + }, + { /*input.*/ { { 0x0000 } }, /* #02 */ + /*expect*/ { 0,1,0, }, + }, + { .is_last = 1 } + } + }, +#if 0 + { { Twcslen, TST_LOC_eucJP }, +#else + { { Twcslen, TST_LOC_ja_UTF8 }, +#endif + { + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 } }, /* #01 */ + /*expect*/ { 0,1,3, }, + }, + { /*input.*/ { { 0x0000 } }, /* #02 */ + /*expect*/ { 0,1,0, }, + }, + { .is_last = 1 } + } + }, + { { Twcslen, TST_LOC_end }} +}; diff --git a/test/locale-mbwc/dat_wcsncat.c b/test/locale-mbwc/dat_wcsncat.c new file mode 100644 index 000000000..9d1e46b99 --- /dev/null +++ b/test/locale-mbwc/dat_wcsncat.c @@ -0,0 +1,158 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcsncat.c + * + * WCSNCAT: wchar_t *wcsncat (wchar_t *ws1, wchar_t *ws2, size_t n); + */ + + +/* + * Note: + * A terminating null wide chararacter is always appended to + * the result: ws1. + * + */ + + +TST_WCSNCAT tst_wcsncat_loc [] = { + { + {Twcsncat, TST_LOC_de}, + { + /* 1 */ + { + /* Input: */ + {{ 0x00D1,0x00D2,0x0000 }, + { 0x00D3,0x00D4,0x0000 }, 3 }, + /* Expect: */ + { 0, 0, 0, + { 0x00D1,0x00D2,0x00D3,0x00D4,0x0000 } }, + }, + /* 2 */ + {{{ 0x00D1,0x00D2,0x0000 }, + { 0x00D3,0x00D4,0x0000 }, 2 }, + { 0, 0, 0, + { 0x00D1,0x00D2,0x00D3,0x00D4,0x0000 } }, + }, + /* 3 */ + {{{ 0x00E1,0x00E2,0x0000 }, + { 0x00E3,0x00E4,0x0000 }, 1 }, + { 0, 0, 0, + { 0x00E1,0x00E2,0x00E3,0x0000 } }, + }, + /* 4 */ + {{{ 0x00E1,0x00E2,0x0000 }, + { 0x00E3,0x00E4,0x0000 }, 0 }, + { 0, 0, 0, + { 0x00E1,0x00E2,0x0000 } }, + }, + /* 5 */ + {{{ 0x0000 }, + { 0x00D3,0x00D4,0x0000 }, 3 }, + { 0, 0, 0, + { 0x00D3,0x00D4,0x0000 } }, + }, + /* 6 */ + {{{ 0x00E1,0x00E2,0x0000 }, + { 0x0000 }, 3 }, + { 0, 0, 0, + { 0x00E1,0x00E2,0x0000 } }, + }, + {.is_last = 1} + } + }, + { + {Twcsncat, TST_LOC_enUS}, + { + /* 1 */ + { + /* Input: */ + {{ 0x0041,0x0042,0x0000 }, + { 0x0043,0x0044,0x0000 }, 3 }, + /* Expect: */ + { 0, 0, 0, + { 0x0041,0x0042,0x0043,0x0044,0x0000 } }, + }, + /* 2 */ + {{{ 0x0041,0x0042,0x0000 }, + { 0x0043,0x0044,0x0000 }, 2 }, + { 0, 0, 0, + { 0x0041,0x0042,0x0043,0x0044,0x0000 } }, + }, + /* 3 */ + {{{ 0x0051,0x0052,0x0000 }, + { 0x0053,0x0054,0x0000 }, 1 }, + { 0, 0, 0, + { 0x0051,0x0052,0x0053,0x0000 } }, + }, + /* 4 */ + {{{ 0x0051,0x0052,0x0000 }, + { 0x0053,0x0054,0x0000 }, 0 }, + { 0, 0, 0, + { 0x0051,0x0052,0x0000 } }, + }, + /* 5 */ + {{{ 0x0000 }, + { 0x0043,0x0044,0x0000 }, 3 }, + { 0, 0, 0, + { 0x0043,0x0044,0x0000 } }, + }, + /* 6 */ + {{{ 0x0051,0x0052,0x0000 }, + { 0x0000 }, 3 }, + { 0, 0, 0, + { 0x0051,0x0052,0x0000 } }, + }, + {.is_last = 1} + } + }, + { +#if 0 + {Twcsncat, TST_LOC_eucJP}, +#else + {Twcsncat, TST_LOC_ja_UTF8}, +#endif + { + /* 1 */ + {{{ 0x3041,0x3042,0x0000 }, + { 0x3043,0x3044,0x0000 }, 3 }, + { 0, 0, 0, + { 0x3041,0x3042,0x3043,0x3044,0x0000 } }, + }, + /* 2 */ + {{{ 0x30A2,0x30A3,0x0000 }, + { 0xFF71,0xFF72,0x0000 }, 2 }, + { 0, 0, 0, + { 0x30A2,0x30A3,0xFF71,0xFF72,0x0000 } }, + }, + /* 3 */ + {{{ 0x3051,0x3052,0x0000 }, + { 0x3053,0x3054,0x0000 }, 1 }, + { 0, 0, 0, + { 0x3051,0x3052,0x3053,0x0000 } }, + }, + /* 4 */ + {{{ 0x3051,0x3052,0x0000 }, + { 0x3053,0x3054,0x0000 }, 0 }, + { 0, 0, 0, + { 0x3051,0x3052,0x0000 } }, + }, + /* 5 */ + {{{ 0x0000 }, + { 0x3043,0x3044,0x0000 }, 3 }, + { 0, 0, 0, + { 0x3043,0x3044,0x0000 } }, + }, + /* 6 */ + {{{ 0x3051,0x3052,0x0000 }, + { 0x0000 }, 3 }, + { 0, 0, 0, + { 0x3051,0x3052,0x0000 } }, + }, + {.is_last = 1} + } + }, + { + {Twcsncat, TST_LOC_end} + } +}; diff --git a/test/locale-mbwc/dat_wcsncmp.c b/test/locale-mbwc/dat_wcsncmp.c new file mode 100644 index 000000000..5c5963167 --- /dev/null +++ b/test/locale-mbwc/dat_wcsncmp.c @@ -0,0 +1,144 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcsncmp.c + * + * WCSNCMP: int wcsncmp (const wchar_t *ws1, const wchar_t *ws2, + * size_t n); + */ + +TST_WCSNCMP tst_wcsncmp_loc [] = { + { + { Twcsncmp, TST_LOC_de }, + { + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x00D3,0x0000 }, 4 }, /* #01 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x00D3,0x0000 }, 3 }, /* #02 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D1,0x0000 }, + { 0x00D1,0x00D2,0x00D3,0x0000 }, 2 }, /* #03 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D0,0x00D2,0x00D3,0x0000 }, 0 }, /* #04 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, + { 0x0000,0x00D2,0x00D1,0x0000 }, 3 }, /* #05 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x0000,0x00D2,0x00D3,0x0000 }, 3 }, /* #06 */ + /*expect*/ { 0,1,0x00D1, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x00D9,0x0000 }, 2 }, /* #07 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x00D9,0x0000 }, 3 }, /* #08 */ + /*expect*/ { 0,1,-0x0006, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x0000 }, 4 }, /* #09 */ + /*expect*/ { 0,1,0x00D3, }, + }, + { .is_last = 1 } + } + }, + { + { Twcsncmp, TST_LOC_enUS }, + { + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, 4 }, /* #01 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, 3 }, /* #02 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0041,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, 2 }, /* #03 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0040,0x0042,0x0043,0x0000 }, 0 }, /* #04 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, + { 0x0000,0x0042,0x0041,0x0000 }, 3 }, /* #05 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0000,0x0042,0x0043,0x0000 }, 3 }, /* #06 */ + /*expect*/ { 0,1,0x0041, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0049,0x0000 }, 2 }, /* #07 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0049,0x0000 }, 3 }, /* #08 */ + /*expect*/ { 0,1,-0x0006, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0000 }, 4 }, /* #09 */ + /*expect*/ { 0,1,0x0043, }, + }, + { .is_last = 1 } + } + }, + { +#if 0 + { Twcsncmp, TST_LOC_eucJP }, +#else + { Twcsncmp, TST_LOC_ja_UTF8 }, +#endif + { + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x3043,0x0000 }, 4 }, /* #01 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x3043,0x0000 }, 3 }, /* #02 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3041,0x0000 }, + { 0x3041,0x3042,0x3043,0x0000 }, 2 }, /* #03 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3040,0x3042,0x3043,0x0000 }, 0 }, /* #04 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, + { 0x0000,0x3042,0x3041,0x0000 }, 3 }, /* #05 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x0000,0x3042,0x3043,0x0000 }, 3 }, /* #06 */ + /*expect*/ { 0,1,0x3041, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x3049,0x0000 }, 2 }, /* #07 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x3049,0x0000 }, 3 }, /* #08 */ + /*expect*/ { 0,1,-0x0006, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x0000 }, 4 }, /* #09 */ + /*expect*/ { 0,1,0x3043, }, + }, + { .is_last = 1 } + } + }, + { + { Twcsncmp, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_wcsncpy.c b/test/locale-mbwc/dat_wcsncpy.c new file mode 100644 index 000000000..7a657838b --- /dev/null +++ b/test/locale-mbwc/dat_wcsncpy.c @@ -0,0 +1,119 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcsncpy.c + * + * WCSNCPY: wchar_t *wcsncpy (wchar_t *ws1, const wchar_t *ws2, + * size_t n); + */ + + +/* Note: + * + * An initial value of ws1 in the test program is defined as: + * + * #define WCSNUM_NCPY 7 + * wchar_t ws1 [WCSSIZE] = { 0x9999, 0x9999, 0x9999, 0x9999, + * 0x9999, 0x9999, 0x0000 }; + * */ + + +TST_WCSNCPY tst_wcsncpy_loc [] = { + { + {Twcsncpy, TST_LOC_de}, + { + /* 1 */ + {{ { 0x00D1,0x00D2,0x00D3,0x0000 }, 6 }, + { 0,0,0, { 0x00D1,0x00D2,0x00D3,0x0000,0x0000,0x0000,0x0000 } }, + }, + /* 2 */ + {{ { 0x00D1,0x00D2,0x00D3,0x0000 }, 5 }, + { 0,0,0, { 0x00D1,0x00D2,0x00D3,0x0000,0x0000,0x9999,0x0000 } }, + }, + /* 3 */ + {{ { 0x00D1,0x00D2,0x00D3,0x0000 }, 3 }, + { 0,0,0, { 0x00D1,0x00D2,0x00D3,0x9999,0x9999,0x9999,0x0000 } }, + }, + /* 4 */ + {{ { 0x00D1,0x00D2,0x00D3,0x0000 }, 2 }, + { 0,0,0, { 0x00D1,0x00D2,0x9999,0x9999,0x9999,0x9999,0x0000 } }, + }, + /* 5 */ + {{ { 0x00D1,0x00D2,0x00D3,0x0000 }, 0 }, + { 0,0,0, { 0x9999,0x9999,0x9999,0x9999,0x9999,0x9999,0x0000 } }, + }, + /* 6 */ + {{ { 0x0000,0x00D2,0x00D3,0x0000 }, 3 }, + { 0,0,0, { 0x0000,0x0000,0x0000,0x9999,0x9999,0x9999,0x0000 } }, + }, + {.is_last = 1} + } + }, + { + {Twcsncpy, TST_LOC_enUS}, + { + /* 1 */ + {{ { 0x0041,0x0042,0x0043,0x0000 }, 6 }, + { 0,0,0, { 0x0041,0x0042,0x0043,0x0000,0x0000,0x0000,0x0000 } }, + }, + /* 2 */ + {{ { 0x0041,0x0042,0x0043,0x0000 }, 5 }, + { 0,0,0, { 0x0041,0x0042,0x0043,0x0000,0x0000,0x9999,0x0000 } }, + }, + /* 3 */ + {{ { 0x0041,0x0042,0x0043,0x0000 }, 3 }, + { 0,0,0, { 0x0041,0x0042,0x0043,0x9999,0x9999,0x9999,0x0000 } }, + }, + /* 4 */ + {{ { 0x0041,0x0042,0x0043,0x0000 }, 2 }, + { 0,0,0, { 0x0041,0x0042,0x9999,0x9999,0x9999,0x9999,0x0000 } }, + }, + /* 5 */ + {{ { 0x0041,0x0042,0x0043,0x0000 }, 0 }, + { 0,0,0, { 0x9999,0x9999,0x9999,0x9999,0x9999,0x9999,0x0000 } }, + }, + /* 6 */ + {{ { 0x0000,0x0042,0x0043,0x0000 }, 3 }, + { 0,0,0, { 0x0000,0x0000,0x0000,0x9999,0x9999,0x9999,0x0000 } }, + }, + {.is_last = 1} + } + }, + { +#if 0 + {Twcsncpy, TST_LOC_eucJP}, +#else + {Twcsncpy, TST_LOC_ja_UTF8}, +#endif + { + /* 1 */ + {{ { 0x3041,0x3042,0x3043,0x0000 }, 6 }, + { 0,0,0, { 0x3041,0x3042,0x3043,0x0000,0x0000,0x0000,0x0000 } }, + }, + /* 2 */ + {{ { 0x3041,0x3042,0x3043,0x0000 }, 5 }, + { 0,0,0, { 0x3041,0x3042,0x3043,0x0000,0x0000,0x9999,0x0000 } }, + }, + /* 3 */ + {{ { 0x3041,0x3042,0x3043,0x0000 }, 3 }, + { 0,0,0, { 0x3041,0x3042,0x3043,0x9999,0x9999,0x9999,0x0000 } }, + }, + /* 4 */ + {{ { 0x3041,0x3042,0x3043,0x0000 }, 2 }, + { 0,0,0, { 0x3041,0x3042,0x9999,0x9999,0x9999,0x9999,0x0000 } }, + }, + /* 5 */ + {{ { 0x3041,0x3042,0x3043,0x0000 }, 0 }, + { 0,0,0, { 0x9999,0x9999,0x9999,0x9999,0x9999,0x9999,0x0000 } }, + }, + /* 6 */ + {{ { 0x0000,0x3042,0x3043,0x0000 }, 3 }, + { 0,0,0, { 0x0000,0x0000,0x0000,0x9999,0x9999,0x9999,0x0000 } }, + }, + {.is_last = 1} + } + }, + { + {Twcsncpy, TST_LOC_end} + } +}; diff --git a/test/locale-mbwc/dat_wcspbrk.c b/test/locale-mbwc/dat_wcspbrk.c new file mode 100644 index 000000000..471515eb7 --- /dev/null +++ b/test/locale-mbwc/dat_wcspbrk.c @@ -0,0 +1,176 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcspbrk.c + * + * WCSSTR: wchar_t *wcspbrk (const wchar_t *ws1, const wchar_t *ws2); + */ + + +/* + * NOTE: + * This is not a locale sensitive function. + * So those data in each locale doesn't make sense + * ... (redundant test cases) + */ + + +TST_WCSPBRK tst_wcspbrk_loc [] = { + { + { Twcspbrk, TST_LOC_de }, + { + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x0000 }, }, /* #01 */ + /*expect*/ { 0,0,0, 0x00D1 }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D2,0x0000 }, }, /* #02 */ + /*expect*/ { 0,0,0, 0x00D2 }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D3,0x0000 }, }, /* #03 */ + /*expect*/ { 0,0,0, 0x00D3 }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x0000 }, }, /* #04 */ + /*expect*/ { 0,0,0, 0x00D1 }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D2,0x00D3,0x0000 }, }, /* #05 */ + /*expect*/ { 0,0,0, 0x00D2 }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #06 */ + /*expect*/ { 0,0,0, 0x00D1 }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D0,0x00D4,0x00D5,0x0000 }, }, /* #07 */ + /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D5,0x00D0,0x00D4,0x0000 }, }, /* #08 */ + /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x0000 }, }, /* #09 */ + /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, + }, + { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x0000 }, }, /* #10 */ + /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, + }, + { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, + { 0x0000 }, }, /* #11 */ + /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, + }, + { .is_last = 1 } + } + }, + { + { Twcspbrk, TST_LOC_enUS }, + { + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0000 }, }, /* #01 */ + /*expect*/ { 0,0,0, 0x0041 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0042,0x0000 }, }, /* #02 */ + /*expect*/ { 0,0,0, 0x0042 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0043,0x0000 }, }, /* #03 */ + /*expect*/ { 0,0,0, 0x0043 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0000 }, }, /* #04 */ + /*expect*/ { 0,0,0, 0x0041 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0042,0x0043,0x0000 }, }, /* #05 */ + /*expect*/ { 0,0,0, 0x0042 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, }, /* #06 */ + /*expect*/ { 0,0,0, 0x0041 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0040,0x0044,0x0045,0x0000 }, }, /* #07 */ + /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0045,0x0040,0x0044,0x0000 }, }, /* #08 */ + /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0000 }, }, /* #09 */ + /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, + }, + { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, + { 0x0041,0x0000 }, }, /* #10 */ + /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, + }, + { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, + { 0x0000 }, }, /* #11 */ + /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, + }, + { .is_last = 1 } + } + }, + { +#if 0 + { Twcspbrk, TST_LOC_eucJP }, +#else + { Twcspbrk, TST_LOC_ja_UTF8 }, +#endif + { + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x0000 }, }, /* #01 */ + /*expect*/ { 0,0,0, 0x3041 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3042,0x0000 }, }, /* #02 */ + /*expect*/ { 0,0,0, 0x3042 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3043,0x0000 }, }, /* #03 */ + /*expect*/ { 0,0,0, 0x3043 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x0000 }, }, /* #04 */ + /*expect*/ { 0,0,0, 0x3041 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3042,0x3043,0x0000 }, }, /* #05 */ + /*expect*/ { 0,0,0, 0x3042 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x3043,0x0000 }, }, /* #06 */ + /*expect*/ { 0,0,0, 0x3041 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3042,0x3043,0x3044,0x0000 }, }, /* #07 */ + /*expect*/ { 0,0,0, 0x3042 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3040,0x3041,0x3042,0x0000 }, }, /* #08 */ + /*expect*/ { 0,0,0, 0x3041 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x0000 }, }, /* #09 */ + /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, + }, + { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, + { 0x3041,0x0000 }, }, /* #10 */ + /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, + }, + { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, + { 0x0000 }, }, /* #11 */ + /*expect*/ { 0,1,(wchar_t *)NULL, 0x0000 }, + }, + { .is_last = 1 } + } + }, + { + { Twcspbrk, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_wcsrtombs.c b/test/locale-mbwc/dat_wcsrtombs.c new file mode 100644 index 000000000..f8adc6cfd --- /dev/null +++ b/test/locale-mbwc/dat_wcsrtombs.c @@ -0,0 +1,272 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcsrtombs.c + * + * WCSTOMBS: size_t wcsrtombs (char *s, const wchar_t **ws, + * size_t n, mbstate *ps) + */ + + +/* + * CAUTION: + * Do not use a value 0x01 for string data. The test program + * uses it. + * + */ + + +TST_WCSRTOMBS tst_wcsrtombs_loc [] = { + { + { Twcsrtombs, TST_LOC_de }, + { + /* #01 : Any chars including a null char should not be stored in s. */ + { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0, 0, 0}, + /*expect*/ { 0,1,0, "" }, + }, + /* #02 : Only one chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1, 0, 0 }, + /*expect*/ { 0,1,1, "Ä" }, + }, + /* #03 : Only two chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 2, 0, 0 }, + /*expect*/ { 0,1,2, "ÄÖ" }, + }, + /* #04 : Only three chars should be stored in s. No null + termination. */ + { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 3, 0, 0 }, + /*expect*/ { 0,1,3, "ÄÖÜ" }, + }, + /* #05 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 4, 0, 0 }, + /*expect*/ { 0,1,3, "ÄÖÜ" }, + }, + /* #06 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5, 0, 0 }, + /*expect*/ { 0,1,3, "ÄÖÜ" }, + }, + /* #07 : Invalid mb sequence. No chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 }, + /*expect*/ { EILSEQ,1,(size_t)-1, "" }, + }, + /* #08 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0, 0, 0 }, + /*expect*/ { 0,1,3, "" }, + }, + /* #09 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1, 0, 0 }, + /*expect*/ { 0,1,3, "" }, + }, + /* #10 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5, 0, 0 }, + /*expect*/ { 0,1,3, "" }, + }, + /* #11 : s is a null pointer. No chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 }, + /*expect*/ { EILSEQ,1,(size_t)-1, "" }, + }, + /* #12 : ws is a null wc string, no chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0000 }, 5, 0, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #13 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0000 }, 5, 0, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + { .is_last = 1 } + } + }, + { + { Twcsrtombs, TST_LOC_enUS }, + { + /* #01 : Any chars including a null char should not be stored in s. */ + { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 0, 0, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #02 : Only one chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 1, 0, 0 }, + /*expect*/ { 0,1,1, "A" }, + }, + /* #03 : Only two chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 2, 0, 0 }, + /*expect*/ { 0,1,2, "AB" }, + }, + /* #04 : Only three chars should be stored in s. No null + termination. */ + { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 3, 0, 0 }, + /*expect*/ { 0,1,3, "ABC" }, + }, + /* #05 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 4, 0, 0 }, + /*expect*/ { 0,1,3, "ABC" }, + }, + /* #06 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 5, 0, 0 }, + /*expect*/ { 0,1,3, "ABC" }, + }, + /* #07 : Invalid mb sequence. No chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 }, + /*expect*/ { EILSEQ,1,(size_t)-1, "" }, + }, + /* #08 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 0, 0, 0 }, + /*expect*/ { 0,1,3, "" }, + }, + /* #09 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 1, 0, 0 }, + /*expect*/ { 0,1,3, "" }, + }, + /* #10 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 5, 0, 0 }, + /*expect*/ { 0,1,3, "" }, + }, + /* #11 : s is a null pointer. No chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 }, + /*expect*/ { EILSEQ,1,(size_t)-1, "" }, + }, + /* #12 : ws is a null wc string, no chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0000 }, 5, 0, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #13 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0000 }, 5, 0, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + { .is_last = 1 } + } + }, +#if 0 + { + { Twcsrtombs, TST_LOC_eucJP }, + { + + /* #01 : Any chars including a null char should not be stored in s. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #02 : Only one chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 2, 0, 0 }, + /*expect*/ { 0,1,2, "\244\242" }, + }, + /* #03 : Only two chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 4, 0, 0 }, + /*expect*/ { 0,1,4, "\244\242\244\244" }, + }, + /* #04 : Only three chars should be stored in s. No null + termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 6, 0, 0 }, + /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, + }, + /* #05 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 7, 0, 0 }, + /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, + }, + /* #06 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8, 0, 0 }, + /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, + }, + /* #07 : Invalid mb sequence. No chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 }, + /*expect*/ { EILSEQ,1,-1, "" }, + }, + /* #08 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 }, + /*expect*/ { 0,1,6, "" }, + }, + /* #09 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 1, 0, 0 }, + /*expect*/ { 0,1,6, "" }, + }, + /* #10 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8, 0, 0 }, + /*expect*/ { 0,1,6, "" }, + }, + /* #11 : s is a null pointer. No chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 }, + /*expect*/ { EILSEQ,1,(size_t)-1, "" }, + }, + /* #12 : ws is a null wc string, no chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0000 }, 5, 0, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #13 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0000 }, 5, 0, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + { .is_last = 1 } + } + }, +#else + { + { Twcsrtombs, TST_LOC_ja_UTF8 }, + { + + /* #01 : Any chars including a null char should not be stored in s. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #02 : Only one chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 3, 0, 0 }, + /*expect*/ { 0,1,3, "\343\201\202" }, + }, + /* #03 : Only two chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 6, 0, 0 }, + /*expect*/ { 0,1,6, "\343\201\202\343\201\204" }, + }, + /* #04 : Only three chars should be stored in s. No null + termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 9, 0, 0 }, + /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" }, + }, + /* #05 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 10, 0, 0 }, + /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" }, + }, + /* #06 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 11, 0, 0 }, + /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" }, + }, + /* #07 : Invalid mb sequence. No chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 }, + /*expect*/ { EILSEQ,1,-1, "" }, + }, + /* #08 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 }, + /*expect*/ { 0,1,9, "" }, + }, + /* #09 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 1, 0, 0 }, + /*expect*/ { 0,1,9, "" }, + }, + /* #10 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8, 0, 0 }, + /*expect*/ { 0,1,9, "" }, + }, + /* #11 : s is a null pointer. No chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 }, + /*expect*/ { EILSEQ,1,(size_t)-1, "" }, + }, + /* #12 : ws is a null wc string, no chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0000 }, 5, 0, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #13 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0000 }, 5, 0, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + { .is_last = 1 } + } + }, +#endif + { + { Twcsrtombs, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_wcsspn.c b/test/locale-mbwc/dat_wcsspn.c new file mode 100644 index 000000000..06af2d6a9 --- /dev/null +++ b/test/locale-mbwc/dat_wcsspn.c @@ -0,0 +1,179 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcsspn.c + * + * WCSSPN: size_t wcsspn (const wchar_t *ws1, const wchar_t *ws2); + */ + +TST_WCSSPN tst_wcsspn_loc [] = { + { + { Twcsspn, TST_LOC_de }, + { + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x0000 }, }, /* #01 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D2,0x0000 }, }, /* #02 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D3,0x0000 }, }, /* #03 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D4,0x0000 }, }, /* #04 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D2,0x00D3,0x0000 }, }, /* #05 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D3,0x00D4,0x0000 }, }, /* #06 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #07 */ + /*expect*/ { 0,1,3, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x0000 }, + { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #08 */ + /*expect*/ { 0,1,2, }, + }, + { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, + { 0x00D2,0x0000 }, }, /* #09 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x0000,0x00D2,0x0000 }, }, /* #10 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, + { 0x0000,0x00D2,0x0000 }, }, /* #11 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D2,0x00D1,0x0000 }, }, /* #12 */ + /*expect*/ { 0,1,2, }, + }, + { .is_last = 1 } + } + }, + { + { Twcsspn, TST_LOC_enUS }, + { + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0000 }, }, /* #01 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0042,0x0000 }, }, /* #02 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0043,0x0000 }, }, /* #03 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0044,0x0000 }, }, /* #04 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0042,0x0043,0x0000 }, }, /* #05 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0043,0x0044,0x0000 }, }, /* #06 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, }, /* #07 */ + /*expect*/ { 0,1,3, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, }, /* #08 */ + /*expect*/ { 0,1,2, }, + }, + { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, + { 0x0042,0x0000 }, }, /* #09 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0000,0x0042,0x0000 }, }, /* #10 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, + { 0x0000,0x0042,0x0000 }, }, /* #11 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0042,0x0041,0x0000 }, }, /* #12 */ + /*expect*/ { 0,1,2, }, + }, + { .is_last = 1 } + } + }, + { +#if 0 + { Twcsspn, TST_LOC_eucJP }, +#else + { Twcsspn, TST_LOC_ja_UTF8 }, +#endif + { + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x0000 }, }, /* #1 */ + /*expect*/ { 0,1,1, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3042,0x0000 }, }, /* #2 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3043,0x0000 }, }, /* #3 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3044,0x0000 }, }, /* #4 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3042,0x3043,0x0000 }, }, /* #5 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3043,0x3044,0x0000 }, }, /* #6 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x3043,0x0000 }, }, /* #7 */ + /*expect*/ { 0,1,3, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x0000 }, + { 0x3041,0x3042,0x3043,0x0000 }, }, /* #8 */ + /*expect*/ { 0,1,2, }, + }, + { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, + { 0x3042,0x0000 }, }, /* #9 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x0000,0x3042,0x0000 }, }, /* #10 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, + { 0x0000,0x3042,0x0000 }, }, /* #11 */ + /*expect*/ { 0,1,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3042,0x3041,0x0000 }, }, /* #12 */ + /*expect*/ { 0,1,2, }, + }, + { .is_last = 1 } + } + }, + { + { Twcsspn, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_wcsstr.c b/test/locale-mbwc/dat_wcsstr.c new file mode 100644 index 000000000..f999dc5c6 --- /dev/null +++ b/test/locale-mbwc/dat_wcsstr.c @@ -0,0 +1,175 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcsstr.c + * + * WCSSTR: wchar_t *wcsstr (const wchar_t *ws1, const wchar_t *ws2); + */ + +/* + * NOTE: + * This is not a locale sensitive function. + * So those data in each locale doesn't make sense ... + * (redundant test cases) + */ + + +TST_WCSSTR tst_wcsstr_loc [] = { + { + { Twcsstr, TST_LOC_de }, + { + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x0000 }, }, /* #01 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D2,0x0000 }, }, /* #02 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D3,0x0000 }, }, /* #03 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x0000 }, }, /* #04 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D2,0x00D3,0x0000 }, }, /* #05 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x00D2,0x00D3,0x0000 }, }, /* #06 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D2,0x00D3,0x00D4,0x0000 }, }, /* #07 */ + /*expect*/ { 0,1,(wchar_t *)NULL, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x00D0,0x00D1,0x00D2,0x0000 }, }, /* #08 */ + /*expect*/ { 0,1,(wchar_t *)NULL, }, + }, + { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 }, + { 0x0000 }, }, /* #09 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, + { 0x00D1,0x0000 }, }, /* #10 */ + /*expect*/ { 0,1,(wchar_t *)NULL, }, + }, + { /*input.*/ { { 0x0000,0x00D2,0x00D3,0x0000 }, + { 0x0000 }, }, /* #11 */ + /*expect*/ { 0,0,0, }, + }, + { .is_last = 1 } + } + }, + { + { Twcsstr, TST_LOC_enUS }, + { + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0000 }, }, /* #01 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0042,0x0000 }, }, /* #02 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0043,0x0000 }, }, /* #03 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0000 }, }, /* #04 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0042,0x0043,0x0000 }, }, /* #05 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0041,0x0042,0x0043,0x0000 }, }, /* #06 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0042,0x0043,0x0044,0x0000 }, }, /* #07 */ + /*expect*/ { 0,1,(wchar_t *)NULL, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0040,0x0041,0x0042,0x0000 }, }, /* #08 */ + /*expect*/ { 0,1,(wchar_t *)NULL, }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, + { 0x0000 }, }, /* #09 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, + { 0x0041,0x0000 }, }, /* #10 */ + /*expect*/ { 0,1,(wchar_t *)NULL, }, + }, + { /*input.*/ { { 0x0000,0x0042,0x0043,0x0000 }, + { 0x0000 }, }, /* #11 */ + /*expect*/ { 0,0,0, }, + }, + { .is_last = 1 } + } + }, + { +#if 0 + { Twcsstr, TST_LOC_eucJP }, +#else + { Twcsstr, TST_LOC_ja_UTF8 }, +#endif + { + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x0000 }, }, /* #01 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3042,0x0000 }, }, /* #02 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3043,0x0000 }, }, /* #03 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x0000 }, }, /* #04 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3042,0x3043,0x0000 }, }, /* #05 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3041,0x3042,0x3043,0x0000 }, }, /* #06 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3042,0x3043,0x3044,0x0000 }, }, /* #07 */ + /*expect*/ { 0,1,(wchar_t *)NULL, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x3040,0x3041,0x3042,0x0000 }, }, /* #08 */ + /*expect*/ { 0,1,(wchar_t *)NULL, }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, + { 0x0000 }, }, /* #09 */ + /*expect*/ { 0,0,0, }, + }, + { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, + { 0x3041,0x0000 }, }, /* #10 */ + /*expect*/ { 0,1,(wchar_t *)NULL, }, + }, + { /*input.*/ { { 0x0000,0x3042,0x3043,0x0000 }, + { 0x0000 }, }, /* #11 */ + /*expect*/ { 0,0,0, }, + }, + { .is_last = 1 } + } + }, + { + { Twcsstr, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_wcstod.c b/test/locale-mbwc/dat_wcstod.c new file mode 100644 index 000000000..c7b401847 --- /dev/null +++ b/test/locale-mbwc/dat_wcstod.c @@ -0,0 +1,78 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY + * + * FILE: dat_wcstod.c + * + * WCSTOD: double wcstod (const wchar_t *np, wchar_t **endp); + */ + + +/* + * NOTE: + * need more test data! + * + */ + + +TST_WCSTOD tst_wcstod_loc [] = { + { + { Twcstod, TST_LOC_de }, + { + { + /*01*/ + /*I*/ + {{ 0x0030,0x0030,0x0030,0x002C,0x0030,0x0030,0x0030,0x0030,0x0000 }}, + /*E*/ + { 0,1,0.0, 0.0, 0x0000 } + }, + { + /*02*/ + /*I*/ + {{ 0x0031,0x0032,0x0033,0x002C,0x0034,0x0035,0x0036,0x0040,0x0000 }}, + /*E*/ + { 0,1,123.456, 123.456, 0x0040 } + }, + { .is_last = 1 } + } + }, + { + { Twcstod, TST_LOC_enUS }, + { + { + /*01*/ + /*I*/ + {{ 0x0030,0x0030,0x0030,0x002E,0x0030,0x0030,0x0030,0x0030,0x0000 }}, + /*E*/ + { 0,1,0.0, 0.0, 0x0000 } + }, + { + /*02*/ + /*I*/ + {{ 0x0031,0x0032,0x0033,0x002E,0x0034,0x0035,0x0036,0x0040,0x0000 }}, + /*E*/ + { 0,1,123.456, 123.456, 0x0040 } + }, + { .is_last = 1 } + } + }, + { +#if 0 + { Twcstod, TST_LOC_eucJP }, +#else + { Twcstod, TST_LOC_ja_UTF8 }, +#endif + { + { + /*01*/ + /*I*/ + {{ 0x0031,0x0032,0x0033,0x002E,0x0034,0x0035,0x0036,0x0040,0x0000 }}, + /*E*/ + { 0,1,123.456, 123.456, 0x0040 } + }, + { .is_last = 1 } + } + }, + { + { Twcstod, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_wcstok.c b/test/locale-mbwc/dat_wcstok.c new file mode 100644 index 000000000..559b40187 --- /dev/null +++ b/test/locale-mbwc/dat_wcstok.c @@ -0,0 +1,138 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY + * + * FILE: dat_wcstok.c + * + * WCSTOK: wchar_t *wcstok (wchar_t *ws, const wchar_t *dlm, + * wchar_t **pt); + */ + +/* + * NOTE: + * need more test data! + * locale insensitive function... + */ + + + + +TST_WCSTOK tst_wcstok_loc [] = { + { + { Twcstok, TST_LOC_de }, + { + { + { + { + { 1, { 0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,0x00D8, + 0x00D9,0x0000 }, + { 0x00D3,0x00D2, 0x00D5 } + }, + { 0, { 0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,0x00D8, + 0x00D9,0x0000 }, + { 0x00D3,0x00D2, 0x00D5 } + }, + { 0, { 0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,0x00D8, + 0x00D9,0x0000 }, + { 0x00D3,0x00D2, 0x00D5 } + }, + } + }, + { + { + { 0, 0,0, + { 0x00D1,0x0000 } + }, + { 0, 0,0, + { 0x00D4,0x0000 } + }, + { 0, 0,0, + { 0x00D6,0x00D7,0x00D8,0x00D9,0x0000 } + }, + } + } + }, + { .is_last = 1 } + } + }, + { + { Twcstok, TST_LOC_enUS }, + { + { + { + { + { 1, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048, + 0x0049,0x0000 }, + { 0x0043,0x0042, 0x0045 } + }, + { 0, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048, + 0x0049,0x0000 }, + { 0x0043,0x0042, 0x0045 } + }, + { 0, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048, + 0x0049,0x0000 }, + { 0x0043,0x0042, 0x0045 } + }, + } + }, + { + { + { 0, 0,0, + { 0x0041,0x0000 } + }, + { 0, 0,0, + { 0x0044,0x0000 } + }, + { 0, 0,0, + { 0x0046,0x0047,0x0048,0x0049,0x0000 } + }, + } + } + }, + { .is_last = 1 } + } + }, + { +#if 0 + { Twcstok, TST_LOC_eucJP }, +#else + { Twcstok, TST_LOC_ja_UTF8 }, +#endif + { + { + { + { + { 1, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048, + 0x0049,0x0000 }, + { 0x0043,0x0042, 0x0045 } + }, + { 0, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048, + 0x0049,0x0000 }, + { 0x0043,0x0042, 0x0045 } + }, + { 0, { 0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048, + 0x0049,0x0000 }, + { 0x0043,0x0042, 0x0045 } + }, + } + }, + { + { + { 0, 0,0, + { 0x0041,0x0000 } + }, + { 0, 0,0, + { 0x0044,0x0000 } + }, + { 0, 0,0, + { 0x0046,0x0047,0x0048,0x0049,0x0000 } + }, + } + } + }, + { .is_last = 1 } + } + }, + { + { Twcstok, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_wcstombs.c b/test/locale-mbwc/dat_wcstombs.c new file mode 100644 index 000000000..ffeb0ef80 --- /dev/null +++ b/test/locale-mbwc/dat_wcstombs.c @@ -0,0 +1,271 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcstombs.c + * + * WCSTOMBS: size_t wcstombs (char *s, const wchar_t *ws, size_t n) + */ + + +/* + * CAUTION: + * Do not use a value 0x01 for string data. The test program + * uses it. + * + */ + + +TST_WCSTOMBS tst_wcstombs_loc [] = { + { + { Twcstombs, TST_LOC_de }, + { + /* #01 : Any chars including a null char should not be stored in s. */ + { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #02 : Only one chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1 }, + /*expect*/ { 0,1,1, "Ä" }, + }, + /* #03 : Only two chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 2 }, + /*expect*/ { 0,1,2, "ÄÖ" }, + }, + /* #04 : Only three chars should be stored in s. No null + termination. */ + { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 3 }, + /*expect*/ { 0,1,3, "ÄÖÜ" }, + }, + /* #05 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 4 }, + /*expect*/ { 0,1,3, "ÄÖÜ" }, + }, + /* #06 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5 }, + /*expect*/ { 0,1,3, "ÄÖÜ" }, + }, + /* #07 : Invalid mb sequence. No chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 }, + /*expect*/ { EILSEQ,1,(size_t)-1, "" }, + }, + /* #08 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0 }, + /*expect*/ { 0,1,3, "" }, + }, + /* #09 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1 }, + /*expect*/ { 0,1,3, "" }, + }, + /* #10 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5 }, + /*expect*/ { 0,1,3, "" }, + }, + /* #11 : s is a null pointer. No chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 }, + /*expect*/ { EILSEQ,1,(size_t)-1, "" }, + }, + /* #12 : ws is a null wc string, no chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0000 }, 5 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #13 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0000 }, 5 }, + /*expect*/ { 0,1,0, "" }, + }, + { .is_last = 1 } + } + }, + { + { Twcstombs, TST_LOC_enUS }, + { + /* #01 : Any chars including a null char should not be stored in s. */ + { /*input.*/ { 1,1, { 0x00C4,0x0042,0x0043,0x0000 }, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #02 : Only one chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 1 }, + /*expect*/ { 0,1,1, "A" }, + }, + /* #03 : Only two chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 2 }, + /*expect*/ { 0,1,2, "AB" }, + }, + /* #04 : Only three chars should be stored in s. No null + termination. */ + { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 3 }, + /*expect*/ { 0,1,3, "ABC" }, + }, + /* #05 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 4 }, + /*expect*/ { 0,1,3, "ABC" }, + }, + /* #06 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 5 }, + /*expect*/ { 0,1,3, "ABC" }, + }, + /* #07 : Invalid mb sequence. No chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 }, + /*expect*/ { EILSEQ,1,(size_t)-1, "" }, + }, + /* #08 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 0 }, + /*expect*/ { 0,1,3, "" }, + }, + /* #09 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 1 }, + /*expect*/ { 0,1,3, "" }, + }, + /* #10 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 5 }, + /*expect*/ { 0,1,3, "" }, + }, + /* #11 : s is a null pointer. No chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 }, + /*expect*/ { EILSEQ,1,(size_t)-1, "" }, + }, + /* #12 : ws is a null wc string, no chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0000 }, 5, }, + /*expect*/ { 0,1,0, "" }, + }, + /* #13 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0000 }, 5 }, + /*expect*/ { 0,1,0, "" }, + }, + { .is_last = 1 } + } + }, +#if 0 + { + { Twcstombs, TST_LOC_eucJP }, + { + + /* #01 : Any chars including a null char should not be stored in s. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #02 : Only one chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 2 }, + /*expect*/ { 0,1,2, "\244\242" }, + }, + /* #03 : Only two chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 4 }, + /*expect*/ { 0,1,4, "\244\242\244\244" }, + }, + /* #04 : Only three chars should be stored in s. No null + termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 6 }, + /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, + }, + /* #05 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 7 }, + /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, + }, + /* #06 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8 }, + /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, + }, + /* #07 : Invalid mb sequence. No chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 }, + /*expect*/ { EILSEQ,1,-1, "" }, + }, + /* #08 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 }, + /*expect*/ { 0,1,6, "" }, + }, + /* #09 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 1 }, + /*expect*/ { 0,1,6, "" }, + }, + /* #10 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8 }, + /*expect*/ { 0,1,6, "" }, + }, + /* #11 : s is a null pointer. No chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 }, + /*expect*/ { EILSEQ,1,(size_t)-1, "" }, + }, + /* #12 : ws is a null wc string, no chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0000 }, 5 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #13 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0000 }, 5 }, + /*expect*/ { 0,1,0, "" }, + }, + { .is_last = 1 } + } + }, +#else + { + { Twcstombs, TST_LOC_ja_UTF8 }, + { + + /* #01 : Any chars including a null char should not be stored in s. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #02 : Only one chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 3 }, + /*expect*/ { 0,1,3, "\343\201\202" }, + }, + /* #03 : Only two chars should be stored in s. No null termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 6 }, + /*expect*/ { 0,1,6, "\343\201\202\343\201\204" }, + }, + /* #04 : Only three chars should be stored in s. No null + termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 9 }, + /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" }, + }, + /* #05 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 10 }, + /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" }, + }, + /* #06 : Only three chars should be stored in s with a null + termination. */ + { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 11 }, + /*expect*/ { 0,1,9, "\343\201\202\343\201\204\357\275\263" }, + }, + /* #07 : Invalid mb sequence. No chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 }, + /*expect*/ { EILSEQ,1,-1, "" }, + }, + /* #08 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 }, + /*expect*/ { 0,1,9, "" }, + }, + /* #09 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 1 }, + /*expect*/ { 0,1,9, "" }, + }, + /* #10 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8 }, + /*expect*/ { 0,1,9, "" }, + }, + /* #11 : s is a null pointer. No chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 }, + /*expect*/ { EILSEQ,1,(size_t)-1, "" }, + }, + /* #12 : ws is a null wc string, no chars should be stored in s. */ + { /*input.*/ { 1,1, { 0x0000 }, 5 }, + /*expect*/ { 0,1,0, "" }, + }, + /* #13 : s is a null pointer, no chars should be stored in s. */ + { /*input.*/ { 0,1, { 0x0000 }, 5 }, + /*expect*/ { 0,1,0, "" }, + }, + { .is_last = 1 } + } + }, +#endif + { + { Twcstombs, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_wcswidth.c b/test/locale-mbwc/dat_wcswidth.c new file mode 100644 index 000000000..6d2f98e17 --- /dev/null +++ b/test/locale-mbwc/dat_wcswidth.c @@ -0,0 +1,263 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcswidth.c + * + * WCSWIDTH: int wcswidth (const wchar_t *ws, size_t n); + */ + +TST_WCSWIDTH tst_wcswidth_loc [] = { + { + { Twcswidth, TST_LOC_de }, + { + { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0 }, /* 01 */ + /*expect*/ { 0,1,0 }, + }, + { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 1 }, /* 02 */ + /*expect*/ { 0,1,1 }, + }, + { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 2 }, /* 03 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 3 }, /* 04 */ + /*expect*/ { 0,1,3 }, + }, + { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 4 }, /* 05 */ + /*expect*/ { 0,1,3 }, + }, + { /*input.*/ { { 0x0000 }, 1 }, /* 06 */ + /*expect*/ { 0,1,0 }, + }, + { /*input.*/ { { 0x00C1,0x0001,0x0000 }, 2 }, /* 07 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x00C1,0x0001,0x0000 }, 1 }, /* 08 */ + /*expect*/ { 0,1,1 }, + }, + { /*input.*/ { { 0x00C1,0x0001,0x0000 }, 2 }, /* 09 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x00C1,0x0092,0x0000 }, 2 }, /* 10 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x00C1,0x0020,0x0000 }, 2 }, /* 11 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x00C1,0x0021,0x0000 }, 2 }, /* 12 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x00C1,0x007E,0x0000 }, 2 }, /* 13 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x00C1,0x007F,0x0000 }, 2 }, /* 14 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x00C1,0x0080,0x0000 }, 2 }, /* 15 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x00C1,0x00A0,0x0000 }, 2 }, /* 16 */ +#ifdef SHOJI_IS_RIGHT + /*expect*/ { 0,1,-1 }, +#else + /*expect*/ { 0,1,2 }, +#endif + }, + { /*input.*/ { { 0x00C1,0x00A1,0x0000 }, 2 }, /* 17 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x00C1,0x00FF,0x0000 }, 2 }, /* 18 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x00C1,0x3042,0x0000 }, 2 }, /* 19 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x00C1,0x3044,0x0000 }, 2 }, /* 20 */ + /*expect*/ { 0,1,-1 }, + }, + { .is_last = 1 } + } + }, + { + { Twcswidth, TST_LOC_enUS }, + { + { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 0 }, /* 01 */ + /*expect*/ { 0,1,0 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 1 }, /* 02 */ + /*expect*/ { 0,1,1 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 2 }, /* 03 */ + /*expect*/ { 0,1,2 }, + }, +#ifdef SHOJI_IS_RIGHT + { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 3 }, /* 04 */ + /*expect*/ { 0,1,3 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 4 }, /* 05 */ + /*expect*/ { 0,1,3 }, + }, +#else + { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 3 }, /* 04 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 4 }, /* 05 */ + /*expect*/ { 0,1,3 }, + }, +#endif + { /*input.*/ { { 0x0000 }, 1 }, /* 06 */ + /*expect*/ { 0,1,0 }, + }, + { /*input.*/ { { 0x0041,0x0001,0x0000 }, 2 }, /* 07 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x0041,0x0001,0x0000 }, 1 }, /* 08 */ + /*expect*/ { 0,1,1 }, + }, + { /*input.*/ { { 0x0041,0x0001,0x0000 }, 2 }, /* 09 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x0041,0x0092,0x0000 }, 2 }, /* 10 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x0041,0x0020,0x0000 }, 2 }, /* 11 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x0041,0x0021,0x0000 }, 2 }, /* 12 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x0041,0x007E,0x0000 }, 2 }, /* 13 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x0041,0x007F,0x0000 }, 2 }, /* 14 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x0041,0x0080,0x0000 }, 2 }, /* 15 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x0041,0x00A0,0x0000 }, 2 }, /* 16 */ + /*expect*/ { 0,1,-1 }, + }, +#ifdef SHOJI_IS_RIGHT + { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x0041,0x00FF,0x0000 }, 2 }, /* 18 */ + /*expect*/ { 0,1,2 }, + }, +#else + { /*input.*/ { { 0x0041,0x007E,0x0000 }, 2 }, /* 17 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x0041,0x0020,0x0000 }, 2 }, /* 18 */ + /*expect*/ { 0,1,2 }, + }, +#endif + { /*input.*/ { { 0x0041,0x3042,0x0000 }, 2 }, /* 19 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x0041,0x3044,0x0000 }, 2 }, /* 20 */ + /*expect*/ { 0,1,-1 }, + }, + { .is_last = 1 } + } + }, + { +#if 0 + { Twcswidth, TST_LOC_eucJP }, +#else + { Twcswidth, TST_LOC_ja_UTF8 }, +#endif + { + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0 }, /* 01 */ + /*expect*/ { 0,1,0 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 1 }, /* 02 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 2 }, /* 03 */ + /*expect*/ { 0,1,4 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 3 }, /* 04 */ + /*expect*/ { 0,1,6 }, + }, + { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 4 }, /* 05 */ + /*expect*/ { 0,1,6 }, + }, + { /*input.*/ { { 0x0000 }, 1 }, /* 06 */ + /*expect*/ { 0,1,0 }, + }, + { /*input.*/ { { 0x008E,0x0001,0x0000 }, 2 }, /* 07 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x3041,0x008E,0x0000 }, 1 }, /* 08 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x3041,0x008E,0x0000 }, 2 }, /* 09 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x3041,0x0001,0x0000 }, 2 }, /* 10 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x3041,0x3000,0x0000 }, 2 }, /* 11 */ + /*expect*/ { 0,1,4 }, + }, + { /*input.*/ { { 0x0041,0x0021,0x0000 }, 2 }, /* 12 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x0041,0x007E,0x0000 }, 2 }, /* 13 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x0041,0x007F,0x0000 }, 2 }, /* 14 */ + /*expect*/ { 0,1,-1 }, + }, + { /*input.*/ { { 0x0041,0x0080,0x0000 }, 2 }, /* 15 */ + /*expect*/ { 0,1,-1 }, + }, +#if 0 + { /*input.*/ { { 0x0041,0x00A0,0x0000 }, 2 }, /* 16 */ + /*expect*/ { 0,1,-1 }, + }, +#ifdef NO_WAIVER + /* <NO_WAIVER> */ /* returns 3 */ + { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */ + /*expect*/ { 0,1,-1 }, + }, +#else + /* XXX U00A1 is valid -> /x8f/xa2/xc4 in JIS X 0212 */ + { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */ + /*expect*/ { 0,1,3 }, + }, +#endif +#else + /* XXX U00A0 i UTF8 is valid -> /xc2/xa0 */ + { /*input.*/ { { 0x0041,0x00A0,0x0000 }, 2 }, /* 16 */ + /*expect*/ { 0,1,2 }, + }, +#ifdef NO_WAIVER + /* <NO_WAIVER> */ /* returns 3 */ + { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */ + /*expect*/ { 0,1,-1 }, + }, +#else + /* XXX U00A1 in UTF-8 is valid -> /xc2/xa1 */ + { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */ + /*expect*/ { 0,1,2 }, + }, +#endif +#endif + { /*input.*/ { { 0x0041,0xFF71,0x0000 }, 2 }, /* 18 */ + /*expect*/ { 0,1,2 }, + }, + { /*input.*/ { { 0x0041,0x3042,0x0000 }, 2 }, /* 19 */ + /*expect*/ { 0,1,3 }, + }, + { /*input.*/ { { 0x0041,0x3044,0x0000 }, 2 }, /* 20 */ + /*expect*/ { 0,1,3 }, + }, + { .is_last = 1 } + } + }, + { + { Twcswidth, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_wcsxfrm.c b/test/locale-mbwc/dat_wcsxfrm.c new file mode 100644 index 000000000..acb6727a8 --- /dev/null +++ b/test/locale-mbwc/dat_wcsxfrm.c @@ -0,0 +1,102 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY + * + * FILE: dat_wcsxfrm.c + * + * WCSXFRM: size_t wcsxfrm (char *s1, const char s2, size_t n); + */ + +/* + * NOTE: + * + * Return value and errno value are checked only for 2nd string: + * org2[]; n1 and n2 don't mean bytes to be translated. + * It means a buffer size including a null character. + * Results of this test depens on results of wcscoll(). + * If you got errors, check both test results. + */ + + +TST_WCSXFRM tst_wcsxfrm_loc [] = { + + { + { Twcsxfrm, TST_LOC_de }, + { + { /*inp*/ { { 0x00C1,0x0000 }, { 0x00C1,0x0000 }, 7, 7 }, /* #01 */ + /*exp*/ { 0, 0,0, }, + }, + { /*inp*/ { { 0x0042,0x0000 }, { 0x0061,0x0000 }, 7, 7 }, /* #02 */ + /*exp*/ { 0, 0,0, }, + }, + { /*inp*/ { { 0x0061,0x0000 }, { 0x0042,0x0000 }, 7, 7 }, /* #03 */ + /*exp*/ { 0, 0,0, }, + }, + { /*inp*/ { { 0x00E4,0x0000 }, { 0x00DC,0x0000 }, 7, 7 }, /* #04 */ + /*exp*/ { 0, 0,0, }, + }, + { /*inp*/ { { 0x00DC,0x0000 }, { 0x00E4,0x0000 }, 7, 7 }, /* #05 */ + /*exp*/ { 0, 0,0, }, + }, + { .is_last = 1 } + } + }, + { + { Twcsxfrm, TST_LOC_enUS }, + { + { /*inp*/ { { 0x0041,0x0000 }, { 0x0041,0x0000 }, 7, 7 }, /* #01 */ + /*exp*/ { 0, 0,0, }, + }, + { /*inp*/ { { 0x0042,0x0000 }, { 0x0061,0x0000 }, 7, 7 }, /* #02 */ + /*exp*/ { 0, 0,0, }, + }, + { /*inp*/ { { 0x0061,0x0000 }, { 0x0042,0x0000 }, 7, 7 }, /* #03 */ + /*exp*/ { 0, 0,0, }, + }, + { /*inp*/ { { 0x0000,0x0000 }, { 0x0000,0x0000 }, 7, 7 }, /* #04 */ + /*exp*/ { 0, 0,0, }, + }, +#ifdef NO_WAIVER + { /* <WAIVER> x 2 */ + /*inp*/ { { 0x3061,0x0000 }, { 0xFF42,0x0000 }, 7, 7 }, /* #05 */ + /* <WAIVER> */ + /*exp*/ { EINVAL, 1,(size_t)-1, }, + }, +#endif + { .is_last = 1 } + } + }, + { +#if 0 + { Twcsxfrm, TST_LOC_eucJP }, /* need more test data ! */ +#else + { Twcsxfrm, TST_LOC_ja_UTF8 }, /* need more test data ! */ +#endif + { + { /*inp*/ { { 0x3041,0x0000 }, { 0x3041,0x0000 }, 7, 7 }, /* #01 */ + /*exp*/ { 0, 0,0, }, + }, + { /*inp*/ { { 0x0042,0x0000 }, { 0x0061,0x0000 }, 7, 7 }, /* #02 */ + /*exp*/ { 0, 0,0, }, + }, + { /*inp*/ { { 0x0061,0x0000 }, { 0x0042,0x0000 }, 7, 7 }, /* #03 */ + /*exp*/ { 0, 0,0, }, + }, + { /*inp*/ { { 0x30A2,0x0000 }, { 0xFF71,0x0000 }, 7, 7 }, /* #04 */ + /*exp*/ { 0, 0,0, }, + }, + { /*inp*/ { { 0xFF71,0x0000 }, { 0x30A2,0x0000 }, 7, 7 }, /* #05 */ + /*exp*/ { 0, 0,0, }, + }, +#ifdef NO_WAIVER + /* <WAIVER> x 2 */ + { /*inp*/ { { 0x008E,0x0000 }, { 0x008F,0x0000 }, 7, 7 }, /* #06 */ + /*exp*/ { EINVAL, 1,(size_t)-1, }, + }, +#endif + { .is_last = 1 } + } + }, + { + { Twcsxfrm, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_wctob.c b/test/locale-mbwc/dat_wctob.c new file mode 100644 index 000000000..dfd344eb8 --- /dev/null +++ b/test/locale-mbwc/dat_wctob.c @@ -0,0 +1,61 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wctob.c + * + * ISW*: int wctob( wint_t wc ); + */ + + +TST_WCTOB tst_wctob_loc [] = { + + { { Twctob, TST_LOC_de }, + { + { { WEOF }, { 0, 1, EOF } }, + { { 0x0020 }, { 0, 1, 0x20 } }, + { { 0x0061 }, { 0, 1, 0x61 } }, + { { 0x0080 }, { 0, 1, 0x80 } }, + { { 0x00C4 }, { 0, 1, 0xC4 } }, + { { 0x30C4 }, { 0, 1, EOF } }, + { .is_last = 1 } /* Last element. */ + } + }, + { { Twctob, TST_LOC_enUS }, + { + { { WEOF }, { 0, 1, EOF } }, + { { 0x0020 }, { 0, 1, 0x20 } }, + { { 0x0061 }, { 0, 1, 0x61 } }, +#ifdef SHOJI_IS_RIGHT + { { 0x0080 }, { 0, 1, 0x80 } }, + { { 0x00C4 }, { 0, 1, 0xC4 } }, +#else + /* XXX These are no valid characters. */ + { { 0x0080 }, { 0, 1, EOF } }, + { { 0x00C4 }, { 0, 1, EOF } }, +#endif + { { 0x30C4 }, { 0, 1, EOF } }, + { .is_last = 1 } /* Last element. */ + } + }, +#if 0 + { { Twctob, TST_LOC_eucJP }, +#else + { { Twctob, TST_LOC_ja_UTF8 }, +#endif + { + { { WEOF }, { 0, 1, EOF } }, + { { 0x0020 }, { 0, 1, 0x20 } }, + { { 0x0061 }, { 0, 1, 0x61 } }, +#if 0 + { { 0x0080 }, { 0, 1, 0x80 } }, +#else + { { 0x0080 }, { 0, 1, EOF } }, +#endif + { { 0x00FF }, { 0, 1, EOF } }, + { { 0x00C4 }, { 0, 1, EOF } }, + { { 0x30C4 }, { 0, 1, EOF } }, + { .is_last = 1 } /* Last element. */ + } + }, + { { Twctob, TST_LOC_end } } +}; diff --git a/test/locale-mbwc/dat_wctomb.c b/test/locale-mbwc/dat_wctomb.c new file mode 100644 index 000000000..0ec3a9c0d --- /dev/null +++ b/test/locale-mbwc/dat_wctomb.c @@ -0,0 +1,168 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wctomb.c + * + * WCTOMB: int wctomb (char *s, wchar_t wc) + */ + + +/* + * FUNCTION: + * + * int wctomb (char *s, wchar_t wc); + * + * return: the number of bytes + * + * NOTE: + * + * o When you feed a null pointer for a string (s) to the function, + * set s_flg=0 instead of putting just a 'NULL' there. + * Even if you put a 'NULL', it means a null string as well as "". + * + * o When s is a null pointer, the function checks state dependency. + * + * state-dependent encoding - return NON-zero + * state-independent encoding - return 0 + * + * If state-dependent encoding is expected, set + * + * s_flg = 0, ret_flg = 0, ret_val = +1 + * + * If state-independent encoding is expected, set + * + * s_flg = 0, ret_flg = 0, ret_val = 0 + * + * + * When you set ret_flg=1, the test program simply compares an + * actual return value with an expected value. You can check + * state-independent case (return value is 0) in that way, but + * you can not check state-dependent case. So when you check + * state- dependency in this test function: tst_wctomb(), set + * ret_flg=0 always. It's a special case, and the test + * function takes care of it. + * + * Input Expect + * + * s_flg=0 ret_flg=0 + * | | + * { 0, 0 }, { 0, 0, 0, x, "" } + * | | + * not used ret_val: 0/+1 + * (expected val) + */ + + +TST_WCTOMB tst_wctomb_loc [] = { + { + { Twctomb, TST_LOC_de }, + { + /* #01 : normal case */ + { /*input.*/ { 1, 0x00C4 }, + /*expect*/ { 0,1,1, "Ä" }, + }, + /* #02 : normal case */ + { /*input.*/ { 1, 0x00DC }, + /*expect*/ { 0,1,1, "Ü" }, + }, + /* #03 : normal case */ + { /*input.*/ { 1, 0x0092 }, + /*expect*/ { 0,1,1, "\222" }, + }, + /* #04 : error case */ + { /*input.*/ { 1, 0x3041 }, + /*expect*/ { 0,1,-1, "" }, + }, + /* #05 : state dependency */ + { /*input.*/ { 0, 0x0000 }, + /*expect*/ { 0,0,0, "" }, + }, + { .is_last = 1 } + } + }, + { + { Twctomb, TST_LOC_enUS }, + { + /* #01 : normal case */ + { /*input.*/ { 1, 0x0041 }, + /*expect*/ { 0,1,1, "A" }, + }, + /* #02 : normal case */ + { /*input.*/ { 1, 0x0042 }, + /*expect*/ { 0,1,1, "B" }, + }, + /* #03 : error case */ + /* <WAIVER> */ + { /*input.*/ { 1, 0x00C4 }, + /*expect*/ { 0,1,-1, "" }, + }, + /* #04 : error case */ + { /*input.*/ { 1, 0x30A4 }, + /*expect*/ { 0,1,-1, "" }, + }, + /* #05 : state dependency */ + { /*input.*/ { 0, 0x0000 }, + /*expect*/ { 0,0,0, "" }, + }, + { .is_last = 1 } + } + }, +#if 0 + { + { Twctomb, TST_LOC_eucJP }, + { + /* #01 : normal case */ + { /*input.*/ { 1, 0x3042 }, + /*expect*/ { 0,1,2, "\244\242" }, + }, + /* #02 : normal case */ + { /*input.*/ { 1, 0x3044 }, + /*expect*/ { 0,1,2, "\244\244" }, + }, + /* #03 : normal case */ + { /*input.*/ { 1, 0x008E }, + /*expect*/ { 0,1,-1, "" }, + }, + /* #04 : jisX0212 */ + { /*input.*/ { 1, 0x00C4 }, + /*expect*/ { 0,1,3, "\217\252\243" }, /* jisx0210 returns 3 */ + }, + /* #05 : state dependency */ + { /*input.*/ { 0, 0x008E }, + /*expect*/ { 0,0,0, "" }, + }, + { .is_last = 1 } + } + }, +#else + { + { Twctomb, TST_LOC_ja_UTF8 }, + { + /* #01 : normal case */ + { /*input.*/ { 1, 0x3042 }, + /*expect*/ { 0,1,3, "\343\201\202" }, + }, + /* #02 : normal case */ + { /*input.*/ { 1, 0x3044 }, + /*expect*/ { 0,1,3, "\343\201\204" }, + }, + /* #03 : normal case */ + { /*input.*/ { 1, 0x008E }, + /*expect*/ { 0,1,2, "\302\216" }, + }, + /* #04 : jisX0212 */ + { /*input.*/ { 1, 0x00C4 }, + /*expect*/ { 0,1,2, "\303\204" }, /* jisx0210 returns 3 */ + }, + /* #05 : state dependency */ + { /*input.*/ { 0, 0x008E }, + /*expect*/ { 0,0,0, "" }, + }, + { .is_last = 1 } + } + }, +#endif + { + { Twctomb, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/dat_wctrans.c b/test/locale-mbwc/dat_wctrans.c new file mode 100644 index 000000000..df4d3ad61 --- /dev/null +++ b/test/locale-mbwc/dat_wctrans.c @@ -0,0 +1,99 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY + * + * FILE: dat_wctrans.c + * + * WCTRANS: wctrans_t wctrans( const char *charclass ); + */ + +/* + * NOTE: + * When a return value is expected to be 0 (false), + * set ret_flg=1 and set ret_val=0. + * Otherwise just set ret_flg=0. + */ + + +TST_WCTRANS tst_wctrans_loc [] = { + + { { Twctrans, TST_LOC_de }, + { + { /*inp*/ { "" }, /* #1 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "upper" }, /* #2 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "lower" }, /* #3 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "toupper" }, /* #4 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "tolower" }, /* #5 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "xxxxx" }, /* #6 */ + /*exp*/ { 0,1,0, }, + }, + { .is_last = 1 } + } + }, + { { Twctrans, TST_LOC_enUS }, + { + { /*inp*/ { "" }, /* #1 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "upper" }, /* #2 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "lower" }, /* #3 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "toupper" }, /* #4 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "tolower" }, /* #5 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "xxxxx" }, /* #6 */ + /*exp*/ { 0,1,0, }, + }, + { .is_last = 1 } + } + }, +#if 0 + { { Twctrans, TST_LOC_eucJP }, +#else + { { Twctrans, TST_LOC_ja_UTF8 }, +#endif + { + { /*inp*/ { "" }, /* #1 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "upper" }, /* #2 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "lower" }, /* #3 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "toupper" }, /* #4 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "tolower" }, /* #5 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "xxxxx" }, /* #6 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "tojhira" }, /* #7 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "tojkata" }, /* #8 */ + /*exp*/ { 0,0,0, }, + }, + { .is_last = 1 } + } + }, + { { Twctrans, TST_LOC_end }} +}; diff --git a/test/locale-mbwc/dat_wctype.c b/test/locale-mbwc/dat_wctype.c new file mode 100644 index 000000000..db3bf33e9 --- /dev/null +++ b/test/locale-mbwc/dat_wctype.c @@ -0,0 +1,189 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY + * + * FILE: dat_wctype.c + * + * WCTYPE: wctype_t wctype( const char *class ); + */ + +/* + * NOTE: + * When a return value is expected to be 0 (false), + * set ret_flg=1 and set ret_val=0. + * Otherwise just set ret_flg=0. + */ + + +TST_WCTYPE tst_wctype_loc [] = { + + { { Twctype, TST_LOC_de }, + { + { /*inp*/ { "alnum" }, /* #01 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "alpha" }, /* #02 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "cntrl" }, /* #03 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "digit" }, /* #04 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "graph" }, /* #05 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "lower" }, /* #06 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "print" }, /* #07 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "punct" }, /* #08 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "space" }, /* #09 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "upper" }, /* #10 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "xdigit" }, /* #11 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "" }, /* #12 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "ideograph" }, /* #13 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "english" }, /* #14 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "ascii" }, /* #15 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "special" }, /* #16 */ + /*exp*/ { 0,1,0, }, + }, + { .is_last = 1 } + } + }, + { { Twctype, TST_LOC_enUS }, + { + { /*inp*/ { "alnum" }, /* #01 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "alpha" }, /* #02 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "cntrl" }, /* #03 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "digit" }, /* #04 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "graph" }, /* #05 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "lower" }, /* #06 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "print" }, /* #07 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "punct" }, /* #08 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "space" }, /* #09 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "upper" }, /* #10 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "xdigit" }, /* #11 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "" }, /* #12 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "ideograph" }, /* #13 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "english" }, /* #14 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "ascii" }, /* #15 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "special" }, /* #16 */ + /*exp*/ { 0,1,0, }, + }, + { .is_last = 1 } + } + }, +#if 0 + { { Twctype, TST_LOC_eucJP }, +#else + { { Twctype, TST_LOC_ja_UTF8 }, +#endif + { + { /*inp*/ { "alnum" }, /* #01 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "alpha" }, /* #02 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "cntrl" }, /* #03 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "digit" }, /* #04 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "graph" }, /* #05 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "lower" }, /* #06 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "print" }, /* #07 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "punct" }, /* #08 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "space" }, /* #09 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "upper" }, /* #10 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "xdigit" }, /* #11 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "ideogram" }, /* #12 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "phonogram" }, /* #13 */ + /*exp*/ { 0,1,0, }, + }, + { /*inp*/ { "jspace" }, /* #14 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "jhira" }, /* #15 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "jkata" }, /* #16 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "jkanji" }, /* #17 */ + /*exp*/ { 0,0,0, }, + }, + { /*inp*/ { "jdigit" }, /* #18 */ + /*exp*/ { 0,0,0, }, + }, + { .is_last = 1 } + } + }, + { { Twctype, TST_LOC_end }} +}; diff --git a/test/locale-mbwc/dat_wcwidth.c b/test/locale-mbwc/dat_wcwidth.c new file mode 100644 index 000000000..b6b7c2974 --- /dev/null +++ b/test/locale-mbwc/dat_wcwidth.c @@ -0,0 +1,149 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: dat_wcwidth.c + * + * WCWIDTH: int wcwidth (wchar_t wc); + */ + +TST_WCWIDTH tst_wcwidth_loc [] = { + { + { Twcwidth, TST_LOC_de }, + { + { /*inp*/ { 0x0000 }, /* #01 */ + /*exp*/ { 0, 1,0, }, + }, + { /*inp*/ { 0x0020 }, /* #02 */ + /*exp*/ { 0, 1,1, }, + }, + { /*inp*/ { 0x007F }, /* #03 */ + /*exp*/ { 0, 1,-1, }, + }, + { /*inp*/ { 0x0080 }, /* #04 */ + /*exp*/ { 0, 1,-1, }, + }, + { /*inp*/ { 0x00A1 }, /* #05 */ + /*exp*/ { 0, 1,1, }, + }, + { /*inp*/ { 0x00C1 }, /* #06 */ + /*exp*/ { 0, 1,1, }, + }, +#ifdef SHOJI_IS_RIGHT + /* <WAIVER> */ /* CHECK : wint_t */ + { /*inp*/ { 0x3041 }, /* #07 */ + /*exp*/ { 0, 1,0, }, + }, +#else + { /*inp*/ { 0x3041 }, /* #07 */ + /*exp*/ { 0, 1,EOF, }, + }, +#endif + { .is_last = 1 } + } + }, + { + { Twcwidth, TST_LOC_enUS }, + { + { /*inp*/ { 0x0000 }, /* #01 */ + /*exp*/ { 0, 1,0, }, + }, + { /*inp*/ { 0x0020 }, /* #02 */ + /*exp*/ { 0, 1,1, }, + }, + { /*inp*/ { 0x007F }, /* #03 */ + /*exp*/ { 0, 1,-1, }, + }, + { /*inp*/ { 0x0080 }, /* #04 */ + /*exp*/ { 0, 1,-1, }, + }, + { /*inp*/ { 0x00A1 }, /* #05 */ + /*exp*/ { 0, 1,-1, }, + }, + { /*inp*/ { 0x00C1 }, /* #06 */ + /*exp*/ { 0, 1,-1, }, + }, + { /*inp*/ { 0x3041 }, /* #07 */ + /*exp*/ { 0, 1,-1, }, + }, + { .is_last = 1 } + } + }, +#if 0 + { + { Twcwidth, TST_LOC_eucJP }, + { + { /*inp*/ { 0x0000 }, /* #01 */ + /*exp*/ { 0, 1,0, }, + }, + { /*inp*/ { 0x0020 }, /* #02 */ + /*exp*/ { 0, 1,1, }, + }, + { /*inp*/ { 0x007F }, /* #03 */ + /*exp*/ { 0, 1,-1, }, + }, + { /*inp*/ { 0x0080 }, /* #04 */ + /*exp*/ { 0, 1,-1, }, + }, +#ifdef SHOJI_IS_RIGHT + /* <NO_WAIVER> */ + { /*inp*/ { 0x00A1 }, /* #05 */ + /*exp*/ { 0, 1,0, }, + }, +#else + /* XXX U00A1 is a valid character in EUC-JP. */ + { /*inp*/ { 0x00A1 }, /* #05 */ + /*exp*/ { 0, 1,2, }, + }, +#endif + /* jisx0212 */ + { /*inp*/ { 0x00C1 }, /* #06 */ + /*exp*/ { 0, 1,2, }, + }, + { /*inp*/ { 0x3041 }, /* #07 */ + /*exp*/ { 0, 1,2, }, + }, + { .is_last = 1 } + } + }, +#else + { + { Twcwidth, TST_LOC_ja_UTF8 }, + { + { /*inp*/ { 0x0000 }, /* #01 */ + /*exp*/ { 0, 1,0, }, + }, + { /*inp*/ { 0x0020 }, /* #02 */ + /*exp*/ { 0, 1,1, }, + }, + { /*inp*/ { 0x007F }, /* #03 */ + /*exp*/ { 0, 1,-1, }, + }, + { /*inp*/ { 0x0080 }, /* #04 */ + /*exp*/ { 0, 1,-1, }, + }, +#ifdef SHOJI_IS_RIGHT + /* <NO_WAIVER> */ + { /*inp*/ { 0x00A1 }, /* #05 */ + /*exp*/ { 0, 1,0, }, + }, +#else + /* XXX U00A1 is a valid character in EUC-JP.UTF-8. */ + { /*inp*/ { 0x00A1 }, /* #05 */ + /*exp*/ { 0, 1,1, }, + }, +#endif + /* jisx0212 */ + { /*inp*/ { 0x00C1 }, /* #06 */ + /*exp*/ { 0, 1,1, }, + }, + { /*inp*/ { 0x3041 }, /* #07 */ + /*exp*/ { 0, 1,2, }, + }, + { .is_last = 1 } + } + }, +#endif + { + { Twcwidth, TST_LOC_end } + } +}; diff --git a/test/locale-mbwc/tgn_funcdef.h b/test/locale-mbwc/tgn_funcdef.h new file mode 100644 index 000000000..ec247926f --- /dev/null +++ b/test/locale-mbwc/tgn_funcdef.h @@ -0,0 +1,160 @@ +#ifndef TGN_FUNCDEF_H +#define TGN_FUNCDEF_H + +/* Unique number for each test. */ +#define Tiswalnum 1 +#define Tiswalpha 2 +#define Tiswcntrl 3 +#define Tiswctype 4 +#define Tiswdigit 5 +#define Tiswgraph 6 +#define Tiswlower 7 +#define Tiswprint 8 +#define Tiswpunct 9 +#define Tiswspace 10 +#define Tiswupper 11 +#define Tiswxdigit 12 +#define Tmblen 13 +#define Tmbrlen 14 +#define Tmbrtowc 15 +#define Tmbsrtowcs 16 +#define Tmbstowcs 17 +#define Tmbtowc 18 +#define Tstrcoll 19 +#define Tstrfmon 20 +#define Tstrxfrm 21 +#define Tswscanf 22 +#define Ttowctrans 23 +#define Ttowlower 24 +#define Ttowupper 25 +#define Twcrtomb 26 +#define Twcscat 27 +#define Twcschr 28 +#define Twcscmp 29 +#define Twcscoll 30 +#define Twcscpy 31 +#define Twcscspn 32 +#define Twcslen 33 +#define Twcsncat 34 +#define Twcsncmp 35 +#define Twcsncpy 36 +#define Twcspbrk 37 +#define Twcsrtombs 38 +#define Twcsspn 39 +#define Twcsstr 40 +#define Twcstod 41 +#define Twcstok 42 +#define Twcstombs 43 +#define Twcswidth 44 +#define Twcsxfrm 45 +#define Twctob 46 +#define Twctomb 47 +#define Twctrans 48 +#define Twctype 49 +#define Twcwidth 50 + +/* Name of each test. */ +#define S_ISWALNUM "iswalnum" +#define S_ISWALPHA "iswalpha" +#define S_ISWCNTRL "iswcntrl" +#define S_ISWCTYPE "iswctype" +#define S_ISWDIGIT "iswdigit" +#define S_ISWGRAPH "iswgraph" +#define S_ISWLOWER "iswlower" +#define S_ISWPRINT "iswprint" +#define S_ISWPUNCT "iswpunct" +#define S_ISWSPACE "iswspace" +#define S_ISWUPPER "iswupper" +#define S_ISWXDIGIT "iswxdigit" +#define S_MBLEN "mblen" +#define S_MBRLEN "mbrlen" +#define S_MBRTOWC "mbrtowc" +#define S_MBSRTOWCS "mbsrtowcs" +#define S_MBSTOWCS "mbstowcs" +#define S_MBTOWC "mbtowc" +#define S_STRCOLL "strcoll" +#define S_STRFMON "strfmon" +#define S_STRXFRM "strxfrm" +#define S_SWSCANF "swscanf" +#define S_TOWCTRANS "towctrans" +#define S_TOWLOWER "towlower" +#define S_TOWUPPER "towupper" +#define S_WCRTOMB "wcrtomb" +#define S_WCSCAT "wcscat" +#define S_WCSCHR "wcschr" +#define S_WCSCMP "wcscmp" +#define S_WCSCOLL "wcscoll" +#define S_WCSCPY "wcscpy" +#define S_WCSCSPN "wcscspn" +#define S_WCSLEN "wcslen" +#define S_WCSNCAT "wcsncat" +#define S_WCSNCMP "wcsncmp" +#define S_WCSNCPY "wcsncpy" +#define S_WCSPBRK "wcspbrk" +#define S_WCSRTOMBS "wcsrtombs" +#define S_WCSSPN "wcsspn" +#define S_WCSSTR "wcsstr" +#define S_WCSTOD "wcstod" +#define S_WCSTOK "wcstok" +#define S_WCSTOMBS "wcstombs" +#define S_WCSWIDTH "wcswidth" +#define S_WCSXFRM "wcsxfrm" +#define S_WCTOB "wctob" +#define S_WCTOMB "wctomb" +#define S_WCTRANS "wctrans" +#define S_WCTYPE "wctype" +#define S_WCWIDTH "wcwidth" + +/* Prototypes for test functions. */ +extern int tst_iswalnum (FILE *, int); +extern int tst_iswalpha (FILE *, int); +extern int tst_iswcntrl (FILE *, int); +extern int tst_iswctype (FILE *, int); +extern int tst_iswdigit (FILE *, int); +extern int tst_iswgraph (FILE *, int); +extern int tst_iswlower (FILE *, int); +extern int tst_iswprint (FILE *, int); +extern int tst_iswpunct (FILE *, int); +extern int tst_iswspace (FILE *, int); +extern int tst_iswupper (FILE *, int); +extern int tst_iswxdigit (FILE *, int); +extern int tst_mblen (FILE *, int); +extern int tst_mbrlen (FILE *, int); +extern int tst_mbrtowc (FILE *, int); +extern int tst_mbsrtowcs (FILE *, int); +extern int tst_mbstowcs (FILE *, int); +extern int tst_mbtowc (FILE *, int); +extern int tst_strcoll (FILE *, int); +extern int tst_strfmon (FILE *, int); +extern int tst_strxfrm (FILE *, int); +extern int tst_swscanf (FILE *, int); +extern int tst_towctrans (FILE *, int); +extern int tst_towlower (FILE *, int); +extern int tst_towupper (FILE *, int); +extern int tst_wcrtomb (FILE *, int); +extern int tst_wcscat (FILE *, int); +extern int tst_wcschr (FILE *, int); +extern int tst_wcscmp (FILE *, int); +extern int tst_wcscoll (FILE *, int); +extern int tst_wcscpy (FILE *, int); +extern int tst_wcscspn (FILE *, int); +extern int tst_wcslen (FILE *, int); +extern int tst_wcsncat (FILE *, int); +extern int tst_wcsncmp (FILE *, int); +extern int tst_wcsncpy (FILE *, int); +extern int tst_wcspbrk (FILE *, int); +extern int tst_wcsrtombs (FILE *, int); +extern int tst_wcsspn (FILE *, int); +extern int tst_wcsstr (FILE *, int); +extern int tst_wcstod (FILE *, int); +extern int tst_wcstok (FILE *, int); +extern int tst_wcstombs (FILE *, int); +extern int tst_wcswidth (FILE *, int); +extern int tst_wcsxfrm (FILE *, int); +extern int tst_wctob (FILE *, int); +extern int tst_wctomb (FILE *, int); +extern int tst_wctrans (FILE *, int); +extern int tst_wctype (FILE *, int); +extern int tst_wcwidth (FILE *, int); + +#endif /* TGN_FUNCDEF_H */ diff --git a/test/locale-mbwc/tgn_locdef.h b/test/locale-mbwc/tgn_locdef.h new file mode 100644 index 000000000..89146a714 --- /dev/null +++ b/test/locale-mbwc/tgn_locdef.h @@ -0,0 +1,32 @@ +#ifndef TGN_LOCDEF_H +#define TGN_LOCDEF_H + +/* Defines for all locales used in the suite. */ + +/* POSIX C locale. */ +#define TST_LOC_C "C" + +/* German locale with ISO-8859-1. */ +#define TST_LOC_de "de_DE.ISO-8859-1" + +/* For US we use ANSI_X3.4-1968 (ASCII). Changed in en_US.ISO-8859-1 */ +#define TST_LOC_en "en_US.ISO-8859-1" +#define TST_LOC_enUS TST_LOC_C + +/* NOTE: ja_JP.EUC-JP locale isn't supported into the uClibc! + UTF-8 is the only multibyte codeset supported. */ +/* Japanese locale with EUC-JP. */ +#if 0 +#define TST_LOC_eucJP "ja_JP.EUC-JP" +#endif + +/* Japanese locale with UTF-8. */ +#define TST_LOC_ja_UTF8 "ja_JP.UTF-8" + +/* German locale with UTF-8. */ +#define TST_LOC_de_UTF8 "de_DE.UTF-8" + +/* End marker - must appear in each table as last entry. */ +#define TST_LOC_end "lastEntry" + +#endif /* TGN_LOCDEF_H */ diff --git a/test/locale-mbwc/tsp_common.c b/test/locale-mbwc/tsp_common.c new file mode 100644 index 000000000..cd88274c5 --- /dev/null +++ b/test/locale-mbwc/tsp_common.c @@ -0,0 +1,64 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * Main driver + */ + + +#define TST_FUNCTION_CALL(func) _TST_FUNCTION_CALL(func) +#define _TST_FUNCTION_CALL(func) tst ##_## func + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <locale.h> +#include <errno.h> +#include <signal.h> + +#include "tst_types.h" +#include "tgn_locdef.h" + + +int +main (int argc, char *argv[]) +{ + int ret; + int debug; + + debug = argc > 1 ? atoi (argv[1]) : 0; + + if (debug) + { + fprintf (stdout, "\nTST_MBWC ===> %s ...\n", argv[0]); + } + ret = TST_FUNCTION_CALL (TST_FUNCTION) (stdout, debug); + + return (ret != 0); +} + +#define MAX_RESULT_REC 132 +char result_rec[MAX_RESULT_REC]; + + +int +result (FILE * fp, char res, const char *func, const char *loc, int rec_no, + int seq_no, int case_no, const char *msg) +{ + if (fp == NULL + || strlen (func) + strlen (loc) + strlen (msg) + 32 > MAX_RESULT_REC) + { + fprintf (stderr, + "Warning: result(): can't write the result: %s:%s:%d:%d:%s\n", + func, loc, rec_no, case_no, msg); + return 0; + } + + sprintf (result_rec, "%s:%s:%d:%d:%d:%c:%s\n", func, loc, rec_no, seq_no, + case_no, res, msg); + + if (fputs (result_rec, fp) == EOF) + { + return 0; + } + + return 1; +} diff --git a/test/locale-mbwc/tst_funcs.h b/test/locale-mbwc/tst_funcs.h new file mode 100644 index 000000000..552bed2f9 --- /dev/null +++ b/test/locale-mbwc/tst_funcs.h @@ -0,0 +1,272 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: tst_funcs.h + * + * Definitions of macros + */ + + +#ifndef TST_FUNCS_H +#define TST_FUNCS_H + +#define C_SUCCESS 'S' /* test case test passed */ +#define C_FAILURE 'F' /* test case failed */ +#define C_IGNORED 'I' /* test case/result ignored (not tested) */ +#define C_INVALID 'D' /* test data may be wrong */ +#define C_LOCALES 'L' /* can't set locale (skip) */ + + +extern int result (FILE * fp, char res, const char *func, const char *loc, + int rec_no, int seq_num, int case_no, const char *msg); + +#define Result(C, S, E, M) \ + result (fp, (C), (S), locale, rec+1, seq_num+1, (E), (M)) + +#define CASE_0 0 +#define CASE_1 1 +#define CASE_2 2 +#define CASE_3 3 +#define CASE_4 4 +#define CASE_5 5 +#define CASE_6 6 +#define CASE_7 7 +#define CASE_8 8 +#define CASE_9 9 + +#define MS_PASSED "PASSED" +#define MS_SPACE " " +#define MS_FAILED " " +#define MS_NOTEST "NOTEST" +#define MS_ABORTU "ABEND0" +#define MS_ABORT "ABEND1" + +#define MK_PASSED 0x00 +#define MK_SPACE 0x01 +#define MK_NOTEST 0x02 +#define MK_ABORTU 0x04 +#define MK_ABORT 0x08 + + + +/* ------------------ COMMON MACROS ------------------ */ + +#define TST_ABS(x) (((x) > 0) ? (x) : -(x)) + +#define TMD_ERRET(_type_) int err_val; \ + int ret_flg; \ + _type_ ret_val + +#define TMD_RECHEAD(_FUNC_) \ + \ + typedef struct { \ + TIN_##_FUNC_##_REC input; \ + TEX_##_FUNC_##_REC expect; \ + int is_last; \ + } TST_##_FUNC_##_REC; \ + typedef struct { \ + TST_HEAD hd; \ + TST_##_FUNC_##_REC rec[ MAX_LOC_TEST ]; \ + } TST_##_FUNC_ + +#define TST_FTYP(func) tst_##func##_loc +#define TST_HEAD(func) tst_##func##_loc[ loc ].hd +#define TST_INPUT(func) tst_##func##_loc[ loc ].rec[ rec ].input +#define TST_EXPECT(func) tst_##func##_loc[ loc ].rec[ rec ].expect +#define TST_INPUT_SEQ(func) \ + tst_##func##_loc[ loc ].rec[ rec ].input.seq[ seq_num ] +#define TST_EXPECT_SEQ(func) \ + tst_##func##_loc[ loc ].rec[ rec ].expect.seq[ seq_num ] +#define TST_IS_LAST(func) \ + tst_##func##_loc[ loc ].rec[ rec ].is_last + + +#define TST_DECL_VARS(_type_) \ + int loc, rec, err_count = 0; \ + int warn_count __attribute__ ((unused)); \ + int func_id, seq_num = 0; \ + const char *locale; \ + int err_exp, ret_flg; \ + int errno_save = 0; \ + _type_ ret_exp; \ + _type_ ret + +#define TST_DO_TEST(o_func) \ + for (loc = 0; strcmp (TST_HEAD (o_func).locale, TST_LOC_end); ++loc) + + +#define TST_HEAD_LOCALE(ofunc, s_func) \ + func_id = TST_HEAD (ofunc).func_id; \ + locale = TST_HEAD (ofunc).locale; \ + if (setlocale (LC_ALL, locale) == NULL) \ + { \ + fprintf (stderr, "Warning : can't set locale: %s\nskipping ...\n", \ + locale); \ + result (fp, C_LOCALES, s_func, locale, 0, 0, 0, "can't set locale"); \ + ++err_count; \ + continue; \ + } + +#define TST_DO_REC(ofunc) \ + for (rec=0; !TST_IS_LAST (ofunc); ++rec) + +#define TST_DO_SEQ(_count_) \ + for (seq_num=0; seq_num < _count_; seq_num++) + +#define TST_GET_ERRET(_ofunc_) \ + err_exp = TST_EXPECT (_ofunc_).err_val; \ + ret_flg = TST_EXPECT (_ofunc_).ret_flg; \ + ret_exp = TST_EXPECT (_ofunc_).ret_val + +#define TST_GET_ERRET_SEQ(_ofunc_) \ + err_exp = TST_EXPECT_SEQ (_ofunc_).err_val; \ + ret_flg = TST_EXPECT_SEQ (_ofunc_).ret_flg; \ + ret_exp = TST_EXPECT_SEQ (_ofunc_).ret_val + +#define TST_CLEAR_ERRNO \ + errno = 0 + +#define TST_SAVE_ERRNO \ + errno_save = errno + +/* Test value of ret and of errno if it should have a value. */ +#define TST_IF_RETURN(_s_func_) \ + if (err_exp != 0) \ + { \ + if (errno_save == err_exp) \ + { \ + result (fp, C_SUCCESS, _s_func_, locale, rec+1, seq_num+1, 1, \ + MS_PASSED); \ + } \ + else \ + { \ + err_count++; \ + result (fp, C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 1, \ + "the value of errno is different from an expected value"); \ + } \ + } \ + \ + if (ret_flg == 1) \ + { \ + if (ret == ret_exp) \ + { \ + result (fp, C_SUCCESS, _s_func_, locale, rec+1, seq_num+1, 2, \ + MS_PASSED); \ + } \ + else \ + { \ + err_count++; \ + result (fp, C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 2, \ + "the return value is different from an expected value"); \ + } \ + } \ + else + +#define TEX_ERRET_REC(_type_) \ + struct { \ + TMD_ERRET (_type_); \ + } + +#define TEX_ERRET_REC_SEQ(_type_, _count_) \ + struct { \ + struct { \ + TMD_ERRET (_type_); \ + } seq[ _count_ ]; \ + } + + + +/* ------------------ FUNCTION: ISW*() ------------------- */ + +#define TST_ISW_STRUCT(_FUNC_, _func_) \ + typedef \ + struct { \ + wint_t wc; \ + } TIN_ISW##_FUNC_##_REC; \ + typedef \ + TEX_ERRET_REC (int) TEX_ISW##_FUNC_##_REC; \ + TMD_RECHEAD (ISW##_FUNC_) + +#define TST_FUNC_ISW(_FUNC_, _func_) \ +int \ +tst_isw##_func_ (FILE *fp, int debug_flg) \ +{ \ + TST_DECL_VARS(int); \ + wint_t wc; \ + TST_DO_TEST (isw##_func_) \ + { \ + TST_HEAD_LOCALE (isw##_func_, S_ISW##_FUNC_); \ + TST_DO_REC(isw##_func_) \ + { \ + TST_GET_ERRET (isw##_func_); \ + wc = TST_INPUT (isw##_func_).wc; \ + ret = isw##_func_ (wc); \ + if (debug_flg) \ + { \ + fprintf (stdout, "isw*() [ %s : %d ] ret = %d\n", locale, \ + rec+1, ret); \ + } \ + \ + TST_IF_RETURN (S_ISW##_FUNC_) \ + { \ + if (ret != 0) \ + { \ + result (fp, C_SUCCESS, S_ISW##_FUNC_, locale, rec+1, \ + seq_num+1, 3, MS_PASSED); \ + } \ + else \ + { \ + err_count++; \ + result (fp, C_FAILURE, S_ISW##_FUNC_, locale, rec+1, \ + seq_num+1, 3, \ + "the function returned 0, but should be non-zero"); \ + } \ + } \ + } \ + } \ + \ + return err_count; \ +} + + + +/* ------------------ FUNCTION: TOW*() ------------------ */ + +#define TST_TOW_STRUCT(_FUNC_, _func_) \ + typedef \ + struct { \ + wint_t wc; \ + } TIN_TOW##_FUNC_##_REC; \ + typedef \ + TEX_ERRET_REC (wint_t) TEX_TOW##_FUNC_##_REC; \ + TMD_RECHEAD (TOW##_FUNC_) + +#define TST_FUNC_TOW(_FUNC_, _func_) \ +int \ +tst_tow##_func_ (FILE *fp, int debug_flg) \ +{ \ + TST_DECL_VARS (wint_t); \ + wint_t wc; \ + TST_DO_TEST (tow##_func_) \ + { \ + TST_HEAD_LOCALE (tow##_func_, S_TOW##_FUNC_); \ + TST_DO_REC (tow##_func_) \ + { \ + TST_GET_ERRET (tow##_func_); \ + wc = TST_INPUT (tow##_func_).wc; \ + ret = tow##_func_ (wc); \ + if (debug_flg) \ + { \ + fprintf (stdout, "tow*() [ %s : %d ] ret = 0x%x\n", \ + locale, rec+1, ret); \ + } \ + \ + TST_IF_RETURN (S_TOW##_FUNC_) { }; \ + } \ + } \ + \ + return err_count; \ +} + + +#endif /* TST_FUNCS_H */ diff --git a/test/locale-mbwc/tst_iswalnum.c b/test/locale-mbwc/tst_iswalnum.c new file mode 100644 index 000000000..95ba863f9 --- /dev/null +++ b/test/locale-mbwc/tst_iswalnum.c @@ -0,0 +1,10 @@ +/* + ISWALNUM: int iswalnum (wint_t wc) +*/ + +#define TST_FUNCTION iswalnum + +#include "tsp_common.c" +#include "dat_iswalnum.c" + +TST_FUNC_ISW (ALNUM, alnum); diff --git a/test/locale-mbwc/tst_iswalpha.c b/test/locale-mbwc/tst_iswalpha.c new file mode 100644 index 000000000..8eff2cc11 --- /dev/null +++ b/test/locale-mbwc/tst_iswalpha.c @@ -0,0 +1,10 @@ +/* + ISWALPHA: int iswalpha (wint_t wc); +*/ + +#define TST_FUNCTION iswalpha + +#include "tsp_common.c" +#include "dat_iswalpha.c" + +TST_FUNC_ISW (ALPHA, alpha); diff --git a/test/locale-mbwc/tst_iswcntrl.c b/test/locale-mbwc/tst_iswcntrl.c new file mode 100644 index 000000000..4e1baa8dc --- /dev/null +++ b/test/locale-mbwc/tst_iswcntrl.c @@ -0,0 +1,10 @@ +/* + ISWCNTRL: int iswcntrl (wint_t wc); +*/ + +#define TST_FUNCTION iswcntrl + +#include "tsp_common.c" +#include "dat_iswcntrl.c" + +TST_FUNC_ISW (CNTRL, cntrl); diff --git a/test/locale-mbwc/tst_iswctype.c b/test/locale-mbwc/tst_iswctype.c new file mode 100644 index 000000000..3e79e092d --- /dev/null +++ b/test/locale-mbwc/tst_iswctype.c @@ -0,0 +1,53 @@ +/* + ISWCTYPE: int iswctype (wint_t wc, wctype_t desc); +*/ + +#define TST_FUNCTION iswctype + +#include "tsp_common.c" +#include "dat_iswctype.c" + + +int +tst_iswctype (FILE *fp, int debug_flg) +{ + TST_DECL_VARS (int); + wint_t wc; + const char *ts; + + TST_DO_TEST (iswctype) + { + TST_HEAD_LOCALE (iswctype, S_ISWCTYPE); + TST_DO_REC (iswctype) + { + TST_GET_ERRET (iswctype); + wc = TST_INPUT (iswctype).wc; + ts = TST_INPUT (iswctype).ts; + ret = iswctype (wc, wctype (ts)); + TST_SAVE_ERRNO; + if (debug_flg) + { + fprintf (stdout, "iswctype() [ %s : %d ] ret = %d\n", + locale, rec+1, ret); + } + + TST_IF_RETURN (S_ISWCTYPE) + { + if (ret != 0) + { + result (fp, C_SUCCESS, S_ISWCTYPE, locale, rec+1, + seq_num+1, 3, MS_PASSED); + } + else + { + err_count++; + result (fp, C_FAILURE, S_ISWCTYPE, locale, rec+1, + seq_num+1, 3, + "the function returned 0, but should be non-zero"); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_iswdigit.c b/test/locale-mbwc/tst_iswdigit.c new file mode 100644 index 000000000..5429ed07d --- /dev/null +++ b/test/locale-mbwc/tst_iswdigit.c @@ -0,0 +1,11 @@ +/* + ISWDIGIT: int iswdigit (wint_t wc); +*/ + + +#define TST_FUNCTION iswdigit + +#include "tsp_common.c" +#include "dat_iswdigit.c" + +TST_FUNC_ISW (DIGIT, digit); diff --git a/test/locale-mbwc/tst_iswgraph.c b/test/locale-mbwc/tst_iswgraph.c new file mode 100644 index 000000000..91a70e2d3 --- /dev/null +++ b/test/locale-mbwc/tst_iswgraph.c @@ -0,0 +1,10 @@ +/* + ISWGRAPH: int iswgraph (wint_t wc); +*/ + +#define TST_FUNCTION iswgraph + +#include "tsp_common.c" +#include "dat_iswgraph.c" + +TST_FUNC_ISW (GRAPH, graph); diff --git a/test/locale-mbwc/tst_iswlower.c b/test/locale-mbwc/tst_iswlower.c new file mode 100644 index 000000000..e0911001d --- /dev/null +++ b/test/locale-mbwc/tst_iswlower.c @@ -0,0 +1,10 @@ +/* + ISWLOWER: int iswlower (wint_t wc); +*/ + +#define TST_FUNCTION iswlower + +#include "tsp_common.c" +#include "dat_iswlower.c" + +TST_FUNC_ISW (LOWER, lower); diff --git a/test/locale-mbwc/tst_iswprint.c b/test/locale-mbwc/tst_iswprint.c new file mode 100644 index 000000000..8d5bde51f --- /dev/null +++ b/test/locale-mbwc/tst_iswprint.c @@ -0,0 +1,10 @@ +/* + ISWPRINT: int iswprint (wint_t wc); +*/ + +#define TST_FUNCTION iswprint + +#include "tsp_common.c" +#include "dat_iswprint.c" + +TST_FUNC_ISW (PRINT, print); diff --git a/test/locale-mbwc/tst_iswpunct.c b/test/locale-mbwc/tst_iswpunct.c new file mode 100644 index 000000000..4749d61e3 --- /dev/null +++ b/test/locale-mbwc/tst_iswpunct.c @@ -0,0 +1,10 @@ +/* + ISWPUNCT: int iswpunct (wint_t wc); +*/ + +#define TST_FUNCTION iswpunct + +#include "tsp_common.c" +#include "dat_iswpunct.c" + +TST_FUNC_ISW (PUNCT, punct); diff --git a/test/locale-mbwc/tst_iswspace.c b/test/locale-mbwc/tst_iswspace.c new file mode 100644 index 000000000..6c26d5ff6 --- /dev/null +++ b/test/locale-mbwc/tst_iswspace.c @@ -0,0 +1,10 @@ +/* + ISWSPACE: int iswspace (wint_t wc); +*/ + +#define TST_FUNCTION iswspace + +#include "tsp_common.c" +#include "dat_iswspace.c" + +TST_FUNC_ISW (SPACE, space); diff --git a/test/locale-mbwc/tst_iswupper.c b/test/locale-mbwc/tst_iswupper.c new file mode 100644 index 000000000..dfe5a5b35 --- /dev/null +++ b/test/locale-mbwc/tst_iswupper.c @@ -0,0 +1,10 @@ +/* + ISWUPPER: int iswupper (wint_t wc); +*/ + +#define TST_FUNCTION iswupper + +#include "tsp_common.c" +#include "dat_iswupper.c" + +TST_FUNC_ISW (UPPER, upper); diff --git a/test/locale-mbwc/tst_iswxdigit.c b/test/locale-mbwc/tst_iswxdigit.c new file mode 100644 index 000000000..5f9c0c5d5 --- /dev/null +++ b/test/locale-mbwc/tst_iswxdigit.c @@ -0,0 +1,10 @@ +/* + ISWXDIGIT: int iswxdigit (wint_t wc); +*/ + +#define TST_FUNCTION iswxdigit + +#include "tsp_common.c" +#include "dat_iswxdigit.c" + +TST_FUNC_ISW (XDIGIT, xdigit); diff --git a/test/locale-mbwc/tst_mblen.c b/test/locale-mbwc/tst_mblen.c new file mode 100644 index 000000000..35ccf6c1a --- /dev/null +++ b/test/locale-mbwc/tst_mblen.c @@ -0,0 +1,85 @@ +/* + MBLEN: int mblen (char *s, size_t n) +*/ + +#define TST_FUNCTION mblen + +#include "tsp_common.c" +#include "dat_mblen.c" + +int +tst_mblen (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (int); + char s_flg; + const char *s_in; + size_t n; + + TST_DO_TEST (mblen) + { + TST_HEAD_LOCALE (mblen, S_MBLEN); + TST_DO_REC (mblen) + { + TST_GET_ERRET (mblen); + s_flg = TST_INPUT (mblen).s_flg; + s_in = TST_INPUT (mblen).s; + n = TST_INPUT (mblen).n; + + if (s_flg == 0) + { + s_in = NULL; + } + + if (n == USE_MBCURMAX) + { + n = MB_CUR_MAX; + } + + TST_CLEAR_ERRNO; + ret = mblen (s_in, n); + TST_SAVE_ERRNO; + + TST_IF_RETURN (S_MBLEN) + { + if (s_in == NULL) + { /* state dependency */ + if (ret_exp == +1) + { /* state-dependent */ + if (ret != 0) + { + /* non-zero: state-dependent encoding */ + Result (C_SUCCESS, S_MBLEN, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_MBLEN, CASE_3, + "should be state-dependent encoding, " + "but the return value shows it is" + " state-independent"); + } + } + + if (ret_exp == 0) + { /* state-independent */ + if (ret == 0) + { + /* non-zero: state-dependent encoding */ + Result (C_SUCCESS, S_MBLEN, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_MBLEN, CASE_3, + "should be state-independent encoding, " + "but the return value shows it is" + " state-dependent"); + } + } + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_mbrlen.c b/test/locale-mbwc/tst_mbrlen.c new file mode 100644 index 000000000..b8681b721 --- /dev/null +++ b/test/locale-mbwc/tst_mbrlen.c @@ -0,0 +1,82 @@ +/* + MBRLEN: size_t mbrlen (char *s, size_t n, mbstate_t *ps) +*/ + +#define TST_FUNCTION mbrlen + +#include "tsp_common.c" +#include "dat_mbrlen.c" + + +int +tst_mbrlen (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (size_t); + char s_flg; + const char *s_in; + size_t n; + char t_flg; + char t_ini; + static mbstate_t s = { 0 }; + mbstate_t *ps; + + TST_DO_TEST (mbrlen) + { + TST_HEAD_LOCALE (mbrlen, S_MBRLEN); + TST_DO_REC (mbrlen) + { + if (mbrlen (NULL, 0, &s) != 0) + { + err_count++; + Result (C_FAILURE, S_MBRLEN, CASE_3, + "Initialization (external mbstate object) failed " + "- skipped this test case."); + continue; + } + + TST_DO_SEQ (MBRLEN_SEQNUM) + { + TST_GET_ERRET_SEQ (mbrlen); + s_flg = TST_INPUT_SEQ (mbrlen).s_flg; + s_in = TST_INPUT_SEQ (mbrlen).s; + n = TST_INPUT_SEQ (mbrlen).n; + t_flg = TST_INPUT_SEQ (mbrlen).t_flg; + t_ini = TST_INPUT_SEQ (mbrlen).t_init; + if (s_flg == 0) + { + s_in = NULL; + } + + if (n == USE_MBCURMAX) /* rewrite tst_mblen() like this */ + { + n = MB_CUR_MAX; + } + + ps = (t_flg == 0) ? NULL : &s; + + if (t_ini != 0) + { + memset (&s, 0, sizeof (s)); + mbrlen (NULL, 0, NULL); + } + + TST_CLEAR_ERRNO; + ret = mbrlen (s_in, n, ps); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stdout, "mbrlen() [ %s : %d : %d ] ret = %zd\n", + locale, rec + 1, seq_num + 1, ret); + fprintf (stdout, " errno = %d\n", errno_save); + } + + TST_IF_RETURN (S_MBRLEN) + { + }; + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_mbrlen.i b/test/locale-mbwc/tst_mbrlen.i new file mode 100644 index 000000000..95a00f8be --- /dev/null +++ b/test/locale-mbwc/tst_mbrlen.i @@ -0,0 +1,8009 @@ +# 1 "tst_mbrlen.c" +# 1 "/vob/stsca_uClibc-nptl/uClibc-nptl/test/locale-mbwc//" +# 1 "<built-in>" +#define __STDC__ 1 +# 1 "<built-in>" +#define __STDC_HOSTED__ 1 +# 1 "<built-in>" +#define __GNUC__ 4 +# 1 "<built-in>" +#define __GNUC_MINOR__ 1 +# 1 "<built-in>" +#define __GNUC_PATCHLEVEL__ 1 +# 1 "<built-in>" +#define __SIZE_TYPE__ unsigned int +# 1 "<built-in>" +#define __PTRDIFF_TYPE__ int +# 1 "<built-in>" +#define __WCHAR_TYPE__ long int +# 1 "<built-in>" +#define __WINT_TYPE__ unsigned int +# 1 "<built-in>" +#define __INTMAX_TYPE__ long long int +# 1 "<built-in>" +#define __UINTMAX_TYPE__ long long unsigned int +# 1 "<built-in>" +#define __GXX_ABI_VERSION 1002 +# 1 "<built-in>" +#define __SCHAR_MAX__ 127 +# 1 "<built-in>" +#define __SHRT_MAX__ 32767 +# 1 "<built-in>" +#define __INT_MAX__ 2147483647 +# 1 "<built-in>" +#define __LONG_MAX__ 2147483647L +# 1 "<built-in>" +#define __LONG_LONG_MAX__ 9223372036854775807LL +# 1 "<built-in>" +#define __WCHAR_MAX__ 2147483647 +# 1 "<built-in>" +#define __CHAR_BIT__ 8 +# 1 "<built-in>" +#define __INTMAX_MAX__ 9223372036854775807LL +# 1 "<built-in>" +#define __FLT_EVAL_METHOD__ 0 +# 1 "<built-in>" +#define __FLT_RADIX__ 2 +# 1 "<built-in>" +#define __FLT_MANT_DIG__ 24 +# 1 "<built-in>" +#define __FLT_DIG__ 6 +# 1 "<built-in>" +#define __FLT_MIN_EXP__ (-125) +# 1 "<built-in>" +#define __FLT_MIN_10_EXP__ (-37) +# 1 "<built-in>" +#define __FLT_MAX_EXP__ 128 +# 1 "<built-in>" +#define __FLT_MAX_10_EXP__ 38 +# 1 "<built-in>" +#define __FLT_MAX__ 3.40282347e+38F +# 1 "<built-in>" +#define __FLT_MIN__ 1.17549435e-38F +# 1 "<built-in>" +#define __FLT_EPSILON__ 1.19209290e-7F +# 1 "<built-in>" +#define __FLT_DENORM_MIN__ 1.40129846e-45F +# 1 "<built-in>" +#define __FLT_HAS_INFINITY__ 1 +# 1 "<built-in>" +#define __FLT_HAS_QUIET_NAN__ 1 +# 1 "<built-in>" +#define __DBL_MANT_DIG__ 53 +# 1 "<built-in>" +#define __DBL_DIG__ 15 +# 1 "<built-in>" +#define __DBL_MIN_EXP__ (-1021) +# 1 "<built-in>" +#define __DBL_MIN_10_EXP__ (-307) +# 1 "<built-in>" +#define __DBL_MAX_EXP__ 1024 +# 1 "<built-in>" +#define __DBL_MAX_10_EXP__ 308 +# 1 "<built-in>" +#define __DBL_MAX__ 1.7976931348623157e+308 +# 1 "<built-in>" +#define __DBL_MIN__ 2.2250738585072014e-308 +# 1 "<built-in>" +#define __DBL_EPSILON__ 2.2204460492503131e-16 +# 1 "<built-in>" +#define __DBL_DENORM_MIN__ 4.9406564584124654e-324 +# 1 "<built-in>" +#define __DBL_HAS_INFINITY__ 1 +# 1 "<built-in>" +#define __DBL_HAS_QUIET_NAN__ 1 +# 1 "<built-in>" +#define __LDBL_MANT_DIG__ 53 +# 1 "<built-in>" +#define __LDBL_DIG__ 15 +# 1 "<built-in>" +#define __LDBL_MIN_EXP__ (-1021) +# 1 "<built-in>" +#define __LDBL_MIN_10_EXP__ (-307) +# 1 "<built-in>" +#define __LDBL_MAX_EXP__ 1024 +# 1 "<built-in>" +#define __LDBL_MAX_10_EXP__ 308 +# 1 "<built-in>" +#define __DECIMAL_DIG__ 17 +# 1 "<built-in>" +#define __LDBL_MAX__ 1.7976931348623157e+308L +# 1 "<built-in>" +#define __LDBL_MIN__ 2.2250738585072014e-308L +# 1 "<built-in>" +#define __LDBL_EPSILON__ 2.2204460492503131e-16L +# 1 "<built-in>" +#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L +# 1 "<built-in>" +#define __LDBL_HAS_INFINITY__ 1 +# 1 "<built-in>" +#define __LDBL_HAS_QUIET_NAN__ 1 +# 1 "<built-in>" +#define __REGISTER_PREFIX__ +# 1 "<built-in>" +#define __USER_LABEL_PREFIX__ +# 1 "<built-in>" +#define __VERSION__ "4.1.1 (STMicroelectronics Special) [build Jun 26 2007]" +# 1 "<built-in>" +#define __NO_INLINE__ 1 +# 1 "<built-in>" +#define __FINITE_MATH_ONLY__ 1 +# 1 "<built-in>" +#define __sh__ 1 +# 1 "<built-in>" +#define __SH4__ 1 +# 1 "<built-in>" +#define __SH_FPU_ANY__ 1 +# 1 "<built-in>" +#define __SH_FPU_DOUBLE__ 1 +# 1 "<built-in>" +#define __LITTLE_ENDIAN__ 1 +# 1 "<built-in>" +#define __gnu_linux__ 1 +# 1 "<built-in>" +#define __linux 1 +# 1 "<built-in>" +#define __linux__ 1 +# 1 "<built-in>" +#define linux 1 +# 1 "<built-in>" +#define __unix 1 +# 1 "<built-in>" +#define __unix__ 1 +# 1 "<built-in>" +#define unix 1 +# 1 "<built-in>" +#define __ELF__ 1 +# 1 "<command line>" +#define DEBUG 1 +# 1 "<command line>" +#define _GNU_SOURCE 1 +# 1 "<command line>" +#define __USE_GNU 1 +# 1 "<command line>" +# 1 "./../../include/libc-symbols.h" 1 +# 23 "./../../include/libc-symbols.h" +#define _LIBC_SYMBOLS_H 1 +# 41 "./../../include/libc-symbols.h" +# 1 "../../include/bits/uClibc_arch_features.h" 1 + + + + + +#define _BITS_UCLIBC_ARCH_FEATURES_H + + + + + +#define __UCLIBC_ABORT_INSTRUCTION__ "trapa #0xff" + + + +#define __UCLIBC_MMAP_HAS_6_ARGS__ + + +#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__ + + +#undef __UCLIBC_BROKEN_CREATE_MODULE__ + + +#undef __UCLIBC_HANDLE_OLDER_RLIMIT__ + + +#define __UCLIBC_NO_UNDERSCORES__ + + +#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__ + + +#undef __UCLIBC_ASM_GLOBAL_DIRECTIVE__ + + +#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__ + + +#undef __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__ + + +#undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ + + +#define __UCLIBC_HAVE_SIGNED_ZERO__ +# 42 "./../../include/libc-symbols.h" 2 +# 51 "./../../include/libc-symbols.h" +#define _LIBC 1 + + +#define _GNU_SOURCE 1 + + + + + + +#define likely(x) __builtin_expect((!!(x)),1) + + +#define unlikely(x) __builtin_expect((!!(x)),0) + + +#define __LINUX_COMPILER_H + + +#define __cast__(_to) + + +#define attribute_unused __attribute__ ((unused)) + + +#define attribute_noreturn __attribute__ ((__noreturn__)) + + + + + +#define IS_IN_libc 1 + + + +#define NO_UNDERSCORES + + + + + +#define HAVE_ASM_SET_DIRECTIVE + + + + + + + +#define ASM_GLOBAL_DIRECTIVE .global + + + +#define HAVE_ASM_WEAK_DIRECTIVE + + + + + + + +#undef HAVE_ASM_WEAKEXT_DIRECTIVE + + + + + +#undef HAVE_ASM_GLOBAL_DOT_NAME + + + +#define HAVE_WEAK_SYMBOLS + + +#undef C_SYMBOL_NAME + + +#define C_SYMBOL_NAME(name) name + + + + + + +#define ASM_LINE_SEP ; +# 154 "./../../include/libc-symbols.h" +#define strong_alias(name,aliasname) _strong_alias(name, aliasname) +#define _strong_alias(name,aliasname) extern __typeof (name) aliasname __attribute__ ((alias (#name))); + + + + +#define weak_function __attribute__ ((weak)) +#define weak_const_function __attribute__ ((weak, __const__)) + + + + + +#define weak_alias(name,aliasname) _weak_alias (name, aliasname) +#define _weak_alias(name,aliasname) extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))); + + + +#define weak_extern(symbol) _weak_extern (weak symbol) +#define _weak_extern(expr) _Pragma (#expr) +# 278 "./../../include/libc-symbols.h" +#define internal_function + + + +#define __make_section_unallocated(section_string) __asm__ (".section " section_string "\n\t.previous"); + + + + + + + +#define __sec_comment "\n\t#" + + + + + + + +#define link_warning(symbol,msg) __make_section_unallocated (".gnu.warning." #symbol) static const char __evoke_link_warning_ ##symbol[] __attribute__ ((used, section (".gnu.warning." #symbol __sec_comment))) = msg; +# 323 "./../../include/libc-symbols.h" +#define INTUSE(name) name +#define INTDEF(name) +#define INTVARDEF(name) +#define INTDEF2(name,newname) +#define INTVARDEF2(name,newname) +# 419 "./../../include/libc-symbols.h" +#define attribute_hidden __attribute__ ((visibility ("hidden"))) +#define __hidden_proto_hiddenattr(attrs...) __attribute__ ((visibility ("hidden"), ##attrs)) + + + + + + + +#define hidden_proto(name,attrs...) __hidden_proto (name, __GI_ ##name, ##attrs) +#define __hidden_proto(name,internal,attrs...) extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) __hidden_proto_hiddenattr (attrs); + + +#define __hidden_asmname(name) __hidden_asmname1 (__USER_LABEL_PREFIX__, name) +#define __hidden_asmname1(prefix,name) __hidden_asmname2(prefix, name) +#define __hidden_asmname2(prefix,name) #prefix name +#define __hidden_ver1(local,internal,name) extern __typeof (name) __EI_ ##name __asm__(__hidden_asmname (#internal)); extern __typeof (name) __EI_ ##name __attribute__((alias (__hidden_asmname1 (,#local)))) + + +#define hidden_def(name) __hidden_ver1(__GI_ ##name, name, name); +#define hidden_data_def(name) hidden_def(name) +#define hidden_weak(name) __hidden_ver1(__GI_ ##name, name, name) __attribute__((weak)); +#define hidden_data_weak(name) hidden_weak(name) +# 515 "./../../include/libc-symbols.h" +#define versioned_symbol(lib,local,symbol,version) +#define hidden_ver(local,name) +#define hidden_data_ver(local,name) + + +#define libc_hidden_proto(name,attrs...) hidden_proto (name, ##attrs) +#define libc_hidden_def(name) hidden_def (name) +#define libc_hidden_weak(name) hidden_weak (name) +#define libc_hidden_ver(local,name) hidden_ver (local, name) +#define libc_hidden_data_def(name) hidden_data_def (name) +#define libc_hidden_data_weak(name) hidden_data_weak (name) +#define libc_hidden_data_ver(local,name) hidden_data_ver (local, name) +# 546 "./../../include/libc-symbols.h" +#define rtld_hidden_proto(name,attrs...) +#define rtld_hidden_def(name) +#define rtld_hidden_weak(name) +#define rtld_hidden_ver(local,name) +#define rtld_hidden_data_def(name) +#define rtld_hidden_data_weak(name) +#define rtld_hidden_data_ver(local,name) +# 564 "./../../include/libc-symbols.h" +#define libm_hidden_proto(name,attrs...) +#define libm_hidden_def(name) +#define libm_hidden_weak(name) +#define libm_hidden_ver(local,name) +#define libm_hidden_data_def(name) +#define libm_hidden_data_weak(name) +#define libm_hidden_data_ver(local,name) +# 582 "./../../include/libc-symbols.h" +#define libresolv_hidden_proto(name,attrs...) +#define libresolv_hidden_def(name) +#define libresolv_hidden_weak(name) +#define libresolv_hidden_ver(local,name) +#define libresolv_hidden_data_def(name) +#define libresolv_hidden_data_weak(name) +#define libresolv_hidden_data_ver(local,name) +# 600 "./../../include/libc-symbols.h" +#define librt_hidden_proto(name,attrs...) +#define librt_hidden_def(name) +#define librt_hidden_weak(name) +#define librt_hidden_ver(local,name) +#define librt_hidden_data_def(name) +#define librt_hidden_data_weak(name) +#define librt_hidden_data_ver(local,name) +# 618 "./../../include/libc-symbols.h" +#define libdl_hidden_proto(name,attrs...) +#define libdl_hidden_def(name) +#define libdl_hidden_weak(name) +#define libdl_hidden_ver(local,name) +#define libdl_hidden_data_def(name) +#define libdl_hidden_data_weak(name) +#define libdl_hidden_data_ver(local,name) +# 636 "./../../include/libc-symbols.h" +#define libintl_hidden_proto(name,attrs...) +#define libintl_hidden_def(name) +#define libintl_hidden_weak(name) +#define libintl_hidden_ver(local,name) +#define libintl_hidden_data_def(name) +#define libintl_hidden_data_weak(name) +#define libintl_hidden_data_ver(local,name) +# 654 "./../../include/libc-symbols.h" +#define libnsl_hidden_proto(name,attrs...) +#define libnsl_hidden_def(name) +#define libnsl_hidden_weak(name) +#define libnsl_hidden_ver(local,name) +#define libnsl_hidden_data_def(name) +#define libnsl_hidden_data_weak(name) +#define libnsl_hidden_data_ver(local,name) +# 672 "./../../include/libc-symbols.h" +#define libutil_hidden_proto(name,attrs...) +#define libutil_hidden_def(name) +#define libutil_hidden_weak(name) +#define libutil_hidden_ver(local,name) +#define libutil_hidden_data_def(name) +#define libutil_hidden_data_weak(name) +#define libutil_hidden_data_ver(local,name) +# 690 "./../../include/libc-symbols.h" +#define libcrypt_hidden_proto(name,attrs...) +#define libcrypt_hidden_def(name) +#define libcrypt_hidden_weak(name) +#define libcrypt_hidden_ver(local,name) +#define libcrypt_hidden_data_def(name) +#define libcrypt_hidden_data_weak(name) +#define libcrypt_hidden_data_ver(local,name) +# 708 "./../../include/libc-symbols.h" +#define libpthread_hidden_proto(name,attrs...) +#define libpthread_hidden_def(name) +#define libpthread_hidden_weak(name) +#define libpthread_hidden_ver(local,name) +#define libpthread_hidden_data_def(name) +#define libpthread_hidden_data_weak(name) +#define libpthread_hidden_data_ver(local,name) +# 1 "<command line>" 2 +# 1 "tst_mbrlen.c" + + + + +#define TST_FUNCTION mbrlen + +# 1 "tsp_common.c" 1 + + + + + + +#define TST_FUNCTION_CALL(func) _TST_FUNCTION_CALL(func) +#define _TST_FUNCTION_CALL(func) tst ##_ ## func + +# 1 "../../include/stdio.h" 1 +# 27 "../../include/stdio.h" +#define _STDIO_H 1 +# 1 "../../include/features.h" 1 +# 20 "../../include/features.h" +#define _FEATURES_H 1 + + + + +#define __UCLIBC__ 1 +# 34 "../../include/features.h" +#define __need_uClibc_config_h +# 1 "../../include/bits/uClibc_config.h" 1 +# 12 "../../include/bits/uClibc_config.h" +#define __UCLIBC_MAJOR__ 0 +#define __UCLIBC_MINOR__ 9 +#define __UCLIBC_SUBLEVEL__ 29 +#undef __TARGET_alpha__ +#undef __TARGET_arm__ +#undef __TARGET_bfin__ +#undef __TARGET_cris__ +#undef __TARGET_e1__ +#undef __TARGET_frv__ +#undef __TARGET_h8300__ +#undef __TARGET_hppa__ +#undef __TARGET_i386__ +#undef __TARGET_i960__ +#undef __TARGET_ia64__ +#undef __TARGET_m68k__ +#undef __TARGET_microblaze__ +#undef __TARGET_mips__ +#undef __TARGET_nios__ +#undef __TARGET_nios2__ +#undef __TARGET_powerpc__ +#define __TARGET_sh__ 1 +#undef __TARGET_sh64__ +#undef __TARGET_sparc__ +#undef __TARGET_v850__ +#undef __TARGET_vax__ +#undef __TARGET_x86_64__ + + + + +#define __TARGET_ARCH__ "sh" +#define __FORCE_OPTIONS_FOR_ARCH__ 1 +#undef __CONFIG_SH2A__ +#undef __CONFIG_SH2__ +#undef __CONFIG_SH3__ +#define __CONFIG_SH4__ 1 +#define __ARCH_HAS_BWD_MEMCPY__ 1 +#define __TARGET_SUBARCH__ "sh4" + + + + +#define __ARCH_ANY_ENDIAN__ 1 +#define __ARCH_LITTLE_ENDIAN__ 1 +#undef __ARCH_WANTS_BIG_ENDIAN__ +#define __ARCH_WANTS_LITTLE_ENDIAN__ 1 +#define __ARCH_HAS_MMU__ 1 +#define __ARCH_USE_MMU__ 1 +#define __UCLIBC_HAS_FLOATS__ 1 +#define __UCLIBC_HAS_FPU__ 1 +#define __DO_C99_MATH__ 1 +#define __KERNEL_HEADERS__ "/opt/STM/STLinux-2.3ear/devkit/sh4/uclibc_target/usr/include" +#define __HAVE_DOT_CONFIG__ 1 + + + + +#undef __HAVE_NO_PIC__ +#undef __DOPIC__ +#undef __HAVE_NO_SHARED__ +#undef __ARCH_HAS_NO_LDSO__ +#define __HAVE_SHARED__ 1 +#define __FORCE_SHAREABLE_TEXT_SEGMENTS__ 1 +#define __LDSO_LDD_SUPPORT__ 1 +#define __LDSO_CACHE_SUPPORT__ 1 +#undef __LDSO_PRELOAD_FILE_SUPPORT__ +#define __LDSO_BASE_FILENAME__ "ld.so" +#undef __UCLIBC_STATIC_LDCONFIG__ +#define __LDSO_RUNPATH__ 1 +#define __UCLIBC_CTOR_DTOR__ 1 +#define __LDSO_GNU_HASH_SUPPORT__ 1 +#undef __HAS_NO_THREADS__ +#define __UCLIBC_HAS_THREADS__ 1 +#define __UCLIBC_HAS_THREADS_NATIVE__ 1 +#define __PTHREADS_DEBUG_SUPPORT__ 1 +#undef __LINUXTHREADS_OLD__ +#define __UCLIBC_HAS_LFS__ 1 +#undef __MALLOC__ +#undef __MALLOC_SIMPLE__ +#define __MALLOC_STANDARD__ 1 +#undef __MALLOC_GLIBC_COMPAT__ +#undef __UCLIBC_DYNAMIC_ATEXIT__ +#define __COMPAT_ATEXIT__ 1 +#define __UCLIBC_SUSV3_LEGACY__ 1 +#undef __UCLIBC_SUSV3_LEGACY_MACROS__ +#define __UCLIBC_HAS_SHADOW__ 1 +#undef __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__ +#define __UCLIBC_HAS___PROGNAME__ 1 +#define __UNIX98PTY_ONLY__ 1 +#define __ASSUME_DEVPTS__ 1 +#define __UCLIBC_HAS_TM_EXTENSIONS__ 1 +#define __UCLIBC_HAS_TZ_CACHING__ 1 +#define __UCLIBC_HAS_TZ_FILE__ 1 +#define __UCLIBC_HAS_TZ_FILE_READ_MANY__ 1 +#define __UCLIBC_TZ_FILE_PATH__ "/etc/TZ" + + + + +#define __UCLIBC_HAS_IPV6__ 1 +#define __UCLIBC_HAS_RPC__ 1 +#define __UCLIBC_HAS_FULL_RPC__ 1 +#define __UCLIBC_HAS_REENTRANT_RPC__ 1 +#undef __UCLIBC_USE_NETLINK__ + + + + +#define __UCLIBC_HAS_STRING_GENERIC_OPT__ 1 +#define __UCLIBC_HAS_STRING_ARCH_OPT__ 1 +#define __UCLIBC_HAS_CTYPE_TABLES__ 1 +#define __UCLIBC_HAS_CTYPE_SIGNED__ 1 +#define __UCLIBC_HAS_CTYPE_UNSAFE__ 1 +#undef __UCLIBC_HAS_CTYPE_CHECKED__ +#undef __UCLIBC_HAS_CTYPE_ENFORCED__ +#define __UCLIBC_HAS_WCHAR__ 1 +#define __UCLIBC_HAS_LOCALE__ 1 +#undef __UCLIBC_PREGENERATED_LOCALE_DATA__ +#undef __UCLIBC_HAS_XLOCALE__ +#undef __UCLIBC_HAS_HEXADECIMAL_FLOATS__ +#undef __UCLIBC_HAS_GLIBC_DIGIT_GROUPING__ +#undef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__ +#define __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9 +#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__ +#undef __UCLIBC_HAS_STDIO_BUFSIZ_NONE__ +#undef __UCLIBC_HAS_STDIO_BUFSIZ_256__ +#undef __UCLIBC_HAS_STDIO_BUFSIZ_512__ +#undef __UCLIBC_HAS_STDIO_BUFSIZ_1024__ +#undef __UCLIBC_HAS_STDIO_BUFSIZ_2048__ +#define __UCLIBC_HAS_STDIO_BUFSIZ_4096__ 1 +#undef __UCLIBC_HAS_STDIO_BUFSIZ_8192__ +#define __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1 +#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__ +#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__ +#undef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__ +#define __UCLIBC_HAS_STDIO_GETC_MACRO__ 1 +#define __UCLIBC_HAS_STDIO_PUTC_MACRO__ 1 +#define __UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1 +#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__ +#undef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__ +#undef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__ +#define __UCLIBC_HAS_PRINTF_M_SPEC__ 1 +#define __UCLIBC_HAS_ERRNO_MESSAGES__ 1 +#define __UCLIBC_HAS_SYS_ERRLIST__ 1 +#define __UCLIBC_HAS_SIGNUM_MESSAGES__ 1 +#undef __UCLIBC_HAS_SYS_SIGLIST__ +#undef __UCLIBC_HAS_GETTEXT_AWARENESS__ +#define __UCLIBC_HAS_GNU_GETOPT__ 1 +#define __UCLIBC_HAS_STDIO_FUTEXES__ 1 +#define __UCLIBC_HAS_GNU_GETSUBOPT__ 1 + + + + +#define __UCLIBC_HAS_REGEX__ 1 +#undef __UCLIBC_HAS_REGEX_OLD__ +#define __UCLIBC_HAS_FNMATCH__ 1 +#define __UCLIBC_HAS_FNMATCH_OLD__ 1 +#undef __UCLIBC_HAS_WORDEXP__ +#undef __UCLIBC_HAS_FTW__ +#define __UCLIBC_HAS_GLOB__ 1 +#define __UCLIBC_HAS_GNU_GLOB__ 1 + + + + +#define __SHARED_LIB_LOADER_PREFIX__ "/lib" +#define __RUNTIME_PREFIX__ "/" +#define __DEVEL_PREFIX__ "/usr" + + + + +#undef __UCLIBC_HAS_ARC4RANDOM__ +#undef __HAVE_NO_SSP__ +#undef __UCLIBC_HAS_SSP__ +#define __UCLIBC_BUILD_RELRO__ 1 +#undef __UCLIBC_BUILD_NOW__ +#define __UCLIBC_BUILD_NOEXECSTACK__ 1 + + + + +#define __CROSS_COMPILER_PREFIX__ "sh4-linux-uclibc-" +#define __UCLIBC_EXTRA_CFLAGS__ "" +#define __DODEBUG__ 1 +#define __DOASSERTS__ 1 +#define __SUPPORT_LD_DEBUG__ 1 +#define __SUPPORT_LD_DEBUG_EARLY__ 1 +#undef __UCLIBC_MALLOC_DEBUGGING__ +#define __WARNINGS__ "-Wall" +#define __EXTRA_WARNINGS__ 1 +#undef __DOMULTI__ +#define __UCLIBC_MJN3_ONLY__ 1 +# 36 "../../include/features.h" 2 +#undef __need_uClibc_config_h + + + + +#define __OPTIMIZE_SIZE__ 1 +# 113 "../../include/features.h" +#undef __USE_ISOC99 +#undef __USE_POSIX +#undef __USE_POSIX2 +#undef __USE_POSIX199309 +#undef __USE_POSIX199506 +#undef __USE_XOPEN +#undef __USE_XOPEN_EXTENDED +#undef __USE_UNIX98 +#undef __USE_XOPEN2K +#undef __USE_LARGEFILE +#undef __USE_LARGEFILE64 +#undef __USE_FILE_OFFSET64 +#undef __USE_BSD +#undef __USE_SVID +#undef __USE_MISC +#undef __USE_ATFILE +#undef __USE_GNU +#undef __USE_REENTRANT +#undef __USE_FORTIFY_LEVEL +#undef __FAVOR_BSD +#undef __KERNEL_STRICT_NAMES + + + + +#define __KERNEL_STRICT_NAMES + + + +#define __USE_ANSI 1 +# 152 "../../include/features.h" +#define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +# 169 "../../include/features.h" +#undef _ISOC99_SOURCE +#define _ISOC99_SOURCE 1 +#undef _POSIX_SOURCE +#define _POSIX_SOURCE 1 +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 199506L +#undef _XOPEN_SOURCE +#define _XOPEN_SOURCE 600 +#undef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED 1 + +#undef _LARGEFILE64_SOURCE +#define _LARGEFILE64_SOURCE 1 + +#undef _BSD_SOURCE +#define _BSD_SOURCE 1 +#undef _SVID_SOURCE +#define _SVID_SOURCE 1 +#undef _ATFILE_SOURCE +#define _ATFILE_SOURCE 1 +# 207 "../../include/features.h" +#define __USE_ISOC99 1 +# 223 "../../include/features.h" +#define __USE_POSIX 1 + + + +#define __USE_POSIX2 1 + + + +#define __USE_POSIX199309 1 + + + +#define __USE_POSIX199506 1 + + + + + + + +#define __USE_XOPEN 1 + +#define __USE_XOPEN_EXTENDED 1 +#define __USE_UNIX98 1 +#undef _LARGEFILE_SOURCE +#define _LARGEFILE_SOURCE 1 + +#define __USE_XOPEN2K 1 +#undef __USE_ISOC99 +#define __USE_ISOC99 1 +# 262 "../../include/features.h" +#define __USE_LARGEFILE 1 + + + +#define __USE_LARGEFILE64 1 + + + + + + + +#define __USE_MISC 1 + + + +#define __USE_BSD 1 + + + +#define __USE_SVID 1 + + + +#define __USE_ATFILE 1 + + + +#define __USE_GNU 1 + + + + + + + +#undef _FORTIFY_SOURCE +# 307 "../../include/features.h" +#define __USE_FORTIFY_LEVEL 0 + + + +#define __STDC_IEC_559__ 1 +#define __STDC_IEC_559_COMPLEX__ 1 + + + +#define __STDC_ISO_10646__ 200009L +# 340 "../../include/features.h" +#define __GLIBC_PREREQ(maj,min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) +# 356 "../../include/features.h" +# 1 "../../include/sys/cdefs.h" 1 +# 20 "../../include/sys/cdefs.h" +#define _SYS_CDEFS_H 1 +# 35 "../../include/sys/cdefs.h" +#undef __P +#undef __PMT +# 46 "../../include/sys/cdefs.h" +#define __THROW __attribute__ ((__nothrow__)) +#define __NTH(fct) __attribute__ ((__nothrow__)) fct +# 73 "../../include/sys/cdefs.h" +#define __P(args) args +#define __PMT(args) args + + + + +#define __CONCAT(x,y) x ## y +#define __STRING(x) #x + + +#define __ptr_t void * +#define __long_double_t long double + + + + + + + +#define __BEGIN_DECLS +#define __END_DECLS +# 113 "../../include/sys/cdefs.h" +#define __BEGIN_NAMESPACE_STD +#define __END_NAMESPACE_STD +#define __USING_NAMESPACE_STD(name) +#define __BEGIN_NAMESPACE_C99 +#define __END_NAMESPACE_C99 +#define __USING_NAMESPACE_C99(name) + + + + + +#define __bounded +#define __unbounded +#define __ptrvalue + + + + +#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) +#define __bos0(ptr) __builtin_object_size (ptr, 0) +#define __warndecl(name,msg) extern void name (void) + + + + + +#define __flexarr [] +# 166 "../../include/sys/cdefs.h" +#define __REDIRECT(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) + + + + +#define __REDIRECT_NTH(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) __THROW + + +#define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname) +#define __ASMNAME2(prefix,cname) __STRING (prefix) cname +# 196 "../../include/sys/cdefs.h" +#define __attribute_malloc__ __attribute__ ((__malloc__)) +# 205 "../../include/sys/cdefs.h" +#define __attribute_pure__ __attribute__ ((__pure__)) +# 214 "../../include/sys/cdefs.h" +#define __attribute_used__ __attribute__ ((__used__)) +#define __attribute_noinline__ __attribute__ ((__noinline__)) + + + + + + + +#define __attribute_deprecated__ __attribute__ ((__deprecated__)) +# 235 "../../include/sys/cdefs.h" +#define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x))) +# 245 "../../include/sys/cdefs.h" +#define __attribute_format_strfmon__(a,b) __attribute__ ((__format__ (__strfmon__, a, b))) +# 254 "../../include/sys/cdefs.h" +#define __nonnull(params) __attribute__ ((__nonnull__ params)) + + + + + + + +#define __attribute_warn_unused_result__ __attribute__ ((__warn_unused_result__)) +# 271 "../../include/sys/cdefs.h" +#define __wur + + + + +#define __always_inline __inline __attribute__ ((__always_inline__)) +# 298 "../../include/sys/cdefs.h" +#define __restrict_arr __restrict +# 357 "../../include/features.h" 2 +# 396 "../../include/features.h" +#undef _LARGEFILE_SOURCE +#undef _LARGEFILE64_SOURCE +#undef _FILE_OFFSET_BITS +#undef __USE_LARGEFILE +#undef __USE_LARGEFILE64 +#undef __USE_FILE_OFFSET64 +#define _LARGEFILE_SOURCE 1 +#define _LARGEFILE64_SOURCE 1 +#define __USE_LARGEFILE 1 +#define __USE_LARGEFILE64 1 + + + +#undef _ATFILE_SOURCE +#undef __USE_ATFILE + + +# 1 "../../include/libc-internal.h" 1 +# 20 "../../include/libc-internal.h" +#define _LIBC_INTERNAL_H 1 + +# 1 "../../include/features.h" 1 +# 23 "../../include/libc-internal.h" 2 + + +#define attribute_relro __attribute__ ((section (".data.rel.ro"))) + + + + + +#define attribute_tls_model_ie __attribute__ ((tls_model ("initial-exec"))) +# 43 "../../include/libc-internal.h" +#define __need_size_t +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4 +# 189 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#define __size_t__ +#define __SIZE_T__ +#define _SIZE_T +#define _SYS_SIZE_T_H +#define _T_SIZE_ +#define _T_SIZE +#define __SIZE_T +#define _SIZE_T_ +#define _BSD_SIZE_T_ +#define _SIZE_T_DEFINED_ +#define _SIZE_T_DEFINED +#define _BSD_SIZE_T_DEFINED_ +#define _SIZE_T_DECLARED +#define ___int_size_t_h +#define _GCC_SIZE_T +#define _SIZET_ + + + +#define __size_t + + + + + +typedef unsigned int size_t; +# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_size_t +# 409 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_NULL +# 45 "../../include/libc-internal.h" 2 + + + +extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen); +# 64 "../../include/libc-internal.h" +extern const char *__uclibc_progname __attribute__ ((visibility ("hidden"))); + + + + +# 1 "../../include/bits/stackinfo.h" 1 +# 23 "../../include/bits/stackinfo.h" +#define _STACKINFO_H 1 + + +#define _STACK_GROWS_DOWN 1 +# 70 "../../include/libc-internal.h" 2 + +#define extend_alloca(buf,len,newlen) (__typeof (buf)) ({ size_t __newlen = (newlen); char *__newbuf = alloca (__newlen); if (__newbuf + __newlen == (char *) buf) len += __newlen; else len = __newlen; __newbuf; }) +# 414 "../../include/features.h" 2 +# 422 "../../include/features.h" +#define __user +# 29 "../../include/stdio.h" 2 + + + +#define __need_size_t +#define __need_NULL +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4 +# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_size_t +# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef NULL + + + + +#define NULL ((void *)0) + + + + + +#undef __need_NULL +# 35 "../../include/stdio.h" 2 + +# 1 "../../include/bits/types.h" 1 +# 25 "../../include/bits/types.h" +#define _BITS_TYPES_H 1 + + +# 1 "../../include/bits/wordsize.h" 1 +# 19 "../../include/bits/wordsize.h" +#define __WORDSIZE 32 +# 29 "../../include/bits/types.h" 2 + +#define __need_size_t +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4 +# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_size_t +# 409 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_NULL +# 32 "../../include/bits/types.h" 2 +# 1 "../../include/bits/kernel_types.h" 1 + + + + + + + +#define __ASM_SH_POSIX_TYPES_H + +typedef unsigned short __kernel_dev_t; +typedef unsigned long __kernel_ino_t; +typedef unsigned short __kernel_mode_t; +typedef unsigned short __kernel_nlink_t; +typedef long __kernel_off_t; +typedef int __kernel_pid_t; +typedef unsigned short __kernel_ipc_pid_t; +typedef unsigned short __kernel_uid_t; +typedef unsigned short __kernel_gid_t; +typedef unsigned int __kernel_size_t; +typedef int __kernel_ssize_t; +typedef int __kernel_ptrdiff_t; +typedef long __kernel_time_t; +typedef long __kernel_suseconds_t; +typedef long __kernel_clock_t; +typedef int __kernel_daddr_t; +typedef char * __kernel_caddr_t; +typedef unsigned short __kernel_uid16_t; +typedef unsigned short __kernel_gid16_t; +typedef unsigned int __kernel_uid32_t; +typedef unsigned int __kernel_gid32_t; +typedef unsigned short __kernel_old_uid_t; +typedef unsigned short __kernel_old_gid_t; +typedef __kernel_dev_t __kernel_old_dev_t; +typedef long long __kernel_loff_t; + +typedef struct { + + + + int __val[2]; + +} __kernel_fsid_t; +# 33 "../../include/bits/types.h" 2 + + +typedef unsigned char __u_char; +typedef unsigned short int __u_short; +typedef unsigned int __u_int; +typedef unsigned long int __u_long; + + +typedef signed char __int8_t; +typedef unsigned char __uint8_t; +typedef signed short int __int16_t; +typedef unsigned short int __uint16_t; +typedef signed int __int32_t; +typedef unsigned int __uint32_t; + + + + +__extension__ typedef signed long long int __int64_t; +__extension__ typedef unsigned long long int __uint64_t; + + + + + + + +__extension__ typedef long long int __quad_t; +__extension__ typedef unsigned long long int __u_quad_t; +# 103 "../../include/bits/types.h" +#define __S16_TYPE short int +#define __U16_TYPE unsigned short int +#define __S32_TYPE int +#define __U32_TYPE unsigned int +#define __SLONGWORD_TYPE long int +#define __ULONGWORD_TYPE unsigned long int + +#define __SQUAD_TYPE __quad_t +#define __UQUAD_TYPE __u_quad_t +#define __SWORD_TYPE int +#define __UWORD_TYPE unsigned int +#define __SLONG32_TYPE long int +#define __ULONG32_TYPE unsigned long int +#define __S64_TYPE __quad_t +#define __U64_TYPE __u_quad_t + + +#define __STD_TYPE __extension__ typedef +# 135 "../../include/bits/types.h" +# 1 "../../include/bits/typesizes.h" 1 +# 25 "../../include/bits/typesizes.h" +#define _BITS_TYPESIZES_H 1 + + + + +#define __DEV_T_TYPE __UQUAD_TYPE +#define __UID_T_TYPE __U32_TYPE +#define __GID_T_TYPE __U32_TYPE +#define __INO_T_TYPE __ULONGWORD_TYPE +#define __INO64_T_TYPE __UQUAD_TYPE +#define __MODE_T_TYPE __U32_TYPE +#define __NLINK_T_TYPE __UWORD_TYPE +#define __OFF_T_TYPE __SLONGWORD_TYPE +#define __OFF64_T_TYPE __SQUAD_TYPE +#define __PID_T_TYPE __S32_TYPE +#define __RLIM_T_TYPE __ULONGWORD_TYPE +#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __BLKCNT_T_TYPE __SLONGWORD_TYPE +#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __ID_T_TYPE __U32_TYPE +#define __CLOCK_T_TYPE __SLONGWORD_TYPE +#define __TIME_T_TYPE __SLONGWORD_TYPE +#define __USECONDS_T_TYPE __U32_TYPE +#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE +#define __DADDR_T_TYPE __S32_TYPE +#define __SWBLK_T_TYPE __SLONGWORD_TYPE +#define __KEY_T_TYPE __S32_TYPE +#define __CLOCKID_T_TYPE __S32_TYPE +#define __TIMER_T_TYPE void * +#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE +#define __FSID_T_TYPE struct { int __val[2]; } +#define __SSIZE_T_TYPE __SWORD_TYPE + + +#define __FD_SETSIZE 1024 +# 136 "../../include/bits/types.h" 2 + + +__extension__ typedef __u_quad_t __dev_t; +__extension__ typedef unsigned int __uid_t; +__extension__ typedef unsigned int __gid_t; +__extension__ typedef unsigned long int __ino_t; +__extension__ typedef __u_quad_t __ino64_t; +__extension__ typedef unsigned int __mode_t; +__extension__ typedef unsigned int __nlink_t; +__extension__ typedef long int __off_t; +__extension__ typedef __quad_t __off64_t; +__extension__ typedef int __pid_t; +__extension__ typedef struct { int __val[2]; } __fsid_t; +__extension__ typedef long int __clock_t; +__extension__ typedef unsigned long int __rlim_t; +__extension__ typedef __u_quad_t __rlim64_t; +__extension__ typedef unsigned int __id_t; +__extension__ typedef long int __time_t; +__extension__ typedef unsigned int __useconds_t; +__extension__ typedef long int __suseconds_t; + +__extension__ typedef int __daddr_t; +__extension__ typedef long int __swblk_t; +__extension__ typedef int __key_t; + + +__extension__ typedef int __clockid_t; + + +__extension__ typedef void * __timer_t; + + +__extension__ typedef long int __blksize_t; + + + + +__extension__ typedef long int __blkcnt_t; +__extension__ typedef __quad_t __blkcnt64_t; + + +__extension__ typedef unsigned long int __fsblkcnt_t; +__extension__ typedef __u_quad_t __fsblkcnt64_t; + + +__extension__ typedef unsigned long int __fsfilcnt_t; +__extension__ typedef __u_quad_t __fsfilcnt64_t; + +__extension__ typedef int __ssize_t; + + + +typedef __off64_t __loff_t; +typedef __quad_t *__qaddr_t; +typedef char *__caddr_t; + + +__extension__ typedef int __intptr_t; + + +__extension__ typedef unsigned int __socklen_t; + + +#undef __STD_TYPE + + +typedef __kernel_ipc_pid_t __ipc_pid_t; + + + +# 1 "../../include/bits/pthreadtypes.h" 1 +# 21 "../../include/bits/pthreadtypes.h" +#define _BITS_PTHREADTYPES_H 1 + +#define __SIZEOF_PTHREAD_ATTR_T 36 +#define __SIZEOF_PTHREAD_MUTEX_T 24 +#define __SIZEOF_PTHREAD_MUTEXATTR_T 4 +#define __SIZEOF_PTHREAD_COND_T 48 +#define __SIZEOF_PTHREAD_COND_COMPAT_T 12 +#define __SIZEOF_PTHREAD_CONDATTR_T 4 +#define __SIZEOF_PTHREAD_RWLOCK_T 32 +#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 +#define __SIZEOF_PTHREAD_BARRIER_T 20 +#define __SIZEOF_PTHREAD_BARRIERATTR_T 4 + + + + +typedef unsigned long int pthread_t; + + +typedef union +{ + char __size[36]; + long int __align; +} pthread_attr_t; + + + + +typedef union +{ + struct + { + int __lock; + unsigned int __count; + int __owner; + + + int __kind; + unsigned int __nusers; + int __spins; + } __data; + char __size[24]; + long int __align; +} pthread_mutex_t; + +typedef union +{ + char __size[4]; + long int __align; +} pthread_mutexattr_t; + + + + +typedef union +{ + struct + { + int __lock; + unsigned int __futex; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; + void *__mutex; + unsigned int __nwaiters; + unsigned int __broadcast_seq; + } __data; + char __size[48]; + __extension__ long long int __align; +} pthread_cond_t; + +typedef union +{ + char __size[4]; + long int __align; +} pthread_condattr_t; + + + +typedef unsigned int pthread_key_t; + + + +typedef int pthread_once_t; + + + + + +typedef union +{ + struct + { + int __lock; + unsigned int __nr_readers; + unsigned int __readers_wakeup; + unsigned int __writer_wakeup; + unsigned int __nr_readers_queued; + unsigned int __nr_writers_queued; + + + unsigned int __flags; + pthread_t __writer; + } __data; + char __size[32]; + long int __align; +} pthread_rwlock_t; + +typedef union +{ + char __size[8]; + long int __align; +} pthread_rwlockattr_t; + + + + + +typedef volatile int pthread_spinlock_t; + + + + +typedef union +{ + char __size[20]; + long int __align; +} pthread_barrier_t; + +typedef union +{ + char __size[4]; + int __align; +} pthread_barrierattr_t; +# 207 "../../include/bits/types.h" 2 +# 37 "../../include/stdio.h" 2 +#define __need_FILE +#define __need___FILE + + + + + + + +typedef struct __STDIO_FILE_STRUCT FILE; + + + + + + + +#define __FILE_defined 1 + +#undef __need_FILE + + + + + +typedef struct __STDIO_FILE_STRUCT __FILE; + +#define ____FILE_defined 1 + +#undef __need___FILE + + + +#undef _STDIO_USES_IOSTREAM + +# 1 "../../include/bits/uClibc_stdio.h" 1 +# 14 "../../include/bits/uClibc_stdio.h" +#define __STDIO_BUFFERS +# 29 "../../include/bits/uClibc_stdio.h" +#define __STDIO_BUFSIZ 4096 +# 40 "../../include/bits/uClibc_stdio.h" +#define __STDIO_BUILTIN_BUF_SIZE 0 +# 51 "../../include/bits/uClibc_stdio.h" +#define __STDIO_HAS_OPENLIST 1 +# 61 "../../include/bits/uClibc_stdio.h" +#undef __USE_LARGEFILE +#undef __USE_LARGEFILE64 +#undef __USE_FILE_OFFSET64 + +#define __USE_LARGEFILE64 1 +# 80 "../../include/bits/uClibc_stdio.h" +#define __need_wchar_t +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4 +# 265 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#define __wchar_t__ +#define __WCHAR_T__ +#define _WCHAR_T +#define _T_WCHAR_ +#define _T_WCHAR +#define __WCHAR_T +#define _WCHAR_T_ +#define _BSD_WCHAR_T_ +#define _WCHAR_T_DEFINED_ +#define _WCHAR_T_DEFINED +#define _WCHAR_T_H +#define ___int_wchar_t_h +#define __INT_WCHAR_T_H +#define _GCC_WCHAR_T +#define _WCHAR_T_DECLARED +# 292 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef _BSD_WCHAR_T_ +# 326 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +typedef long int wchar_t; +# 345 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_wchar_t +# 409 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_NULL +# 82 "../../include/bits/uClibc_stdio.h" 2 + + + +#define __STDIO_MBSTATE +#define __need_mbstate_t +# 1 "../../include/wchar.h" 1 +# 51 "../../include/wchar.h" +#define __need_wint_t +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4 +# 350 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#define _WINT_T + + + + +typedef unsigned int wint_t; + +#undef __need_wint_t +# 409 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_NULL +# 53 "../../include/wchar.h" 2 + +# 1 "../../include/bits/wchar.h" 1 +# 21 "../../include/bits/wchar.h" +#define _BITS_WCHAR_H 1 + +#define __WCHAR_MIN (-2147483647 - 1) +#define __WCHAR_MAX (2147483647) +# 55 "../../include/wchar.h" 2 +# 78 "../../include/wchar.h" +#define __mbstate_t_defined 1 + + +typedef struct +{ + wchar_t __mask; + wchar_t __wc; +} __mbstate_t; +# 98 "../../include/wchar.h" +#undef __need_mbstate_t +# 88 "../../include/bits/uClibc_stdio.h" 2 + + + + + + + +#define __STDIO_GETC_MACRO + + + +#define __STDIO_PUTC_MACRO +# 138 "../../include/bits/uClibc_stdio.h" +#define __STDIO_AUTO_THREADLOCK_VAR int __infunc_user_locking +# 165 "../../include/bits/uClibc_stdio.h" +#define __STDIO_AUTO_THREADLOCK(__stream) if ((__infunc_user_locking = (__stream)->__user_locking) == 0) { __pthread_mutex_lock(&(__stream)->__lock); } + + + + +#define __STDIO_AUTO_THREADUNLOCK(__stream) if (__infunc_user_locking == 0) { __pthread_mutex_unlock(&(__stream)->__lock); } + + + + +#define __STDIO_SET_USER_LOCKING(__stream) ((__stream)->__user_locking = 1) + +#define __STDIO_ALWAYS_THREADLOCK(__stream) __pthread_mutex_lock(&(__stream)->__lock) + + +#define __STDIO_ALWAYS_THREADTRYLOCK(__stream) __pthread_mutex_trylock(&(__stream)->__lock) + + +#define __STDIO_ALWAYS_THREADUNLOCK(__stream) __pthread_mutex_unlock(&(__stream)->__lock) +# 204 "../../include/bits/uClibc_stdio.h" +#define __STDIO_IOFBF 0 +#define __STDIO_IOLBF 1 +#define __STDIO_IONBF 2 + +typedef struct { + __off_t __pos; + + __mbstate_t __mbstate; + + + int __mblen_pending; + +} __STDIO_fpos_t; + + +typedef struct { + __off64_t __pos; + + __mbstate_t __mbstate; + + + int __mblen_pending; + +} __STDIO_fpos64_t; + + + + +typedef __off64_t __offmax_t; +# 271 "../../include/bits/uClibc_stdio.h" +struct __STDIO_FILE_STRUCT { + unsigned short __modeflags; + + + unsigned char __ungot_width[2]; + + + + + + + int __filedes; + + unsigned char *__bufstart; + unsigned char *__bufend; + unsigned char *__bufpos; + unsigned char *__bufread; + + + unsigned char *__bufgetc_u; + + + unsigned char *__bufputc_u; + + + + + + struct __STDIO_FILE_STRUCT *__nextopen; + + + + + + + wchar_t __ungot[2]; + + + __mbstate_t __state; + + + + + + int __user_locking; + + + + pthread_mutex_t __lock; + + + + + + +}; +# 347 "../../include/bits/uClibc_stdio.h" +#define __MASK_READING 0x0003U +#define __FLAG_READING 0x0001U +#define __FLAG_UNGOT 0x0002U +#define __FLAG_EOF 0x0004U +#define __FLAG_ERROR 0x0008U +#define __FLAG_WRITEONLY 0x0010U +#define __FLAG_READONLY 0x0020U +#define __FLAG_WRITING 0x0040U +#define __FLAG_NARROW 0x0080U + +#define __FLAG_FBF 0x0000U +#define __FLAG_LBF 0x0100U +#define __FLAG_NBF 0x0200U +#define __MASK_BUFMODE 0x0300U +#define __FLAG_APPEND 0x0400U +#define __FLAG_WIDE 0x0800U + +#define __FLAG_FREEFILE 0x2000U +#define __FLAG_FREEBUF 0x4000U +#define __FLAG_LARGEFILE 0x8000U +#define __FLAG_FAILED_FREOPEN __FLAG_LARGEFILE +# 388 "../../include/bits/uClibc_stdio.h" +extern void _stdio_init(void) __attribute__ ((visibility ("hidden"))); +extern void _stdio_term(void) __attribute__ ((visibility ("hidden"))); + + + +extern struct __STDIO_FILE_STRUCT *_stdio_openlist; + + + + + +extern pthread_mutex_t _stdio_openlist_lock; + +extern int _stdio_openlist_delflag; +extern int _stdio_user_locking; + +extern void __stdio_init_mutex(pthread_mutex_t *m) __attribute__ ((visibility ("hidden"))); +# 413 "../../include/bits/uClibc_stdio.h" +#define __CLEARERR_UNLOCKED(__stream) ((void)((__stream)->__modeflags &= ~(__FLAG_EOF|__FLAG_ERROR))) + +#define __FEOF_UNLOCKED(__stream) ((__stream)->__modeflags & __FLAG_EOF) +#define __FERROR_UNLOCKED(__stream) ((__stream)->__modeflags & __FLAG_ERROR) + + +#define __CLEARERR(__stream) (clearerr)(__stream) +#define __FERROR(__stream) (ferror)(__stream) +#define __FEOF(__stream) (feof)(__stream) + + + + + + +extern int __fgetc_unlocked(FILE *__stream); +extern int __fputc_unlocked(int __c, FILE *__stream); + + +#define __FGETC_UNLOCKED(__stream) (__fgetc_unlocked)((__stream)) +#define __FGETC(__stream) (fgetc)((__stream)) +#define __GETC_UNLOCKED_MACRO(__stream) (__fgetc_unlocked)((__stream)) +#define __GETC_UNLOCKED(__stream) (__fgetc_unlocked)((__stream)) +#define __GETC(__stream) (fgetc)((__stream)) + +#define __FPUTC_UNLOCKED(__c,__stream) (__fputc_unlocked)((__c),(__stream)) +#define __FPUTC(__c,__stream) (fputc)((__c),(__stream)) +#define __PUTC_UNLOCKED_MACRO(__c,__stream) (__fputc_unlocked)((__c),(__stream)) +#define __PUTC_UNLOCKED(__c,__stream) (__fputc_unlocked)((__c),(__stream)) +#define __PUTC(__c,__stream) (fputc)((__c),(__stream)) + + + + +extern FILE *__stdin; + +#undef __GETC_UNLOCKED_MACRO +#define __GETC_UNLOCKED_MACRO(__stream) ( ((__stream)->__bufpos < (__stream)->__bufgetc_u) ? (*(__stream)->__bufpos++) : __fgetc_unlocked(__stream) ) +# 466 "../../include/bits/uClibc_stdio.h" +#undef __FGETC_UNLOCKED +#define __FGETC_UNLOCKED(__stream) (__extension__ ({ FILE *__S = (__stream); __GETC_UNLOCKED_MACRO(__S); }) ) + + + + + +#undef __GETC_UNLOCKED +#define __GETC_UNLOCKED(__stream) __FGETC_UNLOCKED((__stream)) + + +#undef __FGETC +#define __FGETC(__stream) (__extension__ ({ FILE *__S = (__stream); ((__S->__user_locking ) ? __GETC_UNLOCKED_MACRO(__S) : (fgetc)(__S)); }) ) + + + + + + + +#undef __GETC +#define __GETC(__stream) __FGETC((__stream)) +# 506 "../../include/bits/uClibc_stdio.h" +extern FILE *__stdout; + +#undef __PUTC_UNLOCKED_MACRO +#define __PUTC_UNLOCKED_MACRO(__c,__stream) ( ((__stream)->__bufpos < (__stream)->__bufputc_u) ? (*(__stream)->__bufpos++) = (__c) : __fputc_unlocked((__c),(__stream)) ) +# 527 "../../include/bits/uClibc_stdio.h" +#undef __FPUTC_UNLOCKED +#define __FPUTC_UNLOCKED(__c,__stream) (__extension__ ({ FILE *__S = (__stream); __PUTC_UNLOCKED_MACRO((__c),__S); }) ) + + + + + +#undef __PUTC_UNLOCKED +#define __PUTC_UNLOCKED(__c,__stream) __FPUTC_UNLOCKED((__c), (__stream)) + + +#undef __FPUTC +#define __FPUTC(__c,__stream) (__extension__ ({ FILE *__S = (__stream); ((__S->__user_locking) ? __PUTC_UNLOCKED_MACRO((__c),__S) : (fputc)((__c),__S)); }) ) + + + + + + + +#undef __PUTC +#define __PUTC(__c,__stream) __FPUTC((__c), (__stream)) +# 73 "../../include/stdio.h" 2 + + +#define __need___va_list +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stdarg.h" 1 3 4 +# 37 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stdarg.h" 3 4 +#undef __need___va_list + + + + +#define __GNUC_VA_LIST +typedef __builtin_va_list __gnuc_va_list; +# 77 "../../include/stdio.h" 2 + + + + +typedef __STDIO_fpos_t fpos_t; + + + + + +typedef __STDIO_fpos64_t fpos64_t; + + + +#define _IOFBF __STDIO_IOFBF +#define _IOLBF __STDIO_IOLBF +#define _IONBF __STDIO_IONBF + + + + +#define BUFSIZ __STDIO_BUFSIZ + + + + + + +#define EOF (-1) + + + + + +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + + + + +#define P_tmpdir "/tmp" +# 131 "../../include/stdio.h" +# 1 "../../include/bits/stdio_lim.h" 1 +# 24 "../../include/bits/stdio_lim.h" +#define L_tmpnam 20 +#define TMP_MAX 238328 +#define FILENAME_MAX 4095 + + +#define L_ctermid 9 +#define L_cuserid 9 + + + + +#undef FOPEN_MAX +#define FOPEN_MAX 16 +# 132 "../../include/stdio.h" 2 + + + +extern FILE *stdin; +extern FILE *stdout; +extern FILE *stderr; + +#define stdin stdin +#define stdout stdout +#define stderr stderr + + + +extern int remove (__const char *__filename) __attribute__ ((__nothrow__)); + +extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__)); + + + + + + + + + +extern FILE *tmpfile (void); +# 167 "../../include/stdio.h" +extern FILE *tmpfile64 (void); + + + +extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)); + + + + + +extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)); +# 189 "../../include/stdio.h" +extern char *tempnam (__const char *__dir, __const char *__pfx) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)); + + + + + + + + +extern int fclose (FILE *__stream); + + + + +extern int fflush (FILE *__stream); + +# 214 "../../include/stdio.h" +extern int fflush_unlocked (FILE *__stream); +# 224 "../../include/stdio.h" +extern int fcloseall (void); + + + + + + + + + +extern FILE *fopen (__const char *__restrict __filename, + __const char *__restrict __modes); + + + + +extern FILE *freopen (__const char *__restrict __filename, + __const char *__restrict __modes, + FILE *__restrict __stream); +# 255 "../../include/stdio.h" + + +extern FILE *fopen64 (__const char *__restrict __filename, + __const char *__restrict __modes); +extern FILE *freopen64 (__const char *__restrict __filename, + __const char *__restrict __modes, + FILE *__restrict __stream); + + + + +extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)); +# 289 "../../include/stdio.h" + + + +extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__)); + + + +extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, + int __modes, size_t __n) __attribute__ ((__nothrow__)); + + + + + +extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, + size_t __size) __attribute__ ((__nothrow__)); + + +extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__)); + + + + + + + + +extern int fprintf (FILE *__restrict __stream, + __const char *__restrict __format, ...); + + + + +extern int printf (__const char *__restrict __format, ...); + +extern int sprintf (char *__restrict __s, + __const char *__restrict __format, ...) __attribute__ ((__nothrow__)); + + + + + +extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, + __gnuc_va_list __arg); + + + + +extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg); + +extern int vsprintf (char *__restrict __s, __const char *__restrict __format, + __gnuc_va_list __arg) __attribute__ ((__nothrow__)); + + + + + +extern int snprintf (char *__restrict __s, size_t __maxlen, + __const char *__restrict __format, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4))); + +extern int vsnprintf (char *__restrict __s, size_t __maxlen, + __const char *__restrict __format, __gnuc_va_list __arg) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0))); + + + + + + +extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f, + __gnuc_va_list __arg) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))); + + + + + +extern int asprintf (char **__restrict __ptr, + __const char *__restrict __fmt, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))); + + + + + + + +extern int vdprintf (int __fd, __const char *__restrict __fmt, + __gnuc_va_list __arg) + __attribute__ ((__format__ (__printf__, 2, 0))); +extern int dprintf (int __fd, __const char *__restrict __fmt, ...) + __attribute__ ((__format__ (__printf__, 2, 3))); + + + + + + + + +extern int fscanf (FILE *__restrict __stream, + __const char *__restrict __format, ...); + + + + +extern int scanf (__const char *__restrict __format, ...); + +extern int sscanf (__const char *__restrict __s, + __const char *__restrict __format, ...) __attribute__ ((__nothrow__)); + + + + + + + + +extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, + __gnuc_va_list __arg) + __attribute__ ((__format__ (__scanf__, 2, 0))); + + + + + +extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) + __attribute__ ((__format__ (__scanf__, 1, 0))); + + +extern int vsscanf (__const char *__restrict __s, + __const char *__restrict __format, __gnuc_va_list __arg) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0))); + + + + + + + + + +extern int fgetc (FILE *__stream); +extern int getc (FILE *__stream); + + + + + +extern int getchar (void); + + + + +#define getc(_fp) __GETC(_fp) + + + + + + +extern int getc_unlocked (FILE *__stream); +extern int getchar_unlocked (void); + + +#define getc_unlocked(_fp) __GETC_UNLOCKED(_fp) +# 465 "../../include/stdio.h" +extern int fgetc_unlocked (FILE *__stream); + + + + + + + + + + + +extern int fputc (int __c, FILE *__stream); +extern int putc (int __c, FILE *__stream); + + + + + +extern int putchar (int __c); + + + + +#define putc(_ch,_fp) __PUTC(_ch, _fp) +# 498 "../../include/stdio.h" +extern int fputc_unlocked (int __c, FILE *__stream); + + + + + + + +extern int putc_unlocked (int __c, FILE *__stream); +extern int putchar_unlocked (int __c); + + +#define putc_unlocked(_ch,_fp) __PUTC_UNLOCKED(_ch, _fp) + + + + + + +extern int getw (FILE *__stream); + + +extern int putw (int __w, FILE *__stream); + + + + + + + + +extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream); + + + + + + +extern char *gets (char *__s); + +# 546 "../../include/stdio.h" +extern char *fgets_unlocked (char *__restrict __s, int __n, + FILE *__restrict __stream); +# 567 "../../include/stdio.h" +extern __ssize_t getdelim (char **__restrict __lineptr, + size_t *__restrict __n, int __delimiter, + FILE *__restrict __stream); + + + + + + + +extern __ssize_t getline (char **__restrict __lineptr, + size_t *__restrict __n, + FILE *__restrict __stream); + + + + + + + + +extern int fputs (__const char *__restrict __s, FILE *__restrict __stream); + + + + + +extern int puts (__const char *__s); + + + + + + +extern int ungetc (int __c, FILE *__stream); + + + + + + +extern size_t fread (void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream); + + + + +extern size_t fwrite (__const void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __s); + +# 625 "../../include/stdio.h" +extern int fputs_unlocked (__const char *__restrict __s, + FILE *__restrict __stream); +# 636 "../../include/stdio.h" +extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream); +extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, + size_t __n, FILE *__restrict __stream); + + + + + + + + +extern int fseek (FILE *__stream, long int __off, int __whence); + + + + +extern long int ftell (FILE *__stream); + + + + +extern void rewind (FILE *__stream); + +# 672 "../../include/stdio.h" +extern int fseeko (FILE *__stream, __off_t __off, int __whence); + + + + +extern __off_t ftello (FILE *__stream); +# 691 "../../include/stdio.h" + + + + + + +extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); + + + + +extern int fsetpos (FILE *__stream, __const fpos_t *__pos); +# 714 "../../include/stdio.h" + + + +extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); +extern __off64_t ftello64 (FILE *__stream); +extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); +extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos); + + + + +extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__)); + +extern int feof (FILE *__stream) __attribute__ ((__nothrow__)); + +extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)); + + + + +extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__)); +extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)); +extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)); + + + + + + + + +extern void perror (__const char *__s); + + + + + + +extern int sys_nerr; +extern __const char *__const sys_errlist[]; + + + + + + +extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)); + + + + +extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)); +# 775 "../../include/stdio.h" +extern FILE *popen (__const char *__command, __const char *__modes); + + + + + +extern int pclose (FILE *__stream); + + + + + +extern char *ctermid (char *__s) __attribute__ ((__nothrow__)); + + + + + +extern char *cuserid (char *__s); +# 815 "../../include/stdio.h" +extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__)); + + + +extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)); + + +extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__)); +# 835 "../../include/stdio.h" +#define fgetc(_fp) __FGETC(_fp) +#define fputc(_ch,_fp) __FPUTC(_ch, _fp) + + +#define fgetc_unlocked(_fp) __FGETC_UNLOCKED(_fp) +#define fputc_unlocked(_ch,_fp) __FPUTC_UNLOCKED(_ch, _fp) + + + + + +#define getchar() __GETC(__stdin) + + + + +#define putchar(_ch) __PUTC((_ch), __stdout) + + +#define getchar_unlocked() __GETC_UNLOCKED(__stdin) +#define putchar_unlocked(_ch) __PUTC_UNLOCKED((_ch), __stdout) + + + +#define clearerr(_fp) __CLEARERR(_fp) +#define feof(_fp) __FEOF(_fp) +#define ferror(_fp) __FERROR(_fp) + + +#define clearerr_unlocked(_fp) __CLEARERR_UNLOCKED(_fp) +#define feof_unlocked(_fp) __FEOF_UNLOCKED(_fp) +#define ferror_unlocked(_fp) __FERROR_UNLOCKED(_fp) + + + +# 11 "tsp_common.c" 2 +# 1 "../../include/stdlib.h" 1 +# 28 "../../include/stdlib.h" +#define __need_size_t + + +#define __need_wchar_t + +#define __need_NULL + +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4 +# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_size_t +# 345 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_wchar_t +# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef NULL + + + + +#define NULL ((void *)0) + + + + + +#undef __need_NULL +# 36 "../../include/stdlib.h" 2 + + + + +#define _STDLIB_H 1 + + + +# 1 "../../include/bits/waitflags.h" 1 +# 26 "../../include/bits/waitflags.h" +#define WNOHANG 1 +#define WUNTRACED 2 + + +#define WSTOPPED 2 +#define WEXITED 4 +#define WCONTINUED 8 +#define WNOWAIT 0x01000000 + +#define __WNOTHREAD 0x20000000 + +#define __WALL 0x40000000 +#define __WCLONE 0x80000000 +# 45 "../../include/stdlib.h" 2 +# 1 "../../include/bits/waitstatus.h" 1 +# 29 "../../include/bits/waitstatus.h" +#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8) + + +#define __WTERMSIG(status) ((status) & 0x7f) + + +#define __WSTOPSIG(status) __WEXITSTATUS(status) + + +#define __WIFEXITED(status) (__WTERMSIG(status) == 0) + + + +#define __WIFSIGNALED(status) (__extension__ ({ int __status = (status); !__WIFSTOPPED(__status) && !__WIFEXITED(__status); })) + + + + + + + +#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f) + + +#define __WCOREDUMP(status) ((status) & __WCOREFLAG) + + +#define __W_EXITCODE(ret,sig) ((ret) << 8 | (sig)) +#define __W_STOPCODE(sig) ((sig) << 8 | 0x7f) +#define __WCOREFLAG 0x80 + + + + +# 1 "../../include/endian.h" 1 +# 20 "../../include/endian.h" +#define _ENDIAN_H 1 +# 32 "../../include/endian.h" +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 +#define __PDP_ENDIAN 3412 + + +# 1 "../../include/bits/endian.h" 1 + + + + + + + +#define __BYTE_ORDER __LITTLE_ENDIAN +#define __FLOAT_WORD_ORDER __LITTLE_ENDIAN +# 38 "../../include/endian.h" 2 +# 46 "../../include/endian.h" +#define LITTLE_ENDIAN __LITTLE_ENDIAN +#define BIG_ENDIAN __BIG_ENDIAN +#define PDP_ENDIAN __PDP_ENDIAN +#define BYTE_ORDER __BYTE_ORDER + + + +#define __LONG_LONG_PAIR(HI,LO) LO, HI +# 64 "../../include/bits/waitstatus.h" 2 + +union wait + { + int w_status; + struct + { + + unsigned int __w_termsig:7; + unsigned int __w_coredump:1; + unsigned int __w_retcode:8; + unsigned int:16; + + + + + + + + } __wait_terminated; + struct + { + + unsigned int __w_stopval:8; + unsigned int __w_stopsig:8; + unsigned int:16; + + + + + + + } __wait_stopped; + }; + +#define w_termsig __wait_terminated.__w_termsig +#define w_coredump __wait_terminated.__w_coredump +#define w_retcode __wait_terminated.__w_retcode +#define w_stopsig __wait_stopped.__w_stopsig +#define w_stopval __wait_stopped.__w_stopval +# 46 "../../include/stdlib.h" 2 + + + + + + + +#define __WAIT_INT(status) (__extension__ ({ union { __typeof(status) __in; int __i; } __u; __u.__in = (status); __u.__i; })) +# 70 "../../include/stdlib.h" +typedef union + { + union wait *__uptr; + int *__iptr; + } __WAIT_STATUS __attribute__ ((__transparent_union__)); +#define __WAIT_STATUS_DEFN int * +# 87 "../../include/stdlib.h" +#define WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status)) +#define WTERMSIG(status) __WTERMSIG(__WAIT_INT(status)) +#define WSTOPSIG(status) __WSTOPSIG(__WAIT_INT(status)) +#define WIFEXITED(status) __WIFEXITED(__WAIT_INT(status)) +#define WIFSIGNALED(status) __WIFSIGNALED(__WAIT_INT(status)) +#define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status)) + + + + + + + +typedef struct + { + int quot; + int rem; + } div_t; + + + +typedef struct + { + long int quot; + long int rem; + } ldiv_t; +#define __ldiv_t_defined 1 + + + + + + +__extension__ typedef struct + { + long long int quot; + long long int rem; + } lldiv_t; +#define __lldiv_t_defined 1 + + + + + +#define RAND_MAX 2147483647 + + + + +#define EXIT_FAILURE 1 +#define EXIT_SUCCESS 0 +# 146 "../../include/stdlib.h" +#define MB_CUR_MAX (_stdlib_mb_cur_max ()) +extern size_t _stdlib_mb_cur_max (void) __attribute__ ((__nothrow__)) ; + + + + + + +extern double atof (__const char *__nptr) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + +extern int atoi (__const char *__nptr) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + +extern long int atol (__const char *__nptr) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +__extension__ extern long long int atoll (__const char *__nptr) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + + + + +extern double strtod (__const char *__restrict __nptr, + char **__restrict __endptr) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +extern float strtof (__const char *__restrict __nptr, + char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +extern long double strtold (__const char *__restrict __nptr, + char **__restrict __endptr) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + + +extern long int strtol (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +extern unsigned long int strtoul (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + +__extension__ +extern long long int strtoq (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +__extension__ +extern unsigned long long int strtouq (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +__extension__ +extern long long int strtoll (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +__extension__ +extern unsigned long long int strtoull (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +# 297 "../../include/stdlib.h" +extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ; + + +extern long int a64l (__const char *__s) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + + +# 1 "../../include/sys/types.h" 1 +# 25 "../../include/sys/types.h" +#define _SYS_TYPES_H 1 + + + + + + + + + +typedef __u_char u_char; +typedef __u_short u_short; +typedef __u_int u_int; +typedef __u_long u_long; +typedef __quad_t quad_t; +typedef __u_quad_t u_quad_t; +typedef __fsid_t fsid_t; +#define __u_char_defined + + + +typedef __loff_t loff_t; + + + +typedef __ino_t ino_t; + + + +#define __ino_t_defined + + +typedef __ino64_t ino64_t; +#define __ino64_t_defined + + + +typedef __dev_t dev_t; +#define __dev_t_defined + + + +typedef __gid_t gid_t; +#define __gid_t_defined + + + +typedef __mode_t mode_t; +#define __mode_t_defined + + + +typedef __nlink_t nlink_t; +#define __nlink_t_defined + + + +typedef __uid_t uid_t; +#define __uid_t_defined + + + + +typedef __off_t off_t; + + + +#define __off_t_defined + + +typedef __off64_t off64_t; +#define __off64_t_defined + + + +typedef __pid_t pid_t; +#define __pid_t_defined + + + +typedef __id_t id_t; +#define __id_t_defined + + + +typedef __ssize_t ssize_t; +#define __ssize_t_defined + + + + +typedef __daddr_t daddr_t; +typedef __caddr_t caddr_t; +#define __daddr_t_defined + + + + +typedef __key_t key_t; +#define __key_t_defined + + + +#define __need_clock_t + +#define __need_time_t +#define __need_timer_t +#define __need_clockid_t +# 1 "../../include/time.h" 1 +# 55 "../../include/time.h" +#define __clock_t_defined 1 + + + + + +typedef __clock_t clock_t; + + + + + + +#undef __need_clock_t + + +#define __time_t_defined 1 + + + + + +typedef __time_t time_t; + + + + + + +#undef __need_time_t + + + +#define __clockid_t_defined 1 + + + + +typedef __clockid_t clockid_t; + + +#undef __clockid_time_t + + + +#define __timer_t_defined 1 + + + + +typedef __timer_t timer_t; + + +#undef __need_timer_t +# 128 "../../include/time.h" +#undef __need_timespec +# 134 "../../include/sys/types.h" 2 + + + +typedef __useconds_t useconds_t; +#define __useconds_t_defined + + +typedef __suseconds_t suseconds_t; +#define __suseconds_t_defined + + + +#define __need_size_t +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4 +# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_size_t +# 409 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_NULL +# 148 "../../include/sys/types.h" 2 + + + +typedef unsigned long int ulong; +typedef unsigned short int ushort; +typedef unsigned int uint; +# 184 "../../include/sys/types.h" +#define __intN_t(N,MODE) typedef int int ##N ##_t __attribute__ ((__mode__ (MODE))) + +#define __u_intN_t(N,MODE) typedef unsigned int u_int ##N ##_t __attribute__ ((__mode__ (MODE))) + + + +#define __int8_t_defined +typedef int int8_t __attribute__ ((__mode__ (__QI__))); +typedef int int16_t __attribute__ ((__mode__ (__HI__))); +typedef int int32_t __attribute__ ((__mode__ (__SI__))); +typedef int int64_t __attribute__ ((__mode__ (__DI__))); + + +typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); +typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); +typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); +typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); + +typedef int register_t __attribute__ ((__mode__ (__word__))); + + + + + +#define __BIT_TYPES_DEFINED__ 1 + + + + + + + +# 1 "../../include/sys/select.h" 1 +# 23 "../../include/sys/select.h" +#define _SYS_SELECT_H 1 + + + + + + + +# 1 "../../include/bits/select.h" 1 +# 26 "../../include/bits/select.h" +#define __FD_ZERO(s) do { unsigned int __i; fd_set *__arr = (s); for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) __FDS_BITS (__arr)[__i] = 0; } while (0) + + + + + + +#define __FD_SET(d,s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d)) +#define __FD_CLR(d,s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d)) +#define __FD_ISSET(d,s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0) +# 32 "../../include/sys/select.h" 2 + + +# 1 "../../include/bits/sigset.h" 1 +# 21 "../../include/bits/sigset.h" +#define _SIGSET_H_types 1 + +typedef int __sig_atomic_t; + + + +#define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int))) +typedef struct + { + unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; + } __sigset_t; +# 35 "../../include/sys/select.h" 2 + + +#define __sigset_t_defined +typedef __sigset_t sigset_t; + + + +#define __need_time_t +#define __need_timespec +# 1 "../../include/time.h" 1 +# 68 "../../include/time.h" +#undef __need_clock_t +# 84 "../../include/time.h" +#undef __need_time_t +# 96 "../../include/time.h" +#undef __clockid_time_t +# 108 "../../include/time.h" +#undef __need_timer_t + + + + + + +#define __timespec_defined 1 + + + + + +struct timespec + { + __time_t tv_sec; + long int tv_nsec; + }; + + +#undef __need_timespec +# 45 "../../include/sys/select.h" 2 +#define __need_timeval +# 1 "../../include/bits/time.h" 1 +# 66 "../../include/bits/time.h" +#undef __need_timeval + +#define _STRUCT_TIMEVAL 1 + + + + +struct timeval + { + __time_t tv_sec; + __suseconds_t tv_usec; + }; +# 47 "../../include/sys/select.h" 2 +# 55 "../../include/sys/select.h" +typedef long int __fd_mask; + + +#undef __NFDBITS +#undef __FDELT +#undef __FDMASK + +#define __NFDBITS (8 * sizeof (__fd_mask)) +#define __FDELT(d) ((d) / __NFDBITS) +#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS)) + + +typedef struct + { + + + + __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))]; +#define __FDS_BITS(set) ((set)->fds_bits) + + + + + } fd_set; + + +#define FD_SETSIZE __FD_SETSIZE + + + +typedef __fd_mask fd_mask; + + +#define NFDBITS __NFDBITS + + + + +#define FD_SET(fd,fdsetp) __FD_SET (fd, fdsetp) +#define FD_CLR(fd,fdsetp) __FD_CLR (fd, fdsetp) +#define FD_ISSET(fd,fdsetp) __FD_ISSET (fd, fdsetp) +#define FD_ZERO(fdsetp) __FD_ZERO (fdsetp) + + + +# 109 "../../include/sys/select.h" +extern int select (int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + struct timeval *__restrict __timeout); +# 121 "../../include/sys/select.h" +extern int pselect (int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + const struct timespec *__restrict __timeout, + const __sigset_t *__restrict __sigmask); + + + +# 217 "../../include/sys/types.h" 2 + + +# 1 "../../include/sys/sysmacros.h" 1 +# 21 "../../include/sys/sysmacros.h" +#define _SYS_SYSMACROS_H 1 + + + + + + + +__extension__ +static __inline unsigned int gnu_dev_major (unsigned long long int __dev) + __attribute__ ((__nothrow__)); +__extension__ +static __inline unsigned int gnu_dev_minor (unsigned long long int __dev) + __attribute__ ((__nothrow__)); +__extension__ +static __inline unsigned long long int gnu_dev_makedev (unsigned int __major, + unsigned int __minor) + __attribute__ ((__nothrow__)); + + +__extension__ static __inline unsigned int +__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev) +{ + return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); +} + +__extension__ static __inline unsigned int +__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev) +{ + return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); +} + +__extension__ static __inline unsigned long long int +__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor) +{ + return ((__minor & 0xff) | ((__major & 0xfff) << 8) + | (((unsigned long long int) (__minor & ~0xff)) << 12) + | (((unsigned long long int) (__major & ~0xfff)) << 32)); +} + + + + +#define major(dev) gnu_dev_major (dev) +#define minor(dev) gnu_dev_minor (dev) +#define makedev(maj,min) gnu_dev_makedev (maj, min) +# 220 "../../include/sys/types.h" 2 + + + + +typedef __blksize_t blksize_t; +#define __blksize_t_defined + + + + + +typedef __blkcnt_t blkcnt_t; +#define __blkcnt_t_defined + + +typedef __fsblkcnt_t fsblkcnt_t; +#define __fsblkcnt_t_defined + + +typedef __fsfilcnt_t fsfilcnt_t; +#define __fsfilcnt_t_defined +# 258 "../../include/sys/types.h" +typedef __blkcnt64_t blkcnt64_t; +typedef __fsblkcnt64_t fsblkcnt64_t; +typedef __fsfilcnt64_t fsfilcnt64_t; +# 269 "../../include/sys/types.h" + +# 307 "../../include/stdlib.h" 2 + + + + + + +extern long int random (void) __attribute__ ((__nothrow__)); + + +extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__)); + + + + + +extern char *initstate (unsigned int __seed, char *__statebuf, + size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + +extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + + +struct random_data + { + int32_t *fptr; + int32_t *rptr; + int32_t *state; + int rand_type; + int rand_deg; + int rand_sep; + int32_t *end_ptr; + }; + +extern int random_r (struct random_data *__restrict __buf, + int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int srandom_r (unsigned int __seed, struct random_data *__buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + +extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, + size_t __statelen, + struct random_data *__restrict __buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))); + +extern int setstate_r (char *__restrict __statebuf, + struct random_data *__restrict __buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern int rand (void) __attribute__ ((__nothrow__)); + +extern void srand (unsigned int __seed) __attribute__ ((__nothrow__)); + + + + +extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__)); +# 382 "../../include/stdlib.h" +extern double drand48 (void) __attribute__ ((__nothrow__)); +extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern long int lrand48 (void) __attribute__ ((__nothrow__)); +extern long int nrand48 (unsigned short int __xsubi[3]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern long int mrand48 (void) __attribute__ ((__nothrow__)); +extern long int jrand48 (unsigned short int __xsubi[3]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern void srand48 (long int __seedval) __attribute__ ((__nothrow__)); +extern unsigned short int *seed48 (unsigned short int __seed16v[3]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); +extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +struct drand48_data + { + unsigned short int __x[3]; + unsigned short int __old_x[3]; + unsigned short int __c; + unsigned short int __init; + unsigned long long int __a; + }; + + + +extern int drand48_r (struct drand48_data *__restrict __buffer, + double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern int erand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern int lrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern int nrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int mrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern int jrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int srand48_r (long int __seedval, struct drand48_data *__buffer) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + +extern int seed48_r (unsigned short int __seed16v[3], + struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int lcong48_r (unsigned short int __param[7], + struct drand48_data *__buffer) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +#define __malloc_and_calloc_defined + + +extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ; + +extern void *calloc (size_t __nmemb, size_t __size) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ; + + + + + + + +extern void *realloc (void *__ptr, size_t __size) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); + +extern void free (void *__ptr) __attribute__ ((__nothrow__)); + + + + +extern void cfree (void *__ptr) __attribute__ ((__nothrow__)); + + + +# 1 "../../include/alloca.h" 1 +# 20 "../../include/alloca.h" +#define _ALLOCA_H 1 + + + +#define __need_size_t +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4 +# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_size_t +# 409 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_NULL +# 26 "../../include/alloca.h" 2 + + + + +#undef alloca + + +extern void *alloca (size_t __size) __attribute__ ((__nothrow__)); + + +#define alloca(size) __builtin_alloca (size) + + +#define __MAX_ALLOCA_CUTOFF 65536 + + +# 485 "../../include/stdlib.h" 2 + + + + +extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ; + + + + +extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + +extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); + + + +extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); + + + + + + +extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); + + + + + + +extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + +extern char *__secure_getenv (__const char *__name) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int setenv (__const char *__name, __const char *__value, int __replace) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + +extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__)); + + + + + + + +#define __UCLIBC_MAX_ATEXIT 20 + + + + + + + +extern int clearenv (void) __attribute__ ((__nothrow__)); +# 579 "../../include/stdlib.h" +extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 590 "../../include/stdlib.h" +extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ; +# 600 "../../include/stdlib.h" +extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ; +# 610 "../../include/stdlib.h" +extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + + + + +extern int system (__const char *__command) ; + +# 638 "../../include/stdlib.h" +extern char *realpath (__const char *__restrict __name, + char *__restrict __resolved) __attribute__ ((__nothrow__)) ; + + + + + +#define __COMPAR_FN_T +typedef int (*__compar_fn_t) (__const void *, __const void *); + + +typedef __compar_fn_t comparison_fn_t; + + + + + + +extern void *bsearch (__const void *__key, __const void *__base, + size_t __nmemb, size_t __size, __compar_fn_t __compar) + __attribute__ ((__nonnull__ (1, 2, 5))) ; + + + +extern void qsort (void *__base, size_t __nmemb, size_t __size, + __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); + + + +extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; +extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; + + + +__extension__ extern long long int llabs (long long int __x) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; + + + + + + + +extern div_t div (int __numer, int __denom) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; +extern ldiv_t ldiv (long int __numer, long int __denom) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; + + + + +__extension__ extern lldiv_t lldiv (long long int __numer, + long long int __denom) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; + +# 719 "../../include/stdlib.h" +extern char *gcvt (double __value, int __ndigit, char *__buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ; +# 756 "../../include/stdlib.h" + + + +extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ; + + +extern int mbtowc (wchar_t *__restrict __pwc, + __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ; + + +extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ; + + + +extern size_t mbstowcs (wchar_t *__restrict __pwcs, + __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)); + +extern size_t wcstombs (char *__restrict __s, + __const wchar_t *__restrict __pwcs, size_t __n) + __attribute__ ((__nothrow__)); + +# 785 "../../include/stdlib.h" +extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 796 "../../include/stdlib.h" +extern int getsubopt (char **__restrict __optionp, + char *__const *__restrict __tokens, + char **__restrict __valuep) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) ; + + + + + +extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + + +extern int posix_openpt (int __oflag) ; + + + + + + + +extern int grantpt (int __fd) __attribute__ ((__nothrow__)); + + + +extern int unlockpt (int __fd) __attribute__ ((__nothrow__)); + + + + +extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) ; + + + + + + +extern int ptsname_r (int __fd, char *__buf, size_t __buflen) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + +extern int getpt (void); +# 860 "../../include/stdlib.h" +#undef __need_malloc_and_calloc + + +# 12 "tsp_common.c" 2 +# 1 "../../include/string.h" 1 +# 24 "../../include/string.h" +#define _STRING_H 1 + + + + + + +#define __need_size_t +#define __need_NULL +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4 +# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_size_t +# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef NULL + + + + +#define NULL ((void *)0) + + + + + +#undef __need_NULL +# 34 "../../include/string.h" 2 + + + + +extern void *memcpy (void *__restrict __dest, + __const void *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern void *memmove (void *__dest, __const void *__src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, + int __c, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int memcmp (__const void *__s1, __const void *__s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern void *memchr (__const void *__s, int __c, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern void *rawmemchr (__const void *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + +extern void *memrchr (__const void *__s, int __c, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncpy (char *__restrict __dest, + __const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strcat (char *__restrict __dest, __const char *__restrict __src) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncat (char *__restrict __dest, __const char *__restrict __src, + size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcmp (__const char *__s1, __const char *__s2) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcoll (__const char *__s1, __const char *__s2) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern size_t strxfrm (char *__restrict __dest, + __const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + +# 130 "../../include/string.h" +extern char *strdup (__const char *__s) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern char *strndup (__const char *__string, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); + + + + +#define strdupa(s) (__extension__ ({ __const char *__old = (s); size_t __len = strlen (__old) + 1; char *__new = (char *) __builtin_alloca (__len); (char *) memcpy (__new, __old, __len); })) +# 154 "../../include/string.h" +#define strndupa(s,n) (__extension__ ({ __const char *__old = (s); size_t __len = strnlen (__old, (n)); char *__new = (char *) __builtin_alloca (__len + 1); __new[__len] = '\0'; (char *) memcpy (__new, __old, __len); })) +# 165 "../../include/string.h" + + +extern char *strchr (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + +extern char *strrchr (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern char *strchrnul (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern size_t strcspn (__const char *__s, __const char *__reject) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern size_t strspn (__const char *__s, __const char *__accept) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strpbrk (__const char *__s, __const char *__accept) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strstr (__const char *__haystack, __const char *__needle) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern char *strtok (char *__restrict __s, __const char *__restrict __delim) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + +# 212 "../../include/string.h" +extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, + char **__restrict __save_ptr) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); + + + + +extern char *strcasestr (__const char *__haystack, __const char *__needle) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern void *memmem (__const void *__haystack, size_t __haystacklen, + __const void *__needle, size_t __needlelen) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); +# 238 "../../include/string.h" +extern void *mempcpy (void *__restrict __dest, + __const void *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern size_t strlen (__const char *__s) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern size_t strnlen (__const char *__string, size_t __maxlen) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern char *strerror (int __errnum) __attribute__ ((__nothrow__)); + +# 285 "../../include/string.h" +extern char *__glibc_strerror_r (int __errnum, char *__buf, size_t __buflen) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + +extern char * strerror_r (int __errnum, char *__buf, size_t __buflen) __asm__ ("" "__glibc_strerror_r") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); +# 306 "../../include/string.h" +extern void bcopy (__const void *__src, void *__dest, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *index (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + +extern char *rindex (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +# 339 "../../include/string.h" +extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); +# 352 "../../include/string.h" +extern int strcasecmp (__const char *__s1, __const char *__s2) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +# 375 "../../include/string.h" +extern char *strsep (char **__restrict __stringp, + __const char *__restrict __delim) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +# 388 "../../include/string.h" +extern char *strsignal (int __sig) __attribute__ ((__nothrow__)); + + + + + + +extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +# 405 "../../include/string.h" +extern char *stpncpy (char *__restrict __dest, + __const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +# 422 "../../include/string.h" +extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern size_t strlcat(char *__restrict dst, const char *__restrict src, + size_t n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern size_t strlcpy(char *__restrict dst, const char *__restrict src, + size_t n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + +# 13 "tsp_common.c" 2 +# 1 "../../include/locale.h" 1 +# 24 "../../include/locale.h" +#define _LOCALE_H 1 + + + +#define __need_NULL +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4 +# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef NULL + + + + +#define NULL ((void *)0) + + + + + +#undef __need_NULL +# 30 "../../include/locale.h" 2 +# 1 "../../include/bits/uClibc_locale.h" 1 +# 31 "../../include/bits/uClibc_locale.h" +#define _UCLIBC_LOCALE_H + + + + + + +#undef __LOCALE_C_ONLY +# 52 "../../include/bits/uClibc_locale.h" +#define __NL_ITEM_CATEGORY_SHIFT (8) +#define __NL_ITEM_INDEX_MASK (0xff) + + + +#define __LC_CTYPE 0 +#define __LC_NUMERIC 1 +#define __LC_MONETARY 2 +#define __LC_TIME 3 +#define __LC_COLLATE 4 +#define __LC_MESSAGES 5 +#define __LC_ALL 6 + + + + + +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4 +# 43 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#define _STDDEF_H +#define _STDDEF_H_ + +#define _ANSI_STDDEF_H + +#define __STDDEF_H__ +# 141 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#define _PTRDIFF_T +#define _T_PTRDIFF_ +#define _T_PTRDIFF +#define __PTRDIFF_T +#define _PTRDIFF_T_ +#define _BSD_PTRDIFF_T_ +#define ___int_ptrdiff_t_h +#define _GCC_PTRDIFF_T + + + +typedef int ptrdiff_t; +# 163 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_ptrdiff_t +# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_size_t +# 345 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_wchar_t +# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef NULL + + + + +#define NULL ((void *)0) + + + + + +#undef __need_NULL + + + + +#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) +# 70 "../../include/bits/uClibc_locale.h" 2 +# 1 "../../include/stdint.h" 1 +# 24 "../../include/stdint.h" +#define _STDINT_H 1 + + + + + +# 1 "../../include/bits/wordsize.h" 1 +# 19 "../../include/bits/wordsize.h" +#define __WORDSIZE 32 +# 31 "../../include/stdint.h" 2 +# 51 "../../include/stdint.h" +typedef unsigned char uint8_t; +typedef unsigned short int uint16_t; + +typedef unsigned int uint32_t; +#define __uint32_t_defined + + + + +__extension__ +typedef unsigned long long int uint64_t; + + + + + + +typedef signed char int_least8_t; +typedef short int int_least16_t; +typedef int int_least32_t; + + + +__extension__ +typedef long long int int_least64_t; + + + +typedef unsigned char uint_least8_t; +typedef unsigned short int uint_least16_t; +typedef unsigned int uint_least32_t; + + + +__extension__ +typedef unsigned long long int uint_least64_t; + + + + + + +typedef signed char int_fast8_t; + + + + + +typedef int int_fast16_t; +typedef int int_fast32_t; +__extension__ +typedef long long int int_fast64_t; + + + +typedef unsigned char uint_fast8_t; + + + + + +typedef unsigned int uint_fast16_t; +typedef unsigned int uint_fast32_t; +__extension__ +typedef unsigned long long int uint_fast64_t; +# 128 "../../include/stdint.h" +typedef int intptr_t; +#define __intptr_t_defined + +typedef unsigned int uintptr_t; +# 140 "../../include/stdint.h" +__extension__ +typedef long long int intmax_t; +__extension__ +typedef unsigned long long int uintmax_t; +# 155 "../../include/stdint.h" +#define __INT64_C(c) c ## LL +#define __UINT64_C(c) c ## ULL + + + + + +#define INT8_MIN (-128) +#define INT16_MIN (-32767-1) +#define INT32_MIN (-2147483647-1) +#define INT64_MIN (-__INT64_C(9223372036854775807)-1) + +#define INT8_MAX (127) +#define INT16_MAX (32767) +#define INT32_MAX (2147483647) +#define INT64_MAX (__INT64_C(9223372036854775807)) + + +#define UINT8_MAX (255) +#define UINT16_MAX (65535) +#define UINT32_MAX (4294967295U) +#define UINT64_MAX (__UINT64_C(18446744073709551615)) + + + +#define INT_LEAST8_MIN (-128) +#define INT_LEAST16_MIN (-32767-1) +#define INT_LEAST32_MIN (-2147483647-1) +#define INT_LEAST64_MIN (-__INT64_C(9223372036854775807)-1) + +#define INT_LEAST8_MAX (127) +#define INT_LEAST16_MAX (32767) +#define INT_LEAST32_MAX (2147483647) +#define INT_LEAST64_MAX (__INT64_C(9223372036854775807)) + + +#define UINT_LEAST8_MAX (255) +#define UINT_LEAST16_MAX (65535) +#define UINT_LEAST32_MAX (4294967295U) +#define UINT_LEAST64_MAX (__UINT64_C(18446744073709551615)) + + + +#define INT_FAST8_MIN (-128) + + + + +#define INT_FAST16_MIN (-2147483647-1) +#define INT_FAST32_MIN (-2147483647-1) + +#define INT_FAST64_MIN (-__INT64_C(9223372036854775807)-1) + +#define INT_FAST8_MAX (127) + + + + +#define INT_FAST16_MAX (2147483647) +#define INT_FAST32_MAX (2147483647) + +#define INT_FAST64_MAX (__INT64_C(9223372036854775807)) + + +#define UINT_FAST8_MAX (255) + + + + +#define UINT_FAST16_MAX (4294967295U) +#define UINT_FAST32_MAX (4294967295U) + +#define UINT_FAST64_MAX (__UINT64_C(18446744073709551615)) +# 236 "../../include/stdint.h" +#define INTPTR_MIN (-2147483647-1) +#define INTPTR_MAX (2147483647) +#define UINTPTR_MAX (4294967295U) + + + + +#define INTMAX_MIN (-__INT64_C(9223372036854775807)-1) + +#define INTMAX_MAX (__INT64_C(9223372036854775807)) + + +#define UINTMAX_MAX (__UINT64_C(18446744073709551615)) +# 266 "../../include/stdint.h" +#define PTRDIFF_MIN (-2147483647-1) +#define PTRDIFF_MAX (2147483647) + + + +#define SIG_ATOMIC_MIN (-2147483647-1) +#define SIG_ATOMIC_MAX (2147483647) + + + + + +#define SIZE_MAX (4294967295U) + + + + + + +#define WCHAR_MIN __WCHAR_MIN +#define WCHAR_MAX __WCHAR_MAX + + + +#define WINT_MIN (0u) +#define WINT_MAX (4294967295u) +# 302 "../../include/stdint.h" +#define INT8_C(c) c +#define INT16_C(c) c +#define INT32_C(c) c + + + +#define INT64_C(c) c ## LL + + + +#define UINT8_C(c) c ## U +#define UINT16_C(c) c ## U +#define UINT32_C(c) c ## U + + + +#define UINT64_C(c) c ## ULL + + + + + + + +#define INTMAX_C(c) c ## LL +#define UINTMAX_C(c) c ## ULL +# 71 "../../include/bits/uClibc_locale.h" 2 +# 1 "../../include/bits/uClibc_touplow.h" 1 +# 31 "../../include/bits/uClibc_touplow.h" +#define _UCLIBC_TOUPLOW_H + + + + + + +typedef __uint16_t __ctype_mask_t; + + + +typedef __int16_t __ctype_touplow_t; +#define __UCLIBC_CTYPE_B_TBL_OFFSET 128 +#define __UCLIBC_CTYPE_TO_TBL_OFFSET 128 +# 72 "../../include/bits/uClibc_locale.h" 2 + + +# 1 "../../include/bits/uClibc_locale_data.h" 1 +#define __lc_time_data_LEN 25900 +#define __lc_time_rows_LEN 7650 +#define __lc_time_item_offsets_LEN 50 +#define __lc_time_item_idx_LEN 3190 +#define __lc_numeric_data_LEN 22 +#define __lc_numeric_rows_LEN 42 +#define __lc_numeric_item_offsets_LEN 3 +#define __lc_numeric_item_idx_LEN 13 +#define __lc_monetary_data_LEN 1578 +#define __lc_monetary_rows_LEN 3652 +#define __lc_monetary_item_offsets_LEN 22 +#define __lc_monetary_item_idx_LEN 391 +#define __lc_messages_data_LEN 1583 +#define __lc_messages_rows_LEN 312 +#define __lc_messages_item_offsets_LEN 4 +#define __lc_messages_item_idx_LEN 170 +#define __lc_ctype_data_LEN 51 +#define __lc_ctype_rows_LEN 20 +#define __lc_ctype_item_offsets_LEN 10 +#define __lc_ctype_item_idx_LEN 20 +#define __CTYPE_HAS_UTF_8_LOCALES 1 +#define __LOCALE_DATA_CATEGORIES 6 +#define __LOCALE_DATA_WIDTH_LOCALES 9 +#define __LOCALE_DATA_NUM_LOCALES 315 +#define __LOCALE_DATA_NUM_LOCALE_NAMES 167 +#define __LOCALE_DATA_AT_MODIFIERS_LENGTH 18 +#define __lc_names_LEN 69 +#define __lc_collate_data_LEN 91141 +#define __CTYPE_HAS_8_BIT_LOCALES 1 + +#define __LOCALE_DATA_Cctype_IDX_SHIFT 3 +#define __LOCALE_DATA_Cctype_IDX_LEN 16 +#define __LOCALE_DATA_Cctype_ROW_LEN 4 +#define __LOCALE_DATA_Cctype_PACKED 1 + +#define __LOCALE_DATA_Cuplow_IDX_SHIFT 3 +#define __LOCALE_DATA_Cuplow_IDX_LEN 16 +#define __LOCALE_DATA_Cuplow_ROW_LEN 8 + +#define __LOCALE_DATA_Cc2wc_IDX_LEN 16 +#define __LOCALE_DATA_Cc2wc_IDX_SHIFT 3 +#define __LOCALE_DATA_Cc2wc_ROW_LEN 8 + +typedef struct { + unsigned char idx8ctype[16]; + unsigned char idx8uplow[16]; + unsigned char idx8c2wc[16]; + unsigned char idx8wc2c[38]; +} __codeset_8_bit_t; + + +#define __LOCALE_DATA_Cwc2c_DOMAIN_MAX 0x25ff +#define __LOCALE_DATA_Cwc2c_TI_SHIFT 4 +#define __LOCALE_DATA_Cwc2c_TT_SHIFT 4 +#define __LOCALE_DATA_Cwc2c_II_LEN 38 +#define __LOCALE_DATA_Cwc2c_TI_LEN 1072 +#define __LOCALE_DATA_Cwc2c_TT_LEN 3456 + + +#define __LOCALE_DATA_Cwc2c_TBL_LEN 4528 + +#define __LOCALE_DATA_Cuplow_TBL_LEN 504 + + +#define __LOCALE_DATA_Cctype_TBL_LEN 420 + + +#define __LOCALE_DATA_Cc2wc_TBL_LEN 1760 + + + +#define __LOCALE_DATA_NUM_CODESETS 23 +#define __LOCALE_DATA_CODESET_LIST "\x18\x22\x31\x38\x3f\x4b\x56\x62" "\x6e\x7a\x86\x92\x9d\xa8\xb3\xbe" "\xc9\xd4\xdf\xea\xf1\xf8\xff" "\0" "ARMSCII-8\0" "ANSI_X3.4-1968\0" "CP1251\0" "CP1255\0" "GEORGIAN-PS\0" "ISO-8859-1\0" "ISO-8859-10\0" "ISO-8859-13\0" "ISO-8859-14\0" "ISO-8859-15\0" "ISO-8859-16\0" "ISO-8859-2\0" "ISO-8859-3\0" "ISO-8859-4\0" "ISO-8859-5\0" "ISO-8859-6\0" "ISO-8859-7\0" "ISO-8859-8\0" "ISO-8859-9\0" "KOI8-R\0" "KOI8-T\0" "KOI8-U\0" "TIS-620\0" +# 102 "../../include/bits/uClibc_locale_data.h" +#define __CTYPE_HAS_CODESET_ARMSCII_8 +#define __CTYPE_HAS_CODESET_ANSI_X3 .4_1968 +#define __CTYPE_HAS_CODESET_CP1251 +#define __CTYPE_HAS_CODESET_CP1255 +#define __CTYPE_HAS_CODESET_GEORGIAN_PS +#define __CTYPE_HAS_CODESET_ISO_8859_1 +#define __CTYPE_HAS_CODESET_ISO_8859_10 +#define __CTYPE_HAS_CODESET_ISO_8859_13 +#define __CTYPE_HAS_CODESET_ISO_8859_14 +#define __CTYPE_HAS_CODESET_ISO_8859_15 +#define __CTYPE_HAS_CODESET_ISO_8859_16 +#define __CTYPE_HAS_CODESET_ISO_8859_2 +#define __CTYPE_HAS_CODESET_ISO_8859_3 +#define __CTYPE_HAS_CODESET_ISO_8859_4 +#define __CTYPE_HAS_CODESET_ISO_8859_5 +#define __CTYPE_HAS_CODESET_ISO_8859_6 +#define __CTYPE_HAS_CODESET_ISO_8859_7 +#define __CTYPE_HAS_CODESET_ISO_8859_8 +#define __CTYPE_HAS_CODESET_ISO_8859_9 +#define __CTYPE_HAS_CODESET_KOI8_R +#define __CTYPE_HAS_CODESET_KOI8_T +#define __CTYPE_HAS_CODESET_KOI8_U +#define __CTYPE_HAS_CODESET_TIS_620 +#define __CTYPE_HAS_CODESET_UTF_8 +#define __LOCALE_DATA_WC_TABLE_DOMAIN_MAX 0x2ffff + +#define __LOCALE_DATA_WCctype_II_LEN 768 +#define __LOCALE_DATA_WCctype_TI_LEN 1888 +#define __LOCALE_DATA_WCctype_UT_LEN 948 +#define __LOCALE_DATA_WCctype_II_SHIFT 5 +#define __LOCALE_DATA_WCctype_TI_SHIFT 3 + + +#define __LOCALE_DATA_WCuplow_II_LEN 384 +#define __LOCALE_DATA_WCuplow_TI_LEN 576 +#define __LOCALE_DATA_WCuplow_UT_LEN 720 +#define __LOCALE_DATA_WCuplow_II_SHIFT 6 +#define __LOCALE_DATA_WCuplow_TI_SHIFT 3 + + +#define __LOCALE_DATA_WCuplow_diffs 98 + + + + + + + +#define __WCHAR_ENABLED + + + + +#define __LOCALE_DATA_WCctype_TBL_LEN (__LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + __LOCALE_DATA_WCctype_UT_LEN) +#define __LOCALE_DATA_WCuplow_TBL_LEN (__LOCALE_DATA_WCuplow_II_LEN + __LOCALE_DATA_WCuplow_TI_LEN + __LOCALE_DATA_WCuplow_UT_LEN) +#define __LOCALE_DATA_WCuplow_diff_TBL_LEN (2 * __LOCALE_DATA_WCuplow_diffs) + + + +#undef __PASTE2 +#define __PASTE2(A,B) A ## B +#undef __PASTE3 +#define __PASTE3(A,B,C) A ## B ## C + +#define __LOCALE_DATA_COMMON_MMAP(X) unsigned char __PASTE3(lc_,X,_data)[__PASTE3(__lc_,X,_data_LEN)]; + + +#define __LOCALE_DATA_COMMON_MMIDX(X) unsigned char __PASTE3(lc_,X,_rows)[__PASTE3(__lc_,X,_rows_LEN)]; uint16_t __PASTE3(lc_,X,_item_offsets)[__PASTE3(__lc_,X,_item_offsets_LEN)]; uint16_t __PASTE3(lc_,X,_item_idx)[__PASTE3(__lc_,X,_item_idx_LEN)]; + + + + + +typedef struct { + + + + + + const unsigned char tbl8ctype[420]; + const unsigned char tbl8uplow[504]; + + const uint16_t tbl8c2wc[1760]; + const unsigned char tbl8wc2c[4528]; + + + + + const unsigned char tblwctype[(768 + 1888 + 948)]; + const unsigned char tblwuplow[(384 + 576 + 720)]; + const int16_t tblwuplow_diff[(2 * 98)]; + + + + + unsigned char lc_ctype_data[51];; + unsigned char lc_numeric_data[22];; + unsigned char lc_monetary_data[1578];; + unsigned char lc_time_data[25900];; + + unsigned char lc_messages_data[1583];; + + + + const __codeset_8_bit_t codeset_8_bit[23]; + + + unsigned char lc_ctype_rows[20]; uint16_t lc_ctype_item_offsets[10]; uint16_t lc_ctype_item_idx[20];; + unsigned char lc_numeric_rows[42]; uint16_t lc_numeric_item_offsets[3]; uint16_t lc_numeric_item_idx[13];; + unsigned char lc_monetary_rows[3652]; uint16_t lc_monetary_item_offsets[22]; uint16_t lc_monetary_item_idx[391];; + unsigned char lc_time_rows[7650]; uint16_t lc_time_item_offsets[50]; uint16_t lc_time_item_idx[3190];; + + unsigned char lc_messages_rows[312]; uint16_t lc_messages_item_offsets[4]; uint16_t lc_messages_item_idx[170];; + + const uint16_t collate_data[91141]; + + unsigned char lc_common_item_offsets_LEN[6]; + size_t lc_common_tbl_offsets[6 * 4]; + + + + + unsigned char locales[315 * 9]; + unsigned char locale_names5[5*167]; + unsigned char locale_at_modifiers[18]; + + + unsigned char lc_names[69]; + + unsigned char codeset_list[sizeof("\x18\x22\x31\x38\x3f\x4b\x56\x62" "\x6e\x7a\x86\x92\x9d\xa8\xb3\xbe" "\xc9\xd4\xdf\xea\xf1\xf8\xff" "\0" "ARMSCII-8\0" "ANSI_X3.4-1968\0" "CP1251\0" "CP1255\0" "GEORGIAN-PS\0" "ISO-8859-1\0" "ISO-8859-10\0" "ISO-8859-13\0" "ISO-8859-14\0" "ISO-8859-15\0" "ISO-8859-16\0" "ISO-8859-2\0" "ISO-8859-3\0" "ISO-8859-4\0" "ISO-8859-5\0" "ISO-8859-6\0" "ISO-8859-7\0" "ISO-8859-8\0" "ISO-8859-9\0" "KOI8-R\0" "KOI8-T\0" "KOI8-U\0" "TIS-620\0")]; + + + +} __locale_mmap_t; + +extern const __locale_mmap_t *__locale_mmap; +# 75 "../../include/bits/uClibc_locale.h" 2 + + + + + + +enum { + __ctype_encoding_7_bit, + __ctype_encoding_utf8, + __ctype_encoding_8_bit +}; + +#define LOCALE_STRING_SIZE (2 * __LC_ALL + 2) +# 102 "../../include/bits/uClibc_locale.h" +typedef struct { + uint16_t num_weights; + uint16_t num_starters; + uint16_t ii_shift; + uint16_t ti_shift; + uint16_t ii_len; + uint16_t ti_len; + uint16_t max_weight; + uint16_t num_col_base; + uint16_t max_col_index; + uint16_t undefined_idx; + uint16_t range_low; + uint16_t range_count; + uint16_t range_base_weight; + uint16_t range_rule_offset; + + uint16_t ii_mask; + uint16_t ti_mask; + + const uint16_t *index2weight_tbl; + const uint16_t *index2ruleidx_tbl; + const uint16_t *multistart_tbl; + + + const uint16_t *wcs2colidt_tbl; + + + const uint16_t *overrides_tbl; + + + const uint16_t *weightstr; + const uint16_t *ruletable; + + + uint16_t *index2weight; + uint16_t *index2ruleidx; + + uint16_t MAX_WEIGHTS; +} __collate_t; + + + + +typedef struct __uclibc_locale_struct { + + + + + + + + __ctype_mask_t __ctype_b_data[256 + 128]; + __ctype_touplow_t __ctype_tolower_data[256 + 128]; + __ctype_touplow_t __ctype_toupper_data[256 + 128]; + + + + unsigned char cur_locale[(2 * 6 + 2)]; + + + + + + uint16_t category_offsets[6]; + unsigned char category_item_count[6]; + + + unsigned char encoding; + unsigned char mb_cur_max; + const unsigned char outdigit_length[10]; + + + const unsigned char *idx8ctype; + const unsigned char *tbl8ctype; + const unsigned char *idx8uplow; + const unsigned char *tbl8uplow; + + const unsigned char *idx8c2wc; + const uint16_t *tbl8c2wc; + const unsigned char *idx8wc2c; + const unsigned char *tbl8wc2c; + + + + + + const uint16_t *code2flag; + + const unsigned char *tblwctype; + const unsigned char *tblwuplow; + + const int16_t *tblwuplow_diff; + + + wchar_t decimal_point_wc; + wchar_t thousands_sep_wc; + int decimal_point_len; + int thousands_sep_len; + + + + + const char *outdigit0_mb; + const char *outdigit1_mb; + const char *outdigit2_mb; + const char *outdigit3_mb; + const char *outdigit4_mb; + const char *outdigit5_mb; + const char *outdigit6_mb; + const char *outdigit7_mb; + const char *outdigit8_mb; + const char *outdigit9_mb; + const char *codeset; + + + const char *decimal_point; + const char *thousands_sep; + const char *grouping; + + + const char *int_curr_symbol; + const char *currency_symbol; + const char *mon_decimal_point; + const char *mon_thousands_sep; + const char *mon_grouping; + const char *positive_sign; + const char *negative_sign; + const char *int_frac_digits; + const char *frac_digits; + const char *p_cs_precedes; + const char *p_sep_by_space; + const char *n_cs_precedes; + const char *n_sep_by_space; + const char *p_sign_posn; + const char *n_sign_posn; + const char *int_p_cs_precedes; + const char *int_p_sep_by_space; + const char *int_n_cs_precedes; + const char *int_n_sep_by_space; + const char *int_p_sign_posn; + const char *int_n_sign_posn; + + const char *crncystr; + + + const char *abday_1; + const char *abday_2; + const char *abday_3; + const char *abday_4; + const char *abday_5; + const char *abday_6; + const char *abday_7; + + const char *day_1; + const char *day_2; + const char *day_3; + const char *day_4; + const char *day_5; + const char *day_6; + const char *day_7; + + const char *abmon_1; + const char *abmon_2; + const char *abmon_3; + const char *abmon_4; + const char *abmon_5; + const char *abmon_6; + const char *abmon_7; + const char *abmon_8; + const char *abmon_9; + const char *abmon_10; + const char *abmon_11; + const char *abmon_12; + + const char *mon_1; + const char *mon_2; + const char *mon_3; + const char *mon_4; + const char *mon_5; + const char *mon_6; + const char *mon_7; + const char *mon_8; + const char *mon_9; + const char *mon_10; + const char *mon_11; + const char *mon_12; + + const char *am_str; + const char *pm_str; + + const char *d_t_fmt; + const char *d_fmt; + const char *t_fmt; + const char *t_fmt_ampm; + const char *era; + + const char *era_year; + const char *era_d_fmt; + const char *alt_digits; + const char *era_d_t_fmt; + const char *era_t_fmt; + + + + + const char *yesexpr; + const char *noexpr; + const char *yesstr; + const char *nostr; + + + __collate_t collate; + +} __uclibc_locale_t; + +extern __uclibc_locale_t __global_locale_data; +extern struct __uclibc_locale_struct * __global_locale; + + +typedef struct __uclibc_locale_struct *__locale_t; + + + +extern int __locale_mbrtowc_l(wchar_t *__restrict dst, + const char *__restrict src, + __locale_t loc ) __attribute__ ((visibility ("hidden"))); +# 355 "../../include/bits/uClibc_locale.h" +#define __UCLIBC_CURLOCALE (__global_locale) +#define __UCLIBC_CURLOCALE_DATA (*__global_locale) +# 369 "../../include/bits/uClibc_locale.h" +#define __XL_NPP(N) N +#define __LOCALE_PARAM +#define __LOCALE_ARG +#define __LOCALE_PTR __UCLIBC_CURLOCALE +# 31 "../../include/locale.h" 2 + + + + + +#define LC_CTYPE __LC_CTYPE +#define LC_NUMERIC __LC_NUMERIC +#define LC_TIME __LC_TIME +#define LC_COLLATE __LC_COLLATE +#define LC_MONETARY __LC_MONETARY +#define LC_MESSAGES __LC_MESSAGES +# 50 "../../include/locale.h" +#define LC_ALL __LC_ALL + + + +struct lconv +{ + + + char *decimal_point; + char *thousands_sep; + + + + + + char *grouping; + + + + + + char *int_curr_symbol; + char *currency_symbol; + char *mon_decimal_point; + char *mon_thousands_sep; + char *mon_grouping; + char *positive_sign; + char *negative_sign; + char int_frac_digits; + char frac_digits; + + char p_cs_precedes; + + char p_sep_by_space; + + char n_cs_precedes; + + char n_sep_by_space; + + + + + + + char p_sign_posn; + char n_sign_posn; + + + char int_p_cs_precedes; + + char int_p_sep_by_space; + + char int_n_cs_precedes; + + char int_n_sep_by_space; + + + + + + + char int_p_sign_posn; + char int_n_sign_posn; +# 121 "../../include/locale.h" +}; + + + + + +extern char *setlocale (int __category, __const char *__locale) __attribute__ ((__nothrow__)); + + +extern struct lconv *localeconv (void) __attribute__ ((__nothrow__)); + + +# 152 "../../include/locale.h" +typedef __locale_t locale_t; + + + + + +extern __locale_t newlocale (int __category_mask, __const char *__locale, + __locale_t __base) __attribute__ ((__nothrow__)); + + + + + +#define LC_CTYPE_MASK (1 << __LC_CTYPE) +#define LC_NUMERIC_MASK (1 << __LC_NUMERIC) +#define LC_TIME_MASK (1 << __LC_TIME) +#define LC_COLLATE_MASK (1 << __LC_COLLATE) +#define LC_MONETARY_MASK (1 << __LC_MONETARY) +#define LC_MESSAGES_MASK (1 << __LC_MESSAGES) +# 195 "../../include/locale.h" +#define LC_ALL_MASK (LC_CTYPE_MASK | LC_NUMERIC_MASK | LC_TIME_MASK | LC_COLLATE_MASK | LC_MONETARY_MASK | LC_MESSAGES_MASK ) +# 206 "../../include/locale.h" +extern __locale_t duplocale (__locale_t __dataset) __attribute__ ((__nothrow__)); + + + +extern void freelocale (__locale_t __dataset) __attribute__ ((__nothrow__)); + + + + + + +extern __locale_t uselocale (__locale_t __dataset) __attribute__ ((__nothrow__)); + + + +#define LC_GLOBAL_LOCALE ((__locale_t) -1L) + + + + +# 14 "tsp_common.c" 2 +# 1 "../../include/errno.h" 1 +# 28 "../../include/errno.h" +#define _ERRNO_H 1 + + + + + + + +# 1 "../../include/bits/errno.h" 1 +# 22 "../../include/bits/errno.h" +# 1 "../../include/bits/errno_values.h" 1 + +#define _BITS_ERRNO_VALUES_H +# 12 "../../include/bits/errno_values.h" +#define EPERM 1 +#define ENOENT 2 +#define ESRCH 3 +#define EINTR 4 +#define EIO 5 +#define ENXIO 6 +#define E2BIG 7 +#define ENOEXEC 8 +#define EBADF 9 +#define ECHILD 10 +#define EAGAIN 11 +#define ENOMEM 12 +#define EACCES 13 +#define EFAULT 14 +#define ENOTBLK 15 +#define EBUSY 16 +#define EEXIST 17 +#define EXDEV 18 +#define ENODEV 19 +#define ENOTDIR 20 +#define EISDIR 21 +#define EINVAL 22 +#define ENFILE 23 +#define EMFILE 24 +#define ENOTTY 25 +#define ETXTBSY 26 +#define EFBIG 27 +#define ENOSPC 28 +#define ESPIPE 29 +#define EROFS 30 +#define EMLINK 31 +#define EPIPE 32 +#define EDOM 33 +#define ERANGE 34 +#define EDEADLK 35 +#define ENAMETOOLONG 36 +#define ENOLCK 37 +#define ENOSYS 38 +#define ENOTEMPTY 39 +#define ELOOP 40 +#define EWOULDBLOCK EAGAIN +#define ENOMSG 42 +#define EIDRM 43 +#define ECHRNG 44 +#define EL2NSYNC 45 +#define EL3HLT 46 +#define EL3RST 47 +#define ELNRNG 48 +#define EUNATCH 49 +#define ENOCSI 50 +#define EL2HLT 51 +#define EBADE 52 +#define EBADR 53 +#define EXFULL 54 +#define ENOANO 55 +#define EBADRQC 56 +#define EBADSLT 57 +#define EDEADLOCK EDEADLK +#define EBFONT 59 +#define ENOSTR 60 +#define ENODATA 61 +#define ETIME 62 +#define ENOSR 63 +#define ENONET 64 +#define ENOPKG 65 +#define EREMOTE 66 +#define ENOLINK 67 +#define EADV 68 +#define ESRMNT 69 +#define ECOMM 70 +#define EPROTO 71 +#define EMULTIHOP 72 +#define EDOTDOT 73 +#define EBADMSG 74 +#define EOVERFLOW 75 +#define ENOTUNIQ 76 +#define EBADFD 77 +#define EREMCHG 78 +#define ELIBACC 79 +#define ELIBBAD 80 +#define ELIBSCN 81 +#define ELIBMAX 82 +#define ELIBEXEC 83 +#define EILSEQ 84 +#define ERESTART 85 +#define ESTRPIPE 86 +#define EUSERS 87 +#define ENOTSOCK 88 +#define EDESTADDRREQ 89 +#define EMSGSIZE 90 +#define EPROTOTYPE 91 +#define ENOPROTOOPT 92 +#define EPROTONOSUPPORT 93 +#define ESOCKTNOSUPPORT 94 +#define EOPNOTSUPP 95 +#define EPFNOSUPPORT 96 +#define EAFNOSUPPORT 97 +#define EADDRINUSE 98 +#define EADDRNOTAVAIL 99 +#define ENETDOWN 100 +#define ENETUNREACH 101 +#define ENETRESET 102 +#define ECONNABORTED 103 +#define ECONNRESET 104 +#define ENOBUFS 105 +#define EISCONN 106 +#define ENOTCONN 107 +#define ESHUTDOWN 108 +#define ETOOMANYREFS 109 +#define ETIMEDOUT 110 +#define ECONNREFUSED 111 +#define EHOSTDOWN 112 +#define EHOSTUNREACH 113 +#define EALREADY 114 +#define EINPROGRESS 115 +#define ESTALE 116 +#define EUCLEAN 117 +#define ENOTNAM 118 +#define ENAVAIL 119 +#define EISNAM 120 +#define EREMOTEIO 121 +#define EDQUOT 122 +#define ENOMEDIUM 123 +#define EMEDIUMTYPE 124 +# 23 "../../include/bits/errno.h" 2 + + +#define ENOTSUP EOPNOTSUPP + + + +#define ECANCELED 125 + + + + + +extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + + +#define errno (*__errno_location ()) +# 37 "../../include/errno.h" 2 +#undef __need_Emath +# 59 "../../include/errno.h" + + + + +#undef errno + +#define errno __libc_errno + + + +extern __thread int __libc_errno __attribute__ ((tls_model ("initial-exec"))); + + + + +#define __set_errno(val) (errno = (val)) + + + +extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); +# 89 "../../include/errno.h" +typedef int error_t; +#define __error_t_defined 1 + +#undef __need_error_t +# 15 "tsp_common.c" 2 +# 1 "../../include/signal.h" 1 +# 26 "../../include/signal.h" +#define _SIGNAL_H + + + + + + +# 1 "../../include/bits/sigset.h" 1 +# 43 "../../include/bits/sigset.h" +#define _SIGSET_H_fns 1 + + +#define _EXTERN_INLINE extern __inline + + + +#define __sigmask(sig) (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int)))) + + + +#define __sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int))) + + +#define __sigemptyset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__set = (set); while (--__cnt >= 0) __set->__val[__cnt] = 0; 0; })) + + + + +#define __sigfillset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__set = (set); while (--__cnt >= 0) __set->__val[__cnt] = ~0UL; 0; })) +# 72 "../../include/bits/sigset.h" +#define __sigisemptyset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; const sigset_t *__set = (set); int __ret = __set->__val[--__cnt]; while (!__ret && --__cnt >= 0) __ret = __set->__val[__cnt]; __ret == 0; })) + + + + + + +#define __sigandset(dest,left,right) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__dest = (dest); const sigset_t *__left = (left); const sigset_t *__right = (right); while (--__cnt >= 0) __dest->__val[__cnt] = (__left->__val[__cnt] & __right->__val[__cnt]); 0; })) +# 88 "../../include/bits/sigset.h" +#define __sigorset(dest,left,right) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__dest = (dest); const sigset_t *__left = (left); const sigset_t *__right = (right); while (--__cnt >= 0) __dest->__val[__cnt] = (__left->__val[__cnt] | __right->__val[__cnt]); 0; })) +# 103 "../../include/bits/sigset.h" +extern int __sigismember (__const __sigset_t *, int); +extern int __sigaddset (__sigset_t *, int); +extern int __sigdelset (__sigset_t *, int); +# 34 "../../include/signal.h" 2 + + + + + +#define __sig_atomic_t_defined + +typedef __sig_atomic_t sig_atomic_t; + + +#undef __need_sig_atomic_t + + + + + + + +#undef __need_sigset_t + + + + + +# 1 "../../include/bits/signum.h" 1 +# 23 "../../include/bits/signum.h" +#define SIG_ERR ((__sighandler_t) -1) +#define SIG_DFL ((__sighandler_t) 0) +#define SIG_IGN ((__sighandler_t) 1) + + +#define SIG_HOLD ((__sighandler_t) 2) + + + + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT 6 +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCLD SIGCHLD +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGPOLL SIGIO +#define SIGIO 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED 31 + +#define _NSIG 64 + + +#define SIGRTMIN (__libc_current_sigrtmin ()) +#define SIGRTMAX (__libc_current_sigrtmax ()) + + + +#define __SIGRTMIN 32 +#define __SIGRTMAX (_NSIG - 1) +# 59 "../../include/signal.h" 2 +# 75 "../../include/signal.h" +typedef void (*__sighandler_t) (int); + + + + +extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); + +extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); + + + + + + + +extern __sighandler_t signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); +# 104 "../../include/signal.h" + + + + + +extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); + + + + + + +extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__)); + + + + + + +extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__)); + + + + +extern int raise (int __sig) __attribute__ ((__nothrow__)); + + + + +extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); +extern int gsignal (int __sig) __attribute__ ((__nothrow__)); + + + + +extern void psignal (int __sig, __const char *__s); +# 153 "../../include/signal.h" +extern int __sigpause (int __sig_or_mask, int __is_sig); +# 163 "../../include/signal.h" +#define sigpause(sig) __sigpause ((sig), 1) +# 175 "../../include/signal.h" +#define sigmask(sig) __sigmask(sig) + + +extern int sigblock (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); + + +extern int sigsetmask (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); + + +extern int siggetmask (void) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); + + + + +#define NSIG _NSIG + + + +typedef __sighandler_t sighandler_t; + + + + +typedef __sighandler_t sig_t; + + + + + + +#define __need_timespec +# 1 "../../include/time.h" 1 +# 68 "../../include/time.h" +#undef __need_clock_t +# 84 "../../include/time.h" +#undef __need_time_t +# 96 "../../include/time.h" +#undef __clockid_time_t +# 108 "../../include/time.h" +#undef __need_timer_t +# 128 "../../include/time.h" +#undef __need_timespec +# 207 "../../include/signal.h" 2 + + +# 1 "../../include/bits/siginfo.h" 1 +# 25 "../../include/bits/siginfo.h" +# 1 "../../include/bits/wordsize.h" 1 +# 19 "../../include/bits/wordsize.h" +#define __WORDSIZE 32 +# 26 "../../include/bits/siginfo.h" 2 + + + + +#define __have_sigval_t 1 + + +typedef union sigval + { + int sival_int; + void *sival_ptr; + } sigval_t; + + + + +#define __have_siginfo_t 1 + +#define __SI_MAX_SIZE 128 + + + +#define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3) + + +typedef struct siginfo + { + int si_signo; + int si_errno; + + int si_code; + + union + { + int _pad[((128 / sizeof (int)) - 3)]; + + + struct + { + __pid_t si_pid; + __uid_t si_uid; + } _kill; + + + struct + { + unsigned int _timer1; + unsigned int _timer2; + } _timer; + + + struct + { + __pid_t si_pid; + __uid_t si_uid; + sigval_t si_sigval; + } _rt; + + + struct + { + __pid_t si_pid; + __uid_t si_uid; + int si_status; + __clock_t si_utime; + __clock_t si_stime; + } _sigchld; + + + struct + { + void *si_addr; + } _sigfault; + + + struct + { + long int si_band; + int si_fd; + } _sigpoll; + } _sifields; + } siginfo_t; + + + +#define si_pid _sifields._kill.si_pid +#define si_uid _sifields._kill.si_uid +#define si_timer1 _sifields._timer._timer1 +#define si_timer2 _sifields._timer._timer2 +#define si_status _sifields._sigchld.si_status +#define si_utime _sifields._sigchld.si_utime +#define si_stime _sifields._sigchld.si_stime +#define si_value _sifields._rt.si_sigval +#define si_int _sifields._rt.si_sigval.sival_int +#define si_ptr _sifields._rt.si_sigval.sival_ptr +#define si_addr _sifields._sigfault.si_addr +#define si_band _sifields._sigpoll.si_band +#define si_fd _sifields._sigpoll.si_fd + + + + +enum +{ + SI_ASYNCNL = -60, +#define SI_ASYNCNL SI_ASYNCNL + SI_TKILL = -6, +#define SI_TKILL SI_TKILL + SI_SIGIO, +#define SI_SIGIO SI_SIGIO + SI_ASYNCIO, +#define SI_ASYNCIO SI_ASYNCIO + SI_MESGQ, +#define SI_MESGQ SI_MESGQ + SI_TIMER, +#define SI_TIMER SI_TIMER + SI_QUEUE, +#define SI_QUEUE SI_QUEUE + SI_USER, +#define SI_USER SI_USER + SI_KERNEL = 0x80 +#define SI_KERNEL SI_KERNEL +}; + + + +enum +{ + ILL_ILLOPC = 1, +#define ILL_ILLOPC ILL_ILLOPC + ILL_ILLOPN, +#define ILL_ILLOPN ILL_ILLOPN + ILL_ILLADR, +#define ILL_ILLADR ILL_ILLADR + ILL_ILLTRP, +#define ILL_ILLTRP ILL_ILLTRP + ILL_PRVOPC, +#define ILL_PRVOPC ILL_PRVOPC + ILL_PRVREG, +#define ILL_PRVREG ILL_PRVREG + ILL_COPROC, +#define ILL_COPROC ILL_COPROC + ILL_BADSTK +#define ILL_BADSTK ILL_BADSTK +}; + + +enum +{ + FPE_INTDIV = 1, +#define FPE_INTDIV FPE_INTDIV + FPE_INTOVF, +#define FPE_INTOVF FPE_INTOVF + FPE_FLTDIV, +#define FPE_FLTDIV FPE_FLTDIV + FPE_FLTOVF, +#define FPE_FLTOVF FPE_FLTOVF + FPE_FLTUND, +#define FPE_FLTUND FPE_FLTUND + FPE_FLTRES, +#define FPE_FLTRES FPE_FLTRES + FPE_FLTINV, +#define FPE_FLTINV FPE_FLTINV + FPE_FLTSUB +#define FPE_FLTSUB FPE_FLTSUB +}; + + +enum +{ + SEGV_MAPERR = 1, +#define SEGV_MAPERR SEGV_MAPERR + SEGV_ACCERR +#define SEGV_ACCERR SEGV_ACCERR +}; + + +enum +{ + BUS_ADRALN = 1, +#define BUS_ADRALN BUS_ADRALN + BUS_ADRERR, +#define BUS_ADRERR BUS_ADRERR + BUS_OBJERR +#define BUS_OBJERR BUS_OBJERR +}; + + +enum +{ + TRAP_BRKPT = 1, +#define TRAP_BRKPT TRAP_BRKPT + TRAP_TRACE +#define TRAP_TRACE TRAP_TRACE +}; + + +enum +{ + CLD_EXITED = 1, +#define CLD_EXITED CLD_EXITED + CLD_KILLED, +#define CLD_KILLED CLD_KILLED + CLD_DUMPED, +#define CLD_DUMPED CLD_DUMPED + CLD_TRAPPED, +#define CLD_TRAPPED CLD_TRAPPED + CLD_STOPPED, +#define CLD_STOPPED CLD_STOPPED + CLD_CONTINUED +#define CLD_CONTINUED CLD_CONTINUED +}; + + +enum +{ + POLL_IN = 1, +#define POLL_IN POLL_IN + POLL_OUT, +#define POLL_OUT POLL_OUT + POLL_MSG, +#define POLL_MSG POLL_MSG + POLL_ERR, +#define POLL_ERR POLL_ERR + POLL_PRI, +#define POLL_PRI POLL_PRI + POLL_HUP +#define POLL_HUP POLL_HUP +}; + +#undef __need_siginfo_t + + + + + +#define __have_sigevent_t 1 + + +#define __SIGEV_MAX_SIZE 64 + + + +#define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3) + + + +struct __pthread_attr_s; + +typedef struct sigevent + { + sigval_t sigev_value; + int sigev_signo; + int sigev_notify; + + union + { + int _pad[((64 / sizeof (int)) - 3)]; + + struct + { + void (*_function) (sigval_t); + struct __pthread_attr_s *_attribute; + } _sigev_thread; + } _sigev_un; + } sigevent_t; + + +#define sigev_notify_function _sigev_un._sigev_thread._function +#define sigev_notify_attributes _sigev_un._sigev_thread._attribute + + +enum +{ + SIGEV_SIGNAL = 0, +#define SIGEV_SIGNAL SIGEV_SIGNAL + SIGEV_NONE, +#define SIGEV_NONE SIGEV_NONE + SIGEV_THREAD, +#define SIGEV_THREAD SIGEV_THREAD + + SIGEV_THREAD_ID = 4 +#define SIGEV_THREAD_ID SIGEV_THREAD_ID +}; +# 210 "../../include/signal.h" 2 + + + +extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigismember (__const sigset_t *__set, int __signo) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern int sigisemptyset (__const sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigandset (sigset_t *__set, __const sigset_t *__left, + __const sigset_t *__right) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))); + + +extern int sigorset (sigset_t *__set, __const sigset_t *__left, + __const sigset_t *__right) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))); + + + + +# 1 "../../include/bits/sigaction.h" 1 +# 25 "../../include/bits/sigaction.h" +struct sigaction + { + + + union + { + + __sighandler_t sa_handler; + + void (*sa_sigaction) (int, siginfo_t *, void *); + } + __sigaction_handler; +#define sa_handler __sigaction_handler.sa_handler +#define sa_sigaction __sigaction_handler.sa_sigaction + + + + + + __sigset_t sa_mask; + + + int sa_flags; + + + void (*sa_restorer) (void); + }; + + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 2 +#define SA_SIGINFO 4 + + +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 + +#define SA_RESETHAND 0x80000000 + + +#define SA_INTERRUPT 0x20000000 + + +#define SA_NOMASK SA_NODEFER +#define SA_ONESHOT SA_RESETHAND +#define SA_STACK SA_ONSTACK + + + +#define SIG_BLOCK 0 +#define SIG_UNBLOCK 1 +#define SIG_SETMASK 2 +# 244 "../../include/signal.h" 2 + + +extern int sigprocmask (int __how, __const sigset_t *__restrict __set, + sigset_t *__restrict __oset) __attribute__ ((__nothrow__)); + + + + + + +extern int sigsuspend (__const sigset_t *__set) __attribute__ ((__nonnull__ (1))); + + +extern int sigaction (int __sig, __const struct sigaction *__restrict __act, + struct sigaction *__restrict __oact) __attribute__ ((__nothrow__)); + + +extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig) + __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern int sigwaitinfo (__const sigset_t *__restrict __set, + siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int sigtimedwait (__const sigset_t *__restrict __set, + siginfo_t *__restrict __info, + __const struct timespec *__restrict __timeout) + __attribute__ ((__nonnull__ (1))); + + + +extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val) + __attribute__ ((__nothrow__)); +# 307 "../../include/signal.h" +struct sigvec + { + __sighandler_t sv_handler; + int sv_mask; + + int sv_flags; +#define sv_onstack sv_flags + }; + + +#define SV_ONSTACK (1 << 0) +#define SV_INTERRUPT (1 << 1) +#define SV_RESETHAND (1 << 2) + + + + + + + +extern int sigvec (int __sig, __const struct sigvec *__vec, + struct sigvec *__ovec) __attribute__ ((__nothrow__)); + + + +# 1 "../../include/bits/sigcontext.h" 1 +# 26 "../../include/bits/sigcontext.h" +#define sigcontext_struct sigcontext + +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/uclibc_target/usr/include/asm/sigcontext.h" 1 + +#define __ASM_SH_SIGCONTEXT_H + +struct sigcontext { + unsigned long oldmask; + + + unsigned long sc_regs[16]; + unsigned long sc_pc; + unsigned long sc_pr; + unsigned long sc_sr; + unsigned long sc_gbr; + unsigned long sc_mach; + unsigned long sc_macl; + + + + unsigned long sc_fpregs[16]; + unsigned long sc_xfpregs[16]; + unsigned int sc_fpscr; + unsigned int sc_fpul; + unsigned int sc_ownedfp; + +}; +# 29 "../../include/bits/sigcontext.h" 2 +# 333 "../../include/signal.h" 2 + + +extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__)); +# 345 "../../include/signal.h" +extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__)); + +# 1 "../../include/bits/sigstack.h" 1 +# 26 "../../include/bits/sigstack.h" +struct sigstack + { + void *ss_sp; + int ss_onstack; + }; + + + +enum +{ + SS_ONSTACK = 1, +#define SS_ONSTACK SS_ONSTACK + SS_DISABLE +#define SS_DISABLE SS_DISABLE +}; + + +#define MINSIGSTKSZ 2048 + + +#define SIGSTKSZ 8192 + + + +typedef struct sigaltstack + { + void *ss_sp; + int ss_flags; + size_t ss_size; + } stack_t; +# 348 "../../include/signal.h" 2 + + +# 1 "../../include/ucontext.h" 1 +# 20 "../../include/ucontext.h" +#define _UCONTEXT_H 1 + + + + +# 1 "../../include/sys/ucontext.h" 1 +# 22 "../../include/sys/ucontext.h" +#define _SYS_UCONTEXT_H 1 + + +# 1 "../../include/signal.h" 1 +# 26 "../../include/sys/ucontext.h" 2 + + + +# 1 "../../include/bits/sigcontext.h" 1 +# 30 "../../include/sys/ucontext.h" 2 + + +typedef int greg_t; + + +#define NFPREG 16 + + +typedef greg_t gregset_t[16]; + + + +enum +{ + R0 = 0, +#define R0 R0 + R1 = 1, +#define R1 R1 + R2 = 2, +#define R2 R2 + R3 = 3, +#define R3 R3 + R4 = 4, +#define R4 R4 + R5 = 5, +#define R5 R5 + R6 = 6, +#define R6 R6 + R7 = 7, +#define R7 R7 + R8 = 8, +#define R8 R8 + R9 = 9, +#define R9 R9 + R10 = 10, +#define R10 R10 + R11 = 11, +#define R11 R11 + R12 = 12, +#define R12 R12 + R13 = 13, +#define R13 R13 + R14 = 14, +#define R14 R14 + R15 = 15, +#define R15 R15 +}; + + +typedef int freg_t; + + +#define NFPREG 16 + + +typedef freg_t fpregset_t[16]; + + +typedef struct + { + unsigned int oldmask; + + + gregset_t gregs; + unsigned int pc; + unsigned int pr; + unsigned int sr; + unsigned int gbr; + unsigned int mach; + unsigned int macl; + + + + fpregset_t fpregs; + fpregset_t xfpregs; + unsigned int fpscr; + unsigned int fpul; + unsigned int ownedfp; + + } mcontext_t; + + +typedef struct ucontext + { + unsigned long int uc_flags; + struct ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + __sigset_t uc_sigmask; + } ucontext_t; +# 26 "../../include/ucontext.h" 2 +# 351 "../../include/signal.h" 2 + + + + + +extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) + __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); + + + +extern int sigaltstack (__const struct sigaltstack *__restrict __ss, + struct sigaltstack *__restrict __oss) __attribute__ ((__nothrow__)); + + + + + + + +extern int sighold (int __sig) __attribute__ ((__nothrow__)); + + +extern int sigrelse (int __sig) __attribute__ ((__nothrow__)); + + +extern int sigignore (int __sig) __attribute__ ((__nothrow__)); + + +extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __attribute__ ((__nothrow__)); + + + + + + +# 1 "../../include/bits/sigthread.h" 1 +# 21 "../../include/bits/sigthread.h" +#define _BITS_SIGTHREAD_H 1 +# 31 "../../include/bits/sigthread.h" +extern int pthread_sigmask (int __how, + __const __sigset_t *__restrict __newmask, + __sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__)); + + +extern int pthread_kill (pthread_t __thread_id, int __signo) __attribute__ ((__nothrow__)); +# 387 "../../include/signal.h" 2 + + + + + + +extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__)); + +extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__)); + + + + +# 16 "tsp_common.c" 2 + +# 1 "tst_types.h" 1 +# 11 "tst_types.h" +#define TST_TYPES_H + + +# 1 "../../include/wchar.h" 1 +# 27 "../../include/wchar.h" +#define _WCHAR_H 1 +# 37 "../../include/wchar.h" +#define __need___FILE + +#define __need_FILE + + + +#define __need___va_list +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stdarg.h" 1 3 4 +# 37 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stdarg.h" 3 4 +#undef __need___va_list +# 45 "../../include/wchar.h" 2 + + +#define __need_size_t +#define __need_wchar_t +#define __need_NULL + +#define __need_wint_t +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4 +# 163 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_ptrdiff_t +# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_size_t +# 345 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_wchar_t +# 357 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_wint_t +# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef NULL + + + + +#define NULL ((void *)0) + + + + + +#undef __need_NULL + + + + +#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) +# 53 "../../include/wchar.h" 2 +# 98 "../../include/wchar.h" +#undef __need_mbstate_t + + + + + + + + +typedef __mbstate_t mbstate_t; + + + +# 120 "../../include/wchar.h" +#define WEOF (0xffffffffu) +# 130 "../../include/wchar.h" + + + + + +struct tm; + + + + + + + + + +extern wchar_t *wcscpy (wchar_t *__restrict __dest, + __const wchar_t *__restrict __src) __attribute__ ((__nothrow__)); + +extern wchar_t *wcsncpy (wchar_t *__restrict __dest, + __const wchar_t *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)); + + +extern wchar_t *wcscat (wchar_t *__restrict __dest, + __const wchar_t *__restrict __src) __attribute__ ((__nothrow__)); + +extern wchar_t *wcsncat (wchar_t *__restrict __dest, + __const wchar_t *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)); + + +extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + +extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + + + + +extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) __attribute__ ((__nothrow__)); + + +extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2, + size_t __n) __attribute__ ((__nothrow__)); +# 189 "../../include/wchar.h" + + + +extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __attribute__ ((__nothrow__)); + + + +extern size_t wcsxfrm (wchar_t *__restrict __s1, + __const wchar_t *__restrict __s2, size_t __n) __attribute__ ((__nothrow__)); + +# 219 "../../include/wchar.h" +extern wchar_t *wcsdup (__const wchar_t *__s) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)); + + + + +extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + +extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + + + + + +extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + + + + + +extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + + +extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + +extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + +extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + + +extern wchar_t *wcstok (wchar_t *__restrict __s, + __const wchar_t *__restrict __delim, + wchar_t **__restrict __ptr) __attribute__ ((__nothrow__)); + + +extern size_t wcslen (__const wchar_t *__s) __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + + + + +extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + + + + +extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + + + + + +extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + + +extern int wmemcmp (__const wchar_t *__restrict __s1, + __const wchar_t *__restrict __s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + + +extern wchar_t *wmemcpy (wchar_t *__restrict __s1, + __const wchar_t *__restrict __s2, size_t __n) __attribute__ ((__nothrow__)); + + + +extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n) + __attribute__ ((__nothrow__)); + + +extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) __attribute__ ((__nothrow__)); + + + + + +extern wchar_t *wmempcpy (wchar_t *__restrict __s1, + __const wchar_t *__restrict __s2, size_t __n) + __attribute__ ((__nothrow__)); + + + + + + +extern wint_t btowc (int __c) __attribute__ ((__nothrow__)); + + + +extern int wctob (wint_t __c) __attribute__ ((__nothrow__)); + + + +extern int mbsinit (__const mbstate_t *__ps) __attribute__ ((__nothrow__)) __attribute__ ((__pure__)); + + + +extern size_t mbrtowc (wchar_t *__restrict __pwc, + __const char *__restrict __s, size_t __n, + mbstate_t *__p) __attribute__ ((__nothrow__)); + + +extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, + mbstate_t *__restrict __ps) __attribute__ ((__nothrow__)); + + + + + + +extern size_t mbrlen (__const char *__restrict __s, size_t __n, + mbstate_t *__restrict __ps) __attribute__ ((__nothrow__)); + + + +extern size_t mbsrtowcs (wchar_t *__restrict __dst, + __const char **__restrict __src, size_t __len, + mbstate_t *__restrict __ps) __attribute__ ((__nothrow__)); + + + +extern size_t wcsrtombs (char *__restrict __dst, + __const wchar_t **__restrict __src, size_t __len, + mbstate_t *__restrict __ps) __attribute__ ((__nothrow__)); + + + + + + +extern size_t mbsnrtowcs (wchar_t *__restrict __dst, + __const char **__restrict __src, size_t __nmc, + size_t __len, mbstate_t *__restrict __ps) __attribute__ ((__nothrow__)); + + + +extern size_t wcsnrtombs (char *__restrict __dst, + __const wchar_t **__restrict __src, + size_t __nwc, size_t __len, + mbstate_t *__restrict __ps) __attribute__ ((__nothrow__)); + + + + + + +extern int wcwidth (wchar_t __c) __attribute__ ((__nothrow__)); + + + +extern int wcswidth (__const wchar_t *__s, size_t __n) __attribute__ ((__nothrow__)); + + + + + + + +extern double wcstod (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr) __attribute__ ((__nothrow__)); + + + +extern float wcstof (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr) __attribute__ ((__nothrow__)); +extern long double wcstold (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr) __attribute__ ((__nothrow__)); + + + + + + +extern long int wcstol (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, int __base) __attribute__ ((__nothrow__)); + + + +extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)); + + + + +__extension__ +extern long long int wcstoll (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)); + + + +__extension__ +extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + int __base) __attribute__ ((__nothrow__)); + + + + + + +__extension__ +extern long long int wcstoq (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)); + + + +__extension__ +extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr, + wchar_t **__restrict __endptr, + int __base) __attribute__ ((__nothrow__)); +# 499 "../../include/wchar.h" +extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __attribute__ ((__nothrow__)); + + + +extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) + __attribute__ ((__nothrow__)); + + + + + + + + +extern int fwide (__FILE *__fp, int __mode) __attribute__ ((__nothrow__)); + + + + + + +extern int fwprintf (__FILE *__restrict __stream, + __const wchar_t *__restrict __format, ...) + ; + + + + +extern int wprintf (__const wchar_t *__restrict __format, ...) + ; + +extern int swprintf (wchar_t *__restrict __s, size_t __n, + __const wchar_t *__restrict __format, ...) + __attribute__ ((__nothrow__)) ; + + + + + +extern int vfwprintf (__FILE *__restrict __s, + __const wchar_t *__restrict __format, + __gnuc_va_list __arg) + ; + + + + +extern int vwprintf (__const wchar_t *__restrict __format, + __gnuc_va_list __arg) + ; + + +extern int vswprintf (wchar_t *__restrict __s, size_t __n, + __const wchar_t *__restrict __format, + __gnuc_va_list __arg) + __attribute__ ((__nothrow__)) ; + + + + + + +extern int fwscanf (__FILE *__restrict __stream, + __const wchar_t *__restrict __format, ...) + ; + + + + +extern int wscanf (__const wchar_t *__restrict __format, ...) + ; + +extern int swscanf (__const wchar_t *__restrict __s, + __const wchar_t *__restrict __format, ...) + __attribute__ ((__nothrow__)) ; + + + + + + + + + + + +extern int vfwscanf (__FILE *__restrict __s, + __const wchar_t *__restrict __format, + __gnuc_va_list __arg) + ; + + + + +extern int vwscanf (__const wchar_t *__restrict __format, + __gnuc_va_list __arg) + ; + +extern int vswscanf (__const wchar_t *__restrict __s, + __const wchar_t *__restrict __format, + __gnuc_va_list __arg) + __attribute__ ((__nothrow__)) ; + + + + + + + + + + +extern wint_t fgetwc (__FILE *__stream); +extern wint_t getwc (__FILE *__stream); + + + + + +extern wint_t getwchar (void); + + + + + + +extern wint_t fputwc (wchar_t __wc, __FILE *__stream); +extern wint_t putwc (wchar_t __wc, __FILE *__stream); + + + + + +extern wint_t putwchar (wchar_t __wc); + + + + + + + +extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, + __FILE *__restrict __stream); + + + + + +extern int fputws (__const wchar_t *__restrict __ws, + __FILE *__restrict __stream); + + + + + + +extern wint_t ungetwc (wint_t __wc, __FILE *__stream); + +# 667 "../../include/wchar.h" +extern wint_t getwc_unlocked (__FILE *__stream); +extern wint_t getwchar_unlocked (void); + + + + + + + +extern wint_t fgetwc_unlocked (__FILE *__stream); + + + + + + + +extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); +# 693 "../../include/wchar.h" +extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); +extern wint_t putwchar_unlocked (wchar_t __wc); +# 703 "../../include/wchar.h" +extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, + __FILE *__restrict __stream); + + + + + + + +extern int fputws_unlocked (__const wchar_t *__restrict __ws, + __FILE *__restrict __stream); + + + + + + + +extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, + __const wchar_t *__restrict __format, + __const struct tm *__restrict __tp) __attribute__ ((__nothrow__)); + +# 748 "../../include/wchar.h" + +# 15 "tst_types.h" 2 +# 1 "../../include/wctype.h" 1 +# 34 "../../include/wctype.h" +#define _WCTYPE_H 1 + + + +#define __need_wint_t +# 1 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 1 3 4 +# 163 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_ptrdiff_t +# 236 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_size_t +# 345 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_wchar_t +# 357 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef __need_wint_t +# 398 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" 3 4 +#undef NULL + + + + +#define NULL ((void *)0) + + + + + +#undef __need_NULL + + + + +#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER) +# 40 "../../include/wctype.h" 2 +# 49 "../../include/wctype.h" + +# 59 "../../include/wctype.h" +#undef __need_iswxxx + + + + + +#define __iswxxx_defined 1 + + + + + +typedef unsigned int wctype_t; + + + +#define _ISwbit(bit) (1 << (bit)) + +enum +{ + __ISwupper = 0, + __ISwlower = 1, + __ISwalpha = 2, + __ISwdigit = 3, + __ISwxdigit = 4, + __ISwspace = 5, + __ISwprint = 6, + __ISwgraph = 7, + __ISwblank = 8, + __ISwcntrl = 9, + __ISwpunct = 10, + __ISwalnum = 11, + + _ISwupper = (1 << (__ISwupper)), + _ISwlower = (1 << (__ISwlower)), + _ISwalpha = (1 << (__ISwalpha)), + _ISwdigit = (1 << (__ISwdigit)), + _ISwxdigit = (1 << (__ISwxdigit)), + _ISwspace = (1 << (__ISwspace)), + _ISwprint = (1 << (__ISwprint)), + _ISwgraph = (1 << (__ISwgraph)), + _ISwblank = (1 << (__ISwblank)), + _ISwcntrl = (1 << (__ISwcntrl)), + _ISwpunct = (1 << (__ISwpunct)), + _ISwalnum = (1 << (__ISwalnum)) +}; +# 113 "../../include/wctype.h" + + + + + + + + + +extern int iswalnum (wint_t __wc) __attribute__ ((__nothrow__)); + + + + + +extern int iswalpha (wint_t __wc) __attribute__ ((__nothrow__)); + + +extern int iswcntrl (wint_t __wc) __attribute__ ((__nothrow__)); + + + +extern int iswdigit (wint_t __wc) __attribute__ ((__nothrow__)); + + + +extern int iswgraph (wint_t __wc) __attribute__ ((__nothrow__)); + + + + +extern int iswlower (wint_t __wc) __attribute__ ((__nothrow__)); + + +extern int iswprint (wint_t __wc) __attribute__ ((__nothrow__)); + + + + +extern int iswpunct (wint_t __wc) __attribute__ ((__nothrow__)); + + + + +extern int iswspace (wint_t __wc) __attribute__ ((__nothrow__)); + + + + +extern int iswupper (wint_t __wc) __attribute__ ((__nothrow__)); + + + + +extern int iswxdigit (wint_t __wc) __attribute__ ((__nothrow__)); + + + + + +extern int iswblank (wint_t __wc) __attribute__ ((__nothrow__)); +# 182 "../../include/wctype.h" +extern wctype_t wctype (__const char *__property) __attribute__ ((__nothrow__)); + + + +extern int iswctype (wint_t __wc, wctype_t __desc) __attribute__ ((__nothrow__)); + + + + + + + + + + + +typedef unsigned int wctrans_t; + + + + + + + +extern wint_t towlower (wint_t __wc) __attribute__ ((__nothrow__)); + + +extern wint_t towupper (wint_t __wc) __attribute__ ((__nothrow__)); + + + +# 225 "../../include/wctype.h" + + + + + +extern wctrans_t wctrans (__const char *__property) __attribute__ ((__nothrow__)); + + +extern wint_t towctrans (wint_t __wc, wctrans_t __desc) __attribute__ ((__nothrow__)); + +# 326 "../../include/wctype.h" + +# 16 "tst_types.h" 2 +# 1 "tst_funcs.h" 1 +# 11 "tst_funcs.h" +#define TST_FUNCS_H + +#define C_SUCCESS 'S' +#define C_FAILURE 'F' +#define C_IGNORED 'I' +#define C_INVALID 'D' +#define C_LOCALES 'L' + + +extern int result (FILE * fp, char res, const char *func, const char *loc, + int rec_no, int seq_num, int case_no, const char *msg); + +#define Result(C,S,E,M) result (fp, (C), (S), locale, rec+1, seq_num+1, (E), (M)) + + +#define CASE_0 0 +#define CASE_1 1 +#define CASE_2 2 +#define CASE_3 3 +#define CASE_4 4 +#define CASE_5 5 +#define CASE_6 6 +#define CASE_7 7 +#define CASE_8 8 +#define CASE_9 9 + +#define MS_PASSED "PASSED" +#define MS_SPACE " " +#define MS_FAILED " " +#define MS_NOTEST "NOTEST" +#define MS_ABORTU "ABEND0" +#define MS_ABORT "ABEND1" + +#define MK_PASSED 0x00 +#define MK_SPACE 0x01 +#define MK_NOTEST 0x02 +#define MK_ABORTU 0x04 +#define MK_ABORT 0x08 + + + + + +#define TST_ABS(x) (((x) > 0) ? (x) : -(x)) + +#define TMD_ERRET(_type_) int err_val; int ret_flg; _type_ ret_val + + + +#define TMD_RECHEAD(_FUNC_) typedef struct { TIN_ ##_FUNC_ ##_REC input; TEX_ ##_FUNC_ ##_REC expect; int is_last; } TST_ ##_FUNC_ ##_REC; typedef struct { TST_HEAD hd; TST_ ##_FUNC_ ##_REC rec[ MAX_LOC_TEST ]; } TST_ ##_FUNC_ +# 72 "tst_funcs.h" +#define TST_FTYP(func) tst_ ##func ##_loc +#define TST_HEAD(func) tst_ ##func ##_loc[ loc ].hd +#define TST_INPUT(func) tst_ ##func ##_loc[ loc ].rec[ rec ].input +#define TST_EXPECT(func) tst_ ##func ##_loc[ loc ].rec[ rec ].expect +#define TST_INPUT_SEQ(func) tst_ ##func ##_loc[ loc ].rec[ rec ].input.seq[ seq_num ] + +#define TST_EXPECT_SEQ(func) tst_ ##func ##_loc[ loc ].rec[ rec ].expect.seq[ seq_num ] + +#define TST_IS_LAST(func) tst_ ##func ##_loc[ loc ].rec[ rec ].is_last + + + +#define TST_DECL_VARS(_type_) int loc, rec, err_count = 0; int warn_count __attribute__ ((unused)); int func_id, seq_num = 0; const char *locale; int err_exp, ret_flg; int errno_save = 0; _type_ ret_exp; _type_ ret +# 94 "tst_funcs.h" +#define TST_DO_TEST(o_func) for (loc = 0; strcmp (TST_HEAD (o_func).locale, TST_LOC_end); ++loc) + + + +#define TST_HEAD_LOCALE(ofunc,s_func) func_id = TST_HEAD (ofunc).func_id; locale = TST_HEAD (ofunc).locale; if (setlocale (LC_ALL, locale) == NULL) { fprintf (stderr, "Warning : can't set locale: %s\nskipping ...\n", locale); result (fp, C_LOCALES, s_func, locale, 0, 0, 0, "can't set locale"); ++err_count; continue; } +# 110 "tst_funcs.h" +#define TST_DO_REC(ofunc) for (rec=0; !TST_IS_LAST (ofunc); ++rec) + + +#define TST_DO_SEQ(_count_) for (seq_num=0; seq_num < _count_; seq_num++) + + +#define TST_GET_ERRET(_ofunc_) err_exp = TST_EXPECT (_ofunc_).err_val; ret_flg = TST_EXPECT (_ofunc_).ret_flg; ret_exp = TST_EXPECT (_ofunc_).ret_val + + + + +#define TST_GET_ERRET_SEQ(_ofunc_) err_exp = TST_EXPECT_SEQ (_ofunc_).err_val; ret_flg = TST_EXPECT_SEQ (_ofunc_).ret_flg; ret_exp = TST_EXPECT_SEQ (_ofunc_).ret_val + + + + +#define TST_CLEAR_ERRNO errno = 0 + + +#define TST_SAVE_ERRNO errno_save = errno + + + +#define TST_IF_RETURN(_s_func_) if (err_exp != 0) { if (errno_save == err_exp) { result (fp, C_SUCCESS, _s_func_, locale, rec+1, seq_num+1, 1, MS_PASSED); } else { err_count++; result (fp, C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 1, "the value of errno is different from an expected value"); } } if (ret_flg == 1) { if (ret == ret_exp) { result (fp, C_SUCCESS, _s_func_, locale, rec+1, seq_num+1, 2, MS_PASSED); } else { err_count++; result (fp, C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 2, "the return value is different from an expected value"); } } else +# 165 "tst_funcs.h" +#define TEX_ERRET_REC(_type_) struct { TMD_ERRET (_type_); } + + + + +#define TEX_ERRET_REC_SEQ(_type_,_count_) struct { struct { TMD_ERRET (_type_); } seq[ _count_ ]; } +# 181 "tst_funcs.h" +#define TST_ISW_STRUCT(_FUNC_,_func_) typedef struct { wint_t wc; } TIN_ISW ##_FUNC_ ##_REC; typedef TEX_ERRET_REC (int) TEX_ISW ##_FUNC_ ##_REC; TMD_RECHEAD (ISW ##_FUNC_) +# 190 "tst_funcs.h" +#define TST_FUNC_ISW(_FUNC_,_func_) int tst_isw ##_func_ (FILE *fp, int debug_flg) { TST_DECL_VARS(int); wint_t wc; TST_DO_TEST (isw ##_func_) { TST_HEAD_LOCALE (isw ##_func_, S_ISW ##_FUNC_); TST_DO_REC(isw ##_func_) { TST_GET_ERRET (isw ##_func_); wc = TST_INPUT (isw ##_func_).wc; ret = isw ##_func_ (wc); if (debug_flg) { fprintf (stdout, "isw*() [ %s : %d ] ret = %d\n", locale, rec+1, ret); } TST_IF_RETURN (S_ISW ##_FUNC_) { if (ret != 0) { result (fp, C_SUCCESS, S_ISW ##_FUNC_, locale, rec+1, seq_num+1, 3, MS_PASSED); } else { err_count++; result (fp, C_FAILURE, S_ISW ##_FUNC_, locale, rec+1, seq_num+1, 3, "the function returned 0, but should be non-zero"); } } } } return err_count; } +# 235 "tst_funcs.h" +#define TST_TOW_STRUCT(_FUNC_,_func_) typedef struct { wint_t wc; } TIN_TOW ##_FUNC_ ##_REC; typedef TEX_ERRET_REC (wint_t) TEX_TOW ##_FUNC_ ##_REC; TMD_RECHEAD (TOW ##_FUNC_) +# 244 "tst_funcs.h" +#define TST_FUNC_TOW(_FUNC_,_func_) int tst_tow ##_func_ (FILE *fp, int debug_flg) { TST_DECL_VARS (wint_t); wint_t wc; TST_DO_TEST (tow ##_func_) { TST_HEAD_LOCALE (tow ##_func_, S_TOW ##_FUNC_); TST_DO_REC (tow ##_func_) { TST_GET_ERRET (tow ##_func_); wc = TST_INPUT (tow ##_func_).wc; ret = tow ##_func_ (wc); if (debug_flg) { fprintf (stdout, "tow*() [ %s : %d ] ret = 0x%x\n", locale, rec+1, ret); } TST_IF_RETURN (S_TOW ##_FUNC_) { }; } } return err_count; } +# 17 "tst_types.h" 2 +# 1 "tgn_funcdef.h" 1 + +#define TGN_FUNCDEF_H + + +#define Tiswalnum 1 +#define Tiswalpha 2 +#define Tiswcntrl 3 +#define Tiswctype 4 +#define Tiswdigit 5 +#define Tiswgraph 6 +#define Tiswlower 7 +#define Tiswprint 8 +#define Tiswpunct 9 +#define Tiswspace 10 +#define Tiswupper 11 +#define Tiswxdigit 12 +#define Tmblen 13 +#define Tmbrlen 14 +#define Tmbrtowc 15 +#define Tmbsrtowcs 16 +#define Tmbstowcs 17 +#define Tmbtowc 18 +#define Tstrcoll 19 +#define Tstrfmon 20 +#define Tstrxfrm 21 +#define Tswscanf 22 +#define Ttowctrans 23 +#define Ttowlower 24 +#define Ttowupper 25 +#define Twcrtomb 26 +#define Twcscat 27 +#define Twcschr 28 +#define Twcscmp 29 +#define Twcscoll 30 +#define Twcscpy 31 +#define Twcscspn 32 +#define Twcslen 33 +#define Twcsncat 34 +#define Twcsncmp 35 +#define Twcsncpy 36 +#define Twcspbrk 37 +#define Twcsrtombs 38 +#define Twcsspn 39 +#define Twcsstr 40 +#define Twcstod 41 +#define Twcstok 42 +#define Twcstombs 43 +#define Twcswidth 44 +#define Twcsxfrm 45 +#define Twctob 46 +#define Twctomb 47 +#define Twctrans 48 +#define Twctype 49 +#define Twcwidth 50 + + +#define S_ISWALNUM "iswalnum" +#define S_ISWALPHA "iswalpha" +#define S_ISWCNTRL "iswcntrl" +#define S_ISWCTYPE "iswctype" +#define S_ISWDIGIT "iswdigit" +#define S_ISWGRAPH "iswgraph" +#define S_ISWLOWER "iswlower" +#define S_ISWPRINT "iswprint" +#define S_ISWPUNCT "iswpunct" +#define S_ISWSPACE "iswspace" +#define S_ISWUPPER "iswupper" +#define S_ISWXDIGIT "iswxdigit" +#define S_MBLEN "mblen" +#define S_MBRLEN "mbrlen" +#define S_MBRTOWC "mbrtowc" +#define S_MBSRTOWCS "mbsrtowcs" +#define S_MBSTOWCS "mbstowcs" +#define S_MBTOWC "mbtowc" +#define S_STRCOLL "strcoll" +#define S_STRFMON "strfmon" +#define S_STRXFRM "strxfrm" +#define S_SWSCANF "swscanf" +#define S_TOWCTRANS "towctrans" +#define S_TOWLOWER "towlower" +#define S_TOWUPPER "towupper" +#define S_WCRTOMB "wcrtomb" +#define S_WCSCAT "wcscat" +#define S_WCSCHR "wcschr" +#define S_WCSCMP "wcscmp" +#define S_WCSCOLL "wcscoll" +#define S_WCSCPY "wcscpy" +#define S_WCSCSPN "wcscspn" +#define S_WCSLEN "wcslen" +#define S_WCSNCAT "wcsncat" +#define S_WCSNCMP "wcsncmp" +#define S_WCSNCPY "wcsncpy" +#define S_WCSPBRK "wcspbrk" +#define S_WCSRTOMBS "wcsrtombs" +#define S_WCSSPN "wcsspn" +#define S_WCSSTR "wcsstr" +#define S_WCSTOD "wcstod" +#define S_WCSTOK "wcstok" +#define S_WCSTOMBS "wcstombs" +#define S_WCSWIDTH "wcswidth" +#define S_WCSXFRM "wcsxfrm" +#define S_WCTOB "wctob" +#define S_WCTOMB "wctomb" +#define S_WCTRANS "wctrans" +#define S_WCTYPE "wctype" +#define S_WCWIDTH "wcwidth" + + +extern int tst_iswalnum (FILE *, int); +extern int tst_iswalpha (FILE *, int); +extern int tst_iswcntrl (FILE *, int); +extern int tst_iswctype (FILE *, int); +extern int tst_iswdigit (FILE *, int); +extern int tst_iswgraph (FILE *, int); +extern int tst_iswlower (FILE *, int); +extern int tst_iswprint (FILE *, int); +extern int tst_iswpunct (FILE *, int); +extern int tst_iswspace (FILE *, int); +extern int tst_iswupper (FILE *, int); +extern int tst_iswxdigit (FILE *, int); +extern int tst_mblen (FILE *, int); +extern int tst_mbrlen (FILE *, int); +extern int tst_mbrtowc (FILE *, int); +extern int tst_mbsrtowcs (FILE *, int); +extern int tst_mbstowcs (FILE *, int); +extern int tst_mbtowc (FILE *, int); +extern int tst_strcoll (FILE *, int); +extern int tst_strfmon (FILE *, int); +extern int tst_strxfrm (FILE *, int); +extern int tst_swscanf (FILE *, int); +extern int tst_towctrans (FILE *, int); +extern int tst_towlower (FILE *, int); +extern int tst_towupper (FILE *, int); +extern int tst_wcrtomb (FILE *, int); +extern int tst_wcscat (FILE *, int); +extern int tst_wcschr (FILE *, int); +extern int tst_wcscmp (FILE *, int); +extern int tst_wcscoll (FILE *, int); +extern int tst_wcscpy (FILE *, int); +extern int tst_wcscspn (FILE *, int); +extern int tst_wcslen (FILE *, int); +extern int tst_wcsncat (FILE *, int); +extern int tst_wcsncmp (FILE *, int); +extern int tst_wcsncpy (FILE *, int); +extern int tst_wcspbrk (FILE *, int); +extern int tst_wcsrtombs (FILE *, int); +extern int tst_wcsspn (FILE *, int); +extern int tst_wcsstr (FILE *, int); +extern int tst_wcstod (FILE *, int); +extern int tst_wcstok (FILE *, int); +extern int tst_wcstombs (FILE *, int); +extern int tst_wcswidth (FILE *, int); +extern int tst_wcsxfrm (FILE *, int); +extern int tst_wctob (FILE *, int); +extern int tst_wctomb (FILE *, int); +extern int tst_wctrans (FILE *, int); +extern int tst_wctype (FILE *, int); +extern int tst_wcwidth (FILE *, int); +# 18 "tst_types.h" 2 + +#define MBSSIZE 24 +#define WCSSIZE 12 +#define MONFMTSIZE 16 +#define MONSIZE 64 +#define USE_MBCURMAX 99 +#define TST_DBL_EPS 2.22153e-16 +#define WCSTOK_SEQNUM 3 +#define MBLEN_SEQNUM 3 +#define MBTOWC_SEQNUM 3 +#define MBSTOWCS_SEQNUM 3 +#define WCTOMB_SEQNUM 3 +#define WCSTOMBS_SEQNUM 3 +#define MBRLEN_SEQNUM 3 +#define MBRTOWC_SEQNUM 3 +#define MBSRTOWCS_SEQNUM 3 +#define WCRTOMB_SEQNUM 3 +#define WCSRTOMBS_SEQNUM 3 + + +#define MAX_LOC_TEST 300 + + + + + + +typedef struct +{ + char *func_str; + int func_id; +} +TST_FID; + +typedef struct +{ + int func_id; + const char *locale; +} +TST_HEAD; + +typedef struct +{ + TST_HEAD *head; +} +TST_FUNCS; + + + + + + +typedef struct { wint_t wc; } TIN_ISWALNUM_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWALNUM_REC; typedef struct { TIN_ISWALNUM_REC input; TEX_ISWALNUM_REC expect; int is_last; } TST_ISWALNUM_REC; typedef struct { TST_HEAD hd; TST_ISWALNUM_REC rec[ 300 ]; } TST_ISWALNUM; +typedef struct { wint_t wc; } TIN_ISWALPHA_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWALPHA_REC; typedef struct { TIN_ISWALPHA_REC input; TEX_ISWALPHA_REC expect; int is_last; } TST_ISWALPHA_REC; typedef struct { TST_HEAD hd; TST_ISWALPHA_REC rec[ 300 ]; } TST_ISWALPHA; +typedef struct { wint_t wc; } TIN_ISWCNTRL_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWCNTRL_REC; typedef struct { TIN_ISWCNTRL_REC input; TEX_ISWCNTRL_REC expect; int is_last; } TST_ISWCNTRL_REC; typedef struct { TST_HEAD hd; TST_ISWCNTRL_REC rec[ 300 ]; } TST_ISWCNTRL; +typedef struct { wint_t wc; } TIN_ISWDIGIT_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWDIGIT_REC; typedef struct { TIN_ISWDIGIT_REC input; TEX_ISWDIGIT_REC expect; int is_last; } TST_ISWDIGIT_REC; typedef struct { TST_HEAD hd; TST_ISWDIGIT_REC rec[ 300 ]; } TST_ISWDIGIT; +typedef struct { wint_t wc; } TIN_ISWGRAPH_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWGRAPH_REC; typedef struct { TIN_ISWGRAPH_REC input; TEX_ISWGRAPH_REC expect; int is_last; } TST_ISWGRAPH_REC; typedef struct { TST_HEAD hd; TST_ISWGRAPH_REC rec[ 300 ]; } TST_ISWGRAPH; +typedef struct { wint_t wc; } TIN_ISWLOWER_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWLOWER_REC; typedef struct { TIN_ISWLOWER_REC input; TEX_ISWLOWER_REC expect; int is_last; } TST_ISWLOWER_REC; typedef struct { TST_HEAD hd; TST_ISWLOWER_REC rec[ 300 ]; } TST_ISWLOWER; +typedef struct { wint_t wc; } TIN_ISWPRINT_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWPRINT_REC; typedef struct { TIN_ISWPRINT_REC input; TEX_ISWPRINT_REC expect; int is_last; } TST_ISWPRINT_REC; typedef struct { TST_HEAD hd; TST_ISWPRINT_REC rec[ 300 ]; } TST_ISWPRINT; +typedef struct { wint_t wc; } TIN_ISWPUNCT_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWPUNCT_REC; typedef struct { TIN_ISWPUNCT_REC input; TEX_ISWPUNCT_REC expect; int is_last; } TST_ISWPUNCT_REC; typedef struct { TST_HEAD hd; TST_ISWPUNCT_REC rec[ 300 ]; } TST_ISWPUNCT; +typedef struct { wint_t wc; } TIN_ISWSPACE_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWSPACE_REC; typedef struct { TIN_ISWSPACE_REC input; TEX_ISWSPACE_REC expect; int is_last; } TST_ISWSPACE_REC; typedef struct { TST_HEAD hd; TST_ISWSPACE_REC rec[ 300 ]; } TST_ISWSPACE; +typedef struct { wint_t wc; } TIN_ISWUPPER_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWUPPER_REC; typedef struct { TIN_ISWUPPER_REC input; TEX_ISWUPPER_REC expect; int is_last; } TST_ISWUPPER_REC; typedef struct { TST_HEAD hd; TST_ISWUPPER_REC rec[ 300 ]; } TST_ISWUPPER; +typedef struct { wint_t wc; } TIN_ISWXDIGIT_REC; typedef struct { int err_val; int ret_flg; int ret_val; } TEX_ISWXDIGIT_REC; typedef struct { TIN_ISWXDIGIT_REC input; TEX_ISWXDIGIT_REC expect; int is_last; } TST_ISWXDIGIT_REC; typedef struct { TST_HEAD hd; TST_ISWXDIGIT_REC rec[ 300 ]; } TST_ISWXDIGIT; + +typedef struct +{ + wint_t wc; + const char *ts; +} +TIN_ISWCTYPE_REC; + +typedef +struct { int err_val; int ret_flg; int ret_val; } + TEX_ISWCTYPE_REC; +typedef struct { TIN_ISWCTYPE_REC input; TEX_ISWCTYPE_REC expect; int is_last; } TST_ISWCTYPE_REC; typedef struct { TST_HEAD hd; TST_ISWCTYPE_REC rec[ 300 ]; } TST_ISWCTYPE; + + + + + + +typedef struct +{ + char s_flg; + char s[24]; + size_t n; +} +TIN_MBLEN_REC; + +typedef struct { int err_val; int ret_flg; int ret_val; } TEX_MBLEN_REC; +typedef struct { TIN_MBLEN_REC input; TEX_MBLEN_REC expect; int is_last; } TST_MBLEN_REC; typedef struct { TST_HEAD hd; TST_MBLEN_REC rec[ 300 ]; } TST_MBLEN; + + + + + + +typedef struct +{ + struct + { + int s_flg; + char s[24]; + size_t n; + int t_flg; + int t_init; + } + seq[3]; +} +TIN_MBRLEN_REC; + +typedef struct { struct { int err_val; int ret_flg; size_t ret_val; } seq[ 3 ]; } TEX_MBRLEN_REC; +typedef struct { TIN_MBRLEN_REC input; TEX_MBRLEN_REC expect; int is_last; } TST_MBRLEN_REC; typedef struct { TST_HEAD hd; TST_MBRLEN_REC rec[ 300 ]; } TST_MBRLEN; + + + + + + + +typedef struct +{ + struct + { + int w_flg; + int s_flg; + char s[24]; + size_t n; + int t_flg; + int t_init; + } + seq[3]; +} +TIN_MBRTOWC_REC; + +typedef struct +{ + struct + { + int err_val; int ret_flg; size_t ret_val; + wchar_t wc; + } + seq[3]; +} +TEX_MBRTOWC_REC; + +typedef struct { TIN_MBRTOWC_REC input; TEX_MBRTOWC_REC expect; int is_last; } TST_MBRTOWC_REC; typedef struct { TST_HEAD hd; TST_MBRTOWC_REC rec[ 300 ]; } TST_MBRTOWC; + + + + + + + +typedef struct +{ + struct + { + int w_flg; + char s[24]; + size_t n; + int t_flg; + int t_init; + } + seq[3]; +} +TIN_MBSRTOWCS_REC; + +typedef struct +{ + struct + { + int err_val; int ret_flg; size_t ret_val; + wchar_t ws[12]; + } + seq[3]; +} +TEX_MBSRTOWCS_REC; + +typedef struct { TIN_MBSRTOWCS_REC input; TEX_MBSRTOWCS_REC expect; int is_last; } TST_MBSRTOWCS_REC; typedef struct { TST_HEAD hd; TST_MBSRTOWCS_REC rec[ 300 ]; } TST_MBSRTOWCS; + + + + + + +typedef struct +{ + struct + { + int w_flg; + int s_flg; + const char *s; + size_t n; + } + seq[3]; +} +TIN_MBSTOWCS_REC; + +typedef TEX_MBSRTOWCS_REC TEX_MBSTOWCS_REC; + +typedef struct { TIN_MBSTOWCS_REC input; TEX_MBSTOWCS_REC expect; int is_last; } TST_MBSTOWCS_REC; typedef struct { TST_HEAD hd; TST_MBSTOWCS_REC rec[ 300 ]; } TST_MBSTOWCS; + + + + + + +typedef TIN_MBSTOWCS_REC TIN_MBTOWC_REC; + + +typedef struct +{ + struct + { + int err_val; int ret_flg; int ret_val; + wchar_t wc; + } + seq[3]; +} +TEX_MBTOWC_REC; + +typedef struct { TIN_MBTOWC_REC input; TEX_MBTOWC_REC expect; int is_last; } TST_MBTOWC_REC; typedef struct { TST_HEAD hd; TST_MBTOWC_REC rec[ 300 ]; } TST_MBTOWC; + + + + + + +typedef struct +{ + char s1[24]; + char s2[24]; +} +TIN_STRCOLL_REC; + +typedef struct { int err_val; int ret_flg; int ret_val; } TEX_STRCOLL_REC; +typedef struct { TIN_STRCOLL_REC input; TEX_STRCOLL_REC expect; int is_last; } TST_STRCOLL_REC; typedef struct { TST_HEAD hd; TST_STRCOLL_REC rec[ 300 ]; } TST_STRCOLL; + + + + + + + +typedef struct +{ + int nbytes; + char fmt[16]; + double val; +} +TIN_STRFMON_REC; + +typedef struct +{ + int err_val; int ret_flg; size_t ret_val; + char mon[64]; +} +TEX_STRFMON_REC; + +typedef struct { TIN_STRFMON_REC input; TEX_STRFMON_REC expect; int is_last; } TST_STRFMON_REC; typedef struct { TST_HEAD hd; TST_STRFMON_REC rec[ 300 ]; } TST_STRFMON; + + + + + + +typedef struct +{ + char org1[24]; + char org2[24]; + size_t n1, n2; +} +TIN_STRXFRM_REC; + +typedef struct { int err_val; int ret_flg; size_t ret_val; } TEX_STRXFRM_REC; +typedef struct { TIN_STRXFRM_REC input; TEX_STRXFRM_REC expect; int is_last; } TST_STRXFRM_REC; typedef struct { TST_HEAD hd; TST_STRXFRM_REC rec[ 300 ]; } TST_STRXFRM; + + + + + + +typedef struct +{ + wchar_t ws[12 * 3]; + wchar_t fmt[12 * 3]; + int wch; +} +TIN_SWSCANF_REC; + +typedef struct +{ + int err_val; int ret_flg; int ret_val; + int val_int; + unsigned val_uns; + float val_flt; + int val_c; + char val_s[24 * 2]; + wchar_t val_S[12 * 2]; +} +TEX_SWSCANF_REC; + +typedef struct { TIN_SWSCANF_REC input; TEX_SWSCANF_REC expect; int is_last; } TST_SWSCANF_REC; typedef struct { TST_HEAD hd; TST_SWSCANF_REC rec[ 300 ]; } TST_SWSCANF; + + + + + + +typedef TIN_ISWCTYPE_REC TIN_TOWCTRANS_REC; +typedef struct { int err_val; int ret_flg; wint_t ret_val; } TEX_TOWCTRANS_REC; +typedef struct { TIN_TOWCTRANS_REC input; TEX_TOWCTRANS_REC expect; int is_last; } TST_TOWCTRANS_REC; typedef struct { TST_HEAD hd; TST_TOWCTRANS_REC rec[ 300 ]; } TST_TOWCTRANS; + + + + + + +typedef struct { wint_t wc; } TIN_TOWLOWER_REC; typedef struct { int err_val; int ret_flg; wint_t ret_val; } TEX_TOWLOWER_REC; typedef struct { TIN_TOWLOWER_REC input; TEX_TOWLOWER_REC expect; int is_last; } TST_TOWLOWER_REC; typedef struct { TST_HEAD hd; TST_TOWLOWER_REC rec[ 300 ]; } TST_TOWLOWER; +typedef struct { wint_t wc; } TIN_TOWUPPER_REC; typedef struct { int err_val; int ret_flg; wint_t ret_val; } TEX_TOWUPPER_REC; typedef struct { TIN_TOWUPPER_REC input; TEX_TOWUPPER_REC expect; int is_last; } TST_TOWUPPER_REC; typedef struct { TST_HEAD hd; TST_TOWUPPER_REC rec[ 300 ]; } TST_TOWUPPER; + + + + + + +typedef struct +{ + int s_flg; + wchar_t wc; + int t_flg; + int t_init; +} +TIN_WCRTOMB_REC; + +typedef struct +{ + int err_val; int ret_flg; wchar_t ret_val; + char s[24]; +} +TEX_WCRTOMB_REC; + +typedef struct { TIN_WCRTOMB_REC input; TEX_WCRTOMB_REC expect; int is_last; } TST_WCRTOMB_REC; typedef struct { TST_HEAD hd; TST_WCRTOMB_REC rec[ 300 ]; } TST_WCRTOMB; + + + + + + +typedef struct +{ + wchar_t ws1[12]; + wchar_t ws2[12]; +} +TIN_WCSCAT_REC; + +typedef struct +{ + int err_val; int ret_flg; wchar_t * ret_val; + wchar_t ws[12]; +} +TEX_WCSCAT_REC; + +typedef struct { TIN_WCSCAT_REC input; TEX_WCSCAT_REC expect; int is_last; } TST_WCSCAT_REC; typedef struct { TST_HEAD hd; TST_WCSCAT_REC rec[ 300 ]; } TST_WCSCAT; + + + + + + +typedef struct +{ + wchar_t ws[12]; + wchar_t wc; +} +TIN_WCSCHR_REC; + +typedef struct { int err_val; int ret_flg; wchar_t * ret_val; } TEX_WCSCHR_REC; +typedef struct { TIN_WCSCHR_REC input; TEX_WCSCHR_REC expect; int is_last; } TST_WCSCHR_REC; typedef struct { TST_HEAD hd; TST_WCSCHR_REC rec[ 300 ]; } TST_WCSCHR; + + + + + + +typedef TIN_WCSCAT_REC TIN_WCSCMP_REC; +typedef struct { int err_val; int ret_flg; int ret_val; } TEX_WCSCMP_REC; +typedef struct { TIN_WCSCMP_REC input; TEX_WCSCMP_REC expect; int is_last; } TST_WCSCMP_REC; typedef struct { TST_HEAD hd; TST_WCSCMP_REC rec[ 300 ]; } TST_WCSCMP; + + + + + + +typedef TIN_WCSCMP_REC TIN_WCSCOLL_REC; +typedef struct +{ + int err_val; int ret_flg; int ret_val; + int cmp_flg; +} +TEX_WCSCOLL_REC; +typedef struct { TIN_WCSCOLL_REC input; TEX_WCSCOLL_REC expect; int is_last; } TST_WCSCOLL_REC; typedef struct { TST_HEAD hd; TST_WCSCOLL_REC rec[ 300 ]; } TST_WCSCOLL; + + + + + + +typedef struct +{ + wchar_t ws[12]; +} +TIN_WCSCPY_REC; + +typedef TEX_WCSCAT_REC TEX_WCSCPY_REC; +typedef struct { TIN_WCSCPY_REC input; TEX_WCSCPY_REC expect; int is_last; } TST_WCSCPY_REC; typedef struct { TST_HEAD hd; TST_WCSCPY_REC rec[ 300 ]; } TST_WCSCPY; + + + + + + +typedef TIN_WCSCAT_REC TIN_WCSCSPN_REC; +typedef struct { int err_val; int ret_flg; size_t ret_val; } TEX_WCSCSPN_REC; +typedef struct { TIN_WCSCSPN_REC input; TEX_WCSCSPN_REC expect; int is_last; } TST_WCSCSPN_REC; typedef struct { TST_HEAD hd; TST_WCSCSPN_REC rec[ 300 ]; } TST_WCSCSPN; + + + + + + +typedef TIN_WCSCPY_REC TIN_WCSLEN_REC; +typedef struct { int err_val; int ret_flg; size_t ret_val; } TEX_WCSLEN_REC; +typedef struct { TIN_WCSLEN_REC input; TEX_WCSLEN_REC expect; int is_last; } TST_WCSLEN_REC; typedef struct { TST_HEAD hd; TST_WCSLEN_REC rec[ 300 ]; } TST_WCSLEN; + + + + + + + +typedef struct +{ + wchar_t ws1[12]; + wchar_t ws2[12]; + size_t n; +} +TIN_WCSNCAT_REC; + +typedef TEX_WCSCAT_REC TEX_WCSNCAT_REC; +typedef struct { TIN_WCSNCAT_REC input; TEX_WCSNCAT_REC expect; int is_last; } TST_WCSNCAT_REC; typedef struct { TST_HEAD hd; TST_WCSNCAT_REC rec[ 300 ]; } TST_WCSNCAT; + + + + + + + +typedef TIN_WCSNCAT_REC TIN_WCSNCMP_REC; +typedef struct { int err_val; int ret_flg; int ret_val; } TEX_WCSNCMP_REC; +typedef struct { TIN_WCSNCMP_REC input; TEX_WCSNCMP_REC expect; int is_last; } TST_WCSNCMP_REC; typedef struct { TST_HEAD hd; TST_WCSNCMP_REC rec[ 300 ]; } TST_WCSNCMP; + + + + + + + +typedef struct +{ + wchar_t ws[12]; + size_t n; +} +TIN_WCSNCPY_REC; + +typedef TEX_WCSCPY_REC TEX_WCSNCPY_REC; +typedef struct { TIN_WCSNCPY_REC input; TEX_WCSNCPY_REC expect; int is_last; } TST_WCSNCPY_REC; typedef struct { TST_HEAD hd; TST_WCSNCPY_REC rec[ 300 ]; } TST_WCSNCPY; + + + + + + +typedef TIN_WCSCSPN_REC TIN_WCSPBRK_REC; + +typedef struct +{ + int err_val; int ret_flg; wchar_t * ret_val; + wchar_t wc; +} +TEX_WCSPBRK_REC; + +typedef struct { TIN_WCSPBRK_REC input; TEX_WCSPBRK_REC expect; int is_last; } TST_WCSPBRK_REC; typedef struct { TST_HEAD hd; TST_WCSPBRK_REC rec[ 300 ]; } TST_WCSPBRK; + + + + + + + +typedef struct +{ + int s_flg; + int w_flg; + wchar_t ws[12]; + size_t n; + int t_flg; + int t_init; +} +TIN_WCSRTOMBS_REC; + +typedef struct +{ + int err_val; int ret_flg; size_t ret_val; + char s[24]; +} +TEX_WCSRTOMBS_REC; + +typedef struct { TIN_WCSRTOMBS_REC input; TEX_WCSRTOMBS_REC expect; int is_last; } TST_WCSRTOMBS_REC; typedef struct { TST_HEAD hd; TST_WCSRTOMBS_REC rec[ 300 ]; } TST_WCSRTOMBS; + + + + + + +typedef TIN_WCSCSPN_REC TIN_WCSSPN_REC; +typedef TEX_WCSCSPN_REC TEX_WCSSPN_REC; +typedef struct { TIN_WCSSPN_REC input; TEX_WCSSPN_REC expect; int is_last; } TST_WCSSPN_REC; typedef struct { TST_HEAD hd; TST_WCSSPN_REC rec[ 300 ]; } TST_WCSSPN; + + + + + + +typedef TIN_WCSCSPN_REC TIN_WCSSTR_REC; +typedef struct { int err_val; int ret_flg; wchar_t * ret_val; } TEX_WCSSTR_REC; +typedef struct { TIN_WCSSTR_REC input; TEX_WCSSTR_REC expect; int is_last; } TST_WCSSTR_REC; typedef struct { TST_HEAD hd; TST_WCSSTR_REC rec[ 300 ]; } TST_WCSSTR; + + + + + + +typedef struct +{ + wchar_t np[12]; +} +TIN_WCSTOD_REC; + +typedef struct +{ + int err_val; int ret_flg; double ret_val; + double val; + wchar_t fwc; +} +TEX_WCSTOD_REC; + +typedef struct { TIN_WCSTOD_REC input; TEX_WCSTOD_REC expect; int is_last; } TST_WCSTOD_REC; typedef struct { TST_HEAD hd; TST_WCSTOD_REC rec[ 300 ]; } TST_WCSTOD; + + + + + + + +typedef struct +{ + struct + { + int w_flg; + wchar_t ws[12]; + wchar_t dt[12]; + } + seq[3]; +} +TIN_WCSTOK_REC; + +typedef struct +{ + struct + { + int err_val; int ret_flg; wchar_t * ret_val; + wchar_t ws[12]; + } + seq[3]; +} +TEX_WCSTOK_REC; + +typedef struct { TIN_WCSTOK_REC input; TEX_WCSTOK_REC expect; int is_last; } TST_WCSTOK_REC; typedef struct { TST_HEAD hd; TST_WCSTOK_REC rec[ 300 ]; } TST_WCSTOK; + + + + + + +typedef struct +{ + int s_flg; + int w_flg; + wchar_t ws[12]; + size_t n; +} +TIN_WCSTOMBS_REC; + +typedef struct +{ + int err_val; int ret_flg; size_t ret_val; + char s[24]; +} +TEX_WCSTOMBS_REC; + +typedef struct { TIN_WCSTOMBS_REC input; TEX_WCSTOMBS_REC expect; int is_last; } TST_WCSTOMBS_REC; typedef struct { TST_HEAD hd; TST_WCSTOMBS_REC rec[ 300 ]; } TST_WCSTOMBS; + + + + + + +typedef TIN_WCSNCPY_REC TIN_WCSWIDTH_REC; +typedef struct { int err_val; int ret_flg; int ret_val; } TEX_WCSWIDTH_REC; +typedef struct { TIN_WCSWIDTH_REC input; TEX_WCSWIDTH_REC expect; int is_last; } TST_WCSWIDTH_REC; typedef struct { TST_HEAD hd; TST_WCSWIDTH_REC rec[ 300 ]; } TST_WCSWIDTH; + + + + + + +typedef struct +{ + wchar_t org1[12]; + wchar_t org2[12]; + int n1, n2; +} +TIN_WCSXFRM_REC; + +typedef struct { int err_val; int ret_flg; size_t ret_val; } TEX_WCSXFRM_REC; +typedef struct { TIN_WCSXFRM_REC input; TEX_WCSXFRM_REC expect; int is_last; } TST_WCSXFRM_REC; typedef struct { TST_HEAD hd; TST_WCSXFRM_REC rec[ 300 ]; } TST_WCSXFRM; + + + + + + +typedef struct +{ + wint_t wc; +} +TIN_WCTOB_REC; + +typedef struct { int err_val; int ret_flg; int ret_val; } TEX_WCTOB_REC; +typedef struct { TIN_WCTOB_REC input; TEX_WCTOB_REC expect; int is_last; } TST_WCTOB_REC; typedef struct { TST_HEAD hd; TST_WCTOB_REC rec[ 300 ]; } TST_WCTOB; + + + + + + +typedef struct +{ + int s_flg; + wchar_t wc; +} +TIN_WCTOMB_REC; + +typedef struct +{ + int err_val; int ret_flg; int ret_val; + char s[24]; +} +TEX_WCTOMB_REC; + +typedef struct { TIN_WCTOMB_REC input; TEX_WCTOMB_REC expect; int is_last; } TST_WCTOMB_REC; typedef struct { TST_HEAD hd; TST_WCTOMB_REC rec[ 300 ]; } TST_WCTOMB; + + + + + + +typedef struct +{ + char class[24]; +} +TIN_WCTRANS_REC; + +typedef struct { int err_val; int ret_flg; wctrans_t ret_val; } TEX_WCTRANS_REC; +typedef struct { TIN_WCTRANS_REC input; TEX_WCTRANS_REC expect; int is_last; } TST_WCTRANS_REC; typedef struct { TST_HEAD hd; TST_WCTRANS_REC rec[ 300 ]; } TST_WCTRANS; + + + + + + +typedef TIN_WCTRANS_REC TIN_WCTYPE_REC; +typedef struct { int err_val; int ret_flg; wctype_t ret_val; } TEX_WCTYPE_REC; +typedef struct { TIN_WCTYPE_REC input; TEX_WCTYPE_REC expect; int is_last; } TST_WCTYPE_REC; typedef struct { TST_HEAD hd; TST_WCTYPE_REC rec[ 300 ]; } TST_WCTYPE; + + + + + + +typedef struct +{ + wchar_t wc; +} +TIN_WCWIDTH_REC; + +typedef struct { int err_val; int ret_flg; int ret_val; } TEX_WCWIDTH_REC; +typedef struct { TIN_WCWIDTH_REC input; TEX_WCWIDTH_REC expect; int is_last; } TST_WCWIDTH_REC; typedef struct { TST_HEAD hd; TST_WCWIDTH_REC rec[ 300 ]; } TST_WCWIDTH; +# 18 "tsp_common.c" 2 +# 1 "tgn_locdef.h" 1 + +#define TGN_LOCDEF_H + + + + +#define TST_LOC_C "C" + + +#define TST_LOC_de "de_DE.ISO-8859-1" + + + +#define TST_LOC_enUS "en_US.ANSI_X3.4-1968" + + + + + + +#define TST_LOC_eucJP "ja_JP.EUC-JP" + + + + + + +#define TST_LOC_de_UTF8 "de_DE.UTF-8" + + +#define TST_LOC_end "lastEntry" +# 19 "tsp_common.c" 2 + + +int +main (int argc, char *argv[]) +{ + int ret; + int debug; + + debug = argc > 1 ? atoi (argv[1]) : 0; + + if (debug) + { + fprintf (stdout, "\nTST_MBWC ===> %s ...\n", argv[0]); + } + ret = tst_mbrlen (stdout, debug); + + return (ret != 0); +} + +#define MAX_RESULT_REC 132 +char result_rec[132]; + + +int +result (FILE * fp, char res, const char *func, const char *loc, int rec_no, + int seq_no, int case_no, const char *msg) +{ + if (fp == ((void *)0) + || strlen (func) + strlen (loc) + strlen (msg) + 32 > 132) + { + fprintf (stderr, + "Warning: result(): can't write the result: %s:%s:%d:%d:%s\n", + func, loc, rec_no, case_no, msg); + return 0; + } + + sprintf (result_rec, "%s:%s:%d:%d:%d:%c:%s\n", func, loc, rec_no, seq_no, + case_no, res, msg); + + if (fputs (result_rec, fp) == (-1)) + { + return 0; + } + + return 1; +} +# 8 "tst_mbrlen.c" 2 +# 1 "dat_mbrlen.c" 1 +# 19 "dat_mbrlen.c" +TST_MBRLEN tst_mbrlen_loc [] = { + { + { 14, "de_DE.ISO-8859-1" }, + { + { + { + { + { 1, "", 0, 0, 0 }, + { 1, "", 1, 0, 0 }, + { 1, "\300", 99, 0, 0 }, + } + }, + { + { + { 0, 1, 0, }, + { 0, 1, 0, }, + { 0, 1, 1, }, + } + } + }, + { + { + { + { 1, "\300\001", 0, 0, 0 }, + { 1, "\300\001", 1, 0, 0 }, + { 1, "\317\001", 99, 0, 0 }, + } + }, + { + { + { 0, 1, 0, }, + { 0, 1, 1, }, + { 0, 1, 1, }, + } + } + }, + { .is_last = 1 } + } + }, + { + { 14, "en_US.ANSI_X3.4-1968" }, + { + { + { + { + { 1, "A", 0, 0, 0 }, + { 1, "A", 1, 0, 0 }, + { 1, "A", 99, 0, 0 }, + } + }, + { + { + { 0, 1, 0, }, + { 0, 1, 1, }, + { 0, 1, 1, }, + } + } + }, + { + { + { + { 1, "\317\001", 0, 1, 0 }, + { 1, "\317\001", 1, 1, 0 }, + { 1, "\317\001", 99, 1, 0 }, + } + }, + { + { + { 0, 1, 0, }, + { 84, 1, -1, }, + { 84, 1, -1, }, + } + } + }, + { .is_last = 1 } + } + }, + { + { 14, "ja_JP.EUC-JP" }, + { + { + { + { + { 1, "\317\302", 1, 1, 1 }, + { 0, "", 0, 1, 0 }, + { 1, "\317\302", 99, 1, 1 }, + } + }, + { + { + { 0, 1, -2, }, + { 0, 1, -1, }, + { 0, 1, 2, }, + } + } + }, + { + { + { + { 1, "\317", 1, 1, 0 }, + { 1, "\302", 1, 1, 0 }, + { 1, "\317\302", 99, 0, 0 }, + } + }, + { + { + { 0, 1, -2, }, + + + + + + { 0, 1, +1, }, + + { 0, 1, 2, }, + } + } + }, + { + { + { + { 1, "\216\217", 0, 0, 0 }, + { 1, "\216\217", 1, 0, 0 }, + { 1, "\216\217", 99, 0, 0 }, + } + }, + { + { + { 0, 1, 0, }, + { 0, 1, -2, }, + { 84, 1, -1, }, + } + } + }, + { .is_last = 1 } + } + }, + { + { 14, "lastEntry" } + } +}; +# 9 "tst_mbrlen.c" 2 + + +int +tst_mbrlen (FILE * fp, int debug_flg) +{ + int loc, rec, err_count = 0; int warn_count __attribute__ ((unused)); int func_id, seq_num = 0; const char *locale; int err_exp, ret_flg; int errno_save = 0; size_t ret_exp; size_t ret; + char s_flg; + const char *s_in; + size_t n; + char t_flg; + char t_ini; + static mbstate_t s = { 0 }; + mbstate_t *ps; + + for (loc = 0; strcmp (tst_mbrlen_loc[ loc ].hd.locale, "lastEntry"); ++loc) + { + func_id = tst_mbrlen_loc[ loc ].hd.func_id; locale = tst_mbrlen_loc[ loc ].hd.locale; if (setlocale (6, locale) == ((void *)0)) { fprintf (stderr, "Warning : can't set locale: %s\nskipping ...\n", locale); result (fp, 'L', "mbrlen", locale, 0, 0, 0, "can't set locale"); ++err_count; continue; }; + for (rec=0; !tst_mbrlen_loc[ loc ].rec[ rec ].is_last; ++rec) + { + if (mbrlen (((void *)0), 0, &s) != 0) + { + err_count++; + result (fp, ('F'), ("mbrlen"), locale, rec+1, seq_num+1, (3), ("Initialization (external mbstate object) failed " "- skipped this test case.")); + + + continue; + } + + for (seq_num=0; seq_num < 3; seq_num++) + { + err_exp = tst_mbrlen_loc[ loc ].rec[ rec ].expect.seq[ seq_num ].err_val; ret_flg = tst_mbrlen_loc[ loc ].rec[ rec ].expect.seq[ seq_num ].ret_flg; ret_exp = tst_mbrlen_loc[ loc ].rec[ rec ].expect.seq[ seq_num ].ret_val; + s_flg = tst_mbrlen_loc[ loc ].rec[ rec ].input.seq[ seq_num ].s_flg; + s_in = tst_mbrlen_loc[ loc ].rec[ rec ].input.seq[ seq_num ].s; + n = tst_mbrlen_loc[ loc ].rec[ rec ].input.seq[ seq_num ].n; + t_flg = tst_mbrlen_loc[ loc ].rec[ rec ].input.seq[ seq_num ].t_flg; + t_ini = tst_mbrlen_loc[ loc ].rec[ rec ].input.seq[ seq_num ].t_init; + if (s_flg == 0) + { + s_in = ((void *)0); + } + + + fprintf(stdout, "n = %d.\n", n); + + if (n == 99) + { + n = (_stdlib_mb_cur_max ()); + } + + ps = (t_flg == 0) ? ((void *)0) : &s; + + if (t_ini != 0) + { + memset (&s, 0, sizeof (s)); + mbrlen (((void *)0), 0, ((void *)0)); + } + + __libc_errno = 0; + ret = mbrlen (s_in, n, ps); + errno_save = __libc_errno; + + + fprintf(stdout, "s_in = %c, n = %d, t_ini = %d, s_flg = %d, t_flg = %d, MB_CUR_MAX = %d.\n", + + s_in, n, t_ini, s_flg, t_flg, (_stdlib_mb_cur_max ())); + + if (debug_flg) + { + fprintf (stdout, "mbrlen() [ %s : %d : %d ] ret = %zd\n", + locale, rec + 1, seq_num + 1, ret); + fprintf (stdout, " errno = %d\n", errno_save); + } + + if (err_exp != 0) { if (errno_save == err_exp) { result (fp, 'S', "mbrlen", locale, rec+1, seq_num+1, 1, "PASSED"); } else { err_count++; result (fp, 'F', "mbrlen", locale, rec+1, seq_num+1, 1, "the value of errno is different from an expected value"); } } if (ret_flg == 1) { if (ret == ret_exp) { result (fp, 'S', "mbrlen", locale, rec+1, seq_num+1, 2, "PASSED"); } else { err_count++; result (fp, 'F', "mbrlen", locale, rec+1, seq_num+1, 2, "the return value is different from an expected value"); } } else + { + }; + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_mbrlen.s b/test/locale-mbwc/tst_mbrlen.s new file mode 100644 index 000000000..1d5ec1c1a --- /dev/null +++ b/test/locale-mbwc/tst_mbrlen.s @@ -0,0 +1,8666 @@ + .file "tst_mbrlen.c" + .text + .little + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .section .debug_info,"",@progbits +.Ldebug_info0: + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_macinfo,"",@progbits +.Ldebug_macinfo0: + .text +.Ltext0: + .section .debug_macinfo + .byte 0x3 + .uleb128 0x0 + .file 1 "tst_mbrlen.c" + .uleb128 0x1 + .byte 0x1 + .uleb128 0x1 + .string "__STDC__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__STDC_HOSTED__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__GNUC__ 4" + .byte 0x1 + .uleb128 0x1 + .string "__GNUC_MINOR__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__GNUC_PATCHLEVEL__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__SIZE_TYPE__ unsigned int" + .byte 0x1 + .uleb128 0x1 + .string "__PTRDIFF_TYPE__ int" + .byte 0x1 + .uleb128 0x1 + .string "__WCHAR_TYPE__ long int" + .byte 0x1 + .uleb128 0x1 + .string "__WINT_TYPE__ unsigned int" + .byte 0x1 + .uleb128 0x1 + .string "__INTMAX_TYPE__ long long int" + .byte 0x1 + .uleb128 0x1 + .string "__UINTMAX_TYPE__ long long unsigned int" + .byte 0x1 + .uleb128 0x1 + .string "__GXX_ABI_VERSION 1002" + .byte 0x1 + .uleb128 0x1 + .string "__SCHAR_MAX__ 127" + .byte 0x1 + .uleb128 0x1 + .string "__SHRT_MAX__ 32767" + .byte 0x1 + .uleb128 0x1 + .string "__INT_MAX__ 2147483647" + .byte 0x1 + .uleb128 0x1 + .string "__LONG_MAX__ 2147483647L" + .byte 0x1 + .uleb128 0x1 + .string "__LONG_LONG_MAX__ 9223372036854775807LL" + .byte 0x1 + .uleb128 0x1 + .string "__WCHAR_MAX__ 2147483647" + .byte 0x1 + .uleb128 0x1 + .string "__CHAR_BIT__ 8" + .byte 0x1 + .uleb128 0x1 + .string "__INTMAX_MAX__ 9223372036854775807LL" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_EVAL_METHOD__ 0" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_RADIX__ 2" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_MANT_DIG__ 24" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_DIG__ 6" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_MIN_EXP__ (-125)" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_MIN_10_EXP__ (-37)" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_MAX_EXP__ 128" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_MAX_10_EXP__ 38" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_MAX__ 3.40282347e+38F" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_MIN__ 1.17549435e-38F" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_EPSILON__ 1.19209290e-7F" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_DENORM_MIN__ 1.40129846e-45F" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_HAS_INFINITY__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__FLT_HAS_QUIET_NAN__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__DBL_MANT_DIG__ 53" + .byte 0x1 + .uleb128 0x1 + .string "__DBL_DIG__ 15" + .byte 0x1 + .uleb128 0x1 + .string "__DBL_MIN_EXP__ (-1021)" + .byte 0x1 + .uleb128 0x1 + .string "__DBL_MIN_10_EXP__ (-307)" + .byte 0x1 + .uleb128 0x1 + .string "__DBL_MAX_EXP__ 1024" + .byte 0x1 + .uleb128 0x1 + .string "__DBL_MAX_10_EXP__ 308" + .byte 0x1 + .uleb128 0x1 + .string "__DBL_MAX__ 1.7976931348623157e+308" + .byte 0x1 + .uleb128 0x1 + .string "__DBL_MIN__ 2.2250738585072014e-308" + .byte 0x1 + .uleb128 0x1 + .string "__DBL_EPSILON__ 2.2204460492503131e-16" + .byte 0x1 + .uleb128 0x1 + .string "__DBL_DENORM_MIN__ 4.9406564584124654e-324" + .byte 0x1 + .uleb128 0x1 + .string "__DBL_HAS_INFINITY__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__DBL_HAS_QUIET_NAN__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__LDBL_MANT_DIG__ 53" + .byte 0x1 + .uleb128 0x1 + .string "__LDBL_DIG__ 15" + .byte 0x1 + .uleb128 0x1 + .string "__LDBL_MIN_EXP__ (-1021)" + .byte 0x1 + .uleb128 0x1 + .string "__LDBL_MIN_10_EXP__ (-307)" + .byte 0x1 + .uleb128 0x1 + .string "__LDBL_MAX_EXP__ 1024" + .byte 0x1 + .uleb128 0x1 + .string "__LDBL_MAX_10_EXP__ 308" + .byte 0x1 + .uleb128 0x1 + .string "__DECIMAL_DIG__ 17" + .byte 0x1 + .uleb128 0x1 + .string "__LDBL_MAX__ 1.7976931348623157e+308L" + .byte 0x1 + .uleb128 0x1 + .string "__LDBL_MIN__ 2.2250738585072014e-308L" + .byte 0x1 + .uleb128 0x1 + .string "__LDBL_EPSILON__ 2.2204460492503131e-16L" + .byte 0x1 + .uleb128 0x1 + .string "__LDBL_DENORM_MIN__ 4.9406564584124654e-324L" + .byte 0x1 + .uleb128 0x1 + .string "__LDBL_HAS_INFINITY__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__LDBL_HAS_QUIET_NAN__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__REGISTER_PREFIX__ " + .byte 0x1 + .uleb128 0x1 + .string "__USER_LABEL_PREFIX__ " + .byte 0x1 + .uleb128 0x1 + .string "__VERSION__ \"4.1.1 (STMicroelectronics Special) [build Jun 26 2007]\"" + .byte 0x1 + .uleb128 0x1 + .string "__NO_INLINE__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__FINITE_MATH_ONLY__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__sh__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__SH4__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__SH_FPU_ANY__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__SH_FPU_DOUBLE__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__LITTLE_ENDIAN__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__gnu_linux__ 1" + .byte 0x1 + .uleb128 0x1 + .string "__linux 1" + .byte 0x1 + .uleb128 0x1 + .string "__linux__ 1" + .byte 0x1 + .uleb128 0x1 + .string "linux 1" + .byte 0x1 + .uleb128 0x1 + .string "__unix 1" + .byte 0x1 + .uleb128 0x1 + .string "__unix__ 1" + .byte 0x1 + .uleb128 0x1 + .string "unix 1" + .byte 0x1 + .uleb128 0x1 + .string "__ELF__ 1" + .byte 0x1 + .uleb128 0x1 + .string "DEBUG 1" + .byte 0x1 + .uleb128 0x1 + .string "_GNU_SOURCE 1" + .byte 0x1 + .uleb128 0x1 + .string "__USE_GNU 1" + .byte 0x3 + .uleb128 0x2 + .file 2 "./../../include/libc-symbols.h" + .uleb128 0x2 + .byte 0x1 + .uleb128 0x17 + .string "_LIBC_SYMBOLS_H 1" + .byte 0x3 + .uleb128 0x2a + .file 3 "../../include/bits/uClibc_arch_features.h" + .uleb128 0x3 + .byte 0x1 + .uleb128 0x6 + .string "_BITS_UCLIBC_ARCH_FEATURES_H " + .byte 0x1 + .uleb128 0xc + .string "__UCLIBC_ABORT_INSTRUCTION__ \"trapa #0xff\"" + .byte 0x1 + .uleb128 0x10 + .string "__UCLIBC_MMAP_HAS_6_ARGS__ " + .byte 0x2 + .uleb128 0x13 + .string "__UCLIBC_TRUNCATE64_HAS_4_ARGS__" + .byte 0x2 + .uleb128 0x16 + .string "__UCLIBC_BROKEN_CREATE_MODULE__" + .byte 0x2 + .uleb128 0x19 + .string "__UCLIBC_HANDLE_OLDER_RLIMIT__" + .byte 0x1 + .uleb128 0x1c + .string "__UCLIBC_NO_UNDERSCORES__ " + .byte 0x1 + .uleb128 0x1f + .string "__UCLIBC_HAVE_ASM_SET_DIRECTIVE__ " + .byte 0x2 + .uleb128 0x22 + .string "__UCLIBC_ASM_GLOBAL_DIRECTIVE__" + .byte 0x1 + .uleb128 0x25 + .string "__UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__ " + .byte 0x2 + .uleb128 0x28 + .string "__UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__" + .byte 0x2 + .uleb128 0x2b + .string "__UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__" + .byte 0x1 + .uleb128 0x2e + .string "__UCLIBC_HAVE_SIGNED_ZERO__ " + .byte 0x4 + .byte 0x1 + .uleb128 0x33 + .string "_LIBC 1" + .byte 0x1 + .uleb128 0x36 + .string "_GNU_SOURCE 1" + .byte 0x1 + .uleb128 0x3d + .string "likely(x) __builtin_expect((!!(x)),1)" + .byte 0x1 + .uleb128 0x40 + .string "unlikely(x) __builtin_expect((!!(x)),0)" + .byte 0x1 + .uleb128 0x43 + .string "__LINUX_COMPILER_H " + .byte 0x1 + .uleb128 0x46 + .string "__cast__(_to) " + .byte 0x1 + .uleb128 0x49 + .string "attribute_unused __attribute__ ((unused))" + .byte 0x1 + .uleb128 0x4c + .string "attribute_noreturn __attribute__ ((__noreturn__))" + .byte 0x1 + .uleb128 0x52 + .string "IS_IN_libc 1" + .byte 0x1 + .uleb128 0x56 + .string "NO_UNDERSCORES " + .byte 0x1 + .uleb128 0x5c + .string "HAVE_ASM_SET_DIRECTIVE " + .byte 0x1 + .uleb128 0x64 + .string "ASM_GLOBAL_DIRECTIVE .global" + .byte 0x1 + .uleb128 0x68 + .string "HAVE_ASM_WEAK_DIRECTIVE " + .byte 0x2 + .uleb128 0x70 + .string "HAVE_ASM_WEAKEXT_DIRECTIVE" + .byte 0x2 + .uleb128 0x76 + .string "HAVE_ASM_GLOBAL_DOT_NAME" + .byte 0x1 + .uleb128 0x7a + .string "HAVE_WEAK_SYMBOLS " + .byte 0x2 + .uleb128 0x7d + .string "C_SYMBOL_NAME" + .byte 0x1 + .uleb128 0x80 + .string "C_SYMBOL_NAME(name) name" + .byte 0x1 + .uleb128 0x87 + .string "ASM_LINE_SEP ;" + .byte 0x1 + .uleb128 0x9a + .string "strong_alias(name,aliasname) _strong_alias(name, aliasname)" + .byte 0x1 + .uleb128 0x9b + .string "_strong_alias(name,aliasname) extern __typeof (name) aliasname __attribute__ ((alias (#name)));" + .byte 0x1 + .uleb128 0xa0 + .string "weak_function __attribute__ ((weak))" + .byte 0x1 + .uleb128 0xa1 + .string "weak_const_function __attribute__ ((weak, __const__))" + .byte 0x1 + .uleb128 0xa7 + .string "weak_alias(name,aliasname) _weak_alias (name, aliasname)" + .byte 0x1 + .uleb128 0xa8 + .string "_weak_alias(name,aliasname) extern __typeof (name) aliasname __attribute__ ((weak, alias (#name)));" + .byte 0x1 + .uleb128 0xac + .string "weak_extern(symbol) _weak_extern (weak symbol)" + .byte 0x1 + .uleb128 0xad + .string "_weak_extern(expr) _Pragma (#expr)" + .byte 0x1 + .uleb128 0x116 + .string "internal_function " + .byte 0x1 + .uleb128 0x11a + .string "__make_section_unallocated(section_string) __asm__ (\".section \" section_string \"\\n\\t.previous\");" + .byte 0x1 + .uleb128 0x122 + .string "__sec_comment \"\\n\\t#\"" + .byte 0x1 + .uleb128 0x12a + .string "link_warning(symbol,msg) __make_section_unallocated (\".gnu.warning.\" #symbol) static const char __evoke_link_warning_ ##symbol[] __attribute__ ((used, section (\".gnu.warning.\" #symbol __sec_comment))) = msg;" + .byte 0x1 + .uleb128 0x143 + .string "INTUSE(name) name" + .byte 0x1 + .uleb128 0x144 + .string "INTDEF(name) " + .byte 0x1 + .uleb128 0x145 + .string "INTVARDEF(name) " + .byte 0x1 + .uleb128 0x146 + .string "INTDEF2(name,newname) " + .byte 0x1 + .uleb128 0x147 + .string "INTVARDEF2(name,newname) " + .byte 0x1 + .uleb128 0x1a3 + .string "attribute_hidden __attribute__ ((visibility (\"hidden\")))" + .byte 0x1 + .uleb128 0x1a4 + .string "__hidden_proto_hiddenattr(attrs...) __attribute__ ((visibility (\"hidden\"), ##attrs))" + .byte 0x1 + .uleb128 0x1ac + .string "hidden_proto(name,attrs...) __hidden_proto (name, __GI_ ##name, ##attrs)" + .byte 0x1 + .uleb128 0x1ad + .string "__hidden_proto(name,internal,attrs...) extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) __hidden_proto_hiddenattr (attrs);" + .byte 0x1 + .uleb128 0x1b0 + .string "__hidden_asmname(name) __hidden_asmname1 (__USER_LABEL_PREFIX__, name)" + .byte 0x1 + .uleb128 0x1b1 + .string "__hidden_asmname1(prefix,name) __hidden_asmname2(prefix, name)" + .byte 0x1 + .uleb128 0x1b2 + .string "__hidden_asmname2(prefix,name) #prefix name" + .byte 0x1 + .uleb128 0x1b3 + .string "__hidden_ver1(local,internal,name) extern __typeof (name) __EI_ ##name __asm__(__hidden_asmname (#internal)); extern __typeof (name) __EI_ ##name __attribute__((alias (__hidden_asmname1 (,#local))))" + .byte 0x1 + .uleb128 0x1b6 + .string "hidden_def(name) __hidden_ver1(__GI_ ##name, name, name);" + .byte 0x1 + .uleb128 0x1b7 + .string "hidden_data_def(name) hidden_def(name)" + .byte 0x1 + .uleb128 0x1b8 + .string "hidden_weak(name) __hidden_ver1(__GI_ ##name, name, name) __attribute__((weak));" + .byte 0x1 + .uleb128 0x1b9 + .string "hidden_data_weak(name) hidden_weak(name)" + .byte 0x1 + .uleb128 0x203 + .string "versioned_symbol(lib,local,symbol,version) " + .byte 0x1 + .uleb128 0x204 + .string "hidden_ver(local,name) " + .byte 0x1 + .uleb128 0x205 + .string "hidden_data_ver(local,name) " + .byte 0x1 + .uleb128 0x208 + .string "libc_hidden_proto(name,attrs...) hidden_proto (name, ##attrs)" + .byte 0x1 + .uleb128 0x209 + .string "libc_hidden_def(name) hidden_def (name)" + .byte 0x1 + .uleb128 0x20a + .string "libc_hidden_weak(name) hidden_weak (name)" + .byte 0x1 + .uleb128 0x20b + .string "libc_hidden_ver(local,name) hidden_ver (local, name)" + .byte 0x1 + .uleb128 0x20c + .string "libc_hidden_data_def(name) hidden_data_def (name)" + .byte 0x1 + .uleb128 0x20d + .string "libc_hidden_data_weak(name) hidden_data_weak (name)" + .byte 0x1 + .uleb128 0x20e + .string "libc_hidden_data_ver(local,name) hidden_data_ver (local, name)" + .byte 0x1 + .uleb128 0x222 + .string "rtld_hidden_proto(name,attrs...) " + .byte 0x1 + .uleb128 0x223 + .string "rtld_hidden_def(name) " + .byte 0x1 + .uleb128 0x224 + .string "rtld_hidden_weak(name) " + .byte 0x1 + .uleb128 0x225 + .string "rtld_hidden_ver(local,name) " + .byte 0x1 + .uleb128 0x226 + .string "rtld_hidden_data_def(name) " + .byte 0x1 + .uleb128 0x227 + .string "rtld_hidden_data_weak(name) " + .byte 0x1 + .uleb128 0x228 + .string "rtld_hidden_data_ver(local,name) " + .byte 0x1 + .uleb128 0x234 + .string "libm_hidden_proto(name,attrs...) " + .byte 0x1 + .uleb128 0x235 + .string "libm_hidden_def(name) " + .byte 0x1 + .uleb128 0x236 + .string "libm_hidden_weak(name) " + .byte 0x1 + .uleb128 0x237 + .string "libm_hidden_ver(local,name) " + .byte 0x1 + .uleb128 0x238 + .string "libm_hidden_data_def(name) " + .byte 0x1 + .uleb128 0x239 + .string "libm_hidden_data_weak(name) " + .byte 0x1 + .uleb128 0x23a + .string "libm_hidden_data_ver(local,name) " + .byte 0x1 + .uleb128 0x246 + .string "libresolv_hidden_proto(name,attrs...) " + .byte 0x1 + .uleb128 0x247 + .string "libresolv_hidden_def(name) " + .byte 0x1 + .uleb128 0x248 + .string "libresolv_hidden_weak(name) " + .byte 0x1 + .uleb128 0x249 + .string "libresolv_hidden_ver(local,name) " + .byte 0x1 + .uleb128 0x24a + .string "libresolv_hidden_data_def(name) " + .byte 0x1 + .uleb128 0x24b + .string "libresolv_hidden_data_weak(name) " + .byte 0x1 + .uleb128 0x24c + .string "libresolv_hidden_data_ver(local,name) " + .byte 0x1 + .uleb128 0x258 + .string "librt_hidden_proto(name,attrs...) " + .byte 0x1 + .uleb128 0x259 + .string "librt_hidden_def(name) " + .byte 0x1 + .uleb128 0x25a + .string "librt_hidden_weak(name) " + .byte 0x1 + .uleb128 0x25b + .string "librt_hidden_ver(local,name) " + .byte 0x1 + .uleb128 0x25c + .string "librt_hidden_data_def(name) " + .byte 0x1 + .uleb128 0x25d + .string "librt_hidden_data_weak(name) " + .byte 0x1 + .uleb128 0x25e + .string "librt_hidden_data_ver(local,name) " + .byte 0x1 + .uleb128 0x26a + .string "libdl_hidden_proto(name,attrs...) " + .byte 0x1 + .uleb128 0x26b + .string "libdl_hidden_def(name) " + .byte 0x1 + .uleb128 0x26c + .string "libdl_hidden_weak(name) " + .byte 0x1 + .uleb128 0x26d + .string "libdl_hidden_ver(local,name) " + .byte 0x1 + .uleb128 0x26e + .string "libdl_hidden_data_def(name) " + .byte 0x1 + .uleb128 0x26f + .string "libdl_hidden_data_weak(name) " + .byte 0x1 + .uleb128 0x270 + .string "libdl_hidden_data_ver(local,name) " + .byte 0x1 + .uleb128 0x27c + .string "libintl_hidden_proto(name,attrs...) " + .byte 0x1 + .uleb128 0x27d + .string "libintl_hidden_def(name) " + .byte 0x1 + .uleb128 0x27e + .string "libintl_hidden_weak(name) " + .byte 0x1 + .uleb128 0x27f + .string "libintl_hidden_ver(local,name) " + .byte 0x1 + .uleb128 0x280 + .string "libintl_hidden_data_def(name) " + .byte 0x1 + .uleb128 0x281 + .string "libintl_hidden_data_weak(name) " + .byte 0x1 + .uleb128 0x282 + .string "libintl_hidden_data_ver(local,name) " + .byte 0x1 + .uleb128 0x28e + .string "libnsl_hidden_proto(name,attrs...) " + .byte 0x1 + .uleb128 0x28f + .string "libnsl_hidden_def(name) " + .byte 0x1 + .uleb128 0x290 + .string "libnsl_hidden_weak(name) " + .byte 0x1 + .uleb128 0x291 + .string "libnsl_hidden_ver(local,name) " + .byte 0x1 + .uleb128 0x292 + .string "libnsl_hidden_data_def(name) " + .byte 0x1 + .uleb128 0x293 + .string "libnsl_hidden_data_weak(name) " + .byte 0x1 + .uleb128 0x294 + .string "libnsl_hidden_data_ver(local,name) " + .byte 0x1 + .uleb128 0x2a0 + .string "libutil_hidden_proto(name,attrs...) " + .byte 0x1 + .uleb128 0x2a1 + .string "libutil_hidden_def(name) " + .byte 0x1 + .uleb128 0x2a2 + .string "libutil_hidden_weak(name) " + .byte 0x1 + .uleb128 0x2a3 + .string "libutil_hidden_ver(local,name) " + .byte 0x1 + .uleb128 0x2a4 + .string "libutil_hidden_data_def(name) " + .byte 0x1 + .uleb128 0x2a5 + .string "libutil_hidden_data_weak(name) " + .byte 0x1 + .uleb128 0x2a6 + .string "libutil_hidden_data_ver(local,name) " + .byte 0x1 + .uleb128 0x2b2 + .string "libcrypt_hidden_proto(name,attrs...) " + .byte 0x1 + .uleb128 0x2b3 + .string "libcrypt_hidden_def(name) " + .byte 0x1 + .uleb128 0x2b4 + .string "libcrypt_hidden_weak(name) " + .byte 0x1 + .uleb128 0x2b5 + .string "libcrypt_hidden_ver(local,name) " + .byte 0x1 + .uleb128 0x2b6 + .string "libcrypt_hidden_data_def(name) " + .byte 0x1 + .uleb128 0x2b7 + .string "libcrypt_hidden_data_weak(name) " + .byte 0x1 + .uleb128 0x2b8 + .string "libcrypt_hidden_data_ver(local,name) " + .byte 0x1 + .uleb128 0x2c4 + .string "libpthread_hidden_proto(name,attrs...) " + .byte 0x1 + .uleb128 0x2c5 + .string "libpthread_hidden_def(name) " + .byte 0x1 + .uleb128 0x2c6 + .string "libpthread_hidden_weak(name) " + .byte 0x1 + .uleb128 0x2c7 + .string "libpthread_hidden_ver(local,name) " + .byte 0x1 + .uleb128 0x2c8 + .string "libpthread_hidden_data_def(name) " + .byte 0x1 + .uleb128 0x2c9 + .string "libpthread_hidden_data_weak(name) " + .byte 0x1 + .uleb128 0x2ca + .string "libpthread_hidden_data_ver(local,name) " + .byte 0x4 + .byte 0x1 + .uleb128 0x5 + .string "TST_FUNCTION mbrlen" + .byte 0x3 + .uleb128 0x8 + .file 4 "tsp_common.c" + .uleb128 0x4 + .byte 0x1 + .uleb128 0x7 + .string "TST_FUNCTION_CALL(func) _TST_FUNCTION_CALL(func)" + .byte 0x1 + .uleb128 0x8 + .string "_TST_FUNCTION_CALL(func) tst ##_ ## func" + .byte 0x3 + .uleb128 0xb + .file 5 "../../include/stdio.h" + .uleb128 0x5 + .byte 0x1 + .uleb128 0x1b + .string "_STDIO_H 1" + .byte 0x3 + .uleb128 0x1d + .file 6 "../../include/features.h" + .uleb128 0x6 + .byte 0x1 + .uleb128 0x14 + .string "_FEATURES_H 1" + .byte 0x1 + .uleb128 0x19 + .string "__UCLIBC__ 1" + .byte 0x1 + .uleb128 0x22 + .string "__need_uClibc_config_h " + .byte 0x3 + .uleb128 0x24 + .file 7 "../../include/bits/uClibc_config.h" + .uleb128 0x7 + .byte 0x1 + .uleb128 0xc + .string "__UCLIBC_MAJOR__ 0" + .byte 0x1 + .uleb128 0xd + .string "__UCLIBC_MINOR__ 9" + .byte 0x1 + .uleb128 0xe + .string "__UCLIBC_SUBLEVEL__ 29" + .byte 0x2 + .uleb128 0xf + .string "__TARGET_alpha__" + .byte 0x2 + .uleb128 0x10 + .string "__TARGET_arm__" + .byte 0x2 + .uleb128 0x11 + .string "__TARGET_bfin__" + .byte 0x2 + .uleb128 0x12 + .string "__TARGET_cris__" + .byte 0x2 + .uleb128 0x13 + .string "__TARGET_e1__" + .byte 0x2 + .uleb128 0x14 + .string "__TARGET_frv__" + .byte 0x2 + .uleb128 0x15 + .string "__TARGET_h8300__" + .byte 0x2 + .uleb128 0x16 + .string "__TARGET_hppa__" + .byte 0x2 + .uleb128 0x17 + .string "__TARGET_i386__" + .byte 0x2 + .uleb128 0x18 + .string "__TARGET_i960__" + .byte 0x2 + .uleb128 0x19 + .string "__TARGET_ia64__" + .byte 0x2 + .uleb128 0x1a + .string "__TARGET_m68k__" + .byte 0x2 + .uleb128 0x1b + .string "__TARGET_microblaze__" + .byte 0x2 + .uleb128 0x1c + .string "__TARGET_mips__" + .byte 0x2 + .uleb128 0x1d + .string "__TARGET_nios__" + .byte 0x2 + .uleb128 0x1e + .string "__TARGET_nios2__" + .byte 0x2 + .uleb128 0x1f + .string "__TARGET_powerpc__" + .byte 0x1 + .uleb128 0x20 + .string "__TARGET_sh__ 1" + .byte 0x2 + .uleb128 0x21 + .string "__TARGET_sh64__" + .byte 0x2 + .uleb128 0x22 + .string "__TARGET_sparc__" + .byte 0x2 + .uleb128 0x23 + .string "__TARGET_v850__" + .byte 0x2 + .uleb128 0x24 + .string "__TARGET_vax__" + .byte 0x2 + .uleb128 0x25 + .string "__TARGET_x86_64__" + .byte 0x1 + .uleb128 0x2a + .string "__TARGET_ARCH__ \"sh\"" + .byte 0x1 + .uleb128 0x2b + .string "__FORCE_OPTIONS_FOR_ARCH__ 1" + .byte 0x2 + .uleb128 0x2c + .string "__CONFIG_SH2A__" + .byte 0x2 + .uleb128 0x2d + .string "__CONFIG_SH2__" + .byte 0x2 + .uleb128 0x2e + .string "__CONFIG_SH3__" + .byte 0x1 + .uleb128 0x2f + .string "__CONFIG_SH4__ 1" + .byte 0x1 + .uleb128 0x30 + .string "__ARCH_HAS_BWD_MEMCPY__ 1" + .byte 0x1 + .uleb128 0x31 + .string "__TARGET_SUBARCH__ \"sh4\"" + .byte 0x1 + .uleb128 0x36 + .string "__ARCH_ANY_ENDIAN__ 1" + .byte 0x1 + .uleb128 0x37 + .string "__ARCH_LITTLE_ENDIAN__ 1" + .byte 0x2 + .uleb128 0x38 + .string "__ARCH_WANTS_BIG_ENDIAN__" + .byte 0x1 + .uleb128 0x39 + .string "__ARCH_WANTS_LITTLE_ENDIAN__ 1" + .byte 0x1 + .uleb128 0x3a + .string "__ARCH_HAS_MMU__ 1" + .byte 0x1 + .uleb128 0x3b + .string "__ARCH_USE_MMU__ 1" + .byte 0x1 + .uleb128 0x3c + .string "__UCLIBC_HAS_FLOATS__ 1" + .byte 0x1 + .uleb128 0x3d + .string "__UCLIBC_HAS_FPU__ 1" + .byte 0x1 + .uleb128 0x3e + .string "__DO_C99_MATH__ 1" + .byte 0x1 + .uleb128 0x3f + .string "__KERNEL_HEADERS__ \"/opt/STM/STLinux-2.3ear/devkit/sh4/uclibc_target/usr/include\"" + .byte 0x1 + .uleb128 0x40 + .string "__HAVE_DOT_CONFIG__ 1" + .byte 0x2 + .uleb128 0x45 + .string "__HAVE_NO_PIC__" + .byte 0x2 + .uleb128 0x46 + .string "__DOPIC__" + .byte 0x2 + .uleb128 0x47 + .string "__HAVE_NO_SHARED__" + .byte 0x2 + .uleb128 0x48 + .string "__ARCH_HAS_NO_LDSO__" + .byte 0x1 + .uleb128 0x49 + .string "__HAVE_SHARED__ 1" + .byte 0x1 + .uleb128 0x4a + .string "__FORCE_SHAREABLE_TEXT_SEGMENTS__ 1" + .byte 0x1 + .uleb128 0x4b + .string "__LDSO_LDD_SUPPORT__ 1" + .byte 0x1 + .uleb128 0x4c + .string "__LDSO_CACHE_SUPPORT__ 1" + .byte 0x2 + .uleb128 0x4d + .string "__LDSO_PRELOAD_FILE_SUPPORT__" + .byte 0x1 + .uleb128 0x4e + .string "__LDSO_BASE_FILENAME__ \"ld.so\"" + .byte 0x2 + .uleb128 0x4f + .string "__UCLIBC_STATIC_LDCONFIG__" + .byte 0x1 + .uleb128 0x50 + .string "__LDSO_RUNPATH__ 1" + .byte 0x1 + .uleb128 0x51 + .string "__UCLIBC_CTOR_DTOR__ 1" + .byte 0x1 + .uleb128 0x52 + .string "__LDSO_GNU_HASH_SUPPORT__ 1" + .byte 0x2 + .uleb128 0x53 + .string "__HAS_NO_THREADS__" + .byte 0x1 + .uleb128 0x54 + .string "__UCLIBC_HAS_THREADS__ 1" + .byte 0x1 + .uleb128 0x55 + .string "__UCLIBC_HAS_THREADS_NATIVE__ 1" + .byte 0x1 + .uleb128 0x56 + .string "__PTHREADS_DEBUG_SUPPORT__ 1" + .byte 0x2 + .uleb128 0x57 + .string "__LINUXTHREADS_OLD__" + .byte 0x1 + .uleb128 0x58 + .string "__UCLIBC_HAS_LFS__ 1" + .byte 0x2 + .uleb128 0x59 + .string "__MALLOC__" + .byte 0x2 + .uleb128 0x5a + .string "__MALLOC_SIMPLE__" + .byte 0x1 + .uleb128 0x5b + .string "__MALLOC_STANDARD__ 1" + .byte 0x2 + .uleb128 0x5c + .string "__MALLOC_GLIBC_COMPAT__" + .byte 0x2 + .uleb128 0x5d + .string "__UCLIBC_DYNAMIC_ATEXIT__" + .byte 0x1 + .uleb128 0x5e + .string "__COMPAT_ATEXIT__ 1" + .byte 0x1 + .uleb128 0x5f + .string "__UCLIBC_SUSV3_LEGACY__ 1" + .byte 0x2 + .uleb128 0x60 + .string "__UCLIBC_SUSV3_LEGACY_MACROS__" + .byte 0x1 + .uleb128 0x61 + .string "__UCLIBC_HAS_SHADOW__ 1" + .byte 0x2 + .uleb128 0x62 + .string "__UCLIBC_HAS_PROGRAM_INVOCATION_NAME__" + .byte 0x1 + .uleb128 0x63 + .string "__UCLIBC_HAS___PROGNAME__ 1" + .byte 0x1 + .uleb128 0x64 + .string "__UNIX98PTY_ONLY__ 1" + .byte 0x1 + .uleb128 0x65 + .string "__ASSUME_DEVPTS__ 1" + .byte 0x1 + .uleb128 0x66 + .string "__UCLIBC_HAS_TM_EXTENSIONS__ 1" + .byte 0x1 + .uleb128 0x67 + .string "__UCLIBC_HAS_TZ_CACHING__ 1" + .byte 0x1 + .uleb128 0x68 + .string "__UCLIBC_HAS_TZ_FILE__ 1" + .byte 0x1 + .uleb128 0x69 + .string "__UCLIBC_HAS_TZ_FILE_READ_MANY__ 1" + .byte 0x1 + .uleb128 0x6a + .string "__UCLIBC_TZ_FILE_PATH__ \"/etc/TZ\"" + .byte 0x1 + .uleb128 0x6f + .string "__UCLIBC_HAS_IPV6__ 1" + .byte 0x1 + .uleb128 0x70 + .string "__UCLIBC_HAS_RPC__ 1" + .byte 0x1 + .uleb128 0x71 + .string "__UCLIBC_HAS_FULL_RPC__ 1" + .byte 0x1 + .uleb128 0x72 + .string "__UCLIBC_HAS_REENTRANT_RPC__ 1" + .byte 0x2 + .uleb128 0x73 + .string "__UCLIBC_USE_NETLINK__" + .byte 0x1 + .uleb128 0x78 + .string "__UCLIBC_HAS_STRING_GENERIC_OPT__ 1" + .byte 0x1 + .uleb128 0x79 + .string "__UCLIBC_HAS_STRING_ARCH_OPT__ 1" + .byte 0x1 + .uleb128 0x7a + .string "__UCLIBC_HAS_CTYPE_TABLES__ 1" + .byte 0x1 + .uleb128 0x7b + .string "__UCLIBC_HAS_CTYPE_SIGNED__ 1" + .byte 0x1 + .uleb128 0x7c + .string "__UCLIBC_HAS_CTYPE_UNSAFE__ 1" + .byte 0x2 + .uleb128 0x7d + .string "__UCLIBC_HAS_CTYPE_CHECKED__" + .byte 0x2 + .uleb128 0x7e + .string "__UCLIBC_HAS_CTYPE_ENFORCED__" + .byte 0x1 + .uleb128 0x7f + .string "__UCLIBC_HAS_WCHAR__ 1" + .byte 0x1 + .uleb128 0x80 + .string "__UCLIBC_HAS_LOCALE__ 1" + .byte 0x2 + .uleb128 0x81 + .string "__UCLIBC_PREGENERATED_LOCALE_DATA__" + .byte 0x2 + .uleb128 0x82 + .string "__UCLIBC_HAS_XLOCALE__" + .byte 0x2 + .uleb128 0x83 + .string "__UCLIBC_HAS_HEXADECIMAL_FLOATS__" + .byte 0x2 + .uleb128 0x84 + .string "__UCLIBC_HAS_GLIBC_DIGIT_GROUPING__" + .byte 0x2 + .uleb128 0x85 + .string "__UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__" + .byte 0x1 + .uleb128 0x86 + .string "__UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9" + .byte 0x2 + .uleb128 0x87 + .string "__UCLIBC_HAS_SCANF_GLIBC_A_FLAG__" + .byte 0x2 + .uleb128 0x88 + .string "__UCLIBC_HAS_STDIO_BUFSIZ_NONE__" + .byte 0x2 + .uleb128 0x89 + .string "__UCLIBC_HAS_STDIO_BUFSIZ_256__" + .byte 0x2 + .uleb128 0x8a + .string "__UCLIBC_HAS_STDIO_BUFSIZ_512__" + .byte 0x2 + .uleb128 0x8b + .string "__UCLIBC_HAS_STDIO_BUFSIZ_1024__" + .byte 0x2 + .uleb128 0x8c + .string "__UCLIBC_HAS_STDIO_BUFSIZ_2048__" + .byte 0x1 + .uleb128 0x8d + .string "__UCLIBC_HAS_STDIO_BUFSIZ_4096__ 1" + .byte 0x2 + .uleb128 0x8e + .string "__UCLIBC_HAS_STDIO_BUFSIZ_8192__" + .byte 0x1 + .uleb128 0x8f + .string "__UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1" + .byte 0x2 + .uleb128 0x90 + .string "__UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__" + .byte 0x2 + .uleb128 0x91 + .string "__UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__" + .byte 0x2 + .uleb128 0x92 + .string "__UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__" + .byte 0x1 + .uleb128 0x93 + .string "__UCLIBC_HAS_STDIO_GETC_MACRO__ 1" + .byte 0x1 + .uleb128 0x94 + .string "__UCLIBC_HAS_STDIO_PUTC_MACRO__ 1" + .byte 0x1 + .uleb128 0x95 + .string "__UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1" + .byte 0x2 + .uleb128 0x96 + .string "__UCLIBC_HAS_FOPEN_LARGEFILE_MODE__" + .byte 0x2 + .uleb128 0x97 + .string "__UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__" + .byte 0x2 + .uleb128 0x98 + .string "__UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__" + .byte 0x1 + .uleb128 0x99 + .string "__UCLIBC_HAS_PRINTF_M_SPEC__ 1" + .byte 0x1 + .uleb128 0x9a + .string "__UCLIBC_HAS_ERRNO_MESSAGES__ 1" + .byte 0x1 + .uleb128 0x9b + .string "__UCLIBC_HAS_SYS_ERRLIST__ 1" + .byte 0x1 + .uleb128 0x9c + .string "__UCLIBC_HAS_SIGNUM_MESSAGES__ 1" + .byte 0x2 + .uleb128 0x9d + .string "__UCLIBC_HAS_SYS_SIGLIST__" + .byte 0x2 + .uleb128 0x9e + .string "__UCLIBC_HAS_GETTEXT_AWARENESS__" + .byte 0x1 + .uleb128 0x9f + .string "__UCLIBC_HAS_GNU_GETOPT__ 1" + .byte 0x1 + .uleb128 0xa0 + .string "__UCLIBC_HAS_STDIO_FUTEXES__ 1" + .byte 0x1 + .uleb128 0xa1 + .string "__UCLIBC_HAS_GNU_GETSUBOPT__ 1" + .byte 0x1 + .uleb128 0xa6 + .string "__UCLIBC_HAS_REGEX__ 1" + .byte 0x2 + .uleb128 0xa7 + .string "__UCLIBC_HAS_REGEX_OLD__" + .byte 0x1 + .uleb128 0xa8 + .string "__UCLIBC_HAS_FNMATCH__ 1" + .byte 0x1 + .uleb128 0xa9 + .string "__UCLIBC_HAS_FNMATCH_OLD__ 1" + .byte 0x2 + .uleb128 0xaa + .string "__UCLIBC_HAS_WORDEXP__" + .byte 0x2 + .uleb128 0xab + .string "__UCLIBC_HAS_FTW__" + .byte 0x1 + .uleb128 0xac + .string "__UCLIBC_HAS_GLOB__ 1" + .byte 0x1 + .uleb128 0xad + .string "__UCLIBC_HAS_GNU_GLOB__ 1" + .byte 0x1 + .uleb128 0xb2 + .string "__SHARED_LIB_LOADER_PREFIX__ \"/lib\"" + .byte 0x1 + .uleb128 0xb3 + .string "__RUNTIME_PREFIX__ \"/\"" + .byte 0x1 + .uleb128 0xb4 + .string "__DEVEL_PREFIX__ \"/usr\"" + .byte 0x2 + .uleb128 0xb9 + .string "__UCLIBC_HAS_ARC4RANDOM__" + .byte 0x2 + .uleb128 0xba + .string "__HAVE_NO_SSP__" + .byte 0x2 + .uleb128 0xbb + .string "__UCLIBC_HAS_SSP__" + .byte 0x1 + .uleb128 0xbc + .string "__UCLIBC_BUILD_RELRO__ 1" + .byte 0x2 + .uleb128 0xbd + .string "__UCLIBC_BUILD_NOW__" + .byte 0x1 + .uleb128 0xbe + .string "__UCLIBC_BUILD_NOEXECSTACK__ 1" + .byte 0x1 + .uleb128 0xc3 + .string "__CROSS_COMPILER_PREFIX__ \"sh4-linux-uclibc-\"" + .byte 0x1 + .uleb128 0xc4 + .string "__UCLIBC_EXTRA_CFLAGS__ \"\"" + .byte 0x1 + .uleb128 0xc5 + .string "__DODEBUG__ 1" + .byte 0x1 + .uleb128 0xc6 + .string "__DOASSERTS__ 1" + .byte 0x1 + .uleb128 0xc7 + .string "__SUPPORT_LD_DEBUG__ 1" + .byte 0x1 + .uleb128 0xc8 + .string "__SUPPORT_LD_DEBUG_EARLY__ 1" + .byte 0x2 + .uleb128 0xc9 + .string "__UCLIBC_MALLOC_DEBUGGING__" + .byte 0x1 + .uleb128 0xca + .string "__WARNINGS__ \"-Wall\"" + .byte 0x1 + .uleb128 0xcb + .string "__EXTRA_WARNINGS__ 1" + .byte 0x2 + .uleb128 0xcc + .string "__DOMULTI__" + .byte 0x1 + .uleb128 0xcd + .string "__UCLIBC_MJN3_ONLY__ 1" + .byte 0x4 + .byte 0x2 + .uleb128 0x24 + .string "__need_uClibc_config_h" + .byte 0x1 + .uleb128 0x29 + .string "__OPTIMIZE_SIZE__ 1" + .byte 0x2 + .uleb128 0x71 + .string "__USE_ISOC99" + .byte 0x2 + .uleb128 0x72 + .string "__USE_POSIX" + .byte 0x2 + .uleb128 0x73 + .string "__USE_POSIX2" + .byte 0x2 + .uleb128 0x74 + .string "__USE_POSIX199309" + .byte 0x2 + .uleb128 0x75 + .string "__USE_POSIX199506" + .byte 0x2 + .uleb128 0x76 + .string "__USE_XOPEN" + .byte 0x2 + .uleb128 0x77 + .string "__USE_XOPEN_EXTENDED" + .byte 0x2 + .uleb128 0x78 + .string "__USE_UNIX98" + .byte 0x2 + .uleb128 0x79 + .string "__USE_XOPEN2K" + .byte 0x2 + .uleb128 0x7a + .string "__USE_LARGEFILE" + .byte 0x2 + .uleb128 0x7b + .string "__USE_LARGEFILE64" + .byte 0x2 + .uleb128 0x7c + .string "__USE_FILE_OFFSET64" + .byte 0x2 + .uleb128 0x7d + .string "__USE_BSD" + .byte 0x2 + .uleb128 0x7e + .string "__USE_SVID" + .byte 0x2 + .uleb128 0x7f + .string "__USE_MISC" + .byte 0x2 + .uleb128 0x80 + .string "__USE_ATFILE" + .byte 0x2 + .uleb128 0x81 + .string "__USE_GNU" + .byte 0x2 + .uleb128 0x82 + .string "__USE_REENTRANT" + .byte 0x2 + .uleb128 0x83 + .string "__USE_FORTIFY_LEVEL" + .byte 0x2 + .uleb128 0x84 + .string "__FAVOR_BSD" + .byte 0x2 + .uleb128 0x85 + .string "__KERNEL_STRICT_NAMES" + .byte 0x1 + .uleb128 0x8a + .string "__KERNEL_STRICT_NAMES " + .byte 0x1 + .uleb128 0x8e + .string "__USE_ANSI 1" + .byte 0x1 + .uleb128 0x98 + .string "__GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))" + .byte 0x2 + .uleb128 0xa9 + .string "_ISOC99_SOURCE" + .byte 0x1 + .uleb128 0xaa + .string "_ISOC99_SOURCE 1" + .byte 0x2 + .uleb128 0xab + .string "_POSIX_SOURCE" + .byte 0x1 + .uleb128 0xac + .string "_POSIX_SOURCE 1" + .byte 0x2 + .uleb128 0xad + .string "_POSIX_C_SOURCE" + .byte 0x1 + .uleb128 0xae + .string "_POSIX_C_SOURCE 199506L" + .byte 0x2 + .uleb128 0xaf + .string "_XOPEN_SOURCE" + .byte 0x1 + .uleb128 0xb0 + .string "_XOPEN_SOURCE 600" + .byte 0x2 + .uleb128 0xb1 + .string "_XOPEN_SOURCE_EXTENDED" + .byte 0x1 + .uleb128 0xb2 + .string "_XOPEN_SOURCE_EXTENDED 1" + .byte 0x2 + .uleb128 0xb4 + .string "_LARGEFILE64_SOURCE" + .byte 0x1 + .uleb128 0xb5 + .string "_LARGEFILE64_SOURCE 1" + .byte 0x2 + .uleb128 0xb7 + .string "_BSD_SOURCE" + .byte 0x1 + .uleb128 0xb8 + .string "_BSD_SOURCE 1" + .byte 0x2 + .uleb128 0xb9 + .string "_SVID_SOURCE" + .byte 0x1 + .uleb128 0xba + .string "_SVID_SOURCE 1" + .byte 0x2 + .uleb128 0xbb + .string "_ATFILE_SOURCE" + .byte 0x1 + .uleb128 0xbc + .string "_ATFILE_SOURCE 1" + .byte 0x1 + .uleb128 0xcf + .string "__USE_ISOC99 1" + .byte 0x1 + .uleb128 0xdf + .string "__USE_POSIX 1" + .byte 0x1 + .uleb128 0xe3 + .string "__USE_POSIX2 1" + .byte 0x1 + .uleb128 0xe7 + .string "__USE_POSIX199309 1" + .byte 0x1 + .uleb128 0xeb + .string "__USE_POSIX199506 1" + .byte 0x1 + .uleb128 0xf3 + .string "__USE_XOPEN 1" + .byte 0x1 + .uleb128 0xf5 + .string "__USE_XOPEN_EXTENDED 1" + .byte 0x1 + .uleb128 0xf6 + .string "__USE_UNIX98 1" + .byte 0x2 + .uleb128 0xf7 + .string "_LARGEFILE_SOURCE" + .byte 0x1 + .uleb128 0xf8 + .string "_LARGEFILE_SOURCE 1" + .byte 0x1 + .uleb128 0xfa + .string "__USE_XOPEN2K 1" + .byte 0x2 + .uleb128 0xfb + .string "__USE_ISOC99" + .byte 0x1 + .uleb128 0xfc + .string "__USE_ISOC99 1" + .byte 0x1 + .uleb128 0x106 + .string "__USE_LARGEFILE 1" + .byte 0x1 + .uleb128 0x10a + .string "__USE_LARGEFILE64 1" + .byte 0x1 + .uleb128 0x112 + .string "__USE_MISC 1" + .byte 0x1 + .uleb128 0x116 + .string "__USE_BSD 1" + .byte 0x1 + .uleb128 0x11a + .string "__USE_SVID 1" + .byte 0x1 + .uleb128 0x11e + .string "__USE_ATFILE 1" + .byte 0x1 + .uleb128 0x122 + .string "__USE_GNU 1" + .byte 0x2 + .uleb128 0x12a + .string "_FORTIFY_SOURCE" + .byte 0x1 + .uleb128 0x133 + .string "__USE_FORTIFY_LEVEL 0" + .byte 0x1 + .uleb128 0x137 + .string "__STDC_IEC_559__ 1" + .byte 0x1 + .uleb128 0x138 + .string "__STDC_IEC_559_COMPLEX__ 1" + .byte 0x1 + .uleb128 0x13c + .string "__STDC_ISO_10646__ 200009L" + .byte 0x1 + .uleb128 0x154 + .string "__GLIBC_PREREQ(maj,min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))" + .byte 0x3 + .uleb128 0x165 + .file 8 "../../include/sys/cdefs.h" + .uleb128 0x8 + .byte 0x1 + .uleb128 0x14 + .string "_SYS_CDEFS_H 1" + .byte 0x2 + .uleb128 0x23 + .string "__P" + .byte 0x2 + .uleb128 0x24 + .string "__PMT" + .byte 0x1 + .uleb128 0x2e + .string "__THROW __attribute__ ((__nothrow__))" + .byte 0x1 + .uleb128 0x2f + .string "__NTH(fct) __attribute__ ((__nothrow__)) fct" + .byte 0x1 + .uleb128 0x49 + .string "__P(args) args" + .byte 0x1 + .uleb128 0x4a + .string "__PMT(args) args" + .byte 0x1 + .uleb128 0x4f + .string "__CONCAT(x,y) x ## y" + .byte 0x1 + .uleb128 0x50 + .string "__STRING(x) #x" + .byte 0x1 + .uleb128 0x53 + .string "__ptr_t void *" + .byte 0x1 + .uleb128 0x54 + .string "__long_double_t long double" + .byte 0x1 + .uleb128 0x5c + .string "__BEGIN_DECLS " + .byte 0x1 + .uleb128 0x5d + .string "__END_DECLS " + .byte 0x1 + .uleb128 0x71 + .string "__BEGIN_NAMESPACE_STD " + .byte 0x1 + .uleb128 0x72 + .string "__END_NAMESPACE_STD " + .byte 0x1 + .uleb128 0x73 + .string "__USING_NAMESPACE_STD(name) " + .byte 0x1 + .uleb128 0x74 + .string "__BEGIN_NAMESPACE_C99 " + .byte 0x1 + .uleb128 0x75 + .string "__END_NAMESPACE_C99 " + .byte 0x1 + .uleb128 0x76 + .string "__USING_NAMESPACE_C99(name) " + .byte 0x1 + .uleb128 0x7c + .string "__bounded " + .byte 0x1 + .uleb128 0x7d + .string "__unbounded " + .byte 0x1 + .uleb128 0x7e + .string "__ptrvalue " + .byte 0x1 + .uleb128 0x83 + .string "__bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)" + .byte 0x1 + .uleb128 0x84 + .string "__bos0(ptr) __builtin_object_size (ptr, 0)" + .byte 0x1 + .uleb128 0x85 + .string "__warndecl(name,msg) extern void name (void)" + .byte 0x1 + .uleb128 0x8b + .string "__flexarr []" + .byte 0x1 + .uleb128 0xa6 + .string "__REDIRECT(name,proto,alias) name proto __asm__ (__ASMNAME (#alias))" + .byte 0x1 + .uleb128 0xab + .string "__REDIRECT_NTH(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) __THROW" + .byte 0x1 + .uleb128 0xae + .string "__ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)" + .byte 0x1 + .uleb128 0xaf + .string "__ASMNAME2(prefix,cname) __STRING (prefix) cname" + .byte 0x1 + .uleb128 0xc4 + .string "__attribute_malloc__ __attribute__ ((__malloc__))" + .byte 0x1 + .uleb128 0xcd + .string "__attribute_pure__ __attribute__ ((__pure__))" + .byte 0x1 + .uleb128 0xd6 + .string "__attribute_used__ __attribute__ ((__used__))" + .byte 0x1 + .uleb128 0xd7 + .string "__attribute_noinline__ __attribute__ ((__noinline__))" + .byte 0x1 + .uleb128 0xdf + .string "__attribute_deprecated__ __attribute__ ((__deprecated__))" + .byte 0x1 + .uleb128 0xeb + .string "__attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))" + .byte 0x1 + .uleb128 0xf5 + .string "__attribute_format_strfmon__(a,b) __attribute__ ((__format__ (__strfmon__, a, b)))" + .byte 0x1 + .uleb128 0xfe + .string "__nonnull(params) __attribute__ ((__nonnull__ params))" + .byte 0x1 + .uleb128 0x106 + .string "__attribute_warn_unused_result__ __attribute__ ((__warn_unused_result__))" + .byte 0x1 + .uleb128 0x10f + .string "__wur " + .byte 0x1 + .uleb128 0x114 + .string "__always_inline __inline __attribute__ ((__always_inline__))" + .byte 0x1 + .uleb128 0x12a + .string "__restrict_arr __restrict" + .byte 0x4 + .byte 0x2 + .uleb128 0x18c + .string "_LARGEFILE_SOURCE" + .byte 0x2 + .uleb128 0x18d + .string "_LARGEFILE64_SOURCE" + .byte 0x2 + .uleb128 0x18e + .string "_FILE_OFFSET_BITS" + .byte 0x2 + .uleb128 0x18f + .string "__USE_LARGEFILE" + .byte 0x2 + .uleb128 0x190 + .string "__USE_LARGEFILE64" + .byte 0x2 + .uleb128 0x191 + .string "__USE_FILE_OFFSET64" + .byte 0x1 + .uleb128 0x192 + .string "_LARGEFILE_SOURCE 1" + .byte 0x1 + .uleb128 0x193 + .string "_LARGEFILE64_SOURCE 1" + .byte 0x1 + .uleb128 0x194 + .string "__USE_LARGEFILE 1" + .byte 0x1 + .uleb128 0x195 + .string "__USE_LARGEFILE64 1" + .byte 0x2 + .uleb128 0x199 + .string "_ATFILE_SOURCE" + .byte 0x2 + .uleb128 0x19a + .string "__USE_ATFILE" + .byte 0x3 + .uleb128 0x19e + .file 9 "../../include/libc-internal.h" + .uleb128 0x9 + .byte 0x1 + .uleb128 0x14 + .string "_LIBC_INTERNAL_H 1" + .byte 0x3 + .uleb128 0x17 + .uleb128 0x6 + .byte 0x4 + .byte 0x1 + .uleb128 0x19 + .string "attribute_relro __attribute__ ((section (\".data.rel.ro\")))" + .byte 0x1 + .uleb128 0x1f + .string "attribute_tls_model_ie __attribute__ ((tls_model (\"initial-exec\")))" + .byte 0x1 + .uleb128 0x2b + .string "__need_size_t " + .byte 0x3 + .uleb128 0x2d + .file 10 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stddef.h" + .uleb128 0xa + .byte 0x1 + .uleb128 0xbd + .string "__size_t__ " + .byte 0x1 + .uleb128 0xbe + .string "__SIZE_T__ " + .byte 0x1 + .uleb128 0xbf + .string "_SIZE_T " + .byte 0x1 + .uleb128 0xc0 + .string "_SYS_SIZE_T_H " + .byte 0x1 + .uleb128 0xc1 + .string "_T_SIZE_ " + .byte 0x1 + .uleb128 0xc2 + .string "_T_SIZE " + .byte 0x1 + .uleb128 0xc3 + .string "__SIZE_T " + .byte 0x1 + .uleb128 0xc4 + .string "_SIZE_T_ " + .byte 0x1 + .uleb128 0xc5 + .string "_BSD_SIZE_T_ " + .byte 0x1 + .uleb128 0xc6 + .string "_SIZE_T_DEFINED_ " + .byte 0x1 + .uleb128 0xc7 + .string "_SIZE_T_DEFINED " + .byte 0x1 + .uleb128 0xc8 + .string "_BSD_SIZE_T_DEFINED_ " + .byte 0x1 + .uleb128 0xc9 + .string "_SIZE_T_DECLARED " + .byte 0x1 + .uleb128 0xca + .string "___int_size_t_h " + .byte 0x1 + .uleb128 0xcb + .string "_GCC_SIZE_T " + .byte 0x1 + .uleb128 0xcc + .string "_SIZET_ " + .byte 0x1 + .uleb128 0xd0 + .string "__size_t " + .byte 0x2 + .uleb128 0xec + .string "__need_size_t" + .byte 0x2 + .uleb128 0x199 + .string "__need_NULL" + .byte 0x4 + .byte 0x3 + .uleb128 0x46 + .file 11 "../../include/bits/stackinfo.h" + .uleb128 0xb + .byte 0x1 + .uleb128 0x17 + .string "_STACKINFO_H 1" + .byte 0x1 + .uleb128 0x1a + .string "_STACK_GROWS_DOWN 1" + .byte 0x4 + .byte 0x1 + .uleb128 0x47 + .string "extend_alloca(buf,len,newlen) (__typeof (buf)) ({ size_t __newlen = (newlen); char *__newbuf = alloca (__newlen); if (__newbuf + __newlen == (char *) buf) len += __newlen; else len = __newlen; __newbuf; })" + .byte 0x4 + .byte 0x1 + .uleb128 0x1a6 + .string "__user " + .byte 0x4 + .byte 0x1 + .uleb128 0x20 + .string "__need_size_t " + .byte 0x1 + .uleb128 0x21 + .string "__need_NULL " + .byte 0x3 + .uleb128 0x23 + .uleb128 0xa + .byte 0x2 + .uleb128 0xec + .string "__need_size_t" + .byte 0x2 + .uleb128 0x18e + .string "NULL" + .byte 0x1 + .uleb128 0x193 + .string "NULL ((void *)0)" + .byte 0x2 + .uleb128 0x199 + .string "__need_NULL" + .byte 0x4 + .byte 0x3 + .uleb128 0x25 + .file 12 "../../include/bits/types.h" + .uleb128 0xc + .byte 0x1 + .uleb128 0x19 + .string "_BITS_TYPES_H 1" + .byte 0x3 + .uleb128 0x1d + .file 13 "../../include/bits/wordsize.h" + .uleb128 0xd + .byte 0x1 + .uleb128 0x13 + .string "__WORDSIZE 32" + .byte 0x4 + .byte 0x1 + .uleb128 0x1e + .string "__need_size_t " + .byte 0x3 + .uleb128 0x20 + .uleb128 0xa + .byte 0x2 + .uleb128 0xec + .string "__need_size_t" + .byte 0x2 + .uleb128 0x199 + .string "__need_NULL" + .byte 0x4 + .byte 0x3 + .uleb128 0x21 + .file 14 "../../include/bits/kernel_types.h" + .uleb128 0xe + .byte 0x1 + .uleb128 0x8 + .string "__ASM_SH_POSIX_TYPES_H " + .byte 0x4 + .byte 0x1 + .uleb128 0x67 + .string "__S16_TYPE short int" + .byte 0x1 + .uleb128 0x68 + .string "__U16_TYPE unsigned short int" + .byte 0x1 + .uleb128 0x69 + .string "__S32_TYPE int" + .byte 0x1 + .uleb128 0x6a + .string "__U32_TYPE unsigned int" + .byte 0x1 + .uleb128 0x6b + .string "__SLONGWORD_TYPE long int" + .byte 0x1 + .uleb128 0x6c + .string "__ULONGWORD_TYPE unsigned long int" + .byte 0x1 + .uleb128 0x6e + .string "__SQUAD_TYPE __quad_t" + .byte 0x1 + .uleb128 0x6f + .string "__UQUAD_TYPE __u_quad_t" + .byte 0x1 + .uleb128 0x70 + .string "__SWORD_TYPE int" + .byte 0x1 + .uleb128 0x71 + .string "__UWORD_TYPE unsigned int" + .byte 0x1 + .uleb128 0x72 + .string "__SLONG32_TYPE long int" + .byte 0x1 + .uleb128 0x73 + .string "__ULONG32_TYPE unsigned long int" + .byte 0x1 + .uleb128 0x74 + .string "__S64_TYPE __quad_t" + .byte 0x1 + .uleb128 0x75 + .string "__U64_TYPE __u_quad_t" + .byte 0x1 + .uleb128 0x78 + .string "__STD_TYPE __extension__ typedef" + .byte 0x3 + .uleb128 0x88 + .file 15 "../../include/bits/typesizes.h" + .uleb128 0xf + .byte 0x1 + .uleb128 0x19 + .string "_BITS_TYPESIZES_H 1" + .byte 0x1 + .uleb128 0x1e + .string "__DEV_T_TYPE __UQUAD_TYPE" + .byte 0x1 + .uleb128 0x1f + .string "__UID_T_TYPE __U32_TYPE" + .byte 0x1 + .uleb128 0x20 + .string "__GID_T_TYPE __U32_TYPE" + .byte 0x1 + .uleb128 0x21 + .string "__INO_T_TYPE __ULONGWORD_TYPE" + .byte 0x1 + .uleb128 0x22 + .string "__INO64_T_TYPE __UQUAD_TYPE" + .byte 0x1 + .uleb128 0x23 + .string "__MODE_T_TYPE __U32_TYPE" + .byte 0x1 + .uleb128 0x24 + .string "__NLINK_T_TYPE __UWORD_TYPE" + .byte 0x1 + .uleb128 0x25 + .string "__OFF_T_TYPE __SLONGWORD_TYPE" + .byte 0x1 + .uleb128 0x26 + .string "__OFF64_T_TYPE __SQUAD_TYPE" + .byte 0x1 + .uleb128 0x27 + .string "__PID_T_TYPE __S32_TYPE" + .byte 0x1 + .uleb128 0x28 + .string "__RLIM_T_TYPE __ULONGWORD_TYPE" + .byte 0x1 + .uleb128 0x29 + .string "__RLIM64_T_TYPE __UQUAD_TYPE" + .byte 0x1 + .uleb128 0x2a + .string "__BLKCNT_T_TYPE __SLONGWORD_TYPE" + .byte 0x1 + .uleb128 0x2b + .string "__BLKCNT64_T_TYPE __SQUAD_TYPE" + .byte 0x1 + .uleb128 0x2c + .string "__FSBLKCNT_T_TYPE __ULONGWORD_TYPE" + .byte 0x1 + .uleb128 0x2d + .string "__FSBLKCNT64_T_TYPE __UQUAD_TYPE" + .byte 0x1 + .uleb128 0x2e + .string "__FSFILCNT_T_TYPE __ULONGWORD_TYPE" + .byte 0x1 + .uleb128 0x2f + .string "__FSFILCNT64_T_TYPE __UQUAD_TYPE" + .byte 0x1 + .uleb128 0x30 + .string "__ID_T_TYPE __U32_TYPE" + .byte 0x1 + .uleb128 0x31 + .string "__CLOCK_T_TYPE __SLONGWORD_TYPE" + .byte 0x1 + .uleb128 0x32 + .string "__TIME_T_TYPE __SLONGWORD_TYPE" + .byte 0x1 + .uleb128 0x33 + .string "__USECONDS_T_TYPE __U32_TYPE" + .byte 0x1 + .uleb128 0x34 + .string "__SUSECONDS_T_TYPE __SLONGWORD_TYPE" + .byte 0x1 + .uleb128 0x35 + .string "__DADDR_T_TYPE __S32_TYPE" + .byte 0x1 + .uleb128 0x36 + .string "__SWBLK_T_TYPE __SLONGWORD_TYPE" + .byte 0x1 + .uleb128 0x37 + .string "__KEY_T_TYPE __S32_TYPE" + .byte 0x1 + .uleb128 0x38 + .string "__CLOCKID_T_TYPE __S32_TYPE" + .byte 0x1 + .uleb128 0x39 + .string "__TIMER_T_TYPE void *" + .byte 0x1 + .uleb128 0x3a + .string "__BLKSIZE_T_TYPE __SLONGWORD_TYPE" + .byte 0x1 + .uleb128 0x3b + .string "__FSID_T_TYPE struct { int __val[2]; }" + .byte 0x1 + .uleb128 0x3c + .string "__SSIZE_T_TYPE __SWORD_TYPE" + .byte 0x1 + .uleb128 0x3f + .string "__FD_SETSIZE 1024" + .byte 0x4 + .byte 0x2 + .uleb128 0xc7 + .string "__STD_TYPE" + .byte 0x3 + .uleb128 0xcf + .file 16 "../../include/bits/pthreadtypes.h" + .uleb128 0x10 + .byte 0x1 + .uleb128 0x15 + .string "_BITS_PTHREADTYPES_H 1" + .byte 0x1 + .uleb128 0x17 + .string "__SIZEOF_PTHREAD_ATTR_T 36" + .byte 0x1 + .uleb128 0x18 + .string "__SIZEOF_PTHREAD_MUTEX_T 24" + .byte 0x1 + .uleb128 0x19 + .string "__SIZEOF_PTHREAD_MUTEXATTR_T 4" + .byte 0x1 + .uleb128 0x1a + .string "__SIZEOF_PTHREAD_COND_T 48" + .byte 0x1 + .uleb128 0x1b + .string "__SIZEOF_PTHREAD_COND_COMPAT_T 12" + .byte 0x1 + .uleb128 0x1c + .string "__SIZEOF_PTHREAD_CONDATTR_T 4" + .byte 0x1 + .uleb128 0x1d + .string "__SIZEOF_PTHREAD_RWLOCK_T 32" + .byte 0x1 + .uleb128 0x1e + .string "__SIZEOF_PTHREAD_RWLOCKATTR_T 8" + .byte 0x1 + .uleb128 0x1f + .string "__SIZEOF_PTHREAD_BARRIER_T 20" + .byte 0x1 + .uleb128 0x20 + .string "__SIZEOF_PTHREAD_BARRIERATTR_T 4" + .byte 0x4 + .byte 0x4 + .byte 0x1 + .uleb128 0x25 + .string "__need_FILE " + .byte 0x1 + .uleb128 0x26 + .string "__need___FILE " + .byte 0x1 + .uleb128 0x36 + .string "__FILE_defined 1" + .byte 0x2 + .uleb128 0x38 + .string "__need_FILE" + .byte 0x1 + .uleb128 0x40 + .string "____FILE_defined 1" + .byte 0x2 + .uleb128 0x42 + .string "__need___FILE" + .byte 0x2 + .uleb128 0x46 + .string "_STDIO_USES_IOSTREAM" + .byte 0x3 + .uleb128 0x49 + .file 17 "../../include/bits/uClibc_stdio.h" + .uleb128 0x11 + .byte 0x1 + .uleb128 0xe + .string "__STDIO_BUFFERS " + .byte 0x1 + .uleb128 0x1d + .string "__STDIO_BUFSIZ 4096" + .byte 0x1 + .uleb128 0x28 + .string "__STDIO_BUILTIN_BUF_SIZE 0" + .byte 0x1 + .uleb128 0x33 + .string "__STDIO_HAS_OPENLIST 1" + .byte 0x2 + .uleb128 0x3d + .string "__USE_LARGEFILE" + .byte 0x2 + .uleb128 0x3e + .string "__USE_LARGEFILE64" + .byte 0x2 + .uleb128 0x3f + .string "__USE_FILE_OFFSET64" + .byte 0x1 + .uleb128 0x41 + .string "__USE_LARGEFILE64 1" + .byte 0x1 + .uleb128 0x50 + .string "__need_wchar_t " + .byte 0x3 + .uleb128 0x52 + .uleb128 0xa + .byte 0x1 + .uleb128 0x109 + .string "__wchar_t__ " + .byte 0x1 + .uleb128 0x10a + .string "__WCHAR_T__ " + .byte 0x1 + .uleb128 0x10b + .string "_WCHAR_T " + .byte 0x1 + .uleb128 0x10c + .string "_T_WCHAR_ " + .byte 0x1 + .uleb128 0x10d + .string "_T_WCHAR " + .byte 0x1 + .uleb128 0x10e + .string "__WCHAR_T " + .byte 0x1 + .uleb128 0x10f + .string "_WCHAR_T_ " + .byte 0x1 + .uleb128 0x110 + .string "_BSD_WCHAR_T_ " + .byte 0x1 + .uleb128 0x111 + .string "_WCHAR_T_DEFINED_ " + .byte 0x1 + .uleb128 0x112 + .string "_WCHAR_T_DEFINED " + .byte 0x1 + .uleb128 0x113 + .string "_WCHAR_T_H " + .byte 0x1 + .uleb128 0x114 + .string "___int_wchar_t_h " + .byte 0x1 + .uleb128 0x115 + .string "__INT_WCHAR_T_H " + .byte 0x1 + .uleb128 0x116 + .string "_GCC_WCHAR_T " + .byte 0x1 + .uleb128 0x117 + .string "_WCHAR_T_DECLARED " + .byte 0x2 + .uleb128 0x124 + .string "_BSD_WCHAR_T_" + .byte 0x2 + .uleb128 0x159 + .string "__need_wchar_t" + .byte 0x2 + .uleb128 0x199 + .string "__need_NULL" + .byte 0x4 + .byte 0x1 + .uleb128 0x55 + .string "__STDIO_MBSTATE " + .byte 0x1 + .uleb128 0x56 + .string "__need_mbstate_t " + .byte 0x3 + .uleb128 0x58 + .file 18 "../../include/wchar.h" + .uleb128 0x12 + .byte 0x1 + .uleb128 0x33 + .string "__need_wint_t " + .byte 0x3 + .uleb128 0x35 + .uleb128 0xa + .byte 0x1 + .uleb128 0x15e + .string "_WINT_T " + .byte 0x2 + .uleb128 0x165 + .string "__need_wint_t" + .byte 0x2 + .uleb128 0x199 + .string "__need_NULL" + .byte 0x4 + .byte 0x3 + .uleb128 0x37 + .file 19 "../../include/bits/wchar.h" + .uleb128 0x13 + .byte 0x1 + .uleb128 0x15 + .string "_BITS_WCHAR_H 1" + .byte 0x1 + .uleb128 0x17 + .string "__WCHAR_MIN (-2147483647 - 1)" + .byte 0x1 + .uleb128 0x18 + .string "__WCHAR_MAX (2147483647)" + .byte 0x4 + .byte 0x1 + .uleb128 0x4e + .string "__mbstate_t_defined 1" + .byte 0x2 + .uleb128 0x62 + .string "__need_mbstate_t" + .byte 0x4 + .byte 0x1 + .uleb128 0x5f + .string "__STDIO_GETC_MACRO " + .byte 0x1 + .uleb128 0x63 + .string "__STDIO_PUTC_MACRO " + .byte 0x1 + .uleb128 0x8a + .string "__STDIO_AUTO_THREADLOCK_VAR int __infunc_user_locking" + .byte 0x1 + .uleb128 0xa5 + .string "__STDIO_AUTO_THREADLOCK(__stream) if ((__infunc_user_locking = (__stream)->__user_locking) == 0) { __pthread_mutex_lock(&(__stream)->__lock); }" + .byte 0x1 + .uleb128 0xaa + .string "__STDIO_AUTO_THREADUNLOCK(__stream) if (__infunc_user_locking == 0) { __pthread_mutex_unlock(&(__stream)->__lock); }" + .byte 0x1 + .uleb128 0xaf + .string "__STDIO_SET_USER_LOCKING(__stream) ((__stream)->__user_locking = 1)" + .byte 0x1 + .uleb128 0xb1 + .string "__STDIO_ALWAYS_THREADLOCK(__stream) __pthread_mutex_lock(&(__stream)->__lock)" + .byte 0x1 + .uleb128 0xb4 + .string "__STDIO_ALWAYS_THREADTRYLOCK(__stream) __pthread_mutex_trylock(&(__stream)->__lock)" + .byte 0x1 + .uleb128 0xb7 + .string "__STDIO_ALWAYS_THREADUNLOCK(__stream) __pthread_mutex_unlock(&(__stream)->__lock)" + .byte 0x1 + .uleb128 0xcc + .string "__STDIO_IOFBF 0" + .byte 0x1 + .uleb128 0xcd + .string "__STDIO_IOLBF 1" + .byte 0x1 + .uleb128 0xce + .string "__STDIO_IONBF 2" + .byte 0x1 + .uleb128 0x15b + .string "__MASK_READING 0x0003U" + .byte 0x1 + .uleb128 0x15c + .string "__FLAG_READING 0x0001U" + .byte 0x1 + .uleb128 0x15d + .string "__FLAG_UNGOT 0x0002U" + .byte 0x1 + .uleb128 0x15e + .string "__FLAG_EOF 0x0004U" + .byte 0x1 + .uleb128 0x15f + .string "__FLAG_ERROR 0x0008U" + .byte 0x1 + .uleb128 0x160 + .string "__FLAG_WRITEONLY 0x0010U" + .byte 0x1 + .uleb128 0x161 + .string "__FLAG_READONLY 0x0020U" + .byte 0x1 + .uleb128 0x162 + .string "__FLAG_WRITING 0x0040U" + .byte 0x1 + .uleb128 0x163 + .string "__FLAG_NARROW 0x0080U" + .byte 0x1 + .uleb128 0x165 + .string "__FLAG_FBF 0x0000U" + .byte 0x1 + .uleb128 0x166 + .string "__FLAG_LBF 0x0100U" + .byte 0x1 + .uleb128 0x167 + .string "__FLAG_NBF 0x0200U" + .byte 0x1 + .uleb128 0x168 + .string "__MASK_BUFMODE 0x0300U" + .byte 0x1 + .uleb128 0x169 + .string "__FLAG_APPEND 0x0400U" + .byte 0x1 + .uleb128 0x16a + .string "__FLAG_WIDE 0x0800U" + .byte 0x1 + .uleb128 0x16c + .string "__FLAG_FREEFILE 0x2000U" + .byte 0x1 + .uleb128 0x16d + .string "__FLAG_FREEBUF 0x4000U" + .byte 0x1 + .uleb128 0x16e + .string "__FLAG_LARGEFILE 0x8000U" + .byte 0x1 + .uleb128 0x16f + .string "__FLAG_FAILED_FREOPEN __FLAG_LARGEFILE" + .byte 0x1 + .uleb128 0x19d + .string "__CLEARERR_UNLOCKED(__stream) ((void)((__stream)->__modeflags &= ~(__FLAG_EOF|__FLAG_ERROR)))" + .byte 0x1 + .uleb128 0x19f + .string "__FEOF_UNLOCKED(__stream) ((__stream)->__modeflags & __FLAG_EOF)" + .byte 0x1 + .uleb128 0x1a0 + .string "__FERROR_UNLOCKED(__stream) ((__stream)->__modeflags & __FLAG_ERROR)" + .byte 0x1 + .uleb128 0x1a3 + .string "__CLEARERR(__stream) (clearerr)(__stream)" + .byte 0x1 + .uleb128 0x1a4 + .string "__FERROR(__stream) (ferror)(__stream)" + .byte 0x1 + .uleb128 0x1a5 + .string "__FEOF(__stream) (feof)(__stream)" + .byte 0x1 + .uleb128 0x1b0 + .string "__FGETC_UNLOCKED(__stream) (__fgetc_unlocked)((__stream))" + .byte 0x1 + .uleb128 0x1b1 + .string "__FGETC(__stream) (fgetc)((__stream))" + .byte 0x1 + .uleb128 0x1b2 + .string "__GETC_UNLOCKED_MACRO(__stream) (__fgetc_unlocked)((__stream))" + .byte 0x1 + .uleb128 0x1b3 + .string "__GETC_UNLOCKED(__stream) (__fgetc_unlocked)((__stream))" + .byte 0x1 + .uleb128 0x1b4 + .string "__GETC(__stream) (fgetc)((__stream))" + .byte 0x1 + .uleb128 0x1b6 + .string "__FPUTC_UNLOCKED(__c,__stream) (__fputc_unlocked)((__c),(__stream))" + .byte 0x1 + .uleb128 0x1b7 + .string "__FPUTC(__c,__stream) (fputc)((__c),(__stream))" + .byte 0x1 + .uleb128 0x1b8 + .string "__PUTC_UNLOCKED_MACRO(__c,__stream) (__fputc_unlocked)((__c),(__stream))" + .byte 0x1 + .uleb128 0x1b9 + .string "__PUTC_UNLOCKED(__c,__stream) (__fputc_unlocked)((__c),(__stream))" + .byte 0x1 + .uleb128 0x1ba + .string "__PUTC(__c,__stream) (fputc)((__c),(__stream))" + .byte 0x2 + .uleb128 0x1c1 + .string "__GETC_UNLOCKED_MACRO" + .byte 0x1 + .uleb128 0x1c2 + .string "__GETC_UNLOCKED_MACRO(__stream) ( ((__stream)->__bufpos < (__stream)->__bufgetc_u) ? (*(__stream)->__bufpos++) : __fgetc_unlocked(__stream) )" + .byte 0x2 + .uleb128 0x1d2 + .string "__FGETC_UNLOCKED" + .byte 0x1 + .uleb128 0x1d3 + .string "__FGETC_UNLOCKED(__stream) (__extension__ ({ FILE *__S = (__stream); __GETC_UNLOCKED_MACRO(__S); }) )" + .byte 0x2 + .uleb128 0x1d9 + .string "__GETC_UNLOCKED" + .byte 0x1 + .uleb128 0x1da + .string "__GETC_UNLOCKED(__stream) __FGETC_UNLOCKED((__stream))" + .byte 0x2 + .uleb128 0x1dd + .string "__FGETC" + .byte 0x1 + .uleb128 0x1de + .string "__FGETC(__stream) (__extension__ ({ FILE *__S = (__stream); ((__S->__user_locking ) ? __GETC_UNLOCKED_MACRO(__S) : (fgetc)(__S)); }) )" + .byte 0x2 + .uleb128 0x1e6 + .string "__GETC" + .byte 0x1 + .uleb128 0x1e7 + .string "__GETC(__stream) __FGETC((__stream))" + .byte 0x2 + .uleb128 0x1fc + .string "__PUTC_UNLOCKED_MACRO" + .byte 0x1 + .uleb128 0x1fd + .string "__PUTC_UNLOCKED_MACRO(__c,__stream) ( ((__stream)->__bufpos < (__stream)->__bufputc_u) ? (*(__stream)->__bufpos++) = (__c) : __fputc_unlocked((__c),(__stream)) )" + .byte 0x2 + .uleb128 0x20f + .string "__FPUTC_UNLOCKED" + .byte 0x1 + .uleb128 0x210 + .string "__FPUTC_UNLOCKED(__c,__stream) (__extension__ ({ FILE *__S = (__stream); __PUTC_UNLOCKED_MACRO((__c),__S); }) )" + .byte 0x2 + .uleb128 0x216 + .string "__PUTC_UNLOCKED" + .byte 0x1 + .uleb128 0x217 + .string "__PUTC_UNLOCKED(__c,__stream) __FPUTC_UNLOCKED((__c), (__stream))" + .byte 0x2 + .uleb128 0x21a + .string "__FPUTC" + .byte 0x1 + .uleb128 0x21b + .string "__FPUTC(__c,__stream) (__extension__ ({ FILE *__S = (__stream); ((__S->__user_locking) ? __PUTC_UNLOCKED_MACRO((__c),__S) : (fputc)((__c),__S)); }) )" + .byte 0x2 + .uleb128 0x223 + .string "__PUTC" + .byte 0x1 + .uleb128 0x224 + .string "__PUTC(__c,__stream) __FPUTC((__c), (__stream))" + .byte 0x4 + .byte 0x1 + .uleb128 0x4b + .string "__need___va_list " + .byte 0x3 + .uleb128 0x4d + .file 20 "/opt/STM/STLinux-2.3ear/devkit/sh4/lib/gcc/sh4-linux-uclibc/4.1.1/include/stdarg.h" + .uleb128 0x14 + .byte 0x2 + .uleb128 0x25 + .string "__need___va_list" + .byte 0x1 + .uleb128 0x2a + .string "__GNUC_VA_LIST " + .byte 0x4 + .byte 0x1 + .uleb128 0x5b + .string "_IOFBF __STDIO_IOFBF" + .byte 0x1 + .uleb128 0x5c + .string "_IOLBF __STDIO_IOLBF" + .byte 0x1 + .uleb128 0x5d + .string "_IONBF __STDIO_IONBF" + .byte 0x1 + .uleb128 0x62 + .string "BUFSIZ __STDIO_BUFSIZ" + .byte 0x1 + .uleb128 0x69 + .string "EOF (-1)" + .byte 0x1 + .uleb128 0x6f + .string "SEEK_SET 0" + .byte 0x1 + .uleb128 0x70 + .string "SEEK_CUR 1" + .byte 0x1 + .uleb128 0x71 + .string "SEEK_END 2" + .byte 0x1 + .uleb128 0x76 + .string "P_tmpdir \"/tmp\"" + .byte 0x3 + .uleb128 0x84 + .file 21 "../../include/bits/stdio_lim.h" + .uleb128 0x15 + .byte 0x1 + .uleb128 0x18 + .string "L_tmpnam 20" + .byte 0x1 + .uleb128 0x19 + .string "TMP_MAX 238328" + .byte 0x1 + .uleb128 0x1a + .string "FILENAME_MAX 4095" + .byte 0x1 + .uleb128 0x1d + .string "L_ctermid 9" + .byte 0x1 + .uleb128 0x1e + .string "L_cuserid 9" + .byte 0x2 + .uleb128 0x23 + .string "FOPEN_MAX" + .byte 0x1 + .uleb128 0x24 + .string "FOPEN_MAX 16" + .byte 0x4 + .byte 0x1 + .uleb128 0x8b + .string "stdin stdin" + .byte 0x1 + .uleb128 0x8c + .string "stdout stdout" + .byte 0x1 + .uleb128 0x8d + .string "stderr stderr" + .byte 0x1 + .uleb128 0x1bc + .string "getc(_fp) __GETC(_fp)" + .byte 0x1 + .uleb128 0x1c7 + .string "getc_unlocked(_fp) __GETC_UNLOCKED(_fp)" + .byte 0x1 + .uleb128 0x1e9 + .string "putc(_ch,_fp) __PUTC(_ch, _fp)" + .byte 0x1 + .uleb128 0x1fe + .string "putc_unlocked(_ch,_fp) __PUTC_UNLOCKED(_ch, _fp)" + .byte 0x1 + .uleb128 0x343 + .string "fgetc(_fp) __FGETC(_fp)" + .byte 0x1 + .uleb128 0x344 + .string "fputc(_ch,_fp) __FPUTC(_ch, _fp)" + .byte 0x1 + .uleb128 0x347 + .string "fgetc_unlocked(_fp) __FGETC_UNLOCKED(_fp)" + .byte 0x1 + .uleb128 0x348 + .string "fputc_unlocked(_ch,_fp) __FPUTC_UNLOCKED(_ch, _fp)" + .byte 0x1 + .uleb128 0x34e + .string "getchar() __GETC(__stdin)" + .byte 0x1 + .uleb128 0x353 + .string "putchar(_ch) __PUTC((_ch), __stdout)" + .byte 0x1 + .uleb128 0x356 + .string "getchar_unlocked() __GETC_UNLOCKED(__stdin)" + .byte 0x1 + .uleb128 0x357 + .string "putchar_unlocked(_ch) __PUTC_UNLOCKED((_ch), __stdout)" + .byte 0x1 + .uleb128 0x35b + .string "clearerr(_fp) __CLEARERR(_fp)" + .byte 0x1 + .uleb128 0x35c + .string "feof(_fp) __FEOF(_fp)" + .byte 0x1 + .uleb128 0x35d + .string "ferror(_fp) __FERROR(_fp)" + .byte 0x1 + .uleb128 0x360 + .string "clearerr_unlocked(_fp) __CLEARERR_UNLOCKED(_fp)" + .byte 0x1 + .uleb128 0x361 + .string "feof_unlocked(_fp) __FEOF_UNLOCKED(_fp)" + .byte 0x1 + .uleb128 0x362 + .string "ferror_unlocked(_fp) __FERROR_UNLOCKED(_fp)" + .byte 0x4 + .byte 0x3 + .uleb128 0xc + .file 22 "../../include/stdlib.h" + .uleb128 0x16 + .byte 0x1 + .uleb128 0x1c + .string "__need_size_t " + .byte 0x1 + .uleb128 0x1f + .string "__need_wchar_t " + .byte 0x1 + .uleb128 0x21 + .string "__need_NULL " + .byte 0x3 + .uleb128 0x24 + .uleb128 0xa + .byte 0x2 + .uleb128 0xec + .string "__need_size_t" + .byte 0x2 + .uleb128 0x159 + .string "__need_wchar_t" + .byte 0x2 + .uleb128 0x18e + .string "NULL" + .byte 0x1 + .uleb128 0x193 + .string "NULL ((void *)0)" + .byte 0x2 + .uleb128 0x199 + .string "__need_NULL" + .byte 0x4 + .byte 0x1 + .uleb128 0x28 + .string "_STDLIB_H 1" + .byte 0x3 + .uleb128 0x2d + .file 23 "../../include/bits/waitflags.h" + .uleb128 0x17 + .byte 0x1 + .uleb128 0x1a + .string "WNOHANG 1" + .byte 0x1 + .uleb128 0x1b + .string "WUNTRACED 2" + .byte 0x1 + .uleb128 0x1e + .string "WSTOPPED 2" + .byte 0x1 + .uleb128 0x1f + .string "WEXITED 4" + .byte 0x1 + .uleb128 0x20 + .string "WCONTINUED 8" + .byte 0x1 + .uleb128 0x21 + .string "WNOWAIT 0x01000000" + .byte 0x1 + .uleb128 0x23 + .string "__WNOTHREAD 0x20000000" + .byte 0x1 + .uleb128 0x25 + .string "__WALL 0x40000000" + .byte 0x1 + .uleb128 0x26 + .string "__WCLONE 0x80000000" + .byte 0x4 + .byte 0x3 + .uleb128 0x2e + .file 24 "../../include/bits/waitstatus.h" + .uleb128 0x18 + .byte 0x1 + .uleb128 0x1d + .string "__WEXITSTATUS(status) (((status) & 0xff00) >> 8)" + .byte 0x1 + .uleb128 0x20 + .string "__WTERMSIG(status) ((status) & 0x7f)" + .byte 0x1 + .uleb128 0x23 + .string "__WSTOPSIG(status) __WEXITSTATUS(status)" + .byte 0x1 + .uleb128 0x26 + .string "__WIFEXITED(status) (__WTERMSIG(status) == 0)" + .byte 0x1 + .uleb128 0x2a + .string "__WIFSIGNALED(status) (__extension__ ({ int __status = (status); !__WIFSTOPPED(__status) && !__WIFEXITED(__status); }))" + .byte 0x1 + .uleb128 0x32 + .string "__WIFSTOPPED(status) (((status) & 0xff) == 0x7f)" + .byte 0x1 + .uleb128 0x35 + .string "__WCOREDUMP(status) ((status) & __WCOREFLAG)" + .byte 0x1 + .uleb128 0x38 + .string "__W_EXITCODE(ret,sig) ((ret) << 8 | (sig))" + .byte 0x1 + .uleb128 0x39 + .string "__W_STOPCODE(sig) ((sig) << 8 | 0x7f)" + .byte 0x1 + .uleb128 0x3a + .string "__WCOREFLAG 0x80" + .byte 0x3 + .uleb128 0x40 + .file 25 "../../include/endian.h" + .uleb128 0x19 + .byte 0x1 + .uleb128 0x14 + .string "_ENDIAN_H 1" + .byte 0x1 + .uleb128 0x20 + .string "__LITTLE_ENDIAN 1234" + .byte 0x1 + .uleb128 0x21 + .string "__BIG_ENDIAN 4321" + .byte 0x1 + .uleb128 0x22 + .string "__PDP_ENDIAN 3412" + .byte 0x3 + .uleb128 0x26 + .file 26 "../../include/bits/endian.h" + .uleb128 0x1a + .byte 0x1 + .uleb128 0x8 + .string "__BYTE_ORDER __LITTLE_ENDIAN" + .byte 0x1 + .uleb128 0x9 + .string "__FLOAT_WORD_ORDER __LITTLE_ENDIAN" + .byte 0x4 + .byte 0x1 + .uleb128 0x2e + .string "LITTLE_ENDIAN __LITTLE_ENDIAN" + .byte 0x1 + .uleb128 0x2f + .string "BIG_ENDIAN __BIG_ENDIAN" + .byte 0x1 + .uleb128 0x30 + .string "PDP_ENDIAN __PDP_ENDIAN" + .byte 0x1 + .uleb128 0x31 + .string "BYTE_ORDER __BYTE_ORDER" + .byte 0x1 + .uleb128 0x35 + .string "__LONG_LONG_PAIR(HI,LO) LO, HI" + .byte 0x4 + .byte 0x1 + .uleb128 0x62 + .string "w_termsig __wait_terminated.__w_termsig" + .byte 0x1 + .uleb128 0x63 + .string "w_coredump __wait_terminated.__w_coredump" + .byte 0x1 + .uleb128 0x64 + .string "w_retcode __wait_terminated.__w_retcode" + .byte 0x1 + .uleb128 0x65 + .string "w_stopsig __wait_stopped.__w_stopsig" + .byte 0x1 + .uleb128 0x66 + .string "w_stopval __wait_stopped.__w_stopval" + .byte 0x4 + .byte 0x1 + .uleb128 0x35 + .string "__WAIT_INT(status) (__extension__ ({ union { __typeof(status) __in; int __i; } __u; __u.__in = (status); __u.__i; }))" + .byte 0x1 + .uleb128 0x4b + .string "__WAIT_STATUS_DEFN int *" + .byte 0x1 + .uleb128 0x57 + .string "WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status))" + .byte 0x1 + .uleb128 0x58 + .string "WTERMSIG(status) __WTERMSIG(__WAIT_INT(status))" + .byte 0x1 + .uleb128 0x59 + .string "WSTOPSIG(status) __WSTOPSIG(__WAIT_INT(status))" + .byte 0x1 + .uleb128 0x5a + .string "WIFEXITED(status) __WIFEXITED(__WAIT_INT(status))" + .byte 0x1 + .uleb128 0x5b + .string "WIFSIGNALED(status) __WIFSIGNALED(__WAIT_INT(status))" + .byte 0x1 + .uleb128 0x5c + .string "WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status))" + .byte 0x1 + .uleb128 0x71 + .string "__ldiv_t_defined 1" + .byte 0x1 + .uleb128 0x7d + .string "__lldiv_t_defined 1" + .byte 0x1 + .uleb128 0x83 + .string "RAND_MAX 2147483647" + .byte 0x1 + .uleb128 0x88 + .string "EXIT_FAILURE 1" + .byte 0x1 + .uleb128 0x89 + .string "EXIT_SUCCESS 0" + .byte 0x1 + .uleb128 0x92 + .string "MB_CUR_MAX (_stdlib_mb_cur_max ())" + .byte 0x3 + .uleb128 0x133 + .file 27 "../../include/sys/types.h" + .uleb128 0x1b + .byte 0x1 + .uleb128 0x19 + .string "_SYS_TYPES_H 1" + .byte 0x1 + .uleb128 0x2a + .string "__u_char_defined " + .byte 0x1 + .uleb128 0x36 + .string "__ino_t_defined " + .byte 0x1 + .uleb128 0x3a + .string "__ino64_t_defined " + .byte 0x1 + .uleb128 0x3f + .string "__dev_t_defined " + .byte 0x1 + .uleb128 0x44 + .string "__gid_t_defined " + .byte 0x1 + .uleb128 0x49 + .string "__mode_t_defined " + .byte 0x1 + .uleb128 0x4e + .string "__nlink_t_defined " + .byte 0x1 + .uleb128 0x53 + .string "__uid_t_defined " + .byte 0x1 + .uleb128 0x5c + .string "__off_t_defined " + .byte 0x1 + .uleb128 0x60 + .string "__off64_t_defined " + .byte 0x1 + .uleb128 0x65 + .string "__pid_t_defined " + .byte 0x1 + .uleb128 0x6a + .string "__id_t_defined " + .byte 0x1 + .uleb128 0x6f + .string "__ssize_t_defined " + .byte 0x1 + .uleb128 0x76 + .string "__daddr_t_defined " + .byte 0x1 + .uleb128 0x7c + .string "__key_t_defined " + .byte 0x1 + .uleb128 0x80 + .string "__need_clock_t " + .byte 0x1 + .uleb128 0x82 + .string "__need_time_t " + .byte 0x1 + .uleb128 0x83 + .string "__need_timer_t " + .byte 0x1 + .uleb128 0x84 + .string "__need_clockid_t " + .byte 0x3 + .uleb128 0x86 + .file 28 "../../include/time.h" + .uleb128 0x1c + .byte 0x1 + .uleb128 0x37 + .string "__clock_t_defined 1" + .byte 0x2 + .uleb128 0x44 + .string "__need_clock_t" + .byte 0x1 + .uleb128 0x47 + .string "__time_t_defined 1" + .byte 0x2 + .uleb128 0x54 + .string "__need_time_t" + .byte 0x1 + .uleb128 0x58 + .string "__clockid_t_defined 1" + .byte 0x2 + .uleb128 0x60 + .string "__clockid_time_t" + .byte 0x1 + .uleb128 0x64 + .string "__timer_t_defined 1" + .byte 0x2 + .uleb128 0x6c + .string "__need_timer_t" + .byte 0x2 + .uleb128 0x80 + .string "__need_timespec" + .byte 0x4 + .byte 0x1 + .uleb128 0x8a + .string "__useconds_t_defined " + .byte 0x1 + .uleb128 0x8e + .string "__suseconds_t_defined " + .byte 0x1 + .uleb128 0x92 + .string "__need_size_t " + .byte 0x3 + .uleb128 0x94 + .uleb128 0xa + .byte 0x2 + .uleb128 0xec + .string "__need_size_t" + .byte 0x2 + .uleb128 0x199 + .string "__need_NULL" + .byte 0x4 + .byte 0x1 + .uleb128 0xb8 + .string "__intN_t(N,MODE) typedef int int ##N ##_t __attribute__ ((__mode__ (MODE)))" + .byte 0x1 + .uleb128 0xba + .string "__u_intN_t(N,MODE) typedef unsigned int u_int ##N ##_t __attribute__ ((__mode__ (MODE)))" + .byte 0x1 + .uleb128 0xbe + .string "__int8_t_defined " + .byte 0x1 + .uleb128 0xd0 + .string "__BIT_TYPES_DEFINED__ 1" + .byte 0x3 + .uleb128 0xd9 + .file 29 "../../include/sys/select.h" + .uleb128 0x1d + .byte 0x1 + .uleb128 0x17 + .string "_SYS_SELECT_H 1" + .byte 0x3 + .uleb128 0x20 + .file 30 "../../include/bits/select.h" + .uleb128 0x1e + .byte 0x1 + .uleb128 0x1a + .string "__FD_ZERO(s) do { unsigned int __i; fd_set *__arr = (s); for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) __FDS_BITS (__arr)[__i] = 0; } while (0)" + .byte 0x1 + .uleb128 0x21 + .string "__FD_SET(d,s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))" + .byte 0x1 + .uleb128 0x22 + .string "__FD_CLR(d,s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d))" + .byte 0x1 + .uleb128 0x23 + .string "__FD_ISSET(d,s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0)" + .byte 0x4 + .byte 0x3 + .uleb128 0x23 + .file 31 "../../include/bits/sigset.h" + .uleb128 0x1f + .byte 0x1 + .uleb128 0x15 + .string "_SIGSET_H_types 1" + .byte 0x1 + .uleb128 0x1b + .string "_SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))" + .byte 0x4 + .byte 0x1 + .uleb128 0x25 + .string "__sigset_t_defined " + .byte 0x1 + .uleb128 0x2a + .string "__need_time_t " + .byte 0x1 + .uleb128 0x2b + .string "__need_timespec " + .byte 0x3 + .uleb128 0x2d + .uleb128 0x1c + .byte 0x2 + .uleb128 0x44 + .string "__need_clock_t" + .byte 0x2 + .uleb128 0x54 + .string "__need_time_t" + .byte 0x2 + .uleb128 0x60 + .string "__clockid_time_t" + .byte 0x2 + .uleb128 0x6c + .string "__need_timer_t" + .byte 0x1 + .uleb128 0x73 + .string "__timespec_defined 1" + .byte 0x2 + .uleb128 0x80 + .string "__need_timespec" + .byte 0x4 + .byte 0x1 + .uleb128 0x2d + .string "__need_timeval " + .byte 0x3 + .uleb128 0x2f + .file 32 "../../include/bits/time.h" + .uleb128 0x20 + .byte 0x2 + .uleb128 0x42 + .string "__need_timeval" + .byte 0x1 + .uleb128 0x44 + .string "_STRUCT_TIMEVAL 1" + .byte 0x4 + .byte 0x2 + .uleb128 0x3a + .string "__NFDBITS" + .byte 0x2 + .uleb128 0x3b + .string "__FDELT" + .byte 0x2 + .uleb128 0x3c + .string "__FDMASK" + .byte 0x1 + .uleb128 0x3e + .string "__NFDBITS (8 * sizeof (__fd_mask))" + .byte 0x1 + .uleb128 0x3f + .string "__FDELT(d) ((d) / __NFDBITS)" + .byte 0x1 + .uleb128 0x40 + .string "__FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))" + .byte 0x1 + .uleb128 0x49 + .string "__FDS_BITS(set) ((set)->fds_bits)" + .byte 0x1 + .uleb128 0x51 + .string "FD_SETSIZE __FD_SETSIZE" + .byte 0x1 + .uleb128 0x58 + .string "NFDBITS __NFDBITS" + .byte 0x1 + .uleb128 0x5d + .string "FD_SET(fd,fdsetp) __FD_SET (fd, fdsetp)" + .byte 0x1 + .uleb128 0x5e + .string "FD_CLR(fd,fdsetp) __FD_CLR (fd, fdsetp)" + .byte 0x1 + .uleb128 0x5f + .string "FD_ISSET(fd,fdsetp) __FD_ISSET (fd, fdsetp)" + .byte 0x1 + .uleb128 0x60 + .string "FD_ZERO(fdsetp) __FD_ZERO (fdsetp)" + .byte 0x4 + .byte 0x3 + .uleb128 0xdc + .file 33 "../../include/sys/sysmacros.h" + .uleb128 0x21 + .byte 0x1 + .uleb128 0x15 + .string "_SYS_SYSMACROS_H 1" + .byte 0x1 + .uleb128 0x40 + .string "major(dev) gnu_dev_major (dev)" + .byte 0x1 + .uleb128 0x41 + .string "minor(dev) gnu_dev_minor (dev)" + .byte 0x1 + .uleb128 0x42 + .string "makedev(maj,min) gnu_dev_makedev (maj, min)" + .byte 0x4 + .byte 0x1 + .uleb128 0xe1 + .string "__blksize_t_defined " + .byte 0x1 + .uleb128 0xe8 + .string "__blkcnt_t_defined " + .byte 0x1 + .uleb128 0xec + .string "__fsblkcnt_t_defined " + .byte 0x1 + .uleb128 0xf0 + .string "__fsfilcnt_t_defined " + .byte 0x4 + .byte 0x1 + .uleb128 0x1ca + .string "__malloc_and_calloc_defined " + .byte 0x3 + .uleb128 0x1e5 + .file 34 "../../include/alloca.h" + .uleb128 0x22 + .byte 0x1 + .uleb128 0x14 + .string "_ALLOCA_H 1" + .byte 0x1 + .uleb128 0x18 + .string "__need_size_t " + .byte 0x3 + .uleb128 0x1a + .uleb128 0xa + .byte 0x2 + .uleb128 0xec + .string "__need_size_t" + .byte 0x2 + .uleb128 0x199 + .string "__need_NULL" + .byte 0x4 + .byte 0x2 + .uleb128 0x1e + .string "alloca" + .byte 0x1 + .uleb128 0x24 + .string "alloca(size) __builtin_alloca (size)" + .byte 0x1 + .uleb128 0x27 + .string "__MAX_ALLOCA_CUTOFF 65536" + .byte 0x4 + .byte 0x1 + .uleb128 0x232 + .string "__UCLIBC_MAX_ATEXIT 20" + .byte 0x1 + .uleb128 0x285 + .string "__COMPAR_FN_T " + .byte 0x2 + .uleb128 0x35c + .string "__need_malloc_and_calloc" + .byte 0x4 + .byte 0x3 + .uleb128 0xd + .file 35 "../../include/string.h" + .uleb128 0x23 + .byte 0x1 + .uleb128 0x18 + .string "_STRING_H 1" + .byte 0x1 + .uleb128 0x1f + .string "__need_size_t " + .byte 0x1 + .uleb128 0x20 + .string "__need_NULL " + .byte 0x3 + .uleb128 0x22 + .uleb128 0xa + .byte 0x2 + .uleb128 0xec + .string "__need_size_t" + .byte 0x2 + .uleb128 0x18e + .string "NULL" + .byte 0x1 + .uleb128 0x193 + .string "NULL ((void *)0)" + .byte 0x2 + .uleb128 0x199 + .string "__need_NULL" + .byte 0x4 + .byte 0x1 + .uleb128 0x90 + .string "strdupa(s) (__extension__ ({ __const char *__old = (s); size_t __len = strlen (__old) + 1; char *__new = (char *) __builtin_alloca (__len); (char *) memcpy (__new, __old, __len); }))" + .byte 0x1 + .uleb128 0x9a + .string "strndupa(s,n) (__extension__ ({ __const char *__old = (s); size_t __len = strnlen (__old, (n)); char *__new = (char *) __builtin_alloca (__len + 1); __new[__len] = '\\0'; (char *) memcpy (__new, __old, __len); }))" + .byte 0x4 + .byte 0x3 + .uleb128 0xe + .file 36 "../../include/locale.h" + .uleb128 0x24 + .byte 0x1 + .uleb128 0x18 + .string "_LOCALE_H 1" + .byte 0x1 + .uleb128 0x1c + .string "__need_NULL " + .byte 0x3 + .uleb128 0x1e + .uleb128 0xa + .byte 0x2 + .uleb128 0x18e + .string "NULL" + .byte 0x1 + .uleb128 0x193 + .string "NULL ((void *)0)" + .byte 0x2 + .uleb128 0x199 + .string "__need_NULL" + .byte 0x4 + .byte 0x3 + .uleb128 0x1f + .file 37 "../../include/bits/uClibc_locale.h" + .uleb128 0x25 + .byte 0x1 + .uleb128 0x1f + .string "_UCLIBC_LOCALE_H " + .byte 0x2 + .uleb128 0x26 + .string "__LOCALE_C_ONLY" + .byte 0x1 + .uleb128 0x34 + .string "__NL_ITEM_CATEGORY_SHIFT (8)" + .byte 0x1 + .uleb128 0x35 + .string "__NL_ITEM_INDEX_MASK (0xff)" + .byte 0x1 + .uleb128 0x39 + .string "__LC_CTYPE 0" + .byte 0x1 + .uleb128 0x3a + .string "__LC_NUMERIC 1" + .byte 0x1 + .uleb128 0x3b + .string "__LC_MONETARY 2" + .byte 0x1 + .uleb128 0x3c + .string "__LC_TIME 3" + .byte 0x1 + .uleb128 0x3d + .string "__LC_COLLATE 4" + .byte 0x1 + .uleb128 0x3e + .string "__LC_MESSAGES 5" + .byte 0x1 + .uleb128 0x3f + .string "__LC_ALL 6" + .byte 0x3 + .uleb128 0x46 + .uleb128 0xa + .byte 0x1 + .uleb128 0x2b + .string "_STDDEF_H " + .byte 0x1 + .uleb128 0x2c + .string "_STDDEF_H_ " + .byte 0x1 + .uleb128 0x2e + .string "_ANSI_STDDEF_H " + .byte 0x1 + .uleb128 0x30 + .string "__STDDEF_H__ " + .byte 0x1 + .uleb128 0x8d + .string "_PTRDIFF_T " + .byte 0x1 + .uleb128 0x8e + .string "_T_PTRDIFF_ " + .byte 0x1 + .uleb128 0x8f + .string "_T_PTRDIFF " + .byte 0x1 + .uleb128 0x90 + .string "__PTRDIFF_T " + .byte 0x1 + .uleb128 0x91 + .string "_PTRDIFF_T_ " + .byte 0x1 + .uleb128 0x92 + .string "_BSD_PTRDIFF_T_ " + .byte 0x1 + .uleb128 0x93 + .string "___int_ptrdiff_t_h " + .byte 0x1 + .uleb128 0x94 + .string "_GCC_PTRDIFF_T " + .byte 0x2 + .uleb128 0xa3 + .string "__need_ptrdiff_t" + .byte 0x2 + .uleb128 0xec + .string "__need_size_t" + .byte 0x2 + .uleb128 0x159 + .string "__need_wchar_t" + .byte 0x2 + .uleb128 0x18e + .string "NULL" + .byte 0x1 + .uleb128 0x193 + .string "NULL ((void *)0)" + .byte 0x2 + .uleb128 0x199 + .string "__need_NULL" + .byte 0x1 + .uleb128 0x19e + .string "offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)" + .byte 0x4 + .byte 0x3 + .uleb128 0x47 + .file 38 "../../include/stdint.h" + .uleb128 0x26 + .byte 0x1 + .uleb128 0x18 + .string "_STDINT_H 1" + .byte 0x3 + .uleb128 0x1f + .uleb128 0xd + .byte 0x1 + .uleb128 0x13 + .string "__WORDSIZE 32" + .byte 0x4 + .byte 0x1 + .uleb128 0x37 + .string "__uint32_t_defined " + .byte 0x1 + .uleb128 0x81 + .string "__intptr_t_defined " + .byte 0x1 + .uleb128 0x9b + .string "__INT64_C(c) c ## LL" + .byte 0x1 + .uleb128 0x9c + .string "__UINT64_C(c) c ## ULL" + .byte 0x1 + .uleb128 0xa2 + .string "INT8_MIN (-128)" + .byte 0x1 + .uleb128 0xa3 + .string "INT16_MIN (-32767-1)" + .byte 0x1 + .uleb128 0xa4 + .string "INT32_MIN (-2147483647-1)" + .byte 0x1 + .uleb128 0xa5 + .string "INT64_MIN (-__INT64_C(9223372036854775807)-1)" + .byte 0x1 + .uleb128 0xa7 + .string "INT8_MAX (127)" + .byte 0x1 + .uleb128 0xa8 + .string "INT16_MAX (32767)" + .byte 0x1 + .uleb128 0xa9 + .string "INT32_MAX (2147483647)" + .byte 0x1 + .uleb128 0xaa + .string "INT64_MAX (__INT64_C(9223372036854775807))" + .byte 0x1 + .uleb128 0xad + .string "UINT8_MAX (255)" + .byte 0x1 + .uleb128 0xae + .string "UINT16_MAX (65535)" + .byte 0x1 + .uleb128 0xaf + .string "UINT32_MAX (4294967295U)" + .byte 0x1 + .uleb128 0xb0 + .string "UINT64_MAX (__UINT64_C(18446744073709551615))" + .byte 0x1 + .uleb128 0xb4 + .string "INT_LEAST8_MIN (-128)" + .byte 0x1 + .uleb128 0xb5 + .string "INT_LEAST16_MIN (-32767-1)" + .byte 0x1 + .uleb128 0xb6 + .string "INT_LEAST32_MIN (-2147483647-1)" + .byte 0x1 + .uleb128 0xb7 + .string "INT_LEAST64_MIN (-__INT64_C(9223372036854775807)-1)" + .byte 0x1 + .uleb128 0xb9 + .string "INT_LEAST8_MAX (127)" + .byte 0x1 + .uleb128 0xba + .string "INT_LEAST16_MAX (32767)" + .byte 0x1 + .uleb128 0xbb + .string "INT_LEAST32_MAX (2147483647)" + .byte 0x1 + .uleb128 0xbc + .string "INT_LEAST64_MAX (__INT64_C(9223372036854775807))" + .byte 0x1 + .uleb128 0xbf + .string "UINT_LEAST8_MAX (255)" + .byte 0x1 + .uleb128 0xc0 + .string "UINT_LEAST16_MAX (65535)" + .byte 0x1 + .uleb128 0xc1 + .string "UINT_LEAST32_MAX (4294967295U)" + .byte 0x1 + .uleb128 0xc2 + .string "UINT_LEAST64_MAX (__UINT64_C(18446744073709551615))" + .byte 0x1 + .uleb128 0xc6 + .string "INT_FAST8_MIN (-128)" + .byte 0x1 + .uleb128 0xcb + .string "INT_FAST16_MIN (-2147483647-1)" + .byte 0x1 + .uleb128 0xcc + .string "INT_FAST32_MIN (-2147483647-1)" + .byte 0x1 + .uleb128 0xce + .string "INT_FAST64_MIN (-__INT64_C(9223372036854775807)-1)" + .byte 0x1 + .uleb128 0xd0 + .string "INT_FAST8_MAX (127)" + .byte 0x1 + .uleb128 0xd5 + .string "INT_FAST16_MAX (2147483647)" + .byte 0x1 + .uleb128 0xd6 + .string "INT_FAST32_MAX (2147483647)" + .byte 0x1 + .uleb128 0xd8 + .string "INT_FAST64_MAX (__INT64_C(9223372036854775807))" + .byte 0x1 + .uleb128 0xdb + .string "UINT_FAST8_MAX (255)" + .byte 0x1 + .uleb128 0xe0 + .string "UINT_FAST16_MAX (4294967295U)" + .byte 0x1 + .uleb128 0xe1 + .string "UINT_FAST32_MAX (4294967295U)" + .byte 0x1 + .uleb128 0xe3 + .string "UINT_FAST64_MAX (__UINT64_C(18446744073709551615))" + .byte 0x1 + .uleb128 0xec + .string "INTPTR_MIN (-2147483647-1)" + .byte 0x1 + .uleb128 0xed + .string "INTPTR_MAX (2147483647)" + .byte 0x1 + .uleb128 0xee + .string "UINTPTR_MAX (4294967295U)" + .byte 0x1 + .uleb128 0xf3 + .string "INTMAX_MIN (-__INT64_C(9223372036854775807)-1)" + .byte 0x1 + .uleb128 0xf5 + .string "INTMAX_MAX (__INT64_C(9223372036854775807))" + .byte 0x1 + .uleb128 0xf8 + .string "UINTMAX_MAX (__UINT64_C(18446744073709551615))" + .byte 0x1 + .uleb128 0x10a + .string "PTRDIFF_MIN (-2147483647-1)" + .byte 0x1 + .uleb128 0x10b + .string "PTRDIFF_MAX (2147483647)" + .byte 0x1 + .uleb128 0x10f + .string "SIG_ATOMIC_MIN (-2147483647-1)" + .byte 0x1 + .uleb128 0x110 + .string "SIG_ATOMIC_MAX (2147483647)" + .byte 0x1 + .uleb128 0x116 + .string "SIZE_MAX (4294967295U)" + .byte 0x1 + .uleb128 0x11d + .string "WCHAR_MIN __WCHAR_MIN" + .byte 0x1 + .uleb128 0x11e + .string "WCHAR_MAX __WCHAR_MAX" + .byte 0x1 + .uleb128 0x122 + .string "WINT_MIN (0u)" + .byte 0x1 + .uleb128 0x123 + .string "WINT_MAX (4294967295u)" + .byte 0x1 + .uleb128 0x12e + .string "INT8_C(c) c" + .byte 0x1 + .uleb128 0x12f + .string "INT16_C(c) c" + .byte 0x1 + .uleb128 0x130 + .string "INT32_C(c) c" + .byte 0x1 + .uleb128 0x134 + .string "INT64_C(c) c ## LL" + .byte 0x1 + .uleb128 0x138 + .string "UINT8_C(c) c ## U" + .byte 0x1 + .uleb128 0x139 + .string "UINT16_C(c) c ## U" + .byte 0x1 + .uleb128 0x13a + .string "UINT32_C(c) c ## U" + .byte 0x1 + .uleb128 0x13e + .string "UINT64_C(c) c ## ULL" + .byte 0x1 + .uleb128 0x146 + .string "INTMAX_C(c) c ## LL" + .byte 0x1 + .uleb128 0x147 + .string "UINTMAX_C(c) c ## ULL" + .byte 0x4 + .byte 0x3 + .uleb128 0x48 + .file 39 "../../include/bits/uClibc_touplow.h" + .uleb128 0x27 + .byte 0x1 + .uleb128 0x1f + .string "_UCLIBC_TOUPLOW_H " + .byte 0x1 + .uleb128 0x2b + .string "__UCLIBC_CTYPE_B_TBL_OFFSET 128" + .byte 0x1 + .uleb128 0x2c + .string "__UCLIBC_CTYPE_TO_TBL_OFFSET 128" + .byte 0x4 + .byte 0x3 + .uleb128 0x4b + .file 40 "../../include/bits/uClibc_locale_data.h" + .uleb128 0x28 + .byte 0x1 + .uleb128 0x1 + .string "__lc_time_data_LEN 25900" + .byte 0x1 + .uleb128 0x2 + .string "__lc_time_rows_LEN 7650" + .byte 0x1 + .uleb128 0x3 + .string "__lc_time_item_offsets_LEN 50" + .byte 0x1 + .uleb128 0x4 + .string "__lc_time_item_idx_LEN 3190" + .byte 0x1 + .uleb128 0x5 + .string "__lc_numeric_data_LEN 22" + .byte 0x1 + .uleb128 0x6 + .string "__lc_numeric_rows_LEN 42" + .byte 0x1 + .uleb128 0x7 + .string "__lc_numeric_item_offsets_LEN 3" + .byte 0x1 + .uleb128 0x8 + .string "__lc_numeric_item_idx_LEN 13" + .byte 0x1 + .uleb128 0x9 + .string "__lc_monetary_data_LEN 1578" + .byte 0x1 + .uleb128 0xa + .string "__lc_monetary_rows_LEN 3652" + .byte 0x1 + .uleb128 0xb + .string "__lc_monetary_item_offsets_LEN 22" + .byte 0x1 + .uleb128 0xc + .string "__lc_monetary_item_idx_LEN 391" + .byte 0x1 + .uleb128 0xd + .string "__lc_messages_data_LEN 1583" + .byte 0x1 + .uleb128 0xe + .string "__lc_messages_rows_LEN 312" + .byte 0x1 + .uleb128 0xf + .string "__lc_messages_item_offsets_LEN 4" + .byte 0x1 + .uleb128 0x10 + .string "__lc_messages_item_idx_LEN 170" + .byte 0x1 + .uleb128 0x11 + .string "__lc_ctype_data_LEN 51" + .byte 0x1 + .uleb128 0x12 + .string "__lc_ctype_rows_LEN 20" + .byte 0x1 + .uleb128 0x13 + .string "__lc_ctype_item_offsets_LEN 10" + .byte 0x1 + .uleb128 0x14 + .string "__lc_ctype_item_idx_LEN 20" + .byte 0x1 + .uleb128 0x15 + .string "__CTYPE_HAS_UTF_8_LOCALES 1" + .byte 0x1 + .uleb128 0x16 + .string "__LOCALE_DATA_CATEGORIES 6" + .byte 0x1 + .uleb128 0x17 + .string "__LOCALE_DATA_WIDTH_LOCALES 9" + .byte 0x1 + .uleb128 0x18 + .string "__LOCALE_DATA_NUM_LOCALES 315" + .byte 0x1 + .uleb128 0x19 + .string "__LOCALE_DATA_NUM_LOCALE_NAMES 167" + .byte 0x1 + .uleb128 0x1a + .string "__LOCALE_DATA_AT_MODIFIERS_LENGTH 18" + .byte 0x1 + .uleb128 0x1b + .string "__lc_names_LEN 69" + .byte 0x1 + .uleb128 0x1c + .string "__lc_collate_data_LEN 91141" + .byte 0x1 + .uleb128 0x1d + .string "__CTYPE_HAS_8_BIT_LOCALES 1" + .byte 0x1 + .uleb128 0x1f + .string "__LOCALE_DATA_Cctype_IDX_SHIFT 3" + .byte 0x1 + .uleb128 0x20 + .string "__LOCALE_DATA_Cctype_IDX_LEN 16" + .byte 0x1 + .uleb128 0x21 + .string "__LOCALE_DATA_Cctype_ROW_LEN 4" + .byte 0x1 + .uleb128 0x22 + .string "__LOCALE_DATA_Cctype_PACKED 1" + .byte 0x1 + .uleb128 0x24 + .string "__LOCALE_DATA_Cuplow_IDX_SHIFT 3" + .byte 0x1 + .uleb128 0x25 + .string "__LOCALE_DATA_Cuplow_IDX_LEN 16" + .byte 0x1 + .uleb128 0x26 + .string "__LOCALE_DATA_Cuplow_ROW_LEN 8" + .byte 0x1 + .uleb128 0x28 + .string "__LOCALE_DATA_Cc2wc_IDX_LEN 16" + .byte 0x1 + .uleb128 0x29 + .string "__LOCALE_DATA_Cc2wc_IDX_SHIFT 3" + .byte 0x1 + .uleb128 0x2a + .string "__LOCALE_DATA_Cc2wc_ROW_LEN 8" + .byte 0x1 + .uleb128 0x34 + .string "__LOCALE_DATA_Cwc2c_DOMAIN_MAX 0x25ff" + .byte 0x1 + .uleb128 0x35 + .string "__LOCALE_DATA_Cwc2c_TI_SHIFT 4" + .byte 0x1 + .uleb128 0x36 + .string "__LOCALE_DATA_Cwc2c_TT_SHIFT 4" + .byte 0x1 + .uleb128 0x37 + .string "__LOCALE_DATA_Cwc2c_II_LEN 38" + .byte 0x1 + .uleb128 0x38 + .string "__LOCALE_DATA_Cwc2c_TI_LEN 1072" + .byte 0x1 + .uleb128 0x39 + .string "__LOCALE_DATA_Cwc2c_TT_LEN 3456" + .byte 0x1 + .uleb128 0x3c + .string "__LOCALE_DATA_Cwc2c_TBL_LEN 4528" + .byte 0x1 + .uleb128 0x3e + .string "__LOCALE_DATA_Cuplow_TBL_LEN 504" + .byte 0x1 + .uleb128 0x41 + .string "__LOCALE_DATA_Cctype_TBL_LEN 420" + .byte 0x1 + .uleb128 0x44 + .string "__LOCALE_DATA_Cc2wc_TBL_LEN 1760" + .byte 0x1 + .uleb128 0x48 + .string "__LOCALE_DATA_NUM_CODESETS 23" + .byte 0x1 + .uleb128 0x49 + .ascii "__LOCALE_DATA_CODESET_LIST \"\\x18\\x22\\x31\\x38\\x3f\\x4b\\" + .ascii "x56\\x62\" \"\\x6e\\x7a\\x86\\x92\\x9d\\xa8\\xb3\\xbe\" \"\\" + .ascii "xc9\\xd4\\xdf\\xea\\xf1\\xf8\\xff\" \"\\0\" \"ARMSCII-8\\0\"" + .ascii " \"ANSI_X3.4-1968\\0\" \"CP1251\\0\" \"CP1255\\0\" \"GEORGIA" + .ascii "N-PS\\0\" \"IS" + .string "O-8859-1\\0\" \"ISO-8859-10\\0\" \"ISO-8859-13\\0\" \"ISO-8859-14\\0\" \"ISO-8859-15\\0\" \"ISO-8859-16\\0\" \"ISO-8859-2\\0\" \"ISO-8859-3\\0\" \"ISO-8859-4\\0\" \"ISO-8859-5\\0\" \"ISO-8859-6\\0\" \"ISO-8859-7\\0\" \"ISO-8859-8\\0\" \"ISO-8859-9\\0\" \"KOI8-R\\0\" \"KOI8-T\\0\" \"KOI8-U\\0\" \"TIS-620\\0\"" + .byte 0x1 + .uleb128 0x66 + .string "__CTYPE_HAS_CODESET_ARMSCII_8 " + .byte 0x1 + .uleb128 0x67 + .string "__CTYPE_HAS_CODESET_ANSI_X3 .4_1968" + .byte 0x1 + .uleb128 0x68 + .string "__CTYPE_HAS_CODESET_CP1251 " + .byte 0x1 + .uleb128 0x69 + .string "__CTYPE_HAS_CODESET_CP1255 " + .byte 0x1 + .uleb128 0x6a + .string "__CTYPE_HAS_CODESET_GEORGIAN_PS " + .byte 0x1 + .uleb128 0x6b + .string "__CTYPE_HAS_CODESET_ISO_8859_1 " + .byte 0x1 + .uleb128 0x6c + .string "__CTYPE_HAS_CODESET_ISO_8859_10 " + .byte 0x1 + .uleb128 0x6d + .string "__CTYPE_HAS_CODESET_ISO_8859_13 " + .byte 0x1 + .uleb128 0x6e + .string "__CTYPE_HAS_CODESET_ISO_8859_14 " + .byte 0x1 + .uleb128 0x6f + .string "__CTYPE_HAS_CODESET_ISO_8859_15 " + .byte 0x1 + .uleb128 0x70 + .string "__CTYPE_HAS_CODESET_ISO_8859_16 " + .byte 0x1 + .uleb128 0x71 + .string "__CTYPE_HAS_CODESET_ISO_8859_2 " + .byte 0x1 + .uleb128 0x72 + .string "__CTYPE_HAS_CODESET_ISO_8859_3 " + .byte 0x1 + .uleb128 0x73 + .string "__CTYPE_HAS_CODESET_ISO_8859_4 " + .byte 0x1 + .uleb128 0x74 + .string "__CTYPE_HAS_CODESET_ISO_8859_5 " + .byte 0x1 + .uleb128 0x75 + .string "__CTYPE_HAS_CODESET_ISO_8859_6 " + .byte 0x1 + .uleb128 0x76 + .string "__CTYPE_HAS_CODESET_ISO_8859_7 " + .byte 0x1 + .uleb128 0x77 + .string "__CTYPE_HAS_CODESET_ISO_8859_8 " + .byte 0x1 + .uleb128 0x78 + .string "__CTYPE_HAS_CODESET_ISO_8859_9 " + .byte 0x1 + .uleb128 0x79 + .string "__CTYPE_HAS_CODESET_KOI8_R " + .byte 0x1 + .uleb128 0x7a + .string "__CTYPE_HAS_CODESET_KOI8_T " + .byte 0x1 + .uleb128 0x7b + .string "__CTYPE_HAS_CODESET_KOI8_U " + .byte 0x1 + .uleb128 0x7c + .string "__CTYPE_HAS_CODESET_TIS_620 " + .byte 0x1 + .uleb128 0x7d + .string "__CTYPE_HAS_CODESET_UTF_8 " + .byte 0x1 + .uleb128 0x7e + .string "__LOCALE_DATA_WC_TABLE_DOMAIN_MAX 0x2ffff" + .byte 0x1 + .uleb128 0x80 + .string "__LOCALE_DATA_WCctype_II_LEN 768" + .byte 0x1 + .uleb128 0x81 + .string "__LOCALE_DATA_WCctype_TI_LEN 1888" + .byte 0x1 + .uleb128 0x82 + .string "__LOCALE_DATA_WCctype_UT_LEN 948" + .byte 0x1 + .uleb128 0x83 + .string "__LOCALE_DATA_WCctype_II_SHIFT 5" + .byte 0x1 + .uleb128 0x84 + .string "__LOCALE_DATA_WCctype_TI_SHIFT 3" + .byte 0x1 + .uleb128 0x87 + .string "__LOCALE_DATA_WCuplow_II_LEN 384" + .byte 0x1 + .uleb128 0x88 + .string "__LOCALE_DATA_WCuplow_TI_LEN 576" + .byte 0x1 + .uleb128 0x89 + .string "__LOCALE_DATA_WCuplow_UT_LEN 720" + .byte 0x1 + .uleb128 0x8a + .string "__LOCALE_DATA_WCuplow_II_SHIFT 6" + .byte 0x1 + .uleb128 0x8b + .string "__LOCALE_DATA_WCuplow_TI_SHIFT 3" + .byte 0x1 + .uleb128 0x8e + .string "__LOCALE_DATA_WCuplow_diffs 98" + .byte 0x1 + .uleb128 0x96 + .string "__WCHAR_ENABLED " + .byte 0x1 + .uleb128 0x9b + .string "__LOCALE_DATA_WCctype_TBL_LEN (__LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + __LOCALE_DATA_WCctype_UT_LEN)" + .byte 0x1 + .uleb128 0x9c + .string "__LOCALE_DATA_WCuplow_TBL_LEN (__LOCALE_DATA_WCuplow_II_LEN + __LOCALE_DATA_WCuplow_TI_LEN + __LOCALE_DATA_WCuplow_UT_LEN)" + .byte 0x1 + .uleb128 0x9d + .string "__LOCALE_DATA_WCuplow_diff_TBL_LEN (2 * __LOCALE_DATA_WCuplow_diffs)" + .byte 0x2 + .uleb128 0xa1 + .string "__PASTE2" + .byte 0x1 + .uleb128 0xa2 + .string "__PASTE2(A,B) A ## B" + .byte 0x2 + .uleb128 0xa3 + .string "__PASTE3" + .byte 0x1 + .uleb128 0xa4 + .string "__PASTE3(A,B,C) A ## B ## C" + .byte 0x1 + .uleb128 0xa6 + .string "__LOCALE_DATA_COMMON_MMAP(X) unsigned char __PASTE3(lc_,X,_data)[__PASTE3(__lc_,X,_data_LEN)];" + .byte 0x1 + .uleb128 0xa9 + .string "__LOCALE_DATA_COMMON_MMIDX(X) unsigned char __PASTE3(lc_,X,_rows)[__PASTE3(__lc_,X,_rows_LEN)]; uint16_t __PASTE3(lc_,X,_item_offsets)[__PASTE3(__lc_,X,_item_offsets_LEN)]; uint16_t __PASTE3(lc_,X,_item_idx)[__PASTE3(__lc_,X,_item_idx_LEN)];" + .byte 0x4 + .byte 0x1 + .uleb128 0x57 + .string "LOCALE_STRING_SIZE (2 * __LC_ALL + 2)" + .byte 0x1 + .uleb128 0x163 + .string "__UCLIBC_CURLOCALE (__global_locale)" + .byte 0x1 + .uleb128 0x164 + .string "__UCLIBC_CURLOCALE_DATA (*__global_locale)" + .byte 0x1 + .uleb128 0x171 + .string "__XL_NPP(N) N" + .byte 0x1 + .uleb128 0x172 + .string "__LOCALE_PARAM " + .byte 0x1 + .uleb128 0x173 + .string "__LOCALE_ARG " + .byte 0x1 + .uleb128 0x174 + .string "__LOCALE_PTR __UCLIBC_CURLOCALE" + .byte 0x4 + .byte 0x1 + .uleb128 0x24 + .string "LC_CTYPE __LC_CTYPE" + .byte 0x1 + .uleb128 0x25 + .string "LC_NUMERIC __LC_NUMERIC" + .byte 0x1 + .uleb128 0x26 + .string "LC_TIME __LC_TIME" + .byte 0x1 + .uleb128 0x27 + .string "LC_COLLATE __LC_COLLATE" + .byte 0x1 + .uleb128 0x28 + .string "LC_MONETARY __LC_MONETARY" + .byte 0x1 + .uleb128 0x29 + .string "LC_MESSAGES __LC_MESSAGES" + .byte 0x1 + .uleb128 0x32 + .string "LC_ALL __LC_ALL" + .byte 0x1 + .uleb128 0xa5 + .string "LC_CTYPE_MASK (1 << __LC_CTYPE)" + .byte 0x1 + .uleb128 0xa6 + .string "LC_NUMERIC_MASK (1 << __LC_NUMERIC)" + .byte 0x1 + .uleb128 0xa7 + .string "LC_TIME_MASK (1 << __LC_TIME)" + .byte 0x1 + .uleb128 0xa8 + .string "LC_COLLATE_MASK (1 << __LC_COLLATE)" + .byte 0x1 + .uleb128 0xa9 + .string "LC_MONETARY_MASK (1 << __LC_MONETARY)" + .byte 0x1 + .uleb128 0xaa + .string "LC_MESSAGES_MASK (1 << __LC_MESSAGES)" + .byte 0x1 + .uleb128 0xc3 + .string "LC_ALL_MASK (LC_CTYPE_MASK | LC_NUMERIC_MASK | LC_TIME_MASK | LC_COLLATE_MASK | LC_MONETARY_MASK | LC_MESSAGES_MASK )" + .byte 0x1 + .uleb128 0xdd + .string "LC_GLOBAL_LOCALE ((__locale_t) -1L)" + .byte 0x4 + .byte 0x3 + .uleb128 0xf + .file 41 "../../include/errno.h" + .uleb128 0x29 + .byte 0x1 + .uleb128 0x1c + .string "_ERRNO_H 1" + .byte 0x3 + .uleb128 0x25 + .file 42 "../../include/bits/errno.h" + .uleb128 0x2a + .byte 0x3 + .uleb128 0x17 + .file 43 "../../include/bits/errno_values.h" + .uleb128 0x2b + .byte 0x1 + .uleb128 0x2 + .string "_BITS_ERRNO_VALUES_H " + .byte 0x1 + .uleb128 0xc + .string "EPERM 1" + .byte 0x1 + .uleb128 0xd + .string "ENOENT 2" + .byte 0x1 + .uleb128 0xe + .string "ESRCH 3" + .byte 0x1 + .uleb128 0xf + .string "EINTR 4" + .byte 0x1 + .uleb128 0x10 + .string "EIO 5" + .byte 0x1 + .uleb128 0x11 + .string "ENXIO 6" + .byte 0x1 + .uleb128 0x12 + .string "E2BIG 7" + .byte 0x1 + .uleb128 0x13 + .string "ENOEXEC 8" + .byte 0x1 + .uleb128 0x14 + .string "EBADF 9" + .byte 0x1 + .uleb128 0x15 + .string "ECHILD 10" + .byte 0x1 + .uleb128 0x16 + .string "EAGAIN 11" + .byte 0x1 + .uleb128 0x17 + .string "ENOMEM 12" + .byte 0x1 + .uleb128 0x18 + .string "EACCES 13" + .byte 0x1 + .uleb128 0x19 + .string "EFAULT 14" + .byte 0x1 + .uleb128 0x1a + .string "ENOTBLK 15" + .byte 0x1 + .uleb128 0x1b + .string "EBUSY 16" + .byte 0x1 + .uleb128 0x1c + .string "EEXIST 17" + .byte 0x1 + .uleb128 0x1d + .string "EXDEV 18" + .byte 0x1 + .uleb128 0x1e + .string "ENODEV 19" + .byte 0x1 + .uleb128 0x1f + .string "ENOTDIR 20" + .byte 0x1 + .uleb128 0x20 + .string "EISDIR 21" + .byte 0x1 + .uleb128 0x21 + .string "EINVAL 22" + .byte 0x1 + .uleb128 0x22 + .string "ENFILE 23" + .byte 0x1 + .uleb128 0x23 + .string "EMFILE 24" + .byte 0x1 + .uleb128 0x24 + .string "ENOTTY 25" + .byte 0x1 + .uleb128 0x25 + .string "ETXTBSY 26" + .byte 0x1 + .uleb128 0x26 + .string "EFBIG 27" + .byte 0x1 + .uleb128 0x27 + .string "ENOSPC 28" + .byte 0x1 + .uleb128 0x28 + .string "ESPIPE 29" + .byte 0x1 + .uleb128 0x29 + .string "EROFS 30" + .byte 0x1 + .uleb128 0x2a + .string "EMLINK 31" + .byte 0x1 + .uleb128 0x2b + .string "EPIPE 32" + .byte 0x1 + .uleb128 0x2c + .string "EDOM 33" + .byte 0x1 + .uleb128 0x2d + .string "ERANGE 34" + .byte 0x1 + .uleb128 0x2e + .string "EDEADLK 35" + .byte 0x1 + .uleb128 0x2f + .string "ENAMETOOLONG 36" + .byte 0x1 + .uleb128 0x30 + .string "ENOLCK 37" + .byte 0x1 + .uleb128 0x31 + .string "ENOSYS 38" + .byte 0x1 + .uleb128 0x32 + .string "ENOTEMPTY 39" + .byte 0x1 + .uleb128 0x33 + .string "ELOOP 40" + .byte 0x1 + .uleb128 0x34 + .string "EWOULDBLOCK EAGAIN" + .byte 0x1 + .uleb128 0x35 + .string "ENOMSG 42" + .byte 0x1 + .uleb128 0x36 + .string "EIDRM 43" + .byte 0x1 + .uleb128 0x37 + .string "ECHRNG 44" + .byte 0x1 + .uleb128 0x38 + .string "EL2NSYNC 45" + .byte 0x1 + .uleb128 0x39 + .string "EL3HLT 46" + .byte 0x1 + .uleb128 0x3a + .string "EL3RST 47" + .byte 0x1 + .uleb128 0x3b + .string "ELNRNG 48" + .byte 0x1 + .uleb128 0x3c + .string "EUNATCH 49" + .byte 0x1 + .uleb128 0x3d + .string "ENOCSI 50" + .byte 0x1 + .uleb128 0x3e + .string "EL2HLT 51" + .byte 0x1 + .uleb128 0x3f + .string "EBADE 52" + .byte 0x1 + .uleb128 0x40 + .string "EBADR 53" + .byte 0x1 + .uleb128 0x41 + .string "EXFULL 54" + .byte 0x1 + .uleb128 0x42 + .string "ENOANO 55" + .byte 0x1 + .uleb128 0x43 + .string "EBADRQC 56" + .byte 0x1 + .uleb128 0x44 + .string "EBADSLT 57" + .byte 0x1 + .uleb128 0x45 + .string "EDEADLOCK EDEADLK" + .byte 0x1 + .uleb128 0x46 + .string "EBFONT 59" + .byte 0x1 + .uleb128 0x47 + .string "ENOSTR 60" + .byte 0x1 + .uleb128 0x48 + .string "ENODATA 61" + .byte 0x1 + .uleb128 0x49 + .string "ETIME 62" + .byte 0x1 + .uleb128 0x4a + .string "ENOSR 63" + .byte 0x1 + .uleb128 0x4b + .string "ENONET 64" + .byte 0x1 + .uleb128 0x4c + .string "ENOPKG 65" + .byte 0x1 + .uleb128 0x4d + .string "EREMOTE 66" + .byte 0x1 + .uleb128 0x4e + .string "ENOLINK 67" + .byte 0x1 + .uleb128 0x4f + .string "EADV 68" + .byte 0x1 + .uleb128 0x50 + .string "ESRMNT 69" + .byte 0x1 + .uleb128 0x51 + .string "ECOMM 70" + .byte 0x1 + .uleb128 0x52 + .string "EPROTO 71" + .byte 0x1 + .uleb128 0x53 + .string "EMULTIHOP 72" + .byte 0x1 + .uleb128 0x54 + .string "EDOTDOT 73" + .byte 0x1 + .uleb128 0x55 + .string "EBADMSG 74" + .byte 0x1 + .uleb128 0x56 + .string "EOVERFLOW 75" + .byte 0x1 + .uleb128 0x57 + .string "ENOTUNIQ 76" + .byte 0x1 + .uleb128 0x58 + .string "EBADFD 77" + .byte 0x1 + .uleb128 0x59 + .string "EREMCHG 78" + .byte 0x1 + .uleb128 0x5a + .string "ELIBACC 79" + .byte 0x1 + .uleb128 0x5b + .string "ELIBBAD 80" + .byte 0x1 + .uleb128 0x5c + .string "ELIBSCN 81" + .byte 0x1 + .uleb128 0x5d + .string "ELIBMAX 82" + .byte 0x1 + .uleb128 0x5e + .string "ELIBEXEC 83" + .byte 0x1 + .uleb128 0x5f + .string "EILSEQ 84" + .byte 0x1 + .uleb128 0x60 + .string "ERESTART 85" + .byte 0x1 + .uleb128 0x61 + .string "ESTRPIPE 86" + .byte 0x1 + .uleb128 0x62 + .string "EUSERS 87" + .byte 0x1 + .uleb128 0x63 + .string "ENOTSOCK 88" + .byte 0x1 + .uleb128 0x64 + .string "EDESTADDRREQ 89" + .byte 0x1 + .uleb128 0x65 + .string "EMSGSIZE 90" + .byte 0x1 + .uleb128 0x66 + .string "EPROTOTYPE 91" + .byte 0x1 + .uleb128 0x67 + .string "ENOPROTOOPT 92" + .byte 0x1 + .uleb128 0x68 + .string "EPROTONOSUPPORT 93" + .byte 0x1 + .uleb128 0x69 + .string "ESOCKTNOSUPPORT 94" + .byte 0x1 + .uleb128 0x6a + .string "EOPNOTSUPP 95" + .byte 0x1 + .uleb128 0x6b + .string "EPFNOSUPPORT 96" + .byte 0x1 + .uleb128 0x6c + .string "EAFNOSUPPORT 97" + .byte 0x1 + .uleb128 0x6d + .string "EADDRINUSE 98" + .byte 0x1 + .uleb128 0x6e + .string "EADDRNOTAVAIL 99" + .byte 0x1 + .uleb128 0x6f + .string "ENETDOWN 100" + .byte 0x1 + .uleb128 0x70 + .string "ENETUNREACH 101" + .byte 0x1 + .uleb128 0x71 + .string "ENETRESET 102" + .byte 0x1 + .uleb128 0x72 + .string "ECONNABORTED 103" + .byte 0x1 + .uleb128 0x73 + .string "ECONNRESET 104" + .byte 0x1 + .uleb128 0x74 + .string "ENOBUFS 105" + .byte 0x1 + .uleb128 0x75 + .string "EISCONN 106" + .byte 0x1 + .uleb128 0x76 + .string "ENOTCONN 107" + .byte 0x1 + .uleb128 0x77 + .string "ESHUTDOWN 108" + .byte 0x1 + .uleb128 0x78 + .string "ETOOMANYREFS 109" + .byte 0x1 + .uleb128 0x79 + .string "ETIMEDOUT 110" + .byte 0x1 + .uleb128 0x7a + .string "ECONNREFUSED 111" + .byte 0x1 + .uleb128 0x7b + .string "EHOSTDOWN 112" + .byte 0x1 + .uleb128 0x7c + .string "EHOSTUNREACH 113" + .byte 0x1 + .uleb128 0x7d + .string "EALREADY 114" + .byte 0x1 + .uleb128 0x7e + .string "EINPROGRESS 115" + .byte 0x1 + .uleb128 0x7f + .string "ESTALE 116" + .byte 0x1 + .uleb128 0x80 + .string "EUCLEAN 117" + .byte 0x1 + .uleb128 0x81 + .string "ENOTNAM 118" + .byte 0x1 + .uleb128 0x82 + .string "ENAVAIL 119" + .byte 0x1 + .uleb128 0x83 + .string "EISNAM 120" + .byte 0x1 + .uleb128 0x84 + .string "EREMOTEIO 121" + .byte 0x1 + .uleb128 0x85 + .string "EDQUOT 122" + .byte 0x1 + .uleb128 0x86 + .string "ENOMEDIUM 123" + .byte 0x1 + .uleb128 0x87 + .string "EMEDIUMTYPE 124" + .byte 0x4 + .byte 0x1 + .uleb128 0x19 + .string "ENOTSUP EOPNOTSUPP" + .byte 0x1 + .uleb128 0x1d + .string "ECANCELED 125" + .byte 0x1 + .uleb128 0x27 + .string "errno (*__errno_location ())" + .byte 0x4 + .byte 0x2 + .uleb128 0x25 + .string "__need_Emath" + .byte 0x2 + .uleb128 0x3f + .string "errno" + .byte 0x1 + .uleb128 0x41 + .string "errno __libc_errno" + .byte 0x1 + .uleb128 0x4a + .string "__set_errno(val) (errno = (val))" + .byte 0x1 + .uleb128 0x5a + .string "__error_t_defined 1" + .byte 0x2 + .uleb128 0x5c + .string "__need_error_t" + .byte 0x4 + .byte 0x3 + .uleb128 0x10 + .file 44 "../../include/signal.h" + .uleb128 0x2c + .byte 0x1 + .uleb128 0x1a + .string "_SIGNAL_H " + .byte 0x3 + .uleb128 0x22 + .uleb128 0x1f + .byte 0x1 + .uleb128 0x2b + .string "_SIGSET_H_fns 1" + .byte 0x1 + .uleb128 0x2e + .string "_EXTERN_INLINE extern __inline" + .byte 0x1 + .uleb128 0x32 + .string "__sigmask(sig) (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int))))" + .byte 0x1 + .uleb128 0x36 + .string "__sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int)))" + .byte 0x1 + .uleb128 0x39 + .string "__sigemptyset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__set = (set); while (--__cnt >= 0) __set->__val[__cnt] = 0; 0; }))" + .byte 0x1 + .uleb128 0x3e + .string "__sigfillset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__set = (set); while (--__cnt >= 0) __set->__val[__cnt] = ~0UL; 0; }))" + .byte 0x1 + .uleb128 0x48 + .string "__sigisemptyset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; const sigset_t *__set = (set); int __ret = __set->__val[--__cnt]; while (!__ret && --__cnt >= 0) __ret = __set->__val[__cnt]; __ret == 0; }))" + .byte 0x1 + .uleb128 0x4f + .ascii "__sigandset(" + .string "dest,left,right) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__dest = (dest); const sigset_t *__left = (left); const sigset_t *__right = (right); while (--__cnt >= 0) __dest->__val[__cnt] = (__left->__val[__cnt] & __right->__val[__cnt]); 0; }))" + .byte 0x1 + .uleb128 0x58 + .ascii "__sigorset(" + .string "dest,left,right) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__dest = (dest); const sigset_t *__left = (left); const sigset_t *__right = (right); while (--__cnt >= 0) __dest->__val[__cnt] = (__left->__val[__cnt] | __right->__val[__cnt]); 0; }))" + .byte 0x4 + .byte 0x1 + .uleb128 0x27 + .string "__sig_atomic_t_defined " + .byte 0x2 + .uleb128 0x2c + .string "__need_sig_atomic_t" + .byte 0x2 + .uleb128 0x34 + .string "__need_sigset_t" + .byte 0x3 + .uleb128 0x3b + .file 45 "../../include/bits/signum.h" + .uleb128 0x2d + .byte 0x1 + .uleb128 0x17 + .string "SIG_ERR ((__sighandler_t) -1)" + .byte 0x1 + .uleb128 0x18 + .string "SIG_DFL ((__sighandler_t) 0)" + .byte 0x1 + .uleb128 0x19 + .string "SIG_IGN ((__sighandler_t) 1)" + .byte 0x1 + .uleb128 0x1c + .string "SIG_HOLD ((__sighandler_t) 2)" + .byte 0x1 + .uleb128 0x21 + .string "SIGHUP 1" + .byte 0x1 + .uleb128 0x22 + .string "SIGINT 2" + .byte 0x1 + .uleb128 0x23 + .string "SIGQUIT 3" + .byte 0x1 + .uleb128 0x24 + .string "SIGILL 4" + .byte 0x1 + .uleb128 0x25 + .string "SIGTRAP 5" + .byte 0x1 + .uleb128 0x26 + .string "SIGABRT 6" + .byte 0x1 + .uleb128 0x27 + .string "SIGIOT 6" + .byte 0x1 + .uleb128 0x28 + .string "SIGBUS 7" + .byte 0x1 + .uleb128 0x29 + .string "SIGFPE 8" + .byte 0x1 + .uleb128 0x2a + .string "SIGKILL 9" + .byte 0x1 + .uleb128 0x2b + .string "SIGUSR1 10" + .byte 0x1 + .uleb128 0x2c + .string "SIGSEGV 11" + .byte 0x1 + .uleb128 0x2d + .string "SIGUSR2 12" + .byte 0x1 + .uleb128 0x2e + .string "SIGPIPE 13" + .byte 0x1 + .uleb128 0x2f + .string "SIGALRM 14" + .byte 0x1 + .uleb128 0x30 + .string "SIGTERM 15" + .byte 0x1 + .uleb128 0x31 + .string "SIGSTKFLT 16" + .byte 0x1 + .uleb128 0x32 + .string "SIGCLD SIGCHLD" + .byte 0x1 + .uleb128 0x33 + .string "SIGCHLD 17" + .byte 0x1 + .uleb128 0x34 + .string "SIGCONT 18" + .byte 0x1 + .uleb128 0x35 + .string "SIGSTOP 19" + .byte 0x1 + .uleb128 0x36 + .string "SIGTSTP 20" + .byte 0x1 + .uleb128 0x37 + .string "SIGTTIN 21" + .byte 0x1 + .uleb128 0x38 + .string "SIGTTOU 22" + .byte 0x1 + .uleb128 0x39 + .string "SIGURG 23" + .byte 0x1 + .uleb128 0x3a + .string "SIGXCPU 24" + .byte 0x1 + .uleb128 0x3b + .string "SIGXFSZ 25" + .byte 0x1 + .uleb128 0x3c + .string "SIGVTALRM 26" + .byte 0x1 + .uleb128 0x3d + .string "SIGPROF 27" + .byte 0x1 + .uleb128 0x3e + .string "SIGWINCH 28" + .byte 0x1 + .uleb128 0x3f + .string "SIGPOLL SIGIO" + .byte 0x1 + .uleb128 0x40 + .string "SIGIO 29" + .byte 0x1 + .uleb128 0x41 + .string "SIGPWR 30" + .byte 0x1 + .uleb128 0x42 + .string "SIGSYS 31" + .byte 0x1 + .uleb128 0x43 + .string "SIGUNUSED 31" + .byte 0x1 + .uleb128 0x45 + .string "_NSIG 64" + .byte 0x1 + .uleb128 0x48 + .string "SIGRTMIN (__libc_current_sigrtmin ())" + .byte 0x1 + .uleb128 0x49 + .string "SIGRTMAX (__libc_current_sigrtmax ())" + .byte 0x1 + .uleb128 0x4d + .string "__SIGRTMIN 32" + .byte 0x1 + .uleb128 0x4e + .string "__SIGRTMAX (_NSIG - 1)" + .byte 0x4 + .byte 0x1 + .uleb128 0xa3 + .string "sigpause(sig) __sigpause ((sig), 1)" + .byte 0x1 + .uleb128 0xaf + .string "sigmask(sig) __sigmask(sig)" + .byte 0x1 + .uleb128 0xbd + .string "NSIG _NSIG" + .byte 0x1 + .uleb128 0xcd + .string "__need_timespec " + .byte 0x3 + .uleb128 0xcf + .uleb128 0x1c + .byte 0x2 + .uleb128 0x44 + .string "__need_clock_t" + .byte 0x2 + .uleb128 0x54 + .string "__need_time_t" + .byte 0x2 + .uleb128 0x60 + .string "__clockid_time_t" + .byte 0x2 + .uleb128 0x6c + .string "__need_timer_t" + .byte 0x2 + .uleb128 0x80 + .string "__need_timespec" + .byte 0x4 + .byte 0x3 + .uleb128 0xd2 + .file 46 "../../include/bits/siginfo.h" + .uleb128 0x2e + .byte 0x3 + .uleb128 0x1a + .uleb128 0xd + .byte 0x1 + .uleb128 0x13 + .string "__WORDSIZE 32" + .byte 0x4 + .byte 0x1 + .uleb128 0x1e + .string "__have_sigval_t 1" + .byte 0x1 + .uleb128 0x2a + .string "__have_siginfo_t 1" + .byte 0x1 + .uleb128 0x2c + .string "__SI_MAX_SIZE 128" + .byte 0x1 + .uleb128 0x30 + .string "__SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)" + .byte 0x1 + .uleb128 0x6f + .string "si_pid _sifields._kill.si_pid" + .byte 0x1 + .uleb128 0x70 + .string "si_uid _sifields._kill.si_uid" + .byte 0x1 + .uleb128 0x71 + .string "si_timer1 _sifields._timer._timer1" + .byte 0x1 + .uleb128 0x72 + .string "si_timer2 _sifields._timer._timer2" + .byte 0x1 + .uleb128 0x73 + .string "si_status _sifields._sigchld.si_status" + .byte 0x1 + .uleb128 0x74 + .string "si_utime _sifields._sigchld.si_utime" + .byte 0x1 + .uleb128 0x75 + .string "si_stime _sifields._sigchld.si_stime" + .byte 0x1 + .uleb128 0x76 + .string "si_value _sifields._rt.si_sigval" + .byte 0x1 + .uleb128 0x77 + .string "si_int _sifields._rt.si_sigval.sival_int" + .byte 0x1 + .uleb128 0x78 + .string "si_ptr _sifields._rt.si_sigval.sival_ptr" + .byte 0x1 + .uleb128 0x79 + .string "si_addr _sifields._sigfault.si_addr" + .byte 0x1 + .uleb128 0x7a + .string "si_band _sifields._sigpoll.si_band" + .byte 0x1 + .uleb128 0x7b + .string "si_fd _sifields._sigpoll.si_fd" + .byte 0x1 + .uleb128 0x83 + .string "SI_ASYNCNL SI_ASYNCNL" + .byte 0x1 + .uleb128 0x85 + .string "SI_TKILL SI_TKILL" + .byte 0x1 + .uleb128 0x87 + .string "SI_SIGIO SI_SIGIO" + .byte 0x1 + .uleb128 0x89 + .string "SI_ASYNCIO SI_ASYNCIO" + .byte 0x1 + .uleb128 0x8b + .string "SI_MESGQ SI_MESGQ" + .byte 0x1 + .uleb128 0x8d + .string "SI_TIMER SI_TIMER" + .byte 0x1 + .uleb128 0x8f + .string "SI_QUEUE SI_QUEUE" + .byte 0x1 + .uleb128 0x91 + .string "SI_USER SI_USER" + .byte 0x1 + .uleb128 0x93 + .string "SI_KERNEL SI_KERNEL" + .byte 0x1 + .uleb128 0x9b + .string "ILL_ILLOPC ILL_ILLOPC" + .byte 0x1 + .uleb128 0x9d + .string "ILL_ILLOPN ILL_ILLOPN" + .byte 0x1 + .uleb128 0x9f + .string "ILL_ILLADR ILL_ILLADR" + .byte 0x1 + .uleb128 0xa1 + .string "ILL_ILLTRP ILL_ILLTRP" + .byte 0x1 + .uleb128 0xa3 + .string "ILL_PRVOPC ILL_PRVOPC" + .byte 0x1 + .uleb128 0xa5 + .string "ILL_PRVREG ILL_PRVREG" + .byte 0x1 + .uleb128 0xa7 + .string "ILL_COPROC ILL_COPROC" + .byte 0x1 + .uleb128 0xa9 + .string "ILL_BADSTK ILL_BADSTK" + .byte 0x1 + .uleb128 0xb0 + .string "FPE_INTDIV FPE_INTDIV" + .byte 0x1 + .uleb128 0xb2 + .string "FPE_INTOVF FPE_INTOVF" + .byte 0x1 + .uleb128 0xb4 + .string "FPE_FLTDIV FPE_FLTDIV" + .byte 0x1 + .uleb128 0xb6 + .string "FPE_FLTOVF FPE_FLTOVF" + .byte 0x1 + .uleb128 0xb8 + .string "FPE_FLTUND FPE_FLTUND" + .byte 0x1 + .uleb128 0xba + .string "FPE_FLTRES FPE_FLTRES" + .byte 0x1 + .uleb128 0xbc + .string "FPE_FLTINV FPE_FLTINV" + .byte 0x1 + .uleb128 0xbe + .string "FPE_FLTSUB FPE_FLTSUB" + .byte 0x1 + .uleb128 0xc5 + .string "SEGV_MAPERR SEGV_MAPERR" + .byte 0x1 + .uleb128 0xc7 + .string "SEGV_ACCERR SEGV_ACCERR" + .byte 0x1 + .uleb128 0xce + .string "BUS_ADRALN BUS_ADRALN" + .byte 0x1 + .uleb128 0xd0 + .string "BUS_ADRERR BUS_ADRERR" + .byte 0x1 + .uleb128 0xd2 + .string "BUS_OBJERR BUS_OBJERR" + .byte 0x1 + .uleb128 0xd9 + .string "TRAP_BRKPT TRAP_BRKPT" + .byte 0x1 + .uleb128 0xdb + .string "TRAP_TRACE TRAP_TRACE" + .byte 0x1 + .uleb128 0xe2 + .string "CLD_EXITED CLD_EXITED" + .byte 0x1 + .uleb128 0xe4 + .string "CLD_KILLED CLD_KILLED" + .byte 0x1 + .uleb128 0xe6 + .string "CLD_DUMPED CLD_DUMPED" + .byte 0x1 + .uleb128 0xe8 + .string "CLD_TRAPPED CLD_TRAPPED" + .byte 0x1 + .uleb128 0xea + .string "CLD_STOPPED CLD_STOPPED" + .byte 0x1 + .uleb128 0xec + .string "CLD_CONTINUED CLD_CONTINUED" + .byte 0x1 + .uleb128 0xf3 + .string "POLL_IN POLL_IN" + .byte 0x1 + .uleb128 0xf5 + .string "POLL_OUT POLL_OUT" + .byte 0x1 + .uleb128 0xf7 + .string "POLL_MSG POLL_MSG" + .byte 0x1 + .uleb128 0xf9 + .string "POLL_ERR POLL_ERR" + .byte 0x1 + .uleb128 0xfb + .string "POLL_PRI POLL_PRI" + .byte 0x1 + .uleb128 0xfd + .string "POLL_HUP POLL_HUP" + .byte 0x2 + .uleb128 0x100 + .string "__need_siginfo_t" + .byte 0x1 + .uleb128 0x106 + .string "__have_sigevent_t 1" + .byte 0x1 + .uleb128 0x109 + .string "__SIGEV_MAX_SIZE 64" + .byte 0x1 + .uleb128 0x10d + .string "__SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)" + .byte 0x1 + .uleb128 0x126 + .string "sigev_notify_function _sigev_un._sigev_thread._function" + .byte 0x1 + .uleb128 0x127 + .string "sigev_notify_attributes _sigev_un._sigev_thread._attribute" + .byte 0x1 + .uleb128 0x12d + .string "SIGEV_SIGNAL SIGEV_SIGNAL" + .byte 0x1 + .uleb128 0x12f + .string "SIGEV_NONE SIGEV_NONE" + .byte 0x1 + .uleb128 0x131 + .string "SIGEV_THREAD SIGEV_THREAD" + .byte 0x1 + .uleb128 0x134 + .string "SIGEV_THREAD_ID SIGEV_THREAD_ID" + .byte 0x4 + .byte 0x3 + .uleb128 0xf4 + .file 47 "../../include/bits/sigaction.h" + .uleb128 0x2f + .byte 0x1 + .uleb128 0x25 + .string "sa_handler __sigaction_handler.sa_handler" + .byte 0x1 + .uleb128 0x26 + .string "sa_sigaction __sigaction_handler.sa_sigaction" + .byte 0x1 + .uleb128 0x36 + .string "SA_NOCLDSTOP 1" + .byte 0x1 + .uleb128 0x37 + .string "SA_NOCLDWAIT 2" + .byte 0x1 + .uleb128 0x38 + .string "SA_SIGINFO 4" + .byte 0x1 + .uleb128 0x3b + .string "SA_ONSTACK 0x08000000" + .byte 0x1 + .uleb128 0x3c + .string "SA_RESTART 0x10000000" + .byte 0x1 + .uleb128 0x3d + .string "SA_NODEFER 0x40000000" + .byte 0x1 + .uleb128 0x3f + .string "SA_RESETHAND 0x80000000" + .byte 0x1 + .uleb128 0x42 + .string "SA_INTERRUPT 0x20000000" + .byte 0x1 + .uleb128 0x45 + .string "SA_NOMASK SA_NODEFER" + .byte 0x1 + .uleb128 0x46 + .string "SA_ONESHOT SA_RESETHAND" + .byte 0x1 + .uleb128 0x47 + .string "SA_STACK SA_ONSTACK" + .byte 0x1 + .uleb128 0x4b + .string "SIG_BLOCK 0" + .byte 0x1 + .uleb128 0x4c + .string "SIG_UNBLOCK 1" + .byte 0x1 + .uleb128 0x4d + .string "SIG_SETMASK 2" + .byte 0x4 + .byte 0x1 + .uleb128 0x139 + .string "sv_onstack sv_flags" + .byte 0x1 + .uleb128 0x13d + .string "SV_ONSTACK (1 << 0)" + .byte 0x1 + .uleb128 0x13e + .string "SV_INTERRUPT (1 << 1)" + .byte 0x1 + .uleb128 0x13f + .string "SV_RESETHAND (1 << 2)" + .byte 0x3 + .uleb128 0x14d + .file 48 "../../include/bits/sigcontext.h" + .uleb128 0x30 + .byte 0x1 + .uleb128 0x1a + .string "sigcontext_struct sigcontext" + .byte 0x3 + .uleb128 0x1d + .file 49 "/opt/STM/STLinux-2.3ear/devkit/sh4/uclibc_target/usr/include/asm/sigcontext.h" + .uleb128 0x31 + .byte 0x1 + .uleb128 0x2 + .string "__ASM_SH_SIGCONTEXT_H " + .byte 0x4 + .byte 0x4 + .byte 0x3 + .uleb128 0x15c + .file 50 "../../include/bits/sigstack.h" + .uleb128 0x32 + .byte 0x1 + .uleb128 0x25 + .string "SS_ONSTACK SS_ONSTACK" + .byte 0x1 + .uleb128 0x27 + .string "SS_DISABLE SS_DISABLE" + .byte 0x1 + .uleb128 0x2b + .string "MINSIGSTKSZ 2048" + .byte 0x1 + .uleb128 0x2e + .string "SIGSTKSZ 8192" + .byte 0x4 + .byte 0x3 + .uleb128 0x15f + .file 51 "../../include/ucontext.h" + .uleb128 0x33 + .byte 0x1 + .uleb128 0x14 + .string "_UCONTEXT_H 1" + .byte 0x3 + .uleb128 0x1a + .file 52 "../../include/sys/ucontext.h" + .uleb128 0x34 + .byte 0x1 + .uleb128 0x16 + .string "_SYS_UCONTEXT_H 1" + .byte 0x3 + .uleb128 0x1a + .uleb128 0x2c + .byte 0x4 + .byte 0x3 + .uleb128 0x1e + .uleb128 0x30 + .byte 0x4 + .byte 0x1 + .uleb128 0x23 + .string "NFPREG 16" + .byte 0x1 + .uleb128 0x2d + .string "R0 R0" + .byte 0x1 + .uleb128 0x2f + .string "R1 R1" + .byte 0x1 + .uleb128 0x31 + .string "R2 R2" + .byte 0x1 + .uleb128 0x33 + .string "R3 R3" + .byte 0x1 + .uleb128 0x35 + .string "R4 R4" + .byte 0x1 + .uleb128 0x37 + .string "R5 R5" + .byte 0x1 + .uleb128 0x39 + .string "R6 R6" + .byte 0x1 + .uleb128 0x3b + .string "R7 R7" + .byte 0x1 + .uleb128 0x3d + .string "R8 R8" + .byte 0x1 + .uleb128 0x3f + .string "R9 R9" + .byte 0x1 + .uleb128 0x41 + .string "R10 R10" + .byte 0x1 + .uleb128 0x43 + .string "R11 R11" + .byte 0x1 + .uleb128 0x45 + .string "R12 R12" + .byte 0x1 + .uleb128 0x47 + .string "R13 R13" + .byte 0x1 + .uleb128 0x49 + .string "R14 R14" + .byte 0x1 + .uleb128 0x4b + .string "R15 R15" + .byte 0x1 + .uleb128 0x52 + .string "NFPREG 16" + .byte 0x4 + .byte 0x4 + .byte 0x3 + .uleb128 0x183 + .file 53 "../../include/bits/sigthread.h" + .uleb128 0x35 + .byte 0x1 + .uleb128 0x15 + .string "_BITS_SIGTHREAD_H 1" + .byte 0x4 + .byte 0x4 + .byte 0x3 + .uleb128 0x12 + .file 54 "tst_types.h" + .uleb128 0x36 + .byte 0x1 + .uleb128 0xb + .string "TST_TYPES_H " + .byte 0x3 + .uleb128 0xf + .uleb128 0x12 + .byte 0x1 + .uleb128 0x1b + .string "_WCHAR_H 1" + .byte 0x1 + .uleb128 0x25 + .string "__need___FILE " + .byte 0x1 + .uleb128 0x27 + .string "__need_FILE " + .byte 0x1 + .uleb128 0x2b + .string "__need___va_list " + .byte 0x3 + .uleb128 0x2d + .uleb128 0x14 + .byte 0x2 + .uleb128 0x25 + .string "__need___va_list" + .byte 0x4 + .byte 0x1 + .uleb128 0x2f + .string "__need_size_t " + .byte 0x1 + .uleb128 0x30 + .string "__need_wchar_t " + .byte 0x1 + .uleb128 0x31 + .string "__need_NULL " + .byte 0x1 + .uleb128 0x33 + .string "__need_wint_t " + .byte 0x3 + .uleb128 0x35 + .uleb128 0xa + .byte 0x2 + .uleb128 0xa3 + .string "__need_ptrdiff_t" + .byte 0x2 + .uleb128 0xec + .string "__need_size_t" + .byte 0x2 + .uleb128 0x159 + .string "__need_wchar_t" + .byte 0x2 + .uleb128 0x165 + .string "__need_wint_t" + .byte 0x2 + .uleb128 0x18e + .string "NULL" + .byte 0x1 + .uleb128 0x193 + .string "NULL ((void *)0)" + .byte 0x2 + .uleb128 0x199 + .string "__need_NULL" + .byte 0x1 + .uleb128 0x19e + .string "offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)" + .byte 0x4 + .byte 0x2 + .uleb128 0x62 + .string "__need_mbstate_t" + .byte 0x1 + .uleb128 0x78 + .string "WEOF (0xffffffffu)" + .byte 0x4 + .byte 0x3 + .uleb128 0x10 + .file 55 "../../include/wctype.h" + .uleb128 0x37 + .byte 0x1 + .uleb128 0x22 + .string "_WCTYPE_H 1" + .byte 0x1 + .uleb128 0x26 + .string "__need_wint_t " + .byte 0x3 + .uleb128 0x28 + .uleb128 0xa + .byte 0x2 + .uleb128 0xa3 + .string "__need_ptrdiff_t" + .byte 0x2 + .uleb128 0xec + .string "__need_size_t" + .byte 0x2 + .uleb128 0x159 + .string "__need_wchar_t" + .byte 0x2 + .uleb128 0x165 + .string "__need_wint_t" + .byte 0x2 + .uleb128 0x18e + .string "NULL" + .byte 0x1 + .uleb128 0x193 + .string "NULL ((void *)0)" + .byte 0x2 + .uleb128 0x199 + .string "__need_NULL" + .byte 0x1 + .uleb128 0x19e + .string "offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)" + .byte 0x4 + .byte 0x2 + .uleb128 0x3b + .string "__need_iswxxx" + .byte 0x1 + .uleb128 0x41 + .string "__iswxxx_defined 1" + .byte 0x1 + .uleb128 0x4b + .string "_ISwbit(bit) (1 << (bit))" + .byte 0x4 + .byte 0x3 + .uleb128 0x11 + .file 56 "tst_funcs.h" + .uleb128 0x38 + .byte 0x1 + .uleb128 0xb + .string "TST_FUNCS_H " + .byte 0x1 + .uleb128 0xd + .string "C_SUCCESS 'S'" + .byte 0x1 + .uleb128 0xe + .string "C_FAILURE 'F'" + .byte 0x1 + .uleb128 0xf + .string "C_IGNORED 'I'" + .byte 0x1 + .uleb128 0x10 + .string "C_INVALID 'D'" + .byte 0x1 + .uleb128 0x11 + .string "C_LOCALES 'L'" + .byte 0x1 + .uleb128 0x17 + .string "Result(C,S,E,M) result (fp, (C), (S), locale, rec+1, seq_num+1, (E), (M))" + .byte 0x1 + .uleb128 0x1a + .string "CASE_0 0" + .byte 0x1 + .uleb128 0x1b + .string "CASE_1 1" + .byte 0x1 + .uleb128 0x1c + .string "CASE_2 2" + .byte 0x1 + .uleb128 0x1d + .string "CASE_3 3" + .byte 0x1 + .uleb128 0x1e + .string "CASE_4 4" + .byte 0x1 + .uleb128 0x1f + .string "CASE_5 5" + .byte 0x1 + .uleb128 0x20 + .string "CASE_6 6" + .byte 0x1 + .uleb128 0x21 + .string "CASE_7 7" + .byte 0x1 + .uleb128 0x22 + .string "CASE_8 8" + .byte 0x1 + .uleb128 0x23 + .string "CASE_9 9" + .byte 0x1 + .uleb128 0x25 + .string "MS_PASSED \"PASSED\"" + .byte 0x1 + .uleb128 0x26 + .string "MS_SPACE \"\t \"" + .byte 0x1 + .uleb128 0x27 + .string "MS_FAILED \"\t \"" + .byte 0x1 + .uleb128 0x28 + .string "MS_NOTEST \"NOTEST\"" + .byte 0x1 + .uleb128 0x29 + .string "MS_ABORTU \"ABEND0\"" + .byte 0x1 + .uleb128 0x2a + .string "MS_ABORT \"ABEND1\"" + .byte 0x1 + .uleb128 0x2c + .string "MK_PASSED 0x00" + .byte 0x1 + .uleb128 0x2d + .string "MK_SPACE 0x01" + .byte 0x1 + .uleb128 0x2e + .string "MK_NOTEST 0x02" + .byte 0x1 + .uleb128 0x2f + .string "MK_ABORTU 0x04" + .byte 0x1 + .uleb128 0x30 + .string "MK_ABORT 0x08" + .byte 0x1 + .uleb128 0x36 + .string "TST_ABS(x) (((x) > 0) ? (x) : -(x))" + .byte 0x1 + .uleb128 0x38 + .string "TMD_ERRET(_type_) int err_val; int ret_flg; _type_ ret_val" + .byte 0x1 + .uleb128 0x3c + .string "TMD_RECHEAD(_FUNC_) typedef struct { TIN_ ##_FUNC_ ##_REC input; TEX_ ##_FUNC_ ##_REC expect; int is_last; } TST_ ##_FUNC_ ##_REC; typedef struct { TST_HEAD hd; TST_ ##_FUNC_ ##_REC rec[ MAX_LOC_TEST ]; } TST_ ##_FUNC_" + .byte 0x1 + .uleb128 0x48 + .string "TST_FTYP(func) tst_ ##func ##_loc" + .byte 0x1 + .uleb128 0x49 + .string "TST_HEAD(func) tst_ ##func ##_loc[ loc ].hd" + .byte 0x1 + .uleb128 0x4a + .string "TST_INPUT(func) tst_ ##func ##_loc[ loc ].rec[ rec ].input" + .byte 0x1 + .uleb128 0x4b + .string "TST_EXPECT(func) tst_ ##func ##_loc[ loc ].rec[ rec ].expect" + .byte 0x1 + .uleb128 0x4c + .string "TST_INPUT_SEQ(func) tst_ ##func ##_loc[ loc ].rec[ rec ].input.seq[ seq_num ]" + .byte 0x1 + .uleb128 0x4e + .string "TST_EXPECT_SEQ(func) tst_ ##func ##_loc[ loc ].rec[ rec ].expect.seq[ seq_num ]" + .byte 0x1 + .uleb128 0x50 + .string "TST_IS_LAST(func) tst_ ##func ##_loc[ loc ].rec[ rec ].is_last" + .byte 0x1 + .uleb128 0x54 + .string "TST_DECL_VARS(_type_) int loc, rec, err_count = 0; int warn_count __attribute__ ((unused)); int func_id, seq_num = 0; const char *locale; int err_exp, ret_flg; int errno_save = 0; _type_ ret_exp; _type_ ret" + .byte 0x1 + .uleb128 0x5e + .string "TST_DO_TEST(o_func) for (loc = 0; strcmp (TST_HEAD (o_func).locale, TST_LOC_end); ++loc)" + .byte 0x1 + .uleb128 0x62 + .ascii "TST_HEAD_LOCALE(ofunc,s_func) func_id = TST_HEAD (ofunc" + .string ").func_id; locale = TST_HEAD (ofunc).locale; if (setlocale (LC_ALL, locale) == NULL) { fprintf (stderr, \"Warning : can't set locale: %s\\nskipping ...\\n\", locale); result (fp, C_LOCALES, s_func, locale, 0, 0, 0, \"can't set locale\"); ++err_count; continue; }" + .byte 0x1 + .uleb128 0x6e + .string "TST_DO_REC(ofunc) for (rec=0; !TST_IS_LAST (ofunc); ++rec)" + .byte 0x1 + .uleb128 0x71 + .string "TST_DO_SEQ(_count_) for (seq_num=0; seq_num < _count_; seq_num++)" + .byte 0x1 + .uleb128 0x74 + .string "TST_GET_ERRET(_ofunc_) err_exp = TST_EXPECT (_ofunc_).err_val; ret_flg = TST_EXPECT (_ofunc_).ret_flg; ret_exp = TST_EXPECT (_ofunc_).ret_val" + .byte 0x1 + .uleb128 0x79 + .string "TST_GET_ERRET_SEQ(_ofunc_) err_exp = TST_EXPECT_SEQ (_ofunc_).err_val; ret_flg = TST_EXPECT_SEQ (_ofunc_).ret_flg; ret_exp = TST_EXPECT_SEQ (_ofunc_).ret_val" + .byte 0x1 + .uleb128 0x7e + .string "TST_CLEAR_ERRNO errno = 0" + .byte 0x1 + .uleb128 0x81 + .string "TST_SAVE_ERRNO errno_save = errno" + .byte 0x1 + .uleb128 0x85 + .ascii "TST_IF_RETURN(_s_func_) if (err_exp != 0) { if (errno_save =" + .ascii "= err_exp) { result (fp, C_SUCCESS, _s_func_, locale, rec+1," + .ascii " seq_num+1, 1, MS_PASSED); } else { err_count++; result (fp," + .ascii " C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 1, \"the val" + .ascii "ue of errno is different from an expected value\"); } } if (" + .ascii "ret_f" + .string "lg == 1) { if (ret == ret_exp) { result (fp, C_SUCCESS, _s_func_, locale, rec+1, seq_num+1, 2, MS_PASSED); } else { err_count++; result (fp, C_FAILURE, _s_func_, locale, rec+1, seq_num+1, 2, \"the return value is different from an expected value\"); } } else" + .byte 0x1 + .uleb128 0xa5 + .string "TEX_ERRET_REC(_type_) struct { TMD_ERRET (_type_); }" + .byte 0x1 + .uleb128 0xaa + .string "TEX_ERRET_REC_SEQ(_type_,_count_) struct { struct { TMD_ERRET (_type_); } seq[ _count_ ]; }" + .byte 0x1 + .uleb128 0xb5 + .string "TST_ISW_STRUCT(_FUNC_,_func_) typedef struct { wint_t wc; } TIN_ISW ##_FUNC_ ##_REC; typedef TEX_ERRET_REC (int) TEX_ISW ##_FUNC_ ##_REC; TMD_RECHEAD (ISW ##_FUNC_)" + .byte 0x1 + .uleb128 0xbe + .ascii "TST_FUNC_ISW(_FUNC_,_func_) int tst_isw ##_func_ (FILE *fp, " + .ascii "int debug_flg) { TST_DECL_VARS(int); wint_t wc; TST_DO_TEST " + .ascii "(isw ##_func_) { TST_HEAD_LOCALE (isw ##_func_, S_ISW ##_FUN" + .ascii "C_); TST_DO_REC(isw ##_func_) { TST_GET_ERRET (isw ##_func_)" + .ascii "; wc = TST_INPUT (isw ##_func_).wc; ret = isw ##_func_ (wc);" + .ascii " if (debug_flg) { fprintf (stdout, \"isw*() [ %s : %d ] ret " + .ascii "= %d\\n\", locale, rec+1, ret); } TST_IF_RETURN (S_ISW ##_FU" + .ascii "NC_) { if (ret !" + .string "= 0) { result (fp, C_SUCCESS, S_ISW ##_FUNC_, locale, rec+1, seq_num+1, 3, MS_PASSED); } else { err_count++; result (fp, C_FAILURE, S_ISW ##_FUNC_, locale, rec+1, seq_num+1, 3, \"the function returned 0, but should be non-zero\"); } } } } return err_count; }" + .byte 0x1 + .uleb128 0xeb + .string "TST_TOW_STRUCT(_FUNC_,_func_) typedef struct { wint_t wc; } TIN_TOW ##_FUNC_ ##_REC; typedef TEX_ERRET_REC (wint_t) TEX_TOW ##_FUNC_ ##_REC; TMD_RECHEAD (TOW ##_FUNC_)" + .byte 0x1 + .uleb128 0xf4 + .ascii "TST_FUNC_TOW(_FUNC_,_func_) int tst_tow ##_func_ (FILE *fp, " + .ascii "int debug_flg) { TST_DECL_VARS (wint_t); wint_t wc; TST_DO_T" + .ascii "EST (tow ##_func_) { TST_HEAD_LOCALE (tow ##_func_, S_TOW ##" + .ascii "_FUNC_); TST_DO_REC (" + .string "tow ##_func_) { TST_GET_ERRET (tow ##_func_); wc = TST_INPUT (tow ##_func_).wc; ret = tow ##_func_ (wc); if (debug_flg) { fprintf (stdout, \"tow*() [ %s : %d ] ret = 0x%x\\n\", locale, rec+1, ret); } TST_IF_RETURN (S_TOW ##_FUNC_) { }; } } return err_count; }" + .byte 0x4 + .byte 0x3 + .uleb128 0x12 + .file 57 "tgn_funcdef.h" + .uleb128 0x39 + .byte 0x1 + .uleb128 0x2 + .string "TGN_FUNCDEF_H " + .byte 0x1 + .uleb128 0x5 + .string "Tiswalnum 1" + .byte 0x1 + .uleb128 0x6 + .string "Tiswalpha 2" + .byte 0x1 + .uleb128 0x7 + .string "Tiswcntrl 3" + .byte 0x1 + .uleb128 0x8 + .string "Tiswctype 4" + .byte 0x1 + .uleb128 0x9 + .string "Tiswdigit 5" + .byte 0x1 + .uleb128 0xa + .string "Tiswgraph 6" + .byte 0x1 + .uleb128 0xb + .string "Tiswlower 7" + .byte 0x1 + .uleb128 0xc + .string "Tiswprint 8" + .byte 0x1 + .uleb128 0xd + .string "Tiswpunct 9" + .byte 0x1 + .uleb128 0xe + .string "Tiswspace 10" + .byte 0x1 + .uleb128 0xf + .string "Tiswupper 11" + .byte 0x1 + .uleb128 0x10 + .string "Tiswxdigit 12" + .byte 0x1 + .uleb128 0x11 + .string "Tmblen 13" + .byte 0x1 + .uleb128 0x12 + .string "Tmbrlen 14" + .byte 0x1 + .uleb128 0x13 + .string "Tmbrtowc 15" + .byte 0x1 + .uleb128 0x14 + .string "Tmbsrtowcs 16" + .byte 0x1 + .uleb128 0x15 + .string "Tmbstowcs 17" + .byte 0x1 + .uleb128 0x16 + .string "Tmbtowc 18" + .byte 0x1 + .uleb128 0x17 + .string "Tstrcoll 19" + .byte 0x1 + .uleb128 0x18 + .string "Tstrfmon 20" + .byte 0x1 + .uleb128 0x19 + .string "Tstrxfrm 21" + .byte 0x1 + .uleb128 0x1a + .string "Tswscanf 22" + .byte 0x1 + .uleb128 0x1b + .string "Ttowctrans 23" + .byte 0x1 + .uleb128 0x1c + .string "Ttowlower 24" + .byte 0x1 + .uleb128 0x1d + .string "Ttowupper 25" + .byte 0x1 + .uleb128 0x1e + .string "Twcrtomb 26" + .byte 0x1 + .uleb128 0x1f + .string "Twcscat 27" + .byte 0x1 + .uleb128 0x20 + .string "Twcschr 28" + .byte 0x1 + .uleb128 0x21 + .string "Twcscmp 29" + .byte 0x1 + .uleb128 0x22 + .string "Twcscoll 30" + .byte 0x1 + .uleb128 0x23 + .string "Twcscpy 31" + .byte 0x1 + .uleb128 0x24 + .string "Twcscspn 32" + .byte 0x1 + .uleb128 0x25 + .string "Twcslen 33" + .byte 0x1 + .uleb128 0x26 + .string "Twcsncat 34" + .byte 0x1 + .uleb128 0x27 + .string "Twcsncmp 35" + .byte 0x1 + .uleb128 0x28 + .string "Twcsncpy 36" + .byte 0x1 + .uleb128 0x29 + .string "Twcspbrk 37" + .byte 0x1 + .uleb128 0x2a + .string "Twcsrtombs 38" + .byte 0x1 + .uleb128 0x2b + .string "Twcsspn 39" + .byte 0x1 + .uleb128 0x2c + .string "Twcsstr 40" + .byte 0x1 + .uleb128 0x2d + .string "Twcstod 41" + .byte 0x1 + .uleb128 0x2e + .string "Twcstok 42" + .byte 0x1 + .uleb128 0x2f + .string "Twcstombs 43" + .byte 0x1 + .uleb128 0x30 + .string "Twcswidth 44" + .byte 0x1 + .uleb128 0x31 + .string "Twcsxfrm 45" + .byte 0x1 + .uleb128 0x32 + .string "Twctob 46" + .byte 0x1 + .uleb128 0x33 + .string "Twctomb 47" + .byte 0x1 + .uleb128 0x34 + .string "Twctrans 48" + .byte 0x1 + .uleb128 0x35 + .string "Twctype 49" + .byte 0x1 + .uleb128 0x36 + .string "Twcwidth 50" + .byte 0x1 + .uleb128 0x39 + .string "S_ISWALNUM \"iswalnum\"" + .byte 0x1 + .uleb128 0x3a + .string "S_ISWALPHA \"iswalpha\"" + .byte 0x1 + .uleb128 0x3b + .string "S_ISWCNTRL \"iswcntrl\"" + .byte 0x1 + .uleb128 0x3c + .string "S_ISWCTYPE \"iswctype\"" + .byte 0x1 + .uleb128 0x3d + .string "S_ISWDIGIT \"iswdigit\"" + .byte 0x1 + .uleb128 0x3e + .string "S_ISWGRAPH \"iswgraph\"" + .byte 0x1 + .uleb128 0x3f + .string "S_ISWLOWER \"iswlower\"" + .byte 0x1 + .uleb128 0x40 + .string "S_ISWPRINT \"iswprint\"" + .byte 0x1 + .uleb128 0x41 + .string "S_ISWPUNCT \"iswpunct\"" + .byte 0x1 + .uleb128 0x42 + .string "S_ISWSPACE \"iswspace\"" + .byte 0x1 + .uleb128 0x43 + .string "S_ISWUPPER \"iswupper\"" + .byte 0x1 + .uleb128 0x44 + .string "S_ISWXDIGIT \"iswxdigit\"" + .byte 0x1 + .uleb128 0x45 + .string "S_MBLEN \"mblen\"" + .byte 0x1 + .uleb128 0x46 + .string "S_MBRLEN \"mbrlen\"" + .byte 0x1 + .uleb128 0x47 + .string "S_MBRTOWC \"mbrtowc\"" + .byte 0x1 + .uleb128 0x48 + .string "S_MBSRTOWCS \"mbsrtowcs\"" + .byte 0x1 + .uleb128 0x49 + .string "S_MBSTOWCS \"mbstowcs\"" + .byte 0x1 + .uleb128 0x4a + .string "S_MBTOWC \"mbtowc\"" + .byte 0x1 + .uleb128 0x4b + .string "S_STRCOLL \"strcoll\"" + .byte 0x1 + .uleb128 0x4c + .string "S_STRFMON \"strfmon\"" + .byte 0x1 + .uleb128 0x4d + .string "S_STRXFRM \"strxfrm\"" + .byte 0x1 + .uleb128 0x4e + .string "S_SWSCANF \"swscanf\"" + .byte 0x1 + .uleb128 0x4f + .string "S_TOWCTRANS \"towctrans\"" + .byte 0x1 + .uleb128 0x50 + .string "S_TOWLOWER \"towlower\"" + .byte 0x1 + .uleb128 0x51 + .string "S_TOWUPPER \"towupper\"" + .byte 0x1 + .uleb128 0x52 + .string "S_WCRTOMB \"wcrtomb\"" + .byte 0x1 + .uleb128 0x53 + .string "S_WCSCAT \"wcscat\"" + .byte 0x1 + .uleb128 0x54 + .string "S_WCSCHR \"wcschr\"" + .byte 0x1 + .uleb128 0x55 + .string "S_WCSCMP \"wcscmp\"" + .byte 0x1 + .uleb128 0x56 + .string "S_WCSCOLL \"wcscoll\"" + .byte 0x1 + .uleb128 0x57 + .string "S_WCSCPY \"wcscpy\"" + .byte 0x1 + .uleb128 0x58 + .string "S_WCSCSPN \"wcscspn\"" + .byte 0x1 + .uleb128 0x59 + .string "S_WCSLEN \"wcslen\"" + .byte 0x1 + .uleb128 0x5a + .string "S_WCSNCAT \"wcsncat\"" + .byte 0x1 + .uleb128 0x5b + .string "S_WCSNCMP \"wcsncmp\"" + .byte 0x1 + .uleb128 0x5c + .string "S_WCSNCPY \"wcsncpy\"" + .byte 0x1 + .uleb128 0x5d + .string "S_WCSPBRK \"wcspbrk\"" + .byte 0x1 + .uleb128 0x5e + .string "S_WCSRTOMBS \"wcsrtombs\"" + .byte 0x1 + .uleb128 0x5f + .string "S_WCSSPN \"wcsspn\"" + .byte 0x1 + .uleb128 0x60 + .string "S_WCSSTR \"wcsstr\"" + .byte 0x1 + .uleb128 0x61 + .string "S_WCSTOD \"wcstod\"" + .byte 0x1 + .uleb128 0x62 + .string "S_WCSTOK \"wcstok\"" + .byte 0x1 + .uleb128 0x63 + .string "S_WCSTOMBS \"wcstombs\"" + .byte 0x1 + .uleb128 0x64 + .string "S_WCSWIDTH \"wcswidth\"" + .byte 0x1 + .uleb128 0x65 + .string "S_WCSXFRM \"wcsxfrm\"" + .byte 0x1 + .uleb128 0x66 + .string "S_WCTOB \"wctob\"" + .byte 0x1 + .uleb128 0x67 + .string "S_WCTOMB \"wctomb\"" + .byte 0x1 + .uleb128 0x68 + .string "S_WCTRANS \"wctrans\"" + .byte 0x1 + .uleb128 0x69 + .string "S_WCTYPE \"wctype\"" + .byte 0x1 + .uleb128 0x6a + .string "S_WCWIDTH \"wcwidth\"" + .byte 0x4 + .byte 0x1 + .uleb128 0x13 + .string "MBSSIZE 24" + .byte 0x1 + .uleb128 0x14 + .string "WCSSIZE 12" + .byte 0x1 + .uleb128 0x15 + .string "MONFMTSIZE 16" + .byte 0x1 + .uleb128 0x16 + .string "MONSIZE 64" + .byte 0x1 + .uleb128 0x17 + .string "USE_MBCURMAX 99" + .byte 0x1 + .uleb128 0x18 + .string "TST_DBL_EPS 2.22153e-16" + .byte 0x1 + .uleb128 0x19 + .string "WCSTOK_SEQNUM 3" + .byte 0x1 + .uleb128 0x1a + .string "MBLEN_SEQNUM 3" + .byte 0x1 + .uleb128 0x1b + .string "MBTOWC_SEQNUM 3" + .byte 0x1 + .uleb128 0x1c + .string "MBSTOWCS_SEQNUM 3" + .byte 0x1 + .uleb128 0x1d + .string "WCTOMB_SEQNUM 3" + .byte 0x1 + .uleb128 0x1e + .string "WCSTOMBS_SEQNUM 3" + .byte 0x1 + .uleb128 0x1f + .string "MBRLEN_SEQNUM 3" + .byte 0x1 + .uleb128 0x20 + .string "MBRTOWC_SEQNUM 3" + .byte 0x1 + .uleb128 0x21 + .string "MBSRTOWCS_SEQNUM 3" + .byte 0x1 + .uleb128 0x22 + .string "WCRTOMB_SEQNUM 3" + .byte 0x1 + .uleb128 0x23 + .string "WCSRTOMBS_SEQNUM 3" + .byte 0x1 + .uleb128 0x26 + .string "MAX_LOC_TEST 300" + .byte 0x4 + .byte 0x3 + .uleb128 0x13 + .file 58 "tgn_locdef.h" + .uleb128 0x3a + .byte 0x1 + .uleb128 0x2 + .string "TGN_LOCDEF_H " + .byte 0x1 + .uleb128 0x7 + .string "TST_LOC_C \"C\"" + .byte 0x1 + .uleb128 0xa + .string "TST_LOC_de \"de_DE.ISO-8859-1\"" + .byte 0x1 + .uleb128 0xe + .string "TST_LOC_enUS \"en_US.ANSI_X3.4-1968\"" + .byte 0x1 + .uleb128 0x15 + .string "TST_LOC_eucJP \"ja_JP.EUC-JP\"" + .byte 0x1 + .uleb128 0x1c + .string "TST_LOC_de_UTF8 \"de_DE.UTF-8\"" + .byte 0x1 + .uleb128 0x1f + .string "TST_LOC_end \"lastEntry\"" + .byte 0x4 + .section .rodata + .align 2 +.LC0: + .string "\nTST_MBWC ===> %s ...\n" + .text + .align 1 + .global main + .type main, @function +main: +.LFB5: + .loc 4 23 0 + mov.l r14,@-r15 +.LCFI0: + sts.l pr,@-r15 +.LCFI1: + add #-20,r15 +.LCFI2: + mov r15,r14 +.LCFI3: + mov r14,r1 + add #-44,r1 + mov.l r4,@(52,r1) + mov r14,r1 + add #-44,r1 + mov.l r5,@(48,r1) + .loc 4 27 0 + mov r14,r1 + add #-44,r1 + mov.l @(52,r1),r2 + mov #1,r1 + cmp/gt r1,r2 + bf .L2 + mov r14,r1 + add #-44,r1 + mov.l @(48,r1),r1 + add #4,r1 + mov.l @r1,r1 + mov r1,r4 + mov.l .L8,r1 + jsr @r1 + nop + mov.l r0,@r14 + bra .L4 + nop + .align 1 +.L2: + mov #0,r1 + mov.l r1,@r14 +.L4: + mov r14,r1 + add #-44,r1 + mov.l @r14,r2 + mov.l r2,@(60,r1) + .loc 4 29 0 + mov r14,r1 + add #-44,r1 + mov.l @(60,r1),r1 + tst r1,r1 + bt .L5 + .loc 4 31 0 + mov.l .L12,r1 + mov.l @r1,r2 + mov r14,r1 + add #-44,r1 + mov.l @(48,r1),r1 + mov.l @r1,r3 + mov.l .L10,r1 + mov r2,r4 + mov r1,r5 + mov r3,r6 + mov.l .L11,r1 + jsr @r1 + nop +.L5: + .loc 4 33 0 + mov.l .L12,r1 + mov.l @r1,r2 + mov r14,r1 + add #-44,r1 + mov.l @(60,r1),r1 + mov r2,r4 + mov r1,r5 + mov.l .L13,r1 + jsr @r1 + nop + mov r14,r1 + add #-44,r1 + mov.l r0,@(56,r1) + .loc 4 35 0 + mov r14,r1 + add #-44,r1 + mov.l @(56,r1),r1 + tst r1,r1 + mov #-1,r1 + negc r1,r1 + mov r1,r0 + .loc 4 36 0 + add #20,r14 + mov r14,r15 + lds.l @r15+,pr + mov.l @r15+,r14 + rts + nop +.L14: + .align 2 +.L8: + .long atoi +.L12: + .long stdout +.L10: + .long .LC0 +.L11: + .long fprintf +.L13: + .long tst_mbrlen +.LFE5: + .size main, .-main + .section .debug_macinfo + .byte 0x1 + .uleb128 0x26 + .string "MAX_RESULT_REC 132" + .section .rodata + .align 2 +.LC1: + .string "Warning: result(): can't write the result: %s:%s:%d:%d:%s\n" + .align 2 +.LC2: + .string "%s:%s:%d:%d:%d:%c:%s\n" + .text + .align 1 + .global result + .type result, @function +result: +.LFB6: + .loc 4 45 0 + mov.l r8,@-r15 +.LCFI4: + mov.l r14,@-r15 +.LCFI5: + sts.l pr,@-r15 +.LCFI6: + add #-20,r15 +.LCFI7: + mov r15,r14 +.LCFI8: + mov r14,r1 + add #-44,r1 + mov.l r4,@(60,r1) + mov r5,r2 + mov r14,r1 + add #-44,r1 + mov.l r6,@(52,r1) + mov r14,r1 + add #-44,r1 + mov.l r7,@(48,r1) + mov r14,r1 + add #12,r1 + mov.b r2,@r1 + .loc 4 46 0 + mov r14,r1 + add #-44,r1 + mov.l @(60,r1),r1 + tst r1,r1 + bt .L16 + mov r14,r1 + add #-44,r1 + mov.l @(52,r1),r1 + mov r1,r4 + mov.l .L25,r1 + jsr @r1 + nop + mov r0,r8 + mov r14,r1 + add #-44,r1 + mov.l @(48,r1),r1 + mov r1,r4 + mov.l .L25,r1 + jsr @r1 + nop + add r0,r8 + mov.l @(44,r14),r1 + mov r1,r4 + mov.l .L25,r1 + jsr @r1 + nop + mov r8,r1 + add r0,r1 + mov r1,r2 + add #32,r2 + mov.w .L26,r1 + cmp/hi r1,r2 + bf .L18 +.L16: + .loc 4 49 0 + mov.l .L27,r1 + mov.l @r1,r7 + add #-12,r15 + mov r15,r2 + mov.l .L28,r6 + mov r14,r1 + add #-44,r1 + mov.l @(52,r1),r0 + mov r14,r1 + add #-44,r1 + mov.l @(48,r1),r3 + mov.l @(32,r14),r1 + mov.l r1,@r2 + mov.l @(40,r14),r1 + mov.l r1,@(4,r2) + mov.l @(44,r14),r1 + mov.l r1,@(8,r2) + mov r7,r4 + mov r6,r5 + mov r0,r6 + mov r3,r7 + mov.l .L29,r1 +.LCFI9: + jsr @r1 + nop + add #12,r15 + .loc 4 52 0 + mov #0,r1 + mov.l r1,@r14 + bra .L19 + nop + .align 1 +.L18: + .loc 4 55 0 + mov r14,r1 + add #12,r1 + mov.b @r1,r3 + add #-20,r15 + mov r15,r2 + mov.l .L33,r7 + mov.l .L31,r6 + mov r14,r1 + add #-44,r1 + mov.l @(52,r1),r0 + mov r14,r1 + add #-44,r1 + mov.l @(48,r1),r8 + mov.l @(32,r14),r1 + mov.l r1,@r2 + mov.l @(36,r14),r1 + mov.l r1,@(4,r2) + mov.l @(40,r14),r1 + mov.l r1,@(8,r2) + mov.l r3,@(12,r2) + mov.l @(44,r14),r1 + mov.l r1,@(16,r2) + mov r7,r4 + mov r6,r5 + mov r0,r6 + mov r8,r7 + mov.l .L32,r1 +.LCFI10: + jsr @r1 + nop + add #20,r15 + .loc 4 58 0 + mov.l .L33,r2 + mov r14,r1 + add #-44,r1 + mov.l @(60,r1),r1 + mov r2,r4 + mov r1,r5 + mov.l .L34,r1 +.LCFI11: + jsr @r1 + nop + mov #-1,r1 + cmp/eq r1,r0 + bf .L20 + .loc 4 60 0 + mov #0,r1 + mov.l r1,@r14 + bra .L19 + nop + .align 1 +.L20: + .loc 4 63 0 + mov #1,r1 + mov.l r1,@r14 +.L19: + mov.l @r14,r0 + .loc 4 64 0 + add #20,r14 + mov r14,r15 + lds.l @r15+,pr + mov.l @r15+,r14 + mov.l @r15+,r8 + rts + nop + .align 1 +.L26: + .short 132 +.L35: + .align 2 +.L25: + .long strlen +.L27: + .long stderr +.L28: + .long .LC1 +.L29: + .long fprintf +.L33: + .long result_rec +.L31: + .long .LC2 +.L32: + .long sprintf +.L34: + .long fputs +.LFE6: + .size result, .-result + .section .debug_macinfo + .byte 0x4 + .byte 0x3 + .uleb128 0x9 + .file 59 "dat_mbrlen.c" + .uleb128 0x3b + .global tst_mbrlen_loc + .section .rodata + .align 2 +.LC3: + .string "de_DE.ISO-8859-1" + .align 2 +.LC4: + .string "en_US.ANSI_X3.4-1968" + .align 2 +.LC5: + .string "ja_JP.EUC-JP" + .align 2 +.LC6: + .string "lastEntry" + .data + .align 2 + .type tst_mbrlen_loc, @object + .size tst_mbrlen_loc, 192032 +tst_mbrlen_loc: + .long 14 + .long .LC3 + .long 1 + .string "" + .zero 23 + .long 0 + .long 0 + .long 0 + .long 1 + .string "" + .zero 23 + .long 1 + .long 0 + .long 0 + .long 1 + .string "\300" + .zero 22 + .long 99 + .long 0 + .long 0 + .long 0 + .long 1 + .long 0 + .long 0 + .long 1 + .long 0 + .long 0 + .long 1 + .long 1 + .zero 4 + .long 1 + .string "\300\001" + .zero 21 + .long 0 + .long 0 + .long 0 + .long 1 + .string "\300\001" + .zero 21 + .long 1 + .long 0 + .long 0 + .long 1 + .string "\317\001" + .zero 21 + .long 99 + .long 0 + .long 0 + .long 0 + .long 1 + .long 0 + .long 0 + .long 1 + .long 1 + .long 0 + .long 1 + .long 1 + .zero 4 + .zero 156 + .long 1 + .zero 47520 + .long 14 + .long .LC4 + .long 1 + .string "A" + .zero 22 + .long 0 + .long 0 + .long 0 + .long 1 + .string "A" + .zero 22 + .long 1 + .long 0 + .long 0 + .long 1 + .string "A" + .zero 22 + .long 99 + .long 0 + .long 0 + .long 0 + .long 1 + .long 0 + .long 0 + .long 1 + .long 1 + .long 0 + .long 1 + .long 1 + .zero 4 + .long 1 + .string "\317\001" + .zero 21 + .long 0 + .long 1 + .long 0 + .long 1 + .string "\317\001" + .zero 21 + .long 1 + .long 1 + .long 0 + .long 1 + .string "\317\001" + .zero 21 + .long 99 + .long 1 + .long 0 + .long 0 + .long 1 + .long 0 + .long 84 + .long 1 + .long -1 + .long 84 + .long 1 + .long -1 + .zero 4 + .zero 156 + .long 1 + .zero 47520 + .long 14 + .long .LC5 + .long 1 + .string "\317\302" + .zero 21 + .long 1 + .long 1 + .long 1 + .long 0 + .string "" + .zero 23 + .long 0 + .long 1 + .long 0 + .long 1 + .string "\317\302" + .zero 21 + .long 99 + .long 1 + .long 1 + .long 0 + .long 1 + .long -2 + .long 0 + .long 1 + .long -1 + .long 0 + .long 1 + .long 2 + .zero 4 + .long 1 + .string "\317" + .zero 22 + .long 1 + .long 1 + .long 0 + .long 1 + .string "\302" + .zero 22 + .long 1 + .long 1 + .long 0 + .long 1 + .string "\317\302" + .zero 21 + .long 99 + .long 0 + .long 0 + .long 0 + .long 1 + .long -2 + .long 0 + .long 1 + .long 1 + .long 0 + .long 1 + .long 2 + .zero 4 + .long 1 + .string "\216\217" + .zero 21 + .long 0 + .long 0 + .long 0 + .long 1 + .string "\216\217" + .zero 21 + .long 1 + .long 0 + .long 0 + .long 1 + .string "\216\217" + .zero 21 + .long 99 + .long 0 + .long 0 + .long 0 + .long 1 + .long 0 + .long 0 + .long 1 + .long -2 + .long 84 + .long 1 + .long -1 + .zero 4 + .zero 156 + .long 1 + .zero 47360 + .long 14 + .long .LC6 + .zero 48000 + .section .debug_macinfo + .byte 0x4 + .local s.3934 + .comm s.3934,8,4 + .section .rodata + .align 2 +.LC7: + .string "Warning : can't set locale: %s\nskipping ...\n" + .align 2 +.LC8: + .string "mbrlen" + .align 2 +.LC9: + .string "can't set locale" + .align 2 +.LC10: + .string "Initialization (external mbstate object) failed - skipped this test case." + .align 2 +.LC11: + .string "n = %d.\n" + .align 2 +.LC12: + .string "s_in = %c, n = %d, t_ini = %d, s_flg = %d, t_flg = %d, MB_CUR_MAX = %d.\n" + .align 2 +.LC13: + .string "mbrlen() [ %s : %d : %d ] ret = %zd\n" + .align 2 +.LC14: + .string "\t\t\t errno = %d\n" + .align 2 +.LC15: + .string "PASSED" + .align 2 +.LC16: + .string "the value of errno is different from an expected value" + .align 2 +.LC17: + .string "the return value is different from an expected value" + .text + .align 1 + .global tst_mbrlen + .type tst_mbrlen, @function +tst_mbrlen: +.LFB7: + .loc 1 13 0 + mov.l r8,@-r15 +.LCFI12: + mov.l r9,@-r15 +.LCFI13: + mov.l r10,@-r15 +.LCFI14: + mov.l r11,@-r15 +.LCFI15: + mov.l r12,@-r15 +.LCFI16: + mov.l r14,@-r15 +.LCFI17: + sts.l pr,@-r15 +.LCFI18: + add #-80,r15 +.LCFI19: + mov r15,r14 +.LCFI20: + mov r14,r1 + add #-48,r1 + mov.l r4,@(56,r1) + mov r14,r1 + add #-48,r1 + mov.l r5,@(52,r1) + .loc 1 14 0 + mov r14,r2 + add #16,r2 + mov #0,r1 + mov.l r1,@(4,r2) + mov r14,r2 + add #16,r2 + mov #0,r1 + mov.l r1,@(16,r2) + mov r14,r2 + add #16,r2 + mov #0,r1 + mov.l r1,@(32,r2) + .loc 1 23 0 + mov r14,r2 + add #-48,r2 + mov #0,r1 + mov.l r1,@(60,r2) + bra .L37 + nop + .align 1 +.L38: + .loc 1 25 0 + mov r14,r1 + add #-48,r1 + mov.l @(60,r1),r2 + mov r14,r7 + add #16,r7 + mov.l .L72,r3 + mov.l .L73,r1 + mul.l r1,r2 + sts macl,r1 + add r3,r1 + mov.l @r1,r1 + mov.l r1,@(12,r7) + mov r14,r1 + add #-48,r1 + mov.l @(60,r1),r2 + mov r14,r7 + add #16,r7 + mov.l .L72,r3 + mov.l .L73,r1 + mul.l r1,r2 + sts macl,r1 + add r3,r1 + add #4,r1 + mov.l @r1,r1 + mov.l r1,@(20,r7) + mov r14,r1 + add #16,r1 + mov.l @(20,r1),r1 + mov #6,r4 + mov r1,r5 + mov.l .L74,r1 + jsr @r1 + nop + tst r0,r0 + bf .L39 + mov.l .L75,r1 + mov.l @r1,r2 + mov.l .L76,r3 + mov r14,r1 + add #16,r1 + mov.l @(20,r1),r1 + mov r2,r4 + mov r3,r5 + mov r1,r6 + mov.l .L77,r1 + jsr @r1 + nop + add #-16,r15 + mov r15,r2 + mov r14,r1 + add #-48,r1 + mov.l @(56,r1),r3 + mov.l .L83,r7 + mov r14,r1 + add #16,r1 + mov.l @(20,r1),r0 + mov #0,r1 + mov.l r1,@r2 + mov #0,r1 + mov.l r1,@(4,r2) + mov #0,r1 + mov.l r1,@(8,r2) + mov.l .L79,r1 + mov.l r1,@(12,r2) + mov r3,r4 + mov #76,r5 + mov r7,r6 + mov r0,r7 + mov.l .L85,r1 +.LCFI21: + jsr @r1 + nop + add #16,r15 + mov r14,r2 + add #16,r2 + mov r14,r1 + add #16,r1 + mov.l @(4,r1),r1 + add #1,r1 + mov.l r1,@(4,r2) + bra .L41 + nop + .align 1 +.L39: + .loc 1 26 0 + mov r14,r2 + add #16,r2 + mov #0,r1 + mov.l r1,@(0,r2) + bra .L42 + nop + .align 1 +.L43: + .loc 1 28 0 + mov.l .L81,r1 + mov #0,r4 + mov #0,r5 + mov r1,r6 + mov.l .L82,r1 +.LCFI22: + jsr @r1 + nop + tst r0,r0 + bt .L44 + .loc 1 30 0 + mov r14,r2 + add #16,r2 + mov r14,r1 + add #16,r1 + mov.l @(4,r1),r1 + add #1,r1 + mov.l r1,@(4,r2) + .loc 1 31 0 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r1 + mov r1,r6 + add #1,r6 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r1 + mov r1,r3 + add #1,r3 + add #-16,r15 + mov r15,r2 + mov r14,r1 + add #-48,r1 + mov.l @(56,r1),r7 + mov.l .L83,r8 + mov r14,r1 + add #16,r1 + mov.l @(20,r1),r0 + mov.l r6,@r2 + mov.l r3,@(4,r2) + mov #3,r1 + mov.l r1,@(8,r2) + mov.l .L84,r1 + mov.l r1,@(12,r2) + mov r7,r4 + mov #70,r5 + mov r8,r6 + mov r0,r7 + mov.l .L85,r1 +.LCFI23: + jsr @r1 + nop + add #16,r15 + .loc 1 34 0 + bra .L46 + nop + .align 1 +.L44: + .loc 1 37 0 + mov r14,r2 + add #16,r2 + mov #0,r1 + mov.l r1,@(16,r2) + bra .L47 + nop +.L86: + .align 2 +.L72: + .long tst_mbrlen_loc +.L73: + .long 48008 +.L74: + .long setlocale +.L75: + .long stderr +.L76: + .long .LC7 +.L77: + .long fprintf +.L83: + .long .LC8 +.L79: + .long .LC9 +.L85: + .long result +.L81: + .long s.3934 +.L82: + .long mbrlen +.L84: + .long .LC10 + .align 1 +.L48: + .loc 1 39 0 + mov r14,r1 + add #-48,r1 + mov.l @(60,r1),r3 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r7 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r2 + mov r14,r6 + add #16,r6 + mov.l .L112,r5 + mov r2,r1 + add r1,r1 + add r2,r1 + mov r1,r2 + shll2 r2 + mov.l .L113,r1 + mul.l r1,r3 + sts macl,r1 + add r1,r2 + mov.w .L114,r1 + mul.l r1,r7 + sts macl,r1 + add r2,r1 + mov r1,r2 + add r5,r2 + mov.w .L91,r1 + add r2,r1 + mov.l @r1,r1 + mov.l r1,@(24,r6) + mov r14,r1 + add #-48,r1 + mov.l @(60,r1),r3 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r7 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r2 + mov r14,r6 + add #16,r6 + mov.l .L112,r5 + mov r2,r1 + add r1,r1 + add r2,r1 + mov r1,r2 + shll2 r2 + mov.l .L113,r1 + mul.l r1,r3 + sts macl,r1 + add r1,r2 + mov.w .L114,r1 + mul.l r1,r7 + sts macl,r1 + add r2,r1 + mov r1,r2 + add r5,r2 + mov.w .L95,r1 + add r2,r1 + mov.l @r1,r1 + mov.l r1,@(28,r6) + mov r14,r1 + add #-48,r1 + mov.l @(60,r1),r3 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r7 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r2 + mov r14,r6 + add #16,r6 + mov.l .L112,r5 + mov r2,r1 + add r1,r1 + add r2,r1 + mov r1,r2 + shll2 r2 + mov.l .L113,r1 + mul.l r1,r3 + sts macl,r1 + add r1,r2 + mov.w .L114,r1 + mul.l r1,r7 + sts macl,r1 + add r2,r1 + mov r1,r2 + add r5,r2 + mov.w .L99,r1 + add r2,r1 + mov.l @r1,r1 + mov.l r1,@(36,r6) + .loc 1 40 0 + mov r14,r1 + add #-48,r1 + mov.l @(60,r1),r3 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r7 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r2 + mov.l .L112,r6 + mov #40,r1 + mul.l r1,r2 + sts macl,r2 + mov.l .L113,r1 + mul.l r1,r3 + sts macl,r1 + add r1,r2 + mov.w .L114,r1 + mul.l r1,r7 + sts macl,r1 + add r2,r1 + add r6,r1 + add #8,r1 + mov.l @r1,r2 + mov r14,r1 + add #63,r1 + mov.b r2,@r1 + .loc 1 41 0 + mov r14,r1 + add #-48,r1 + mov.l @(60,r1),r7 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r3 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r2 + mov r14,r6 + add #16,r6 + mov #40,r1 + mul.l r1,r2 + sts macl,r2 + mov.w .L114,r1 + mul.l r1,r3 + sts macl,r1 + add r1,r2 + mov.l .L113,r1 + mul.l r1,r7 + sts macl,r1 + add r2,r1 + mov r1,r2 + add #12,r2 + mov.l .L112,r1 + add r2,r1 + mov.l r1,@(48,r6) + .loc 1 42 0 + mov r14,r1 + add #-48,r1 + mov.l @(60,r1),r3 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r7 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r2 + mov r14,r6 + add #16,r6 + mov.l .L112,r5 + mov #40,r1 + mul.l r1,r2 + sts macl,r2 + mov.l .L113,r1 + mul.l r1,r3 + sts macl,r1 + add r1,r2 + mov.w .L114,r1 + mul.l r1,r7 + sts macl,r1 + add r2,r1 + add r5,r1 + add #36,r1 + mov.l @r1,r1 + mov.l r1,@(52,r6) + .loc 1 43 0 + mov r14,r1 + add #-48,r1 + mov.l @(60,r1),r3 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r7 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r2 + mov.l .L112,r6 + mov #40,r1 + mul.l r1,r2 + sts macl,r2 + mov.l .L113,r1 + mul.l r1,r3 + sts macl,r1 + add r1,r2 + mov.w .L114,r1 + mul.l r1,r7 + sts macl,r1 + add r2,r1 + add r6,r1 + add #40,r1 + mov.l @r1,r2 + mov r14,r1 + add #74,r1 + mov.b r2,@r1 + .loc 1 44 0 + mov r14,r1 + add #-48,r1 + mov.l @(60,r1),r3 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r7 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r2 + mov.l .L112,r6 + mov #40,r1 + mul.l r1,r2 + sts macl,r2 + mov.l .L113,r1 + mul.l r1,r3 + sts macl,r1 + add r1,r2 + mov.w .L114,r1 + mul.l r1,r7 + sts macl,r1 + add r2,r1 + add r6,r1 + add #44,r1 + mov.l @r1,r2 + mov r14,r1 + add #75,r1 + mov.b r2,@r1 + .loc 1 45 0 + mov r14,r1 + add #63,r1 + mov.b @r1,r1 + tst r1,r1 + bra .L87 + nop + .align 1 +.L114: + .short 160 +.L91: + .short 128 +.L95: + .short 132 +.L99: + .short 136 +.L115: + .align 2 +.L112: + .long tst_mbrlen_loc +.L113: + .long 48008 + .align 1 +.L87: + bf .L49 + .loc 1 47 0 + mov r14,r2 + add #16,r2 + mov #0,r1 + mov.l r1,@(48,r2) +.L49: + .loc 1 51 0 + mov.l .L136,r1 + mov.l @r1,r2 + mov.l .L117,r3 + mov r14,r1 + add #16,r1 + mov.l @(52,r1),r1 + mov r2,r4 + mov r3,r5 + mov r1,r6 + mov.l .L138,r1 +.LCFI24: + jsr @r1 + nop + .loc 1 53 0 + mov r14,r1 + add #16,r1 + mov.l @(52,r1),r2 + mov #99,r1 + cmp/eq r1,r2 + bf .L51 + .loc 1 55 0 + mov.l .L130,r1 + jsr @r1 + nop + mov r14,r1 + add #16,r1 + mov.l r0,@(52,r1) +.L51: + .loc 1 58 0 + mov r14,r1 + add #74,r1 + mov.b @r1,r1 + tst r1,r1 + bt .L53 + mov.l .L121,r1 + mov.l r1,@r14 + bra .L55 + nop + .align 1 +.L53: + mov #0,r2 + mov.l r2,@r14 +.L55: + mov r14,r1 + add #16,r1 + mov.l @r14,r2 + mov.l r2,@(60,r1) + .loc 1 60 0 + mov r14,r1 + add #75,r1 + mov.b @r1,r1 + tst r1,r1 + bt .L56 + .loc 1 62 0 + mov.l .L121,r1 + mov r1,r4 + mov #0,r5 + mov #8,r6 + mov.l .L122,r1 + jsr @r1 + nop + .loc 1 63 0 + mov #0,r4 + mov #0,r5 + mov #0,r6 + mov.l .L126,r1 + jsr @r1 + nop +.L56: + .loc 1 66 0 + mova .L128,r0 + mov.l .L128,r12 + add r0,r12 + mov.l 1f,r0 + stc gbr,r1 + mov.l @(r0,r12),r0 + bra 2f + add r0,r1 + .align 2 +1: .long __libc_errno@GOTTPOFF +2: + mov r1,r2 + mov #0,r1 + mov.l r1,@r2 + .loc 1 67 0 + mov r14,r1 + add #16,r1 + mov.l @(48,r1),r2 + mov r14,r1 + add #16,r1 + mov.l @(52,r1),r3 + mov r14,r1 + add #16,r1 + mov.l @(60,r1),r1 + mov r2,r4 + mov r3,r5 + mov r1,r6 + mov.l .L126,r1 + jsr @r1 + nop + mov r14,r1 + add #16,r1 + mov.l r0,@(40,r1) + .loc 1 68 0 + mov r14,r2 + add #16,r2 + mova .L128,r0 + mov.l .L128,r12 + add r0,r12 + mov.l 1f,r0 + stc gbr,r1 + mov.l @(r0,r12),r0 + bra 2f + add r0,r1 + .align 2 +1: .long __libc_errno@GOTTPOFF +2: + mov.l @r1,r1 + mov.l r1,@(32,r2) + .loc 1 71 0 + mov.l .L136,r1 + mov.l @r1,r8 + mov r14,r1 + add #75,r1 + mov.b @r1,r9 + mov r14,r1 + add #63,r1 + mov.b @r1,r10 + mov r14,r1 + add #74,r1 + mov.b @r1,r11 + mov.l .L130,r1 + jsr @r1 + nop + add #-16,r15 + mov r15,r2 + mov.l .L131,r3 + mov r14,r1 + add #16,r1 + mov.l @(48,r1),r7 + mov r14,r1 + add #16,r1 + mov.l @(52,r1),r1 + mov.l r9,@r2 + mov.l r10,@(4,r2) + mov.l r11,@(8,r2) + mov.l r0,@(12,r2) + mov r8,r4 + mov r3,r5 + mov r7,r6 + mov r1,r7 + mov.l .L138,r1 +.LCFI25: + jsr @r1 + nop + add #16,r15 + .loc 1 75 0 + mov r14,r1 + add #-48,r1 + mov.l @(52,r1),r1 + tst r1,r1 + bt .L58 + .loc 1 77 0 + mov.l .L136,r1 + mov.l @r1,r5 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r1 + mov r1,r0 + add #1,r0 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r1 + mov r1,r3 + add #1,r3 + add #-8,r15 + mov r15,r2 + mov.l .L134,r7 + mov r14,r1 + add #16,r1 + mov.l @(20,r1),r6 + mov.l r3,@r2 + mov r14,r1 + add #16,r1 + mov.l @(40,r1),r1 + mov.l r1,@(4,r2) + mov r5,r4 + mov r7,r5 + mov r0,r7 + mov.l .L138,r1 +.LCFI26: + jsr @r1 + nop + add #8,r15 + .loc 1 79 0 + mov.l .L136,r1 + mov.l @r1,r2 + mov.l .L137,r3 + mov r14,r1 + add #16,r1 + mov.l @(32,r1),r1 + mov r2,r4 + mov r3,r5 + mov r1,r6 + mov.l .L138,r1 +.LCFI27: + jsr @r1 + nop +.L58: + .loc 1 82 0 + mov r14,r1 + add #16,r1 + mov.l @(24,r1),r1 + tst r1,r1 + bt .L60 + mov r14,r1 + add #16,r1 + mov r14,r2 + add #16,r2 + mov.l @(32,r1),r3 + mov.l @(24,r2),r1 + cmp/eq r1,r3 + bf .L62 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r1 + mov r1,r6 + add #1,r6 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r1 + mov r1,r3 + add #1,r3 + add #-16,r15 + mov r15,r2 + mov r14,r1 + add #-48,r1 + mov.l @(56,r1),r7 + mov.l .L145,r8 + mov r14,r1 + add #16,r1 + mov.l @(20,r1),r0 + mov.l r6,@r2 + mov.l r3,@(4,r2) + mov #1,r1 + mov.l r1,@(8,r2) + mov.l .L146,r1 + mov.l r1,@(12,r2) + mov r7,r4 + mov #83,r5 + mov r8,r6 + mov r0,r7 + mov.l .L147,r1 +.LCFI28: + jsr @r1 + nop + add #16,r15 + bra .L60 + nop + .align 1 +.L62: + mov r14,r2 + add #16,r2 + mov r14,r1 + add #16,r1 + mov.l @(4,r1),r1 + add #1,r1 + mov.l r1,@(4,r2) + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r1 + mov r1,r6 + add #1,r6 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r1 + mov r1,r3 + add #1,r3 + add #-16,r15 + mov r15,r2 + mov r14,r1 + add #-48,r1 + mov.l @(56,r1),r7 + mov.l .L145,r8 + mov r14,r1 + add #16,r1 + mov.l @(20,r1),r0 + mov.l r6,@r2 + mov.l r3,@(4,r2) + mov #1,r1 + mov.l r1,@(8,r2) + mov.l .L143,r1 + mov.l r1,@(12,r2) + mov r7,r4 + mov #70,r5 + mov r8,r6 + mov r0,r7 + mov.l .L147,r1 + jsr @r1 + nop + add #16,r15 +.L60: + mov r14,r1 + add #16,r1 + mov.l @(28,r1),r2 + mov #1,r1 + cmp/eq r1,r2 + bf .L161 + mov r14,r1 + add #16,r1 + mov r14,r2 + add #16,r2 + mov.l @(40,r1),r3 + mov.l @(36,r2),r1 + cmp/eq r1,r3 + bf .L66 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r1 + mov r1,r6 + add #1,r6 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r1 + mov r1,r3 + add #1,r3 + add #-16,r15 + mov r15,r2 + mov r14,r1 + add #-48,r1 + mov.l @(56,r1),r7 + mov.l .L145,r8 + mov r14,r1 + add #16,r1 + mov.l @(20,r1),r0 + mov.l r6,@r2 + mov.l r3,@(4,r2) + mov #2,r1 + mov.l r1,@(8,r2) + mov.l .L146,r1 + mov.l r1,@(12,r2) + mov r7,r4 + mov #83,r5 + mov r8,r6 + mov r0,r7 + mov.l .L147,r1 + jsr @r1 + nop + add #16,r15 +.L161: + bra .L64 + nop +.L148: + .align 2 +.L136: + .long stdout +.L117: + .long .LC11 +.L138: + .long fprintf +.L130: + .long _stdlib_mb_cur_max +.L121: + .long s.3934 +.L122: + .long memset +.L126: + .long mbrlen +.L128: + .long _GLOBAL_OFFSET_TABLE_ +.L131: + .long .LC12 +.L134: + .long .LC13 +.L137: + .long .LC14 +.L145: + .long .LC8 +.L146: + .long .LC15 +.L147: + .long result +.L143: + .long .LC16 + .align 1 +.L66: + mov r14,r2 + add #16,r2 + mov r14,r1 + add #16,r1 + mov.l @(4,r1),r1 + add #1,r1 + mov.l r1,@(4,r2) + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r1 + mov r1,r6 + add #1,r6 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r1 + mov r1,r3 + add #1,r3 + add #-16,r15 + mov r15,r2 + mov r14,r1 + add #-48,r1 + mov.l @(56,r1),r7 + mov.l .L149,r8 + mov r14,r1 + add #16,r1 + mov.l @(20,r1),r0 + mov.l r6,@r2 + mov.l r3,@(4,r2) + mov #2,r1 + mov.l r1,@(8,r2) + mov.l .L150,r1 + mov.l r1,@(12,r2) + mov r7,r4 + mov #70,r5 + mov r8,r6 + mov r0,r7 + mov.l .L151,r1 + jsr @r1 + nop + add #16,r15 +.L64: + .loc 1 37 0 + mov r14,r2 + add #16,r2 + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r1 + add #1,r1 + mov.l r1,@(16,r2) +.L47: + mov r14,r1 + add #16,r1 + mov.l @(16,r1),r2 + mov #2,r1 + cmp/gt r1,r2 + bt .L167 + bra .L48 + nop +.L167: +.L46: + .loc 1 26 0 + mov r14,r2 + add #16,r2 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r1 + add #1,r1 + mov.l r1,@(0,r2) +.L42: + mov r14,r1 + add #-48,r1 + mov.l @(60,r1),r3 + mov r14,r1 + add #16,r1 + mov.l @(0,r1),r2 + mov.l .L156,r7 + mov.w .L153,r1 + mul.l r1,r2 + sts macl,r2 + mov.l .L157,r1 + mul.l r1,r3 + sts macl,r1 + add r2,r1 + mov r1,r2 + add r7,r2 + mov.w .L155,r1 + add r2,r1 + mov.l @r1,r1 + tst r1,r1 + bf .L166 + bra .L43 + nop +.L166: +.L41: + .loc 1 23 0 + mov r14,r2 + add #-48,r2 + mov r14,r1 + add #-48,r1 + mov.l @(60,r1),r1 + add #1,r1 + mov.l r1,@(60,r2) +.L37: + mov r14,r1 + add #-48,r1 + mov.l @(60,r1),r2 + mov.l .L156,r3 + mov.l .L157,r1 + mul.l r1,r2 + sts macl,r1 + add r3,r1 + add #4,r1 + mov.l @r1,r1 + mov.l .L158,r2 + mov r1,r4 + mov r2,r5 + mov.l .L159,r1 +.LCFI29: + jsr @r1 + nop + tst r0,r0 + bt .L165 + bra .L38 + nop +.L165: + .loc 1 89 0 + mov r14,r1 + add #16,r1 + mov.l @(4,r1),r1 + mov r1,r0 + .loc 1 90 0 + add #80,r14 + mov r14,r15 + lds.l @r15+,pr + mov.l @r15+,r14 + mov.l @r15+,r12 + mov.l @r15+,r11 + mov.l @r15+,r10 + mov.l @r15+,r9 + mov.l @r15+,r8 + rts + nop + .align 1 +.L153: + .short 160 +.L155: + .short 164 +.L160: + .align 2 +.L149: + .long .LC8 +.L150: + .long .LC17 +.L151: + .long result +.L156: + .long tst_mbrlen_loc +.L157: + .long 48008 +.L158: + .long .LC6 +.L159: + .long strcmp +.LFE7: + .size tst_mbrlen, .-tst_mbrlen + .section .debug_macinfo + .byte 0x4 + .comm result_rec,132,4 + .section .debug_frame,"",@progbits +.Lframe0: + .ualong .LECIE0-.LSCIE0 +.LSCIE0: + .ualong 0xffffffff + .byte 0x1 + .string "" + .uleb128 0x1 + .sleb128 -4 + .byte 0x11 + .byte 0xc + .uleb128 0xf + .uleb128 0x0 + .align 2 +.LECIE0: +.LSFDE0: + .ualong .LEFDE0-.LASFDE0 +.LASFDE0: + .ualong .Lframe0 + .ualong .LFB5 + .ualong .LFE5-.LFB5 + .byte 0x4 + .ualong .LCFI0-.LFB5 + .byte 0xe + .uleb128 0x4 + .byte 0x4 + .ualong .LCFI1-.LCFI0 + .byte 0xe + .uleb128 0x8 + .byte 0x4 + .ualong .LCFI2-.LCFI1 + .byte 0xe + .uleb128 0x1c + .byte 0x91 + .uleb128 0x2 + .byte 0x8e + .uleb128 0x1 + .byte 0x4 + .ualong .LCFI3-.LCFI2 + .byte 0xd + .uleb128 0xe + .align 2 +.LEFDE0: +.LSFDE2: + .ualong .LEFDE2-.LASFDE2 +.LASFDE2: + .ualong .Lframe0 + .ualong .LFB6 + .ualong .LFE6-.LFB6 + .byte 0x4 + .ualong .LCFI4-.LFB6 + .byte 0xe + .uleb128 0x4 + .byte 0x4 + .ualong .LCFI5-.LCFI4 + .byte 0xe + .uleb128 0x8 + .byte 0x4 + .ualong .LCFI6-.LCFI5 + .byte 0xe + .uleb128 0xc + .byte 0x4 + .ualong .LCFI7-.LCFI6 + .byte 0xe + .uleb128 0x20 + .byte 0x91 + .uleb128 0x3 + .byte 0x8e + .uleb128 0x2 + .byte 0x88 + .uleb128 0x1 + .byte 0x4 + .ualong .LCFI8-.LCFI7 + .byte 0xd + .uleb128 0xe + .byte 0x4 + .ualong .LCFI9-.LCFI8 + .byte 0x2e + .uleb128 0xc + .byte 0x4 + .ualong .LCFI10-.LCFI9 + .byte 0x2e + .uleb128 0x14 + .byte 0x4 + .ualong .LCFI11-.LCFI10 + .byte 0x2e + .uleb128 0x0 + .align 2 +.LEFDE2: +.LSFDE4: + .ualong .LEFDE4-.LASFDE4 +.LASFDE4: + .ualong .Lframe0 + .ualong .LFB7 + .ualong .LFE7-.LFB7 + .byte 0x4 + .ualong .LCFI12-.LFB7 + .byte 0xe + .uleb128 0x4 + .byte 0x4 + .ualong .LCFI13-.LCFI12 + .byte 0xe + .uleb128 0x8 + .byte 0x4 + .ualong .LCFI14-.LCFI13 + .byte 0xe + .uleb128 0xc + .byte 0x4 + .ualong .LCFI15-.LCFI14 + .byte 0xe + .uleb128 0x10 + .byte 0x4 + .ualong .LCFI16-.LCFI15 + .byte 0xe + .uleb128 0x14 + .byte 0x4 + .ualong .LCFI17-.LCFI16 + .byte 0xe + .uleb128 0x18 + .byte 0x4 + .ualong .LCFI18-.LCFI17 + .byte 0xe + .uleb128 0x1c + .byte 0x4 + .ualong .LCFI19-.LCFI18 + .byte 0xe + .uleb128 0x6c + .byte 0x91 + .uleb128 0x7 + .byte 0x8e + .uleb128 0x6 + .byte 0x8c + .uleb128 0x5 + .byte 0x8b + .uleb128 0x4 + .byte 0x8a + .uleb128 0x3 + .byte 0x89 + .uleb128 0x2 + .byte 0x88 + .uleb128 0x1 + .byte 0x4 + .ualong .LCFI20-.LCFI19 + .byte 0xd + .uleb128 0xe + .byte 0x4 + .ualong .LCFI21-.LCFI20 + .byte 0x2e + .uleb128 0x10 + .byte 0x4 + .ualong .LCFI22-.LCFI21 + .byte 0x2e + .uleb128 0x0 + .byte 0x4 + .ualong .LCFI23-.LCFI22 + .byte 0x2e + .uleb128 0x10 + .byte 0x4 + .ualong .LCFI24-.LCFI23 + .byte 0x2e + .uleb128 0x0 + .byte 0x4 + .ualong .LCFI25-.LCFI24 + .byte 0x2e + .uleb128 0x10 + .byte 0x4 + .ualong .LCFI26-.LCFI25 + .byte 0x2e + .uleb128 0x8 + .byte 0x4 + .ualong .LCFI27-.LCFI26 + .byte 0x2e + .uleb128 0x0 + .byte 0x4 + .ualong .LCFI28-.LCFI27 + .byte 0x2e + .uleb128 0x10 + .byte 0x4 + .ualong .LCFI29-.LCFI28 + .byte 0x2e + .uleb128 0x0 + .align 2 +.LEFDE4: + .text +.Letext0: + .section .debug_loc,"",@progbits +.Ldebug_loc0: +.LLST0: + .ualong .LFB5-.Ltext0 + .ualong .LCFI0-.Ltext0 + .uaword 0x1 + .byte 0x5f + .ualong .LCFI0-.Ltext0 + .ualong .LCFI1-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 4 + .ualong .LCFI1-.Ltext0 + .ualong .LCFI2-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 8 + .ualong .LCFI2-.Ltext0 + .ualong .LCFI3-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 28 + .ualong .LCFI3-.Ltext0 + .ualong .LFE5-.Ltext0 + .uaword 0x2 + .byte 0x7e + .sleb128 28 + .ualong 0x0 + .ualong 0x0 +.LLST1: + .ualong .LFB6-.Ltext0 + .ualong .LCFI4-.Ltext0 + .uaword 0x1 + .byte 0x5f + .ualong .LCFI4-.Ltext0 + .ualong .LCFI5-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 4 + .ualong .LCFI5-.Ltext0 + .ualong .LCFI6-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 8 + .ualong .LCFI6-.Ltext0 + .ualong .LCFI7-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 12 + .ualong .LCFI7-.Ltext0 + .ualong .LCFI8-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 32 + .ualong .LCFI8-.Ltext0 + .ualong .LFE6-.Ltext0 + .uaword 0x2 + .byte 0x7e + .sleb128 32 + .ualong 0x0 + .ualong 0x0 +.LLST2: + .ualong .LFB7-.Ltext0 + .ualong .LCFI12-.Ltext0 + .uaword 0x1 + .byte 0x5f + .ualong .LCFI12-.Ltext0 + .ualong .LCFI13-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 4 + .ualong .LCFI13-.Ltext0 + .ualong .LCFI14-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 8 + .ualong .LCFI14-.Ltext0 + .ualong .LCFI15-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 12 + .ualong .LCFI15-.Ltext0 + .ualong .LCFI16-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 16 + .ualong .LCFI16-.Ltext0 + .ualong .LCFI17-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 20 + .ualong .LCFI17-.Ltext0 + .ualong .LCFI18-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 24 + .ualong .LCFI18-.Ltext0 + .ualong .LCFI19-.Ltext0 + .uaword 0x2 + .byte 0x7f + .sleb128 28 + .ualong .LCFI19-.Ltext0 + .ualong .LCFI20-.Ltext0 + .uaword 0x3 + .byte 0x7f + .sleb128 108 + .ualong .LCFI20-.Ltext0 + .ualong .LFE7-.Ltext0 + .uaword 0x3 + .byte 0x7e + .sleb128 108 + .ualong 0x0 + .ualong 0x0 + .section .debug_info + .ualong 0x925 + .uaword 0x2 + .ualong .Ldebug_abbrev0 + .byte 0x4 + .uleb128 0x1 + .ualong .Ldebug_macinfo0 + .ualong .Ldebug_line0 + .ualong .Letext0 + .ualong .Ltext0 + .string "GNU C 4.1.1 (STMicroelectronics Special) [build Jun 26 2007]" + .byte 0x1 + .string "tst_mbrlen.c" + .string "/vob/stsca_uClibc-nptl/uClibc-nptl/test/locale-mbwc" + .uleb128 0x2 + .string "size_t" + .byte 0xa + .byte 0xd6 + .ualong 0xa9 + .uleb128 0x3 + .ualong .LASF0 + .byte 0x4 + .byte 0x7 + .uleb128 0x4 + .string "short unsigned int" + .byte 0x2 + .byte 0x7 + .uleb128 0x4 + .string "long unsigned int" + .byte 0x4 + .byte 0x7 + .uleb128 0x4 + .string "long int" + .byte 0x4 + .byte 0x5 + .uleb128 0x4 + .string "int" + .byte 0x4 + .byte 0x5 + .uleb128 0x5 + .byte 0x4 + .ualong 0xf4 + .uleb128 0x4 + .string "char" + .byte 0x1 + .byte 0x6 + .uleb128 0x4 + .string "long long int" + .byte 0x8 + .byte 0x5 + .uleb128 0x3 + .ualong .LASF0 + .byte 0x4 + .byte 0x7 + .uleb128 0x4 + .string "unsigned char" + .byte 0x1 + .byte 0x8 + .uleb128 0x4 + .string "signed char" + .byte 0x1 + .byte 0x6 + .uleb128 0x4 + .string "short int" + .byte 0x2 + .byte 0x5 + .uleb128 0x4 + .string "long long unsigned int" + .byte 0x8 + .byte 0x7 + .uleb128 0x6 + .ualong 0x1cf + .byte 0x18 + .byte 0x10 + .byte 0x34 + .uleb128 0x7 + .string "__lock" + .byte 0x10 + .byte 0x35 + .ualong 0xe7 + .byte 0x2 + .byte 0x23 + .uleb128 0x0 + .uleb128 0x7 + .string "__count" + .byte 0x10 + .byte 0x36 + .ualong 0xa9 + .byte 0x2 + .byte 0x23 + .uleb128 0x4 + .uleb128 0x7 + .string "__owner" + .byte 0x10 + .byte 0x37 + .ualong 0xe7 + .byte 0x2 + .byte 0x23 + .uleb128 0x8 + .uleb128 0x7 + .string "__kind" + .byte 0x10 + .byte 0x3a + .ualong 0xe7 + .byte 0x2 + .byte 0x23 + .uleb128 0xc + .uleb128 0x7 + .string "__nusers" + .byte 0x10 + .byte 0x3b + .ualong 0xa9 + .byte 0x2 + .byte 0x23 + .uleb128 0x10 + .uleb128 0x7 + .string "__spins" + .byte 0x10 + .byte 0x3c + .ualong 0xe7 + .byte 0x2 + .byte 0x23 + .uleb128 0x14 + .byte 0x0 + .uleb128 0x8 + .ualong 0x203 + .byte 0x18 + .byte 0x10 + .byte 0x32 + .uleb128 0x9 + .string "__data" + .byte 0x10 + .byte 0x3d + .ualong 0x15b + .uleb128 0x9 + .string "__size" + .byte 0x10 + .byte 0x3e + .ualong 0x203 + .uleb128 0x9 + .string "__align" + .byte 0x10 + .byte 0x3f + .ualong 0xdb + .byte 0x0 + .uleb128 0xa + .ualong 0x213 + .ualong 0xf4 + .uleb128 0xb + .ualong 0x10d + .byte 0x17 + .byte 0x0 + .uleb128 0x2 + .string "pthread_mutex_t" + .byte 0x10 + .byte 0x40 + .ualong 0x1cf + .uleb128 0x2 + .string "FILE" + .byte 0x5 + .byte 0x2e + .ualong 0x236 + .uleb128 0xc + .ualong 0x381 + .string "__STDIO_FILE_STRUCT" + .byte 0x50 + .byte 0x5 + .byte 0x2e + .uleb128 0xd + .string "__modeflags" + .byte 0x11 + .uaword 0x110 + .ualong 0xb0 + .byte 0x2 + .byte 0x23 + .uleb128 0x0 + .uleb128 0xd + .string "__ungot_width" + .byte 0x11 + .uaword 0x113 + .ualong 0x3cd + .byte 0x2 + .byte 0x23 + .uleb128 0x2 + .uleb128 0xd + .string "__filedes" + .byte 0x11 + .uaword 0x11a + .ualong 0xe7 + .byte 0x2 + .byte 0x23 + .uleb128 0x4 + .uleb128 0xd + .string "__bufstart" + .byte 0x11 + .uaword 0x11c + .ualong 0x3dd + .byte 0x2 + .byte 0x23 + .uleb128 0x8 + .uleb128 0xd + .string "__bufend" + .byte 0x11 + .uaword 0x11d + .ualong 0x3dd + .byte 0x2 + .byte 0x23 + .uleb128 0xc + .uleb128 0xd + .string "__bufpos" + .byte 0x11 + .uaword 0x11e + .ualong 0x3dd + .byte 0x2 + .byte 0x23 + .uleb128 0x10 + .uleb128 0xd + .string "__bufread" + .byte 0x11 + .uaword 0x11f + .ualong 0x3dd + .byte 0x2 + .byte 0x23 + .uleb128 0x14 + .uleb128 0xd + .string "__bufgetc_u" + .byte 0x11 + .uaword 0x122 + .ualong 0x3dd + .byte 0x2 + .byte 0x23 + .uleb128 0x18 + .uleb128 0xd + .string "__bufputc_u" + .byte 0x11 + .uaword 0x125 + .ualong 0x3dd + .byte 0x2 + .byte 0x23 + .uleb128 0x1c + .uleb128 0xd + .string "__nextopen" + .byte 0x11 + .uaword 0x12b + .ualong 0x3e3 + .byte 0x2 + .byte 0x23 + .uleb128 0x20 + .uleb128 0xd + .string "__ungot" + .byte 0x11 + .uaword 0x132 + .ualong 0x3e9 + .byte 0x2 + .byte 0x23 + .uleb128 0x24 + .uleb128 0xd + .string "__state" + .byte 0x11 + .uaword 0x135 + .ualong 0x3ba + .byte 0x2 + .byte 0x23 + .uleb128 0x2c + .uleb128 0xd + .string "__user_locking" + .byte 0x11 + .uaword 0x13b + .ualong 0xe7 + .byte 0x2 + .byte 0x23 + .uleb128 0x34 + .uleb128 0xd + .string "__lock" + .byte 0x11 + .uaword 0x13f + .ualong 0x213 + .byte 0x2 + .byte 0x23 + .uleb128 0x38 + .byte 0x0 + .uleb128 0xe + .string "wchar_t" + .byte 0xa + .uaword 0x146 + .ualong 0xdb + .uleb128 0x6 + .ualong 0x3ba + .byte 0x8 + .byte 0x12 + .byte 0x52 + .uleb128 0x7 + .string "__mask" + .byte 0x12 + .byte 0x53 + .ualong 0x381 + .byte 0x2 + .byte 0x23 + .uleb128 0x0 + .uleb128 0x7 + .string "__wc" + .byte 0x12 + .byte 0x54 + .ualong 0x381 + .byte 0x2 + .byte 0x23 + .uleb128 0x4 + .byte 0x0 + .uleb128 0x2 + .string "__mbstate_t" + .byte 0x12 + .byte 0x55 + .ualong 0x391 + .uleb128 0xa + .ualong 0x3dd + .ualong 0x114 + .uleb128 0xb + .ualong 0x10d + .byte 0x1 + .byte 0x0 + .uleb128 0x5 + .byte 0x4 + .ualong 0x114 + .uleb128 0x5 + .byte 0x4 + .ualong 0x236 + .uleb128 0xa + .ualong 0x3f9 + .ualong 0x381 + .uleb128 0xb + .ualong 0x10d + .byte 0x1 + .byte 0x0 + .uleb128 0x5 + .byte 0x4 + .ualong 0x3ff + .uleb128 0xf + .ualong 0xf4 + .uleb128 0x2 + .string "mbstate_t" + .byte 0x12 + .byte 0x6b + .ualong 0x3ba + .uleb128 0x6 + .ualong 0x441 + .byte 0x8 + .byte 0x36 + .byte 0x35 + .uleb128 0x7 + .string "func_id" + .byte 0x36 + .byte 0x36 + .ualong 0xe7 + .byte 0x2 + .byte 0x23 + .uleb128 0x0 + .uleb128 0x7 + .string "locale" + .byte 0x36 + .byte 0x37 + .ualong 0x3f9 + .byte 0x2 + .byte 0x23 + .uleb128 0x4 + .byte 0x0 + .uleb128 0x2 + .string "TST_HEAD" + .byte 0x36 + .byte 0x39 + .ualong 0x415 + .uleb128 0x6 + .ualong 0x4a3 + .byte 0x28 + .byte 0x36 + .byte 0x76 + .uleb128 0x7 + .string "s_flg" + .byte 0x36 + .byte 0x77 + .ualong 0xe7 + .byte 0x2 + .byte 0x23 + .uleb128 0x0 + .uleb128 0x7 + .string "s" + .byte 0x36 + .byte 0x78 + .ualong 0x203 + .byte 0x2 + .byte 0x23 + .uleb128 0x4 + .uleb128 0x7 + .string "n" + .byte 0x36 + .byte 0x79 + .ualong 0x9b + .byte 0x2 + .byte 0x23 + .uleb128 0x1c + .uleb128 0x7 + .string "t_flg" + .byte 0x36 + .byte 0x7a + .ualong 0xe7 + .byte 0x2 + .byte 0x23 + .uleb128 0x20 + .uleb128 0x7 + .string "t_init" + .byte 0x36 + .byte 0x7b + .ualong 0xe7 + .byte 0x2 + .byte 0x23 + .uleb128 0x24 + .byte 0x0 + .uleb128 0x6 + .ualong 0x4ba + .byte 0x78 + .byte 0x36 + .byte 0x74 + .uleb128 0x7 + .string "seq" + .byte 0x36 + .byte 0x7d + .ualong 0x4ba + .byte 0x2 + .byte 0x23 + .uleb128 0x0 + .byte 0x0 + .uleb128 0xa + .ualong 0x4ca + .ualong 0x451 + .uleb128 0xb + .ualong 0x10d + .byte 0x2 + .byte 0x0 + .uleb128 0x2 + .string "TIN_MBRLEN_REC" + .byte 0x36 + .byte 0x7f + .ualong 0x4a3 + .uleb128 0x6 + .ualong 0x51f + .byte 0xc + .byte 0x36 + .byte 0x81 + .uleb128 0x7 + .string "err_val" + .byte 0x36 + .byte 0x81 + .ualong 0xe7 + .byte 0x2 + .byte 0x23 + .uleb128 0x0 + .uleb128 0x7 + .string "ret_flg" + .byte 0x36 + .byte 0x81 + .ualong 0xe7 + .byte 0x2 + .byte 0x23 + .uleb128 0x4 + .uleb128 0x7 + .string "ret_val" + .byte 0x36 + .byte 0x81 + .ualong 0x9b + .byte 0x2 + .byte 0x23 + .uleb128 0x8 + .byte 0x0 + .uleb128 0x6 + .ualong 0x536 + .byte 0x24 + .byte 0x36 + .byte 0x81 + .uleb128 0x7 + .string "seq" + .byte 0x36 + .byte 0x81 + .ualong 0x536 + .byte 0x2 + .byte 0x23 + .uleb128 0x0 + .byte 0x0 + .uleb128 0xa + .ualong 0x546 + .ualong 0x4e0 + .uleb128 0xb + .ualong 0x10d + .byte 0x2 + .byte 0x0 + .uleb128 0x2 + .string "TEX_MBRLEN_REC" + .byte 0x36 + .byte 0x81 + .ualong 0x51f + .uleb128 0x6 + .ualong 0x599 + .byte 0xa0 + .byte 0x36 + .byte 0x82 + .uleb128 0x7 + .string "input" + .byte 0x36 + .byte 0x82 + .ualong 0x4ca + .byte 0x2 + .byte 0x23 + .uleb128 0x0 + .uleb128 0x7 + .string "expect" + .byte 0x36 + .byte 0x82 + .ualong 0x546 + .byte 0x2 + .byte 0x23 + .uleb128 0x78 + .uleb128 0x7 + .string "is_last" + .byte 0x36 + .byte 0x82 + .ualong 0xe7 + .byte 0x3 + .byte 0x23 + .uleb128 0x9c + .byte 0x0 + .uleb128 0x2 + .string "TST_MBRLEN_REC" + .byte 0x36 + .byte 0x82 + .ualong 0x55c + .uleb128 0x10 + .ualong 0x5d4 + .uaword 0xbb88 + .byte 0x36 + .byte 0x82 + .uleb128 0x7 + .string "hd" + .byte 0x36 + .byte 0x82 + .ualong 0x441 + .byte 0x2 + .byte 0x23 + .uleb128 0x0 + .uleb128 0x7 + .string "rec" + .byte 0x36 + .byte 0x82 + .ualong 0x5d4 + .byte 0x2 + .byte 0x23 + .uleb128 0x8 + .byte 0x0 + .uleb128 0xa + .ualong 0x5e5 + .ualong 0x599 + .uleb128 0x11 + .ualong 0x10d + .uaword 0x12b + .byte 0x0 + .uleb128 0x2 + .string "TST_MBRLEN" + .byte 0x36 + .byte 0x82 + .ualong 0x5af + .uleb128 0x4 + .string "double" + .byte 0x8 + .byte 0x4 + .uleb128 0x4 + .string "float" + .byte 0x4 + .byte 0x4 + .uleb128 0x12 + .ualong 0x665 + .byte 0x1 + .string "main" + .byte 0x4 + .byte 0x17 + .byte 0x1 + .ualong 0xe7 + .ualong .LFB5 + .ualong .LFE5 + .ualong .LLST0 + .uleb128 0x13 + .string "argc" + .byte 0x4 + .byte 0x16 + .ualong 0xe7 + .byte 0x2 + .byte 0x91 + .sleb128 -20 + .uleb128 0x13 + .string "argv" + .byte 0x4 + .byte 0x16 + .ualong 0x665 + .byte 0x2 + .byte 0x91 + .sleb128 -24 + .uleb128 0x14 + .string "ret" + .byte 0x4 + .byte 0x18 + .ualong 0xe7 + .byte 0x2 + .byte 0x91 + .sleb128 -16 + .uleb128 0x14 + .string "debug" + .byte 0x4 + .byte 0x19 + .ualong 0xe7 + .byte 0x2 + .byte 0x91 + .sleb128 -12 + .byte 0x0 + .uleb128 0x5 + .byte 0x4 + .ualong 0xee + .uleb128 0x12 + .ualong 0x706 + .byte 0x1 + .string "result" + .byte 0x4 + .byte 0x2d + .byte 0x1 + .ualong 0xe7 + .ualong .LFB6 + .ualong .LFE6 + .ualong .LLST1 + .uleb128 0x13 + .string "fp" + .byte 0x4 + .byte 0x2b + .ualong 0x706 + .byte 0x2 + .byte 0x91 + .sleb128 -16 + .uleb128 0x13 + .string "res" + .byte 0x4 + .byte 0x2b + .ualong 0xf4 + .byte 0x2 + .byte 0x91 + .sleb128 -20 + .uleb128 0x13 + .string "func" + .byte 0x4 + .byte 0x2b + .ualong 0x3f9 + .byte 0x2 + .byte 0x91 + .sleb128 -24 + .uleb128 0x13 + .string "loc" + .byte 0x4 + .byte 0x2b + .ualong 0x3f9 + .byte 0x2 + .byte 0x91 + .sleb128 -28 + .uleb128 0x13 + .string "rec_no" + .byte 0x4 + .byte 0x2b + .ualong 0xe7 + .byte 0x2 + .byte 0x91 + .sleb128 0 + .uleb128 0x13 + .string "seq_no" + .byte 0x4 + .byte 0x2c + .ualong 0xe7 + .byte 0x2 + .byte 0x91 + .sleb128 4 + .uleb128 0x13 + .string "case_no" + .byte 0x4 + .byte 0x2c + .ualong 0xe7 + .byte 0x2 + .byte 0x91 + .sleb128 8 + .uleb128 0x13 + .string "msg" + .byte 0x4 + .byte 0x2c + .ualong 0x3f9 + .byte 0x2 + .byte 0x91 + .sleb128 12 + .byte 0x0 + .uleb128 0x5 + .byte 0x4 + .ualong 0x22a + .uleb128 0x12 + .ualong 0x896 + .byte 0x1 + .string "tst_mbrlen" + .byte 0x1 + .byte 0xd + .byte 0x1 + .ualong 0xe7 + .ualong .LFB7 + .ualong .LFE7 + .ualong .LLST2 + .uleb128 0x13 + .string "fp" + .byte 0x1 + .byte 0xc + .ualong 0x706 + .byte 0x3 + .byte 0x91 + .sleb128 -100 + .uleb128 0x13 + .string "debug_flg" + .byte 0x1 + .byte 0xc + .ualong 0xe7 + .byte 0x3 + .byte 0x91 + .sleb128 -104 + .uleb128 0x14 + .string "loc" + .byte 0x1 + .byte 0xe + .ualong 0xe7 + .byte 0x3 + .byte 0x91 + .sleb128 -96 + .uleb128 0x14 + .string "rec" + .byte 0x1 + .byte 0xe + .ualong 0xe7 + .byte 0x3 + .byte 0x91 + .sleb128 -92 + .uleb128 0x14 + .string "err_count" + .byte 0x1 + .byte 0xe + .ualong 0xe7 + .byte 0x3 + .byte 0x91 + .sleb128 -88 + .uleb128 0x14 + .string "warn_count" + .byte 0x1 + .byte 0xe + .ualong 0xe7 + .byte 0x3 + .byte 0x91 + .sleb128 -84 + .uleb128 0x14 + .string "func_id" + .byte 0x1 + .byte 0xe + .ualong 0xe7 + .byte 0x3 + .byte 0x91 + .sleb128 -80 + .uleb128 0x14 + .string "seq_num" + .byte 0x1 + .byte 0xe + .ualong 0xe7 + .byte 0x3 + .byte 0x91 + .sleb128 -76 + .uleb128 0x14 + .string "locale" + .byte 0x1 + .byte 0xe + .ualong 0x3f9 + .byte 0x3 + .byte 0x91 + .sleb128 -72 + .uleb128 0x14 + .string "err_exp" + .byte 0x1 + .byte 0xe + .ualong 0xe7 + .byte 0x3 + .byte 0x91 + .sleb128 -68 + .uleb128 0x14 + .string "ret_flg" + .byte 0x1 + .byte 0xe + .ualong 0xe7 + .byte 0x2 + .byte 0x91 + .sleb128 -64 + .uleb128 0x14 + .string "errno_save" + .byte 0x1 + .byte 0xe + .ualong 0xe7 + .byte 0x2 + .byte 0x91 + .sleb128 -60 + .uleb128 0x14 + .string "ret_exp" + .byte 0x1 + .byte 0xe + .ualong 0x9b + .byte 0x2 + .byte 0x91 + .sleb128 -56 + .uleb128 0x14 + .string "ret" + .byte 0x1 + .byte 0xe + .ualong 0x9b + .byte 0x2 + .byte 0x91 + .sleb128 -52 + .uleb128 0x14 + .string "s_flg" + .byte 0x1 + .byte 0xf + .ualong 0xf4 + .byte 0x2 + .byte 0x91 + .sleb128 -45 + .uleb128 0x14 + .string "s_in" + .byte 0x1 + .byte 0x10 + .ualong 0x3f9 + .byte 0x2 + .byte 0x91 + .sleb128 -44 + .uleb128 0x14 + .string "n" + .byte 0x1 + .byte 0x11 + .ualong 0x9b + .byte 0x2 + .byte 0x91 + .sleb128 -40 + .uleb128 0x14 + .string "t_flg" + .byte 0x1 + .byte 0x12 + .ualong 0xf4 + .byte 0x2 + .byte 0x91 + .sleb128 -34 + .uleb128 0x14 + .string "t_ini" + .byte 0x1 + .byte 0x13 + .ualong 0xf4 + .byte 0x2 + .byte 0x91 + .sleb128 -33 + .uleb128 0x14 + .string "ps" + .byte 0x1 + .byte 0x15 + .ualong 0x896 + .byte 0x2 + .byte 0x91 + .sleb128 -32 + .uleb128 0x14 + .string "s" + .byte 0x1 + .byte 0x14 + .ualong 0x404 + .byte 0x5 + .byte 0x3 + .ualong s.3934 + .byte 0x0 + .uleb128 0x5 + .byte 0x4 + .ualong 0x404 + .uleb128 0x15 + .string "stdout" + .byte 0x5 + .byte 0x88 + .ualong 0x706 + .byte 0x1 + .byte 0x1 + .uleb128 0x15 + .string "stderr" + .byte 0x5 + .byte 0x89 + .ualong 0x706 + .byte 0x1 + .byte 0x1 + .uleb128 0x15 + .string "__libc_errno" + .byte 0x29 + .byte 0x45 + .ualong 0xe7 + .byte 0x1 + .byte 0x1 + .uleb128 0xa + .ualong 0x8e2 + .ualong 0xf4 + .uleb128 0xb + .ualong 0x10d + .byte 0x83 + .byte 0x0 + .uleb128 0x16 + .string "result_rec" + .byte 0x4 + .byte 0x27 + .ualong 0x8d2 + .byte 0x1 + .byte 0x5 + .byte 0x3 + .ualong result_rec + .uleb128 0xa + .ualong 0x90b + .ualong 0x5e5 + .uleb128 0xb + .ualong 0x10d + .byte 0x3 + .byte 0x0 + .uleb128 0x16 + .string "tst_mbrlen_loc" + .byte 0x3b + .byte 0x13 + .ualong 0x8fb + .byte 0x1 + .byte 0x5 + .byte 0x3 + .ualong tst_mbrlen_loc + .byte 0x0 + .section .debug_abbrev + .uleb128 0x1 + .uleb128 0x11 + .byte 0x1 + .uleb128 0x43 + .uleb128 0x6 + .uleb128 0x10 + .uleb128 0x6 + .uleb128 0x12 + .uleb128 0x1 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x25 + .uleb128 0x8 + .uleb128 0x13 + .uleb128 0xb + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x1b + .uleb128 0x8 + .byte 0x0 + .byte 0x0 + .uleb128 0x2 + .uleb128 0x16 + .byte 0x0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0x0 + .byte 0x0 + .uleb128 0x3 + .uleb128 0x24 + .byte 0x0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3e + .uleb128 0xb + .byte 0x0 + .byte 0x0 + .uleb128 0x4 + .uleb128 0x24 + .byte 0x0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3e + .uleb128 0xb + .byte 0x0 + .byte 0x0 + .uleb128 0x5 + .uleb128 0xf + .byte 0x0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0x0 + .byte 0x0 + .uleb128 0x6 + .uleb128 0x13 + .byte 0x1 + .uleb128 0x1 + .uleb128 0x13 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .byte 0x0 + .byte 0x0 + .uleb128 0x7 + .uleb128 0xd + .byte 0x0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x38 + .uleb128 0xa + .byte 0x0 + .byte 0x0 + .uleb128 0x8 + .uleb128 0x17 + .byte 0x1 + .uleb128 0x1 + .uleb128 0x13 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .byte 0x0 + .byte 0x0 + .uleb128 0x9 + .uleb128 0xd + .byte 0x0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0x0 + .byte 0x0 + .uleb128 0xa + .uleb128 0x1 + .byte 0x1 + .uleb128 0x1 + .uleb128 0x13 + .uleb128 0x49 + .uleb128 0x13 + .byte 0x0 + .byte 0x0 + .uleb128 0xb + .uleb128 0x21 + .byte 0x0 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2f + .uleb128 0xb + .byte 0x0 + .byte 0x0 + .uleb128 0xc + .uleb128 0x13 + .byte 0x1 + .uleb128 0x1 + .uleb128 0x13 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .byte 0x0 + .byte 0x0 + .uleb128 0xd + .uleb128 0xd + .byte 0x0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0x5 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x38 + .uleb128 0xa + .byte 0x0 + .byte 0x0 + .uleb128 0xe + .uleb128 0x16 + .byte 0x0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0x5 + .uleb128 0x49 + .uleb128 0x13 + .byte 0x0 + .byte 0x0 + .uleb128 0xf + .uleb128 0x26 + .byte 0x0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0x0 + .byte 0x0 + .uleb128 0x10 + .uleb128 0x13 + .byte 0x1 + .uleb128 0x1 + .uleb128 0x13 + .uleb128 0xb + .uleb128 0x5 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .byte 0x0 + .byte 0x0 + .uleb128 0x11 + .uleb128 0x21 + .byte 0x0 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2f + .uleb128 0x5 + .byte 0x0 + .byte 0x0 + .uleb128 0x12 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x1 + .uleb128 0x13 + .uleb128 0x3f + .uleb128 0xc + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x27 + .uleb128 0xc + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x12 + .uleb128 0x1 + .uleb128 0x40 + .uleb128 0x6 + .byte 0x0 + .byte 0x0 + .uleb128 0x13 + .uleb128 0x5 + .byte 0x0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2 + .uleb128 0xa + .byte 0x0 + .byte 0x0 + .uleb128 0x14 + .uleb128 0x34 + .byte 0x0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2 + .uleb128 0xa + .byte 0x0 + .byte 0x0 + .uleb128 0x15 + .uleb128 0x34 + .byte 0x0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x3f + .uleb128 0xc + .uleb128 0x3c + .uleb128 0xc + .byte 0x0 + .byte 0x0 + .uleb128 0x16 + .uleb128 0x34 + .byte 0x0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x3f + .uleb128 0xc + .uleb128 0x2 + .uleb128 0xa + .byte 0x0 + .byte 0x0 + .byte 0x0 + .section .debug_pubnames,"",@progbits + .ualong 0x53 + .uaword 0x2 + .ualong .Ldebug_info0 + .ualong 0x929 + .ualong 0x60a + .string "main" + .ualong 0x66b + .string "result" + .ualong 0x70c + .string "tst_mbrlen" + .ualong 0x8e2 + .string "result_rec" + .ualong 0x90b + .string "tst_mbrlen_loc" + .ualong 0x0 + .section .debug_aranges,"",@progbits + .ualong 0x1c + .uaword 0x2 + .ualong .Ldebug_info0 + .byte 0x4 + .byte 0x0 + .uaword 0x0 + .uaword 0x0 + .ualong .Ltext0 + .ualong .Letext0-.Ltext0 + .ualong 0x0 + .ualong 0x0 + .section .debug_macinfo + .byte 0x0 + .section .debug_str,"",@progbits +.LASF0: + .string "unsigned int" + .ident "GCC: (GNU) 4.1.1 (STMicroelectronics Special) [build Jun 26 2007]" + .section .note.GNU-stack,"",@progbits diff --git a/test/locale-mbwc/tst_mbrtowc.c b/test/locale-mbwc/tst_mbrtowc.c new file mode 100644 index 000000000..3a6070a87 --- /dev/null +++ b/test/locale-mbwc/tst_mbrtowc.c @@ -0,0 +1,103 @@ +/* + MBRTOWC: size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, + mbstate_t *ps) +*/ + +#define TST_FUNCTION mbrtowc + +#include "tsp_common.c" +#include "dat_mbrtowc.c" + + +int +tst_mbrtowc (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (size_t); + char w_flg, s_flg; + char *s; + size_t n; + char t_flg, t_ini; + static mbstate_t t = { 0 }; + mbstate_t *pt; + wchar_t wc, *pwc, wc_ex; + + TST_DO_TEST (mbrtowc) + { + TST_HEAD_LOCALE (mbrtowc, S_MBRTOWC); + TST_DO_REC (mbrtowc) + { + if (mbrtowc (NULL, "", 0, &t) != 0) + { + err_count++; + Result (C_FAILURE, S_MBRTOWC, CASE_3, + "Initialization failed - skipping this test case."); + continue; + } + + TST_DO_SEQ (MBRTOWC_SEQNUM) + { + TST_GET_ERRET_SEQ (mbrtowc); + w_flg = TST_INPUT_SEQ (mbrtowc).w_flg; + s_flg = TST_INPUT_SEQ (mbrtowc).s_flg; + s = TST_INPUT_SEQ (mbrtowc).s; + n = TST_INPUT_SEQ (mbrtowc).n; + t_flg = TST_INPUT_SEQ (mbrtowc).t_flg; + t_ini = TST_INPUT_SEQ (mbrtowc).t_init; + pwc = (w_flg == 0) ? NULL : &wc; + + if (s_flg == 0) + { + s = NULL; + } + + if (n == USE_MBCURMAX) + { + n = MB_CUR_MAX; + } + + pt = (t_flg == 0) ? NULL : &t; +#if 0 + if (t_ini != 0) + { + memset (&t, 0, sizeof (t)); + } +#endif + TST_CLEAR_ERRNO; + ret = mbrtowc (pwc, s, n, pt); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stdout, "mbrtowc() [ %s : %d : %d ] ret = %zd\n", + locale, rec + 1, seq_num + 1, ret); + fprintf (stdout, " errno = %hd\n", + errno_save); + } + + TST_IF_RETURN (S_MBRTOWC) + { + }; + + if (pwc == NULL || s == NULL || ret == (size_t) - 1 + || ret == (size_t) - 2) + { + continue; + } + + wc_ex = TST_EXPECT_SEQ (mbrtowc).wc; + if (wc_ex == wc) + { + Result (C_SUCCESS, S_MBRTOWC, CASE_4, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_MBRTOWC, CASE_4, + "converted wc is different from an expected wc"); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_mbsrtowcs.c b/test/locale-mbwc/tst_mbsrtowcs.c new file mode 100644 index 000000000..3f3ea716b --- /dev/null +++ b/test/locale-mbwc/tst_mbsrtowcs.c @@ -0,0 +1,109 @@ +/* + MBSRTOWCS: size_t mbsrtowcs (wchar_t *ws, const char **s, size_t n, + mbstate_t *ps) +*/ + +#define TST_FUNCTION mbsrtowcs + +#include "tsp_common.c" +#include "dat_mbsrtowcs.c" + +int +tst_mbsrtowcs (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (size_t); + char w_flg; + const char *s, *p; + size_t n; + char t_flg, t_ini; + static mbstate_t t = { 0 }; + mbstate_t *pt; + wchar_t ws[WCSSIZE], *ws_ex, *wp; + int err, i; + + TST_DO_TEST (mbsrtowcs) + { + TST_HEAD_LOCALE (mbsrtowcs, S_MBSRTOWCS); + TST_DO_REC (mbsrtowcs) + { + s = ""; + if (mbsrtowcs (NULL, &s, 0, &t) != 0) + { + err_count++; + Result (C_FAILURE, S_MBSRTOWCS, CASE_3, + "Initialization failed - skipping this test case."); + continue; + } + + TST_DO_SEQ (MBSRTOWCS_SEQNUM) + { + TST_GET_ERRET_SEQ (mbsrtowcs); + w_flg = TST_INPUT_SEQ (mbsrtowcs).w_flg; + p = s = TST_INPUT_SEQ (mbsrtowcs).s; + n = TST_INPUT_SEQ (mbsrtowcs).n; + t_flg = TST_INPUT_SEQ (mbsrtowcs).t_flg; + t_ini = TST_INPUT_SEQ (mbsrtowcs).t_init; + wp = (w_flg == 0) ? NULL : ws; + + if (n == USE_MBCURMAX) + { + n = MB_CUR_MAX; + } + + pt = (t_flg == 0) ? NULL : &t; + + if (t_ini != 0) + { + memset (&t, 0, sizeof (t)); + } + + TST_CLEAR_ERRNO; + ret = mbsrtowcs (wp, &p, n, pt); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stderr, "mbsrtowcs: [ %d ] : ret = %zd\n", rec + 1, ret); + } + + TST_IF_RETURN (S_MBSRTOWCS) + { + }; + + if (wp == NULL || ret == (size_t) - 1 || ret == (size_t) - 2) + { + continue; + } + + ws_ex = TST_EXPECT_SEQ (mbsrtowcs).ws; + for (err = 0, i = 0; i < ret; i++) + { + if (debug_flg) + { + fprintf (stderr, + "mbsrtowcs: ws[%d] => 0x%lx : 0x%lx <= ws_ex[%d]\n", + i, (unsigned long int) ws[i], + (unsigned long int) ws_ex[i], i); + } + + if (ws[i] != ws_ex[i]) + { + err++; + err_count++; + Result (C_FAILURE, S_MBSRTOWCS, CASE_4, + "the converted wc string has " + "different value from an expected string"); + break; + } + } + + if (!err) + { + Result (C_SUCCESS, S_MBSRTOWCS, CASE_4, MS_PASSED); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_mbstowcs.c b/test/locale-mbwc/tst_mbstowcs.c new file mode 100644 index 000000000..878df6a96 --- /dev/null +++ b/test/locale-mbwc/tst_mbstowcs.c @@ -0,0 +1,98 @@ +/* + MBSTOWCS: size_t mbstowcs (wchar_t *ws, char *s, size_t n) +*/ + +#define TST_FUNCTION mbstowcs + +#include "tsp_common.c" +#include "dat_mbstowcs.c" + +int +tst_mbstowcs (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (size_t); + char w_flg, s_flg; + const char *s; + size_t n; + wchar_t ws[WCSSIZE], *ws_ex, *wp; + int err, i; + + TST_DO_TEST (mbstowcs) + { + TST_HEAD_LOCALE (mbstowcs, S_MBSTOWCS); + TST_DO_REC (mbstowcs) + { + if (mbstowcs (NULL, "", 0) != 0) + { + err_count++; + Result (C_FAILURE, S_MBSTOWCS, CASE_3, + "Initialization failed - skipping this test case."); + continue; + } + + TST_DO_SEQ (MBSTOWCS_SEQNUM) + { + TST_GET_ERRET_SEQ (mbstowcs); + w_flg = TST_INPUT_SEQ (mbstowcs).w_flg; + s_flg = TST_INPUT_SEQ (mbstowcs).s_flg; + n = TST_INPUT_SEQ (mbstowcs).n; + + if (s_flg == 0) + s = NULL; + else + s = TST_INPUT_SEQ (mbstowcs).s; + + + wp = (wchar_t *) ((w_flg == 0) ? NULL : ws); + + TST_CLEAR_ERRNO; + ret = mbstowcs (wp, s, n); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stderr, "mbstowcs: ret = %zd\n", ret); + } + + TST_IF_RETURN (S_MBSTOWCS) + { + }; + + if (s == NULL || wp == NULL || ret == (size_t) - 1) + { + continue; + } + + ws_ex = TST_EXPECT_SEQ (mbstowcs).ws; + + for (err = 0, i = 0; i < ret; i++) + { + if (debug_flg) + { + fprintf (stderr, + "mbstowcs: ws[%d] => 0x%lx : 0x%lx <= ws_ex[%d]\n", + i, (unsigned long int) ws[i], + (unsigned long int) ws_ex[i], i); + } + + if (ws[i] != ws_ex[i]) + { + err++; + err_count++; + Result (C_FAILURE, S_MBSTOWCS, CASE_4, + "the converted wc string has " + "different value from an expected string"); + break; + } + } + + if (!err) + { + Result (C_SUCCESS, S_MBSTOWCS, CASE_4, MS_PASSED); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_mbtowc.c b/test/locale-mbwc/tst_mbtowc.c new file mode 100644 index 000000000..7c274f66c --- /dev/null +++ b/test/locale-mbwc/tst_mbtowc.c @@ -0,0 +1,130 @@ +/* + MBTOWC: int mbtowc (wchar_t *wc, char *s, size_t n) +*/ + +#define TST_FUNCTION mbtowc + +#include "tsp_common.c" +#include "dat_mbtowc.c" + + +int +tst_mbtowc (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (int); + char w_flg, s_flg; + const char *s_in; + size_t n; + wchar_t wc, wc_ex, *wp; + + TST_DO_TEST (mbtowc) + { + TST_HEAD_LOCALE (mbtowc, S_MBTOWC); + TST_DO_REC (mbtowc) + { + if (mbstowcs (NULL, "", 0) != 0) + { + err_count++; + Result (C_FAILURE, S_MBSTOWCS, CASE_3, + "Initialization failed - skipping this test case."); + continue; + } + + TST_DO_SEQ (MBTOWC_SEQNUM) + { + TST_GET_ERRET_SEQ (mbtowc); + w_flg = TST_INPUT_SEQ (mbtowc).w_flg; + s_flg = TST_INPUT_SEQ (mbtowc).s_flg; + n = TST_INPUT_SEQ (mbtowc).n; + + if (n == USE_MBCURMAX) + { + n = MB_CUR_MAX; + } + + if (s_flg == 0) + s_in = NULL; + else + s_in = TST_INPUT_SEQ (mbtowc).s; + + wp = (wchar_t *) ((w_flg == 0) ? NULL : &wc); + + /* XXX Clear the internal state. We should probably have + a flag for this. */ + mbtowc (NULL, NULL, 0); + + TST_CLEAR_ERRNO; + ret = mbtowc (wp, s_in, n); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stdout, "mbtowc() [ %s : %d ] ret = %d\n", locale, + rec + 1, ret); + fprintf (stdout, " errno = %d\n", + errno_save); + } + + TST_IF_RETURN (S_MBTOWC) + { + if (s_in == NULL) + { /* state dependency */ + if (ret_exp == +1) + { /* state-dependent */ + if (ret != 0) + { + /* Non-zero: state-dependent encoding. */ + Result (C_SUCCESS, S_MBTOWC, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_MBTOWC, CASE_3, + "should be state-dependent encoding, " + "but a return value shows it is " + "state-independent"); + } + } + + if (ret_exp == 0) + { /* state-independent */ + if (ret == 0) + { + /* Non-zero: state-dependent encoding. */ + Result (C_SUCCESS, S_MBTOWC, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_MBTOWC, CASE_3, + "should be state-independent encoding, " + "but a return value shows it is " + "state-dependent"); + } + } + } + } + + if ((wp == NULL || s_in == NULL || s_in[0] == 0) || ret <= 0) + { + continue; + } + + wc_ex = TST_EXPECT_SEQ (mbtowc).wc; + + if (wc_ex == wc) + { + Result (C_SUCCESS, S_MBTOWC, CASE_4, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_MBTOWC, CASE_4, + "converted wc is different from an expected wc"); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_strcoll.c b/test/locale-mbwc/tst_strcoll.c new file mode 100644 index 000000000..4c5a84f69 --- /dev/null +++ b/test/locale-mbwc/tst_strcoll.c @@ -0,0 +1,87 @@ +/* + STRCOLL: int strcoll (const char *s1, const char *s2) +*/ + +#define TST_FUNCTION strcoll + +#include "tsp_common.c" +#include "dat_strcoll.c" + +int +tst_strcoll (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (int); + const char *s1, *s2; + + TST_DO_TEST (strcoll) + { + TST_HEAD_LOCALE (strcoll, S_STRCOLL); + TST_DO_REC (strcoll) + { + TST_GET_ERRET (strcoll); + s1 = TST_INPUT (strcoll).s1; + s2 = TST_INPUT (strcoll).s2; + + TST_CLEAR_ERRNO; + ret = strcoll (s1, s2); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stdout, "strcoll() [ %s : %d ] ret = %d\n", locale, + rec + 1, ret); + fprintf (stdout, " errno = %d\n", + errno_save); + fprintf (stdout, " LC_COLLATE = %s\n", + (setlocale (LC_COLLATE, NULL)) ? setlocale (LC_COLLATE, + NULL) : ""); + } + + TST_IF_RETURN (S_STRCOLL) + { + if (ret_exp == +1) + { + if (ret > 0) + { + Result (C_SUCCESS, S_STRCOLL, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_STRCOLL, CASE_3, + "the return value should be greater than 0," + " but is not ..."); + } + } + else if (ret_exp == -1) + { + if (ret < 0) + { + Result (C_SUCCESS, S_STRCOLL, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_STRCOLL, CASE_3, + "the return value should less than 0, but not ..."); + } + } + else if (ret_exp != 0) + { + if (debug_flg) + { + fprintf (stderr, "*** Warning *** : tst_strcoll : " + "(check the test data); should set ret_flg=1" + " to check a return value"); + } + + warn_count++; + Result (C_INVALID, S_WCSCHR, CASE_3, "(check the test data); " + "should set ret_flg=1 to check a return value"); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_strfmon.c b/test/locale-mbwc/tst_strfmon.c new file mode 100644 index 000000000..88e93167d --- /dev/null +++ b/test/locale-mbwc/tst_strfmon.c @@ -0,0 +1,74 @@ +/* + STRFMON: size_t strfmon (char *buf, size_t nbyte, const char *fmt, ...) +*/ + +#define TST_FUNCTION strfmon + +#include "tsp_common.c" +#include "dat_strfmon.c" +#include <monetary.h> + +int +tst_strfmon (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (size_t); + char buf[MONSIZE], *mon; + size_t nbt; + char *fmt; + double val; + + TST_DO_TEST (strfmon) + { + TST_HEAD_LOCALE (strfmon, S_STRFMON); + TST_DO_REC (strfmon) + { + TST_GET_ERRET (strfmon); + nbt = TST_INPUT (strfmon).nbytes; + fmt = TST_INPUT (strfmon).fmt; + val = TST_INPUT (strfmon).val; + memset (buf, 0, MONSIZE); + if (nbt > MONSIZE) + { + err_count++; + Result (C_FAILURE, S_STRFMON, CASE_3, "buffer too small in test"); + continue; + } + + TST_CLEAR_ERRNO; + ret = strfmon (buf, nbt, fmt, val, val, val); + TST_SAVE_ERRNO; + + if (debug_flg) /* seems fprintf doesn't update the errno */ + { + fprintf (stdout, "strfmon() [ %s : %d ]\n", locale, rec + 1); + fprintf (stdout, " : err = %d | %s\n", errno_save, + strerror (errno)); + fprintf (stdout, " : ret = %zd; \t fmt = |%s|\n", ret, fmt); + fprintf (stdout, " : buf = |%s|\n\n", buf); + } + + TST_IF_RETURN (S_STRFMON) + { + }; + if (errno != 0 || ret == -1) + { + continue; + } + + mon = TST_EXPECT (strfmon).mon; + + if (!strcmp (buf, mon)) + { + Result (C_SUCCESS, S_STRFMON, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_STRFMON, CASE_3, "the formatted string is " + "different from an expected result"); + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_strxfrm.c b/test/locale-mbwc/tst_strxfrm.c new file mode 100644 index 000000000..fdfeffc89 --- /dev/null +++ b/test/locale-mbwc/tst_strxfrm.c @@ -0,0 +1,136 @@ +/* + STRXFRM: size_t strxfrm (char *s1, const char *s2, size_t n) +*/ + +#define TST_FUNCTION strxfrm + +#include "tsp_common.c" +#include "dat_strxfrm.c" + + +int +tst_strxfrm (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (size_t); + const char *org1, *org2; + char frm1[MBSSIZE], frm2[MBSSIZE]; + size_t n1, n2; + int ret_coll, ret_cmp; + + TST_DO_TEST (strxfrm) + { + TST_HEAD_LOCALE (strxfrm, S_STRXFRM); + TST_DO_REC (strxfrm) + { + TST_GET_ERRET (strxfrm); + org1 = TST_INPUT (strxfrm).org1; + org2 = TST_INPUT (strxfrm).org2; + n1 = TST_INPUT (strxfrm).n1; + n2 = TST_INPUT (strxfrm).n2; + + if (n1 < 0 || sizeof (frm1) < n1 || sizeof (frm2) < n2) + { + warn_count++; + Result (C_IGNORED, S_STRXFRM, CASE_9, + "input data n1 or n2 is invalid"); + continue; + } + + /* An errno and a return value are checked + only for 2nd strxfrm() call. + A result of 1st call is used for comparing + those 2 values by using strcmp(). + */ + + /*-- First call --*/ + + TST_CLEAR_ERRNO; + ret = strxfrm (frm1, org1, n1); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stdout, "strxfrm() [ %s : %d ] ( 1st call )\n", locale, + rec + 1); + fprintf (stdout, " : err = %d | %s\n", errno_save, + strerror (errno)); + fprintf (stdout, " : ret = %zu\n", ret); + fprintf (stdout, " : org = %s\n", org1); + } + + if (ret >= n1 || errno != 0) + { + warn_count++; + Result (C_INVALID, S_STRXFRM, CASE_8, + "got an error in fist strxfrm() call"); + continue; + } + + /*-- Second call --*/ + + TST_CLEAR_ERRNO; + ret = strxfrm (((n2 == 0) ? NULL : frm2), org2, n2); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stderr, " ..............( 2nd call )\n"); + fprintf (stdout, " : err = %d | %s\n", errno, + strerror (errno)); + fprintf (stdout, " : ret = %zu\n", ret); + fprintf (stdout, " : org = %s\n", org2); + } + + TST_IF_RETURN (S_STRXFRM) + { + }; + + if (n2 == 0 || ret >= n2 || errno != 0) + { +#if 0 + warn_count++; + Result (C_IGNORED, S_STRXFRM, CASE_7, "did not get a result"); +#endif + continue; + } + + /*-- strcoll & strcmp --*/ + + TST_CLEAR_ERRNO; + /* Depends on strcoll() ... not good though ... */ + ret_coll = strcoll (org1, org2); + + if (errno != 0) + { + /* bug * bug may get correct results ... */ + warn_count++; + Result (C_INVALID, S_STRXFRM, CASE_6, + "got an error in strcoll() call"); + continue; + } + + ret_cmp = strcmp (frm1, frm2); + + if ((ret_coll == 0 && ret_cmp == 0) + || (ret_coll < 0 && ret_cmp < 0) || (ret_coll > 0 && ret_cmp > 0)) + { + Result (C_SUCCESS, S_STRXFRM, CASE_3, + MS_PASSED "(depends on strcoll & strcmp)"); + } + else + { + err_count++; + Result (C_FAILURE, S_STRXFRM, CASE_3, + "results from strcoll & strcmp() do not match"); + } + + if (debug_flg) + { + fprintf (stdout, ".......... strcoll = %d <-> %d = strcmp\n", + ret_coll, ret_cmp); + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_swscanf.c b/test/locale-mbwc/tst_swscanf.c new file mode 100644 index 000000000..76445d75f --- /dev/null +++ b/test/locale-mbwc/tst_swscanf.c @@ -0,0 +1,137 @@ +/* + SWSCANF: int swscanf (const wchar_t *ws, const wchar_t *fmt, ...); +*/ + +#define TST_FUNCTION swscanf + +#include "tsp_common.c" +#include "dat_swscanf.c" + +int +tst_swscanf (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (int); + wchar_t *ws; + wchar_t *fmt; + int val_int1; + unsigned val_int2; + float val_flt; + char val_c; + char val_s[MBSSIZE * 3]; + wchar_t val_S[WCSSIZE * 3], *exp_S; + int i; + + TST_DO_TEST (swscanf) + { + TST_HEAD_LOCALE (swscanf, S_SWSCANF); + TST_DO_REC (swscanf) + { + TST_GET_ERRET (swscanf); + ws = TST_INPUT (swscanf).ws; + fmt = TST_INPUT (swscanf).fmt; + val_int1 = val_int2 = val_flt = val_c = 0; + memset (val_s, 0, sizeof (val_s)); + memset (val_S, 0, sizeof (val_S)); + + TST_CLEAR_ERRNO; + + if (TST_INPUT (swscanf).wch) + { + ret = swscanf (ws, fmt, val_S); + } + else + { + ret = + swscanf (ws, fmt, &val_int1, &val_int2, &val_flt, &val_c, val_s); + } + + TST_SAVE_ERRNO; + + if (debug_flg) + { /* seems fprintf doesn't update errno */ + fprintf (stdout, "swscanf() [ %s : %d ] ret = %d\n", locale, + rec + 1, ret); + fprintf (stdout, " errno = %d\n", + errno_save); + fprintf (stdout, " collate = %s\n", + (setlocale (LC_COLLATE, NULL)) ? setlocale (LC_COLLATE, + NULL) : ""); + + if (TST_INPUT (swscanf).wch) + { + fprintf (stdout, " val_S[ 0 ] = 0x%lx\n", + (unsigned long int) val_S[0]); + } + else + { + fprintf (stdout, " val_int1 = %d\n", + val_int1); + fprintf (stdout, " val_int2 = %d\n", + val_int2); + fprintf (stdout, " val_flt = %f\n", + val_flt); + fprintf (stdout, " val_c = %c\n", + val_c); + fprintf (stdout, " val_s = %s\n", + val_s); + } + } + + TST_IF_RETURN (S_SWSCANF) + { + }; + + if (errno == 0 && TST_INPUT (swscanf).wch) + { + for (exp_S = TST_EXPECT (swscanf).val_S, i = 0; i < WCSSIZE * 3; + i++) + { + if (val_S[i] == L'\0' || exp_S[i] == L'\0') + { + if (val_S[i] != exp_S[i] && TST_INPUT (swscanf).wch == 'C') + { + err_count++; + Result (C_FAILURE, S_SWSCANF, CASE_4, + "the converted wide-char string is different" + " from an expected value."); + } + break; + } + + if (val_S[i] != exp_S[i]) + { + err_count++; + Result (C_FAILURE, S_SWSCANF, CASE_4, + "the converted wide-char string is different from" + " an expected value."); + break; + } + else + { + Result (C_SUCCESS, S_SWSCANF, CASE_4, MS_PASSED); + } + } + } + + if (errno == 0 && !TST_INPUT (swscanf).wch) + { + if (val_int1 != TST_EXPECT (swscanf).val_int || + val_int2 != TST_EXPECT (swscanf).val_uns || + val_flt != TST_EXPECT (swscanf).val_flt || + val_c != TST_EXPECT (swscanf).val_c || + strcmp (val_s, TST_EXPECT (swscanf).val_s)) + { + err_count++; + Result (C_FAILURE, S_SWSCANF, CASE_3, + "the converted values are different from expected values."); + } + else + { + Result (C_SUCCESS, S_SWSCANF, CASE_3, MS_PASSED); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_towctrans.c b/test/locale-mbwc/tst_towctrans.c new file mode 100644 index 000000000..1d874dc0f --- /dev/null +++ b/test/locale-mbwc/tst_towctrans.c @@ -0,0 +1,82 @@ +/* + 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; +} diff --git a/test/locale-mbwc/tst_towlower.c b/test/locale-mbwc/tst_towlower.c new file mode 100644 index 000000000..7719b0dae --- /dev/null +++ b/test/locale-mbwc/tst_towlower.c @@ -0,0 +1,11 @@ +/* + TOWLOWER: int towlower (wint_t wc); +*/ + +#define TST_FUNCTION towlower + +#include "tsp_common.c" +#include "dat_towlower.c" + + +TST_FUNC_TOW (LOWER, lower); diff --git a/test/locale-mbwc/tst_towupper.c b/test/locale-mbwc/tst_towupper.c new file mode 100644 index 000000000..a077d27d9 --- /dev/null +++ b/test/locale-mbwc/tst_towupper.c @@ -0,0 +1,10 @@ +/* + TOWUPPER: int towupper (wint_t wc); +*/ + +#define TST_FUNCTION towupper + +#include "tsp_common.c" +#include "dat_towupper.c" + +TST_FUNC_TOW (UPPER, upper); diff --git a/test/locale-mbwc/tst_types.h b/test/locale-mbwc/tst_types.h new file mode 100644 index 000000000..3d1827941 --- /dev/null +++ b/test/locale-mbwc/tst_types.h @@ -0,0 +1,729 @@ +/* + * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY + * + * FILE: tst_types.h + * + * Definitions of data types for each test function + */ + + +#ifndef TST_TYPES_H +#define TST_TYPES_H + +#include <stdio.h> +#include <wchar.h> +#include <wctype.h> +#include "tst_funcs.h" +#include "tgn_funcdef.h" + +#define MBSSIZE 24 +#define WCSSIZE 12 +#define MONFMTSIZE 16 +#define MONSIZE 64 +#define USE_MBCURMAX 99 /* well, but ... */ +#define TST_DBL_EPS 2.22153e-16 +#define WCSTOK_SEQNUM 3 +#define MBLEN_SEQNUM 3 +#define MBTOWC_SEQNUM 3 +#define MBSTOWCS_SEQNUM 3 +#define WCTOMB_SEQNUM 3 +#define WCSTOMBS_SEQNUM 3 +#define MBRLEN_SEQNUM 3 +#define MBRTOWC_SEQNUM 3 +#define MBSRTOWCS_SEQNUM 3 +#define WCRTOMB_SEQNUM 3 +#define WCSRTOMBS_SEQNUM 3 + +/* Maximum numbers of test in one of the _loc arrays. */ +#define MAX_LOC_TEST 300 + + +/*----------------------------------------------------------------------*/ +/* FUNCTION */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + char *func_str; + int func_id; +} +TST_FID; + +typedef struct +{ + int func_id; + const char *locale; +} +TST_HEAD; + +typedef struct +{ + TST_HEAD *head; +} +TST_FUNCS; + + +/*----------------------------------------------------------------------*/ +/* ISW*: int isw* (wchar_t wc) */ +/*----------------------------------------------------------------------*/ + +TST_ISW_STRUCT (ALNUM, alnum); +TST_ISW_STRUCT (ALPHA, alpha); +TST_ISW_STRUCT (CNTRL, cntrl); +TST_ISW_STRUCT (DIGIT, digit); +TST_ISW_STRUCT (GRAPH, graph); +TST_ISW_STRUCT (LOWER, lower); +TST_ISW_STRUCT (PRINT, print); +TST_ISW_STRUCT (PUNCT, punct); +TST_ISW_STRUCT (SPACE, space); +TST_ISW_STRUCT (UPPER, upper); +TST_ISW_STRUCT (XDIGIT, xdigit); + +typedef struct +{ + wint_t wc; + const char *ts; +} +TIN_ISWCTYPE_REC; + +typedef +TEX_ERRET_REC (int) + TEX_ISWCTYPE_REC; +TMD_RECHEAD (ISWCTYPE); + + +/*----------------------------------------------------------------------*/ +/* MBLEN: int mblen (const char *s, size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + char s_flg; + char s[MBSSIZE]; + size_t n; +} +TIN_MBLEN_REC; + +typedef TEX_ERRET_REC (int) TEX_MBLEN_REC; +TMD_RECHEAD (MBLEN); + + +/*----------------------------------------------------------------------*/ +/* MBRLEN: size_t mbrlen (const char *s, size_t n, mbstate_t *ps) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + struct + { + int s_flg; + char s[MBSSIZE]; + size_t n; + int t_flg; + int t_init; + } + seq[WCSTOK_SEQNUM]; +} +TIN_MBRLEN_REC; + +typedef TEX_ERRET_REC_SEQ (size_t, MBRLEN_SEQNUM) TEX_MBRLEN_REC; +TMD_RECHEAD (MBRLEN); + + +/*----------------------------------------------------------------------*/ +/* MBRTOWC: size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, */ +/* mbstate_t *ps) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + struct + { + int w_flg; + int s_flg; + char s[MBSSIZE]; + size_t n; + int t_flg; + int t_init; + } + seq[MBRTOWC_SEQNUM]; +} +TIN_MBRTOWC_REC; + +typedef struct +{ + struct + { + TMD_ERRET (size_t); + wchar_t wc; + } + seq[MBRTOWC_SEQNUM]; +} +TEX_MBRTOWC_REC; + +TMD_RECHEAD (MBRTOWC); + + +/*----------------------------------------------------------------------*/ +/* MBSRTOWCS: size_t mbsrtowcs (wchar_t *ws, const char **s, size_t n, */ +/* mbstate_t *ps ) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + struct + { + int w_flg; + char s[MBSSIZE]; + size_t n; + int t_flg; + int t_init; + } + seq[MBSRTOWCS_SEQNUM]; +} +TIN_MBSRTOWCS_REC; + +typedef struct +{ + struct + { + TMD_ERRET (size_t); + wchar_t ws[WCSSIZE]; + } + seq[MBSRTOWCS_SEQNUM]; +} +TEX_MBSRTOWCS_REC; + +TMD_RECHEAD (MBSRTOWCS); + + +/*----------------------------------------------------------------------*/ +/* MBSTOWCS: size_t mbstowcs (wchar_t *ws, const char *s, size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + struct + { + int w_flg; + int s_flg; + const char *s; + size_t n; + } + seq[MBSTOWCS_SEQNUM]; +} +TIN_MBSTOWCS_REC; + +typedef TEX_MBSRTOWCS_REC TEX_MBSTOWCS_REC; +/* MBSRTOWCS_SEQNUM == MBSTOWCS_SEQNUM */ +TMD_RECHEAD (MBSTOWCS); + + +/*----------------------------------------------------------------------*/ +/* MBTOWC: int mbtowc (wchar_t *wc, const char *s, size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_MBSTOWCS_REC TIN_MBTOWC_REC; +/* MBTOWC_SEQNUM == MBSTOWCS_SEQNUM */ + +typedef struct +{ + struct + { + TMD_ERRET (int); + wchar_t wc; + } + seq[MBTOWC_SEQNUM]; +} +TEX_MBTOWC_REC; + +TMD_RECHEAD (MBTOWC); + + +/*----------------------------------------------------------------------*/ +/* STRCOLL: int strcoll (const char *s1, const char *s2) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + char s1[MBSSIZE]; + char s2[MBSSIZE]; +} +TIN_STRCOLL_REC; + +typedef TEX_ERRET_REC (int) TEX_STRCOLL_REC; +TMD_RECHEAD (STRCOLL); + + +/*----------------------------------------------------------------------*/ +/* STRFMON: size_t strfmon (char *buf, size_t nbytes, */ +/* const char *fmt, ... ) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + int nbytes; + char fmt[MONFMTSIZE]; + double val; +} +TIN_STRFMON_REC; + +typedef struct +{ + TMD_ERRET (size_t); + char mon[MONSIZE]; +} +TEX_STRFMON_REC; + +TMD_RECHEAD (STRFMON); + + +/*----------------------------------------------------------------------*/ +/* STRXFRM: size_t strxfrm (char *s1, const char *s2, size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + char org1[MBSSIZE]; + char org2[MBSSIZE]; + size_t n1, n2; +} +TIN_STRXFRM_REC; + +typedef TEX_ERRET_REC (size_t) TEX_STRXFRM_REC; /* only for org2[] */ +TMD_RECHEAD (STRXFRM); + + +/*----------------------------------------------------------------------*/ +/* SWSCANF: int swscanf (const wchar_t *ws, const wchar_t *fmt, ...) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t ws[WCSSIZE * 3]; + wchar_t fmt[WCSSIZE * 3]; + int wch; +} +TIN_SWSCANF_REC; + +typedef struct +{ + TMD_ERRET (int); + int val_int; /* %d */ + unsigned val_uns; /* %u */ + float val_flt; /* %f */ + int val_c; /* %c */ + char val_s[MBSSIZE * 2]; /* %s */ + wchar_t val_S[WCSSIZE * 2]; /* %lc, %ls, %C, %S */ +} +TEX_SWSCANF_REC; + +TMD_RECHEAD (SWSCANF); + + +/*----------------------------------------------------------------------*/ +/* TOWCTRANS: wint_t towctrans (wint_t wc, wctrans_t desc) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_ISWCTYPE_REC TIN_TOWCTRANS_REC; +typedef TEX_ERRET_REC (wint_t) TEX_TOWCTRANS_REC; +TMD_RECHEAD (TOWCTRANS); + + +/*----------------------------------------------------------------------*/ +/* TOW*ER: wint_t tow*er (wint_t wc) */ +/*----------------------------------------------------------------------*/ + +TST_TOW_STRUCT (LOWER, lower); +TST_TOW_STRUCT (UPPER, upper); + + +/*----------------------------------------------------------------------*/ +/* WCRTOMB: wchar_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + int s_flg; + wchar_t wc; + int t_flg; + int t_init; +} +TIN_WCRTOMB_REC; + +typedef struct +{ + TMD_ERRET (wchar_t); + char s[MBSSIZE]; +} +TEX_WCRTOMB_REC; + +TMD_RECHEAD (WCRTOMB); + + +/*----------------------------------------------------------------------*/ +/* WCSCAT: wchar_t *wcscat (wchar_t *ws1, wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t ws1[WCSSIZE]; + wchar_t ws2[WCSSIZE]; +} +TIN_WCSCAT_REC; + +typedef struct +{ + TMD_ERRET (wchar_t *); + wchar_t ws[WCSSIZE]; +} +TEX_WCSCAT_REC; + +TMD_RECHEAD (WCSCAT); + + +/*----------------------------------------------------------------------*/ +/* WCSCHR: wchar_t *wcschr (wchar_t *ws, wchar_t wc); */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t ws[WCSSIZE]; + wchar_t wc; +} +TIN_WCSCHR_REC; + +typedef TEX_ERRET_REC (wchar_t *) TEX_WCSCHR_REC; +TMD_RECHEAD (WCSCHR); + + +/*----------------------------------------------------------------------*/ +/* WCSCMP: int wcscmp (const wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCAT_REC TIN_WCSCMP_REC; +typedef TEX_ERRET_REC (int) TEX_WCSCMP_REC; +TMD_RECHEAD (WCSCMP); + + +/*----------------------------------------------------------------------*/ +/* WCSCOLL: int wcscoll (const wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCMP_REC TIN_WCSCOLL_REC; +typedef struct +{ + TMD_ERRET (int); + int cmp_flg; +} +TEX_WCSCOLL_REC; +TMD_RECHEAD (WCSCOLL); + + +/*----------------------------------------------------------------------*/ +/* WCSCPY: wchar_t *wcscpy (wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t ws[WCSSIZE]; /* ws2: original string */ +} +TIN_WCSCPY_REC; + +typedef TEX_WCSCAT_REC TEX_WCSCPY_REC; +TMD_RECHEAD (WCSCPY); + + +/*----------------------------------------------------------------------*/ +/* WCSCSPN: size_t wcscspn (const wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCAT_REC TIN_WCSCSPN_REC; +typedef TEX_ERRET_REC (size_t) TEX_WCSCSPN_REC; +TMD_RECHEAD (WCSCSPN); + + +/*----------------------------------------------------------------------*/ +/* WCSLEN: size_t wcslen (const wchar_t *ws) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCPY_REC TIN_WCSLEN_REC; +typedef TEX_ERRET_REC (size_t) TEX_WCSLEN_REC; +TMD_RECHEAD (WCSLEN); + + +/*----------------------------------------------------------------------*/ +/* WCSNCAT: wchar_t *wcsncat (wchar_t *ws1, const wchar_t *ws2, */ +/* size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t ws1[WCSSIZE]; + wchar_t ws2[WCSSIZE]; + size_t n; +} +TIN_WCSNCAT_REC; + +typedef TEX_WCSCAT_REC TEX_WCSNCAT_REC; +TMD_RECHEAD (WCSNCAT); + + +/*----------------------------------------------------------------------*/ +/* WCSNCMP: int *wcsncmp (const wchar_t *ws1, const wchar_t *ws2, */ +/* size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSNCAT_REC TIN_WCSNCMP_REC; +typedef TEX_ERRET_REC (int) TEX_WCSNCMP_REC; +TMD_RECHEAD (WCSNCMP); + + +/*----------------------------------------------------------------------*/ +/* WCSNCPY: wchar_t *wcsncpy (wchar_t *ws1, const wchar_t *ws2, */ +/* size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t ws[WCSSIZE]; /* ws2: original string */ + size_t n; +} +TIN_WCSNCPY_REC; + +typedef TEX_WCSCPY_REC TEX_WCSNCPY_REC; +TMD_RECHEAD (WCSNCPY); + + +/*----------------------------------------------------------------------*/ +/* WCSPBRK: wchar_t *wcspbrk (const wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCSPN_REC TIN_WCSPBRK_REC; + +typedef struct +{ + TMD_ERRET (wchar_t *); + wchar_t wc; +} +TEX_WCSPBRK_REC; + +TMD_RECHEAD (WCSPBRK); + + +/*----------------------------------------------------------------------*/ +/* WCSRTOMBS: size_t wcsrtombs (char *s, const wchar_t **ws, size_t n, */ +/* mbstate_t *ps) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + int s_flg; + int w_flg; /* don't need this */ + wchar_t ws[WCSSIZE]; + size_t n; + int t_flg; + int t_init; +} +TIN_WCSRTOMBS_REC; + +typedef struct +{ + TMD_ERRET (size_t); + char s[MBSSIZE]; +} +TEX_WCSRTOMBS_REC; + +TMD_RECHEAD (WCSRTOMBS); + + +/*----------------------------------------------------------------------*/ +/* WCSSPN: size_t wcsspn (const wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCSPN_REC TIN_WCSSPN_REC; +typedef TEX_WCSCSPN_REC TEX_WCSSPN_REC; +TMD_RECHEAD (WCSSPN); + + +/*----------------------------------------------------------------------*/ +/* WCSSTR: wchar_t *wcsstr (const wchar_t *ws1, const wchar_t *ws2) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSCSPN_REC TIN_WCSSTR_REC; +typedef TEX_ERRET_REC (wchar_t *) TEX_WCSSTR_REC; +TMD_RECHEAD (WCSSTR); + + +/*----------------------------------------------------------------------*/ +/* WCSTOD: double wcstod (const wchar_t *np, wchar_t **endp) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t np[WCSSIZE]; +} +TIN_WCSTOD_REC; + +typedef struct +{ + TMD_ERRET (double); + double val; + wchar_t fwc; +} +TEX_WCSTOD_REC; + +TMD_RECHEAD (WCSTOD); + + +/*----------------------------------------------------------------------*/ +/* WCSTOK: wchar_t *wcstok (wchar_t *ws, const wchar_t *dlm, */ +/* wchar_t **pt) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + struct + { + int w_flg; + wchar_t ws[WCSSIZE]; + wchar_t dt[WCSSIZE]; /* delimiter */ + } + seq[WCSTOK_SEQNUM]; +} +TIN_WCSTOK_REC; + +typedef struct +{ + struct + { + TMD_ERRET (wchar_t *); + wchar_t ws[WCSSIZE]; + } + seq[WCSTOK_SEQNUM]; +} +TEX_WCSTOK_REC; + +TMD_RECHEAD (WCSTOK); + + +/*----------------------------------------------------------------------*/ +/* WCSTOMBS: size_t wcstombs (char s, const wchar_t *ws, size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + int s_flg; + int w_flg; /* currently we don't need it. */ + wchar_t ws[WCSSIZE]; + size_t n; +} +TIN_WCSTOMBS_REC; + +typedef struct +{ + TMD_ERRET (size_t); + char s[MBSSIZE]; +} +TEX_WCSTOMBS_REC; + +TMD_RECHEAD (WCSTOMBS); + + +/*----------------------------------------------------------------------*/ +/* WCSWIDTH: int wcswidth (const wchar_t *ws, size_t n) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCSNCPY_REC TIN_WCSWIDTH_REC; +typedef TEX_ERRET_REC (int) TEX_WCSWIDTH_REC; +TMD_RECHEAD (WCSWIDTH); + + +/*----------------------------------------------------------------------*/ +/* WCSXFRM: size_t wcsxfrm (wchar_t *ws1, const wchar_t *ws2, size_t n)*/ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t org1[WCSSIZE]; + wchar_t org2[WCSSIZE]; + int n1, n2; +} +TIN_WCSXFRM_REC; + +typedef TEX_ERRET_REC (size_t) TEX_WCSXFRM_REC; /* only for org2[] */ +TMD_RECHEAD (WCSXFRM); + + +/*----------------------------------------------------------------------*/ +/* WCTOB: int wctob (wint_t wc) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wint_t wc; +} +TIN_WCTOB_REC; + +typedef TEX_ERRET_REC (int) TEX_WCTOB_REC; +TMD_RECHEAD (WCTOB); + + +/*----------------------------------------------------------------------*/ +/* WCTOMB: int wctomb (char *s, wchar_t wc) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + int s_flg; + wchar_t wc; +} +TIN_WCTOMB_REC; + +typedef struct +{ + TMD_ERRET (int); + char s[MBSSIZE]; +} +TEX_WCTOMB_REC; + +TMD_RECHEAD (WCTOMB); + + +/*----------------------------------------------------------------------*/ +/* WCTRANS: wctrans_t wctrans (const char *charclass) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + char class[MBSSIZE]; +} +TIN_WCTRANS_REC; + +typedef TEX_ERRET_REC (wctrans_t) TEX_WCTRANS_REC; +TMD_RECHEAD (WCTRANS); + + +/*----------------------------------------------------------------------*/ +/* WCTYPE: wctype_t wctype (const char *class) */ +/*----------------------------------------------------------------------*/ + +typedef TIN_WCTRANS_REC TIN_WCTYPE_REC; +typedef TEX_ERRET_REC (wctype_t) TEX_WCTYPE_REC; +TMD_RECHEAD (WCTYPE); + + +/*----------------------------------------------------------------------*/ +/* WCWIDTH: int wcwidth (wchar_t wc) */ +/*----------------------------------------------------------------------*/ + +typedef struct +{ + wchar_t wc; +} +TIN_WCWIDTH_REC; + +typedef TEX_ERRET_REC (int) TEX_WCWIDTH_REC; +TMD_RECHEAD (WCWIDTH); + +#endif /* TST_TYPES_H */ diff --git a/test/locale-mbwc/tst_wcrtomb.c b/test/locale-mbwc/tst_wcrtomb.c new file mode 100644 index 000000000..0029a4940 --- /dev/null +++ b/test/locale-mbwc/tst_wcrtomb.c @@ -0,0 +1,79 @@ +/* + WCRTOMB: wchar_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps) +*/ + +#define TST_FUNCTION wcrtomb + +#include "tsp_common.c" +#include "dat_wcrtomb.c" + + +int +tst_wcrtomb (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (wchar_t); + wchar_t wc; + char s[MBSSIZE], *s_in, *s_ex; + char t_flg, t_ini; + static mbstate_t t = { 0 }; + mbstate_t *pt; + int err, i; + + TST_DO_TEST (wcrtomb) + { + TST_HEAD_LOCALE (wcrtomb, S_WCRTOMB); + TST_DO_REC (wcrtomb) + { + TST_GET_ERRET (wcrtomb); + s_in = ((TST_INPUT (wcrtomb).s_flg) == 0) ? (char *) NULL : s; + wc = TST_INPUT (wcrtomb).wc; + t_flg = TST_INPUT (wcrtomb).t_flg; + t_ini = TST_INPUT (wcrtomb).t_init; + pt = (t_flg == 0) ? NULL : &t; + + if (t_ini != 0) + { + memset (&t, 0, sizeof (t)); + } + + TST_CLEAR_ERRNO; + ret = wcrtomb (s_in, wc, pt); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stdout, "wcrtomb() [ %s : %d ] ret = %lu\n", locale, + rec + 1, (unsigned long int) ret); + fprintf (stdout, " errno = %d\n", errno_save); + } + + TST_IF_RETURN (S_WCRTOMB) + { + }; + + s_ex = TST_EXPECT (wcrtomb).s; + + if (s_in) + { + for (i = 0, err = 0; *(s_ex + i) != 0 && i < MBSSIZE; i++) + { + if (s_in[i] != s_ex[i]) + { + err++; + err_count++; + Result (C_FAILURE, S_WCRTOMB, CASE_4, + "copied string is different from an " + "expected string"); + break; + } + } + if (!err) + { + Result (C_SUCCESS, S_WCRTOMB, CASE_4, MS_PASSED); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcscat.c b/test/locale-mbwc/tst_wcscat.c new file mode 100644 index 000000000..3dc98091c --- /dev/null +++ b/test/locale-mbwc/tst_wcscat.c @@ -0,0 +1,78 @@ +/* + WCSCAT: wchar_t *wcscat (wchar_t *ws1, const wchar_t *ws2); +*/ + +#define TST_FUNCTION wcscat + +#include "tsp_common.c" +#include "dat_wcscat.c" + +int +tst_wcscat (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (wchar_t *); + wchar_t *ws1, *ws2, *ws_ex; + int i, err; + + TST_DO_TEST (wcscat) + { + TST_HEAD_LOCALE (wcscat, S_WCSCAT); + TST_DO_REC (wcscat) + { + TST_GET_ERRET (wcscat); + ws1 = TST_INPUT (wcscat).ws1; /* external value: size WCSSIZE */ + ws2 = TST_INPUT (wcscat).ws2; + + TST_CLEAR_ERRNO; + ret = wcscat (ws1, ws2); + TST_SAVE_ERRNO; + + TST_IF_RETURN (S_WCSCAT) + { + if (ret == ws1) + { + Result (C_SUCCESS, S_WCSCAT, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSCAT, CASE_3, + "the return address may not be correct"); + } + } + + /* function specific test cases here */ + + if (ret == ws1) + { + ws_ex = TST_EXPECT (wcscat).ws; + for (err = 0, i = 0; + (ws1[i] != 0L || ws_ex[i] != 0L) && i < WCSSIZE; i++) + { + if (debug_flg) + { + fprintf (stdout, "tst_wcscat() : ws1[%d] = 0x%lx\n", i, + (unsigned long int) ws1[i]); + } + + if (ws1[i] != ws_ex[i]) + { + err++; + err_count++; + Result (C_FAILURE, S_WCSCAT, CASE_4, + "concatinated string is different from an " + "expected string"); + break; + } + } + + if (!err) + { + Result (C_SUCCESS, S_WCSCAT, CASE_4, MS_PASSED); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcschr.c b/test/locale-mbwc/tst_wcschr.c new file mode 100644 index 000000000..b57a05a8f --- /dev/null +++ b/test/locale-mbwc/tst_wcschr.c @@ -0,0 +1,70 @@ +/* + WCSCHR: wchar_t *wcschr (wchar_t *ws, wchar_t wc); +*/ + +#define TST_FUNCTION wcschr + +#include "tsp_common.c" +#include "dat_wcschr.c" + +int +tst_wcschr (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (wchar_t *); + wchar_t *ws, wc; + + TST_DO_TEST (wcschr) + { + TST_HEAD_LOCALE (wcschr, S_WCSCHR); + TST_DO_REC (wcschr) + { + TST_GET_ERRET (wcschr); + ws = TST_INPUT (wcschr).ws; /* external value: size WCSSIZE */ + wc = TST_INPUT (wcschr).wc; + ret = wcschr (ws, wc); + + if (debug_flg) + { + if (ret) + { + fprintf (stderr, "wcschr: ret = 0x%lx\n", + (unsigned long int) *ret); + } + else + { + fprintf (stderr, "wcschr: ret = NULL pointer\n"); + } + } + + TST_IF_RETURN (S_WCSCHR) + { + if (ret == NULL) + { + if (debug_flg) + { + fprintf (stderr, "*** Warning *** tst_wcschr: " + "set ret_flg=1 to check NULL return value\n"); + } + + warn_count++; + Result (C_INVALID, S_WCSCHR, CASE_3, "(check the test data) " + "set ret_flg=1 to check NULL return value"); + continue; + } + + if (*ret == wc) + { + Result (C_SUCCESS, S_WCSCHR, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSCHR, CASE_3, + "the returned address of the string seems to be wrong"); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcscmp.c b/test/locale-mbwc/tst_wcscmp.c new file mode 100644 index 000000000..594682ce9 --- /dev/null +++ b/test/locale-mbwc/tst_wcscmp.c @@ -0,0 +1,40 @@ +/* + WCSCMP: int wcscmp (const wchar_t *ws1, const wchar_t *ws2); +*/ + +#define TST_FUNCTION wcscmp + +#include "tsp_common.c" +#include "dat_wcscmp.c" + + +int +tst_wcscmp (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (int); + wchar_t *ws1, *ws2; + + TST_DO_TEST (wcscmp) + { + TST_HEAD_LOCALE (wcscmp, S_WCSCMP); + TST_DO_REC (wcscmp) + { + TST_GET_ERRET (wcscmp); + ws1 = TST_INPUT (wcscmp).ws1; + ws2 = TST_INPUT (wcscmp).ws2; + ret = wcscmp (ws1, ws2); + ret = (ret > 0 ? 1 : ret < 0 ? -1 : 0); + + if (debug_flg) + { + fprintf (stderr, "tst_wcscmp: ret = %d\n", ret); + } + + TST_IF_RETURN (S_WCSCMP) + { + }; + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcscoll.c b/test/locale-mbwc/tst_wcscoll.c new file mode 100644 index 000000000..929f80d80 --- /dev/null +++ b/test/locale-mbwc/tst_wcscoll.c @@ -0,0 +1,76 @@ +/* + WCSCOLL: int wcscoll (const wchar_t *ws1, const wchar_t *ws2); +*/ + +#define TST_FUNCTION wcscoll + +#include "tsp_common.c" +#include "dat_wcscoll.c" + +int +tst_wcscoll (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (int); + wchar_t *ws1, *ws2; + int cmp; + + TST_DO_TEST (wcscoll) + { + TST_HEAD_LOCALE (wcscoll, S_WCSCOLL); + TST_DO_REC (wcscoll) + { + TST_GET_ERRET (wcscoll); + ws1 = TST_INPUT (wcscoll).ws1; /* external value: size WCSSIZE */ + ws2 = TST_INPUT (wcscoll).ws2; + + TST_CLEAR_ERRNO; + ret = wcscoll (ws1, ws2); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stderr, "tst_wcscoll: ret = %d\n", ret); + } + + cmp = TST_EXPECT (wcscoll).cmp_flg; + TST_IF_RETURN (S_WCSCOLL) + { + if (cmp != 0) + { + if ((cmp == 1 && ret > 0) || (cmp == -1 && ret < 0)) + { + Result (C_SUCCESS, S_WCSCOLL, CASE_3, MS_PASSED); + } + else + { + err_count++; + if (cmp == 1) + { + if (ret == 0) + Result (C_FAILURE, S_WCSCOLL, CASE_3, + "the return value should be positive" + " but it's zero."); + else + Result (C_FAILURE, S_WCSCOLL, CASE_3, + "the return value should be positive" + " but it's negative."); + } + else + { + if (ret == 0) + Result (C_FAILURE, S_WCSCOLL, CASE_3, + "the return value should be negative" + " but it's zero."); + else + Result (C_FAILURE, S_WCSCOLL, CASE_3, + "the return value should be negative" + " but it's positive."); + } + } + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcscpy.c b/test/locale-mbwc/tst_wcscpy.c new file mode 100644 index 000000000..d5705a55d --- /dev/null +++ b/test/locale-mbwc/tst_wcscpy.c @@ -0,0 +1,85 @@ +/*-------------------------------------------------------------------------------------*/ +/* WCSCPY: wchar_t *wcscpy( wchar_t *ws1, const wchar_t *ws2 ) */ +/*-------------------------------------------------------------------------------------*/ +#define TST_FUNCTION wcscpy + +#include "tsp_common.c" +#include "dat_wcscpy.c" + +int +tst_wcscpy (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (wchar_t *); + wchar_t ws1[WCSSIZE], *ws2, *ws_ex; + int err, i; + + TST_DO_TEST (wcscpy) + { + TST_HEAD_LOCALE (wcscpy, S_WCSCPY); + TST_DO_REC (wcscpy) + { + TST_GET_ERRET (wcscpy); + ws2 = TST_INPUT (wcscpy).ws; /* external value: size WCSSIZE */ + ret = wcscpy (ws1, ws2); + + TST_IF_RETURN (S_WCSCPY) + { + if (ret == ws1) + { + Result (C_SUCCESS, S_WCSCPY, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSCPY, CASE_3, + "the return address may not be correct"); + } + } + + if (ret == ws1) + { + ws_ex = TST_EXPECT (wcscpy).ws; + + for (err = 0, i = 0; + (ws1[i] != 0L || ws_ex[i] != 0L) && i < WCSSIZE; i++) + { + if (debug_flg) + { + fprintf (stderr, + "ws1[ %d ] = 0x%lx <-> wx_ex[ %d ] = 0x%lx\n", i, + (unsigned long int) ws1[i], i, + (unsigned long int) ws_ex[i]); + } + + if (ws1[i] != ws_ex[i]) + { + err++; + err_count++; + Result (C_FAILURE, S_WCSCPY, CASE_4, + "copied string is different from an" + " expected string"); + break; + } + } + + if (!err) + { + Result (C_SUCCESS, S_WCSCPY, CASE_4, MS_PASSED); + } + + if (ws1[i] == 0L) + { + Result (C_SUCCESS, S_WCSCPY, CASE_5, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSCPY, CASE_5, + "copied string is not null-terminated"); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcscspn.c b/test/locale-mbwc/tst_wcscspn.c new file mode 100644 index 000000000..e1c8892fe --- /dev/null +++ b/test/locale-mbwc/tst_wcscspn.c @@ -0,0 +1,38 @@ +/* + WCSCSPN: size_t wcscspn (const wchar_t *ws1, const wchar_t *ws2); +*/ + +#define TST_FUNCTION wcscspn + +#include "tsp_common.c" +#include "dat_wcscspn.c" + +int +tst_wcscspn (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (size_t); + wchar_t *ws1, *ws2; + + TST_DO_TEST (wcscspn) + { + TST_HEAD_LOCALE (wcscspn, S_WCSCSPN); + TST_DO_REC (wcscspn) + { + TST_GET_ERRET (wcscspn); + ws1 = TST_INPUT (wcscspn).ws1; + ws2 = TST_INPUT (wcscspn).ws2; /* external value: size WCSSIZE */ + ret = wcscspn (ws1, ws2); + + if (debug_flg) + { + fprintf (stderr, "wcscspn: ret = %zu\n", ret); + } + + TST_IF_RETURN (S_WCSCSPN) + { + }; + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcslen.c b/test/locale-mbwc/tst_wcslen.c new file mode 100644 index 000000000..d0ffa5a44 --- /dev/null +++ b/test/locale-mbwc/tst_wcslen.c @@ -0,0 +1,31 @@ +/* + WCSLEN: size_t wcslen (const wchar_t *ws); +*/ + +#define TST_FUNCTION wcslen + +#include "tsp_common.c" +#include "dat_wcslen.c" + +int +tst_wcslen (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (size_t); + wchar_t *ws; + + TST_DO_TEST (wcslen) + { + TST_HEAD_LOCALE (wcslen, S_WCSLEN); + TST_DO_REC (wcslen) + { + TST_GET_ERRET (wcslen); + ws = TST_INPUT (wcslen).ws; + ret = wcslen (ws); + TST_IF_RETURN (S_WCSLEN) + { + }; + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcsncat.c b/test/locale-mbwc/tst_wcsncat.c new file mode 100644 index 000000000..a2f6ba020 --- /dev/null +++ b/test/locale-mbwc/tst_wcsncat.c @@ -0,0 +1,75 @@ +/* + WCSNCAT: wchar_t *wcsncat (wchar_t *ws1, const wchar_t *ws2, size_t n); +*/ + +#define TST_FUNCTION wcsncat + +#include "tsp_common.c" +#include "dat_wcsncat.c" + +int +tst_wcsncat (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (wchar_t *); + wchar_t *ws1, *ws2, *ws_ex; + int n, i, err; + + TST_DO_TEST (wcsncat) + { + TST_HEAD_LOCALE (wcsncat, S_WCSNCAT); + TST_DO_REC (wcsncat) + { + TST_GET_ERRET (wcsncat); + ws1 = TST_INPUT (wcsncat).ws1; /* external value: size WCSSIZE */ + ws2 = TST_INPUT (wcsncat).ws2; + n = TST_INPUT (wcsncat).n; + ret = wcsncat (ws1, ws2, n); + + TST_IF_RETURN (S_WCSNCAT) + { + if (ret == ws1) + { + Result (C_SUCCESS, S_WCSNCAT, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSNCAT, CASE_3, + "the return address may not be correct"); + } + } + + if (ret == ws1) + { + ws_ex = TST_EXPECT (wcsncat).ws; + + for (err = 0, i = 0; + (ws1[i] != 0L || ws_ex[i] != 0L) && i < WCSSIZE; i++) + { + if (debug_flg) + { + fprintf (stderr, "ws1[%d] = 0x%lx\n", i, + (unsigned long int) ws1[i]); + } + + if (ws1[i] != ws_ex[i]) + { + err++; + err_count++; + Result (C_FAILURE, S_WCSNCAT, CASE_4, + "the concatinated string has " + "different value from an expected string"); + break; + } + } + + if (!err) + { + Result (C_SUCCESS, S_WCSNCAT, CASE_4, MS_PASSED); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcsncmp.c b/test/locale-mbwc/tst_wcsncmp.c new file mode 100644 index 000000000..d046ecd13 --- /dev/null +++ b/test/locale-mbwc/tst_wcsncmp.c @@ -0,0 +1,40 @@ +/*-------------------------------------------------------------------------------------*/ +/* WCSNCMP: int wcsncmp( const wchar_t *ws1, const wchar_t *ws2, size_t n ) */ +/*-------------------------------------------------------------------------------------*/ + +#define TST_FUNCTION wcsncmp + +#include "tsp_common.c" +#include "dat_wcsncmp.c" + +int +tst_wcsncmp (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (int); + wchar_t *ws1, *ws2; + size_t n; + + TST_DO_TEST (wcsncmp) + { + TST_HEAD_LOCALE (wcsncmp, S_WCSNCMP); + TST_DO_REC (wcsncmp) + { + TST_GET_ERRET (wcsncmp); + ws1 = TST_INPUT (wcsncmp).ws1; /* external value: size WCSSIZE */ + ws2 = TST_INPUT (wcsncmp).ws2; + n = TST_INPUT (wcsncmp).n; + ret = wcsncmp (ws1, ws2, n); + + if (debug_flg) + { + fprintf (stderr, "tst_wcsncmp: ret = %d, 0x%x\n", ret, ret); + } + + TST_IF_RETURN (S_WCSNCMP) + { + }; + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcsncpy.c b/test/locale-mbwc/tst_wcsncpy.c new file mode 100644 index 000000000..814bbc0a8 --- /dev/null +++ b/test/locale-mbwc/tst_wcsncpy.c @@ -0,0 +1,93 @@ +/* + WCSNCPY: wchar_t *wcsncpy (wchar_t *ws1, const wchar_t *ws2, size_t n); +*/ + +#define TST_FUNCTION wcsncpy + +#include "tsp_common.c" +#include "dat_wcsncpy.c" + +#define WCSNUM_NCPY 7 + +int +tst_wcsncpy (FILE *fp, int debug_flg) +{ + TST_DECL_VARS (wchar_t *); + wchar_t ws1[WCSSIZE] = + { 0x9999, 0x9999, 0x9999, 0x9999, 0x9999, 0x9999, 0x0000 }; + wchar_t *ws2, *ws_ex; + int err, i; + size_t n; + + TST_DO_TEST (wcsncpy) + { + TST_HEAD_LOCALE (wcsncpy, S_WCSNCPY); + TST_DO_REC (wcsncpy) + { + TST_GET_ERRET (wcsncpy); + + for (n = 0; n < WCSNUM_NCPY - 1; ++n) + { + ws1[n] = 0x9999; + } + + ws1[n] = 0; + ws2 = TST_INPUT (wcsncpy).ws; /* external value: size WCSSIZE */ + n = TST_INPUT (wcsncpy).n; + ret = wcsncpy (ws1, ws2, n); + + TST_IF_RETURN (S_WCSNCPY) + { + if (ret == ws1) + { + Result (C_SUCCESS, S_WCSNCPY, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSNCPY, CASE_3, + "the return address may not be correct"); + } + } + + if (ret == ws1) + { + if (debug_flg) + { + fprintf (stderr, "\nwcsncpy: n = %zu\n\n", n); + } + + ws_ex = TST_EXPECT (wcsncpy).ws; + + for (err = 0, i = 0; i < WCSNUM_NCPY && i < WCSSIZE; i++) + { + if (debug_flg) + fprintf (stderr, + "wcsncpy: ws1[ %d ] = 0x%lx <-> wx_ex[ %d ] = 0x%lx\n", + i, (unsigned long int) ws1[i], i, + (unsigned long int) ws_ex[i]); + + if (ws1[i] != ws_ex[i]) + { + err++; + err_count++; + Result (C_FAILURE, S_WCSNCPY, CASE_4, + "copied string is different from an " + "expected string"); + break; + } + } + + if (!err) + { + Result (C_SUCCESS, S_WCSNCPY, CASE_4, MS_PASSED); + } + + /* A null terminate character is not supposed to be copied + unless (num chars of ws2)<n. */ + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcspbrk.c b/test/locale-mbwc/tst_wcspbrk.c new file mode 100644 index 000000000..95c1c0fa6 --- /dev/null +++ b/test/locale-mbwc/tst_wcspbrk.c @@ -0,0 +1,80 @@ +/* + WCSPBRK: wchar_t *wcspbrk (const wchar_t *ws1, const wchar_t *ws2); +*/ + +#define TST_FUNCTION wcspbrk + +#include "tsp_common.c" +#include "dat_wcspbrk.c" + +int +tst_wcspbrk (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (wchar_t *); + wchar_t *ws1, *ws2; + int err; + wchar_t wc_ex; + + TST_DO_TEST (wcspbrk) + { + TST_HEAD_LOCALE (wcspbrk, S_WCSPBRK); + TST_DO_REC (wcspbrk) + { + TST_GET_ERRET (wcspbrk); + ws1 = TST_INPUT (wcspbrk).ws1; + ws2 = TST_INPUT (wcspbrk).ws2; + + ret = wcspbrk (ws1, ws2); + + if (debug_flg) + { + fprintf (stdout, "wcspbrk() [ %s : %d ] ret = %s\n", locale, + rec + 1, (ret == NULL) ? "null" : "not null"); + if (ret) + fprintf (stderr, + " ret[0] = 0x%lx : 0x%lx = ws2[0]\n", + (unsigned long int) ret[0], (unsigned long int) ws2[0]); + } + + TST_IF_RETURN (S_WCSPBRK) + { + if (ws2[0] == 0) + { + if (ret == ws1) + { + Result (C_SUCCESS, S_WCSPBRK, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSPBRK, CASE_3, + "return address is not same address as ws1"); + } + + continue; + } + + wc_ex = TST_EXPECT (wcspbrk).wc; + + if (debug_flg) + fprintf (stdout, + " *ret = 0x%lx <-> 0x%lx = wc_ex\n", + (unsigned long int) *ret, (unsigned long int) wc_ex); + + if (*ret != wc_ex) + { + err++; + err_count++; + Result (C_FAILURE, S_WCSPBRK, CASE_4, "the pointed wc is " + "different from an expected wc"); + } + else + { + Result (C_SUCCESS, S_WCSPBRK, CASE_4, MS_PASSED); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcsrtombs.c b/test/locale-mbwc/tst_wcsrtombs.c new file mode 100644 index 000000000..3a8edccad --- /dev/null +++ b/test/locale-mbwc/tst_wcsrtombs.c @@ -0,0 +1,127 @@ +/* + WCSRTOMBS: size_t wcsrtombs (char *s, const wchar_t **ws, size_t n, + mbstate_t *ps) +*/ + +#define TST_FUNCTION wcsrtombs + +#include "tsp_common.c" +#include "dat_wcsrtombs.c" + +#define MARK_VAL 0x01 + +int +tst_wcsrtombs (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (size_t); + char s_flg, n; + const wchar_t *ws, *wp; + char s[MBSSIZE], *s_in; + char t_flg, t_ini; + static mbstate_t t = { 0 }; + mbstate_t *pt; + int err, i; + char *s_ex; + + TST_DO_TEST (wcsrtombs) + { + TST_HEAD_LOCALE (wcsrtombs, S_WCSRTOMBS); + TST_DO_REC (wcsrtombs) + { + TST_GET_ERRET (wcsrtombs); + memset (s, MARK_VAL, MBSSIZE); + + s_flg = TST_INPUT (wcsrtombs).s_flg; + s_in = (s_flg == 1) ? s : (char *) NULL; + wp = ws = TST_INPUT (wcsrtombs).ws; + n = TST_INPUT (wcsrtombs).n; + t_flg = TST_INPUT (wcsrtombs).t_flg; + t_ini = TST_INPUT (wcsrtombs).t_init; + pt = (t_flg == 0) ? NULL : &t; + + if (t_ini != 0) + { + memset (&t, 0, sizeof (t)); + } + + TST_CLEAR_ERRNO; + ret = wcsrtombs (s_in, &wp, n, pt); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stderr, "wcsrtombs: ret = %zu\n", ret); + } + + TST_IF_RETURN (S_WCSRTOMBS) + { + }; + + if (s_in != NULL && ret != (size_t) - 1) + { + /* No definition for s, when error occurs. */ + s_ex = TST_EXPECT (wcsrtombs).s; + + for (err = 0, i = 0; i <= ret && i < MBSSIZE; i++) + { + if (debug_flg) + { + fprintf (stderr, + " : s[%d] = 0x%hx <-> 0x%hx = s_ex[%d]\n", i, + s[i], s_ex[i], i); + } + + if (i == ret && ret == n) /* no null termination */ + { + if (s[i] == MARK_VAL) + { + Result (C_SUCCESS, S_WCSRTOMBS, CASE_4, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSRTOMBS, CASE_4, + "should not be null terminated " + "(it may be a null char), but it is"); + } + + break; + } + + if (i == ret && ret < n) /* null termination */ + { + if (s[i] == 0) + { + Result (C_SUCCESS, S_WCSRTOMBS, CASE_5, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSRTOMBS, CASE_5, + "should be null terminated, but it is not"); + } + + break; + } + + if (s[i] != s_ex[i]) + { + err++; + err_count++; + Result (C_FAILURE, S_WCSRTOMBS, CASE_6, + "converted string is different from an" + " expected string"); + break; + } + } + + if (!err) + { + Result (C_SUCCESS, S_WCSRTOMBS, CASE_6, MS_PASSED); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcsspn.c b/test/locale-mbwc/tst_wcsspn.c new file mode 100644 index 000000000..02157eeca --- /dev/null +++ b/test/locale-mbwc/tst_wcsspn.c @@ -0,0 +1,38 @@ +/* + WCSSPN: size_t wcsspn (const wchar_t *ws1, const wchar_t *ws2); +*/ + +#define TST_FUNCTION wcsspn + +#include "tsp_common.c" +#include "dat_wcsspn.c" + +int +tst_wcsspn (FILE *fp, int debug_flg) +{ + TST_DECL_VARS (size_t); + wchar_t *ws1, *ws2; + + TST_DO_TEST (wcsspn) + { + TST_HEAD_LOCALE (wcsspn, S_WCSSPN); + TST_DO_REC (wcsspn) + { + TST_GET_ERRET (wcsspn); + ws1 = TST_INPUT (wcsspn).ws1; + ws2 = TST_INPUT (wcsspn).ws2; /* external value: size WCSSIZE */ + ret = wcsspn (ws1, ws2); + + if (debug_flg) + { + fprintf (stderr, "wcsspn: ret = %zu\n", ret); + } + + TST_IF_RETURN (S_WCSSPN) + { + }; + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcsstr.c b/test/locale-mbwc/tst_wcsstr.c new file mode 100644 index 000000000..f8b00c4b7 --- /dev/null +++ b/test/locale-mbwc/tst_wcsstr.c @@ -0,0 +1,86 @@ +/* + WCSSTR: wchar_t *wcsstr (const wchar_t *ws1, const wchar_t *ws2); +*/ + +#define TST_FUNCTION wcsstr + +#include "tsp_common.c" +#include "dat_wcsstr.c" + +int +tst_wcsstr (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (wchar_t *); + wchar_t *ws1, *ws2; + int err, i; + + TST_DO_TEST (wcsstr) + { + TST_HEAD_LOCALE (wcsstr, S_WCSSTR); + TST_DO_REC (wcsstr) + { + TST_GET_ERRET (wcsstr); + ws1 = TST_INPUT (wcsstr).ws1; + ws2 = TST_INPUT (wcsstr).ws2; /* external value: size WCSSIZE */ + ret = wcsstr (ws1, ws2); + + if (debug_flg) + { + fprintf (stderr, "wcsstr: %d : ret = %s\n", rec + 1, + (ret == NULL) ? "null" : "not null"); + if (ret) + { + fprintf (stderr, + " ret[ 0 ] = 0x%lx <-> 0x%lx = ws2[ 0 ]\n", + (unsigned long int) ret[0], (unsigned long int) ws2[0]); + } + } + + TST_IF_RETURN (S_WCSSTR) + { + if (ws2[0] == 0) + { + if (ret == ws1) + { + Result (C_SUCCESS, S_WCSSTR, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSSTR, CASE_3, + "return address is not same address as ws1"); + } + + continue; + } + + for (i = 0, err = 0; *(ws2 + i) != 0 && i < WCSSIZE; i++) + { + if (debug_flg) + { + fprintf (stderr, + " : ret[ %d ] = 0x%lx <-> 0x%lx = ws2[ %d ]\n", + i, (unsigned long int) ret[i], + (unsigned long int) ws2[i], i); + } + + if (ret[i] != ws2[i]) + { + err++; + err_count++; + Result (C_FAILURE, S_WCSSTR, CASE_4, "pointed sub-string is " + "different from an expected sub-string"); + break; + } + } + + if (!err) + { + Result (C_SUCCESS, S_WCSSTR, CASE_4, MS_PASSED); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcstod.c b/test/locale-mbwc/tst_wcstod.c new file mode 100644 index 000000000..1648d3539 --- /dev/null +++ b/test/locale-mbwc/tst_wcstod.c @@ -0,0 +1,69 @@ +/* + WCSTOD: double wcstod (wchar_t *np, const wchar_t **endp); +*/ + +#define TST_FUNCTION wcstod + +#include "tsp_common.c" +#include "dat_wcstod.c" + +int +tst_wcstod (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (double); + wchar_t *np, *endp, fwc; + double val; + + TST_DO_TEST (wcstod) + { + TST_HEAD_LOCALE (wcstod, S_WCSTOD); + TST_DO_REC (wcstod) + { + TST_GET_ERRET (wcstod); + np = TST_INPUT (wcstod).np; + + TST_CLEAR_ERRNO; + ret = wcstod (np, &endp); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stdout, "wcstod() [ %s : %d ] ret = %f\n", locale, + rec + 1, ret); + fprintf (stdout, " *endp = 0x%lx\n", + (unsigned long int) *endp); + } + + TST_IF_RETURN (S_WCSTOD) + { + if (ret != 0) + { + val = ret - TST_EXPECT (wcstod).val; + if (TST_ABS (val) < TST_DBL_EPS) + { + Result (C_SUCCESS, S_WCSTOD, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSTOD, CASE_3, "return value is wrong"); + } + } + } + + fwc = TST_EXPECT (wcstod).fwc; + + if (fwc == *endp) + { + Result (C_SUCCESS, S_WCSTOD, CASE_4, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSTOD, CASE_4, "a final wc is wrong."); + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcstok.c b/test/locale-mbwc/tst_wcstok.c new file mode 100644 index 000000000..1222b9785 --- /dev/null +++ b/test/locale-mbwc/tst_wcstok.c @@ -0,0 +1,96 @@ +/* + WCSTOK: wchar_t *wcstok (wchar_t *ws, const wchar_t *dlm, wchar_t **pt); +*/ + + +#define TST_FUNCTION wcstok + +#include "tsp_common.c" +#include "dat_wcstok.c" + +int +tst_wcstok (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (wchar_t *); + char w_flg; + wchar_t *ws; + wchar_t *dt, *pt; + wchar_t *ws_ex; + int err, i; + + TST_DO_TEST (wcstok) + { + TST_HEAD_LOCALE (wcstok, S_WCSTOK); + TST_DO_REC (wcstok) + { + TST_DO_SEQ (WCSTOK_SEQNUM) + { + TST_GET_ERRET_SEQ (wcstok); + w_flg = TST_INPUT_SEQ (wcstok).w_flg; + ws = (w_flg) ? TST_INPUT_SEQ (wcstok).ws : NULL; + dt = TST_INPUT_SEQ (wcstok).dt; + + ret = wcstok (ws, dt, &pt); + + if (debug_flg) + { + fprintf (stdout, "wcstok() [ %s : %d : %d ] *ret = 0x%lx\n", + locale, rec + 1, seq_num + 1, (unsigned long int) *ret); + if (pt && *pt) + { + fprintf (stdout, " *pt = 0x%lx\n", + (unsigned long int) *pt); + } + } + + TST_IF_RETURN (S_WCSTOK) + { + }; + + if (ret != NULL) + { + ws_ex = TST_EXPECT_SEQ (wcstok).ws; + + /* XXX: REVISIT : insufficient conditions */ + for (err = 0, i = 0; i < WCSSIZE; i++) + { + if (ret[i] == L'\0' && ws_ex[i] == L'\0') + { + break; + } + + if (debug_flg) + { + fprintf (stderr, + " ret[%d] = 0x%lx <-> " + "0x%lx = ws_ex[%d]\n", + i, (unsigned long int) ret[i], + (unsigned long int) ws_ex[i], i); + } + + if (ret[i] != ws_ex[i]) + { + err++; + err_count++; + Result (C_FAILURE, S_WCSTOK, CASE_3, + "the token is different from an expected string"); + break; + } + + if (ret[i] == L'\0' || ws_ex[i] == L'\0') + { + break; + } + } + + if (!err) + { + Result (C_SUCCESS, S_WCSTOK, CASE_3, MS_PASSED); + } + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcstombs.c b/test/locale-mbwc/tst_wcstombs.c new file mode 100644 index 000000000..c0851a430 --- /dev/null +++ b/test/locale-mbwc/tst_wcstombs.c @@ -0,0 +1,115 @@ +/* + WCSTOMBS: size_t wcstombs (char *s, const wchar_t *ws, size_t n) +*/ + +#define TST_FUNCTION wcstombs + +#include "tsp_common.c" +#include "dat_wcstombs.c" + +#define MARK_VAL 0x01 + +int +tst_wcstombs (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (size_t); + char s_flg, n; + wchar_t *ws; + char s[MBSSIZE], *s_in; + int err, i; + char *s_ex; + + TST_DO_TEST (wcstombs) + { + TST_HEAD_LOCALE (wcstombs, S_WCSTOMBS); + TST_DO_REC (wcstombs) + { + TST_GET_ERRET (wcstombs); + memset (s, MARK_VAL, MBSSIZE); + + s_flg = TST_INPUT (wcstombs).s_flg; + s_in = (s_flg == 1) ? s : (char *) NULL; + ws = TST_INPUT (wcstombs).ws; + n = TST_INPUT (wcstombs).n; + + TST_CLEAR_ERRNO; + ret = wcstombs (s_in, ws, n); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stdout, "wcstombs: ret = %zu\n", ret); + } + + TST_IF_RETURN (S_WCSTOMBS) + { + }; + + if (s_in != NULL && ret != (size_t) - 1) + { + /* No definition for s, when error occurs. */ + s_ex = TST_EXPECT (wcstombs).s; + + for (err = 0, i = 0; i <= ret && i < MBSSIZE; i++) + { + if (debug_flg) + { + fprintf (stdout, + " : s[%d] = 0x%hx <-> 0x%hx = s_ex[%d]\n", i, + s[i], s_ex[i], i); + } + + if (i == ret && ret == n) /* no null termination */ + { + if (s[i] == MARK_VAL) + { + Result (C_SUCCESS, S_WCSTOMBS, CASE_4, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSTOMBS, CASE_4, + "should not be null terminated " + "(it may be a null char), but it is"); + } + + break; + } + + if (i == ret && ret < n) /* null termination */ + { + if (s[i] == 0) + { + Result (C_SUCCESS, S_WCSTOMBS, CASE_5, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSTOMBS, CASE_5, + "should be null terminated, but it is not"); + } + + break; + } + + if (s[i] != s_ex[i]) + { + err++; + err_count++; + Result (C_FAILURE, S_WCSTOMBS, CASE_6, + "converted string is different from an " + "expected string"); + break; + } + } + + if (!err) + { + Result (C_SUCCESS, S_WCSTOMBS, CASE_6, MS_PASSED); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcswidth.c b/test/locale-mbwc/tst_wcswidth.c new file mode 100644 index 000000000..c8369753e --- /dev/null +++ b/test/locale-mbwc/tst_wcswidth.c @@ -0,0 +1,39 @@ +/* + WCSWIDTH: int wcswidth (const wchar_t *ws, size_t n); +*/ + +#define TST_FUNCTION wcswidth + +#include "tsp_common.c" +#include "dat_wcswidth.c" + +int +tst_wcswidth (FILE *fp, int debug_flg) +{ + TST_DECL_VARS (int); + wchar_t *ws; + int n; + + TST_DO_TEST (wcswidth) + { + TST_HEAD_LOCALE (wcswidth, S_WCSWIDTH); + TST_DO_REC (wcswidth) + { + TST_GET_ERRET (wcswidth); + ws = TST_INPUT (wcswidth).ws; + n = TST_INPUT (wcswidth).n; + ret = wcswidth (ws, n); + + if (debug_flg) + { + fprintf (stderr, "wcswidth: [ %d ] : ret = %d\n", rec + 1, ret); + } + + TST_IF_RETURN (S_WCSWIDTH) + { + }; + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcsxfrm.c b/test/locale-mbwc/tst_wcsxfrm.c new file mode 100644 index 000000000..6fb8a1c28 --- /dev/null +++ b/test/locale-mbwc/tst_wcsxfrm.c @@ -0,0 +1,122 @@ +/* + WCSXFRM: size_t wcsxfrm (wchar_t *ws1, const wchar_t *ws2, size_t n); +*/ + +#define TST_FUNCTION wcsxfrm + +#include "tsp_common.c" +#include "dat_wcsxfrm.c" + +int +tst_wcsxfrm (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (size_t); + wchar_t *org1, *org2; + wchar_t frm1[MBSSIZE], frm2[MBSSIZE]; + size_t n1, n2; + int ret_coll, ret_cmp; + + TST_DO_TEST (wcsxfrm) + { + TST_HEAD_LOCALE (wcsxfrm, S_WCSXFRM); + TST_DO_REC (wcsxfrm) + { + TST_GET_ERRET (wcsxfrm); + org1 = TST_INPUT (wcsxfrm).org1; + org2 = TST_INPUT (wcsxfrm).org2; + n1 = TST_INPUT (wcsxfrm).n1; + n2 = TST_INPUT (wcsxfrm).n2; + if (n1 < 0 || sizeof (frm1) < n1 || sizeof (frm2) < n2) + { + warn_count++; + Result (C_IGNORED, S_WCSXFRM, CASE_9, + "input data n1 or n2 is invalid"); + continue; + } + + /* an errno and a return value are checked + only for 2nd wcsxfrm() call. + A result of 1st call is used to compare + those 2 values by using wcscmp(). + */ + + TST_CLEAR_ERRNO; + ret = wcsxfrm (frm1, org1, n1); /* First call */ + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stdout, "tst_wcsxfrm() : REC = %d\n", rec + 1); + fprintf (stdout, "tst_wcsxfrm() : 1st ret = %zu\n", ret); + } + + if (ret == -1 || ret >= n1 || errno_save != 0) + { + warn_count++; + Result (C_INVALID, S_WCSXFRM, CASE_8, + "got an error in fist wcsxfrm() call"); + continue; + } + + TST_CLEAR_ERRNO; + /* Second call */ + ret = wcsxfrm (((n2 == 0) ? NULL : frm2), org2, n2); + TST_SAVE_ERRNO; + + TST_IF_RETURN (S_WCSXFRM) + { + }; + + if (n2 == 0 || ret >= n2 || errno != 0) + { +#if 0 + warn_count++; + Result (C_IGNORED, S_WCSXFRM, CASE_7, "did not get a result"); +#endif + continue; + } + + if (debug_flg) + { + fprintf (stdout, "tst_wcsxfrm() : 2nd ret = %zu\n", ret); + } + + /* wcscoll() */ + TST_CLEAR_ERRNO; + /* depends on wcscoll() ... not good though ... */ + ret_coll = wcscoll (org1, org2); + TST_SAVE_ERRNO; + + if (errno != 0) /* bugs * bugs may got correct results ... */ + { + warn_count++; + Result (C_INVALID, S_WCSXFRM, CASE_6, + "got an error in wcscoll() call"); + continue; + } + /* wcscmp() */ + ret_cmp = wcscmp (frm1, frm2); + + if ((ret_coll == ret_cmp) || (ret_coll > 0 && ret_cmp > 0) + || (ret_coll < 0 && ret_cmp < 0)) + { + Result (C_SUCCESS, S_WCSXFRM, CASE_3, + MS_PASSED " (depends on wcscoll & wcscmp)"); + } + else + { + err_count++; + Result (C_FAILURE, S_WCSXFRM, CASE_3, + "results from wcscoll & wcscmp() do not match"); + } + + if (debug_flg) + { + fprintf (stdout, "tst_wcsxfrm() : coll = %d <-> %d = cmp\n", + ret_coll, ret_cmp); + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wctob.c b/test/locale-mbwc/tst_wctob.c new file mode 100644 index 000000000..2377daf59 --- /dev/null +++ b/test/locale-mbwc/tst_wctob.c @@ -0,0 +1,37 @@ +/*-------------------------------------------------------------------------------------*/ +/* WCTOB: int wctob( wint_t wc ) */ +/*-------------------------------------------------------------------------------------*/ + +#define TST_FUNCTION wctob + +#include "tsp_common.c" +#include "dat_wctob.c" + +int +tst_wctob (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (int); + wchar_t wc; + + TST_DO_TEST (wctob) + { + TST_HEAD_LOCALE (wctob, S_WCTOB); + TST_DO_REC (wctob) + { + TST_GET_ERRET (wctob); + wc = TST_INPUT (wctob).wc; + ret = wctob (wc); + + if (debug_flg) + { + fprintf (stderr, "tst_wctob : [ %d ] ret = %d\n", rec + 1, ret); + } + + TST_IF_RETURN (S_WCTOB) + { + }; + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wctomb.c b/test/locale-mbwc/tst_wctomb.c new file mode 100644 index 000000000..aea89fed8 --- /dev/null +++ b/test/locale-mbwc/tst_wctomb.c @@ -0,0 +1,99 @@ +/* + WCTOMB: int wctomb (char *s, wchar_t wc) +*/ + +#define TST_FUNCTION wctomb + +#include "tsp_common.c" +#include "dat_wctomb.c" + +int +tst_wctomb (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (int); + wchar_t wc; + char s[MBSSIZE], *s_in, *s_ex; + int err, i; + + TST_DO_TEST (wctomb) + { + TST_HEAD_LOCALE (wctomb, S_WCTOMB); + TST_DO_REC (wctomb) + { + TST_GET_ERRET (wctomb); + wc = TST_INPUT (wctomb).wc; + s_in = ((TST_INPUT (wctomb).s_flg) == 0) ? (char *) NULL : s; + ret = wctomb (s_in, wc); + + if (debug_flg) + { + fprintf (stdout, "wctomb() [ %s : %d ] ret = %d\n", locale, + rec + 1, ret); + } + + TST_IF_RETURN (S_WCTOMB) + { + if (s_in == NULL) /* state dependency */ + { + if (ret_exp == +1) /* state-dependent */ + { + if (ret != 0) + { + /* Non-zero means state-dependent encoding. */ + Result (C_SUCCESS, S_WCTOMB, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCTOMB, CASE_3, + "should be state-dependent encoding, " + "but a return value shows it is " + "state-independent"); + } + } + + if (ret_exp == 0) /* state-independent */ + { + if (ret == 0) + { + /* Non-zero means state-dependent encoding. */ + Result (C_SUCCESS, S_WCTOMB, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCTOMB, CASE_3, + "should be state-independent encoding, " + "but a return value shows it is state-dependent"); + } + } + } + } + + s_ex = TST_EXPECT (wctomb).s; + + if (s_in) + { + for (i = 0, err = 0; *(s_ex + i) != 0 && i < MBSSIZE; i++) + { + if (s_in[i] != s_ex[i]) + { + err++; + err_count++; + Result (C_FAILURE, S_WCTOMB, CASE_4, + "copied string is different from an" + " expected string"); + break; + } + } + + if (!err) + { + Result (C_SUCCESS, S_WCTOMB, CASE_4, MS_PASSED); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wctrans.c b/test/locale-mbwc/tst_wctrans.c new file mode 100644 index 000000000..b422d6ff9 --- /dev/null +++ b/test/locale-mbwc/tst_wctrans.c @@ -0,0 +1,52 @@ +/* + WCTRANS: wctrans_t wctrans (const char *charclass); +*/ + +#define TST_FUNCTION wctrans + +#include "tsp_common.c" +#include "dat_wctrans.c" + +int +tst_wctrans (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (wctrans_t); + char *class; + + TST_DO_TEST (wctrans) + { + TST_HEAD_LOCALE (wctrans, S_WCTRANS); + TST_DO_REC (wctrans) + { + TST_GET_ERRET (wctrans); + class = TST_INPUT (wctrans).class; + + TST_CLEAR_ERRNO; + ret = wctrans (class); + TST_SAVE_ERRNO; + + if (debug_flg) + { + fprintf (stderr, "tst_wctrans : [ %d ] ret = %ld\n", rec + 1, + (long int) ret); + fprintf (stderr, " errno = %d\n", errno_save); + } + + TST_IF_RETURN (S_WCTRANS) + { + if (ret != 0) + { + Result (C_SUCCESS, S_WCTYPE, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCTYPE, CASE_3, + "should return non-0, but returned 0"); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wctype.c b/test/locale-mbwc/tst_wctype.c new file mode 100644 index 000000000..a203e4908 --- /dev/null +++ b/test/locale-mbwc/tst_wctype.c @@ -0,0 +1,48 @@ +/* + WCTYPE: wctype_t wctype (const char *class); +*/ + + +#define TST_FUNCTION wctype + +#include "tsp_common.c" +#include "dat_wctype.c" + +int +tst_wctype (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (wctype_t); + char *class; + + TST_DO_TEST (wctype) + { + TST_HEAD_LOCALE (wctype, S_WCTYPE); + TST_DO_REC (wctype) + { + TST_GET_ERRET (wctype); + class = TST_INPUT (wctype).class; + ret = wctype (class); + + if (debug_flg) + { + fprintf (stderr, "tst_wctype : [ %d ] ret = %ld\n", rec + 1, ret); + } + + TST_IF_RETURN (S_WCTYPE) + { + if (ret != 0) + { + Result (C_SUCCESS, S_WCTYPE, CASE_3, MS_PASSED); + } + else + { + err_count++; + Result (C_FAILURE, S_WCTYPE, CASE_3, + "should return non-0, but returned 0"); + } + } + } + } + + return err_count; +} diff --git a/test/locale-mbwc/tst_wcwidth.c b/test/locale-mbwc/tst_wcwidth.c new file mode 100644 index 000000000..6a5af6fa3 --- /dev/null +++ b/test/locale-mbwc/tst_wcwidth.c @@ -0,0 +1,38 @@ +/* + WCWIDTH: int wcwidth (wchar_t wc); +*/ + +#define TST_FUNCTION wcwidth + +#include "tsp_common.c" +#include "dat_wcwidth.c" + +int +tst_wcwidth (FILE * fp, int debug_flg) +{ + TST_DECL_VARS (int); + wchar_t wc; + + TST_DO_TEST (wcwidth) + { + TST_HEAD_LOCALE (wcwidth, S_WCWIDTH); + TST_DO_REC (wcwidth) + { + TST_GET_ERRET (wcwidth); + wc = TST_INPUT (wcwidth).wc; + ret = wcwidth (wc); + + if (debug_flg) + { + fprintf (stdout, "wcwidth() [ %s : %d ] ret = %d\n", locale, + rec + 1, ret); + } + + TST_IF_RETURN (S_WCWIDTH) + { + } + } + } + + return err_count; +} |