Refactor and reimplement dtudcfonted
This commit is contained in:
@@ -105,23 +105,23 @@ static CodeSet wc_codeset();
|
||||
*/
|
||||
|
||||
static int
|
||||
euc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
|
||||
XlcConv conv;
|
||||
XPointer *from;
|
||||
int *from_left;
|
||||
XPointer *to;
|
||||
int *to_left;
|
||||
XPointer *args;
|
||||
int num_args;
|
||||
euc_mbstowcs(
|
||||
XlcConv conv,
|
||||
XPointer *from,
|
||||
int *from_left,
|
||||
XPointer *to,
|
||||
int *to_left,
|
||||
XPointer *args,
|
||||
int num_args)
|
||||
{
|
||||
|
||||
XLCd lcd = (XLCd)conv->state;
|
||||
|
||||
register Uchar ch;
|
||||
register int chr_len = 0;
|
||||
register int sshift = False;
|
||||
register int shift_mult = 0;
|
||||
register Uint chrcode;
|
||||
Uchar ch;
|
||||
int chr_len = 0;
|
||||
int sshift = False;
|
||||
int shift_mult = 0;
|
||||
Uint chrcode;
|
||||
|
||||
Uint wc_encode = 0;
|
||||
Uint wc_tmp = 0;
|
||||
@@ -259,20 +259,20 @@ euc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
|
||||
|
||||
|
||||
static int
|
||||
euc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
|
||||
XlcConv conv;
|
||||
XPointer *from;
|
||||
int *from_left;
|
||||
XPointer *to;
|
||||
int *to_left;
|
||||
XPointer *args;
|
||||
int num_args;
|
||||
euc_wcstombs(
|
||||
XlcConv conv,
|
||||
XPointer *from,
|
||||
int *from_left,
|
||||
XPointer *to,
|
||||
int *to_left,
|
||||
XPointer *args,
|
||||
int num_args)
|
||||
{
|
||||
wchar_t *inbufptr = (wchar_t *) *from;
|
||||
register XPointer outbufptr = *to;
|
||||
XPointer outbufptr = *to;
|
||||
XPointer outbuf_base = outbufptr;
|
||||
wchar_t wch;
|
||||
register length;
|
||||
int length;
|
||||
Uchar tmp;
|
||||
int num_conv;
|
||||
int unconv_num = 0;
|
||||
@@ -324,14 +324,14 @@ euc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
|
||||
|
||||
|
||||
static int
|
||||
euc_mbtocs(conv, from, from_left, to, to_left, args, num_args)
|
||||
XlcConv conv;
|
||||
XPointer *from;
|
||||
int *from_left;
|
||||
XPointer *to;
|
||||
int *to_left;
|
||||
XPointer *args;
|
||||
int num_args;
|
||||
euc_mbtocs(
|
||||
XlcConv conv,
|
||||
XPointer *from,
|
||||
int *from_left,
|
||||
XPointer *to,
|
||||
int *to_left,
|
||||
XPointer *args,
|
||||
int num_args)
|
||||
{
|
||||
XLCd lcd = (XLCd)conv->state;
|
||||
XlcCharSet charset;
|
||||
@@ -340,7 +340,7 @@ euc_mbtocs(conv, from, from_left, to, to_left, args, num_args)
|
||||
int length;
|
||||
int unconv_num = 0;
|
||||
int min_ch = 0;
|
||||
register char *src = *from, *dst = *to;
|
||||
char *src = *from, *dst = *to;
|
||||
|
||||
|
||||
if (isleftside(*src)) { /* 7-bit (CS0) */
|
||||
@@ -411,14 +411,14 @@ euc_mbtocs(conv, from, from_left, to, to_left, args, num_args)
|
||||
|
||||
|
||||
static int
|
||||
euc_mbstocs(conv, from, from_left, to, to_left, args, num_args)
|
||||
XlcConv conv;
|
||||
XPointer *from;
|
||||
int *from_left;
|
||||
XPointer *to;
|
||||
int *to_left;
|
||||
XPointer *args;
|
||||
int num_args;
|
||||
euc_mbstocs(
|
||||
XlcConv conv,
|
||||
XPointer *from,
|
||||
int *from_left,
|
||||
XPointer *to,
|
||||
int *to_left,
|
||||
XPointer *args,
|
||||
int num_args)
|
||||
{
|
||||
XLCd lcd = (XLCd)conv->state;
|
||||
char *tmp_from, *tmp_to;
|
||||
@@ -471,21 +471,21 @@ euc_mbstocs(conv, from, from_left, to, to_left, args, num_args)
|
||||
|
||||
|
||||
static int
|
||||
euc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
|
||||
XlcConv conv;
|
||||
XPointer *from;
|
||||
int *from_left;
|
||||
XPointer *to;
|
||||
int *to_left;
|
||||
XPointer *args;
|
||||
int num_args;
|
||||
euc_wcstocs(
|
||||
XlcConv conv,
|
||||
XPointer *from,
|
||||
int *from_left,
|
||||
XPointer *to,
|
||||
int *to_left,
|
||||
XPointer *args,
|
||||
int num_args)
|
||||
{
|
||||
XLCd lcd = (XLCd)conv->state;
|
||||
wchar_t *wcptr = (wchar_t *) *from;
|
||||
register char *bufptr = (char *) *to;
|
||||
char *bufptr = (char *) *to;
|
||||
wchar_t wch;
|
||||
char *tmpptr;
|
||||
register length;
|
||||
int length;
|
||||
CodeSet codeset;
|
||||
Ulong wc_encoding;
|
||||
int unconv_num = 0;
|
||||
@@ -533,20 +533,20 @@ euc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
|
||||
|
||||
|
||||
static int
|
||||
euc_cstombs(conv, from, from_left, to, to_left, args, num_args)
|
||||
XlcConv conv;
|
||||
XPointer *from;
|
||||
int *from_left;
|
||||
XPointer *to;
|
||||
int *to_left;
|
||||
XPointer *args;
|
||||
int num_args;
|
||||
euc_cstombs(
|
||||
XlcConv conv,
|
||||
XPointer *from,
|
||||
int *from_left,
|
||||
XPointer *to,
|
||||
int *to_left,
|
||||
XPointer *args,
|
||||
int num_args)
|
||||
{
|
||||
XLCd lcd = (XLCd)conv->state;
|
||||
register char *csptr = *from;
|
||||
register char *bufptr = *to;
|
||||
char *csptr = *from;
|
||||
char *bufptr = *to;
|
||||
int csstr_len = *from_left;
|
||||
register buf_len = *to_left;
|
||||
int buf_len = *to_left;
|
||||
int length;
|
||||
CodeSet codeset;
|
||||
int cvt_length;
|
||||
@@ -593,21 +593,21 @@ euc_cstombs(conv, from, from_left, to, to_left, args, num_args)
|
||||
|
||||
|
||||
static int
|
||||
euc_cstowcs(conv, from, from_left, to, to_left, args, num_args)
|
||||
XlcConv conv;
|
||||
XPointer *from;
|
||||
int *from_left;
|
||||
XPointer *to;
|
||||
int *to_left;
|
||||
XPointer *args;
|
||||
int num_args;
|
||||
euc_cstowcs(
|
||||
XlcConv conv,
|
||||
XPointer *from,
|
||||
int *from_left,
|
||||
XPointer *to,
|
||||
int *to_left,
|
||||
XPointer *args,
|
||||
int num_args)
|
||||
{
|
||||
XLCd lcd = (XLCd)conv->state;
|
||||
register char *csptr = *from;
|
||||
char *csptr = *from;
|
||||
wchar_t *bufptr = (wchar_t *) *to;
|
||||
wchar_t *toptr = (wchar_t *) *to;
|
||||
int csstr_len = *from_left;
|
||||
register buf_len = *to_left;
|
||||
int buf_len = *to_left;
|
||||
wchar_t wch;
|
||||
int length;
|
||||
Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
|
||||
@@ -651,14 +651,12 @@ euc_cstowcs(conv, from, from_left, to, to_left, args, num_args)
|
||||
|
||||
|
||||
static CodeSet
|
||||
wc_codeset(lcd, wch)
|
||||
XLCd lcd;
|
||||
wchar_t wch;
|
||||
wc_codeset(XLCd lcd, wchar_t wch)
|
||||
{
|
||||
|
||||
register CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
|
||||
register int end = XLC_GENERIC(lcd, codeset_num);
|
||||
register Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
|
||||
CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
|
||||
int end = XLC_GENERIC(lcd, codeset_num);
|
||||
Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
|
||||
|
||||
for (; --end >= 0; codesets++)
|
||||
if ( widech == (*codesets)->wc_encoding )
|
||||
@@ -669,13 +667,11 @@ wc_codeset(lcd, wch)
|
||||
|
||||
|
||||
static CodeSet
|
||||
GetCodeSetFromCharSet(lcd, charset)
|
||||
XLCd lcd;
|
||||
XlcCharSet charset;
|
||||
GetCodeSetFromCharSet(XLCd lcd, XlcCharSet charset)
|
||||
{
|
||||
register CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
|
||||
register XlcCharSet *charset_list;
|
||||
register codeset_num, num_charsets;
|
||||
CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
|
||||
XlcCharSet *charset_list;
|
||||
int codeset_num, num_charsets;
|
||||
|
||||
codeset_num = XLC_GENERIC(lcd, codeset_num);
|
||||
|
||||
@@ -693,9 +689,7 @@ GetCodeSetFromCharSet(lcd, charset)
|
||||
|
||||
|
||||
static XlcConv
|
||||
create_conv(lcd, methods)
|
||||
XLCd lcd;
|
||||
XlcConvMethods methods;
|
||||
create_conv(XLCd lcd, XlcConvMethods methods)
|
||||
{
|
||||
XlcConv conv;
|
||||
|
||||
@@ -711,7 +705,6 @@ create_conv(lcd, methods)
|
||||
|
||||
/*
|
||||
* Stripped down Direct CT converters for EUC
|
||||
*
|
||||
*/
|
||||
|
||||
typedef struct _CTDataRec {
|
||||
@@ -775,8 +768,7 @@ static enum { Ascii, Kanji, Kana, Userdef } cs_nums;
|
||||
* initCTptr(): Set ctdptr[] to point at ctdata[], indexed by codeset_num.
|
||||
*/
|
||||
static void
|
||||
initCTptr(lcd)
|
||||
XLCd lcd;
|
||||
initCTptr(XLCd lcd)
|
||||
{
|
||||
int num_codesets = XLC_GENERIC(lcd, codeset_num);
|
||||
int num_charsets;
|
||||
@@ -829,27 +821,27 @@ initCTptr(lcd)
|
||||
#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
|
||||
|
||||
static int
|
||||
euc_ctstowcs(conv, from, from_left, to, to_left, args, num_args)
|
||||
XlcConv conv;
|
||||
XPointer *from;
|
||||
int *from_left;
|
||||
XPointer *to;
|
||||
int *to_left;
|
||||
XPointer *args;
|
||||
int num_args;
|
||||
euc_ctstowcs(
|
||||
XlcConv conv,
|
||||
XPointer *from,
|
||||
int *from_left,
|
||||
XPointer *to,
|
||||
int *to_left,
|
||||
XPointer *args,
|
||||
int num_args)
|
||||
{
|
||||
XLCd lcd = (XLCd)conv->state;
|
||||
Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
|
||||
register XPointer inbufptr = *from;
|
||||
XPointer inbufptr = *from;
|
||||
XPointer inbuf_base;
|
||||
register wchar_t *outbufptr = (wchar_t *) *to;
|
||||
wchar_t *outbufptr = (wchar_t *) *to;
|
||||
wchar_t *outbuf_base = outbufptr;
|
||||
register clen, length;
|
||||
int clen, length;
|
||||
int num_conv;
|
||||
int unconv_num = 0;
|
||||
unsigned int ct_seglen = 0;
|
||||
Uchar ct_type = 0;
|
||||
register shift_mult;
|
||||
int shift_mult;
|
||||
wchar_t wc_tmp;
|
||||
wchar_t wch;
|
||||
Ulong wc_encoding;
|
||||
@@ -955,22 +947,22 @@ euc_ctstowcs(conv, from, from_left, to, to_left, args, num_args)
|
||||
#define userdef (codeset->cs_num == 3)
|
||||
|
||||
static int
|
||||
euc_wcstocts(conv, from, from_left, to, to_left, args, num_args)
|
||||
XlcConv conv;
|
||||
XPointer *from;
|
||||
int *from_left;
|
||||
XPointer *to;
|
||||
int *to_left;
|
||||
XPointer *args;
|
||||
int num_args;
|
||||
euc_wcstocts(
|
||||
XlcConv conv,
|
||||
XPointer *from,
|
||||
int *from_left,
|
||||
XPointer *to,
|
||||
int *to_left,
|
||||
XPointer *args,
|
||||
int num_args)
|
||||
{
|
||||
register ct_len = *to_left;
|
||||
register wchar_t *inbufptr = (wchar_t *) *from;
|
||||
register char *ctptr = *to;
|
||||
int ct_len = *to_left;
|
||||
wchar_t *inbufptr = (wchar_t *) *from;
|
||||
char *ctptr = *to;
|
||||
XPointer ct_base = ctptr;
|
||||
wchar_t wch;
|
||||
register length;
|
||||
register unconv_num = 0;
|
||||
int length;
|
||||
int unconv_num = 0;
|
||||
Uchar tmp;
|
||||
Uchar t1 = 0, t2;
|
||||
int num_conv;
|
||||
@@ -1085,20 +1077,20 @@ euc_wcstocts(conv, from, from_left, to, to_left, args, num_args)
|
||||
#define userdef (ctdp == ctdptr[Userdef])
|
||||
|
||||
static int
|
||||
euc_ctstombs(conv, from, from_left, to, to_left, args, num_args)
|
||||
XlcConv conv;
|
||||
XPointer *from;
|
||||
int *from_left;
|
||||
XPointer *to;
|
||||
int *to_left;
|
||||
XPointer *args;
|
||||
int num_args;
|
||||
euc_ctstombs(
|
||||
XlcConv conv,
|
||||
XPointer *from,
|
||||
int *from_left,
|
||||
XPointer *to,
|
||||
int *to_left,
|
||||
XPointer *args,
|
||||
int num_args)
|
||||
{
|
||||
register XPointer inbufptr = *from;
|
||||
register XPointer outbufptr = *to;
|
||||
XPointer inbufptr = *from;
|
||||
XPointer outbufptr = *to;
|
||||
XPointer inbuf_base;
|
||||
XPointer outbuf_base = outbufptr;
|
||||
register clen, length;
|
||||
int clen, length;
|
||||
int unconv_num = 0;
|
||||
int num_conv;
|
||||
unsigned int ct_seglen = 0;
|
||||
@@ -1204,22 +1196,22 @@ euc_ctstombs(conv, from, from_left, to, to_left, args, num_args)
|
||||
|
||||
|
||||
static int
|
||||
euc_mbstocts(conv, from, from_left, to, to_left, args, num_args)
|
||||
XlcConv conv;
|
||||
XPointer *from;
|
||||
int *from_left;
|
||||
XPointer *to;
|
||||
int *to_left;
|
||||
XPointer *args;
|
||||
int num_args;
|
||||
euc_mbstocts(
|
||||
XlcConv conv,
|
||||
XPointer *from,
|
||||
int *from_left,
|
||||
XPointer *to,
|
||||
int *to_left,
|
||||
XPointer *args,
|
||||
int num_args)
|
||||
{
|
||||
register ct_len = *to_left;
|
||||
int ct_len = *to_left;
|
||||
int cs_num;
|
||||
int clen, length;
|
||||
int unconv_num = 0;
|
||||
int num_conv;
|
||||
XPointer inbufptr = *from;
|
||||
register char *ctptr = *to;
|
||||
char *ctptr = *to;
|
||||
XPointer ct_base = ctptr;
|
||||
|
||||
StateRec ct_state;
|
||||
@@ -1321,8 +1313,7 @@ euc_mbstocts(conv, from, from_left, to, to_left, args, num_args)
|
||||
|
||||
|
||||
static void
|
||||
close_converter(conv)
|
||||
XlcConv conv;
|
||||
close_converter(XlcConv conv)
|
||||
{
|
||||
Xfree((char *) conv);
|
||||
}
|
||||
@@ -1346,118 +1337,73 @@ static XlcConvMethodsRec conv_methods[] = {
|
||||
|
||||
|
||||
static XlcConv
|
||||
open_mbstocs(from_lcd, from_type, to_lcd, to_type)
|
||||
XLCd from_lcd;
|
||||
char *from_type;
|
||||
XLCd to_lcd;
|
||||
char *to_type;
|
||||
open_mbstocs(XLCd from_lcd, char *from_type, XLCd to_lcd, char *to_type)
|
||||
{
|
||||
return create_conv(from_lcd, &conv_methods[MBSTOCS]);
|
||||
}
|
||||
|
||||
static XlcConv
|
||||
open_wcstocs(from_lcd, from_type, to_lcd, to_type)
|
||||
XLCd from_lcd;
|
||||
char *from_type;
|
||||
XLCd to_lcd;
|
||||
char *to_type;
|
||||
open_wcstocs(XLCd from_lcd, char *from_type, XLCd to_lcd, char *to_type)
|
||||
{
|
||||
return create_conv(from_lcd, &conv_methods[WCSTOCS]);
|
||||
}
|
||||
|
||||
static XlcConv
|
||||
open_mbtocs(from_lcd, from_type, to_lcd, to_type)
|
||||
XLCd from_lcd;
|
||||
char *from_type;
|
||||
XLCd to_lcd;
|
||||
char *to_type;
|
||||
open_mbtocs(XLCd from_lcd, char *from_type, XLCd to_lcd, char *to_type)
|
||||
{
|
||||
return create_conv(from_lcd, &conv_methods[MBTOCS]);
|
||||
}
|
||||
|
||||
static XlcConv
|
||||
open_cstombs(from_lcd, from_type, to_lcd, to_type)
|
||||
XLCd from_lcd;
|
||||
char *from_type;
|
||||
XLCd to_lcd;
|
||||
char *to_type;
|
||||
open_cstombs(XLCd from_lcd, char *from_type, XLCd to_lcd, char *to_type)
|
||||
{
|
||||
return create_conv(from_lcd, &conv_methods[CSTOMBS]);
|
||||
}
|
||||
|
||||
static XlcConv
|
||||
open_cstowcs(from_lcd, from_type, to_lcd, to_type)
|
||||
XLCd from_lcd;
|
||||
char *from_type;
|
||||
XLCd to_lcd;
|
||||
char *to_type;
|
||||
open_cstowcs(XLCd from_lcd, char *from_type, XLCd to_lcd, char *to_type)
|
||||
{
|
||||
return create_conv(from_lcd, &conv_methods[CSTOWCS]);
|
||||
}
|
||||
|
||||
static XlcConv
|
||||
open_mbstowcs(from_lcd, from_type, to_lcd, to_type)
|
||||
XLCd from_lcd;
|
||||
char *from_type;
|
||||
XLCd to_lcd;
|
||||
char *to_type;
|
||||
open_mbstowcs(XLCd from_lcd, char *from_type, XLCd to_lcd, char *to_type)
|
||||
{
|
||||
return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
|
||||
}
|
||||
|
||||
static XlcConv
|
||||
open_wcstombs(from_lcd, from_type, to_lcd, to_type)
|
||||
XLCd from_lcd;
|
||||
char *from_type;
|
||||
XLCd to_lcd;
|
||||
char *to_type;
|
||||
open_wcstombs(XLCd from_lcd, char *from_type, XLCd to_lcd, char *to_type)
|
||||
{
|
||||
return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
|
||||
}
|
||||
|
||||
static XlcConv
|
||||
open_ctstowcs(from_lcd, from_type, to_lcd, to_type)
|
||||
XLCd from_lcd;
|
||||
char *from_type;
|
||||
XLCd to_lcd;
|
||||
char *to_type;
|
||||
open_ctstowcs(XLCd from_lcd, char *from_type, XLCd to_lcd, char *to_type)
|
||||
{
|
||||
return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
|
||||
}
|
||||
|
||||
static XlcConv
|
||||
open_ctstombs(from_lcd, from_type, to_lcd, to_type)
|
||||
XLCd from_lcd;
|
||||
char *from_type;
|
||||
XLCd to_lcd;
|
||||
char *to_type;
|
||||
open_ctstombs(XLCd from_lcd, char *from_type, XLCd to_lcd, char *to_type)
|
||||
{
|
||||
return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
|
||||
}
|
||||
|
||||
static XlcConv
|
||||
open_wcstocts(from_lcd, from_type, to_lcd, to_type)
|
||||
XLCd from_lcd;
|
||||
char *from_type;
|
||||
XLCd to_lcd;
|
||||
char *to_type;
|
||||
open_wcstocts(XLCd from_lcd, char *from_type, XLCd to_lcd, char *to_type)
|
||||
{
|
||||
return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
|
||||
}
|
||||
|
||||
static XlcConv
|
||||
open_mbstocts(from_lcd, from_type, to_lcd, to_type)
|
||||
XLCd from_lcd;
|
||||
char *from_type;
|
||||
XLCd to_lcd;
|
||||
char *to_type;
|
||||
open_mbstocts(XLCd from_lcd, char *from_type, XLCd to_lcd, char *to_type)
|
||||
{
|
||||
return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
|
||||
}
|
||||
|
||||
XLCd
|
||||
_fallcEucLoader(name)
|
||||
char *name;
|
||||
_fallcEucLoader(char *name)
|
||||
{
|
||||
XLCd lcd;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user