diff --git a/include/m_ctype.h b/include/m_ctype.h
index 998841c14d4bf90800ae3660317204181f51f9c7..9e29263ee54be684f978eb8b2c23fcfa1a49b690 100644
--- a/include/m_ctype.h
+++ b/include/m_ctype.h
@@ -26,6 +26,76 @@
 extern "C" {
 #endif
 
+
+#define CHARSET_DIR	"charsets/"
+
+typedef struct charset_info_st
+{
+    uint      number;
+    const char *name;
+    uchar    *ctype;
+    uchar    *to_lower;
+    uchar    *to_upper;
+    uchar    *sort_order;
+
+    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,
+                          char *, char *, uint *, uint *);
+
+    uint      mbmaxlen;
+    int     (*ismbchar)(const char *, const char *);
+    my_bool (*ismbhead)(uint);
+    int     (*mbcharlen)(uint);
+
+    /* Functions for case convertion */
+    void    (*caseup_str)(struct charset_info_st *, uchar *);
+    void    (*casedn_str)(struct charset_info_st *, uchar *);
+    void    (*caseup)(struct charset_info_st *, uchar *, uint);
+    void    (*casedn)(struct charset_info_st *, uchar *, uint);
+    
+    /* Functions for case comparison */
+    int  (*strcasecmp)(struct charset_info_st *, const uchar *, const uchar *);
+    int  (*strncasecmp)(struct charset_info_st *, const uchar *, const uchar *, uint);
+    
+} CHARSET_INFO;
+
+/* strings/ctype.c */
+extern CHARSET_INFO *default_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[];
+extern uint compiled_charset_number(const char *name);
+extern const char *compiled_charset_name(uint charset_number);
+
+#define MY_CHARSET_UNDEFINED 0
+#define MY_CHARSET_CURRENT (default_charset_info->number)
+
+/* declarations for simple charsets */
+extern int  my_strnxfrm_simple(CHARSET_INFO *, uchar *, const uchar *, int, int); 
+extern int  my_strnncoll_simple(CHARSET_INFO *, const uchar *, int, const uchar *, int);
+
+/* Functions for 8bit */
+extern void my_caseup_str_8bit(CHARSET_INFO *, uchar *);
+extern void my_casedn_str_8bit(CHARSET_INFO *, uchar *);
+extern void my_caseup_8bit(CHARSET_INFO *, uchar *, uint);
+extern void my_casedn_8bit(CHARSET_INFO *, uchar *, uint);
+
+extern int my_strcasecmp_8bit(CHARSET_INFO * cs, const uchar *, const uchar *);
+extern int my_strncasecmp_8bit(CHARSET_INFO * cs, const uchar *, const uchar *, uint);
+
+/* Functions for multibyte charsets */
+extern void my_caseup_str_mb(CHARSET_INFO *, uchar *);
+extern void my_casedn_str_mb(CHARSET_INFO *, uchar *);
+extern void my_caseup_mb(CHARSET_INFO *, uchar *, uint);
+extern void my_casedn_mb(CHARSET_INFO *, uchar *, uint);
+
+extern int my_strcasecmp_mb(CHARSET_INFO * cs,const uchar *, const uchar *);
+extern int my_strncasecmp_mb(CHARSET_INFO * cs,const uchar *, const uchar *t, uint);
+
 /* declarations for the big5 character set */
 extern uchar ctype_big5[], to_lower_big5[], to_upper_big5[], sort_order_big5[];
 extern int     my_strcoll_big5(const uchar *, const uchar *);
@@ -108,42 +178,6 @@ extern my_bool ismbhead_ujis(uint);
 extern int     mbcharlen_ujis(uint);
 
 
-#define CHARSET_DIR	"charsets/"
-
-typedef struct charset_info_st
-{
-    uint      number;
-    const char *name;
-    uchar    *ctype;
-    uchar    *to_lower;
-    uchar    *to_upper;
-    uchar    *sort_order;
-
-    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,
-                          char *, char *, uint *, uint *);
-
-    uint      mbmaxlen;
-    int     (*ismbchar)(const char *, const char *);
-    my_bool (*ismbhead)(uint);
-    int     (*mbcharlen)(uint);
-} CHARSET_INFO;
-
-/* strings/ctype.c */
-extern CHARSET_INFO *default_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[];
-extern uint compiled_charset_number(const char *name);
-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_
diff --git a/strings/ctype.c b/strings/ctype.c
index 4be87f9c62a02472227175156b67afec49cc170e..ab17a16bb548c192ce3a05e1e6dbaea540e22055 100644
--- a/strings/ctype.c
+++ b/strings/ctype.c
@@ -1975,7 +1975,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -1996,7 +1997,8 @@ CHARSET_INFO compiled_charsets[] = {
     2,      /* mbmaxlen */
     ismbchar_big5,
     ismbhead_big5,
-    mbcharlen_big5
+    mbcharlen_big5,
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2017,7 +2019,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2038,7 +2041,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2059,7 +2063,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2080,7 +2085,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2101,7 +2107,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2122,7 +2129,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2143,7 +2151,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2164,7 +2173,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2185,7 +2195,8 @@ CHARSET_INFO compiled_charsets[] = {
     2,      /* mbmaxlen */
     ismbchar_euc_kr,
     ismbhead_euc_kr,
-    mbcharlen_euc_kr
+    mbcharlen_euc_kr,
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2206,7 +2217,8 @@ CHARSET_INFO compiled_charsets[] = {
     2,      /* mbmaxlen */
     ismbchar_gb2312,
     ismbhead_gb2312,
-    mbcharlen_gb2312
+    mbcharlen_gb2312,
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2227,7 +2239,8 @@ CHARSET_INFO compiled_charsets[] = {
     2,      /* mbmaxlen */
     ismbchar_gbk,
     ismbhead_gbk,
-    mbcharlen_gbk
+    mbcharlen_gbk,
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2248,7 +2261,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2269,7 +2283,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2290,7 +2305,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2311,7 +2327,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2332,7 +2349,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2353,7 +2371,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2374,7 +2393,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2395,7 +2415,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2416,7 +2437,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2437,7 +2459,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2458,7 +2481,8 @@ CHARSET_INFO compiled_charsets[] = {
     2,      /* mbmaxlen */
     ismbchar_sjis,
     ismbhead_sjis,
-    mbcharlen_sjis
+    mbcharlen_sjis,
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2479,7 +2503,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2500,7 +2525,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2521,7 +2547,8 @@ CHARSET_INFO compiled_charsets[] = {
     3,      /* mbmaxlen */
     ismbchar_ujis,
     ismbhead_ujis,
-    mbcharlen_ujis
+    mbcharlen_ujis,
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2542,7 +2569,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2563,7 +2591,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2584,7 +2613,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2605,7 +2635,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2626,7 +2657,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,          /* mbmaxlen  */
     NULL,       /* ismbchar  */
     NULL,       /* ismbhead  */
-    NULL        /* mbcharlen */
+    NULL,       /* mbcharlen */
+    NULL,NULL,NULL,NULL,NULL,NULL
   },
 #endif
 
@@ -2646,7 +2678,8 @@ CHARSET_INFO compiled_charsets[] = {
     0,
     NULL,
     NULL,
-    NULL
+    NULL,
+    NULL,NULL,NULL,NULL,NULL,NULL
   }
 };