From 199c1fb12767c9ef58c43b56f33ca3113eb738ab Mon Sep 17 00:00:00 2001 From: dgp Date: Sat, 4 Dec 2004 21:19:15 +0000 Subject: * generic/tclEncoding.c: Different fix for [Bug 1077005]. * generic/tclEvent.c: Broke apart TclpSetInitialEncodings() on * generic/tclInt.h: Windows into TclpSetInterfaces(), that is * unix/tclUnixInit.c: fundamentally essential, and the initialization * win/tclWinInit.c: of the system encoding, which is not. Made the TclpSetInterfaces call part of TclInitSubsystems so it cannot be overlooked. --- ChangeLog | 10 ++++++++++ generic/tclEncoding.c | 4 ++-- generic/tclEvent.c | 3 ++- generic/tclInt.h | 3 ++- unix/tclUnixInit.c | 8 +++++++- win/tclWinInit.c | 17 +++++++++++------ 6 files changed, 34 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index e6b86f3..593f81f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-12-04 Don Porter + + * generic/tclEncoding.c: Different fix for [Bug 1077005]. + * generic/tclEvent.c: Broke apart TclpSetInitialEncodings() on + * generic/tclInt.h: Windows into TclpSetInterfaces(), that is + * unix/tclUnixInit.c: fundamentally essential, and the initialization + * win/tclWinInit.c: of the system encoding, which is not. Made + the TclpSetInterfaces call part of TclInitSubsystems so it cannot be + overlooked. + 2004-12-03 Jeff Hobbs * changes: updated for 8.5a2 release diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 3cbf450..a525283 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.30 2004/12/02 23:24:57 dgp Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.31 2004/12/04 21:19:18 dgp Exp $ */ #include "tclInt.h" @@ -513,7 +513,6 @@ TclInitEncodingSubsystem() Tcl_CreateEncoding(&type); encodingsInitialized = 1; - TclpSetInitialEncodings(); } /* @@ -1303,6 +1302,7 @@ Tcl_FindExecutable(argv0) * (native). */ { TclInitSubsystems(); + TclpSetInitialEncodings(); TclpFindExecutable(argv0); } diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 62a2f3b..5a734c4 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEvent.c,v 1.54 2004/12/01 23:18:50 dgp Exp $ + * RCS: @(#) $Id: tclEvent.c,v 1.55 2004/12/04 21:19:18 dgp Exp $ */ #include "tclInt.h" @@ -801,6 +801,7 @@ TclInitSubsystems() TclInitObjSubsystem(); /* register obj types, create mutexes */ TclInitIOSubsystem(); /* inits a tsd key (noop) */ TclInitEncodingSubsystem(); /* process wide encoding init */ + TclpSetInterfaces(); TclInitNamespaceSubsystem(); /* register ns obj type (mutexed) */ } TclpInitUnlock(); diff --git a/generic/tclInt.h b/generic/tclInt.h index dbfe454..e7c400f 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.202 2004/12/01 23:18:51 dgp Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.203 2004/12/04 21:19:18 dgp Exp $ */ #ifndef _TCLINT @@ -1962,6 +1962,7 @@ MODULE_SCOPE void TclpPanic _ANSI_ARGS_(TCL_VARARGS(CONST char *, MODULE_SCOPE char * TclpReadlink _ANSI_ARGS_((CONST char *fileName, Tcl_DString *linkPtr)); MODULE_SCOPE void TclpReleaseFile _ANSI_ARGS_((TclFile file)); +MODULE_SCOPE void TclpSetInterfaces (); MODULE_SCOPE void TclpSetVariables _ANSI_ARGS_((Tcl_Interp *interp)); MODULE_SCOPE void TclpUnloadFile _ANSI_ARGS_(( Tcl_LoadHandle loadHandle)); diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index 4dd3208..1fcae33 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclUnixInit.c,v 1.53 2004/11/30 19:34:51 dgp Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.54 2004/12/04 21:19:19 dgp Exp $ */ #include "tclInt.h" @@ -583,6 +583,12 @@ TclpSetInitialEncodings() Tcl_DStringFree(&encodingName); } +void +TclpSetInterfaces() +{ + /* do nothing */ +} + CONST char * TclpGetEncodingNameFromEnvironment(bufPtr) Tcl_DString *bufPtr; diff --git a/win/tclWinInit.c b/win/tclWinInit.c index 0b54cdb..d8d4fc9 100644 --- a/win/tclWinInit.c +++ b/win/tclWinInit.c @@ -7,7 +7,7 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclWinInit.c,v 1.64 2004/11/30 19:34:52 dgp Exp $ + * RCS: @(#) $Id: tclWinInit.c,v 1.65 2004/12/04 21:19:19 dgp Exp $ */ #include "tclWinInt.h" @@ -441,17 +441,22 @@ TclWinEncodingsCleanup() void TclpSetInitialEncodings() { - int platformId, useWide; Tcl_DString encodingName; + + TclpSetInterfaces(); + Tcl_SetSystemEncoding(NULL, + TclpGetEncodingNameFromEnvironment(&encodingName)); + Tcl_DStringFree(&encodingName); +} +void +TclpSetInterfaces() +{ + int platformId, useWide; platformId = TclWinGetPlatformId(); useWide = ((platformId == VER_PLATFORM_WIN32_NT) || (platformId == VER_PLATFORM_WIN32_CE)); TclWinSetInterfaces(useWide); - - Tcl_SetSystemEncoding(NULL, - TclpGetEncodingNameFromEnvironment(&encodingName)); - Tcl_DStringFree(&encodingName); } CONST char * -- cgit v0.12