mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
9421f1dae9
Some simple optimzations, more comments and indentation changes. Add ` around database in 'use database' in binary log. Moved max_error_count and max_warning_count to variables struct. Removed SHOW_WARNS_COUNT and SHOW_ERRORS_COUNT calls. Changed string functions to use character set of first string argument as default return characterset (Each string function can change the above assumption if needed) BitKeeper/etc/ignore: auto-union BitKeeper/etc/logging_ok: auto-union BUILD/SETUP.sh: Auto merged BitKeeper/deleted/.del-getopt.h~a9ae679fa84f395: Auto merged BitKeeper/deleted/.del-getvar.c~2a29ff383970fd31: Auto merged Docs/manual.texi: Auto merged SSL/cacert.pem: Auto merged SSL/client-cert.pem: Auto merged SSL/client-key.pem: Auto merged SSL/server-cert.pem: Auto merged SSL/server-key.pem: Auto merged client/mysqldump.c: Auto merged include/my_base.h: Auto merged include/my_sys.h: Auto merged include/mysql_com.h: Auto merged isam/isamlog.c: Auto merged isam/pack_isam.c: Auto merged libmysqld/lib_sql.cc: Auto merged myisam/ft_dump.c: Auto merged myisam/ft_parser.c: Auto merged myisam/ft_static.c: Auto merged myisam/ft_test1.c: Auto merged myisam/ft_update.c: Auto merged myisam/mi_create.c: Auto merged myisam/mi_key.c: Auto merged myisam/mi_open.c: Auto merged myisam/mi_static.c: Auto merged myisam/mi_test1.c: Auto merged myisam/mi_test2.c: Auto merged myisam/mi_test3.c: Auto merged myisam/mi_update.c: Auto merged myisam/mi_write.c: Auto merged myisam/myisamchk.c: Auto merged myisam/myisamdef.h: Auto merged myisam/myisamlog.c: Auto merged myisam/myisampack.c: Auto merged mysql-test/mysql-test-run.sh: Auto merged mysql-test/r/create.result: Auto merged mysql-test/r/fulltext.result: Auto merged mysql-test/r/func_math.result: Auto merged mysql-test/r/innodb.result: Auto merged mysql-test/r/merge.result: Auto merged mysql-test/r/myisam.result: Auto merged mysql-test/r/select.result: Auto merged mysql-test/r/select_found.result: Auto merged mysql-test/r/union.result: Auto merged mysql-test/t/create.test: Auto merged mysql-test/t/myisam.test: Auto merged mysql-test/t/select_found.test: Auto merged mysql-test/t/union.test: Auto merged mysys/default.c: Auto merged mysys/mf_iocache2.c: Auto merged mysys/my_error.c: Auto merged mysys/my_init.c: Auto merged scripts/mysql_config.sh: Auto merged sql/convert.cc: Auto merged sql/filesort.cc: Auto merged sql/gen_lex_hash.cc: Auto merged sql/ha_berkeley.cc: Auto merged sql/ha_innodb.cc: Auto merged sql/ha_myisam.cc: Auto merged sql/handler.cc: Auto merged sql/handler.h: Auto merged sql/hostname.cc: Auto merged sql/item.cc: Auto merged sql/item_sum.cc: Auto merged sql/item_sum.h: Auto merged sql/item_timefunc.cc: Auto merged sql/item_timefunc.h: Auto merged sql/key.cc: Auto merged sql/log.cc: Auto merged sql/net_pkg.cc: Auto merged sql/opt_range.cc: Auto merged sql/opt_range.h: Auto merged sql/opt_sum.cc: Auto merged sql/repl_failsafe.cc: Auto merged sql/slave.cc: Auto merged sql/sql_cache.cc: Auto merged sql/sql_db.cc: Auto merged sql/sql_handler.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_load.cc: Auto merged sql/sql_string.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_test.cc: Auto merged sql/time.cc: Auto merged sql/unireg.cc: Auto merged strings/Makefile.am: Auto merged strings/ctype-latin1_de.c: Auto merged strings/ctype-tis620.c: Auto merged tools/mysqlmanager.c: Auto merged BitKeeper/deleted/.del-sslopt-case.h~224c80e75dad4997: merge with 4.0.3 BitKeeper/triggers/post-commit: merge with 4.0.3 client/mysql.cc: merge with 4.0.3 + simple optimsation client/mysqltest.c: merge with 4.0.3 (Indentation change) configure.in: merge with 4.0.3 extra/resolve_stack_dump.c: merge with 4.0.3 (Indentation change) include/Makefile.am: merge with 4.0.3 include/myisam.h: merge with 4.0.3 (Indentation change) include/mysql.h: merge with 4.0.3 (removed not used structure) include/mysqld_error.h: merge with 4.0.3 libmysql/Makefile.shared: merge with 4.0.3 libmysql/libmysql.c: merge with 4.0.3 (Indentation change) libmysqld/Makefile.am: merge with 4.0.3 myisam/ft_boolean_search.c: merge with 4.0.3 (Indentation change) myisam/ft_nlq_search.c: merge with 4.0.3 (Indentation change) myisam/mi_check.c: merge with 4.0.3 myisam/mi_search.c: merge with 4.0.3 myisam/mi_unique.c: merge with 4.0.3 mysys/Makefile.am: merge with 4.0.3 mysys/mf_casecnv.c: merge with 4.0.3 sql-bench/server-cfg.sh: Removed 8000 max row limit for Innodb sql/Makefile.am: merge with 4.0.3 sql/field.cc: Indentation cleanup Changed sprintf -> my_sprintf sql/field.h: merge with 4.0.3 sql/ha_heap.cc: merge with 4.0.3 (Indentation change) sql/item.h: merge with 4.0.3 (Indentation change) sql/item_cmpfunc.cc: merge with 4.0.3 sql/item_cmpfunc.h: Removed size_of() from items Indentation cleanup sql/item_create.cc: merge sql/item_create.h: merge sql/item_func.cc: Added comments Changed string functions to use character set of first string argument as default return characterset Simple optimizations. Removed return of uninitalized variable. sql/item_func.h: merge sql/item_strfunc.cc: merge with 4.0.3 (Indentation change) sql/item_strfunc.h: removed size_of() sql/item_uniq.h: removed size_of() sql/lex.h: merge with 4.0.3 (Indentation change) sql/log_event.cc: Add ` around database in 'use database' in binary log. sql/mysql_priv.h: merge with 4.0.3 sql/mysqld.cc: merge with 4.0.3 (Indentation change) sql/share/czech/errmsg.txt: merge sql/share/danish/errmsg.txt: merge sql/share/dutch/errmsg.txt: merge sql/share/english/errmsg.txt: merge sql/share/estonian/errmsg.txt: merge sql/share/french/errmsg.txt: merge sql/share/german/errmsg.txt: merge sql/share/greek/errmsg.txt: merge sql/share/hungarian/errmsg.txt: merge sql/share/italian/errmsg.txt: merge sql/share/japanese/errmsg.txt: merge sql/share/korean/errmsg.txt: merge sql/share/norwegian-ny/errmsg.txt: merge sql/share/norwegian/errmsg.txt: merge sql/share/polish/errmsg.txt: merge sql/share/portuguese/errmsg.txt: merge sql/share/romanian/errmsg.txt: merge sql/share/russian/errmsg.txt: merge sql/share/slovak/errmsg.txt: merge sql/share/spanish/errmsg.txt: merge sql/share/swedish/errmsg.txt: merge sql/share/ukrainian/errmsg.txt: merge sql/sql_acl.cc: merge with 4.0.3 sql/sql_base.cc: More comments Fixed bug in send_fields() when using convert sql/sql_class.cc: merge sql/sql_class.h: Merge with 4.0.3 Moved max_error_count and max_warning_count to variables struct. sql/sql_delete.cc: merge with 4.0.3 (Indentation change) sql/sql_lex.h: merge with 4.0.3 sql/sql_parse.cc: Removed SHOW_WARNS_COUNT and SHOW_ERRORS_COUNT. (Should be retrived from variables) sql/sql_select.cc: merge with 4.0.3 sql/sql_show.cc: merge with 4.0.3 sql/sql_union.cc: merge with 4.0.3 sql/sql_update.cc: merge with 4.0.3 sql/sql_yacc.yy: merge with 4.0.3 Indentation cleanup sql/structs.h: merge with 4.0.3 sql/table.cc: merge with 4.0.3 sql/table.h: merge with 4.0.3
475 lines
24 KiB
C++
475 lines
24 KiB
C++
/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult 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 */
|
|
|
|
|
|
/*
|
|
** Convert tables between different character sets
|
|
** Some of the tables are hidden behind IFDEF to reduce some space.
|
|
** One can enable them by removing the // characters from the next comment
|
|
** One must also give a name to each mapping that one wants to use...
|
|
*/
|
|
|
|
/* #define DEFINE_ALL_CHARACTER_SETS */
|
|
|
|
#include "mysql_priv.h"
|
|
|
|
/****************************************************************************
|
|
Convert tables
|
|
****************************************************************************/
|
|
|
|
/* Windows cp1251->koi8 and reverse conversion by Timur I. Bakeyev <translate@bat.ru> */
|
|
/* based on Russian-Apache Team tables by Dmitry M. Klimoff <dmk@kosnet.ru> */
|
|
|
|
static unsigned char cp1251_koi8[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
|
|
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
|
|
160,161,162,163,164,189,166,167,179,169,180,171,172,173,174,183,
|
|
176,177,182,166,173,181,182,183,163,185,164,187,188,189,190,167,
|
|
225,226,247,231,228,229,246,250,233,234,235,236,237,238,239,240,
|
|
242,243,244,245,230,232,227,254,251,253,255,249,248,252,224,241,
|
|
193,194,215,199,196,197,214,218,201,202,203,204,205,206,207,208,
|
|
210,211,212,213,198,200,195,222,219,221,223,217,216,220,192,209
|
|
};
|
|
|
|
static unsigned char koi8_cp1251[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
|
|
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
|
|
160,161,162,184,186,165,179,191,168,169,170,171,172,180,174,175,
|
|
176,177,178,168,170,181,178,175,184,185,186,187,188,165,190,191,
|
|
254,224,225,246,228,229,244,227,245,232,233,234,235,236,237,238,
|
|
239,255,240,241,242,243,230,226,252,251,231,248,253,249,247,250,
|
|
222,192,193,214,196,197,212,195,213,200,201,202,203,204,205,206,
|
|
207,223,208,209,210,211,198,194,220,219,199,216,221,217,215,218
|
|
};
|
|
|
|
|
|
#ifdef DEFINE_ALL_CHARACTER_SETS
|
|
|
|
/* These tables was generated from package 'cstools' (author Jan "Yenya" Kasprzak <kas@muni.cz>) */
|
|
|
|
/* Windows pc1250 to iso 8859-2 */
|
|
|
|
static unsigned char t1250_til2[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
128,129, 0,131, 0, 0, 0, 0,136, 0,169, 0,166,171,174,172,
|
|
144, 0, 0, 0, 0, 0, 0, 0,152, 0,185, 0,182,187,190,188,
|
|
160,183,162,163,164,161, 0,167,168, 0,170, 0, 0,173, 0,175,
|
|
176, 0,178,179,180, 0, 0, 0,184,177,186, 0,165,189,181,191,
|
|
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
|
|
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
|
|
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
|
|
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
|
|
};
|
|
|
|
static unsigned char til2_t1250[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
128,129, 0,131, 0, 0, 0, 0,136, 0, 0, 0, 0, 0, 0, 0,
|
|
144, 0, 0, 0, 0, 0, 0, 0,152, 0, 0, 0, 0, 0, 0, 0,
|
|
160,165,162,163,164,188,140,167,168,138,170,141,143,173,142,175,
|
|
176,185,178,179,180,190,156,161,184,154,186,157,159,189,158,191,
|
|
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
|
|
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
|
|
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
|
|
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
|
|
};
|
|
|
|
/* Windows pc1252 to iso 8859-2 */
|
|
|
|
static unsigned char t1252_til2[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
128,129, 0, 0, 0, 0, 0, 0,136, 0,169, 0, 0,141,142,143,
|
|
144, 0, 0, 0, 0, 0, 0, 0,189, 0,185, 0, 0,157,158, 0,
|
|
160, 0, 0, 0,164, 0, 0,167,168, 0, 0, 0, 0,173, 0, 0,
|
|
176, 0, 0, 0,180, 0, 0, 0,184, 0, 0, 0, 0, 0, 0, 0,
|
|
0,193,194, 0,196, 0, 0,199, 0,201, 0,203, 0,205,206, 0,
|
|
208, 0, 0,211,212, 0,214,215, 0, 0,218, 0,220,221, 0,223,
|
|
0,225,226, 0,228, 0, 0,231, 0,233, 0,235, 0,237,238, 0,
|
|
240, 0, 0,243,244, 0,246,247, 0, 0,250, 0,252,253, 0, 0
|
|
};
|
|
static unsigned char til2_t1252[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
128,129, 0, 0, 0, 0, 0, 0,136, 0, 0, 0, 0,141,142,143,
|
|
144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157,158, 0,
|
|
160, 0, 0, 0,164, 0, 0,167,168,138, 0, 0, 0,173, 0, 0,
|
|
176, 0, 0, 0,180, 0, 0, 0,184,154, 0, 0, 0,152, 0, 0,
|
|
0,193,194, 0,196, 0, 0,199, 0,201, 0,203, 0,205,206, 0,
|
|
208, 0, 0,211,212, 0,214,215, 0, 0,218, 0,220,221, 0,223,
|
|
0,225,226, 0,228, 0, 0,231, 0,233, 0,235, 0,237,238, 0,
|
|
240, 0, 0,243,244, 0,246,247, 0, 0,250, 0,252,253, 0, 0
|
|
};
|
|
|
|
/* MSDOS Kamenicky encoding (for Czech/Slovak) to iso 8859-2 */
|
|
|
|
static unsigned char tkam_til2[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
200,252,233,239,228,207,171,232,236,204,197,205,181,229,196,193,
|
|
201,190,174,244,246,211,249,218,253,214,220,169,165,221,216,187,
|
|
225,237,243,250,242,210,217,212,185,248,224,192, 0,167, 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, 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,
|
|
0, 0, 0, 0, 0, 0,247, 0,176, 0, 0, 0, 0, 0, 0, 0
|
|
};
|
|
static unsigned char til2_tkam[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
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, 0, 0, 0, 0,156, 0,173, 0,155, 0,134, 0, 0,146, 0,
|
|
248, 0, 0, 0, 0,140, 0, 0, 0,168, 0,159, 0, 0,145, 0,
|
|
171,143, 0, 0,142,138, 0, 0,128,144, 0, 0,137,139, 0,133,
|
|
0, 0,165,149,167, 0,153, 0,158,166,151, 0,154,157, 0, 0,
|
|
170,160, 0, 0,132,141, 0, 0,135,130, 0, 0,136,161, 0,131,
|
|
0, 0,164,162,147, 0,148,246,169,150,163, 0,129,152, 0, 0
|
|
};
|
|
|
|
/* Macintosh Roman encoding to iso 8859-2 */
|
|
|
|
static unsigned char tmac_til2[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
196, 0,199,201, 0,214,220,225, 0,226,228, 0, 0,231,233, 0,
|
|
0,235,237, 0,238, 0, 0,243, 0,244,246, 0,250, 0, 0,252,
|
|
0,176, 0, 0,167, 0, 0,223, 0, 0, 0,180,168, 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,160, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0,247, 0, 0, 0, 0,164, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0,194, 0,193,203, 0,205,206, 0, 0,211,212,
|
|
0, 0,218, 0, 0, 0, 0, 0, 0,162,255, 0,184,189,178,183
|
|
};
|
|
static unsigned char til2_tmac[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
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,
|
|
202, 0,249, 0,219, 0, 0,164,172, 0, 0, 0, 0, 0, 0, 0,
|
|
161, 0,254, 0,171, 0, 0,255,252, 0, 0, 0, 0,253, 0, 0,
|
|
0,231,229, 0,128, 0, 0,130, 0,131, 0,232, 0,234,235, 0,
|
|
0, 0, 0,238,239, 0,133, 0, 0, 0,242, 0,134, 0, 0,167,
|
|
0,135,137, 0,138, 0, 0,141, 0,142, 0,145, 0,146,148, 0,
|
|
0, 0, 0,151,153, 0,154,214, 0, 0,156, 0,159, 0, 0,250
|
|
};
|
|
|
|
/* Macintosh Central European encodingto iso 8859-2 */
|
|
|
|
static unsigned char tmacce_til2[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
196, 0, 0,201,161,214,220,225,177,200,228,232,198,230,233,172,
|
|
188,207,237,239, 0, 0, 0,243, 0,244,246, 0,250,204,236,252,
|
|
0,176,202, 0,167, 0, 0,223, 0, 0, 0,234,168, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,179, 0, 0,165,181,197,229, 0,
|
|
0,209, 0, 0,241,210, 0, 0, 0, 0,160,242,213, 0,245, 0,
|
|
0, 0, 0, 0, 0, 0,247, 0, 0,192,224,216, 0, 0,248, 0,
|
|
0,169, 0, 0,185,166,182,193,171,187,205,174,190, 0,211,212,
|
|
0,217,218,249,219,251, 0, 0,221,253, 0,175,163,191, 0,183
|
|
};
|
|
static unsigned char til2_tmacce[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
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,
|
|
202,132, 0,252, 0,187,229,164,172,225, 0,232,143, 0,235,251,
|
|
161,136, 0,184, 0,188,230,255, 0,228, 0,233,144, 0,236,253,
|
|
217,231, 0, 0,128,189,140, 0,137,131,162, 0,157,234, 0,145,
|
|
0,193,197,238,239,204,133, 0,219,241,242,244,134,248, 0,167,
|
|
218,135, 0, 0,138,190,141, 0,139,142,171, 0,158,146, 0,147,
|
|
0,196,203,151,153,206,154,214,222,243,156,245,159,249, 0, 0
|
|
};
|
|
|
|
/* PC-Latin2 encoding, supported by M$-DOS to iso 8859-2 */
|
|
|
|
static unsigned char tpc2_til2[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
199,252,233,226,228,249,230,231,179,235,213,245,238,172,196,198,
|
|
201,197,229,244,246,165,181,166,182,214,220,171,187,163,215,232,
|
|
225,237,243,250,161,177,174,190,202,234, 0,188,200,186, 0, 0,
|
|
0, 0, 0, 0, 0,193,194,204,170, 0, 0, 0, 0,175,191, 0,
|
|
0, 0, 0, 0, 0, 0,195,227, 0, 0, 0, 0, 0, 0, 0,164,
|
|
240,208,207,203,239,210,205,206,236, 0, 0, 0, 0,222,217, 0,
|
|
211,223,212,209,241,242,169,185,192,218,224,219,253,221,254,180,
|
|
0,189,178,183,162,167,247,184, 0,168,255,251,216,248, 0, 0
|
|
};
|
|
static unsigned char til2_tpc2[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
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,164,244,157,207,149,151,245,249,230,184,155,141, 0,166,189,
|
|
0,165,242,136,239,150,152,243,247,231,173,156,171,241,167,190,
|
|
232,181,182,198,142,145,143,128,172,144,168,211,183,214,215,210,
|
|
209,227,213,224,226,138,153,158,252,222,233,235,154,237,221,225,
|
|
234,160,131,199,132,146,134,135,159,130,169,137,216,161,140,212,
|
|
208,228,229,162,147,139,148,246,253,133,163,251,129,236,238,250
|
|
};
|
|
|
|
/* Encoding used by standard IBM PC vga cards to iso8859-2 */
|
|
static unsigned char tvga_til2[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
199,252,233,226,228, 0, 0,231, 0,235, 0, 0,238, 0,196, 0,
|
|
201, 0, 0,244,246, 0, 0, 0, 0,214,220, 0, 0, 0, 0, 0,
|
|
225,237,243,250, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0,247, 0,176, 0, 0, 0, 0, 0, 0, 0
|
|
};
|
|
static unsigned char til2_tvga[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0,142, 0, 0,128, 0,144, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0,153, 0, 0, 0, 0, 0,154, 0, 0, 0,
|
|
0,160,131, 0,132, 0, 0,135, 0,130, 0,137, 0,161,140, 0,
|
|
0, 0, 0,162,147, 0,148,246, 0, 0,163, 0,129, 0, 0, 0
|
|
};
|
|
|
|
//Ukrainian koi8 and win1251 converting tables by Max Veremayenko
|
|
//(verem@tg.kiev.ua
|
|
|
|
static unsigned char koi8_ukr_win1251ukr[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
|
|
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
|
|
160,161,162,184,186,165,179,191,168,169,170,171,172,180,174,175,
|
|
176,177,178,168,170,181,178,175,184,185,186,187,188,165,190,191,
|
|
254,224,225,246,228,229,244,227,245,232,233,234,235,236,237,238,
|
|
239,255,240,241,242,243,230,226,252,251,231,248,253,249,247,250,
|
|
222,192,193,214,196,197,212,195,213,200,201,202,203,204,205,206,
|
|
207,223,208,209,210,211,198,194,220,219,199,216,221,217,215,218
|
|
};
|
|
|
|
static unsigned char win1251ukr_koi8_ukr[256] = {
|
|
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,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
|
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
|
|
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
|
|
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
|
|
160,161,162,163,164,189,166,167,179,169,180,171,172,173,174,183,
|
|
176,177,182,166,173,181,182,183,163,185,164,187,188,189,190,167,
|
|
225,226,247,231,228,229,246,250,233,234,235,236,237,238,239,240,
|
|
242,243,244,245,230,232,227,254,251,253,255,249,248,252,224,241,
|
|
193,194,215,199,196,197,214,218,201,202,203,204,205,206,207,208,
|
|
210,211,212,213,198,200,195,222,219,221,223,217,216,220,192,209
|
|
};
|
|
|
|
#endif /* DEFINE_ALL_CHARACTER_SETS */
|
|
|
|
/****************************************************************************
|
|
** Declare mapping variables
|
|
****************************************************************************/
|
|
|
|
|
|
CONVERT conv_cp1251_koi8("cp1251_koi8", cp1251_koi8, koi8_cp1251, 1);
|
|
#ifdef DEFINE_ALL_CHARACTER_SETS
|
|
CONVERT conv_cp1250_latin2("cp1250_latin2", t1250_til2, til2_t1250, 2);
|
|
CONVERT conv_kam_latin2("kam_latin2", tkam_til2, til2_tkam, 3);
|
|
CONVERT conv_mac_latin2("mac_latin2", tmac_til2, til2_tmac, 4);
|
|
CONVERT conv_macce_latin2("macce_latin2", tmacce_til2, til2_tmacce, 5);
|
|
CONVERT conv_pc2_latin2("pc2_latin2", tpc2_til2, til2_tpc2, 6);
|
|
CONVERT conv_vga_latin2("vga_latin2", tvga_til2, til2_tvga, 7);
|
|
CONVERT conv_koi8_cp1251("koi8_cp1251", koi8_cp1251, cp1251_koi8, 8);
|
|
CONVERT conv_win1251ukr_koi8_ukr("win1251ukr_koi8_ukr", win1251ukr_koi8_ukr,
|
|
koi8_ukr_win1251ukr, 9);
|
|
CONVERT conv_koi8_ukr_win1251ukr("koi8_ukr_win1251ukr", koi8_ukr_win1251ukr,
|
|
win1251ukr_koi8_ukr, 10);
|
|
#endif /* DEFINE_ALL_CHARACTER_SETS */
|
|
|
|
CONVERT *convert_tables[]= {
|
|
&conv_cp1251_koi8,
|
|
#ifdef DEFINE_ALL_CHARACTER_SETS
|
|
&conv_cp1250_latin2,
|
|
&conv_kam_latin2,
|
|
&conv_mac_latin2,
|
|
&conv_macce_latin2,
|
|
&conv_pc2_latin2,
|
|
&conv_vga_latin2,
|
|
&conv_koi8_cp1251,
|
|
&conv_win1251ukr_koi8_ukr,
|
|
&conv_koi8_ukr_win1251ukr,
|
|
#endif /* DEFINE_ALL_CHARACTER_SETS */
|
|
NULL
|
|
};
|
|
|
|
|
|
CONVERT *get_convert_set(const char *name)
|
|
{
|
|
for (CONVERT **ptr=convert_tables ; *ptr ; ptr++)
|
|
{
|
|
/*
|
|
BAR TODO: Monty's comments:
|
|
Why is this using system_charset_info ?
|
|
Isn't the character-set string given in the users default charset?
|
|
Please add a TODO note to the code that this has to be fixed when the user
|
|
will be able to cast strings to different character sets...
|
|
The current code will also not work if/when we introduce support for
|
|
16 bit characters...
|
|
(I know that there is a LOT of changes to do if we ever want do this...)
|
|
*/
|
|
if (!my_strcasecmp(system_charset_info,(*ptr)->name,name))
|
|
return (*ptr);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
void CONVERT::convert_array(const uchar *map, uchar * buf, uint len)
|
|
{
|
|
for (uchar *end=buf+len ; buf != end ; buf++)
|
|
*buf= map[*buf];
|
|
}
|
|
|
|
|
|
/* This is identical as net_store_data, but with a conversion */
|
|
|
|
bool CONVERT::store(String *packet,const char *from,uint length)
|
|
{
|
|
uint packet_length=packet->length();
|
|
if (packet_length+5+length > packet->alloced_length() &&
|
|
packet->realloc(packet_length+5+length))
|
|
return 1;
|
|
char *to=(char*) net_store_length((char*) packet->ptr()+packet_length,
|
|
(ulonglong)length);
|
|
|
|
for (const char *end=from+length ; from != end ; from++)
|
|
*to++= to_map[(uchar) *from];
|
|
packet->length((uint) (to-packet->ptr()));
|
|
return 0;
|
|
}
|