1*16d86563SAlexander Pyhalov /* 2*16d86563SAlexander Pyhalov * CDDL HEADER START 3*16d86563SAlexander Pyhalov * 4*16d86563SAlexander Pyhalov * The contents of this file are subject to the terms of the 5*16d86563SAlexander Pyhalov * Common Development and Distribution License (the "License"). 6*16d86563SAlexander Pyhalov * You may not use this file except in compliance with the License. 7*16d86563SAlexander Pyhalov * 8*16d86563SAlexander Pyhalov * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE 9*16d86563SAlexander Pyhalov * or http://www.opensolaris.org/os/licensing. 10*16d86563SAlexander Pyhalov * See the License for the specific language governing permissions 11*16d86563SAlexander Pyhalov * and limitations under the License. 12*16d86563SAlexander Pyhalov * 13*16d86563SAlexander Pyhalov * When distributing Covered Code, include this CDDL HEADER in each 14*16d86563SAlexander Pyhalov * file and include the License file at src/OPENSOLARIS.LICENSE. 15*16d86563SAlexander Pyhalov * If applicable, add the following below this CDDL HEADER, with the 16*16d86563SAlexander Pyhalov * fields enclosed by brackets "[]" replaced with your own identifying 17*16d86563SAlexander Pyhalov * information: Portions Copyright [yyyy] [name of copyright owner] 18*16d86563SAlexander Pyhalov * 19*16d86563SAlexander Pyhalov * CDDL HEADER END 20*16d86563SAlexander Pyhalov */ 21*16d86563SAlexander Pyhalov /* 22*16d86563SAlexander Pyhalov * Copyright (c) 1995 by Sun Microsystems, Inc. 23*16d86563SAlexander Pyhalov * All Rights Reserved. 24*16d86563SAlexander Pyhalov */ 25*16d86563SAlexander Pyhalov 26*16d86563SAlexander Pyhalov 27*16d86563SAlexander Pyhalov 28*16d86563SAlexander Pyhalov #ifndef _NBYTE2EUC_H_ 29*16d86563SAlexander Pyhalov #define _NBYTE2EUC_H_ 30*16d86563SAlexander Pyhalov 31*16d86563SAlexander Pyhalov 32*16d86563SAlexander Pyhalov #include "hangulcode.h" 33*16d86563SAlexander Pyhalov 34*16d86563SAlexander Pyhalov typedef struct __conv_desc { 35*16d86563SAlexander Pyhalov int cur_stat; 36*16d86563SAlexander Pyhalov int cur_act; 37*16d86563SAlexander Pyhalov char hbuf[5]; 38*16d86563SAlexander Pyhalov } _conv_desc; 39*16d86563SAlexander Pyhalov 40*16d86563SAlexander Pyhalov int next_stat[14][21]={ /* next state table[current state][input] */ 41*16d86563SAlexander Pyhalov /* input 42*16d86563SAlexander Pyhalov 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 */ 43*16d86563SAlexander Pyhalov /*state*/ 44*16d86563SAlexander Pyhalov /* 0 */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 45*16d86563SAlexander Pyhalov /* 1 */ { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1}, 46*16d86563SAlexander Pyhalov /* 2 */ { 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 1, 2}, 47*16d86563SAlexander Pyhalov /* 3 */ { 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 1, 2}, 48*16d86563SAlexander Pyhalov /* 4 */ { 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 5, 6, 7, 2, 1, 2}, 49*16d86563SAlexander Pyhalov /* 5 */ { 0, 4, 9,10,11,12,13,13,13,13,13, 3, 8, 3, 8, 3, 3, 3, 2, 1, 2}, 50*16d86563SAlexander Pyhalov /* 6 */ { 0, 4, 9,10,11,12,13,13,13,13,13, 3, 3, 8, 8, 3, 3, 3, 2, 1, 2}, 51*16d86563SAlexander Pyhalov /* 7 */ { 0, 4, 9,10,11,12,13,13,13,13,13, 3, 3, 3, 8, 3, 3, 3, 2, 1, 2}, 52*16d86563SAlexander Pyhalov /* 8 */ { 0, 4, 9,10,11,12,13,13,13,13,13, 3, 3, 3, 3, 3, 3, 3, 2, 1, 2}, 53*16d86563SAlexander Pyhalov /* 9 */ { 0, 4, 4, 4, 4, 4, 4,13, 4, 4, 4, 8, 8, 8, 8, 5, 6, 7, 2, 1, 2}, 54*16d86563SAlexander Pyhalov /*10 */ { 0, 4, 4, 4, 4, 4, 4, 4,13,13, 4, 8, 8, 8, 8, 5, 6, 7, 2, 1, 2}, 55*16d86563SAlexander Pyhalov /*11 */ { 0, 4,13, 4, 4,13, 4,13, 4,13,13, 8, 8, 8, 8, 5, 6, 7, 2, 1, 2}, 56*16d86563SAlexander Pyhalov /*12 */ { 0, 4, 4, 4, 4, 4, 4,13, 4, 4, 4, 8, 8, 8, 8, 5, 6, 7, 2, 1, 2}, 57*16d86563SAlexander Pyhalov /*13 */ { 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 5, 6, 7, 2, 1, 2} 58*16d86563SAlexander Pyhalov }; 59*16d86563SAlexander Pyhalov 60*16d86563SAlexander Pyhalov int next_act[14][21]={ /* next action table[current state][input] */ 61*16d86563SAlexander Pyhalov /*input 62*16d86563SAlexander Pyhalov 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 */ 63*16d86563SAlexander Pyhalov /*state*/ 64*16d86563SAlexander Pyhalov /* 0 */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 65*16d86563SAlexander Pyhalov /* 1 */ { 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4}, 66*16d86563SAlexander Pyhalov /* 2 */ { 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,15,15,15,15,15,15,15, 1, 3, 4}, 67*16d86563SAlexander Pyhalov /* 3 */ { 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,15,15,15,15,15,15,15, 1, 3, 4}, 68*16d86563SAlexander Pyhalov /* 4 */ { 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 6, 6, 6, 6, 6, 6,16,12,13}, 69*16d86563SAlexander Pyhalov /* 5 */ { 0, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7,10,14,10,14,10,10,10,16,12,13}, 70*16d86563SAlexander Pyhalov /* 6 */ { 0, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7,10,10,14,14,10,10,10,16,12,13}, 71*16d86563SAlexander Pyhalov /* 7 */ { 0, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7,10,10,10,14,10,10,10,16,12,13}, 72*16d86563SAlexander Pyhalov /* 8 */ { 0, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7,10,10,10,10,10,10,10,16,12,13}, 73*16d86563SAlexander Pyhalov /* 9 */ { 0, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9,17,17,17,17,17,17,17,16,12,13}, 74*16d86563SAlexander Pyhalov /*10 */ { 0, 9, 9, 9, 9, 9, 9, 9, 8, 8, 9,17,17,17,17,17,17,17,16,12,13}, 75*16d86563SAlexander Pyhalov /*11 */ { 0, 9, 8, 9, 9, 8, 9, 8, 9, 8, 8,17,17,17,17,17,17,17,16,12,13}, 76*16d86563SAlexander Pyhalov /*12 */ { 0, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9,17,17,17,17,17,17,17,16,12,13}, 77*16d86563SAlexander Pyhalov /*13 */ { 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,17,17,17,17,17,17,17,16,12,13} 78*16d86563SAlexander Pyhalov }; 79*16d86563SAlexander Pyhalov 80*16d86563SAlexander Pyhalov #define ADD_CONVERTED_CODE(K, ADD)\ 81*16d86563SAlexander Pyhalov {\ 82*16d86563SAlexander Pyhalov unsigned short code;\ 83*16d86563SAlexander Pyhalov char temp[5];\ 84*16d86563SAlexander Pyhalov \ 85*16d86563SAlexander Pyhalov temp[1] = cd->hbuf[1];\ 86*16d86563SAlexander Pyhalov temp[2] = cd->hbuf[2];\ 87*16d86563SAlexander Pyhalov temp[3] = cd->hbuf[3];\ 88*16d86563SAlexander Pyhalov temp[4] = cd->hbuf[4];\ 89*16d86563SAlexander Pyhalov if ((result = _johap_to_wansung(&code,\ 90*16d86563SAlexander Pyhalov make_johap_code((K), temp))) != FAILED)\ 91*16d86563SAlexander Pyhalov {\ 92*16d86563SAlexander Pyhalov if ((obtail - ob) < (2 + (ADD)))\ 93*16d86563SAlexander Pyhalov {\ 94*16d86563SAlexander Pyhalov errno = E2BIG;\ 95*16d86563SAlexander Pyhalov ret_val = (size_t)-1;\ 96*16d86563SAlexander Pyhalov break;\ 97*16d86563SAlexander Pyhalov }\ 98*16d86563SAlexander Pyhalov cd->hbuf[1] = temp[1];\ 99*16d86563SAlexander Pyhalov cd->hbuf[2] = temp[2];\ 100*16d86563SAlexander Pyhalov cd->hbuf[3] = temp[3];\ 101*16d86563SAlexander Pyhalov cd->hbuf[4] = temp[4];\ 102*16d86563SAlexander Pyhalov *ob++ = (char)((code >> 8) & 0xFF);\ 103*16d86563SAlexander Pyhalov *ob++ = (char)(code & 0xFF);\ 104*16d86563SAlexander Pyhalov }\ 105*16d86563SAlexander Pyhalov else\ 106*16d86563SAlexander Pyhalov {\ 107*16d86563SAlexander Pyhalov if ((obtail - ob) < 2)\ 108*16d86563SAlexander Pyhalov {\ 109*16d86563SAlexander Pyhalov errno = E2BIG;\ 110*16d86563SAlexander Pyhalov ret_val = (size_t)-1;\ 111*16d86563SAlexander Pyhalov break;\ 112*16d86563SAlexander Pyhalov }\ 113*16d86563SAlexander Pyhalov *ob++ = NON_IDENTICAL;\ 114*16d86563SAlexander Pyhalov *ob++ = NON_IDENTICAL;\ 115*16d86563SAlexander Pyhalov ret_val += 2;\ 116*16d86563SAlexander Pyhalov }\ 117*16d86563SAlexander Pyhalov } 118*16d86563SAlexander Pyhalov 119*16d86563SAlexander Pyhalov 120*16d86563SAlexander Pyhalov #endif /* _NBYTE2EUC_H_ */ 121