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

📄 kanji.c

📁 MC Linux/Unix 终端下文件管理器
💻 C
📖 第 1 页 / 共 3 页
字号:
  save = (char *) from;  for (out = cvtbuf; *from;) {    if (is_shift_jis (*from)) {      int code = sjis2euc ((int) from[0] & 0xff, (int) from[1] & 0xff);      *out++ = (code >> 8) & 0xff;      *out++ = code;      from += 2;    } else if (is_kana (*from)) {      *out++ = (char)euc_kana;      *out++ = *from++;    } else {      *out++ = *from++;    }  }  *out = 0;  if (overwrite) {    pstrcpy((char *) save, (char *) cvtbuf);    return (char *) save;  } else {    return cvtbuf;  }}/******************************************************************* Convert FROM contain EUC codes to SHIFT JIS codes return converted buffer********************************************************************/static char *euc_to_sj(char *from, BOOL overwrite){  char *out;  char *save;  save = (char *) from;  for (out = cvtbuf; *from; ) {    if (is_euc (*from)) {      int code = euc2sjis ((int) from[0] & 0xff, (int) from[1] & 0xff);      *out++ = (code >> 8) & 0xff;      *out++ = code;      from += 2;    } else if (is_euc_kana (*from)) {      *out++ = from[1];      from += 2;    } else {      *out++ = *from++;    }  }  *out = 0;  if (overwrite) {    pstrcpy(save, (char *) cvtbuf);    return save;  } else {    return cvtbuf;  }}/*******************************************************************  JIS7,JIS8,JUNET <-> SJIS********************************************************************/static int sjis2jis(int hi, int lo){  if (lo >= 0x9f)    return ((hi * 2 - (hi >= 0xe0 ? 0x160 : 0xe0)) << 8) | (lo - 0x7e);  else    return ((hi * 2 - (hi >= 0xe0 ? 0x161 : 0xe1)) << 8) |            (lo - (lo >= 0x7f ? 0x20 : 0x1f));}static int jis2sjis(int hi, int lo){  if (hi & 1)    return ((hi / 2 + (hi < 0x5f ? 0x71 : 0xb1)) << 8) |            (lo + (lo >= 0x60 ? 0x20 : 0x1f));  else    return ((hi / 2 + (hi < 0x5f ? 0x70 : 0xb0)) << 8) | (lo + 0x7e);}/******************************************************************* Convert FROM contain JIS codes to SHIFT JIS codes return converted buffer********************************************************************/static char *jis8_to_sj(char *from, BOOL overwrite){    char *out;    int shifted;    char *save;    shifted = _KJ_ROMAN;    save = (char *) from;    for (out = cvtbuf; *from;) {	if (is_esc (*from)) {	    if (is_so1 (from[1]) && is_so2 (from[2])) {		shifted = _KJ_KANJI;		from += 3;	    } else if (is_si1 (from[1]) && is_si2 (from[2])) {		shifted = _KJ_ROMAN;		from += 3;	    } else {			/* sequence error */		goto normal;	    }	} else {	normal:	    switch (shifted) {	    default:	    case _KJ_ROMAN:		*out++ = *from++;		break;	    case _KJ_KANJI:		{		    int code = jis2sjis ((int) from[0] & 0xff, (int) from[1] & 0xff);		    *out++ = (code >> 8) & 0xff;		    *out++ = code;		    from += 2;		}		break;	    }	}    }    *out = 0;    if (overwrite) {	pstrcpy (save, (char *) cvtbuf);	return save;    } else {	return cvtbuf;    }}/******************************************************************* Convert FROM contain SHIFT JIS codes to JIS codes return converted buffer********************************************************************/static char *sj_to_jis8(char *from, BOOL overwrite){    char *out;    int shifted;    char *save;    shifted = _KJ_ROMAN;    save = (char *) from;    for (out = cvtbuf; *from; ) {	if (is_shift_jis (*from)) {	    int code;	    switch (shifted) {	    case _KJ_ROMAN:		/* to KANJI */		*out++ = jis_esc;		*out++ = jis_so1;		*out++ = jis_kso;		shifted = _KJ_KANJI;		break;	    }	    code = sjis2jis ((int) from[0] & 0xff, (int) from[1] & 0xff);	    *out++ = (code >> 8) & 0xff;	    *out++ = code;	    from += 2;	} else {	    switch (shifted) {	    case _KJ_KANJI:		/* to ROMAN/KANA */		*out++ = jis_esc;		*out++ = jis_si1;		*out++ = jis_ksi;		shifted = _KJ_ROMAN;		break;	    }	    *out++ = *from++;	}    }    switch (shifted) {    case _KJ_KANJI:			/* to ROMAN/KANA */	*out++ = jis_esc;	*out++ = jis_si1;	*out++ = jis_ksi;	shifted = _KJ_ROMAN;	break;    }    *out = 0;    if (overwrite) {	pstrcpy (save, (char *) cvtbuf);	return save;    } else {	return cvtbuf;    }}/******************************************************************* Convert FROM contain 7 bits JIS codes to SHIFT JIS codes return converted buffer********************************************************************/static char *jis7_to_sj(char *from, BOOL overwrite){    char *out;    int shifted;    char *save;    shifted = _KJ_ROMAN;    save = (char *) from;    for (out = cvtbuf; *from;) {	if (is_esc (*from)) {	    if (is_so1 (from[1]) && is_so2 (from[2])) {		shifted = _KJ_KANJI;		from += 3;	    } else if (is_si1 (from[1]) && is_si2 (from[2])) {		shifted = _KJ_ROMAN;		from += 3;	    } else {			/* sequence error */		goto normal;	    }	} else if (is_so (*from)) {	    shifted = _KJ_KANA;		/* to KANA */	    from++;	} else if (is_si (*from)) {	    shifted = _KJ_ROMAN;	/* to ROMAN */	    from++;	} else {	normal:	    switch (shifted) {	    default:	    case _KJ_ROMAN:		*out++ = *from++;		break;	    case _KJ_KANJI:		{		    int code = jis2sjis ((int) from[0] & 0xff, (int) from[1] & 0xff);		    *out++ = (code >> 8) & 0xff;		    *out++ = code;		    from += 2;		}		break;	    case _KJ_KANA:		*out++ = ((int) from[0]) + 0x80;		break;	    }	}    }    *out = 0;    if (overwrite) {	pstrcpy (save, (char *) cvtbuf);	return save;    } else {	return cvtbuf;    }}/******************************************************************* Convert FROM contain SHIFT JIS codes to 7 bits JIS codes return converted buffer********************************************************************/static char *sj_to_jis7(char *from, BOOL overwrite){    char *out;    int shifted;    char *save;    shifted = _KJ_ROMAN;    save = (char *) from;    for (out = cvtbuf; *from; ) {	if (is_shift_jis (*from)) {	    int code;	    switch (shifted) {	    case _KJ_KANA:		*out++ = jis_si;	/* to ROMAN and through down */	    case _KJ_ROMAN:		/* to KANJI */		*out++ = jis_esc;		*out++ = jis_so1;		*out++ = jis_kso;		shifted = _KJ_KANJI;		break;	    }	    code = sjis2jis ((int) from[0] & 0xff, (int) from[1] & 0xff);	    *out++ = (code >> 8) & 0xff;	    *out++ = code;	    from += 2;	} else if (is_kana (from[0])) {	    switch (shifted) {	    case _KJ_KANJI:		/* to ROMAN */		*out++ = jis_esc;		*out++ = jis_si1;		*out++ = jis_ksi;	    case _KJ_ROMAN:		/* to KANA */		*out++ = jis_so;		shifted = _KJ_KANA;		break;	    }	    *out++ = ((int) *from++) - 0x80;	} else {	    switch (shifted) {	    case _KJ_KANA:		*out++ = jis_si;	/* to ROMAN */		shifted = _KJ_ROMAN;		break;	    case _KJ_KANJI:		/* to ROMAN */		*out++ = jis_esc;		*out++ = jis_si1;		*out++ = jis_ksi;		shifted = _KJ_ROMAN;		break;	    }	    *out++ = *from++;	}    }    switch (shifted) {    case _KJ_KANA:	*out++ = jis_si;		/* to ROMAN */	break;    case _KJ_KANJI:			/* to ROMAN */	*out++ = jis_esc;	*out++ = jis_si1;	*out++ = jis_ksi;	break;    }    *out = 0;    if (overwrite) {	pstrcpy (save, (char *) cvtbuf);	return save;    } else {	return cvtbuf;    }}/******************************************************************* Convert FROM contain 7 bits JIS(junet) codes to SHIFT JIS codes return converted buffer********************************************************************/static char *junet_to_sj(char *from, BOOL overwrite){    char *out;    int shifted;    char *save;    shifted = _KJ_ROMAN;    save = (char *) from;    for (out = cvtbuf; *from;) {	if (is_esc (*from)) {	    if (is_so1 (from[1]) && is_so2 (from[2])) {		shifted = _KJ_KANJI;		from += 3;	    } else if (is_si1 (from[1]) && is_si2 (from[2])) {		shifted = _KJ_ROMAN;		from += 3;	    } else if (is_juk1(from[1]) && is_juk2 (from[2])) {		shifted = _KJ_KANA;		from += 3;	    } else {			/* sequence error */		goto normal;	    }	} else {	normal:	    switch (shifted) {	    default:	    case _KJ_ROMAN:		*out++ = *from++;		break;	    case _KJ_KANJI:		{		    int code = jis2sjis ((int) from[0] & 0xff, (int) from[1] & 0xff);		    *out++ = (code >> 8) & 0xff;		    *out++ = code;		    from += 2;		}		break;	    case _KJ_KANA:		*out++ = ((int) from[0]) + 0x80;		break;	    }	}    }    *out = 0;    if (overwrite) {	pstrcpy (save, (char *) cvtbuf);	return save;    } else {	return cvtbuf;    }}/******************************************************************* Convert FROM contain SHIFT JIS codes to 7 bits JIS(junet) codes return converted buffer********************************************************************/static char *sj_to_junet(char *from, BOOL overwrite){    char *out;    int shifted;    char *save;    shifted = _KJ_ROMAN;    save = (char *) from;    for (out = cvtbuf; *from; ) {	if (is_shift_jis (*from)) {	    int code;	    switch (shifted) {	    case _KJ_KANA:	    case _KJ_ROMAN:		/* to KANJI */		*out++ = jis_esc;		*out++ = jis_so1;		*out++ = jis_so2;		shifted = _KJ_KANJI;		break;	    }	    code = sjis2jis ((int) from[0] & 0xff, (int) from[1] & 0xff);	    *out++ = (code >> 8) & 0xff;	    *out++ = code;	    from += 2;	} else if (is_kana (from[0])) {	    switch (shifted) {	    case _KJ_KANJI:		/* to ROMAN */	    case _KJ_ROMAN:		/* to KANA */		*out++ = jis_esc;		*out++ = junet_kana1;

⌨️ 快捷键说明

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