mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 02:51:44 +01:00
Merge mysql.com:/home/pz/mysql/mysql-4.1-root
into mysql.com:/home/pz/mysql/mysql-4.1
This commit is contained in:
commit
2ea7aeb1db
15 changed files with 914 additions and 809 deletions
|
@ -49,6 +49,9 @@ typedef struct unicase_info_st {
|
|||
#define MY_CS_INDEX 4 /* sets listed in the Index file */
|
||||
#define MY_CS_LOADED 8 /* sets that are currently loaded */
|
||||
|
||||
#define MY_CHARSET_UNDEFINED 0
|
||||
#define MY_CHARSET_CURRENT (default_charset_info->number)
|
||||
|
||||
|
||||
typedef struct my_uni_idx_st {
|
||||
uint16 from;
|
||||
|
@ -112,18 +115,12 @@ typedef struct charset_info_st
|
|||
char max_sort_char; /* For LIKE optimization */
|
||||
} 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[];
|
||||
extern CHARSET_INFO all_charsets[256];
|
||||
extern uint compiled_charset_number(const char *name);
|
||||
extern const char *compiled_charset_name(uint charset_number);
|
||||
extern CHARSET_INFO *all_charsets[256];
|
||||
extern my_bool init_compiled_charsets(myf flags);
|
||||
|
||||
#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 *, uint, const uchar *, uint);
|
||||
|
@ -153,185 +150,6 @@ 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_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[];
|
||||
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);
|
||||
|
||||
uint my_hash_caseup_utf8(struct charset_info_st *cs, const byte *key, uint len);
|
||||
void my_hash_sort_utf8(struct charset_info_st *cs, const uchar *key, uint len, ulong *nr1, ulong *nr2);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef HAVE_CHARSET_ucs2
|
||||
|
||||
extern uchar ctype_ucs2[];
|
||||
extern uchar to_lower_ucs2[];
|
||||
extern uchar to_upper_ucs2[];
|
||||
|
||||
int my_strnncoll_ucs2(CHARSET_INFO *cs,
|
||||
const uchar *s, uint s_len, const uchar *t, uint t_len);
|
||||
|
||||
int my_strnxfrm_ucs2(CHARSET_INFO *cs,
|
||||
uchar *dest, uint destlen, const uchar *src, uint srclen);
|
||||
|
||||
int my_ismbchar_ucs2(CHARSET_INFO *cs, const char *b, const char *e);
|
||||
my_bool my_ismbhead_ucs2(CHARSET_INFO * cs, uint ch);
|
||||
int my_mbcharlen_ucs2(CHARSET_INFO *cs, uint c);
|
||||
|
||||
void my_caseup_str_ucs2(CHARSET_INFO * cs, char * s);
|
||||
void my_casedn_str_ucs2(CHARSET_INFO *cs, char * s);
|
||||
void my_caseup_ucs2(CHARSET_INFO *cs, char *s, uint len);
|
||||
void my_casedn_ucs2(CHARSET_INFO *cs, char *s, uint len);
|
||||
|
||||
int my_strcasecmp_ucs2(CHARSET_INFO *cs, const char *s, const char *t);
|
||||
int my_strncasecmp_ucs2(CHARSET_INFO *cs, const char *s,const char *t,uint l);
|
||||
|
||||
int my_ucs2_uni (CHARSET_INFO *cs, my_wc_t *p, const uchar *s, const uchar *e);
|
||||
int my_uni_ucs2 (CHARSET_INFO *cs, my_wc_t wc, uchar *b, uchar *e);
|
||||
|
||||
uint my_hash_caseup_ucs2(struct charset_info_st *cs, const byte *key, uint len);
|
||||
void my_hash_sort_ucs2(struct charset_info_st *cs, const uchar *key, uint len, ulong *nr1, ulong *nr2);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#define _U 01 /* Upper case */
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
|
||||
const char *charsets_dir = NULL;
|
||||
static int charset_initialized=0;
|
||||
CHARSET_INFO all_charsets[256];
|
||||
|
||||
#define MAX_LINE 1024
|
||||
|
||||
|
@ -111,17 +110,25 @@ static my_bool read_charset_index(myf myflags)
|
|||
my_fclose(fb.f,myflags);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
cs=&all_charsets[csnum];
|
||||
|
||||
if (!(cs->name=
|
||||
(char*) my_once_alloc(length= (uint) strlen(buf)+1, myflags)))
|
||||
if (all_charsets[csnum])
|
||||
continue;
|
||||
|
||||
if (!(cs=(CHARSET_INFO*) my_once_alloc(sizeof(cs[0]),myflags)))
|
||||
{
|
||||
my_fclose(fb.f,myflags);
|
||||
return TRUE;
|
||||
}
|
||||
bzero(cs,sizeof(cs[0]));
|
||||
|
||||
if (!(cs->name= (char*)my_once_alloc(length=(uint)strlen(buf)+1,myflags)))
|
||||
{
|
||||
my_fclose(fb.f,myflags);
|
||||
return TRUE;
|
||||
}
|
||||
memcpy((char*)cs->name,buf,length);
|
||||
cs->number=csnum;
|
||||
all_charsets[csnum]=cs;
|
||||
}
|
||||
my_fclose(fb.f,myflags);
|
||||
|
||||
|
@ -156,7 +163,7 @@ static my_bool init_available_charsets(myf myflags)
|
|||
*/
|
||||
if (!charset_initialized)
|
||||
{
|
||||
CHARSET_INFO *cs;
|
||||
CHARSET_INFO **cs;
|
||||
/*
|
||||
To make things thread safe we are not allowing other threads to interfere
|
||||
while we may changing the cs_info_table
|
||||
|
@ -164,13 +171,13 @@ static my_bool init_available_charsets(myf myflags)
|
|||
pthread_mutex_lock(&THR_LOCK_charset);
|
||||
|
||||
bzero(&all_charsets,sizeof(all_charsets));
|
||||
init_compiled_charsets(myflags);
|
||||
|
||||
/* Copy compiled charsets */
|
||||
|
||||
for (cs=compiled_charsets; cs->name; cs++)
|
||||
for (cs=all_charsets; cs < all_charsets+255 ; cs++)
|
||||
{
|
||||
all_charsets[cs->number]=cs[0];
|
||||
set_max_sort_char(&all_charsets[cs->number]);
|
||||
if (*cs)
|
||||
set_max_sort_char(*cs);
|
||||
}
|
||||
error = read_charset_index(myflags);
|
||||
charset_initialized=1;
|
||||
|
@ -339,19 +346,16 @@ static my_bool read_charset_file(const char *cs_name, CHARSET_INFO *set,
|
|||
}
|
||||
|
||||
|
||||
static CHARSET_INFO *add_charset(uint cs_number, myf flags)
|
||||
static CHARSET_INFO *add_charset(CHARSET_INFO *cs, myf flags)
|
||||
{
|
||||
CHARSET_INFO *cs;
|
||||
uchar tmp_ctype[CTYPE_TABLE_SIZE];
|
||||
uchar tmp_to_lower[TO_LOWER_TABLE_SIZE];
|
||||
uchar tmp_to_upper[TO_UPPER_TABLE_SIZE];
|
||||
uchar tmp_sort_order[SORT_ORDER_TABLE_SIZE];
|
||||
uint16 tmp_to_uni[TO_UNI_TABLE_SIZE];
|
||||
|
||||
/* Note: cs->name is already initialized */
|
||||
/* Note: cs->name and cs->number are already initialized */
|
||||
|
||||
cs=&all_charsets[cs_number];
|
||||
|
||||
cs->ctype=tmp_ctype;
|
||||
cs->to_lower=tmp_to_lower;
|
||||
cs->to_upper=tmp_to_upper;
|
||||
|
@ -365,7 +369,6 @@ static CHARSET_INFO *add_charset(uint cs_number, myf flags)
|
|||
cs->to_upper = (uchar*) my_once_alloc(TO_UPPER_TABLE_SIZE, MYF(MY_WME));
|
||||
cs->sort_order=(uchar*) my_once_alloc(SORT_ORDER_TABLE_SIZE, MYF(MY_WME));
|
||||
cs->tab_to_uni=(uint16*)my_once_alloc(TO_UNI_TABLE_SIZE*sizeof(uint16), MYF(MY_WME));
|
||||
cs->number = cs_number;
|
||||
memcpy((char*) cs->ctype, (char*) tmp_ctype, sizeof(tmp_ctype));
|
||||
memcpy((char*) cs->to_lower, (char*) tmp_to_lower, sizeof(tmp_to_lower));
|
||||
memcpy((char*) cs->to_upper, (char*) tmp_to_upper, sizeof(tmp_to_upper));
|
||||
|
@ -393,13 +396,13 @@ static CHARSET_INFO *add_charset(uint cs_number, myf flags)
|
|||
|
||||
uint get_charset_number(const char *charset_name)
|
||||
{
|
||||
CHARSET_INFO *cs;
|
||||
CHARSET_INFO **cs;
|
||||
if (init_available_charsets(MYF(0))) /* If it isn't initialized */
|
||||
return 0;
|
||||
|
||||
for (cs = all_charsets; cs < all_charsets+255; ++cs)
|
||||
if ( cs->name && !strcmp(cs->name, charset_name))
|
||||
return cs->number;
|
||||
if ( cs[0] && cs[0]->name && !strcmp(cs[0]->name, charset_name))
|
||||
return cs[0]->number;
|
||||
|
||||
return 0; /* this mimics find_type() */
|
||||
}
|
||||
|
@ -411,8 +414,8 @@ const char *get_charset_name(uint charset_number)
|
|||
if (init_available_charsets(MYF(0))) /* If it isn't initialized */
|
||||
return "?";
|
||||
|
||||
cs=&all_charsets[charset_number];
|
||||
if ( (cs->number==charset_number) && cs->name )
|
||||
cs=all_charsets[charset_number];
|
||||
if ( cs && (cs->number==charset_number) && cs->name )
|
||||
return (char*) cs->name;
|
||||
|
||||
return (char*) "?"; /* this mimics find_type() */
|
||||
|
@ -428,9 +431,9 @@ static CHARSET_INFO *get_internal_charset(uint cs_number, myf flags)
|
|||
*/
|
||||
pthread_mutex_lock(&THR_LOCK_charset);
|
||||
|
||||
cs = &all_charsets[cs_number];
|
||||
if (!(cs->state & (MY_CS_COMPILED | MY_CS_LOADED)))
|
||||
cs=add_charset(cs_number, flags);
|
||||
cs = all_charsets[cs_number];
|
||||
if (cs && !(cs->state & (MY_CS_COMPILED | MY_CS_LOADED)))
|
||||
cs=add_charset(cs, flags);
|
||||
|
||||
pthread_mutex_unlock(&THR_LOCK_charset);
|
||||
return cs;
|
||||
|
@ -552,38 +555,41 @@ char * list_charsets(myf want_flags)
|
|||
|
||||
if (want_flags & MY_CS_COMPILED)
|
||||
{
|
||||
CHARSET_INFO *cs;
|
||||
for (cs = compiled_charsets; cs->number > 0; cs++)
|
||||
CHARSET_INFO **cs;
|
||||
for (cs = all_charsets; cs < all_charsets+255; cs++)
|
||||
{
|
||||
dynstr_append(&s, cs->name);
|
||||
dynstr_append(&s, " ");
|
||||
if (cs[0])
|
||||
{
|
||||
dynstr_append(&s, cs[0]->name);
|
||||
dynstr_append(&s, " ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (want_flags & MY_CS_CONFIG)
|
||||
{
|
||||
CHARSET_INFO *cs;
|
||||
CHARSET_INFO **cs;
|
||||
char buf[FN_REFLEN];
|
||||
MY_STAT status;
|
||||
|
||||
for (cs=all_charsets; cs < all_charsets+255; cs++)
|
||||
{
|
||||
if (!cs->name || charset_in_string(cs->name, &s))
|
||||
if (!cs[0] || !cs[0]->name || charset_in_string(cs[0]->name, &s))
|
||||
continue;
|
||||
get_charset_conf_name(cs->name, buf);
|
||||
get_charset_conf_name(cs[0]->name, buf);
|
||||
if (!my_stat(buf, &status, MYF(0)))
|
||||
continue; /* conf file doesn't exist */
|
||||
dynstr_append(&s, cs->name);
|
||||
dynstr_append(&s, cs[0]->name);
|
||||
dynstr_append(&s, " ");
|
||||
}
|
||||
}
|
||||
|
||||
if (want_flags & (MY_CS_INDEX|MY_CS_LOADED))
|
||||
{
|
||||
CHARSET_INFO *cs;
|
||||
CHARSET_INFO **cs;
|
||||
for (cs = all_charsets; cs < all_charsets + 255; cs++)
|
||||
if (cs->name && (cs->state & want_flags) )
|
||||
charset_append(&s, cs->name);
|
||||
if (cs[0] && cs[0]->name && (cs[0]->state & want_flags) )
|
||||
charset_append(&s, cs[0]->name);
|
||||
}
|
||||
|
||||
if (s.length)
|
||||
|
|
|
@ -1403,7 +1403,7 @@ int mysqld_show_charsets(THD *thd, const char *wild)
|
|||
String packet2(buff,sizeof(buff),default_charset_info);
|
||||
List<Item> field_list;
|
||||
CONVERT *convert=thd->variables.convert_set;
|
||||
CHARSET_INFO *cs;
|
||||
CHARSET_INFO **cs;
|
||||
DBUG_ENTER("mysqld_show_charsets");
|
||||
|
||||
field_list.push_back(new Item_empty_string("Name",30));
|
||||
|
@ -1416,16 +1416,16 @@ int mysqld_show_charsets(THD *thd, const char *wild)
|
|||
|
||||
for (cs=all_charsets ; cs < all_charsets+255 ; cs++ )
|
||||
{
|
||||
if (!cs->name)
|
||||
if (!cs[0])
|
||||
continue;
|
||||
if (!(wild && wild[0] &&
|
||||
wild_case_compare(system_charset_info,cs->name,wild)))
|
||||
wild_case_compare(system_charset_info,cs[0]->name,wild)))
|
||||
{
|
||||
packet2.length(0);
|
||||
net_store_data(&packet2,convert,cs->name);
|
||||
net_store_data(&packet2,(uint32) cs->number);
|
||||
net_store_data(&packet2,(uint32) cs->strxfrm_multiply);
|
||||
net_store_data(&packet2,(uint32) cs->mbmaxlen ? cs->mbmaxlen : 1);
|
||||
net_store_data(&packet2,convert,cs[0]->name);
|
||||
net_store_data(&packet2,(uint32) cs[0]->number);
|
||||
net_store_data(&packet2,(uint32) cs[0]->strxfrm_multiply);
|
||||
net_store_data(&packet2,(uint32) cs[0]->mbmaxlen ? cs[0]->mbmaxlen : 1);
|
||||
|
||||
if (my_net_write(&thd->net, (char*) packet2.ptr(),packet2.length()))
|
||||
goto err;
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
#define big5head(e) ((uchar)(e>>8))
|
||||
#define big5tail(e) ((uchar)(e&0xff))
|
||||
|
||||
uchar NEAR ctype_big5[257] =
|
||||
static uchar NEAR ctype_big5[257] =
|
||||
{
|
||||
0, /* For standard library */
|
||||
32,32,32,32,32,32,32,32,32,40,40,40,40,40,32,32,
|
||||
|
@ -69,7 +69,7 @@ uchar NEAR ctype_big5[257] =
|
|||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
};
|
||||
|
||||
uchar NEAR to_lower_big5[]=
|
||||
static uchar NEAR to_lower_big5[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -105,7 +105,7 @@ uchar NEAR to_lower_big5[]=
|
|||
(uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377',
|
||||
};
|
||||
|
||||
uchar NEAR to_upper_big5[]=
|
||||
static uchar NEAR to_upper_big5[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -141,7 +141,7 @@ uchar NEAR to_upper_big5[]=
|
|||
(uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377',
|
||||
};
|
||||
|
||||
uchar NEAR sort_order_big5[]=
|
||||
static uchar NEAR sort_order_big5[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -218,7 +218,7 @@ static uint16 big5strokexfrm(uint16 i)
|
|||
return 0xA140;
|
||||
}
|
||||
|
||||
int my_strnncoll_big5(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int my_strnncoll_big5(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const uchar * s1, uint len1,
|
||||
const uchar * s2, uint len2)
|
||||
{
|
||||
|
@ -242,7 +242,7 @@ int my_strnncoll_big5(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return (int) (len1-len2);
|
||||
}
|
||||
|
||||
int my_strnxfrm_big5(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int my_strnxfrm_big5(CHARSET_INFO *cs __attribute__((unused)),
|
||||
uchar * dest, uint len,
|
||||
const uchar * src, uint srclen)
|
||||
{
|
||||
|
@ -264,7 +264,8 @@ int my_strnxfrm_big5(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return srclen;
|
||||
}
|
||||
|
||||
int my_strcoll_big5(const uchar * s1, const uchar * s2)
|
||||
#if 0
|
||||
static int my_strcoll_big5(const uchar * s1, const uchar * s2)
|
||||
{
|
||||
|
||||
while (*s1 && *s2)
|
||||
|
@ -283,7 +284,7 @@ int my_strcoll_big5(const uchar * s1, const uchar * s2)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int my_strxfrm_big5(uchar * dest, const uchar * src, int len)
|
||||
static int my_strxfrm_big5(uchar * dest, const uchar * src, int len)
|
||||
{
|
||||
uint16 e;
|
||||
uchar *d = dest;
|
||||
|
@ -309,6 +310,8 @@ int my_strxfrm_big5(uchar * dest, const uchar * src, int len)
|
|||
*d = '\0';
|
||||
return (int) (d-dest);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
** Calculate min_str and max_str that ranges a LIKE string.
|
||||
|
@ -331,7 +334,7 @@ int my_strxfrm_big5(uchar * dest, const uchar * src, int len)
|
|||
#define wild_one '_'
|
||||
#define wild_many '%'
|
||||
|
||||
my_bool my_like_range_big5(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static my_bool my_like_range_big5(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const char *ptr,uint ptr_length,pchar escape,
|
||||
uint res_length, char *min_str,char *max_str,
|
||||
uint *min_length,uint *max_length)
|
||||
|
@ -381,18 +384,18 @@ my_bool my_like_range_big5(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return 0;
|
||||
}
|
||||
|
||||
int ismbchar_big5(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int ismbchar_big5(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const char* p, const char *e)
|
||||
{
|
||||
return (isbig5head(*(p)) && (e)-(p)>1 && isbig5tail(*((p)+1))? 2: 0);
|
||||
}
|
||||
|
||||
my_bool ismbhead_big5(CHARSET_INFO *cs __attribute__((unused)), uint c)
|
||||
static my_bool ismbhead_big5(CHARSET_INFO *cs __attribute__((unused)), uint c)
|
||||
{
|
||||
return isbig5head(c);
|
||||
}
|
||||
|
||||
int mbcharlen_big5(CHARSET_INFO *cs __attribute__((unused)), uint c)
|
||||
static int mbcharlen_big5(CHARSET_INFO *cs __attribute__((unused)), uint c)
|
||||
{
|
||||
return (isbig5head(c)? 2: 0);
|
||||
}
|
||||
|
@ -6166,7 +6169,7 @@ static int func_uni_big5_onechar(int code){
|
|||
}
|
||||
|
||||
|
||||
int
|
||||
static int
|
||||
my_wc_mb_big5(CHARSET_INFO *cs __attribute__((unused)),
|
||||
my_wc_t wc, unsigned char *s, unsigned char *e)
|
||||
{
|
||||
|
@ -6191,7 +6194,7 @@ my_wc_mb_big5(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return 2;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
my_mb_wc_big5(CHARSET_INFO *cs __attribute__((unused)),
|
||||
my_wc_t *pwc,const uchar *s,const uchar *e)
|
||||
{
|
||||
|
@ -6213,5 +6216,39 @@ my_mb_wc_big5(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return 2;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_big5 =
|
||||
{
|
||||
1, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"big5", /* name */
|
||||
"", /* comment */
|
||||
ctype_big5,
|
||||
to_lower_big5,
|
||||
to_upper_big5,
|
||||
sort_order_big5,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
1, /* strxfrm_multiply */
|
||||
my_strnncoll_big5,
|
||||
my_strnxfrm_big5,
|
||||
my_like_range_big5,
|
||||
2, /* mbmaxlen */
|
||||
ismbchar_big5,
|
||||
ismbhead_big5,
|
||||
mbcharlen_big5,
|
||||
my_mb_wc_big5, /* mb_wc */
|
||||
my_wc_mb_big5, /* wc_mb */
|
||||
my_caseup_str_mb,
|
||||
my_casedn_str_mb,
|
||||
my_caseup_mb,
|
||||
my_casedn_mb,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_mb,
|
||||
my_strncasecmp_mb,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -233,8 +233,9 @@ static struct wordvalue doubles[] = {
|
|||
|
||||
#define IS_END(p, src, len) (!(*p))
|
||||
|
||||
#if 0
|
||||
/* Function strcoll, with Czech sorting, for zero terminated strings */
|
||||
int my_strcoll_czech(const uchar * s1, const uchar * s2)
|
||||
static int my_strcoll_czech(const uchar * s1, const uchar * s2)
|
||||
{
|
||||
int v1, v2;
|
||||
const uchar * p1, * p2, * store1, * store2;
|
||||
|
@ -254,9 +255,11 @@ int my_strcoll_czech(const uchar * s1, const uchar * s2)
|
|||
while (v1);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
/* Function strxfrm, with Czech sorting, for zero terminated strings */
|
||||
int my_strxfrm_czech(uchar * dest, const uchar * src, int len)
|
||||
static int my_strxfrm_czech(uchar * dest, const uchar * src, int len)
|
||||
{
|
||||
int value;
|
||||
const uchar * p, * store;
|
||||
|
@ -272,17 +275,16 @@ int my_strxfrm_czech(uchar * dest, const uchar * src, int len)
|
|||
while (value);
|
||||
return totlen;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#undef IS_END
|
||||
|
||||
|
||||
|
||||
|
||||
#define IS_END(p, src, len) (((char *)p - (char *)src) >= (len))
|
||||
|
||||
/* Function strnncoll, actually strcoll, with Czech sorting, which expect
|
||||
the length of the strings being specified */
|
||||
int my_strnncoll_czech(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int my_strnncoll_czech(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const uchar * s1, uint len1,
|
||||
const uchar * s2, uint len2)
|
||||
{
|
||||
|
@ -308,7 +310,7 @@ int my_strnncoll_czech(CHARSET_INFO *cs __attribute__((unused)),
|
|||
|
||||
/* Function strnxfrm, actually strxfrm, with Czech sorting, which expect
|
||||
the length of the strings being specified */
|
||||
int my_strnxfrm_czech(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int my_strnxfrm_czech(CHARSET_INFO *cs __attribute__((unused)),
|
||||
uchar * dest, uint len,
|
||||
const uchar * src, uint srclen)
|
||||
{
|
||||
|
@ -378,7 +380,7 @@ int my_strnxfrm_czech(CHARSET_INFO *cs __attribute__((unused)),
|
|||
|
||||
#define EXAMPLE
|
||||
|
||||
my_bool my_like_range_czech(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static my_bool my_like_range_czech(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const char *ptr,uint ptr_length,pchar escape,
|
||||
uint res_length, char *min_str,char *max_str,
|
||||
uint *min_length,uint *max_length)
|
||||
|
@ -437,7 +439,7 @@ my_bool my_like_range_czech(CHARSET_INFO *cs __attribute__((unused)),
|
|||
#include <my_global.h>
|
||||
#include "m_string.h"
|
||||
|
||||
uchar NEAR ctype_czech[257] = {
|
||||
static uchar NEAR ctype_czech[257] = {
|
||||
0,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
|
@ -457,7 +459,7 @@ uchar NEAR ctype_czech[257] = {
|
|||
2, 2, 2, 2, 2, 2, 2, 16, 2, 2, 2, 2, 2, 2, 2, 16,
|
||||
};
|
||||
|
||||
uchar NEAR to_lower_czech[] = {
|
||||
static uchar NEAR to_lower_czech[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
||||
|
@ -476,7 +478,7 @@ uchar NEAR to_lower_czech[] = {
|
|||
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,
|
||||
};
|
||||
|
||||
uchar NEAR to_upper_czech[] = {
|
||||
static uchar NEAR to_upper_czech[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
||||
|
@ -495,7 +497,7 @@ uchar NEAR to_upper_czech[] = {
|
|||
240,209,210,211,212,213,214,247,216,217,218,219,220,221,222,255,
|
||||
};
|
||||
|
||||
uchar NEAR sort_order_czech[] = {
|
||||
static uchar NEAR sort_order_czech[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
||||
|
@ -514,6 +516,118 @@ uchar NEAR sort_order_czech[] = {
|
|||
255, 98, 99,101,102,103,104,255,109,119,118,120,121,126,116,255,
|
||||
};
|
||||
|
||||
static uint16 tab_8859_2_uni[256]={
|
||||
0,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
|
||||
0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
|
||||
0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
|
||||
0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
|
||||
0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
|
||||
0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
|
||||
0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
|
||||
0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
|
||||
0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
|
||||
0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
|
||||
0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
|
||||
0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
|
||||
0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
|
||||
0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
|
||||
0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
|
||||
0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0x00A0,0x0104,0x02D8,0x0141,0x00A4,0x013D,0x015A,0x00A7,
|
||||
0x00A8,0x0160,0x015E,0x0164,0x0179,0x00AD,0x017D,0x017B,
|
||||
0x00B0,0x0105,0x02DB,0x0142,0x00B4,0x013E,0x015B,0x02C7,
|
||||
0x00B8,0x0161,0x015F,0x0165,0x017A,0x02DD,0x017E,0x017C,
|
||||
0x0154,0x00C1,0x00C2,0x0102,0x00C4,0x0139,0x0106,0x00C7,
|
||||
0x010C,0x00C9,0x0118,0x00CB,0x011A,0x00CD,0x00CE,0x010E,
|
||||
0x0110,0x0143,0x0147,0x00D3,0x00D4,0x0150,0x00D6,0x00D7,
|
||||
0x0158,0x016E,0x00DA,0x0170,0x00DC,0x00DD,0x0162,0x00DF,
|
||||
0x0155,0x00E1,0x00E2,0x0103,0x00E4,0x013A,0x0107,0x00E7,
|
||||
0x010D,0x00E9,0x0119,0x00EB,0x011B,0x00ED,0x00EE,0x010F,
|
||||
0x0111,0x0144,0x0148,0x00F3,0x00F4,0x0151,0x00F6,0x00F7,
|
||||
0x0159,0x016F,0x00FA,0x0171,0x00FC,0x00FD,0x0163,0x02D9
|
||||
};
|
||||
|
||||
|
||||
/* 0000-00FD , 254 chars */
|
||||
static uchar tab_uni_8859_2_plane00[]={
|
||||
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
|
||||
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
|
||||
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
|
||||
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
|
||||
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
|
||||
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
|
||||
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xA0,0x00,0x00,0x00,0xA4,0x00,0x00,0xA7,0xA8,0x00,0x00,0x00,0x00,0xAD,0x00,0x00,
|
||||
0xB0,0x00,0x00,0x00,0xB4,0x00,0x00,0x00,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xC1,0xC2,0x00,0xC4,0x00,0x00,0xC7,0x00,0xC9,0x00,0xCB,0x00,0xCD,0xCE,0x00,
|
||||
0x00,0x00,0x00,0xD3,0xD4,0x00,0xD6,0xD7,0x00,0x00,0xDA,0x00,0xDC,0xDD,0x00,0xDF,
|
||||
0x00,0xE1,0xE2,0x00,0xE4,0x00,0x00,0xE7,0x00,0xE9,0x00,0xEB,0x00,0xED,0xEE,0x00,
|
||||
0x00,0x00,0x00,0xF3,0xF4,0x00,0xF6,0xF7,0x00,0x00,0xFA,0x00,0xFC,0xFD};
|
||||
|
||||
/* 0102-017E , 125 chars */
|
||||
static uchar tab_uni_8859_2_plane01[]={
|
||||
0xC3,0xE3,0xA1,0xB1,0xC6,0xE6,0x00,0x00,0x00,0x00,0xC8,0xE8,0xCF,0xEF,0xD0,0xF0,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xCA,0xEA,0xCC,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC5,0xE5,0x00,0x00,0xA5,0xB5,0x00,0x00,0xA3,
|
||||
0xB3,0xD1,0xF1,0x00,0x00,0xD2,0xF2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD5,0xF5,
|
||||
0x00,0x00,0xC0,0xE0,0x00,0x00,0xD8,0xF8,0xA6,0xB6,0x00,0x00,0xAA,0xBA,0xA9,0xB9,
|
||||
0xDE,0xFE,0xAB,0xBB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD9,0xF9,0xDB,0xFB,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xAC,0xBC,0xAF,0xBF,0xAE,0xBE};
|
||||
|
||||
/* 02C7-02DD , 23 chars */
|
||||
static uchar tab_uni_8859_2_plane02[]={
|
||||
0xB7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xA2,0xFF,0x00,0xB2,0x00,0xBD};
|
||||
|
||||
static MY_UNI_IDX idx_uni_8859_2[]={
|
||||
{0x0000,0x00FD,tab_uni_8859_2_plane00},
|
||||
{0x0102,0x017E,tab_uni_8859_2_plane01},
|
||||
{0x02C7,0x02DD,tab_uni_8859_2_plane02},
|
||||
{0,0,NULL}
|
||||
};
|
||||
|
||||
CHARSET_INFO my_charset_czech =
|
||||
{
|
||||
2, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"czech", /* name */
|
||||
"", /* comment */
|
||||
ctype_czech,
|
||||
to_lower_czech,
|
||||
to_upper_czech,
|
||||
sort_order_czech,
|
||||
tab_8859_2_uni, /* tab_to_uni */
|
||||
idx_uni_8859_2, /* tab_from_uni */
|
||||
4, /* strxfrm_multiply */
|
||||
my_strnncoll_czech,
|
||||
my_strnxfrm_czech,
|
||||
my_like_range_czech,
|
||||
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,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_8bit,
|
||||
my_strncasecmp_8bit,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#ifdef HAVE_CHARSET_euc_kr
|
||||
|
||||
|
||||
uchar NEAR ctype_euc_kr[257] =
|
||||
static uchar NEAR ctype_euc_kr[257] =
|
||||
{
|
||||
0, /* For standard library */
|
||||
0040, 0040, 0040, 0040, 0040, 0040, 0040, 0040, /* NUL ^A - ^G */
|
||||
|
@ -70,7 +70,7 @@ uchar NEAR ctype_euc_kr[257] =
|
|||
0020, 0020, 0020, 0020, 0020, 0020, 0020, 0000,
|
||||
};
|
||||
|
||||
uchar NEAR to_lower_euc_kr[]=
|
||||
static uchar NEAR to_lower_euc_kr[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -106,7 +106,7 @@ uchar NEAR to_lower_euc_kr[]=
|
|||
(uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377',
|
||||
};
|
||||
|
||||
uchar NEAR to_upper_euc_kr[]=
|
||||
static uchar NEAR to_upper_euc_kr[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -142,7 +142,7 @@ uchar NEAR to_upper_euc_kr[]=
|
|||
(uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377',
|
||||
};
|
||||
|
||||
uchar NEAR sort_order_euc_kr[]=
|
||||
static uchar NEAR sort_order_euc_kr[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -183,7 +183,7 @@ uchar NEAR sort_order_euc_kr[]=
|
|||
#define iseuc_kr(c) ((0xa1<=(uchar)(c) && (uchar)(c)<=0xfe))
|
||||
|
||||
|
||||
int ismbchar_euc_kr(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int ismbchar_euc_kr(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const char* p, const char *e)
|
||||
{
|
||||
return ((*(uchar*)(p)<0x80)? 0:\
|
||||
|
@ -191,12 +191,12 @@ int ismbchar_euc_kr(CHARSET_INFO *cs __attribute__((unused)),
|
|||
0);
|
||||
}
|
||||
|
||||
my_bool ismbhead_euc_kr(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
static my_bool ismbhead_euc_kr(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
{
|
||||
return (iseuc_kr(c));
|
||||
}
|
||||
|
||||
int mbcharlen_euc_kr(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
static int mbcharlen_euc_kr(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
{
|
||||
return (iseuc_kr(c) ? 2 : 0);
|
||||
}
|
||||
|
@ -8587,7 +8587,7 @@ static int func_uni_ksc5601_onechar(int code){
|
|||
}
|
||||
|
||||
|
||||
int
|
||||
static int
|
||||
my_wc_mb_euc_kr(CHARSET_INFO *cs __attribute__((unused)),
|
||||
my_wc_t wc, uchar *s, uchar *e)
|
||||
{
|
||||
|
@ -8611,7 +8611,7 @@ my_wc_mb_euc_kr(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return 2;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
my_mb_wc_euc_kr(CHARSET_INFO *cs __attribute__((unused)),
|
||||
my_wc_t *pwc, const uchar *s, const uchar *e)
|
||||
{
|
||||
|
@ -8633,5 +8633,38 @@ my_mb_wc_euc_kr(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return 2;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_euc_kr =
|
||||
{
|
||||
19, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"euc_kr", /* name */
|
||||
"", /* comment */
|
||||
ctype_euc_kr,
|
||||
to_lower_euc_kr,
|
||||
to_upper_euc_kr,
|
||||
sort_order_euc_kr,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
0, /* strxfrm_multiply */
|
||||
my_strnncoll_simple,/* strnncoll */
|
||||
NULL, /* strnxfrm */
|
||||
NULL, /* like_range */
|
||||
2, /* mbmaxlen */
|
||||
ismbchar_euc_kr,
|
||||
ismbhead_euc_kr,
|
||||
mbcharlen_euc_kr,
|
||||
my_mb_wc_euc_kr, /* mb_wc */
|
||||
my_wc_mb_euc_kr, /* wc_mb */
|
||||
my_caseup_str_mb,
|
||||
my_casedn_str_mb,
|
||||
my_caseup_mb,
|
||||
my_casedn_mb,
|
||||
my_tosort_8bit,
|
||||
my_strcasecmp_mb,
|
||||
my_strncasecmp_mb,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
#ifdef HAVE_CHARSET_gb2312
|
||||
|
||||
uchar NEAR ctype_gb2312[257] =
|
||||
static uchar NEAR ctype_gb2312[257] =
|
||||
{
|
||||
0, /* For standard library */
|
||||
32,32,32,32,32,32,32,32,32,40,40,40,40,40,32,32,
|
||||
|
@ -51,7 +51,7 @@ uchar NEAR ctype_gb2312[257] =
|
|||
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,
|
||||
};
|
||||
|
||||
uchar NEAR to_lower_gb2312[]=
|
||||
static uchar NEAR to_lower_gb2312[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -87,7 +87,7 @@ uchar NEAR to_lower_gb2312[]=
|
|||
(uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377',
|
||||
};
|
||||
|
||||
uchar NEAR to_upper_gb2312[]=
|
||||
static uchar NEAR to_upper_gb2312[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -123,7 +123,7 @@ uchar NEAR to_upper_gb2312[]=
|
|||
(uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377',
|
||||
};
|
||||
|
||||
uchar NEAR sort_order_gb2312[]=
|
||||
static uchar NEAR sort_order_gb2312[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -166,18 +166,18 @@ uchar NEAR sort_order_gb2312[]=
|
|||
#define isgb2312tail(c) (0xa1<=(uchar)(c) && (uchar)(c)<=0xfe)
|
||||
|
||||
|
||||
int ismbchar_gb2312(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int ismbchar_gb2312(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const char* p, const char *e)
|
||||
{
|
||||
return (isgb2312head(*(p)) && (e)-(p)>1 && isgb2312tail(*((p)+1))? 2: 0);
|
||||
}
|
||||
|
||||
my_bool ismbhead_gb2312(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
static my_bool ismbhead_gb2312(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
{
|
||||
return isgb2312head(c);
|
||||
}
|
||||
|
||||
int mbcharlen_gb2312(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
static int mbcharlen_gb2312(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
{
|
||||
return (isgb2312head(c)? 2:0);
|
||||
}
|
||||
|
@ -5637,7 +5637,7 @@ static int func_uni_gb2312_onechar(int code){
|
|||
}
|
||||
|
||||
|
||||
int
|
||||
static int
|
||||
my_wc_mb_gb2312(CHARSET_INFO *cs __attribute__((unused)),
|
||||
my_wc_t wc, uchar *s, uchar *e)
|
||||
{
|
||||
|
@ -5661,7 +5661,7 @@ my_wc_mb_gb2312(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return 2;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
my_mb_wc_gb2312(CHARSET_INFO *cs __attribute__((unused)),
|
||||
my_wc_t *pwc, const uchar *s, const uchar *e){
|
||||
int hi;
|
||||
|
@ -5683,5 +5683,38 @@ my_mb_wc_gb2312(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return 2;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_gb2312 =
|
||||
{
|
||||
24, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"gb2312", /* name */
|
||||
"", /* comment */
|
||||
ctype_gb2312,
|
||||
to_lower_gb2312,
|
||||
to_upper_gb2312,
|
||||
sort_order_gb2312,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
0, /* strxfrm_multiply */
|
||||
my_strnncoll_simple,/* strnncoll */
|
||||
NULL, /* strnxfrm */
|
||||
NULL, /* like_range */
|
||||
2, /* mbmaxlen */
|
||||
ismbchar_gb2312,
|
||||
ismbhead_gb2312,
|
||||
mbcharlen_gb2312,
|
||||
my_mb_wc_gb2312, /* mb_wc */
|
||||
my_wc_mb_gb2312, /* wc_mb */
|
||||
my_caseup_str_mb,
|
||||
my_casedn_str_mb,
|
||||
my_caseup_mb,
|
||||
my_casedn_mb,
|
||||
my_tosort_8bit,
|
||||
my_strcasecmp_mb,
|
||||
my_strncasecmp_mb,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
#define gbkhead(e) ((uchar)(e>>8))
|
||||
#define gbktail(e) ((uchar)(e&0xff))
|
||||
|
||||
uchar NEAR ctype_gbk[257] =
|
||||
static uchar NEAR ctype_gbk[257] =
|
||||
{
|
||||
0, /* For standard library */
|
||||
32,32,32,32,32,32,32,32,32,40,40,40,40,40,32,32,
|
||||
|
@ -66,7 +66,7 @@ uchar NEAR ctype_gbk[257] =
|
|||
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,
|
||||
};
|
||||
|
||||
uchar NEAR to_lower_gbk[]=
|
||||
static uchar NEAR to_lower_gbk[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -102,7 +102,7 @@ uchar NEAR to_lower_gbk[]=
|
|||
(uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377',
|
||||
};
|
||||
|
||||
uchar NEAR to_upper_gbk[]=
|
||||
static uchar NEAR to_upper_gbk[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -138,7 +138,7 @@ uchar NEAR to_upper_gbk[]=
|
|||
(uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377',
|
||||
};
|
||||
|
||||
uchar NEAR sort_order_gbk[]=
|
||||
static uchar NEAR sort_order_gbk[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -9824,7 +9824,7 @@ static int func_uni_gbk_onechar(int code){
|
|||
return(0);
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
my_wc_mb_gbk(CHARSET_INFO *cs __attribute__((unused)),
|
||||
my_wc_t wc, uchar *s, uchar *e)
|
||||
{
|
||||
|
@ -9847,7 +9847,7 @@ my_wc_mb_gbk(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return 2;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
my_mb_wc_gbk(CHARSET_INFO *cs __attribute__((unused)),
|
||||
my_wc_t *pwc, const uchar *s, const uchar *e)
|
||||
{
|
||||
|
@ -9871,4 +9871,39 @@ my_mb_wc_gbk(CHARSET_INFO *cs __attribute__((unused)),
|
|||
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_gbk =
|
||||
{
|
||||
28, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"gbk", /* name */
|
||||
"", /* comment */
|
||||
ctype_gbk,
|
||||
to_lower_gbk,
|
||||
to_upper_gbk,
|
||||
sort_order_gbk,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
1, /* strxfrm_multiply */
|
||||
my_strnncoll_gbk,
|
||||
my_strnxfrm_gbk,
|
||||
my_like_range_gbk,
|
||||
2, /* mbmaxlen */
|
||||
ismbchar_gbk,
|
||||
ismbhead_gbk,
|
||||
mbcharlen_gbk,
|
||||
my_mb_wc_gbk, /* mb_wc */
|
||||
my_wc_mb_gbk, /* wc_mb */
|
||||
my_caseup_str_mb,
|
||||
my_casedn_str_mb,
|
||||
my_caseup_mb,
|
||||
my_casedn_mb,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_mb,
|
||||
my_strncasecmp_mb,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -38,7 +38,65 @@
|
|||
|
||||
#ifdef HAVE_CHARSET_latin1_de
|
||||
|
||||
uchar ctype_latin1_de[] = {
|
||||
static uint16 tab_8859_1_uni[256]={
|
||||
0,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
|
||||
0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
|
||||
0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
|
||||
0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
|
||||
0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
|
||||
0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
|
||||
0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
|
||||
0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
|
||||
0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
|
||||
0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
|
||||
0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
|
||||
0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
|
||||
0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
|
||||
0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
|
||||
0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
|
||||
0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
|
||||
0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
|
||||
0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
|
||||
0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,
|
||||
0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,
|
||||
0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
|
||||
0x00D0,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,
|
||||
0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x00DD,0x00DE,0x00DF,
|
||||
0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,
|
||||
0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
|
||||
0x00F0,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7,
|
||||
0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD,0x00FE,0x00FF
|
||||
};
|
||||
|
||||
static uchar tab_uni_8859_1_plane00[]={
|
||||
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
|
||||
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
|
||||
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
|
||||
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
|
||||
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
|
||||
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
|
||||
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
|
||||
0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
|
||||
0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
|
||||
0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
|
||||
0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
|
||||
0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
|
||||
|
||||
static MY_UNI_IDX idx_uni_8859_1[]={
|
||||
{0x0000,0x00FF,tab_uni_8859_1_plane00},
|
||||
{0,0,NULL}
|
||||
};
|
||||
|
||||
static uchar ctype_latin1_de[] = {
|
||||
0,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
|
@ -58,7 +116,7 @@ uchar ctype_latin1_de[] = {
|
|||
2, 2, 2, 2, 2, 2, 2, 16, 2, 2, 2, 2, 2, 2, 2, 2
|
||||
};
|
||||
|
||||
uchar to_lower_latin1_de[] = {
|
||||
static uchar to_lower_latin1_de[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
||||
|
@ -77,7 +135,7 @@ uchar to_lower_latin1_de[] = {
|
|||
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
|
||||
};
|
||||
|
||||
uchar to_upper_latin1_de[] = {
|
||||
static uchar to_upper_latin1_de[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
||||
|
@ -104,7 +162,7 @@ uchar to_upper_latin1_de[] = {
|
|||
* Ü, ü, Ö, ö, Ä, ä
|
||||
*/
|
||||
|
||||
uchar sort_order_latin1_de[] = {
|
||||
static uchar sort_order_latin1_de[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
||||
|
@ -164,7 +222,7 @@ uchar sort_order_latin1_de[] = {
|
|||
}
|
||||
|
||||
|
||||
int my_strnncoll_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int my_strnncoll_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const uchar * s1, uint len1,
|
||||
const uchar * s2, uint len2)
|
||||
{
|
||||
|
@ -238,7 +296,7 @@ int my_strnncoll_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
|
|||
}
|
||||
|
||||
|
||||
int my_strnxfrm_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int my_strnxfrm_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
|
||||
uchar * dest, uint len,
|
||||
const uchar * src, uint srclen)
|
||||
{
|
||||
|
@ -303,7 +361,7 @@ int my_strnxfrm_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
|
|||
#define wild_one '_'
|
||||
#define wild_many '%'
|
||||
|
||||
my_bool my_like_range_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static my_bool my_like_range_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const char *ptr, uint ptr_length,
|
||||
pchar escape, uint res_length,
|
||||
char *min_str, char *max_str,
|
||||
|
@ -353,4 +411,39 @@ my_bool my_like_range_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
CHARSET_INFO my_charset_latin1_de =
|
||||
{
|
||||
31, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"latin1_de", /* name */
|
||||
"", /* comment */
|
||||
ctype_latin1_de,
|
||||
to_lower_latin1_de,
|
||||
to_upper_latin1_de,
|
||||
sort_order_latin1_de,
|
||||
tab_8859_1_uni, /* tab_to_uni */
|
||||
idx_uni_8859_1, /* tab_from_uni */
|
||||
2, /* strxfrm_multiply */
|
||||
my_strnncoll_latin1_de,
|
||||
my_strnxfrm_latin1_de,
|
||||
my_like_range_latin1_de,
|
||||
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,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_8bit,
|
||||
my_strncasecmp_8bit,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
* .configure. mbmaxlen_sjis=2
|
||||
*/
|
||||
|
||||
uchar NEAR ctype_sjis[257] =
|
||||
static uchar NEAR ctype_sjis[257] =
|
||||
{
|
||||
0, /* For standard library */
|
||||
0040, 0040, 0040, 0040, 0040, 0040, 0040, 0040, /* NUL ^A - ^G */
|
||||
|
@ -69,7 +69,7 @@ uchar NEAR ctype_sjis[257] =
|
|||
0020, 0020, 0020, 0020, 0020, 0000, 0000, 0000
|
||||
};
|
||||
|
||||
uchar NEAR to_lower_sjis[]=
|
||||
static uchar NEAR to_lower_sjis[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -105,7 +105,7 @@ uchar NEAR to_lower_sjis[]=
|
|||
(uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377'
|
||||
};
|
||||
|
||||
uchar NEAR to_upper_sjis[]=
|
||||
static uchar NEAR to_upper_sjis[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -141,7 +141,7 @@ uchar NEAR to_upper_sjis[]=
|
|||
(uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377'
|
||||
};
|
||||
|
||||
uchar NEAR sort_order_sjis[]=
|
||||
static uchar NEAR sort_order_sjis[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -183,18 +183,18 @@ uchar NEAR sort_order_sjis[]=
|
|||
(0x80<=(c) && (c)<=0xfc))
|
||||
|
||||
|
||||
int ismbchar_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int ismbchar_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const char* p, const char *e)
|
||||
{
|
||||
return (issjishead((uchar) *p) && (e-p)>1 && issjistail((uchar)p[1]) ? 2: 0);
|
||||
}
|
||||
|
||||
my_bool ismbhead_sjis(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
static my_bool ismbhead_sjis(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
{
|
||||
return issjishead((uchar) c);
|
||||
}
|
||||
|
||||
int mbcharlen_sjis(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
static int mbcharlen_sjis(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
{
|
||||
return (issjishead((uchar) c) ? 2: 0);
|
||||
}
|
||||
|
@ -202,7 +202,7 @@ int mbcharlen_sjis(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
|||
|
||||
#define sjiscode(c,d) ((((uint) (uchar)(c)) << 8) | (uint) (uchar) (d))
|
||||
|
||||
int my_strnncoll_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int my_strnncoll_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const uchar *s1, uint len1,
|
||||
const uchar *s2, uint len2)
|
||||
{
|
||||
|
@ -227,7 +227,7 @@ int my_strnncoll_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return len1 - len2;
|
||||
}
|
||||
|
||||
int my_strnxfrm_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int my_strnxfrm_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
||||
uchar *dest, uint len,
|
||||
const uchar *src, uint srclen)
|
||||
{
|
||||
|
@ -266,7 +266,7 @@ int my_strnxfrm_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
|||
#define wild_one '_'
|
||||
#define wild_many '%'
|
||||
|
||||
my_bool my_like_range_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static my_bool my_like_range_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const char *ptr,uint ptr_length,pchar escape,
|
||||
uint res_length, char *min_str,char *max_str,
|
||||
uint *min_length,uint *max_length)
|
||||
|
@ -4415,7 +4415,7 @@ static int func_uni_sjis_onechar(int code){
|
|||
}
|
||||
|
||||
|
||||
int
|
||||
static int
|
||||
my_wc_mb_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
||||
my_wc_t wc, uchar *s, uchar *e)
|
||||
{
|
||||
|
@ -4438,7 +4438,7 @@ my_wc_mb_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return 2;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
my_mb_wc_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
||||
my_wc_t *pwc, const uchar *s, const uchar *e){
|
||||
int hi=s[0];
|
||||
|
@ -4458,5 +4458,38 @@ my_mb_wc_sjis(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return 2;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_sjis =
|
||||
{
|
||||
13, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"sjis", /* name */
|
||||
"", /* comment */
|
||||
ctype_sjis,
|
||||
to_lower_sjis,
|
||||
to_upper_sjis,
|
||||
sort_order_sjis,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
1, /* strxfrm_multiply */
|
||||
my_strnncoll_sjis,
|
||||
my_strnxfrm_sjis,
|
||||
my_like_range_sjis,
|
||||
2, /* mbmaxlen */
|
||||
ismbchar_sjis,
|
||||
ismbhead_sjis,
|
||||
mbcharlen_sjis,
|
||||
my_mb_wc_sjis, /* mb_wc */
|
||||
my_wc_mb_sjis, /* wc_mb */
|
||||
my_caseup_str_8bit,
|
||||
my_casedn_str_8bit,
|
||||
my_caseup_8bit,
|
||||
my_casedn_8bit,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_8bit,
|
||||
my_strncasecmp_8bit,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -685,4 +685,40 @@ void ThNormalize(uchar* ptr, uint field_length, const uchar* from, uint length)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
CHARSET_INFO my_charset_tis620 =
|
||||
{
|
||||
18, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"tis620", /* name */
|
||||
"", /* comment */
|
||||
ctype_tis620,
|
||||
to_lower_tis620,
|
||||
to_upper_tis620,
|
||||
sort_order_tis620,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
4, /* strxfrm_multiply */
|
||||
my_strnncoll_tis620,
|
||||
my_strnxfrm_tis620,
|
||||
my_like_range_tis620,
|
||||
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,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_8bit,
|
||||
my_strncasecmp_8bit,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
#ifdef HAVE_CHARSET_ujis
|
||||
|
||||
|
||||
uchar NEAR ctype_ujis[257] =
|
||||
static uchar NEAR ctype_ujis[257] =
|
||||
{
|
||||
0, /* For standard library */
|
||||
0040, 0040, 0040, 0040, 0040, 0040, 0040, 0040, /* NUL ^A - ^G */
|
||||
|
@ -69,7 +69,7 @@ uchar NEAR ctype_ujis[257] =
|
|||
0020, 0020, 0020, 0020, 0020, 0020, 0020, 0000,
|
||||
};
|
||||
|
||||
uchar NEAR to_lower_ujis[]=
|
||||
static uchar NEAR to_lower_ujis[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -105,7 +105,7 @@ uchar NEAR to_lower_ujis[]=
|
|||
(uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377'
|
||||
};
|
||||
|
||||
uchar NEAR to_upper_ujis[]=
|
||||
static uchar NEAR to_upper_ujis[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -141,7 +141,7 @@ uchar NEAR to_upper_ujis[]=
|
|||
(uchar) '\370',(uchar) '\371',(uchar) '\372',(uchar) '\373',(uchar) '\374',(uchar) '\375',(uchar) '\376',(uchar) '\377'
|
||||
};
|
||||
|
||||
uchar NEAR sort_order_ujis[]=
|
||||
static uchar NEAR sort_order_ujis[]=
|
||||
{
|
||||
'\000','\001','\002','\003','\004','\005','\006','\007',
|
||||
'\010','\011','\012','\013','\014','\015','\016','\017',
|
||||
|
@ -184,7 +184,7 @@ uchar NEAR sort_order_ujis[]=
|
|||
#define isujis_ss3(c) (((c)&0xff) == 0x8f)
|
||||
|
||||
|
||||
int ismbchar_ujis(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int ismbchar_ujis(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const char* p, const char *e)
|
||||
{
|
||||
return ((*(uchar*)(p)<0x80)? 0:\
|
||||
|
@ -194,12 +194,12 @@ int ismbchar_ujis(CHARSET_INFO *cs __attribute__((unused)),
|
|||
0);
|
||||
}
|
||||
|
||||
my_bool ismbhead_ujis(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
static my_bool ismbhead_ujis(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
{
|
||||
return (isujis(c) || isujis_ss2(c) || isujis_ss3(c));
|
||||
}
|
||||
|
||||
int mbcharlen_ujis(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
static int mbcharlen_ujis(CHARSET_INFO *cs __attribute__((unused)),uint c)
|
||||
{
|
||||
return (isujis(c)? 2: isujis_ss2(c)? 2: isujis_ss3(c)? 3: 0);
|
||||
}
|
||||
|
@ -8257,7 +8257,7 @@ my_jisx0212_uni_onechar(int code){
|
|||
[xA1-xFE][xA1-xFE] # JIS X 0208:1997 (two bytes/char)
|
||||
*/
|
||||
|
||||
int
|
||||
static int
|
||||
my_mb_wc_euc_jp(CHARSET_INFO *cs,my_wc_t *pwc, const uchar *s, const uchar *e)
|
||||
{
|
||||
int c1,c2,c3;
|
||||
|
@ -8344,7 +8344,7 @@ my_mb_wc_euc_jp(CHARSET_INFO *cs,my_wc_t *pwc, const uchar *s, const uchar *e)
|
|||
return MY_CS_ILSEQ;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
my_wc_mb_euc_jp(CHARSET_INFO *c,my_wc_t wc, unsigned char *s, unsigned char *e)
|
||||
{
|
||||
unsigned char buf[2];
|
||||
|
@ -8427,5 +8427,39 @@ my_wc_mb_euc_jp(CHARSET_INFO *c,my_wc_t wc, unsigned char *s, unsigned char *e)
|
|||
return MY_CS_ILUNI;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_ujis =
|
||||
{
|
||||
12, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"ujis", /* name */
|
||||
"", /* comment */
|
||||
ctype_ujis,
|
||||
to_lower_ujis,
|
||||
to_upper_ujis,
|
||||
sort_order_ujis,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
0, /* strxfrm_multiply */
|
||||
NULL, /* strnncoll */
|
||||
NULL, /* strnxfrm */
|
||||
NULL, /* like_range */
|
||||
3, /* mbmaxlen */
|
||||
ismbchar_ujis,
|
||||
ismbhead_ujis,
|
||||
mbcharlen_ujis,
|
||||
my_mb_wc_euc_jp, /* mb_wc */
|
||||
my_wc_mb_euc_jp, /* wc_mb */
|
||||
my_caseup_str_mb,
|
||||
my_casedn_str_mb,
|
||||
my_caseup_mb,
|
||||
my_casedn_mb,
|
||||
my_tosort_8bit,
|
||||
my_strcasecmp_mb,
|
||||
my_strncasecmp_mb,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1516,7 +1516,7 @@ static MY_UNICASE_INFO *uni_plane[256]={
|
|||
|
||||
/* These arrays are taken from usa7 implementation */
|
||||
|
||||
uchar ctype_utf8[] = {
|
||||
static uchar ctype_utf8[] = {
|
||||
0,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
|
@ -1536,7 +1536,7 @@ uchar ctype_utf8[] = {
|
|||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
||||
uchar to_lower_utf8[] = {
|
||||
static uchar to_lower_utf8[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
||||
|
@ -1555,7 +1555,7 @@ uchar to_lower_utf8[] = {
|
|||
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
|
||||
};
|
||||
|
||||
uchar to_upper_utf8[] = {
|
||||
static uchar to_upper_utf8[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
||||
|
@ -1575,7 +1575,7 @@ uchar to_upper_utf8[] = {
|
|||
};
|
||||
|
||||
|
||||
int my_utf8_uni (CHARSET_INFO *cs __attribute__((unused)) ,
|
||||
static int my_utf8_uni (CHARSET_INFO *cs __attribute__((unused)) ,
|
||||
my_wc_t * pwc, const uchar *s, const uchar *e)
|
||||
{
|
||||
unsigned char c = s[0];
|
||||
|
@ -1677,7 +1677,7 @@ int my_utf8_uni (CHARSET_INFO *cs __attribute__((unused)) ,
|
|||
return MY_CS_ILSEQ;
|
||||
}
|
||||
|
||||
int my_uni_utf8 (CHARSET_INFO *cs __attribute__((unused)) ,
|
||||
static int my_uni_utf8 (CHARSET_INFO *cs __attribute__((unused)) ,
|
||||
my_wc_t wc, uchar *r, uchar *e)
|
||||
{
|
||||
int count;
|
||||
|
@ -1720,7 +1720,7 @@ int my_uni_utf8 (CHARSET_INFO *cs __attribute__((unused)) ,
|
|||
}
|
||||
|
||||
|
||||
void my_caseup_utf8(CHARSET_INFO *cs, char *s, uint slen)
|
||||
static void my_caseup_utf8(CHARSET_INFO *cs, char *s, uint slen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int res;
|
||||
|
@ -1736,7 +1736,7 @@ void my_caseup_utf8(CHARSET_INFO *cs, char *s, uint slen)
|
|||
}
|
||||
}
|
||||
|
||||
uint my_hash_caseup_utf8(CHARSET_INFO *cs, const byte *s, uint slen)
|
||||
static uint my_hash_caseup_utf8(CHARSET_INFO *cs, const byte *s, uint slen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
register uint nr=1, nr2=4;
|
||||
|
@ -1759,7 +1759,7 @@ uint my_hash_caseup_utf8(CHARSET_INFO *cs, const byte *s, uint slen)
|
|||
}
|
||||
|
||||
|
||||
void my_hash_sort_utf8(CHARSET_INFO *cs, const uchar *s, uint slen, ulong *n1, ulong *n2)
|
||||
static void my_hash_sort_utf8(CHARSET_INFO *cs, const uchar *s, uint slen, ulong *n1, ulong *n2)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int res;
|
||||
|
@ -1778,13 +1778,13 @@ void my_hash_sort_utf8(CHARSET_INFO *cs, const uchar *s, uint slen, ulong *n1, u
|
|||
}
|
||||
|
||||
|
||||
void my_caseup_str_utf8(CHARSET_INFO * cs, char * s)
|
||||
static void my_caseup_str_utf8(CHARSET_INFO * cs, char * s)
|
||||
{
|
||||
my_caseup_utf8(cs, s, strlen(s));
|
||||
}
|
||||
|
||||
|
||||
void my_casedn_utf8(CHARSET_INFO *cs, char *s, uint slen)
|
||||
static void my_casedn_utf8(CHARSET_INFO *cs, char *s, uint slen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int res;
|
||||
|
@ -1802,13 +1802,13 @@ void my_casedn_utf8(CHARSET_INFO *cs, char *s, uint slen)
|
|||
}
|
||||
}
|
||||
|
||||
void my_casedn_str_utf8(CHARSET_INFO *cs, char * s)
|
||||
static void my_casedn_str_utf8(CHARSET_INFO *cs, char * s)
|
||||
{
|
||||
my_casedn_utf8(cs, s, strlen(s));
|
||||
}
|
||||
|
||||
|
||||
int my_strnncoll_utf8(CHARSET_INFO *cs,
|
||||
static int my_strnncoll_utf8(CHARSET_INFO *cs,
|
||||
const uchar *s, uint slen, const uchar *t, uint tlen)
|
||||
{
|
||||
int s_res,t_res;
|
||||
|
@ -1843,7 +1843,7 @@ int my_strnncoll_utf8(CHARSET_INFO *cs,
|
|||
return ( (se-s) - (te-t) );
|
||||
}
|
||||
|
||||
int my_strncasecmp_utf8(CHARSET_INFO *cs,
|
||||
static int my_strncasecmp_utf8(CHARSET_INFO *cs,
|
||||
const char *s, const char *t, uint len)
|
||||
{
|
||||
int s_res,t_res;
|
||||
|
@ -1879,7 +1879,7 @@ int my_strncasecmp_utf8(CHARSET_INFO *cs,
|
|||
return ( (se-s) - (te-t) );
|
||||
}
|
||||
|
||||
int my_strcasecmp_utf8(CHARSET_INFO *cs, const char *s, const char *t)
|
||||
static int my_strcasecmp_utf8(CHARSET_INFO *cs, const char *s, const char *t)
|
||||
{
|
||||
uint s_len=strlen(s);
|
||||
uint t_len=strlen(t);
|
||||
|
@ -1887,8 +1887,9 @@ int my_strcasecmp_utf8(CHARSET_INFO *cs, const char *s, const char *t)
|
|||
return my_strncasecmp_utf8(cs, s, t, len);
|
||||
}
|
||||
|
||||
int my_strnxfrm_utf8(CHARSET_INFO *cs,
|
||||
uchar *dst, uint dstlen, const uchar *src, uint srclen)
|
||||
static int my_strnxfrm_utf8(CHARSET_INFO *cs,
|
||||
uchar *dst, uint dstlen,
|
||||
const uchar *src, uint srclen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int res;
|
||||
|
@ -1918,19 +1919,19 @@ int my_strnxfrm_utf8(CHARSET_INFO *cs,
|
|||
return dst - dst_orig;
|
||||
}
|
||||
|
||||
int my_ismbchar_utf8(CHARSET_INFO *cs,const char *b, const char *e)
|
||||
static int my_ismbchar_utf8(CHARSET_INFO *cs,const char *b, const char *e)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int res=my_utf8_uni(cs,&wc, (const uchar*)b, (const uchar*)e);
|
||||
return (res>1) ? res : 0;
|
||||
}
|
||||
|
||||
my_bool my_ismbhead_utf8(CHARSET_INFO *cs __attribute__((unused)) , uint ch)
|
||||
static my_bool my_ismbhead_utf8(CHARSET_INFO *cs __attribute__((unused)) , uint ch)
|
||||
{
|
||||
return ( ch >= 0xc2 );
|
||||
}
|
||||
|
||||
int my_mbcharlen_utf8(CHARSET_INFO *cs __attribute__((unused)) , uint c)
|
||||
static int my_mbcharlen_utf8(CHARSET_INFO *cs __attribute__((unused)) , uint c)
|
||||
{
|
||||
if (c < 0x80)
|
||||
return 1;
|
||||
|
@ -1951,6 +1952,41 @@ int my_mbcharlen_utf8(CHARSET_INFO *cs __attribute__((unused)) , uint c)
|
|||
return 0; /* Illegal mb head */;
|
||||
}
|
||||
|
||||
CHARSET_INFO my_charset_utf8 =
|
||||
{
|
||||
33, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"utf8", /* name */
|
||||
"", /* comment */
|
||||
ctype_utf8, /* ctype */
|
||||
to_lower_utf8, /* to_lower */
|
||||
to_upper_utf8, /* to_upper */
|
||||
to_upper_utf8, /* sort_order */
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
1, /* strxfrm_multiply */
|
||||
my_strnncoll_utf8, /* strnncoll */
|
||||
my_strnxfrm_utf8, /* strnxfrm */
|
||||
NULL, /* like_range */
|
||||
3, /* mbmaxlen */
|
||||
my_ismbchar_utf8, /* ismbchar */
|
||||
my_ismbhead_utf8, /* ismbhead */
|
||||
my_mbcharlen_utf8, /* mbcharlen */
|
||||
my_utf8_uni, /* mb_wc */
|
||||
my_uni_utf8, /* wc_mb */
|
||||
my_caseup_str_utf8,
|
||||
my_casedn_str_utf8,
|
||||
my_caseup_utf8,
|
||||
my_casedn_utf8,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_utf8,
|
||||
my_strncasecmp_utf8,
|
||||
my_hash_caseup_utf8,/* hash_caseup */
|
||||
my_hash_sort_utf8, /* hash_sort */
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
#ifdef MY_TEST_UTF8
|
||||
|
||||
#include <stdio.h>
|
||||
|
@ -2009,7 +2045,7 @@ int main()
|
|||
|
||||
#ifdef HAVE_CHARSET_ucs2
|
||||
|
||||
uchar ctype_ucs2[] = {
|
||||
static uchar ctype_ucs2[] = {
|
||||
0,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
|
@ -2029,7 +2065,7 @@ uchar ctype_ucs2[] = {
|
|||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
||||
uchar to_lower_ucs2[] = {
|
||||
static uchar to_lower_ucs2[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
||||
|
@ -2048,7 +2084,7 @@ uchar to_lower_ucs2[] = {
|
|||
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
|
||||
};
|
||||
|
||||
uchar to_upper_ucs2[] = {
|
||||
static uchar to_upper_ucs2[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
||||
|
@ -2068,7 +2104,7 @@ uchar to_upper_ucs2[] = {
|
|||
};
|
||||
|
||||
|
||||
int my_ucs2_uni (CHARSET_INFO *cs __attribute__((unused)) ,
|
||||
static int my_ucs2_uni (CHARSET_INFO *cs __attribute__((unused)) ,
|
||||
my_wc_t * pwc, const uchar *s, const uchar *e)
|
||||
{
|
||||
if (s+2 > e) /* Need 2 characters */
|
||||
|
@ -2078,7 +2114,7 @@ int my_ucs2_uni (CHARSET_INFO *cs __attribute__((unused)) ,
|
|||
return 2;
|
||||
}
|
||||
|
||||
int my_uni_ucs2 (CHARSET_INFO *cs __attribute__((unused)) ,
|
||||
static int my_uni_ucs2 (CHARSET_INFO *cs __attribute__((unused)) ,
|
||||
my_wc_t wc, uchar *r, uchar *e)
|
||||
{
|
||||
if ( r+2 > e )
|
||||
|
@ -2090,7 +2126,7 @@ int my_uni_ucs2 (CHARSET_INFO *cs __attribute__((unused)) ,
|
|||
}
|
||||
|
||||
|
||||
void my_caseup_ucs2(CHARSET_INFO *cs, char *s, uint slen)
|
||||
static void my_caseup_ucs2(CHARSET_INFO *cs, char *s, uint slen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int res;
|
||||
|
@ -2106,7 +2142,7 @@ void my_caseup_ucs2(CHARSET_INFO *cs, char *s, uint slen)
|
|||
}
|
||||
}
|
||||
|
||||
uint my_hash_caseup_ucs2(CHARSET_INFO *cs, const byte *s, uint slen)
|
||||
static uint my_hash_caseup_ucs2(CHARSET_INFO *cs, const byte *s, uint slen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
register uint nr=1, nr2=4;
|
||||
|
@ -2129,7 +2165,7 @@ uint my_hash_caseup_ucs2(CHARSET_INFO *cs, const byte *s, uint slen)
|
|||
}
|
||||
|
||||
|
||||
void my_hash_sort_ucs2(CHARSET_INFO *cs, const uchar *s, uint slen, ulong *n1, ulong *n2)
|
||||
static void my_hash_sort_ucs2(CHARSET_INFO *cs, const uchar *s, uint slen, ulong *n1, ulong *n2)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int res;
|
||||
|
@ -2148,14 +2184,14 @@ void my_hash_sort_ucs2(CHARSET_INFO *cs, const uchar *s, uint slen, ulong *n1, u
|
|||
}
|
||||
|
||||
|
||||
void my_caseup_str_ucs2(CHARSET_INFO * cs __attribute__((unused)),
|
||||
static void my_caseup_str_ucs2(CHARSET_INFO * cs __attribute__((unused)),
|
||||
char * s __attribute__((unused)))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
void my_casedn_ucs2(CHARSET_INFO *cs, char *s, uint slen)
|
||||
static void my_casedn_ucs2(CHARSET_INFO *cs, char *s, uint slen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int res;
|
||||
|
@ -2173,13 +2209,13 @@ void my_casedn_ucs2(CHARSET_INFO *cs, char *s, uint slen)
|
|||
}
|
||||
}
|
||||
|
||||
void my_casedn_str_ucs2(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static void my_casedn_str_ucs2(CHARSET_INFO *cs __attribute__((unused)),
|
||||
char * s __attribute__((unused)))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
int my_strnncoll_ucs2(CHARSET_INFO *cs,
|
||||
static int my_strnncoll_ucs2(CHARSET_INFO *cs,
|
||||
const uchar *s, uint slen, const uchar *t, uint tlen)
|
||||
{
|
||||
int s_res,t_res;
|
||||
|
@ -2214,7 +2250,7 @@ int my_strnncoll_ucs2(CHARSET_INFO *cs,
|
|||
return ( (se-s) - (te-t) );
|
||||
}
|
||||
|
||||
int my_strncasecmp_ucs2(CHARSET_INFO *cs,
|
||||
static int my_strncasecmp_ucs2(CHARSET_INFO *cs,
|
||||
const char *s, const char *t, uint len)
|
||||
{
|
||||
int s_res,t_res;
|
||||
|
@ -2250,7 +2286,7 @@ int my_strncasecmp_ucs2(CHARSET_INFO *cs,
|
|||
return ( (se-s) - (te-t) );
|
||||
}
|
||||
|
||||
int my_strcasecmp_ucs2(CHARSET_INFO *cs, const char *s, const char *t)
|
||||
static int my_strcasecmp_ucs2(CHARSET_INFO *cs, const char *s, const char *t)
|
||||
{
|
||||
uint s_len=strlen(s);
|
||||
uint t_len=strlen(t);
|
||||
|
@ -2258,7 +2294,7 @@ int my_strcasecmp_ucs2(CHARSET_INFO *cs, const char *s, const char *t)
|
|||
return my_strncasecmp_ucs2(cs, s, t, len);
|
||||
}
|
||||
|
||||
int my_strnxfrm_ucs2(CHARSET_INFO *cs,
|
||||
static int my_strnxfrm_ucs2(CHARSET_INFO *cs,
|
||||
uchar *dst, uint dstlen, const uchar *src, uint srclen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
|
@ -2289,23 +2325,59 @@ int my_strnxfrm_ucs2(CHARSET_INFO *cs,
|
|||
return dst - dst_orig;
|
||||
}
|
||||
|
||||
int my_ismbchar_ucs2(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int my_ismbchar_ucs2(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const char *b __attribute__((unused)),
|
||||
const char *e __attribute__((unused)))
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
my_bool my_ismbhead_ucs2(CHARSET_INFO *cs __attribute__((unused)) ,
|
||||
static my_bool my_ismbhead_ucs2(CHARSET_INFO *cs __attribute__((unused)) ,
|
||||
uint ch __attribute__((unused)))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
int my_mbcharlen_ucs2(CHARSET_INFO *cs __attribute__((unused)) ,
|
||||
static int my_mbcharlen_ucs2(CHARSET_INFO *cs __attribute__((unused)) ,
|
||||
uint c __attribute__((unused)))
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
|
||||
CHARSET_INFO my_charset_ucs2 =
|
||||
{
|
||||
35, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"ucs2", /* name */
|
||||
"", /* comment */
|
||||
ctype_ucs2, /* ctype */
|
||||
to_lower_ucs2, /* to_lower */
|
||||
to_upper_ucs2, /* to_upper */
|
||||
to_upper_ucs2, /* sort_order */
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
1, /* strxfrm_multiply */
|
||||
my_strnncoll_ucs2, /* strnncoll */
|
||||
my_strnxfrm_ucs2, /* strnxfrm */
|
||||
NULL, /* like_range */
|
||||
2, /* mbmaxlen */
|
||||
my_ismbchar_ucs2, /* ismbchar */
|
||||
my_ismbhead_ucs2, /* ismbhead */
|
||||
my_mbcharlen_ucs2, /* mbcharlen */
|
||||
my_ucs2_uni, /* mb_wc */
|
||||
my_uni_ucs2, /* wc_mb */
|
||||
my_caseup_str_ucs2,
|
||||
my_casedn_str_ucs2,
|
||||
my_caseup_ucs2,
|
||||
my_casedn_ucs2,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_ucs2,
|
||||
my_strncasecmp_ucs2,
|
||||
my_hash_caseup_ucs2,/* hash_caseup */
|
||||
my_hash_sort_ucs2, /* hash_sort */
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -35,7 +35,106 @@
|
|||
#include "m_string.h"
|
||||
#include "m_ctype.h"
|
||||
|
||||
uchar NEAR ctype_win1250ch[] = {
|
||||
static uint16 tab_cp1250_uni[256]={
|
||||
0,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
|
||||
0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,
|
||||
0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,
|
||||
0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,
|
||||
0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
|
||||
0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,
|
||||
0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,
|
||||
0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,
|
||||
0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,
|
||||
0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
|
||||
0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,
|
||||
0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,
|
||||
0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,
|
||||
0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
|
||||
0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
|
||||
0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
|
||||
0x20AC, 0,0x201A, 0,0x201E,0x2026,0x2020,0x2021,
|
||||
0,0x2030,0x0160,0x2039,0x015A,0x0164,0x017D,0x0179,
|
||||
0,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
|
||||
0,0x2122,0x0161,0x203A,0x015B,0x0165,0x017E,0x017A,
|
||||
0x00A0,0x02C7,0x02D8,0x0141,0x00A4,0x0104,0x00A6,0x00A7,
|
||||
0x00A8,0x00A9,0x015E,0x00AB,0x00AC,0x00AD,0x00AE,0x017B,
|
||||
0x00B0,0x00B1,0x02DB,0x0142,0x00B4,0x00B5,0x00B6,0x00B7,
|
||||
0x00B8,0x0105,0x015F,0x00BB,0x013D,0x02DD,0x013E,0x017C,
|
||||
0x0154,0x00C1,0x00C2,0x0102,0x00C4,0x0139,0x0106,0x00C7,
|
||||
0x010C,0x00C9,0x0118,0x00CB,0x011A,0x00CD,0x00CE,0x010E,
|
||||
0x0110,0x0143,0x0147,0x00D3,0x00D4,0x0150,0x00D6,0x00D7,
|
||||
0x0158,0x016E,0x00DA,0x0170,0x00DC,0x00DD,0x0162,0x00DF,
|
||||
0x0155,0x00E1,0x00E2,0x0103,0x00E4,0x013A,0x0107,0x00E7,
|
||||
0x010D,0x00E9,0x0119,0x00EB,0x011B,0x00ED,0x00EE,0x010F,
|
||||
0x0111,0x0144,0x0148,0x00F3,0x00F4,0x0151,0x00F6,0x00F7,
|
||||
0x0159,0x016F,0x00FA,0x0171,0x00FC,0x00FD,0x0163,0x02D9
|
||||
};
|
||||
|
||||
|
||||
/* 0000-00FD , 254 chars */
|
||||
static uchar tab_uni_cp1250_plane00[]={
|
||||
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
|
||||
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
|
||||
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
|
||||
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
|
||||
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
|
||||
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
|
||||
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0xA0,0x00,0x00,0x00,0xA4,0x00,0xA6,0xA7,0xA8,0xA9,0x00,0xAB,0xAC,0xAD,0xAE,0x00,
|
||||
0xB0,0xB1,0x00,0x00,0xB4,0xB5,0xB6,0xB7,0xB8,0x00,0x00,0xBB,0x00,0x00,0x00,0x00,
|
||||
0x00,0xC1,0xC2,0x00,0xC4,0x00,0x00,0xC7,0x00,0xC9,0x00,0xCB,0x00,0xCD,0xCE,0x00,
|
||||
0x00,0x00,0x00,0xD3,0xD4,0x00,0xD6,0xD7,0x00,0x00,0xDA,0x00,0xDC,0xDD,0x00,0xDF,
|
||||
0x00,0xE1,0xE2,0x00,0xE4,0x00,0x00,0xE7,0x00,0xE9,0x00,0xEB,0x00,0xED,0xEE,0x00,
|
||||
0x00,0x00,0x00,0xF3,0xF4,0x00,0xF6,0xF7,0x00,0x00,0xFA,0x00,0xFC,0xFD};
|
||||
|
||||
/* 0102-017E , 125 chars */
|
||||
static uchar tab_uni_cp1250_plane01[]={
|
||||
0xC3,0xE3,0xA5,0xB9,0xC6,0xE6,0x00,0x00,0x00,0x00,0xC8,0xE8,0xCF,0xEF,0xD0,0xF0,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xCA,0xEA,0xCC,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC5,0xE5,0x00,0x00,0xBC,0xBE,0x00,0x00,0xA3,
|
||||
0xB3,0xD1,0xF1,0x00,0x00,0xD2,0xF2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD5,0xF5,
|
||||
0x00,0x00,0xC0,0xE0,0x00,0x00,0xD8,0xF8,0x8C,0x9C,0x00,0x00,0xAA,0xBA,0x8A,0x9A,
|
||||
0xDE,0xFE,0x8D,0x9D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD9,0xF9,0xDB,0xFB,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8F,0x9F,0xAF,0xBF,0x8E,0x9E};
|
||||
|
||||
/* 2013-20AC , 154 chars */
|
||||
static uchar tab_uni_cp1250_plane20[]={
|
||||
0x96,0x97,0x00,0x00,0x00,0x91,0x92,0x82,0x00,0x93,0x94,0x84,0x00,0x86,0x87,0x95,
|
||||
0x00,0x00,0x00,0x85,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x89,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x8B,0x9B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80};
|
||||
|
||||
/* 02C7-02DD , 23 chars */
|
||||
static uchar tab_uni_cp1250_plane02[]={
|
||||
0xA1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0xA2,0xFF,0x00,0xB2,0x00,0xBD};
|
||||
|
||||
/* 2122-2122 , 1 chars */
|
||||
static uchar tab_uni_cp1250_plane21[]={
|
||||
0x99};
|
||||
|
||||
|
||||
static MY_UNI_IDX idx_uni_cp1250[]={
|
||||
{0x0000,0x00FD,tab_uni_cp1250_plane00},
|
||||
{0x0102,0x017E,tab_uni_cp1250_plane01},
|
||||
{0x2013,0x20AC,tab_uni_cp1250_plane20},
|
||||
{0x02C7,0x02DD,tab_uni_cp1250_plane02},
|
||||
{0x2122,0x2122,tab_uni_cp1250_plane21},
|
||||
{0,0,NULL}
|
||||
};
|
||||
|
||||
|
||||
static uchar NEAR ctype_win1250ch[] = {
|
||||
0x00,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x20, 0x20,
|
||||
|
@ -71,7 +170,7 @@ uchar NEAR ctype_win1250ch[] = {
|
|||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x10
|
||||
};
|
||||
|
||||
uchar NEAR to_lower_win1250ch[] = {
|
||||
static uchar NEAR to_lower_win1250ch[] = {
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
||||
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
|
||||
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
|
||||
|
@ -106,7 +205,7 @@ uchar NEAR to_lower_win1250ch[] = {
|
|||
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
|
||||
};
|
||||
|
||||
uchar NEAR to_upper_win1250ch[] = {
|
||||
static uchar NEAR to_upper_win1250ch[] = {
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
||||
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
|
||||
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
|
||||
|
@ -149,7 +248,7 @@ uchar NEAR to_upper_win1250ch[] = {
|
|||
#endif
|
||||
|
||||
|
||||
uchar NEAR sort_order_win1250ch[] = {
|
||||
static uchar NEAR sort_order_win1250ch[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
||||
|
@ -168,7 +267,7 @@ uchar NEAR sort_order_win1250ch[] = {
|
|||
240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255
|
||||
};
|
||||
|
||||
uchar NEAR _sort_order_win1250ch1[] = {
|
||||
static uchar NEAR _sort_order_win1250ch1[] = {
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
|
@ -228,7 +327,7 @@ uchar NEAR _sort_order_win1250ch1[] = {
|
|||
0xb8, 0xbd, 0xbd, 0xbd, 0xbd, 0xc1, 0xbc, 0xf5
|
||||
};
|
||||
|
||||
uchar NEAR _sort_order_win1250ch2[] = {
|
||||
static uchar NEAR _sort_order_win1250ch2[] = {
|
||||
0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
|
||||
0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11,
|
||||
0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
|
||||
|
@ -334,7 +433,8 @@ static struct wordvalue doubles[] = {
|
|||
|
||||
#define IS_END(p, src, len) (!(*p))
|
||||
|
||||
int my_strcoll_win1250ch(const uchar * s1, const uchar * s2) {
|
||||
#if UNUSED
|
||||
static int my_strcoll_win1250ch(const uchar * s1, const uchar * s2) {
|
||||
int v1, v2;
|
||||
const uchar * p1, * p2;
|
||||
int pass1 = 0, pass2 = 0;
|
||||
|
@ -350,9 +450,10 @@ int my_strcoll_win1250ch(const uchar * s1, const uchar * s2) {
|
|||
} while (v1);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef UNUSED
|
||||
int my_strxfrm_win1250ch(uchar * dest, const uchar * src, int len) {
|
||||
static int my_strxfrm_win1250ch(uchar * dest, const uchar * src, int len) {
|
||||
int value;
|
||||
const uchar * p;
|
||||
int pass = 0;
|
||||
|
@ -373,7 +474,7 @@ int my_strxfrm_win1250ch(uchar * dest, const uchar * src, int len) {
|
|||
|
||||
#define IS_END(p, src, len) (((char *)p - (char *)src) >= (len))
|
||||
|
||||
int my_strnncoll_win1250ch(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static int my_strnncoll_win1250ch(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const uchar * s1, uint len1,
|
||||
const uchar * s2, uint len2) {
|
||||
int v1, v2;
|
||||
|
@ -392,7 +493,7 @@ int my_strnncoll_win1250ch(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return 0;
|
||||
}
|
||||
|
||||
int my_strnxfrm_win1250ch(CHARSET_INFO * cs __attribute__((unused)),
|
||||
static int my_strnxfrm_win1250ch(CHARSET_INFO * cs __attribute__((unused)),
|
||||
uchar * dest, uint len,
|
||||
const uchar * src, uint srclen) {
|
||||
int value;
|
||||
|
@ -474,7 +575,7 @@ static uchar NEAR like_range_prefix_max_win1250ch[] = {
|
|||
** optimized !
|
||||
*/
|
||||
|
||||
my_bool my_like_range_win1250ch(CHARSET_INFO *cs __attribute__((unused)),
|
||||
static my_bool my_like_range_win1250ch(CHARSET_INFO *cs __attribute__((unused)),
|
||||
const char *ptr, uint ptr_length,
|
||||
pchar escape, uint res_length,
|
||||
char *min_str, char *max_str,
|
||||
|
@ -518,4 +619,40 @@ my_bool my_like_range_win1250ch(CHARSET_INFO *cs __attribute__((unused)),
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
CHARSET_INFO my_charset_win1250ch =
|
||||
{
|
||||
34, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"win1250ch", /* name */
|
||||
"", /* comment */
|
||||
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,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_8bit,
|
||||
my_strncasecmp_8bit,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
|
530
strings/ctype.c
530
strings/ctype.c
|
@ -83,7 +83,7 @@ static MY_UNI_IDX idx_uni_8859_1[]={
|
|||
#endif
|
||||
|
||||
#if defined(HAVE_CHARSET_latin2)||defined(HAVE_CHARSET_croat)||\
|
||||
defined(HAVE_CHARSET_hungarian)||defined(HAVE_CHARSET_czech)
|
||||
defined(HAVE_CHARSET_hungarian)
|
||||
|
||||
static uint16 tab_8859_2_uni[256]={
|
||||
0,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
|
||||
|
@ -2529,7 +2529,7 @@ static uchar sort_order_win1250[] = {
|
|||
};
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_CHARSET_win1250)||defined(HAVE_CHARSET_win1250ch)
|
||||
#if defined(HAVE_CHARSET_win1250)
|
||||
|
||||
static uint16 tab_cp1250_uni[256]={
|
||||
0,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,
|
||||
|
@ -2801,7 +2801,7 @@ static uchar sort_order_win1251ukr[] = {
|
|||
|
||||
|
||||
|
||||
CHARSET_INFO compiled_charsets[] = {
|
||||
static CHARSET_INFO compiled_charsets[] = {
|
||||
|
||||
#ifdef HAVE_CHARSET_latin1
|
||||
{
|
||||
|
@ -2838,40 +2838,6 @@ CHARSET_INFO compiled_charsets[] = {
|
|||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_big5
|
||||
{
|
||||
1, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"big5", /* name */
|
||||
"", /* comment */
|
||||
ctype_big5,
|
||||
to_lower_big5,
|
||||
to_upper_big5,
|
||||
sort_order_big5,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
1, /* strxfrm_multiply */
|
||||
my_strnncoll_big5,
|
||||
my_strnxfrm_big5,
|
||||
my_like_range_big5,
|
||||
2, /* mbmaxlen */
|
||||
ismbchar_big5,
|
||||
ismbhead_big5,
|
||||
mbcharlen_big5,
|
||||
my_mb_wc_big5, /* mb_wc */
|
||||
my_wc_mb_big5, /* wc_mb */
|
||||
my_caseup_str_mb,
|
||||
my_casedn_str_mb,
|
||||
my_caseup_mb,
|
||||
my_casedn_mb,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_mb,
|
||||
my_strncasecmp_mb,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_cp1251
|
||||
{
|
||||
|
@ -2978,40 +2944,6 @@ CHARSET_INFO compiled_charsets[] = {
|
|||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_czech
|
||||
{
|
||||
2, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"czech", /* name */
|
||||
"", /* comment */
|
||||
ctype_czech,
|
||||
to_lower_czech,
|
||||
to_upper_czech,
|
||||
sort_order_czech,
|
||||
tab_8859_2_uni, /* tab_to_uni */
|
||||
idx_uni_8859_2, /* tab_from_uni */
|
||||
4, /* strxfrm_multiply */
|
||||
my_strnncoll_czech,
|
||||
my_strnxfrm_czech,
|
||||
my_like_range_czech,
|
||||
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,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_8bit,
|
||||
my_strncasecmp_8bit,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_danish
|
||||
{
|
||||
|
@ -3153,110 +3085,6 @@ CHARSET_INFO compiled_charsets[] = {
|
|||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_euc_kr
|
||||
{
|
||||
19, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"euc_kr", /* name */
|
||||
"", /* comment */
|
||||
ctype_euc_kr,
|
||||
to_lower_euc_kr,
|
||||
to_upper_euc_kr,
|
||||
sort_order_euc_kr,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
0, /* strxfrm_multiply */
|
||||
my_strnncoll_simple,/* strnncoll */
|
||||
NULL, /* strnxfrm */
|
||||
NULL, /* like_range */
|
||||
2, /* mbmaxlen */
|
||||
ismbchar_euc_kr,
|
||||
ismbhead_euc_kr,
|
||||
mbcharlen_euc_kr,
|
||||
my_mb_wc_euc_kr, /* mb_wc */
|
||||
my_wc_mb_euc_kr, /* wc_mb */
|
||||
my_caseup_str_mb,
|
||||
my_casedn_str_mb,
|
||||
my_caseup_mb,
|
||||
my_casedn_mb,
|
||||
my_tosort_8bit,
|
||||
my_strcasecmp_mb,
|
||||
my_strncasecmp_mb,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_gb2312
|
||||
{
|
||||
24, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"gb2312", /* name */
|
||||
"", /* comment */
|
||||
ctype_gb2312,
|
||||
to_lower_gb2312,
|
||||
to_upper_gb2312,
|
||||
sort_order_gb2312,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
0, /* strxfrm_multiply */
|
||||
my_strnncoll_simple,/* strnncoll */
|
||||
NULL, /* strnxfrm */
|
||||
NULL, /* like_range */
|
||||
2, /* mbmaxlen */
|
||||
ismbchar_gb2312,
|
||||
ismbhead_gb2312,
|
||||
mbcharlen_gb2312,
|
||||
my_mb_wc_gb2312, /* mb_wc */
|
||||
my_wc_mb_gb2312, /* wc_mb */
|
||||
my_caseup_str_mb,
|
||||
my_casedn_str_mb,
|
||||
my_caseup_mb,
|
||||
my_casedn_mb,
|
||||
my_tosort_8bit,
|
||||
my_strcasecmp_mb,
|
||||
my_strncasecmp_mb,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_gbk
|
||||
{
|
||||
28, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"gbk", /* name */
|
||||
"", /* comment */
|
||||
ctype_gbk,
|
||||
to_lower_gbk,
|
||||
to_upper_gbk,
|
||||
sort_order_gbk,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
1, /* strxfrm_multiply */
|
||||
my_strnncoll_gbk,
|
||||
my_strnxfrm_gbk,
|
||||
my_like_range_gbk,
|
||||
2, /* mbmaxlen */
|
||||
ismbchar_gbk,
|
||||
ismbhead_gbk,
|
||||
mbcharlen_gbk,
|
||||
my_mb_wc_gbk, /* mb_wc */
|
||||
my_wc_mb_gbk, /* wc_mb */
|
||||
my_caseup_str_mb,
|
||||
my_casedn_str_mb,
|
||||
my_caseup_mb,
|
||||
my_casedn_mb,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_mb,
|
||||
my_strncasecmp_mb,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_german1
|
||||
{
|
||||
|
@ -3503,40 +3331,6 @@ CHARSET_INFO compiled_charsets[] = {
|
|||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_latin1_de
|
||||
{
|
||||
31, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"latin1_de", /* name */
|
||||
"", /* comment */
|
||||
ctype_latin1_de,
|
||||
to_lower_latin1_de,
|
||||
to_upper_latin1_de,
|
||||
sort_order_latin1_de,
|
||||
tab_8859_1_uni, /* tab_to_uni */
|
||||
idx_uni_8859_1, /* tab_from_uni */
|
||||
2, /* strxfrm_multiply */
|
||||
my_strnncoll_latin1_de,
|
||||
my_strnxfrm_latin1_de,
|
||||
my_like_range_latin1_de,
|
||||
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,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_8bit,
|
||||
my_strncasecmp_8bit,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_latin2
|
||||
{
|
||||
|
@ -3608,40 +3402,6 @@ CHARSET_INFO compiled_charsets[] = {
|
|||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_sjis
|
||||
{
|
||||
13, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"sjis", /* name */
|
||||
"", /* comment */
|
||||
ctype_sjis,
|
||||
to_lower_sjis,
|
||||
to_upper_sjis,
|
||||
sort_order_sjis,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
1, /* strxfrm_multiply */
|
||||
my_strnncoll_sjis,
|
||||
my_strnxfrm_sjis,
|
||||
my_like_range_sjis,
|
||||
2, /* mbmaxlen */
|
||||
ismbchar_sjis,
|
||||
ismbhead_sjis,
|
||||
mbcharlen_sjis,
|
||||
my_mb_wc_sjis, /* mb_wc */
|
||||
my_wc_mb_sjis, /* wc_mb */
|
||||
my_caseup_str_8bit,
|
||||
my_casedn_str_8bit,
|
||||
my_caseup_8bit,
|
||||
my_casedn_8bit,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_8bit,
|
||||
my_strncasecmp_8bit,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_swe7
|
||||
{
|
||||
|
@ -3678,146 +3438,6 @@ CHARSET_INFO compiled_charsets[] = {
|
|||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_tis620
|
||||
{
|
||||
18, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"tis620", /* name */
|
||||
"", /* comment */
|
||||
ctype_tis620,
|
||||
to_lower_tis620,
|
||||
to_upper_tis620,
|
||||
sort_order_tis620,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
4, /* strxfrm_multiply */
|
||||
my_strnncoll_tis620,
|
||||
my_strnxfrm_tis620,
|
||||
my_like_range_tis620,
|
||||
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,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_8bit,
|
||||
my_strncasecmp_8bit,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_ucs2
|
||||
{
|
||||
35, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"ucs2", /* name */
|
||||
"", /* comment */
|
||||
ctype_ucs2, /* ctype */
|
||||
to_lower_ucs2, /* to_lower */
|
||||
to_upper_ucs2, /* to_upper */
|
||||
to_upper_ucs2, /* sort_order */
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
1, /* strxfrm_multiply */
|
||||
my_strnncoll_ucs2, /* strnncoll */
|
||||
my_strnxfrm_ucs2, /* strnxfrm */
|
||||
NULL, /* like_range */
|
||||
2, /* mbmaxlen */
|
||||
my_ismbchar_ucs2, /* ismbchar */
|
||||
my_ismbhead_ucs2, /* ismbhead */
|
||||
my_mbcharlen_ucs2, /* mbcharlen */
|
||||
my_ucs2_uni, /* mb_wc */
|
||||
my_uni_ucs2, /* wc_mb */
|
||||
my_caseup_str_ucs2,
|
||||
my_casedn_str_ucs2,
|
||||
my_caseup_ucs2,
|
||||
my_casedn_ucs2,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_ucs2,
|
||||
my_strncasecmp_ucs2,
|
||||
my_hash_caseup_ucs2,/* hash_caseup */
|
||||
my_hash_sort_ucs2, /* hash_sort */
|
||||
0
|
||||
},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef HAVE_CHARSET_ujis
|
||||
{
|
||||
12, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"ujis", /* name */
|
||||
"", /* comment */
|
||||
ctype_ujis,
|
||||
to_lower_ujis,
|
||||
to_upper_ujis,
|
||||
sort_order_ujis,
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
0, /* strxfrm_multiply */
|
||||
NULL, /* strnncoll */
|
||||
NULL, /* strnxfrm */
|
||||
NULL, /* like_range */
|
||||
3, /* mbmaxlen */
|
||||
ismbchar_ujis,
|
||||
ismbhead_ujis,
|
||||
mbcharlen_ujis,
|
||||
my_mb_wc_euc_jp, /* mb_wc */
|
||||
my_wc_mb_euc_jp, /* wc_mb */
|
||||
my_caseup_str_mb,
|
||||
my_casedn_str_mb,
|
||||
my_caseup_mb,
|
||||
my_casedn_mb,
|
||||
my_tosort_8bit,
|
||||
my_strcasecmp_mb,
|
||||
my_strncasecmp_mb,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_utf8
|
||||
{
|
||||
33, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"utf8", /* name */
|
||||
"", /* comment */
|
||||
ctype_utf8, /* ctype */
|
||||
to_lower_utf8, /* to_lower */
|
||||
to_upper_utf8, /* to_upper */
|
||||
to_upper_utf8, /* sort_order */
|
||||
NULL, /* tab_to_uni */
|
||||
NULL, /* tab_from_uni */
|
||||
1, /* strxfrm_multiply */
|
||||
my_strnncoll_utf8, /* strnncoll */
|
||||
my_strnxfrm_utf8, /* strnxfrm */
|
||||
NULL, /* like_range */
|
||||
3, /* mbmaxlen */
|
||||
my_ismbchar_utf8, /* ismbchar */
|
||||
my_ismbhead_utf8, /* ismbhead */
|
||||
my_mbcharlen_utf8, /* mbcharlen */
|
||||
my_utf8_uni, /* mb_wc */
|
||||
my_uni_utf8, /* wc_mb */
|
||||
my_caseup_str_utf8,
|
||||
my_casedn_str_utf8,
|
||||
my_caseup_utf8,
|
||||
my_casedn_utf8,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_utf8,
|
||||
my_strncasecmp_utf8,
|
||||
my_hash_caseup_utf8,/* hash_caseup */
|
||||
my_hash_sort_utf8, /* hash_sort */
|
||||
0
|
||||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_usa7
|
||||
{
|
||||
|
@ -3994,41 +3614,6 @@ CHARSET_INFO compiled_charsets[] = {
|
|||
},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_win1250ch
|
||||
{
|
||||
34, /* number */
|
||||
MY_CS_COMPILED, /* state */
|
||||
"win1250ch", /* name */
|
||||
"", /* comment */
|
||||
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,
|
||||
NULL, /* tosort */
|
||||
my_strcasecmp_8bit,
|
||||
my_strncasecmp_8bit,
|
||||
NULL, /* hash_caseup */
|
||||
NULL, /* hash_sort */
|
||||
0
|
||||
},
|
||||
#endif
|
||||
|
||||
{
|
||||
0, /* end-of-list marker */
|
||||
0, /* state */
|
||||
|
@ -4066,45 +3651,84 @@ CHARSET_INFO compiled_charsets[] = {
|
|||
};
|
||||
|
||||
|
||||
CHARSET_INFO *all_charsets[256];
|
||||
CHARSET_INFO *default_charset_info = &compiled_charsets[0];
|
||||
CHARSET_INFO *system_charset_info = &compiled_charsets[0];
|
||||
|
||||
CHARSET_INFO *find_compiled_charset(uint cs_number)
|
||||
#define MY_ADD_CHARSET(x) all_charsets[(x)->number]=(x)
|
||||
|
||||
|
||||
extern CHARSET_INFO my_charset_big5;
|
||||
extern CHARSET_INFO my_charset_czech;
|
||||
extern CHARSET_INFO my_charset_euc_kr;
|
||||
extern CHARSET_INFO my_charset_gb2312;
|
||||
extern CHARSET_INFO my_charset_gbk;
|
||||
extern CHARSET_INFO my_charset_latin1_de;
|
||||
extern CHARSET_INFO my_charset_sjis;
|
||||
extern CHARSET_INFO my_charset_tis620;
|
||||
extern CHARSET_INFO my_charset_ucs2;
|
||||
extern CHARSET_INFO my_charset_ujis;
|
||||
extern CHARSET_INFO my_charset_utf8;
|
||||
extern CHARSET_INFO my_charset_win1250ch;
|
||||
|
||||
|
||||
my_bool init_compiled_charsets(myf flags __attribute__((unused)))
|
||||
{
|
||||
CHARSET_INFO *cs;
|
||||
for (cs = compiled_charsets; cs->number > 0; cs++)
|
||||
if (cs->number == cs_number)
|
||||
return cs;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
CHARSET_INFO *find_compiled_charset_by_name(const char *name)
|
||||
{
|
||||
CHARSET_INFO *cs;
|
||||
for (cs = compiled_charsets; cs->number > 0; cs++)
|
||||
if (!strcmp(cs->name, name))
|
||||
return cs;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
uint compiled_charset_number(const char *name)
|
||||
{
|
||||
CHARSET_INFO *cs;
|
||||
for (cs = compiled_charsets; cs->number > 0; cs++)
|
||||
if (!strcmp(cs->name, name))
|
||||
return cs->number;
|
||||
|
||||
return 0; /* this mimics find_type() */
|
||||
}
|
||||
|
||||
const char *compiled_charset_name(uint charset_number)
|
||||
{
|
||||
CHARSET_INFO *cs;
|
||||
for (cs = compiled_charsets; cs->number > 0; cs++)
|
||||
if (cs->number == charset_number)
|
||||
return cs->name;
|
||||
|
||||
return "?"; /* this mimics get_type() */
|
||||
#ifdef HAVE_CHARSET_big5
|
||||
MY_ADD_CHARSET(&my_charset_big5);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_czech
|
||||
MY_ADD_CHARSET(&my_charset_czech);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_euc_kr
|
||||
MY_ADD_CHARSET(&my_charset_euc_kr);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_gb2312
|
||||
MY_ADD_CHARSET(&my_charset_gb2312);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_gbk
|
||||
MY_ADD_CHARSET(&my_charset_gbk);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_latin1_de
|
||||
MY_ADD_CHARSET(&my_charset_latin1_de);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_sjis
|
||||
MY_ADD_CHARSET(&my_charset_sjis);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_tis620
|
||||
MY_ADD_CHARSET(&my_charset_tis620);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_ucs2
|
||||
MY_ADD_CHARSET(&my_charset_ucs2);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_ujis
|
||||
MY_ADD_CHARSET(&my_charset_ujis);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_utf8
|
||||
MY_ADD_CHARSET(&my_charset_utf8);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_win1250ch
|
||||
MY_ADD_CHARSET(&my_charset_win1250ch);
|
||||
#endif
|
||||
|
||||
/* Copy compiled charsets */
|
||||
for (cs=compiled_charsets; cs->name; cs++)
|
||||
{
|
||||
all_charsets[cs->number]=cs;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue