diff options
-rw-r--r-- | acconfig.h | 1 | ||||
-rw-r--r-- | configure.in | 7 | ||||
-rw-r--r-- | include/m_ctype.h | 15 | ||||
-rw-r--r-- | libmysql/Makefile.shared | 2 | ||||
-rw-r--r-- | sql/share/charsets/Index | 1 | ||||
-rw-r--r-- | strings/Makefile.am | 8 | ||||
-rw-r--r-- | strings/ctype.c | 33 |
7 files changed, 60 insertions, 7 deletions
diff --git a/acconfig.h b/acconfig.h index 6ff8958670b..bcf07015534 100644 --- a/acconfig.h +++ b/acconfig.h @@ -98,6 +98,7 @@ #undef HAVE_CHARSET_usa7 #undef HAVE_CHARSET_utf8 #undef HAVE_CHARSET_win1250 +#undef HAVE_CHARSET_win1250ch #undef HAVE_CHARSET_win1251ukr #undef HAVE_CHARSET_win1251 diff --git a/configure.in b/configure.in index 669fec435cb..6e303f32e9b 100644 --- a/configure.in +++ b/configure.in @@ -1933,9 +1933,9 @@ CHARSETS_AVAILABLE="armscii8 big5 cp1251 cp1257 croat czech danish dec8 dos estonia euc_kr gb2312 gbk german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr latin1 latin1_de latin2 latin5 sjis swe7 tis620 ujis - usa7 utf8 win1250 win1251ukr" + usa7 utf8 win1250 win1250ch win1251ukr" CHARSETS_DEPRECATED="win1251" -CHARSETS_COMPLEX="big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis utf8" +CHARSETS_COMPLEX="big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis utf8 win1250ch" DEFAULT_CHARSET=latin1 AC_DIVERT_POP @@ -2071,6 +2071,9 @@ do win1250) AC_DEFINE(HAVE_CHARSET_win1250) ;; + win1250ch) + AC_DEFINE(HAVE_CHARSET_win1250ch) + ;; win1251) AC_DEFINE(HAVE_CHARSET_win1251) ;; diff --git a/include/m_ctype.h b/include/m_ctype.h index 3b095b41d4f..1dad253e126 100644 --- a/include/m_ctype.h +++ b/include/m_ctype.h @@ -158,6 +158,21 @@ extern my_bool my_like_range_czech(CHARSET_INFO *, char *, char *, uint *, uint *); #endif + +#ifdef HAVE_CHARSET_win1250ch +/* declarations for the win1250ch character set */ +extern uchar ctype_win1250ch[]; +extern uchar to_lower_win1250ch[]; +extern uchar to_upper_win1250ch[]; +extern uchar sort_order_win1250ch[]; +extern int my_strnncoll_win1250ch(CHARSET_INFO *, const uchar *, uint, const uchar *, uint); +extern int my_strnxfrm_win1250ch(CHARSET_INFO *, uchar *, uint, const uchar *, uint); +extern my_bool my_like_range_win1250ch(CHARSET_INFO *, + const char *, uint, pchar, uint, + char *, char *, uint *, uint *); +#endif + + #ifdef HAVE_CHARSET_euc_kr /* declarations for the euc_kr character set */ extern uchar ctype_euc_kr[], to_lower_euc_kr[], to_upper_euc_kr[], sort_order_euc_kr[]; diff --git a/libmysql/Makefile.shared b/libmysql/Makefile.shared index 2ff4a68cb7e..5835fde8643 100644 --- a/libmysql/Makefile.shared +++ b/libmysql/Makefile.shared @@ -39,7 +39,7 @@ mystringsobjects = strmov.lo strxmov.lo strxnmov.lo strnmov.lo \ bchange.lo bmove.lo bmove_upp.lo longlong2str.lo \ strtoull.lo strtoll.lo llstr.lo \ ctype.lo ctype-simple.lo ctype-mb.lo \ - ctype-big5.lo ctype-czech.lo ctype-euc_kr.lo \ + ctype-big5.lo ctype-czech.lo ctype-euc_kr.lo ctype-win1250ch.lo\ ctype-gb2312.lo ctype-gbk.lo ctype-latin1_de.lo \ ctype-sjis.lo ctype-tis620.lo ctype-ujis.lo ctype-utf8.lo diff --git a/sql/share/charsets/Index b/sql/share/charsets/Index index 565b98a1c60..075cdc9872b 100644 --- a/sql/share/charsets/Index +++ b/sql/share/charsets/Index @@ -38,3 +38,4 @@ latin5 30 latin1_de 31 armscii8 32 utf8 33 +win1250ch 34 diff --git a/strings/Makefile.am b/strings/Makefile.am index 1b925036670..34f7b85c1e8 100644 --- a/strings/Makefile.am +++ b/strings/Makefile.am @@ -22,26 +22,26 @@ pkglib_LIBRARIES = libmystrings.a # Exact one of ASSEMBLER_X if ASSEMBLER_x86 ASRCS = strings-x86.s longlong2str-x86.s -CSRCS = bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c atof.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-latin1_de.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c +CSRCS = bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c atof.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-latin1_de.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-win1250ch.c else if ASSEMBLER_sparc # These file MUST all be on the same line!! Otherwise automake # generats a very broken makefile ASRCS = bmove_upp-sparc.s strappend-sparc.s strend-sparc.s strinstr-sparc.s strmake-sparc.s strmov-sparc.s strnmov-sparc.s strstr-sparc.s strxmov-sparc.s -CSRCS = strcont.c strfill.c strcend.c is_prefix.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c atof.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-latin1_de.c ctype-sjis.c ctype-tis620.c ctype-ujis.cctype-utf8.c +CSRCS = strcont.c strfill.c strcend.c is_prefix.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c atof.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-latin1_de.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-win1250ch.c else #no assembler ASRCS = # These file MUST all be on the same line!! Otherwise automake # generats a very broken makefile -CSRCS = strxmov.c bmove_upp.c strappend.c strcont.c strend.c strfill.c strcend.c is_prefix.c strstr.c strinstr.c strmake.c strnmov.c strmov.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c atof.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-latin1_de.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c +CSRCS = strxmov.c bmove_upp.c strappend.c strcont.c strend.c strfill.c strcend.c is_prefix.c strstr.c strinstr.c strmake.c strnmov.c strmov.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c atof.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-latin1_de.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-win1250ch.c endif endif libmystrings_a_SOURCES = $(ASRCS) $(CSRCS) noinst_PROGRAMS = conf_to_src # Default charset definitions -EXTRA_DIST = ctype-big5.c ctype-czech.c ctype-euc_kr.c \ +EXTRA_DIST = ctype-big5.c ctype-czech.c ctype-euc_kr.c ctype-win1250ch.c \ ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-utf8.c \ ctype-tis620.c ctype-ujis.c ctype-latin1_de.c \ strto.c strings-x86.s longlong2str-x86.s \ diff --git a/strings/ctype.c b/strings/ctype.c index 37f9b9bbcb9..fa2937eec81 100644 --- a/strings/ctype.c +++ b/strings/ctype.c @@ -2527,6 +2527,9 @@ static uchar sort_order_win1250[] = { 88, 65, 65, 65, 65, 80, 69, 67, 68, 73, 73, 73, 73, 77, 77, 70, 71, 83, 83, 85, 85, 85, 85,247, 88, 92, 92, 92, 92, 96, 91,255 }; +#endif + +#if defined(HAVE_CHARSET_win1250)||defined(HAVE_CHARSET_win1250ch) static uint16 tab_cp1250_uni[256]={ 0,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, @@ -3790,6 +3793,36 @@ CHARSET_INFO compiled_charsets[] = { }, #endif +#ifdef HAVE_CHARSET_win1250ch + { + 34, /* number */ + "win1250ch", /* name */ + ctype_win1250ch, + to_lower_win1250ch, + to_upper_win1250ch, + sort_order_win1250ch, + tab_cp1250_uni, /* tab_to_uni */ + idx_uni_cp1250, /* tab_from_uni */ + 2, /* strxfrm_multiply */ + my_strnncoll_win1250ch, + my_strnxfrm_win1250ch, + my_like_range_win1250ch, + 0, /* mbmaxlen */ + NULL, /* ismbchar */ + NULL, /* ismbhead */ + NULL, /* mbcharlen */ + my_mb_wc_8bit, /* mb_wc */ + my_wc_mb_8bit, /* wc_mb */ + my_caseup_str_8bit, + my_casedn_str_8bit, + my_caseup_8bit, + my_casedn_8bit, + my_strcasecmp_8bit, + my_strncasecmp_8bit, + 0 + }, +#endif + { 0, /* end-of-list marker */ NullS, |