conv.c ucs_eucjp.h ucs_latin1.h: deleted
This commit is contained in:
@@ -1,3 +1,7 @@
|
||||
2003-09-27 Fumitoshi UKAI <ukai@debian.or.jp>
|
||||
|
||||
* conv.c ucs_eucjp.h ucs_latin1.h: deleted
|
||||
|
||||
2003-09-26 Fumitoshi UKAI <ukai@debian.or.jp>
|
||||
|
||||
* add posubst, compile-time message l10n
|
||||
@@ -8097,4 +8101,4 @@ a * [w3m-dev 03276] compile error on EWS4800
|
||||
* release-0-2-1
|
||||
* import w3m-0.2.1
|
||||
|
||||
$Id: ChangeLog,v 1.872 2003/09/25 18:08:59 ukai Exp $
|
||||
$Id: ChangeLog,v 1.873 2003/09/26 16:57:27 ukai Exp $
|
||||
|
697
conv.c
697
conv.c
@@ -1,697 +0,0 @@
|
||||
/* $Id: conv.c,v 1.7 2002/09/24 16:35:02 ukai Exp $ */
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "fm.h"
|
||||
|
||||
#ifdef JP_CHARSET
|
||||
#include "terms.h"
|
||||
#include "Str.h"
|
||||
|
||||
#ifdef DEBUG
|
||||
#include <malloc.h>
|
||||
#endif /* DEBUG */
|
||||
|
||||
#define uchar unsigned char
|
||||
#define ushort unsigned short
|
||||
#define uint unsigned int
|
||||
|
||||
#ifdef TRUE
|
||||
#undef TRUE
|
||||
#endif
|
||||
#ifdef FALSE
|
||||
#undef FALSE
|
||||
#endif
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
#ifdef ESC_CODE
|
||||
#undef ESC_CODE
|
||||
#endif
|
||||
#define ESC_CODE '\033'
|
||||
|
||||
#define CODE_NORMAL 0x00
|
||||
#define CODE_OK 0x01
|
||||
#define CODE_BROKEN 0x02
|
||||
#define CODE_ERROR 0x04
|
||||
#define EUC_NOSTATE 0x00
|
||||
#define EUC_MBYTE1 0x10
|
||||
#define EUC_SS2 0x20
|
||||
#define EUC_SS3 0x40
|
||||
#define SJIS_NOSTATE 0x00
|
||||
#define SJIS_SHIFT_L 0x10
|
||||
#define SJIS_SHIFT_H 0x20
|
||||
#define ISO_NOSTATE 0x00
|
||||
#define ISO_ESC 0x10
|
||||
#define ISO_CS94 0x20
|
||||
#define ISO_MBCS 0x40
|
||||
#define ISO_MBYTE1 0x80
|
||||
#define CODE_STATE(c) ((c) & 0x0f)
|
||||
#define EUC_STATE(c) ((c) & 0xf0)
|
||||
#define SJIS_STATE(c) ((c) & 0xf0)
|
||||
#define ISO_STATE(c) ((c) & 0xf0)
|
||||
|
||||
#define CSET_ASCII 0
|
||||
#define CSET_X0208 1
|
||||
#define CSET_X0201K 2
|
||||
#define CSET_UNKNOWN 3
|
||||
|
||||
#define JSIcode "\033$@"
|
||||
#define JSOcode "\033(H"
|
||||
#define J2SIcode "\033$@"
|
||||
#define J2SOcode "\033(J"
|
||||
#define NSIcode "\033$B"
|
||||
#define NSOcode "\033(J"
|
||||
#define N2SIcode "\033$B"
|
||||
#define N2SOcode "\033(B"
|
||||
#define N3SIcode "\033$@"
|
||||
#define N3SOcode "\033(B"
|
||||
#define USIcode "\033$"
|
||||
#define USOcode "\033+"
|
||||
|
||||
static char *SIcode, *SOcode;
|
||||
|
||||
static Str cConvEE(Str is);
|
||||
static Str cConvEJ(Str is);
|
||||
static Str cConvES(Str is);
|
||||
static Str cConvSE(Str is);
|
||||
static Str cConvJE(Str is);
|
||||
char checkShiftCode(Str buf, uchar);
|
||||
|
||||
static char *han2zen_tab[] = {
|
||||
"!!", "!#", "!V", "!W", "!\"", "!&", "%r", "%!",
|
||||
"%#", "%%", "%'", "%)", "%c", "%e", "%g", "%C",
|
||||
"!<", "%\"", "%$", "%&", "%(", "%*", "%+", "%-",
|
||||
"%/", "%1", "%3", "%5", "%7", "%9", "%;", "%=",
|
||||
"%?", "%A", "%D", "%F", "%H", "%J", "%K", "%L",
|
||||
"%M", "%N", "%O", "%R", "%U", "%X", "%[", "%^",
|
||||
"%_", "%`", "%a", "%b", "%d", "%f", "%h", "%i",
|
||||
"%j", "%k", "%l", "%m", "%o", "%s", "!+", "!,",
|
||||
};
|
||||
|
||||
typedef struct _ConvRoutine {
|
||||
char key;
|
||||
Str (*routine) ();
|
||||
char *ShiftIn, *ShiftOut;
|
||||
} ConvRoutine;
|
||||
|
||||
static ConvRoutine FromEJ[] = {
|
||||
{CODE_JIS_J, cConvEJ, JSIcode, JSOcode},
|
||||
{CODE_JIS_N, cConvEJ, NSIcode, NSOcode},
|
||||
{CODE_JIS_n, cConvEJ, N2SIcode, N2SOcode},
|
||||
{CODE_JIS_m, cConvEJ, N3SIcode, N3SOcode},
|
||||
{CODE_JIS_j, cConvEJ, J2SIcode, J2SOcode},
|
||||
{CODE_SJIS, cConvES, "", ""},
|
||||
{CODE_EUC, cConvEE, "", ""},
|
||||
{'\0', NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
static ConvRoutine ToEJ[] = {
|
||||
{CODE_JIS_J, cConvJE, JSIcode, JSOcode},
|
||||
{CODE_JIS_N, cConvJE, NSIcode, NSOcode},
|
||||
{CODE_JIS_n, cConvJE, N2SIcode, N2SOcode},
|
||||
{CODE_JIS_m, cConvJE, N3SIcode, N3SOcode},
|
||||
{CODE_JIS_j, cConvJE, J2SIcode, J2SOcode},
|
||||
{CODE_SJIS, cConvSE, "", ""},
|
||||
{CODE_EUC, cConvEE, "", ""},
|
||||
{'\0', NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
char *
|
||||
GetSICode(char key)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; FromEJ[i].key != '\0'; i++)
|
||||
if (FromEJ[i].key == key)
|
||||
return FromEJ[i].ShiftIn;
|
||||
return "";
|
||||
}
|
||||
|
||||
char *
|
||||
GetSOCode(char key)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; FromEJ[i].key != '\0'; i++)
|
||||
if (FromEJ[i].key == key)
|
||||
return FromEJ[i].ShiftOut;
|
||||
return "";
|
||||
}
|
||||
|
||||
static void
|
||||
n_impr(char s)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"conv: option %c(0x%02x) is not implemented yet... sorry\n", s, s);
|
||||
w3m_exit(1);
|
||||
}
|
||||
|
||||
Str
|
||||
conv_str(Str is, char fc, char tc)
|
||||
{
|
||||
int i;
|
||||
Str os;
|
||||
static char from_code = '\0';
|
||||
static char to_code = '\0';
|
||||
static Str (*conv_from) ();
|
||||
static Str (*conv_to) ();
|
||||
|
||||
if (fc == tc || fc == CODE_ASCII || tc == CODE_ASCII)
|
||||
return is;
|
||||
|
||||
if (fc == CODE_INNER_EUC)
|
||||
os = is;
|
||||
else {
|
||||
if (from_code != fc) {
|
||||
for (i = 0; ToEJ[i].key != '\0'; i++) {
|
||||
if (ToEJ[i].key == fc) {
|
||||
from_code = fc;
|
||||
conv_from = *ToEJ[i].routine;
|
||||
goto next;
|
||||
}
|
||||
}
|
||||
n_impr(fc);
|
||||
return NULL;
|
||||
}
|
||||
next:
|
||||
os = conv_from(is);
|
||||
}
|
||||
if (tc == CODE_INNER_EUC || tc == CODE_EUC)
|
||||
return os;
|
||||
else {
|
||||
if (to_code != tc) {
|
||||
for (i = 0; FromEJ[i].key != '\0'; i++) {
|
||||
if (FromEJ[i].key == tc) {
|
||||
SIcode = FromEJ[i].ShiftIn;
|
||||
SOcode = FromEJ[i].ShiftOut;
|
||||
to_code = tc;
|
||||
conv_to = *FromEJ[i].routine;
|
||||
goto next2;
|
||||
}
|
||||
}
|
||||
n_impr(tc);
|
||||
return NULL;
|
||||
}
|
||||
next2:
|
||||
return conv_to(os);
|
||||
}
|
||||
}
|
||||
|
||||
Str
|
||||
conv(char *is, char fc, char tc)
|
||||
{
|
||||
return conv_str(Strnew_charp(is), fc, tc);
|
||||
}
|
||||
|
||||
static uchar
|
||||
getSLb(uchar * ptr, uchar * ub)
|
||||
{ /* Get Shift-JIS Lower byte */
|
||||
uchar c = *ptr;
|
||||
|
||||
*ub <<= 1;
|
||||
if (c < 0x9f) {
|
||||
if (c > 0x7e)
|
||||
c--;
|
||||
*ub -= 1;
|
||||
c -= 0x3f;
|
||||
}
|
||||
else {
|
||||
c -= 0x9e;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
static Str
|
||||
cConvSE(Str is)
|
||||
{ /* Convert Shift-JIS to EUC-JP */
|
||||
uchar *p, ub, lb;
|
||||
int state = SJIS_NOSTATE;
|
||||
Str os = Strnew_size(is->length);
|
||||
uchar *endp = (uchar *) & is->ptr[is->length];
|
||||
|
||||
for (p = (uchar *) is->ptr; p < endp; p++) {
|
||||
switch (state) {
|
||||
case SJIS_NOSTATE:
|
||||
if (!(*p & 0x80)) /* ASCII */
|
||||
Strcat_char(os, (char)(*p));
|
||||
else if (0x81 <= *p && *p <= 0x9f) { /* JIS X 0208,
|
||||
* 0213 */
|
||||
ub = *p & 0x7f;
|
||||
state = SJIS_SHIFT_L;
|
||||
}
|
||||
else if (0xe0 <= *p && *p <= 0xef) { /* JIS X 0208 */
|
||||
/* } else if (0xe0 <= *p && *p <= 0xfc) { *//* JIS X 0213 */
|
||||
ub = (*p & 0x7f) - 0x40;
|
||||
state = SJIS_SHIFT_H;
|
||||
}
|
||||
else if (0xa0 <= *p && *p <= 0xdf) { /* JIS X 0201-Kana
|
||||
*/
|
||||
Strcat_char(os, (char)(han2zen_tab[*p - 0xa0][0] | 0x80));
|
||||
Strcat_char(os, (char)(han2zen_tab[*p - 0xa0][1] | 0x80));
|
||||
}
|
||||
break;
|
||||
case SJIS_SHIFT_L:
|
||||
case SJIS_SHIFT_H:
|
||||
if ((0x40 <= *p && *p <= 0x7e) || (0x80 <= *p && *p <= 0xfc)) { /* JIS X 0208, 0213 */
|
||||
lb = getSLb(p, &ub);
|
||||
ub += 0x20;
|
||||
lb += 0x20;
|
||||
Strcat_char(os, (char)(ub | 0x80));
|
||||
Strcat_char(os, (char)(lb | 0x80));
|
||||
}
|
||||
else if (!(*p & 0x80)) /* broken ? */
|
||||
Strcat_char(os, (char)(*p));
|
||||
state = SJIS_NOSTATE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
static Str
|
||||
cConvJE(Str is)
|
||||
{ /* Convert ISO-2022-JP to EUC-JP */
|
||||
uchar *p, ub = 0;
|
||||
char cset = CSET_ASCII;
|
||||
int state = ISO_NOSTATE;
|
||||
Str os = Strnew_size(is->length);
|
||||
uchar *endp = (uchar *) & is->ptr[is->length];
|
||||
|
||||
for (p = (uchar *) is->ptr; p < endp; p++) {
|
||||
switch (state) {
|
||||
case ISO_NOSTATE:
|
||||
if (*p == ESC_CODE) /* ESC sequence */
|
||||
state = ISO_ESC;
|
||||
else if (cset == CSET_ASCII || *p < 0x21)
|
||||
Strcat_char(os, (char)(*p));
|
||||
else if (cset == CSET_X0208 && *p <= 0x7e) {
|
||||
/* JIS X 0208 */
|
||||
ub = *p;
|
||||
state = ISO_MBYTE1;
|
||||
}
|
||||
else if (cset == CSET_X0201K && *p <= 0x5f) {
|
||||
/* JIS X 0201-Kana */
|
||||
Strcat_char(os, (char)(han2zen_tab[*p - 0x20][0] | 0x80));
|
||||
Strcat_char(os, (char)(han2zen_tab[*p - 0x20][1] | 0x80));
|
||||
}
|
||||
break;
|
||||
case ISO_MBYTE1:
|
||||
if (*p == ESC_CODE) /* ESC sequence */
|
||||
state = ISO_ESC;
|
||||
else if (0x21 <= *p && *p <= 0x7e) { /* JIS X 0208 */
|
||||
Strcat_char(os, (char)(ub | 0x80));
|
||||
Strcat_char(os, (char)(*p | 0x80));
|
||||
state = ISO_NOSTATE;
|
||||
}
|
||||
else {
|
||||
Strcat_char(os, (char)(*p));
|
||||
state = ISO_NOSTATE;
|
||||
}
|
||||
break;
|
||||
case ISO_ESC:
|
||||
if (*p == '(') /* ESC ( F */
|
||||
state = ISO_CS94;
|
||||
else if (*p == '$') /* ESC $ F, ESC $ ( F */
|
||||
state = ISO_MBCS;
|
||||
else {
|
||||
Strcat_char(os, ESC_CODE);
|
||||
Strcat_char(os, (char)(*p));
|
||||
state = ISO_NOSTATE;
|
||||
}
|
||||
break;
|
||||
case ISO_CS94:
|
||||
if (*p == 'B' || *p == 'J' || *p == 'H')
|
||||
cset = CSET_ASCII;
|
||||
else if (*p == 'I')
|
||||
cset = CSET_X0201K;
|
||||
else {
|
||||
Strcat_char(os, ESC_CODE);
|
||||
Strcat_char(os, '(');
|
||||
Strcat_char(os, (char)(*p));
|
||||
}
|
||||
state = ISO_NOSTATE;
|
||||
break;
|
||||
case ISO_MBCS:
|
||||
if (*p == '(') { /* ESC $ ( F */
|
||||
state = ISO_MBCS | ISO_CS94;
|
||||
break;
|
||||
}
|
||||
case ISO_MBCS | ISO_CS94:
|
||||
if (*p == 'B' || *p == '@')
|
||||
cset = CSET_X0208;
|
||||
else {
|
||||
Strcat_char(os, ESC_CODE);
|
||||
Strcat_char(os, '$');
|
||||
if (state == (ISO_MBCS | ISO_CS94))
|
||||
Strcat_char(os, '(');
|
||||
Strcat_char(os, (char)(*p));
|
||||
}
|
||||
state = ISO_NOSTATE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
static Str
|
||||
_cConvEE(Str is, char is_euc)
|
||||
{ /* Convert EUC-JP to EUC-JP / ISO-2022-JP
|
||||
* (no JIS X 0201-Kana, 0212, 0213-2) */
|
||||
uchar *p, ub = 0, euc = 0;
|
||||
int state = EUC_NOSTATE;
|
||||
char cset = CSET_ASCII;
|
||||
Str os;
|
||||
uchar *endp = (uchar *) & is->ptr[is->length];
|
||||
|
||||
if (is_euc) {
|
||||
os = Strnew_size(is->length);
|
||||
euc = 0x80;
|
||||
}
|
||||
else
|
||||
os = Strnew_size(is->length * 3 / 2);
|
||||
|
||||
for (p = (uchar *) is->ptr; p < endp; p++) {
|
||||
switch (state) {
|
||||
case EUC_NOSTATE:
|
||||
if (!(*p & 0x80)) { /* ASCII */
|
||||
if (!is_euc && cset != CSET_ASCII) {
|
||||
Strcat_charp(os, SOcode);
|
||||
cset = CSET_ASCII;
|
||||
}
|
||||
Strcat_char(os, (char)(*p));
|
||||
}
|
||||
else if (0xa1 <= *p && *p <= 0xfe) { /* JIS X 0208,
|
||||
* 0213-1 */
|
||||
ub = *p;
|
||||
state = EUC_MBYTE1;
|
||||
}
|
||||
else if (*p == EUC_SS2_CODE) /* SS2 + JIS X 0201-Kana */
|
||||
state = EUC_SS2;
|
||||
else if (*p == EUC_SS3_CODE) /* SS3 + JIS X 0212, 0213-2 */
|
||||
state = EUC_SS3;
|
||||
break;
|
||||
case EUC_MBYTE1:
|
||||
if (0xa1 <= *p && *p <= 0xfe) { /* JIS X 0208, 0213-1 */
|
||||
if (!is_euc && cset != CSET_X0208) {
|
||||
Strcat_charp(os, SIcode);
|
||||
cset = CSET_X0208;
|
||||
}
|
||||
Strcat_char(os, (char)((ub & 0x7f) | euc));
|
||||
Strcat_char(os, (char)((*p & 0x7f) | euc));
|
||||
}
|
||||
else if (!(*p & 0x80)) { /* broken ? */
|
||||
if (!is_euc && cset != CSET_ASCII) {
|
||||
Strcat_charp(os, SOcode);
|
||||
cset = CSET_ASCII;
|
||||
}
|
||||
Strcat_char(os, (char)(*p));
|
||||
}
|
||||
state = EUC_NOSTATE;
|
||||
break;
|
||||
case EUC_SS2:
|
||||
if (0xa0 <= *p && *p <= 0xdf) { /* JIS X 0201-Kana */
|
||||
if (!is_euc && cset != CSET_X0208) {
|
||||
Strcat_charp(os, SIcode);
|
||||
cset = CSET_X0208;
|
||||
}
|
||||
Strcat_char(os, (char)(han2zen_tab[*p - 0xa0][0] | euc));
|
||||
Strcat_char(os, (char)(han2zen_tab[*p - 0xa0][1] | euc));
|
||||
}
|
||||
state = EUC_NOSTATE;
|
||||
break;
|
||||
case EUC_SS3:
|
||||
state = (EUC_SS3 | EUC_MBYTE1);
|
||||
break;
|
||||
case EUC_SS3 | EUC_MBYTE1:
|
||||
state = EUC_NOSTATE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!is_euc && cset != CSET_ASCII)
|
||||
Strcat_charp(os, SOcode);
|
||||
return os;
|
||||
}
|
||||
|
||||
static Str
|
||||
cConvEE(Str is)
|
||||
{
|
||||
return _cConvEE(is, TRUE);
|
||||
}
|
||||
|
||||
static Str
|
||||
cConvEJ(Str is)
|
||||
{
|
||||
return _cConvEE(is, FALSE);
|
||||
}
|
||||
|
||||
void
|
||||
put_sjis(Str os, uchar ub, uchar lb)
|
||||
{
|
||||
ub -= 0x20;
|
||||
lb -= 0x20;
|
||||
if ((ub & 1) == 0)
|
||||
lb += 94;
|
||||
ub = ((ub - 1) >> 1) + 0x81;
|
||||
lb += 0x3f;
|
||||
if (ub > 0x9f)
|
||||
ub += 0x40;
|
||||
if (lb > 0x7e)
|
||||
lb++;
|
||||
|
||||
Strcat_char(os, (char)(ub));
|
||||
Strcat_char(os, (char)(lb));
|
||||
}
|
||||
|
||||
static Str
|
||||
cConvES(Str is)
|
||||
{ /* Convert EUC-JP to Shift-JIS */
|
||||
uchar *p, ub = 0;
|
||||
int state = EUC_NOSTATE;
|
||||
Str os = Strnew_size(is->length);
|
||||
uchar *endp = (uchar *) & is->ptr[is->length];
|
||||
|
||||
for (p = (uchar *) is->ptr; p < endp; p++) {
|
||||
switch (state) {
|
||||
case EUC_NOSTATE:
|
||||
if (!(*p & 0x80)) /* ASCII */
|
||||
Strcat_char(os, (char)(*p));
|
||||
else if (0xa1 <= *p && *p <= 0xfe) { /* JIS X 0208,
|
||||
* 0213-1 */
|
||||
ub = *p;
|
||||
state = EUC_MBYTE1;
|
||||
}
|
||||
else if (*p == EUC_SS2_CODE) /* SS2 + JIS X 0201-Kana */
|
||||
state = EUC_SS2;
|
||||
else if (*p == EUC_SS3_CODE) /* SS3 + JIS X 0212, 0213-2 */
|
||||
state = EUC_SS3;
|
||||
break;
|
||||
case EUC_MBYTE1:
|
||||
if (0xa1 <= *p && *p <= 0xfe) /* JIS X 0208, 0213-1 */
|
||||
put_sjis(os, ub & 0x7f, *p & 0x7f);
|
||||
else if (!(*p & 0x80)) /* broken ? */
|
||||
Strcat_char(os, (char)(*p));
|
||||
state = EUC_NOSTATE;
|
||||
break;
|
||||
case EUC_SS2:
|
||||
if (0xa0 <= *p && *p <= 0xdf) /* JIS X 0201-Kana */
|
||||
put_sjis(os, han2zen_tab[*p - 0xa0][0],
|
||||
han2zen_tab[*p - 0xa0][1]);
|
||||
state = EUC_NOSTATE;
|
||||
break;
|
||||
case EUC_SS3:
|
||||
state = (EUC_SS3 | EUC_MBYTE1);
|
||||
break;
|
||||
case EUC_SS3 | EUC_MBYTE1:
|
||||
state = EUC_NOSTATE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
/*
|
||||
* static ushort sjis_shift[8] = { 0x7fff, 0xffff, 0x0, 0x0, 0x0,
|
||||
* 0x0, 0xffff, 0x0 }; static ushort sjis_second[16] = { 0x0, 0x0,
|
||||
* 0x0, 0x0, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff, 0xffff, 0xffff,
|
||||
* 0xffff, 0xffff, 0xffff, 0xffff, 0xfff8 }; */
|
||||
|
||||
char
|
||||
checkShiftCode(Str buf, uchar hint)
|
||||
{
|
||||
uchar *p, si = '\0', so = '\0';
|
||||
int euc = (CODE_NORMAL | EUC_NOSTATE),
|
||||
sjis = (CODE_NORMAL | SJIS_NOSTATE), sjis_kana = CODE_NORMAL,
|
||||
iso = (CODE_NORMAL | ISO_NOSTATE), iso_kana = CODE_NORMAL;
|
||||
uchar *endp = (uchar *) & buf->ptr[buf->length];
|
||||
|
||||
if (hint == CODE_INNER_EUC)
|
||||
return '\0';
|
||||
p = (uchar *) buf->ptr;
|
||||
while (1) {
|
||||
if (iso != CODE_ERROR && (si == '\0' || so == '\0')) {
|
||||
switch (ISO_STATE(iso)) {
|
||||
case ISO_NOSTATE:
|
||||
if (*p == ESC_CODE) /* ESC sequence */
|
||||
iso = (CODE_STATE(iso) | ISO_ESC);
|
||||
break;
|
||||
case ISO_ESC:
|
||||
if (*p == '(') /* ESC ( F */
|
||||
iso = (CODE_STATE(iso) | ISO_CS94);
|
||||
else if (*p == '$') /* ESC $ F, ESC $ ( F */
|
||||
iso = (CODE_STATE(iso) | ISO_MBCS);
|
||||
else
|
||||
iso = (CODE_STATE(iso) | ISO_NOSTATE);
|
||||
break;
|
||||
case ISO_CS94:
|
||||
if (*p == 'B' || *p == 'J' || *p == 'H')
|
||||
so = *p;
|
||||
else if (*p == 'I')
|
||||
iso_kana = CODE_OK;
|
||||
iso = (CODE_STATE(iso) | ISO_NOSTATE);
|
||||
break;
|
||||
case ISO_MBCS:
|
||||
if (*p == '(') { /* ESC $ ( F */
|
||||
iso = (CODE_STATE(iso) | ISO_MBCS | ISO_CS94);
|
||||
break;
|
||||
}
|
||||
case ISO_MBCS | ISO_CS94:
|
||||
if (*p == 'B' || *p == '@')
|
||||
si = *p;
|
||||
iso = (CODE_STATE(iso) | ISO_NOSTATE);
|
||||
break;
|
||||
}
|
||||
if (*p & 0x80)
|
||||
iso = CODE_ERROR;
|
||||
}
|
||||
if (euc != CODE_ERROR) {
|
||||
switch (EUC_STATE(euc)) {
|
||||
case EUC_NOSTATE:
|
||||
if (!(*p & 0x80)) /* ASCII */
|
||||
;
|
||||
else if (0xa1 <= *p && *p <= 0xfe) /* JIS X 0208, 0213-1 */
|
||||
euc = (CODE_STATE(euc) | EUC_MBYTE1);
|
||||
else if (*p == EUC_SS2_CODE) /* SS2 + JIS X 0201-Kana */
|
||||
euc = (CODE_STATE(euc) | EUC_SS2);
|
||||
else if (*p == EUC_SS3_CODE) /* SS3 + JIS X 0212, 0213-2 */
|
||||
euc = (CODE_STATE(euc) | EUC_SS3);
|
||||
else
|
||||
euc = CODE_ERROR;
|
||||
break;
|
||||
case EUC_MBYTE1:
|
||||
if (CODE_STATE(euc) == CODE_NORMAL)
|
||||
euc = CODE_OK;
|
||||
case EUC_SS3 | EUC_MBYTE1:
|
||||
if (0xa1 <= *p && *p <= 0xfe) /* JIS X 0208, 0213-1 */
|
||||
euc = (CODE_STATE(euc) | EUC_NOSTATE);
|
||||
else if (euc & CODE_BROKEN)
|
||||
euc = CODE_ERROR;
|
||||
else
|
||||
euc = (CODE_BROKEN | EUC_NOSTATE);
|
||||
break;
|
||||
case EUC_SS2:
|
||||
if (0xa0 <= *p && *p <= 0xdf) /* JIS X 0201-Kana */
|
||||
euc = (CODE_STATE(euc) | EUC_NOSTATE);
|
||||
else
|
||||
euc = CODE_ERROR;
|
||||
break;
|
||||
case EUC_SS3:
|
||||
if (0xa1 <= *p && *p <= 0xfe) /* JIS X 0212, 0213-2 */
|
||||
euc = (CODE_STATE(euc) | EUC_SS3 | EUC_MBYTE1);
|
||||
else
|
||||
euc = CODE_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (sjis != CODE_ERROR) {
|
||||
switch (SJIS_STATE(sjis)) {
|
||||
case SJIS_NOSTATE:
|
||||
if (!(*p & 0x80)) /* ASCII */
|
||||
;
|
||||
else if (0x81 <= *p && *p <= 0x9f)
|
||||
sjis = (CODE_STATE(sjis) | SJIS_SHIFT_L);
|
||||
else if (0xe0 <= *p && *p <= 0xef)
|
||||
|
||||
/* JIS X 0208 */
|
||||
/* else if (0xe0 <= *p && *p <= 0xfc) */
|
||||
/* JIS X 0213 */
|
||||
sjis = (CODE_STATE(sjis) | SJIS_SHIFT_H);
|
||||
else if (0xa0 == *p)
|
||||
sjis = (CODE_BROKEN | SJIS_NOSTATE);
|
||||
else if (0xa1 <= *p && *p <= 0xdf) /* JIS X 0201-Kana
|
||||
*/
|
||||
sjis_kana = CODE_OK;
|
||||
else
|
||||
sjis = CODE_ERROR;
|
||||
break;
|
||||
case SJIS_SHIFT_L:
|
||||
case SJIS_SHIFT_H:
|
||||
if (CODE_STATE(sjis) == CODE_NORMAL)
|
||||
sjis = CODE_OK;
|
||||
if ((0x40 <= *p && *p <= 0x7e) || (0x80 <= *p && *p <= 0xfc)) /* JIS X 0208, 0213 */
|
||||
sjis = (CODE_STATE(sjis) | SJIS_NOSTATE);
|
||||
else if (sjis & CODE_BROKEN)
|
||||
sjis = CODE_ERROR;
|
||||
else
|
||||
sjis = (CODE_BROKEN | SJIS_NOSTATE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (euc == CODE_ERROR || sjis == CODE_ERROR)
|
||||
break;
|
||||
if (p == endp)
|
||||
break;
|
||||
p++;
|
||||
}
|
||||
if (iso != CODE_ERROR) {
|
||||
if (si == '\0' && so == '\0' && iso_kana != CODE_OK)
|
||||
return '\0';
|
||||
switch (si) {
|
||||
case '@':
|
||||
switch (so) {
|
||||
case 'H':
|
||||
return CODE_JIS_J;
|
||||
case 'J':
|
||||
return CODE_JIS_j;
|
||||
case 'B':
|
||||
return CODE_JIS_m;
|
||||
default:
|
||||
return CODE_JIS_m;
|
||||
}
|
||||
case 'B':
|
||||
switch (so) {
|
||||
case 'J':
|
||||
return CODE_JIS_N;
|
||||
case 'B':
|
||||
return CODE_JIS_n;
|
||||
default:
|
||||
return CODE_JIS_n;
|
||||
}
|
||||
default:
|
||||
switch (so) {
|
||||
case 'H':
|
||||
return CODE_JIS_J;
|
||||
case 'J':
|
||||
return CODE_JIS_N;
|
||||
case 'B':
|
||||
return CODE_JIS_n;
|
||||
default:
|
||||
return CODE_JIS_n;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (hint == CODE_EUC) {
|
||||
if (euc != CODE_ERROR)
|
||||
return CODE_EUC;
|
||||
}
|
||||
else if (hint == CODE_SJIS) {
|
||||
if (sjis != CODE_ERROR)
|
||||
return CODE_SJIS;
|
||||
}
|
||||
if (CODE_STATE(euc) == CODE_OK)
|
||||
return CODE_EUC;
|
||||
if (CODE_STATE(sjis) == CODE_OK)
|
||||
return CODE_SJIS;
|
||||
if (CODE_STATE(euc) == CODE_NORMAL)
|
||||
return CODE_EUC;
|
||||
if (CODE_STATE(sjis) == CODE_NORMAL)
|
||||
return CODE_SJIS;
|
||||
return CODE_EUC;
|
||||
}
|
||||
#endif /* JP_CHARSET */
|
4
rc.c
4
rc.c
@@ -1,4 +1,4 @@
|
||||
/* $Id: rc.c,v 1.92 2003/09/25 18:09:01 ukai Exp $ */
|
||||
/* $Id: rc.c,v 1.93 2003/09/26 16:57:27 ukai Exp $ */
|
||||
/*
|
||||
* Initialization file etc.
|
||||
*/
|
||||
@@ -173,7 +173,7 @@ static int OptionEncode = FALSE;
|
||||
#define CMT_MOUSE N_("Enable mouse")
|
||||
#define CMT_REVERSE_MOUSE N_("Scroll in reverse direction of mouse drag")
|
||||
#define CMT_RELATIVE_WHEEL_SCROLL N_("Behavior of wheel scroll speed")
|
||||
#define CMT_RELATIVE_WHEEL_SCROLL_RATIO N_("(A only)Scroll by # % of screen")
|
||||
#define CMT_RELATIVE_WHEEL_SCROLL_RATIO N_("(A only)Scroll by # (%) of screen")
|
||||
#define CMT_FIXED_WHEEL_SCROLL_COUNT N_("(B only)Scroll by # lines")
|
||||
#endif /* USE_MOUSE */
|
||||
#define CMT_CLEAR_BUF N_("Free memory of undisplayed buffers")
|
||||
|
119
ucs_eucjp.h
119
ucs_eucjp.h
@@ -1,119 +0,0 @@
|
||||
/* $Id: ucs_eucjp.h,v 1.3 2001/11/24 02:01:26 ukai Exp $ */
|
||||
static entity_map ucs_eucjp_map[] = {
|
||||
{0x0152, "OE"},
|
||||
{0x0153, "oe"},
|
||||
{0x0178, "Y:"},
|
||||
{0x0192, "f"},
|
||||
{0x02C6, "^"},
|
||||
{0x02DC, "~"},
|
||||
{0x0391, "<EFBFBD><EFBFBD>"},
|
||||
{0x0392, "<EFBFBD><EFBFBD>"},
|
||||
{0x0393, "<EFBFBD><EFBFBD>"},
|
||||
{0x0394, "<EFBFBD><EFBFBD>"},
|
||||
{0x0395, "<EFBFBD><EFBFBD>"},
|
||||
{0x0396, "<EFBFBD><EFBFBD>"},
|
||||
{0x0397, "<EFBFBD><EFBFBD>"},
|
||||
{0x0398, "<EFBFBD><EFBFBD>"},
|
||||
{0x0399, "<EFBFBD><EFBFBD>"},
|
||||
{0x039A, "<EFBFBD><EFBFBD>"},
|
||||
{0x039B, "<EFBFBD><EFBFBD>"},
|
||||
{0x039C, "<EFBFBD><EFBFBD>"},
|
||||
{0x039D, "<EFBFBD><EFBFBD>"},
|
||||
{0x039E, "<EFBFBD><EFBFBD>"},
|
||||
{0x039F, "<EFBFBD><EFBFBD>"},
|
||||
{0x03A0, "<EFBFBD><EFBFBD>"},
|
||||
{0x03A1, "<EFBFBD><EFBFBD>"},
|
||||
{0x03A3, "<EFBFBD><EFBFBD>"},
|
||||
{0x03A4, "<EFBFBD><EFBFBD>"},
|
||||
{0x03A5, "<EFBFBD><EFBFBD>"},
|
||||
{0x03A6, "<EFBFBD><EFBFBD>"},
|
||||
{0x03A7, "<EFBFBD><EFBFBD>"},
|
||||
{0x03A8, "<EFBFBD><EFBFBD>"},
|
||||
{0x03A9, "<EFBFBD><EFBFBD>"},
|
||||
{0x03B1, "<EFBFBD><EFBFBD>"},
|
||||
{0x03B2, "<EFBFBD><EFBFBD>"},
|
||||
{0x03B3, "<EFBFBD><EFBFBD>"},
|
||||
{0x03B4, "<EFBFBD><EFBFBD>"},
|
||||
{0x03B5, "<EFBFBD><EFBFBD>"},
|
||||
{0x03B6, "<EFBFBD><EFBFBD>"},
|
||||
{0x03B7, "<EFBFBD><EFBFBD>"},
|
||||
{0x03B8, "<EFBFBD><EFBFBD>"},
|
||||
{0x03B9, "<EFBFBD><EFBFBD>"},
|
||||
{0x03BA, "<EFBFBD><EFBFBD>"},
|
||||
{0x03BB, "<EFBFBD><EFBFBD>"},
|
||||
{0x03BC, "<EFBFBD><EFBFBD>"},
|
||||
{0x03BD, "<EFBFBD><EFBFBD>"},
|
||||
{0x03BE, "<EFBFBD><EFBFBD>"},
|
||||
{0x03BF, "<EFBFBD><EFBFBD>"},
|
||||
{0x03C0, "<EFBFBD><EFBFBD>"},
|
||||
{0x03C1, "<EFBFBD><EFBFBD>"},
|
||||
{0x03C2, "<EFBFBD><EFBFBD>"},
|
||||
{0x03C3, "<EFBFBD><EFBFBD>"},
|
||||
{0x03C4, "<EFBFBD><EFBFBD>"},
|
||||
{0x03C5, "<EFBFBD><EFBFBD>"},
|
||||
{0x03C6, "<EFBFBD><EFBFBD>"},
|
||||
{0x03C7, "<EFBFBD><EFBFBD>"},
|
||||
{0x03C8, "<EFBFBD><EFBFBD>"},
|
||||
{0x03C9, "<EFBFBD><EFBFBD>"},
|
||||
{0x2002, " "},
|
||||
{0x2003, " "},
|
||||
{0x2013, "<EFBFBD><EFBFBD>"},
|
||||
{0x2014, "<EFBFBD><EFBFBD>"},
|
||||
{0x2018, "<EFBFBD><EFBFBD>"},
|
||||
{0x2019, "<EFBFBD><EFBFBD>"},
|
||||
{0x201A, ","},
|
||||
{0x201C, "<EFBFBD><EFBFBD>"},
|
||||
{0x201D, "<EFBFBD><EFBFBD>"},
|
||||
{0x201E, ",,"},
|
||||
{0x2020, "<EFBFBD><EFBFBD>"},
|
||||
{0x2021, "<EFBFBD><EFBFBD>"},
|
||||
{0x2022, "<EFBFBD><EFBFBD>"},
|
||||
{0x2026, "<EFBFBD><EFBFBD>"},
|
||||
{0x2030, "<EFBFBD><EFBFBD>"},
|
||||
{0x2032, "<EFBFBD><EFBFBD>"},
|
||||
{0x2033, "<EFBFBD><EFBFBD>"},
|
||||
{0x2039, "<EFBFBD><EFBFBD>"},
|
||||
{0x203A, "<EFBFBD><EFBFBD>"},
|
||||
{0x203E, "<EFBFBD><EFBFBD>"},
|
||||
{0x2044, "/"},
|
||||
{0x20AC, "=C="},
|
||||
{0x2122, "TM"},
|
||||
{0x2190, "<EFBFBD><EFBFBD>"},
|
||||
{0x2191, "<EFBFBD><EFBFBD>"},
|
||||
{0x2192, "<EFBFBD><EFBFBD>"},
|
||||
{0x2193, "<EFBFBD><EFBFBD>"},
|
||||
{0x21D2, "<EFBFBD><EFBFBD>"},
|
||||
{0x21D4, "<EFBFBD><EFBFBD>"},
|
||||
{0x2200, "<EFBFBD><EFBFBD>"},
|
||||
{0x2202, "<EFBFBD><EFBFBD>"},
|
||||
{0x2203, "<EFBFBD><EFBFBD>"},
|
||||
{0x2205, "<EFBFBD><EFBFBD>"},
|
||||
{0x2207, "<EFBFBD><EFBFBD>"},
|
||||
{0x2208, "<EFBFBD><EFBFBD>"},
|
||||
{0x220B, "<EFBFBD><EFBFBD>"},
|
||||
{0x220F, "<EFBFBD><EFBFBD>"},
|
||||
{0x2211, "<EFBFBD><EFBFBD>"},
|
||||
{0x2212, "<EFBFBD><EFBFBD>"},
|
||||
{0x221A, "<EFBFBD><EFBFBD>"},
|
||||
{0x221D, "<EFBFBD><EFBFBD>"},
|
||||
{0x221E, "<EFBFBD><EFBFBD>"},
|
||||
{0x2220, "<EFBFBD><EFBFBD>"},
|
||||
{0x2227, "<EFBFBD><EFBFBD>"},
|
||||
{0x2228, "<EFBFBD><EFBFBD>"},
|
||||
{0x2229, "<EFBFBD><EFBFBD>"},
|
||||
{0x222A, "<EFBFBD><EFBFBD>"},
|
||||
{0x222B, "<EFBFBD><EFBFBD>"},
|
||||
{0x2234, "<EFBFBD><EFBFBD>"},
|
||||
{0x223C, "<EFBFBD><EFBFBD>"},
|
||||
{0x2260, "<EFBFBD><EFBFBD>"},
|
||||
{0x2261, "<EFBFBD><EFBFBD>"},
|
||||
{0x2264, "<EFBFBD><EFBFBD>"},
|
||||
{0x2265, "<EFBFBD><EFBFBD>"},
|
||||
{0x2282, "<EFBFBD><EFBFBD>"},
|
||||
{0x2283, "<EFBFBD><EFBFBD>"},
|
||||
{0x2286, "<EFBFBD><EFBFBD>"},
|
||||
{0x2287, "<EFBFBD><EFBFBD>"},
|
||||
{0x22A5, "<EFBFBD><EFBFBD>"},
|
||||
{0x25CA, "<EFBFBD><EFBFBD>"},
|
||||
{0x2666, "<EFBFBD><EFBFBD>"},
|
||||
};
|
36
ucs_latin1.h
36
ucs_latin1.h
@@ -1,36 +0,0 @@
|
||||
/* $Id: ucs_latin1.h,v 1.3 2001/11/24 02:01:26 ukai Exp $ */
|
||||
static entity_map ucs_latin1_map[] = {
|
||||
{0x0152, "OE"},
|
||||
{0x0153, "oe"},
|
||||
{0x0178, "Y:"},
|
||||
{0x0192, "f"},
|
||||
{0x02C6, "^"},
|
||||
{0x02DC, "~"},
|
||||
{0x03BC, "\xB5"},
|
||||
{0x2002, " "},
|
||||
{0x2003, " "},
|
||||
{0x2013, "\xAD"},
|
||||
{0x2014, "-"},
|
||||
{0x2018, "`"},
|
||||
{0x2019, "'"},
|
||||
{0x201A, "\xB8"},
|
||||
{0x201C, "\""},
|
||||
{0x201D, "\""},
|
||||
{0x201E, ",,"},
|
||||
{0x2022, "*"},
|
||||
{0x2030, "0/00"},
|
||||
{0x2032, "'"},
|
||||
{0x2033, "\""},
|
||||
{0x2039, "<"},
|
||||
{0x203A, ">"},
|
||||
{0x2044, "/"},
|
||||
{0x20AC, "=C="},
|
||||
{0x2122, "TM"},
|
||||
{0x2205, "\xF8"},
|
||||
{0x2212, "-"},
|
||||
{0x223C, "~"},
|
||||
{0x2260, "!="},
|
||||
{0x2261, "="},
|
||||
{0x2264, "<="},
|
||||
{0x2265, ">="},
|
||||
};
|
Reference in New Issue
Block a user