1
2/*
3 * JISX0201.1976-0
4 */
5
6static int
7jisx0201_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
8{
9  unsigned char c = *s;
10  if (c < 0x80) {
11    if (c == 0x5c)
12      *pwc = (ucs4_t) 0x00a5;
13    else if (c == 0x7e)
14      *pwc = (ucs4_t) 0x203e;
15    else
16      *pwc = (ucs4_t) c;
17    return 1;
18  } else {
19    if (c >= 0xa1 && c < 0xe0) {
20      *pwc = (ucs4_t) c + 0xfec0;
21      return 1;
22    }
23  }
24  return RET_ILSEQ;
25}
26
27static int
28jisx0201_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
29{
30  if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) {
31    *r = (unsigned char) wc;
32    return 1;
33  }
34  if (wc == 0x00a5) {
35    *r = 0x5c;
36    return 1;
37  }
38  if (wc == 0x203e) {
39    *r = 0x7e;
40    return 1;
41  }
42  if (wc >= 0xff61 && wc < 0xffa0) {
43    *r = (unsigned char) (wc - 0xfec0);
44    return 1;
45  }
46  return RET_ILSEQ;
47}
48