2002-07-01 Joe English * doc/Access.3: * doc/AddErrInfo.3: * doc/Alloc.3: * doc/Backslash.3: * doc/CrtChannel.3: * doc/CrtSlave.3: * doc/Encoding.3: * doc/Eval.3: * doc/FileSystem.3: * doc/Notifier.3: * doc/OpenFileChnl.3: * doc/ParseCmd.3: * doc/RegExp.3: * doc/Tcl_Main.3: * doc/Thread.3: * doc/TraceCmd.3: * doc/Utf.3: * doc/WrongNumArgs.3: * doc/binary.n: * doc/clock.n: * doc/expr.n: * doc/fconfigure.n: * doc/glob.n: * doc/http.n: * doc/interp.n: * doc/lsearch.n: * doc/lset.n: * doc/msgcat.n: * doc/packagens.n: * doc/pkgMkIndex.n: * doc/registry.n: * doc/resource.n: * doc/safe.n: * doc/scan.n: * doc/tclvars.n: Spell-check, fixed typos (Updates from Larry Virden). 2002-07-01 Donal K. Fellows * unix/tcl.m4 (SC_CONFIG_CFLAGS): Made Solaris use gcc for linking when building with gcc to resolve problems with undefined symbols being present when tcl library used with non-gcc linker at later stage. Symbols were compiler-generated, so it is the compiler's business to define them. [Bug #541181] 2002-07-01 Don Porter * doc/tcltest.n: more work in progress updating tcltest docs. * library/tcltest/tcltest.tcl: Change [configure -match] to stop treating an empty list as a list of the single pattern "*". Changed the default value to [list *] so default operation remains the same. * tests/pkg/samename.tcl: restored. needed by pkgMkIndex.test. * library/tcltest/tcltest.tcl: restored writeability testing of -tmpdir, augmented by a special exception for the deafault value. 2002-07-01 Donal K. Fellows * doc/concat.n: Documented the *real* behaviour of [concat]! 2002-06-30 Don Porter * doc/tcltest.n: more work in progress updating tcltest docs. * tests/README: Updated the instructions on running and * tests/cmdMZ.test: adding to the test suite. Also updated * tests/encoding.test: several tests, mostly to correctly create * tests/fCmd.test: and destroy any temporary files in the * tests/info.test: [temporaryDirectory] of tcltest. * tests/interp.test: * library/tcltest/tcltest.tcl: Stopped checking for writeability of -tmpdir value because no default directory can be guaranteed to be writeable. * tests/autoMkindex.tcl: removed. * tests/pkg/samename.tcl: removed. * tests/pkg/magicchar.tcl: removed. * tests/pkg/magicchar2.tcl: removed. * tests/autoMkindex.test: Updated auto_mkIndex tests to use [makeFile] and [removeFile] so tests are done in [temporaryDirecotry] where write access is guaranteed. * library/tcltest/tcltest.tcl: Fixed [makeFile] and [viewFile] to * tests/cmdAH.test: accurately reflect a file's contents. * tests/event.test: Updated tests that depended on buggy * tests/http.test: behavior. Also added warning messages * tests/io.test: to "-debug 1" operations to debug test * tests/iogt.test: calls to (make|remove)(File|Directory). * unix/mkLinks: `make mklinks` on 6-27 commits. 2002-06-28 Miguel Sofer * generic/tclCompile.h: modified the macro TclEmitPush to not call its first argument repeatedly or pass it to other macros, [Bug 575194] reported by Peter Spjuth. 2002-06-28 Don Porter * docs/tcltest.n: Doc revisions in progress. * library/tcltest/tcltest.tcl: Corrected -testdir default value. Was not reliable, and disagreed with docs! Thanks to Hemang Lavana. [Bug 575150] 2002-06-28 Donal K. Fellows * unix/tclUnixThrd.c: Renamed the Tcl_Platform* #defines to * unix/tclUnixPipe.c: TclOS* because they are only used * unix/tclUnixFile.c: internally. Also stopped double-#def * unix/tclUnixFCmd.c: of TclOSlstat [Bug #566099, post-rename] * unix/tclUnixChan.c: * unix/tclUnixPort.h: * doc/string.n: Improved documentation for [string last] along lines described in Bug #574799 so it indicates that the supplied index marks the end of the search space. 2002-06-27 Don Porter * doc/dde.n: Work in progress updating the documentation * doc/http.n: of the packages that come bundled with * doc/msgcat.n: the Tcl source distribution, notably tcltest. * doc/registry.n: * doc/tcltest.n: * library/tcltest/tcltest.tcl: Made sure that the TCLTEST_OPTIONS environment variablle configures tcltest at package load time. 2002-06-26 Vince Darley * tests/fileSystem.test: * generic/tclIOUtil.c: fix to handling of empty paths "" which are not claimed by any filesystem (Bug #573758). Ensure good error messages are given in all cases. * tests/cmdAH.test: * unix/tclUnixFCmd.c: fix to bug reported as part of (Patch #566669). Thanks to Taguchi, Takeshi for the report. 2002-06-26 Reinhard Max * unix/tclUnixTime.c: Make [clock format] respect locale settings. * tests/clock.test: Bug #565880. ***POTENTIAL INCOMPATIBILITY*** 2002-06-26 Miguel Sofer * doc/CrtInterp.3: * doc/StringObj.3: clarifications by Don Porter, bugs #493995 and #500930. 2002-06-24 Don Porter * library/tcltest/tcltest.tcl: Corrected suppression of -verbose skip * tests/tcltest.test: and start by [test -output]. Also corrected test suite errors exposed by corrected code. [Bug 564656] 2002-06-25 Reinhard Max * unix/tcl.m4: New macro SC_CONFIG_MANPAGES. * unix/configure.in: Added support for symlinks and compression * unix/Makefile.in: when installing the manpages. [Patch 518052] * unix/mkLinks.tcl: Default is still hardlinks and no compression. * unix/mkLinks: generated * unix/configure: * unix/README: Added documentation for the new features. * unix/tcl.m4 (SC_PATH_TCLCONFIG): Replaced ${exec_prefix}/lib by ${libdir}. 2002-06-25 Donal K. Fellows * generic/tclUtil.c (TclGetIntForIndex): Fix of critical bug #533364 generated when the index is bad and the result is a shared object. The T_ASTO(T_GOR, ...) idiom likely exists elsewhere though. Also removed some cruft that just complicated things to no advantage. (SetEndOffsetFromAny): Same fix, though this wasn't on the path excited by the bug. 2002-06-24 Don Porter * library/tcltest/tcltest.tcl: Implementation of TIP 101. Adds * tests/parseOld.test: and exports a [configure] command * tests/tcltest.test: from tcltest. 2002-06-22 Don Porter * changes: updated changes file for 8.4b1 release. * library/tcltest/tcltest.tcl: Corrections to tcltest and the * tests/basic.test: Tcl test suite so that a test * tests/cmdInfo.test: with options -constraints knownBug * tests/compile.test: -limitConstraints 1 only tests the * tests/encoding.test: knownBug tests. Mostly involves * tests/env.test: replacing direct access to the * tests/event.test: testConstraints array with calls * tests/exec.test: to the testConstraint command * tests/execute.test: (which requires tcltest version 2) * tests/fCmd.test: * tests/format.test: * tests/http.test: * tests/httpold.test: * tests/ioUtil.test: * tests/link.test: * tests/load.test: * tests/namespace.test: * tests/pkgMkIndex.test: * tests/reg.test: * tests/result.test: * tests/scan.test: * tests/stack.test: 2002-06-22 Donal K. Fellows * tools/tcl.wse.in (Disk Label), unix/tcl.spec (version): * win/README.binary, README, win/configure.in, unix/configure.in: * generic/tcl.h (TCL_RELEASE_*, TCL_PATCH_LEVEL): Bump to beta1. 2002-06-21 Joe English * generic/tclCompExpr.c: * generic/tclParseExpr.c: LogSyntaxError() should reset the interpreter result [Bug 550142 "Tcl_ExprObj -> abort"] 2002-06-21 Don Porter * unix/Makefile.in: Updated all package install directories * win/Makefile.in: to match current Major.minor versions * win/makefile.bc: of the packages. Added tcltest package * win/makefile.vc: to installation on Windows. * library/init.tcl: Corrected comments and namespace style issues. Thanks to Bruce Stephens. [Bug 572025] 2002-06-21 Vince Darley * tests/cmdAH.test: Added TIP#99 implementation * tests/fCmd.test: of 'file link'. Supports creation * tests/fileName.test: of symbolic and hard links in the * tests/fileSystem.test: native filesystems and in vfs's, * generic/tclTest.c: when the individual filesystem * generic/tclCmdAH.c: supports the concept. * generic/tclIOUtil.c: * generic/tcl.h: * generic/tcl.decls: * doc/FileSystem.3: * doc/file.n: * mac/tclMacFile.c: * unix/tclUnixFile.c: * win/tclWinFile.c: Also enhanced speed of 'file normalize' on Windows. 2002-06-20 Miguel Sofer * generic/tclBasic.c (TclEvalObjvInternal): fix for [Bug 571385] in the implementation of TIP#62 (command tracing). Vince Darley, Hemang Lavana & Don Porter: thanks. 2002-06-20 Miguel Sofer * generic/tclExecute.c (TclCompEvalObj): clarified and simplified the logic for compilation/recompilation. 2002-06-19 Joe English * doc/file.n: Fixed indentation. No substantive changes. 2002-06-19 Jeff Hobbs * generic/tclCmdMZ.c (Tcl_RegexpObjCmd): get the resultPtr again as the Tcl_ObjSetVar2 may cause the result to change. [Patch #558324] (watson) 2002-06-19 Miguel Sofer * generic/tclExecute.c (TEBC): removing unused "for(;;)" loop; improved comments; re-indentation. 2002-06-18 Miguel Sofer * generic/tclExecute.c (TEBC): - elimination of duplicated code in the non-immediate INST_INCR instructions. - elimination of 103 (!) TclDecrRefCount macros. The different instructions now jump back to a common "DecrRefCount zone" at the top of the loop. The macro "ADJUST_PC" was replaced by two macros "NEXT_INST_F" and "NEXT_INST_V" that take three params (pcAdjustment, # of stack objects to discard, resultObjPtr handling flag). The only instructions that retain a TclDecrRefCount are INST_POP (for speed), the common code for the non-immediate INST_INCR, INST_FOREACH_STEP and the two INST_LSET. The object size of tclExecute.o was reduced by approx 20% since the start of the consolidation drive, while making room for some peep-hole optimisation at runtime. 2002-06-18 Miguel Sofer * generic/tclExecute.c (TEBC, INST_DONE): small bug in the panic code for tcl-stack corruption. 2002-06-17 David Gravereaux Trims to support the removal of RESOURCE_INCLUDED from rc scripts from FR #565088. * generic/tcl.h: moved the #ifndef RC_INVOKED start block up in the file. rc scripts don't need to know thread mutexes. * win/tcl.rc: * win/tclsh.rc: removed the #define RESOURCE_INCLUDED to let the built-in -DRC_INVOKED to the work. 2002-06-17 Jeff Hobbs * doc/CrtTrace.3: Added TIP#62 implementation of command * doc/trace.n: execution tracing [FR #462580] (lavana). * generic/tcl.h: This includes enter/leave tracing as well * generic/tclBasic.c: as inter-procedure stepping. * generic/tclCmdMZ.c: * generic/tclCompile.c: * generic/tclExecute.c: * generic/tclInt.decls: * generic/tclInt.h: * generic/tclIntDecls.h: * generic/tclStubInit.c: * generic/tclVar.c: * tests/trace.test: 2002-06-17 Andreas Kupries * win/tclWinPipe.c (BuildCommandLine): Fixed bug #554068 ([exec] on windows did not treat { in filenames well.). Bug reported by Vince Darley , patch provided by Vince too. 2002-06-17 Joe English * generic/tcl.h: #ifdef logic for K&R C backwards compatibility changed to assume modern C by default. See SF FR #565088 for full details. 2002-06-17 Don Porter * doc/msgcat.n: Corrected en_UK references to en_GB. UK is not a country designation recognized in ISO 3166. * library/msgcat/msgcat.tcl: More Windows Registry locale codes from Bruno Haible. * doc/msgcat.n: * library/msgcat/msgcat.tcl: * library/msgcat/pkgIndex.tcl: * tests/msgcat.test: Revised locale initialization to interpret environment variable locale values according to XPG4, and to recognize the LC_ALL and LC_MESSAGES values over that of LANG. Also added many Windows Registry locale values to those recognized by msgcat. Revised tests and docs. Bumped to version 1.3. Thanks to Bruno Haible for the report and assistance crafting the solution. [Bug 525522, 525525] 2002-06-16 Miguel Sofer * generic/tclCompile.c (TclCompileTokens): a better algorithm for the previous bug fix. 2002-06-16 Miguel Sofer * generic/tclCompile.c (TclCompileTokens): * tests/compile.test: [Bug 569438] in the processing of dollar variables; report by Georgios Petasis. 2002-06-16 Miguel Sofer * generic/tclExecute.c: bug in the consolidation of the INCR_..._STK instructions; the bug could not be exercised as the (faulty) instruction INST_INCR_ARRAY_STK was never compiled-in (related to [Bug 569438]). 2002-06-14 Miguel Sofer * generic/tclExecute.c (TclExecuteByteCode): runtime peep-hole optimisation of variables (INST_STORE, INST_INCR) and commands (INST_INVOKE); faster check for the existence of a catch. (TclExecuteByteCode): runtime peep-hole optimisation of comparisons. (TclExecuteByteCode): runtime peep-hole optimisation of INST_FOREACH - relies on peculiarities of the code produced by the bytecode compiler. 2002-06-14 David Gravereaux * win/rules.vc: The test for compiler optimizations was in error. Thanks goes to Roy Terry for his assistance with this. 2002-06-14 Donal K. Fellows * doc/trace.n, tests/trace.test: * generic/tclCmdMZ.c (Tcl_TraceObjCmd,TclTraceCommandObjCmd) (TclTraceVariableObjCmd): Changed references to "trace list" to "trace info" as mandated by TIP#102. 2002-06-13 Miguel Sofer * generic/tclExecute.c (TclExecuteByteCode): consolidated code for the conditional branch instructions. 2002-06-13 Miguel Sofer * generic/tclExecute.c (TclExecuteByteCode): fixed the previous patch - wouldn't compile with TCL_COMPILE_DEBUG set. 2002-06-13 Miguel Sofer * generic/tclExecute.c (TclExecuteByteCode): consolidated the handling of exception returns to INST_INVOKE and INST_EVAL, as well as most of the code for INST_CONTINUE and INST_BREAK, in the new jump target "processExceptionReturn". 2002-06-13 Miguel Sofer * generic/tclExecute.c (TclExecuteByteCode): consolidated variable handling opcodes, replaced redundant code with some 'goto'. All store/append/lappend opcodes on the same data type now share the main code; same with incr opcodes. * generic/tclVar.c: added the bit TCL_TRACE_READS to the possible flags to Tcl_SetVar2Ex - it causes read traces to be fired prior to setting the variable. This is used in the core for [lappend]. ***NOTE*** the usage of TCL_TRACE_READS in Tcl_(Obj)?GetVar.* is not documented; there, it causes the call to create the variable if it does not exist. The new usage in Tcl_(Obj)?SetVar.* remains undocumented too ... 2002-06-13 Vince Darley * tests/fCmd.test: * tests/winFile.test: * tests/fileSystem.test: * generic/tclTest.c: * generic/tclCmdAH.c: * generic/tclIOUtil.c: * doc/FileSystem.3: * mac/tclMacFile.c: * unix/tclUnixFile.c: * win/tclWinFile.c: fixed up further so both compiles and actually works with VC++ 5 or 6. * win/tclWinInt.h: * win/tclWin32Dll.c: cleaned up code and vfs tests and added tests for the internal changes of 2002-06-12, to see whether WinTcl on NTFS can coexist peacefully with links in the filesystem. Added new test command 'testfilelink' to enable the newer code to be tested. * tests/fCmd.test: (made certain tests of 'testfilelink' not run on unix). 2002-06-12 Miguel Sofer * tclBasic.c (Tcl_DeleteTrace): fixed [Bug 568123] (thanks to Hemang Lavana) 2002-06-12 Jeff Hobbs * win/tclWinFile.c: corrected the symbolic link handling code to allow it to compile. Added real definition of REPARSE_DATA_BUFFER (found in winnt.h). Most of the added definitions appear to have correct, cross-Win-version equivalents in winnt.h and should be removed, but just making things "work" for now. 2002-06-12 Vince Darley * generic/tclIOUtil.c: * generic/tcl.decls: * generic/tclDecls.h: made code for Tcl_FSNewNativePath agree with man pages. * doc/FileSystem.3: clarified the circumstances under which certain functions are called in the presence of symlinks. * win/tclWinFile.c: * win/tclWinPort.h: * win/tclWinInt.h: * win/tclWinFCmd.c: Fix for Windows to allow 'file lstat', 'file type', 'glob -type l', 'file copy', 'file delete', 'file normalize', and all VFS code to work correctly in the presence of symlinks (previously Tcl's behaviour was not very well defined). This also fixes possible serious problems in all versions of WinTcl where 'file delete' on a NTFS symlink could delete the original, not the symlink. Note: symlinks cannot yet be created in pure Tcl. 2002-06-11 Miguel Sofer * generic/tclBasic.c: * generic/tclCompCmds.c: * generic/tclInt.h: reverted the new compilation functions; replaced by a more general approach described below. * generic/tclCompCmds.c: * generic/tclCompile.c: made *all* compiled variable access attempts create an indexed variable - even get or incr without previous set. This allows indexed access to local variables that are created and set at runtime, for example by [global], [upvar], [variable], [regexp], [regsub]. 2002-06-11 Miguel Sofer * doc/global.n: * doc/info.n: * test/info.test: * generic/tclCmdIL.c: fix for [Bug 567386], [info locals] was reporting some linked variables. * generic/tclBasic.c: * generic/tclCompCmds.c: * generic/tclInt.h: added compile functions for [global], [variable] and [upvar]. They just declare the new local variables, the commands themselves are not compiled-in. This gives a notably faster read access to these linked variables. 2002-06-11 Miguel Sofer * generic/tclExecute.c: optimised algorithm for exception range lookup; part of [Patch 453709]. 2002-06-10 Vince Darley * unix/tclUnixFCmd.c: fixed [Bug #566669] * generic/tclIOUtil.c: improved and sped up handling of native paths (duplication and conversion to normalized paths), particularly on Windows. * modified part of above commit, due to problems on Linux. Will re-examine bug report and evaluate more closely. 2002-06-07 Don Porter * tests/tcltest.test: More corrections to test suite so that tests of failing [test]s don't show up themselves as failing tests. 2002-06-07 Donal K. Fellows * generic/tclExecute.c: Tidied up headers in relation to float.h to cut the cruft and ensure DBL_MAX is defined since doubles seem to be the same size everywhere; if the assumption isn't true, the variant platforms had better have run configure... * unix/tclUnixPort.h (EOVERFLOW): Added code to define it if it wasn't previously defined. Also some other general tidying and adding of comments. [Tcl bugs 563122, 564595] * compat/tclErrno.h: Added definition for EOVERFLOW copied from Solaris headers; I've been unable to find any uses of EFTYPE, which was the error code previously occupying the slot, in Tcl, or any definition of it in the Solaris headers. 2002-06-06 Mo DeJong * unix/dltest/Makefile.in: Remove hard coded CFLAGS=-g and add CFLAGS_DEBUG, CFLAGS_OPTIMIZE, and CFLAGS_DEFAULT varaibles. [Tcl bug 565488] 2002-06-06 Don Porter * tests/tcltest.test: Corrections to test suite so that tests of failing [test]s don't show up themselves as failing tests. * tests/io.test: Fixed up namespace variable resolution issues revealed by running test suite with "-singleproc 1". * doc/tcltest.n: * library/tcltest/tcltest.tcl: * tests/tcltest.test: Several updates to tcltest. 1) changed to lazy initialization of test constraints 2) deprecated [initConstraintsHook] 3) repaired badly broken [limitConstraints]. 4) deprecated [threadReap] and [mainThread] [Patch 512214, Bug 558742, Bug 461000, Bug 534903] 2002-06-06 Daniel Steffen * unix/tclUnixThrd.c (TclpReaddir, TclpLocaltime, TclpGmtime): added mutex wrapped calls to readdir, localtime & gmtime in case their thread-safe *_r counterparts are not available. * unix/tcl.m4: added configure check for readdir_r * unix/tcl.m4 (Darwin): set TCL_DEFAULT_ENCODING to utf-8 on MacOSX (where posix file apis expect utf-8, not iso8859-1). * unix/configure: regen * unix/Makefile.in: set DYLD_LIBRARY_PATH in parallel to LD_LIBRARY_PATH for MacOSX dynamic linker. * generic/tclEnv.c (TclSetEnv): fix env var setting on MacOSX (adapted from patch #524352 by jkbonfield). 2002-06-05 Don Porter * doc/Tcl_Main.3: Documented $tcl_rcFileName and added more clarifications about the intended use of Tcl_Main(). [Bug 505651] 2002-06-05 Daniel Steffen * generic/tclFileName.c (TclGlob): mac specific fix to recent changes in 'glob -tails' handling. * mac/tclMacPort.h: * mac/tclMacChan.c: fixed TIP#91 bustage. * mac/tclMacResource.c (Tcl_MacConvertTextResource): added utf conversion of text resource contents. * tests/macFCmd.test (macFCmd-1.2): allow CWIE creator. 2002-06-04 Don Porter * library/tcltest/tcltest.tcl: * tests/init.test: * tests/tcltest.test: Added more TIP 85 tests from Arjen Markus. Converted tcltest.test to use a private namespace. Fixed bugs in [tcltest::Eval] revealed by calling [tcltest::test] from a non-global namespace, and namespace errors in init.test. 2002-06-04 Mo DeJong * win/README: Update msys+mingw URL. 2002-06-03 Don Porter * doc/tcltest.n: * library/tcltest/tcltest.tcl: * library/tcltest/pkgIndex.tcl: * tests/tcltest.test: Implementation of TIP 85. Allows tcltest users to add new legal values of the -match option to [test], associating each with a Tcl command that does the matching of expected results with actual results of tests. Thanks to Arjen Markus. => tcltest 2.1 [Patch 521362] 2002-06-03 Miguel Sofer * doc/namespace.n: added description of [namepace forget] behaviour for unqualified patterns [Bug 559268] 2002-06-03 Miguel Sofer * generic/tclExecute.c: reverting an accidental modification in the last commit. 2002-06-03 Miguel Sofer * doc/Tcl.n: clarify the empty variable name issue ([Bug 549285] reported by Tom Krehbiel, patch by Don Porter). 2002-05-31 Don Porter * library/package.tcl: Fixed leak of slave interp in [pkg_mkIndex]. Thanks to Helmut for report. [Bug 550534] * tests/io.test: * tests/main.test: Use the "stdio" constraint to control whether an [open "|[interpreter]"] is attempted. * generic/tclExecute.c (TclMathInProgress,TclExecuteByteCode ExprCallMathFunc): * generic/tclInt.h (TclMathInProgress): * unix/Makefile.in (tclMtherr.*): * unix/configure.in (NEED_MATHERR): * unix/tclAppInit.c (matherr): * unix/tclMtherr.c (removed file): * win/tclWinMtherr.c (_matherr): Removed internal routine TclMathInProgress and Unix implementation of matherr(). These are now obsolete, dealing with very old versions of the C math library. Windows version is retained in case Borland compilers require it, but it is inactive. Thanks to Joe English. [Bug 474335, Patch 555635]. * unix/configure: regen 2002-05-30 Miguel Sofer * generic/tclCompExpr.c: * generic/tclCompile.c: * generic/tclCompile.h: removed exprIsJustVarRef and exprIsComparison from the ExprInfo and CompileEnv structs. These were set, but not used since dec 1999 [Bug 562383]. 2002-05-30 Vince Darley * generic/tclFileName.c (TclGlob): fix to longstanding 'knownBug' in fileName tests 15.2-15.4, and fix to a new Tcl 8.4 bug in certain uses of 'glob -tails'. * tests/fileName.test: removed 'knownBug' flag from some tests, added some new tests for above bugs. 2002-05-29 Jeff Hobbs * unix/configure: regen'ed * unix/configure.in: replaced bigendian check with autoconf standard AC_C_BIG_ENDIAN, which defined WORDS_BIGENDIAN on bigendian systems. * generic/tclUtf.c (Tcl_UniCharNcmp): * generic/tclInt.h (TclUniCharNcmp): use WORDS_BIGENDIAN instead of TCL_OPTIMIZE_UNICODE_COMPARE to enable memcmp alternative. * generic/tclExecute.c (TclExecuteByteCode INST_STR_CMP): * generic/tclCmdMZ.c (Tcl_StringObjCmd): changed the case for choosing the Tcl_UniCharNcmp compare to when both objs are of StringType, as benchmarks show that is the optimal check (both bigendian and littleendian systems). 2002-05-29 Don Porter * generic/tclMain.c: Removed "dummy" reference to Tcl_LinkVar. It is no longer needed since Tcl_Main() now actually calls Tcl_LinkVar(). Thanks to Joe English for pointing that out. 2002-05-29 Donal K. Fellows * generic/tclExecute.c (TclExecuteByteCode): * generic/tclCmdMZ.c (Tcl_StringObjCmd): Use the macro version. * generic/tclInt.h (TclUniCharNcmp): Optimised still further with a macro for use in sensitive places like tclExecute.c * generic/tclUtf.c (Tcl_UniCharNcmp): Use new flag to figure out when we can use an optimal comparison scheme, and default to the old scheme in other cases which is at least safe. * unix/configure.in (TCL_OPTIMIZE_UNICODE_COMPARE): New optional flag that indicates when we can use memcmp() to compare Unicode strings (i.e. when the high-byte of a Tcl_UniChar precedes the low-byte.) 2002-05-29 Jeff Hobbs * generic/tclInt.decls: * generic/tclIntDecls.h: * generic/tclStubInit.c: * generic/tclUtf.c: added TclpUtfNcmp2 private command that mirrors Tcl_UtfNcmp, but takes n in bytes, not utf-8 chars. This provides a faster alternative for comparing utf strings internally. (Tcl_UniCharNcmp, Tcl_UniCharNcasecmp): removed the explicit end of string check as it wasn't correct for the function (by doc and logic). * generic/tclCmdMZ.c (Tcl_StringObjCmd): reworked the string equal comparison code to use TclpUtfNcmp2 as well as short-circuit for equal objects or unequal length strings in the equal case. Removed the use of goto and streamlined the other parts. * generic/tclExecute.c (TclExecuteByteCode): added check for object equality in the comparison instructions. Added short-circuit for != length strings in INST_EQ, INST_NEQ and INST_STR_CMP. Reworked INST_STR_CMP to use TclpUtfNcmp2 where appropriate, and only use Tcl_UniCharNcmp when at least one of the objects is a Unicode obj with no utf bytes. * generic/tclCompCmds.c (TclCompileStringCmd): removed error creation in code that no longer throws an error. * tests/string.test: * tests/stringComp.test: added more string comparison checks. * tests/clock.test: better qualified 9.1 constraint check for %s. 2002-05-28 Jeff Hobbs * generic/tclThreadAlloc.c (TclpRealloc, TclpFree): protect against the case when NULL is based. * tests/clock.test: added clock-9.1 * compat/strftime.c: * generic/tclClock.c: * generic/tclInt.decls: * generic/tclIntDecls.h: * unix/tclUnixTime.c: fix for Windows msvcrt mem leak caused by using an env(TZ) setting trick for in clock format -gmt 1. This also makes %s seem to work correctly with -gmt 1 as well as making it a lot faster by avoid the env(TZ) hack. TclpStrftime now takes useGMT as an arg. [Bug #559376] 2002-05-28 Vince Darley * generic/tclIOUtil.c: fixes to Tcl_FSLoadFile when called on a file inside a vfs. This should avoid leaving temporary files sitting around on exit. [Bug #545579] 2002-05-27 Donal K. Fellows * win/tclWinError.c: Added comment on conversion of ERROR_NEGATIVE_SEEK because that is a mapping that really belongs, and not a catch-all case. * win/tclWinPort.h (EOVERFLOW): Should be either EFBIG or EINVAL * generic/tclPosixStr.c (Tcl_ErrnoId, Tcl_ErrnoMsg): EOVERFLOW can potentially be a synonym for EINVAL. 2002-05-24 Donal K. Fellows === Changes due to TIP#91 === * win/tclWinPort.h: Added declaration of EOVERFLOW. * doc/CrtChannel.3: Added documentation of wideSeekProc. * generic/tclIOGT.c (TransformSeekProc, TransformWideSeekProc): Adapted to use the new channel mechanism. * unix/tclUnixChan.c (FileSeekProc, FileWideSeekProc): Renamed FileSeekProc to FileWideSeekProc and created new FileSeekProc which has the old-style interface and which errors out with EOVERFLOW when the returned file position can't fit into the return type (int for historical reasons.) * win/tclWinChan.c (FileSeekProc, FileWideSeekProc): Renamed FileSeekProc to FileWideSeekProc and created new FileSeekProc which has the old-style interface and which errors out with EOVERFLOW when the returned file position can't fit into the return type (int for historical reasons.) * mac/tclMacChan.c (FileSeek): Reverted to old interface; Macs lack large-file support because I can't see how to add it. * generic/tclIO.c (Tcl_Seek, Tcl_Tell): Given these functions knowledge of the new arrangement of channel types. (Tcl_ChannelVersion): Added recognition of new version code. (HaveVersion): New function to do version checking. (Tcl_ChannelBlockModeProc, Tcl_ChannelFlushProc) (Tcl_ChannelHandlerProc): Made these functions use HaveVersion for ease of future maintainability. (Tcl_ChannelBlockModeProc): Obvious lookup function. * generic/tcl.h (Tcl_ChannelType): New wideSeekProc field, and seekProc type restored to old interpretation. (TCL_CHANNEL_VERSION_3): New channel version. 2002-05-24 Andreas Kupries * tests/winPipe.test: Applied patch for SF Tcl Bug #549617. Patch and bug report by Kevin Kenny . * win/tclWinSock.c (TcpWatchProc): Fixed SF Tcl Bug #557878. We are not allowed to mess with the watch mask if the socket is a server socket. I believe that the original reporter is George Peter Staplin. 2002-05-21 Mo DeJong * unix/configure: Regen. * unix/configure.in: Invoke SC_ENABLE_SHARED before calling SC_CONFIG_CFLAGS so that the SHARED_BUILD variable can be checked inside SC_CONFIG_CFLAGS. * unix/tcl.m4 (SC_CONFIG_CFLAGS): Pass -non_shared instead of -shared to ld when configured with --disable-shared under OSF. [Tcl bug 540390] 2002-05-20 Daniel Steffen * generic/tclInt.h: added prototype for TclpFilesystemPathType(). * mac/tclMacChan.c: use MSL provided creator type if available instead of the default 'MPW '. 2002-05-16 Joe English * doc/CrtObjCmd.3: Added Tcl_GetCommandFromObj, Tcl_GetCommandFullName (Tcl Bug #547987, #414921) 2002-05-14 Donal K. Fellows * unix/tclUnixChan.c (TtyOutputProc): #if/#endif-ed this function out to stop compiler warnings. Also much general tidying of comments in this file and removal of whitespace from blank lines. 2002-05-13 Donal K. Fellows * unix/tclUnixChan.c (SETBREAK): Solaris thinks ioctl() takes a signed second argument, and Linux thinks ioctl() takes an unsigned second argument. So need a longer definition of this macro to get neither to spew warnings... 2002-05-13 Vince Darley * generic/tclEvent.c: * generic/tclIOUtil.c: * generic/tclInt.h: clean up all memory allocated by the filesystem, via introduction of 'TclFinalizeFilesystem'. Move TclFinalizeLoad into TclFinalizeFilesystem so we can be sure it is called at just the right time. Fix bad comment also. [Bug #555078 and 'fs' part of #543549] * win/tclWinChan.c: fix comment referring to wrong function. 2002-05-10 Don Porter * tests/load.test: * tests/safe.test: * tests/tcltest.test: Corrected some list-quoting issues and other matters that cause tests to fail when the patch includes special characters. Report from Vince Darley. [Bug 554068]. 2002-05-08 David Gravereaux * doc/file.n: * tools/man2tcl.c: * tools/man2help2.tcl: Thanks to Peter Spjuth , again. My prior fix for single-quote macro mis-understanding was wrong. Reverted to reimpliment the 'macro2' proc which handles single-quote macros and restored file.n text arrangement to avoid single-quotes on the first line. Sorry for all the confusion. 2002-05-08 David Gravereaux * tools/man2tcl.c: * tools/man2help2.tcl: Proper source of macro error mis- understanding single-quote as the leading macro command found and repaired. * doc/file.n: Reverted to prior state before I messed with it. 2002-05-08 Don Porter * library/tcltest/tcltest.tcl: Corrected [uplevel] quoting when [source]-ing test script in subdirectories. * tests/fileName.test: * tests/load.test: * tests/main.test: * tests/tcltest.test: * tests/unixInit.test: Fixes to test suite when there's a space in the working path. Thanks to Kevin Kenny. 2002-05-07 David Gravereaux -- Changes from Peter Spjuth * tools/man2tcl.c: Increased line buffer size and a bail-out if that should ever be over-run. * tools/man2help.tcl: Include Courier New font in rtf header. * tools/man2help2.tcl: Improved handling of CS/CE fields. Use Courier New for code samples and indent better. * doc/file.n: * doc/TraceCmd.3: winhelp conversion tools where understanding a ' as the first character on a line to be an unknown macro. Not knowing how to repair tools/man2tcl.c, I decided to rearrange the text in the docs instead. 2002-05-07 Vince Darley * generic/tclFileName.c: fix to similar segfault when using 'glob -types nonsense -dir dirname -join * *'. [Bug 553320] * doc/FileSystem.3: further documentation on vfs. * tests/cmdAH.test: * tests/fileSystem.test: * tests/pkgMkindex.test: Fix to testsuite bugs when running out of directory whose name contains '{' or '['. 2002-05-07 Miguel Sofer * tests/basic.test: Fix for [Bug 549607] * tests/encoding.test: Fix for [Bug 549610] These are testsuite bugs that caused failures when the filename contained spaces. Report & fix by Kevin Kenny. 2002-05-02 Vince Darley * generic/tclFileName.c: fix to freeing a bad object (i.e. segfault) when using 'glob -types nonsense -dir dirname'. * generic/tclWinFile.c: fix to [Bug 551306], also wrapped some long lines. * tests/fileName.test: added several tests for the above bugs. * doc/FileSystem.3: clarified documentation on refCount requirements of the object returned by the path type function. * generic/tclIOUtil.c: * win/tclWinFile.c: * unix/tclUnixFile.c: * mac/tclMacFile.c: moved TclpFilesystemPathType to the platform specific directories, so we can add missing platform- specific implementations. On Windows, 'file system' now returns useful results like "native NTFS", "native FAT" for that system. Unix and MacOS still only return "native". * doc/file.n: clarified documentation. * tests/winFile.test: test for 'file system' returning correct values. * tests/fileSystem.test: test for 'file system' returning correct values. Clean up after failed previous test run. 2002-04-26 Jeff Hobbs * unix/configure: * unix/tcl.m4: change HP-11 SHLIB_LD_LIBS from "" to ${LIBS} so that the .sl knows its dependent libs. 2002-04-26 Donal K. Fellows * tests/obj.test (obj-11.[56]): Test conversion to boolean more thoroughly. * generic/tclObj.c (SetBooleanFromAny): Was not calling an integer parsing function on native 64-bit platforms! [Bug 548686] 2002-04-24 Jeff Hobbs * generic/tclInt.h: corrected TclRememberJoinableThread decl to use VOID instead of void. * generic/tclThreadJoin.c: noted that this code isn't needed on Unix. 2002-04-23 Jeff Hobbs * doc/exec.n: * doc/tclvars.n: doc updates [Patch #509426] (gravereaux) 2002-04-24 Daniel Steffen * mac/tclMacResource.r: added check of TCLTK_NO_LIBRARY_TEXT_RESOURCES #define to allow disabling the inclusion of the tcl library code in the resource fork of Tcl executables and shared libraries. 2002-04-23 Donal K. Fellows * doc/TraceCmd.3: New file that documents Tcl_CommandTraceInfo, Tcl_TraceCommand and Tcl_UntraceCommand [Bug 414927] 2002-04-22 Jeff Hobbs * generic/tclAlloc.c: * generic/tclInt.h: * generic/tclThreadAlloc.c (new): * unix/Makefile.in: * unix/tclUnixThrd.c: * win/Makefile.in: * win/tclWinInt.h: * win/tclWinThrd.c: added new threaded allocator contributed by AOL that significantly reduces lock contention when multiple threads are in use. Only Windows and Unix implementations are ready, and the Windows one may need work. It is only used by default on Unix for now, and requires that USE_THREAD_ALLOC be defined (--enable-threads on Unix will define this). * generic/tclIOUtil.c (Tcl_FSRegister, Tcl_FSUnregister): corrected calling of Tcl_ConditionWait to ensure that there would be a condition to wait upon. * generic/tclCmdAH.c (Tcl_FileObjCmd): added cast in FILE_SIZE. * win/tclWinFCmd.c (DoDeleteFile): check return of setattr API calls in file deletion for correct Win32 API handling. * win/Makefile.in: correct dependencies for shell, gdb, runtest targets. * doc/clock.n: * compat/strftime.c (_fmt): change strftime to correctly handle localized %c, %x and %X on Windows. Added some notes about how the other values could be further localized. 2002-04-19 Don Porter * generic/tclMain.c (Tcl_Main): Free the memory allocated for the startup script path. [Bug 543549] * library/msgcat/msgcat.tcl: [mcmax] wasn't using the caller's namespace when determining the max translated length. Also made revisions for better use of namespace variables and more efficient [uplevel]s. * doc/msgcat.n: * library/msgcat/msgcat.tcl: * library/msgcat/pkgIndex.tcl: Added [mcload] to the export list of msgcat; bumped to 1.2.3. [Bug 544727] 2002-04-20 Daniel Steffen * generic/tclInt.decls: * generic/tclIntPlatDecls.h: * generic/tclStubInit.c: * mac/tclMacFCmd.c: * mac/tclMacFile.c: * mac/tclMacUtil.c: Modified TclpObjNormalizePath to be alias file aware, and replaced various calls to FSpLocationFrom*Path by calls to new alias file aware versions FSpLLocationFrom*Path. The alias file aware routines don't resolve the last component of a path if it is an alias. This allows [file copy/delete] etc. to act correctly on alias files. (c.f. discussion in Bug #511666) 2002-04-19 Donal K. Fellows * tests/lindex.test (lindex-3.7): * generic/tclUtil.c (TclGetIntForIndex): Stopped indexes from hitting wide ints. [Bug #526717] 2002-04-18 Miguel Sofer * generic/tclNamesp.c: * tests/info.test: [Bug 545325] info level didn't report namespace eval, bug report by Richard Suchenwirth. 2002-04-18 Don Porter * doc/subst.n: Clarified documentation on handling unusual return codes during substitution, and on variable substitutions implied by command substitution, and vice versa. [Bug 536838] 2002-04-18 Donal K. Fellows * generic/tclCmdIL.c (InfoBodyCmd): * tests/info.test (info-2.6): Proc bodies without string reps would report as empty [Bug #545644] * generic/tclCmdMZ.c (Tcl_SubstObj): More clarification for comment on behaviour when substitutions are not well-formed, prompted by [Bug #536831]; alas, removing the ill-defined behaviour is a lot of work. 2002-04-18 Miguel Sofer * generic/tclExecute.c: * tests/expr-old.test: fix for [Bug #542588] (Phil Ehrens), where "too large integers" were reported as "floating-point value" in [expr] error messages. 2002-04-17 Jeff Hobbs * generic/tclEncoding.c (EscapeFromUtfProc): * generic/tclIO.c (WriteChars, Tcl_Close): corrected the handling of outputting end escapes for escape-based encodings. [Bug #526524] (yamamoto) 2002-04-17 Don Porter * doc/tcltest.n: Removed [saveState] and [restoreState] from tcltest 2 documentation, effectively deprecating them. [Bug 495660] * library/tcltest/tcltest.tcl: Made separate export for commands kept only for tcltest 1 compatibility. * tests/iogt.test: Revised to run tests in a namespace, rather than use the useless and buggy [saveState] and [restoreState] commands of tcltest. Updated to use tcltest 2 as well. [Patch 544911] 2002-04-16 Don Porter * tests/io.test: Revised to run tests in a namespace, rather than use the useless and buggy [saveState] and [restoreState] commands of tcltest. Updated to use tcltest 2 as well. [Patch 544546] 2002-04-15 Miguel Sofer * generic/tclProc.c: * tests/proc-old.test: Improved stack trace for TCL_BREAK and TCL_CONTINUE returns from procs. Patch by Don Porter [Bug 536955]. * generic/tclExecute.c: * tests/compile.test: made bytecodes check for a catch before returning; the compiled [return] is otherwise non-catchable. [Bug 542588] reported by Andreas Kupries. 2002-04-15 Don Porter * tests/socket.test: Increased timeout values so that tests have time to successfully complete even on slow/busy machines. [Bug 523470] * doc/tcltest.n: * library/tcltest/tcltest.tcl: * tests/tcltest.test: Revised [tcltest::test] to return errors when called with invalid syntax and to accept exactly two arguments as documented. Improved error messages. [Bug 497446, Patch 513983] ***POTENTIAL INCOMPATIBILITY***: Incompatible with previous tcltest 2.* releases, found only in alpha releases of Tcl 8.4. 2002-04-11 Jeff Hobbs * generic/tclNotify.c (TclFinalizeNotifier): remove remaining unserviced events on finalization. * win/tcl.m4: Enabled COFF as well as CV style debug info with --enable-symbols to allow Dr. Watson users to see function info. More info on debugging levels can be obtained at: http://msdn.microsoft.com/library/en-us/dnvc60/html/gendepdebug.asp * tests/ioCmd.test: fixed iocmd-8.15 to have mac and unixPc variants. * generic/tclParse.c (Tcl_ParseVar): conditionally incr obj refcount to prevent possible mem leak. 2002-04-08 Daniel Steffen * generic/tcl.h: no on mac. * mac/tclMacFile.c: minor fixes to Vince's changes from 03-24. * mac/tclMacOSA.c: * mac/tclMacResource.c: added missing Tcl_UtfToExternalDString conversions of resource file names. * mac/tclMacSock.c (TcpGetOptionProc): fixed bug introduced by Andreas on 02-25; changed strcmp's to strncmp's so that option comparison behaves like on other platforms. * mac/tcltkMacBuildSupport.sea.hqx (CW Pro6 changes): added support to allow Tk to hookup C library stderr/stdout to TkConsole. * tests/basic.test: * tests/cmdAH.test: * tests/encoding.test: * tests/fileSystem.test: * tests/ioCmd.test: fixed tests failing on mac: check for existence of [exec], changed some result strings. 2002-04-06 Jeff Hobbs * unix/tclUnixFCmd.c (Realpath): added a little extra code to initialize a realpath arg when compiling in PURIFY mode in order to prevent spurious purify warnings. We should really create our own realpath implementation, but this will at least quiet purify for now. 2002-04-05 Don Porter * generic/tclCmdMZ.c (Tcl_SubstObj): * tests/subst.test: Corrected [subst] so that return codes TCL_BREAK and TCL_CONTINUE returned by variable substitution have the same effect as when those codes are returned by command substitution. [Bug 536879] 2002-04-03 Jeff Hobbs * library/tcltest/tcltest.tcl: added getMatchingFiles back (alias to GetMatchingFiles), which was a public function in tcltest 1.0. 2002-04-01 Vince Darley * generic/tclEnv.c: * generic/tclIOUtil.c: invalidate filesystem cache when the user changes env(HOME). Fixes [Bug #535621]. Also cleaned up some of the documentation. * tests/fileSystem.test: added test for bug just fixed. 2002-04-01 Kevin Kenny * win/tclWinTime.c (Tcl_GetTime): made the checks of clock frequency more permissive to cope with the fact that Win98SE is observed to return 1.19318 in place of 1.193182 for the performance counter frequency. 2002-03-29 Jeff Hobbs * generic/tclCmdMZ.c (Tcl_TraceObjCmd, TraceVarProc) (TraceCommandProc, TclTraceCommandObjCmd): corrected potential double-free of traces on variables by flagging in Trace*Proc that it will free the var in case the eval wants to delete the var trace as well. [Bug #536937] Also converted Tcl_UntraceVar -> Tcl_UntraceVar2 and Tcl_Eval to Tcl_EvalEx in Trace*Proc for slight efficiency improvement. 2002-03-29 Don Porter * doc/AllowExc.3: * generic/tclBasic.c (Tcl_EvalObjv,Tcl_EvalEx,Tcl_EvalObjEx): * generic/tclCompile.h (TclCompEvalObj): * generic/tclExecute.c (TclCompEvalObj,TclExecuteByteCode): * tests/basic.test: Corrected problems with Tcl_AllowExceptions having influence over the wrong scope of Tcl_*Eval* calls. Patch from Miguel Sofer. Report from Jean-Claude Wippler. [Bug 219181] 2002-03-28 Don Porter * generic/tclVar.c: Refactored CallTraces to collect repeated handling of its returned value into CallTraces itself. 2002-03-28 David Gravereaux * tools/feather.bmp: * tools/man2help.tcl: * tools/man2help2.tcl: * win/makefile.vc: More winhelp target fixups. Added a feather bitmap to the non-scrollable area and changed the color to be yellow from a plain white. The colors can be whatever we want them to be, but thought I would start with something bold. [Bug 527941] * doc/SetVar.3: * doc/TraceVar.3: * doc/UpVar.3: .AP macro syntax repair. 2002-03-27 David Gravereaux * tools/man2help.tcl: * win/makefile.vc: winhelp target now copies all needed files from tools/ to a workarea under $(OUT_DIR) and builds it from there. No build cruft is left in tools/ anymore. All paths used in man2help.tcl are now relative to where the script is. [Bug 527941] 2002-03-27 David Gravereaux * win/.cvsignore: * win/buildall.vc.bat: * win/coffbase.txt: * win/makefile.vc: * win/nmakehlp.c (new): * win/rules.vc: First draft fix for [Bug 527941]. More changes need to done to the makehelp target to get to stop leaving build files in the tools/ directory. This does not address the syntax errors in the man files. Having the contents of tcl.hpj(.in) inside makefile.vc allows for version numbers to be replaced with macros. The new nmakehlp.c is built by rules.vc in preprocessing and removes the need to use tricky shell syntax that wasn't compatible on Win9x systems. Clean targets made Win9x complient. This is a first draft repair for [Bug 533862]. 2002-03-28 Miguel Sofer * generic/tclBasic.c (Tcl_EvalEx): passing the correct commandSize to TclEvalObjvInternal. [Bug 219362], fix by David Knoll. 2002-03-28 Miguel Sofer * generic/tclBasic.c (Tcl_EvalEx): * tests/basic.test: avoid exceptional returns at level 0 [Bug 219181] 2002-03-27 Don Porter * doc/tcltest.n ([mainThread]): * library/tcltest/tcltest.tcl: * tests/tcltest.test: Major code cleanup to deal with whitespace, coding conventions, and namespace issues, with several minor bugs fixed in the process. * tests/main.test: Added missing [after cancel]s. 2002-03-25 Don Porter * tests/main.test: Removed workarounds for Bug 495977. * library/tcltest/tcltest.tcl: Keep the value of $::auto_path unchanged, so that the tcltest package can test code that depends on auto-loading. If a testing application needs $::auto_path pruned, it should do that itself. [Bug 495726] Improve the processing of the -constraints option to [test] so that constraint lists can have arbitrary whitespace, and non-lists don't blow things up. [Bug 495977] Corrected faulty variable initialization. [Bug 534845] 2002-03-25 Miguel Sofer * doc/CrtTrace.3: small doc correction * generic/tclBasic.c (Tcl_DeleteTrace): Allow NULL callback on trace deletions [Bug 534728] (Hemang Lavana). 2002-03-24 Miguel Sofer * generic/tclBasic.c (Tcl_EvalObjv): replaced obscure, incorrect code as described in [Bug 533907] (Don Porter). 2002-03-24 Don Porter * library/tcltest/tcltest.tcl: Use [interpreter] to set/query the executable currently running the tcltest package. [Bug 454050] * library/tcltest/tcltest.tcl: Allow non-proc commands to be used as the customization hooks. [Bug 495662] 2002-03-24 Vince Darley * generic/tclFilename.c: * generic/tclFCmd.c: * generic/tclTest.c: * generic/tcl.h: * generic/tclIOUtil.c: * win/tclWinFile.c: * win/tclWinFCmd.c: * win/tclWinPipe.c: * unix/tclUnixFile.c: * unix/tclUnixFCmd.c: * mac/tclMacFile.c: * doc/FileSystem.3: * doc/file.n: * tests/cmdAH.test: * tests/fileName.test: * tests/fileSystem.test: (new file) * tests/winFCmd.test: fix [Bug 511666] and [Bug 511658], and improved documentation of some aspects of the filesystem, particularly 'Tcl_FSMatchInDirectory' which now might match a single file/directory only, and 'file normalize' which wasn't very clear before. Removed inconsistency betweens docs and the Tcl_Filesystem structure. Also fixed [Bug 523217] and corrected file normalization on Unix so that it expands symbolic links. Added some new tests of the filesystem code (in the new file 'fileSystem.test'), and some extra tests for correct handling of symbolic links. Fix to [Bug 530960] which shows up on Win98. Made comparison with ".com" case insensitive in tclWinPipe.c ***POTENTIAL INCOMPATIBILITY***: But only between alpha releases (users of the new Tcl_Filesystem lookup table in Tcl 8.4a4 need to handle the new way in which Tcl may call Tcl_FSMatchInDirectory, and 'file normalize' on unix now behaves correctly). Only known impact is with the 'tclvfs' extension. 2002-03-22 Miguel Sofer * tests/basic.test (basic-46.1): adding test for [Bug 533758], fixed earlier today. 2002-03-22 Jeff Hobbs * win/tclWinInt.h: moved undef of TCL_STORAGE_CLASS. [Bug #478579] 2002-03-22 Miguel Sofer * generic/tclBasic.c (Tcl_EvalObjEx): * generic/tclExecute.c (TclCompEvalObj): fixed the errorInfo for return codes other than (TCL_OK, TCL_ERROR) to runLevel 0 [Bug 533758]. Removed the static RecordTracebackInfo(), as its functionality is easily replicated by Tcl_LogCommandInfo. Bug and redundancy noted by Don Porter. 2002-03-21 Donal K. Fellows * doc/expr.n: Improved documentation for ceil and floor [Bug 530535] 2002-03-20 Don Porter * doc/SetVar.3: * doc/TraceVar.3: * doc/UpVar.3: * generic/tcl.h (Tcl_VarTraceProc): * generic/tcl.decls (Tcl_GetVar2, Tcl_SetVar2, Tcl_TraceVar2, Tcl_UnsetVar2, Tcl_UntraceVar2, Tcl_UpVar2, Tcl_VarTraceInfo2, Tcl_GetVar2Ex, TclSetVar2Ex): * generic/tclCmdMZ.c (TraceVarProc): * generic/tclEnv.c (EnvTraceProc): * generic/tclEvent.c (VwaitVarProc): * generic/tclInt.decls (TclLookupVar,TclPrecTraceProc): * generic/tclLink.c (LinkTraceProc): * generic/tclUtil.c (TclPrecTraceProc): * generic/tclVar.c (CallTraces, MakeUpvar, VarErrMsg, TclLookupVar, Tcl_GetVar2, Tcl_SetVar2, Tcl_TraceVar2, Tcl_UnsetVar2, Tcl_UntraceVar2, Tcl_UpVar2, Tcl_VarTraceInfo2, Tcl_GetVar2Ex, TclSetVar2Ex): Updated interfaces of generic/tclVar.c according to TIP 27. In particular, the "part2" arguments were CONSTified. [Patch 532642] * generic/tclDecls.h: * generic/tclIntDecls.h: make genstubs 2002-03-15 Donal K. Fellows * tests/compile.test (compile-12.3): Test to detect bug 530320. * generic/tclCompile.c (TclCompileTokens): Fixed buffer overrun reported in bug 530320. 2002-03-14 Mo DeJong * win/configure: Regen. * win/configure.in: Add configure time test for SEH support in the compiler. * win/tclWin32Dll.c (ESP, EBP, TclpCheckStackSpace, _except_checkstackspace_handler): * win/tclWinChan.c (ESP, EBP, Tcl_MakeFileChannel, _except_makefilechannel_handler): * win/tclWinFCmd.c (ESP, EBP, DoRenameFile, _except_dorenamefile_handler, DoCopyFile, _except_docopyfile_handler): Implement SEH support under gcc using inline asm. Tcl and Tk should now compile with Mingw 1.1. [Patch 525746] 2002-03-14 Mo DeJong * win/tclWinFCmd.c (DoRenameFile, DoCopyFile): Handle an SEH exception with EXCEPTION_EXECUTE_HANDLER instead of restarting the faulting instruction with EXCEPTION_CONTINUE_EXECUTION. Bug 466102 provides an example of how restarting could send Tcl into an infinite loop. [Patch 525746] 2002-03-11 Mo DeJong * win/tclWinFCmd.c (DoRenameFile, DoCopyFile, DoDeleteFile, DoRemoveJustDirectory): Make sure we don't pass NULL or "" as a path name to Win32 API functions since this was crashing under Windows 98. 2002-03-11 Don Porter * library/tcltest/tcltest.tcl: * library/tcltest/pkgIndex.tcl: Bumped tcltest package to 2.0.2. 2002-03-11 Mo DeJong * library/tcltest/tcltest.tcl (getMatchingFiles): Pass a proper list to foreach to avoid munging a Windows patch like D:\Foo\Bar into D:FooBar before the glob. 2002-03-11 Mo DeJong * generic/tclEncoding.c: Fix typo in comment. * generic/tclIO.c (DoReadChars, ReadBytes, ReadChars): Use NULL value instead of pointer set to NULL to make things more clear. Reorder arguments so that they match the function signatures. Cleanup little typos and add more descriptive comment. 2002-03-08 Mo DeJong * win/README: Update to indicate that Mingw 1.1 is required to build Tcl. Add section describing new msys based build process. Update Cygwin build instructions so users know where to find Mingw 1.1. 2002-03-08 Jeff Hobbs * win/tclWinFCmd.c (DoCopyFile): correctly set retval to TCL_OK. 2002-03-07 Mo DeJong * win/tclWin32Dll.c (TclpCheckStackSpace): * win/tclWinFCmd.c (DoRenameFile, DoCopyFile): Replace hard coded constants with Win32 symbolic names. Move control flow statements out of __try blocks since the documentation indicates it is frowned upon. 2002-03-07 Don Porter * doc/interp.n: * generic/tclInterp.c(Tcl_InterpObjCmd,SlaveObjCmd,SlaveRecursionLimit): * generic/tclTest.c: * tests/interp.test: Added the [interp recursionlimit] command to set/query the recursion limit of an interpreter. Proposal and implementation from Stephen Trier. [TIP 87, Patch 522849] 2002-03-06 Donal K. Fellows * generic/tcl.h, tools/tcl.wse.in, unix/configure.in, * unix/tcl.spec, win/README.binary, win/configure.in, README: Bumped patchlevel; this might need to change in the future, but it will help us distinguish between the CVS version and the most recent released version. 2002-03-06 Miguel Sofer * generic/tclInt.h: for unshared objects, TclDecrRefCount now frees the internal rep before the string rep - just like the non-macro Tcl_DecrRefCount/TclFreeObj [Bug 524802]. 2002-03-06 Donal K. Fellows * doc/lsearch.n: Documentation of new features, plus examples. * tests/lsearch.test: Tests of new features. * generic/tclCmdIL.c (Tcl_LsearchObjCmd): TIP#80 support. See http://purl.org/tcl/tip/80 for details. 2002-03-05 Jeff Hobbs *** 8.4a4 TAGGED FOR RELEASE *** * unix/tclUnixChan.c: initial remedy for [Bug #525783] flush problem introduced by TIP #35. This may not satisfy true serial channels, but it restores the correct flushing of std* channels on exit. * unix/README: added --enable-langinfo doc. * unix/tcl.spec: * tools/tcl.wse.in: fixed URL refs to use www.tcl.tk or SF. 2002-03-04 Jeff Hobbs * README: * mac/README: * unix/Makefile.in: * unix/README: * win/README: * win/README.binary: updated to use www.tcl.tk URL. * unix/Makefile.in: added older ChangeLogs to dist target. * tests/io.test: * tests/encoding.test: corrected iso2022 encoding results. added encoding-24.* * generic/tclEncoding.c (EscapeFromUtfProc): corrected output of escape codes as per RFC 1468. [Patch #474358] (taguchi) (TclFinalizeEncodingSubsystem): corrected potential double-free when encodings were finalized on exit. [Bug #219314, #524674] 2002-03-01 Jeff Hobbs * library/encoding/iso2022-jp.enc: * library/encoding/iso2022.enc: * tools/encoding/iso2022-jp.esc: * tools/encoding/iso2022.esc: gave $B precedence over $@, based on comments (point 1) in [Bug #219283] (rfc 1468) * tests/encoding.test: added encoding-23.* tests * generic/tclIO.c (FilterInputBytes): reset the TCL_ENCODING_START flags in the ChannelState when using 'gets'. [Bug #523988] Also reduced the value of ENCODING_LINESIZE from 30 to 20 as this seems to improve the performance of 'gets' according to tclbench. 2002-02-28 Jeff Hobbs * generic/tclCmdMZ.c (TraceCommandProc): ensure that TraceCommandInfo structure was also deleted when a command was deleted to prevent a mem leak. * generic/tclBasic.c (Tcl_CreateObjTrace): set tracePtr->flags correctly. * generic/tclTimer.c (TimerExitProc): remove remaining events in tls on thread exit. 2002-02-28 Miguel Sofer * generic/tclNamesp.c: allow cached fully-qualified namespace names to be usable from different namespaces within the same interpreter without forcing a new lookup [Patch 458872]. 2002-02-28 Miguel Sofer * generic/tclExecute.c: Replaced a few direct stack accesses with the POP_OBJECT() macro [Bug 507181] (Don Porter). 2002-02-27 Don Porter * doc/GetIndex.3: * generic/tcl.decls (Tcl_GetIndexFromObjStruct): * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): Revised the prototype of the Tcl_GetIndexFromObjStruct to take its struct table as a (CONST VOID *) argument, better describing what it is, maintaining source compatibility, and adding CONST correctness according to TIP 27. Thanks to Joe English for an elegant solution. [Bug 520304] * generic/tclDecls.h: make genstubs * generic/tclMain.c (Tcl_Main,StdinProc): Corrected some reference count management errors on the interactive command Tcl_Obj found by Purify. Thanks to Jeff Hobbs for the report and assistance. 2002-02-27 Jeff Hobbs * generic/tclBasic.c (Tcl_EvalTokensStandard): corrected mem leak in error case. * generic/tclTest.c (TestStatProc[123]): correct harmless UMRs. * generic/tclLink.c (Tcl_LinkVar): correct mem leak in error case. 2002-02-27 Andreas Kupries * tests/socket.test (2.7): Accepted and applied patch for Tcl SF bug #523470 provided by Don Porter to avoid timing problems in that test. * unix/tclUnixChan.c (TclpOpenFileChannel): Added code to regonize "/dev/tty" (by name) and to not handle it as tty / serial line. This is the controlling terminal and is special. Setting it into raw mode as is done for other tty's is a bad idea. This is a hackish fix for expect SGF Bug #520624. The fix has limitation: Tcl_MakeFileChannel handles tty's specially too, but is unable to recognize /dev/tty as it only gets a file descriptor, and no name for it. 2002-02-26 Jeff Hobbs * generic/tclCmdAH.c (StoreStatData): corrected mem leak. * generic/tclCmdMZ.c (Tcl_RegsubObjCmd): prevent obj leak in remedial regsub case. * generic/tclFileName.c (Tcl_TranslateFileName): decr refcount for error case to prevent mem leak. * generic/tclVar.c (Tcl_ArrayObjCmd): removed extra obj allocation. * unix/tclUnixSock.c (Tcl_GetHostName): added an extra gethostbyname check to guard against failure with truncated names returned by uname. * unix/configure: * unix/tcl.m4 (SC_SERIAL_PORT): added sys/modem.h check and defined _XOPEN_SOURCE_EXTENDED for HP-11 to get updated header decls. * unix/tclUnixChan.c: added Unix implementation of TIP #35, serial port support. [Patch #438509] (schroedter) 2002-02-26 Miguel Sofer * generic/tclCmpCmds.c: (bugfix to the bugfix, hopefully the last) Bugfix to the new [for] compiling code: was setting a exceptArray parameter using another param which wasn't yet initialised, thus filling it with noise. 2002-02-25 Andreas Kupries * mac/tclMacSock.c (TcpGetOptionProc): Changed to recognize the option "-error". Essentially ignores the option, always returning an empty string. 2002-02-25 Jeff Hobbs * doc/Alloc.3: * doc/LinkVar.3: * doc/ObjectType.3: * doc/PkgRequire.3: * doc/Preserve.3: * doc/TCL_MEM_DEBUG.3: Updated documentation to describe the ckalloc, ckfree, ckrealloc, attemptckalloc, and attemptckrealloc macros, and to accurately describe when and how they are used. [Bug #497459] (dgp) * generic/tclHash.c (AllocArrayEntry, AllocStringEntry): Before invoking ckalloc when creating a Tcl_HashEntry, check that the amount of memory being allocated is at least as large as sizeof(Tcl_HashEntry). The previous code was allocating memory regions that were one or two bytes short. [Bug #521950] (dejong) 2002-02-25 Miguel Sofer * generic/tclBasic.c (Tcl_EvalEx): avoiding a buffer overrun reported by Joe English, and restoring tcl7.6 behaviour for [subst]: badly terminated nested scripts will raise an error and not be evaluated. [Bug #495207] 2002-02-25 Don Porter * unix/tclUnixPort.h: corrected strtoll prototype mismatch on Tru64. * compat/strtod.c (strtod): simplified #includes * compat/strtol.c (strtol): gather result in a long before returning as a long: necessary on platforms where sizeof(int) != sizeof(long). 2002-02-25 Daniel Steffen * unix/tclLoadDyld.c: updated to use Mac OS X 10.1 dyld APIs that have more libdl-like semantics. (bug #514392) 2002-02-25 Miguel Sofer * generic/tclCompCmds: fixing a bug in patch dated 2002-02-22, in the code for [for] and [while]. Under certain conditions, for long bodies, the exception range parameters were badly computed. Tests forthcoming: I still can't reproduce the conditions in the testsuite (!), although the bug (with assorted segfault or panic!) can be triggered from the console or with the new parse.bench in tclbench. 2002-02-25 Donal K. Fellows * compat/strtoul.c, compat/strtol.c, compat/strtod.c: Added UCHAR, CONST and #includes to clean up GCC output. 2002-02-23 Don Porter * compat/strtoull.c (strtoull): * compat/strtoll.c (strtoll): * compat/strtoul.c (strtoul): Fixed failure to handle leading sign symbols '+' and '-' and '0X' and raise overflow errors. [Bug 440916] Also corrects prototype and errno problems. 2002-02-23 Mo DeJong * configure: Regen. * unix/tcl.m4 (SC_CONFIG_CFLAGS): Link with -n32 instead of -32 when building on IRIX64-6.* system. [Tcl bug 521707] 2002-02-22 Don Porter * generic/tclInt.h: * generic/tclObj.c: renamed global variable emptyString -> tclEmptyString because it is no longer static. * generic/tclPkg.c: Fix for panic when library is loaded on a platform without backlinking without proper use of stubs. [Bug 476537] 2002-02-22 Jeff Hobbs * tests/regexpComp.test: updated regexp-11.[1-4] to match changes in regexp.test for new regsub syntax * unix/configure: * unix/tcl.m4: added --enable-64bit support for AIX-4 (using -q64 flag) when using IBM's xlc compiler. * tests/safe.test: updated safe-8.5 and safe-8.7 * library/safe.tcl (CheckFileName): removed the limit on sourceable file names (was only *.tcl or tclIndex files with no more than one dot and 14 chars). There is enough internal protection in a safe interpreter already. Fixes [Tk Bug #521560]. 2002-02-22 Miguel Sofer * generic/tclCompCmds: [FR 465811]. Optimising [if], [for] and [while] for constant conditions; in addition, [for] and [while] are now compiled with the "loop rotation" optimisation (thanks to Kevin Kenny). 2002-02-22 Donal K. Fellows --- TIP#76 CHANGES --- * generic/tclCmdMZ.c (Tcl_RegsubObjCmd): Final-argument-less [regsub] returns the modified string. * doc/regsub.n: Updated docs. * tests/regexp.test: Updated and added tests. * compat/strtoll.c (strtoll): * compat/strtoull.c (strtoull): * unix/tclUnixPort.h: * win/tclWinPort.h: Const-ing 64-bit compatability declarations. Note that the return pointer is non-const because it is entirely legal for the functions to be called from somewhere that owns the string being passed. Fixes problem reported by Larry Virden. 2002-02-21 David Gravereaux * win/mkd.bat (removed): * win/coffbase.txt (new): * win/makefile.bc: * win/makefile.vc: Changed the 'setup' target to stop using the mkd.bat file and just make the directory right in the rule. Same change to makefile.bc. configure.in nor Makefile.in use it. coffbase.txt will be the master list for our "prefered base addresses" set by the linker. This should improve load-time (NT only) by avoiding relocations. Submissions to the list by extension authors are encouraged. Added a 'tidy' target to compliment 'clean' and 'hose' to remove just the outputs. Also removed the $(winlibs) macro as it wasn't being used. Stuff left to do: 1) get the winhelp target to stop building in the tools/ directory. 2) stop using rmd.bat 3) add more dependacy rules. * win/tclAppInit.c: Reverted back to -r1.6, as the header file change to tclPort.h won't allow for easy embedded support outside of the source dist. Thanks to Don Porter for pointing this out to me. 2002-02-21 David Gravereaux * win/makefile.vc: * win/rules.vc: Added a new "loimpact" option that sets the -ws:aggressive linker option. Off by default. It's said to keep the heap use low at the expense of alloc speed. * win/tclAppInit.c: Changed #include "tcl.h" to be tclPort.h to remove the raw windows.h include. tclPort.h brings in windows.h already and lessens the pre-compiled-header mush and the randomly useless #pragma comment (lib,...) references throughout the big windows.h tree (as observed at high linker warning levels). 2002-02-21 Donal K. Fellows * generic/tcl.h: Better guessing of LP64/ILP32 architecture, but now sensitive to presence of (suitable) 2002-02-20 Don Porter * generic/tcl.decls (Tcl_RegExpRange,Tcl_GetIndexFromObjStruct): Overlooked a few source incompatibilities. Now using CONST84. * generic/tclDecls.h: make genstubs * generic/tcl.h (Tcl_CmdObjTraceProc): silence warning from Sun Workshop compiler. 2002-02-20 David Gravereaux * win/buildall.vc.bat: * win/makefile.vc: * win/rules.vc: General clean-ups. Added compiler and linker tests for a) the pentium 0x0F errata, b) optimizing (not all have this), and c) linker v6 section alignment confusion. All these are tested first to make sure any D4002 or LNK1117 warnings aren't displayed. The pentium 0x0F errata is a recommended switch. The v5 linker's section alignment default is 512, but the v6 linker was changed to 4096 in an attempt to speed loading on Win98. I changed the default to always be 512 across both linkers, unless linking statically, then 4096 is used for the claimed speed effect. Using a 512 alignment saves 12k bytes of dead space in the DLL. Added IA64 B-stepping errata switch when the compiler supports it. Added profiling to $(lflags) when requested and also removed the explict -entry option as the default works fine as is. Removed win/tclWinInit.c from the special case section to let it use the common implicit rule as the $(EXTFLAGS) macro it had was never referenced anywhere. 2002-02-20 Donal K. Fellows * generic/tcl.h: Added code to guess the correct settings for TCL_WIDE_INT_IS_LONG and TCL_WIDE_INT_TYPE when configure doesn't tell us them, as can happen with extensions. 2002-02-19 Donal K. Fellows * doc/format.n: Updated docs to list the specification. * generic/tclCmdAH.c (Tcl_FormatObjCmd): Made behaviour on 64-bit platforms correctly meet the specification, that %d works with the native word-sized integer, instead of trying to guess (wrongly) from the value being passed. 2002-02-19 Don Porter * changes: First draft of updated changes for 8.4a4 release. 2002-02-15 Jeff Hobbs * unix/tclUnixPort.h: add strtoll/strtoull declarations for platforms that do not define them. * generic/tclIndexObj.c (STRING_AT): removed ptrdiff_t cast and use of VOID* in default case (GNU-ism). 2002-02-15 Kevin Kenny * compat/strtoll.c: * compat/strtoul.c: * compat/strtoull.c: * generic/tclIOUtil.c: * generic/tclPosixStr.c: * generic/tclTest.c: * generic/tclTestObj.c: * tests/get.test: * win/Makefile.vc: Further tweaks to the TIP 72 patch to make it compile under VC++. 2002-02-15 Andreas Kupries * tclExecute.c: * tclIOGT.c: * tclIndexObj.c: Touchups to the TIP 72 patch to make it compileable under Windows again. The changes are not complete, there is one nasty regarding _stati64 2002-02-15 Donal K. Fellows +----------------------+ | TIP #72 IMPLEMENTED. | +----------------------+ There are a lot of changes from this TIP, so please see http://purl.org/tcl/tip/72.html for discussion of backward-compatability issues, but the main ones modifications are in: * generic/tcl.h: New types. * generic/tcl.decls: New public functions. * generic/tclExecute.c: 64-bit aware bytecode engine. * generic/tclBinary.c: 64-bit handling in [binary] command. * generic/tclScan.c: 64-bit handling in [scan] command. * generic/tclCmdAH.c: 64-bit handling in [file] and [format] commands. * generic/tclBasic.c: New "wordSize" entry in ::tcl_platform. * generic/tclFCmd.c: Large-file support (with many consequences.) * generic/tclIO.c: Large-file support (with many consequences.) * compat/strtoll.c, compat/strtoull.c: New support functions. * unix/tcl.m4, unix/configure: 64-bit support and greatly enhanced cacheing. Most other changes, including all those in doc/* and test/* as well as the majority in the platform directories, follow on from these. Also coming out of the woodwork: * generic/tclIndex.c: Better support for Cray PVP. * win/tclWinMtherr.c: Better Borland support. Note that, in a number of places through the Unix part of the platform support, there are Tcl_Platform* references. These are expanded into the correct way to call that particular underlying function, i.e. with or without a '64' suffix, and should be used by people working on the core in preference to the API functions they overlay so that the code remains portable depending on the presence or absence of 64-bit support on the underlying platform. ***POTENTIAL INCOMPATIBILITY***: Extracted from the TIP SUMMARY OF INCOMPATIBILITIES AND FIXES ====================================== The behaviour of expressions containing constants that appear positive but which have a negative internal representation will change, as these will now usually be interpreted as wide integers. This is always fixable by replacing the constant with int(constant). Extensions creating new channel types will need to be altered as different types are now in use in those areas. The change to the declaration of Tcl_FSStat and Tcl_FSLstat (which are the new preferred API in any case) are less serious as no non-alpha releases have been made yet with those API functions. Scripts that are lax about the use of the l modifier in format and scan will probably need to be rewritten. This should be very uncommon though as previously it had absolutely no effect. Extensions that create new math functions that take more than one argument will need to be recompiled (the size of Tcl_Value changes), and functions that accept arguments of any type (TCL_EITHER) will need to be rewritten to handle wide integer values. (I do not expect this to affect many extensions at all.) 2002-02-14 Andreas Kupries * generic/tclIOCmd.c (Tcl_GetsObjCmd): Trivial fix for bug #517503, a memory leak reported by Miguel Sofer . The leak happens if an error occurs for "set var [gets $chan]" and leak one empty object. 2002-02-12 David Gravereaux * djgpp/ (new directory) * djgpp/Makefile (new): * unix/tclAppInit.c: * unix/tclMtherr.c: * unix/tclUnixFCmd.c: * unix/tclUnixFile.c: * unix/tclUnixInit.c: * unix/tclUnixPort.h: Early stage of DJGPP support for building Tcl on DOS. Dynamic loading isn't working, yet. Requires watt32 for the TCP/IP stack. No autoconf, yet. Barely tested, but makes a working exe that runs Tcl in protected-mode, flat memory. [exec] and pipes will need the most work as multi-tasking on DOS has to be carefully. 2002-02-10 Kevin Kenny * doc/CrtObjCmd.3: * doc/CrtTrace.3: * generic/tcl.decls: * generic/tcl.h: * generic/tclBasic.c: * generic/tclInt.h: * generic/tclTest.c: * tests/basic.test: Added Tcl_CreateObjTrace, Tcl_GetCommandInfoFromToken and Tcl_SetCommandInfoFromToken. (TIPs #32 and #79.) * generic/tclDecls.h: * generic/tclStubInit.c: Regenerated Stubs tables. 2002-02-08 Jeff Hobbs * unix/configure: * unix/tcl.m4: added -pthread for FreeBSD to EXTRA_CFLAGS and LDFLAGS. Also triggered nodots only for FreeBSD-3. Added AC_DEFINE(_POSIX_PTHREAD_SEMANTICS) for Solaris. * unix/tclUnixPort.h: * unix/tclUnixThrd.c: added thread-safe versions of readdir, localtime, gmtime and inet_ntoa for threaded build. (jgdavidson) * generic/tclScan.c (Tcl_ScanObjCmd): prevented ckfree being called on a pointer to NULL. 2002-02-07 Don Porter * doc/DString.3: * doc/Encoding.3: * doc/GetCwd.3: * doc/SplitPath.3: * doc/Translate.3: * doc/Utf.3: * generic/tcl.decls: * generic/tcl.h: * generic/tclEncoding.c: * generic/tclEnv.c: * generic/tclFileName.c: * generic/tclIOUtil.c: * generic/tclUtf.c: * generic/tclUtil.c: * mac/tclMacInit.c: * unix/tclUnixFile.c: * unix/tclUnixInit.c: * unix/tclUnixPipe.c: * win/tclWin32Dll.c: * win/tclWinFCmd.c: * win/tclWinFile.c: * win/tclWinInit.c: Partial TIP 27 rollback. Following routines restored to return (char *): Tcl_DStringAppend, Tcl_DStringAppendElement, Tcl_JoinPath, Tcl_TranslateFileName, Tcl_ExternalToUtfDString, Tcl_UtfToExternalDString, Tcl_UniCharToUtfDString, Tcl_GetCwd, Tcl_WinTCharToUtf. Also restored Tcl_WinUtfToTChar to return (TCHAR *) and Tcl_UtfToUniCharDString to return (Tcl_UniChar *). Modified some callers. This change recognizes that Tcl_DStrings are de-facto white-box objects. * generic/tclDecls.h: * generic/tclPlatDecls.h: make genstubs * generic/tclCmdMZ.c: corrected use of C++-style comment. 2002-02-06 Jeff Hobbs * tests/scan.test: * generic/tclScan.c (Tcl_ScanObjCmd): corrected scan 0x... %x handling that didn't accept the 0x as a prelude to a base 16 number. [Bug #495213] * generic/tclCompCmds.c (TclCompileRegexpCmd): made early check for bad RE to stop checking further. * generic/tclCmdMZ.c (Tcl_RegsubObjCmd): added special case to search for simple 'string map' style regsub calls. Delayed creation of resultPtr object until an initial match is made, as the input string object can then be reused for no matches. (Tcl_StringObjCmd): optimization improvements to the STR_MAP algorithm for zero-length and nocase cases. * tests/regexp.test: * tests/regexpComp.test: extra code coverage tests. * tests/string.test: added 10.18 and 10.19 extra tests. * generic/regc_locale.c (casecmp): slight performance improvement. 2002-02-05 Don Porter * library/http/http.tcl: * library/http/pkgIndex.tcl: Corrected use of http::error when ::error was intended. Bump to http 2.4.2. 2002-02-04 Andreas Kupries * unix/tclUnixChan.c (FileOutputProc): Fixed [bug 465765] reported by Dale Talcott . Avoid writing nothing into a file as STREAM based implementations will consider this a EOF (if the file is a pipe). Not done in the generic layer as this type of writing is actually useful to check the state of a socket. * doc/open.n: Fixed [Bug 511540], added cross-reference to 'pid' as the command to use to retrieve the pid of a command pipeline created via 'open'. 2002-02-01 Jeff Hobbs * generic/tclCmdMZ.c (Tcl_RegexpObjCmd): handle quirky about case earlier to avoid shimmering problem. 2002-02-01 Andreas Kupries * tests/io.test: io-39.22 split into two tests, one platform dependent, the other not. -eofchar is not empty on the windows platform. 2002-02-01 Vince Darley * generic/tclTest.c: fix to picky windows compiler problem with the 'MainLoop' function declaration. 2002-01-31 Andreas Kupries * win/tclWinFCmd.c: TIP 27: Applied patch fixing CONST warnings on behalf of Don Porter . 2002-01-30 Don Porter * generic/tcl.decls: * generic/tcl.h: * generic/tclInt.h: For each interface identified in the TIP 27 changes below as a POTENTIAL INCOMPATIBILITY, the source of the incompatibility has been parameterized so that it can be removed. When compiling extension code against the Tcl header files, use the compiler flag -DUSE_NON_CONST to remove the irresolvable source incompatibilities introduced by the TIP 27 changes. Resolvable changes are left for extension authors to resolve. * generic/tclDecls.h: make genstubs 2002-01-30 Vince Darley * doc/FileSystem.3: added documentation for 3 public functions which had been overlooked. Fixes [Bug 507701]. * unix/mkLinks: make mklinks 2002-01-29 Jeff Hobbs * tests/regexpComp.test: * generic/tclCompCmds.c (TclCompileRegexpCmd): enhanced to support -nocase and -- options. 2002-01-28 Mo DeJong * unix/tcl.m4 (SC_LOAD_TCLCONFIG): * win/tcl.m4 (SC_LOAD_TCLCONFIG): Set TCL_LIB_SPEC, TCL_STUB_LIB_SPEC, and TCL_STUB_LIB_PATH to the values of TCL_BUILD_LIB_SPEC, TCL_BUILD_STUB_LIB_SPEC, and TCL_BUILD_STUB_LIB_PATH when tclConfig.sh is loaded from the build directory. A Tcl extension should make use of the non-build versions of these variables since they will work in both cases. This modification was described in TIP 34. 2002-01-28 Jeff Hobbs * win/tclWinReg.c (regConnectRegistryProc,RecursiveDeleteKey) (DeleteKey,GetKeyNames,GetType,GetValue,OpenSubKey,SetValue): redid the CONSTification as previous changes caused failing tests. * tests/regexpComp.test (new): * generic/tclInt.h: * generic/tclBasic.c: added TclCompileRegexpCmd entry * generic/tclCompCmds.c (TclCompileStringCmd): corrected to return TCL_OUT_LINE_COMPILE instead of TCL_ERROR for parsing errors, so it only throws the error for runtime compile, in case the user modifies 'string'. (TclCompileRegexpCmd): first try at a byte-compiled regexp command. It handles static strings and ^$ bounded static strings. (TclCompileAppendCmd): made TclPushVarName call always use TCL_CREATE_VAR as numWords is always > 2 at that point. * generic/tclExecute.c (TclExecuteByteCode:INST_LIST): correct possibly dangerous decr in macro call. * win/tclWinInit.c (TclpFindVariable): CONSTification touch-up * win/tclWinReg.c (OpenSubKey): corrected bug introduced in CONSTification that dropped pointer reference. * ChangeLog.2000 (new file): * ChangeLog: broke changes from 2000 into ChangeLog.2000 to reduce size of the main ChangeLog. 2002-01-28 David Gravereaux * generic/tclPlatDecls.h: Added preprocessor logic to force a typedef of TCHAR when __STDC__ is defined when using the uncommon -Za compiler switch with the microsoft compiler. 2002-01-27 Don Porter * doc/package.n: Documented global namespace context for script evaluation by [package require]. 2002-01-27 Daniel Steffen * generic/tclInt.decls: * generic/tclIntPlatDecls.h: * mac/tclMacChan.c: * mac/tclMacFCmd.c: * mac/tclMacFile.c: * mac/tclMacInit.c: * mac/tclMacLoad.c: * mac/tclMacResource.c: * mac/tclMacSock.c: TIP 27 CONSTification induced changes * tests/event.test: * tests/main.test: added catches/constraints to test that use features that don't exist on the mac. 2002-01-25 Mo DeJong Make -eofchar and -translation options read only for server sockets. [Bug 496733] * generic/tclIO.c (Tcl_GetChannelOption, Tcl_SetChannelOption): Instead of returning nothing for the -translation option on a server socket, always return "auto". Return the empty string enclosed in quotes for the -eofchar option on a server socket. Fixup -eofchar usage message so that it matches the implementation. * tests/io.test: Add -eofchar tests and -translation tests to ensure options are read only on server sockets. * tests/socket.test: Update tests to account for -eofchar and -translation option changes. 2002-01-25 Don Porter * compat/strstr.c (strstr): * generic/tclCmdAH.c (Tcl_FormatObjCmd): * generic/tclCmdIL.c (InfoNameOfExecutableCmd): * generic/tclEnv.c (ReplaceString): * generic/tclFileName.c (ExtractWinRoot): * generic/tclIO.c (FlushChannel,Tcl_BadChannelOption): * generic/tclStringObj.c (AppendUnicodeToUtfRep): * generic/tclThreadTest.c (TclCreateThread): * generic/tclUtf.c (Tcl_UtfPrev): * mac/tclMacFCmd.c (TclpObjListVolumes): * mac/tclMacResource.c (TclMacRegisterResourceFork, BuildResourceForkList): * win/tclWinInit.c (AppendEnvironment): Sought out and eliminated instances of CONST-casting that are no longer needed after the TIP 27 effort. * Following is [Patch 501006] * generic/tclInt.decls (Tcl_AddInterpResolvers, Tcl_Export, Tcl_FindNamespace, Tcl_GetInterpResolvers, Tcl_ForgetImport, Tcl_Import, Tcl_RemoveInterpResolvers): * generic/tclNamesp.c (Tcl_Export, Tcl_Import, Tcl_ForgetImport, Tcl_FindNamespace): * generic/tclResolve.c (Tcl_AddInterpResolvers,Tcl_GetInterpResolvers, Tcl_RemoveInterpResolvers): Updated APIs in generic/tclResolve.c and generic/tclNamesp.c according to the guidelines of TIP 27. * generic/tclIntDecls.h: make genstubs * Following is [Patch 505630] * doc/AddErrorInfo.3: * generic/tcl.decls (Tcl_LogCommandInfo): * generic/tclBasic.c (Tcl_LogCommandInfo): Updated interfaces of generic/tclBasic.cc according to TIP 27. * generic/tclDecls.h: make genstubs * Following is [Patch 506818] * doc/Hash.3: * generic/tcl.decls (Tcl_HashStats): * generic/tclHash.c (Tcl_HashStats): Updated APIs of generic/tclHash.c according to guidelines of TIP 27. * generic/tclDecls.h: make genstubs * generic/tclVar.c (Tcl_ArrayObjCmd): Updated callers. * Following is [Patch 506807] * doc/ObjectType.3: * generic/tcl.decls (Tcl_GetObjType): * generic/tclObj.c (Tcl_GetObjType): Updated APIs of generic/tclObj.c according to guidelines of TIP 27. * generic/tclDecls.h: make genstubs * Following is [Patch 507304] * doc/Encoding.3: * generic/tcl.decls (Tcl_WinUtfToTChar,Tcl_WinTCharToUtf): * win/tclWin32Dll.c (Tcl_WinUtfToTChar,Tcl_WinTCharToUtf): Updated interfaces in win/tclWin32Dll.c according to TIP 27. * generic/tclPlatDecls.h: make genstubs * generic/tclIOUtil.c (TclpNativeToNormalized): * win/tclWinFCmd.c (TclpObjNormalizePath): * win/tclWinFile.c (TclpFindExecutable,TclpMatchInDirectory, NativeIsExec,NativeStat): * win/tclWinLoad.c (TclpLoadFile): * win/tclWinPipe.c (TclpOpenFile,ApplicationType): * win/tclWinReg.c (regConnectRegistryProc,RecursiveDeleteKey,DeleteKey, GetKeyNames,GetType,GetValue,OpenSubKey,SetValue): * win/tclWinSerial.c (SerialSetOptionProc): Update callers. * Following is [Patch 505072] * doc/Concat.3: * doc/Encoding.3: * doc/Filesystem.3: * doc/Macintosh.3: * doc/OpenFileChnl.3 * doc/SetResult.3: * doc/SetVar.3: * doc/SplitList.3: * doc/SplitPath.3: * doc/Translate.3: * generic/tcl.h (Tcl_FSMatchInDirectoryProc): * generic/tclInt.h (TclpMatchInDirectory): * generic/tcl.decls (Tcl_Concat,Tcl_GetStringResult,Tcl_GetVar, Tcl_GetVar2,Tcl_JoinPath,Tcl_Merge,Tcl_OpenCommandChannel,Tcl_SetVar, Tcl_SetVar2,Tcl_SplitList,Tcl_SplitPath,Tcl_TranslateFileName, Tcl_ExternalToUtfDString,Tcl_GetEncodingName,Tcl_UtfToExternalDString, Tcl_GetDefaultEncodingDir,Tcl_SetDefaultEncodingDir, Tcl_FSMatchInDirectory,Tcl_MacEvalResource,Tcl_MacFindResource): * generic/tclInt.decls (TclCreatePipeline,TclGetEnv,TclpGetCwd, TclpCreateProcess): * mac/tclMacFile.c (TclpGetCwd): * generic/tclEncoding.c (Tcl_GetDefaultEncodingDir, Tcl_SetDefaultEncodingDir,Tcl_GetEncodingName, Tcl_ExternalToUtfDString,Tcl_UtfToExternalDString, OpenEncodingFile, LoadEscapeEncoding): * generic/tclFileName.c (DoTildeSubst,Tcl_JoinPath,Tcl_SplitPath, Tcl_TranslateFileName): * generic/tclIOUtil.c (Tcl_FSMatchInDirectory): * generic/tclPipe.c (FileForRedirect,TclCreatePipeline, Tcl_OpenCommandChannel): * generic/tclResult.c (Tcl_GetStringResult): * generic/tclUtil.c (Tcl_Concat,Tcl_SplitList,Tcl_Merge): * generic/tclVar.c (Tcl_GetVar,Tcl_GetVar2,Tcl_SetVar,Tcl_SetVar2): * mac/tclMacResource.c (Tcl_MacEvalResource,Tcl_MacFindResource): Updated interfaces of generic/tclEncoding, generic/tclFilename.c, generic/tclIOUtil.c, generic/tclPipe.c, generic/tclResult.c, generic/tclUtil.c, generic/tclVar.c and mac/tclMacResource.c according to TIP 27. Tcl_TranslateFileName rewritten as wrapper around VFS-aware version. ***POTENTIAL INCOMPATIBILITY*** Includes source incompatibilities: argv arguments of Tcl_Concat, Tcl_JoinPath, Tcl_OpenCommandChannel, Tcl_Merge; argvPtr arguments of Tcl_SplitList and Tcl_SplitPath. * generic/tclDecls.h: * generic/tclIntDecls.h: make genstubs * generic/tclCkalloc.c (MemoryCmd): * generic/tclClock.c (FormatClock): * generic/tclCmdAH.c (Tcl_CaseObjCmd,Tcl_EncodingObjCmd,Tcl_FileObjCmd): * generic/tclCmdIL.c (InfoLibraryCmd,InfoPatchLevelCmd, InfoTclVersionCmd): * generic/tclCompCmds.c (TclCompileForeachCmd): * generic/tclCompCmds.h (TclCompileForeachCmd): * generic/tclCompile.c (TclFindCompiledLocal): * generic/tclEnv.c (TclSetupEnv,TclSetEnv,Tcl_PutEnv,TclGetEnv, EnvTraceProc): * generic/tclEvent.c (Tcl_BackgroundError): * generic/tclIO.c (Tcl_BadChannelOption,Tcl_SetChannelOption): * generic/tclIOCmd.c (Tcl_ExecObjCmd,Tcl_OpenObjCmd): * generic/tclIOSock.c (TclSockGetPort): * generic/tclIOUtil.c (SetFsPathFromAny): * generic/tclLink.c (LinkTraceProc): * generic/tclMain.c (Tcl_Main): * generic/tclNamesp.c (TclTeardownNamespace): * generic/tclProc.c (TclCreateProc): * generic/tclTest.c (TestregexpObjCmd,TesttranslatefilenameCmd, TestchmodCmd,GetTimesCmd,TestsetCmd,TestOpenFileChannelProc1, TestOpenFileChannelProc2,TestOpenFileChannelProc3,AsyncHandlerProc, TestpanicCmd): * generic/tclThreadTest.c (ThreadErrorProc,ThreadEventProc): * generic/tclUtil.c (TclPrecTraceProc): * mac/tclMacFCmd.c (GetFileSpecs): * mac/tclMacFile.c (TclpMatchInDirectory): * mac/tclMacInit.c (TclpInitLibraryPath,Tcl_SourceRCFile): * mac/tclMacOSA.c (tclOSAStore,tclOSALoad): * mac/tclMacResource.c (Tcl_MacEvalResource): * unix/tclUnixFCmd.c (TclpObjNormalizePath): * unix/tclUnixFile.c (TclpMatchInDirectory,TclpGetUserHome,TclpGetCwd, TclpReadLink): * unix/tclUnixInit.c (TclpInitLibraryPath,TclpSetVariables, Tcl_SourceRCFile): * unix/tclUnixPipe.c (TclpOpenFile,TclpCreateTempFile, TclpCreateProcess): * win/tclWinFile.c (TclpGetCwd,TclpMatchInDirectory): * win/tclWinInit.c (TclpInitLibraryPath,Tcl_SourceRCFile, TclpSetVariables): * win/tclWinPipe.c (TclpCreateProcess): Updated callers. 2002-01-24 Don Porter * generic/tclIOUtil.c (SetFsPathFromAny): Corrected tilde-substitution of pathnames where > 1 separator follows the ~. [Bug 504950] 2002-01-24 Jeff Hobbs * library/http/pkgIndex.tcl: * library/http/http.tcl: don't add port in default case to handle broken servers. http bumped to 2.4.1 [Bug #504508] 2002-01-23 Andreas Kupries * unix/mkLinks: Regenerated. * doc/CrtChannel.3: * doc/ChnlStack.3: Moved documentation for 'Tcl_GetTopChannel' from 'CrtChannel' to 'ChnlStack'. Added documentation of 'Tcl_GetStackedChannel'. Bug #506147 reported by Mark Patton . 2002-01-23 Don Porter * win/tclWinFile.c (NativeAccess,NativeStat,NativeIsExec, TclpGetUserHome): * win/tclWinPort.h (TclWinSerialReopen): * win/tclWinSerial.c (TclWinSerialReopen): * win/tclWinSock.c (Tcl_OpenTcpServer): Corrections to earlier TIP 27 changes. Thanks to Andreas Kupries for the feedback. * generic/tclPlatDecls.h: make genstubs * doc/GetHostName.3: * doc/GetOpnFl.3: * doc/OpenTcp.3: * tcl.decls (Tcl_GetHostName,Tcl_GetOpenFile,Tcl_OpenTcpClient, Tcl_OpenTclServer): * mac/tclMacSock.c (CreateSocket,Tcl_OpenTcpClient,Tcl_OpenTcpServer, Tcl_GetHostName,GetHostFromString): * unix/tclUnixChan.c (CreateSocket,CreateSocketAddress, Tcl_OpenTcpClient,Tcl_OpenTcpServer,Tcl_GetOpenFile): * unix/tclUnixSock.c (Tcl_GetHostName): * win/tclWinSock.c (CreateSocket,CreateSocketAddress, Tcl_OpenTcpClient,Tcl_OpenTcpServer,Tcl_GetHostName): Updated socket interfaces according to TIP 27. * generic/tclCmdIL.c (InfoHostnameCmd): Updated callers. * generic/tclDecls.h: make genstubs 2002-01-21 David Gravereaux * generic/tclLoadNone.c: TclpLoadFile() didn't match proto of typedef Tcl_FSLoadFileProc. OK'd by vincentdarley. [Patch #502488] 2002-01-21 Andreas Kupries * generic/tclIO.c (WriteChars): Fix for SF #506297, reported by Martin Forssen . The encoding chosen in the script exposing the bug writes out three intro characters when TCL_ENCODING_START is set, but does not consume any input as TCL_ENCODING_END is cleared. As some output was generated the enclosing loop calls UtfToExternal again, again with START set. Three more characters in the out and still no use of input ... To break this infinite loop we remove TCL_ENCODING_START from the set of flags after the first call (no condition is required, the later calls remove an unset flag, which is a no-op). This causes the subsequent calls to UtfToExternal to consume and convert the actual input. 2002-01-21 Don Porter * generic/tclTest.c: Converted declarations of TestReport file system to more portable form. [Bug 501417]. * generic/tcl.decls (Tcl_TraceCommand,Tcl_UntraceCommand, Tcl_CommandTraceInfo): * generic/tclCmdMZ.c (Tcl_TraceCommand,Tcl_UntraceCommand, Tcl_CommandTraceInfo): Updated APIs in generic/tclCmdMZ.c according to the guidelines of TIP 27. * generic/tclDecls.h: make genstubs 2002-01-18 Don Porter * win/tclWinChan.c: * win/tclWinFCmd.c: * win/tclWinFile.c: Overlooked callers of Tcl_FSGetNativePath * win/tclWinDde.c: * win/tclWinReg.c: Overlooked callers of Tcl_GetIndexFromObj 2002-01-18 Daniel Steffen * generic/tclThreadTest.c: * mac/tclMacChan.c: * mac/tclMacFCmd.c: * mac/tclMacFile.c: * mac/tclMacLoad.c: * mac/tclMacResource.c: TIP 27 CONSTification broke the mac build in a number of places. 2002-01-17 Andreas Kupries * generic/tclIOCmd.c (Tcl_GetsObjCmd): Fixed bug #504642 as reported by Brian Griffin , using his patch. Before the patch the generic I/O layer held an unannounced reference to the interp result to store the read line into. This unfortunately has disastrous results if the channel driver executes a tcl script to perform its operation, this freeing the interp result. In that case we are dereferencing essentially a dangling reference. It is not truly dangling because the object is in the free list, but this only causes us to smash the free list and have the error occur later somewhere else. The patch simply creates a new object for the line and later sets it into the interp result when we are done with reading. 2002-01-16 Mo DeJong * unix/tcl.m4 (SC_LOAD_TCLCONFIG): * win/tcl.m4 (SC_LOAD_TCLCONFIG): Subst TCL_DBGX into TCL_STUB_LIB_FILE and TCL_STUB_LIB_FLAG variables so that an extension does not need to subst TCL_DBGX into its makefile. [Tk Bug 504356] 2002-01-16 Don Porter * doc/FileSystem.3: * doc/GetCwd.3: * doc/GetIndex.3: * generic/tcl.decls (Tcl_GetIndexFromObj, Tcl_GetIndexFromObjStruct, Tcl_GetCwd, Tcl_FSFileAttrStrings, Tcl_FSGetNativePath, Tcl_FSGetTranslatedStringPath): * generic/tcl.h (Tcl_FSFileAttrStringsProc): * generic/tclFCmd.c (TclFileAttrsCmd): * generic/tclIOUtil.c (Tcl_GetCwd,NativeFileAttrStrings, Tcl_FSFileAttrStrings,Tcl_FSGetTranslatedStringPath, Tcl_FSGetNativePath): * generic/tclIndexObj.c (Tcl_GetIndexFromObj,Tcl_GetIndexFromObjStruct): More TIP 27 updates in tclIOUtil.c and tclIndexObj.c that were overlooked before. [Patch 504671] ***POTENTIAL INCOMPATIBILITY*** Includes a source incompatibility in the tablePtr arguments of the Tcl_GetIndexFromObj* routines. * generic/tclDecls.h: make genstubs * generic/tclBinary.c (Tcl_BinaryObjCmd): * generic/tclClock.c (Tcl_ClockObjCmd): * generic/tclCmdAH.c (Tcl_EncodingObjCmd, Tcl_FileObjCmd): * generic/tclCmdIL.c (Tcl_InfoObjCmd,Tcl_LsearchObjCmd,Tcl_LsortObjCmd): * generic/tclCmdMZ.c (Tcl_TraceObjCmd,Tcl_RegexpObjCmd,Tcl_RegsubObjCmd, Tcl_StringObjCmd,Tcl_SubstObjCmd,Tcl_SwitchObjCmd, TclTraceCommandObjCmd,TclTraceVariableObjCmd): * generic/tclCompCmds.c (TclCompileStringCmd): * generic/tclEvent.c (Tcl_UpdateObjCmd): * generic/tclFileName.c (Tcl_GlobObjCmd): * generic/tclIO.c (Tcl_FileEventObjCmd): * generic/tclIOCmd.c (Tcl_SeekObjCmd,Tcl_ExecObjCmd,Tcl_SocketObjCmd, Tcl_FcopyObjCmd): * generic/tclInterp.c (Tcl_InterpObjCmd,SlaveObjCmd): * generic/tclNamesp.c (Tcl_NamespaceObjCmd): * generic/tclPkg.c (Tcl_PackageObjCmd): * generic/tclTest.c (Tcltest_Init,TestencodingObjCmd,TestgetplatformCmd, TestlocaleCmd,TestregexpObjCmd,TestsaveresultCmd, TestGetIndexFromObjStructObjCmd,TestReportFileAttrStrings): * generic/tclTestObj.c (TestindexObjCmd,TeststringObjCmd): * generic/tclTimer.c (Tcl_AfterObjCmd): * generic/tclVar.c (Tcl_ArrayObjCmd): * mac/tclMacFCmd.c (SetFileFinderAttributes): * unix/tclUnixChan.c (TclpOpenFileChannel): * unix/tclUnixFCmd.c (tclpFileAttrStrings): * unix/tclUnixFile.c (TclpObjAccess,TclpObjChdir,TclpObjStat, TclpObjLstat): * win/tclWinFCmd.c (tclpFileAttrStrings): Updated callers. * doc/RegExp.3: * doc/Utf.3: * generic/tcl.decls: * generic/tclInt.decls: * generic/tclRegexp.c: * generic/tclUtf.c: Updated APIs in generic/tclUtf.c and generic/tclRegexp.c according to the guidelines of TIP 27. [Patch 471509] * generic/regc_locale.c (element,cclass): * generic/tclCmdMZ.c (Tcl_StringObjCmd): * generic/tclFileName.c (TclpGetNativePathType,SplitMacPath): * generic/tclIO.c (ReadChars): * mac/tclMacLoad.c (TclpLoadFile): * win/tclWinFile.c (TclpGetUserHome): Updated callers. * generic/tclDecls.h: * generic/tclIntDecls.h: make genstubs * doc/ParseCmd.3 (Tcl_ParseVar): * generic/tcl.decls (Tcl_ParseVar): * generic/tclParse.c (Tcl_ParseVar): * generic/tclTest.c (TestparsevarObjCmd): Updated APIs in generic/tclParse.c according to the guidelines of TIP 27. Updated callers. [Patch 501046] * generic/tclDecls.h: make genstubs * generic/tcl.decls (Tcl_RecordAndEval): * generic/tclDecls.h: make genstubs * generic/tclHistory.c (Tcl_RecordAndEval): Updated APIs in generic/tclHistory.c according to the guidelines of TIP 27. [Patch 504091] * doc/CrtSlave.3: * generic/tcl.decls (Tcl_CreateAlias, Tcl_CreateAliasObj, Tcl_CreateSlave, Tcl_GetAlias, Tcl_GetAliasObj, Tcl_GetSlave): * generic/tclInterp.c (Tcl_CreateAlias, Tcl_CreateAliasObj, Tcl_CreateSlave, Tcl_GetAlias, Tcl_GetAliasObj, Tcl_GetSlave): Updated APIs in the file generic/tclInterp.c according to the guidelines of TIP 27. [Patch 501371] ***POTENTIAL INCOMPATIBILITY*** Includes a source incompatibility in the targetCmdPtr arguments of the Tcl_GetAlias* routines. * generic/tclDecls.h: make genstubs 2002-01-15 Don Porter * doc/SetErrno.3 (Tcl_ErrnoMsg): Corrected documentation for Tcl_ErrnoMsg; it takes an integer argument. Thanks to Georgios Petasis. [Bug 468183] * doc/AddErrInfo.3 (Tcl_PosixError): * doc/Eval.3 (Tcl_EvalFile): * doc/FileSystem.c (Tcl_FSOpenFileChannel,Tcl_FSOpenFileChannelProc): * doc/OpenFileChnl.3 (Tcl_OpenFileChannel): * doc/SetErrno.3 (Tcl_ErrnoId,Tcl_ErrnoMsg): * doc/Signal.3 (Tcl_SignalId,Tcl_SignalMsg): * generic/tcl.decls (Tcl_ErrnoId,TclErrnoMsg,Tcl_EvalFile, Tcl_OpenFileChannel,Tcl_PosixError,Tcl_SignalId,Tcl_SignalMsg, Tcl_FSOpenFileChannel): * generic/tcl.h (Tcl_FSOpenFileChannelProc): * generic/tclIO.c (FlushChannel): * generic/tclIOUtil.c (Tcl_OpenFileChannel,Tcl_EvalFile,TclGetOpenMode, Tcl_PosixError,Tcl_FSOpenFileChannel): * generic/tclInt.decls (TclGetOpenMode): * generic/tclInt.h (TclOpenFileChannelProc_,TclGetOpenMode, TclpOpenFileChannel): * generic/tclPipe.c (TclCleanupChildren): * generic/tclPosixStr.c (Tcl_ErrnoId,Tcl_ErrnoMsg,Tcl_SignalId, Tcl_SignalMsg): * generic.tclTest.c (PretendTclpOpenFileChannel, TestOpenFileChannelProc1,TestOpenFileChannelProc2, TestOpenFileChannelProc3,TestReportOpenFileChannel): * mac/tclMacChan.c (TclpOpenFileChannel): * unix/tclUnixChan.c (TclpOpenFileChannel): * win/tclWinChan.c (TclpOpenFileChannel): Updated APIs in generic/tclIOUtil.c and generic/tclPosixStr.c according to the guidelines of TIP 27. Updated callers. [Patch 499196] * generic/tclDecls.h: * generic/tclIntDecls.h: make genstubs * doc/CrtChannel.3: * doc/OpenFileChnl.3: * generic/tcl.decls: * generic/tclIO.h: * generic/tclIO.c (DoWrite, Tcl_RegisterChannel, Tcl_GetChannel, Tcl_CreateChannel, Tcl_GetChannelName, CloseChannel, Tcl_Write, Tcl_WriteRaw, Tcl_Ungets, Tcl_BadChannelOption, Tcl_GetChannelOption, Tcl_SetChannelOption, Tcl_GetChannelNamesEx, Tcl_ChannelName): Updated APIs in the file generic/tclIO.c according to the guidelines of TIP 27. Several minor documentation corrections as well. [Patch 503565] * generic/tclDecls.h: make genstubs * generic/tcl.h (Tcl_DriverOutputProc, Tcl_DriverGetOptionProc, Tcl_DriverSetOptionProc): * generic/tclIOGT.c (TransformOutputProc, TransformGetOptionProc, TransformSetOptionProc): * mac/tclMacChan.c (FileOutput, StdIOOutput): * man/tclMacSock.c (TcpGetOptionProc, TcpOutput): * unix/tclUnixChan.c (FileOutputProc, TcpGetOptionProc, TcpOutputProc, TtyGetOptionProc, TtySetOptionProc): * unix/tclUnixPipe.c (PipeOuputProc): * win/tclWinChan.c (FileOutputProc): * win/tclWinConsole.c (ConsleOutputProc): * win/tclWinPipe.c (PipeOuputProc): * win/tclWinSerial.c (SerialOutputProc, SerialGetOptionProc, SerialSetOptionProc): * win/tclWinSock.c (TcpGetOptionProc, TcpOutput): Updated channel driver interface according to the guidelines of TIP 27. See also [Bug 500348]. * doc/CrtChannel.3: * generic/tcl.h: * generic/tclIO.c: * generic/tclIO.h: * generic/tclInt.h: * tools/checkLibraryDoc.tcl: Moved Tcl_EolTranslation enum declaration from generic/tcl.h to generic/tclInt.h (renamed to TclEolTranslation). It is not used anywhere in Tcl's public interface. 2002-01-14 Don Porter * doc/GetIndex.3: * doc/WrongNumArgs.3: * generic/tcl.decls (Tcl_GetIndexFromObj, Tcl_GetIndexFromObjStruct, Tcl_WrongNumArgs): * generic/tclIndexObj.c (Tcl_GetIndexFromObj, Tcl_GetIndexFromObjStruct, Tcl_WrongNumArgs): Updated APIs in the file generic/tclIndexObj.c according to the guidelines of TIP 27. [Patch 501491] * generic/tclDecls.h: make genstubs 2002-01-11 Mo DeJong * unix/configure: Regen. * unix/configure.in: * win/configure: Regen. * win/configure.in: Use ${libdir} instead of ${exec_prefix}/lib to properly support the --libdir option to configure. [Bug 489370] 2002-01-11 Andreas Kupries * win/tclWinSerial.c (SerialSetOptionProc): Applied patch for SF bug #500348 supplied by Rolf Schroedter . The function modified the contents of the the 'value' string and now does not do this anymore. This is a followup to the change made on 2001-12-17. 2002-01-11 David Gravereaux * win/makefile.vc: Removed -GD compiler option. It was intended for future use, but MS is again changing the future at their whim. The D4002 warning was harmless though, but someone using VC .NET logged it as a concern. [Bug #501565] 2002-01-11 Mo DeJong * unix/Makefile.in: Burn Tcl build directory into tcltest executable to avoid crashes caused by ld loading a previously installed version of the tcl shared library. [Bug 218110] 2002-01-10 Don Porter , Kevin Kenny * unix/tclLoadDld.c (TclpLoadFile): syntax error: unbalanced parens. Kevin notes that it's far from clear that this file is ever included in an actual build; Linux without dlopen appears to be a nonexistent configuration. 2002-01-08 Don Porter , Kevin Kenny * doc/StaticPkg.3 (Tcl_StaticPackage): * generic/tcl.decls (Tcl_StaticPackage): * generic/tclDecls.h (Tcl_StaticPackage): * generic/tclInt.decls (TclGuessPackageName): * generic/tclInt.h (TclGuessPackageName): * generic/tclLoad.c (Tcl_StaticPackage): * generic/tclLoadNone.c (TclGuessPackageName): * mac/tclMacLoad.c (TclGuessPackageName): * unix/tclLoadAout.c (TclGuessPackageName): * unix/tclLoadDl.c (TclGuessPackageName): * unix/tclLoadDld.c (TclGuessPackageName): * unix/tclLoadDyld.c (TclGuessPackageName): * unix/tclLoadNext.c (TclGuessPackageName): * unix/tclLoadOSF.c (TclGuessPackageName): * unix/tclLoadShl.c (TclGuessPackageName): * win/tclWinLoad.c (TclGuessPackageName): Updated APIs in the files */tcl*Load*.c according to the guidelines of TIP 27. [Patch 501096] 2002-01-09 Don Porter * generic/tclTest.c (MainLoop): * tests/main.test (Tcl_Main-1.{3,4,5,6}): Corrected some non-portable tests from the new Tcl_Main changes. Thanks to Kevin Kenny. 2002-01-07 Don Porter * generic/tclEvent.c (TclInExit): * generic/tclIOUtil.c (SetFsPathFromAbsoluteNormalized, SetFsPathFromAny,Tcl_FSNewNativePath,DupFsPathInternalRep): * generic/tclListObj.c (TclLsetList,TclLsetFlat): Added some type casts to satisfy picky compilers. * generic/tclMain.c: Bug fix: neglected the NULL case in TclGetStartupScriptFileName(). Broke Tk/wish. 2002-01-05 Don Porter * doc/Tcl_Main.3: * generic/tclMain.c: Substantial rewrite and expanded documentation of Tcl_Main to correct a number of bugs and flaws: * Interactive Tcl_Main can now enter a main loop, exit that loop and continue interactive operations. The loop may even exit in the midst of interactive command typing without loss of the partial command. [Bugs 486453, 474131] * Tcl_Main now gracefully handles deletion of its master interpreter. * Interactive Tcl_Main can now operate with non-blocking stdin * Interactive Tcl_Main can now detect EOF on stdin even in mid-command. [Bug 491341] * Added VFS-aware internal routines for managing the startup script selection. * Tcl variable 'tcl_interactive' is now linked to C variable 'tty' so that one can disable/enable interactive prompts at the script level when there is no startup script. This is meant for use by the test suite. * Consistent use of the Tcl libraries standard channels as returned by Tcl_GetStdChannel(); as opposed to the channels named 'stdin', 'stdout', and 'stderr' in the master interp, which can be different or unavailable. * Tcl_Main now calls Tcl_Exit() if evaluation of [exit] in the master interpreter returns, assuring Tcl_Main does not return. * Documented Tcl_Main's absence from public stub table * Documented that Tcl_Main does not return. * Documented Tcl variables set by Tcl_Main. * All prompts are done from a single procedure, Prompt. * Use of Tcl_Obj-enabled interfaces everywhere. * generic/tclInt.decls (TclGetStartupScriptPath, TclSetStartupScriptPath): New internal VFS-aware routines for managing the startup script of Tcl_Main. * generic/tclIntDecls.h: * generic/tclStubInit.c: make genstubs * generic/tclTest.c (TestsetmainloopCmd,TestexitmainloopCmd, Tcltest_Init,TestinterpdeleteCmd): * tests/main.test (new): Added new file to test suite that thoroughly tests generic/tclMain.c; added some new test commands for testing Tcl_SetMainLoop(). 2002-01-04 Don Porter * doc/Alloc.3: * doc/Concat.3: * doc/CrtMathFnc.3: * doc/Hash.3: * doc/Interp.3: * doc/LinkVar.3: * doc/ObjectType.3: * doc/PkgRequire.3: * doc/Preserve.3: * doc/SetResult.3: * doc/SplitList.3: * doc/SplitPath.3: * doc/TCL_MEM_DEBUG.3: Updated documentation to describe the ckalloc, ckfree, ckrealloc, attemptckalloc, and attemptckrealloc macros, and to accurately describe when and how they are used. [Bug 497459] * generic/tclThreadJoin.c (TclRememberJoinableThread,TclJoinThread): Replaced Tcl_Alloc and Tcl_Free calls with ckalloc and ckfree so that memory debugging is supported. 2002-01-04 Daniel Steffen * mac/tclMacTime.c (TclpGetTZName): fix for daylight savings TZName bug 2002-01-03 Don Porter * doc/FileSystem.3: * generic/tclIOUtil.c: Updated some old uses of "fileName" to new VFS terminology, "pathPtr". 2002-01-03 Donal K. Fellows * tests/basic.test (basic-39.4): Greatly simplified test while still leaving it so that it crashes when run without the fix to the [foreach] implementation. * generic/tclCmdAH.c (Tcl_ForeachObjCmd): Stopped Bug #494348 from happening by not trying to be so clever with cacheing; if nothing untoward is happening anyway, the less efficient technique will only add a few instruction cycles (one function call and a few derefs/assigns per list per iteration, with no change in the number of tests) and if something odd *is* going on, the code is now far more robust. * tests/basic.test (basic-39.4): Reproducable script from Bug #494348 2002-01-02 Donal K. Fellows * tests/util.test (Wrapper_Tcl_StringMatch,util-5.*): Rewrote so the test is performed with the right internal function since [string match] no longer uses Tcl_StringCaseMatch internally. * tests/string.test (string-11.51): * generic/tclUtf.c (Tcl_UniCharCaseMatch): * generic/tclUtil.c (Tcl_StringCaseMatch): Fault with matching case-insensitive non-ASCII patterns containing upper case characters. [Bug #233257] 2001-12-28 Jeff Hobbs * library/init.tcl: make sure env(COMSPEC) on Windows is executed with the right case, as it may otherwise fail inexplicably. 2001-12-28 Don Porter * generic/tclCkalloc.c (MemoryCmd, TclFinalizeMemorySubsystem): Added the [memory onexit] command, intended to replace [checkmem]. * doc/DumpActiveMemory.3: * doc/memory.n: Updated documentation for [memory] and related matters. [Bug 487677] * mac/tclMacBOAMain.c (Tcl_Main, CheckmemCmd): Removed all the machinery for the [checkmem] command that is completely duplicated by code in generic/tclCkalloc.c. * generic/tclBinary.c: * generic/tclListObj.c: * generic/tclObj.c: * generic/tclStringObj.c: Removed references to [checkmem] in comments, referencing [memory active] instead, since it is documented. 2001-12-28 Daniel Steffen * mac/tclMacInit.c: * mac/tclMacTclCode.r: synced up tclInit features to unix/win: implemented TclSetPreInitScript support, use of existing tclInit proc if defined, check of default encoding dir if set. Changed script library resource names to lowercase (i.e. same as corresponding files). Used Tcl_JoinPath instead of string append. Check that system encoding could be loaded before utf translating the LibraryPath. * mac/tclMacApplication.r: * mac/tclMacLibrary.r: * mac/tclMacOSA.r: * mac/tclMacResource.r: minor version resources cleanup 2001-12-21 Mo DeJong * unix/tcl.m4 (SC_PATH_TCLCONFIG, SC_PATH_TKCONFIG): Search for config file using exec_prefix instead of prefix when no --with-tcl or --with-tk argument is used. [Bug 492418] 2001-12-21 Daniel Steffen * unix/tcl.m4: fixed incorrect SHLIB_LD_LIBS setting for MacOSX / Darwin. * unix/configure: Regen. * unix/mkLinks.tcl: improved case-insensitive filesystem support. * unix/mkLinks: Regen. 2001-12-19 Don Porter * unix/Makefile.in (dist): corrected use of eolFix.tcl on working files. It should operate on distributed files. [Bug 495120] 2001-12-19 David Gravereaux * tools/tcl.wse.in: Fix for #495120. tcl.wse.in was stored in cvs with improper . This resulted in corrupted when checked-out on translating CVS clients such as windows (CRCRLF) and mac (CRCR). 2001-12-19 Mo DeJong * unix/configure: * unix/tcl.m4 (SC_CONFIG_CFLAGS): Update SunOS 5.[0-6] target so that correct linker options are passed to gcc or ld. [Tk Bug 220863] 2001-12-19 Mo DeJong * unix/README: Update to account for changes in the unix/dltest directory, the way autoconf is run, and the new "make shell" target. 2001-12-19 Mo DeJong * unix/Makefile.in: Rename dltest to dlpkgs to fix problem where lib files were not getting built because dltest/ directory already existed. 2001-12-19 Jeff Hobbs * win/tclWinSerial.c (SerialCheckProc): corrected time calculations to be unsigned. (schroedter) 2001-12-18 Mo DeJong * unix/Makefile.in: Define new dltest target that simply does a cd to dltest/ before running make. There is no need for the separate configure script that was previously being used. * unix/configure: Regen. * unix/configure.in: Subst into dltest/Makefile. * unix/dltest/Makefile.in: Define LIBS using DL_LIBS, LIBS, and MATH_LIBS variables instead of TCL_LIBS variable from tclConfig.sh. * unix/dltest/README: Update readme to account for new configure free implementation. * unix/dltest/configure: Removed. * unix/dltest/configure.in: Removed. 2001-12-18 Donal K. Fellows * generic/tcl.h (TCL_STUB_MAGIC): Added cast to force type to be an int and get rid of a persistent and pointless warning with SunPro compiler. * generic/tclCkalloc.c (Tcl_AttemptDbCkalloc,Tcl_AttemptDbCkrealloc): * generic/tcl.decls (Tcl_AttemptDbCkalloc,Tcl_AttemptDbCkrealloc): Made the file parameters to these functions into CONST char *, like they always should have been to match the other Tcl*Db* API functions. 2001-12-17 Andreas Kupries * Applied #219311 on behalf of Rolf Schroedter to prevent fcopy on serial ports from flooding the event queue. 2001-12-11 Miguel Sofer * doc/CrtInterp.3: * generic/tclBasic.c: docs and comments corrections [Bug 493412] Bug & patch by Don Porter. 2001-12-14 Donal K. Fellows * win/tclWinNotify.c (Tcl_FinalizeNotifier): Stop Tcl on Windows from crashing when shutdown from a non-Tcl thread. Fixes Bug #217982 [orig. 5804] reported by Hugh Vu and Gene Leache. I'm not convinced that the shutdown process is right even with this, but it was definitely wrong without... 2001-12-13 Andreas Kupries * win/tclWinSock.c (TcpGetOptionProc): Fix for tcl bug item #478565 reported by an unknown person. Bypasses all calls to "gethostbyaddr" for address "0.0.0.0" to prevent delays on Win/NT. 2001-12-12 Jeff Hobbs * doc/Preserve.3: doc'd TCL_DYNAMIC use. [Patch #483989] (porter) 2001-12-12 Andreas Kupries * generic/tclIO.c (Tcl_GetsObj): Applied patch for bug #491341 as provided by Don Porter . Fixes the assumption of having an empty Tcl_Obj to work with. 2001-12-11 Miguel Sofer * generic/tclCompCmds.c: * generic/tclCompile.c: * generic/tclExecute.c: consistency patch, to make all instructions that pop a variable number of Tcl_Obj's off the execution stack take the number of popped objects as first operand. Modified *only* the new instructions INST_LIST_INDEX_MULTI and INST_LSET_FLAT, so this has no effect on bytecodes generated up to tcl8.4a3 inclusive. * generic/tclExecute.c: fix debug messages in INST_LSET_LIST. * generic/tclCompCmds.c (TclCompileLindexCmd): * generic/tclCompExpr.c (CompileMathFuncCall): removed the last two overestimates of the necessary stack depth for bytecodes in the fix of [Bug 483611]. 2001-12-10 Andreas Kupries * unix/tclUnixPipe.c (TclpCreateProcess): Applied Don Porter's patch fixing bug #437489. 2001-12-10 Miguel Sofer * generic/tclEvent.c: * tests/event.test: fix background error reporting in the absence of a bgerror proc [Bug 219142]. 2001-12-10 Don Porter * doc/Access.3: * doc/CrtChannel.3: * doc/DString.3: * doc/ExprLong.3: * doc/FileSystem.3: * doc/GetStdChan.3: * doc/OpenFileChnl.3: * doc/StdChannels.3: * doc/TCL_MEM_DEBUG.3: * doc/Tcl_Main.3: * doc/Utf.3: * doc/file.n: * doc/tclsh.1: Several typo and formatting corrections discovered during conversion to TMML. Thanks to Joe English. [Patch 490514] * unix/mkLinks: 'make mklinks' 2001-12-10 Miguel Sofer * generic/tclCompCmds.c: * generic/tclCompExpr.c: * generic/tclCompile.c: * generic/tclCompile.h: * generic/tclExecute.c: * generic/tclProc.c: fixed the calculation of the maximal stack depth required by bytecodes [Bug 483611]. 2001-12-07 Miguel Sofer * generic/tclVar.c: * tests/trace.test: restored consistency in refCount accounting by array traces [Bug #4484339], submitted by Don Porter. 2001-12-06 Donal K. Fellows * tests/parseExpr.test, tests/for.test, tests/expr.test: * tests/expr-old.test, tests/compile.test, tests/compExpr.test * tests/compExpr-old.test: Kept up to date with syntax errors. * generic/tclParseExpr.c (ParsePrimaryExpr): Rewrote to give even better syntax errors in the fairly common case of an identifier without decorations by guessing based on the currently available functions. Also made messages consistent between memdebug and ordinary builds. 2001-12-05 Miguel Sofer * generic/tclVar.c: * tests/trace.test: new algorithm for [array get], safe when there are traces that modify the array [Bug #449893]. 2001-12-04 Donal K. Fellows * tests/compExpr-old.test, tests/compExpr.test, tests/compile.test: * tests/expr-old.test, tests/expr.test, tests/for.test: * tests/while.test, tests/if.test: Rewrite to handle more specific syntax errors. * tests/parseExpr.test: Rewrite to get rid of dup test numbers and handle more specific syntax errors. * generic/tclParseExpr.c (LogSyntaxError): Added a detail message argument to help explain what the syntax error is. (Tcl_ParseExpr, ParseCondExpr, ParsePrimaryExpr): Added detail messages. (UNKNOWN_CHAR): New lexeme for characters that are always illegal in expressions outside strings. 2001-12-03 Donal K. Fellows * doc/expr.n: Various documentation improvements in relation to the function calls. Includes fix for Bug #487704 submitted by Devin Eyre. 2001-12-03 David Gravereaux * win/makefile.vc: Some install target bugs repaired along with $(TCLSTUBLIB) added to the dependencies rather than implicit through the dde and reg extensions which don't happen to always require it for some build types. 2001-11-30 Miguel Sofer * generic/tclVar.c: Tcl_Preserve'ing VarTrace structures to avoid memory corruption. Patch for [Bug: 484334] provided by Don Porter 2001-11-29 Miguel Sofer * tests/namespace.test: modified namespace-41.2, added 41.3 {knownbug} after discussion with Don Porter and Kevin Kenny. 2001-11-29 Miguel Sofer * tests/namespace.test: added namespace-41.2, a simpler test for [Bug: 231259] 2001-11-29 Donal K. Fellows * generic/tclBinary.c (BINARY_SCAN_MAX_CACHE, Tcl_BinaryObjCmd, ScanNumber): Added caching scheme to reduce number of object allocations when doing scans of large repetitive binary strings. See comments in file for reasoning behind implementation. Suggested by Miguel Sofer in Patch #429916, but independently implemented. 2001-11-28 Donal K. Fellows * doc/regsub.n, doc/regexp.n: Converted dangling references to METASYNTAX section into references to the re_syntax manual page. 2001-11-27 D. Richard Hipp * win/tclWinFCmd.c: Fix a coredump in the filename normalizer code for Win95/98. 2001-11-27 David Gravereaux * win/makefile.vc: Removed the Tk reference for the 'winhelp' target. Converge at install will need to be the solution for Tk and all other extensions. 2001-11-27 Donal K. Fellows * tests/cmdAH.test (cmdAH-24.2): Made test less sensitive to OS preemption, but perfection isn't practical [Bug 463189, reported by Don Porter.] * tests/switch.test (switch-9.*): Added tests to exercise more of the argument checking. (switch-7.2,switch-7.3): Test changed behaviour slightly. * generic/tclCmdMZ.c (Tcl_SwitchObjCmd): Reworked argument parsing to be stricter about what it accepts. This should make uses of the [switch] command be more maintainable. [Bug 475397, reported by Don Porter.] 2001-11-26 Don Porter * generic/tclIntPlatDecls.h: 'make genstubs' after changes in 2001-11-23 commit from Daniel Steffen. 2001-11-24 Mo DeJong * unix/Makefile.in: Add comments to better describe TCL_EXE and when it should be available. * win/Makefile.in: Add TCL_EXE variable to be used by rules like `make genstubs`. Don't set TCL_LIBRARY before running `make genstubs` since we will be running with a tclsh from the PATH not the one we build. 2001-11-24 Mo DeJong * win/configure: Regen. * win/tcl.m4 (SC_CONFIG_CFLAGS): Add comctl32.lib to wish link libs. This change was originally added to Tk on 2001-11-09 but was not committed to Tcl. 2001-11-23 Daniel Steffen * unix/Makefile.in: * unix/configure.in: * unix/install-sh: * unix/mkLinks: * unix/mkLinks.tcl: * unix/tclLoadDyld.c: * unix/tclMtherr.c: Mac OSX support: build system, dynamic code loading and support for case-insensitive filesystems in mkLinks (patch #435258) 2001-11-23 Daniel Steffen Up-port to 8.4 of mac code changes for 8.3.3 & various new changes for 8.4, some already backported to 8.3.4 (patch #435658) * generic/tclObj.c: added #include to fix missing prototype errors * generic/tcl.h: MAC_TCL: addition of ConditionalMacros.h and use of DLLIMPORT and DLLEXPORT like on other platforms. ( => no longer need the .exp files and can remove use of #pragma export that never worked well) removed line continuation in #if clause as this breaks the mac resource compiler (note that *.r files include tcl.h) * mac/tclMacFile.c: fixed bug in permission checking code * mac/tclMacLoad.c: corrected utf8 handling, comparison of package names to code fragment names changed to only match on the length of package name, this allows for fragment names with version numbers appended * mac/tclMacInt.h: * generic/tclInt.h: * mac/tclMacTime.c: * generic/tclIOUtil.c: moved declaration of TclpGetGMTOffset() * mac/tclMacShLib.exp: * mac/tclMacOSA.exp: * mac/tclMacMSLPrefix.h: removed files * unix/Makefile.in: removed reference to .exp files * mac/MW_TclBuildLibHeader.h: * mac/MW_TclBuildLibHeader.pch: * mac/MW_TclHeaderCommon.h: * mac/MW_TclStaticHeader.h: * mac/MW_TclStaticHeader.pch: new precompiled header files * mac/MW_TclAppleScriptHeader.pch: * mac/MW_TclHeader.pch: * mac/MW_TclTestHeader.pch: * mac/tclMacCommonPch.h: revised precompiled header handling: now include a common header file 'MW_TclHeaderCommon.h' from all .pch files, the .pch files themselves now only setup #defines (e.g. BUILD_tcl, STATIC_BUILD, TCL_DEBUG, TCL_THREADS) like in makefiles on other platforms. * mac/tclMac.h: * mac/tclMacPort.h: * mac/tclMacInt.h: use of BUILD_tcl and TCL_STORAGE_CLASS like on other platforms, standardize #include'd files to what's done on other platforms, removed use of #pragma export. * mac/tcltkMacBuildSupport.sea.hqx: new archive of mac build support files & suggested build environment directory hierarchy: 'Building MacTclTk' & 'CW Pro6 changes' readme's. projects for MoreFiles 1.5.2 static & shared libraries. project & sources for 'pseudoCarbonSupport', see below. included XML versions of the projects for CW Pro5 or Pro7 users. * mac/tclMacProjects.sea.hqx: updated mac build project files: build support for CodeWarrior Pro6, UnivIntf 3.4 & shared runtime libraries: the MSL libraries and MoreFiles are no longer compiled into Tcl.shlb, all non-static binaries now use the Pro6 shared runtime libraries and MoreFiles.shlb. These shlbs are merged into the standard Wish and TclShell, but 3rd party applications linking with Tcl.shlb or Tk.shlb need to setup access to them. (see the "(sh-ppc)" targets for how to do this.) included XML versions of the projects for CW Pro5 or Pro7 users. use compat/strtod.c instead of MSL's strtod() use WASTE versions of MSL for tcl test target to avoid text buffer cutoff at 32k. Merging the full MSL.shlb and the other shlbs into Wish & TclShell makes them a bit larger than before, use unmerged binaries to avoid copying the shared code with every application, e.g. when deploying numerous Wish based droplets. Note that using CW Pro5 to compile extensions is in principle still possible, but need to link with Pro6 runtime libraries. Tclapplescript now loads and runs on CFM68k. Highly experimental "pseudoCarbon" support for Tcl only on OS 8/9: binaries in "Build:(Carbon):" link against CarbonLib instead of InterfaceLib, however the actual code has not been carbonized! i.e. it will not run on OSX and may not even run properly with CarbonLib. This should in principle allow you to build & test OS9 CFM Carbon binaries that need to link with Tcl.shlb. On OSX you can use the native Tcl.framework, but you have to build a MachO binary as there is no CFM glue lib for Tcl.framework. the library pseudoCarbonSupport.shlb manually loads the symbols from InterfaceLib that are not in CarbonLib but are needed by the uncarbonized code in Tcl.shlb and TclShell. * generic/tclMain.c: MAC_TCL: workaround for broken/non-standard isatty on MW Pro6, #include instead of defining isatty * mac/tclMacPort.h: MW Pro6 changes for MSL fcntl.h, stat.h & isatty * mac/tclMacAppInit.c: add EXTERN to InstallConsole to enable DLL export via the TCL_STORAGE_CLASS mechanism. * mac/tclMacFCmd.c: fix for FSpDirectoryCopy API change * mac/tclMacLibrary.c: emit compile time error when TCL_REGISTER_LIBRARY and USE_TCL_STUBS are both defined at the same time in an extension, this use is not currently supported and will result in a crash when dynamically loading the extension. * mac/tclMacApplication.r: * mac/tclMacLibrary.r: * mac/tclMacOSA.r: * mac/tclMacResource.r: fixed obsolete copyrights/dates in version strings; updated version strings to standard usage; added support for '(Support Libraries)' subfolder for shared runtime libraries in unmerged binaries; commented out demo setting of "Tcl Environment Variables"; reorganized resources among these files to avoid multiple copies in applications and shared libraries, the script libraries are now no longer duplicated in Tclsh but are only included in the resources of Tcl.shlb. * mac/tclMacChan.c: * mac/tclMacSock.c: cast for *BlockMode * mac/tclMacUtil.c: * mac/tclMacMath.h: removed obsolete hypot() definition * generic/tclIntPlatDecls.h: * generic/tclInt.decls: * generic/tclStubInit.c: * mac/tclMacNotify.c: * mac/tclMacOSA.c: * mac/tclMacUtil.c: * generic/tclThreadTest.c: renamed routines conflicting with standard Apple or MoreFiles headers (at compile or link time): GetGlobalMouse -> GetGlobalMouseTcl FSpGetDirectoryID -> FSpGetDirectoryIDTcl FSpOpenResFileCompat -> FSpOpenResFileCompatTcl FSpCreateResFileCompat -> FSpCreateResFileCompatTcl NewThread -> NewTestThread the renamed MoreFiles *Tcl routines are just wrappers calling into the MoreFiles DLL. * mac/tclMacCommonPch.h: * mac/tclMacThrd.c: * mac/tclMacPanic.c: removed OLDROUTINENAMES define, renamed obsolete apple API names to modern equivalents; UH3.4 support: added #include , updated New*Proc() calls to New*UPP(). * mac/tclMacUnix.c: added missing (Tcl_Obj ***) cast to Tcl_ListObjGetElements call * mac/tclMacAlloc.c: modernized TclpSysAlloc() to use temporary memory instead of system heap memory when available (MacOS >= 7.5 and possibly earlier, use of system heap has been discouraged for a long time and has many disadvantages, e.g. memory isn't paged out, and errors can very easily bring the system down); fixed crashing bug in TclpSysRealloc() and CleanUpExitProc() where memory was being accessed after having been deallocated; fixed memory leak in (de)allocation code (for every block ever allocated with TclpSysAlloc, a Ptr was leaked), if temporary memory is available, don't track allocated memory, instead use RecoverHandle() to get Handle from Ptr, otherwise use doubly linked list to correctly track memory and free all allocated memory; added new option for ConfigureMemory: MEMORY_DONT_USE_TEMPMEM, disables use of temporary memory even when it would be available, only necessary when writing e.g. a driver (using tcl??); increased fraction of application heap reserved for OS routines to 512K * compat/strftime.c: * mac/tclMacTime.c: * mac/tclMacPort.h: * generic/tclInt.decls: * generic/tclIntPlatDecls.h: * generic/tclStubInit.c: timezone support for mac via TclpGetTZName() like on windows, using an inverse timezone table adapted from tclDate.c to map gmtoffset in seconds gotten from the MacOS APIs to a timezone string, as there is no good way to get this info from MacOS. I had to make up some unusual timezones and arbitrarily decide on the most standard of the multiple choices available for every timezone. * generic/tclExecute.c: workaround for a MSL bug/misfeature: for very small floats, MSL can return errno ERANGE but a non-zero value ( < LDBL_MIN however) * mac/tclMacAppInit.c: support for WASTE text library using temporary memory, setting has no effect if WASTE is not used. * mac/tclMacPanic.c: removed duplicate code from generic/tclPanic.c and added that file to projects instead. * tests/all.tcl: set tcltest::singleProcess 1 as multiple processes are not available on the mac. * tests/cmdAH.test: access time not available on the mac, skip the atime touch test * tests/appendComp.test: * tests/cmdMZ.test: * tests/compile.test: * tests/exec.test: * tests/fileName.test: * tests/lset.test: * tests/namespace.test: * tests/tcltest.test: added missing cleanups/tests/catches that caused tests to fail on the mac. * doc/tclvars.n: doc bug, env(PWD) should be env(HOME) [Bug 463834] 2001-11-21 Don Porter * tests/trace.test (trace-8.8): Corrected test for Bug 219393. * generic/tclBasic.c (Tcl_DeleteCommandFromToken,CallCommandTraces): * generic/tclCmdMZ>c (Tcl_UntraceCommand): Added Tcl_Preserve and Tcl_Release calls to prevent deletion of CommandTrace structures until all callers are done using them, preventing memory corruption. [Bug 453805] 2001-11-20 Kevin B. Kenny * doc/GetTime.3 (Tcl_GetTime): * generic/tcl.decls (Tcl_GetTime): * generic/tclClock.c (Tcl_ClockObjCmd): * generic/tclCompile.c (TclCleanupByteCode, TclInitByteCodeObj): * generic/tclCmdMZ.c (Tcl_TimeObjCmd): * generic/tclUtil.c (TclpGetTime): * generic/tclTest.c (GetTimesCmd): * generic/tclTimer.c (Tcl_CreateTimerHandler, TimerSetupProc, TimerCheckProc, TimerHandlerEventProc): * mac/tclMacNotify.c (Tcl_SetTimer): * mac/tclMacShLib.exp (Tcl_GetTime): * mac/tclMacTime.c (Tcl_GetTime): * unix/tclUnixChan.c (TclUnixWaitForFile): * unix/tclUnixEvent.c (Tcl_Sleep): * unix/tclUnixThrd.c (Tcl_ConditionWait): * unix/tclUnixTime.c (Tcl_GetTime): * win/tclWinNotify.c (Tcl_Sleep): * win/tclWinTest.c (TestwinclockCmd): * win/tclWinTime.c (TclpGetSeconds, TclpGetClicks, Tcl_GetTime): Changed all uses of TclpGetTime to Tcl_GetTime. Added Tcl_GetTime to the Stubs table and the library documentation. Added a TclpGetTime in tclUtil.c for backward compatibility of extensions. [Patch #483500, TIP#73] * generic/tclCmdMZ.c (Tcl_TimeObjCmd): Corrected an error in the [time] command that caused incorrect results to be returned if the total duration of all iterations exceeded 2**31 microseconds. [Bug #478847] * generic/tclInt.decls: * generic/tclInt.h: * generic/tclStubInit.h: Reran 'make genstubs' 2001-11-20 Miguel Sofer * generic/tclBasic.c * generic/tclCompile.h: * generic/tclExecute.c: moving all code relative to bytecodes from tclBasic.c to tclExecute.c - the functions RecordTracebackInfo and Tcl_ExprObj went to tclExecute.c, and new interface function was defined (TclCompEvalObj). The final objective of this sequence of moves is to provide a clean, clear-cut interface between Tcl's core and the compiler/engine subsystem. 2001-11-20 Miguel Sofer * generic/tclBasic.c * generic/tclCompile.h: * generic/tclExecute.c: factoring out of common code in tclBasic.c (new function TclInterpReady defined: it resets the interp's result, then checks that it hasn't been deleted and that the nesting level is acceptable). Passed the responsibility of calling it to the *callers* of TclEvalObjvInternal. 2001-11-20 Miguel Sofer * generic/tclBasic.c * generic/tclExecute.c: a better variant of the previous-to-last commit (restoring numLevels computations). The managing of the levels now has to be done by the *callers* of TclEvalObjvInternal 2001-11-20 Miguel Sofer * generic/tclExecute.c: missing variable declaration under TCL_COMPILE_DEBUG. 2001-11-20 Miguel Sofer * generic/tclExecute.c: * generic/tclProc.c: restoring the computations of iPtr->numLevels to the original logic (previous to buggy modifs on 2001-11-16). 2001-11-20 Jeff Hobbs * tools/eolFix.tcl (new-file): * unix/Makefile.in: added EOL correction for Windows bat files to dist target. [Bug #219409] (davygrvy) * unix/tclUnixInit.c (TclpSetInitialEncodings): update of patch from 2001-11-16 that uses the old Tcl encoding check mechanism as a fallback to the original. Also added a TCL_DEFAULT_ENCODING #define (defaults to iso8859-1). Tcl will first try setlocale and nl_langinfo, and if that fails, guess based on certain LANG|LC_* env vars. [Patch #418645] 2001-11-19 David Gravereaux * win/buildall.vc.bat: Added useful comments. 2001-11-19 Miguel Sofer * tests/compile.test: added a test for bug [Bug 483309] 2001-11-19 Vince Darley * win/tclWinFile.c: * win/tclWinFCmd.c: * win/tclWin32Dll.c: * doc/file.n: * tests/winFCmd.test: improved speed of file normalization for Win95/98, and clarified docs on differences in file normalization between NT/2000 and the older operating systems. Added test to ensure normalization is correct. 2001-11-19 Miguel Sofer * generic/tclBasic.c: * generic/tclParse.c: Code reorganisation. Moved all evaluation functions from tclParse.c to tclBasic.c, so that now tclParse.c deals exclusively with parsing and all evaluations are done by code in tclBasic.c. The functions moved are: TclEvalObjvInternal, Tcl_EvalObjv, Tcl_LogCommandInfo, Tcl_EvalTokensStandard, Tcl_EvalTokens, Tcl_EvalEx, Tcl_Eval, Tcl_EvalObj and Tcl_GlobalEvalObj. 2001-11-19 Donal K. Fellows * tests/trace.test (trace-8.8): Added adapted version of Bug #219393 as new test; the test won't reliably show up the old problem unless it is being run under something like Purify, but something is better than nothing... * generic/tclVar.c (Tcl_TraceVar2, Tcl_UntraceVar2): Added missing mask bits for trace result type and a check for a nonsense flag combination. * generic/tclCmdMZ.c (TraceVarProc): Added missing test for NULL when deleting a trace that doesn't cause an error. * doc/TraceVar.3: Added documentation for change due to TIP#68. * generic/tclCmdMZ.c (TraceVarInfo): Removed problematic errMsg field from structure. (TraceVarProc): Removed references to errMsg field and changed handling of errors so that they returned a Tcl_Obj* containing the error string. This minimizes the number of calls to the memory management subsystem. (TclTraceCommandObjCmd, TraceCommandProc): Removed references to errMsg field which was never used in command traces in any case. (Tcl_TraceObjCmd, TclTraceVariableObjCmd): Removed references to errMsg field and made variable traces register with TCL_TRACE_RESULT_OBJECT bit set. * generic/tcl.h (TCL_TRACE_RESULT_DYNAMIC,TCL_TRACE_RESULT_OBJECT): New constants to define how to handle the strings returned from trace callbacks [TIP#68] * generic/tclVar.c (CallTraces, Tcl_GetVar2Ex, TclGetIndexedScalar, TclGetElementOfIndexedArray, Tcl_SetVar2Ex, TclSetIndexedScalar, TclSetElementOfIndexedArray, Tcl_UnsetVar2, Tcl_ArrayObjCmd, TclDeleteVars, TclDeleteCompiledLocalVars, DeleteArray, TclVarTraceExists): Support for those new trace flags. 2001-11-19 Miguel Sofer * generic/tclCompCmds.c: patch for [Bug 483309] (petasis). 2001-11-16 Kevin B. Kenny * generic/tclListObj.c: removed a C++-style comment that was inadvertently left in the source code. 2001-11-16 Jeff Hobbs * tests/interp.test: * generic/tclInterp.c (SlaveObjCmd): Corrected argument checking for '$interp alias|aliases|issafe'. [Patch #479560] (thoyts, hobbs) * unix/tclUnixInit.c: added HAVE_LANGINFO code block. * unix/configure: regened * unix/configure.in: added SC_ENABLE_LANGINFO call * unix/tcl.m4: made SHLIB_LD_LIBS='${LIBS}' for FreeBSD* (meyer) Added modified version of Wagner patch to make use of nl_langinfo where possible to determine Unix platform encoding, instead of the inflexible built-in system. This is used by default when possible, and can be disabled with --enable-langinfo=no. [Patch #418645] (hobbs, wagner) 2001-11-16 Miguel Sofer * generic/tclCompile.h: * generic/tclExecute.c: * generic/tclObj.c: moved Tcl_GetCommandFromObj and all defining code for tclCmdNameType objects to tclObj.c (from tclExecute.c). This code has nothing to do with bytecodes. 2001-11-16 Miguel Sofer * generic/tclBasic.c: * generic/tclCompile.h: * generic/tclExecute.c: * generic/tclParse.c: * generic/tclProc.c: * tests/stack.test: consolidation of duplicated code (in TclExecuteByteCode and EvalObjv); renaming of EvalObjv to TclEvalObjv as it is not static anymore; restored consistency of level counts between compiled and directly evaled code. [Bug 480896] 2001-11-12 David Gravereaux * win/makefile.vc: * win/rules.vc: Small bug fixes. * win/README: added some docs pointing to the docs in makefile.vc for it's use. 2001-10-17 Kevin B. Kenny * doc/lappend.n: * doc/lindex.n: * doc/linsert.n: * doc/list.n: * doc/llength.n: * doc/lrange.n: * doc/lsearch.n: * doc/lset.n (new-file): * doc/lsort.n: * generic/tclBasic.c (builtInCmds, Tcl_EvalObjEx): * generic/tclCmdIL.c (Tcl_LindexObjCmd, Tcl_LindexList): (Tcl_LindexFlat, Tcl_LsetObjCmd): * generic/tclCompCmds.c (Tcl_CompileLindexCmd, Tcl_CompileLsetCmd): * generic/tclCompile.c: * generic/tclCompile.h: * generic/tclExecute.c (TclExecuteByteCode): * generic/tclInt.decls: * generic/tclInt.h: * generic/tclIntDecls.h: * generic/tclListObj.c (TclLsetList, TclLsetFlat, TclSetListElement): * generic/tclObj.c (TclInitObjSubsystem): * generic/tclStubInit.c: * generic/tclTestObj.c (TestobjCmd): * generic/tclUtil.c (TclGetIntForIndex, SetEndOffsetFromAny): * generic/tclVar.c (Tcl_LappendObjCmd): * tests/lindex.test: * tests/lset.test (new-file): * tests/lsetComp.test (new-file): * tests/obj.test: * tests/string.test: * tests/stringComp.test: Reference implementation of TIP's #22, #33 and #45. Adds the ability of the [lindex] command to have multiple index arguments, and adds the [lset] command. Both commands are byte-code compiled. [Patch #471874] (work by Kenny, commited by Hobbs) 2001-11-12 David Gravereaux * win/buildall.vc.bat(new): * win/makefile.vc: Small fix with deriving the "OriginalFilename" string in the .rc scripts. Added a quick batchfile for building the entire thing. 2001-11-12 Jeff Hobbs * doc/FileSystem.3: * doc/file.n: * doc/tcltest.n: converted use of \' to more reasonable format. 2001-11-10 Mo DeJong * unix/Makefile.in: * win/Makefile.in: Add "make gdb" target. This target can run tclsh inside either gdb or insight. 2001-11-10 David Gravereaux * win/makefile.vc: Added a check to make sure one runs the makefile from the /win directory only. * win/mkd.bat: * win/rmd.bat: Changes from Llyod Lim for better stability. [Patch #456759] 2001-11-09 David Gravereaux * win/makefile.vc: * win/tcl.dsp: winhelp target fixes for non-NT systems. It seems NMAKE under these remembers changed directories during commands. A new tcltest feature from Peter Spjuth to specify a pattern file from the commandline and redirecting output to a file when not under NT with it's scrollback console. Then it replays it, piped through more. Added 2 new static "configurations" to tcl.dsp. I could keep adding more, but I think we should leave it up to the user for customizing it. Sticky-points left: 'profile' option. 2001-11-09 Jeff Hobbs * doc/FileSystem.3: * doc/StdChannels.3: * doc/file.n: * doc/tcltest.n: * tools/man2help.tcl: * tools/man2help2.tcl: fixed winhelp generation problems [Patch #480268] * unix/configure: * unix/tcl.m4: added -lc to AIX libs, fixed path to ldAix 2001-11-09 Don Porter * tests/var.test: * generic/tclVar.c: Corrected bug in [global] when dealing with variable names matching :*. [Bug 480176] 2001-11-08 Mo DeJong Fixup stack size under OSF1. [Tcl patch 474790] * unix/configure: Regen. * unix/tcl.m4: Add HAVE_PTHREAD_ATTR_SETSTACKSIZE define to EXTRA_CFLAGS to adjust initial stack size. 2001-11-08 Mo DeJong Enable thread support under FreeBSD. [Tcl bug 473708] * unix/configure: Regen. * unix/tcl.m4 (SC_ENABLE_THREADS): Check for pthread functions in libc_r and enable thread support if found. * unix/dltest/Makefile.in: Set SHLIB_LD_LIBS and use it in the Makefile to properly link a shared library. 2001-11-08 Mo DeJong * unix/Makefile.in: * unix/dltest/Makefile.in: Avoid adding libc to the LIBS variable since it is not needed when linking with CC. If required when linking with LD it should be done on a case by case basis in tcl.m4. 2001-11-08 David Gravereaux * win/rules.vc: * win/makefile.vc: Fixed install target to adjust for the different build types. Added a 'linkexten' option to link the win extensions inside the shell when built static. Placed win/tclAppInit.c patch in SF patch DB for approval. 'profile' option not hooked in yet. Everything else know is done. * win/tcl.dsp(new): * win/tcl.dsw(new): Simple MsDev stub project files that calls makefile.vc. Will help run Tcl in the debugger easier without confusing MsDev for where the .pdb files are. 2001-11-07 Mo DeJong * unix/Makefile.in: * win/Makefile.in: Print a message indicating that the user should run "make genstubs" when the generated tclStubInit.c file is out of date. We can't regenerate automatically since there may be no tclsh on the system and that would cause bootstrap problems. [Tcl bug 465874] 2001-11-07 Mo DeJong Define TCL_INCLUDE_SPEC in tclConfig.sh. It should be included by extensions that need to find Tcl include headers in the install location. The user can override the include install dir with --includedir so we need to record this information for extensions. [Tcl bug 421835] * unix/configure: Regen. * unix/configure.in: Define TCL_INCLUDE_SPEC. * unix/tclConfig.sh.in: Define TCL_INCLUDE_SPEC. * win/configure: Regen. * win/configure.in: Define TCL_INCLUDE_SPEC. * win/tclConfig.sh.in: Define TCL_INCLUDE_SPEC. 2001-11-07 David Gravereaux * win/rules.vc: * win/makefile.vc: Dropped the NOMSVCRT macro and put it on the option list instead. It makes more sense to me this way as NOMSVCRT=0 would only be the valid setting. Fixed the dde and reg extension for building static. Improved, but not perfected, the winhelp target. 2001-11-07 Mo DeJong * win/README: Change minimum VC++ version to 5.X since 4.X is known not to work. Indicate that Mingw is required and building with Cygwin gcc is not supported. Include instructions that indicate how to install Mingw and what URLs folks should use to download the supported version of Mingw. * win/configure: Regen. * win/configure.in: Error out if user tries to compile the Windows version of Tcl with Cygwin gcc. Users should compile with Mingw gcc instead. 2001-11-06 Andreas Kupries * generic/tclIO.c (ReadChars): Fixed bug #478856 reported by Stuart Cassoff . The bug caused loss of fileevents when [read]ing less data from the channel than buffered. Due to an empty input buffer the flag CHANNEL_NEED_MORE_DATA was set but never reset, causing the I/O system to wait for more data instead of using a timer to synthesize fileevents and to flush the pending data out of the buffers. 2001-11-06 David Gravereaux * win/rules.vc (new): * win/makefile.vc: Complete over/under rewrite to support numerous build options all from the commandline itself without needing to edit the makefile. Now requires vcvars32.bat to be run prior to running nmake for bootstraping the environment. Fully doc'd usage for it is in makefile.vc. Commentary welcome. Sticky points left are: 1) winhelp target shows errors in the converting script. 2) .rc scripts aren't getting the right #defines to build the correct "OriginalFilename" strings. (have patch, won't commit yet) 3) Naming convention with suffixes describing the buildtype are 'tsdx' which will need public acceptance. ie. tclsh84tsx.exe is a (t) threaded shell (s) statically linked to the core and (x) uses msvcrt instead of libcmt. 2001-11-04 Vince Darley * library/init.tcl: made filesystem fallback proc ::tcl::CopyDirectory more robust to vagaries of non-native filesystems. 2001-11-02 Vince Darley * doc/file.n: * generic/tclIOUtil.c: updated documentation and comments to clarify behaviour of 'file copy' wrt soft links. 2001-10-29 Vince Darley * win/tclWinFile.c: fix to '-types {f r}' bug in TclpMatchInDirectory (which could cause a UMR, as well as returning wrong results). Also improved API for 'stat' to resolve [Bug#219258]. * win/tclWin32Dll.c * win/tclWinInt.h: addition of improved stat API to internal lookup table. * tests/fileName.test: two new tests for the above bug. * generic/tclIOUtil.c: some cleanup of comments and #ifdefs 2001-10-29 Donal K. Fellows * unix/tclUnixFile.c (TclpMatchInDirectory): Argument to access() was entryPtr->d_name instead of nativeEntry which failed when trying to check access for files in other than the current directory. [Bug 475941, reported by Georgios Petasis] 2001-10-25 Donal K. Fellows * unix/tclUnixChan.c: Added stateUpdated member to struct TtyState. (TtyCloseProc,TtySetOptionProc,TtyInit): Use stateUpdated member of TtyState to decide whether it is necessary to reset a serial port when Tcl closes it. Blindly resetting can cause Tcl to be sent an unexpected SIGTSTP when it is executing in the background [Bug 471374, reported by Chris Nelson] 2001-10-22 Andreas Kupries * doc/ObjectType.3: Minor documentation fix, reported by David N. Welton directly to me. 2001-10-22 Vince Darley * win/tclWinFCmd.c: fix to stop test suite from hanging process under some versions of WinNT. [Bug #466102] (Kevin Kenny) 2001-10-18 Jeff Hobbs * tests/clock.test (clock-8.1): * generic/tclDate.c (RelativeMonth): * generic/tclGetDate.y (RelativeMonth): corrected off-by-one-day error in clock scan with relative months and years during swing hours. [Bug #413397, Patch #414024] (lavana) 2001-10-18 Vince Darley * generic/tclIOUtil.c: fix to bug in Tcl_FSChdir shown up by recent tclkit builds. 2001-10-17 Jeff Hobbs * unix/tclUnixPipe.c (PipeInputProc, PipeOutputProc): do immediate retry when error is returned with errno == EINTR. [Bug #415131] (leger) 2001-10-16 Jeff Hobbs * unix/tclLoadAout.c (TclGuessPackageName): removed unused vars and fixed warnings. [Bug #446622] (lim) 2001-10-15 Miguel Sofer * generic/tclProc.c: changing a memcmp to strncmp to avoid a memory error detected by purify (thanks Jeff); modify style to agrre with the style guide. 2001-10-15 Andreas Kupries * generic/tclInt.decls (TclExpandCodeArray,TclGetInstructionTable): Added to internal stubs table. Tclcompiler (Tclpro project) needs them if used as loadable package under Windows. Changed signatures. We don't want to describe compiler internal structures in "tclInt.h". * generic/tclCompile.h: S.a. Removed function declarations. * generic/tclCompile.c: S.a. Adapted to changed signatures. 2001-10-15 Jeff Hobbs * unix/configure: * unix/configure.in: * win/configure: * win/configure.in: * win/tcl.m4: reworked to be a little cleaner in comparison to each other, and to AC_SUBST even empty vars for win/tclConfig.sh * generic/tclFileName.c: minor code cleanup * generic/tcl.h: moved #define of WIN32 to tcl.h where __WIN32__ is defined and added #ifndef check. * doc/open.n: moved all fconfigure option docs to fconfigure.n * doc/fconfigure.n: added serial config options * win/tclWinChan.c: * win/tclWinPort.h: * win/tclWinSerial.c: added TIP #35 Windows enhancements for serial configuration. [Patch #438509] (schroedter) 2001-10-15 Vince Darley * generic/tclFCmd.c: fix to memory leak in TclFileDeleteCmd on certain error conditions. * doc/FileSystem.3: fix to typo. 2001-10-12 Jeff Hobbs * library/encoding/ebcdic.enc: * tools/encoding/ebcdic.txt: EBCDIC charset mapping. [Patch #219323] (nijtmans) * library/encoding/tis-620.enc: * tools/encoding/tis-620.txt: TIS-620 charset mapping. [Patch #467423] (poonlap) * tests/http.test: added removeFile for outdata * tests/ioCmd.test: added catch around file removal, as Windows file locking throws errors. * tests/socket.test (socket-7.2): corrected to work on Win2K. 2001-10-12 Miguel Sofer * tests/compile.test: new tests for [Bug 467523]; they are only effective if TCL_MEM_DEBUG was set during compilation. 2001-10-11 Miguel Sofer * generic/tclLiteral.c (TclReleaseLiteral): insured that self-referential bytecodes are properly cleaned up on interpreter deletion [Bug 467523] (Ronnie Brunner) 2001-10-10 David Gravereaux * win/tclWinPort.h: #include needed to get moved to after #include or wierd misunderstandings took place when -D_WIN32_WINNT=0x0400 is set for outside code that requires knowledge of Tcl innards. General header macro magic applied liberally... 2001-10-10 Don Porter * tests/unixInit.test: Corrected restore of ::env(LANG). 2001-10-09 Jeff Hobbs * generic/tclFileName.c (Tcl_SplitPath): corrected mem leak intro'd with VFS code where the result obj from Tcl_FSSplitPath was not getting freed. 2001-10-09 Miguel Sofer * generic/tclLiteral.c: (TclReleaseLiteral) reverted previous patch for [Bug 467523] - cure is worse than the illness. 2001-10-05 Miguel Sofer * generic/tclLiteral.c: (TclReleaseLiteral) insured that self-referential bytecodes are properly cleaned up on interpreter deletion [Bug 467523] (Ronnie Brunner) 2001-10-04 Jeff Hobbs * tools/configure: * tools/configure.in: noted 8.4 as default Tcl version * library/encoding/cp936.enc: * library/encoding/cp949.enc: * library/encoding/cp950.enc: * library/encoding/iso8859-16.enc: * library/encoding/macCroatian.enc: * library/encoding/macCyrillic.enc: * library/encoding/macGreek.enc: * library/encoding/macIceland.enc: * library/encoding/macRoman.enc: * library/encoding/macTurkish.enc: * tools/encoding/cp1250.txt: * tools/encoding/cp1251.txt: * tools/encoding/cp1252.txt: * tools/encoding/cp1253.txt: * tools/encoding/cp1254.txt: * tools/encoding/cp1255.txt: * tools/encoding/cp1256.txt: * tools/encoding/cp1257.txt: * tools/encoding/cp1258.txt: * tools/encoding/cp874.txt: * tools/encoding/cp932.txt: * tools/encoding/cp936.txt: * tools/encoding/cp949.txt: * tools/encoding/cp950.txt: * tools/encoding/iso8859-1.txt: * tools/encoding/iso8859-10.txt: * tools/encoding/iso8859-13.txt: * tools/encoding/iso8859-14.txt: * tools/encoding/iso8859-15.txt: * tools/encoding/iso8859-16.txt: * tools/encoding/iso8859-2.txt: * tools/encoding/iso8859-3.txt: * tools/encoding/iso8859-4.txt: * tools/encoding/iso8859-5.txt: * tools/encoding/iso8859-6.txt: * tools/encoding/iso8859-7.txt: * tools/encoding/iso8859-8.txt: * tools/encoding/iso8859-9.txt: * tools/encoding/koi8-r.txt: * tools/encoding/macCentEuro.txt: * tools/encoding/macCroatian.txt: * tools/encoding/macCyrillic.txt: * tools/encoding/macGreek.txt: * tools/encoding/macIceland.txt: * tools/encoding/macRoman.txt: * tools/encoding/macTurkish.txt: Updated encodings with latest mappings from www.unicode.org. This did not include some Mac encodings that have special multi-unichar translations now (like symbols, dingbats and japanese). Also does not include big5, gb or euc* as those have different formats in the latest Unicode version that need new conversion tools. Not all related .enc files changed as some had been updates separately. 2001-10-03 Jeff Hobbs * generic/tclEvent.c (Tcl_FinalizeThread): moved freeing of tclLibraryPath to before the thread exit handlers are called. Slight modification to change on 2001-09-24. 2001-10-01 Jeff Hobbs * win/configure: regen'ed * win/tcl.m4: * win/makefile.vc: added Win64 SDK RC1 compilation support * win/Makefile.in: added $(LDFLAGS_CONSOLE) to TCLSH, TCLTEST and PIPE_DLL_FILE targets to get the link flags * win/tclWinInit.c: minor 64bit casts 2001-10-01 Miguel Sofer * generic/tclCmdIL.c: * generic/tclCmdMZ.c: * generic/tclParseExpr.c: removed unnecessary inclusion of tclCompile.h and made a small modification in (InfoBodyCmd) to improve the isolation of the compiler/engine subsystem. 2001-09-29 Vince Darley * generic/tclIOUtil.c: * doc/FileSystem.3: corrected and clarified documentation for 'Tcl_FSListVolumes(Proc)'. No code changes. 2001-09-28 Miguel Sofer * doc/FindExec.3: added a comment not to change the working directory before calling Tcl_GetNameOfExecutable [Bug 219215] 2001-09-28 Kevin Kenny * generic/tclIO.c: added two more '(ClientData)' casts on calls to Tcl_Preserve and Tcl_Release -- ones that Vince apparently missed. 2001-09-28 Donal K. Fellows * doc/lsort.n: Improved doc... * generic/tclCmdIL.c (Tcl_LsortObjCmd, SortCompare): Made offset-from-end indexing work, and factored out some "magic numbers" for easier understanding. [Bug #465674] * tests/cmdIL.test (cmdIL-1.26): Added test for offset-from-end indexing for lsort. 2001-09-28 Vince Darley * win/tclWinFCmd.c: * unix/tclUnixFCmd.c: fix to performance issue reported by jcw in which 'access("")' is called unnecessarily when normalizing any absolute path. * generic/tclIO.c: added '(ClientData)' cast to calls to Tcl_(Preserve|Release) newly introduced, fixing compile error on Windows. 2001-09-27 Don Porter * doc/FileSystem.3 (Tcl_FSLoadFile): * generic/tcl.decls (Tcl_FSLoadFile): * generic/tcl.h (Tcl_FSLoadFileProc): * generic/tclInt.h (TclpLoadFile): * generic/tclIOUtil.c (Tcl_FSLoadFile): * generic/tclLoadNone.c (TclpLoadFile): * generic/tclTest.c (TestReportLoadFile): * library/ldAout.tcl: * mac/tclMacLoad.c (TclpLoadFile): * unix/tclLoadAix.c (TclpLoadFile): * unix/tclLoadAout.c (TclpLoadFile): * unix/tclLoadDl.c (TclpLoadFile): * unix/tclLoadDld.c (TclpLoadFile): * unix/tclLoadDyld.c (TclpLoadFile): * unix/tclLoadNext.c (TclpLoadFile): * unix/tclLoadOSF.c (TclpLoadFile): * unix/tclLoadShl.c (TclpLoadFile): * win/tclWinLoad.c (TclpLoadFile): * win/tclWinFCmd.c (DoRemoveJustDirectory): More CONST poisoning fixes from the 2001-09-24 TIP 27 changes. CONST-ified Tcl_FSLoadFile and TclpLoadFile. Report and patch from Kevin Kenny. [Bug 465833] * generic/tclIO.c (ChannelTimerProc): Added Tcl_Preserve() and Tcl_Release() to fix segfault introduced by the 2001-09-26 changes. [Bug 465494] * doc/TCL_MEM_DEBUG.3: Updated out-of-date reference to #define GUARD_SIZE. * doc/UpVar.3 (Tcl_UpVar,Tcl_UpVar2): * generic/tcl.decls (Tcl_UpVar,Tcl_UpVar2): * generic/tclInt.decls (TclFindProc,TclGetFrame): * generic/tclInt.h (TclFindProc,TclGetFrame,TclLookupVar, TclPrecTraceProc,TclProcInterpProc}): * generic/tclProc.c (TclGetFrame,TclFindProc): * generic/tclVar.c (Tcl_UpVar,Tcl_UpVar2,MakeUpvar): Updated APIs in generic/tclProc.c and generic/tclVar.c according to the guidelines of TIP 27. [Patch 465442] * generic/tclDecls.h: * generic/tclIntDecls.h: make genstubs 2001-09-26 Andreas Kupries * doc/fileevent.n: Accepted [Patch #465279] adding an example to the fileevent manpage. Minor modifications to get a better formatting. Report and patch by David N. Welton . * The changes below fix [Bug #462317] where Expect tried to read more than was in the buffers and then blocked in the OS call as its pty channel driver provides no blockmodeproc through which the OS could be notified of blocking-behaviour. Because of this the general I/O core has to take more care than usual to preserve the semantics of non-blocking channels. The problem was reported by "Kevin O'Gorman" . * generic/tclIO.c (Tcl_ReadRaw): Do not read from the driver if the channel is non-blocking and the fileevent causing the read was generated by a timer. We do not know if there is data available from the OS. Instead of going to the OS for more and potentially blocking we simply signal EWOULDBLOCK to the higher levels to cause the system to wait for true fileevents. (GetInput): Same as before. (ChannelTimerProc): Added set and clear of CHANNEL_TIMER_FEV. * generic/tclIO.h (CHANNEL_TIMER_FEV): New flag for channels. Is set if a fileevent was generated by a timer, the channel is not blocking and the driver did not provide a blockmodeproc. In that case the I/O core has to be especially careful about going to the driver for more data. 2001-09-26 Don Porter * doc/SplitPath.3 (Tcl_GetPathType): * generic/tcl.decls (Tcl_GetPathType): * generic/tclFileName.c (Tcl_GetPathType): * win/tclWinFile.c (TclpMatchInDirectory, NativeStat): Vince Darley reports the 2001-09-24 TIP 27 changes left the win directory CONST poisoned. These changes should fix that. * generic/tclDecls.h: make genstubs 2001-09-25 Don Porter * doc/GetInt.3: * generic/tclInt.h (TclGetLong deleted): * generic/tcl.decls: * generic/tclInt.decls: * generic/tclGet.c: Updated APIs in generic/tclGet.c according to the guidelines of TIP 27. [Patch 464674] * generic/tclDecls.h: * generic/tclIntDecls.h: make genstubs 2001-09-25 Miguel Sofer * generic/tclVar.c: removed comments referring to unused flag TCL_PARSE_PART1. 2001-09-24 Don Porter * doc/Concat.3: * doc/DString.3: * doc/SplitList.3: * generic/tclInt.h (TclCheckBadOctal): * generic/tcl.decls: * generic/tclInt.decls: * generic/tclEncoding.c (OpenEncodingFile): * generic/tclMain.c (Tcl_Main): * generic/tclUtil.c: * unix/tclLoadDl.c (TclpLoadFile): Updated APIs in generic/tclUtil.c according to the guidelines of TIP 27. [Patch 464553] * generic/tclDecls.h: * generic/tclIntDecls.h: make genstubs 2001-09-24 Andreas Kupries * The change below fixes [Bug #464380]. The bug was reported by Ronnie Brunner . He also provided the patch. * generic/tclEvent.c (Tcl_Finalize): Moved release of 'tclLibraryPath' to Tcl_FinalizeThread. (Tcl_FinalizeThread): See above, new place for release of 'tclLibraryPath'. 2001-09-24 Donal K. Fellows * tools/encoding/cp1252.txt: File was missing part of the encoding [euro, ZCaron and zcaron]. * doc/OpenFileChnl.3: Add docs for Tcl_OutputBuffered; remove some old changebars. 2001-09-21 Jeff Hobbs * generic/tclExecute.c (TclExecuteByteCode): corrected INST_STR_CMP else case for strings to pass true utf char length to Tcl_UtfNCmp. 2001-09-20 Jeff Hobbs * win/tclWinInit.c: added extra processor definitions. (mstacy) * win/tclWinSock.c (SocketThread): corrected pointer cast for _WIN64. * win/tclWinNotify.c: removed unnecessary winsock include (it is already in from tclWinPort.h). * win/tclWinPort.h: changed winsock.h include to winsock2.h. Reverses change from 2000-11-16, but is necessary for WIN64. Extensions should comply with defined OS words, or use #ifndef. 2001-09-20 Donal K. Fellows * tests/socket.test: removed dependence on being run from same dir as remote.tcl, which only now needs to be in the same dir as this file. [Bug #219326] 2001-09-19 Jeff Hobbs * generic/tclTest.c (TestcmdtokenCmd): corrected pointer storage/retrieval for 64bit machines. * generic/tclCmdAH.c (Tcl_FormatObjCmd): * generic/tclScan.c (Tcl_ScanObjCmd): corrected handling of format and scan on 64-bit machines. [Bug #412696] (rmax) * unix/configure: regen'ed * unix/tcl.m4: added --enable-64bit support for HP-11 with the 64-bit kernel. * tests/basic.test: * tests/cmdInfo.test: improved skip reporting of missing commands * tests/winFCmd.test: simplified error check for winFCmd-7.9 * tests/winPipe.test: removed obsolete cat16 tests * generic/tclExecute.c (TclExecuteByteCode): fixed invalid usage of valuePtr in TRACE_WITH_OBJ in INST_EVAL_STK case. [Bug #462594] Changed INST_STR_CMP instruction to promote to Unicode strings only when one of the strings is already of Unicode type. * generic/tclExecute.c (TclExecuteByteCode): * generic/tclCompile.c (instructionTable): * generic/tclCompCmds.c (TclCompileStringCmd): INST_STR_MATCH - Updated to Int1 instruction type and added special case to use INST_STR_EQ instead when no glob chars are specified in a static string. * tests/{for.test,foreach.test,if.test,while.test}: * generic/tclCompCmds.c (TclCompileForCmd, TclCompileForeachCmd, TclCompileIfCmd, TclCompileWhileCmd): Corrected the overaggressive compiling of loop bodies enclosed in ""s. [Bug #219166] (msofer) 2001-09-19 Miguel Sofer * generic/tclExecute.c: insured that execution stack errors are also detected at abnormal returns. 2001-09-19 Donal K. Fellows * doc/socket.n: Added documentation to mention what happens when a server socket is created with port=0. Removed an old change bar, and no new change bar because Tcl has always behaved this way as it is really a poorly-documented standards-defined OS feature. * tests/util.test (util-8.1): Test derived from code to detect the problem, but the test always works in the C locale, so beware if you are maintaining the code. * generic/tclUtil.c (TclNeedSpace): Rewrote to be UTF-8 aware. [Bug 411825, but not that patch which would have added extra spaces if there was a real non-ASCII space involved. ] 2001-09-18 Andreas Kupries * generic/tclIOCmd.c (Tcl_PutsObjCmd): Rewritten to have saner and faster argument handling. Fixes bug #123552. Patch provided by Donal K. Fellows : #402564. 2001-09-18 Don Porter * unix/configure: Regen. * unix/tcl.m4 (SC_CONFIG_CFLAGS): On Linux, disable inlining when one of the compat/*.c routines is to be linked in. [Patch 440891] 2001-09-17 Jeff Hobbs * generic/tcl.h: removed forced #define USE_TCLALLOC 1 for Windows. This means the native system allocator will be used by default. This should be binary and source compatible with extensions, as Tcl_Alloc is a properly stubbed function. 2001-09-17 Miguel Sofer * generic/tclExecute.c: corrected small bug in [Patch 456668] - the varFramePtr was not restored in one possible exit. 2001-09-17 Miguel Sofer * doc/tclvars.n: * generic/tclCompile.c: * generic/tclCompile.h: * generic/tclExecute.c: * generic/tclProc.c: disabled all compile and execution tracing functionality in standard builds; TCL_COMPILE_DEBUG is now necessary to enable it. [Bug 451858] 2001-09-14 Andreas Kupries * doc/gets.n: * doc/read.n: * doc/puts.n: * doc/flush.n: * doc/fconfigure.n: * doc/flush.n: * doc/eof.n: * doc/seek.n: * doc/tell.n: * doc/close.n: * doc/fileevent.n: Added references to the Tcl standard channels. Item [219250], reported by David LeBlanc . Thanks to Christopher Nelson for doing editorial work. 2001-09-13 Andreas Kupries * win/Makefile.in: * win/configure.in: * win/makefile.bc: * win/makefile.vc: * library/dde/pkgIndex.tcl: Fixed version numbers from bogus tcl versions to independent versions for dde and registry packages. 2001-09-13 Jeff Hobbs * tests/regexp.test (regexp-20.1): * generic/tclCmdMZ.c (Tcl_RegsubObjCmd): had to adjust fix from 2001-08-06 to actually duplicate the objects in certain cases. This is really a place where feather would have been essential. [Bug #461322] * generic/tclUtf.c (Tcl_UtfPrev): corrected to return the proper location when the middle of a UTF-8 byte was passed in. [Tk Bug #450504] * ChangeLog.1999: * ChangeLog: broke changes from 199x into ChangeLog.1999 to reduce size of the main ChangeLog. 2001-09-13 Andreas Kupries * tests/ioCmd.test: Changed the computation of the result for iocmd-8.1[123] so that the tests work for single- and multi-process execution of the testsuite. Depending on the choice of the user stdout is a tty or not and thus reports different channel options. Fixes [460993] reported by Don Porter. 2001-09-13 Miguel Sofer * doc/ParseCmd.3: * generic/tcl.decls: * generic/tclCmdMZ.c (Tcl_SubstObjCmd): * generic/tclDecls.h: * generic/tclParse.c: * generic/tclStubInit.c: * tests/parse.test: Deprecate the use of Tcl_EvalTokens, replaced by the new Tcl_EvalTokensStandard. The new function performs the same duties but adheres to the standard return convention for Tcl evaluations; the deprecated function could only return TCL_OK or TCL_ERROR, which caused [Bug 219384] and [Bug 455151]. This patch implements [TIP 56]. 2001-09-12 Mo DeJong * unix/configure: Regen. * unix/tcl.m4: Invert the logic that checks for $GCC. Instead of checking for "$GCC" = "no" we check for "$GCC" != "yes" or simply swap the true and false blocks of code in an if statement. That way if GCC is set to "" everything will still work. [Bug 460991] 2001-09-12 Don Porter * tests/appendComp.test: * tests/lsearch.test: * tests/namespace.test: * tests/rename.test: * tests/split.test: Corrected tests to better isolate tests in one file from influencing tests in other files. [Bug 460591] 2001-09-12 Miguel Sofer * generic/tcl.decls: reserved stub #481 for the implementation of [TIP 56] 2001-09-11 Andreas Kupries * doc/OpenFileChnl.3: Added documentation for Tcl_WriteRaw and Tcl_ReadRaw [#414929]. * doc/CrtChannel.3: Added documentation for Tcl_ChannelBuffered and Tcl_GetTopChannel [#414929]. * The changes below are a fix for [219253]. * tests/socket.test: Removed _most_ instances of hardwired port numbers for listening sockets. Remaining are the ports in all tests with constraint 'doTestsWithRemoteServer'. These seem to be designed for a more controlled environment and are usually skipped when running the testsuite. * tests/io.test: Removed all instances of hardwired port numbers for listening sockets. 2001-09-10 Jeff Hobbs * generic/tclEvent.c (TclInExit): Corrected handling of tsd in late stages of finalization. [Bug #419449] (darley) * tests/stack.test: * generic/tclInterp.c (AliasObjCmd): Check the numLevels to ensure that we aren't hitting some alias loop condition. [Bug #443184] 2001-09-10 Mo DeJong * unix/configure: Regen. * unix/tcl.m4 (SC_CONFIG_CFLAGS): Don't include . characters in the Tcl library name when building on FreeBSD 3.X and later systems. [Patch 450725] 2001-09-10 Andreas Kupries * doc/tclsh.1: * doc/Tcl_Main.3: * doc/CrtChannel.3: * doc/OpenFileChnl.3: * doc/GetStdChan.3: Enhanced the manpages with cross-references to the new manpage and more explanations how these functions deal with the standard channels in various situations. * doc/StdChannels.3: New manpage describing handling of the standard channels by the Tcl library [402725]. 2001-09-10 Don Porter * unix/mkLinks (Tcl_FSLink): Updated to reflect 2001-08-23 file system changes. * unix/tclLoadShl.c: Added #include of tclInt.h; access to Tcl internals, notably TclpUnloadFile(), is required. Thanks to Bob Techentin for report and patch. [Bug 459305] * generic/tclInitScript.h (initScript): * win/tclWinInit.c (TCL_REGISTRY_KEY, TclpSetVariables): Removed vestiges of Tcl's old initialization from registry variables. [Bug 455645] 2001-09-10 Andreas Kupries * generic/tclInt.decls: Also added 'TclWinFlushDirtyChannels' to the internal platform specific stub table. * win/tclWinFile.c (TclpObjStat): Now added the call to 'TclWinFlushDirtyChannels' to this function. I don't know where my head was last thursday (2001-09-06), but the call was actually added to 'TclpObjChdir', i.e. the implementation of [cd]. Corrected this now. Thanks to Vince Darley for spotting this. 2001-09-10 Miguel Sofer * generic/tclProc.c: * tests/proc.test: made [proc] bytecompile a no-op for procs defined with _args_ as single argument and an empty body. [FQ 451441] 2001-09-09 Mo DeJong * unix/Makefile.in: * win/Makefile.in: Use () around variable name instead of {}. Use TCLTEST variable directly instead of depending on the tcltest alias. 2001-09-09 David Gravereaux * generic/tcl.h: * generic/tclPlatDecls.h: Reminder from David Cuthbert that I hadn't finished the Borland compatibility stuff. [Patch: 436116] 2001-09-09 Mo DeJong * tests/cmdAH.test: Modify cmdAH-20.5 and cmdAH-24.8 to display the file atime or mtime results if the test fails. 2001-09-08 David Gravereaux * win/mkd.bat: * win/rmd.bat: made these text files, text files again. [Patch: 451333] 2001-09-08 Mo DeJong * win/mkd.bat: * win/rmd.bat: Apply binary property (cvs admin -kb) to files and convert to CRLF linefeed format to fix the VC++ build. [Bug #219409] 2001-09-08 Vince Darley * generic/tclInt.h: * generic/tclFCmd.c: * doc/FileSystem.3: * generic/tclIOUtil.c: removed Tcl_FSCopyFile fallback to channel copying, since the channels will not have access to interpreters and the channel copying currently requires an interp. Code which required cross-platform copies always has interpreters, so that solves the problem. Fixes bug in TclKit. 2001-09-07 David Gravereaux * win/tcl.m4: Added -link50compat option so a VC6 linker makes a VC5 (pre sp3) compatible import library. [Bug: 219257] 2001-09-07 Mo DeJong * win/tclWinThrd.c (TclpThreadExit): Cast status argument to _endthreadex to unsigned instead of DWORD to match the Win32 function prototype. 2001-09-06 Andreas Kupries * All the changes below serve to fix bug [219148] which reports a 80x performance hit for file I/O on Win* systems. On my system it was closer to a 120x hit. Problem report by Uwe Traum . The fix goes like this: The obstacle is 'FlushFileBuffers', executed whenever Tcl writes data to the OS, as Tcl has to wait for the disk to complete I/O, and disks are slow. We remove that obstacle. This opens another problem, [file size] reports back wrong numbers. So for [file size] we add the call back in. As optimization we keep track of the channels which were written to and flush only these. * win/tclWinFile.c (TclpObjStat): Added a call to 'TclWinFlushDirtyChannels'. This ensures that [file size] and related commands report the correct size of a file even if Tcl has recently written to it. Unixoid OS's always report the correct size even for files with pending data, but Win* syssystem don't. They only report what is actually on disk. * win/tclWinInt.h: Added declaration of 'TclWinFlushDirtyChannels', making it available to other parts of the tcl core. * win/tclWinChan.c (TclWinFlushDirtyChannels): New, internal, procedure. Goes through the list of open file channels and forces the OS to flush its file buffers for all which were written to since the last call of this function. This is an expensive operation as Tcl has to wait for the OS to complete actual writes to the disk. (FileInfo): Added dirty flag required by the procedure above. (FileOutputProc): Removed flushing of file buffers, setting the dirty flag instead. This means that the previously incurred delays do not happen anymore. (TclWinOpenFileChannel): Added initialization of 'dirty' flag. 2001-09-06 Jeff Hobbs * doc/http.n: noted -binary, charset and coding state keys. * tests/http.test: * library/http/pkgIndex.tcl: * library/http/http.tcl (geturl): correctly get charset parameter and convert text according to specified encoding (if known). RFC iso8859-1 is used by default. Also recognize Content-encoding to see if we should do binary translation. Added a CYA -binary switch for the cases that were missed. [Bug #219211 #219399] * tests/ioUtil.test: changed to make better use of constraints and remove knownBug constraints that weren't valid. 2001-09-06 Don Porter * tests/unixInit.test (unixInit-3.2): Updated test to support newer HP-UX releases that properly report euc-jp as the system encoding for Japanese. Bug report and patch verification by Bob Techentin. [Bug 453883] * doc/http.n: * library/http/*.tcl: * tools/tcl.wse.in: * tools/tclmin.wse: * unix/Makefile.in: * win/{Mm}akefile.*: Updated http package to version 2.4, reflecting the new features just added. 2001-09-06 Vince Darley * generic/tclTest.c: tests of old-fs hooks no longer cause problems in threaded builds. Also removed unused unload proc. * generic/tcl.decls: * generic/tclIOUtilc: added Tcl_FSMountsChanged so that a vfs can inform the filesystem that the filesystem epoch must be changed (since cached filesystems may now be incorrect). Fixes problem running tclvfs extension. * library/tcltest/tcltest.tcl: if tests aren't in a native filesystem, then don't use pipes to run them. [Bug 458741] 2001-09-06 Donal K. Fellows * generic/tcl.decls (479 generic): * generic/tclIO.c (Tcl_Seek,Tcl_Tell,Tcl_OutputBuffered): Added public function to return the size of the output buffer and reworked other channel functions to use this shared functionality and that of Tcl_InputBuffered() too. [TIP#49, Rolf Schroedter] 2001-09-05 David Gravereaux * generic/tclPlatDecls.h: Another small trim finalizing Borland support. * win/tclWinPipe.c: * win/tclWinPort.h: More Borland compatibility fixes. Changed EDQUOT #define from 49 to 69. Borland had a clash as it was already using this number. Upon advice from Helmut Giese, EDQUOT has been found in other header files #defined as 69. [Patch: 436116] * win/.cvsignore: A few more glob patterns added. * win/makefile.bc (new): Borland lives once more! rejoice.. * generic/tclAlloc.c: Small Borland compatibility fix. * win/tclWinTime.c: More Borland compatibility fixes. [Patch: 436116] 2001-09-05 Vince Darley * tests/winFCmd.test: made notWin2000 constraint false if not running on Windows at all. 2001-09-04 David Gravereaux * win/tclWinThrd.c: Revisited _beginthreadex() stuff. Instead of assuming a c-runtime implimentation of _beginthreadex normal, I reversed the logic to not assume, and use when is by explicitly needing to add runtimes that support it such as Borland. * generic/tcl.h: * generic/tclPlatDecls.h: Borland compatibility change so ClientData was properly typed as a void* and TCHAR would not be defined twice. * generic/tcl.h: Removed a small mistake from before. Changes to the EXTERN macro for proper Borland compatibility will have to see a TIP. What's this with the MS compiler: __declspec(dllexport) int func (int a, int b); will have to be this with Borland: int __cdecl __export func (int a, int b); The order of the attribute needs to be after the return type. 2001-09-04 Don Porter * compat/strtod.c (strtod): Fixed failure to handle expressions like 3eq2 and failure to set errno on overflow. [Bug 440894] 2001-09-04 Miguel Sofer * generic/tclProc.c: * tests/proc.test: made [proc] check that formal args have simple names [Bug 458548] 2001-09-04 Vince Darley Minor bug fixes in filesystem, plus small vfs changes as a result of enabling the test filesystem to work properly. * tests/fileName.test: ensure new test cleans up after itself * doc/filename.n: * generic/tclFileName.c: improved Mac path handling and document why [Bug: 421842] on Windows handling of UNC paths is not valid. Documentation and code now much clearer on what is and is not a UNC path. * doc/FileSystem.3: * unix/tclUnixPipe.c: * generic/tclFCmd.c: * generic/tclIOUtil.c: fixed error message, fixed [Bug: 453512] about dangerous use of tmpnam, replaced with mkstemp. Documented all the changes. * generic/tclTest.c: made test vfs fully functional as a 'reporting filesystem'. * generic/tcl.stubs: * generic/tcl.h: * generic/tclInt.h: * generic/tclIOUtil.c: * doc/file.n: * various platform-specific 'TclpLoadFile': fixed comments about unload behaviour, and completed objectification of loading. Required change to Tcl_Filesystem lookup table, so incompatible with 8.4a3, but not older versions of Tcl. The change also allows 'link' and 'reporting' filesystems to function correctly when loading files. Implementation of 'file delete -force' copes with case where cwd is inside the directory. Moved overlooked Tcl_FSGetPathType from internal to external API. Made sure filesystems which are registered and then unregistered are only freed when all references to them are gone. Documented changes. * unix/tclUnixFCmd.c: when deleting directories recursively, make sure permissions are ok. Together with the above, this fixes [Bug: 219139] * tests/winFCmd.test: differentiated test results for win2k versus not. This fixes [Bug: 219239] * tests/fCmd.test: added tests for 'file delete -force' where the cwd is inside, and when permissions are inadequate. 2001-09-04 Miguel Sofer * generic/tclCompile.c: fixed incorrect operands for INST_LIST [Bug: 458241] (David Cuthbert, dacut@users.sourceforge.net) 2001-09-03 Jeff Hobbs * generic/tclExecute.c (TclExecuteByteCode): fixed missing comma in debug macro. 2001-09-03 Donal K. Fellows * doc/ExprLongObj.3: Fixed error in documentation of argument type to Tcl_ExprObj [Bug: 457435] 2001-09-02 David Gravereaux * win/tclWinThrd.c: Portability fix for Cygwin who's c-runtime, not surprisingly, doesn't have the MSVCRT specific _beginthreadex / _endthreadex pair. This might have to be revisited for proper Borland, lcc32, Watcom and other support as well. [Patch: 444255] * win/tclWinThrd.c: Moved FinalizeConditionEvent() proto to within the main #ifdef TCL_THREADS block to avoid mingw warning about it being there but unused. * win/makefile.vc: Added -Zl (zee el) to tclStubLib.c compile line to make sure the tclstub84.lib static library is built without requiring a specific C-runtime library at link-time for the end-use developer. It has been noted on c.l.t that this trips many first time users trying to make extensions. [Patch: 403533] 2001-08-31 Jeff Hobbs * generic/tclInt.h: added TclCompileListCmd header * generic/tclBasic.c: added TclCompileListCmd compile proc * generic/tclCompCmds.c (TclCompileListCmd): function to compile the 'list' command at parse time. * generic/tclExecute.c (TclExecuteByteCode): definition of INST_LIST bytecode. * doc/StringObj.3: added words of warning to use Tcl_ResetResult with the Tcl_Append* functions. * tests/compile.test: added compile-11.* interp result checks * generic/tclUtil.c (TclGetIntForIndex): added Tcl_ResetResult before Tcl_AppendStringsToObj to prevent shared object crash when called from bcc instruction. The Tcl_Append* calls that append to the result object that are invoked by bcc insts must remember to call Tcl_ResetResult because the bcc doesn't do this for us. [Bug #456892] 2001-08-30 Jeff Hobbs * generic/tclIndexObj.c: fixed some casting problems that upset Crays. [Bug #419528] (andreasen) 2001-08-30 Don Porter * generic/tcl.h: Silence warning from Sun compiler. [Bug 454374] 2001-08-30 Miguel Sofer * generic/tclExecute.c: allow cached fully-qualified command names to be usable from different namespaces within the same interpreter without forcing a new lookup. This speeds up scripts that pass command names in variables ("this" in some OO packages). [Patch 456668]. 2001-08-30 Vince Darley Further fs updates. After examining the most common Tcl extensions (TclX, BLT, Tk, TclPro, Mktclapp), it has been determined that only TclpGetCwd and the Access/Stat/Open insert/delete hooks of the internal fs functions are ever used. The remaining functions from Tcl's internal interfaces have therefore been removed, since Tcl now exports a more suitable public API (Tcl_FS...) * generic/tclInt.stubs: * generic/tclInt.h: updated for removed internal functions. Some new internal functions have been put in tclInt.h (and not exported in the stub table because good public equivalents exist). * generic/tclTest.c: some test functions used the internal private APIs. These tests have been retained, but modified to use public APIs. Also objectified the internal filesystem tests. * win/tclWinFile.c: removed TclpStat, TclpAccess and refactored code to use NativeAccess, NativeStat. This should speed up stat, access and glob commands. * win/tclWinFCmd.c: removed all TclpCopy/Rename/Delete File/Directory string-based procedures which aren't used any more. Improved efficiency of some other procedures. Ensure that filename conversions with a NULL interp do not crash Tcl. * mac/tclMacFCmd.c: wrapped long lines and cleaned up TclpObjNormalizePath, removed all TclpCopy/Rename/Delete File/Directory string-based procedures which aren't used any more. * mac/tclMacFile.c: removed obsolete TclpStat, TclpAccess, TclpChdir, etc. * unix/tclUnixFCmd.c: removed use of TclpAccess, removed all TclpCopy/Rename/Delete File/Directory string-based procedures which aren't used any more. * unix/tclUnixFile.c: removed obsolete TclpStat, TclpAccess, TclpChdir, etc. * tcl(Unix|Mac|Win)Chan.c: objectified TclpOpenFileChannel. * various 'load' implementations all objectified. * generic/tclFileName.c: removed redundant code. * generic/tclIOUtil.c: removed TclStat, TclAccess, TclpListVolumes. Fix to MatchInDirectory at the root of a volume. Also improved some documentation, and improved default path joining behaviour for virtual filesystems, especially regarding '~'. * tests/fileName.test: added tests to check for bugs fixed above. * doc/FileName.3: improved documentation 2001-08-30 David Gravereaux * generic/tclAsync.c: * generic/tclEvent.c: * generic/tclInt.h: Improper cleanup of asyncMutex in tclAsync.c repaired. TclFinalizeSynchronization() was trying to remove a registered mutex that was dumped earlier when the TSD it was stored in was cleared. This was only surfacing on *nix. Windows was being masked by mutexes not actually being returned to the system! That was repaired in a previous patch. Needed to add a private TclFinalizeAsync() to tclAsync.c and called from Tcl_FinalizeThread(). Pheww.. Is this done yet? [Bug: 414419] requested by Rob Ratcliff 2001-08-28 Jeff Hobbs * generic/tclCompCmds.c (TclPushVarName): noted 'static' defn. [Bug #453872] 2001-08-26 Don Porter * library/auto.tcl (tcl_findLibrary): * tests/unixInit.test (unixInit-2.{1,9}): * unix/tclUnixInit.c (TclpInitLibraryPath): * win/tclWinInit.c (TclpInitLibraryPath): Corrected inconsistency between the search path for script libraries and the directory name $DISTNAME into which distributions built by 'make test' unpack. [Bug 455642] 2001-08-24 Jeff Hobbs * tests/stringComp.test: added string-1.3 * generic/tclCompCmds.c (TclCompileStringCmd): changed to return TCL_OUT_LINE_COMPILE instead of TCL_ERROR when compiling and an unknown string method is called. This is necessary as the string command may be never called, or not until 'string' is redefined. 2001-08-24 Vince Darley * doc/glob.n: documented windows-style path issue with glob. [Bug: 219392] * doc/filename.n: documented windows path/file length limitation. [Bug: 454597] 2001-08-24 Don Porter * tests/unixInit.test (unixInit-2.9): Corrected expected result to match Tcl's quirky construction of its init library path. 2001-08-23 Andreas Kupries * win/tclWinPipe.c (BuildCommandLine): Fixed tcl Bug [432499]. Part of the code used the non-absolute path to the executable to determine quoting. This failed if the absolute path contained spaces, but the application name itself not. This bug caused no trouble on Win NT 5, but does for other variants in the Win* family. Report and fix due to Ken Poole . 2001-08-23 Jeff Hobbs * unix/configure: * unix/tcl.m4: added QNX-6 build support. [Bug #219410] (loverso) * unix/tclUnixFCmd.c: * generic/tclIOUtil.c: * generic/tclFileName.c: corrected minor compiler warnings. 2001-08-23 Vince Darley Variety of small filesystem and vfs issues fixed or improved. The new fs code allows many new opportunities for efficiency improvements through the objectified API. The main changes integrated here are such efficiency improvements. Some limitations of the original implementation have also now been lifted. Meanwhile a variety of fs bugs (some old, some new) have also been fixed. * generic/tclFileName.c: Made Tcl_FSSplitPath more efficient, and removed some static string-based procedures which are no longer used. Much more objectification. Tcl_FSJoinPath is now very efficient and more aware of virtual filesystems. Clarified where the Mac-specific code attempts to interpret Unix-style paths. Modified TclDoGlob to use lstat not access to fix [Bug: 434876, L. Virden] * tcl(Win|Unix|Mac)FCmd.c: * tcl(Win|Unix|Mac)File.c: replaced TclpListVolumes with TclpObjListVolumes with different signature, updated code due to more efficient signature of Tcl_FSGetTranslatedPath. Used cached native paths where possible to improve efficiency -- this was completed on MacOS, but on Unix and Win the traversal functions make the task much more complex, so there are still some improvements possible there. Removed unused TclpNormalizePath which had been left in tclWinFCmd.c. Objectified all 'file attributes' functions. Fixed the new [Bug:451571, Bruce Stephens] which is most obvious on Unix, but could occur on MacOS or Windows. This bug actually existed in Tcl 8.3.x but was only made obvious by the recent filesystem overhaul when the code was exercised more heavily. * tests/fileName.test: Three new tests to exercise the above bug, and make sure it is fixed correctly. * unix/tclUnixFile.c: avoid panic in glob when a link doesn't point anywhere. It would probably be good to define exactly what Tcl should do in circumstances like these, and make sure mac/win/unix all behave accordingly. [Bug: 417111, Hemang Lavana]. Also fixed misleading/obsolete comment in the code. * generic/tcl.stubs: changed signature of Tcl_FSGetTranslatedPath and added Tcl_FSGetTranslatedStringPath. These changes allow further optimisations in the FS code. * generic/tcl.h: changed signature of Tcl_FSListVolumes so that it doesn't require a Tcl interpreter plus result. Renamed Tcl_FSReadLink to Tcl_FSLink with additional argument so we can support making links in the future. [Patch: 450340] * generic/tclInt.h: added declaration for TclpObjListVolumes. Objectified internal call signatures for 'file attributes' functions, and added an internal objectified get path type function. * generic/tclIOUtil.c: added the moved function TclpListVolumes which calls platform specific code (needed for backwards compatibility), and improved efficiency of parts of the FS (particularly file normalization). Much less copying and memory allocation is required now. added new GetPathType so that changes in 'file volumes' can actually affect files' types, and objectified more code. Made current code work with test suite artificially changing current platform. Added 'static' keywords where required. * generic/tclIO.c: * generic/tclTest.c: Added 'static' keywords, fixing [Bug: 453872, Bob Techentin] * generic/tclCmdAH.c: file command implementation updated for API changes, removed unnecessary special-case SplitPath static function, since it no longer helps prevent code duplication. Moved setting of interpreter result to each individual location that actually required it, to avoid very large code separation between reading and setting the result. * doc/FileSystem.3: updated documentation for the new or changed APIs, and clarified some issues. * doc/SplitPath.3: added pointer to newer APIs in FileSystem.3 * doc/filename.n: clarified current implementation of tilde support on Mac/Win. [Bug:453514, Sergey Kuzmin] * doc/glob.n: improved documentation for '-directory' and '-path' options. There are now many private, obsolete, platform-specific 'Tclp' string-based filesystem APIs which could be removed. We should check whether any of these are used by extensions and, at least in Tcl 9, remove them. The above changes signify a ***POTENTIAL INCOMPATIBILITY*** with 8.4a3, since signatures of two functions in the new API have changed, but not with older versions of Tcl. 2001-08-23 Donal K. Fellows * generic/tclBinary.c (FormatNumber): Extract a long from the object and not an int, to stop [binary format] from being unable to format some input numbers on architectures where sizeof(int) is less than sizeof(long) (particularly Alpha.) [tiprender Bug #441861] * tests/format.test: Converted conditional execution of tests into a test constraint. 2001-08-22 Jeff Hobbs * win/Makefile.in: * win/makefile.vc: updated install target for dde1.2 * doc/dde.n: fixed dde man page (which was totally incorrect). * tests/winDde.test: * win/tclWinDde.c (Tcl_DdeObjCmd): added -binary option to dde request command to allow for returning binary data. [Bug #227482] Updated dde to 1.2 * tests/tcltest.test: added unixExecs constraint to files that used 'grep' in the test. [Bug #453143] * library/tcltest/tcltest.tcl: fixed stdio constraint test. [Patch #454050] (stanton) Simplified unixExecs constraint test. 2001-08-22 Don Porter * tests/ioUtil.test (ioUtil-3.*): Corrected errors in tests revealed by fix of overagressive compiler. [Bug 451200] 2001-08-21 Miguel Sofer * generic/tclCompCmds.c: * tests/compile.test: Fixed overagressive compilation of [catch]: it was catching errors at substitution time. [Bug #219184] 2001-08-21 Jeff Hobbs * tests/tcltest.test (tcltest-12.2): fixed test that would break when env vars weren't Tcl list friendly [Patch #454046] (stanton) 2001-08-20 Jeff Hobbs * library/http/http.tcl (geturl): added port number to Host: header to comply with HTTP/1.1 spec (RFC 2068). [Bug #452217] 2001-08-16 David Gravereaux * tools/tcl.wse.in: * tools/tcl.hpj.in: * win/tcl.hpj.in: Removed -kb storage in CVS to ensure these text files are checked-out in the translation mode CVS is in. Setting these as binary as part of an effort to make sure they are always in CRLF, no matter what the CVS translation, is bypassing how CVS works and is confusing. * tools/genStubs.tcl: Removed LF-only output. Having to reconvert back to CRLF before committing to CVS was giving me a headache. [Bug: 451333] * win/makefile.vc: replaced $(WINDIR) with $(include32) for the .rc.res inference rule. winver.h wasn't getting included. [Bug: 445630] 2001-08-14 Miguel Sofer * generic/tclBasic.c: make the intial maxNestingDepth of an interpreter be MAX_NESTING_DEPTH instead of a hardwired value [Bug: 232564] 2001-08-13 Miguel Sofer * tests/trace.test: Corrected test numbers [Bug: 449794] 2001-08-12 Mo DeJong * unix/configure: Regen. * unix/configure.in: * unix/tcl.m4: Use GCC variable set by AC_PROG_CC instead of defining our own using_gcc variable. 2001-08-11 Vince Darley Variety of small issues introduced by the vfs code fixed: * generic/tclIOUtil.c: uninitialised read. * generic/tclFCmd.c: possible memory leak in file delete with error condition. 2001-08-10 Miguel Sofer * generic/tclVar.c: * tests/trace.test: Insure that [array] traces work correctly for undefined variables [Bug: 449094] 2001-08-09 Mo DeJong * unix/Makefile.in: Delete the unused getcwd.o target. This fixes bug #440942. 2001-08-08 Don Porter * library/dde/pkgIndex.tcl: * library/http/http.tcl: * library/http/pkgIndex.tcl: * library/msgcat/msgcat.tcl: * library/msgcat/pkgIndex.tcl: * library/opt/optparse.tcl: * library/opt/pkgIndex.tcl: * library/reg/pkgIndex.tcl: * library/tcltest/tcltest.tcl: * library/tcltest/pkgIndex.tcl: Added checks for package dependencies. Bumped patchlevels of changed packages: http 2.3.2, msgcat 1.2.2, opt 0.4.3, tcltest 2.0.1. [Patch 448931] * README: * generic/tcl.h: * tools/tcl.wse.in: * unix/configure: * unix/configure.in: * unix/tcl.spec: * win/README.binary: * win/configure: * win/configure.in: Bumped up patchlevel to 8.4a4 to distinguish CVS snapshots from the 8.4a3 release. This does not necessarily mean there will be an 8.4a4 release. [Bug 448938]. 2001-08-06 Jeff Hobbs 8.4a3 RELEASE * changes: * README: * mac/README: * unix/README: * win/README.binary: updated for 8.4a3 release * generic/tclFileName.c (Tcl_FSSplitPath): update to Tcl style guide. * generic/tclFCmd.c (FileCopyRename): fixed mem leak in introduction of vfs code where a new Tcl_Obj wasn't freed. * generic/tclCmdMZ.c (Tcl_RegexpObjCmd, Tcl_RegsubObjCmd): reordered the retrieval of arguments to avoid shimmering bug when the pattern and string referenced the same object. * unix/configure: regenerated * unix/tcl.m4: added GNU (HURD) configuration target. (brinkmann) [Patch: #442974] * win/README: made note of URL for Windows compilation notes * win/tclWinThrd.c (TclpFinalizeMutex, TclpFinalizeCondition): added DeleteCriticalSection calls for cleanup [Patch: #419683] * unix/tclUnixPipe.c (TclpCreateTempFile): fixed use of tmpnam, which is dangerous. [Patch: #442636] (lim) The use of tmpnam in TclpTempFileName must still be changed. * tests/http.test (http-4.14): fixed variable error return. [Bug: 424252] 2001-08-03 Jeff Hobbs * win/configure: regenerated * win/tcl.m4: fixed DLLSUFFIX definition to always be ${DBGX}.dll. This is necessary for TEA compliant builds that build shared against a static-built Tcl. * win/Makefile.in ($(TCLSH)): added $(TCL_STUB_LIB_FILE) to build target, otherwise it wouldn't get generated in a static build. 2001-08-06 Andreas Kupries * generic/tclIOCmd.c (Tcl_GetsObjCmd): Applied patch from SF item [442665] to fix the bug reported by it. The function can corrupt a freed object if it is called with objc == 3. This is because it retrieves resultPtr and does not increment its reference count, but then calls Tcl_ObjSetVar2, which causes the retrieved resultPtr object to be released. 2001-08-06 Don Porter * doc/tclsh.1: Added note that the tclsh program is frequently installed with the Tcl version numer as part of the name. [Patch 402725] * generic/tclPkg.c: * tests/pkg.test: [package forget] now forgets all of the package arguments it receives, not stopping when a package is not found. [Bug 415273] 2001-08-02 Jeff Hobbs * generic/tclIOUtil.c (Tcl_FSMatchInDirectory): corrected uninitialized value. 2001-08-02 Mo DeJong * generic/tclPlatDecls.h: * win/tclWinPort.h: Revert related changes made to improve Cygwin support on 2001-07-18. This change ended up breaking the VC++ build because of conflicts between Windows APIs and internal Tk APIs. 2001-08-01 Jeff Hobbs * unix/tclUnixFCmd.c: minor casts to eliminate warnings. (lim) [Patch: #440218] * tests/parseOld.test: changed some tests that required testwordend to exist to skip in a proper tcltest manner. [Bug: #442663] * library/http/http.tcl (http::mapReply): the regsub'ing of \n and \t to escape them was unnecessary. 2001-07-31 Vince Darley Changes from TIP#17 "Redo Tcl's filesystem" The following files were impacted: * doc/Access.3: * doc/FileSystem.3: * doc/OpenFileChnl.3: * doc/file.n: * doc/glob.n: * generic/tcl.decls: * generic/tcl.h: * generic/tclCmdAH.c: * generic/tclCmdIL.c: * generic/tclCmdMZ.c: * generic/tclDate.c: * generic/tclDecls.h: * generic/tclEncoding.c: * generic/tclFCmd.c: * generic/tclFileName.c: * generic/tclGetDate.y: * generic/tclIO.c: * generic/tclIOCmd.c: * generic/tclIOUtil.c: * generic/tclInt.decls: * generic/tclInt.h: * generic/tclIntDecls.h: * generic/tclLoad.c: * generic/tclStubInit.c: * generic/tclTest.c: * generic/tclUtil.c: * library/init.tcl: * mac/tclMacFCmd.c: * mac/tclMacFile.c: * mac/tclMacInit.c: * mac/tclMacPort.h: * mac/tclMacResource.c: * mac/tclMacTime.c: * tests/cmdAH.test: * tests/event.test: * tests/fCmd.test: * tests/fileName.test: * tests/io.test: * tests/ioCmd.test: * tests/proc-old.test: * tests/registry.test: * tests/unixFCmd.test: * tests/winDde.test: * tests/winFCmd.test: * unix/mkLinks: * unix/tclUnixFCmd.c: * unix/tclUnixFile.c: * unix/tclUnixInit.c: * unix/tclUnixPipe.c: * win/tclWinFCmd.c: * win/tclWinFile.c: * win/tclWinInit.c: * win/tclWinPipe.c 2001-07-24 Mo DeJong * win/tclWinThrd.c (Tcl_CreateThread): Close Windows HANDLE returned by _beginthreadex. The MS documentation states that this handle is not closed by a later call to _endthreadex. 2001-07-21 Don Porter * doc/pkgMkindex.n: * library/package.tcl: Corrected documentation and usage message of [pkg_mkIndex]. 2001-07-18 Mo DeJong * generic/tclPlatDecls.h: Define TCHAR by including windows.h instead of tchar.h since Cygwin does not support the tchar.h header. Include CHECK_UNICODE_CALLS logic from tclWinPort.h. * win/tclWinPort.h: Remove CHECK_UNICODE_CALLS logic. Remove include of windows.h since this now done it tclPlatDecls.h. * win/tclWinReg.c: Remove duplicate include of windows.h. 2001-07-18 Andreas Kupries * generic/tclIO.c: Aftermath to [SF #427196]. Squash empty buffers if they are smaller than the requested buffersize, to prevent reusage of old buffers and to honor changes in the requested buffersize made by the user. 2001-07-17 Mo DeJong * win/tclWinFile.c (TclpReadlink): Add Cygwin specific definition for the TclpReadlink function. This method implements reading of symbolic links when build with Cygwin. 2001-07-17 Mo DeJong * win/tclWinPort.h: Add Cygwin specific defines for environ and timezone variables. 2001-07-17 Andreas Kupries * generic/tclIO.c (GetInput): Fixed [SF #427196]. Memory was overwritten because a buffer was used after a change of the requested buffersize together with that requested buffersize and not its actual size, which was smaller. Note that the continous reuse of the smaller buffer negatively impacts performance. The system never allocates a buffer with the newly requested bigger buffersize. 2001-07-16 Mo DeJong * generic/tcl.h: Define __WIN32__ when __CYGWIN__ or __MINGW32__ is defined. * generic/tclAlloc.c: Define caddr_t when compiling with VC++ or mingw. This type is already defined when compiling with Cygwin. 2001-07-16 Mo DeJong * win/tclWinConsole.c: * win/tclWinPipe.c: * win/tclWinPort.h: * win/tclWinSerial.c: * win/tclWinThrd.c: Remove unnecessary #includes of dos.h, direct.h, and tchar.h. This will help the Cygwin porting effort since these headers do not exist under Cygwin. 2001-07-16 Jeff Hobbs * win/tclWinPipe.c (PipeClose2Proc): constrained the mutex lock to just the TerminateThread call and waiting for termination. (jsmith) * generic/tclCmdMZ.c: Removed extra copy of the SCAN_* macros #defined in generic/tclScan.c. (porter) [Bug 441230] 2001-07-12 Donal K. Fellows * tests/unixInit.test (unixInit-2.8): Added extra constraint, notInstalledInTmp, to stop this test from damaging installations in /tmp; not much fun to have to reinstall the Tcl library every time you run the test suite! * tests/subst.test (subst-10.*): Updated tests to check new behaviour for 'break' in command substitutions. (subst-1.2,subst-7.1): Error messages changed. * doc/SubstObj.3: New file, to document Tcl_SubstObj. * doc/subst.n: Improved and updated documentation for 'subst' to help support the changed behaviour. * generic/tcl.decls (generic-437): Declaration for Tcl_SubstObj * generic/tcl.h (TCL_SUBST_*): Added flags for Tcl_SubstObj. * generic/tclCmdMZ.c (Tcl_SubstObj,Tcl_SubstObjCmd): Divided into two parts to allow people to access the innards of 'subst' and changed the behaviour when command substitutions do a 'break' to be different from 'continue'. Also now works with objects, which allows for some nifty optimisations with variable substitutions and a slight improvement with command substitutions. [TIP#36] 2001-07-10 Mo DeJong * unix/Makefile.in: Add AR variable for use in STLIB_LD. * unix/configure: Regen. * unix/configure.in: Use STLIB_LD when defining MAKE_LIB and MAKE_STUB_LIB. Subst RANLIB and AR. * unix/tcl.m4 (SC_CONFIG_CFLAGS): Add doc comment about STLIB_LD command. Check ${AR} env var when setting STLIB_LD and delay evaluation until make time. * win/configure: Regen. * win/tcl.m4 (SC_CONFIG_CFLAGS): Delay evaluation of ${AR} in STLIB_LD and add flags to better match the Unix implementation. Don't bother defining AR when using VC++ since it is not used. 2001-07-06 Mo DeJong * win/configure: Regen. * win/tcl.m4 (SC_CONFIG_CFLAGS): Pass -e _WinMain@16 in addition to the -mwindows flag to work around a problem with ld when it incorrectly use main() as the executable entry point when both WinMain() and main() are available. 2001-07-06 Donal K. Fellows * tests/cmdAH.test: Added leading zero to file modes to work around fault in HPUX strtol() which ignores the base parameter [Bug #438808] 2001-07-05 Mo DeJong * win/Makefile.in: Subst DEPARG directly instead of relying on a variable. This will make Cygwin builds faster since an extra exec will be avoided. * win/configure: Regen. * win/configure.in: Subst DEPARG. * win/tcl.m4 (SC_CONFIG_CFLAGS): Move AC_MSG_CHECKING after the AC_CHECK_PROG so that status messages do not get mixed together. Set DEPARG based on the results of the cygpath check so that we avoid using an extra exec when it is not needed. Use ac_cv_cygwin status flag instead of looking at the output of gcc -v, which works in the case where -mno-cygwin is set in the CFLAGS. 2001-07-04 Jeff Hobbs * README: * mac/README: * unix/README: * win/README: * win/README.binary: updated READMEs with purls 2001-07-03 Mo DeJong * win/Makefile.in: Remove PATHTYPE variable. * win/configure: Regen. * win/configure.in: Don't subst PATHTYPE. * win/tcl.m4 (SC_CONFIG_CFLAGS): Remove PATHTYPE variable. Set CYGPATH to "cygpath -w" if the cygpath executable is found on the path. This approach works for native Cygwin builds and cross compiles. 2001-07-03 Jeff Hobbs * tests/var.test: * generic/tclVar.c (Tcl_VariableObjCmd): added patch to check for number of args. [Patch #426038] * generic/tclVar.c (Tcl_GetVar2Ex): added ability to recognize TCL_TRACE_READS flags to cause creation of part1 in TclLookupVar to make sure newly created array will get read traces triggered appropriately. This is called by Tcl_ObjGetVar2, Tcl_GetVar, and Tcl_GetVar2. (TclSetIndexedScalar, TclSetElementOfIndexedArray): added read trace triggering for lappend case. (Tcl_LappendObjCmd): pass TCL_TRACE_READS to Tcl_ObjGetVar2 to trigger possible read traces for new arrays. * generic/tclExecute.c (TclExecuteByteCode): added TCL_TRACE_READS flag to INST_LAPPEND(_ARRAY)_STK case to trigger read traces for newly created arrays. Removed unnecessary #ifdef for TCL_COMPILE_DEBUG in INST_LOAD_SCALAR1 case. * tests/append.test: * tests/appendComp.test: added tests for read trace triggering for append and lappend. 2001-07-03 Mo DeJong * tests/clock.test (clock-2.5): Adjust test so that it passes when the time slice is 60 msecs, now passes under Windows 98. 2001-07-03 Mo DeJong * win/tcl.m4 (SC_CONFIG_CFLAGS): Don't pass the v flag to ${AR} when using gcc, verbose output is not needed. 2001-07-03 Don Porter * tests/unixInit.test (unixInit-2.8): Changed test back to using installation layout, adding comments explaining why the test writes to the directories it does, and checks to avoid destroying other files in /tmp. 2001-07-03 Donal K. Fellows * tests/unixInit.test (unixInit-1.2): Fixed faults reported in Bug#438070 - well, at least enough to work on Solaris - and added comments that should make what is going on in the test clearer. 2001-07-02 Jeff Hobbs * tests/util.test: added util-4.6 * generic/tclUtil.c (Tcl_ConcatObj): Corrected walking backwards over utf-8 chars. [Bug #227512] 2001-07-02 Don Porter * tests/unixInit.test (unixInit-2.8): Corrected test for all absolute pathnames in library path when executable is installed near root directory to use correct development directory layout. [Bug 438014] * tests/unixInit.test (unixInit-2.9): * unix/tclUnixInit.c (TclpInitLibraryPath): * win/tclWinInit.c (TclpInitLibraryPath): Corrected buggy construction of search path entries relative to executable. Added test for bad construction. [Bug 438014] 2001-06-28 Miguel Sofer * generic/tclNamesp.c: Correction to faulty patch from [Bug: 231259] 2001-06-28 Donal K. Fellows * tests/unixInit.test (unixInit-1.2): Modified so as not to require a local echo service, which fails on many systems which have that turned off for security reasons... 2001-06-27 Jeff Hobbs * generic/tclInt.h: * generic/tclObj.c: * unix/Makefile.in: added a -DPURIFY mode that makes Tcl_Obj's allocated and free singularly (instead of in alloc in blocks and never free) to allow checkers like Purify to operate better. * library/encoding/koi8-u.enc: added koi8-u (Ukranian variant) encoding. * tests/subst.test: * generic/tclUtf.c (Tcl_UtfBackslash): Corrected backslash handling of multibyte utf-8 chars. [Bug #217987] * generic/tclCmdIL.c (InfoProcsCmd): fixed potential mem leak in info procs that created objects without using them. * generic/tclCompCmds.c (TclCompileStringCmd): fixed mem leak when string command failed to parse the subcommand. * doc/interp.n: * doc/unknown.n: updated notes about what is in a safe interp. [Bug #218605] 2001-06-27 Donal K. Fellows * tests/event.test (event-11.5): Removed hard-coded port number which could fail on some systems. [Bug #436727] 2001-06-26 Mo DeJong * unix/Makefile.in: * win/Makefile.in: Add `make shell` target. This target will set the proper env vars before invoking tclsh from the build directory. 2001-06-26 Mo DeJong * win/Makefile.in: Use : to separate VPATH entries. This works for both Cygwin builds and cross builds, the VPSEP variable is simply unneeded complexity. * win/configure: Regen. * win/configure.in: Don't subst VPSEP. * win/tcl.m4 (SC_CONFIG_CFLAGS): Remove VPSEP variable. 2001-06-26 Mo DeJong * unix/configure: Regen. * unix/configure.in: Fix last checkin by removing export since that only works in bash. * win/configure: Regen. * win/configure.in: Ditto. 2001-06-26 Mo DeJong * unix/configure: Regen. * unix/configure.in: Set CFLAGS to "" if the user did not set CFLAGS in the env. This keeps AC_PROG_CC from adding "-g -O2" to the CFLAGS by default. * win/configure: Regen. * win/configure.in: Ditto. 2001-06-25 Mo DeJong * win/configure: Regen. * win/configure.in: Use RC_DEFINE flag from tcl.m4. * win/tcl.m4 (SC_CONFIG_CFLAGS): Set RC_DEFINE flag based on the compiler in use. 2001-06-25 Mo DeJong * win/tcl.m4 (SC_CONFIG_CFLAGS): Link to the imm32 library when building with mingw gcc. 2001-06-25 Mo DeJong * win/configure: Regen. * win/tcl.m4 (SC_CONFIG_CFLAGS): When building with gcc, don't attempt to link with LD or support dllwrap. Simply require a recent version of Cygwin gcc or Mingw gcc that supports -shared. When linking, use gcc instead of ld since gcc automatically includes libs like -lmsvcrt. 2001-06-22 Mo DeJong * win/configure: Regen. * win/configure.in: Add resource compiler fix from 8.3.3 to fix compiling with mingw. 2001-06-22 Mo DeJong * win/configure: Regen. * win/tcl.m4: Fix silly typo in last checkin. 2001-06-22 Mo DeJong * unix/Makefile.in: Set CFLAGS to @CFLAGS@ and @CFLAGS_DEFAULT@. Set LDFLAGS to @LDFLAGS@ and @LDFLAGS_DEFAULT@. Add LDFLAGS_DEBUG and LDFLAGS_OPTIMIZE to match the way CFLAGS_DEFAULT works. This will support user set CFLAGS or LDFLAGS at configure time. * unix/configure: Regen. * unix/configure.in: Don't set CFLAGS to CFLAGS_DEFAULT, instead subst CFLAGS_DEFAULT into the Makefile. Add AC_SUBST for CFLAGS_DEFAULT, LDFLAGS_DEFAULT, LDFLAGS_DEBUG, and LDFLAGS_OPTIMIZE. * unix/tcl.m4 (SC_ENABLE_SYMBOLS): Modify LDFLAGS_DEFAULT so that it uses a Makefile variable just like CFLAGS_DEFAULT. * win/Makefile.in: Set CFLAGS to @CFLAGS@ and @CFLAGS_DEFAULT@. Set LDFLAGS to @LDFLAGS@ and @LDFLAGS_DEFAULT@. This will support user set CFLAGS or LDFLAGS at configure time. * win/configure: Regen. * win/configure.in: Don't set CFLAGS or LDFLAGS, instead subst CFLAGS_DEFAULT and LDFLAGS_DEFAULT into the Makefile. * win/tcl.m4 (SC_ENABLE_SYMBOLS): Modify LDFLAGS_DEFAULT so that it uses a Makefile variable just like CFLAGS_DEFAULT. 2001-06-22 Mo DeJong * win/configure: * win/tcl.m4 (SC_CONFIG_CFLAGS): Don't set LDFLAGS_DEBUG to -g or LDFLAGS_OPTIMIZE to -O when compiling with gcc. These flags are not needed and can cause problems with the Cygwin version of ld. 2001-06-18 Donal K. Fellows * tests/unixInit.test (unixInit-1.2,unixInit-2.8): Added test for code described below, and fixed a couple of errors that caused problems during testing; the code to determine the installedTcl constraint was wrong, and test unixInit-2.8 assumed that /tmp/lib was free for use and could be deleted, which clashed nastily with my installation and made other tests fail unnecessarily! * unix/tclUnixChan.c (TtyInit,TclpOpenFileChannel, Tcl_MakeFileChannel,TclpGetDefaultStdChannel): Alterations so that the standard channels - stdin, stdout and stderr - have the correct type and fconfigure options. This required making the initialisation of serial lines a little more sophisticated to make the console behave correctly in interactive mode... [Bug #219137 and duplicates] 2001-06-16 Don Porter * generic/tclInt.decls: * generic/tclInt.h: * generic/tclPanic.c (Tcl_PanicVA): * mac/tclMacAppInit.c (main): * mac/tclMacPanic.c (TclpPanic): * unix/tclUnixPort.h: * win/tclWinPort.h: Replaced TclMacSetPanic with TclpPanic for setting a platform-specific panic handler. TclpPanic is NULL on Unix and Windows. Fixes broken wish on Mac due to earlier patches. [Patch 415648] * generic/tclIntPlatDecls.h: * generic/tclStubInit.c: `make gentubs` after above changes. 2001-06-13 Don Porter * mac/tclMacAppInit.c (main, Macintosh_Init): * mac/tclMacBOAAppInit.c (main): * mac/tclMacPanic.c: Applied patches from Dan Steffen correcting problems on the Macintosh in the 2001-06-08 changes. 2001-06-12 Donal K. Fellows * tests/regexp.test (regexp-18.12): * generic/tclCmdMZ.c (Tcl_RegexpObjCmd): Fixed so that submatches that do not match always have index pair {-1 -1} [Bug #219232] 2001-06-08 Don Porter * generic/tcl.h: * generic/tcl.decls: * generic/tclPanic.c: Added CONST to Tcl_*Panic* public interfaces. [Patch 415648, TIP 27] * generic/tclInt.decls: * mac/tclMacAppInit.c (main): * mac/tclMacBOAAppInit.c (main): * mac/tclMacPanic.c: Modified special Mac implementations of Tcl_*Panic* to be exact copies of the generic implementations. Added TclMacSetPanic. The generic implementations should be used directly, rather than copies, but that requires further changes by someone familiar with the Mac build systems. [Patch 415648] * generic/tclDecls.h: * generic/tclIntPlatDecls.h: * generic/tclStubInit.c: `make gentubs` after above changes. * doc/Panic.3: * unix/mkLinks: New file documenting Tcl_*Panic* public interfaces, followed by `make mklinks`. [Patch 415648, Bug 219170, Bug 414936] 2001-06-03 Jeff Hobbs * generic/tclUtil.c (Tcl_DStringAppendElement): patch to save an extra strlen call. [Bug #428572] 2001-05-30 Donal K. Fellows * generic/tclExecute.c (TclExecuteByteCode): Added two casts to INST_STR_CMP implementation to get rid of a couple warnings from the SUNWspro C compiler. * generic/tclBasic.c (Tcl_GetMathFuncInfo,Tcl_ListMathFuncs): * generic/tclCmdIL.c (Tcl_InfoObjCmd,InfoFunctionsCmd): * generic/tcl.decls (generic table, positions 435+436): * tests/info.test: * doc/CrtMathFnc.3: * doc/info.n: Changes due to TIP #15 "Functions to List and Detail Math Functions" 2001-05-28 Jeff Hobbs * library/init.tcl (unknown): removed errant " in error message 2001-05-27 Jeff Hobbs * generic/regc_locale.c: updated character class range data for Unicode v3.1.0 compliance. * generic/tclUniData.c: regenerated from Unicode v3.1.0 data file (new as of 2001-05-16). This brings Tcl to current unicode compliance. * tests/utf.test: added tests to check unicode 3 compliance * unix/Makefile.in (tclUtf.o): added tclUniData.c dependency. * tools/uniClass.tcl: added comments to output format and the script for clarification. * tools/uniParse.tcl: corrected filename output and GetDelta macro to use 'info' as param (was 'infO') 2001-05-26 Donal K. Fellows * generic/tclVar.c (tclArraySearchType,SetArraySearchObj, ParseSearchId): Added code to speed up array searching by reducing the amount of parsing needed for searchIds. * generic/tclObj.c (TclInitObjSubsystem): * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): * generic/tclNamesp.c (TclInitNamespaceSubsystem): * generic/tclInt.h: Moved some Tcl_ObjType initialisation to TclInitObjSubsystem to be with the bulk of the rest. [Patch 424851] Committed by Miguel Sofer 2001-05-23 Jeff Hobbs * tests/io.test: changed io-52.[9-11] to not be platform sensitive with EOL translation. * library/encoding/cp1250.enc: * library/encoding/cp1251.enc: * library/encoding/cp1252.enc: * library/encoding/cp1253.enc: * library/encoding/cp1254.enc: * library/encoding/cp1255.enc: * library/encoding/cp1256.enc: * library/encoding/cp1257.enc: * library/encoding/cp1258.enc: * library/encoding/cp874.enc: * library/encoding/iso8859-6.enc: * library/encoding/iso8859-7.enc: * library/encoding/iso8859-8.enc: * library/encoding/iso8859-10.enc (new): * library/encoding/iso8859-13.enc (new): * library/encoding/iso8859-14.enc (new): updated encoding tables based on http://www.unicode.org/Public/MAPPINGS/. (kuhn) 2001-05-23 Mo DeJong * unix/tcl.m4 (SC_PATH_TCLCONFIG): Fix comments, and typo in cached variable name. 2001-05-23 Mo DeJong * unix/tcl.m4 (SC_LOAD_TKCONFIG): Remove use of undefined TCLCONFIG variable and call AC_MSG_RESULT to print the checking result. * win/tcl.m4: Ditto. 2001-05-22 Jeff Hobbs * generic/tclObj.c (TclAllocateFreeObjects): simplified objSizePlusPadding to use sizeof(Tcl_Obj) (max) Corrected use of tclObjsAlloced/Freed/Shared in TCL_MEM_DEBUG compile. 2001-05-22 Miguel Sofer * generic/tclExecute.c: removed Tcl_DuplicateObj in INST_DUP 2001-05-21 Jeff Hobbs * tests/tcltest.test (tcltest-19.1): fixed failing test that was getting affected by Windows env handling of empty valued elements. * unix/tcl.m4: added more common install directories in which to search for *Config.sh [Bug #419812] * tests/cmdMZ.test (cmdMZ-1.4): added notLinux constraint to test to prevent failure message on Linux due to OS caching bug. * tests/httpd (httpdRespond): added response to timeout value in query string. * tests/http.test: removed unused notLinux constraint setting * generic/tclRegexp.c (Tcl_RegExpExecObj): added use of Tcl_GetUnicodeFromObj. 2001-05-19 Andreas Kupries * Note that "tclbench" (see project "tcllib") was extended with performance benchmarks for [fcopy] too. * doc/fcopy.n: Updated to reflect the extended behaviour of 'fcopy'. * tests/io.test: Added tests 'io-52.9', 'io-52.10' and 'io-52.11' to test the handling of encodings by 'fcopy' / 'TclCopychannel' [Bug #209210]. * generic/tclIO.c: Split of both 'Tcl_ReadChars' and 'Tcl_WriteChars' into a public error checking and an internal working part. The public functions now use the new internal ones. The new functions are 'DoReadChars' and 'DoWriteChars'. Extended 'CopyData' to use the new functions 'DoXChars' when required by the encodings on the input and output channels [Bug #209210]. 2001-05-16 Jeff Hobbs * library/history.tcl (tcl::HistAdd): prevent empty calls from being added to the history (arndt) * tests/error.test: updated error-1.3 message to account for string index being compiled at toplevel. * tests/appendComp.test: * tests/stringComp.test: new files for extended bytecode testing * generic/tclBasic.c: added new CompileProc invocations to basic command initialization. * generic/tclCompCmds.c: added new compile commands for append, lappend, lindex and llength. Refactored set and incr compile commands to use new TclPushVarName function for handling the varname component during compilation (also used by append and lappend). Changed string compile command to compile toplevel code as well (when possible). * generic/tclCompile.c: added new instruction enums * generic/tclCompile.h: added debug info for new instructions * generic/tclExecute.c (TclExecuteByteCode): moved elemPtr to toplevel var (oft-used). Added definitions for new bytecode instructions INST_LIST_INDEX, INST_LIST_LENGTH, INST_APPEND_SCALAR1, INST_APPEND_SCALAR4, INST_APPEND_ARRAY1, INST_APPEND_ARRAY4, INST_APPEND_ARRAY_STK, INST_APPEND_STK, INST_LAPPEND_SCALAR1, INST_LAPPEND_SCALAR4, INST_LAPPEND_ARRAY1, INST_LAPPEND_ARRAY4, INST_LAPPEND_ARRAY_STK, INST_LAPPEND_STK. Refactored repititious code for reuse with INST_LOAD_STK (same as INST_LOAD_SCALAR_STK), INST_STORE_STK (same as INST_STORE_SCALAR_STK). Updated INST_STR_CMP with style of fix of 2001-04-06 Fellows [Bug #219201] as that fix only affected the runtime eval'ed "string" (string compare is normally byte-compiled now). We may want to back these out for speed in the future, noting the problems with \x00 comparisons in the docs. * generic/tclInt.h: declarations for new compile commands. * generic/tclVar.c: change TclGetIndexedScalar, TclGetElementOfIndexedArray, TclSetElementOfIndexedArray and TclSetIndexedScalar to use flags. The Set functions now support TCL_APPEND_ELEMENT and TCL_LIST_ELEMENT as well. * generic/tclInt.decls: * generic/tclIntDecls.h: minor signature changes for above. * generic/tclCmdMZ.c: made use of new Tcl_GetUnicodeFromObj. 2001-05-16 Donal K. Fellows * doc/console.n: Deleted. Put it in the wrong source tree! D'oh! 2001-05-15 Jeff Hobbs * generic/tcl.decls: * generic/tclDecls.h: * generic/tclStubInit.c: * generic/tclStringObj.c (Tcl_GetUnicodeFromObj): new function to parallel Tcl_GetStringFromObj (fix of an API oversight). * unix/tclUnixPipe.c: updated pipeChannelType to TCL_CHANNEL_VERSION_2 type specification. * tests/fileName.test: corrected tests not to fail on win when a C:/test dir exists. * generic/tclFileName.c (ExtractWinRoot): corrected ABR error 2001-05-15 Miguel Sofer * tests/lindex.test: added test for nested braces [Patch: 423617] 2001-05-15 Miguel Sofer * generic/tclInt.h * generic/tclNamesp.c: invalidate all bytecodes in a namespace if a new command shadows a bytecoded command. * tests/namespace.test Patched from [Bug: 231259] 2001-05-15 Donal K. Fellows * doc/console.n: Created. It seems very odd to me that the console implementation is part of the Tcl distribution and not part of Tk, but given the location of the source, the documentation must obviously match up... 2001-05-14 Donal K. Fellows * generic/tclCmdMZ.c (Tcl_StringObjCmd): * tests/string.test (string-4.14): Negative string indices should not be added as offsets to the result of [string first] but instead be treated as referring to the start of the string. [Bug: 423581] 2001-05-11 Mo DeJong * unix/Makefile.in: Add a LDFLAGS variable to the Makefile instead of directly substing @LDFLAGS@. * unix/configure: Regen. * unix/tcl.m4: Fix CFLAGS_DEFAULT so that the name of a Makefile variable is passed as @CFLAGS@. * win/Makefile.in: Move the setting of CFLAGS higher up in the Makefile. * win/configure: Regen. * win/configure.in: Use dnl to comment out macros so that they are not accidently expanded. * win/tcl.m4: Fix CFLAGS_DEFAULT so that the name of a Makefile variable is passed as @CFLAGS@. 2001-05-07 Miguel Sofer * generic/tclExecute.c: insure different rand() seeds in different threads [Bug 416643] 2001-05-03 Jeff Hobbs * tests/tcltest.test: removed extraneous 'c' (doh!) [Bug: 414031] * tools/tcltk-man2html.tcl: removed use of 'exec' for portability and fixed up code. 2001-05-03 Don Porter * doc/library.n: * library/init.tcl: * tests/autoMkindex.t*: Modified [auto_import] to apply pattern matching in the [namespace import] style. [Bug 420186] ***POTENTIAL INCOMPATIBILITY*** for any callers of [auto_import] from outside Tcl that expect the pattern matching to be like that of [string match]. 2001-05-03 Miguel Sofer * generic/tclParse.c: * tests/namespace.test: Insure consistent behaviour of the [unknown] command: when a command is unknown, it is always processed by [::unknown], ignoring any namespace proc which happens to be called "unknown" [Patch #421166, Bug #420507] 2001-05-02 Don Porter * tools/genStubs.tcl: Add a package require of Tcl 8 at the beginning of the script so that the script will print a descriptive error message when run in an old Tcl 7 shell. 2001-04-27 Kevin Kenny * generic/tclInt.decls: * generic/tclInt.h: * generic/tclCmdIL.c: * generic/tclProc.c: * generic/tclVar.c: Added another collection of missing CONSTs related to TclGetNamespaceForQualName. * generic/tclIntDecls.h: Regenerated. 2001-04-25 Mo DeJong * unix/configure: Regen. * unix/tcl.m4: Subst TCL_THREADS into tclConfig.sh. * unix/tclConfig.sh.in: Add TCL_THREADS variable. * win/configure: Regen. * win/tcl.m4: Subst TCL_THREADS into tclConfig.sh. * win/tclConfig.sh.in: Add TCL_THREADS variable. 2001-04-25 Mo DeJong * unix/configure: Regen. * unix/configure.in: Use $@ in MAKE_LIB and MAKE_STUB_LIB commands instead of using a delayed subst variable. Replace instances of STUB_LIB_FILE with TCL_STUB_LIB_FILE. 2001-04-25 Mo DeJong * unix/Makefile.in: Use TCL_STUB_LIB_FILE instead of STUB_LIB_FILE. * unix/configure: Regen. * unix/configure.in: Don't subst STUB_LIB_FILE, use TCL_STUB_LIB_FILE instead. 2001-04-25 Donal K. Fellows * tools/encoding/iso8859-15.txt: * library/encoding/iso8859-15.enc: Oops! Got the full encoding wrong. Should be fixed now... * tools/encoding/iso8859-15.txt: * library/encoding/iso8859-15.enc: * tools/tcl.wse.in: Added ISO 8859-15 (a.k.a. Latin-1 + Euro currency symbol) support. * generic/tclNamesp.c: * generic/tclBasic.c (TclRenameCommand): Missing CONST from several declarations relating to use of TclGetNamespaceForQualName 2001-04-24 Kevin B. Kenny * doc/AssocData.3: * doc/CrtCommand.3: * doc/CrtMathFnc.3: * doc/CrtObjCmd.3: * doc/ExprLong.3: * generic/tclBasic.c: * generic/tclCmdMZ.c: * doc/CrtSlave.3: * generic/tclNamesp.c: * generic/tcl.decls: * generic/tcl.h: * generic/tclInt.decls: * generic/tclInt.h: (TIP #27) Another round of CONST changes, this time adding CONST to the API's exported from tclBasic.c. [Patch #415179] ***POTENTIAL INCOMPATIBILITY*** from 8.4a2, in which Vince Darley's changes to command tracing were added. A const has been added to the type signature of one of the parameters to Tcl_CommandTraceProc. 2001-04-10 Kevin B. Kenny * unix/tclUnixTime.c: Altered code to use memcpy instead of structure assigments in an effort to achieve better K&R compatibility. 2001-04-10 Kevin B. Kenny * unix/tclUnixTime.c: Fixed silly typo in calls to 'gmtime' and 'localtime' that broke the Linux build. 2001-04-09 Kevin B. Kenny * unix/tclLoadShl.c: Added DYNAMIC_PATH to the load flags so that the SHLIB_PATH will be searched for other libraries. [Bug #219140] 2001-04-09 Kevin B. Kenny * unix/tcl.m4: Added _REENTRANT to Solaris build so that thread safe library routines are included. * unix/configure: Re-ran 'autoconf' with changed tcl.m4 * tclUnixTime.c: Modified for thread safety of 'gmtime' and 'localtime' system calls [Bugs #219136 and #232558] 2001-04-09 Donal K. Fellows * tests/expr.test (expr-21.*): Tests to check below fix. * generic/tclParseExpr.c (GetLexeme): Now recognises the non-numeric boolean literals for what they are. It no longer makes sense for anyone to create functions with the same name as one of them, but this was true in 7.* as well [Bug #217777; finally!] 2001-04-07 Miguel Sofer * generic/tclExecute.c: Avoid panic when there are extra items in the tcl stack [Bug #406709, Patch #414470] * tests/foreach.test: test to exercise the patch 2001-04-07 Miguel Sofer * doc/namespace.n: document correct functionality * generic/tclNamesp.c: corrected behaviour of [namespace code] (Bug #219385, Patch #403530) * library/init.tcl: * tests/namespace-old.test: test correct functionality * tests/namespace.test: test correct functionality 2001-04-07 Andreas Kupries * unix/Makefile.in (checkdoc): New target, checking the definitions as found in the compiled library against the manpages to find undocumented public functionality. * unix/mkLinks: Updated to include the new manpage. * doc/UniCharIsAlpha.3: New manpage documenting the Unicode character classification APIs [Bug #218720]. 2001-04-07 Andreas Kupries * unix/mkLinks: Updated to incorporate the changes below. * doc/StringObj.3: Added 'Tcl_AttemptSetObjLength' to the NAME section. [Bug #414435]. * doc/Alloc.3: Added both 'Tcl_AttemptAlloc' and 'Tcl_AttemptRealloc' to the NAME section. [Bug #414435]. * doc/Utf.3: Added both 'Tcl_UniCharCaseMatch' and 'Tcl_UniCharNcasecmp' to the NAME section. [Bug #414435]. 2001-04-06 Don Porter * library/init.tcl: * tests/init.test: Modified processing of $::errorInfo by [unknown] when the auto-loaded command throws an error to better cover the tracks of auto-loading. [Bug 219280, Patch 403551] 2001-04-06 Donal K. Fellows * doc/read.n: Added section on "USE WITH SERIAL PORTS" to resolve [Bug #219402] * tests/string.test (string-2.30): Test for this case * generic/tclCmdMZ.c (Tcl_StringObjCmd, STR_COMPARE branch): Fixed problem caused by Utf-rep of \x00 being more than Utf-rep of \x01 fooling memcmp by forcing everything through Utf-based comparisons. Added optimizations for case where objects have a string/unicode-rep or a bytearray-rep (i.e. where we can perform comparisons on fixed-size units.) [Bug #219201] * generic/tclUtf.c (Tcl_UtfNcmp): Corrected seriously erroneous comment. 2001-04-05 Andreas Kupries * doc/Macintosh.3: Removed duplicates from .SH line [Bug #413983]. 2001-04-05 Donal K. Fellows * generic/tclCmdMZ.c (Tcl_StringObjCmd): Fixed so will compile with K&R compilers [Patch #413844, Bug #413847] 2001-04-04 Don Porter * generic/tclMain.c: Patch from Kevin Kenny to restore support of pre-ANSI compilers. [Bug 413846, Patch 413842] 2001-04-04 Andreas Kupries * unix/mkLinks: Updated to contain the new manpage. * doc/Environment.3: New manpage, describes Tcl_PutEnv [Bug #219171]. * doc/Macintosh.3: New manpage describing the macintosh specific parts of the public API [Bug #219169]. 2001-04-04 Jeff Hobbs * unix/configure: * unix/tcl.m4: extended test of termios vs. termio vs. sgtty to better detect result on Linux and when certain configure redirections are being used. (max) [Patch #402923; Bug #227412, #219194] 2001-04-04 Andreas Kupries * generic/tclTest.c: * tests/io.tests: TIP #10 followup correcting a problem with the original patch because of the lack of 'testthread id' for a non-threaded compilation. 2001-04-04 Kevin Kenny * doc/ByteArrObj.3: * doc/DumpActiveMemory.3: * doc/InitStubs.3: * doc/PkgRequire.3: * doc/StringObj.3: * generic/tcl.decls: * generic/tcl.h: * generic/tclBinary.c: * generic/tclCkalloc.c: * generic/tclDecls.h: * generic/tclListObj.c: * generic/tclObj.c: * generic/tclPkg.c: * generic/tclStringObj.c: * generic/tclStubLib.c: (TIP#27) Changed a number of Tcl API's to accept "CONST char*" in place of simple "char*". (kennykb) [Patch #404026] 2001-04-04 Jeff Hobbs * generic/tclListObj.c (Tcl_SetListObj): set objPtr->length = 0 in empty object case to maintain sanctity of Tcl_Obj bytes/length pairing. (porter) [Patch #405998] 2001-04-03 Andreas Kupries * unix/mkLinks: Added 'Signal.3', 'Tcl_WaitPid'. * doc/DetachPids.3: Added description of 'Tcl_WaitPid' [Bug #219173]. * doc/Signal.3: New man page describing the public API procedures 'Tcl_SignalId' and 'Tcl_SignalMsg' [Bug #219172]. 2001-04-02 Jeff Hobbs * README: * win/README: * win/README.binary: further notes corrections. * win/configure: * win/tcl.m4 (SHLIB_LD): added -incremental:no. [Bug #219381] 2001-04-01 Jeff Hobbs * README: * mac/README: * win/README: * win/README.binary: * unix/README: updated patchlevel information to 8.4a3 and updated links and notes. * generic/tcl.h: * tools/tcl.wse.in: * win/configure.in (VER): * win/configure: * unix/configure: * unix/configure.in (VER): * unix/tcl.spec: updated patchlevel information to 8.4a3 2001-03-30 Jeff Hobbs * generic/tclCkalloc.c (TclFinalizeMemorySubsystem): set curTagPtr to NULL to allow for reuse. * generic/tclEvent.c (Tcl_Finalize): moved the tsdPtr initialization inside the subsystemsInitialized check to prevent it potentially getting called twice during finalization. (wu) [Patch #403532, Bug #219391] * generic/tclThreadTest.c (Tcl_ThreadObjCmd): cast fixes * generic/tclTest.c (TestChannelCmd): added cast to mollify Windows debug build. * win/tclWinSock.c (SocketEventProc): Fixed race condition in readability of socket on Windows. [Patch #410674, Bug #219205 #219333] * win/tcl.m4: added imm32.lib to LIBS_GUI for Tk IME support. * win/Makefile.in (install-libraries): removed extra \s that broke the target. (install-doc): improved install-* targets to use their base build dependency. 2001-03-30 Andreas Kupries * All of the changes below belong to TIP #10 [Tcl I/O Enhancement: Thread-Aware Channels]. See also [Patch #403358] at SF. * generic/tclIO.h (struct ChannelState, line 236f): Extended the structure with a new field of type 'Tcl_ThreadId' to hold the id of the thread currently managing all channels with this state. Note: This structure is shared by all channels in a stack of transformations. * generic/tclIO.c (Tcl_CreateChannel, lines 1058-1065): Modified to store the Id of the current thread in the 'ChannelState' of the new channel. * generic/tclIO.c (Tcl_SpliceChannel, lines 2265-2270): Modified in the same manner as 'Tcl_CreateChannel' as the channel will be managed by the current thread afterward. * generic/tclIO.c (Tcl_GetChannelThread, lines 1478-1503): * generic/tcl.decls (Tcl_GetChannelThread, lines 1504-1506): New API function to retrieve the Id of the managing thread from a channel. Implementation and declaration. * generic/tclTest.c (TestChannelCmd, lines 4520-4532): Added subcommand 'mthread' to query a channel about its managing thread. 2001-03-29 Mo DeJong * tests/interp.test: Print out warning when testinterpdelete command is not defined. Add tests that checks to make sure a child interp inherits the parent's cwd. 2001-03-29 Jeff Hobbs * doc/tcltest.n: corrected incorrect macro usage. * doc/lsort.n: corrected unbalanced nroff macros. * unix/tclUnixPipe.c (TclpCreateTempFile): prevent potential race condition and security leak in tmp filename creation. (max) [Patch #402924] * unix/configure: * unix/tcl.m4: corrected IRIX-5.x config to not use -n32. (english) [Patch #403626] * unix/tclUnixThrd.c (Tcl_ConditionWait): fixed handling of timeout for threads (corrects excessive CPU usage issue for Tk on Unix in threaded Tcl environment). (ruppert) [Bug #411603] 2001-03-29 Donal K. Fellows * doc/lsort.n: Added some notes that clarify the behaviour of [lsort] as well as a whole bunch of examples. [Bug #219202] 2001-03-27 Jeff Hobbs * doc/Alloc.3: corrected docs to note that Tcl_Attempt* return char *'s, not ints. [Bug #411388] * tests/regexp.test (regexp-19.1): * generic/tclCmdMZ.c (Tcl_RegsubObjCmd): fixed handling of nulls in subspec value. 2001-03-26 Don Porter * generic/tclDecls.h (Tcl_InitCustomHashTable): Correction to patch from 2001-01-18; tclDecls.h was not generated using 'make genstubs'. 2001-03-26 Donal K. Fellows * win/tclWinInt.h (tclWinTCharEncoding): Removed as now a static variable in win/tclWin32Dll.c instead. 2001-03-23 Jeff Hobbs * generic/tclVar.c (Tcl_ArrayObjCmd): Corrected retrieval of resultPtr to prevent possible corruption. * generic/tclNamesp.c (Tcl_Import): Correctly freed a DString. (lavana) [Patch #403755] 2001-03-15 Donal K. Fellows * tests/set-old.test (set-old-7.2): Changed error behaviour of [unset] to agree with documentation, so must change test as well. 2001-03-14 Don Porter * library/package.tcl (pkg_mkIndex): Added patch from Vince Darley to make [pkg_mkIndex -verbose] even more verbose. [Bug 219349, Patch 403529] 2001-03-13 Donal K. Fellows * doc/info.n: Improved documentation for [info hostname]. [Bug #403840] * generic/tclVar.c (Tcl_UnsetObjCmd): Made command behave as documented [issue remaining from bug #405769] * generic/tclCmdMZ.c (Tcl_StringObjCmd): A missing {return TCL_OK;} was causing memory corruption. [Bug #408002] * generic/tclExecute.c (TclDeleteExecEnv, GrowEvaluationStack, TclExecuteByteCode): Added some casts to ClientData that are apparently needed on some architectures. 2001-03-12 Donal K. Fellows * tests/string.test: Fixed some test numberings and added a test. [Patch #403229] 2001-03-06 Donal K. Fellows * generic/tclVar.c (Tcl_UnsetObjCmd): Rewrote argument parser to avoid a read off the end of the argument array that could occur when executing something like [unset -nocomplain] was executed. Improved the error message given when too few arguments are given (-nocomplain should obviously be *before* --, not after it) and also modified the test suite to take account of that and the documentation to use the same improvement. [Bug 405769] 2001-03-02 Donal K. Fellows * generic/tclExecute.c (TclExecuteByteCode): Fixed bug that could pass pointers to freed memory to command implementations, which most obviously caused some weird behaviour with [info level], but could have caused problems with user code and command traces too. [Bug 404865, Patch 405436] 2001-02-23 msofer * no changes; fixing up the missing comment in the previous one. Sorry. 2001-02-23 msofer * /cvsroot/tcl/tcl/tests/execute.test: added test for evaluation of an expression in a variable; evals once by compiling, second time using the previous compilation 2001-02-18 Kevin B. Kenny * doc/clock.n: Updated documentation to reflect the addition of compat/strftime.c, including the correct formatting of ISO-8601:1988 fiscal week number (%V). 2001-02-15 Donal K. Fellows * generic/tclCmdMZ.c (Tcl_SplitObjCmd): Improved efficiency of splitting strings into individual characters by adding hash so that only one Tcl_Obj per character is created. Improves performance of splitting of short strings and makes a huge difference to splitting of long strings, such as is done in the mime package in tcllib. [Bug #131523] 2001-01-31 Don Porter * win/makefile.vc (install-libraries): Corrected misdirected install directory for the msgcat 1.2 package. 2001-01-30 Don Porter * generic/tclIO.c (CopyData): Moved code that updates the count of how many bytes are left to copy. Corrects bug that when writing occurs in the background, the copy loop could be escaped without updating the count, causing CopyData() to try to copy more bytes than the toRead value originally passed to TclCopyChannel(), leading to hangs and misreporting of number of bytes copied. [Bug 118203, Patch 103432] 2001-01-18 Andreas Kupries * Everything below belongs together, it fixes bug #123153. * generic/tcl.h (line 342): A bit more explanation about the default value for TCL_PRESERVE_BINARY_COMPATABILITY. * generic/tcl.h (line 1208): Define the macro 'Tcl_InitHashTable' only when TCL_PRESERVE_BINARY_COMPATIBILITY is not set as it kills binary compatibility to 8.3 and earlier versions. This is the main part of the patch/change. * generic/tcl.decls (line 1469): * generic/tclHash.c (Tcl_InitHashTable): * generic/tclHash.c (Tcl_InitHashTableEx): * generic/tclObj.c (Tcl_InitObjHashTable): Changed 'Tcl_InitHashTableEx' to 'Tcl_InitCustomHashTable'. This change is more of an estethical nature, replacing the ubiquitous 'Ex' suffix with a more meaningful name. The introduced binary incompatibility is deemed acceptable as it is between alpha versions. Updated callers. * doc/Hash.3: * unix/mkLinks: Changed 'Tcl_InitHashTableEx' to 'Tcl_InitCustomHashTable'. 2001-01-10 Donal K. Fellows * tests/winPipe.test (winpipe-1.20): * tests/winDde.test (createChildProcess): * tests/pkgMkIndex.test (pkgtest::createIndex): Removed assumption that paths contain no spaces which causes problems with both [eval] and [open |...] due to the well-known differences between lists and strings. Fixes bug #119406 2001-01-04 Don Porter * tests/unixInit.test: * unix/tclUnixInit.c (TclpInitLibraryPath): * win/tclWinInit.c (TclpInitLibraryPath): Several entries in the library path ($tcl_libPath) are determined relative to the absolute path of the executable. When the executable is installed in or near the root directory of the file system, relative pathnames were being incorrectly generated, and in the worst case, memory access violations were crashing the program. [Bug 119416, Patch 102972] ****************************************************************** *** CHANGELOG ENTRIES FOR 2000 IN "ChangeLog.2000" *** *** CHANGELOG ENTRIES FOR 1999 AND EARLIER IN "ChangeLog.1999" *** ******************************************************************