summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2013-03-25 15:00:55 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2013-03-25 15:00:55 (GMT)
commiteecece2afea26aec8b61ab04a7887c203257e82a (patch)
tree0f76692abf509a4e295f32d3d9f815b06359b337
parent74c7068a25b9ffb11b2857b837bf95f6e645a327 (diff)
downloadtcl-eecece2afea26aec8b61ab04a7887c203257e82a.zip
tcl-eecece2afea26aec8b61ab04a7887c203257e82a.tar.gz
tcl-eecece2afea26aec8b61ab04a7887c203257e82a.tar.bz2
TCL_INIT_ENCODINGPATH
-rw-r--r--generic/tcl.h1
-rw-r--r--generic/tclEncoding.c7
2 files changed, 8 insertions, 0 deletions
diff --git a/generic/tcl.h b/generic/tcl.h
index e89dff8..eda9eb9 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -2412,6 +2412,7 @@ const char * TclTomMathInitializeStubs(Tcl_Interp *interp,
/* Tcl_InitSubsystems, see TIP 414 */
#define TCL_INIT_PANIC (1) /* Set Panic proc */
+#define TCL_INIT_ENCODINGPATH (2) /* Set encoding path */
#define TCL_INIT_CREATE (48) /* Call Tcl_CreateInterp(), and set argc/argv */
#define TCL_INIT_CREATE_UNICODE (16) /* The same, but argv is in unicode */
#define TCL_INIT_CREATE_UTF8 (32) /* The same, but argv is in utf-8 */
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c
index dbe747b..dfcca14 100644
--- a/generic/tclEncoding.c
+++ b/generic/tclEncoding.c
@@ -1448,11 +1448,15 @@ Tcl_InitSubsystems(int flags, ...)
va_list argList;
int argc = 0;
void **argv = NULL;
+ const char *encodingpath = NULL;
va_start(argList, flags);
if (flags & TCL_INIT_PANIC) {
Tcl_SetPanicProc(va_arg(argList, Tcl_PanicProc *));
}
+ if (flags & TCL_INIT_ENCODINGPATH) {
+ encodingpath = va_arg(argList, const char *);
+ }
if (flags & TCL_INIT_CREATE) {
argc = va_arg(argList, int);
argv = va_arg(argList, void **);
@@ -1460,6 +1464,9 @@ Tcl_InitSubsystems(int flags, ...)
va_end(argList);
TclInitSubsystems();
+ if(encodingpath) {
+ Tcl_SetEncodingSearchPath(Tcl_NewStringObj(encodingpath, -1));
+ }
TclpSetInitialEncodings();
TclpFindExecutable(argv ? argv[0] : NULL);
if (flags & TCL_INIT_CREATE) {