⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 charset.c

📁 vc环境下的pgp源码
💻 C
📖 第 1 页 / 共 5 页
字号:
      case 'U':  c = letter_w_diacritic[n][15]; break;
      case 'W':  c = letter_w_diacritic[n][16]; break;
      case 'Y':  c = letter_w_diacritic[n][17]; break;
      case 'Z':  c = letter_w_diacritic[n][18]; break;

      case 'a':  c = letter_w_diacritic[n][19]; break;
      case 'c':  c = letter_w_diacritic[n][20]; break;
      case 'd':  c = letter_w_diacritic[n][21]; break;
      case 'e':  c = letter_w_diacritic[n][22]; break;
      case 'g':  c = letter_w_diacritic[n][23]; break;
      case 'h':  c = letter_w_diacritic[n][24]; break;
      case 'i':  c = letter_w_diacritic[n][25]; break;
      case 'j':  c = letter_w_diacritic[n][26]; break;
      case 'k':  c = letter_w_diacritic[n][27]; break;
      case 'l':  c = letter_w_diacritic[n][28]; break;
      case 'n':  c = letter_w_diacritic[n][29]; break;
      case 'o':  c = letter_w_diacritic[n][30]; break;
      case 'r':  c = letter_w_diacritic[n][31]; break;
      case 's':  c = letter_w_diacritic[n][32]; break;
      case 't':  c = letter_w_diacritic[n][33]; break;
      case 'u':  c = letter_w_diacritic[n][34]; break;
      case 'w':  c = letter_w_diacritic[n][35]; break;
      case 'y':  c = letter_w_diacritic[n][36]; break;
      case 'z':  c = letter_w_diacritic[n][37]; break;

      case ALONE:  c = (( !diacritic[n].b ) ? diacritic[n].a : -1);
                   break;

      default:   c = 0;
      }

      if ( c > 0 ) {
        *o++ = c;  s++;
      } else {
        *o++ = '{';
        if ( c == -1 ) {
          *o++ = ( ( *s == ALONE ) ? ' ' : *s );
          s++;
        } else {
          *o++ = '"';
        }
        *o++ = diacritic[n].a;
        *o++ = '}';
      }
      break;

#if (ISO_8859 == 0)
    case 0x8: case 0x9:
      *o++ = 0x1B; /* <ESC> */
      *o++ = *s++ - 0x40;
      break;
#endif

      default:
        *o++ = *s++;
    }
  }

  len = o - oo;
  o = oo;

  if ( (oo = (Byte *)realloc( o, len )) == NULL ) {
    free( o );
    return( 1 );
  }

  if ( free_input ) {
    free( *bufp );
  }
  *bufp = (char *) oo;
  *buflenp = len;
  return( 0 );
}


static int
hh_to_c( Byte *h )
{
  Byte c;

  if ( (*h >= '0') && (*h <= '9') )      c = *h++ - '0';
  else if ( (*h >= 'A') && (*h <= 'F') ) c = *h++ - 'A' + 10;
  else if ( (*h >= 'a') && (*h <= 'f') ) c = *h++ - 'a' + 10;
  else return -1;

  c <<= 4;

  if ( (*h >= '0') && (*h <= '9') )      c |= *h - '0';
  else if ( (*h >= 'A') && (*h <= 'F') ) c |= *h - 'A' + 10;
  else if ( (*h >= 'a') && (*h <= 'f') ) c |= *h - 'a' + 10;
  else return -1;

  return c;
}


static Byte *
cc_to_t61( Byte *o, Byte *s )
{
  int n, c = 0;

  switch ( *(s + 1) ) {

  case '`':  c = -1;   break;    /* <grave-accent> */

  case '!':
    switch ( *s ) {
    case '!':  c = 0x7C;  break;  /* <vertical-line> */
    case '(':  c = 0x7B;  break;  /* <left-curly-bracket> */
    case '-':  c = 0xAD;  break;  /* <upwards-arrow> */
    default:   c = -1;            /* <grave-accent> */
    }
    break;

#if (ISO_8859 == 1) || (ISO_8859 == 2) || (ISO_8859 == 3) || \
    (ISO_8859 == 4) || (ISO_8859 == 9)
  case 0xB4:
#endif
  case '\'': c = -2;  break;    /* <acute-accent> */

  case '^':  c = -3;  break;    /* <circumflex-acent> */

  case '>':
    switch ( *s ) {
    case ')':  c = 0x5D;  break;  /* <right-square-bracket> */
    case '>':  c = 0xBB;  break;  /* <right-angle-quotation> */
    case '-':  c = 0xAE;  break;  /* <rightwards-arrow> */
    default:   c = -3;            /* <circumflex-acent> */
    }
    break;

  case '~':
  case '?':  c = -4;  break;        /* <tilde> */

#if (ISO_8859 == 1) || (ISO_8859 == 4) || (ISO_8859 == 9)
  case 0xAF:  c = -5;  break;       /* <macron> */
#endif

  case '-':
    switch ( *s ) {
    case '-':  c = 0xFF; break; /* <soft-hyphen> */
    case '<':  c = 0xAC; break; /* <leftwards arrow> */
    case '+':  c = 0xB1; break; /* <plus-minus> */
    case 'd':  c = 0xF3; break; /* <eth> */
    default:   c = -5;          /* <macron> */
    }
    break;

#if (ISO_8859 == 2) || (ISO_8859 == 3)
  case 0xA2:  c = -6;  break;            /* <breve> */
#endif

  case '(':
    if ( *s == '<' ) c = 0x5B;  /* <left-square-bracket> */
    else             c = -6;    /* <breve> */
    break;

#if (ISO_8859 == 2) || (ISO_8859 == 3) || (ISO_8859 == 4)
  case 0xFF:  c = -7;  break;    /* <dot-accent> */
#endif

  case '.':
    switch ( *s ) {
    case 'i':  c = 0xF5; break; /* <dotless-i> */
    case 'L':  c = 0xE7; break; /* <L-middle-dot> */
    case 'l':  c = 0xF7; break; /* <l-middle-dot> */
    default:   c = -7;          /* <dot-accent> */
    }
    break;

#if (ISO_8859 == 1) || (ISO_8859 == 2) || (ISO_8859 == 3) || \
    (ISO_8859 == 4) || (ISO_8859 == 9)
  case 0xA8:  c = -8; break; /* <diaeresis> */
#endif

  case ':':
    if ( *s == '-')  c = 0xB8; /* <division-sign> */
    else             c = -8;   /* <diaeresis> */
    break;

#if (ISO_8859 == 1) || (ISO_8859 == 2) || (ISO_8859 == 3) || \
    (ISO_8859 == 4) || (ISO_8859 == 9) || (ISO_8859 == 10)
  case 0xB0:
#endif
  case '0':  c = -10;  break;  /* <ring-above> */

#if (ISO_8859 == 1) || (ISO_8859 == 2) || (ISO_8859 == 3) || \
    (ISO_8859 == 4) || (ISO_8859 == 9)
  case 0xB8:
#endif
  case ',':  c = -11; break; /* <cedilla> */

#if (ISO_8859 == 2)
  case 0xBD:
#endif
  case '"':  c = -13; break; /* <double-acute-accent> */

#if (ISO_8859 == 2) || (ISO_8859 == 4)
  case 0xB2:
#endif
  case ';':  c = -14; break; /* <ogonek> */

#if (ISO_8859 == 2) || (ISO_8859 == 4)
  case 0xB7:  c = -15;  break;  /* <caron> */
#endif

  case ')':
    if ( *s == '!' )  c = 0x7D;  /* <left-curly-bracket> */
    break;

  case '<':
    if ( *s == '<' )  c = 0xAB;  /* <left-angle-quotation> */
    else              c = -15;   /* <caron> */
    break;

  case '/':
    switch ( *s ) {
    case '/':  c = 0x5C; break; /* <reverse-solidus> */
    case 'D':  c = 0xE2; break; /* <D-stroke> */
    case 'd':  c = 0xF2; break; /* <d-stroke> */
    case 'H':  c = 0xE4; break; /* <H-stroke> */
    case 'h':  c = 0xF4; break; /* <h-stroke> */
    case 'L':  c = 0xE8; break; /* <L-stroke> */
    case 'l':  c = 0xF8; break; /* <l-stroke> */
    case 'O':  c = 0xE9; break; /* <O-stroke> */
    case 'o':  c = 0xF9; break; /* <o-stroke> */
    case 'T':  c = 0xED; break; /* <T-stroke> */
    case 't':  c = 0xFD; break; /* <t-stroke> */
    }
    break;

  case '2':
    if ( *s == '1' )  c = 0xBD;    /* <one-half> */
    break;

  case '4':
    switch ( *s ) {
    case '1':  c = 0xBC; break; /* <one-quarter> */
    case '3':  c = 0xBE; break; /* <three-quarters> */
    }
    break;

  case '6':
    switch ( *s ) {
    case '\'': c = 0xA9; break; /* <left-single-quotation> */
    case '"':  c = 0xAA; break; /* <left-double-quotation> */
    }
    break;

  case '8':
    switch ( *s ) {
    case '1':  c = 0xDC; break; /* <one-eighth> */
    case '3':  c = 0xDD; break; /* <three-eighths> */
    case '5':  c = 0xDE; break; /* <five-eighths> */
    case '7':  c = 0xDF; break; /* <seven-eighths> */
    case 'M':  c = 0xD5; break; /* <eighth-note> */
    }
    break;

  case '9':
    switch ( *s ) {
    case '\'': c = 0xB9; break; /* <right-single-quotation> */
    case '"':  c = 0xBA; break; /* <right-double-quotation> */
    }
    break;

  case 'A':
    if ( *s == 'A' )  c = -10;  /* <ring-above> + <A> */
    break;

  case 'a':
    switch ( *s ) {
    case '-':  c = 0xE3; break; /* <femenine-ordinal-a> */
    case 'a':  c = -10;  break; /* <ring-above> + <a> */
    }
    break;

  case 'B':
    if ( *s == 'B' )  c = 0xD7; /* <broken-bar> */
    break;

  case 'b':
    if ( *s == 'N' )  c = 0xA6;  /* <number-sign> */
    break;

  case 'd':
    if ( *s == 'P' )  c = 0xA3;  /* <pound-sign> */
    break;

  case 'E':
    switch ( *s ) {
    case 'S':  c = 0xA7; break; /* <section-sign> */
    case 'A':  c = 0xE1; break; /* <AE> */
    case 'O':  c = 0xEA; break; /* <OE> */
    }
    break;

  case 'e':
    switch ( *s ) {
    case 'a':  c = 0xF1; break; /* <ae> */
    case 'o':  c = 0xFA; break; /* <oe> */
    case 'Y':  c = 0xA5;  break;  /* <yen-sign> */
    }
    break;

  case 'G':
    switch ( *s ) {
    case 'D':  c = 0xB0; break; /* <degree-sign> */
    case 'N':  c = 0xEE; break; /* <Eng> */
    }
    break;

  case 'g':
    switch ( *s ) {
    case 'R':  c = 0xD2; break;  /* <registered-sign> */
    case 'n':  c = 0xFE; break; /* <eng> */
    }
    break;

  case 'H':
    if ( *s == 'T' )  c = 0xEC;  /* <Thorn> */
    break;

  case 'h':
    if ( *s == 't' )  c = 0xFC; /* <thorn> */
    break;

  case 'I':
    switch ( *s ) {
    case 'P':  c = 0xB6; break;  /* <pilcrow-sign> */
    case '!':  c = 0xA1; break; /* <inverted-exclamation> */
    case '?':  c = 0xBF; break; /* <inverted-question> */
    }
    break;

  case 'J':
    if ( *s == 'I' )  c = 0xE6; /* <IJ> */
    break;

  case 'j':
    if ( *s == 'i' )  c = 0xF6;  /* <ij> */
    break;

  case 'k':
    if ( *s == 'k' )  c = 0xF0; /* <kra> */
    break;

  case 'M':
    switch ( *s ) {
    case '.':  c = 0xB7; break; /* <middle-dot> */
    case '-':  c = 0xD0; break; /* <em-dash> */
    case 'T':  c = 0xD4; break; /* <trade-mark-sign> */
    }
    break;

  case 'm':
    switch ( *s ) {
    case '\'':                  /* <macron> RFC 1345 */
    case ' ':  c = -5;   break; /* <macron> */
    case 'O':  c = 0xE0; break; /* <Ohm sign> */
    }
    break;

  case 'n':
    if ( *s == '\'' )  c = 0xEF; /* <n-preceded-by-apostrophe> */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -