1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-02 01:20:54 +00:00
freebsd-ports/chinese/tcl83/files/patch-af
Kevin Lo 06762bfda1 Chineselized Tcl ver. 8.3.0. This version is i18n improvement.
This changes the behavior of Tk on X where X Input Methods (XIM) were
recognized and used without question.
With 8.3, they will be recognized and initialized, but not used unless
XIM is turned on (tk useinputmethods 1).  This should only affect users
users with special input methods, and the new default behavior should
be more beneficial to the average user.

BTW, please repo copy, thanks.
2001-02-22 03:53:36 +00:00

70 lines
2.5 KiB
Plaintext

--- tclUnixInit.c.orig Wed Oct 13 00:32:49 1999
+++ tclUnixInit.c Wed Feb 21 21:14:45 2001
@@ -369,7 +369,9 @@
int i;
Tcl_Obj *pathPtr;
char *langEnv;
+#ifndef I18N_IMPROVE
Tcl_DString ds;
+#endif /* !I18N_IMPROVE */
/*
* Determine the current encoding from the LC_* or LANG environment
@@ -432,6 +434,7 @@
Tcl_SetSystemEncoding(NULL, encoding);
+#ifndef I18N_IMPROVE
/*
* Initialize the C library's locale subsystem. This is required
* for input methods to work properly on X11. Note that we need to
@@ -445,6 +448,48 @@
setlocale(LC_ALL, "");
setlocale(LC_ALL, Tcl_DStringValue(&ds));
Tcl_DStringFree(&ds);
+#else
+ /*
+ *
+ * If setlocale(LC_ALL, "") are once called, NOT reset to "C"
+ * BECAUSE OF X11 uses locale sensitive libc routines such as:
+ *
+ * mblen()
+ * mbstowcs()
+ * wcstombs()
+ *
+ * Calling setlocale() with proper locale is of course needed,
+ * futhermore, keeping the proper locale setting is ALSO needed
+ * for proper XIM operation. If not, in the worst case, Tk dumps
+ * core.
+ *
+ * And here's another story:
+ *
+ * X11[56]'s internationalization depends on "locale model"
+ * supported by C language (runtime). But unfortunately, on some
+ * (many) systems, setlocale(3) supports only "C" locale. For such
+ * a system, X11 library has _Xsetlocale() (and some locale
+ * sensitive C runtime function like the mblen(), even If these
+ * function are not well-implemented, sigh). If on such a system,
+ * we should't call:
+ *
+ * setlocale(LC_ALL)
+ * or
+ * setlocale(LC_CTYPE)
+ *
+ * at here because Tcl won't be linked with X11 libraries and
+ * nobody want to use the Tcl library that needs X11 libraries at
+ * execution/linkage time. Instead, call setlocale() (expanded to
+ * _Xsetlocale() with C preprocessor macro in <X11/Xlocale.h> if
+ * X_LOCLAE C preprocessor macro is defined, normaly done in Imake
+ * environment) at the initializing of Tk. So, at here, I just
+ * call only setlocale(LC_NUMERIC) since X11's internationalize
+ * implementation only depends on LC_CTYPE categoly (of cource
+ * LC_ALL includes this), This must be harmless and might let the
+ * Tcl and the Tk with XIM be both happy :)
+ *
+ */
+#endif /* !I18N_IMPROVE */
/*
* In case the initial locale is not "C", ensure that the numeric