summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--acconfig.h1
-rw-r--r--configure.in7
-rw-r--r--include/m_ctype.h15
-rw-r--r--libmysql/Makefile.shared2
-rw-r--r--sql/share/charsets/Index1
-rw-r--r--strings/Makefile.am8
-rw-r--r--strings/ctype.c33
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,