diff -c xc/lib/X11/lcEuc.c.orig xc/lib/X11/lcEuc.c *** xc/lib/X11/lcEuc.c.orig Thu Jan 18 04:41:53 2001 --- xc/lib/X11/lcEuc.c Wed Aug 1 03:33:01 2001 *************** *** 69,74 **** --- 69,80 ---- #define isleftside(c) (((c) & GR) ? 0 : 1) #define isrightside(c) (!isleftside(c)) + #if defined(__CYGWIN__) + #ifndef iskana + #define iskana(c) (0xa1<=((Uchar)c) && ((Uchar)c)<=0xdf) + #endif /* !iskana */ + #endif + #define BIT8OFF(c) ((c) & GL) #define BIT8ON(c) ((c) | GR) *************** *** 467,478 **** CodeSet codeset; Ulong wc_encoding; int wcstr_len = *from_left, buf_len = *to_left; ! if (!(codeset = wc_codeset(lcd, *wcptr))) return -1; wc_encoding = codeset->wc_encoding; if (wcstr_len < buf_len / codeset->length) buf_len = wcstr_len * codeset->length; --- 473,490 ---- CodeSet codeset; Ulong wc_encoding; int wcstr_len = *from_left, buf_len = *to_left; + #if defined(__CYGWIN__) + Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits); + #endif + ! if (!(codeset = wc_codeset(lcd, *wcptr))) return -1; + #if !defined(__CYGWIN__) wc_encoding = codeset->wc_encoding; + if (wcstr_len < buf_len / codeset->length) buf_len = wcstr_len * codeset->length; *************** *** 495,500 **** --- 507,530 ---- } } + #else + length = codeset->length; + for( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len-- ) { + wch = *wcptr; + if( codeset != wc_codeset( lcd, wch ) ) + break; + + buf_len -= length; + if( length == 2 ) { + + *bufptr++ = (wch & 0xffff) >> wc_shift; + *bufptr++ = wch & ( ~(~0< 0) *((XlcCharSet *) args[0]) = *codeset->charset_list; *************** *** 630,635 **** --- 660,666 ---- wchar_t wch) { CodeSet *codesets = XLC_GENERIC(lcd, codeset_list); + #if !defined(__CYGWIN__) int end = XLC_GENERIC(lcd, codeset_num); Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask)); *************** *** 638,643 **** --- 669,682 ---- return *codesets; return NULL; + #else + Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits); + if( ((wch >> wc_shift) & 0xff) != 0 ) + return( codesets[1] ); + if( iskana(wch & 0xff) ) + return( codesets[2] ); + return( codesets[0] ); + #endif } diff -c xc/lib/X11/lcSjis.c.orig xc/lib/X11/lcSjis.c *** xc/lib/X11/lcSjis.c.orig Thu Jan 18 04:41:55 2001 --- xc/lib/X11/lcSjis.c Wed Aug 1 03:44:00 2001 *************** *** 372,378 **** wchar_t wch) { CodeSet *codesets = XLC_GENERIC(lcd, codeset_list); ! #if !defined(__sony_news) || defined(SVR4) int end = XLC_GENERIC(lcd, codeset_num); Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask)); --- 372,378 ---- wchar_t wch) { CodeSet *codesets = XLC_GENERIC(lcd, codeset_list); ! #if !defined(__sony_news) || defined(SVR4) && !defined(__CYGWIN__) int end = XLC_GENERIC(lcd, codeset_num); Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask)); *************** *** 382,388 **** --- 382,393 ---- return NULL; #else + Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits); + #if defined(__CYGWIN__) + if( ((wch >> wc_shift) & 0xff) != 0 ) + #else if( iskanji(wch >> 8) ) + #endif return( codesets[1] ); if( iskana(wch & 0xff) ) return( codesets[2] ); *************** *** 556,568 **** int buf_len = *to_left; int wcstr_len = *from_left; if (!(codeset = wc_codeset(lcd, *wcptr))) return -1; if (wcstr_len < buf_len / codeset->length) buf_len = wcstr_len * codeset->length; ! #if !defined(__sony_news) || defined(SVR4) wc_encoding = codeset->wc_encoding; for ( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len--) { --- 561,577 ---- int buf_len = *to_left; int wcstr_len = *from_left; + #if defined(__CYGWIN__) + Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits); + #endif + if (!(codeset = wc_codeset(lcd, *wcptr))) return -1; if (wcstr_len < buf_len / codeset->length) buf_len = wcstr_len * codeset->length; ! #if !defined(__sony_news) || defined(SVR4) && !defined(__CYGWIN__) wc_encoding = codeset->wc_encoding; for ( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len--) { *************** *** 592,601 **** buf_len -= length; if( length == 2 ) { unsigned short code; ! code = sjis2jis( wch & 0xffff ); ! *bufptr++ = code >> 8; ! *bufptr++ = code & 0xff; } else *bufptr++ = wch & 0xff; --- 601,615 ---- buf_len -= length; if( length == 2 ) { unsigned short code; ! #if defined(__CYGWIN__) ! code = wch & 0xffff; ! *bufptr++ = code >> 8; ! *bufptr++ = code & 0xff; ! #else code = sjis2jis( wch & 0xffff ); ! *bufptr++ = code >> wc_shift; ! *bufptr++ = code & (~(^0<