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