Compare commits

...
Author SHA1 Message Date
jan.nijtmans 200e5e0169 x 2012-03-15 08:42:22 +00:00
jan.nijtmans 9a90e2eb68 x 2012-03-15 08:33:40 +00:00
jan.nijtmans e7a7d7dbfd [Bug 3388350] mingw64 compiler warnings 2012-03-12 12:38:58 +00:00
jan.nijtmans 9fd4398c37 [Bug 3388350] mingw64 compiler warnings 2012-03-12 12:38:09 +00:00
jan.nijtmans 5834970dc6 DWORD_PTR typedef after <windows.h> 2012-03-07 20:15:34 +00:00
jan.nijtmans 30a44a9e96 DWORD_PTR typedef after <windows.h> 2012-03-07 20:09:39 +00:00
andreask 6fba842371 Merged from 8.4 branch -- http package. Fix Bug 3498327. Generate upper-case hexadecimal output for compliance with RFC 3986. Bumped version to 2.7.9. 2012-03-07 18:54:23 +00:00
andreask d5ea885e1c http package. Fix Bug 3498327. Generate upper-case hexadecimal output for compliance with RFC 3986. Bumped version to 2.5.7. 2012-03-07 18:50:48 +00:00
jan.nijtmans c5f728a5af Compatibility with older Visual Studio versions 2012-03-06 20:53:12 +00:00
jan.nijtmans df77e6c539 now with changelog entry 2012-03-06 20:51:32 +00:00
jan.nijtmans 39425c5c19 Compatibility with older Visual Studio versions 2012-03-06 20:50:15 +00:00
jan.nijtmans f43330a968 eliminate the use of intptr_t 2012-03-05 20:39:40 +00:00
jan.nijtmans 0d70d9d68c merge-mark 2012-03-05 20:11:41 +00:00
guest 7fcf2ad8c2 Backport to 8.4/unix the healthy FD_SET reform started by das. Allows Tcl8.4 to have sane fileevents on x86_64 unices at last. 2012-03-04 19:36:35 +00:00
jan.nijtmans f28d0bc94f Patch from the cygwin folks 2012-03-04 16:38:22 +00:00
jan.nijtmans 45885a67c8 Patch from the cygwin folks 2012-03-04 16:36:47 +00:00
jan.nijtmans c94680eeb6 oops, that's no utf-8 BOM ;-( 2012-02-29 22:38:28 +00:00
jan.nijtmans 761897c234 oops, that's no utf-8 BOM ;-( 2012-02-29 22:35:27 +00:00
jan.nijtmans 4c1377ed5a [Bug 3466099] BOM in Unicode 2012-02-29 21:34:46 +00:00
jan.nijtmans a1416a6c39 [Bug 3466099] BOM in Unicode 2012-02-29 21:17:35 +00:00
dkf fbbaada7c6 Add tests relating to bug 1115587. The bug itself still exists at this point. 2012-02-23 21:08:11 +00:00
dkf 400babcc66 Make test clearer to future maintainers. 2012-02-20 11:55:56 +00:00
jan.nijtmans 7815b5521b [Bug 3466099] BOM in Unicode 2012-02-19 15:21:27 +00:00
jan.nijtmans e4e0da064a [Bug 2233954] AIX: compile error, but don't do that for _WIN32 (doesn't work in VS10) 2012-02-17 21:17:27 +00:00
andreask 210f461ca0 Fix: Removed C99ism (in-block variable declaration) from commit [39f6ebe301] which prevents building with non-gcc compilers, notably AIX, HPUX, Solaris, MSVC6, possibly others. 2012-02-17 17:12:32 +00:00
sebres 553c83462d bug fix: avoid segfaulting by deleted interp in RecordByteCodeStats 2012-02-17 15:14:16 +00:00
jan.nijtmans ee1a343bc1 [Bug 2233954] AIX: compile error 2012-02-16 23:09:59 +00:00
dkf 8d217efd44 * generic/tclCompCmds.c (TclCompileDictForCmd): [Bug 3487626]: Fix
crash in compilation of [dict for] when its implementation command is
	used directly rather than through the ensemble.
2012-02-15 09:51:12 +00:00
ferrieux 8cf41bb327 Document, by a retroactive bug report, a nasty Notifier issue on 64-bits x86 that affects the 8.4 branch 2012-02-10 15:06:01 +00:00
dgp df15da2848 3484402 Correct Off-By-One error appending unicode. Thanks to Poor Yorick.
Also corrected test for when growth is needed.
2012-02-09 15:00:46 +00:00
dgp e808998f32 3484402 Correct Off-By-One error appending unicode. Thanks to Poor Yorick.
Also corrected test for when growth is needed.
2012-02-09 14:57:14 +00:00
dgp c5427831df 3484402 Correct Off-By-One error appending unicode. Thanks to Poor Yorick.
Also converted some memcpy() to memmove() to reliably handle overlapping
copies, and corrected test for when growth is needed.
2012-02-07 20:28:56 +00:00
dgp 1470e2393e 3485022 Disable ensemble subcommand compile inside a Tcl_Create*Trace(). 2012-02-06 18:54:08 +00:00
dgp 3bff5d1e36 3485022 TclCompileEnsemble() avoid compile when exec traces set. 2012-02-06 17:34:46 +00:00
dgp 99a82a1d2a 3484621 Invalidate bytecode when exec traces are added/removed from compiled cmd. 2012-02-06 17:21:56 +00:00
mig 0cce01c340 fix for [Bug 3484621], take 3 2012-02-06 17:10:49 +00:00
mig a8f6bcbe22 fix for [Bug 3484621], take 2 2012-02-06 16:53:10 +00:00
mig ce0bed6e24 Fix for [Bug 3484621]: insure that execution traces on bytecoded commands
bump the interp's compile epoch.
2012-02-06 16:43:46 +00:00
jan.nijtmans 38a6237471 mingw doesn't have LABEL_SECURITY_INFORMATION definition 2012-02-03 22:59:52 +00:00
jan.nijtmans bd1cc1c83e mingw doesn't have LABEL_SECURITY_INFORMATION definition 2012-02-03 22:56:24 +00:00
jan.nijtmans 4c72498e39 [Frq 3464401] Support Unicode 6.1 2012-02-02 21:13:03 +00:00
jan.nijtmans bc4fa40ab7 [Frq 3464401] Support Unicode 6.1 2012-02-02 21:12:14 +00:00
dgp 2427ef7d10 2974459,2879351,1951574,1852572,1661378,1613456 Revisions to the NativeAccess()
routine that queries file permissions on Windows native filesystems.  Meant to
fix numerous bugs where [file writable|readable|executable] "lies" about what
operations are possible, especially when the file resides on a Samba share.
Patch merged from the fix-win-native-access branch.
2012-02-02 17:21:39 +00:00
dgp 5eb7dcfeb0 2974459,2879351,1951574,1852572,1661378,1613456 Revisions to the NativeAccess()
routine that queries file permissions on Windows native filesystems.  Meant to
fix numerous bugs where [file writable|readable|executable] "lies" about what
operations are possible, especially when the file resides on a Samba share.
Patch cherrypicked off the fix-win-native-access branch.
2012-02-02 16:44:06 +00:00
dgp 1b62d4f40e merge to bugfix branch 2012-02-01 15:46:18 +00:00
dkf c63560bbbb [Bug 3482614]: Documentation nit. 2012-02-01 12:55:09 +00:00
dgp ee579270a8 3480599 Make [source] and [load] order of multi-file package happen in sorted order of the file names. 2012-01-27 18:44:04 +00:00
dgp eecbae58f1 3480599 Make [source] and [load] order of multi-file package happen in sorted
order of the file names.
2012-01-27 18:39:05 +00:00
jan.nijtmans 19fffa2982 merge to feature branch 2012-01-26 19:59:21 +00:00
dgp 2082b1ef56 3479689 Stop memory corruption when shimmering 0-refCount value to "path" type. 2012-01-26 16:42:52 +00:00
dgp 8312da70be 3475569 Add value-sharing checks before calls that demand unshared arguments. 2012-01-26 16:33:17 +00:00
dgp 5462a3c12e yank back debugging code 2012-01-26 16:26:38 +00:00
dgp 774d408f5c merge to bugfix 2012-01-26 16:15:29 +00:00
dgp b58fad5a4b Backport more robust stringObj tests. 2012-01-26 16:14:07 +00:00
dgp 52314e8801 3475569 Add value-sharing checks before calls that demand unshared arguments. 2012-01-24 22:50:46 +00:00
dgp 4dc66a78d9 merge to bugfix branch 2012-01-24 13:11:15 +00:00
dgp 7d0fcc8ac4 Simplify the logic of setting the TCL_REG_NOTBOL flag. 2012-01-23 21:17:02 +00:00
dgp aeb5c0bbbc merge mark 2012-01-23 17:45:01 +00:00
dgp e9ac6714fb Backport patch 2834a01435 to prevent test failures from timing matters. 2012-01-23 17:43:19 +00:00
jan.nijtmans eab8a155f3 [Frq 3473670]: Various Unicode-related speedups/robustness 2012-01-22 21:49:22 +00:00
jan.nijtmans ec04b423d5 [Frq 3473670]: Various Unicode-related speedups/robustness 2012-01-22 21:41:11 +00:00
jan.nijtmans 6c36acaa44 merge trunk
expand all unicode tables and tools to eventually handle the
unicode chars > 0xffff (if UTF_MAX_CHAR > 3)
2012-01-22 15:30:54 +00:00
dkf 15f57f3f56 * generic/tclDictObj.c (DictExistsCmd): [Bug 3475264]: Ensure that
errors only ever happen when insufficient arguments are supplied, and
	not when a path doesn't exist or a dictionary is poorly formatted (the
	two cases can't be easily distinguished).
2012-01-22 13:08:15 +00:00
dkf 4a8c47ffa4 merge from 8.5 main branch 2012-01-22 12:13:17 +00:00
jan.nijtmans cf850be37c Bug-3474726 minGW Tcl_StatBuf not defined correctly in tcl.h 2012-01-21 08:31:08 +00:00
jan.nijtmans 14a4ac7508 Prevent buffer read overflow. Thanks to "sebres" for the report and fix. 2012-01-21 08:19:10 +00:00
jan.nijtmans ebf98dc887 [Bug-3474726] minGW Tcl_StatBuf not defined correctly in tcl.h 2012-01-19 21:22:56 +00:00
dgp 12ee33be32 3475667 Prevent buffer read overflow. Thanks to "sebres" for the report and fix. 2012-01-19 20:46:04 +00:00
dkf 22f2d32be1 * doc/dict.n (dict with): [Bug 3474512]: Explain better what is going on when a dictionary key and the dictionary variable collide. 2012-01-17 15:17:21 +00:00
dgp 9e8aaad530 Bump to version 2.7.8 2012-01-17 14:32:34 +00:00
dgp 03513815f8 Bump to 2.5.6 2012-01-17 14:31:32 +00:00
dkf eac55ea27f merge from 8.5 main branch 2012-01-16 14:20:01 +00:00
dkf 2462be2b38 Ensure that error messages are always set, even in believed-unreachable code. 2012-01-16 13:32:07 +00:00
dkf e52db8b73a Ensure that error messages are always set, even in believed-unreachable code. 2012-01-16 13:29:35 +00:00
jan.nijtmans 336d744a2c rfe-3473670: Various Unicode-related speedups/robustness 2012-01-14 09:30:32 +00:00
dkf b662395ed5 * library/http/http.tcl (http::Connect): [Bug 3472316]: Ensure that we
only try to read the socket error exactly once.
2012-01-13 11:48:48 +00:00
dkf 2092cc6ad8 * library/http/http.tcl (http::Connect): [Bug 3472316]: Ensure that we
only try to read the socket error exactly once.
2012-01-13 11:45:52 +00:00
ferrieux 412344346e [Bug 3472316] Document the destructive semantics of [fconfigure -error] on sockets. 2012-01-12 20:34:59 +00:00
dgp d9a7d5838f Contributed patch aiming to fix [file writable] problems on Windows & Samba. 2012-01-11 21:24:55 +00:00
jan.nijtmans f7f4a7a4b7 [Bug 3464428] string is graph \u0120 is wrong 2012-01-09 20:31:27 +00:00
jan.nijtmans 2908f47e6c [Bug 3464428] string is graph \u0120 is wrong 2012-01-09 19:59:47 +00:00
Kevin B Kenny 21cf79b98c Fix loading of timezones where one abbreviation is a proper suffix of another [Bug 3470928] 2012-01-08 20:43:56 +00:00
venkat c10e130ebd Actually check in the files, not just the Changelog. 2011-12-30 08:17:26 +00:00
venkat cb790d54f3 Update to Olson's tzdata2011n 2011-12-30 08:14:23 +00:00
jan.nijtmans bcb81bf5a2 [Frq 3464401] Support Unicode 6.1
(not to be merged until Unicode 6.1 is final!!!)
2011-12-26 08:58:41 +00:00
jan.nijtmans 0c1d96e610 [Bug 3464428] string is graph \u0120 is wrong 2011-12-24 00:15:37 +00:00
jan.nijtmans 0e0f0aa95f [Bug 3464428] string is graph \u0120 is wrong 2011-12-23 23:31:50 +00:00
jan.nijtmans 7537c6ce98 [Bug 3457031]: Some Unicode 6.0 chars not in [:print:] class 2011-12-11 09:13:34 +00:00
jan.nijtmans fea0efb795 [Bug 3444754] string tolower \u01c5 is wrong 2011-12-07 06:17:24 +00:00
jan.nijtmans 5a29a1da64 [Bug 3444754] string tolower \u01c5 is wrong 2011-12-07 06:13:15 +00:00
dkf 146cfccff0 Note incompatibility caused by switch of flags to dlopen() for Bug 3216070. 2011-12-01 09:10:06 +00:00
jan.nijtmans b716798ade [Bug 967195]: Make tcltest work when tclsh is compiled without using the setargv() function on mingw. 2011-11-30 21:01:38 +00:00
jan.nijtmans c4ffb7ee05 [Bug 967195]: Make tcltest work when tclsh is compiled without using the setargv() function on mingw
(no need to incr the version, since 2.2.10 is never released)
2011-11-30 20:45:21 +00:00
jan.nijtmans 244f061acc Use the same shebang comment everywhere
don't install tommath_(super)?class.h
don't install directories like 8.2 and 8.3
2011-11-30 06:01:36 +00:00
jan.nijtmans ae2e314334 Use the same shebang comment everywhere 2011-11-29 20:09:09 +00:00
jan.nijtmans 5a7a628375 [Bug 2935503] Windows: file mtime sets wrong time (VS2005+ only) 2011-11-22 08:25:26 +00:00
jan.nijtmans 986915b1fc [Bug 2935503]: Windows: file mtime sets wrong time 2011-11-22 07:59:58 +00:00
dgp 83ca2639b3 Missing constraints 2011-11-08 16:12:01 +00:00
dgp 751a6f7feb merge release to dev 2011-11-07 17:23:15 +00:00
dgp c7ddd9227d tag&bag another 8.5.11 RC. 2011-11-04 12:39:51 +00:00
dgp a618cfc343 merge to release 2011-11-01 14:40:55 +00:00
dgp 11331dcc63 silence more warnings 2011-11-01 14:14:35 +00:00
dgp 05862f95c1 Silence warnings. 2011-11-01 14:10:30 +00:00
dgp e54423cee2 merge to release 2011-10-31 19:16:36 +00:00
dgp 54e2783870 3414754 Fix the PATHFLAGS != 0 intrep normalizing trailing slashes. 2011-10-31 17:06:31 +00:00
dgp d5742fa944 Purge the old, buggy implementation. 2011-10-31 17:04:31 +00:00
dgp 9c57e2f527 CONST-ification update. 2011-10-27 21:16:21 +00:00
dgp 65de195511 Added test case to the test suite 2011-10-27 15:08:24 +00:00
dgp d8f99e8e22 Proposed fix for 3414754 2011-10-27 14:03:15 +00:00
dgp e7217f52ac Merge to release branch 2011-10-26 17:40:56 +00:00
dgp 9848fce3d5 merge backport 2011-10-26 17:40:01 +00:00
dgp 608053332a Backport 2902268 fix. 2011-10-26 17:25:09 +00:00
dgp d030c2423f Release candidate branch for Tcl 8.5.11. 2011-10-20 16:06:53 +00:00
dgp 23e62f2f9a Update changes toward 8.5.11 release. Bump to http 2.7.7. 2011-10-20 15:32:58 +00:00
max da6099c4ae Don't cache the system timezone when it was derived from TCL_TZ or TZ. 2011-10-18 13:03:42 +00:00
71 changed files with 4037 additions and 1724 deletions
+235 -1
View File
@@ -1,3 +1,233 @@
2012-03-12 Jan Nijtmans <nijtmans@users.sf.net>
* win/tclWinFile.c: [Bug 3388350] mingw64 compiler warnings
2012-03-07 Andreas Kupries <andreask@activestate.com>
* library/http/http.tcl: [Bug 3498327]: Generate upper-case
* library/http/pkgIndex.tcl: hexadecimal output for compliance
* tests/http.test: with RFC 3986. Bumped version to 2.7.9.
* unix/Makefile.in:
* win/Makefile.in:
2012-03-06 Jan Nijtmans <nijtmans@users.sf.net>
* win/tclWinPort.h: Compatibility with older Visual Studio versions.
2012-03-04 Jan Nijtmans <nijtmans@users.sf.net>
* generic/tclLoad.c: Patch from the cygwin folks
* unix/tcl.m4:
* unix/configure: (re-generated)
2012-02-29 Jan Nijtmans <nijtmans@users.sf.net>
* generic/tclIOUtil.c: [Bug 3466099] BOM in Unicode
* generic/tclEncoding.c:
* tests/source.test
2012-02-23 Donal K. Fellows <dkf@users.sf.net>
* tests/reg.test (14.21-23): Add tests relating to bug 1115587. Actual
bug is characterised by test marked with 'knownBug'.
2012-02-17 Jan Nijtmans <nijtmans@users.sf.net>
* generic/tclIOUtil.c: [Bug 2233954]: AIX: compile error
* unix/tclUnixPort.h:
2012-02-15 Donal K. Fellows <dkf@users.sf.net>
* generic/tclCompCmds.c (TclCompileDictForCmd): [Bug 3487626]: Fix
crash in compilation of [dict for] when its implementation command is
used directly rather than through the ensemble.
2012-02-09 Don Porter <dgp@users.sourceforge.net>
* generic/tclStringObj.c: [Bug 3484402]: Correct Off-By-One
error appending unicode. Thanks to Poor Yorick. Also corrected test
for when growth is needed.
2012-02-06 Don Porter <dgp@users.sourceforge.net>
* generic/tclCompCmds.c: [Bug 3485022]: TclCompileEnsemble() avoid
* tests/trace.test: compile when exec traces set.
2012-02-06 Miguel Sofer <msofer@users.sf.net>
* generic/tclTrace.c: Fix for [Bug 3484621]: insure that
* tests/trace.test: execution traces on bytecoded commands bump
the interp's compile epoch.
2012-02-02 Jan Nijtmans <nijtmans@users.sf.net>
* generic/tclUniData.c: [FRQ 3464401]: Support Unicode 6.1
* generic/regc_locale.c:
2012-02-02 Don Porter <dgp@users.sourceforge.net>
* win/tclWinFile.c: [Bugs 2974459,2879351,1951574,1852572,
1661378,1613456]: Revisions to the NativeAccess() routine that
queries file permissions on Windows native filesystems. Meant to
fix numerous bugs where [file writable|readable|executable] "lies"
about what operations are possible, especially when the file resides
on a Samba share. Patch merged from the fix-win-native-access branch.
2012-02-01 Donal K. Fellows <dkf@users.sf.net>
* doc/AddErrInfo.3: [Bug 3482614]: Documentation nit.
2012-01-26 Don Porter <dgp@users.sourceforge.net>
* generic/tclPathObj.c: [Bug 3475569]: Add checks for unshared values
before calls demanding them. [Bug 3479689]: Stop memory corruption
when shimmering 0-refCount value to "path" type.
2012-01-22 Jan Nijtmans <nijtmans@users.sf.net>
* tools/uniClass.tcl: [Frq 3473670]: Various Unicode-related
* tools/uniParse.tcl: speedups/robustness. Enhanced tools to
* generic/tclUniData.c: be able to handle characters > 0xffff
* generic/tclUtf.c: Done in all branches in order to simplify
* generic/regc_locale.c: merges for new Unicode versions (such as 6.1)
2012-01-22 Donal K. Fellows <dkf@users.sf.net>
* generic/tclDictObj.c (DictExistsCmd): [Bug 3475264]: Ensure that
errors only ever happen when insufficient arguments are supplied, and
not when a path doesn't exist or a dictionary is poorly formatted (the
two cases can't be easily distinguished).
2012-01-21 Jan Nijtmans <nijtmans@users.sf.net>
* generic/tcl.h: [Bug 3474726]: Eliminate detection of struct
* generic/tclWinPort.h: _stat32i64, just use _stati64 in combination
* generic/tclFCmd.c: with _USE_32BIT_TIME_T, which is the same then.
* generic/tclTest.c: Only keep _stat32i64 usage for cygwin, so it
* win/configure.in: will not conflict with cygwin's own struct stat.
* win/configure:
2012-01-21 Don Porter <dgp@users.sourceforge.net>
* generic/tclCmdMZ.c: [Bug 3475667]: Prevent buffer read overflow.
Thanks to "sebres" for the report and fix.
2012-01-17 Donal K. Fellows <dkf@users.sf.net>
* doc/dict.n (dict with): [Bug 3474512]: Explain better what is going
on when a dictionary key and the dictionary variable collide.
2012-01-17 Don Porter <dgp@users.sourceforge.net>
* library/http/http.tcl: Bump to version 2.7.8
* library/http/pkgIndex.tcl:
* unix/Makefile.in:
* win/Makefile.in:
2012-01-13 Donal K. Fellows <dkf@users.sf.net>
* library/http/http.tcl (http::Connect): [Bug 3472316]: Ensure that we
only try to read the socket error exactly once.
2012-01-09 Jan Nijtmans <nijtmans@users.sf.net>
* generic/tclUtf.c: [Bug 3464428]: string is graph \u0120 is wrong
* generic/regc_locale.c: Add table for Unicode [:cntrl:] class
* tools/uniClass.tcl: Generate Unicode [:cntrl:] class table
* tests/utf.test:
2012-01-08 Kevin B. Kenny <kennykb@acm.org>
* library/clock.tcl (ReadZoneinfoFile): Corrected a bug where loading
* tests/clock.test (clock-56.4): zoneinfo would fail if one
timezone abbreviation was a proper tail of another, and zic used the
same bytes of the file to represent both of them. Added a test case
for the bug, using the same data that caused the observed failure
"in the wild." [Bug 3470928]
2011-12-30 Venkat Iyer <venkat@comit.com>
* library/tzdata/America/Bahia : Update to Olson's tzdata2011n
* library/tzdata/America/Havana
* library/tzdata/Europe/Kiev
* library/tzdata/Europe/Simferopol
* library/tzdata/Europe/Uzhgorod
* library/tzdata/Europe/Zaporozhye
* library/tzdata/Pacific/Fiji
2011-12-23 Jan Nijtmans <nijtmans@users.sf.net>
* generic/tclUtf.c: [Bug 3464428] string is graph \u0120 is wrong
* generic/tclUniData.c:
* generic/regc_locale.c:
* tests/utf.test:
* tools/uniParse.tcl: clean up some unused stuff, and be more robust
against changes in UnicodeData.txt syntax
2011-12-11 Jan Nijtmans <nijtmans@users.sf.net>
* generic/regc_locale.c: [Bug 3457031]: Some Unicode 6.0 chars not
* tests/utf.test: in [:print:] class
2011-12-07 Jan Nijtmans <nijtmans@users.sf.net>
* tools/uniParse.tcl: [Bug 3444754] string tolower \u01c5 is wrong
* generic/tclUniData.c:
* tests/utf.test:
2011-11-30 Jan Nijtmans <nijtmans@users.sf.net>
* library/tcltest/tcltest.tcl: [Bug 967195]: Make tcltest work
when tclsh is compiled without using the setargv() function on mingw.
(no need to incr the version, since 2.2.10 is never released)
2011-11-29 Jan Nijtmans <nijtmans@users.sf.net>
* doc/tclsh.1: Use the same shebang comment everywhere.
* tools/str2c
* tools/tcltk-man2html.tcl
* win/Makefile.in: don't install tommath_(super)?class.h
* unix/Makefile.in: don't install directories like 8.2 and 8.3
2011-11-22 Jan Nijtmans <nijtmans@users.sf.net>
* win/tclWinPort.h: [Bug 2935503] Windows: file mtime
* win/tclWinFile.c: sets wrong time (VS2005+ only)
* generic/tclTest.c:
2011-11-04 Don Porter <dgp@users.sourceforge.net>
*** 8.5.11 TAGGED FOR RELEASE ***
* generic/tcl.h: Bump to 8.5.11 for release.
* library/init.tcl:
* tools/tcl.wse.in:
* unix/configure.in:
* unix/tcl.spec:
* win/configure.in:
* README:
* unix/configure: autoconf-2.59
* win/configure:
* changes: Update for 8.5.11 release.
2011-10-20 Don Porter <dgp@users.sourceforge.net>
* library/http/http.tcl: Bump to version 2.7.7
* library/http/pkgIndex.tcl:
* unix/Makefile.in:
* win/Makefile.in:
* changes: Updates for 8.5.11 release.
2011-10-18 Reinhard Max <max@suse.de>
* library/clock.tcl (::tcl::clock::GetSystemTimeZone): Cache the
time zone only if it was detected by one of the expensive
methods. Otherwise after unsetting TCL_TZ or TZ the previous value
will still be used.
2011-10-15 Venkat Iyer <venkat@comit.com>
* library/tzdata/America/Sitka : Update to Olson's tzdata2011l
* library/tzdata/Pacific/Fiji
@@ -515,6 +745,10 @@
* unix/tclLoadDl.c: [Bug #3216070]: Loading extension libraries
* unix/tclLoadDyld.c: from embedded Tcl applications.
***POTENTIAL INCOMPATIBILITY***
For extensions which rely on symbols from other extensions being
present in the global symbol table. For an example and some discussion
of workarounds, see http://stackoverflow.com/q/8330614/301832
2011-03-16 Jan Nijtmans <nijtmans@users.sf.net>
@@ -2112,7 +2346,7 @@
* unix/tclUnixChan.c: TclUnixWaitForFile(): use FD_* macros
* macosx/tclMacOSXNotify.c: to manipulate select masks (Cassoff).
[Bug 1960647]
[Freq 1960647] [Bug 3486554]
* unix/tclLoadDyld.c: use RTLD_GLOBAL instead of RTLD_LOCAL.
[Bug 1961211]
+1 -1
View File
@@ -1,5 +1,5 @@
README: Tcl
This is the Tcl 8.5.10 source distribution.
This is the Tcl 8.5.11 source distribution.
http://tcl.sourceforge.net/
You can get any source release of Tcl from the file distributions
link at the above URL.
+36
View File
@@ -7512,6 +7512,7 @@ memory with buffer backup (ferrieux)
2011-03-14 (bug fix) Fixes from libtommath 0.42.0 release (fellows)
2011-03-21 (bug fix)[3216070] [load] extension from embed Tcl apps (nijtmans)
***POTENTIAL INCOMPATIBILITY***
2011-04-12 (bug fix)[3285472] intrep corruption in [string reverse] (porter)
@@ -7545,3 +7546,38 @@ memory with buffer backup (ferrieux)
=> platform 1.0.10
--- Released 8.5.10, June 23, 2011 --- See ChangeLog for details ---
2011-07-02 (bug fix)[3349507] correct double(1[string repeat 0 23]) (kenny)
2011-07-19 (bug fix)[3371644] Tcl_ConvertElement() segfault (sader, ferrieux)
2011-07-21 (bug fix)[3372130] hypot(.) segfault (nijtmans)
2011-08-12 (bug fix)[3389764] memleaks due to reference cycles in dup'd paths
2011-08-15 (bug fix)[3390272] leak of [info script] value (porter)
2011-08-17 (bug fix)[3393150] bignum leaks in Tcl_Get*() routines (porter)
2011-08-18 (bug fix)[3393714] [string toupper] overflow (nijtmans)
2011-08-30 (bug fix)[3398794] panic in interp limit setting (gavlian,fellows)
2011-09-08 (bug fix)[3401704] revised expr parser to permit function names
like "nano()" instead of parsing as "nan o()" with missing op (duquette,porter)
*** POTENTIAL INCOMPATIBILITY ***
2011-09-13 (bug fix)[3390638] solaris studio cc workaround (kechel,porter)
2011-09-13 (bug fix)[3405652] DTrace workaround (michelson,porter)
2011-09-16 (bug fix)[3391977] -headers overrides -type (ziegenhagen,fellows)
=> http 2.7.7
2011-09-16 (bug fix)[3400658] wrong num args msg with TclOO (rsooltan,fellows)
2011-10-11 (bug fix)[2935503] [file stat] returns bad mode (nadkarni,nijtmans)
2011-10-15 tzdata updated to Olson's tzdata2011l (iyer)
--- Released 8.5.11, November 4, 2011 --- See ChangeLog for details ---
+1 -1
View File
@@ -109,7 +109,7 @@ with the value of \fIcode\fR. The \fB(Tcl_Obj *)\fR returned
by \fBTcl_GetReturnOptions\fR points to an unshared
\fBTcl_Obj\fR with reference count of zero. The dictionary
may be written to, either adding, removing, or overwriting
any entries in it, with the need to check for a shared object.
any entries in it, without the need to check for a shared object.
.PP
A typical usage for \fBTcl_GetReturnOptions\fR is to
retrieve the stack trace when script evaluation returns
+19
View File
@@ -227,6 +227,15 @@ exist after the command finishes (unless explicitly \fBunset\fR).
Note that the mapping of values to variables does not use
traces; changes to the \fIdictionaryVariable\fR's contents only happen
when \fIbody\fR terminates.
.PP
If the \fIdictionaryVariable\fR contains a value that is not a dictionary at
the point when the \fIbody\fR terminates (which can easily happen if the name
is the same as any of the keys in dictionary) then an error occurs at that
point. This command is thus not recommended for use when the keys in the
dictionary are expected to clash with the \fIdictionaryVariable\fR name
itself. Where the contained key does map to a dictionary, the net effect is to
combine that inner dictionary into the outer dictionary; see the
\fBEXAMPLES\fR below for an illustration of this.
.RE
.SH "DICTIONARY VALUES"
.PP
@@ -364,6 +373,16 @@ sumDictionary myDict
puts "dictionary is now \\"$myDict\\""
# prints: \fIdictionary is now "a {total 6} b {total 15}"\fR
.CE
.PP
When \fBdict with\fR is used with a key that clashes with the name of the
dictionary variable:
.PP
.CS
set foo {foo {a b} bar 2 baz 3}
\fBdict with\fR foo {}
puts $foo
# prints: \fIa b foo {a b} bar 2 baz 3\fR
.CE
.SH "SEE ALSO"
append(n), array(n), foreach(n), incr(n), list(n), lappend(n), set(n)
.SH KEYWORDS
+3
View File
@@ -136,6 +136,9 @@ This option gets the current error status of the given socket. This
is useful when you need to determine if an asynchronous connect
operation succeeded. If there was an error, the error message is
returned. If there was no error, an empty string is returned.
Note that the error status is reset by the read operation; this mimics
the underlying getsockopt(SO_ERROR) call.
.TP
\fB\-sockname\fR
This option returns a list of three elements, the address, the host name
+1 -1
View File
@@ -75,7 +75,7 @@ following three lines:
.CS
\fB#!/bin/sh
# the next line restarts using tclsh \e
exec tclsh "$0" "$@"\fR
exec tclsh "$0" ${1+"$@"}\fR
.CE
This approach has three advantages over the approach in the previous
paragraph. First, the location of the \fBtclsh\fR binary does not have
+491 -474
View File
File diff suppressed because it is too large Load Diff
+20 -6
View File
@@ -58,10 +58,10 @@ extern "C" {
#define TCL_MAJOR_VERSION 8
#define TCL_MINOR_VERSION 5
#define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE
#define TCL_RELEASE_SERIAL 10
#define TCL_RELEASE_SERIAL 11
#define TCL_VERSION "8.5"
#define TCL_PATCH_LEVEL "8.5.10"
#define TCL_PATCH_LEVEL "8.5.11"
/*
* The following definitions set up the proper options for Windows compilers.
@@ -352,7 +352,7 @@ typedef long LONG;
*/
#if !defined(TCL_WIDE_INT_TYPE)&&!defined(TCL_WIDE_INT_IS_LONG)
# if defined(__WIN32__) && !defined(__CYGWIN__)
# if defined(__WIN32__)
# define TCL_WIDE_INT_TYPE __int64
# ifdef __BORLANDC__
typedef struct stati64 Tcl_StatBuf;
@@ -360,7 +360,7 @@ typedef struct stati64 Tcl_StatBuf;
# else /* __BORLANDC__ */
# if defined(_WIN64)
typedef struct __stat64 Tcl_StatBuf;
# elif (defined(_MSC_VER) && (_MSC_VER < 1400))
# elif (defined(_MSC_VER) && (_MSC_VER < 1400)) || defined(_USE_32BIT_TIME_T)
typedef struct _stati64 Tcl_StatBuf;
# else
typedef struct _stat32i64 Tcl_StatBuf;
@@ -415,7 +415,21 @@ typedef struct stat Tcl_StatBuf;
* or some other strange platform.
*/
# ifndef TCL_LL_MODIFIER
# ifdef HAVE_STRUCT_STAT64
# ifdef __CYGWIN__
typedef struct _stat32i64 {
dev_t st_dev;
ino_t st_ino;
unsigned short st_mode;
short st_nlink;
short st_uid;
short st_gid;
dev_t st_rdev;
long long st_size;
struct {long tv_sec;} st_atim;
struct {long tv_sec;} st_mtim;
struct {long tv_sec;} st_ctim;
} Tcl_StatBuf;
# elif defined(HAVE_STRUCT_STAT64)
typedef struct stat64 Tcl_StatBuf;
# else
typedef struct stat Tcl_StatBuf;
@@ -427,7 +441,7 @@ typedef struct stat Tcl_StatBuf;
# define Tcl_WideAsDouble(val) ((double)((Tcl_WideInt)(val)))
# define Tcl_DoubleAsWide(val) ((Tcl_WideInt)((double)(val)))
#endif /* TCL_WIDE_INT_IS_LONG */
/*
* Data structures defined opaquely in this module. The definitions below just
* provide dummy types. A few fields are made visible in Tcl_Interp
+5 -2
View File
@@ -264,8 +264,11 @@ Tcl_RegexpObjCmd(
* start of the string unless the previous character is a newline.
*/
if ((offset == 0) || ((offset > 0) &&
(Tcl_GetUniChar(objPtr, offset-1) == (Tcl_UniChar)'\n'))) {
if (offset == 0) {
eflags = 0;
} else if (offset > stringLength) {
eflags = TCL_REG_NOTBOL;
} else if (Tcl_GetUniChar(objPtr, offset-1) == (Tcl_UniChar)'\n') {
eflags = 0;
} else {
eflags = TCL_REG_NOTBOL;
+5 -2
View File
@@ -972,7 +972,7 @@ TclCompileDictForCmd(
* Compile the loop body itself. It should be stack-neutral.
*/
SetLineInformation (4);
SetLineInformation(3);
CompileBody(envPtr, bodyTokenPtr, interp);
TclEmitOpcode( INST_POP, envPtr);
@@ -1172,6 +1172,7 @@ TclCompileDictUpdateCmd(
TclEmitInstInt4( INST_BEGIN_CATCH4, range, envPtr);
ExceptionRangeStarts(envPtr, range);
SetLineInformation(parsePtr->numWords - 1);
CompileBody(envPtr, bodyTokenPtr, interp);
ExceptionRangeEnds(envPtr, range);
@@ -6325,7 +6326,9 @@ TclCompileEnsemble(
Tcl_IncrRefCount(targetCmdObj);
cmdPtr = (Command *) Tcl_GetCommandFromObj(interp, targetCmdObj);
TclDecrRefCount(targetCmdObj);
if (cmdPtr == NULL || cmdPtr->compileProc == NULL) {
if (cmdPtr == NULL || cmdPtr->compileProc == NULL
|| cmdPtr->flags & CMD_HAS_EXEC_TRACES
|| ((Interp *)interp)->flags & DONT_COMPILE_CMDS_INLINE) {
/*
* Maps to an undefined command or a command without a compiler.
* Cannot compile.
+2 -1
View File
@@ -4091,12 +4091,13 @@ RecordByteCodeStats(
* to add to accumulated statistics. */
{
Interp *iPtr = (Interp *) *codePtr->interpHandle;
register ByteCodeStats *statsPtr = &(iPtr->stats);
register ByteCodeStats *statsPtr;
if (iPtr == NULL) {
/* Avoid segfaulting in case we're called in a deleted interp */
return;
}
statsPtr = &(iPtr->stats);
statsPtr->numCompilations++;
statsPtr->totalSrcBytes += (double) codePtr->numSrcBytes;
+5 -11
View File
@@ -1969,7 +1969,6 @@ DictExistsCmd(
Tcl_Obj *const *objv)
{
Tcl_Obj *dictPtr, *valuePtr;
int result;
if (objc < 3) {
Tcl_WrongNumArgs(interp, 1, objv, "dictionary key ?key ...?");
@@ -1978,18 +1977,13 @@ DictExistsCmd(
dictPtr = TclTraceDictPath(interp, objv[1], objc-3, objv+2,
DICT_PATH_EXISTS);
if (dictPtr == NULL) {
return TCL_ERROR;
}
if (dictPtr == DICT_PATH_NON_EXISTENT) {
if (dictPtr == NULL || dictPtr == DICT_PATH_NON_EXISTENT
|| Tcl_DictObjGet(interp, dictPtr, objv[objc-1],
&valuePtr) != TCL_OK) {
Tcl_SetObjResult(interp, Tcl_NewBooleanObj(0));
return TCL_OK;
} else {
Tcl_SetObjResult(interp, Tcl_NewBooleanObj(valuePtr != NULL));
}
result = Tcl_DictObjGet(interp, dictPtr, objv[objc-1], &valuePtr);
if (result != TCL_OK) {
return result;
}
Tcl_SetObjResult(interp, Tcl_NewBooleanObj(valuePtr != NULL));
return TCL_OK;
}
+2 -2
View File
@@ -984,13 +984,13 @@ Tcl_GetEncodingNames(
int
Tcl_SetSystemEncoding(
Tcl_Interp *interp, /* Interp for error reporting, if not NULL. */
CONST char *name) /* The name of the desired encoding, or NULL
CONST char *name) /* The name of the desired encoding, or NULL/""
* to reset to default encoding. */
{
Tcl_Encoding encoding;
Encoding *encodingPtr;
if (name == NULL) {
if (!name || !*name) {
Tcl_MutexLock(&encodingMutex);
encoding = defaultEncoding;
encodingPtr = (Encoding *) encoding;
+5
View File
@@ -10,6 +10,11 @@
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
#ifndef _WIN64
/* See [Bug 2935503]: file mtime sets wrong time */
# define _USE_32BIT_TIME_T
#endif
#include "tclInt.h"
/*
+3 -2
View File
@@ -823,10 +823,11 @@ Tcl_FSJoinToPath(
void
TclpNativeJoinPath(
Tcl_Obj *prefix,
char *joining)
const char *joining)
{
int length, needsSep;
char *dest, *p, *start;
const char *p;
char *dest, *start;
start = Tcl_GetStringFromObj(prefix, &length);
+19 -1
View File
@@ -18,6 +18,9 @@
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
#if defined(HAVE_SYS_STAT_H) && !defined _WIN32
# include <sys/stat.h>
#endif
#include "tclInt.h"
#ifdef __WIN32__
# include "tclWinInt.h"
@@ -1785,7 +1788,22 @@ Tcl_FSEvalFileEx(
objPtr = Tcl_NewObj();
Tcl_IncrRefCount(objPtr);
if (Tcl_ReadChars(chan, objPtr, -1, 0) < 0) {
/* Try to read first character of stream, so we can
* check for utf-8 BOM to be handled especially.
*/
if (Tcl_ReadChars(chan, objPtr, 1, 0) < 0) {
Tcl_Close(interp, chan);
Tcl_AppendResult(interp, "couldn't read file \"",
Tcl_GetString(pathPtr), "\": ", Tcl_PosixError(interp), NULL);
goto end;
}
string = Tcl_GetString(objPtr);
/*
* If first character is not a BOM, append the remaining characters,
* otherwise replace them [Bug 3466099].
*/
if (Tcl_ReadChars(chan, objPtr, -1,
memcmp(string, "\xef\xbb\xbf", 3)) < 0) {
Tcl_Close(interp, chan);
Tcl_AppendResult(interp, "couldn't read file \"",
Tcl_GetString(pathPtr), "\": ", Tcl_PosixError(interp), NULL);
+1 -1
View File
@@ -2741,7 +2741,7 @@ MODULE_SCOPE int TclpMatchFiles(Tcl_Interp *interp, char *separators,
Tcl_DString *dirPtr, char *pattern, char *tail);
MODULE_SCOPE int TclpObjNormalizePath(Tcl_Interp *interp,
Tcl_Obj *pathPtr, int nextCheckpoint);
MODULE_SCOPE void TclpNativeJoinPath(Tcl_Obj *prefix, char *joining);
MODULE_SCOPE void TclpNativeJoinPath(Tcl_Obj *prefix, const char *joining);
MODULE_SCOPE Tcl_Obj * TclpNativeSplitPath(Tcl_Obj *pathPtr, int *lenPtr);
MODULE_SCOPE Tcl_PathType TclpGetNativePathType(Tcl_Obj *pathPtr,
int *driveNameLengthPtr, Tcl_Obj **driveNameRef);
+6
View File
@@ -308,6 +308,12 @@ Tcl_LoadObjCmd(
&& (pkgGuess[2] == 'b')) {
pkgGuess += 3;
}
#ifdef __CYGWIN__
if ((pkgGuess[0] == 'c') && (pkgGuess[1] == 'y')
&& (pkgGuess[2] == 'g')) {
pkgGuess += 3;
}
#endif /* __CYGWIN__ */
for (p = pkgGuess; *p != 0; p += offset) {
offset = Tcl_UtfToUniChar(p, &ch);
if ((ch > 0x100)
+34 -34
View File
@@ -269,6 +269,14 @@ TclFSNormalizeAbsolutePath(
}
if (!first || (tclPlatform == TCL_PLATFORM_UNIX)) {
link = Tcl_FSLink(retVal, NULL, 0);
/* Safety check in case driver caused sharing */
if (Tcl_IsShared(retVal)) {
TclDecrRefCount(retVal);
retVal = Tcl_DuplicateObj(retVal);
Tcl_IncrRefCount(retVal);
}
if (link != NULL) {
/*
* Got a link. Need to check if the link is relative
@@ -292,11 +300,6 @@ TclFSNormalizeAbsolutePath(
break;
}
}
if (Tcl_IsShared(retVal)) {
TclDecrRefCount(retVal);
retVal = Tcl_DuplicateObj(retVal);
Tcl_IncrRefCount(retVal);
}
/*
* We want the trailing slash.
@@ -312,7 +315,12 @@ TclFSNormalizeAbsolutePath(
*/
TclDecrRefCount(retVal);
retVal = link;
if (Tcl_IsShared(link)) {
retVal = Tcl_DuplicateObj(link);
TclDecrRefCount(link);
} else {
retVal = link;
}
linkStr = Tcl_GetStringFromObj(retVal, &curLen);
/*
@@ -1073,6 +1081,12 @@ Tcl_FSJoinPath(
if (sep != NULL) {
separator = TclGetString(sep)[0];
}
/* Safety check in case the VFS driver caused sharing */
if (Tcl_IsShared(res)) {
TclDecrRefCount(res);
res = Tcl_DuplicateObj(res);
Tcl_IncrRefCount(res);
}
}
if (length > 0 && ptr[length -1] != '/') {
@@ -1367,37 +1381,20 @@ AppendPath(
const char *bytes;
Tcl_Obj *copy = Tcl_DuplicateObj(head);
bytes = Tcl_GetStringFromObj(copy, &numBytes);
/*
* Should we perhaps use 'Tcl_FSPathSeparator'? But then what about the
* Windows special case? Perhaps we should just check if cwd is a root
* volume. We should never get numBytes == 0 in this code path.
* This is likely buggy when dealing with virtual filesystem drivers
* that use some character other than "/" as a path separator. I know
* of no evidence that such a foolish thing exists. This solution was
* chosen so that "JoinPath" operations that pass through either path
* intrep produce the same results; that is, bugward compatibility. If
* we need to fix that bug here, it needs fixing in Tcl_FSJoinPath() too.
*/
switch (tclPlatform) {
case TCL_PLATFORM_UNIX:
if (bytes[numBytes-1] != '/') {
Tcl_AppendToObj(copy, "/", 1);
}
break;
case TCL_PLATFORM_WINDOWS:
/*
* We need the extra 'numBytes != 2', and ':' checks because a volume
* relative path doesn't get a '/'. For example 'glob C:*cat*.exe'
* will return 'C:cat32.exe'
*/
if (bytes[numBytes-1] != '/' && bytes[numBytes-1] != '\\') {
if (numBytes!= 2 || bytes[1] != ':') {
Tcl_AppendToObj(copy, "/", 1);
}
}
break;
bytes = Tcl_GetStringFromObj(tail, &numBytes);
if (numBytes == 0) {
Tcl_AppendToObj(copy, "/", 1);
} else {
TclpNativeJoinPath(copy, bytes);
}
Tcl_AppendObjToObj(copy, tail);
return copy;
}
@@ -2554,7 +2551,10 @@ SetFsPathFromAny(
}
Tcl_DStringFree(&temp);
} else {
/* Bug 3479689: protect 0-refcount pathPth from getting freed */
pathPtr->refCount++;
transPtr = Tcl_FSJoinToPath(pathPtr, 0, NULL);
pathPtr->refCount--;
}
#if defined(__CYGWIN__) && defined(__WIN32__)
+2 -2
View File
@@ -1379,7 +1379,7 @@ AppendUnicodeToUnicodeRep(
numChars = stringPtr->numChars + appendNumChars;
stringCheckLimits(numChars);
if (STRING_UALLOC(numChars) >= stringPtr->uallocated) {
if (STRING_UALLOC(numChars) > stringPtr->uallocated) {
/*
* Protect against case where unicode points into the existing
* stringPtr->unicode array. Force it to follow any relocations
@@ -1387,7 +1387,7 @@ AppendUnicodeToUnicodeRep(
*/
int offset = -1;
if (unicode >= stringPtr->unicode && unicode <= stringPtr->unicode
+ 1 + stringPtr->uallocated / sizeof(Tcl_UniChar)) {
+ stringPtr->uallocated / sizeof(Tcl_UniChar)) {
offset = unicode - stringPtr->unicode;
}
+10 -5
View File
@@ -15,11 +15,16 @@
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
#include <math.h>
#ifndef _WIN64
/* See [Bug 2935503]: file mtime sets wrong time */
# define _USE_32BIT_TIME_T
#endif
#define TCL_TEST
#include "tclInt.h"
#include <math.h>
/*
* Required for Testregexp*Cmd
*/
@@ -868,7 +873,7 @@ TestasyncCmd(
if (asyncPtr->id == id) {
Tcl_ThreadId threadID;
if (Tcl_CreateThread(&threadID, AsyncThreadProc,
(ClientData) id, TCL_THREAD_STACK_DEFAULT,
(ClientData) INT2PTR(id), TCL_THREAD_STACK_DEFAULT,
TCL_THREAD_NOFLAGS) != TCL_OK) {
Tcl_SetResult(interp, "can't create thread", TCL_STATIC);
return TCL_ERROR;
@@ -956,7 +961,7 @@ AsyncThreadProc(
* TestAsyncHandler, defined above. */
{
TestAsyncHandler *asyncPtr;
int id = (int) clientData;
int id = PTR2INT(clientData);
Tcl_Sleep(1);
Tcl_MutexLock(&asyncTestMutex);
@@ -5344,7 +5349,7 @@ TestmainthreadCmd(
const char **argv) /* Argument strings. */
{
if (argc == 1) {
Tcl_Obj *idObj = Tcl_NewLongObj((long)(intptr_t)Tcl_GetCurrentThread());
Tcl_Obj *idObj = Tcl_NewLongObj((long)(size_t)Tcl_GetCurrentThread());
Tcl_SetObjResult(interp, idObj);
return TCL_OK;
} else {
@@ -6043,7 +6048,7 @@ TestChannelCmd(
return TCL_ERROR;
}
TclFormatInt(buf, (long)(intptr_t)Tcl_GetChannelThread(chan));
TclFormatInt(buf, (long)(size_t)Tcl_GetChannelThread(chan));
Tcl_AppendResult(interp, buf, NULL);
return TCL_OK;
}
+4
View File
@@ -291,6 +291,7 @@ TclpAlloc(
register int bucket;
size_t size;
#ifndef __LP64__
if (sizeof(int) >= sizeof(size_t)) {
/* An unsigned int overflow can also be a size_t overflow */
const size_t zero = 0;
@@ -301,6 +302,7 @@ TclpAlloc(
return NULL;
}
}
#endif
cachePtr = TclpGetAllocCache();
if (cachePtr == NULL) {
@@ -434,6 +436,7 @@ TclpRealloc(
return TclpAlloc(reqSize);
}
#ifndef __LP64__
if (sizeof(int) >= sizeof(size_t)) {
/* An unsigned int overflow can also be a size_t overflow */
const size_t zero = 0;
@@ -444,6 +447,7 @@ TclpRealloc(
return NULL;
}
}
#endif
cachePtr = TclpGetAllocCache();
if (cachePtr == NULL) {
+19
View File
@@ -1122,8 +1122,18 @@ Tcl_TraceCommand(
tracePtr->refCount = 1;
cmdPtr->tracePtr = tracePtr;
if (tracePtr->flags & TCL_TRACE_ANY_EXEC) {
/*
* Bug 3484621: up the interp's epoch if this is a BC'ed command
*/
if ((cmdPtr->compileProc != NULL) && !(cmdPtr->flags & CMD_HAS_EXEC_TRACES)){
Interp *iPtr = (Interp *) interp;
iPtr->compileEpoch++;
}
cmdPtr->flags |= CMD_HAS_EXEC_TRACES;
}
return TCL_OK;
}
@@ -1226,6 +1236,15 @@ Tcl_UntraceCommand(
*/
cmdPtr->flags &= ~CMD_HAS_EXEC_TRACES;
/*
* Bug 3484621: up the interp's epoch if this is a BC'ed command
*/
if (cmdPtr->compileProc != NULL) {
Interp *iPtr = (Interp *) interp;
iPtr->compileEpoch++;
}
}
}
+1300 -691
View File
File diff suppressed because it is too large Load Diff
+30 -45
View File
@@ -26,28 +26,27 @@
#define ALPHA_BITS ((1 << UPPERCASE_LETTER) | (1 << LOWERCASE_LETTER) \
| (1 << TITLECASE_LETTER) | (1 << MODIFIER_LETTER) | (1<<OTHER_LETTER))
#define CONTROL_BITS ((1 << CONTROL) | (1 << FORMAT) | (1 << PRIVATE_USE))
#define DIGIT_BITS (1 << DECIMAL_DIGIT_NUMBER)
#define SPACE_BITS ((1 << SPACE_SEPARATOR) | (1 << LINE_SEPARATOR) \
| (1 << PARAGRAPH_SEPARATOR))
#define CONNECTOR_BITS (1 << CONNECTOR_PUNCTUATION)
#define PRINT_BITS (ALPHA_BITS | DIGIT_BITS | SPACE_BITS | \
(1 << NON_SPACING_MARK) | (1 << ENCLOSING_MARK) | \
(1 << COMBINING_SPACING_MARK) | (1 << LETTER_NUMBER) | \
(1 << OTHER_NUMBER) | (1 << CONNECTOR_PUNCTUATION) | \
(1 << DASH_PUNCTUATION) | (1 << OPEN_PUNCTUATION) | \
(1 << CLOSE_PUNCTUATION) | (1 << INITIAL_QUOTE_PUNCTUATION) | \
(1 << FINAL_QUOTE_PUNCTUATION) | (1 << OTHER_PUNCTUATION) | \
(1 << MATH_SYMBOL) | (1 << CURRENCY_SYMBOL) | \
(1 << MODIFIER_SYMBOL) | (1 << OTHER_SYMBOL))
#define WORD_BITS (ALPHA_BITS | DIGIT_BITS | (1 << CONNECTOR_PUNCTUATION))
#define PUNCT_BITS ((1 << CONNECTOR_PUNCTUATION) | \
(1 << DASH_PUNCTUATION) | (1 << OPEN_PUNCTUATION) | \
(1 << CLOSE_PUNCTUATION) | (1 << INITIAL_QUOTE_PUNCTUATION) | \
(1 << FINAL_QUOTE_PUNCTUATION) | (1 << OTHER_PUNCTUATION))
#define GRAPH_BITS (WORD_BITS | PUNCT_BITS | \
(1 << NON_SPACING_MARK) | (1 << ENCLOSING_MARK) | \
(1 << COMBINING_SPACING_MARK) | (1 << LETTER_NUMBER) | \
(1 << OTHER_NUMBER) | \
(1 << MATH_SYMBOL) | (1 << CURRENCY_SYMBOL) | \
(1 << MODIFIER_SYMBOL) | (1 << OTHER_SYMBOL))
/*
* Unicode characters less than this value are represented by themselves in
* UTF-8 strings.
@@ -1126,10 +1125,9 @@ Tcl_UniCharToUpper(
int info = GetUniCharInfo(ch);
if (GetCaseType(info) & 0x04) {
return (Tcl_UniChar) (ch - GetDelta(info));
} else {
return ch;
ch -= GetDelta(info);
}
return (Tcl_UniChar) ch;
}
/*
@@ -1155,10 +1153,9 @@ Tcl_UniCharToLower(
int info = GetUniCharInfo(ch);
if (GetCaseType(info) & 0x02) {
return (Tcl_UniChar) (ch + GetDelta(info));
} else {
return ch;
ch += GetDelta(info);
}
return (Tcl_UniChar) ch;
}
/*
@@ -1189,12 +1186,11 @@ Tcl_UniCharToTitle(
* Subtract or add one depending on the original case.
*/
return (Tcl_UniChar) (ch + ((mode & 0x4) ? -1 : 1));
ch += ((mode & 0x4) ? -1 : 1);
} else if (mode == 0x4) {
return (Tcl_UniChar) (ch - GetDelta(info));
} else {
return ch;
ch -= GetDelta(info);
}
return (Tcl_UniChar) ch;
}
/*
@@ -1328,9 +1324,7 @@ int
Tcl_UniCharIsAlnum(
int ch) /* Unicode character to test. */
{
register int category = (GetUniCharInfo(ch) & UNICODE_CATEGORY_MASK);
return (((ALPHA_BITS | DIGIT_BITS) >> category) & 1);
return (((ALPHA_BITS | DIGIT_BITS) >> GetCategory(ch)) & 1);
}
/*
@@ -1353,8 +1347,7 @@ int
Tcl_UniCharIsAlpha(
int ch) /* Unicode character to test. */
{
register int category = (GetUniCharInfo(ch) & UNICODE_CATEGORY_MASK);
return ((ALPHA_BITS >> category) & 1);
return ((ALPHA_BITS >> GetCategory(ch)) & 1);
}
/*
@@ -1377,7 +1370,7 @@ int
Tcl_UniCharIsControl(
int ch) /* Unicode character to test. */
{
return ((GetUniCharInfo(ch) & UNICODE_CATEGORY_MASK) == CONTROL);
return ((CONTROL_BITS >> GetCategory(ch)) & 1);
}
/*
@@ -1400,7 +1393,7 @@ int
Tcl_UniCharIsDigit(
int ch) /* Unicode character to test. */
{
return (GetUniCharInfo(ch)&UNICODE_CATEGORY_MASK) == DECIMAL_DIGIT_NUMBER;
return (GetCategory(ch) == DECIMAL_DIGIT_NUMBER);
}
/*
@@ -1423,8 +1416,7 @@ int
Tcl_UniCharIsGraph(
int ch) /* Unicode character to test. */
{
register int category = (GetUniCharInfo(ch) & UNICODE_CATEGORY_MASK);
return (((PRINT_BITS >> category) & 1) && ((unsigned char) ch != ' '));
return ((GRAPH_BITS >> GetCategory(ch)) & 1);
}
/*
@@ -1447,7 +1439,7 @@ int
Tcl_UniCharIsLower(
int ch) /* Unicode character to test. */
{
return ((GetUniCharInfo(ch) & UNICODE_CATEGORY_MASK) == LOWERCASE_LETTER);
return (GetCategory(ch) == LOWERCASE_LETTER);
}
/*
@@ -1470,8 +1462,7 @@ int
Tcl_UniCharIsPrint(
int ch) /* Unicode character to test. */
{
register int category = (GetUniCharInfo(ch) & UNICODE_CATEGORY_MASK);
return ((PRINT_BITS >> category) & 1);
return (((GRAPH_BITS|SPACE_BITS) >> GetCategory(ch)) & 1);
}
/*
@@ -1494,8 +1485,7 @@ int
Tcl_UniCharIsPunct(
int ch) /* Unicode character to test. */
{
register int category = (GetUniCharInfo(ch) & UNICODE_CATEGORY_MASK);
return ((PUNCT_BITS >> category) & 1);
return ((PUNCT_BITS >> GetCategory(ch)) & 1);
}
/*
@@ -1518,18 +1508,15 @@ int
Tcl_UniCharIsSpace(
int ch) /* Unicode character to test. */
{
register int category;
/*
* If the character is within the first 127 characters, just use the
* standard C function, otherwise consult the Unicode table.
*/
if (ch < 0x80) {
return TclIsSpaceProc((char)ch);
if (((Tcl_UniChar) ch) < ((Tcl_UniChar) 0x80)) {
return isspace(UCHAR(ch)); /* INTL: ISO space */
} else {
category = (GetUniCharInfo(ch) & UNICODE_CATEGORY_MASK);
return ((SPACE_BITS >> category) & 1);
return ((SPACE_BITS >> GetCategory(ch)) & 1);
}
}
@@ -1553,7 +1540,7 @@ int
Tcl_UniCharIsUpper(
int ch) /* Unicode character to test. */
{
return ((GetUniCharInfo(ch) & UNICODE_CATEGORY_MASK) == UPPERCASE_LETTER);
return (GetCategory(ch) == UPPERCASE_LETTER);
}
/*
@@ -1576,9 +1563,7 @@ int
Tcl_UniCharIsWordChar(
int ch) /* Unicode character to test. */
{
register int category = (GetUniCharInfo(ch) & UNICODE_CATEGORY_MASK);
return (((ALPHA_BITS | DIGIT_BITS | CONNECTOR_BITS) >> category) & 1);
return ((WORD_BITS >> GetCategory(ch)) & 1);
}
/*
+21 -14
View File
@@ -3076,18 +3076,23 @@ proc ::tcl::clock::GetSystemTimeZone {} {
set timezone $result
} elseif {[set result [getenv TZ]] ne {}} {
set timezone $result
} elseif { [info exists CachedSystemTimeZone] } {
set timezone $CachedSystemTimeZone
} elseif { $::tcl_platform(platform) eq {windows} } {
set timezone [GuessWindowsTimeZone]
} elseif { [file exists /etc/localtime]
&& ![catch {ReadZoneinfoFile \
Tcl/Localtime /etc/localtime}] } {
set timezone :Tcl/Localtime
} else {
set timezone :localtime
}
set CachedSystemTimeZone $timezone
if {![info exists timezone]} {
# Cache the time zone only if it was detected by one of the
# expensive methods.
if { [info exists CachedSystemTimeZone] } {
set timezone $CachedSystemTimeZone
} elseif { $::tcl_platform(platform) eq {windows} } {
set timezone [GuessWindowsTimeZone]
} elseif { [file exists /etc/localtime]
&& ![catch {ReadZoneinfoFile \
Tcl/Localtime /etc/localtime}] } {
set timezone :Tcl/Localtime
} else {
set timezone :localtime
}
set CachedSystemTimeZone $timezone
}
if { ![dict exists $TimeZoneBad $timezone] } {
dict set TimeZoneBad $timezone [catch {SetupTimeZone $timezone}]
}
@@ -3489,7 +3494,7 @@ proc ::tcl::clock::LoadZoneinfoFile { fileName } {
proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
variable MINWIDE
variable TZData
if { ![info exists fname] } {
if { ![file exists $fname] } {
return -code error "$fileName not found"
}
@@ -3579,8 +3584,10 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
set i 0
set abbrevs {}
foreach a $abbrList {
dict set abbrevs $i $a
incr i [expr { [string length $a] + 1 }]
for {set j 0} {$j <= [string length $a]} {incr j} {
dict set abbrevs $i [string range $a $j end]
incr i
}
}
# Package up a list of tuples, each of which contains transition time,
+6 -6
View File
@@ -11,7 +11,7 @@
package require Tcl 8.4
# Keep this in sync with pkgIndex.tcl and with the install directories in
# Makefiles
package provide http 2.7.6
package provide http 2.7.9
namespace eval http {
# Allow resourcing to not clobber existing data
@@ -37,11 +37,11 @@ namespace eval http {
for {set i 0} {$i <= 256} {incr i} {
set c [format %c $i]
if {![string match {[-._~a-zA-Z0-9]} $c]} {
set map($c) %[format %.2x $i]
set map($c) %[format %.2X $i]
}
}
# These are handled specially
set map(\n) %0d%0a
set map(\n) %0D%0A
variable formMap [array get map]
# Create a map for HTTP/1.1 open sockets
@@ -863,12 +863,12 @@ proc http::cleanup {token} {
proc http::Connect {token} {
variable $token
upvar 0 $token state
global errorInfo errorCode
set err "due to unexpected EOF"
if {
[eof $state(sock)] ||
[string length [fconfigure $state(sock) -error]]
[set err [fconfigure $state(sock) -error]] ne ""
} then {
Finish $token "connect failed [fconfigure $state(sock) -error]" 1
Finish $token "connect failed $err" 1
} else {
set state(status) connect
fileevent $state(sock) writable {}
+1 -1
View File
@@ -1,4 +1,4 @@
# Tcl package index file, version 1.1
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded http 2.7.6 [list tclPkgSetup $dir http 2.7.6 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}]
package ifneeded http 2.7.9 [list tclPkgSetup $dir http 2.7.9 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}]
+1 -1
View File
@@ -15,7 +15,7 @@
if {[info commands package] == ""} {
error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]"
}
package require -exact Tcl 8.5.10
package require -exact Tcl 8.5.11
# Compute the auto path to use in this interpreter.
# The values on the path come from several locations:
+1 -1
View File
@@ -393,7 +393,7 @@ proc pkg_mkIndex {args} {
break
}
lappend cmd ::tcl::Pkg::Create -name $name -version $version
foreach spec $files($pkg) {
foreach spec [lsort -index 0 $files($pkg)] {
foreach {file type procs} $spec {
if { $direct } {
set procs {}
+1 -1
View File
@@ -9,4 +9,4 @@
# full path name of this file's directory.
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded tcltest 2.3.3 [list source [file join $dir tcltest.tcl]]
package ifneeded tcltest 2.3.4 [list source [file join $dir tcltest.tcl]]
+11 -3
View File
@@ -22,7 +22,7 @@ namespace eval tcltest {
# When the version number changes, be sure to update the pkgIndex.tcl file,
# and the install directory in the Makefiles. When the minor version
# changes (new feature) be sure to update the man page as well.
variable Version 2.3.3
variable Version 2.3.4
# Compatibility support for dumb variables defined in tcltest 1
# Do not use these. Call [package provide Tcl] and [info patchlevel]
@@ -483,8 +483,10 @@ namespace eval tcltest {
variable Verify
variable Usage
variable OptionControlledVariables
variable DefaultValue
set Usage($option) $usage
set Verify($option) $verify
set DefaultValue($option) $value
if {[catch {$verify $value} msg]} {
return -code error $msg
} else {
@@ -708,7 +710,7 @@ namespace eval tcltest {
}
}
}
Option -limitconstraints false {
Option -limitconstraints 0 {
whether to run only tests with the constraints
} AcceptBoolean limitConstraints
trace variable Option(-limitconstraints) w \
@@ -2716,6 +2718,7 @@ proc tcltest::runAllTests { {shell ""} } {
variable numTestFiles
variable numTests
variable failFiles
variable DefaultValue
FillFilesExisted
if {[llength [info level 0]] == 1} {
@@ -2780,7 +2783,12 @@ proc tcltest::runAllTests { {shell ""} } {
set childargv [list]
foreach opt [Configure] {
if {[string equal $opt -outfile]} {continue}
lappend childargv $opt [Configure $opt]
set value [Configure $opt]
# Don't bother passing default configuration options
if {[string equal $value $DefaultValue($opt)]} {
continue
}
lappend childargv $opt $value
}
set cmd [linsert $childargv 0 | $shell $file]
if {[catch {
+177
View File
@@ -62,4 +62,181 @@ set TZData(:America/Bahia) {
{1036292400 -7200 1 BRST}
{1045360800 -10800 0 BRT}
{1064368800 -10800 0 BRT}
{1318734000 -7200 0 BRST}
{1330221600 -10800 0 BRT}
{1350788400 -7200 1 BRST}
{1361066400 -10800 0 BRT}
{1382238000 -7200 1 BRST}
{1392516000 -10800 0 BRT}
{1413687600 -7200 1 BRST}
{1424570400 -10800 0 BRT}
{1445137200 -7200 1 BRST}
{1456020000 -10800 0 BRT}
{1476586800 -7200 1 BRST}
{1487469600 -10800 0 BRT}
{1508036400 -7200 1 BRST}
{1518919200 -10800 0 BRT}
{1540090800 -7200 1 BRST}
{1550368800 -10800 0 BRT}
{1571540400 -7200 1 BRST}
{1581818400 -10800 0 BRT}
{1602990000 -7200 1 BRST}
{1613872800 -10800 0 BRT}
{1634439600 -7200 1 BRST}
{1645322400 -10800 0 BRT}
{1665889200 -7200 1 BRST}
{1677376800 -10800 0 BRT}
{1697338800 -7200 1 BRST}
{1708221600 -10800 0 BRT}
{1729393200 -7200 1 BRST}
{1739671200 -10800 0 BRT}
{1760842800 -7200 1 BRST}
{1771725600 -10800 0 BRT}
{1792292400 -7200 1 BRST}
{1803175200 -10800 0 BRT}
{1823742000 -7200 1 BRST}
{1834624800 -10800 0 BRT}
{1855191600 -7200 1 BRST}
{1866074400 -10800 0 BRT}
{1887246000 -7200 1 BRST}
{1897524000 -10800 0 BRT}
{1918695600 -7200 1 BRST}
{1928973600 -10800 0 BRT}
{1950145200 -7200 1 BRST}
{1960423200 -10800 0 BRT}
{1981594800 -7200 1 BRST}
{1992477600 -10800 0 BRT}
{2013044400 -7200 1 BRST}
{2024532000 -10800 0 BRT}
{2044494000 -7200 1 BRST}
{2055376800 -10800 0 BRT}
{2076548400 -7200 1 BRST}
{2086826400 -10800 0 BRT}
{2107998000 -7200 1 BRST}
{2118880800 -10800 0 BRT}
{2139447600 -7200 1 BRST}
{2150330400 -10800 0 BRT}
{2170897200 -7200 1 BRST}
{2181780000 -10800 0 BRT}
{2202346800 -7200 1 BRST}
{2213229600 -10800 0 BRT}
{2234401200 -7200 1 BRST}
{2244679200 -10800 0 BRT}
{2265850800 -7200 1 BRST}
{2276128800 -10800 0 BRT}
{2297300400 -7200 1 BRST}
{2307578400 -10800 0 BRT}
{2328750000 -7200 1 BRST}
{2339632800 -10800 0 BRT}
{2360199600 -7200 1 BRST}
{2371082400 -10800 0 BRT}
{2391649200 -7200 1 BRST}
{2402532000 -10800 0 BRT}
{2423703600 -7200 1 BRST}
{2433981600 -10800 0 BRT}
{2455153200 -7200 1 BRST}
{2465431200 -10800 0 BRT}
{2486602800 -7200 1 BRST}
{2497485600 -10800 0 BRT}
{2518052400 -7200 1 BRST}
{2528935200 -10800 0 BRT}
{2549502000 -7200 1 BRST}
{2560384800 -10800 0 BRT}
{2580951600 -7200 1 BRST}
{2591834400 -10800 0 BRT}
{2613006000 -7200 1 BRST}
{2623284000 -10800 0 BRT}
{2644455600 -7200 1 BRST}
{2654733600 -10800 0 BRT}
{2675905200 -7200 1 BRST}
{2686788000 -10800 0 BRT}
{2707354800 -7200 1 BRST}
{2718237600 -10800 0 BRT}
{2738804400 -7200 1 BRST}
{2749687200 -10800 0 BRT}
{2770858800 -7200 1 BRST}
{2781136800 -10800 0 BRT}
{2802308400 -7200 1 BRST}
{2812586400 -10800 0 BRT}
{2833758000 -7200 1 BRST}
{2844036000 -10800 0 BRT}
{2865207600 -7200 1 BRST}
{2876090400 -10800 0 BRT}
{2896657200 -7200 1 BRST}
{2907540000 -10800 0 BRT}
{2928106800 -7200 1 BRST}
{2938989600 -10800 0 BRT}
{2960161200 -7200 1 BRST}
{2970439200 -10800 0 BRT}
{2991610800 -7200 1 BRST}
{3001888800 -10800 0 BRT}
{3023060400 -7200 1 BRST}
{3033943200 -10800 0 BRT}
{3054510000 -7200 1 BRST}
{3065392800 -10800 0 BRT}
{3085959600 -7200 1 BRST}
{3096842400 -10800 0 BRT}
{3118014000 -7200 1 BRST}
{3128292000 -10800 0 BRT}
{3149463600 -7200 1 BRST}
{3159741600 -10800 0 BRT}
{3180913200 -7200 1 BRST}
{3191191200 -10800 0 BRT}
{3212362800 -7200 1 BRST}
{3223245600 -10800 0 BRT}
{3243812400 -7200 1 BRST}
{3254695200 -10800 0 BRT}
{3275262000 -7200 1 BRST}
{3286144800 -10800 0 BRT}
{3307316400 -7200 1 BRST}
{3317594400 -10800 0 BRT}
{3338766000 -7200 1 BRST}
{3349044000 -10800 0 BRT}
{3370215600 -7200 1 BRST}
{3381098400 -10800 0 BRT}
{3401665200 -7200 1 BRST}
{3412548000 -10800 0 BRT}
{3433114800 -7200 1 BRST}
{3443997600 -10800 0 BRT}
{3464564400 -7200 1 BRST}
{3475447200 -10800 0 BRT}
{3496618800 -7200 1 BRST}
{3506896800 -10800 0 BRT}
{3528068400 -7200 1 BRST}
{3538346400 -10800 0 BRT}
{3559518000 -7200 1 BRST}
{3570400800 -10800 0 BRT}
{3590967600 -7200 1 BRST}
{3601850400 -10800 0 BRT}
{3622417200 -7200 1 BRST}
{3633300000 -10800 0 BRT}
{3654471600 -7200 1 BRST}
{3664749600 -10800 0 BRT}
{3685921200 -7200 1 BRST}
{3696199200 -10800 0 BRT}
{3717370800 -7200 1 BRST}
{3727648800 -10800 0 BRT}
{3748820400 -7200 1 BRST}
{3759703200 -10800 0 BRT}
{3780270000 -7200 1 BRST}
{3791152800 -10800 0 BRT}
{3811719600 -7200 1 BRST}
{3822602400 -10800 0 BRT}
{3843774000 -7200 1 BRST}
{3854052000 -10800 0 BRT}
{3875223600 -7200 1 BRST}
{3885501600 -10800 0 BRT}
{3906673200 -7200 1 BRST}
{3917556000 -10800 0 BRT}
{3938122800 -7200 1 BRST}
{3949005600 -10800 0 BRT}
{3969572400 -7200 1 BRST}
{3980455200 -10800 0 BRT}
{4001626800 -7200 1 BRST}
{4011904800 -10800 0 BRT}
{4033076400 -7200 1 BRST}
{4043354400 -10800 0 BRT}
{4064526000 -7200 1 BRST}
{4074804000 -10800 0 BRT}
{4095975600 -7200 1 BRST}
}
+1 -1
View File
@@ -105,7 +105,7 @@ set TZData(:America/Havana) {
{1268542800 -14400 1 CDT}
{1288501200 -18000 0 CST}
{1300597200 -14400 1 CDT}
{1319950800 -18000 0 CST}
{1321160400 -18000 0 CST}
{1331442000 -14400 1 CDT}
{1351400400 -18000 0 CST}
{1362891600 -14400 1 CDT}
+178 -1
View File
@@ -70,5 +70,182 @@ set TZData(:Europe/Kiev) {
{1256432400 7200 0 EET}
{1269738000 10800 1 EEST}
{1288486800 7200 0 EET}
{1301187600 10800 0 FET}
{1301187600 10800 1 EEST}
{1319936400 7200 0 EET}
{1332637200 10800 1 EEST}
{1351386000 7200 0 EET}
{1364691600 10800 1 EEST}
{1382835600 7200 0 EET}
{1396141200 10800 1 EEST}
{1414285200 7200 0 EET}
{1427590800 10800 1 EEST}
{1445734800 7200 0 EET}
{1459040400 10800 1 EEST}
{1477789200 7200 0 EET}
{1490490000 10800 1 EEST}
{1509238800 7200 0 EET}
{1521939600 10800 1 EEST}
{1540688400 7200 0 EET}
{1553994000 10800 1 EEST}
{1572138000 7200 0 EET}
{1585443600 10800 1 EEST}
{1603587600 7200 0 EET}
{1616893200 10800 1 EEST}
{1635642000 7200 0 EET}
{1648342800 10800 1 EEST}
{1667091600 7200 0 EET}
{1679792400 10800 1 EEST}
{1698541200 7200 0 EET}
{1711846800 10800 1 EEST}
{1729990800 7200 0 EET}
{1743296400 10800 1 EEST}
{1761440400 7200 0 EET}
{1774746000 10800 1 EEST}
{1792890000 7200 0 EET}
{1806195600 10800 1 EEST}
{1824944400 7200 0 EET}
{1837645200 10800 1 EEST}
{1856394000 7200 0 EET}
{1869094800 10800 1 EEST}
{1887843600 7200 0 EET}
{1901149200 10800 1 EEST}
{1919293200 7200 0 EET}
{1932598800 10800 1 EEST}
{1950742800 7200 0 EET}
{1964048400 10800 1 EEST}
{1982797200 7200 0 EET}
{1995498000 10800 1 EEST}
{2014246800 7200 0 EET}
{2026947600 10800 1 EEST}
{2045696400 7200 0 EET}
{2058397200 10800 1 EEST}
{2077146000 7200 0 EET}
{2090451600 10800 1 EEST}
{2108595600 7200 0 EET}
{2121901200 10800 1 EEST}
{2140045200 7200 0 EET}
{2153350800 10800 1 EEST}
{2172099600 7200 0 EET}
{2184800400 10800 1 EEST}
{2203549200 7200 0 EET}
{2216250000 10800 1 EEST}
{2234998800 7200 0 EET}
{2248304400 10800 1 EEST}
{2266448400 7200 0 EET}
{2279754000 10800 1 EEST}
{2297898000 7200 0 EET}
{2311203600 10800 1 EEST}
{2329347600 7200 0 EET}
{2342653200 10800 1 EEST}
{2361402000 7200 0 EET}
{2374102800 10800 1 EEST}
{2392851600 7200 0 EET}
{2405552400 10800 1 EEST}
{2424301200 7200 0 EET}
{2437606800 10800 1 EEST}
{2455750800 7200 0 EET}
{2469056400 10800 1 EEST}
{2487200400 7200 0 EET}
{2500506000 10800 1 EEST}
{2519254800 7200 0 EET}
{2531955600 10800 1 EEST}
{2550704400 7200 0 EET}
{2563405200 10800 1 EEST}
{2582154000 7200 0 EET}
{2595459600 10800 1 EEST}
{2613603600 7200 0 EET}
{2626909200 10800 1 EEST}
{2645053200 7200 0 EET}
{2658358800 10800 1 EEST}
{2676502800 7200 0 EET}
{2689808400 10800 1 EEST}
{2708557200 7200 0 EET}
{2721258000 10800 1 EEST}
{2740006800 7200 0 EET}
{2752707600 10800 1 EEST}
{2771456400 7200 0 EET}
{2784762000 10800 1 EEST}
{2802906000 7200 0 EET}
{2816211600 10800 1 EEST}
{2834355600 7200 0 EET}
{2847661200 10800 1 EEST}
{2866410000 7200 0 EET}
{2879110800 10800 1 EEST}
{2897859600 7200 0 EET}
{2910560400 10800 1 EEST}
{2929309200 7200 0 EET}
{2942010000 10800 1 EEST}
{2960758800 7200 0 EET}
{2974064400 10800 1 EEST}
{2992208400 7200 0 EET}
{3005514000 10800 1 EEST}
{3023658000 7200 0 EET}
{3036963600 10800 1 EEST}
{3055712400 7200 0 EET}
{3068413200 10800 1 EEST}
{3087162000 7200 0 EET}
{3099862800 10800 1 EEST}
{3118611600 7200 0 EET}
{3131917200 10800 1 EEST}
{3150061200 7200 0 EET}
{3163366800 10800 1 EEST}
{3181510800 7200 0 EET}
{3194816400 10800 1 EEST}
{3212960400 7200 0 EET}
{3226266000 10800 1 EEST}
{3245014800 7200 0 EET}
{3257715600 10800 1 EEST}
{3276464400 7200 0 EET}
{3289165200 10800 1 EEST}
{3307914000 7200 0 EET}
{3321219600 10800 1 EEST}
{3339363600 7200 0 EET}
{3352669200 10800 1 EEST}
{3370813200 7200 0 EET}
{3384118800 10800 1 EEST}
{3402867600 7200 0 EET}
{3415568400 10800 1 EEST}
{3434317200 7200 0 EET}
{3447018000 10800 1 EEST}
{3465766800 7200 0 EET}
{3479072400 10800 1 EEST}
{3497216400 7200 0 EET}
{3510522000 10800 1 EEST}
{3528666000 7200 0 EET}
{3541971600 10800 1 EEST}
{3560115600 7200 0 EET}
{3573421200 10800 1 EEST}
{3592170000 7200 0 EET}
{3604870800 10800 1 EEST}
{3623619600 7200 0 EET}
{3636320400 10800 1 EEST}
{3655069200 7200 0 EET}
{3668374800 10800 1 EEST}
{3686518800 7200 0 EET}
{3699824400 10800 1 EEST}
{3717968400 7200 0 EET}
{3731274000 10800 1 EEST}
{3750022800 7200 0 EET}
{3762723600 10800 1 EEST}
{3781472400 7200 0 EET}
{3794173200 10800 1 EEST}
{3812922000 7200 0 EET}
{3825622800 10800 1 EEST}
{3844371600 7200 0 EET}
{3857677200 10800 1 EEST}
{3875821200 7200 0 EET}
{3889126800 10800 1 EEST}
{3907270800 7200 0 EET}
{3920576400 10800 1 EEST}
{3939325200 7200 0 EET}
{3952026000 10800 1 EEST}
{3970774800 7200 0 EET}
{3983475600 10800 1 EEST}
{4002224400 7200 0 EET}
{4015530000 10800 1 EEST}
{4033674000 7200 0 EET}
{4046979600 10800 1 EEST}
{4065123600 7200 0 EET}
{4078429200 10800 1 EEST}
{4096573200 7200 0 EET}
}
+178 -1
View File
@@ -72,5 +72,182 @@ set TZData(:Europe/Simferopol) {
{1256432400 7200 0 EET}
{1269738000 10800 1 EEST}
{1288486800 7200 0 EET}
{1301187600 10800 0 FET}
{1301187600 10800 1 EEST}
{1319936400 7200 0 EET}
{1332637200 10800 1 EEST}
{1351386000 7200 0 EET}
{1364691600 10800 1 EEST}
{1382835600 7200 0 EET}
{1396141200 10800 1 EEST}
{1414285200 7200 0 EET}
{1427590800 10800 1 EEST}
{1445734800 7200 0 EET}
{1459040400 10800 1 EEST}
{1477789200 7200 0 EET}
{1490490000 10800 1 EEST}
{1509238800 7200 0 EET}
{1521939600 10800 1 EEST}
{1540688400 7200 0 EET}
{1553994000 10800 1 EEST}
{1572138000 7200 0 EET}
{1585443600 10800 1 EEST}
{1603587600 7200 0 EET}
{1616893200 10800 1 EEST}
{1635642000 7200 0 EET}
{1648342800 10800 1 EEST}
{1667091600 7200 0 EET}
{1679792400 10800 1 EEST}
{1698541200 7200 0 EET}
{1711846800 10800 1 EEST}
{1729990800 7200 0 EET}
{1743296400 10800 1 EEST}
{1761440400 7200 0 EET}
{1774746000 10800 1 EEST}
{1792890000 7200 0 EET}
{1806195600 10800 1 EEST}
{1824944400 7200 0 EET}
{1837645200 10800 1 EEST}
{1856394000 7200 0 EET}
{1869094800 10800 1 EEST}
{1887843600 7200 0 EET}
{1901149200 10800 1 EEST}
{1919293200 7200 0 EET}
{1932598800 10800 1 EEST}
{1950742800 7200 0 EET}
{1964048400 10800 1 EEST}
{1982797200 7200 0 EET}
{1995498000 10800 1 EEST}
{2014246800 7200 0 EET}
{2026947600 10800 1 EEST}
{2045696400 7200 0 EET}
{2058397200 10800 1 EEST}
{2077146000 7200 0 EET}
{2090451600 10800 1 EEST}
{2108595600 7200 0 EET}
{2121901200 10800 1 EEST}
{2140045200 7200 0 EET}
{2153350800 10800 1 EEST}
{2172099600 7200 0 EET}
{2184800400 10800 1 EEST}
{2203549200 7200 0 EET}
{2216250000 10800 1 EEST}
{2234998800 7200 0 EET}
{2248304400 10800 1 EEST}
{2266448400 7200 0 EET}
{2279754000 10800 1 EEST}
{2297898000 7200 0 EET}
{2311203600 10800 1 EEST}
{2329347600 7200 0 EET}
{2342653200 10800 1 EEST}
{2361402000 7200 0 EET}
{2374102800 10800 1 EEST}
{2392851600 7200 0 EET}
{2405552400 10800 1 EEST}
{2424301200 7200 0 EET}
{2437606800 10800 1 EEST}
{2455750800 7200 0 EET}
{2469056400 10800 1 EEST}
{2487200400 7200 0 EET}
{2500506000 10800 1 EEST}
{2519254800 7200 0 EET}
{2531955600 10800 1 EEST}
{2550704400 7200 0 EET}
{2563405200 10800 1 EEST}
{2582154000 7200 0 EET}
{2595459600 10800 1 EEST}
{2613603600 7200 0 EET}
{2626909200 10800 1 EEST}
{2645053200 7200 0 EET}
{2658358800 10800 1 EEST}
{2676502800 7200 0 EET}
{2689808400 10800 1 EEST}
{2708557200 7200 0 EET}
{2721258000 10800 1 EEST}
{2740006800 7200 0 EET}
{2752707600 10800 1 EEST}
{2771456400 7200 0 EET}
{2784762000 10800 1 EEST}
{2802906000 7200 0 EET}
{2816211600 10800 1 EEST}
{2834355600 7200 0 EET}
{2847661200 10800 1 EEST}
{2866410000 7200 0 EET}
{2879110800 10800 1 EEST}
{2897859600 7200 0 EET}
{2910560400 10800 1 EEST}
{2929309200 7200 0 EET}
{2942010000 10800 1 EEST}
{2960758800 7200 0 EET}
{2974064400 10800 1 EEST}
{2992208400 7200 0 EET}
{3005514000 10800 1 EEST}
{3023658000 7200 0 EET}
{3036963600 10800 1 EEST}
{3055712400 7200 0 EET}
{3068413200 10800 1 EEST}
{3087162000 7200 0 EET}
{3099862800 10800 1 EEST}
{3118611600 7200 0 EET}
{3131917200 10800 1 EEST}
{3150061200 7200 0 EET}
{3163366800 10800 1 EEST}
{3181510800 7200 0 EET}
{3194816400 10800 1 EEST}
{3212960400 7200 0 EET}
{3226266000 10800 1 EEST}
{3245014800 7200 0 EET}
{3257715600 10800 1 EEST}
{3276464400 7200 0 EET}
{3289165200 10800 1 EEST}
{3307914000 7200 0 EET}
{3321219600 10800 1 EEST}
{3339363600 7200 0 EET}
{3352669200 10800 1 EEST}
{3370813200 7200 0 EET}
{3384118800 10800 1 EEST}
{3402867600 7200 0 EET}
{3415568400 10800 1 EEST}
{3434317200 7200 0 EET}
{3447018000 10800 1 EEST}
{3465766800 7200 0 EET}
{3479072400 10800 1 EEST}
{3497216400 7200 0 EET}
{3510522000 10800 1 EEST}
{3528666000 7200 0 EET}
{3541971600 10800 1 EEST}
{3560115600 7200 0 EET}
{3573421200 10800 1 EEST}
{3592170000 7200 0 EET}
{3604870800 10800 1 EEST}
{3623619600 7200 0 EET}
{3636320400 10800 1 EEST}
{3655069200 7200 0 EET}
{3668374800 10800 1 EEST}
{3686518800 7200 0 EET}
{3699824400 10800 1 EEST}
{3717968400 7200 0 EET}
{3731274000 10800 1 EEST}
{3750022800 7200 0 EET}
{3762723600 10800 1 EEST}
{3781472400 7200 0 EET}
{3794173200 10800 1 EEST}
{3812922000 7200 0 EET}
{3825622800 10800 1 EEST}
{3844371600 7200 0 EET}
{3857677200 10800 1 EEST}
{3875821200 7200 0 EET}
{3889126800 10800 1 EEST}
{3907270800 7200 0 EET}
{3920576400 10800 1 EEST}
{3939325200 7200 0 EET}
{3952026000 10800 1 EEST}
{3970774800 7200 0 EET}
{3983475600 10800 1 EEST}
{4002224400 7200 0 EET}
{4015530000 10800 1 EEST}
{4033674000 7200 0 EET}
{4046979600 10800 1 EEST}
{4065123600 7200 0 EET}
{4078429200 10800 1 EEST}
{4096573200 7200 0 EET}
}
+178 -1
View File
@@ -73,5 +73,182 @@ set TZData(:Europe/Uzhgorod) {
{1256432400 7200 0 EET}
{1269738000 10800 1 EEST}
{1288486800 7200 0 EET}
{1301187600 10800 0 FET}
{1301187600 10800 1 EEST}
{1319936400 7200 0 EET}
{1332637200 10800 1 EEST}
{1351386000 7200 0 EET}
{1364691600 10800 1 EEST}
{1382835600 7200 0 EET}
{1396141200 10800 1 EEST}
{1414285200 7200 0 EET}
{1427590800 10800 1 EEST}
{1445734800 7200 0 EET}
{1459040400 10800 1 EEST}
{1477789200 7200 0 EET}
{1490490000 10800 1 EEST}
{1509238800 7200 0 EET}
{1521939600 10800 1 EEST}
{1540688400 7200 0 EET}
{1553994000 10800 1 EEST}
{1572138000 7200 0 EET}
{1585443600 10800 1 EEST}
{1603587600 7200 0 EET}
{1616893200 10800 1 EEST}
{1635642000 7200 0 EET}
{1648342800 10800 1 EEST}
{1667091600 7200 0 EET}
{1679792400 10800 1 EEST}
{1698541200 7200 0 EET}
{1711846800 10800 1 EEST}
{1729990800 7200 0 EET}
{1743296400 10800 1 EEST}
{1761440400 7200 0 EET}
{1774746000 10800 1 EEST}
{1792890000 7200 0 EET}
{1806195600 10800 1 EEST}
{1824944400 7200 0 EET}
{1837645200 10800 1 EEST}
{1856394000 7200 0 EET}
{1869094800 10800 1 EEST}
{1887843600 7200 0 EET}
{1901149200 10800 1 EEST}
{1919293200 7200 0 EET}
{1932598800 10800 1 EEST}
{1950742800 7200 0 EET}
{1964048400 10800 1 EEST}
{1982797200 7200 0 EET}
{1995498000 10800 1 EEST}
{2014246800 7200 0 EET}
{2026947600 10800 1 EEST}
{2045696400 7200 0 EET}
{2058397200 10800 1 EEST}
{2077146000 7200 0 EET}
{2090451600 10800 1 EEST}
{2108595600 7200 0 EET}
{2121901200 10800 1 EEST}
{2140045200 7200 0 EET}
{2153350800 10800 1 EEST}
{2172099600 7200 0 EET}
{2184800400 10800 1 EEST}
{2203549200 7200 0 EET}
{2216250000 10800 1 EEST}
{2234998800 7200 0 EET}
{2248304400 10800 1 EEST}
{2266448400 7200 0 EET}
{2279754000 10800 1 EEST}
{2297898000 7200 0 EET}
{2311203600 10800 1 EEST}
{2329347600 7200 0 EET}
{2342653200 10800 1 EEST}
{2361402000 7200 0 EET}
{2374102800 10800 1 EEST}
{2392851600 7200 0 EET}
{2405552400 10800 1 EEST}
{2424301200 7200 0 EET}
{2437606800 10800 1 EEST}
{2455750800 7200 0 EET}
{2469056400 10800 1 EEST}
{2487200400 7200 0 EET}
{2500506000 10800 1 EEST}
{2519254800 7200 0 EET}
{2531955600 10800 1 EEST}
{2550704400 7200 0 EET}
{2563405200 10800 1 EEST}
{2582154000 7200 0 EET}
{2595459600 10800 1 EEST}
{2613603600 7200 0 EET}
{2626909200 10800 1 EEST}
{2645053200 7200 0 EET}
{2658358800 10800 1 EEST}
{2676502800 7200 0 EET}
{2689808400 10800 1 EEST}
{2708557200 7200 0 EET}
{2721258000 10800 1 EEST}
{2740006800 7200 0 EET}
{2752707600 10800 1 EEST}
{2771456400 7200 0 EET}
{2784762000 10800 1 EEST}
{2802906000 7200 0 EET}
{2816211600 10800 1 EEST}
{2834355600 7200 0 EET}
{2847661200 10800 1 EEST}
{2866410000 7200 0 EET}
{2879110800 10800 1 EEST}
{2897859600 7200 0 EET}
{2910560400 10800 1 EEST}
{2929309200 7200 0 EET}
{2942010000 10800 1 EEST}
{2960758800 7200 0 EET}
{2974064400 10800 1 EEST}
{2992208400 7200 0 EET}
{3005514000 10800 1 EEST}
{3023658000 7200 0 EET}
{3036963600 10800 1 EEST}
{3055712400 7200 0 EET}
{3068413200 10800 1 EEST}
{3087162000 7200 0 EET}
{3099862800 10800 1 EEST}
{3118611600 7200 0 EET}
{3131917200 10800 1 EEST}
{3150061200 7200 0 EET}
{3163366800 10800 1 EEST}
{3181510800 7200 0 EET}
{3194816400 10800 1 EEST}
{3212960400 7200 0 EET}
{3226266000 10800 1 EEST}
{3245014800 7200 0 EET}
{3257715600 10800 1 EEST}
{3276464400 7200 0 EET}
{3289165200 10800 1 EEST}
{3307914000 7200 0 EET}
{3321219600 10800 1 EEST}
{3339363600 7200 0 EET}
{3352669200 10800 1 EEST}
{3370813200 7200 0 EET}
{3384118800 10800 1 EEST}
{3402867600 7200 0 EET}
{3415568400 10800 1 EEST}
{3434317200 7200 0 EET}
{3447018000 10800 1 EEST}
{3465766800 7200 0 EET}
{3479072400 10800 1 EEST}
{3497216400 7200 0 EET}
{3510522000 10800 1 EEST}
{3528666000 7200 0 EET}
{3541971600 10800 1 EEST}
{3560115600 7200 0 EET}
{3573421200 10800 1 EEST}
{3592170000 7200 0 EET}
{3604870800 10800 1 EEST}
{3623619600 7200 0 EET}
{3636320400 10800 1 EEST}
{3655069200 7200 0 EET}
{3668374800 10800 1 EEST}
{3686518800 7200 0 EET}
{3699824400 10800 1 EEST}
{3717968400 7200 0 EET}
{3731274000 10800 1 EEST}
{3750022800 7200 0 EET}
{3762723600 10800 1 EEST}
{3781472400 7200 0 EET}
{3794173200 10800 1 EEST}
{3812922000 7200 0 EET}
{3825622800 10800 1 EEST}
{3844371600 7200 0 EET}
{3857677200 10800 1 EEST}
{3875821200 7200 0 EET}
{3889126800 10800 1 EEST}
{3907270800 7200 0 EET}
{3920576400 10800 1 EEST}
{3939325200 7200 0 EET}
{3952026000 10800 1 EEST}
{3970774800 7200 0 EET}
{3983475600 10800 1 EEST}
{4002224400 7200 0 EET}
{4015530000 10800 1 EEST}
{4033674000 7200 0 EET}
{4046979600 10800 1 EEST}
{4065123600 7200 0 EET}
{4078429200 10800 1 EEST}
{4096573200 7200 0 EET}
}
+178 -1
View File
@@ -71,5 +71,182 @@ set TZData(:Europe/Zaporozhye) {
{1256432400 7200 0 EET}
{1269738000 10800 1 EEST}
{1288486800 7200 0 EET}
{1301187600 10800 0 FET}
{1301187600 10800 1 EEST}
{1319936400 7200 0 EET}
{1332637200 10800 1 EEST}
{1351386000 7200 0 EET}
{1364691600 10800 1 EEST}
{1382835600 7200 0 EET}
{1396141200 10800 1 EEST}
{1414285200 7200 0 EET}
{1427590800 10800 1 EEST}
{1445734800 7200 0 EET}
{1459040400 10800 1 EEST}
{1477789200 7200 0 EET}
{1490490000 10800 1 EEST}
{1509238800 7200 0 EET}
{1521939600 10800 1 EEST}
{1540688400 7200 0 EET}
{1553994000 10800 1 EEST}
{1572138000 7200 0 EET}
{1585443600 10800 1 EEST}
{1603587600 7200 0 EET}
{1616893200 10800 1 EEST}
{1635642000 7200 0 EET}
{1648342800 10800 1 EEST}
{1667091600 7200 0 EET}
{1679792400 10800 1 EEST}
{1698541200 7200 0 EET}
{1711846800 10800 1 EEST}
{1729990800 7200 0 EET}
{1743296400 10800 1 EEST}
{1761440400 7200 0 EET}
{1774746000 10800 1 EEST}
{1792890000 7200 0 EET}
{1806195600 10800 1 EEST}
{1824944400 7200 0 EET}
{1837645200 10800 1 EEST}
{1856394000 7200 0 EET}
{1869094800 10800 1 EEST}
{1887843600 7200 0 EET}
{1901149200 10800 1 EEST}
{1919293200 7200 0 EET}
{1932598800 10800 1 EEST}
{1950742800 7200 0 EET}
{1964048400 10800 1 EEST}
{1982797200 7200 0 EET}
{1995498000 10800 1 EEST}
{2014246800 7200 0 EET}
{2026947600 10800 1 EEST}
{2045696400 7200 0 EET}
{2058397200 10800 1 EEST}
{2077146000 7200 0 EET}
{2090451600 10800 1 EEST}
{2108595600 7200 0 EET}
{2121901200 10800 1 EEST}
{2140045200 7200 0 EET}
{2153350800 10800 1 EEST}
{2172099600 7200 0 EET}
{2184800400 10800 1 EEST}
{2203549200 7200 0 EET}
{2216250000 10800 1 EEST}
{2234998800 7200 0 EET}
{2248304400 10800 1 EEST}
{2266448400 7200 0 EET}
{2279754000 10800 1 EEST}
{2297898000 7200 0 EET}
{2311203600 10800 1 EEST}
{2329347600 7200 0 EET}
{2342653200 10800 1 EEST}
{2361402000 7200 0 EET}
{2374102800 10800 1 EEST}
{2392851600 7200 0 EET}
{2405552400 10800 1 EEST}
{2424301200 7200 0 EET}
{2437606800 10800 1 EEST}
{2455750800 7200 0 EET}
{2469056400 10800 1 EEST}
{2487200400 7200 0 EET}
{2500506000 10800 1 EEST}
{2519254800 7200 0 EET}
{2531955600 10800 1 EEST}
{2550704400 7200 0 EET}
{2563405200 10800 1 EEST}
{2582154000 7200 0 EET}
{2595459600 10800 1 EEST}
{2613603600 7200 0 EET}
{2626909200 10800 1 EEST}
{2645053200 7200 0 EET}
{2658358800 10800 1 EEST}
{2676502800 7200 0 EET}
{2689808400 10800 1 EEST}
{2708557200 7200 0 EET}
{2721258000 10800 1 EEST}
{2740006800 7200 0 EET}
{2752707600 10800 1 EEST}
{2771456400 7200 0 EET}
{2784762000 10800 1 EEST}
{2802906000 7200 0 EET}
{2816211600 10800 1 EEST}
{2834355600 7200 0 EET}
{2847661200 10800 1 EEST}
{2866410000 7200 0 EET}
{2879110800 10800 1 EEST}
{2897859600 7200 0 EET}
{2910560400 10800 1 EEST}
{2929309200 7200 0 EET}
{2942010000 10800 1 EEST}
{2960758800 7200 0 EET}
{2974064400 10800 1 EEST}
{2992208400 7200 0 EET}
{3005514000 10800 1 EEST}
{3023658000 7200 0 EET}
{3036963600 10800 1 EEST}
{3055712400 7200 0 EET}
{3068413200 10800 1 EEST}
{3087162000 7200 0 EET}
{3099862800 10800 1 EEST}
{3118611600 7200 0 EET}
{3131917200 10800 1 EEST}
{3150061200 7200 0 EET}
{3163366800 10800 1 EEST}
{3181510800 7200 0 EET}
{3194816400 10800 1 EEST}
{3212960400 7200 0 EET}
{3226266000 10800 1 EEST}
{3245014800 7200 0 EET}
{3257715600 10800 1 EEST}
{3276464400 7200 0 EET}
{3289165200 10800 1 EEST}
{3307914000 7200 0 EET}
{3321219600 10800 1 EEST}
{3339363600 7200 0 EET}
{3352669200 10800 1 EEST}
{3370813200 7200 0 EET}
{3384118800 10800 1 EEST}
{3402867600 7200 0 EET}
{3415568400 10800 1 EEST}
{3434317200 7200 0 EET}
{3447018000 10800 1 EEST}
{3465766800 7200 0 EET}
{3479072400 10800 1 EEST}
{3497216400 7200 0 EET}
{3510522000 10800 1 EEST}
{3528666000 7200 0 EET}
{3541971600 10800 1 EEST}
{3560115600 7200 0 EET}
{3573421200 10800 1 EEST}
{3592170000 7200 0 EET}
{3604870800 10800 1 EEST}
{3623619600 7200 0 EET}
{3636320400 10800 1 EEST}
{3655069200 7200 0 EET}
{3668374800 10800 1 EEST}
{3686518800 7200 0 EET}
{3699824400 10800 1 EEST}
{3717968400 7200 0 EET}
{3731274000 10800 1 EEST}
{3750022800 7200 0 EET}
{3762723600 10800 1 EEST}
{3781472400 7200 0 EET}
{3794173200 10800 1 EEST}
{3812922000 7200 0 EET}
{3825622800 10800 1 EEST}
{3844371600 7200 0 EET}
{3857677200 10800 1 EEST}
{3875821200 7200 0 EET}
{3889126800 10800 1 EEST}
{3907270800 7200 0 EET}
{3920576400 10800 1 EEST}
{3939325200 7200 0 EET}
{3952026000 10800 1 EEST}
{3970774800 7200 0 EET}
{3983475600 10800 1 EEST}
{4002224400 7200 0 EET}
{4015530000 10800 1 EEST}
{4033674000 7200 0 EET}
{4046979600 10800 1 EEST}
{4065123600 7200 0 EET}
{4078429200 10800 1 EEST}
{4096573200 7200 0 EET}
}
+1 -1
View File
@@ -12,5 +12,5 @@ set TZData(:Pacific/Fiji) {
{1287842400 46800 1 FJST}
{1299333600 43200 0 FJT}
{1319292000 46800 1 FJST}
{1330178400 43200 0 FJT}
{1327154400 43200 0 FJT}
}
+181
View File
@@ -35895,6 +35895,39 @@ test clock-38.1 {regression - convertUTCToLocalViaC - east of Greenwich} \
} \
-result {01:00:00}
test clock-38.2 {make sure TZ is not cached after unset} \
-setup {
if { [info exists env(TZ)] } {
set oldTZ $env(TZ)
unset env(TZ)
}
if { [info exists env(TCL_TZ)] } {
set oldTCLTZ $env(TCL_TZ)
unset env(TCL_TZ)
}
} \
-body {
set t1 [clock format 0]
# a time zone that is unlikely to anywhere
set env(TZ) "+04:20"
set t2 [clock format 0]
unset env(TZ)
set t3 [clock format 0]
expr {$t1 eq $t3 && $t1 ne $t2}
} \
-cleanup {
if { [info exists oldTZ] } {
set env(TZ) $oldTZ
unset oldTZ
}
if { [info exists oldTclTZ] } {
set env(TCL_TZ) $oldTclTZ
unset oldTclTZ
}
} \
-result 1
test clock-39.1 {regression - synonym timezones} {
clock format 0 -format {%H:%M:%S} -timezone :US/Eastern
} {19:00:00}
@@ -36517,6 +36550,154 @@ test clock-56.3 {use of zoneinfo, version 2, Y2038 compliance} {*}{
-result {2040-07-01 00:00:00 PDT}
}
test clock-56.4 {Bug 3470928} {*}{
-setup {
clock format [clock seconds]
set tzdir [makeDirectory zoneinfo]
set tzdir2 [makeDirectory Test $tzdir]
set tzfile [makeFile {} Windhoek $tzdir2]
set f [open $tzfile wb]
puts -nonewline $f [binary format c* {
0x54 0x5a 0x69 0x66 0x32 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x06 0x00 0x00
0x00 0x06 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x5c 0x00 0x00 0x00
0x06 0x00 0x00 0x00 0x13 0x82 0x46 0xcf 0x68 0xcc 0xae 0x8c 0x80
0xcd 0x9e 0x6f 0x70 0x26 0x06 0xa7 0xe0 0x2d 0x9d 0xea 0xe0 0x2e
0x69 0x1c 0x10 0x2f 0x7d 0xe9 0x00 0x30 0x48 0xfe 0x10 0x31 0x67
0x05 0x80 0x32 0x28 0xe0 0x10 0x33 0x46 0xe7 0x80 0x34 0x11 0xfc
0x90 0x35 0x26 0xc9 0x80 0x35 0xf1 0xde 0x90 0x37 0x06 0xab 0x80
0x37 0xd1 0xc0 0x90 0x38 0xe6 0x8d 0x80 0x39 0xb1 0xa2 0x90 0x3a
0xc6 0x6f 0x80 0x3b 0x91 0x84 0x90 0x3c 0xaf 0x8c 0x00 0x3d 0x71
0x66 0x90 0x3e 0x8f 0x6e 0x00 0x3f 0x5a 0x83 0x10 0x40 0x6f 0x50
0x00 0x41 0x3a 0x65 0x10 0x42 0x4f 0x32 0x00 0x43 0x1a 0x47 0x10
0x44 0x2f 0x14 0x00 0x44 0xfa 0x29 0x10 0x46 0x0e 0xf6 0x00 0x46
0xda 0x0b 0x10 0x47 0xf8 0x12 0x80 0x48 0xc3 0x27 0x90 0x49 0xd7
0xf4 0x80 0x4a 0xa3 0x09 0x90 0x4b 0xb7 0xd6 0x80 0x4c 0x82 0xeb
0x90 0x4d 0x97 0xb8 0x80 0x4e 0x62 0xcd 0x90 0x4f 0x77 0x9a 0x80
0x50 0x42 0xaf 0x90 0x51 0x60 0xb7 0x00 0x52 0x22 0x91 0x90 0x53
0x40 0x99 0x00 0x54 0x0b 0xae 0x10 0x55 0x20 0x7b 0x00 0x55 0xeb
0x90 0x10 0x57 0x00 0x5d 0x00 0x57 0xcb 0x72 0x10 0x58 0xe0 0x3f
0x00 0x59 0xab 0x54 0x10 0x5a 0xc0 0x21 0x00 0x5b 0x8b 0x36 0x10
0x5c 0xa9 0x3d 0x80 0x5d 0x6b 0x18 0x10 0x5e 0x89 0x1f 0x80 0x5f
0x54 0x34 0x90 0x60 0x69 0x01 0x80 0x61 0x34 0x16 0x90 0x62 0x48
0xe3 0x80 0x63 0x13 0xf8 0x90 0x64 0x28 0xc5 0x80 0x64 0xf3 0xda
0x90 0x66 0x11 0xe2 0x00 0x66 0xd3 0xbc 0x90 0x67 0xf1 0xc4 0x00
0x68 0xbc 0xd9 0x10 0x69 0xd1 0xa6 0x00 0x6a 0x9c 0xbb 0x10 0x6b
0xb1 0x88 0x00 0x6c 0x7c 0x9d 0x10 0x6d 0x91 0x6a 0x00 0x6e 0x5c
0x7f 0x10 0x6f 0x71 0x4c 0x00 0x70 0x3c 0x61 0x10 0x71 0x5a 0x68
0x80 0x72 0x1c 0x43 0x10 0x73 0x3a 0x4a 0x80 0x74 0x05 0x5f 0x90
0x75 0x1a 0x2c 0x80 0x75 0xe5 0x41 0x90 0x76 0xfa 0x0e 0x80 0x77
0xc5 0x23 0x90 0x78 0xd9 0xf0 0x80 0x79 0xa5 0x05 0x90 0x7a 0xb9
0xd2 0x80 0x7b 0x84 0xe7 0x90 0x7c 0xa2 0xef 0x00 0x7d 0x6e 0x04
0x10 0x7e 0x82 0xd1 0x00 0x7f 0x4d 0xe6 0x10 0x01 0x02 0x01 0x03
0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05
0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04
0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05
0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04
0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05
0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04
0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x05 0x04 0x00 0x00 0x15
0x18 0x00 0x00 0x00 0x00 0x1c 0x20 0x00 0x05 0x00 0x00 0x2a 0x30
0x01 0x05 0x00 0x00 0x1c 0x20 0x00 0x0a 0x00 0x00 0x1c 0x20 0x01
0x0e 0x00 0x00 0x0e 0x10 0x00 0x01 0x53 0x57 0x41 0x54 0x00 0x53
0x41 0x53 0x54 0x00 0x43 0x41 0x54 0x00 0x57 0x41 0x53 0x54 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x54
0x5a 0x69 0x66 0x32 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x07 0x00 0x00 0x00
0x07 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x5d 0x00 0x00 0x00 0x07
0x00 0x00 0x00 0x17 0xff 0xff 0xff 0xff 0x6d 0x7b 0x4b 0x78 0xff
0xff 0xff 0xff 0x82 0x46 0xcf 0x68 0xff 0xff 0xff 0xff 0xcc 0xae
0x8c 0x80 0xff 0xff 0xff 0xff 0xcd 0x9e 0x6f 0x70 0x00 0x00 0x00
0x00 0x26 0x06 0xa7 0xe0 0x00 0x00 0x00 0x00 0x2d 0x9d 0xea 0xe0
0x00 0x00 0x00 0x00 0x2e 0x69 0x1c 0x10 0x00 0x00 0x00 0x00 0x2f
0x7d 0xe9 0x00 0x00 0x00 0x00 0x00 0x30 0x48 0xfe 0x10 0x00 0x00
0x00 0x00 0x31 0x67 0x05 0x80 0x00 0x00 0x00 0x00 0x32 0x28 0xe0
0x10 0x00 0x00 0x00 0x00 0x33 0x46 0xe7 0x80 0x00 0x00 0x00 0x00
0x34 0x11 0xfc 0x90 0x00 0x00 0x00 0x00 0x35 0x26 0xc9 0x80 0x00
0x00 0x00 0x00 0x35 0xf1 0xde 0x90 0x00 0x00 0x00 0x00 0x37 0x06
0xab 0x80 0x00 0x00 0x00 0x00 0x37 0xd1 0xc0 0x90 0x00 0x00 0x00
0x00 0x38 0xe6 0x8d 0x80 0x00 0x00 0x00 0x00 0x39 0xb1 0xa2 0x90
0x00 0x00 0x00 0x00 0x3a 0xc6 0x6f 0x80 0x00 0x00 0x00 0x00 0x3b
0x91 0x84 0x90 0x00 0x00 0x00 0x00 0x3c 0xaf 0x8c 0x00 0x00 0x00
0x00 0x00 0x3d 0x71 0x66 0x90 0x00 0x00 0x00 0x00 0x3e 0x8f 0x6e
0x00 0x00 0x00 0x00 0x00 0x3f 0x5a 0x83 0x10 0x00 0x00 0x00 0x00
0x40 0x6f 0x50 0x00 0x00 0x00 0x00 0x00 0x41 0x3a 0x65 0x10 0x00
0x00 0x00 0x00 0x42 0x4f 0x32 0x00 0x00 0x00 0x00 0x00 0x43 0x1a
0x47 0x10 0x00 0x00 0x00 0x00 0x44 0x2f 0x14 0x00 0x00 0x00 0x00
0x00 0x44 0xfa 0x29 0x10 0x00 0x00 0x00 0x00 0x46 0x0e 0xf6 0x00
0x00 0x00 0x00 0x00 0x46 0xda 0x0b 0x10 0x00 0x00 0x00 0x00 0x47
0xf8 0x12 0x80 0x00 0x00 0x00 0x00 0x48 0xc3 0x27 0x90 0x00 0x00
0x00 0x00 0x49 0xd7 0xf4 0x80 0x00 0x00 0x00 0x00 0x4a 0xa3 0x09
0x90 0x00 0x00 0x00 0x00 0x4b 0xb7 0xd6 0x80 0x00 0x00 0x00 0x00
0x4c 0x82 0xeb 0x90 0x00 0x00 0x00 0x00 0x4d 0x97 0xb8 0x80 0x00
0x00 0x00 0x00 0x4e 0x62 0xcd 0x90 0x00 0x00 0x00 0x00 0x4f 0x77
0x9a 0x80 0x00 0x00 0x00 0x00 0x50 0x42 0xaf 0x90 0x00 0x00 0x00
0x00 0x51 0x60 0xb7 0x00 0x00 0x00 0x00 0x00 0x52 0x22 0x91 0x90
0x00 0x00 0x00 0x00 0x53 0x40 0x99 0x00 0x00 0x00 0x00 0x00 0x54
0x0b 0xae 0x10 0x00 0x00 0x00 0x00 0x55 0x20 0x7b 0x00 0x00 0x00
0x00 0x00 0x55 0xeb 0x90 0x10 0x00 0x00 0x00 0x00 0x57 0x00 0x5d
0x00 0x00 0x00 0x00 0x00 0x57 0xcb 0x72 0x10 0x00 0x00 0x00 0x00
0x58 0xe0 0x3f 0x00 0x00 0x00 0x00 0x00 0x59 0xab 0x54 0x10 0x00
0x00 0x00 0x00 0x5a 0xc0 0x21 0x00 0x00 0x00 0x00 0x00 0x5b 0x8b
0x36 0x10 0x00 0x00 0x00 0x00 0x5c 0xa9 0x3d 0x80 0x00 0x00 0x00
0x00 0x5d 0x6b 0x18 0x10 0x00 0x00 0x00 0x00 0x5e 0x89 0x1f 0x80
0x00 0x00 0x00 0x00 0x5f 0x54 0x34 0x90 0x00 0x00 0x00 0x00 0x60
0x69 0x01 0x80 0x00 0x00 0x00 0x00 0x61 0x34 0x16 0x90 0x00 0x00
0x00 0x00 0x62 0x48 0xe3 0x80 0x00 0x00 0x00 0x00 0x63 0x13 0xf8
0x90 0x00 0x00 0x00 0x00 0x64 0x28 0xc5 0x80 0x00 0x00 0x00 0x00
0x64 0xf3 0xda 0x90 0x00 0x00 0x00 0x00 0x66 0x11 0xe2 0x00 0x00
0x00 0x00 0x00 0x66 0xd3 0xbc 0x90 0x00 0x00 0x00 0x00 0x67 0xf1
0xc4 0x00 0x00 0x00 0x00 0x00 0x68 0xbc 0xd9 0x10 0x00 0x00 0x00
0x00 0x69 0xd1 0xa6 0x00 0x00 0x00 0x00 0x00 0x6a 0x9c 0xbb 0x10
0x00 0x00 0x00 0x00 0x6b 0xb1 0x88 0x00 0x00 0x00 0x00 0x00 0x6c
0x7c 0x9d 0x10 0x00 0x00 0x00 0x00 0x6d 0x91 0x6a 0x00 0x00 0x00
0x00 0x00 0x6e 0x5c 0x7f 0x10 0x00 0x00 0x00 0x00 0x6f 0x71 0x4c
0x00 0x00 0x00 0x00 0x00 0x70 0x3c 0x61 0x10 0x00 0x00 0x00 0x00
0x71 0x5a 0x68 0x80 0x00 0x00 0x00 0x00 0x72 0x1c 0x43 0x10 0x00
0x00 0x00 0x00 0x73 0x3a 0x4a 0x80 0x00 0x00 0x00 0x00 0x74 0x05
0x5f 0x90 0x00 0x00 0x00 0x00 0x75 0x1a 0x2c 0x80 0x00 0x00 0x00
0x00 0x75 0xe5 0x41 0x90 0x00 0x00 0x00 0x00 0x76 0xfa 0x0e 0x80
0x00 0x00 0x00 0x00 0x77 0xc5 0x23 0x90 0x00 0x00 0x00 0x00 0x78
0xd9 0xf0 0x80 0x00 0x00 0x00 0x00 0x79 0xa5 0x05 0x90 0x00 0x00
0x00 0x00 0x7a 0xb9 0xd2 0x80 0x00 0x00 0x00 0x00 0x7b 0x84 0xe7
0x90 0x00 0x00 0x00 0x00 0x7c 0xa2 0xef 0x00 0x00 0x00 0x00 0x00
0x7d 0x6e 0x04 0x10 0x00 0x00 0x00 0x00 0x7e 0x82 0xd1 0x00 0x00
0x00 0x00 0x00 0x7f 0x4d 0xe6 0x10 0x01 0x02 0x03 0x02 0x04 0x06
0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05
0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06
0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05
0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06
0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05
0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06
0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x06 0x05 0x00 0x00 0x10 0x08
0x00 0x00 0x00 0x00 0x15 0x18 0x00 0x04 0x00 0x00 0x1c 0x20 0x00
0x09 0x00 0x00 0x2a 0x30 0x01 0x09 0x00 0x00 0x1c 0x20 0x00 0x0e
0x00 0x00 0x1c 0x20 0x01 0x12 0x00 0x00 0x0e 0x10 0x00 0x05 0x4c
0x4d 0x54 0x00 0x53 0x57 0x41 0x54 0x00 0x53 0x41 0x53 0x54 0x00
0x43 0x41 0x54 0x00 0x57 0x41 0x53 0x54 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0a 0x57 0x41
0x54 0x2d 0x31 0x57 0x41 0x53 0x54 0x2c 0x4d 0x39 0x2e 0x31 0x2e
0x30 0x2c 0x4d 0x34 0x2e 0x31 0x2e 0x30 0x0a
}]
close $f
set ::tcl::clock::ZoneinfoPaths \
[linsert $::tcl::clock::ZoneinfoPaths 0 $tzdir]
::tcl::clock::ClearCaches
}
-body {
clock format 1326054606 -timezone :Test/Windhoek
}
-cleanup {
set ::tcl::clock::ZoneinfoPaths \
[lrange $::tcl::clock::ZoneinfoPaths 1 end]
::tcl::clock::ClearCaches
removeFile Windhoek $tzdir2
removeDirectory Test $tzdir
removeDirectory zoneinfo
}
-result {Sun Jan 08 22:30:06 WAST 2012}
}
test clock-57.1 {clock scan - abbreviated options} {
clock scan 1970-01-01 -f %Y-%m-%d -g true
} 0
+52 -3
View File
@@ -222,9 +222,7 @@ test dict-9.2 {dict exists command} {dict exists {a b} b} 0
test dict-9.3 {dict exists command} {dict exists {a {b c}} a b} 1
test dict-9.4 {dict exists command} {dict exists {a {b c}} a c} 0
test dict-9.5 {dict exists command} {dict exists {a {b c}} b c} 0
test dict-9.6 {dict exists command} {
list [catch {dict exists {a {b c d}} a c} msg] $msg
} {1 {missing value to go with key}}
test dict-9.6 {dict exists command} {dict exists {a {b c d}} a c} 0
test dict-9.7 {dict exists command} {
list [catch {dict exists} msg] $msg
} {1 {wrong # args: should be "dict exists dictionary key ?key ...?"}}
@@ -1196,6 +1194,57 @@ test dict-22.11 {dict with command: no recursive structures [Bug 1786481]} {
string range [append foo OK] end-1 end
} OK
proc linenumber {} {
dict get [info frame -1] line
}
test dict-23.1 {dict compilation crash: Bug 3487626} {
apply {n {
set e {}
set k {}
dict for {a b} {c {d {e {f g}}}} {
::tcl::dict::for {h i} $b {
dict update i e j {
::tcl::dict::update j f k {
return [expr {$n - [linenumber]}]
}
}
}
}
}} [linenumber]
} 5
test dict-23.2 {dict compilation crash: Bug 3487626} knownBug {
# Something isn't quite right in line number and continuation line
# tracking; at time of writing, this test produces 7, not 5, which
# indicates that the extra newlines in the non-script argument are
# confusing things.
apply {n {
set e {}
set k {}
dict for {a {
b
}} {c {d {e {f g}}}} {
::tcl::dict::for {h {
i
}} ${
b
} {
dict update {
i
} e {
j
} {
::tcl::dict::update {
j
} f k {
return [expr {$n - [linenumber]}]
}
}
}
}
}} [linenumber]
} 5
rename linenumber {}
# cleanup
::tcltest::cleanupTests
return
+27 -6
View File
@@ -750,9 +750,20 @@ test fCmd-9.3 {file rename: comprehensive: file to new name} -setup {
file rename tf2 tf4
list [lsort [glob tf*]] [file writable tf3] [file writable tf4]
} -result {{tf3 tf4} 1 0}
test fCmd-9.4 {file rename: comprehensive: dir to new name} -setup {
test fCmd-9.4.a {file rename: comprehensive: dir to new name} -setup {
cleanup
} -constraints {unixOrPc notRoot testchmod notDarwin9 win2000orXP} -body {
} -constraints {testchmod win2000orXP} -body {
file mkdir td1 td2
testchmod 555 td2
file rename td1 td3
file rename td2 td4
list [lsort [glob td*]] [file writable td3] [file writable td4]
} -cleanup {
cleanup
} -result {{td3 td4} 1 0}
test fCmd-9.4.b {file rename: comprehensive: dir to new name} -setup {
cleanup
} -constraints {unix notRoot testchmod notDarwin9} -body {
file mkdir td1 td2
testchmod 555 td2
file rename td1 td3
@@ -770,9 +781,19 @@ test fCmd-9.5 {file rename: comprehensive: file to self} {notRoot testchmod} {
file rename -force tf2 tf2
list [contents tf1] [contents tf2] [file writable tf1] [file writable tf2]
} {tf1 tf2 1 0}
test fCmd-9.6 {file rename: comprehensive: dir to self} -setup {
test fCmd-9.6.a {file rename: comprehensive: dir to self} -setup {
cleanup
} -constraints {notRoot unixOrPc testchmod win2000orXP} -body {
} -constraints {testchmod win2000orXP} -body {
file mkdir td1
file mkdir td2
testchmod 555 td2
file rename -force td1 .
file rename -force td2 .
list [lsort [glob td*]] [file writable td1] [file writable td2]
} -result {{td1 td2} 1 0}
test fCmd-9.6.b {file rename: comprehensive: dir to self} -setup {
cleanup
} -constraints {notRoot unix testchmod} -body {
file mkdir td1
file mkdir td2
testchmod 555 td2
@@ -976,7 +997,7 @@ test fCmd-10.2 {file copy: comprehensive: file to new name} {notRoot testchmod}
} {{tf1 tf2 tf3 tf4} tf1 tf2 1 0}
test fCmd-10.3 {file copy: comprehensive: dir to new name} -setup {
cleanup
} -constraints {notRoot unixOrPc 95or98 testchmod} -body {
} -constraints {notRoot unix testchmod} -body {
file mkdir [file join td1 tdx]
file mkdir [file join td2 tdy]
testchmod 555 td2
@@ -1077,7 +1098,7 @@ test fCmd-10.7 {file rename: comprehensive: file to new name and dir} -setup {
} -result [subst {{tf1 tf2} {[file join td1 tf3] [file join td1 tf4]} 1 0}]
test fCmd-10.8 {file rename: comprehensive: dir to new name and dir} -setup {
cleanup
} -constraints {notRoot unixOrPc 95or98 testchmod} -body {
} -constraints {notRoot unix testchmod} -body {
file mkdir td1
file mkdir td2
file mkdir td3
+4
View File
@@ -1094,6 +1094,10 @@ test filesystem-9.9 {path objects and glob and file tail and tilde} {
set res
} {0 0 0 0 1}
test filesystem-10.1 {Bug 3414754} {
string match */ [file join [pwd] foo/]
} 0
cleanupTests
unset -nocomplain drive
}
+6 -6
View File
@@ -483,17 +483,17 @@ test http-5.1 {http::formatQuery} {
# test http-5.2 obsoleted by 5.4 and 5.5 with http 2.5
test http-5.3 {http::formatQuery} {
http::formatQuery lines "line1\nline2\nline3"
} {lines=line1%0d%0aline2%0d%0aline3}
} {lines=line1%0D%0Aline2%0D%0Aline3}
test http-5.4 {http::formatQuery} {
http::formatQuery name1 ~bwelch name2 \xa1\xa2\xa2
} {name1=~bwelch&name2=%c2%a1%c2%a2%c2%a2}
} {name1=~bwelch&name2=%C2%A1%C2%A2%C2%A2}
test http-5.5 {http::formatQuery} {
set enc [http::config -urlencoding]
http::config -urlencoding iso8859-1
set res [http::formatQuery name1 ~bwelch name2 \xa1\xa2\xa2]
http::config -urlencoding $enc
set res
} {name1=~bwelch&name2=%a1%a2%a2}
} {name1=~bwelch&name2=%A1%A2%A2}
test http-6.1 {http::ProxyRequired} {
http::config -proxyhost [info hostname] -proxyport $port
@@ -509,12 +509,12 @@ test http-6.1 {http::ProxyRequired} {
test http-7.1 {http::mapReply} {
http::mapReply "abc\$\[\]\"\\()\}\{"
} {abc%24%5b%5d%22%5c%28%29%7d%7b}
} {abc%24%5B%5D%22%5C%28%29%7D%7B}
test http-7.2 {http::mapReply} {
# RFC 2718 specifies that we pass urlencoding on utf-8 chars by default,
# so make sure this gets converted to utf-8 then urlencoded.
http::mapReply "\u2208"
} {%e2%88%88}
} {%E2%88%88}
test http-7.3 {http::formatQuery} {
set enc [http::config -urlencoding]
# this would be reverting to http <=2.4 behavior
@@ -531,7 +531,7 @@ test http-7.4 {http::formatQuery} {
set res [http::mapReply "\u2208"]
http::config -urlencoding $enc
set res
} {%3f}
} {%3F}
# cleanup
catch {unset url}
+1 -1
View File
@@ -11,7 +11,7 @@
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
if {[lsearch [namespace children] ::tcltest] == -1} {
package require tcltest 2.3.3
package require tcltest 2.3.4
namespace import -force ::tcltest::*
}
+1 -1
View File
@@ -12,7 +12,7 @@
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
if {[lsearch [namespace children] ::tcltest] == -1} {
package require tcltest 2.3.3
package require tcltest 2.3.4
namespace import -force ::tcltest::*
}
+33 -30
View File
@@ -174,14 +174,32 @@ namespace eval RETest {
return $ret
}
# Share the generation of the list of test constraints so it is
# done the same on all routes.
proc TestConstraints {flags} {
set constraints [list testregexp]
variable regBug
if {$regBug} {
# This will trigger registration as a skipped test
lappend constraints knownBug
}
# Tcl locale stuff doesn't do the ch/xy test fakery yet
if {[string match *+* $flags]} {
# This will trigger registration as a skipped test
lappend constraints localeRegexp
}
return $constraints
}
# match expected, internal routine that does the work
# parameters like the "real" routines except they don't have "opts",
# which is a possibly-empty list of switches for the regexp match attempt
# The ! flag is used to indicate expected match failure (for REG_EXPECT,
# which wants argument testing even in the event of failure).
proc MatchExpected {opts testid flags re target args} {
variable regBug
# if &, test as both BRE and ARE
if {[string match *&* $flags]} {
set f [string map {& {}} $flags]
@@ -190,18 +208,7 @@ namespace eval RETest {
return
}
set constraints [list testregexp]
if {$regBug} {
# This will register as a skipped test
lappend constraints knownBug
}
# Tcl locale stuff doesn't do the ch/xy test fakery yet
if {[string match *+* $flags]} {
# This will register as a skipped test
lappend constraints localeRegexp
}
set constraints [TestConstraints $flags]
set f [TestFlags $flags]
set infoflags [TestInfoFlags $flags]
@@ -252,13 +259,7 @@ namespace eval RETest {
return
}
set constraints [list testregexp]
# Tcl locale stuff doesn't do the ch/xy test fakery yet
if {[string match *+* $flags]} {
# This will register as a skipped test
lappend constraints localeRegexp
}
set constraints [TestConstraints $flags]
set cmd [list testregexp -about {*}[TestFlags $flags] $re]
::tcltest::test [TestNum $testid error] [TestDesc $testid error] \
@@ -268,6 +269,7 @@ namespace eval RETest {
# match failure expected
proc expectNomatch {testid flags re target args} {
variable regBug
# if &, test as both ARE and BRE
if {[string match *&* $flags]} {
set f [string map {& {}} $flags]
@@ -276,13 +278,7 @@ namespace eval RETest {
return
}
set constraints [list testregexp]
# Tcl locale stuff doesn't do the ch/xy test fakery yet
if {[string match *+* $flags]} {
# This will register as a skipped test
lappend constraints localeRegexp
}
set constraints [TestConstraints $flags]
set f [TestFlags $flags]
set infoflags [TestInfoFlags $flags]
@@ -331,7 +327,7 @@ namespace eval RETest {
}
}
namespace import RETest::*
######## the tests themselves ########
# support functions and preliminary misc.
@@ -660,6 +656,9 @@ expectMatch 14.17 RP {a([bc])(\1*)} ab ab b ""
expectError 14.18 - {a((b)\1)} ESUBREG
expectError 14.19 - {a(b)c\2} ESUBREG
expectMatch 14.20 bR {a\(b*\)c\1} abbcbb abbcbb bb
expectMatch 14.21 RP {^([bc])\1*$} bbb bbb b
expectMatch 14.22 RP {^([bc])\1*$} ccc ccc c
knownBug expectNomatch 14.23 R {^([bc])\1*$} bcb
doing 15 "octal escapes vs back references"
@@ -1069,7 +1068,11 @@ test reg-33.13 {Bug 1810264 - infinite loop} {
test reg-33.14 {Bug 1810264 - super-expensive expression} nonPortable {
regexp {(x{200}){200}$y} {x}
} 0
# cleanup
::tcltest::cleanupTests
return
# Local Variables:
# mode: tcl
# End:
+13
View File
@@ -107,6 +107,19 @@ test source-2.6 {source error conditions} -setup {
} -match listGlob -result [list 1 \
{couldn't read file "*_non_existent_": no such file or directory} \
{POSIX ENOENT {no such file or directory}}]
test source-2.7 {utf-8 with BOM} -setup {
set sourcefile [makeFile {} source.file]
} -body {
set out [open $sourcefile w]
fconfigure $out -encoding utf-8
puts $out "\ufeffset y new-y"
close $out
set y old-y
source -encoding utf-8 $sourcefile
return $y
} -cleanup {
removeFile $sourcefile
} -result {new-y}
test source-3.1 {return in middle of source file} -setup {
set sourcefile [makeFile {
+48 -35
View File
@@ -18,6 +18,7 @@ if {[lsearch [namespace children] ::tcltest] == -1} {
}
testConstraint testobj [llength [info commands testobj]]
testConstraint testdstring [llength [info commands testdstring]]
test stringObj-1.1 {string type registration} testobj {
set t [testobj types]
@@ -158,7 +159,7 @@ test stringObj-6.8 {Tcl_AppendStringsToObj procedure, object totally empty} test
teststringobj appendstrings 1 {}
list [teststringobj length2 1] [teststringobj get 1]
} {0 {}}
test stringObj-6.9 {Tcl_AppendStringToObj, pure unicode} {
test stringObj-6.9 {Tcl_AppendStringToObj, pure unicode} testobj {
testobj freeallvars
teststringobj set2 1 [string replace abc 1 1 d]
teststringobj appendstrings 1 foo bar soom
@@ -229,13 +230,15 @@ test stringObj-8.5 {DupUnicodeInternalRep, all byte-size chars} testobj {
[set y] [testobj objtype $x] [testobj objtype $y]
} {string string abcdefghijkl abcdefghi string string}
test stringObj-9.1 {TclAppendObjToObj, mixed src & dest} testobj {
set x abcï¿®ghi
set y ®¿ï
test stringObj-9.1 {TclAppendObjToObj, mixed src & dest} {testobj testdstring} {
set x abc\u00ef\u00bf\u00aeghi
testdstring free
testdstring append \u00ae\u00bf\u00ef -1
set y [testdstring get]
string length $x
list [testobj objtype $x] [testobj objtype $y] [append x $y] \
[set y] [testobj objtype $x] [testobj objtype $y]
} {string none abcï¿®ghi®¿ï ®¿ï string none}
[set y] [testobj objtype $x] [testobj objtype $y]
} "string none abc\u00ef\u00bf\u00aeghi\u00ae\u00bf\u00ef \u00ae\u00bf\u00ef string none"
test stringObj-9.2 {TclAppendObjToObj, mixed src & dest} testobj {
set x abcï¿®ghi
string length $x
@@ -244,19 +247,23 @@ test stringObj-9.2 {TclAppendObjToObj, mixed src & dest} testobj {
} {string abcï¿®ghiabcï¿®ghi string\
abcï¿®ghiabcï¿®ghiabcï¿®ghiabcï¿®ghi\
string}
test stringObj-9.3 {TclAppendObjToObj, mixed src & 1-byte dest} testobj {
test stringObj-9.3 {TclAppendObjToObj, mixed src & 1-byte dest} {testobj testdstring} {
set x abcdefghi
set y ®¿ï
testdstring free
testdstring append \u00ae\u00bf\u00ef -1
set y [testdstring get]
string length $x
list [testobj objtype $x] [testobj objtype $y] [append x $y] \
[set y] [testobj objtype $x] [testobj objtype $y]
} {string none abcdefghi®¿ï ®¿ï string none}
test stringObj-9.4 {TclAppendObjToObj, 1-byte src & dest} testobj {
[set y] [testobj objtype $x] [testobj objtype $y]
} "string none abcdefghi\u00ae\u00bf\u00ef \u00ae\u00bf\u00ef string none"
test stringObj-9.4 {TclAppendObjToObj, 1-byte src & dest} {testobj testdstring} {
set x abcdefghi
set y jkl
testdstring free
testdstring append jkl -1
set y [testdstring get]
string length $x
list [testobj objtype $x] [testobj objtype $y] [append x $y] \
[set y] [testobj objtype $x] [testobj objtype $y]
[set y] [testobj objtype $x] [testobj objtype $y]
} {string none abcdefghijkl jkl string none}
test stringObj-9.5 {TclAppendObjToObj, 1-byte src & dest} testobj {
set x abcdefghi
@@ -265,13 +272,15 @@ test stringObj-9.5 {TclAppendObjToObj, 1-byte src & dest} testobj {
[append x $x] [testobj objtype $x]
} {string abcdefghiabcdefghi string abcdefghiabcdefghiabcdefghiabcdefghi\
string}
test stringObj-9.6 {TclAppendObjToObj, 1-byte src & mixed dest} testobj {
set x abcï¿®ghi
set y jkl
test stringObj-9.6 {TclAppendObjToObj, 1-byte src & mixed dest} {testobj testdstring} {
set x abc\u00ef\u00bf\u00aeghi
testdstring free
testdstring append jkl -1
set y [testdstring get]
string length $x
list [testobj objtype $x] [testobj objtype $y] [append x $y] \
[set y] [testobj objtype $x] [testobj objtype $y]
} {string none abcï¿®ghijkl jkl string none}
[set y] [testobj objtype $x] [testobj objtype $y]
} "string none abc\u00ef\u00bf\u00aeghijkl jkl string none"
test stringObj-9.7 {TclAppendObjToObj, integer src & dest} testobj {
set x [expr {4 * 5}]
set y [expr {4 + 5}]
@@ -316,20 +325,24 @@ test stringObj-9.11 {TclAppendObjToObj, mixed src & 1-byte dest index check} tes
set q
} {a b c d e f a ü b å c ï}
test stringObj-10.1 {Tcl_GetRange with all byte-size chars} testobj {
set x "abcdef"
test stringObj-10.1 {Tcl_GetRange with all byte-size chars} {testobj testdstring} {
testdstring free
testdstring append abcdef -1
set x [testdstring get]
list [testobj objtype $x] [set y [string range $x 1 end-1]] \
[testobj objtype $x] [testobj objtype $y]
[testobj objtype $x] [testobj objtype $y]
} [list none bcde string string]
test stringObj-10.2 {Tcl_GetRange with some mixed width chars} testobj {
test stringObj-10.2 {Tcl_GetRange with some mixed width chars} {testobj testdstring} {
# Because this test does not use \uXXXX notation below instead of
# hardcoding the values, it may fail in multibyte locales. However,
# we need to test that the parser produces untyped objects even when there
# are high-ASCII characters in the input (like "ï"). I don't know what
# hardcoding the values, it may fail in multibyte locales. However, we
# need to test that the parser produces untyped objects even when there
# are high-ASCII characters in the input (like "ï"). I don't know what
# else to do but inline those characters here.
set x "abcïïdef"
testdstring free
testdstring append "abc\u00ef\u00efdef" -1
set x [testdstring get]
list [testobj objtype $x] [set y [string range $x 1 end-1]] \
[testobj objtype $x] [testobj objtype $y]
[testobj objtype $x] [testobj objtype $y]
} [list none "bc\u00EF\u00EFde" string string]
test stringObj-10.3 {Tcl_GetRange with some mixed width chars} testobj {
# set x "abcïïdef"
@@ -432,35 +445,35 @@ test stringObj-14.1 {Tcl_SetObjLength on pure unicode object} testobj {
teststringobj get 1
} {bar}
test stringObj-15.1 {Tcl_Append*ToObj: self appends} {
test stringObj-15.1 {Tcl_Append*ToObj: self appends} testobj {
teststringobj set 1 foo
teststringobj appendself 1 0
} foofoo
test stringObj-15.2 {Tcl_Append*ToObj: self appends} {
test stringObj-15.2 {Tcl_Append*ToObj: self appends} testobj {
teststringobj set 1 foo
teststringobj appendself 1 1
} foooo
test stringObj-15.3 {Tcl_Append*ToObj: self appends} {
test stringObj-15.3 {Tcl_Append*ToObj: self appends} testobj {
teststringobj set 1 foo
teststringobj appendself 1 2
} fooo
test stringObj-15.4 {Tcl_Append*ToObj: self appends} {
test stringObj-15.4 {Tcl_Append*ToObj: self appends} testobj {
teststringobj set 1 foo
teststringobj appendself 1 3
} foo
test stringObj-15.5 {Tcl_Append*ToObj: self appends} {
test stringObj-15.5 {Tcl_Append*ToObj: self appends} testobj {
teststringobj set 1 foo
teststringobj appendself2 1 0
} foofoo
test stringObj-15.6 {Tcl_Append*ToObj: self appends} {
test stringObj-15.6 {Tcl_Append*ToObj: self appends} testobj {
teststringobj set 1 foo
teststringobj appendself2 1 1
} foooo
test stringObj-15.7 {Tcl_Append*ToObj: self appends} {
test stringObj-15.7 {Tcl_Append*ToObj: self appends} testobj {
teststringobj set 1 foo
teststringobj appendself2 1 2
} fooo
test stringObj-15.8 {Tcl_Append*ToObj: self appends} {
test stringObj-15.8 {Tcl_Append*ToObj: self appends} testobj {
teststringobj set 1 foo
teststringobj appendself2 1 3
} foo
+61
View File
@@ -2558,8 +2558,69 @@ set base {
}
runbase {{- *} {-* *} {- *} {- *}} $base
test trace-39 {bug #3484621: tracing Bc'ed commands} -setup {
set ::traceLog 0
set ::traceCalls 0
set ::bar [list 0 1 2 3]
set res {}
proc dotrace args {
incr ::traceLog
}
proc foo {} {
incr ::traceCalls
# choose a BC'ed command that is 'unlikely' to interfere with tcltest's
# internals
lset ::bar 1 2
}
} -body {
foo
lappend res $::traceLog
trace add execution lset enter dotrace
foo
lappend res $::traceLog
trace remove execution lset enter dotrace
foo
lappend res $::traceLog
list $::traceCalls | {*}$res
} -cleanup {
unset ::traceLog ::traceCalls ::bar res
rename dotrace {}
rename foo {}
} -result {3 | 0 1 1}
test trace-39.1 {bug #3485022: tracing Bc'ed commands} -setup {
set ::traceLog 0
set ::traceCalls 0
set res {}
proc dotrace args {
incr ::traceLog
}
proc foo {} {
incr ::traceCalls
string equal zip zap
}
} -body {
foo
lappend res $::traceLog
trace add execution ::tcl::string::equal enter dotrace
foo
lappend res $::traceLog
trace remove execution tcl::string::equal enter dotrace
foo
lappend res $::traceLog
list $::traceCalls | {*}$res
} -cleanup {
unset ::traceLog ::traceCalls res
rename dotrace {}
rename foo {}
} -result {3 | 0 1 1}
# Delete procedures when done, so we don't clash with other tests
# (e.g. foobar will clash with 'unknown' tests).
catch {rename foobar {}}
+48 -5
View File
@@ -27,9 +27,12 @@ test utf-1.3 {Tcl_UniCharToUtf: 2 byte sequences} {
test utf-1.4 {Tcl_UniCharToUtf: 3 byte sequences} {
set x "\u4e4e"
} [bytestring "\xe4\xb9\x8e"]
test utf-1.5 {Tcl_UniCharToUtf: negative Tcl_UniChar} {
string length [format %c -1]
} 1
test utf-1.5 {Tcl_UniCharToUtf: overflowed Tcl_UniChar} {
format %c 0x110000
} [bytestring "\xef\xbf\xbd"]
test utf-1.6 {Tcl_UniCharToUtf: negative Tcl_UniChar} {
format %c -1
} [bytestring "\xef\xbf\xbd"]
test utf-2.1 {Tcl_UtfToUniChar: low ascii} {
string length "abc"
@@ -244,8 +247,8 @@ test utf-16.1 {Tcl_UniCharToLower, negative delta} {
string tolower aA
} aa
test utf-16.2 {Tcl_UniCharToLower, positive delta} {
string tolower \u0178\u00ff\uA78D
} \u00ff\u00ff\u0265
string tolower \u0178\u00ff\uA78D\u01c5
} \u00ff\u00ff\u0265\u01c6
test utf-17.1 {Tcl_UniCharToLower, no delta} {
string tolower !
@@ -282,6 +285,46 @@ test utf-21.2 {unicode alnum char in regc_locale.c} {
# this returns 1 with Unicode 6 compliance
list [regexp {^[[:alnum:]]+$} \u1040\u021f\u0220] [regexp {^\w+$} \u1040\u021f\u0220]
} {1 1}
test utf-21.3 {unicode print char in regc_locale.c} {
# this returns 1 with Unicode 6 compliance
regexp {^[[:print:]]+$} \ufbc1
} 1
test utf-21.4 {TclUniCharIsGraph} {
# [Bug 3464428]
string is graph \u0120
} {1}
test utf-21.5 {unicode graph char in regc_locale.c} {
# [Bug 3464428]
regexp {^[[:graph:]]+$} \u0120
} {1}
test utf-21.6 {TclUniCharIsGraph} {
# [Bug 3464428]
string is graph \u00a0
} {0}
test utf-21.7 {unicode graph char in regc_locale.c} {
# [Bug 3464428]
regexp {[[:graph:]]} \u0020\u00a0\u2028\u2029
} {0}
test utf-21.8 {TclUniCharIsPrint} {
# [Bug 3464428]
string is print \u0009
} {0}
test utf-21.9 {unicode print char in regc_locale.c} {
# [Bug 3464428]
regexp {[[:print:]]} \u0009
} {0}
test utf-21.10 {unicode print char in regc_locale.c} {
# [Bug 3464428]
regexp {[[:print:]]} \u0009
} {0}
test utf-21.11 {TclUniCharIsControl} {
# [Bug 3464428]
string is control \u00ad
} {1}
test utf-21.12 {unicode control char in regc_locale.c} {
# [Bug 3464428]
regexp {^[[:cntrl:]]$} \u00ad
} {1}
test utf-22.1 {TclUniCharIsWordChar} {
string wordend "xyz123_bar fg" 0
+127 -7
View File
@@ -14,6 +14,7 @@ if {[lsearch [namespace children] ::tcltest] == -1} {
testConstraint testdstring [llength [info commands testdstring]]
testConstraint testconcatobj [llength [info commands testconcatobj]]
testConstraint testdoubledigits [llength [info commands testdoubledigits]]
# Big test for correct ordering of data in [expr]
@@ -1142,538 +1143,624 @@ test util-11.23 {Tcl_PrintDouble - scaling} {
expr 1.1e17
} {1.1e+17}
test util-12.1 {Tcl_DoubleDigits - Inf} ieeeFloatingPoint {
test util-12.1 {Tcl_DoubleDigits - Inf} {testdoubledigits ieeeFloatingPoint} {
testdoubledigits Inf -1 shortest
} {Infinity 9999 +}
test util-12.2 {Tcl_DoubleDigits - -Inf} ieeeFloatingPoint {
test util-12.2 {Tcl_DoubleDigits - -Inf} {testdoubledigits ieeeFloatingPoint} {
testdoubledigits -Inf -1 shortest
} {Infinity 9999 -}
test util-12.3 {Tcl_DoubleDigits - NaN} ieeeFloatingPoint {
test util-12.3 {Tcl_DoubleDigits - NaN} {testdoubledigits ieeeFloatingPoint} {
testdoubledigits $ieeeValues(NaN) -1 shortest
} {NaN 9999 +}
test util-12.4 {Tcl_DoubleDigits - NaN} ieeeFloatingPoint {
test util-12.4 {Tcl_DoubleDigits - NaN} {testdoubledigits ieeeFloatingPoint} {
testdoubledigits -NaN -1 shortest
} {NaN 9999 -}
test util-12.5 {Tcl_DoubleDigits - 0} {
test util-12.5 {Tcl_DoubleDigits - 0} testdoubledigits {
testdoubledigits 0.0 -1 shortest
} {0 0 +}
test util-12.6 {Tcl_DoubleDigits - -0} {
test util-12.6 {Tcl_DoubleDigits - -0} testdoubledigits {
testdoubledigits -0.0 -1 shortest
} {0 0 -}
# Verdonk test vectors
test util-13.1 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1754e31cd072da E+1008 +4_000000000000000000& E+303
}
-result {}
}
test util-13.2 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1afcef51f0fb5f E+265 -1_000000000000000000& E+80
}
-result {}
}
test util-13.3 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1754e31cd072da E+1006 +1_000000000000000000& E+303
}
-result {}
}
test util-13.4 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1754e31cd072da E+1007 -2_000000000000000000& E+303
}
-result {}
}
test util-13.5 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1e07b27dd78b14 E-848 +1_00000000000000000& E-255
}
-result {}
}
test util-13.6 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1e29e9c56687fe E-709 -7_00000000000000000& E-214
}
-result {}
}
test util-13.7 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1be03d0bf225c7 E-137 +1_00000000000000000& E-41
}
-result {}
}
test util-13.8 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1a2fe76a3f9475 E-499 -1_00000000000000000& E-150
}
-result {}
}
test util-13.9 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 19a2028368022e E+1019 +8_999999999999999999& E+306
}
-result {}
}
test util-13.10 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1317e5ef3ab327 E+509 -1_999999999999999999& E+153
}
-result {}
}
test util-13.11 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1317e5ef3ab327 E+510 +3_99999999999999999& E+153
}
-result {}
}
test util-13.12 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1317e5ef3ab327 E+511 -7_99999999999999999& E+153
}
-result {}
}
test util-13.13 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1eb8e84fa0b278 E-1008 +6_999999999999999999& E-304
}
-result {}
}
test util-13.14 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -13339131c46f8b E-1004 -6_999999999999999999& E-303
}
-result {}
}
test util-13.15 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1c0f92a6276c9d E-162 +2_999999999999999999& E-49
}
-result {}
}
test util-13.16 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -15ce1f143d7ad2 E-443 -5_99999999999999999& E-134
}
-result {}
}
test util-13.17 {just over exact - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1c0794d9d40e96 E-301 +43_000000000000000000& E-92
}
-result {}
}
test util-13.18 {just over exact - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1c0794d9d40e96 E-300 -86_000000000000000000& E-92
}
-result {}
}
test util-13.19 {just over exact - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1cd5bee57763e6 E-241 +51_000000000000000000& E-74
}
-result {}
}
test util-13.20 {just under exact - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1d1c26db7d0dae E+651 +16_999999999999999999& E+195
}
-result {}
}
test util-13.21 {just under exact - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -13f7ced916872b E-5 -38_999999999999999999& E-3
}
-result {}
}
test util-13.22 {just over exact - 3 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 17d93193f78fc6 E+588 +151_0000000000000000000& E+175
}
-result {}
}
test util-13.23 {just over exact - 3 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1a82a1631eeb30 E-625 -119_000000000000000000& E-190
}
-result {}
}
test util-13.24 {just under exact - 3 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -16c309024bab4b E+290 -282_999999999999999999& E+85
}
-result {}
}
test util-13.25 {just over exact - 8 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1dbbac6f83a821 E-800 +27869147_0000000000000000000& E-248
}
-result {}
}
test util-13.26 {just under exact - 9 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1c569e968e0944 E+430 -491080653_9999999999999999999& E+121
}
-result {}
}
test util-13.27 {just under exact - 9 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1c569e968e0944 E+429 +245540326_9999999999999999999& E+121
}
-result {}
}
test util-13.28 {just over exact - 10 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1fc575867314ee E-330 -9078555839_0000000000000000000& E-109
}
-result {}
}
test util-13.29 {just under exact - 10 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1c569e968e0944 E+428 -1227701634_9999999999999999999& E+120
}
-result {}
}
test util-13.30 {just over exact - 11 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1fc575867314ee E-329 +18157111678_0000000000000000000& E-109
}
-result {}
}
test util-13.31 {just over exact - 14 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -18bf7e7fa6f02a E-196 -15400733123779_0000000000000000000& E-72
}
-result {}
}
test util-13.32 {just over exact - 17 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -13de005bd620df E+217 -26153245263757307_0000000000000000000& E+49
}
-result {}
}
test util-13.33 {just over exact - 18 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1f92bacb3cb40c E+718 +272104041512242479_0000000000000000000& E+199
}
-result {}
}
test util-13.34 {just over exact - 18 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1f92bacb3cb40c E+719 -544208083024484958_0000000000000000000& E+199
}
-result {}
}
test util-13.35 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 142dbf25096cf5 E+148 +4_500000000000000000& E+44
}
-result {}
}
test util-13.36 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1afcef51f0fb5f E+263 -2_500000000000000000& E+79
}
-result {}
}
test util-13.37 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 102498ea6df0c4 E+145 +4_500000000000000000& E+43
}
-result {}
}
test util-13.38 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1754e31cd072da E+1004 -2_500000000000000000& E+302
}
-result {}
}
test util-13.39 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 12deac01e2b4f7 E-557 +2_50000000000000000& E-168
}
-result {}
}
test util-13.40 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1b1df536c13eee E-307 -6_50000000000000000& E-93
}
-result {}
}
test util-13.41 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 10711fed5b19a4 E-154 +4_50000000000000000& E-47
}
-result {}
}
test util-13.42 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -148d67e8b1e00d E-151 -4_50000000000000000& E-46
}
-result {}
}
test util-13.43 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1c8c574c0c6be7 E+187 +3_49999999999999999& E+56
}
-result {}
}
test util-13.44 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1756183c147514 E+206 -1_49999999999999999& E+62
}
-result {}
}
test util-13.45 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 12ab469676c410 E+203 +1_49999999999999999& E+61
}
-result {}
}
test util-13.46 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1539684e774b48 E+246 -1_49999999999999999& E+74
}
-result {}
}
test util-13.47 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 12e5f5dfa4fe9d E-286 +9_499999999999999999& E-87
}
-result {}
}
test util-13.48 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1bdc2417bf7787 E-838 -9_499999999999999999& E-253
}
-result {}
}
test util-13.49 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1eb8e84fa0b278 E-1009 +3_499999999999999999& E-304
}
-result {}
}
test util-13.50 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1e3cbc9907fdc8 E-290 -9_499999999999999999& E-88
}
-result {}
}
test util-13.51 {just over half ulp - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 10ad836f269a17 E-324 +30_500000000000000000& E-99
}
-result {}
}
test util-13.52 {just over half ulp - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1b39ae1909c31b E-687 -26_500000000000000000& E-208
}
-result {}
}
test util-13.53 {just over half ulp - 3 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1b2ab18615fcc6 E-576 +686_500000000000000000& E-176
}
-result {}
}
test util-13.54 {just over half ulp - 3 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -13e1f90a573064 E-624 -178_500000000000000000& E-190
}
-result {}
}
test util-13.55 {just under half ulp - 3 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 16c309024bab4b E+289 +141_499999999999999999& E+85
}
-result {}
}
test util-13.56 {just under half ulp - 4 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -159bd3ad46e346 E+193 -1695_499999999999999999& E+55
}
-result {}
}
test util-13.57 {just under half ulp - 4 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1df4170f0fdecc E+124 +3981_499999999999999999& E+34
}
-result {}
}
test util-13.58 {just over half ulp - 6 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 17e1e0f1c7a4ac E+415 +126300_5000000000000000000& E+120
}
-result {}
}
test util-13.59 {just over half ulp - 6 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1dda592e398dd7 E+418 -126300_5000000000000000000& E+121
}
-result {}
}
test util-13.60 {just under half ulp - 7 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1e597c0b94b7ae E+453 -4411845_499999999999999999& E+130
}
-result {}
}
test util-13.61 {just under half ulp - 9 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1c569e968e0944 E+427 +613850817_4999999999999999999& E+120
}
-result {}
}
test util-13.62 {just under half ulp - 9 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1c569e968e0944 E+428 -122770163_49999999999999999999& E+121
}
-result {}
}
test util-13.63 {just over half ulp - 18 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 17ae0c186d8709 E+719 +408156062268363718_5000000000000000000& E+199
}
-result {}
}
test util-13.64 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 152d02c7e14af7 E+76 +1_0000000000000000& E+23
}
-result {}
}
test util-13.65 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -19d971e4fe8402 E+89 -1_0000000000000000& E+27
}
-result {}
}
test util-13.66 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 19d971e4fe8402 E+90 +2_0000000000000000& E+27
}
-result {}
}
test util-13.67 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -19d971e4fe8402 E+91 -4_0000000000000000& E+27
}
-result {}
}
test util-13.68 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 15798ee2308c3a E-27 +1_0000000000000000& E-8
}
-result {}
}
test util-13.69 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -15798ee2308c3a E-26 -2_0000000000000000& E-8
}
-result {}
}
test util-13.70 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 15798ee2308c3a E-25 +4_0000000000000000& E-8
}
-result {}
}
test util-13.71 {just over exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1ef2d0f5da7dd9 E-84 -1_0000000000000000& E-25
}
-result {}
}
test util-13.72 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1a784379d99db4 E+78 +4_9999999999999999& E+23
}
-result {}
}
test util-13.73 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1a784379d99db4 E+80 -1_9999999999999999& E+24
}
-result {}
}
test util-13.74 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 13da329b633647 E+81 +2_9999999999999999& E+24
}
-result {}
}
test util-13.75 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1cf389cd46047d E+85 -6_9999999999999999& E+25
}
-result {}
}
test util-13.76 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 19999999999999 E-3 +1_99999999999999999& E-1
}
-result {}
}
test util-13.77 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -13333333333333 E-2 -2_99999999999999999& E-1
}
-result {}
}
test util-13.78 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 16849b86a12b9b E-48 +4_99999999999999999& E-15
}
-result {}
}
test util-13.79 {just under exact - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -16849b86a12b9b E-46 -1_99999999999999999& E-14
}
-result {}
}
test util-13.80 {just over exact - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 17ccfc73126788 E-71 +63_00000000000000000& E-23
}
-result {}
}
test util-13.81 {just over exact - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1dc03b8fd7016a E-68 -63_00000000000000000& E-22
}
-result {}
}
test util-13.82 {just under exact - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 13f7ced916872b E-5 +38_999999999999999999& E-3
}
-result {}
}
test util-13.83 {just over exact - 3 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1b297cad9f70b6 E+97 +269_000000000000000000& E+27
}
-result {}
}
test util-13.84 {just over exact - 3 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1b297cad9f70b6 E+98 -538_00000000000000000& E+27
}
-result {}
}
test util-13.85 {just over exact - 3 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1cdc06b20ef183 E-82 +373_00000000000000000& E-27
}
-result {}
}
test util-13.86 {just over exact - 4 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1b297cad9f70b6 E+96 +1345_00000000000000000& E+26
}
@@ -1681,205 +1768,238 @@ test util-13.86 {just over exact - 4 digits} {*}{
}
# this one is not 4 digits, it is 3, and it is covered above.
test util-13.87 {just over exact - 4 digits} {*}{
-constraints knownBadTest
-constraints {testdoubledigits knownBadTest}
-body {
verdonk_test -1b297cad9f70b6 E+97 -2690_00000000000000000& E+26
}
-result {}
}
test util-13.88 {just over exact - 5 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -150a246ecd44f3 E-63 -14257_00000000000000000& E-23
}
-result {}
}
test util-13.89 {just under exact - 6 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -119b96f36ec68b E-19 -209900_999999999999999999& E-11
}
-result {}
}
test util-13.90 {just over exact - 11 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1c06d366394441 E-35 +50980203373_000000000000000000& E-21
}
-result {}
}
test util-13.91 {just under exact - 12 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1f58ac4db68c90 E+122 -104166211810_99999999999999999& E+26
}
-result {}
}
test util-13.92 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 19d971e4fe8402 E+87 +2_5000000000000000& E+26
}
-result {}
}
test util-13.93 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1dc74be914d16b E+81 -4_500000000000000& E+24
}
-result {}
}
test util-13.94 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 14adf4b7320335 E+84 +2_500000000000000& E+25
}
-result {}
}
test util-13.95 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1ae22487c1042b E+85 -6_5000000000000000& E+25
}
-result {}
}
test util-13.96 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 187fe49aab41e0 E-54 +8_5000000000000000& E-17
}
-result {}
}
test util-13.97 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1f5c05e4b23fd7 E-61 -8_5000000000000000& E-19
}
-result {}
}
test util-13.98 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1faa7ab552a552 E-42 +4_5000000000000000& E-13
}
-result {}
}
test util-13.99 {just over half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1b7cdfd9d7bdbb E-36 -2_5000000000000000& E-11
}
-result {}
}
test util-13.100 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 13da329b633647 E+80 +1_4999999999999999& E+24
}
-result {}
}
test util-13.101 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1cf389cd46047d E+84 -3_49999999999999999& E+25
}
-result {}
}
test util-13.102 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1f04ef12cb04cf E+85 +7_4999999999999999& E+25
}
-result {}
}
test util-13.103 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1f04ef12cb04cf E+86 -1_4999999999999999& E+26
}
-result {}
}
test util-13.104 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 13333333333333 E-3 +1_49999999999999999& E-1
}
-result {}
}
test util-13.105 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -107e1fe91b0b70 E-36 -1_49999999999999999& E-11
}
-result {}
}
test util-13.106 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 149da7e361ce4c E-33 +1_49999999999999999& E-10
}
-result {}
}
test util-13.107 {just under half ulp - 1 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -19c511dc3a41df E-30 -1_49999999999999999& E-9
}
-result {}
}
test util-13.108 {just over half ulp - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1aa83d74267822 E+93 -16_5000000000000000& E+27
}
-result {}
}
test util-13.109 {just over half ulp - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 18f1d5969453de E+89 +96_5000000000000000& E+25
}
-result {}
}
test util-13.110 {just over half ulp - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 11d9bd564dcda6 E-70 +94_50000000000000000& E-23
}
-result {}
}
test util-13.111 {just over half ulp - 2 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1a58973ecbede6 E-48 -58_50000000000000000& E-16
}
-result {}
}
test util-13.112 {just over half ulp - 3 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1b297cad9f70b6 E+95 +672_50000000000000000& E+26
}
-result {}
}
test util-13.113 {just over half ulp - 3 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -1b297cad9f70b6 E+96 -134_500000000000000000& E+27
}
-result {}
}
test util-13.114 {just over half ulp - 3 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1cdc06b20ef183 E-83 +186_50000000000000000& E-27
}
-result {}
}
test util-13.115 {just over half ulp - 3 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -136071dcae4565 E-47 -860_50000000000000000& E-17
}
-result {}
}
test util-13.116 {just over half ulp - 6 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1cb968d297dde8 E+99 +113788_50000000000000000& E+25
}
-result {}
}
test util-13.117 {just over half ulp - 6 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test -11f3e1839eeab1 E+103 -113788_50000000000000000& E+26
}
-result {}
}
test util-13.118 {just under half ulp - 9 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1e9cec176c96f8 E+117 +317903333_49999999999999999& E+27
}
-result {}
}
test util-13.119 {just over half ulp - 11 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1c06d366394441 E-36 +25490101686_500000000000000000& E-21
}
-result {}
}
test util-13.120 {just under half ulp - 11 digits} {*}{
-constraints testdoubledigits
-body {
verdonk_test 1f58ac4db68c90 E+121 +52083105905_49999999999999999& E+26
}
+1 -1
View File
@@ -5,7 +5,7 @@
# 1997/10 -- dl
#
# restart with tclsh \
exec tclsh8.0 "$0" "$@"
exec tclsh "$0" ${1+"$@"}
# Max string length
# (some C compiler have a 2048 chars limits (so 2047 real chars with
+1 -1
View File
@@ -12,7 +12,7 @@ item: Global
Log Pathname=%MAINDIR%\INSTALL.LOG
Message Font=MS Sans Serif
Font Size=8
Disk Label=tcl8.5.10
Disk Label=tcl8.5.11
Disk Filename=setup
Patch Flags=0000000000000001
Patch Threshold=85
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/sh
# The next line is executed by /bin/sh, but not tcl \
exec tclsh8.4 "$0" ${1+"$@"}
exec tclsh "$0" ${1+"$@"}
package require Tcl 8.5
+33 -6
View File
@@ -13,22 +13,36 @@ exec tclsh "$0" ${1+"$@"}
#
proc emitRange {first last} {
global ranges numranges chars numchars
global ranges numranges chars numchars extchars extranges
if {$first < ($last-1)} {
append ranges [format "{0x%04x, 0x%04x}, " \
if {!$extranges && ($first) > 0xffff} {
set extranges 1
set numranges 0
set ranges [string trimright $ranges " \n\r\t,"]
append ranges "\n#if TCL_UTF_MAX > 4\n ,"
}
append ranges [format "{0x%x, 0x%x}, " \
$first $last]
if {[incr numranges] % 4 == 0} {
set ranges [string trimright $ranges]
append ranges "\n "
}
} else {
append chars [format "0x%04x, " $first]
if {!$extchars && ($first) > 0xffff} {
set extchars 1
set numchars 0
set chars [string trimright $chars " \n\r\t,"]
append chars "\n#if TCL_UTF_MAX > 4\n ,"
}
append chars [format "0x%x, " $first]
incr numchars
if {$numchars % 9 == 0} {
set chars [string trimright $chars]
append chars "\n "
}
if {$first != $last} {
append chars [format "0x%04x, " $last]
append chars [format "0x%x, " $last]
incr numchars
if {$numchars % 9 == 0} {
append chars "\n "
@@ -38,7 +52,7 @@ proc emitRange {first last} {
}
proc genTable {type} {
global first last ranges numranges chars numchars
global first last ranges numranges chars numchars extchars extranges
set first -2
set last -2
@@ -46,8 +60,14 @@ proc genTable {type} {
set numranges 0
set chars " "
set numchars 0
set extchars 0
set extranges 0
for {set i 0} {$i <= 0xFFFF} {incr i} {
for {set i 0} {$i <= 0x10ffff} {incr i} {
if {$i == 0xd800} {
# Skip surrogates
set i 0xdc00
}
if {[string is $type [format %c $i]]} {
if {$i == ($last + 1)} {
set last $i
@@ -63,7 +83,13 @@ proc genTable {type} {
emitRange $first $last
set ranges [string trimright $ranges "\t\n ,"]
if {$extranges} {
append ranges "\n#endif"
}
set chars [string trimright $chars "\t\n ,"]
if {$extchars} {
append chars "\n#endif"
}
if {$ranges ne ""} {
puts "static const crange ${type}RangeTable\[\] = {\n$ranges\n};\n"
puts "#define NUM_[string toupper $type]_RANGE (sizeof(${type}RangeTable)/sizeof(crange))\n"
@@ -87,6 +113,7 @@ puts "/*
foreach {type desc} {
alpha "alphabetic characters"
control "control characters"
digit "decimal digit characters"
punct "punctuation characters"
space "white space characters"
+71 -48
View File
@@ -30,45 +30,38 @@ namespace eval uni {
Cc Cf Co Cs Pc Pd Ps Pe Pi Pf Po Sm Sc Sk So
}; # Ordered list of character categories, must
# match the enumeration in the header file.
variable titleCount 0; # Count of the number of title case
# characters. This value is used in the
# regular expression code to allocate enough
# space for the title case variants.
}
proc uni::getValue {items index} {
variable categories
variable titleCount
# Extract character info
set category [lindex $items 2]
if {[scan [lindex $items 12] %4x toupper] == 1} {
if {[scan [lindex $items 12] %x toupper] == 1} {
set toupper [expr {$index - $toupper}]
} else {
set toupper {}
set toupper 0
}
if {[scan [lindex $items 13] %4x tolower] == 1} {
if {[scan [lindex $items 13] %x tolower] == 1} {
set tolower [expr {$tolower - $index}]
} else {
set tolower {}
set tolower 0
}
if {[scan [lindex $items 14] %4x totitle] == 1} {
if {[scan [lindex $items 14] %x totitle] == 1} {
set totitle [expr {$index - $totitle}]
} elseif {$tolower} {
set totitle 0
} else {
set totitle {}
set totitle $toupper
}
set categoryIndex [lsearch -exact $categories $category]
if {$categoryIndex < 0} {
puts "Unexpected character category: $index($category)"
set categoryIndex 0
} elseif {$category eq "Lt"} {
incr titleCount
error "Unexpected character category: $index($category)"
}
return "$categoryIndex,$toupper,$tolower,$totitle"
return [list $categoryIndex $toupper $tolower $totitle]
}
proc uni::getGroup {value} {
@@ -85,13 +78,14 @@ proc uni::getGroup {value} {
proc uni::addPage {info} {
variable pMap
variable pages
variable shift
set pIndex [lsearch -exact $pages $info]
if {$pIndex == -1} {
set pIndex [llength $pages]
lappend pages $info
}
lappend pMap $pIndex
lappend pMap [expr {$pIndex << $shift}]
return
}
@@ -100,26 +94,31 @@ proc uni::buildTables {data} {
variable pMap {}
variable pages {}
variable groups {{0,,,}}
variable groups {{0 0 0 0}}
variable next 0
set info {} ;# temporary page info
set mask [expr {(1 << $shift) - 1}]
set next 0
foreach line [split $data \n] {
if {$line eq ""} {
set line "FFFF;;Cn;0;ON;;;;;N;;;;;\n"
if {!($next & $mask)} {
# next character is already on page boundary
continue
}
# fill remaining page
set line [format %X [expr {($next-1)|$mask}]]
append line ";;Cn;0;ON;;;;;N;;;;;\n"
}
set items [split $line \;]
scan [lindex $items 0] %x index
if {$index > 0xFFFF} then {
if {$index > 0x2ffff} then {
# Ignore non-BMP characters, as long as Tcl doesn't support them
continue
}
set index [format 0x%0.4x $index]
set index [format %d $index]
set gIndex [getGroup [getValue $items $index]]
@@ -142,15 +141,11 @@ proc uni::buildTables {data} {
# Enter all assigned characters up to the current character
for {set i $next} {$i <= $index} {incr i} {
# Split character index into offset and page number
set offset [expr {$i & $mask}]
set page [expr {($i >> $shift)}]
# Add the group index to the info for the current page
lappend info $gIndex
# If this is the last entry in the page, add the page
if {$offset == $mask} {
if {($i & $mask) == $mask} {
addPage $info
set info {}
}
@@ -166,7 +161,7 @@ proc uni::main {} {
variable pages
variable groups
variable shift
variable titleCount
variable next
if {$argc != 2} {
puts stderr "\nusage: $argv0 <datafile> <outdir>\n"
@@ -178,9 +173,8 @@ proc uni::main {} {
buildTables $data
puts "X = [llength $pMap] Y= [llength $pages] A= [llength $groups]"
set size [expr {[llength $pMap] + [llength $pages]*(1<<$shift)}]
set size [expr {[llength $pMap]*2 + ([llength $pages]<<$shift)}]
puts "shift = $shift, space = $size"
puts "title case count = $titleCount"
set f [open [file join [lindex $argv 1] tclUniData.c] w]
fconfigure $f -translation lf
@@ -213,6 +207,14 @@ static const unsigned short pageMap\[\] = {"
set line " "
set last [expr {[llength $pMap] - 1}]
for {set i 0} {$i <= $last} {incr i} {
if {$i == [expr {0x10000 >> $shift}]} {
set line [string trimright $line " \t,"]
puts $f $line
set lastpage [expr {[lindex $line end] >> $shift}]
puts stdout "lastpage: $lastpage"
puts $f "#if TCL_UTF_MAX > 3"
set line " ,"
}
append line [lindex $pMap $i]
if {$i != $last} {
append line ", "
@@ -223,6 +225,7 @@ static const unsigned short pageMap\[\] = {"
}
}
puts $f $line
puts $f "#endif /* TCL_UTF_MAX > 3 */"
puts $f "};
/*
@@ -237,6 +240,11 @@ static const unsigned char groupMap\[\] = {"
for {set i 0} {$i <= $lasti} {incr i} {
set page [lindex $pages $i]
set lastj [expr {[llength $page] - 1}]
if {$i == ($lastpage + 1)} {
puts $f [string trimright $line " \t,"]
puts $f "#if TCL_UTF_MAX > 3"
set line " ,"
}
for {set j 0} {$j <= $lastj} {incr j} {
append line [lindex $page $j]
if {$j != $lastj || $i != $lasti} {
@@ -249,6 +257,7 @@ static const unsigned char groupMap\[\] = {"
}
}
puts $f $line
puts $f "#endif /* TCL_UTF_MAX > 3 */"
puts $f "};
/*
@@ -264,9 +273,7 @@ static const unsigned char groupMap\[\] = {"
* 101 = sub delta for upper, sub 1 for title
* 110 = sub delta for upper, add delta for lower
*
* Bits 8-14 Reserved for future use.
*
* Bits 15-31 Case delta: delta for case conversions. This should be the
* Bits 8-31 Case delta: delta for case conversions. This should be the
* highest field so we can easily sign extend.
*/
@@ -274,29 +281,41 @@ static const int groups\[\] = {"
set line " "
set last [expr {[llength $groups] - 1}]
for {set i 0} {$i <= $last} {incr i} {
foreach {type toupper tolower totitle} [split [lindex $groups $i] ,] {}
foreach {type toupper tolower totitle} [lindex $groups $i] {}
# Compute the case conversion type and delta
if {$totitle ne ""} {
if {$totitle} {
if {$totitle == $toupper} {
# subtract delta for title or upper
set case 4
set delta $toupper
} elseif {$toupper ne ""} {
if {$tolower} {
error "New case conversion type needed: $toupper $tolower $totitle"
}
} elseif {$toupper} {
# subtract delta for upper, subtract 1 for title
set case 5
set delta $toupper
if {($totitle != 1) || $tolower} {
error "New case conversion type needed: $toupper $tolower $totitle"
}
} else {
# add delta for lower, add 1 for title
set case 3
set delta $tolower
if {$totitle != -1} {
error "New case conversion type needed: $toupper $tolower $totitle"
}
}
} elseif {$toupper ne ""} {
} elseif {$toupper} {
# subtract delta for upper, add delta for lower
set case 6
set delta $toupper
} elseif {$tolower ne ""} {
if {$tolower != $toupper} {
error "New case conversion type needed: $toupper $tolower $totitle"
}
} elseif {$tolower} {
# add delta for lower
set case 2
set delta $tolower
@@ -306,7 +325,7 @@ static const int groups\[\] = {"
set delta 0
}
append line [expr {($delta << 15) | ($case << 5) | $type}]
append line [expr {($delta << 8) | ($case << 5) | $type}]
if {$i != $last} {
append line ", "
}
@@ -316,15 +335,19 @@ static const int groups\[\] = {"
}
}
puts $f $line
puts $f "};
puts -nonewline $f "};
#if TCL_UTF_MAX > 3
# define UNICODE_OUT_OF_RANGE(ch) (((ch) & 0x1fffff) >= [format 0x%x $next])
#else
# define UNICODE_OUT_OF_RANGE(ch) (((ch) & 0x1f0000) != 0)
#endif
/*
* The following constants are used to determine the category of a
* Unicode character.
*/
#define UNICODE_CATEGORY_MASK 0X1F
enum {
UNASSIGNED,
UPPERCASE_LETTER,
@@ -364,16 +387,16 @@ enum {
* to do sign extension on right shifts.
*/
#define GetCaseType(info) (((info) & 0xE0) >> 5)
#define GetCategory(info) ((info) & 0x1F)
#define GetDelta(info) (((info) > 0) ? ((info) >> 15) : (~(~((info)) >> 15)))
#define GetCaseType(info) (((info) & 0xe0) >> 5)
#define GetCategory(ch) (GetUniCharInfo(ch) & 0x1f)
#define GetDelta(info) ((info) >> 8)
/*
* This macro extracts the information about a character from the
* Unicode character tables.
*/
#define GetUniCharInfo(ch) (groups\[groupMap\[(pageMap\[(((int)(ch)) & 0xffff) >> OFFSET_BITS\] << OFFSET_BITS) | ((ch) & ((1 << OFFSET_BITS)-1))\]\])
#define GetUniCharInfo(ch) (groups\[groupMap\[pageMap\[((ch) & 0xffff) >> OFFSET_BITS\] | ((ch) & ((1 << OFFSET_BITS)-1))\]\])
"
close $f
+5 -5
View File
@@ -742,7 +742,7 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs
else true; \
fi; \
done;
@for i in opt0.4 http1.0 encoding ../tcl8 ../tcl8/8.3 ../tcl8/8.4 ../tcl8/8.4/platform ../tcl8/8.5; \
@for i in opt0.4 http1.0 encoding ../tcl8 ../tcl8/8.4 ../tcl8/8.4/platform ../tcl8/8.5; \
do \
if [ ! -d "$(SCRIPT_INSTALL_DIR)"/$$i ] ; then \
echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \
@@ -773,8 +773,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs
do \
$(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/http1.0; \
done;
@echo "Installing package http 2.7.6 as a Tcl Module";
@$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.6.tm;
@echo "Installing package http 2.7.9 as a Tcl Module";
@$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.9.tm;
@echo "Installing library opt0.4 directory";
@for i in $(TOP_DIR)/library/opt/*.tcl ; \
do \
@@ -782,8 +782,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs
done;
@echo "Installing package msgcat 1.4.4 as a Tcl Module";
@$(INSTALL_DATA) $(TOP_DIR)/library/msgcat/msgcat.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/msgcat-1.4.4.tm;
@echo "Installing package tcltest 2.3.3 as a Tcl Module";
@$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.3.tm;
@echo "Installing package tcltest 2.3.4 as a Tcl Module";
@$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.4.tm;
@echo "Installing package platform 1.0.10 as a Tcl Module";
@$(INSTALL_DATA) $(TOP_DIR)/library/platform/platform.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform-1.0.10.tm;
+4 -1
View File
@@ -1335,7 +1335,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
TCL_VERSION=8.5
TCL_MAJOR_VERSION=8
TCL_MINOR_VERSION=5
TCL_PATCH_LEVEL=".10"
TCL_PATCH_LEVEL=".11"
VERSION=${TCL_VERSION}
#------------------------------------------------------------------------
@@ -6935,6 +6935,9 @@ fi
DL_LIBS="-ldl"
CC_SEARCH_FLAGS=""
LD_SEARCH_FLAGS=""
TCL_NEEDS_EXP_FILE=1
TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.dll.a'
TCL_SHLIB_LD_EXTRAS='-Wl,--out-implib,$@.a'
;;
dgux*)
SHLIB_CFLAGS="-K PIC"
+1 -1
View File
@@ -25,7 +25,7 @@ m4_ifdef([SC_USE_CONFIG_HEADERS], [
TCL_VERSION=8.5
TCL_MAJOR_VERSION=8
TCL_MINOR_VERSION=5
TCL_PATCH_LEVEL=".10"
TCL_PATCH_LEVEL=".11"
VERSION=${TCL_VERSION}
#------------------------------------------------------------------------
+3
View File
@@ -1245,6 +1245,9 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [
DL_LIBS="-ldl"
CC_SEARCH_FLAGS=""
LD_SEARCH_FLAGS=""
TCL_NEEDS_EXP_FILE=1
TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.dll.a'
TCL_SHLIB_LD_EXTRAS='-Wl,--out-implib,$[@].a'
;;
dgux*)
SHLIB_CFLAGS="-K PIC"
+1 -1
View File
@@ -4,7 +4,7 @@
Name: tcl
Summary: Tcl scripting language development environment
Version: 8.5.10
Version: 8.5.11
Release: 2
License: BSD
Group: Development/Languages
+34
View File
@@ -1164,6 +1164,40 @@ TclpUtime(
{
return utime(Tcl_FSGetNativePath(pathPtr), tval);
}
#ifdef __CYGWIN__
int TclOSstat(const char *name, Tcl_StatBuf *statBuf) {
struct stat buf;
int result = stat(name, &buf);
statBuf->st_mode = buf.st_mode;
statBuf->st_ino = buf.st_ino;
statBuf->st_dev = buf.st_dev;
statBuf->st_rdev = buf.st_rdev;
statBuf->st_nlink = buf.st_nlink;
statBuf->st_uid = buf.st_uid;
statBuf->st_gid = buf.st_gid;
statBuf->st_size = buf.st_size;
statBuf->st_atime = buf.st_atime;
statBuf->st_mtime = buf.st_mtime;
statBuf->st_ctime = buf.st_ctime;
return result;
}
int TclOSlstat(const char *name, Tcl_StatBuf *statBuf) {
struct stat buf;
int result = lstat(name, &buf);
statBuf->st_mode = buf.st_mode;
statBuf->st_ino = buf.st_ino;
statBuf->st_dev = buf.st_dev;
statBuf->st_rdev = buf.st_rdev;
statBuf->st_nlink = buf.st_nlink;
statBuf->st_uid = buf.st_uid;
statBuf->st_gid = buf.st_gid;
statBuf->st_size = buf.st_size;
statBuf->st_atime = buf.st_atime;
statBuf->st_mtime = buf.st_mtime;
statBuf->st_ctime = buf.st_ctime;
return result;
}
#endif
/*
* Local Variables:
+9 -2
View File
@@ -73,7 +73,12 @@ typedef off_t Tcl_SeekOffset;
# define TclOSopen open
#endif
#ifdef HAVE_STRUCT_STAT64
#ifdef __CYGWIN__
MODULE_SCOPE int TclOSstat(const char *name, Tcl_StatBuf *statBuf);
MODULE_SCOPE int TclOSlstat(const char *name, Tcl_StatBuf *statBuf);
#undef HAVE_STRUCT_STAT_ST_BLOCKS
#undef HAVE_STRUCT_STAT_ST_BLKSIZE
#elif defined(HAVE_STRUCT_STAT64)
# define TclOSstat stat64
# define TclOSlstat lstat64
#else
@@ -85,7 +90,9 @@ typedef off_t Tcl_SeekOffset;
#ifdef HAVE_SYS_SELECT_H
# include <sys/select.h>
#endif
#include <sys/stat.h>
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#if TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
+6 -8
View File
@@ -611,7 +611,7 @@ install-libraries: libraries install-tzdata install-msgs
else true; \
fi; \
done;
@for i in http1.0 opt0.4 encoding ../tcl8 ../tcl8/8.2 ../tcl8/8.3 ../tcl8/8.4 ../tcl8/8.4/platform ../tcl8/8.5; \
@for i in http1.0 opt0.4 encoding ../tcl8 ../tcl8/8.4 ../tcl8/8.4/platform ../tcl8/8.5; \
do \
if [ ! -d $(SCRIPT_INSTALL_DIR)/$$i ] ; then \
echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \
@@ -623,9 +623,7 @@ install-libraries: libraries install-tzdata install-msgs
@for i in "$(GENERIC_DIR)/tcl.h" "$(GENERIC_DIR)/tclDecls.h" \
"$(GENERIC_DIR)/tclPlatDecls.h" \
"$(GENERIC_DIR)/tclTomMath.h" \
"$(GENERIC_DIR)/tclTomMathDecls.h" \
"$(TOMMATH_DIR)/tommath_class.h" \
"$(TOMMATH_DIR)/tommath_superclass.h" ; \
"$(GENERIC_DIR)/tclTomMathDecls.h"; \
do \
$(COPY) "$$i" "$(INCLUDE_INSTALL_DIR)"; \
done;
@@ -639,8 +637,8 @@ install-libraries: libraries install-tzdata install-msgs
do \
$(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http1.0"; \
done;
@echo "Installing package http 2.7.6 as a Tcl Module";
@$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.6.tm;
@echo "Installing package http 2.7.9 as a Tcl Module";
@$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.9.tm;
@echo "Installing library opt0.4 directory";
@for j in $(ROOT_DIR)/library/opt/*.tcl; \
do \
@@ -648,8 +646,8 @@ install-libraries: libraries install-tzdata install-msgs
done;
@echo "Installing package msgcat 1.4.4 as a Tcl Module";
@$(COPY) $(ROOT_DIR)/library/msgcat/msgcat.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/msgcat-1.4.4.tm;
@echo "Installing package tcltest 2.3.3 as a Tcl Module";
@$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.3.tm;
@echo "Installing package tcltest 2.3.4 as a Tcl Module";
@$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.4.tm;
@echo "Installing package platform 1.0.10 as a Tcl Module";
@$(COPY) $(ROOT_DIR)/library/platform/platform.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform-1.0.10.tm;
@echo "Installing package platform::shell 1.1.4 as a Tcl Module";
+1 -5
View File
@@ -10,11 +10,7 @@
*/
#include <stdio.h>
#ifdef __CYGWIN__
# include <unistd.h>
#else
# include <io.h>
#endif
#include <io.h>
#include <string.h>
int
+1 -71
View File
@@ -1311,7 +1311,7 @@ SHELL=/bin/sh
TCL_VERSION=8.5
TCL_MAJOR_VERSION=8
TCL_MINOR_VERSION=5
TCL_PATCH_LEVEL=".10"
TCL_PATCH_LEVEL=".11"
VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION
TCL_DDE_VERSION=1.3
@@ -3550,76 +3550,6 @@ _ACEOF
fi
# Check to see if struct _stat32i64 exists in mingw's sys/stat.h
echo "$as_me:$LINENO: checking if struct _stat32i64 missing" >&5
echo $ECHO_N "checking if struct _stat32i64 missing... $ECHO_C" >&6
if test "${tcl_struct_stat32i64+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <sys/types.h>
#include <sys/stat.h>
int
main ()
{
struct _stat32i64 foo;
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
tcl_struct_stat32i64=no
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
tcl_struct_stat32i64=yes
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $tcl_struct_stat32i64" >&5
echo "${ECHO_T}$tcl_struct_stat32i64" >&6
if test "$tcl_struct_stat32i64" = "yes" ; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_NO_STRUCT_STAT32I64 1
_ACEOF
fi
# See if declarations like FINDEX_INFO_LEVELS are
# missing from winbase.h. This is known to be
# a problem with VC++ 5.2.
+1 -21
View File
@@ -14,7 +14,7 @@ SHELL=/bin/sh
TCL_VERSION=8.5
TCL_MAJOR_VERSION=8
TCL_MINOR_VERSION=5
TCL_PATCH_LEVEL=".10"
TCL_PATCH_LEVEL=".11"
VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION
TCL_DDE_VERSION=1.3
@@ -241,26 +241,6 @@ if test "$tcl_cv_cast_to_union" = "yes"; then
[Defined when compiler supports casting to union type.])
fi
# Check to see if struct _stat32i64 exists in mingw's sys/stat.h
AC_CACHE_CHECK(if struct _stat32i64 missing,
tcl_struct_stat32i64,
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/stat.h>
],
[
struct _stat32i64 foo;
],
tcl_struct_stat32i64=no,
tcl_struct_stat32i64=yes)
)
if test "$tcl_struct_stat32i64" = "yes" ; then
AC_DEFINE(HAVE_NO_STRUCT_STAT32I64, 1,
[Defined when sys/stat.h is missing struct _stat32i64])
fi
# See if declarations like FINDEX_INFO_LEVELS are
# missing from winbase.h. This is known to be
# a problem with VC++ 5.2.
+46 -90
View File
@@ -12,9 +12,6 @@
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
#ifndef _WIN64
# define _USE_32BIT_TIME_T
#endif
#include "tclWinInt.h"
#include "tclFileSystem.h"
#include <winioctl.h>
@@ -1553,14 +1550,25 @@ NativeAccess(
return -1;
}
if ((mode & W_OK)
&& (tclWinProcs->getFileSecurityProc == NULL)
&& (attr & FILE_ATTRIBUTE_READONLY)) {
if (mode == F_OK) {
/*
* We don't have the advanced 'getFileSecurityProc', and our
* attributes say the file is not writable. If we do have
* 'getFileSecurityProc', we'll do a more robust XP-related check
* below.
* File exists, nothing else to check.
*/
return 0;
}
if ((mode & W_OK)
&& (attr & FILE_ATTRIBUTE_READONLY)
&& !(attr & FILE_ATTRIBUTE_DIRECTORY)) {
/*
* The attributes say the file is not writable. If the file is a
* regular file (i.e., not a directory), then the file is not
* writable, full stop. For directories, the read-only bit is
* (mostly) ignored by Windows, so we can't ascertain anything about
* directory access from the attrib data. However, if we have the
* advanced 'getFileSecurityProc', then more robust ACL checks
* will be done below.
*/
Tcl_SetErrno(EACCES);
@@ -1584,15 +1592,14 @@ NativeAccess(
* we have a more complex permissions structure so we try to check that.
* The code below is remarkably complex for such a simple thing as finding
* what permissions the OS has set for a file.
*
* If we are simply checking for file existence, then we don't need all
* these complications (which are really quite slow: with this code 'file
* readable' is 5-6 times slower than 'file exists').
*/
if ((mode != F_OK) && (tclWinProcs->getFileSecurityProc != NULL)) {
if (tclWinProcs->getFileSecurityProc != NULL) {
SECURITY_DESCRIPTOR *sdPtr = NULL;
unsigned long size;
PSID pSid = 0;
BOOL SidDefaulted;
SID_IDENTIFIER_AUTHORITY samba_unmapped = {{0, 0, 0, 0, 0, 22}};
GENERIC_MAPPING genMap;
HANDLE hToken = NULL;
DWORD desiredAccess = 0, grantedAccess = 0;
@@ -1608,7 +1615,8 @@ NativeAccess(
size = 0;
(*tclWinProcs->getFileSecurityProc)(nativePath,
OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION
| DACL_SECURITY_INFORMATION, 0, 0, &size);
| DACL_SECURITY_INFORMATION | LABEL_SECURITY_INFORMATION,
0, 0, &size);
/*
* Should have failed with ERROR_INSUFFICIENT_BUFFER
@@ -1641,7 +1649,8 @@ NativeAccess(
if (!(*tclWinProcs->getFileSecurityProc)(nativePath,
OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION
| DACL_SECURITY_INFORMATION, sdPtr, size, &size)) {
| DACL_SECURITY_INFORMATION | LABEL_SECURITY_INFORMATION,
sdPtr, size, &size)) {
/*
* Error getting owner SD
*/
@@ -1649,6 +1658,26 @@ NativeAccess(
goto accessError;
}
/*
* As of Samba 3.0.23 (10-Jul-2006), unmapped users and groups are
* assigned to SID domains S-1-22-1 and S-1-22-2, where "22" is the
* top-level authority. If the file owner and group is unmapped then
* the ACL access check below will only test against world access,
* which is likely to be more restrictive than the actual access
* restrictions. Since the ACL tests are more likely wrong than
* right, skip them. Moreover, the unix owner access permissions are
* usually mapped to the Windows attributes, so if the user is the
* file owner then the attrib checks above are correct (as far as they
* go).
*/
if(!GetSecurityDescriptorOwner(sdPtr,&pSid,&SidDefaulted) ||
memcmp(GetSidIdentifierAuthority(pSid),&samba_unmapped,
sizeof(SID_IDENTIFIER_AUTHORITY))==0) {
HeapFree(GetProcessHeap(), 0, sdPtr);
return 0; /* Attrib tests say access allowed. */
}
/*
* Perform security impersonation of the user and open the resulting
* thread token.
@@ -1726,17 +1755,6 @@ NativeAccess(
return -1;
}
/*
* For directories the above checks are ok. For files, though, we must
* still check the 'attr' value.
*/
if ((mode & W_OK)
&& !(attr & FILE_ATTRIBUTE_DIRECTORY)
&& (attr & FILE_ATTRIBUTE_READONLY)) {
Tcl_SetErrno(EACCES);
return -1;
}
}
return 0;
}
@@ -1832,27 +1850,10 @@ TclpObjChdir(
{
int result;
const TCHAR *nativePath;
#ifdef __CYGWIN__
extern int cygwin_conv_to_posix_path(const char *, char *);
char posixPath[MAX_PATH+1];
const char *path;
Tcl_DString ds;
#endif /* __CYGWIN__ */
nativePath = (const TCHAR *) Tcl_FSGetNativePath(pathPtr);
#ifdef __CYGWIN__
/*
* Cygwin chdir only groks POSIX path.
*/
path = Tcl_WinTCharToUtf(nativePath, -1, &ds);
cygwin_conv_to_posix_path(path, posixPath);
result = (chdir(posixPath) == 0 ? 1 : 0);
Tcl_DStringFree(&ds);
#else /* __CYGWIN__ */
result = (*tclWinProcs->setCurrentDirectoryProc)(nativePath);
#endif /* __CYGWIN__ */
if (result == 0) {
TclWinConvertError(GetLastError());
@@ -1861,51 +1862,6 @@ TclpObjChdir(
return 0;
}
#ifdef __CYGWIN__
/*
*---------------------------------------------------------------------------
*
* TclpReadlink --
*
* This function replaces the library version of readlink().
*
* Results:
* The result is a pointer to a string specifying the contents of the
* symbolic link given by 'path', or NULL if the symbolic link could not
* be read. Storage for the result string is allocated in bufferPtr; the
* caller must call Tcl_DStringFree() when the result is no longer
* needed.
*
* Side effects:
* See readlink() documentation.
*
*---------------------------------------------------------------------------
*/
char *
TclpReadlink(
const char *path, /* Path of file to readlink (UTF-8). */
Tcl_DString *linkPtr) /* Uninitialized or free DString filled with
* contents of link (UTF-8). */
{
char link[MAXPATHLEN];
int length;
char *native;
Tcl_DString ds;
native = Tcl_UtfToExternalDString(NULL, path, -1, &ds);
length = readlink(native, link, sizeof(link)); /* INTL: Native. */
Tcl_DStringFree(&ds);
if (length < 0) {
return NULL;
}
Tcl_ExternalToUtfDString(NULL, link, length, linkPtr);
return Tcl_DStringValue(linkPtr);
}
#endif /* __CYGWIN__ */
/*
*----------------------------------------------------------------------
*
+24 -52
View File
@@ -14,10 +14,21 @@
#ifndef _TCLWINPORT
#define _TCLWINPORT
#ifndef _WIN64
/* See [Bug 2935503]: file mtime sets wrong time */
# define _USE_32BIT_TIME_T
#endif
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
/* Compatibility to older visual studio / windows platform SDK */
#if !defined(MAXULONG_PTR)
typedef DWORD DWORD_PTR;
typedef DWORD_PTR * PDWORD_PTR;
#endif
/*
* Ask for the winsock function typedefs, also.
*/
@@ -40,12 +51,7 @@
*---------------------------------------------------------------------------
*/
#ifdef __CYGWIN__
# include <unistd.h>
# include <wchar.h>
#else
# include <io.h>
#endif
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
@@ -57,18 +63,11 @@
#include <string.h>
#include <limits.h>
#ifdef __CYGWIN__
# include <unistd.h>
# ifndef _wcsicmp
# define _wcsicmp wcscasecmp
# endif
#else
# ifndef strncasecmp
# define strncasecmp strnicmp
# endif
# ifndef strcasecmp
# define strcasecmp stricmp
# endif
#ifndef strncasecmp
# define strncasecmp strnicmp
#endif
#ifndef strcasecmp
# define strcasecmp stricmp
#endif
/*
@@ -102,31 +101,6 @@
#undef ENOTSUP
#define ENOTSUP -1030507
/*
* Not all mingw32 versions have this struct.
*/
#if !defined(__BORLANDC__) && !defined(_MSC_VER) && !defined(_WIN64) && defined(HAVE_NO_STRUCT_STAT32I64)
struct _stat32i64 {
dev_t st_dev;
ino_t st_ino;
unsigned short st_mode;
short st_nlink;
short st_uid;
short st_gid;
dev_t st_rdev;
__int64 st_size;
#ifdef __CYGWIN__
struct {long tv_sec;} st_atim;
struct {long tv_sec;} st_mtim;
struct {long tv_sec;} st_ctim;
#else
long st_atime;
long st_mtime;
long st_ctime;
#endif
};
#endif
/* Those codes, from Visual Studio 2010, conflict with other values */
#undef ENODATA
#undef ENOMSG
@@ -473,18 +447,12 @@
* use by tclAlloc.c.
*/
#ifdef __CYGWIN__
# define TclpSysAlloc(size, isBin) malloc((size))
# define TclpSysFree(ptr) free((ptr))
# define TclpSysRealloc(ptr, size) realloc((ptr), (size))
#else
# define TclpSysAlloc(size, isBin) ((void*)HeapAlloc(GetProcessHeap(), \
#define TclpSysAlloc(size, isBin) ((void*)HeapAlloc(GetProcessHeap(), \
(DWORD)0, (DWORD)size))
# define TclpSysFree(ptr) (HeapFree(GetProcessHeap(), \
#define TclpSysFree(ptr) (HeapFree(GetProcessHeap(), \
(DWORD)0, (HGLOBAL)ptr))
# define TclpSysRealloc(ptr, size) ((void*)HeapReAlloc(GetProcessHeap(), \
#define TclpSysRealloc(ptr, size) ((void*)HeapReAlloc(GetProcessHeap(), \
(DWORD)0, (LPVOID)ptr, (DWORD)size))
#endif
/*
* The following defines map from standard socket names to our internal
@@ -518,4 +486,8 @@
#define INVALID_SET_FILE_POINTER 0xFFFFFFFF
#endif /* INVALID_SET_FILE_POINTER */
#ifndef LABEL_SECURITY_INFORMATION
# define LABEL_SECURITY_INFORMATION (0x00000010L)
#endif
#endif /* _TCLWINPORT */