[PATCH:libX11] Drop X_LOCALE fallback for OS'es without setlocale()

Alan Coopersmith alan.coopersmith at oracle.com
Sat Nov 16 20:42:43 PST 2013


C89 or bust!   This was documented as being needed for "only Lynx,
Linux-libc5, OS/2" and has never been enabled in modular builds,
since none of those platforms have had anyone step up to add support
since the X11R7 conversion to autotools.

Mostly performed with unifdef -UX_LOCALE, followed by removal of files
left without any purpose, and manual cleanup of remaining references.

Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
---
 configure.ac                        |    1 -
 include/X11/Xlocale.h               |   22 -
 modules/im/ximcp/imCallbk.c         |    4 -
 modules/lc/Makefile.am              |    2 +-
 modules/lc/xlocale/Makefile.am      |   35 -
 modules/lc/xlocale/lcEuc.c          | 1537 ---------------------------------
 modules/lc/xlocale/lcJis.c          |  944 --------------------
 modules/lc/xlocale/lcSjis.c         | 1612 -----------------------------------
 nls/C/XLC_LOCALE.pre                |    2 -
 nls/armscii-8/XLC_LOCALE.pre        |    2 -
 nls/georgian-academy/XLC_LOCALE.pre |    2 -
 nls/georgian-ps/XLC_LOCALE.pre      |    2 -
 nls/ibm-cp1133/XLC_LOCALE.pre       |    2 -
 nls/iscii-dev/XLC_LOCALE.pre        |    2 -
 nls/isiri-3342/XLC_LOCALE.pre       |    2 -
 nls/iso8859-1/XLC_LOCALE.pre        |    2 -
 nls/iso8859-10/XLC_LOCALE.pre       |    2 -
 nls/iso8859-11/XLC_LOCALE.pre       |    2 -
 nls/iso8859-13/XLC_LOCALE.pre       |    2 -
 nls/iso8859-14/XLC_LOCALE.pre       |    2 -
 nls/iso8859-15/XLC_LOCALE.pre       |    2 -
 nls/iso8859-2/XLC_LOCALE.pre        |    2 -
 nls/iso8859-3/XLC_LOCALE.pre        |    2 -
 nls/iso8859-4/XLC_LOCALE.pre        |    2 -
 nls/iso8859-5/XLC_LOCALE.pre        |    2 -
 nls/iso8859-6/XLC_LOCALE.pre        |    2 -
 nls/iso8859-7/XLC_LOCALE.pre        |    2 -
 nls/iso8859-8/XLC_LOCALE.pre        |    2 -
 nls/iso8859-9/XLC_LOCALE.pre        |    2 -
 nls/iso8859-9e/XLC_LOCALE.pre       |    2 -
 nls/ja.JIS/XLC_LOCALE.pre           |    2 -
 nls/ja.SJIS/XLC_LOCALE.pre          |    2 -
 nls/ja/XLC_LOCALE.pre               |    2 -
 nls/ko/XLC_LOCALE.pre               |    2 -
 nls/koi8-c/XLC_LOCALE.pre           |    2 -
 nls/koi8-r/XLC_LOCALE.pre           |    2 -
 nls/koi8-u/XLC_LOCALE.pre           |    2 -
 nls/microsoft-cp1251/XLC_LOCALE.pre |    2 -
 nls/microsoft-cp1255/XLC_LOCALE.pre |    2 -
 nls/microsoft-cp1256/XLC_LOCALE.pre |    2 -
 nls/mulelao-1/XLC_LOCALE.pre        |    2 -
 nls/nokhchi-1/XLC_LOCALE.pre        |    2 -
 nls/tatar-cyr/XLC_LOCALE.pre        |    2 -
 nls/th_TH/XLC_LOCALE.pre            |    2 -
 nls/tscii-0/XLC_LOCALE.pre          |    2 -
 nls/vi_VN.tcvn/XLC_LOCALE.pre       |    2 -
 nls/vi_VN.viscii/XLC_LOCALE.pre     |    2 -
 nls/zh_CN/XI18N_OBJS                |    1 -
 nls/zh_CN/XLC_LOCALE.pre            |    2 -
 nls/zh_TW.big5/XLC_LOCALE.pre       |    2 -
 nls/zh_TW/XLC_LOCALE.pre            |    2 -
 specs/i18n/framework/framework.xml  |    2 -
 src/SetLocale.c                     |   51 --
 src/xlibi18n/Makefile.am            |    3 +-
 src/xlibi18n/XlcPubI.h              |    7 -
 src/xlibi18n/Xlcint.h               |   15 -
 src/xlibi18n/lcInit.c               |   29 -
 57 files changed, 2 insertions(+), 4347 deletions(-)
 delete mode 100644 modules/lc/xlocale/Makefile.am
 delete mode 100644 modules/lc/xlocale/lcEuc.c
 delete mode 100644 modules/lc/xlocale/lcJis.c
 delete mode 100644 modules/lc/xlocale/lcSjis.c

diff --git a/configure.ac b/configure.ac
index 8ad1f00..1612061 100644
--- a/configure.ac
+++ b/configure.ac
@@ -467,7 +467,6 @@ AC_CONFIG_FILES([Makefile
 		modules/lc/def/Makefile
 		modules/lc/gen/Makefile
 		modules/lc/Utf8/Makefile
-		modules/lc/xlocale/Makefile
 		modules/om/Makefile
 		modules/om/generic/Makefile
 		src/xkb/Makefile
diff --git a/include/X11/Xlocale.h b/include/X11/Xlocale.h
index 98946e5..db46e70 100644
--- a/include/X11/Xlocale.h
+++ b/include/X11/Xlocale.h
@@ -32,28 +32,6 @@ from The Open Group.
 #include <X11/Xfuncproto.h>
 #include <X11/Xosdefs.h>
 
-#ifndef X_LOCALE
 #include <locale.h>
-#else
-
-#define LC_ALL      0
-#define LC_COLLATE  1
-#define LC_CTYPE    2
-#define LC_MONETARY 3
-#define LC_NUMERIC  4
-#define LC_TIME     5
-
-_XFUNCPROTOBEGIN
-extern char *_Xsetlocale(
-    int /* category */,
-    _Xconst char* /* name */
-);
-_XFUNCPROTOEND
-
-#define setlocale _Xsetlocale
-
-#include <stddef.h>
-
-#endif /* X_LOCALE */
 
 #endif /* _X11_XLOCALE_H_ */
diff --git a/modules/im/ximcp/imCallbk.c b/modules/im/ximcp/imCallbk.c
index edffac1..07921f8 100644
--- a/modules/im/ximcp/imCallbk.c
+++ b/modules/im/ximcp/imCallbk.c
@@ -39,10 +39,6 @@ PERFORMANCE OF THIS SOFTWARE.
 #include "Xlcint.h"
 #include "Ximint.h"
 #include "XlcPubI.h"
-#ifdef X_LOCALE
-#define mblen(a,b)	_Xmblen(a,b)
-extern int _Xmblen ();
-#endif
 
 #define sz_CARD8                 1
 #define sz_INT8                  1
diff --git a/modules/lc/Makefile.am b/modules/lc/Makefile.am
index 3cad2d6..5e34409 100644
--- a/modules/lc/Makefile.am
+++ b/modules/lc/Makefile.am
@@ -1 +1 @@
-SUBDIRS=Utf8 def gen xlocale
+SUBDIRS=Utf8 def gen
diff --git a/modules/lc/xlocale/Makefile.am b/modules/lc/xlocale/Makefile.am
deleted file mode 100644
index 70a221f..0000000
--- a/modules/lc/xlocale/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-AM_CPPFLAGS= \
-	-I$(top_srcdir)/include \
-	-I$(top_srcdir)/include/X11 \
-	-I$(top_builddir)/include \
-	-I$(top_builddir)/include/X11 \
-	-I$(top_srcdir)/src/xcms \
-	-I$(top_srcdir)/src/xkb \
-	-I$(top_srcdir)/src/xlibi18n \
-	-D_BSD_SOURCE
-
-AM_CFLAGS= \
-	$(X11_CFLAGS) \
-	$(BIGFONT_CFLAGS) \
-	$(CWARNFLAGS)
-
-if XLIB_LOADABLE_I18N
-
-commonlibdir = $(X11_LOCALELIBDIR)/common
-commonlib_LTLIBRARIES=xlocale.la
-xlocale_la_LDFLAGS = -module -version-number 2:0:0
-xlocale_la_LIBADD = $(I18N_MODULE_LIBS)
-
-else
-
-noinst_LTLIBRARIES = libxlocale.la
-
-endif
-
-
-xlocale_la_SOURCES = \
-	lcEuc.c \
-	lcJis.c \
-	lcSjis.c
-	
-libxlocale_la_SOURCES = $(xlocale_la_SOURCES)
diff --git a/modules/lc/xlocale/lcEuc.c b/modules/lc/xlocale/lcEuc.c
deleted file mode 100644
index 5b171a9..0000000
--- a/modules/lc/xlocale/lcEuc.c
+++ /dev/null
@@ -1,1537 +0,0 @@
-/******************************************************************
-
-        Copyright 1992, 1993 by FUJITSU LIMITED
-        Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
-
-Permission to use, copy, modify, distribute and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of FUJITSU LIMITED and
-Fujitsu Open Systems Solutions, Inc. not be used in advertising or
-publicity pertaining to distribution of the software without specific,
-written prior permission.
-FUJITSU LIMITED and Fujitsu Open Systems Solutions, Inc. makes no
-representations about the suitability of this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED AND FUJITSU OPEN SYSTEMS SOLUTIONS, INC. DISCLAIMS ALL
-WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU OPEN SYSTEMS
-SOLUTIONS, INC. AND FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT
-OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-OF THIS SOFTWARE.
-
-    Authors: Shigeru Yamada 		(yamada at ossi.com)
-             Jeffrey Bloomfield		(jeffb at ossi.com)
-             Yoshiyuki Segawa		(segawa at ossi.com)
-
-*****************************************************************/
-
-/*
- * An EUC locale.
- * Supports: all locales with codeset eucJP, eucKR, eucCN, eucTW.
- * How: Provides converters for euc*.
- * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
- */
-
-#ifdef X_LOCALE
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcGeneric.h"
-
-#include <ctype.h>
-#ifdef WIN32
-#define isascii __isascii
-#endif
-
-#define CS0     codesets[0]             /* Codeset 0 - 7-bit ASCII      */
-#define CS1     codesets[1]             /* Codeset 1 - Kanji            */
-#define CS2     codesets[2]             /* Codeset 2 - Half-Kana        */
-#define CS3     codesets[3]             /* Codeset 3 - User defined     */
-
-#define SS2	0x8e	/* Single-shift char: CS2 */
-#define SS3	0x8f    /* Single-shift char: CS3 */
-
-#define ASCII_CODESET   0
-#define KANJI_CODESET   1
-#define KANA_CODESET    2
-#define USERDEF_CODESET 3
-#define MAX_CODESETS
-
-#define GR	0x80	/* begins right-side (non-ascii) region */
-#define GL	0x7f    /* ends left-side (ascii) region        */
-
-#define isleftside(c)	(((c) & GR) ? 0 : 1)
-#define isrightside(c)	(!isleftside(c))
-
-#define BIT8OFF(c)	((c) & GL)
-#define BIT8ON(c)	((c) | GR)
-
-typedef unsigned char   Uchar;
-typedef unsigned long   Ulong;
-typedef unsigned int	Uint;
-
-static CodeSet GetCodeSetFromCharSet (XLCd lcd, XlcCharSet charset);
-static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
-
-#define BADCHAR(min_ch, c)  (BIT8OFF(c) < (char)min_ch && BIT8OFF(c) != 0x0 && \
-			     BIT8OFF(c) != '\t' && BIT8OFF(c) != '\n' && \
-			     BIT8OFF(c) != 0x1b)
-
-/*
- * Notes:
- * 1. Defining FORCE_INDIRECT_CONVERTER (see _XlcEucLoader())
- *    forces indirect (charset) conversions (e.g. wcstocs()<->cstombs()).
- * 2. Using direct converters (e.g. mbstowcs()) decreases conversion
- *    times by 20-40% (depends on specific converter used).
- */
-
-static int
-euc_mbstowcs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    XLCd lcd = (XLCd)conv->state;
-
-    Uchar ch;
-    int chr_len = 0;
-    int sshift =  False;
-    int shift_mult = 0;
-    Uint chrcode;
-
-    Uint wc_encode = 0;
-    Uint wc_tmp = 0;
-
-    int cs0flg = False;
-    int cs1flg = False;
-    int length = 0;
-    int unconv_num = 0;
-
-    Bool new_char;
-
-    const char *inbufptr = *from;
-    wchar_t *outbufptr = (wchar_t *) *to;
-
-    CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
-    int codeset_num = XLC_GENERIC(lcd, codeset_num);
-    Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
-    for (new_char = True; *from_left > 0 && *to_left > 0;) {
-
-	ch = *inbufptr++;
-
-	if (isleftside(ch)) {				/* CS0 */
-            if (ASCII_CODESET >= codeset_num) {
-		unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	    if( cs0flg == True) {
-		new_char = True;
-		cs0flg = False;
-	    }
-	    length = CS0->length;
-	    *outbufptr++ = (wchar_t)ch;
-	    (*from_left)--;
-	    (*to_left)--;
-	    continue;
-	}
-	else if (ch == SS2) {				/* CS2 */
-	    if (KANA_CODESET >= codeset_num) {
-		unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	    if (sshift == True || cs1flg == True) {
-		cs1flg = False;
-		unconv_num++;
-		continue;
-	    }
-	    length = CS2->length;
-	    wc_encode = CS2->wc_encoding;
-	    chrcode = 0;
-	    sshift = True;
-	    cs0flg = True;
-	    (*from_left)--;
-	    continue;
-	}
-	else if (ch == SS3) {				/* CS3 */
-	    if (USERDEF_CODESET >= codeset_num) {
-		unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	    if (sshift == True || cs1flg == True) {
-		cs1flg = False;
-		unconv_num++;
-		continue;
-	    }
-	    length = CS3->length;
-	    if (*from_left < 1 )
-		unconv_num++;
-	    wc_encode = CS3->wc_encoding;
-	    chrcode = 0;
-	    sshift = True;
-	    cs0flg = True;
-	    (*from_left)--;
-	    continue;
-
-	} else {					/* CS1 */
-	    if (KANJI_CODESET >= codeset_num) {
-		unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	    if (sshift == False) {
-		length = CS1->length;
-		if (*from_left < 1)
-		    unconv_num++;
-		wc_encode = CS1->wc_encoding;
-	    }
-	    chrcode = BIT8OFF(ch);
-	    cs0flg = True;
-	    cs1flg = True;
-	    (*from_left)--;
-	}
-
-	if (new_char) {				/* begin new character */
-	    chr_len = length;
-	    shift_mult = length - 1;
-	    new_char = False;
-	}
-
-	chrcode <<= (wc_shift * shift_mult);
-	shift_mult--;
-	wc_tmp |= chrcode;
-
-	if (--chr_len == 0) {
-	    wc_tmp |= wc_encode;
-	    *outbufptr++ = wc_tmp;
-	    (*to_left)--;
-
-	    new_char = True;
-	    sshift = False;
-	    cs0flg = False;
-	    cs1flg = False;
-	    wc_tmp  = (Uint)0;
-	}
-
-    }	/* end for */
-
-    *to = (XPointer)outbufptr;
-
-    if (cs0flg == True || cs1flg == True)	/* error check on last char */
-	unconv_num++;
-
-    return unconv_num;
-}
-
-
-static int
-euc_wcstombs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    const wchar_t *inbufptr = (const wchar_t *) *from;
-    XPointer outbufptr = *to;
-    wchar_t  wch;
-    int length;
-    Uchar tmp;
-    int unconv_num = 0;
-
-    XLCd lcd = (XLCd)conv->state;
-    CodeSet codeset;
-    Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
-    for (; *from_left > 0 && *to_left > 0; (*from_left)-- ) {
-
-	wch = *inbufptr++;
-
-	if (!(codeset = wc_codeset(lcd, wch))) {
-	    unconv_num++;
-	    (*from_left)--;
-	    continue;
-	}
-
-	length = codeset->length;
-	wch ^= (wchar_t)codeset->wc_encoding;
-
-	if (codeset->parse_info) {	/* put out SS2 or SS3 */
-	    if (*to_left < length + 1) {
-	        unconv_num++;
-		break;
-	    }
-	    *outbufptr++ = *codeset->parse_info->encoding;
-	    (*to_left)--;
-        } else {
-	    if (*to_left < length) {
-		unconv_num++;
-		break;
-	    }
-	}
-
-	do {
-	    length--;
-	    tmp = (wch>>(wchar_t)(length * wc_shift));
-
-	    if (codeset->side == XlcGR)
-		tmp = BIT8ON(tmp);
-
-	    *outbufptr++ = (Uchar)tmp;
-	    (*to_left)--;
-	} while (length);
-    }
-
-    *to = (XPointer)outbufptr;
-
-    return unconv_num;
-}
-
-
-static int
-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;
-    CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
-    int codeset_num = XLC_GENERIC(lcd, codeset_num);
-    int length;
-    int unconv_num = 0;
-    int min_ch = 0;
-    const char *src = *from;
-    char *dst = *to;
-
-    if (isleftside(*src)) { 			/* 7-bit (CS0) */
-	if (ASCII_CODESET >= codeset_num)
-	    return -1;
-	charset = *CS0->charset_list;
-    }
-    else if ((Uchar)*src == SS2) {		/* half-kana (CS2) */
-	if (KANA_CODESET >= codeset_num)
-	    return -1;
-	charset = *CS2->charset_list;
-	src++;
-	(*from_left)--;
-    }
-    else if ((Uchar)*src == SS3) {		/* user-def */
-	if (USERDEF_CODESET >= codeset_num)
-	    return -1;
-	charset = *CS3->charset_list;
-	src++;
-	(*from_left)--;
-    }
-    else  { 					/* Kanji (CS1) */
-	if (KANJI_CODESET >= codeset_num)
-	    return -1;
-	charset = *CS1->charset_list;
-    }
-
-    if(*from_left < charset->char_size || *to_left < charset->char_size)
-	return -1;
-
-    min_ch = 0x20;
-    if (charset->set_size == 94)
-	if (charset->char_size > 1 || charset->side == XlcGR)
-	    min_ch = 0x21;
-
-    length = charset->char_size;
-    do {
-	if(BADCHAR(min_ch, *src)) {
-	    unconv_num++;
-	    src++;
-	    break;
-	}
-	switch (charset->side) {
-	    case XlcGL:
-		*dst++ = BIT8OFF(*src++);
-		break;
-	    case XlcGR:
-		*dst++ = BIT8ON(*src++);
-		break;
-	    default:
-		*dst++ = *src++;
-		break;
-	    }
-    } while (--length);
-
-    *to = dst;
-    *from = (XPointer) src;
-    *from_left -= charset->char_size;
-    *to_left -= charset->char_size - length;
-
-    if (num_args > 0)
-	*((XlcCharSet *) args[0]) = charset;
-
-    return unconv_num;
-}
-
-
-static int
-euc_mbstocs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    const char *tmp_from;
-    char *tmp_to;
-    int tmp_from_left, tmp_to_left;
-    XlcCharSet charset, tmp_charset;
-    XPointer tmp_args[1];
-    int unconv_num = 0, ret;
-
-/* Determine the charset of the segment and convert one characater: */
-
-    tmp_args[0] = (XPointer) &charset; /* charset from euc_mbtocs() */
-    while
-      ((ret = euc_mbtocs(conv, from, from_left, to, to_left, tmp_args, 1)) > 0)
-	unconv_num += ret;
-    if ( ret < 0 )
-	return ret;
-
-    tmp_from = *from;
-    tmp_from_left = *from_left;
-    tmp_to_left = *to_left;
-    tmp_to = *to;
-
-/* Convert remainder of the segment: */
-
-    tmp_args[0] = (XPointer) &tmp_charset;
-    while( (ret = euc_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
-		     (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
-
-	if (ret > 0) {
-	    unconv_num += ret;
-	    continue;
-	}
-
-	if (tmp_charset != charset)  /* quit on end of segment */
-	    break;
-
-	*from = (XPointer) tmp_from;
-	*from_left = tmp_from_left;
-	*to = (XPointer) tmp_to;
-	*to_left = tmp_to_left;
-    }
-
-    if (num_args > 0)
-	*((XlcCharSet *) args[0]) = charset;
-
-    return unconv_num;
-}
-
-
-static int
-euc_wcstocs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    XLCd lcd = (XLCd)conv->state;
-    const wchar_t *wcptr = (const wchar_t *) *from;
-    char *bufptr = (char *) *to;
-    wchar_t wch;
-    char *tmpptr;
-    int length;
-    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;
-
-    for ( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len--) {
-	wch = *wcptr;
-
-	if ((wch & XLC_GENERIC(lcd, wc_encode_mask)) != wc_encoding)
-	    break;
-
-	length = codeset->length;
-
-	buf_len -= length;
-	bufptr += length;
-	tmpptr = bufptr - 1;
-
-	while (length--) {
-	    *tmpptr-- = codeset->length == 1 && codeset->side == XlcGR ?
-	      BIT8ON(wch) : BIT8OFF(wch);
-	    wch >>= (wchar_t)XLC_GENERIC(lcd, wc_shift_bits);
-	}
-    }
-
-    if (num_args > 0)
-	*((XlcCharSet *) args[0]) = *codeset->charset_list;
-
-    *from_left -= wcptr - (wchar_t *) *from;
-    *from = (XPointer) wcptr;
-
-    *to_left -= bufptr - *to;
-    *to = bufptr;
-
-    return 0;
-}
-
-
-static int
-euc_cstombs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    XLCd lcd = (XLCd)conv->state;
-    const char *csptr = *from;
-    char *bufptr = *to;
-    int csstr_len = *from_left;
-    int buf_len = *to_left;
-    int length;
-    CodeSet codeset;
-    int cvt_length;
-
-    if (num_args < 1)
-	return -1;
-
-    if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
-	return -1;
-
-    cvt_length = 0;
-    csstr_len /= codeset->length;
-    buf_len /= codeset->length;
-
-    if (codeset->parse_info)
-	csstr_len *= 2;
-
-    if (csstr_len < buf_len)
-	buf_len = csstr_len;
-
-    cvt_length += buf_len * codeset->length;
-
-    if (bufptr) {
-	while (buf_len--) {
-	    if (codeset->parse_info)	/* put out SS2 or SS3 */
-		*bufptr++ = *codeset->parse_info->encoding;
-
-	    length = codeset->length;
-	    while (length--)
-		*bufptr++ = codeset->side == XlcGR ?
-		  BIT8ON(*csptr++) : BIT8OFF(*csptr++);
-	}
-    }
-
-    *from_left -= csptr - *from;
-    *from = (XPointer) csptr;
-    if (bufptr)
-	*to += cvt_length;
-    *to_left -= cvt_length;
-
-    return 0;
-}
-
-
-static int
-euc_cstowcs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    XLCd lcd = (XLCd)conv->state;
-    const char *csptr = *from;
-    wchar_t *bufptr = (wchar_t *) *to;
-    wchar_t *toptr = (wchar_t *) *to;
-    int csstr_len = *from_left;
-    int buf_len = *to_left;
-    wchar_t wch;
-    int length;
-    Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
-    CodeSet codeset;
-
-    if (num_args < 1)
-	return -1;
-
-    if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
-        return -1;
-
-    csstr_len /= codeset->length;
-    if (csstr_len < buf_len)
-	buf_len = csstr_len;
-    *to_left -= buf_len;
-
-    if (bufptr) {
-
-	toptr += buf_len;
-	*to = (XPointer) toptr;
-
-        while (buf_len--) {
-
-            wch = (wchar_t) BIT8OFF(*csptr);
-            csptr++;
-
-            length = codeset->length - 1;
-            while (length--) {
-                wch = (wch << wc_shift_bits) | BIT8OFF(*csptr);
-                csptr++;
-            }
-            *bufptr++ = wch | codeset->wc_encoding;
-        }
-    }
-    *from_left -= csptr - *from;
-    *from = (XPointer) csptr;
-
-    return 0;
-}
-
-
-static CodeSet
-wc_codeset(
-    XLCd lcd,
-    wchar_t wch)
-{
-    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 )
-	    return *codesets;
-
-    return NULL;
-}
-
-
-static CodeSet
-GetCodeSetFromCharSet(
-    XLCd lcd,
-    XlcCharSet charset)
-{
-    CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
-    XlcCharSet *charset_list;
-    int codeset_num, num_charsets;
-
-    codeset_num = XLC_GENERIC(lcd, codeset_num);
-
-    for ( ; codeset_num-- > 0; codeset++) {
-	num_charsets = (*codeset)->num_charsets;
-	charset_list = (*codeset)->charset_list;
-
-	for ( ; num_charsets-- > 0; charset_list++)
-	    if (*charset_list == charset)
-		return *codeset;
-    }
-
-    return (CodeSet) NULL;
-}
-
-
-static XlcConv
-create_conv(
-    XLCd lcd,
-    XlcConvMethods methods)
-{
-    XlcConv conv;
-
-    conv = Xmalloc(sizeof(XlcConvRec));
-    if (conv == NULL)
-	return (XlcConv) NULL;
-
-    conv->methods = methods;
-    conv->state = (XPointer) lcd;
-    return conv;
-}
-
-
-/*
- *    Stripped down Direct CT converters for EUC
- *
- */
-
-typedef struct _CTDataRec {
-    int side;
-    int length;
-    char *name;
-    Ulong wc_encoding;
-    char sshift;
-    char *ct_encoding;
-    int ct_encoding_len;
-    int set_size;
-    Uchar min_ch;
-    Uchar ct_type;
-} CTDataRec, *CTData;
-
-typedef struct _StateRec {
-    CTData GL_charset;
-    CTData GR_charset;
-    CTData charset;
-} StateRec, *State;
-
-#define CT_STD  0
-#define CT_NSTD 1
-#define CT_DIR  2
-#define CT_EXT0 3
-#define CT_EXT1 4
-#define CT_EXT2 5
-#define CT_VER  6
-
-static CTDataRec ctdata[] =
-{
-  { XlcGL,      1, "ISO8859-1:GL",       0, 0, "\033(B"   ,  3, 0, 0, CT_STD  },
-  { XlcGR,      1, "ISO8859-1:GR",       0, 0, "\033-A"   ,  3, 0, 0, CT_STD  },
-  { XlcGL,      1, "JISX0201.1976-0:GL", 0, 0, "\033(J"   ,  3, 0, 0, CT_STD  },
-  { XlcGR,      1, "JISX0201.1976-0:GR", 0, 0, "\033)I"   ,  3, 0, 0, CT_STD  },
-  { XlcGL,      2, "JISX0208.1983-0:GL", 0, 0, "\033$(B"  ,  4, 0, 0, CT_STD  },
-  { XlcGR,      2, "JISX0208.1983-0:GR", 0, 0, "\033$)B"  ,  4, 0, 0, CT_STD  },
-  { XlcGL,      2, "JISX0212.1990-0:GL", 0, 0, "\033$(D"  ,  4, 0, 0, CT_STD  },
-  { XlcGR,      2, "JISX0212.1990-0:GR", 0, 0, "\033$)D"  ,  4, 0, 0, CT_STD  },
-  { XlcUnknown, 0, "Ignore-Ext-Status?", 0, 0, "\033#"    ,  2, 0, 0, CT_VER  },
-  { XlcUnknown, 0, "NonStd-?-OctetChar", 0, 0, "\033%/0"  ,  4, 0, 0, CT_NSTD },
-  { XlcUnknown, 1, "NonStd-1-OctetChar", 0, 0, "\033%/1"  ,  4, 0, 0, CT_NSTD },
-  { XlcUnknown, 2, "NonStd-2-OctetChar", 0, 0, "\033%/2"  ,  4, 0, 0, CT_NSTD },
-  { XlcUnknown, 3, "NonStd-3-OctetChar", 0, 0, "\033%/3"  ,  4, 0, 0, CT_NSTD },
-  { XlcUnknown, 4, "NonStd-4-OctetChar", 0, 0, "\033%/4"  ,  4, 0, 0, CT_NSTD },
-  { XlcUnknown, 0, "Extension-2"       , 0, 0, "\033%/"   ,  3, 0, 0, CT_EXT2 },
-  { XlcUnknown, 0, "Extension-0"       , 0, 0, "\033"     ,  1, 0, 0, CT_EXT0 },
-  { XlcUnknown, 0, "Begin-L-to-R-Text",  0, 0, "\2331]"   ,  3, 0, 0, CT_DIR  },
-  { XlcUnknown, 0, "Begin-R-to-L-Text",  0, 0, "\2332]"   ,  3, 0, 0, CT_DIR  },
-  { XlcUnknown, 0, "End-Of-String",      0, 0, "\233]"    ,  2, 0, 0, CT_DIR  },
-  { XlcUnknown, 0, "Extension-1"       , 0, 0, "\233"     ,  1, 0, 0, CT_EXT1 },
-};
-
-/* Note on above table:  euc_ctstombs() and euc_ctstowcs() parser depends on
- * certain table entries occuring in decreasing string length--
- *   1.  CT_EXT2 and CT_EXT0 entries must occur after CT_NSTD entries.
- *   2.  CT_DIR and CT_EXT1 entries must occur after CT_DIR entries.
- */
-
-static CTData ctd_endp = ctdata + ((sizeof(ctdata) / sizeof(CTDataRec))) - 1;
-static CTData ctdptr[sizeof(ctdata) / sizeof(CTDataRec)];
-
-#define Ascii   0
-#define Kanji   1
-#define Kana    2
-#define Userdef 3
-
-/*
- * initCTptr(): Set ctdptr[] to point at ctdata[], indexed by codeset_num.
- */
-static void
-initCTptr(
-    XLCd lcd)
-{
-    int num_codesets = XLC_GENERIC(lcd, codeset_num);
-    int num_charsets;
-    int i, j;
-    CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
-    CodeSet codeset;
-    XlcCharSet charset;
-    CTData ctdp = ctdata;
-
-    ctdptr[Ascii] = &ctdata[0];		/* failsafe */
-
-    for (i = 0; i < num_codesets; i++) {
-
-	codeset = codesets[i];
-	num_charsets = codeset->num_charsets;
-
-	for (j = 0; j < num_charsets; j++) {
-
-	    charset = codeset->charset_list[j];
-
-	    for (ctdp = ctdata; ctdp <= ctd_endp; ctdp++)
-
-		if (! strcmp(ctdp->name, charset->name)) {
-
-		    ctdptr[codeset->cs_num] = ctdp;
-
-		    ctdptr[codeset->cs_num]->wc_encoding = codeset->wc_encoding;
-
-		    ctdptr[codeset->cs_num]->set_size =
-		      charset->set_size;
-
-		    ctdptr[codeset->cs_num]->min_ch =
-		      charset->set_size == 94 &&
-		      (ctdptr[codeset->cs_num]->length > 1 ||
-		      ctdptr[codeset->cs_num]->side == XlcGR) ? 0x21 : 0x20;
-
-		    if (codeset->parse_info) {
-			ctdptr[codeset->cs_num]->sshift =
-			  *codeset->parse_info->encoding;
-		    }
-
-		    break;
-		}
-	}
-    }
-}
-
-
-#define SKIP_I(str)     while (*(str) >= 0x20 && *(str) <=  0x2f) (str)++;
-#define SKIP_P(str)     while (*(str) >= 0x30 && *(str) <=  0x3f) (str)++;
-
-static int
-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);
-    const char *inbufptr = *from;
-    const char *inbuf_base;
-    wchar_t *outbufptr = (wchar_t *) *to;
-    wchar_t *outbuf_base = outbufptr;
-    int clen, length;
-    int unconv_num = 0;
-    unsigned int ct_seglen = 0;
-    Uchar ct_type = 0;
-    int shift_mult;
-    wchar_t wc_tmp;
-    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 */
-    if (outbufptr == NULL) save_outbuf = False;
-
-    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++) {
-
-		if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
-		{
-		    inbufptr += ctdp->ct_encoding_len;
-		    (*from_left) -= ctdp->ct_encoding_len;
-		    if (ctdp->length) {
-			length = ctdp->length;
-			if( *from_left < length ) {
-			    *to = (XPointer)outbufptr;
-			    *to_left -= outbufptr - outbuf_base;
-			    return( unconv_num + *from_left );
-			}
-		    }
-		    ct_type = ctdp->ct_type;
-		    if(ctdp->side == XlcGL){
-			GL_ctdp = ctdp; /* save GL ctdp */
-		    }else{
-			GR_ctdp = ctdp; /* save GR ctdp */
-		    }
-		    break;
-		}
-	    }
-	    if (ctdp > ctd_endp) 	/* failed to match CT sequence */
-		unconv_num++;
-	}
-
-/* The following code insures that non-standard encodings, direction, extension,
- * and version strings are ignored; subject to change in future.
- */
-	switch (ct_type) {
-	case CT_STD:
-	    break;
-	case CT_EXT2:
-	    inbufptr++;
-	    (*from_left)--;
-	case CT_NSTD:
-	    ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
-	    inbufptr += ct_seglen;
-	    (*from_left) -= ct_seglen;
-	    continue;
-	case CT_EXT0:
-	    inbuf_base = inbufptr;
-	    SKIP_I(inbufptr);
-	    inbufptr++;
-	    ct_seglen = (unsigned)(inbufptr - inbuf_base);
-	    *(from_left) -= ct_seglen;
-	    continue;
-	case CT_EXT1:
-	    inbuf_base = inbufptr;
-	    SKIP_P(inbufptr);
-	    SKIP_I(inbufptr);
-	    inbufptr++;
-	    ct_seglen = (unsigned)(inbufptr - inbuf_base);
-	    *(from_left) -= ct_seglen;
-	    continue;
-	case CT_DIR:
-	    continue;
-	case CT_VER:
-	    inbufptr += 2;
-	    *(from_left) -= 2;
-	    continue;
-	}
-
-	wc_encoding = (ctdp == ctdptr[Kana] && isleftside(*inbufptr)) ?
-	    ctdptr[Ascii]->wc_encoding: ctdp->wc_encoding;
-
-	shift_mult = length - 1;
-	wch = (wchar_t)0;
-	clen = length;
-
-	do {
-	    wc_tmp = BIT8OFF(*inbufptr++) << (wc_shift_bits * shift_mult);
-	    wch |= wc_tmp;
-	    shift_mult--;
-	} while (--clen);
-
-	if (save_outbuf == True)
-	    *outbufptr++ = wch | wc_encoding;
-	if (--*to_left == 0 && *from_left != length) {
-	    *to = (XPointer)outbufptr;
-	    unconv_num = *from_left;
-	    return unconv_num;
-	}
-    }
-
-    *to = (XPointer)outbufptr;
-
-    return unconv_num;
-
-}
-
-
-#define byte1			(length == codeset->length - 1)
-#define byte2			(byte1 == 0)
-#define kanji			(codeset->cs_num == 1)
-#define kana			(codeset->cs_num == 2)
-#define userdef			(codeset->cs_num == 3)
-
-static int
-euc_wcstocts(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    int ct_len = *to_left;
-    const wchar_t *inbufptr = (const wchar_t *) *from;
-    char *ctptr = *to;
-    XPointer ct_base = ctptr;
-    wchar_t  wch;
-    int length;
-    int unconv_num = 0;
-    Uchar tmp;
-    Uchar t1 = 0;
-    int num_conv;
-
-    StateRec ct_state;
-    XLCd lcd = (XLCd)conv->state;
-    CTData charset;
-    CodeSet codeset;
-    Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
-/* Initial State: */
-    ct_state.GL_charset = ctdptr[0]; /* Codeset 0 */
-    ct_state.GR_charset = NULL;
-
-    if (*from_left > *to_left)
-	*from_left = *to_left;
-
-    for (; *from_left > 0 ; (*from_left)-- ) {
-
-	wch = *inbufptr++;
-
-	if (!(codeset = wc_codeset(lcd, wch))) {
-	    unconv_num++;
-	    (*from_left)--;
-	    continue;
-	}
-
-	charset = ctdptr[codeset->cs_num];
-
-	length = codeset->length;
-	wch ^= (wchar_t)codeset->wc_encoding;
-
-	if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
-	     (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
-
-	    ct_len -= ctdptr[codeset->cs_num]->ct_encoding_len;
-
-	    if (ct_len < 0) {
-		unconv_num++;
-		break;
-	    }
-
-	    if (ctptr) {
-		strcpy(ctptr, ctdptr[codeset->cs_num]->ct_encoding);
-		ctptr += ctdptr[codeset->cs_num]->ct_encoding_len;
-	    }
-	}
-
-	if (charset->side == XlcGR) {
-	    ct_state.GR_charset = charset;
-	    ct_state.GL_charset = NULL;
-	} else if (charset->side == XlcGL) {
-	    ct_state.GL_charset = charset;
-	    ct_state.GR_charset = NULL;
-	}
-
-	do {
-
-	    length--;
-	    tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
-
-	    if (kana) {
-		if (BADCHAR(charset->min_ch, (char)tmp)) {
-		    unconv_num++;
-		    break;
-		}
-		*ctptr++ = (char)BIT8ON(tmp);
-	    }
-
-	    else if (byte1 && (kanji || userdef))
-		t1 = tmp;
-
-	    else if (byte2 && (kanji || userdef)) {
-		if (BADCHAR(charset->min_ch, (char)t1) ||
-		  BADCHAR(charset->min_ch, (char)tmp)) {
-		    unconv_num++;
-		    break;
-		}
-		if (charset->side == XlcGR) {
-		    *ctptr++ = (char)BIT8ON(t1);
-		    *ctptr++ = (char)BIT8ON(tmp);
-		} else {
-		    *ctptr++ = (char)BIT8OFF(t1);
-		    *ctptr++ = (char)BIT8OFF(tmp);
-		}
-	    }
-
-	    else {
-		if (BADCHAR(charset->min_ch, (char)tmp)) {
-		    unconv_num++;
-		    break;
-		}
-		*ctptr++ = (char)tmp;
-	    }
-
-
-	} while (length);
-
-    }	/* end for */
-
-    *to = (XPointer)ctptr;
-
-    if ((num_conv = (int)(ctptr - ct_base)) > 0)
-	(*to_left) -= num_conv;
-
-    return unconv_num;
-}
-#undef byte1
-#undef byte2
-#undef kana
-#undef kanji
-#undef userdef
-
-
-#define byte1	(ctdp->length == clen)
-#define kana    (ctdp == ctdptr[Kana] && isrightside(*inbufptr))
-/* #define kanji   (ctdp == ctdptr[Kanji]) */
-#define kanji   (strstr(ctdp->name, "JISX0208"))
-#define userdef (ctdp == ctdptr[Userdef])
-
-static int
-euc_ctstombs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    char *inbufptr = *from;
-    XPointer outbufptr = *to;
-    const char *inbuf_base;
-    XPointer outbuf_base = outbufptr;
-    int clen, length;
-    int unconv_num = 0;
-    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 */
-    if (outbufptr == NULL) save_outbuf = False;
-
-    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++) {
-
-		if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
-		{
-		    inbufptr += ctdp->ct_encoding_len;
-		    (*from_left) -= ctdp->ct_encoding_len;
-		    if (ctdp->length) {
-			length = ctdp->length;
-			if( *from_left < length ) {
-			    *to = (XPointer)outbufptr;
-			    *to_left -= outbufptr - outbuf_base;
-			    return( unconv_num + *from_left );
-			}
-		    }
-		    ct_type = ctdp->ct_type;
-		    if(ctdp->side == XlcGL){
-			GL_ctdp = ctdp; /* save GL ctdp */
-		    }else{
-			GR_ctdp = ctdp; /* save GR ctdp */
-		    }
-		    break;
-		}
-	    }
-	    if (ctdp > ctd_endp) 	/* failed to match CT sequence */
-		unconv_num++;
-	}
-
-/* The following code insures that non-standard encodings, direction, extension,
- * and version strings are ignored; subject to change in future.
- */
-	switch (ct_type) {
-	case CT_STD:
-	    break;
-	case CT_EXT2:
-	    inbufptr++;
-	    (*from_left)--;
-	case CT_NSTD:
-	    ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
-	    inbufptr += ct_seglen;
-	    (*from_left) -= ct_seglen;
-	    continue;
-	case CT_EXT0:
-	    inbuf_base = inbufptr;
-	    SKIP_I(inbufptr);
-	    inbufptr++;
-	    ct_seglen = (unsigned)(inbufptr - inbuf_base);
-	    *(from_left) -= ct_seglen;
-	    continue;
-	case CT_EXT1:
-	    inbuf_base = inbufptr;
-	    SKIP_P(inbufptr);
-	    SKIP_I(inbufptr);
-	    inbufptr++;
-	    ct_seglen = (unsigned)(inbufptr - inbuf_base);
-	    *(from_left) -= ct_seglen;
-	    continue;
-	case CT_DIR:
-	    continue;
-	case CT_VER:
-	    inbufptr += 2;
-	    *(from_left) -= 2;
-	    continue;
-	}
-
-	clen = length;
-	do {
-
-	    if (byte1) {
-		if (kanji) {
-		    /* FIXME: assignment of read-only location */
-		    *inbufptr = BIT8ON(*inbufptr);
-		    *(inbufptr+1) = BIT8ON(*(inbufptr+1));
-		}
-		else if (kana || userdef) {
-		    if (save_outbuf == True) {
-			*outbufptr++ = ctdp->sshift;
-		    }
-		    (*to_left)--;
-		}
-	    }
-	    if (save_outbuf == True) {
-		*outbufptr++ = *inbufptr;
-	    }
-	    (*to_left)--;
-	    inbufptr++;
-
-	    if (*to_left == 0 && *from_left != length) {
-		*to = (XPointer)outbufptr;
-		unconv_num = *from_left;
-		return unconv_num;
-	    }
-	} while (--clen);
-    }
-
-    *to = outbufptr;
-
-    return unconv_num;
-
-}
-#undef byte1
-#undef kana
-#undef kanji
-#undef userdef
-
-
-static int
-euc_mbstocts(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    int ct_len = *to_left;
-    int cs_num;
-    int clen, length = 0;
-    int unconv_num = 0;
-    int num_conv;
-    const char *inbufptr = *from;
-    char *ctptr = *to;
-    XPointer ct_base = ctptr;
-
-    StateRec ct_state;
-    CTData charset;
-    XLCd lcd = (XLCd) conv->state;
-    int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
-/* Initial State: */
-    ct_state.GL_charset = NULL;
-    ct_state.GR_charset = NULL;
-
-    if (*from_left > *to_left)
-        *from_left = *to_left;
-
-    for (;*from_left > 0; (*from_left) -= length) {
-
-	if (isleftside(*inbufptr)) {		/* 7-bit (CS0) */
-	    if (ASCII_CODESET >= codeset_num) {
-	      	unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	    cs_num = Ascii;
-	    charset = ctdptr[Ascii];
-	}
-	else if ((Uchar)*inbufptr == SS2) {	/* Kana */
-	    if (KANA_CODESET >= codeset_num) {
-	      	unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	    cs_num = Kana;
-	    charset = ctdptr[Kana];
-	    inbufptr++;
-	    (*from_left)--;
-	}
-	else if ((Uchar)*inbufptr == SS3) {	/* Userdef */
-	    if (USERDEF_CODESET >= codeset_num) {
-	      	unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	    cs_num = Userdef;
-	    charset = ctdptr[Userdef];
-	    inbufptr++;
-	    (*from_left)--;
-	}
-	else {
-	    if (KANJI_CODESET >= codeset_num) {
-	      	unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	    cs_num = Kanji;
-	    charset = ctdptr[Kanji];
-	}
-
-	length = charset->length;
-
-	if (BADCHAR(charset->min_ch, *inbufptr))
-            continue;
-
-	if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
-	     (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
-
-	    ct_len -= ctdptr[cs_num]->ct_encoding_len;
-	    if (ct_len < 0) {
-		unconv_num++;
-		break;
-	    }
-
-	    if (ctptr) {
-		strcpy(ctptr, ctdptr[cs_num]->ct_encoding);
-		ctptr += ctdptr[cs_num]->ct_encoding_len;
-	    }
-	}
-
-	if (charset->side == XlcGR) {
-	    ct_state.GR_charset = charset;
-	    ct_state.GL_charset = NULL;
-	} else if (charset->side == XlcGL) {
-	    ct_state.GL_charset = charset;
-	    ct_state.GR_charset = NULL;
-	}
-
-	clen = length;
-
-	do {
-	    *ctptr++ = charset == ct_state.GR_charset ?
-		BIT8ON(*inbufptr++) : BIT8OFF(*inbufptr++);
-	} while (--clen);
-    }
-
-    *to = (XPointer)ctptr;
-
-    if ((num_conv = (int)(ctptr - ct_base)) > 0)
-	(*to_left) -= num_conv;
-    return unconv_num;
-
-}
-
-
-static void
-close_converter(
-    XlcConv conv)
-{
-	Xfree(conv);
-}
-
-enum { MBSTOCS, WCSTOCS, MBTOCS, CSTOMBS, CSTOWCS, MBSTOWCS, WCSTOMBS,
-       CTSTOWCS, CTSTOMBS, WCSTOCTS, MBSTOCTS };
-
-static XlcConvMethodsRec conv_methods[] = {
-    {close_converter, euc_mbstocs,  NULL },
-    {close_converter, euc_wcstocs,  NULL },
-    {close_converter, euc_mbtocs,   NULL },
-    {close_converter, euc_cstombs,  NULL },
-    {close_converter, euc_cstowcs,  NULL },
-    {close_converter, euc_mbstowcs, NULL },
-    {close_converter, euc_wcstombs, NULL },
-    {close_converter, euc_ctstowcs, NULL },
-    {close_converter, euc_ctstombs, NULL },
-    {close_converter, euc_wcstocts, NULL },
-    {close_converter, euc_mbstocts, NULL },
-};
-
-
-static XlcConv
-open_mbstocs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[MBSTOCS]);
-}
-
-static XlcConv
-open_wcstocs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[WCSTOCS]);
-}
-
-static XlcConv
-open_mbtocs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[MBTOCS]);
-}
-
-static XlcConv
-open_cstombs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[CSTOMBS]);
-}
-
-static XlcConv
-open_cstowcs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[CSTOWCS]);
-}
-
-static XlcConv
-open_mbstowcs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
-}
-
-static XlcConv
-open_wcstombs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
-}
-
-static XlcConv
-open_ctstowcs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
-}
-
-static XlcConv
-open_ctstombs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
-}
-
-static XlcConv
-open_wcstocts(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
-}
-
-static XlcConv
-open_mbstocts(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
-}
-
-XLCd
-_XlcEucLoader(
-    const char *name)
-{
-    XLCd lcd;
-
-    lcd = _XlcCreateLC(name, _XlcGenericMethods);
-    if (lcd == NULL)
-	return lcd;
-
-    if (!XLC_PUBLIC_PART(lcd)->codeset ||
-	(_XlcNCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "euc", 3))) {
-	_XlcDestroyLC(lcd);
-	return (XLCd) NULL;
-    }
-
-    initCTptr(lcd);
-
-    _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs);
-    _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
-    _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs);
-    _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
-    _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbtocs);
-
-#ifndef FORCE_INDIRECT_CONVERTER
-    _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte, open_ctstombs);
-    _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_ctstowcs);
-    _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_mbstocts);
-    _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_mbstowcs);
-    _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCompoundText, open_wcstocts);
-    _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs);
-#endif
-
-    _XlcAddUtf8Converters(lcd);
-
-    return lcd;
-}
-
-#else
-typedef int dummy;
-#endif /* X_LOCALE */
diff --git a/modules/lc/xlocale/lcJis.c b/modules/lc/xlocale/lcJis.c
deleted file mode 100644
index a6917cf..0000000
--- a/modules/lc/xlocale/lcJis.c
+++ /dev/null
@@ -1,944 +0,0 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano	TOSHIBA Corp.
- *			   	mopi at osa.ilab.toshiba.co.jp
- */
-
-/*
- * A Japanese JIS locale.
- * Supports: all locales with codeset JIS7.
- * How: Provides converters for JIS.
- * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
- */
-
-#ifdef X_LOCALE
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcGeneric.h"
-#include <stdio.h>
-
-#if !defined(X_LOCALE)
-#define STDCVT
-#endif
-
-typedef struct _StateRec {
-    XLCd lcd;
-    XlcCharSet charset;
-    XlcCharSet GL_charset;
-    XlcCharSet GR_charset;
-} StateRec, *State;
-
-static void
-init_state(
-    XlcConv conv)
-{
-    State state = (State) conv->state;
-    XLCdGenericPart *gen = XLC_GENERIC_PART(state->lcd);
-    CodeSet codeset;
-
-    codeset = gen->initial_state_GL;
-    if (codeset && codeset->charset_list)
-	state->GL_charset = *codeset->charset_list;
-    codeset = gen->initial_state_GR;
-    if (codeset && codeset->charset_list)
-	state->GR_charset = *codeset->charset_list;
-
-    if (state->GL_charset == NULL)
-	if ((codeset = *gen->codeset_list) != NULL)
-	    state->GL_charset = *codeset->charset_list;
-}
-
-static int
-compare(
-    const char *src,
-    const char *encoding,
-    int length)
-{
-    const char *start = src;
-
-    while (length-- > 0) {
-	if (*src++ != *encoding++)
-	    return 0;
-	if (*encoding == '\0')
-	    return src - start;
-    }
-
-    return 0;
-}
-
-static int
-mbtocs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    State state = (State) conv->state;
-    XLCd lcd = state->lcd;
-    const char *src;
-    char *dst;
-    unsigned char *mb_parse_table;
-    ParseInfo *parse_list, parse_info;
-    XlcCharSet charset;
-    int length, number, encoding_len = 0;
-    int i;
-
-    src = *((const char **) from);
-    dst = *((char **) to);
-
-    mb_parse_table = XLC_GENERIC(lcd, mb_parse_table);
-    if (mb_parse_table != NULL) {
-	number = mb_parse_table[(unsigned char) *src];
-	if (number > 0) {
-	    parse_list = XLC_GENERIC(lcd, mb_parse_list) + number - 1;
-	    for ( ; (parse_info = *parse_list) != NULL; parse_list++) {
-		encoding_len = compare(src, parse_info->encoding, *from_left);
-		if (encoding_len > 0) {
-		    switch (parse_info->type) {
-			case E_SS:
-			    src += encoding_len;
-			    charset = *parse_info->codeset->charset_list;
-			    goto found;
-			case E_LSL:
-			case E_LSR:
-			    src += encoding_len;
-			    charset = *parse_info->codeset->charset_list;
-			    if (parse_info->type == E_LSL)
-			    	state->GL_charset = charset;
-			    else
-			    	state->GR_charset = charset;
-			    length = 0;
-			    goto end;
-			case E_GL:
-			    charset = state->GL_charset;
-			    goto found;
-			case E_GR:
-			    charset = state->GR_charset;
-			    goto found;
-			default:
-			    break;
-		    }
-		}
-	    }
-	}
-    }
-
-    if ((*src & 0x80) && state->GR_charset)
-	charset = state->GR_charset;
-    else
-	charset = state->GL_charset;
-
-found:
-    if (charset == NULL ||
-	(num_args == 2 && (XlcCharSet) args[1] != charset))
-	return -1;
-
-    length = charset->char_size;
-    if (length > *from_left - encoding_len)
-	return -1;
-
-    if (dst) {
-	if (length > *to_left)
-	    return -1;
-	if (charset->side == XlcGL) {
-	    for (i = 0; i < length; i++)
-		*dst++ = *src++ & 0x7f;
-	} else if (charset->side == XlcGR) {
-	    for (i = 0; i < length; i++)
-		*dst++ = *src++ | 0x80;
-	} else {
-	    for (i = 0; i < length; i++)
-		*dst++ = *src++;
-	}
-	*to = (XPointer) dst;
-	*to_left -= length;
-    }
-end:
-    *from = (XPointer) src;
-    *from_left -= encoding_len + length;
-    state->charset = charset;
-    if (num_args == 1)
-	*((XlcCharSet *) args[0]) = charset;
-
-    return 0;
-}
-
-static int
-mbstocs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    XlcCharSet charset = NULL;
-    XPointer tmp_args[2], save_from = *from;
-    int ret, unconv_num = 0, tmp_num = 1;
-
-    tmp_args[0] = (XPointer) &charset;
-
-    while (*from_left > 0 && *to_left > 0) {
-	ret = mbtocs(conv, from, from_left, to, to_left, tmp_args, tmp_num);
-	if (ret < 0)
-	    break;
-	unconv_num += ret;
-	if (tmp_num == 1 && charset) {
-	    tmp_args[1] = (XPointer) charset;
-	    tmp_num = 2;
-	}
-    }
-
-    if (save_from == *from)
-	return -1;
-
-    if (num_args > 0)
-	*((XlcCharSet *) args[0]) = charset;
-
-    return unconv_num;
-}
-
-static CodeSet
-wc_parse_codeset(
-    XLCd lcd,
-    const wchar_t *wcstr)
-{
-    CodeSet *codeset;
-    unsigned long wc_encoding;
-    int num;
-
-    wc_encoding = *wcstr & XLC_GENERIC(lcd, wc_encode_mask);
-    num = XLC_GENERIC(lcd, codeset_num);
-    codeset = XLC_GENERIC(lcd, codeset_list);
-    while (num-- > 0) {
-	if (wc_encoding == (*codeset)->wc_encoding)
-	    return *codeset;
-	codeset++;
-    }
-
-    return NULL;
-}
-
-static int
-wcstocs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    State state = (State) conv->state;
-    XLCd lcd = state->lcd;
-    const wchar_t *wcptr;
-    char *bufptr;
-    wchar_t wch;
-    char *tmpptr;
-    int length;
-    CodeSet codeset;
-    unsigned long wc_encoding;
-    int wcstr_len, buf_len;
-
-    if (from == NULL || *from == NULL)
-	return 0;
-
-    wcptr = *((const wchar_t **) from);
-    bufptr = *((char **) to);
-    wcstr_len = *from_left;
-    buf_len = *to_left;
-
-    codeset = wc_parse_codeset(lcd, wcptr);
-    if (codeset == NULL)
-	return -1;
-    wc_encoding = codeset->wc_encoding;
-
-    if (wcstr_len < buf_len / codeset->length)
-	buf_len = wcstr_len * codeset->length;
-
-    for ( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len--) {
-	wch = *wcptr;
-	if ((wch & XLC_GENERIC(lcd, wc_encode_mask)) != wc_encoding)
-	    break;
-	length = codeset->length;
-	buf_len -= length;
-	bufptr += length;
-
-	tmpptr = bufptr - 1;
-	if ((*codeset->charset_list)->side == XlcGL) {
-	    while (length--) {
-		*tmpptr-- = (unsigned char) (wch & 0x7f);
-		wch >>= (wchar_t)XLC_GENERIC(lcd, wc_shift_bits);
-	    }
-	} else if ((*codeset->charset_list)->side == XlcGR) {
-	    while (length--) {
-		*tmpptr-- = (unsigned char) (wch | 0x80);
-		wch >>= (wchar_t)XLC_GENERIC(lcd, wc_shift_bits);
-	    }
-	} else {
-	    while (length--) {
-		*tmpptr-- = (unsigned char) wch;
-		wch >>= (wchar_t)XLC_GENERIC(lcd, wc_shift_bits);
-	    }
-	}
-    }
-
-    if (num_args > 0)
-	*((XlcCharSet *) args[0]) = *codeset->charset_list;
-
-    *from_left -= wcptr - *((wchar_t **) from);
-    *from = (XPointer) wcptr;
-
-    *to_left -= bufptr - *((char **) to);
-    *to = bufptr;
-
-    return 0;
-}
-
-static CodeSet
-GetCodeSetFromCharSet(
-    XLCd lcd,
-    XlcCharSet charset)
-{
-    CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
-    XlcCharSet *charset_list;
-    int codeset_num, num_charsets;
-
-    codeset_num = XLC_GENERIC(lcd, codeset_num);
-
-    for ( ; codeset_num-- > 0; codeset++) {
-	num_charsets = (*codeset)->num_charsets;
-	charset_list = (*codeset)->charset_list;
-
-	for ( ; num_charsets-- > 0; charset_list++)
-	    if (*charset_list == charset)
-		return *codeset;
-    }
-
-    return (CodeSet) NULL;
-}
-
-static int
-cstombs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    State state = (State) conv->state;
-    const char *csptr;
-    char *bufptr;
-    int csstr_len;
-    int buf_len;
-    int num, encoding_len = 0;
-    CodeSet codeset;
-    XlcCharSet charset;
-    EncodingType type;
-    int cvt_length;
-
-    csptr = *((const char **) from);
-    bufptr = *((char **) to);
-    csstr_len = *from_left;
-    buf_len = *to_left;
-
-    if (num_args < 1)
-	return -1;
-
-    charset = (XlcCharSet) args[0];
-
-    codeset = GetCodeSetFromCharSet(state->lcd, charset);
-    if (codeset == NULL)
-	return -1;
-
-    cvt_length = 0;
-    if (codeset->parse_info) {
-	switch (type = codeset->parse_info->type) {
-	    case E_SS:
-		encoding_len = strlen(codeset->parse_info->encoding);
-		break;
-	    case E_LSL:
-	    case E_LSR:
-		if (type == E_LSL) {
-		    if (charset == state->GL_charset)
-			break;
-		} else {
-		    if (charset == state->GR_charset)
-			break;
-		}
-		encoding_len = strlen(codeset->parse_info->encoding);
-		if (encoding_len > buf_len)
-		    return -1;
-		cvt_length += encoding_len;
-		if (bufptr) {
-		    strcpy(bufptr, codeset->parse_info->encoding);
-		    bufptr += encoding_len;
-		}
-		buf_len -= encoding_len;
-		encoding_len = 0;
-		if (type == E_LSL)
-		    state->GL_charset = charset;
-		else
-		    state->GR_charset = charset;
-		break;
-	    default:
-		break;
-	}
-    }
-
-    csstr_len /= codeset->length;
-    buf_len /= codeset->length + encoding_len;
-    if (csstr_len < buf_len)
-	buf_len = csstr_len;
-
-    cvt_length += buf_len * (encoding_len + codeset->length);
-    if (bufptr) {
-	while (buf_len--) {
-	    if (encoding_len) {
-		strcpy(bufptr, codeset->parse_info->encoding);
-		bufptr += encoding_len;
-	    }
-	    num = codeset->length;
-	    if (codeset->side == XlcGL) {
-		while (num--)
-		    *bufptr++ = *csptr++ & 0x7f;
-	    } else if (codeset->side == XlcGR) {
-		while (num--)
-		    *bufptr++ = *csptr++ | 0x80;
-	    } else {
-		while (num--)
-		    *bufptr++ = *csptr++;
-	    }
-    	}
-    }
-
-    *from_left -= csptr - *((char **) from);
-    *from = (XPointer) csptr;
-
-    if (bufptr)
-	*to = (XPointer) bufptr;
-    *to_left -= cvt_length;
-
-    return 0;
-}
-
-static int
-cstowcs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    State state = (State) conv->state;
-    XLCd lcd = state->lcd;
-    const char *csptr;
-    wchar_t *bufptr;
-    int csstr_len;
-    int buf_len;
-    wchar_t wch;
-    unsigned long code_mask, wc_encoding;
-    int num, length, wc_shift_bits;
-    CodeSet codeset;
-
-    csptr = *((const char **) from);
-    bufptr = *((wchar_t **) to);
-    csstr_len = *from_left;
-    buf_len = *to_left;
-
-    if (num_args < 1)
-	return -1;
-
-    codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0]);
-    if (codeset == NULL)
-	return -1;
-
-    length = codeset->length;
-    csstr_len /= length;
-    if (csstr_len < buf_len)
-	buf_len = csstr_len;
-
-    code_mask = ~XLC_GENERIC(lcd, wc_encode_mask);
-    wc_encoding = codeset->wc_encoding;
-    wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
-
-    *to_left -= buf_len;
-
-    if (bufptr) {
-	while (buf_len--) {
-	    wch = (wchar_t) (*csptr++ & 0x7f);
-	    num = length - 1;
-	    while (num--)
-		wch = (wch << wc_shift_bits) | (*csptr++ & 0x7f);
-
-	    *bufptr++ = (wch & code_mask) | wc_encoding;
-	}
-    }
-
-    *from_left -= csptr - *((char **) from);
-    *from = (XPointer) csptr;
-
-    if (bufptr)
-	*to = (XPointer) bufptr;
-
-    return 0;
-}
-
-
-static void
-close_converter(
-    XlcConv conv)
-{
-    if (conv->state) {
-	Xfree(conv->state);
-    }
-
-    Xfree(conv);
-}
-
-static XlcConv
-create_conv(
-    XLCd lcd,
-    XlcConvMethods methods)
-{
-    XlcConv conv;
-    State state;
-
-    conv = Xmalloc(sizeof(XlcConvRec));
-    if (conv == NULL)
-	return (XlcConv) NULL;
-
-    conv->methods = Xmalloc(sizeof(XlcConvMethodsRec));
-    if (conv->methods == NULL)
-	goto err;
-    *conv->methods = *methods;
-    if (XLC_PUBLIC(lcd, is_state_depend))
-	conv->methods->reset = init_state;
-
-    conv->state = Xcalloc(1, sizeof(StateRec));
-    if (conv->state == NULL)
-	goto err;
-
-    state = (State) conv->state;
-    state->lcd = lcd;
-    init_state(conv);
-
-    return conv;
-
-err:
-    close_converter(conv);
-
-    return (XlcConv) NULL;
-}
-
-static XlcConvMethodsRec mbstocs_methods = {
-    close_converter,
-    mbstocs,
-    NULL
-};
-
-static XlcConv
-open_mbstocs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &mbstocs_methods);
-}
-
-static XlcConvMethodsRec wcstocs_methods = {
-    close_converter,
-    wcstocs,
-    NULL
-};
-
-static XlcConv
-open_wcstocs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &wcstocs_methods);
-}
-
-static XlcConvMethodsRec mbtocs_methods = {
-    close_converter,
-    mbtocs,
-    NULL
-};
-
-static XlcConv
-open_mbtocs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &mbtocs_methods);
-}
-
-static XlcConvMethodsRec cstombs_methods = {
-    close_converter,
-    cstombs,
-    NULL
-};
-
-static XlcConv
-open_cstombs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &cstombs_methods);
-}
-
-static XlcConvMethodsRec cstowcs_methods = {
-    close_converter,
-    cstowcs,
-    NULL
-};
-
-static XlcConv
-open_cstowcs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &cstowcs_methods);
-}
-
-#ifdef STDCVT
-static int
-stdc_mbstowcs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    const char *src = *((const char **) from);
-    wchar_t *dst = *((wchar_t **) to);
-    int src_left = *from_left;
-    int dst_left = *to_left;
-    int length;
-
-    while (src_left > 0 && dst_left > 0) {
-	length = mbtowc(dst, src, src_left);
-	if (length < 0)
-	    break;
-
-	src += length;
-	src_left -= length;
-	if (dst)
-	    dst++;
-	dst_left--;
-
-	if (length == 0) {
-	    src++;
-	    src_left--;
-	    break;
-	}
-    }
-
-    if (*from_left == src_left)
-	return -1;
-
-    *from = (XPointer) src;
-    if (dst)
-	*to = (XPointer) dst;
-    *from_left = src_left;
-    *to_left = dst_left;
-
-    return 0;
-}
-
-static int
-stdc_wcstombs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    const wchar_t *src = *((const wchar_t **) from);
-    char *dst = *((char **) to);
-    int src_left = *from_left;
-    int dst_left = *to_left;
-    int length;
-
-    while (src_left > 0 && dst_left > 0) {
-	length = wctomb(dst, *src);		/* XXX */
-	if (length < 0 || dst_left < length)
-	    break;
-
-	src++;
-	src_left--;
-	dst += length;
-	dst_left -= length;
-
-	if (length == 0) {
-	    dst++;
-	    dst_left--;
-	    break;
-	}
-    }
-
-    if (*from_left == src_left)
-	return -1;
-
-    *from = (XPointer) src;
-    *to = (XPointer) dst;
-    *from_left = src_left;
-    *to_left = dst_left;
-
-    return 0;
-}
-
-static int
-stdc_wcstocs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    const wchar_t *src = *((const wchar_t **) from);
-    wchar_t wch;
-    XlcCharSet charset = NULL;
-    XPointer tmp_args[2], tmp_from, save_from = *from;
-    char tmp[32];
-    int length, ret, src_left = *from_left;
-    int unconv_num = 0, tmp_num = 1;
-
-    tmp_args[0] = (XPointer) &charset;
-
-    while (src_left > 0 && *to_left > 0) {
-	if (wch = *src) {
-	    length = wctomb(tmp, wch);
-	} else {
-	    length = 1;
-	    *tmp = '\0';
-	}
-
-	if (length < 0)
-	    break;
-
-	tmp_from = (XPointer) tmp;
-	ret = mbtocs(conv, &tmp_from, &length, to, to_left, tmp_args, tmp_num);
-	if (ret < 0)
-	    break;
-	unconv_num += ret;
-	if (tmp_num == 1 && charset) {
-	    tmp_args[1] = (XPointer) charset;
-	    tmp_num = 2;
-	}
-
-	src++;
-	src_left--;
-    }
-
-    if (save_from == (XPointer) src)
-	return -1;
-
-    *from = (XPointer) src;
-    *from_left = src_left;
-
-    if (num_args > 0)
-	*((XlcCharSet *) args[0]) = charset;
-
-    return unconv_num;
-}
-
-#define DefineLocalBuf		char local_buf[BUFSIZ]
-#define AllocLocalBuf(length)	(length > BUFSIZ ? (char*) Xmalloc(length) : local_buf)
-#define FreeLocalBuf(ptr)	if (ptr != local_buf) Xfree(ptr)
-
-static int
-stdc_cstowcs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    XLCd lcd = ((State) conv->state)->lcd;
-    DefineLocalBuf;
-    XPointer buf, save_buf;
-    int length, left, ret;
-
-    left = length = *to_left * XLC_PUBLIC(lcd, mb_cur_max);
-    buf = save_buf = (XPointer) AllocLocalBuf(length);
-    if (buf == NULL)
-	return -1;
-
-    ret = cstombs(conv, from, from_left, &buf, &left, args, num_args);
-    if (ret < 0)
-	goto err;
-
-    buf = save_buf;
-    length -= left;
-    if (stdc_mbstowcs(conv, &buf, &length, to, to_left, args, num_args) < 0)
-	ret = -1;
-
-err:
-    FreeLocalBuf(save_buf);
-
-    return ret;
-}
-
-static XlcConvMethodsRec stdc_mbstowcs_methods = {
-    close_converter,
-    stdc_mbstowcs,
-    NULL
-};
-
-static XlcConv
-open_stdc_mbstowcs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &stdc_mbstowcs_methods);
-}
-
-static XlcConvMethodsRec stdc_wcstombs_methods = {
-    close_converter,
-    stdc_wcstombs,
-    NULL
-};
-
-static XlcConv
-open_stdc_wcstombs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &stdc_wcstombs_methods);
-}
-
-static XlcConvMethodsRec stdc_wcstocs_methods = {
-    close_converter,
-    stdc_wcstocs,
-    NULL
-};
-
-static XlcConv
-open_stdc_wcstocs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &stdc_wcstocs_methods);
-}
-
-static XlcConvMethodsRec stdc_cstowcs_methods = {
-    close_converter,
-    stdc_cstowcs,
-    NULL
-};
-
-static XlcConv
-open_stdc_cstowcs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &stdc_cstowcs_methods);
-}
-#endif /* STDCVT */
-
-XLCd
-_XlcJisLoader(
-    const char *name)
-{
-    XLCd lcd;
-#ifdef STDCVT
-    XLCdGenericPart *gen;
-#endif
-
-    lcd = _XlcCreateLC(name, _XlcGenericMethods);
-    if (lcd == NULL)
-	return lcd;
-
-    if (!XLC_PUBLIC_PART(lcd)->codeset ||
-	(_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "JIS7"))) {
-        _XlcDestroyLC(lcd);
-        return (XLCd) NULL;
-    }
-
-    _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbtocs);
-    _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs);
-    _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs);
-
-#ifdef STDCVT
-    gen = XLC_GENERIC_PART(lcd);
-
-    if (gen->use_stdc_env == True) {
-	_XlcSetConverter(lcd,XlcNMultiByte,lcd,XlcNWideChar,open_stdc_mbstowcs);
-	_XlcSetConverter(lcd,XlcNWideChar,lcd,XlcNMultiByte,open_stdc_wcstombs);
-    }
-    if (gen->force_convert_to_mb == True) {
-	_XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet,open_stdc_wcstocs);
-	_XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar,open_stdc_cstowcs);
-    } else {
-#endif
-    _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
-    _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
-#ifdef STDCVT
-    }
-#endif
-
-    _XlcAddUtf8Converters(lcd);
-
-    return lcd;
-}
-
-#else
-typedef int dummy;
-#endif /* X_LOCALE */
diff --git a/modules/lc/xlocale/lcSjis.c b/modules/lc/xlocale/lcSjis.c
deleted file mode 100644
index ac94557..0000000
--- a/modules/lc/xlocale/lcSjis.c
+++ /dev/null
@@ -1,1612 +0,0 @@
-/****************************************************************
-
-        Copyright 1992, 1993 by FUJITSU LIMITED
-        Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
-	Copyright 1994 by Sony Corporation
-
-Permission to use, copy, modify, distribute and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of FUJITSU LIMITED,
-Fujitsu Open Systems Solutions, Inc. and Sony Corporation  not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-FUJITSU LIMITED, Fujitsu Open Systems Solutions, Inc. and
-Sony Corporation make no representations about the suitability of
-this software for any purpose.  It is provided "as is" without
-express or implied warranty.
-
-FUJITSU LIMITED, FUJITSU OPEN SYSTEMS SOLUTIONS, INC. AND SONY
-CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
-IN NO EVENT SHALL FUJITSU OPEN SYSTEMS SOLUTIONS, INC., FUJITSU LIMITED
-AND SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
-OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
-OR PERFORMANCE OF THIS SOFTWARE.
-
-    Authors: Jeffrey Bloomfield		(jeffb at ossi.com)
-	     Shigeru Yamada		(yamada at ossi.com)
-             Yoshiyuki Segawa		(segawa at ossi.com)
-    Modifier:Makoto Wakamatsu   Sony Corporation
-				makoto at sm.sony.co.jp
-
-*****************************************************************/
-
-/*
- * A Japanese SJIS locale.
- * Supports: all locales with codeset SJIS.
- * How: Provides converters for SJIS.
- * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
- */
-
-#ifdef X_LOCALE
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcGeneric.h"
-
-#include <ctype.h>
-#ifdef WIN32
-#define isascii __isascii
-#endif
-
-#define CS0	codesets[0]		/* Codeset 0 - 7-bit ASCII	*/
-#define CS1	codesets[1]		/* Codeset 1 - Kanji		*/
-#define CS2	codesets[2]		/* Codeset 2 - Half-Kana	*/
-#define CS3	codesets[3]		/* Codeset 3 - User defined	*/
-
-#define ascii		(codeset->cs_num == 0)
-#define kanji		(codeset->cs_num == 1)
-#define kana		(codeset->cs_num == 2)
-#define userdef		(codeset->cs_num == 3)
-
-#define	ASCII_CODESET	0
-#define KANJI_CODESET	1
-#define KANA_CODESET	2
-#define USERDEF_CODESET	3
-#define MAX_CODESETS	4
-
-#define GR	0x80	/* begins right-side (non-ascii) region */
-#define GL	0x7f    /* ends left-side (ascii) region        */
-
-#define isleftside(c)	(((c) & GR) ? 0 : 1)
-#define isrightside(c)	(!isleftside(c))
-
-typedef unsigned char   Uchar;
-typedef unsigned long	Ulong;
-typedef unsigned int	Uint;
-
-/* Acceptable range for 2nd byte of SJIS multibyte char */
-#define VALID_MULTIBYTE(c) \
-			((0x40<=((Uchar)c) && ((Uchar)c)<=0x7e) \
-			|| (0x80<=((Uchar)c) && ((Uchar)c)<=0xfc))
-
-#ifndef iskanji
-#define iskanji(c)	((0x81<=((Uchar)c) && ((Uchar)c)<=0x9f) \
-			|| (0xe0<=((Uchar)c) && ((Uchar)c)<=0xef))
-#endif /* !iskanji */
-
-#ifndef iskana
-#define iskana(c)	(0xa1<=((Uchar)c) && ((Uchar)c)<=0xdf)
-#endif /* !iskana */
-
-#define	isuserdef(c)	(0xf0<=((Uchar)c) && ((Uchar)c)<=0xfc)
-
-#define BIT8OFF(c)	((c) & GL)
-#define BIT8ON(c)	((c) | GR)
-
-
-static void jis_to_sjis (Uchar *p1, Uchar *p2);
-static void sjis_to_jis (Uchar *p1, Uchar *p2);
-static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
-
-
-/*
- * Notes:
- * 1.  16-bit widechar format is limited to 14 data bits.  Since the 2nd byte
- *     of SJIS multibyte chars are in the ranges of 0x40 - 7E and 0x80 - 0xFC,
- *     SJIS cannot map directly into 16 bit widechar format within the confines
- *     of a single codeset.  Therefore, for SJIS widechar conversion, SJIS Kanji
- *     is mapped into the JIS codeset.  (The algorithms used in jis_to_sjis()
- *     and sjis_to_jis() are from Ken Lunde (lunde at mv.us.adobe.com) and are in
- *     the public domain.)
- * 2.  Defining FORCE_INDIRECT_CONVERTER (see _XlcEucLoader())
- *     forces indirect (charset) conversions (e.g. wcstocs()<->cstombs()).
- * 3.  Using direct converters (e.g. mbstowcs()) decreases conversion
- *     times by 20-40% (depends on specific converter used).
- */
-
-
-static int
-sjis_mbstowcs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-
-    XLCd lcd = (XLCd)conv->state;
-
-    int chr_len = 0;
-    int shift_mult = 0;
-    Uint chrcode = 0;
-
-    Uchar ch, ch2;
-    Uint wc_encode = 0;
-    Uint wc_tmp = 0;
-
-    Bool new_char;
-
-    int firstbyte;
-    int length = 0;
-    int num_conv;
-    int unconv_num = 0;
-
-    const char *inbufptr = *from;
-    wchar_t *outbufptr = (wchar_t *) *to;
-    wchar_t *outbuf_base = outbufptr;
-
-    CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
-    int codeset_num = XLC_GENERIC(lcd, codeset_num);
-    Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
-    if (*from_left > *to_left)
-	*from_left = *to_left;
-
-     for (new_char = True, firstbyte = True; *from_left > 0; (*from_left)--) {
-
-	ch = *inbufptr++;
-
-	if (firstbyte) {
-	    if (ASCII_CODESET >= codeset_num) {
-		unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	    if (isascii(ch)) {
-		length = CS0->length;
-		*outbufptr++ = (wchar_t)ch;
-		continue;
-	    }
-	    else if (iskanji(ch)) {
-		if (KANJI_CODESET >= codeset_num) {
-		    unconv_num++;
-		    (*from_left)--;
-		    continue;
-		}
-		firstbyte = False;
-		length = CS1->length;
-		if (*from_left < length || *to_left < length)
-		    return -1;
-		wc_encode = CS1->wc_encoding;
-		ch2 = *inbufptr;
-		sjis_to_jis(&ch, &ch2);
-		chrcode = ch;
-	    }
-	    else if (iskana(ch)) {
-		if (KANA_CODESET >= codeset_num) {
-		    unconv_num++;
-		    (*from_left)--;
-		    continue;
-		}
-		length = CS2->length;
-		wc_encode = CS2->wc_encoding;
-		chrcode = BIT8OFF(ch);
-	    }
-	    else if (isuserdef(ch)) {
-		if (USERDEF_CODESET >= codeset_num) {
-		    unconv_num++;
-		    (*from_left)--;
-		    continue;
-		}
-		firstbyte = False;
-		length = CS3->length;
-		if (*from_left < length || *to_left < length)
-		    return -1;
-		wc_encode = CS3->wc_encoding;
-		ch2 = *inbufptr;
-		sjis_to_jis(&ch, &ch2);
-		chrcode = ch;
-	    }
-	    else /* unknown */ {
-		unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	} else {	     		/* 2nd byte of multibyte char */
-	    if (!VALID_MULTIBYTE((Uchar) *(inbufptr-1))) {
-		unconv_num++;
-		firstbyte = True;
-	    }
-	    chrcode = ch2;
-	}
-
-	if (new_char) {
-	    chr_len = length;
-	    shift_mult = length - 1;
-	    new_char = False;
-	}
-
-	chrcode <<= (wc_shift * shift_mult);
-	shift_mult--;
-	wc_tmp |= chrcode;
-	if (--chr_len == 0) {
-	    wc_tmp |= wc_encode;
-	    *outbufptr++ = wc_tmp;
-
-	    firstbyte = True;
-	    new_char = True;
-	    wc_tmp = (Uint)0;
-	}
-
-    } /* end for */
-
-    *to = (XPointer)outbufptr;
-
-    if ((num_conv = outbufptr - outbuf_base) > 0)
-	(*to_left) -= num_conv;
-
-    return unconv_num;
-}
-
-
-#define byte1		(length == codeset->length - 1)
-#define byte2		(byte1 == 0)
-
-static int
-sjis_wcstombs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    const wchar_t *inbufptr = (const wchar_t *) *from;
-    XPointer outbufptr = *to;
-    XPointer outbuf_base = outbufptr;
-    wchar_t  wch;
-    int length;
-    Uchar tmp;
-    Uchar t1, t2;
-    int num_conv;
-    int unconv_num = 0;
-
-    XLCd lcd = (XLCd)conv->state;
-    CodeSet codeset;
-    Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
-    if (*from_left > *to_left)
-	*from_left = *to_left;
-
-    for (; *from_left > 0 ; (*from_left)-- ) {
-
-	wch = *inbufptr++;
-
-	if (!(codeset = wc_codeset(lcd, wch))) {
-	    unconv_num++;
-	    (*from_left)--;
-	    continue;
-	}
-
-	length = codeset->length;
-	wch ^= (wchar_t)codeset->wc_encoding;
-
-	do {
-	    length--;
-	    tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
-
-	    if (kana)
-		tmp = BIT8ON(tmp);
-
-	    else if (byte1 && (kanji || userdef)) {
-		t1 = BIT8OFF(tmp);
-		continue;
-	    }
-
-	    else if (byte2 && (kanji || userdef)) {
-		t2 = BIT8OFF(tmp);
-		jis_to_sjis(&t1, &t2);
-		*outbufptr++ = (char)t1;
-		tmp = t2;
-	    }
-
-	    *outbufptr++ = (char)tmp;
-	} while (length);
-
-    }	/* end for */
-
-    *to = (XPointer)outbufptr;
-
-    if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
-	(*to_left) -= num_conv;
-
-    return unconv_num;
-}
-#undef byte1
-#undef byte2
-
-/*
- * sjis<->jis conversion for widechar kanji (See Note at top of file)
- */
-static void
-sjis_to_jis(
-    Uchar *p1,
-    Uchar *p2)
-{
-  Uchar c1 = *p1;
-  Uchar c2 = *p2;
-  Uchar adjust = c2 < 0x9f;
-  Uchar rowOffset = c1 < 0xa0 ? 0x70 : 0xb0;
-  Uchar cellOffset = adjust ? (0x1f + (c2 > 0x7f)) : 0x7e;
-
-  *p1 = ((c1 - rowOffset) << 1) - adjust;
-  *p2 -= cellOffset;
-}
-
-static void
-jis_to_sjis(
-    Uchar *p1,
-    Uchar *p2)
-{
-  Uchar c1 = *p1;
-  Uchar c2 = *p2;
-  Uchar rowOffset = c1 < 0x5f ? 0x70 : 0xb0;
-  Uchar cellOffset = c1 % 2 ? 0x1f + (c2 > 0x5f) : 0x7e;
-
-  *p1 = ((Uchar)(c1 + 1) >> 1) + rowOffset;
-  *p2 = c2 + cellOffset;
-}
-
-static CodeSet
-wc_codeset(
-    XLCd lcd,
-    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));
-
-    for (; --end >= 0; codesets++)
-	if ( widech == (*codesets)->wc_encoding )
-	    return *codesets;
-
-    return NULL;
-#else
-    if( iskanji(wch >> 8) )
-	return( codesets[1] );
-    if( iskana(wch & 0xff) )
-	return( codesets[2] );
-    return( codesets[0] );
-#endif
-}
-
-
-static int
-sjis_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 = NULL;
-    int char_size = 0;
-    int unconv_num = 0;
-    const char *src = *from;
-    char *dst = *to;
-    CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
-    int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
-    if (iskanji(*src)) {
-	if (KANJI_CODESET >= codeset_num)
-	    return -1;
-	charset = *CS1->charset_list;
-	char_size = charset->char_size;
-
-	if (*from_left >= char_size && *to_left >= char_size) {
-	    *dst++ = *src++;
-	    *dst++ = *src++;
-	    if (!VALID_MULTIBYTE((Uchar) *(src-1))) /* check 2nd byte */
-		unconv_num++;
-	    sjis_to_jis((Uchar *)(dst-2), (Uchar *)(dst-1));
-	} else
-	    return -1;
-    }
-    else if (isuserdef(*src)) {
-	if (USERDEF_CODESET >= codeset_num)
-	    return -1;
-	charset = *CS3->charset_list;
-	char_size = charset->char_size;
-
-	if (*from_left >= char_size && *to_left >= char_size) {
-	    *dst++ = *src++;
-	    *dst++ = *src++;
-	    if (!VALID_MULTIBYTE((Uchar) *(src-1))) /* check 2nd byte */
-		unconv_num++;
-	    sjis_to_jis((Uchar *)(dst-2), (Uchar *)(dst-1));
-	} else
-	    return -1;
-    }
-    else if (isascii(*src)) {
-	if (ASCII_CODESET >= codeset_num)
-	    return -1;
-	charset = *CS0->charset_list;
-	char_size = charset->char_size;
-
-	if (*from_left >= char_size && *to_left >= char_size)
-	    *dst++ = *src++;
-	else
-	    return -1;
-    }
-    else if (iskana(*src)) {
-	if (KANA_CODESET >= codeset_num)
-	    return  -1;
-	charset = *CS2->charset_list;
-	char_size = charset->char_size;
-
-	if (*from_left >= char_size && *to_left >= char_size)
-	    *dst++ = *src++;
-	else
-	   return -1;
-    }
-    else 	/* unknown */
-	return -1;
-
-    *from_left -= char_size;
-    *to_left -= char_size;
-
-    *to = (XPointer) dst;
-    *from = (XPointer) src;
-
-    if (num_args > 0)
-	*((XlcCharSet *) args[0]) = charset;
-
-    return unconv_num;
-}
-
-
-static int
-sjis_mbstocs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    const char *tmp_from;
-    char *tmp_to;
-    int tmp_from_left, tmp_to_left;
-    XlcCharSet charset, tmp_charset;
-    XPointer tmp_args[1];
-    int unconv_num = 0, ret;
-
-/* Determine the charset of the segment and convert one character: */
-
-    tmp_args[0] = (XPointer) &charset; /* charset from sjis_mbtocs() */
-    while
-      ((ret = sjis_mbtocs(conv, from, from_left, to, to_left, tmp_args, 1)) > 0)
-	unconv_num += ret;
-    if ( ret < 0 )
-	return ret;
-
-    tmp_from = *from;
-    tmp_from_left = *from_left;
-    tmp_to_left = *to_left;
-    tmp_to = *to;
-
-/* Convert remainder of the segment: */
-
-    tmp_args[0] = (XPointer) &tmp_charset;
-    while( (ret = sjis_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
-		     (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
-
-	if (ret > 0) {
-	    unconv_num += ret;
-	    continue;
-	}
-
-	if (tmp_charset != charset)  /* quit on end of segment */
-	    break;
-
-	*from = (XPointer) tmp_from;
-	*from_left = tmp_from_left;
-	*to = (XPointer) tmp_to;
-	*to_left = tmp_to_left;
-    }
-
-    if (num_args > 0)
-	*((XlcCharSet *) args[0]) = charset;
-
-    return unconv_num;
-}
-
-static int
-sjis_wcstocs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    XLCd lcd = (XLCd) conv->state;
-    const wchar_t *wcptr = *((const wchar_t **)from);
-    char *bufptr = *((char **) to);
-    wchar_t wch;
-    char *tmpptr;
-    int length;
-    CodeSet codeset;
-    Ulong wc_encoding;
-    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--) {
-	wch = *wcptr;
-
-	if ((wch & XLC_GENERIC(lcd, wc_encode_mask)) != wc_encoding)
-	    break;
-
-	length = codeset->length;
-
-	buf_len -= length;
-	bufptr += length;
-	tmpptr = bufptr - 1;
-
-	while (length--) {
-	    *tmpptr-- = kana ? BIT8ON(wch) : BIT8OFF(wch);
-	    wch >>= (wchar_t)XLC_GENERIC(lcd, wc_shift_bits);
-	}
-    }
-#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 ) {
-	    unsigned short	code;
-
-	    code = sjis2jis( wch & 0xffff );
-	    *bufptr++ = code >> 8;
-	    *bufptr++ = code & 0xff;
-	}
-	else
-	    *bufptr++ = wch & 0xff;
-    }
-#endif
-
-    if (num_args > 0)
-	*((XlcCharSet *) args[0]) = *codeset->charset_list;
-
-    *from_left -= wcptr - (wchar_t *) *from;
-    *from = (XPointer) wcptr;
-
-    *to_left -= bufptr - *to;
-    *to = bufptr;
-
-    return 0;
-}
-
-static CodeSet
-GetCodeSetFromCharSet(
-    XLCd lcd,
-    XlcCharSet charset)
-{
-    CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
-    XlcCharSet *charset_list;
-    int codeset_num, num_charsets;
-
-    codeset_num = XLC_GENERIC(lcd, codeset_num);
-
-    for ( ; codeset_num-- > 0; codeset++) {
-	num_charsets = (*codeset)->num_charsets;
-	charset_list = (*codeset)->charset_list;
-
-	for ( ; num_charsets-- > 0; charset_list++)
-	    if (*charset_list == charset)
-		return *codeset;
-    }
-
-    return (CodeSet) NULL;
-}
-
-
-static int
-sjis_cstombs(
-    XlcConv conv,
-    char **from,
-    int *from_left,
-    char **to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    XLCd lcd = (XLCd) conv->state;
-    const char *csptr = *from;
-    char *bufptr = *to;
-    int csstr_len = *from_left;
-    int buf_len = *to_left;
-    int length;
-    CodeSet codeset;
-    int cvt_length = 0;
-
-    if (num_args < 1)
-	return -1;
-
-    if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
-	return -1;
-
-    csstr_len /= codeset->length;
-    buf_len /= codeset->length;
-    if (csstr_len < buf_len)
-	buf_len = csstr_len;
-
-    cvt_length += buf_len * codeset->length;
-
-    if (bufptr) {
-	while (buf_len--) {
-	    length = codeset->length;
-	    while (length--)
-		*bufptr++ = codeset->length == 1 && codeset->side == XlcGR ?
-		  BIT8ON(*csptr++) : BIT8OFF(*csptr++);
-
-	    if (codeset->length == 2)
-		jis_to_sjis((Uchar *)(bufptr-2), (Uchar *)(bufptr-1));
-	}
-    }
-
-    *from_left -= csptr - *from;
-    *from = (XPointer) csptr;
-
-    if (bufptr)
-	*to += cvt_length;
-    *to_left -= cvt_length;
-
-
-    return 0;
-}
-
-static int
-sjis_cstowcs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    XLCd lcd = (XLCd) conv->state;
-    const char *csptr = (const char *) *from;
-    wchar_t *bufptr = (wchar_t *) *to;
-    wchar_t *toptr = (wchar_t *) *to;
-    int csstr_len = *from_left;
-    int buf_len = *to_left;
-    wchar_t wch;
-    int length;
-    Ulong wc_shift_bits = (int)XLC_GENERIC(lcd, wc_shift_bits);
-    CodeSet codeset;
-
-    if (num_args < 1)
-	return -1;
-
-    if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
-	return -1;
-
-    csstr_len /= codeset->length;
-    if (csstr_len < buf_len)
-	buf_len = csstr_len;
-
-    *to_left -= buf_len;
-
-    if (bufptr) {
-
-	toptr += buf_len;
-	*to = (XPointer) toptr;
-
-	while (buf_len--) {
-	    wch = (wchar_t) BIT8OFF(*csptr);
-	    csptr++;
-
-	    length = codeset->length - 1;
-	    while (length--) {
-		wch = (wch << wc_shift_bits) | BIT8OFF(*csptr);
-		csptr++;
-	    }
-	    *bufptr++ = wch | codeset->wc_encoding;
-	}
-    }
-
-    *from_left -= csptr - *from;
-    *from = (XPointer) csptr;
-
-    return 0;
-}
-
-
-/*
- *    Stripped down Direct CT converters for SJIS
- *
- */
-
-#define BADCHAR(min_ch, c)  (BIT8OFF(c) < (char)min_ch && BIT8OFF(c) != 0x0 && \
-			     BIT8OFF(c) != '\t' && BIT8OFF(c) != '\n' && \
-			     BIT8OFF(c) != 0x1b)
-
-typedef struct _CTDataRec {
-    int side;
-    int length;
-    char *name;
-    Ulong wc_encoding;
-    char *ct_encoding;
-    int ct_encoding_len;
-    int set_size;
-    Uchar min_ch;
-    Uchar ct_type;
-} CTDataRec, *CTData;
-
-typedef struct _StateRec {
-    CTData GL_charset;
-    CTData GR_charset;
-    CTData charset;
-} StateRec, *State;
-
-#define CT_STD  0
-#define CT_NSTD 1
-#define CT_DIR  2
-#define CT_EXT0 3
-#define CT_EXT1 4
-#define CT_EXT2 5
-#define CT_VER  6
-
-static CTDataRec ctdata[] =
-{
-    { XlcGL,      1, "ISO8859-1:GL",       0, "\033(B"   ,  3, 0, 0, CT_STD  },
-    { XlcGR,      1, "ISO8859-1:GR",       0, "\033-A"   ,  3, 0, 0, CT_STD  },
-    { XlcGL,      1, "JISX0201.1976-0:GL", 0, "\033(J"   ,  3, 0, 0, CT_STD  },
-    { XlcGR,      1, "JISX0201.1976-0:GR", 0, "\033)I"   ,  3, 0, 0, CT_STD  },
-    { XlcGL,      2, "JISX0208.1983-0:GL", 0, "\033$(B"  ,  4, 0, 0, CT_STD  },
-    { XlcGR,      2, "JISX0208.1983-0:GR", 0, "\033$)B"  ,  4, 0, 0, CT_STD  },
-    { XlcGL,      2, "JISX0212.1990-0:GL", 0, "\033$(D"  ,  4, 0, 0, CT_STD  },
-    { XlcGR,      2, "JISX0212.1990-0:GR", 0, "\033$)D"  ,  4, 0, 0, CT_STD  },
-    { XlcUnknown, 0, "Ignore-Ext-Status?", 0, "\033#"    ,  2, 0, 0, CT_VER  },
-    { XlcUnknown, 0, "NonStd-?-OctetChar", 0, "\033%/0"  ,  4, 0, 0, CT_NSTD },
-    { XlcUnknown, 1, "NonStd-1-OctetChar", 0, "\033%/1"  ,  4, 0, 0, CT_NSTD },
-    { XlcUnknown, 2, "NonStd-2-OctetChar", 0, "\033%/2"  ,  4, 0, 0, CT_NSTD },
-    { XlcUnknown, 3, "NonStd-3-OctetChar", 0, "\033%/3"  ,  4, 0, 0, CT_NSTD },
-    { XlcUnknown, 4, "NonStd-4-OctetChar", 0, "\033%/4"  ,  4, 0, 0, CT_NSTD },
-    { XlcUnknown, 0, "Extension-2"       , 0, "\033%/"   ,  3, 0, 0, CT_EXT2 },
-    { XlcUnknown, 0, "Extension-0"       , 0, "\033"     ,  1, 0, 0, CT_EXT0 },
-    { XlcUnknown, 0, "Begin-L-to-R-Text",  0, "\2331]"   ,  3, 0, 0, CT_DIR  },
-    { XlcUnknown, 0, "Begin-R-to-L-Text",  0, "\2332]"   ,  3, 0, 0, CT_DIR  },
-    { XlcUnknown, 0, "End-Of-String",      0, "\233]"    ,  2, 0, 0, CT_DIR  },
-    { XlcUnknown, 0, "Extension-1"       , 0, "\233"     ,  1, 0, 0, CT_EXT1 },
-};
-
-/* Note on above table:  sjis_ctstombs() and sjis_ctstowcs() parser depends on
- * certain table entries occuring in decreasing string length--
- *   1.  CT_EXT2 and CT_EXT0 entries must occur after CT_NSTD entries.
- *   2.  CT_DIR and CT_EXT1 entries must occur after CT_DIR entries.
- */
-
-static CTData ctdptr[sizeof(ctdata) / sizeof(CTDataRec)];
-static CTData ctd_endp = ctdata + ((sizeof(ctdata) / sizeof(CTDataRec))) - 1;
-
-#define Ascii   0
-#define Kanji   1
-#define Kana    2
-#define Userdef 3
-
-/*
- * initCTptr(): Set ctptr[] to point at ctdata[], indexed by codeset_num.
- */
-static void
-initCTptr(
-    XLCd lcd)
-{
-    int num_codesets = XLC_GENERIC(lcd, codeset_num);
-    int num_charsets;
-    int i, j;
-    CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
-    CodeSet codeset;
-    XlcCharSet charset;
-    CTData ctdp = ctdata;
-
-    ctdptr[Ascii] = &ctdata[0];         /* failsafe */
-
-    for (i = 0; i < num_codesets; i++) {
-
-	codeset = codesets[i];
-	num_charsets = codeset->num_charsets;
-
-	for (j = 0; j < num_charsets; j++) {
-
-	    charset = codeset->charset_list[j];
-
-	    for (ctdp = ctdata; ctdp <= ctd_endp; ctdp++)
-
-		if (! strcmp(ctdp->name, charset->name)) {
-
-		    ctdptr[codeset->cs_num] = ctdp;
-
-		    ctdptr[codeset->cs_num]->wc_encoding = codeset->wc_encoding;
-
-		    ctdptr[codeset->cs_num]->set_size =
-		      charset->set_size;
-
-		    ctdptr[codeset->cs_num]->min_ch =
-		      charset->set_size == 94 &&
-		      (ctdptr[codeset->cs_num]->length > 1 ||
-		      ctdptr[codeset->cs_num]->side == XlcGR) ? 0x21 : 0x20;
-
-		    break;
-		}
-	}
-    }
-}
-
-
-static int
-sjis_mbstocts(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    int ct_len = *to_left;
-    int cs_num;
-    int clen;
-    int unconv_num = 0;
-    int num_conv;
-    const char *inbufptr = *from;
-    char *ctptr = *to;
-    XPointer ct_base = ctptr;
-
-    StateRec ct_state;
-    CTData charset = NULL;
-    XLCd lcd = (XLCd) conv->state;
-    int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
-/* Initial State: */
-
-    ct_state.GL_charset = ctdptr[Ascii];
-    ct_state.GR_charset = NULL;
-
-    if (*from_left > *to_left)
-        *from_left = *to_left;
-
-    for (;*from_left > 0; (*from_left) -= charset->length) {
-
-	if (iskanji(*inbufptr)) {
-	    if (KANJI_CODESET >= codeset_num) {
-		unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	    cs_num = Kanji;
-	    charset = ctdptr[Kanji];
-	    if (!VALID_MULTIBYTE((Uchar) *(inbufptr+1)))
-		unconv_num++;
-	}
-	else if (isuserdef(*inbufptr)) {
-	    if (USERDEF_CODESET >= codeset_num) {
-		unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	    cs_num = Userdef;
-	    charset = ctdptr[Userdef];
-	    if (!VALID_MULTIBYTE((Uchar) *(inbufptr+1)))
-		unconv_num++;
-	}
-	else if (isascii(*inbufptr)) {
-	    if (ASCII_CODESET >= codeset_num) {
-		unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	    cs_num = Ascii;
-	    charset = ctdptr[Ascii];
-	}
-	else if (iskana(*inbufptr)) {
-	    if (KANA_CODESET >= codeset_num) {
-		unconv_num++;
-		(*from_left)--;
-		continue;
-	    }
-	    cs_num = Kana;
-	    charset = ctdptr[Kana];
-	}
-	else { 		 /* unknown */
-	    unconv_num++;
-	    (*from_left)--;
-	    continue;
-	}
-
-	if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
-	     (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
-
-	    ct_len -= ctdptr[cs_num]->ct_encoding_len;
-	    if (ct_len < 0) {
-		unconv_num++;
-		break;
-	    }
-
-	    if (ctptr) {
-		strcpy(ctptr, ctdptr[cs_num]->ct_encoding);
-		ctptr += ctdptr[cs_num]->ct_encoding_len;
-	    }
-	}
-
-	clen = charset->length;
-	do {
-	    *ctptr++ = *inbufptr++;
-	} while (--clen);
-
-	if (charset->length >= 2) {
-	    sjis_to_jis((Uchar *)(ctptr-2), (Uchar *)(ctptr-1));
-	    if (BADCHAR(charset->min_ch, *(ctptr-2)) ||
-		  BADCHAR(charset->min_ch, *(ctptr-1))) {
-		unconv_num++;
-		continue;
-	    }
-	}
-	else
-	    if (BADCHAR(charset->min_ch, *(ctptr-1))) {
-		unconv_num++;
-		continue;
-	    }
-
-	if (charset->side == XlcGR)
-	    ct_state.GR_charset = charset;
-	else if (charset->side == XlcGL)
-	    ct_state.GL_charset = charset;
-
-	if (charset->side == XlcGR) {
-	  clen = charset->length;
-	  do {
-	    (*(Uchar *)(ctptr-clen)) = BIT8ON(*(Uchar *)(ctptr-clen));
-	  } while (--clen);
-	}
-    }
-
-    *to = (XPointer)ctptr;
-
-    if ((num_conv = (int)(ctptr - ct_base)) > 0)
-	(*to_left) -= num_conv;
-
-    return unconv_num;
-
-}
-
-
-#define byte1		(length == codeset->length - 1)
-#define byte2		(byte1 == 0)
-
-static int
-sjis_wcstocts(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    int ct_len = *to_left;
-    const wchar_t *inbufptr = (const wchar_t *) *from;
-    char *ctptr = *to;
-    XPointer ct_base = ctptr;
-    wchar_t  wch;
-    int length;
-    Uchar tmp;
-    Uchar t1 = 0;
-    int num_conv;
-
-    StateRec ct_state;
-    XLCd lcd = (XLCd)conv->state;
-    CTData charset;
-    CodeSet codeset;
-    int unconv_num = 0;
-    Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
-/* Initial State: */
-    ct_state.GL_charset = ctdptr[0]; /* Codeset 0 */
-    ct_state.GR_charset = NULL;
-
-    if (*from_left > *to_left)
-	*from_left = *to_left;
-
-    for (; *from_left > 0 ; (*from_left)-- ) {
-
-	wch = *inbufptr++;
-
-        if (!(codeset = wc_codeset(lcd, wch))) {
-            unconv_num++;
-            (*from_left)--;
-            continue;
-        }
-
-	charset = ctdptr[codeset->cs_num];
-
-	length = codeset->length;
-	wch ^= (wchar_t)codeset->wc_encoding;
-
-	if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
-	     (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
-
-	    ct_len -= ctdptr[codeset->cs_num]->ct_encoding_len;
-	    if (ct_len < 0) {
-		unconv_num++;
-		break;
-	    }
-
-	    if (ctptr) {
-		strcpy(ctptr, ctdptr[codeset->cs_num]->ct_encoding);
-		ctptr += ctdptr[codeset->cs_num]->ct_encoding_len;
-	    }
-
-	}
-
-	if (charset->side == XlcGR)
-	    ct_state.GR_charset = charset;
-	else if (charset->side == XlcGL)
-	    ct_state.GL_charset = charset;
-
-	do {
-	    length--;
-	    tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
-
-	    if (kana) {
-		if (BADCHAR(charset->min_ch, (char)tmp)) {
-		    unconv_num++;
-		    break;
-		}
-		*ctptr++ = (char)BIT8ON(tmp);
-	    }
-
-	    else if (byte1 && (kanji || userdef)) {
-		t1 = tmp;
-	    }
-
-	    else if (byte2 && (kanji || userdef)) {
-		if (BADCHAR(charset->min_ch, (char)t1) ||
-		  BADCHAR(charset->min_ch, (char)tmp)) {
-		    unconv_num++;
-		    break;
-		}
-
-		*ctptr++ = (char)BIT8OFF(t1);
-		*ctptr++ = (char)BIT8OFF(tmp);
-	    }
-
-	    else {
-		if (BADCHAR(charset->min_ch, (char)tmp)) {
-		    unconv_num++;
-		    break;
-		}
-		*ctptr++ = (char)tmp;
-	    }
-	} while (length);
-
-    }	/* end for */
-
-    *to = (XPointer)ctptr;
-
-    if ((num_conv = (int)(ctptr - ct_base)) > 0)
-	(*to_left) -= num_conv;
-
-    return unconv_num;
-}
-#undef byte1
-#undef byte2
-
-#define SKIP_I(str)	while (*(str) >= 0x20 && *(str) <=  0x2f) (str)++;
-#define SKIP_P(str)	while (*(str) >= 0x30 && *(str) <=  0x3f) (str)++;
-
-static int
-sjis_ctstombs(
-    XlcConv conv,
-    XPointer *from,
-    int *from_left,
-    XPointer *to,
-    int *to_left,
-    XPointer *args,
-    int num_args)
-{
-    const char *inbufptr =  *from;
-    XPointer outbufptr =  *to;
-    const char *inbuf_base;
-    XPointer outbuf_base = outbufptr;
-    int clen, length;
-    int unconv_num = 0;
-    int num_conv;
-    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;
-
-    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++) {
-
-		if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
-		{
-		    inbufptr += ctdp->ct_encoding_len;
-		    (*from_left) -= ctdp->ct_encoding_len;
-		    if( ctdp->length ) {
-			length = ctdp->length;
-			if( *from_left < length ) {
-			    *to = (XPointer)outbufptr;
-			    *to_left -= outbufptr - outbuf_base;
-			    return( unconv_num + *from_left );
-			}
-		    }
-		    ct_type = ctdp->ct_type;
-		    if(ctdp->side == XlcGL){
-			GL_ctdp = ctdp; /* save GL ctdp */
-		    }else{
-			GR_ctdp = ctdp; /* save GR ctdp */
-		    }
-		    break;
-		}
-	    }
-	    if (ctdp > ctd_endp)  	/* failed to match CT sequence */
-		unconv_num++;
-	}
-
-/* The following code insures that non-standard encodings, direction, extension,
- * and version strings are ignored; subject to change in future.
- */
-	switch (ct_type) {
-	  case CT_STD:
-	    break;
-	  case CT_EXT2:
-	    inbufptr++;
-	    (*from_left)--;
-	  case CT_NSTD:
-	    ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
-	    inbufptr += ct_seglen;
-	    (*from_left) -= ct_seglen;
-	    continue;
-	  case CT_EXT0:
-	    inbuf_base = inbufptr;
-	    SKIP_I(inbufptr);
-	    inbufptr++;
-	    ct_seglen = (unsigned)(inbufptr - inbuf_base);
-	    (*from_left) -= ct_seglen;
-	    continue;
-	  case CT_EXT1:
-	    inbuf_base = inbufptr;
-	    SKIP_P(inbufptr);
-	    SKIP_I(inbufptr);
-	    inbufptr++;
-	    ct_seglen = (unsigned)(inbufptr - inbuf_base);
-	    (*from_left) -= ct_seglen;
-	    continue;
-	  case CT_DIR:
-	    continue;
-	  case CT_VER:
-	    inbufptr += 2;
-	    (*from_left) -= 2;
-	    continue;
-	}
-
-	if (ctdp->side == XlcGL || isrightside (*inbufptr)) {
-	    clen = length;
-	} else {
-	    clen = 1;
-	    *from_left += length - clen;
-	}
-	do {
-	    Uchar mask = (length == 2) ? GL : -1;
-	    *outbufptr++ = *inbufptr++ & mask;
-	} while (--clen);
-
-	if (length >= 2)
-	    jis_to_sjis((Uchar *)(outbufptr-2), (Uchar *)(outbufptr-1));
-    }
-
-    *to = (XPointer)outbufptr;
-
-    if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
-	(*to_left) -= num_conv;
-
-    return unconv_num;
-}
-
-
-static int
-sjis_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);
-    const char *inbufptr = *from;
-    const char *inbuf_base;
-    wchar_t *outbufptr = (wchar_t *) *to;
-    wchar_t *outbuf_base = outbufptr;
-    int clen, length;
-    int num_conv;
-    int unconv_num = 0;
-    unsigned int ct_seglen = 0;
-    Uchar ct_type = 0;
-    int shift_mult;
-    wchar_t wc_tmp;
-    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;
-
-    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++) {
-
-		if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
-		{
-		    inbufptr += ctdp->ct_encoding_len;
-		    (*from_left) -= ctdp->ct_encoding_len;
-		    if( ctdp->length ) {
-			length = ctdp->length;
-			if( *from_left < length ) {
-			    *to = (XPointer)outbufptr;
-			    *to_left -= outbufptr - outbuf_base;
-			    return( unconv_num + *from_left );
-			}
-		    }
-		    ct_type = ctdp->ct_type;
-		    if(ctdp->side == XlcGL){
-			GL_ctdp = ctdp; /* save GL ctdp */
-		    }else{
-			GR_ctdp = ctdp; /* save GR ctdp */
-		    }
-		    break;
-		}
-	    }
-	    if (ctdp > ctd_endp)    	/* failed to match CT sequence */
-		unconv_num++;
-	}
-
-/* The following block of code insures that non-standard encodings, direction,
- * extension, and version strings are ignored; subject to change in future.
- */
-	switch (ct_type) {
-	  case CT_STD:
-	    break;
-	  case CT_EXT2:
-	    inbufptr++;
-	    (*from_left)--;
-	  case CT_NSTD:
-	    ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
-	    inbufptr += ct_seglen;
-	    (*from_left) -= ct_seglen;
-	    continue;
-	  case CT_EXT0:
-	    inbuf_base = inbufptr;
-	    SKIP_I(inbufptr);
-	    inbufptr++;
-	    ct_seglen = (unsigned)(inbufptr - inbuf_base);
-	    (*from_left) -= ct_seglen;
-	    continue;
-	  case CT_EXT1:
-	    inbuf_base = inbufptr;
-	    SKIP_P(inbufptr);
-	    SKIP_I(inbufptr);
-	    inbufptr++;
-	    ct_seglen = (unsigned)(inbufptr - inbuf_base);
-	    (*from_left) -= ct_seglen;
-	    continue;
-	  case CT_DIR:
-	    continue;
-	  case CT_VER:
-	    inbufptr += 2;
-	    (*from_left) -= 2;
-	    continue;
-	}
-#if !defined(__sony_news)  ||  defined(SVR4)
-	if (ctdp->side == XlcGL || isrightside (*inbufptr)) {
-	    clen = length;
-	    wc_encoding = ctdp->wc_encoding;
-	} else {
-	    clen = 1;
-	    *from_left += length - clen;
-	    wc_encoding = ctdptr[Ascii]->wc_encoding;
-	}
-	shift_mult = clen - 1;
-	wch = (wchar_t)0;
-
-	do {
-	    wc_tmp = BIT8OFF(*inbufptr++) << (wc_shift_bits * shift_mult);
-	    wch |= wc_tmp;
-	    shift_mult--;
-	} while (--clen);
-	*outbufptr++ = wch | wc_encoding;
-#else
-	if( length == 1 )
-	    *outbufptr++ = (unsigned char)*inbufptr++;
-	else if( length == 2 ) {
-	    unsigned short	code;
-	    code = (*inbufptr << 8) | *(inbufptr+1);
-	    *outbufptr++ = jis2sjis( code );
-	    inbufptr += 2;
-	}
-#endif
-    }
-    *to = (XPointer)outbufptr;
-
-    if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
-	(*to_left) -= num_conv ;
-
-    return unconv_num;
-
-}
-#undef BADCHAR
-
-static void
-close_converter(
-    XlcConv conv)
-{
-	Xfree(conv);
-}
-
-
-static XlcConv
-create_conv(
-    XLCd lcd,
-    XlcConvMethods methods)
-{
-    XlcConv conv;
-
-    conv = Xmalloc(sizeof(XlcConvRec));
-    if (conv == NULL)
-	return (XlcConv) NULL;
-
-    conv->methods = methods;
-    conv->state = (XPointer) lcd;
-    return conv;
-}
-
-
-enum { MBSTOCS, WCSTOCS, MBTOCS, CSTOMBS, CSTOWCS, MBSTOWCS, WCSTOMBS,
-       WCSTOCTS, MBSTOCTS, CTSTOMBS, CTSTOWCS };
-
-static XlcConvMethodsRec conv_methods[] = {
-    {close_converter, sjis_mbstocs,  NULL },
-    {close_converter, sjis_wcstocs,  NULL },
-    {close_converter, sjis_mbtocs,   NULL },
-    {close_converter, sjis_cstombs,  NULL },
-    {close_converter, sjis_cstowcs,  NULL },
-    {close_converter, sjis_mbstowcs, NULL },
-    {close_converter, sjis_wcstombs, NULL },
-    {close_converter, sjis_wcstocts, NULL },
-    {close_converter, sjis_mbstocts, NULL },
-    {close_converter, sjis_ctstombs, NULL },
-    {close_converter, sjis_ctstowcs, NULL },
-};
-
-
-static XlcConv
-open_mbstocs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[MBSTOCS]);
-}
-
-static XlcConv
-open_wcstocs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[WCSTOCS]);
-}
-
-static XlcConv
-open_mbtocs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[MBTOCS]);
-}
-
-static XlcConv
-open_cstombs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[CSTOMBS]);
-}
-
-static XlcConv
-open_cstowcs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[CSTOWCS]);
-}
-
-static XlcConv
-open_mbstowcs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
-}
-
-static XlcConv
-open_wcstombs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
-}
-
-static XlcConv
-open_wcstocts(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
-}
-
-static XlcConv
-open_mbstocts(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
-}
-
-static XlcConv
-open_ctstombs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
-}
-
-static XlcConv
-open_ctstowcs(
-    XLCd from_lcd,
-    const char *from_type,
-    XLCd to_lcd,
-    const char *to_type)
-{
-    return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
-}
-
-XLCd
-_XlcSjisLoader(
-    const char *name)
-{
-    XLCd lcd;
-
-    lcd = _XlcCreateLC(name, _XlcGenericMethods);
-    if (lcd == NULL)
-	return lcd;
-
-    if (!XLC_PUBLIC_PART(lcd)->codeset ||
-	(_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "SJIS"))) {
-	_XlcDestroyLC(lcd);
-	return (XLCd) NULL;
-    }
-
-    initCTptr(lcd);
-
-    _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs);
-    _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
-    _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs);
-    _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
-    _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbtocs);
-
-#ifndef FORCE_INDIRECT_CONVERTER
-    _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte, open_ctstombs);
-    _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_ctstowcs);
-    _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_mbstocts);
-    _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_mbstowcs);
-    _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCompoundText, open_wcstocts);
-    _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs);
-#endif
-
-    _XlcAddUtf8Converters(lcd);
-
-    return lcd;
-}
-
-#else
-typedef int dummy;
-#endif /* X_LOCALE */
diff --git a/nls/C/XLC_LOCALE.pre b/nls/C/XLC_LOCALE.pre
index 4653930..8334363 100644
--- a/nls/C/XLC_LOCALE.pre
+++ b/nls/C/XLC_LOCALE.pre
@@ -33,10 +33,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/armscii-8/XLC_LOCALE.pre b/nls/armscii-8/XLC_LOCALE.pre
index 72013f7..4fab639 100644
--- a/nls/armscii-8/XLC_LOCALE.pre
+++ b/nls/armscii-8/XLC_LOCALE.pre
@@ -51,9 +51,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/georgian-academy/XLC_LOCALE.pre b/nls/georgian-academy/XLC_LOCALE.pre
index c51b1ef..50bc3c8 100644
--- a/nls/georgian-academy/XLC_LOCALE.pre
+++ b/nls/georgian-academy/XLC_LOCALE.pre
@@ -51,9 +51,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/georgian-ps/XLC_LOCALE.pre b/nls/georgian-ps/XLC_LOCALE.pre
index 470dcae..9f03ebb 100644
--- a/nls/georgian-ps/XLC_LOCALE.pre
+++ b/nls/georgian-ps/XLC_LOCALE.pre
@@ -51,9 +51,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/ibm-cp1133/XLC_LOCALE.pre b/nls/ibm-cp1133/XLC_LOCALE.pre
index f3b762c..cdc543a 100644
--- a/nls/ibm-cp1133/XLC_LOCALE.pre
+++ b/nls/ibm-cp1133/XLC_LOCALE.pre
@@ -51,9 +51,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iscii-dev/XLC_LOCALE.pre b/nls/iscii-dev/XLC_LOCALE.pre
index 1ddb186..e863156 100644
--- a/nls/iscii-dev/XLC_LOCALE.pre
+++ b/nls/iscii-dev/XLC_LOCALE.pre
@@ -51,9 +51,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/isiri-3342/XLC_LOCALE.pre b/nls/isiri-3342/XLC_LOCALE.pre
index 59072fc..4ec74f8 100644
--- a/nls/isiri-3342/XLC_LOCALE.pre
+++ b/nls/isiri-3342/XLC_LOCALE.pre
@@ -51,9 +51,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-1/XLC_LOCALE.pre b/nls/iso8859-1/XLC_LOCALE.pre
index af09009..11772b8 100644
--- a/nls/iso8859-1/XLC_LOCALE.pre
+++ b/nls/iso8859-1/XLC_LOCALE.pre
@@ -42,10 +42,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-10/XLC_LOCALE.pre b/nls/iso8859-10/XLC_LOCALE.pre
index a075c38..e6fc488 100644
--- a/nls/iso8859-10/XLC_LOCALE.pre
+++ b/nls/iso8859-10/XLC_LOCALE.pre
@@ -43,10 +43,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-11/XLC_LOCALE.pre b/nls/iso8859-11/XLC_LOCALE.pre
index 4949e65..ee5073d 100644
--- a/nls/iso8859-11/XLC_LOCALE.pre
+++ b/nls/iso8859-11/XLC_LOCALE.pre
@@ -43,10 +43,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-13/XLC_LOCALE.pre b/nls/iso8859-13/XLC_LOCALE.pre
index b127500..82a5a0a 100644
--- a/nls/iso8859-13/XLC_LOCALE.pre
+++ b/nls/iso8859-13/XLC_LOCALE.pre
@@ -43,10 +43,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-14/XLC_LOCALE.pre b/nls/iso8859-14/XLC_LOCALE.pre
index 287f757..05bbd24 100644
--- a/nls/iso8859-14/XLC_LOCALE.pre
+++ b/nls/iso8859-14/XLC_LOCALE.pre
@@ -43,10 +43,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-15/XLC_LOCALE.pre b/nls/iso8859-15/XLC_LOCALE.pre
index 8921874..09ce32d 100644
--- a/nls/iso8859-15/XLC_LOCALE.pre
+++ b/nls/iso8859-15/XLC_LOCALE.pre
@@ -49,10 +49,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-2/XLC_LOCALE.pre b/nls/iso8859-2/XLC_LOCALE.pre
index 8c70e8a..d7c6170 100644
--- a/nls/iso8859-2/XLC_LOCALE.pre
+++ b/nls/iso8859-2/XLC_LOCALE.pre
@@ -43,10 +43,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-3/XLC_LOCALE.pre b/nls/iso8859-3/XLC_LOCALE.pre
index e8f9e77..5a79380 100644
--- a/nls/iso8859-3/XLC_LOCALE.pre
+++ b/nls/iso8859-3/XLC_LOCALE.pre
@@ -43,10 +43,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-4/XLC_LOCALE.pre b/nls/iso8859-4/XLC_LOCALE.pre
index 9bf101d..c349a6f 100644
--- a/nls/iso8859-4/XLC_LOCALE.pre
+++ b/nls/iso8859-4/XLC_LOCALE.pre
@@ -43,10 +43,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-5/XLC_LOCALE.pre b/nls/iso8859-5/XLC_LOCALE.pre
index 5a78709..f271c6d 100644
--- a/nls/iso8859-5/XLC_LOCALE.pre
+++ b/nls/iso8859-5/XLC_LOCALE.pre
@@ -43,10 +43,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-6/XLC_LOCALE.pre b/nls/iso8859-6/XLC_LOCALE.pre
index 5b0d4d4..c2a5107 100644
--- a/nls/iso8859-6/XLC_LOCALE.pre
+++ b/nls/iso8859-6/XLC_LOCALE.pre
@@ -43,10 +43,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-7/XLC_LOCALE.pre b/nls/iso8859-7/XLC_LOCALE.pre
index 9910bbe..e1099ba 100644
--- a/nls/iso8859-7/XLC_LOCALE.pre
+++ b/nls/iso8859-7/XLC_LOCALE.pre
@@ -43,10 +43,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-8/XLC_LOCALE.pre b/nls/iso8859-8/XLC_LOCALE.pre
index 20a9f8f..7c4ed31 100644
--- a/nls/iso8859-8/XLC_LOCALE.pre
+++ b/nls/iso8859-8/XLC_LOCALE.pre
@@ -43,10 +43,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-9/XLC_LOCALE.pre b/nls/iso8859-9/XLC_LOCALE.pre
index 4ffbce7..2e0e66b 100644
--- a/nls/iso8859-9/XLC_LOCALE.pre
+++ b/nls/iso8859-9/XLC_LOCALE.pre
@@ -43,10 +43,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/iso8859-9e/XLC_LOCALE.pre b/nls/iso8859-9e/XLC_LOCALE.pre
index cc76578..8c252f1 100644
--- a/nls/iso8859-9e/XLC_LOCALE.pre
+++ b/nls/iso8859-9e/XLC_LOCALE.pre
@@ -55,10 +55,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/ja.JIS/XLC_LOCALE.pre b/nls/ja.JIS/XLC_LOCALE.pre
index 4b771ac..be03777 100644
--- a/nls/ja.JIS/XLC_LOCALE.pre
+++ b/nls/ja.JIS/XLC_LOCALE.pre
@@ -65,10 +65,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/ja.SJIS/XLC_LOCALE.pre b/nls/ja.SJIS/XLC_LOCALE.pre
index 671a985..5064f15 100644
--- a/nls/ja.SJIS/XLC_LOCALE.pre
+++ b/nls/ja.SJIS/XLC_LOCALE.pre
@@ -67,10 +67,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/ja/XLC_LOCALE.pre b/nls/ja/XLC_LOCALE.pre
index 99decf0..0e205a4 100644
--- a/nls/ja/XLC_LOCALE.pre
+++ b/nls/ja/XLC_LOCALE.pre
@@ -67,10 +67,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/ko/XLC_LOCALE.pre b/nls/ko/XLC_LOCALE.pre
index bda77b7..dc79e66 100644
--- a/nls/ko/XLC_LOCALE.pre
+++ b/nls/ko/XLC_LOCALE.pre
@@ -43,10 +43,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/koi8-c/XLC_LOCALE.pre b/nls/koi8-c/XLC_LOCALE.pre
index 68cd02f..adf5db0 100644
--- a/nls/koi8-c/XLC_LOCALE.pre
+++ b/nls/koi8-c/XLC_LOCALE.pre
@@ -51,9 +51,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/koi8-r/XLC_LOCALE.pre b/nls/koi8-r/XLC_LOCALE.pre
index cda283e..1c487d7 100644
--- a/nls/koi8-r/XLC_LOCALE.pre
+++ b/nls/koi8-r/XLC_LOCALE.pre
@@ -52,9 +52,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/koi8-u/XLC_LOCALE.pre b/nls/koi8-u/XLC_LOCALE.pre
index 860438a..0516d98 100644
--- a/nls/koi8-u/XLC_LOCALE.pre
+++ b/nls/koi8-u/XLC_LOCALE.pre
@@ -51,9 +51,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/microsoft-cp1251/XLC_LOCALE.pre b/nls/microsoft-cp1251/XLC_LOCALE.pre
index 77b9cd2..c96d908 100644
--- a/nls/microsoft-cp1251/XLC_LOCALE.pre
+++ b/nls/microsoft-cp1251/XLC_LOCALE.pre
@@ -56,10 +56,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/microsoft-cp1255/XLC_LOCALE.pre b/nls/microsoft-cp1255/XLC_LOCALE.pre
index a9bea9c..c1b009b 100644
--- a/nls/microsoft-cp1255/XLC_LOCALE.pre
+++ b/nls/microsoft-cp1255/XLC_LOCALE.pre
@@ -56,10 +56,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/microsoft-cp1256/XLC_LOCALE.pre b/nls/microsoft-cp1256/XLC_LOCALE.pre
index 7fdb074..6165fee 100644
--- a/nls/microsoft-cp1256/XLC_LOCALE.pre
+++ b/nls/microsoft-cp1256/XLC_LOCALE.pre
@@ -56,10 +56,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/mulelao-1/XLC_LOCALE.pre b/nls/mulelao-1/XLC_LOCALE.pre
index 45a6345..24af6d8 100644
--- a/nls/mulelao-1/XLC_LOCALE.pre
+++ b/nls/mulelao-1/XLC_LOCALE.pre
@@ -51,9 +51,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/nokhchi-1/XLC_LOCALE.pre b/nls/nokhchi-1/XLC_LOCALE.pre
index 3038679..6f231cd 100644
--- a/nls/nokhchi-1/XLC_LOCALE.pre
+++ b/nls/nokhchi-1/XLC_LOCALE.pre
@@ -51,9 +51,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/tatar-cyr/XLC_LOCALE.pre b/nls/tatar-cyr/XLC_LOCALE.pre
index aaa9505..c7c5581 100644
--- a/nls/tatar-cyr/XLC_LOCALE.pre
+++ b/nls/tatar-cyr/XLC_LOCALE.pre
@@ -56,10 +56,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/th_TH/XLC_LOCALE.pre b/nls/th_TH/XLC_LOCALE.pre
index 8530f0b..3508c28 100644
--- a/nls/th_TH/XLC_LOCALE.pre
+++ b/nls/th_TH/XLC_LOCALE.pre
@@ -36,10 +36,8 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env            True
 force_convert_to_mb     True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/tscii-0/XLC_LOCALE.pre b/nls/tscii-0/XLC_LOCALE.pre
index 617bfdf..bffffe4 100644
--- a/nls/tscii-0/XLC_LOCALE.pre
+++ b/nls/tscii-0/XLC_LOCALE.pre
@@ -51,9 +51,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/vi_VN.tcvn/XLC_LOCALE.pre b/nls/vi_VN.tcvn/XLC_LOCALE.pre
index d2897d6..90324fd 100644
--- a/nls/vi_VN.tcvn/XLC_LOCALE.pre
+++ b/nls/vi_VN.tcvn/XLC_LOCALE.pre
@@ -51,9 +51,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/vi_VN.viscii/XLC_LOCALE.pre b/nls/vi_VN.viscii/XLC_LOCALE.pre
index 9df0300..730996b 100644
--- a/nls/vi_VN.viscii/XLC_LOCALE.pre
+++ b/nls/vi_VN.viscii/XLC_LOCALE.pre
@@ -51,9 +51,7 @@ wc_encoding_mask	\x00008080
 wc_shift_bits		8
 #endif
 
-#ifndef X_LOCALE
 use_stdc_env		True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/zh_CN/XI18N_OBJS b/nls/zh_CN/XI18N_OBJS
index 3ad1a62..24d066b 100644
--- a/nls/zh_CN/XI18N_OBJS
+++ b/nls/zh_CN/XI18N_OBJS
@@ -3,7 +3,6 @@
 #	XI18N objects table for zh locale
 #
 #
-XLC	common/xlocale	_XlcEucLoader	# XLC_open
 XLC	common/xlibi18n	_XlcGenericLoader	# XLC_open
 XIM	common/ximcp	_XimOpenIM _XimRegisterIMInstantiateCallback  _XimUnRegisterIMInstantiateCallback # XIM_open	XIM_register XIM_unregister
 XOM	common/xomGeneric 	_XomGenericOpenOM	# XOM_open
diff --git a/nls/zh_CN/XLC_LOCALE.pre b/nls/zh_CN/XLC_LOCALE.pre
index 0065d8d..2e95d30 100644
--- a/nls/zh_CN/XLC_LOCALE.pre
+++ b/nls/zh_CN/XLC_LOCALE.pre
@@ -38,10 +38,8 @@ state_depend_encoding	False
 wc_encoding_mask	\x30000000
 wc_shift_bits		7
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/nls/zh_TW.big5/XLC_LOCALE.pre b/nls/zh_TW.big5/XLC_LOCALE.pre
index b04d023..b8866e8 100644
--- a/nls/zh_TW.big5/XLC_LOCALE.pre
+++ b/nls/zh_TW.big5/XLC_LOCALE.pre
@@ -41,10 +41,8 @@ state_depend_encoding	False
 wc_encoding_mask	\x00038000
 wc_shift_bits		8
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM	cs0 class
 cs0	{
diff --git a/nls/zh_TW/XLC_LOCALE.pre b/nls/zh_TW/XLC_LOCALE.pre
index d75ece8..ffbb462 100644
--- a/nls/zh_TW/XLC_LOCALE.pre
+++ b/nls/zh_TW/XLC_LOCALE.pre
@@ -82,10 +82,8 @@ state_depend_encoding	False
 wc_encoding_mask	\x3fffc000
 wc_shift_bits		7
 
-#ifndef X_LOCALE
 use_stdc_env		True
 force_convert_to_mb	True
-#endif
 
 XCOMM 	cs0 class
 cs0	{
diff --git a/specs/i18n/framework/framework.xml b/specs/i18n/framework/framework.xml
index 6324301..c2aad8a 100644
--- a/specs/i18n/framework/framework.xml
+++ b/specs/i18n/framework/framework.xml
@@ -248,8 +248,6 @@ Current implementation provides following locale loaders;
 <literallayout>
 <function>_XlcDefaultLoader</function>
 <function>_XlcGenericLoader</function>
-<function>_XlcEucLoader</function>
-<function>_XlcSjisLoader</function>
 <function>_XlcUtfLoader</function>
 <function>_XaixOsDynamicLoad</function>
 </literallayout>
diff --git a/src/SetLocale.c b/src/SetLocale.c
index c49cb2e..69c25c2 100644
--- a/src/SetLocale.c
+++ b/src/SetLocale.c
@@ -66,56 +66,6 @@ from The Open Group.
 
 #define MAXLOCALE	64	/* buffer size of locale name */
 
-#ifdef X_LOCALE
-
-/* alternative setlocale() for when the OS does not provide one */
-
-char *
-_Xsetlocale(
-    int		  category,
-    _Xconst char  *name
-)
-{
-    static char *xsl_name;
-    char *old_name;
-    XrmMethods methods;
-    XPointer state;
-
-    if (category != LC_CTYPE && category != LC_ALL)
-	return NULL;
-    if (!name) {
-	if (xsl_name)
-	    return xsl_name;
-	return "C";
-    }
-    if (!*name)
-	name = getenv("LC_CTYPE");
-    if (!name || !*name)
-	name = getenv("LANG");
-    if (name && strlen(name) >= MAXLOCALE)
-	name = NULL;
-    if (!name || !*name || !_XOpenLC((char *) name))
-	name = "C";
-    old_name = xsl_name;
-    xsl_name = (char *)name;
-    methods = _XrmInitParseInfo(&state);
-    xsl_name = old_name;
-    if (!methods)
-	return NULL;
-    name = (*methods->lcname)(state);
-    xsl_name = strdup(name);
-    if (!xsl_name) {
-	xsl_name = old_name;
-	(*methods->destroy)(state);
-	return NULL;
-    }
-    if (old_name)
-	Xfree(old_name);
-    (*methods->destroy)(state);
-    return xsl_name;
-}
-
-#else /* X_LOCALE */
 
 #if defined(__APPLE__) || defined(__CYGWIN__)
 char *
@@ -250,4 +200,3 @@ _XlcMapOSLocaleName(
     return osname;
 }
 
-#endif  /* X_LOCALE */
diff --git a/src/xlibi18n/Makefile.am b/src/xlibi18n/Makefile.am
index 853953a..28b3fe3 100644
--- a/src/xlibi18n/Makefile.am
+++ b/src/xlibi18n/Makefile.am
@@ -35,8 +35,7 @@ IM_LIBS = \
 LC_LIBS = \
 	${top_builddir}/modules/lc/def/libxlcDef.la \
 	${top_builddir}/modules/lc/gen/libxlibi18n.la \
-	${top_builddir}/modules/lc/Utf8/libxlcUTF8Load.la \
-	${top_builddir}/modules/lc/xlocale/libxlocale.la
+	${top_builddir}/modules/lc/Utf8/libxlcUTF8Load.la
 
 OM_LIBS = \
 	${top_builddir}/modules/om/generic/libxomGeneric.la
diff --git a/src/xlibi18n/XlcPubI.h b/src/xlibi18n/XlcPubI.h
index a83d243..2e6890d 100644
--- a/src/xlibi18n/XlcPubI.h
+++ b/src/xlibi18n/XlcPubI.h
@@ -232,12 +232,6 @@ extern void _XlcGetLocaleDataBase(
     int*		/* count */
 );
 
-#ifdef X_LOCALE
-extern char *
-_Xsetlocale(
-    int           category,
-    _Xconst char  *name);
-#else
 #ifdef __APPLE__
 extern char *
 _Xsetlocale(
@@ -247,7 +241,6 @@ _Xsetlocale(
 extern char *_XlcMapOSLocaleName(
     char *osname,
     char *siname);
-#endif
 
 extern int
 _Xmbstoutf8(
diff --git a/src/xlibi18n/Xlcint.h b/src/xlibi18n/Xlcint.h
index 95d1f5d..ebef95b 100644
--- a/src/xlibi18n/Xlcint.h
+++ b/src/xlibi18n/Xlcint.h
@@ -932,21 +932,6 @@ extern XLCd _XlcUtf8Loader(
     const char*		name
 );
 
-/* The old EUC locale loader. */
-extern XLCd _XlcEucLoader(
-    const char*		name
-);
-
-/* The old SJIS locale loader. */
-extern XLCd _XlcSjisLoader(
-    const char*		name
-);
-
-/* The old ISO-2022-JP locale loader. */
-extern XLCd _XlcJisLoader(
-    const char*		name
-);
-
 extern XLCd _XlcDynamicLoad(
     const char*		name
 );
diff --git a/src/xlibi18n/lcInit.c b/src/xlibi18n/lcInit.c
index 5aaf183..e3092f7 100644
--- a/src/xlibi18n/lcInit.c
+++ b/src/xlibi18n/lcInit.c
@@ -106,11 +106,6 @@ Sun Microsystems, Inc. or its licensors is granted.
 #define USE_GENERIC_LOADER
 #define USE_DEFAULT_LOADER
 #define USE_UTF8_LOADER
-#ifdef X_LOCALE
-# define USE_EUC_LOADER
-# define USE_SJIS_LOADER
-# define USE_JIS_LOADER
-#endif
 #endif
 
 /*
@@ -138,18 +133,6 @@ _XlcInitLoader(void)
     _XlcAddLoader(_XlcUtf8Loader, XlcHead);
 #endif
 
-#ifdef USE_EUC_LOADER
-    _XlcAddLoader(_XlcEucLoader, XlcHead);
-#endif
-
-#ifdef USE_SJIS_LOADER
-    _XlcAddLoader(_XlcSjisLoader, XlcHead);
-#endif
-
-#ifdef USE_JIS_LOADER
-    _XlcAddLoader(_XlcJisLoader, XlcHead);
-#endif
-
 #ifdef USE_DYNAMIC_LOADER
     _XlcAddLoader(_XlcDynamicLoader, XlcHead);
 #endif
@@ -177,18 +160,6 @@ _XlcDeInitLoader(void)
     _XlcRemoveLoader(_XlcUtf8Loader);
 #endif
 
-#ifdef USE_EUC_LOADER
-    _XlcRemoveLoader(_XlcEucLoader);
-#endif
-
-#ifdef USE_SJIS_LOADER
-   _XlcRemoveLoader(_XlcSjisLoader);
-#endif
-
-#ifdef USE_JIS_LOADER
-    _XlcRemoveLoader(_XlcJisLoader);
-#endif
-
 #ifdef USE_DYNAMIC_LOADER
     _XlcRemoveLoader(_XlcDynamicLoader);
 #endif
-- 
1.7.9.2



More information about the xorg-devel mailing list