@@ -30,22 +30,32 @@ #ifndef MB_TASKMODAL # define MB_TASKMODAL 0 #endif /* MB_TASKMODAL */ #include "tclInt.h" + +#if defined(HAVE_TCL_GETENCODINGNAMEFROMENVIRONMENT) && defined(HAVE_TCL_SETSYSTEMENCODING) +# define TCLKIT_CAN_SET_ENCODING 1 +#endif +#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 85 +# define KIT_INCLUDES_PWB 1 +#endif +#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 86 +# define KIT_INCLUDES_ZLIB 1 +#endif #ifdef KIT_INCLUDES_ITCL Tcl_AppInitProc Itcl_Init; #endif #ifdef KIT_INCLUDES_MK4TCL Tcl_AppInitProc Mk4tcl_Init; #endif Tcl_AppInitProc Vfs_Init, Rechan_Init; -#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 85 +#ifdef KIT_INCLUDES_PWB Tcl_AppInitProc Pwb_Init; #endif -#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 86 +#ifdef KIT_INCLUDES_ZLIB Tcl_AppInitProc Zlib_Init; #endif #ifdef TCL_THREADS Tcl_AppInitProc Thread_Init; #endif @@ -162,22 +172,26 @@ tclExecutableName = strdup(Tcl_GetStringFromObj(execNameObj, &len)); } } int TclKit_AppInit(Tcl_Interp *interp) { +#ifdef TCLKIT_CAN_SET_ENCODING + Tcl_DString encodingName; +#endif + #ifdef KIT_INCLUDES_ITCL Tcl_StaticPackage(0, "Itcl", Itcl_Init, NULL); #endif #ifdef KIT_INCLUDES_MK4TCL Tcl_StaticPackage(0, "Mk4tcl", Mk4tcl_Init, NULL); #endif -#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 85 +#ifdef KIT_INCLUDES_PWB Tcl_StaticPackage(0, "pwb", Pwb_Init, NULL); #endif Tcl_StaticPackage(0, "rechan", Rechan_Init, NULL); Tcl_StaticPackage(0, "vfs", Vfs_Init, NULL); -#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 86 +#ifdef KIT_INCLUDES_ZLIB Tcl_StaticPackage(0, "zlib", Zlib_Init, NULL); #endif #ifdef TCL_THREADS Tcl_StaticPackage(0, "Thread", Thread_Init, NULL); #endif @@ -193,10 +207,18 @@ #ifdef _WIN32 Tcl_SetVar(interp, "tcl_rcFileName", "~/tclkitrc.tcl", TCL_GLOBAL_ONLY); #else Tcl_SetVar(interp, "tcl_rcFileName", "~/.tclkitrc", TCL_GLOBAL_ONLY); #endif + +#ifdef TCLKIT_CAN_SET_ENCODING + /* Set the encoding from the Environment */ + Tcl_GetEncodingNameFromEnvironment(&encodingName); + Tcl_SetSystemEncoding(NULL, Tcl_DStringValue(&encodingName)); + Tcl_SetVar(interp, "tclkit_system_encoding", Tcl_DStringValue(&encodingName), 0); + Tcl_DStringFree(&encodingName); +#endif /* Hack to get around Tcl bug 1224888. This must be run here and * in LibraryPathObjCmd because this information is needed both * before and after that command is run. */ SetExecName(interp);