summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
authorunknown <monty@mishka.mysql.fi>2003-10-06 22:56:34 +0300
committerunknown <monty@mishka.mysql.fi>2003-10-06 22:56:34 +0300
commit0e93376e71bd719658bbf99e413d51d7ee349dee (patch)
tree42623f3710505740b5171a6d3e6cdcb4aa119084 /mysys
parentbd7470241b0883b5bacc0f741e828a13773e7eec (diff)
downloadmariadb-git-0e93376e71bd719658bbf99e413d51d7ee349dee.tar.gz
Move init_compiled_charsets to own file
Remove dependency of charsets (in my_init) to get smaller binaries when charsets are not used Simple code cleanup client/mysql.cc: Fixed indentation include/my_sys.h: Move init_compiled_charsets to own file include/mysql.h: Remove compiler warning libmysql/Makefile.shared: Move init_compiled_charsets to own file mysys/Makefile.am: Move init_compiled_charsets to own file mysys/charset.c: Move init_compiled_charsets to own file mysys/my_init.c: Remove dependency of charsets scripts/mysql_create_system_tables.sh: Remove run time warning scripts/mysql_fix_privilege_tables.sql: Add help tables sql/sql_insert.cc: Code cleanup
Diffstat (limited to 'mysys')
-rw-r--r--mysys/Makefile.am2
-rw-r--r--mysys/charset-def.c93
-rw-r--r--mysys/charset.c101
-rw-r--r--mysys/my_init.c1
4 files changed, 107 insertions, 90 deletions
diff --git a/mysys/Makefile.am b/mysys/Makefile.am
index 9e563755ebd..6ec1e1ec40d 100644
--- a/mysys/Makefile.am
+++ b/mysys/Makefile.am
@@ -50,7 +50,7 @@ libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c\
my_getopt.c my_mkdir.c \
default.c my_compress.c checksum.c raid.cc \
my_net.c my_semaphore.c my_port.c my_sleep.c \
- charset.c my_bitmap.c my_bit.c md5.c \
+ charset.c charset-def.c my_bitmap.c my_bit.c md5.c \
my_gethostbyname.c rijndael.c my_aes.c sha1.c \
my_handler.c my_netware.c
EXTRA_DIST = thr_alarm.c thr_lock.c my_pthread.c my_thr_init.c \
diff --git a/mysys/charset-def.c b/mysys/charset-def.c
new file mode 100644
index 00000000000..650431eaf76
--- /dev/null
+++ b/mysys/charset-def.c
@@ -0,0 +1,93 @@
+/* Copyright (C) 2000 MySQL AB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+#include "mysys_priv.h"
+
+/*
+ Include all compiled character sets into the client
+ If a client don't want to use all of them, he can define his own
+ init_compiled_charsets() that only adds those that he wants
+*/
+
+my_bool init_compiled_charsets(myf flags __attribute__((unused)))
+{
+ CHARSET_INFO *cs;
+
+ add_compiled_collation(&my_charset_bin);
+
+ add_compiled_collation(&my_charset_latin1);
+ add_compiled_collation(&my_charset_latin1_bin);
+ add_compiled_collation(&my_charset_latin1_german2_ci);
+
+#ifdef HAVE_CHARSET_big5
+ add_compiled_collation(&my_charset_big5_chinese_ci);
+ add_compiled_collation(&my_charset_big5_bin);
+#endif
+
+#ifdef HAVE_CHARSET_cp1250
+ add_compiled_collation(&my_charset_cp1250_czech_ci);
+#endif
+
+#ifdef HAVE_CHARSET_latin2
+ add_compiled_collation(&my_charset_latin2_czech_ci);
+#endif
+
+#ifdef HAVE_CHARSET_euckr
+ add_compiled_collation(&my_charset_euckr_korean_ci);
+ add_compiled_collation(&my_charset_euckr_bin);
+#endif
+
+#ifdef HAVE_CHARSET_gb2312
+ add_compiled_collation(&my_charset_gb2312_chinese_ci);
+ add_compiled_collation(&my_charset_gb2312_bin);
+#endif
+
+#ifdef HAVE_CHARSET_gbk
+ add_compiled_collation(&my_charset_gbk_chinese_ci);
+ add_compiled_collation(&my_charset_gbk_bin);
+#endif
+
+#ifdef HAVE_CHARSET_sjis
+ add_compiled_collation(&my_charset_sjis_japanese_ci);
+ add_compiled_collation(&my_charset_sjis_bin);
+#endif
+
+#ifdef HAVE_CHARSET_tis620
+ add_compiled_collation(&my_charset_tis620_thai_ci);
+ add_compiled_collation(&my_charset_tis620_bin);
+#endif
+
+#ifdef HAVE_CHARSET_ucs2
+ add_compiled_collation(&my_charset_ucs2_general_ci);
+ add_compiled_collation(&my_charset_ucs2_bin);
+#endif
+
+#ifdef HAVE_CHARSET_ujis
+ add_compiled_collation(&my_charset_ujis_japanese_ci);
+ add_compiled_collation(&my_charset_ujis_bin);
+#endif
+
+#ifdef HAVE_CHARSET_utf8
+ add_compiled_collation(&my_charset_utf8_general_ci);
+ add_compiled_collation(&my_charset_utf8_bin);
+#endif
+
+ /* Copy compiled charsets */
+ for (cs=compiled_charsets; cs->name; cs++)
+ add_compiled_collation(cs);
+
+ return FALSE;
+}
diff --git a/mysys/charset.c b/mysys/charset.c
index 7d0516ac81b..e97ac0675d6 100644
--- a/mysys/charset.c
+++ b/mysys/charset.c
@@ -21,9 +21,18 @@
#include <my_dir.h>
#include <my_xml.h>
+typedef struct
+{
+ int nchars;
+ MY_UNI_IDX uidx;
+} uni_idx;
+
+#define PLANE_SIZE 0x100
+#define PLANE_NUM 0x100
+#define PLANE_NUMBER(x) (((x)>>8) % PLANE_NUM)
-/*
+/*
The code below implements this functionality:
- Initializing charset related structures
@@ -38,6 +47,7 @@ my_bool my_charset_same(CHARSET_INFO *cs1, CHARSET_INFO *cs2)
return ((cs1 == cs2) || !strcmp(cs1->csname,cs2->csname));
}
+
static void set_max_sort_char(CHARSET_INFO *cs)
{
uchar max_char;
@@ -110,37 +120,21 @@ static void init_state_maps(CHARSET_INFO *cs)
state_map[(uchar)'x']= state_map[(uchar)'X']= (uchar) MY_LEX_IDENT_OR_HEX;
state_map[(uchar)'b']= state_map[(uchar)'b']= (uchar) MY_LEX_IDENT_OR_BIN;
state_map[(uchar)'n']= state_map[(uchar)'N']= (uchar) MY_LEX_IDENT_OR_NCHAR;
-
-
}
+
static void simple_cs_init_functions(CHARSET_INFO *cs)
{
-
if (cs->state & MY_CS_BINSORT)
- {
cs->coll= &my_collation_8bit_bin_handler;
- }
else
- {
cs->coll= &my_collation_8bit_simple_ci_handler;
- }
cs->cset= &my_charset_8bit_handler;
cs->mbmaxlen = 1;
}
-typedef struct
-{
- int nchars;
- MY_UNI_IDX uidx;
-} uni_idx;
-
-#define PLANE_SIZE 0x100
-#define PLANE_NUM 0x100
-#define PLANE_NUMBER(x) (((x)>>8) % PLANE_NUM)
-
static int pcmp(const void * f, const void * s)
{
const uni_idx *F= (const uni_idx*) f;
@@ -401,82 +395,13 @@ char *get_charsets_dir(char *buf)
CHARSET_INFO *all_charsets[256];
CHARSET_INFO *default_charset_info = &my_charset_latin1;
-static void add_compiled_collation(CHARSET_INFO *cs)
+void add_compiled_collation(CHARSET_INFO *cs)
{
all_charsets[cs->number]= cs;
cs->state|= MY_CS_AVAILABLE;
}
-static my_bool init_compiled_charsets(myf flags __attribute__((unused)))
-{
- CHARSET_INFO *cs;
-
- add_compiled_collation(&my_charset_bin);
-
- add_compiled_collation(&my_charset_latin1);
- add_compiled_collation(&my_charset_latin1_bin);
- add_compiled_collation(&my_charset_latin1_german2_ci);
-
-#ifdef HAVE_CHARSET_big5
- add_compiled_collation(&my_charset_big5_chinese_ci);
- add_compiled_collation(&my_charset_big5_bin);
-#endif
-
-#ifdef HAVE_CHARSET_cp1250
- add_compiled_collation(&my_charset_cp1250_czech_ci);
-#endif
-
-#ifdef HAVE_CHARSET_latin2
- add_compiled_collation(&my_charset_latin2_czech_ci);
-#endif
-
-#ifdef HAVE_CHARSET_euckr
- add_compiled_collation(&my_charset_euckr_korean_ci);
- add_compiled_collation(&my_charset_euckr_bin);
-#endif
-
-#ifdef HAVE_CHARSET_gb2312
- add_compiled_collation(&my_charset_gb2312_chinese_ci);
- add_compiled_collation(&my_charset_gb2312_bin);
-#endif
-
-#ifdef HAVE_CHARSET_gbk
- add_compiled_collation(&my_charset_gbk_chinese_ci);
- add_compiled_collation(&my_charset_gbk_bin);
-#endif
-
-#ifdef HAVE_CHARSET_sjis
- add_compiled_collation(&my_charset_sjis_japanese_ci);
- add_compiled_collation(&my_charset_sjis_bin);
-#endif
-
-#ifdef HAVE_CHARSET_tis620
- add_compiled_collation(&my_charset_tis620_thai_ci);
- add_compiled_collation(&my_charset_tis620_bin);
-#endif
-
-#ifdef HAVE_CHARSET_ucs2
- add_compiled_collation(&my_charset_ucs2_general_ci);
- add_compiled_collation(&my_charset_ucs2_bin);
-#endif
-
-#ifdef HAVE_CHARSET_ujis
- add_compiled_collation(&my_charset_ujis_japanese_ci);
- add_compiled_collation(&my_charset_ujis_bin);
-#endif
-
-#ifdef HAVE_CHARSET_utf8
- add_compiled_collation(&my_charset_utf8_general_ci);
- add_compiled_collation(&my_charset_utf8_bin);
-#endif
-
- /* Copy compiled charsets */
- for (cs=compiled_charsets; cs->name; cs++)
- add_compiled_collation(cs);
-
- return FALSE;
-}
#ifdef __NETWARE__
my_bool STDCALL init_available_charsets(myf myflags)
diff --git a/mysys/my_init.c b/mysys/my_init.c
index a72652f266b..4a7e9194dae 100644
--- a/mysys/my_init.c
+++ b/mysys/my_init.c
@@ -130,7 +130,6 @@ void my_end(int infoflag)
DBUG_PRINT("error",("%s",errbuff[0]));
}
}
- free_charsets();
my_once_free();
if (infoflag & MY_GIVE_INFO || info_file != stderr)
{