diff options
author | Kevin B Kenny <kennykb@acm.org> | 2003-02-13 23:49:47 (GMT) |
---|---|---|
committer | Kevin B Kenny <kennykb@acm.org> | 2003-02-13 23:49:47 (GMT) |
commit | bd6ef46ac1eac8105c432e3ae7fb7addd1efdc07 (patch) | |
tree | 9a331203e4909d4d93c1aab0699629312b9ca703 | |
parent | 5b22ab3651ec3142fdb0850737ffe806327489b8 (diff) | |
download | tcl-bd6ef46ac1eac8105c432e3ae7fb7addd1efdc07.zip tcl-bd6ef46ac1eac8105c432e3ae7fb7addd1efdc07.tar.gz tcl-bd6ef46ac1eac8105c432e3ae7fb7addd1efdc07.tar.bz2 |
Added conversion from the system encoding to tcl_platform(user), so
that it works with non-ASCII7 user names. [Bug 685926]
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | win/tclWinInit.c | 14 |
2 files changed, 15 insertions, 5 deletions
@@ -1,5 +1,11 @@ 2003-02-13 Kevin Kenny <kennykb@users.sourceforge.net> + * win/tclWinInit.c: Added conversion from the system encoding + to tcl_platform(user), so that it works with non-ASCII7 user names. + [Bug 685926] + +2003-02-13 Kevin Kenny <kennykb@users.sourceforge.net> + * doc/tclsh.1: Added language to describe the handling of the end-of-file character \u001a embedded in a script file. [Bug 685485] diff --git a/win/tclWinInit.c b/win/tclWinInit.c index bdfbc8f..a61d59a 100644 --- a/win/tclWinInit.c +++ b/win/tclWinInit.c @@ -7,12 +7,13 @@ * Copyright (c) 1998-1999 by Scriptics Corporation. * All rights reserved. * - * RCS: @(#) $Id: tclWinInit.c,v 1.38 2003/02/04 17:06:53 vincentdarley Exp $ + * RCS: @(#) $Id: tclWinInit.c,v 1.39 2003/02/13 23:49:48 kennykb Exp $ */ #include "tclWinInt.h" #include <winnt.h> #include <winbase.h> +#include <lmcons.h> /* * The following declaration is a workaround for some Microsoft brain damage. @@ -597,6 +598,8 @@ TclpSetVariables(interp) OemId *oemId; OSVERSIONINFOA osInfo; Tcl_DString ds; + TCHAR szUserName[ UNLEN+1 ]; + DWORD dwUserNameLen; osInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA); GetVersionExA(&osInfo); @@ -663,11 +666,12 @@ TclpSetVariables(interp) * faster than asking the system. */ - Tcl_DStringSetLength(&ds, 100); + Tcl_DStringInit( &ds ); if (TclGetEnv("USERNAME", &ds) == NULL) { - if (GetUserName(Tcl_DStringValue(&ds), (LPDWORD) &Tcl_DStringLength(&ds)) == 0) { - Tcl_DStringSetLength(&ds, 0); - } + + if ( GetUserName( szUserName, &dwUserNameLen ) != 0 ) { + Tcl_WinTCharToUtf( szUserName, dwUserNameLen, &ds ); + } } Tcl_SetVar2(interp, "tcl_platform", "user", Tcl_DStringValue(&ds), TCL_GLOBAL_ONLY); |