Home | History | Annotate | Line # | Download | only in lcUniConv
      1 
      2 /*
      3  * JISX0201.1976-0
      4  */
      5 
      6 static int
      7 jisx0201_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 
     27 static int
     28 jisx0201_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