Date: Wed, 18 Jun 2014 03:07:17 GMT From: ghostmansd@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r269713 - in soc2014/ghostmansd/head: include lib/libc/string lib/libc/string/norm Message-ID: <201406180307.s5I37HFF057350@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: ghostmansd Date: Wed Jun 18 03:07:16 2014 New Revision: 269713 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=269713 Log: NFD quick check algorithm; style(9) fixes. Added: soc2014/ghostmansd/head/lib/libc/string/norm/ soc2014/ghostmansd/head/lib/libc/string/norm/hangul.h soc2014/ghostmansd/head/lib/libc/string/norm/nfd.h Deleted: soc2014/ghostmansd/head/lib/libc/string/normalization.h Modified: soc2014/ghostmansd/head/include/string.h soc2014/ghostmansd/head/include/wchar.h soc2014/ghostmansd/head/lib/libc/string/strnorm.c soc2014/ghostmansd/head/lib/libc/string/wcsnorm.c Modified: soc2014/ghostmansd/head/include/string.h ============================================================================== --- soc2014/ghostmansd/head/include/string.h Wed Jun 18 02:36:21 2014 (r269712) +++ soc2014/ghostmansd/head/include/string.h Wed Jun 18 03:07:16 2014 (r269713) @@ -141,25 +141,28 @@ #include <xlocale/_string.h> #endif + /* Unicode Normalization algorithm */ #ifndef _WCHAR_H_ - #define __NORM_NFD 0 - #define __NORM_NFC 1 - #define __NORM_NFKD 2 - #define __NORM_NFKC 3 +#define __NORM_NFD 0 +#define __NORM_NFC 1 +#define __NORM_NFKD 2 +#define __NORM_NFKC 3 #endif -size_t __strnorm(char*, size_t, char const*, int); -size_t __strnorm_l(char*, size_t, char const*, int, locale_t); + +size_t __strnorm(char*, size_t, const char*, int); +size_t __strnorm_l(char*, size_t, const char*, int, locale_t); + #ifdef _UNICODE_ADDENDA - #define strnorm __strnorm - #define wcsnorm __wcsnorm +#define strnorm __strnorm +#define wcsnorm __wcsnorm #endif -#if !defined(_WCHAR_H_) \ -&& defined(_UNICODE_ADDENDA) - #define NORM_NFD __NORM_NFD - #define NORM_NFC __NORM_NFC - #define NORM_NFKD __NORM_NFKD - #define NORM_NFKC __NORM_NFKC + +#if !defined(_WCHAR_H_) && defined(_UNICODE_ADDENDA) +#define NORM_NFD __NORM_NFD +#define NORM_NFC __NORM_NFC +#define NORM_NFKD __NORM_NFKD +#define NORM_NFKC __NORM_NFKC #endif __END_DECLS Modified: soc2014/ghostmansd/head/include/wchar.h ============================================================================== --- soc2014/ghostmansd/head/include/wchar.h Wed Jun 18 02:36:21 2014 (r269712) +++ soc2014/ghostmansd/head/include/wchar.h Wed Jun 18 03:07:16 2014 (r269713) @@ -228,23 +228,26 @@ #include <xlocale/_wchar.h> #endif + /* Unicode Normalization Algorithm */ #ifndef _STRING_H_ - #define __NORM_NFD 0 - #define __NORM_NFC 1 - #define __NORM_NFKD 2 - #define __NORM_NFKC 3 +#define __NORM_NFD 0 +#define __NORM_NFC 1 +#define __NORM_NFKD 2 +#define __NORM_NFKC 3 #endif -size_t __wcsnorm(wchar_t*, size_t, wchar_t const*, int); + +size_t __wcsnorm(wchar_t*, size_t, const wchar_t*, int); + #ifdef _UNICODE_ADDENDA - #define wcscoll __wcscoll +#define wcscoll __wcscoll #endif -#if !defined(_STRING_H_) \ -&& defined(_UNICODE_ADDENDA) - #define NORM_NFD __NORM_NFD - #define NORM_NFC __NORM_NFC - #define NORM_NFKD __NORM_NFKD - #define NORM_NFKC __NORM_NFKC + +#if !defined(_STRING_H_) && defined(_UNICODE_ADDENDA) +#define NORM_NFD __NORM_NFD +#define NORM_NFC __NORM_NFC +#define NORM_NFKD __NORM_NFKD +#define NORM_NFKC __NORM_NFKC #endif __END_DECLS Added: soc2014/ghostmansd/head/lib/libc/string/norm/hangul.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2014/ghostmansd/head/lib/libc/string/norm/hangul.h Wed Jun 18 03:07:16 2014 (r269713) @@ -0,0 +1,619 @@ +/* + * Copyright (c) 2014 Dmitry Selyutin <ghostmansd@FreeBSD.org> + * at Lomonosov Moscow State University - www.msu.ru + * All rights reserved. + * + * Copyright (c) 2014 The FreeBSD Foundation + * All rights reserved. + * Portions of this software were developed by David Chisnall + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _NORM_H_ +#define _NORM_H_ + + +#define HANGUL_MIN 0xAC00 +#define HANGUL_MAX 0xD7A4 +#define HANGUL_BASE HANGUL_MIN + +#define HANGUL_LEAD_COUNT 19 +#define HANGUL_VOWEL_COUNT 21 +#define HANGUL_TRAIL_COUNT 28 + +#define HANGUL_LEAD_MIN 0x1100 +#define HANGUL_VOWEL_MIN 0x1161 +#define HANGUL_TRAIL_MIN 0x11A7 + +#define HANGUL_LEAD_MAX ((HANGUL_LEAD_MIN + HANGUL_LEAD_COUNT) - 1) +#define HANGUL_VOWEL_MAX ((HANGUL_VOWEL_MIN + HANGUL_VOWEL_COUNT) - 1) +#define HANGUL_TRAIL_MAX ((HANGUL_TRAIL_MIN + HANGUL_TRAIL_COUNT) - 1) + +#define HANGUL_BASE_COUNT 588 +#define HANGUL_FULL_COUNT 11172 + +#define HANGUL_LEAD_TYPE 1 +#define HANGUL_VOWEL_TYPE 2 +#define HANGUL_TRAIL_TYPE 3 +#define HANGUL_LEAD_VOWEL_TYPE 4 +#define HANGUL_LEAD_VOWEL_TRAIL_TYPE 5 + + +/* The source code was automatically generated from HangulSyllableType.txt. + * This function is used to check type of the Hangul syllables. */ +static int hangul_syllable(wchar_t code) +{ + if (((0x1100 <= code) && (code <= 0x115F)) || + ((0xA960 <= code) && (code <= 0xA97C))) + return HANGUL_LEAD_TYPE; + + if (((0x1160 <= code) && (code <= 0x11A7)) || + ((0xD7B0 <= code) && (code <= 0xD7C6))) + return HANGUL_VOWEL_TYPE; + + if (((0x11A8 <= code) && (code <= 0x11FF)) || + ((0xD7CB <= code) && (code <= 0xD7FB))) + return HANGUL_TRAIL_TYPE; + + if ((code == 0xAC00) || (code == 0xAC1C) || (code == 0xAC38) || + (code == 0xAC54) || (code == 0xAC70) || (code == 0xAC8C) || + (code == 0xACA8) || (code == 0xACC4) || (code == 0xACE0) || + (code == 0xACFC) || (code == 0xAD18) || (code == 0xAD34) || + (code == 0xAD50) || (code == 0xAD6C) || (code == 0xAD88) || + (code == 0xADA4) || (code == 0xADC0) || (code == 0xADDC) || + (code == 0xADF8) || (code == 0xAE14) || (code == 0xAE30) || + (code == 0xAE4C) || (code == 0xAE68) || (code == 0xAE84) || + (code == 0xAEA0) || (code == 0xAEBC) || (code == 0xAED8) || + (code == 0xAEF4) || (code == 0xAF10) || (code == 0xAF2C) || + (code == 0xAF48) || (code == 0xAF64) || (code == 0xAF80) || + (code == 0xAF9C) || (code == 0xAFB8) || (code == 0xAFD4) || + (code == 0xAFF0) || (code == 0xB00C) || (code == 0xB028) || + (code == 0xB044) || (code == 0xB060) || (code == 0xB07C) || + (code == 0xB098) || (code == 0xB0B4) || (code == 0xB0D0) || + (code == 0xB0EC) || (code == 0xB108) || (code == 0xB124) || + (code == 0xB140) || (code == 0xB15C) || (code == 0xB178) || + (code == 0xB194) || (code == 0xB1B0) || (code == 0xB1CC) || + (code == 0xB1E8) || (code == 0xB204) || (code == 0xB220) || + (code == 0xB23C) || (code == 0xB258) || (code == 0xB274) || + (code == 0xB290) || (code == 0xB2AC) || (code == 0xB2C8) || + (code == 0xB2E4) || (code == 0xB300) || (code == 0xB31C) || + (code == 0xB338) || (code == 0xB354) || (code == 0xB370) || + (code == 0xB38C) || (code == 0xB3A8) || (code == 0xB3C4) || + (code == 0xB3E0) || (code == 0xB3FC) || (code == 0xB418) || + (code == 0xB434) || (code == 0xB450) || (code == 0xB46C) || + (code == 0xB488) || (code == 0xB4A4) || (code == 0xB4C0) || + (code == 0xB4DC) || (code == 0xB4F8) || (code == 0xB514) || + (code == 0xB530) || (code == 0xB54C) || (code == 0xB568) || + (code == 0xB584) || (code == 0xB5A0) || (code == 0xB5BC) || + (code == 0xB5D8) || (code == 0xB5F4) || (code == 0xB610) || + (code == 0xB62C) || (code == 0xB648) || (code == 0xB664) || + (code == 0xB680) || (code == 0xB69C) || (code == 0xB6B8) || + (code == 0xB6D4) || (code == 0xB6F0) || (code == 0xB70C) || + (code == 0xB728) || (code == 0xB744) || (code == 0xB760) || + (code == 0xB77C) || (code == 0xB798) || (code == 0xB7B4) || + (code == 0xB7D0) || (code == 0xB7EC) || (code == 0xB808) || + (code == 0xB824) || (code == 0xB840) || (code == 0xB85C) || + (code == 0xB878) || (code == 0xB894) || (code == 0xB8B0) || + (code == 0xB8CC) || (code == 0xB8E8) || (code == 0xB904) || + (code == 0xB920) || (code == 0xB93C) || (code == 0xB958) || + (code == 0xB974) || (code == 0xB990) || (code == 0xB9AC) || + (code == 0xB9C8) || (code == 0xB9E4) || (code == 0xBA00) || + (code == 0xBA1C) || (code == 0xBA38) || (code == 0xBA54) || + (code == 0xBA70) || (code == 0xBA8C) || (code == 0xBAA8) || + (code == 0xBAC4) || (code == 0xBAE0) || (code == 0xBAFC) || + (code == 0xBB18) || (code == 0xBB34) || (code == 0xBB50) || + (code == 0xBB6C) || (code == 0xBB88) || (code == 0xBBA4) || + (code == 0xBBC0) || (code == 0xBBDC) || (code == 0xBBF8) || + (code == 0xBC14) || (code == 0xBC30) || (code == 0xBC4C) || + (code == 0xBC68) || (code == 0xBC84) || (code == 0xBCA0) || + (code == 0xBCBC) || (code == 0xBCD8) || (code == 0xBCF4) || + (code == 0xBD10) || (code == 0xBD2C) || (code == 0xBD48) || + (code == 0xBD64) || (code == 0xBD80) || (code == 0xBD9C) || + (code == 0xBDB8) || (code == 0xBDD4) || (code == 0xBDF0) || + (code == 0xBE0C) || (code == 0xBE28) || (code == 0xBE44) || + (code == 0xBE60) || (code == 0xBE7C) || (code == 0xBE98) || + (code == 0xBEB4) || (code == 0xBED0) || (code == 0xBEEC) || + (code == 0xBF08) || (code == 0xBF24) || (code == 0xBF40) || + (code == 0xBF5C) || (code == 0xBF78) || (code == 0xBF94) || + (code == 0xBFB0) || (code == 0xBFCC) || (code == 0xBFE8) || + (code == 0xC004) || (code == 0xC020) || (code == 0xC03C) || + (code == 0xC058) || (code == 0xC074) || (code == 0xC090) || + (code == 0xC0AC) || (code == 0xC0C8) || (code == 0xC0E4) || + (code == 0xC100) || (code == 0xC11C) || (code == 0xC138) || + (code == 0xC154) || (code == 0xC170) || (code == 0xC18C) || + (code == 0xC1A8) || (code == 0xC1C4) || (code == 0xC1E0) || + (code == 0xC1FC) || (code == 0xC218) || (code == 0xC234) || + (code == 0xC250) || (code == 0xC26C) || (code == 0xC288) || + (code == 0xC2A4) || (code == 0xC2C0) || (code == 0xC2DC) || + (code == 0xC2F8) || (code == 0xC314) || (code == 0xC330) || + (code == 0xC34C) || (code == 0xC368) || (code == 0xC384) || + (code == 0xC3A0) || (code == 0xC3BC) || (code == 0xC3D8) || + (code == 0xC3F4) || (code == 0xC410) || (code == 0xC42C) || + (code == 0xC448) || (code == 0xC464) || (code == 0xC480) || + (code == 0xC49C) || (code == 0xC4B8) || (code == 0xC4D4) || + (code == 0xC4F0) || (code == 0xC50C) || (code == 0xC528) || + (code == 0xC544) || (code == 0xC560) || (code == 0xC57C) || + (code == 0xC598) || (code == 0xC5B4) || (code == 0xC5D0) || + (code == 0xC5EC) || (code == 0xC608) || (code == 0xC624) || + (code == 0xC640) || (code == 0xC65C) || (code == 0xC678) || + (code == 0xC694) || (code == 0xC6B0) || (code == 0xC6CC) || + (code == 0xC6E8) || (code == 0xC704) || (code == 0xC720) || + (code == 0xC73C) || (code == 0xC758) || (code == 0xC774) || + (code == 0xC790) || (code == 0xC7AC) || (code == 0xC7C8) || + (code == 0xC7E4) || (code == 0xC800) || (code == 0xC81C) || + (code == 0xC838) || (code == 0xC854) || (code == 0xC870) || + (code == 0xC88C) || (code == 0xC8A8) || (code == 0xC8C4) || + (code == 0xC8E0) || (code == 0xC8FC) || (code == 0xC918) || + (code == 0xC934) || (code == 0xC950) || (code == 0xC96C) || + (code == 0xC988) || (code == 0xC9A4) || (code == 0xC9C0) || + (code == 0xC9DC) || (code == 0xC9F8) || (code == 0xCA14) || + (code == 0xCA30) || (code == 0xCA4C) || (code == 0xCA68) || + (code == 0xCA84) || (code == 0xCAA0) || (code == 0xCABC) || + (code == 0xCAD8) || (code == 0xCAF4) || (code == 0xCB10) || + (code == 0xCB2C) || (code == 0xCB48) || (code == 0xCB64) || + (code == 0xCB80) || (code == 0xCB9C) || (code == 0xCBB8) || + (code == 0xCBD4) || (code == 0xCBF0) || (code == 0xCC0C) || + (code == 0xCC28) || (code == 0xCC44) || (code == 0xCC60) || + (code == 0xCC7C) || (code == 0xCC98) || (code == 0xCCB4) || + (code == 0xCCD0) || (code == 0xCCEC) || (code == 0xCD08) || + (code == 0xCD24) || (code == 0xCD40) || (code == 0xCD5C) || + (code == 0xCD78) || (code == 0xCD94) || (code == 0xCDB0) || + (code == 0xCDCC) || (code == 0xCDE8) || (code == 0xCE04) || + (code == 0xCE20) || (code == 0xCE3C) || (code == 0xCE58) || + (code == 0xCE74) || (code == 0xCE90) || (code == 0xCEAC) || + (code == 0xCEC8) || (code == 0xCEE4) || (code == 0xCF00) || + (code == 0xCF1C) || (code == 0xCF38) || (code == 0xCF54) || + (code == 0xCF70) || (code == 0xCF8C) || (code == 0xCFA8) || + (code == 0xCFC4) || (code == 0xCFE0) || (code == 0xCFFC) || + (code == 0xD018) || (code == 0xD034) || (code == 0xD050) || + (code == 0xD06C) || (code == 0xD088) || (code == 0xD0A4) || + (code == 0xD0C0) || (code == 0xD0DC) || (code == 0xD0F8) || + (code == 0xD114) || (code == 0xD130) || (code == 0xD14C) || + (code == 0xD168) || (code == 0xD184) || (code == 0xD1A0) || + (code == 0xD1BC) || (code == 0xD1D8) || (code == 0xD1F4) || + (code == 0xD210) || (code == 0xD22C) || (code == 0xD248) || + (code == 0xD264) || (code == 0xD280) || (code == 0xD29C) || + (code == 0xD2B8) || (code == 0xD2D4) || (code == 0xD2F0) || + (code == 0xD30C) || (code == 0xD328) || (code == 0xD344) || + (code == 0xD360) || (code == 0xD37C) || (code == 0xD398) || + (code == 0xD3B4) || (code == 0xD3D0) || (code == 0xD3EC) || + (code == 0xD408) || (code == 0xD424) || (code == 0xD440) || + (code == 0xD45C) || (code == 0xD478) || (code == 0xD494) || + (code == 0xD4B0) || (code == 0xD4CC) || (code == 0xD4E8) || + (code == 0xD504) || (code == 0xD520) || (code == 0xD53C) || + (code == 0xD558) || (code == 0xD574) || (code == 0xD590) || + (code == 0xD5AC) || (code == 0xD5C8) || (code == 0xD5E4) || + (code == 0xD600) || (code == 0xD61C) || (code == 0xD638) || + (code == 0xD654) || (code == 0xD670) || (code == 0xD68C) || + (code == 0xD6A8) || (code == 0xD6C4) || (code == 0xD6E0) || + (code == 0xD6FC) || (code == 0xD718) || (code == 0xD734) || + (code == 0xD750) || (code == 0xD76C) || (code == 0xD788)) + return HANGUL_LEAD_VOWEL_TYPE; + + if (((0xAC01 <= code) && (code <= 0xAC1B)) || + ((0xAC1D <= code) && (code <= 0xAC37)) || + ((0xAC39 <= code) && (code <= 0xAC53)) || + ((0xAC55 <= code) && (code <= 0xAC6F)) || + ((0xAC71 <= code) && (code <= 0xAC8B)) || + ((0xAC8D <= code) && (code <= 0xACA7)) || + ((0xACA9 <= code) && (code <= 0xACC3)) || + ((0xACC5 <= code) && (code <= 0xACDF)) || + ((0xACE1 <= code) && (code <= 0xACFB)) || + ((0xACFD <= code) && (code <= 0xAD17)) || + ((0xAD19 <= code) && (code <= 0xAD33)) || + ((0xAD35 <= code) && (code <= 0xAD4F)) || + ((0xAD51 <= code) && (code <= 0xAD6B)) || + ((0xAD6D <= code) && (code <= 0xAD87)) || + ((0xAD89 <= code) && (code <= 0xADA3)) || + ((0xADA5 <= code) && (code <= 0xADBF)) || + ((0xADC1 <= code) && (code <= 0xADDB)) || + ((0xADDD <= code) && (code <= 0xADF7)) || + ((0xADF9 <= code) && (code <= 0xAE13)) || + ((0xAE15 <= code) && (code <= 0xAE2F)) || + ((0xAE31 <= code) && (code <= 0xAE4B)) || + ((0xAE4D <= code) && (code <= 0xAE67)) || + ((0xAE69 <= code) && (code <= 0xAE83)) || + ((0xAE85 <= code) && (code <= 0xAE9F)) || + ((0xAEA1 <= code) && (code <= 0xAEBB)) || + ((0xAEBD <= code) && (code <= 0xAED7)) || + ((0xAED9 <= code) && (code <= 0xAEF3)) || + ((0xAEF5 <= code) && (code <= 0xAF0F)) || + ((0xAF11 <= code) && (code <= 0xAF2B)) || + ((0xAF2D <= code) && (code <= 0xAF47)) || + ((0xAF49 <= code) && (code <= 0xAF63)) || + ((0xAF65 <= code) && (code <= 0xAF7F)) || + ((0xAF81 <= code) && (code <= 0xAF9B)) || + ((0xAF9D <= code) && (code <= 0xAFB7)) || + ((0xAFB9 <= code) && (code <= 0xAFD3)) || + ((0xAFD5 <= code) && (code <= 0xAFEF)) || + ((0xAFF1 <= code) && (code <= 0xB00B)) || + ((0xB00D <= code) && (code <= 0xB027)) || + ((0xB029 <= code) && (code <= 0xB043)) || + ((0xB045 <= code) && (code <= 0xB05F)) || + ((0xB061 <= code) && (code <= 0xB07B)) || + ((0xB07D <= code) && (code <= 0xB097)) || + ((0xB099 <= code) && (code <= 0xB0B3)) || + ((0xB0B5 <= code) && (code <= 0xB0CF)) || + ((0xB0D1 <= code) && (code <= 0xB0EB)) || + ((0xB0ED <= code) && (code <= 0xB107)) || + ((0xB109 <= code) && (code <= 0xB123)) || + ((0xB125 <= code) && (code <= 0xB13F)) || + ((0xB141 <= code) && (code <= 0xB15B)) || + ((0xB15D <= code) && (code <= 0xB177)) || + ((0xB179 <= code) && (code <= 0xB193)) || + ((0xB195 <= code) && (code <= 0xB1AF)) || + ((0xB1B1 <= code) && (code <= 0xB1CB)) || + ((0xB1CD <= code) && (code <= 0xB1E7)) || + ((0xB1E9 <= code) && (code <= 0xB203)) || + ((0xB205 <= code) && (code <= 0xB21F)) || + ((0xB221 <= code) && (code <= 0xB23B)) || + ((0xB23D <= code) && (code <= 0xB257)) || + ((0xB259 <= code) && (code <= 0xB273)) || + ((0xB275 <= code) && (code <= 0xB28F)) || + ((0xB291 <= code) && (code <= 0xB2AB)) || + ((0xB2AD <= code) && (code <= 0xB2C7)) || + ((0xB2C9 <= code) && (code <= 0xB2E3)) || + ((0xB2E5 <= code) && (code <= 0xB2FF)) || + ((0xB301 <= code) && (code <= 0xB31B)) || + ((0xB31D <= code) && (code <= 0xB337)) || + ((0xB339 <= code) && (code <= 0xB353)) || + ((0xB355 <= code) && (code <= 0xB36F)) || + ((0xB371 <= code) && (code <= 0xB38B)) || + ((0xB38D <= code) && (code <= 0xB3A7)) || + ((0xB3A9 <= code) && (code <= 0xB3C3)) || + ((0xB3C5 <= code) && (code <= 0xB3DF)) || + ((0xB3E1 <= code) && (code <= 0xB3FB)) || + ((0xB3FD <= code) && (code <= 0xB417)) || + ((0xB419 <= code) && (code <= 0xB433)) || + ((0xB435 <= code) && (code <= 0xB44F)) || + ((0xB451 <= code) && (code <= 0xB46B)) || + ((0xB46D <= code) && (code <= 0xB487)) || + ((0xB489 <= code) && (code <= 0xB4A3)) || + ((0xB4A5 <= code) && (code <= 0xB4BF)) || + ((0xB4C1 <= code) && (code <= 0xB4DB)) || + ((0xB4DD <= code) && (code <= 0xB4F7)) || + ((0xB4F9 <= code) && (code <= 0xB513)) || + ((0xB515 <= code) && (code <= 0xB52F)) || + ((0xB531 <= code) && (code <= 0xB54B)) || + ((0xB54D <= code) && (code <= 0xB567)) || + ((0xB569 <= code) && (code <= 0xB583)) || + ((0xB585 <= code) && (code <= 0xB59F)) || + ((0xB5A1 <= code) && (code <= 0xB5BB)) || + ((0xB5BD <= code) && (code <= 0xB5D7)) || + ((0xB5D9 <= code) && (code <= 0xB5F3)) || + ((0xB5F5 <= code) && (code <= 0xB60F)) || + ((0xB611 <= code) && (code <= 0xB62B)) || + ((0xB62D <= code) && (code <= 0xB647)) || + ((0xB649 <= code) && (code <= 0xB663)) || + ((0xB665 <= code) && (code <= 0xB67F)) || + ((0xB681 <= code) && (code <= 0xB69B)) || + ((0xB69D <= code) && (code <= 0xB6B7)) || + ((0xB6B9 <= code) && (code <= 0xB6D3)) || + ((0xB6D5 <= code) && (code <= 0xB6EF)) || + ((0xB6F1 <= code) && (code <= 0xB70B)) || + ((0xB70D <= code) && (code <= 0xB727)) || + ((0xB729 <= code) && (code <= 0xB743)) || + ((0xB745 <= code) && (code <= 0xB75F)) || + ((0xB761 <= code) && (code <= 0xB77B)) || + ((0xB77D <= code) && (code <= 0xB797)) || + ((0xB799 <= code) && (code <= 0xB7B3)) || + ((0xB7B5 <= code) && (code <= 0xB7CF)) || + ((0xB7D1 <= code) && (code <= 0xB7EB)) || + ((0xB7ED <= code) && (code <= 0xB807)) || + ((0xB809 <= code) && (code <= 0xB823)) || + ((0xB825 <= code) && (code <= 0xB83F)) || + ((0xB841 <= code) && (code <= 0xB85B)) || + ((0xB85D <= code) && (code <= 0xB877)) || + ((0xB879 <= code) && (code <= 0xB893)) || + ((0xB895 <= code) && (code <= 0xB8AF)) || + ((0xB8B1 <= code) && (code <= 0xB8CB)) || + ((0xB8CD <= code) && (code <= 0xB8E7)) || + ((0xB8E9 <= code) && (code <= 0xB903)) || + ((0xB905 <= code) && (code <= 0xB91F)) || + ((0xB921 <= code) && (code <= 0xB93B)) || + ((0xB93D <= code) && (code <= 0xB957)) || + ((0xB959 <= code) && (code <= 0xB973)) || + ((0xB975 <= code) && (code <= 0xB98F)) || + ((0xB991 <= code) && (code <= 0xB9AB)) || + ((0xB9AD <= code) && (code <= 0xB9C7)) || + ((0xB9C9 <= code) && (code <= 0xB9E3)) || + ((0xB9E5 <= code) && (code <= 0xB9FF)) || + ((0xBA01 <= code) && (code <= 0xBA1B)) || + ((0xBA1D <= code) && (code <= 0xBA37)) || + ((0xBA39 <= code) && (code <= 0xBA53)) || + ((0xBA55 <= code) && (code <= 0xBA6F)) || + ((0xBA71 <= code) && (code <= 0xBA8B)) || + ((0xBA8D <= code) && (code <= 0xBAA7)) || + ((0xBAA9 <= code) && (code <= 0xBAC3)) || + ((0xBAC5 <= code) && (code <= 0xBADF)) || + ((0xBAE1 <= code) && (code <= 0xBAFB)) || + ((0xBAFD <= code) && (code <= 0xBB17)) || + ((0xBB19 <= code) && (code <= 0xBB33)) || + ((0xBB35 <= code) && (code <= 0xBB4F)) || + ((0xBB51 <= code) && (code <= 0xBB6B)) || + ((0xBB6D <= code) && (code <= 0xBB87)) || + ((0xBB89 <= code) && (code <= 0xBBA3)) || + ((0xBBA5 <= code) && (code <= 0xBBBF)) || + ((0xBBC1 <= code) && (code <= 0xBBDB)) || + ((0xBBDD <= code) && (code <= 0xBBF7)) || + ((0xBBF9 <= code) && (code <= 0xBC13)) || + ((0xBC15 <= code) && (code <= 0xBC2F)) || + ((0xBC31 <= code) && (code <= 0xBC4B)) || + ((0xBC4D <= code) && (code <= 0xBC67)) || + ((0xBC69 <= code) && (code <= 0xBC83)) || + ((0xBC85 <= code) && (code <= 0xBC9F)) || + ((0xBCA1 <= code) && (code <= 0xBCBB)) || + ((0xBCBD <= code) && (code <= 0xBCD7)) || + ((0xBCD9 <= code) && (code <= 0xBCF3)) || + ((0xBCF5 <= code) && (code <= 0xBD0F)) || + ((0xBD11 <= code) && (code <= 0xBD2B)) || + ((0xBD2D <= code) && (code <= 0xBD47)) || + ((0xBD49 <= code) && (code <= 0xBD63)) || + ((0xBD65 <= code) && (code <= 0xBD7F)) || + ((0xBD81 <= code) && (code <= 0xBD9B)) || + ((0xBD9D <= code) && (code <= 0xBDB7)) || + ((0xBDB9 <= code) && (code <= 0xBDD3)) || + ((0xBDD5 <= code) && (code <= 0xBDEF)) || + ((0xBDF1 <= code) && (code <= 0xBE0B)) || + ((0xBE0D <= code) && (code <= 0xBE27)) || + ((0xBE29 <= code) && (code <= 0xBE43)) || + ((0xBE45 <= code) && (code <= 0xBE5F)) || + ((0xBE61 <= code) && (code <= 0xBE7B)) || + ((0xBE7D <= code) && (code <= 0xBE97)) || + ((0xBE99 <= code) && (code <= 0xBEB3)) || + ((0xBEB5 <= code) && (code <= 0xBECF)) || + ((0xBED1 <= code) && (code <= 0xBEEB)) || + ((0xBEED <= code) && (code <= 0xBF07)) || + ((0xBF09 <= code) && (code <= 0xBF23)) || + ((0xBF25 <= code) && (code <= 0xBF3F)) || + ((0xBF41 <= code) && (code <= 0xBF5B)) || + ((0xBF5D <= code) && (code <= 0xBF77)) || + ((0xBF79 <= code) && (code <= 0xBF93)) || + ((0xBF95 <= code) && (code <= 0xBFAF)) || + ((0xBFB1 <= code) && (code <= 0xBFCB)) || + ((0xBFCD <= code) && (code <= 0xBFE7)) || + ((0xBFE9 <= code) && (code <= 0xC003)) || + ((0xC005 <= code) && (code <= 0xC01F)) || + ((0xC021 <= code) && (code <= 0xC03B)) || + ((0xC03D <= code) && (code <= 0xC057)) || + ((0xC059 <= code) && (code <= 0xC073)) || + ((0xC075 <= code) && (code <= 0xC08F)) || + ((0xC091 <= code) && (code <= 0xC0AB)) || + ((0xC0AD <= code) && (code <= 0xC0C7)) || + ((0xC0C9 <= code) && (code <= 0xC0E3)) || + ((0xC0E5 <= code) && (code <= 0xC0FF)) || + ((0xC101 <= code) && (code <= 0xC11B)) || + ((0xC11D <= code) && (code <= 0xC137)) || + ((0xC139 <= code) && (code <= 0xC153)) || + ((0xC155 <= code) && (code <= 0xC16F)) || + ((0xC171 <= code) && (code <= 0xC18B)) || + ((0xC18D <= code) && (code <= 0xC1A7)) || + ((0xC1A9 <= code) && (code <= 0xC1C3)) || + ((0xC1C5 <= code) && (code <= 0xC1DF)) || + ((0xC1E1 <= code) && (code <= 0xC1FB)) || + ((0xC1FD <= code) && (code <= 0xC217)) || + ((0xC219 <= code) && (code <= 0xC233)) || + ((0xC235 <= code) && (code <= 0xC24F)) || + ((0xC251 <= code) && (code <= 0xC26B)) || + ((0xC26D <= code) && (code <= 0xC287)) || + ((0xC289 <= code) && (code <= 0xC2A3)) || + ((0xC2A5 <= code) && (code <= 0xC2BF)) || + ((0xC2C1 <= code) && (code <= 0xC2DB)) || + ((0xC2DD <= code) && (code <= 0xC2F7)) || + ((0xC2F9 <= code) && (code <= 0xC313)) || + ((0xC315 <= code) && (code <= 0xC32F)) || + ((0xC331 <= code) && (code <= 0xC34B)) || + ((0xC34D <= code) && (code <= 0xC367)) || + ((0xC369 <= code) && (code <= 0xC383)) || + ((0xC385 <= code) && (code <= 0xC39F)) || + ((0xC3A1 <= code) && (code <= 0xC3BB)) || + ((0xC3BD <= code) && (code <= 0xC3D7)) || + ((0xC3D9 <= code) && (code <= 0xC3F3)) || + ((0xC3F5 <= code) && (code <= 0xC40F)) || + ((0xC411 <= code) && (code <= 0xC42B)) || + ((0xC42D <= code) && (code <= 0xC447)) || + ((0xC449 <= code) && (code <= 0xC463)) || + ((0xC465 <= code) && (code <= 0xC47F)) || + ((0xC481 <= code) && (code <= 0xC49B)) || + ((0xC49D <= code) && (code <= 0xC4B7)) || + ((0xC4B9 <= code) && (code <= 0xC4D3)) || + ((0xC4D5 <= code) && (code <= 0xC4EF)) || + ((0xC4F1 <= code) && (code <= 0xC50B)) || + ((0xC50D <= code) && (code <= 0xC527)) || + ((0xC529 <= code) && (code <= 0xC543)) || + ((0xC545 <= code) && (code <= 0xC55F)) || + ((0xC561 <= code) && (code <= 0xC57B)) || + ((0xC57D <= code) && (code <= 0xC597)) || + ((0xC599 <= code) && (code <= 0xC5B3)) || + ((0xC5B5 <= code) && (code <= 0xC5CF)) || + ((0xC5D1 <= code) && (code <= 0xC5EB)) || + ((0xC5ED <= code) && (code <= 0xC607)) || + ((0xC609 <= code) && (code <= 0xC623)) || + ((0xC625 <= code) && (code <= 0xC63F)) || + ((0xC641 <= code) && (code <= 0xC65B)) || + ((0xC65D <= code) && (code <= 0xC677)) || + ((0xC679 <= code) && (code <= 0xC693)) || + ((0xC695 <= code) && (code <= 0xC6AF)) || + ((0xC6B1 <= code) && (code <= 0xC6CB)) || + ((0xC6CD <= code) && (code <= 0xC6E7)) || + ((0xC6E9 <= code) && (code <= 0xC703)) || + ((0xC705 <= code) && (code <= 0xC71F)) || + ((0xC721 <= code) && (code <= 0xC73B)) || + ((0xC73D <= code) && (code <= 0xC757)) || + ((0xC759 <= code) && (code <= 0xC773)) || + ((0xC775 <= code) && (code <= 0xC78F)) || + ((0xC791 <= code) && (code <= 0xC7AB)) || + ((0xC7AD <= code) && (code <= 0xC7C7)) || + ((0xC7C9 <= code) && (code <= 0xC7E3)) || + ((0xC7E5 <= code) && (code <= 0xC7FF)) || + ((0xC801 <= code) && (code <= 0xC81B)) || + ((0xC81D <= code) && (code <= 0xC837)) || + ((0xC839 <= code) && (code <= 0xC853)) || + ((0xC855 <= code) && (code <= 0xC86F)) || + ((0xC871 <= code) && (code <= 0xC88B)) || + ((0xC88D <= code) && (code <= 0xC8A7)) || + ((0xC8A9 <= code) && (code <= 0xC8C3)) || + ((0xC8C5 <= code) && (code <= 0xC8DF)) || + ((0xC8E1 <= code) && (code <= 0xC8FB)) || + ((0xC8FD <= code) && (code <= 0xC917)) || + ((0xC919 <= code) && (code <= 0xC933)) || + ((0xC935 <= code) && (code <= 0xC94F)) || + ((0xC951 <= code) && (code <= 0xC96B)) || + ((0xC96D <= code) && (code <= 0xC987)) || + ((0xC989 <= code) && (code <= 0xC9A3)) || + ((0xC9A5 <= code) && (code <= 0xC9BF)) || + ((0xC9C1 <= code) && (code <= 0xC9DB)) || + ((0xC9DD <= code) && (code <= 0xC9F7)) || + ((0xC9F9 <= code) && (code <= 0xCA13)) || + ((0xCA15 <= code) && (code <= 0xCA2F)) || + ((0xCA31 <= code) && (code <= 0xCA4B)) || + ((0xCA4D <= code) && (code <= 0xCA67)) || + ((0xCA69 <= code) && (code <= 0xCA83)) || + ((0xCA85 <= code) && (code <= 0xCA9F)) || + ((0xCAA1 <= code) && (code <= 0xCABB)) || + ((0xCABD <= code) && (code <= 0xCAD7)) || + ((0xCAD9 <= code) && (code <= 0xCAF3)) || + ((0xCAF5 <= code) && (code <= 0xCB0F)) || + ((0xCB11 <= code) && (code <= 0xCB2B)) || + ((0xCB2D <= code) && (code <= 0xCB47)) || + ((0xCB49 <= code) && (code <= 0xCB63)) || + ((0xCB65 <= code) && (code <= 0xCB7F)) || + ((0xCB81 <= code) && (code <= 0xCB9B)) || + ((0xCB9D <= code) && (code <= 0xCBB7)) || + ((0xCBB9 <= code) && (code <= 0xCBD3)) || + ((0xCBD5 <= code) && (code <= 0xCBEF)) || + ((0xCBF1 <= code) && (code <= 0xCC0B)) || + ((0xCC0D <= code) && (code <= 0xCC27)) || + ((0xCC29 <= code) && (code <= 0xCC43)) || + ((0xCC45 <= code) && (code <= 0xCC5F)) || + ((0xCC61 <= code) && (code <= 0xCC7B)) || + ((0xCC7D <= code) && (code <= 0xCC97)) || + ((0xCC99 <= code) && (code <= 0xCCB3)) || + ((0xCCB5 <= code) && (code <= 0xCCCF)) || + ((0xCCD1 <= code) && (code <= 0xCCEB)) || + ((0xCCED <= code) && (code <= 0xCD07)) || + ((0xCD09 <= code) && (code <= 0xCD23)) || + ((0xCD25 <= code) && (code <= 0xCD3F)) || + ((0xCD41 <= code) && (code <= 0xCD5B)) || + ((0xCD5D <= code) && (code <= 0xCD77)) || + ((0xCD79 <= code) && (code <= 0xCD93)) || + ((0xCD95 <= code) && (code <= 0xCDAF)) || + ((0xCDB1 <= code) && (code <= 0xCDCB)) || + ((0xCDCD <= code) && (code <= 0xCDE7)) || + ((0xCDE9 <= code) && (code <= 0xCE03)) || + ((0xCE05 <= code) && (code <= 0xCE1F)) || + ((0xCE21 <= code) && (code <= 0xCE3B)) || + ((0xCE3D <= code) && (code <= 0xCE57)) || + ((0xCE59 <= code) && (code <= 0xCE73)) || + ((0xCE75 <= code) && (code <= 0xCE8F)) || + ((0xCE91 <= code) && (code <= 0xCEAB)) || + ((0xCEAD <= code) && (code <= 0xCEC7)) || + ((0xCEC9 <= code) && (code <= 0xCEE3)) || + ((0xCEE5 <= code) && (code <= 0xCEFF)) || + ((0xCF01 <= code) && (code <= 0xCF1B)) || + ((0xCF1D <= code) && (code <= 0xCF37)) || + ((0xCF39 <= code) && (code <= 0xCF53)) || + ((0xCF55 <= code) && (code <= 0xCF6F)) || + ((0xCF71 <= code) && (code <= 0xCF8B)) || + ((0xCF8D <= code) && (code <= 0xCFA7)) || + ((0xCFA9 <= code) && (code <= 0xCFC3)) || + ((0xCFC5 <= code) && (code <= 0xCFDF)) || + ((0xCFE1 <= code) && (code <= 0xCFFB)) || + ((0xCFFD <= code) && (code <= 0xD017)) || + ((0xD019 <= code) && (code <= 0xD033)) || + ((0xD035 <= code) && (code <= 0xD04F)) || + ((0xD051 <= code) && (code <= 0xD06B)) || + ((0xD06D <= code) && (code <= 0xD087)) || + ((0xD089 <= code) && (code <= 0xD0A3)) || + ((0xD0A5 <= code) && (code <= 0xD0BF)) || + ((0xD0C1 <= code) && (code <= 0xD0DB)) || + ((0xD0DD <= code) && (code <= 0xD0F7)) || + ((0xD0F9 <= code) && (code <= 0xD113)) || + ((0xD115 <= code) && (code <= 0xD12F)) || + ((0xD131 <= code) && (code <= 0xD14B)) || + ((0xD14D <= code) && (code <= 0xD167)) || + ((0xD169 <= code) && (code <= 0xD183)) || + ((0xD185 <= code) && (code <= 0xD19F)) || + ((0xD1A1 <= code) && (code <= 0xD1BB)) || + ((0xD1BD <= code) && (code <= 0xD1D7)) || + ((0xD1D9 <= code) && (code <= 0xD1F3)) || + ((0xD1F5 <= code) && (code <= 0xD20F)) || + ((0xD211 <= code) && (code <= 0xD22B)) || + ((0xD22D <= code) && (code <= 0xD247)) || + ((0xD249 <= code) && (code <= 0xD263)) || + ((0xD265 <= code) && (code <= 0xD27F)) || + ((0xD281 <= code) && (code <= 0xD29B)) || + ((0xD29D <= code) && (code <= 0xD2B7)) || + ((0xD2B9 <= code) && (code <= 0xD2D3)) || + ((0xD2D5 <= code) && (code <= 0xD2EF)) || + ((0xD2F1 <= code) && (code <= 0xD30B)) || + ((0xD30D <= code) && (code <= 0xD327)) || + ((0xD329 <= code) && (code <= 0xD343)) || + ((0xD345 <= code) && (code <= 0xD35F)) || + ((0xD361 <= code) && (code <= 0xD37B)) || + ((0xD37D <= code) && (code <= 0xD397)) || + ((0xD399 <= code) && (code <= 0xD3B3)) || + ((0xD3B5 <= code) && (code <= 0xD3CF)) || + ((0xD3D1 <= code) && (code <= 0xD3EB)) || + ((0xD3ED <= code) && (code <= 0xD407)) || + ((0xD409 <= code) && (code <= 0xD423)) || + ((0xD425 <= code) && (code <= 0xD43F)) || + ((0xD441 <= code) && (code <= 0xD45B)) || + ((0xD45D <= code) && (code <= 0xD477)) || + ((0xD479 <= code) && (code <= 0xD493)) || + ((0xD495 <= code) && (code <= 0xD4AF)) || + ((0xD4B1 <= code) && (code <= 0xD4CB)) || + ((0xD4CD <= code) && (code <= 0xD4E7)) || + ((0xD4E9 <= code) && (code <= 0xD503)) || + ((0xD505 <= code) && (code <= 0xD51F)) || + ((0xD521 <= code) && (code <= 0xD53B)) || + ((0xD53D <= code) && (code <= 0xD557)) || + ((0xD559 <= code) && (code <= 0xD573)) || + ((0xD575 <= code) && (code <= 0xD58F)) || + ((0xD591 <= code) && (code <= 0xD5AB)) || + ((0xD5AD <= code) && (code <= 0xD5C7)) || + ((0xD5C9 <= code) && (code <= 0xD5E3)) || + ((0xD5E5 <= code) && (code <= 0xD5FF)) || + ((0xD601 <= code) && (code <= 0xD61B)) || + ((0xD61D <= code) && (code <= 0xD637)) || + ((0xD639 <= code) && (code <= 0xD653)) || + ((0xD655 <= code) && (code <= 0xD66F)) || + ((0xD671 <= code) && (code <= 0xD68B)) || + ((0xD68D <= code) && (code <= 0xD6A7)) || + ((0xD6A9 <= code) && (code <= 0xD6C3)) || + ((0xD6C5 <= code) && (code <= 0xD6DF)) || + ((0xD6E1 <= code) && (code <= 0xD6FB)) || + ((0xD6FD <= code) && (code <= 0xD717)) || + ((0xD719 <= code) && (code <= 0xD733)) || + ((0xD735 <= code) && (code <= 0xD74F)) || + ((0xD751 <= code) && (code <= 0xD76B)) || + ((0xD76D <= code) && (code <= 0xD787)) || + ((0xD789 <= code) && (code <= 0xD7A3))) + return HANGUL_LEAD_VOWEL_TRAIL_TYPE; + + return 0; +} + + +#endif /* _NORM_H_ */ Added: soc2014/ghostmansd/head/lib/libc/string/norm/nfd.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2014/ghostmansd/head/lib/libc/string/norm/nfd.h Wed Jun 18 03:07:16 2014 (r269713) @@ -0,0 +1,100 @@ +/*- + * Copyright (c) 2014 Dmitry Selyutin <ghostmansd@FreeBSD.org> + * + * Copyright (c) 2014 The FreeBSD Foundation + * All rights reserved. + * Portions of this software were developed by David Chisnall + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source curr must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#define NFD_QCHECK_MIN 000000C0 +#define NFD_QCHECK_MAX 0002FA1E + +static const wchar_t nfd_qc_single[] = { + 0x00000374, 0x0000037E, 0x00000385, 0x00000386, 0x00000387, 0x0000038C, + 0x00000403, 0x00000407, 0x00000419, 0x00000439, 0x00000453, 0x00000457, + 0x000006C0, 0x000006C2, 0x000006D3, 0x00000929, 0x00000931, 0x00000934, + 0x000009DF, 0x00000A33, 0x00000A36, 0x00000A5E, 0x00000B48, 0x00000B94, + 0x00000C48, 0x00000CC0, 0x00000DDA, 0x00000F43, 0x00000F4D, 0x00000F52, + 0x00000F57, 0x00000F5C, 0x00000F69, 0x00000F73, 0x00000F78, 0x00000F81, + 0x00000F93, 0x00000F9D, 0x00000FA2, 0x00000FA7, 0x00000FAC, 0x00000FB9, + 0x00001026, 0x00001B06, 0x00001B08, 0x00001B0A, 0x00001B0C, 0x00001B0E, + 0x00001B12, 0x00001B3B, 0x00001B3D, 0x00001B43, 0x00001E9B, 0x00001F59, + 0x00001F5B, 0x00001F5D, 0x00001FBE, 0x00001FC1, 0x00001FFD, 0x00002126, + 0x000021AE, 0x000021CD, 0x00002204, 0x00002209, 0x0000220C, 0x00002224, + 0x00002226, 0x00002241, 0x00002244, 0x00002247, 0x00002249, 0x00002260, + 0x00002262, 0x00002329, 0x0000232A, 0x00002ADC, 0x0000304C, 0x0000304E, + 0x00003050, 0x00003052, 0x00003054, 0x00003056, 0x00003058, 0x0000305A, + 0x0000305C, 0x0000305E, 0x00003060, 0x00003062, 0x00003065, 0x00003067, + 0x00003069, 0x00003094, 0x0000309E, 0x000030AC, 0x000030AE, 0x000030B0, + 0x000030B2, 0x000030B4, 0x000030B6, 0x000030B8, 0x000030BA, 0x000030BC, + 0x000030BE, 0x000030C0, 0x000030C2, 0x000030C5, 0x000030C7, 0x000030C9, + 0x000030F4, 0x000030FE, 0x0000FA10, 0x0000FA12, 0x0000FA20, 0x0000FA22, + 0x0000FB1D, 0x0000FB1F, 0x0000FB3E, 0x0001109A, 0x0001109C, 0x000110AB, + 0x000114BE, 0x0000FFFF +}; /* static const wchar_t nfd_qc_single */ + +static const wchar_t nfd_qc_ranges[] = { + 0x000000C0, 0x000000C5, 0x000000C7, 0x000000CF, 0x000000D1, 0x000000D6, + 0x000000D9, 0x000000DD, 0x000000E0, 0x000000E5, 0x000000E7, 0x000000EF, + 0x000000F1, 0x000000F6, 0x000000F9, 0x000000FD, 0x000000FF, 0x0000010F, + 0x00000112, 0x00000125, 0x00000128, 0x00000130, 0x00000134, 0x00000137, + 0x00000139, 0x0000013E, 0x00000143, 0x00000148, 0x0000014C, 0x00000151, + 0x00000154, 0x00000165, 0x00000168, 0x0000017E, 0x000001A0, 0x000001A1, + 0x000001AF, 0x000001B0, 0x000001CD, 0x000001DC, 0x000001DE, 0x000001E3, + 0x000001E6, 0x000001F0, 0x000001F4, 0x000001F5, 0x000001F8, 0x0000021B, + 0x0000021E, 0x0000021F, 0x00000226, 0x00000233, 0x00000340, 0x00000341, + 0x00000343, 0x00000344, 0x00000388, 0x0000038A, 0x0000038E, 0x00000390, + 0x000003AA, 0x000003B0, 0x000003CA, 0x000003CE, 0x000003D3, 0x000003D4, + 0x00000400, 0x00000401, 0x0000040C, 0x0000040E, 0x00000450, 0x00000451, + 0x0000045C, 0x0000045E, 0x00000476, 0x00000477, 0x000004C1, 0x000004C2, + 0x000004D0, 0x000004D3, 0x000004D6, 0x000004D7, 0x000004DA, 0x000004DF, + 0x000004E2, 0x000004E7, 0x000004EA, 0x000004F5, 0x000004F8, 0x000004F9, + 0x00000622, 0x00000626, 0x00000958, 0x0000095F, 0x000009CB, 0x000009CC, + 0x000009DC, 0x000009DD, 0x00000A59, 0x00000A5B, 0x00000B4B, 0x00000B4C, + 0x00000B5C, 0x00000B5D, 0x00000BCA, 0x00000BCC, 0x00000CC7, 0x00000CC8, + 0x00000CCA, 0x00000CCB, 0x00000D4A, 0x00000D4C, 0x00000DDC, 0x00000DDE, + 0x00000F75, 0x00000F76, 0x00001B40, 0x00001B41, 0x00001E00, 0x00001E99, + 0x00001EA0, 0x00001EF9, 0x00001F00, 0x00001F15, 0x00001F18, 0x00001F1D, + 0x00001F20, 0x00001F45, 0x00001F48, 0x00001F4D, 0x00001F50, 0x00001F57, + 0x00001F5F, 0x00001F7D, 0x00001F80, 0x00001FB4, 0x00001FB6, 0x00001FBC, + 0x00001FC2, 0x00001FC4, 0x00001FC6, 0x00001FCC, 0x00001FCD, 0x00001FCF, + 0x00001FD0, 0x00001FD3, 0x00001FD6, 0x00001FDB, 0x00001FDD, 0x00001FDF, + 0x00001FE0, 0x00001FEC, 0x00001FED, 0x00001FEF, 0x00001FF2, 0x00001FF4, + 0x00001FF6, 0x00001FFC, 0x00002000, 0x00002001, 0x0000212A, 0x0000212B, + 0x0000219A, 0x0000219B, 0x000021CE, 0x000021CF, 0x0000226D, 0x00002271, + 0x00002274, 0x00002275, 0x00002278, 0x00002279, 0x00002280, 0x00002281, + 0x00002284, 0x00002285, 0x00002288, 0x00002289, 0x000022AC, 0x000022AF, + 0x000022E0, 0x000022E3, 0x000022EA, 0x000022ED, 0x00003070, 0x00003071, + 0x00003073, 0x00003074, 0x00003076, 0x00003077, 0x00003079, 0x0000307A, + 0x0000307C, 0x0000307D, 0x000030D0, 0x000030D1, 0x000030D3, 0x000030D4, + 0x000030D6, 0x000030D7, 0x000030D9, 0x000030DA, 0x000030DC, 0x000030DD, + 0x000030F7, 0x000030FA, 0x0000AC00, 0x0000D7A3, 0x0000F900, 0x0000FA0D, + 0x0000FA15, 0x0000FA1E, 0x0000FA25, 0x0000FA26, 0x0000FA2A, 0x0000FA6D, + 0x0000FA70, 0x0000FAD9, 0x0000FB2A, 0x0000FB36, 0x0000FB38, 0x0000FB3C, + 0x0000FB40, 0x0000FB41, 0x0000FB43, 0x0000FB44, 0x0000FB46, 0x0000FB4E, + 0x0001112E, 0x0001112F, 0x0001134B, 0x0001134C, 0x000114BB, 0x000114BC, + 0x000115BA, 0x000115BB, 0x0001D15E, 0x0001D164, 0x0001D1BB, 0x0001D1C0, + 0x0002F800, 0x0002FA1D, 0x0000FFFF, 0x0000FFFF, +}; /* static const wchar_t nfd_qc_ranges */ Modified: soc2014/ghostmansd/head/lib/libc/string/strnorm.c ============================================================================== --- soc2014/ghostmansd/head/lib/libc/string/strnorm.c Wed Jun 18 02:36:21 2014 (r269712) +++ soc2014/ghostmansd/head/lib/libc/string/strnorm.c Wed Jun 18 03:07:16 2014 (r269713) @@ -1,7 +1,5 @@ -/* +/*- * Copyright (c) 2014 Dmitry Selyutin <ghostmansd@FreeBSD.org> - * at Lomonosov Moscow State University - www.msu.ru - * All rights reserved. * * Copyright (c) 2014 The FreeBSD Foundation * All rights reserved. @@ -33,9 +31,9 @@ #include <errno.h> #include <stdlib.h> #include <wchar.h> +#include <string.h> #include <xlocale.h> #include "xlocale_private.h" -#include "normalization.h" static size_t __norm_encode(char *buffer, size_t size, wchar_t const *wstr, @@ -44,7 +42,7 @@ static const mbstate_t initial; size_t length = 0; char *mbs = NULL; - wchar_t const *wcs = wstr; + const wchar_t *wcs = wstr; mbstate_t state = initial; FIX_LOCALE(locale); @@ -83,7 +81,7 @@ } -size_t __strnorm_l(char *buffer, size_t size, char const *str, int form, +size_t __strnorm_l(char *buffer, size_t size, const char *str, int form, locale_t locale) { int error = 0; @@ -146,5 +144,5 @@ } -size_t __strnorm(char *buffer, size_t size, char const *str, int form) +size_t __strnorm(char *buffer, size_t size, const char *str, int form) { return __strnorm_l(buffer, size, str, form, __get_locale()); } Modified: soc2014/ghostmansd/head/lib/libc/string/wcsnorm.c ============================================================================== --- soc2014/ghostmansd/head/lib/libc/string/wcsnorm.c Wed Jun 18 02:36:21 2014 (r269712) +++ soc2014/ghostmansd/head/lib/libc/string/wcsnorm.c Wed Jun 18 03:07:16 2014 (r269713) @@ -1,7 +1,5 @@ -/* +/*- * Copyright (c) 2014 Dmitry Selyutin <ghostmansd@FreeBSD.org> - * at Lomonosov Moscow State University - www.msu.ru - * All rights reserved. * * Copyright (c) 2014 The FreeBSD Foundation * All rights reserved. @@ -32,17 +30,41 @@ #include <errno.h> #include <stdint.h> -#include "normalization.h" +#include "norm/hangul.h" +#include "norm/nfd.h" -static size_t compose(wchar_t *buffer, size_t size, wchar_t const *str) +static inline int __check(wchar_t code, const wchar_t *single, + const wchar_t *range) +{ + wchar_t min = 0; + wchar_t max = 0; + + for (; *single != 0x0000FFFF; ++single) + { + if (*single == code) + return 1; + } + while (*range != 0x0000FFFF) + { + min = *range++; + max = *range++; + if ((min <= code) && (code <= max)) + return 1; + } + return 0; +} + + +static size_t __compose(wchar_t *buffer, size_t size, const wchar_t *str, + int compatibility) { int32_t prev = 0; int32_t curr = 0; size_t index = 0; size_t length = 0; size_t reqsize = 0; - wchar_t const *iter = str; + const wchar_t *iter = str; prev = *str++; if (buffer != NULL) @@ -90,13 +112,17 @@ if ((reqsize + 2) > size) { + errno = ERANGE; if (buffer != NULL) *--buffer = L'\0'; return (reqsize + 2); } ++reqsize; if ((reqsize + 1) > size) + { + errno = ERANGE; return ++reqsize; + } if (buffer != NULL) { *buffer++ = prev; @@ -106,7 +132,8 @@ } -static size_t decompose(wchar_t *buffer, size_t size, wchar_t const *str) +static size_t __decompose(wchar_t *buffer, size_t size, const wchar_t *str, + int compatibility) { size_t count = 0; int32_t curr = 0; @@ -114,7 +141,7 @@ int32_t vowel = 0; int32_t trail = 0; size_t reqsize = 0; - wchar_t const *iter = str; + const wchar_t *iter = str; do { curr = *iter; @@ -161,14 +188,17 @@ } while (++iter); if ((reqsize + 1) > size) + { + errno = ERANGE; return ++reqsize; + } if (buffer != NULL) *buffer++ = L'\0'; return reqsize; } -size_t __wcsnorm(wchar_t *buffer, size_t size, wchar_t const *str, int form) +size_t __wcsnorm(wchar_t *buffer, size_t size, const wchar_t *str, int form) { size_t reqsize = 0; @@ -177,29 +207,25 @@ errno = EINVAL; return 0; } + if (*str == 0) + { + if (buffer != NULL) + *buffer = L'\0'; + return 1; + } switch (form) { case __NORM_NFD: + return __decompose(buffer, size, str, 0); case __NORM_NFC: + return __compose(buffer, size, str, 0); case __NORM_NFKD: + return __decompose(buffer, size, str, 1); case __NORM_NFKC: - break; + return __compose(buffer, size, str, 0); default: errno = EINVAL; return 0; } - - if (*str == 0) - { - if (buffer != NULL) - *buffer = L'\0'; *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201406180307.s5I37HFF057350>