Annotation of embedaddon/php/ext/mbstring/libmbfl/mbfl/mbfl_language.c, revision 1.1
1.1 ! misho 1: /*
! 2: * "streamable kanji code filter and converter"
! 3: * Copyright (c) 1998-2002 HappySize, Inc. All rights reserved.
! 4: *
! 5: * LICENSE NOTICES
! 6: *
! 7: * This file is part of "streamable kanji code filter and converter",
! 8: * which is distributed under the terms of GNU Lesser General Public
! 9: * License (version 2) as published by the Free Software Foundation.
! 10: *
! 11: * This software is distributed in the hope that it will be useful,
! 12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
! 13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 14: * GNU Lesser General Public License for more details.
! 15: *
! 16: * You should have received a copy of the GNU Lesser General Public
! 17: * License along with "streamable kanji code filter and converter";
! 18: * if not, write to the Free Software Foundation, Inc., 59 Temple Place,
! 19: * Suite 330, Boston, MA 02111-1307 USA
! 20: *
! 21: * The author of this file:
! 22: *
! 23: */
! 24: /*
! 25: * The source code included in this files was separated from mbfilter.c
! 26: * by Moriyoshi Koizumi <moriyoshi@php.net> on 20 Dec 2002. The file
! 27: * mbfilter.c is included in this package .
! 28: *
! 29: */
! 30:
! 31: #ifdef HAVE_CONFIG_H
! 32: #include "config.h"
! 33: #endif
! 34:
! 35: #ifdef HAVE_STDDEF_H
! 36: #include <stddef.h>
! 37: #endif
! 38:
! 39: #ifdef HAVE_STDDEF_H
! 40: #include <stddef.h>
! 41: #endif
! 42:
! 43: #ifdef HAVE_STRING_H
! 44: #include <string.h>
! 45: #endif
! 46:
! 47: #ifdef HAVE_STRINGS_H
! 48: #include <strings.h>
! 49: #endif
! 50:
! 51: #include "mbfl_encoding.h"
! 52: #include "mbfl_language.h"
! 53:
! 54: #include "nls/nls_ja.h"
! 55: #include "nls/nls_kr.h"
! 56: #include "nls/nls_zh.h"
! 57: #include "nls/nls_uni.h"
! 58: #include "nls/nls_de.h"
! 59: #include "nls/nls_ru.h"
! 60: #include "nls/nls_ua.h"
! 61: #include "nls/nls_en.h"
! 62: #include "nls/nls_hy.h"
! 63: #include "nls/nls_tr.h"
! 64: #include "nls/nls_neutral.h"
! 65:
! 66: #ifndef HAVE_STRCASECMP
! 67: #ifdef HAVE_STRICMP
! 68: #define strcasecmp stricmp
! 69: #endif
! 70: #endif
! 71:
! 72: static const mbfl_language *mbfl_language_ptr_table[] = {
! 73: &mbfl_language_uni,
! 74: &mbfl_language_japanese,
! 75: &mbfl_language_korean,
! 76: &mbfl_language_simplified_chinese,
! 77: &mbfl_language_traditional_chinese,
! 78: &mbfl_language_english,
! 79: &mbfl_language_german,
! 80: &mbfl_language_russian,
! 81: &mbfl_language_ukrainian,
! 82: &mbfl_language_armenian,
! 83: &mbfl_language_turkish,
! 84: &mbfl_language_neutral,
! 85: NULL
! 86: };
! 87:
! 88: /* language resolver */
! 89: const mbfl_language *
! 90: mbfl_name2language(const char *name)
! 91: {
! 92: const mbfl_language *language;
! 93: int i, j;
! 94:
! 95: if (name == NULL) {
! 96: return NULL;
! 97: }
! 98:
! 99: i = 0;
! 100: while ((language = mbfl_language_ptr_table[i++]) != NULL){
! 101: if (strcasecmp(language->name, name) == 0) {
! 102: return language;
! 103: }
! 104: }
! 105:
! 106: i = 0;
! 107: while ((language = mbfl_language_ptr_table[i++]) != NULL){
! 108: if (strcasecmp(language->short_name, name) == 0) {
! 109: return language;
! 110: }
! 111: }
! 112:
! 113: /* serch aliases */
! 114: i = 0;
! 115: while ((language = mbfl_language_ptr_table[i++]) != NULL) {
! 116: if (language->aliases != NULL) {
! 117: j = 0;
! 118: while ((*language->aliases)[j] != NULL) {
! 119: if (strcasecmp((*language->aliases)[j], name) == 0) {
! 120: return language;
! 121: }
! 122: j++;
! 123: }
! 124: }
! 125: }
! 126:
! 127: return NULL;
! 128: }
! 129:
! 130: const mbfl_language *
! 131: mbfl_no2language(enum mbfl_no_language no_language)
! 132: {
! 133: const mbfl_language *language;
! 134: int i;
! 135:
! 136: i = 0;
! 137: while ((language = mbfl_language_ptr_table[i++]) != NULL){
! 138: if (language->no_language == no_language) {
! 139: return language;
! 140: }
! 141: }
! 142:
! 143: return NULL;
! 144: }
! 145:
! 146: enum mbfl_no_language
! 147: mbfl_name2no_language(const char *name)
! 148: {
! 149: const mbfl_language *language;
! 150:
! 151: language = mbfl_name2language(name);
! 152: if (language == NULL) {
! 153: return mbfl_no_language_invalid;
! 154: } else {
! 155: return language->no_language;
! 156: }
! 157: }
! 158:
! 159: const char *
! 160: mbfl_no_language2name(enum mbfl_no_language no_language)
! 161: {
! 162: const mbfl_language *language;
! 163:
! 164: language = mbfl_no2language(no_language);
! 165: if (language == NULL) {
! 166: return "";
! 167: } else {
! 168: return language->name;
! 169: }
! 170: }
! 171:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>