diff -ru xc_orig/lib/X11/lcEuc.c xc/lib/X11/lcEuc.c --- xc_orig/lib/X11/lcEuc.c Thu Jan 18 04:41:54 2001 +++ xc/lib/X11/lcEuc.c Sat Jun 23 17:16:12 2001 @@ -834,6 +834,8 @@ wchar_t wch; Ulong wc_encoding; CTData ctdp = ctdata; + CTData GL_ctdp = ctdp; /* GL ctdp save */ + CTData GR_ctdp = ctdp; /* GR ctdp save */ Bool save_outbuf = True; /* If outbufptr is NULL, doen't save output, but just counts a length to hold the output */ @@ -842,6 +844,18 @@ for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length) { ct_type = CT_STD; + /* change GL/GR charset */ + if(ctdp->side == XlcGR && isleftside(*inbufptr)){ + /* select GL side */ + ctdp = GL_ctdp; + length = ctdp->length; + ct_type = ctdp->ct_type; + }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){ + /* select GR side */ + ctdp = GR_ctdp; + length = ctdp->length; + ct_type = ctdp->ct_type; + } if (*inbufptr == '\033' || *inbufptr == (char)'\233') { for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) { @@ -858,6 +872,11 @@ } } ct_type = ctdp->ct_type; + if(ctdp->side == XlcGL){ + GL_ctdp = ctdp; /* save GL ctdp */ + }else{ + GR_ctdp = ctdp; /* save GR ctdp */ + } break; } } @@ -1093,6 +1112,8 @@ unsigned int ct_seglen = 0; Uchar ct_type = 0; CTData ctdp = &ctdata[0]; /* default */ + CTData GL_ctdp = ctdp; /* GL ctdp save */ + CTData GR_ctdp = ctdp; /* GR ctdp save */ Bool save_outbuf = True; /* If outbufptr is NULL, doen't save output, but just counts a length to hold the output */ @@ -1101,6 +1122,18 @@ for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length) { ct_type = CT_STD; + /* change GL/GR charset */ + if(ctdp->side == XlcGR && isleftside(*inbufptr)){ + /* select GL side */ + ctdp = GL_ctdp; + length = ctdp->length; + ct_type = ctdp->ct_type; + }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){ + /* select GR side */ + ctdp = GR_ctdp; + length = ctdp->length; + ct_type = ctdp->ct_type; + } if (*inbufptr == '\033' || *inbufptr == (char)'\233') { for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) { @@ -1118,6 +1151,11 @@ } } ct_type = ctdp->ct_type; + if(ctdp->side == XlcGL){ + GL_ctdp = ctdp; /* save GL ctdp */ + }else{ + GR_ctdp = ctdp; /* save GR ctdp */ + } break; } } @@ -1489,6 +1527,8 @@ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCompoundText, open_wcstocts); _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs); #endif + + _XlcAddUtf8Converters(lcd); return lcd; } diff -ru xc_orig/lib/X11/lcJis.c xc/lib/X11/lcJis.c --- xc_orig/lib/X11/lcJis.c Thu Jan 18 04:41:54 2001 +++ xc/lib/X11/lcJis.c Sun Sep 2 20:03:20 2001 @@ -930,6 +930,8 @@ } #endif + _XlcAddUtf8Converters(lcd); + return lcd; } diff -ru xc_orig/lib/X11/lcSjis.c xc/lib/X11/lcSjis.c --- xc_orig/lib/X11/lcSjis.c Thu Jan 18 04:41:56 2001 +++ xc/lib/X11/lcSjis.c Sun Sep 2 20:36:04 2001 @@ -1147,6 +1147,8 @@ unsigned int ct_seglen = 0; Uchar ct_type; CTData ctdp = ctdata; /* default */ + CTData GL_ctdp = ctdp; /* GL ctdp save */ + CTData GR_ctdp = ctdp; /* GR ctdp save */ if (*from_left > *to_left) *from_left = *to_left; @@ -1154,6 +1156,18 @@ for (length = ctdata[Ascii].length; *from_left > 0 ; (*from_left) -= length) { ct_type = CT_STD; + /* change GL/GR charset */ + if(ctdp->side == XlcGR && isleftside(*inbufptr)){ + /* select GL side */ + ctdp = GL_ctdp; + length = ctdp->length; + ct_type = ctdp->ct_type; + }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){ + /* select GR side */ + ctdp = GR_ctdp; + length = ctdp->length; + ct_type = ctdp->ct_type; + } if (*inbufptr == '\033' || *inbufptr == (char)'\233') { for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) { @@ -1171,6 +1185,11 @@ } } ct_type = ctdp->ct_type; + if(ctdp->side == XlcGL){ + GL_ctdp = ctdp; /* save GL ctdp */ + }else{ + GR_ctdp = ctdp; /* save GR ctdp */ + } break; } } @@ -1265,6 +1284,8 @@ wchar_t wch; Ulong wc_encoding; CTData ctdp = ctdata; + CTData GL_ctdp = ctdp; /* GL ctdp save */ + CTData GR_ctdp = ctdp; /* GR ctdp save */ if (*from_left > *to_left) *from_left = *to_left; @@ -1272,6 +1293,18 @@ for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length ) { ct_type = CT_STD; + /* change GL/GR charset */ + if(ctdp->side == XlcGR && isleftside(*inbufptr)){ + /* select GL side */ + ctdp = GL_ctdp; + length = ctdp->length; + ct_type = ctdp->ct_type; + }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){ + /* select GR side */ + ctdp = GR_ctdp; + length = ctdp->length; + ct_type = ctdp->ct_type; + } if (*inbufptr == '\033' || *inbufptr == (char)'\233') { for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) { @@ -1288,6 +1321,11 @@ } } ct_type = ctdp->ct_type; + if(ctdp->side == XlcGL){ + GL_ctdp = ctdp; /* save GL ctdp */ + }else{ + GR_ctdp = ctdp; /* save GR ctdp */ + } break; } } @@ -1556,6 +1594,7 @@ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs); #endif + _XlcAddUtf8Converters(lcd); return lcd; }