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