ctype-euc_kr.c
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:9k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
  2.    
  3.    This library is free software; you can redistribute it and/or
  4.    modify it under the terms of the GNU Library General Public
  5.    License as published by the Free Software Foundation; either
  6.    version 2 of the License, or (at your option) any later version.
  7.    
  8.    This library is distributed in the hope that it will be useful,
  9.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.    Library General Public License for more details.
  12.    
  13.    You should have received a copy of the GNU Library General Public
  14.    License along with this library; if not, write to the Free
  15.    Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  16.    MA 02111-1307, USA */
  17. /* 
  18.  * This file is for Korean EUC charset, and created by powerm90@tinc.co.kr.
  19.  * and updated by mrpark@tinc.co.kr.
  20.  */
  21. /*
  22.  * This comment is parsed by configure to create ctype.c,
  23.  * so don't change it unless you know what you are doing.
  24.  *
  25.  * .configure. mbmaxlen_euc_kr=2
  26.  */
  27. #include <global.h>
  28. #include "m_string.h"
  29. uchar NEAR ctype_euc_kr[257] =
  30. {
  31.     0, /* For standard library */
  32.     0040, 0040, 0040, 0040, 0040, 0040, 0040, 0040, /* NUL ^A - ^G */
  33.     0040, 0050, 0050, 0050, 0050, 0050, 0040, 0040, /* ^H - ^O */
  34.     0040, 0040, 0040, 0040, 0040, 0040, 0040, 0040, /* ^P - ^W */
  35.     0040, 0040, 0040, 0040, 0040, 0040, 0040, 0040, /* ^X - ^Z ^[ ^ ^] ^^ ^_ */
  36.     0110, 0020, 0020, 0020, 0020, 0020, 0020, 0020, /* SPC ! " # $ % ^ ' */
  37.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020, /* ( ) * + , - . / */
  38.     0204, 0204, 0204, 0204, 0204, 0204, 0204, 0204, /* 0 1 2 3 4 5 6 7 */
  39.     0204, 0204, 0020, 0020, 0020, 0020, 0020, 0020, /* 8 9 : ; < = > ? */
  40.     0020, 0201, 0201, 0201, 0201, 0201, 0201, 0001, /* @ A B C D E F G */
  41.     0001, 0001, 0001, 0001, 0001, 0001, 0001, 0001, /* H I J K L M N O */
  42.     0001, 0001, 0001, 0001, 0001, 0001, 0001, 0001, /* P Q R S T U V W */
  43.     0001, 0001, 0001, 0020, 0020, 0020, 0020, 0020, /* X Y Z [  ] ^ _ */
  44.     0020, 0202, 0202, 0202, 0202, 0202, 0202, 0002, /* ` a b c d e f g */
  45.     0002, 0002, 0002, 0002, 0002, 0002, 0002, 0002, /* h i j k l m n o */
  46.     0002, 0002, 0002, 0002, 0002, 0002, 0002, 0002, /* p q r s t u v w */
  47.     0002, 0002, 0002, 0020, 0020, 0020, 0020, 0040, /* x y z { | } + DEL */
  48.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  49.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  50.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  51.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  52.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  53.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  54.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  55.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  56.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  57.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  58.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  59.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  60.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  61.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  62.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0020,
  63.     0020, 0020, 0020, 0020, 0020, 0020, 0020, 0000,
  64. };
  65. uchar NEAR to_lower_euc_kr[]=
  66. {
  67.   '00','01','02','03','04','05','06','07',
  68.   '10','11','12','13','14','15','16','17',
  69.   '20','21','22','23','24','25','26','27',
  70.   '30','31','32','33','34','35','36','37',
  71.   ' ',  '!', '"',   '#',   '$',   '%',   '&',   ''',
  72.   '(',  ')', '*',   '+',   ',',   '-',   '.',   '/',
  73.   '0',  '1', '2',   '3',   '4',   '5',   '6',   '7',
  74.   '8',  '9', ':',   ';',   '<',   '=',   '>',   '?',
  75.   '@',  'a', 'b',   'c',   'd',   'e',   'f',   'g',
  76.   'h',  'i', 'j',   'k',   'l',   'm',   'n',   'o',
  77.   'p',  'q', 'r',   's',   't',   'u',   'v',   'w',
  78.   'x',  'y', 'z',   '[',   '\',  ']',   '^',   '_',
  79.   '`',  'a', 'b',   'c',   'd',   'e',   'f',   'g',
  80.   'h',  'i', 'j',   'k',   'l',   'm',   'n',   'o',
  81.   'p',  'q', 'r',   's',   't',   'u',   'v',   'w',
  82.   'x',  'y', 'z',   '{',   '|',   '}',   '~',   '177',
  83.   '200','201','202','203','204','205','206','207',
  84.   '210','211','212','213','214','215','216','217',
  85.   '220','221','222','223','224','225','226','227',
  86.   '230','231','232','233','234','235','236','237',
  87.   '240','241','242','243','244','245','246','247',
  88.   '250','251','252','253','254','255','256','257',
  89.   '260','261','262','263','264','265','266','267',
  90.   '270','271','272','273','274','275','276','277',
  91.   '300','301','302','303','304','305','306','307',
  92.   '310','311','312','313','314','315','316','317',
  93.   '320','321','322','323','324','325','326','327',
  94.   '330','331','332','333','334','335','336','337',
  95.   '340','341','342','343','344','345','346','347',
  96.   '350','351','352','353','354','355','356','357',
  97.   '360','361','362','363','364','365','366','367',
  98.   '370','371','372','373','374','375','376','377',
  99. };
  100. uchar NEAR to_upper_euc_kr[]=
  101. {
  102.   '00','01','02','03','04','05','06','07',
  103.   '10','11','12','13','14','15','16','17',
  104.   '20','21','22','23','24','25','26','27',
  105.   '30','31','32','33','34','35','36','37',
  106.   ' ',  '!', '"',   '#',   '$',   '%',   '&',   ''',
  107.   '(',  ')', '*',   '+',   ',',   '-',   '.',   '/',
  108.   '0',  '1', '2',   '3',   '4',   '5',   '6',   '7',
  109.   '8',  '9', ':',   ';',   '<',   '=',   '>',   '?',
  110.   '@',  'A', 'B',   'C',   'D',   'E',   'F',   'G',
  111.   'H',  'I', 'J',   'K',   'L',   'M',   'N',   'O',
  112.   'P',  'Q', 'R',   'S',   'T',   'U',   'V',   'W',
  113.   'X',  'Y', 'Z',   '[',   '\',  ']',   '^',   '_',
  114.   '`',  'A', 'B',   'C',   'D',   'E',   'F',   'G',
  115.   'H',  'I', 'J',   'K',   'L',   'M',   'N',   'O',
  116.   'P',  'Q', 'R',   'S',   'T',   'U',   'V',   'W',
  117.   'X',  'Y', 'Z',   '{',   '|',   '}',   '~',   '177',
  118.   '200','201','202','203','204','205','206','207',
  119.   '210','211','212','213','214','215','216','217',
  120.   '220','221','222','223','224','225','226','227',
  121.   '230','231','232','233','234','235','236','237',
  122.   '240','241','242','243','244','245','246','247',
  123.   '250','251','252','253','254','255','256','257',
  124.   '260','261','262','263','264','265','266','267',
  125.   '270','271','272','273','274','275','276','277',
  126.   '300','301','302','303','304','305','306','307',
  127.   '310','311','312','313','314','315','316','317',
  128.   '320','321','322','323','324','325','326','327',
  129.   '330','331','332','333','334','335','336','337',
  130.   '340','341','342','343','344','345','346','347',
  131.   '350','351','352','353','354','355','356','357',
  132.   '360','361','362','363','364','365','366','367',
  133.   '370','371','372','373','374','375','376','377',
  134. };
  135. uchar NEAR sort_order_euc_kr[]=
  136. {
  137.   '00','01','02','03','04','05','06','07',
  138.   '10','11','12','13','14','15','16','17',
  139.   '20','21','22','23','24','25','26','27',
  140.   '30','31','32','33','34','35','36','37',
  141.   ' ',  '!', '"',   '#',   '$',   '%',   '&',   ''',
  142.   '(',  ')', '*',   '+',   ',',   '-',   '.',   '/',
  143.   '0',  '1', '2',   '3',   '4',   '5',   '6',   '7',
  144.   '8',  '9', ':',   ';',   '<',   '=',   '>',   '?',
  145.   '@',  'A', 'B',   'C',   'D',   'E',   'F',   'G',
  146.   'H',  'I', 'J',   'K',   'L',   'M',   'N',   'O',
  147.   'P',  'Q', 'R',   'S',   'T',   'U',   'V',   'W',
  148.   'X',  'Y', 'Z',   '[',   '\',  ']',   '^',   '_',
  149.   '`',  'A', 'B',   'C',   'D',   'E',   'F',   'G',
  150.   'H',  'I', 'J',   'K',   'L',   'M',   'N',   'O',
  151.   'P',  'Q', 'R',   'S',   'T',   'U',   'V',   'W',
  152.   'X',  'Y', 'Z',   '{',   '|',   '}',   '~',   '177',
  153.   '200','201','202','203','204','205','206','207',
  154.   '210','211','212','213','214','215','216','217',
  155.   '220','221','222','223','224','225','226','227',
  156.   '230','231','232','233','234','235','236','237',
  157.   '240','241','242','243','244','245','246','247',
  158.   '250','251','252','253','254','255','256','257',
  159.   '260','261','262','263','264','265','266','267',
  160.   '270','271','272','273','274','275','276','277',
  161.   '300','301','302','303','304','305','306','307',
  162.   '310','311','312','313','314','315','316','317',
  163.   '320','321','322','323','324','325','326','327',
  164.   '330','331','332','333','334','335','336','337',
  165.   '340','341','342','343','344','345','346','347',
  166.   '350','351','352','353','354','355','356','357',
  167.   '360','361','362','363','364','365','366','367',
  168.   '370','371','372','373','374','375','376','377',
  169. };
  170. /* Support for Korean(EUC_KR) characters, by powerm90@tinc.co.kr and mrpark@tinc.co.kr */
  171. #define iseuc_kr(c)     ((0xa1<=(uchar)(c) && (uchar)(c)<=0xfe))
  172. int ismbchar_euc_kr(const char* p, const char *e)
  173. {
  174.   return ((*(uchar*)(p)<0x80)? 0:
  175.           iseuc_kr(*(p)) && (e)-(p)>1 && iseuc_kr(*((p)+1))? 2:
  176.           0);
  177. }
  178. my_bool ismbhead_euc_kr(uint c)
  179. {
  180.   return (iseuc_kr(c));
  181. }
  182. int mbcharlen_euc_kr(uint c)
  183. {
  184.   return (iseuc_kr(c) ? 2 : 0);
  185. }