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