jisx0201.h revision 1ab64890
11ab64890Smrg/* $XFree86$ */ 21ab64890Smrg 31ab64890Smrg/* 41ab64890Smrg * JISX0201.1976-0 51ab64890Smrg */ 61ab64890Smrg 71ab64890Smrgstatic int 81ab64890Smrgjisx0201_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) 91ab64890Smrg{ 101ab64890Smrg unsigned char c = *s; 111ab64890Smrg if (c < 0x80) { 121ab64890Smrg if (c == 0x5c) 131ab64890Smrg *pwc = (ucs4_t) 0x00a5; 141ab64890Smrg else if (c == 0x7e) 151ab64890Smrg *pwc = (ucs4_t) 0x203e; 161ab64890Smrg else 171ab64890Smrg *pwc = (ucs4_t) c; 181ab64890Smrg return 1; 191ab64890Smrg } else { 201ab64890Smrg if (c >= 0xa1 && c < 0xe0) { 211ab64890Smrg *pwc = (ucs4_t) c + 0xfec0; 221ab64890Smrg return 1; 231ab64890Smrg } 241ab64890Smrg } 251ab64890Smrg return RET_ILSEQ; 261ab64890Smrg} 271ab64890Smrg 281ab64890Smrgstatic int 291ab64890Smrgjisx0201_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) 301ab64890Smrg{ 311ab64890Smrg if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) { 321ab64890Smrg *r = wc; 331ab64890Smrg return 1; 341ab64890Smrg } 351ab64890Smrg if (wc == 0x00a5) { 361ab64890Smrg *r = 0x5c; 371ab64890Smrg return 1; 381ab64890Smrg } 391ab64890Smrg if (wc == 0x203e) { 401ab64890Smrg *r = 0x7e; 411ab64890Smrg return 1; 421ab64890Smrg } 431ab64890Smrg if (wc >= 0xff61 && wc < 0xffa0) { 441ab64890Smrg *r = wc - 0xfec0; 451ab64890Smrg return 1; 461ab64890Smrg } 471ab64890Smrg return RET_ILSEQ; 481ab64890Smrg} 49