summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorunknown <monty@hundin.mysql.fi>2002-04-13 15:34:39 +0300
committerunknown <monty@hundin.mysql.fi>2002-04-13 15:34:39 +0300
commita0f6209e513af147ae9ab73e76e59be2dc7bbdd5 (patch)
tree6bb12842fb04d64fa854f04ec3d07da1e1f7c48b /include
parent965b47479c5741cfe27a26eef8d649aa4252a029 (diff)
parent71db022d084d86850be710dedd722e3289da2e0f (diff)
downloadmariadb-git-a0f6209e513af147ae9ab73e76e59be2dc7bbdd5.tar.gz
merge
BitKeeper/etc/ignore: auto-union BitKeeper/etc/logging_ok: auto-union BUILD/FINISH.sh: Auto merged BUILD/SETUP.sh: Auto merged BUILD/compile-pentium-debug: Auto merged acconfig.h: Auto merged client/mysql.cc: Auto merged client/mysqldump.c: Auto merged client/mysqltest.c: Auto merged heap/hp_rfirst.c: Auto merged heap/hp_rnext.c: Auto merged include/my_sys.h: Auto merged include/myisam.h: Auto merged libmysql/Makefile.shared: Auto merged myisam/mi_write.c: Auto merged mysql-test/mysql-test-run.sh: Auto merged mysql-test/r/heap.result: Auto merged mysql-test/r/select_found.result: Auto merged mysql-test/r/union.result: Auto merged mysql-test/t/heap.test: Auto merged mysql-test/t/select_found.test: Auto merged mysql-test/t/union.test: Auto merged mysys/mf_iocache2.c: Auto merged mysys/my_vsnprintf.c: Auto merged sql/convert.cc: Auto merged sql/field.cc: Auto merged sql/field.h: Auto merged sql/filesort.cc: Auto merged sql/ha_myisam.cc: Auto merged sql/item.cc: Auto merged sql/item.h: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_func.cc: Auto merged sql/item_func.h: Auto merged sql/item_strfunc.cc: Auto merged sql/item_timefunc.cc: Auto merged sql/lex.h: Auto merged sql/log.cc: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/opt_range.cc: Auto merged sql/opt_range.h: Auto merged sql/opt_sum.cc: Auto merged sql/slave.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_cache.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_db.cc: Auto merged sql/sql_handler.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_parse.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_union.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/structs.h: Auto merged sql/table.cc: Auto merged sql/table.h: Auto merged strings/Makefile.am: Auto merged
Diffstat (limited to 'include')
-rw-r--r--include/hash.h12
-rw-r--r--include/m_ctype.h312
-rw-r--r--include/my_sys.h16
-rw-r--r--include/myisam.h2
4 files changed, 246 insertions, 96 deletions
diff --git a/include/hash.h b/include/hash.h
index e9c8c73c05b..a4afe03fb59 100644
--- a/include/hash.h
+++ b/include/hash.h
@@ -40,13 +40,15 @@ typedef struct st_hash {
DYNAMIC_ARRAY array; /* Place for hash_keys */
hash_get_key get_key;
void (*free)(void *);
- uint (*calc_hashnr)(const byte *key,uint length);
+ uint (*calc_hashnr)(CHARSET_INFO *cs, const byte *key,uint length);
+ CHARSET_INFO *charset;
} HASH;
-#define hash_init(A,B,C,D,E,F,G) _hash_init(A,B,C,D,E,F,G CALLER_INFO)
-my_bool _hash_init(HASH *hash,uint default_array_elements, uint key_offset,
- uint key_length, hash_get_key get_key,
- void (*free_element)(void*), uint flags CALLER_INFO_PROTO);
+#define hash_init(A,B,C,D,E,F,G) _hash_init(A,B,C,D,E,F,G, H CALLER_INFO)
+my_bool _hash_init(HASH *hash, CHARSET_INFO *charset,
+ uint default_array_elements, uint key_offset,
+ uint key_length, hash_get_key get_key,
+ void (*free_element)(void*), uint flags CALLER_INFO_PROTO);
void hash_free(HASH *tree);
byte *hash_element(HASH *hash,uint idx);
gptr hash_search(HASH *info,const byte *key,uint length);
diff --git a/include/m_ctype.h b/include/m_ctype.h
index fc983d1d580..3b095b41d4f 100644
--- a/include/m_ctype.h
+++ b/include/m_ctype.h
@@ -26,8 +26,29 @@
extern "C" {
#endif
+
#define CHARSET_DIR "charsets/"
+#define my_wc_t ulong
+
+typedef struct unicase_info_st {
+ uint16 toupper;
+ uint16 tolower;
+ uint16 sort;
+} MY_UNICASE_INFO;
+
+#define MY_CS_ILSEQ 0
+#define MY_CS_ILUNI 0
+#define MY_CS_TOOSMALL -1
+#define MY_CS_TOOFEW(n) (-1-(n))
+
+typedef struct my_uni_idx_st {
+ uint16 from;
+ uint16 to;
+ uchar *tab;
+} MY_UNI_IDX;
+
+
typedef struct charset_info_st
{
uint number;
@@ -36,23 +57,47 @@ typedef struct charset_info_st
uchar *to_lower;
uchar *to_upper;
uchar *sort_order;
-
+ uint16 *tab_to_uni;
+ MY_UNI_IDX *tab_from_uni;
+
+ /* Collation routines */
uint strxfrm_multiply;
- int (*strcoll)(const uchar *, const uchar *);
- int (*strxfrm)(uchar *, const uchar *, int);
- int (*strnncoll)(const uchar *, int, const uchar *, int);
- int (*strnxfrm)(uchar *, const uchar *, int, int);
- my_bool (*like_range)(const char *, uint, pchar, uint,
+ int (*strnncoll)(struct charset_info_st *,
+ const uchar *, uint, const uchar *, uint);
+ int (*strnxfrm)(struct charset_info_st *,
+ uchar *, uint, const uchar *, uint);
+ my_bool (*like_range)(struct charset_info_st *,
+ const char *, uint, pchar, uint,
char *, char *, uint *, uint *);
-
+
+ /* Multibyte routines */
uint mbmaxlen;
- int (*ismbchar)(const char *, const char *);
- my_bool (*ismbhead)(uint);
- int (*mbcharlen)(uint);
+ int (*ismbchar)(struct charset_info_st *, const char *, const char *);
+ my_bool (*ismbhead)(struct charset_info_st *, uint);
+ int (*mbcharlen)(struct charset_info_st *, uint);
+
+ /* Unicode convertion */
+ int (*mb_wc)(struct charset_info_st *cs,my_wc_t *wc,
+ const unsigned char *s,const unsigned char *e);
+ int (*wc_mb)(struct charset_info_st *cs,my_wc_t wc,
+ unsigned char *s,unsigned char *e);
+
+ /* Functions for case convertion */
+ void (*caseup_str)(struct charset_info_st *, char *);
+ void (*casedn_str)(struct charset_info_st *, char *);
+ void (*caseup)(struct charset_info_st *, char *, uint);
+ void (*casedn)(struct charset_info_st *, char *, uint);
+
+ /* Functions for case comparison */
+ int (*strcasecmp)(struct charset_info_st *, const char *, const char *);
+ int (*strncasecmp)(struct charset_info_st *, const char *, const char *, uint);
+
+ char max_sort_char; /* For LIKE otimization */
} CHARSET_INFO;
/* strings/ctype.c */
extern CHARSET_INFO *default_charset_info;
+extern CHARSET_INFO *system_charset_info;
extern CHARSET_INFO *find_compiled_charset(uint cs_number);
extern CHARSET_INFO *find_compiled_charset_by_name(const char *name);
extern CHARSET_INFO compiled_charsets[];
@@ -62,32 +107,160 @@ extern const char *compiled_charset_name(uint charset_number);
#define MY_CHARSET_UNDEFINED 0
#define MY_CHARSET_CURRENT (default_charset_info->number)
-/* Don't include std ctype.h when this is included */
-#define _CTYPE_H
-#define _CTYPE_H_
-#define _CTYPE_INCLUDED
-#define __CTYPE_INCLUDED
-#define _CTYPE_USING /* Don't put names in global namespace. */
-
-/* Fix things, if ctype.h would have been included before */
-#undef toupper
-#undef _toupper
-#undef _tolower
-#undef toupper
-#undef tolower
-#undef isalpha
-#undef isupper
-#undef islower
-#undef isdigit
-#undef isxdigit
-#undef isalnum
-#undef isspace
-#undef ispunct
-#undef isprint
-#undef isgraph
-#undef iscntrl
-#undef isascii
-#undef toascii
+/* declarations for simple charsets */
+extern int my_strnxfrm_simple(CHARSET_INFO *, char *, uint, const char *, uint);
+extern int my_strnncoll_simple(CHARSET_INFO *, const char *, uint, const char *, uint);
+
+/* Functions for 8bit */
+extern void my_caseup_str_8bit(CHARSET_INFO *, char *);
+extern void my_casedn_str_8bit(CHARSET_INFO *, char *);
+extern void my_caseup_8bit(CHARSET_INFO *, char *, uint);
+extern void my_casedn_8bit(CHARSET_INFO *, char *, uint);
+
+extern int my_strcasecmp_8bit(CHARSET_INFO * cs, const char *, const char *);
+extern int my_strncasecmp_8bit(CHARSET_INFO * cs, const char *, const char *, uint);
+
+int my_mb_wc_8bit(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e);
+int my_wc_mb_8bit(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e);
+
+
+#ifdef USE_MB
+/* Functions for multibyte charsets */
+extern void my_caseup_str_mb(CHARSET_INFO *, char *);
+extern void my_casedn_str_mb(CHARSET_INFO *, char *);
+extern void my_caseup_mb(CHARSET_INFO *, char *, uint);
+extern void my_casedn_mb(CHARSET_INFO *, char *, uint);
+extern int my_strcasecmp_mb(CHARSET_INFO * cs,const char *, const char *);
+extern int my_strncasecmp_mb(CHARSET_INFO * cs,const char *, const char *t, uint);
+#endif
+
+#ifdef HAVE_CHARSET_big5
+/* declarations for the big5 character set */
+extern uchar ctype_big5[], to_lower_big5[], to_upper_big5[], sort_order_big5[];
+extern int my_strnncoll_big5(CHARSET_INFO *,const uchar *, uint, const uchar *, uint);
+extern int my_strnxfrm_big5(CHARSET_INFO *,uchar *, uint, const uchar *, uint);
+extern my_bool my_like_range_big5(CHARSET_INFO *,const char *, uint, pchar, uint,
+ char *, char *, uint *, uint *);
+extern int ismbchar_big5(CHARSET_INFO *, const char *, const char *);
+extern my_bool ismbhead_big5(CHARSET_INFO *, uint);
+extern int mbcharlen_big5(CHARSET_INFO *, uint);
+int my_mb_wc_big5(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e);
+int my_wc_mb_big5(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e);
+#endif
+
+#ifdef HAVE_CHARSET_czech
+/* declarations for the czech character set */
+extern uchar ctype_czech[], to_lower_czech[], to_upper_czech[], sort_order_czech[];
+extern int my_strnncoll_czech(CHARSET_INFO *, const uchar *, uint, const uchar *, uint);
+extern int my_strnxfrm_czech(CHARSET_INFO *, uchar *, uint, const uchar *, uint);
+extern my_bool my_like_range_czech(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[];
+extern int ismbchar_euc_kr(CHARSET_INFO *, const char *, const char *);
+extern my_bool ismbhead_euc_kr(CHARSET_INFO *, uint);
+extern int mbcharlen_euc_kr(CHARSET_INFO *, uint);
+int my_mb_wc_euc_kr(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e);
+int my_wc_mb_euc_kr(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e);
+#endif
+
+#ifdef HAVE_CHARSET_gb2312
+/* declarations for the gb2312 character set */
+extern uchar ctype_gb2312[], to_lower_gb2312[], to_upper_gb2312[], sort_order_gb2312[];
+extern int ismbchar_gb2312(CHARSET_INFO *, const char *, const char *);
+extern my_bool ismbhead_gb2312(CHARSET_INFO *, uint);
+extern int mbcharlen_gb2312(CHARSET_INFO *, uint);
+int my_mb_wc_gb2312(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e);
+int my_wc_mb_gb2312(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e);
+#endif
+
+#ifdef HAVE_CHARSET_gbk
+/* declarations for the gbk character set */
+extern uchar ctype_gbk[], to_lower_gbk[], to_upper_gbk[], sort_order_gbk[];
+extern int my_strnncoll_gbk(CHARSET_INFO *, const uchar *, uint, const uchar *, uint);
+extern int my_strnxfrm_gbk(CHARSET_INFO *, uchar *, uint, const uchar *, uint);
+extern my_bool my_like_range_gbk(CHARSET_INFO *, const char *, uint, pchar, uint,
+ char *, char *, uint *, uint *);
+extern int ismbchar_gbk(CHARSET_INFO *, const char *, const char *);
+extern my_bool ismbhead_gbk(CHARSET_INFO *, uint);
+extern int mbcharlen_gbk(CHARSET_INFO *, uint);
+int my_mb_wc_gbk(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e);
+int my_wc_mb_gbk(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e);
+#endif
+
+#ifdef HAVE_CHARSET_latin1_de
+/* declarations for the latin1_de character set */
+extern uchar ctype_latin1_de[], to_lower_latin1_de[], to_upper_latin1_de[], sort_order_latin1_de[];
+extern int my_strnncoll_latin1_de(CHARSET_INFO *, const uchar *, uint, const uchar *, uint);
+extern int my_strnxfrm_latin1_de(CHARSET_INFO *, uchar *, uint, const uchar *, uint);
+extern my_bool my_like_range_latin1_de(CHARSET_INFO *, const char *, uint, pchar, uint,
+ char *, char *, uint *, uint *);
+#endif
+
+#ifdef HAVE_CHARSET_sjis
+/* declarations for the sjis character set */
+extern uchar ctype_sjis[], to_lower_sjis[], to_upper_sjis[], sort_order_sjis[];
+extern int my_strnncoll_sjis(CHARSET_INFO *, const uchar *, uint, const uchar *, uint);
+extern int my_strnxfrm_sjis(CHARSET_INFO *, uchar *, uint, const uchar *, uint);
+extern my_bool my_like_range_sjis(CHARSET_INFO *, const char *, uint, pchar, uint,
+ char *, char *, uint *, uint *);
+extern int ismbchar_sjis(CHARSET_INFO *, const char *, const char *);
+extern my_bool ismbhead_sjis(CHARSET_INFO *, uint);
+extern int mbcharlen_sjis(CHARSET_INFO *, uint);
+int my_mb_wc_sjis(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e);
+int my_wc_mb_sjis(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e);
+#endif
+
+#ifdef HAVE_CHARSET_tis620
+/* declarations for the tis620 character set */
+extern uchar ctype_tis620[], to_lower_tis620[], to_upper_tis620[], sort_order_tis620[];
+extern int my_strnncoll_tis620(CHARSET_INFO *, const uchar *, uint, const uchar *, uint);
+extern int my_strnxfrm_tis620(CHARSET_INFO *, uchar *, uint, const uchar *, uint);
+extern my_bool my_like_range_tis620(CHARSET_INFO *, const char *, uint, pchar, uint,
+ char *, char *, uint *, uint *);
+#endif
+
+#ifdef HAVE_CHARSET_ujis
+/* declarations for the ujis character set */
+extern uchar ctype_ujis[], to_lower_ujis[], to_upper_ujis[], sort_order_ujis[];
+extern int ismbchar_ujis(CHARSET_INFO *, const char *, const char *);
+extern my_bool ismbhead_ujis(CHARSET_INFO *, uint);
+extern int mbcharlen_ujis(CHARSET_INFO *, uint);
+int my_mb_wc_euc_jp(CHARSET_INFO *cs,my_wc_t *wc, const uchar *s,const uchar *e);
+int my_wc_mb_euc_jp(CHARSET_INFO *cs,my_wc_t wc, uchar *s, uchar *e);
+#endif
+
+#ifdef HAVE_CHARSET_utf8
+
+extern uchar ctype_utf8[];
+extern uchar to_lower_utf8[];
+extern uchar to_upper_utf8[];
+
+int my_strnncoll_utf8(CHARSET_INFO *cs,
+ const uchar *s, uint s_len, const uchar *t, uint t_len);
+
+int my_strnxfrm_utf8(CHARSET_INFO *cs,
+ uchar *dest, uint destlen, const uchar *src, uint srclen);
+
+int my_ismbchar_utf8(CHARSET_INFO *cs, const char *b, const char *e);
+my_bool my_ismbhead_utf8(CHARSET_INFO * cs, uint ch);
+int my_mbcharlen_utf8(CHARSET_INFO *cs, uint c);
+
+void my_caseup_str_utf8(CHARSET_INFO * cs, char * s);
+void my_casedn_str_utf8(CHARSET_INFO *cs, char * s);
+void my_caseup_utf8(CHARSET_INFO *cs, char *s, uint len);
+void my_casedn_utf8(CHARSET_INFO *cs, char *s, uint len);
+
+int my_strcasecmp_utf8(CHARSET_INFO *cs, const char *s, const char *t);
+int my_strncasecmp_utf8(CHARSET_INFO *cs, const char *s,const char *t,uint l);
+
+int my_utf8_uni (CHARSET_INFO *cs, my_wc_t *p, const uchar *s, const uchar *e);
+int my_uni_utf8 (CHARSET_INFO *cs, my_wc_t wc, uchar *b, uchar *e);
+#endif
#define _U 01 /* Upper case */
#define _L 02 /* Lower case */
@@ -98,34 +271,13 @@ extern const char *compiled_charset_name(uint charset_number);
#define _B 0100 /* Blank */
#define _X 0200 /* heXadecimal digit */
-#define my_ctype (default_charset_info->ctype)
-#define my_to_upper (default_charset_info->to_upper)
-#define my_to_lower (default_charset_info->to_lower)
-#define my_sort_order (default_charset_info->sort_order)
-
-#define _toupper(c) (char) my_to_upper[(uchar) (c)]
-#define _tolower(c) (char) my_to_lower[(uchar) (c)]
-#define toupper(c) (char) my_to_upper[(uchar) (c)]
-#define tolower(c) (char) my_to_lower[(uchar) (c)]
-
-#define isalpha(c) ((my_ctype+1)[(uchar) (c)] & (_U | _L))
-#define isupper(c) ((my_ctype+1)[(uchar) (c)] & _U)
-#define islower(c) ((my_ctype+1)[(uchar) (c)] & _L)
-#define isdigit(c) ((my_ctype+1)[(uchar) (c)] & _NMR)
-#define isxdigit(c) ((my_ctype+1)[(uchar) (c)] & _X)
-#define isalnum(c) ((my_ctype+1)[(uchar) (c)] & (_U | _L | _NMR))
-#define isspace(c) ((my_ctype+1)[(uchar) (c)] & _SPC)
-#define ispunct(c) ((my_ctype+1)[(uchar) (c)] & _PNT)
-#define isprint(c) ((my_ctype+1)[(uchar) (c)] & (_PNT | _U | _L | _NMR | _B))
-#define isgraph(c) ((my_ctype+1)[(uchar) (c)] & (_PNT | _U | _L | _NMR))
-#define iscntrl(c) ((my_ctype+1)[(uchar) (c)] & _CTR)
-#define isascii(c) (!((c) & ~0177))
-#define toascii(c) ((c) & 0177)
-
-#ifdef ctype
-#undef ctype
-#endif /* ctype */
+#define my_isascii(c) (!((c) & ~0177))
+#define my_toascii(c) ((c) & 0177)
+#define my_tocntrl(c) ((c) & 31)
+#define my_toprint(c) ((c) | 64)
+#define my_toupper(s,c) (char) ((s)->to_upper[(uchar) (c)])
+#define my_tolower(s,c) (char) ((s)->to_lower[(uchar) (c)])
#define my_isalpha(s, c) (((s)->ctype+1)[(uchar) (c)] & (_U | _L))
#define my_isupper(s, c) (((s)->ctype+1)[(uchar) (c)] & _U)
#define my_islower(s, c) (((s)->ctype+1)[(uchar) (c)] & _L)
@@ -138,26 +290,28 @@ extern const char *compiled_charset_name(uint charset_number);
#define my_isgraph(s, c) (((s)->ctype+1)[(uchar) (c)] & (_PNT | _U | _L | _NMR))
#define my_iscntrl(s, c) (((s)->ctype+1)[(uchar) (c)] & _CTR)
-#define use_strcoll(s) ((s)->strcoll != NULL)
-#define MY_STRXFRM_MULTIPLY (default_charset_info->strxfrm_multiply)
-#define my_strnxfrm(s, a, b, c, d) ((s)->strnxfrm((a), (b), (c), (d)))
-#define my_strnncoll(s, a, b, c, d) ((s)->strnncoll((a), (b), (c), (d)))
-#define my_strxfrm(s, a, b, c, d) ((s)->strnxfrm((a), (b), (c)))
-#define my_strcoll(s, a, b) ((s)->strcoll((a), (b)))
+/* Some macros that should be cleaned up a little */
+#define my_isvar(s,c) (my_isalnum(s,c) || (c) == '_')
+#define my_isvar_start(s,c) (my_isalpha(s,c) || (c) == '_')
+
+#define use_strcoll(s) ((s)->strnncoll != NULL)
+#define my_strnxfrm(s, a, b, c, d) ((s)->strnxfrm((s), (a), (b), (c), (d)))
+#define my_strnncoll(s, a, b, c, d) ((s)->strnncoll((s), (a), (b), (c), (d)))
#define my_like_range(s, a, b, c, d, e, f, g, h) \
- ((s)->like_range((a), (b), (c), (d), (e), (f), (g), (h)))
+ ((s)->like_range((s), (a), (b), (c), (d), (e), (f), (g), (h)))
#define use_mb(s) ((s)->ismbchar != NULL)
-#define MBMAXLEN (default_charset_info->mbmaxlen)
-#define my_ismbchar(s, a, b) ((s)->ismbchar((a), (b)))
-#define my_ismbhead(s, a) ((s)->ismbhead((a)))
-#define my_mbcharlen(s, a) ((s)->mbcharlen((a)))
+#define my_ismbchar(s, a, b) ((s)->ismbchar((s), (a), (b)))
+#define my_ismbhead(s, a) ((s)->ismbhead((s), (a)))
+#define my_mbcharlen(s, a) ((s)->mbcharlen((s),(a)))
+
+#define my_caseup(s, a, l) ((s)->caseup((s), (a), (l)))
+#define my_casedn(s, a, l) ((s)->casedn((s), (a), (l)))
+#define my_caseup_str(s, a) ((s)->caseup_str((s), (a)))
+#define my_casedn_str(s, a) ((s)->casedn_str((s), (a)))
+#define my_strcasecmp(s, a, b) ((s)->strcasecmp((s), (a), (b)))
+#define my_strncasecmp(s, a, b, l) ((s)->strncasecmp((s), (a), (b), (l)))
-/* Some macros that should be cleaned up a little */
-#define isvar(c) (isalnum(c) || (c) == '_')
-#define isvar_start(c) (isalpha(c) || (c) == '_')
-#define tocntrl(c) ((c) & 31)
-#define toprint(c) ((c) | 64)
/* XXX: still need to take care of this one */
#ifdef MY_CHARSET_TIS620
diff --git a/include/my_sys.h b/include/my_sys.h
index 5867368198f..3b69092d5ae 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -572,11 +572,7 @@ extern void allow_break(void);
#endif
extern void my_remember_signal(int signal_number,sig_handler (*func)(int));
-extern void caseup(my_string str,uint length);
-extern void casedn(my_string str,uint length);
-extern void caseup_str(my_string str);
-extern void casedn_str(my_string str);
-extern void case_sort(my_string str,uint length);
+extern void case_sort(CHARSET_INFO *cs, my_string str,uint length);
extern uint dirname_part(my_string to,const char *name);
extern uint dirname_length(const char *name);
#define base_name(A) (A+dirname_length(A))
@@ -601,18 +597,14 @@ extern my_string my_path(my_string to,const char *progname,
extern my_string my_load_path(my_string to, const char *path,
const char *own_path_prefix);
extern int wild_compare(const char *str,const char *wildstr);
-extern my_string my_strcasestr(const char *src,const char *suffix);
-extern int my_strcasecmp(const char *s,const char *t);
-extern int my_strsortcmp(const char *s,const char *t);
-extern int my_casecmp(const char *s,const char *t,uint length);
-extern int my_sortcmp(const char *s,const char *t,uint length);
-extern int my_sortncmp(const char *s,uint s_len, const char *t,uint t_len);
+extern int my_sortcmp(CHARSET_INFO *cs, const char *s,const char *t,uint length);
+extern int my_sortncmp(CHARSET_INFO *cs, const char *s,uint s_len, const char *t,uint t_len);
extern WF_PACK *wf_comp(my_string str);
extern int wf_test(struct wild_file_pack *wf_pack,const char *name);
extern void wf_end(struct wild_file_pack *buffer);
extern size_s stripp_sp(my_string str);
extern void get_date(my_string to,int timeflag,time_t use_time);
-extern void soundex(my_string out_pntr, my_string in_pntr,pbool remove_garbage);
+extern void soundex(CHARSET_INFO *, my_string out_pntr, my_string in_pntr,pbool remove_garbage);
extern int init_record_cache(RECORD_CACHE *info,uint cachesize,File file,
uint reclength,enum cache_type type,
pbool use_async_io);
diff --git a/include/myisam.h b/include/myisam.h
index b7010dab814..ecf34a7e156 100644
--- a/include/myisam.h
+++ b/include/myisam.h
@@ -147,6 +147,8 @@ typedef struct st_mi_keydef /* Key definition with open & info */
struct st_mi_s_param *s_temp);
void (*store_key)(struct st_mi_keydef *keyinfo, uchar *key_pos,
struct st_mi_s_param *s_temp);
+ int (*ck_insert)(struct st_myisam_info *inf, uint k_nr, uchar *k, uint klen);
+ int (*ck_delete)(struct st_myisam_info *inf, uint k_nr, uchar *k, uint klen);
} MI_KEYDEF;