Compare commits
115
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
200e5e0169 | ||
|
|
9a90e2eb68 | ||
|
|
e7a7d7dbfd | ||
|
|
9fd4398c37 | ||
|
|
5834970dc6 | ||
|
|
30a44a9e96 | ||
|
|
6fba842371 | ||
|
|
d5ea885e1c | ||
|
|
c5f728a5af | ||
|
|
df77e6c539 | ||
|
|
39425c5c19 | ||
|
|
f43330a968 | ||
|
|
0d70d9d68c | ||
|
|
7fcf2ad8c2 | ||
|
|
f28d0bc94f | ||
|
|
45885a67c8 | ||
|
|
c94680eeb6 | ||
|
|
761897c234 | ||
|
|
4c1377ed5a | ||
|
|
a1416a6c39 | ||
|
|
fbbaada7c6 | ||
|
|
400babcc66 | ||
|
|
7815b5521b | ||
|
|
e4e0da064a | ||
|
|
210f461ca0 | ||
|
|
553c83462d | ||
|
|
ee1a343bc1 | ||
|
|
8d217efd44 | ||
|
|
8cf41bb327 | ||
|
|
df15da2848 | ||
|
|
e808998f32 | ||
|
|
c5427831df | ||
|
|
1470e2393e | ||
|
|
3bff5d1e36 | ||
|
|
99a82a1d2a | ||
|
|
0cce01c340 | ||
|
|
a8f6bcbe22 | ||
|
|
ce0bed6e24 | ||
|
|
38a6237471 | ||
|
|
bd1cc1c83e | ||
|
|
4c72498e39 | ||
|
|
bc4fa40ab7 | ||
|
|
2427ef7d10 | ||
|
|
5eb7dcfeb0 | ||
|
|
1b62d4f40e | ||
|
|
c63560bbbb | ||
|
|
ee579270a8 | ||
|
|
eecbae58f1 | ||
|
|
19fffa2982 | ||
|
|
2082b1ef56 | ||
|
|
8312da70be | ||
|
|
5462a3c12e | ||
|
|
774d408f5c | ||
|
|
b58fad5a4b | ||
|
|
52314e8801 | ||
|
|
4dc66a78d9 | ||
|
|
7d0fcc8ac4 | ||
|
|
aeb5c0bbbc | ||
|
|
e9ac6714fb | ||
|
|
eab8a155f3 | ||
|
|
ec04b423d5 | ||
|
|
6c36acaa44 | ||
|
|
15f57f3f56 | ||
|
|
4a8c47ffa4 | ||
|
|
cf850be37c | ||
|
|
14a4ac7508 | ||
|
|
ebf98dc887 | ||
|
|
12ee33be32 | ||
|
|
22f2d32be1 | ||
|
|
9e8aaad530 | ||
|
|
03513815f8 | ||
|
|
eac55ea27f | ||
|
|
2462be2b38 | ||
|
|
e52db8b73a | ||
|
|
336d744a2c | ||
|
|
b662395ed5 | ||
|
|
2092cc6ad8 | ||
|
|
412344346e | ||
|
|
d9a7d5838f | ||
|
|
f7f4a7a4b7 | ||
|
|
2908f47e6c | ||
|
|
21cf79b98c | ||
|
|
c10e130ebd | ||
|
|
cb790d54f3 | ||
|
|
bcb81bf5a2 | ||
|
|
0c1d96e610 | ||
|
|
0e0f0aa95f | ||
|
|
7537c6ce98 | ||
|
|
fea0efb795 | ||
|
|
5a29a1da64 | ||
|
|
146cfccff0 | ||
|
|
b716798ade | ||
|
|
c4ffb7ee05 | ||
|
|
244f061acc | ||
|
|
ae2e314334 | ||
|
|
5a7a628375 | ||
|
|
986915b1fc | ||
|
|
83ca2639b3 | ||
|
|
751a6f7feb | ||
|
|
c7ddd9227d | ||
|
|
a618cfc343 | ||
|
|
11331dcc63 | ||
|
|
05862f95c1 | ||
|
|
e54423cee2 | ||
|
|
54e2783870 | ||
|
|
d5742fa944 | ||
|
|
9c57e2f527 | ||
|
|
65de195511 | ||
|
|
d8f99e8e22 | ||
|
|
e7217f52ac | ||
|
|
9848fce3d5 | ||
|
|
608053332a | ||
|
|
d030c2423f | ||
|
|
23e62f2f9a | ||
|
|
da6099c4ae |
@@ -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,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.
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+20
-6
@@ -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
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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"
|
||||
|
||||
/*
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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__)
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
+30
-45
@@ -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
@@ -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,
|
||||
|
||||
@@ -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,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
@@ -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
@@ -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 {}
|
||||
|
||||
@@ -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]]
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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}
|
||||
}
|
||||
|
||||
@@ -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
@@ -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}
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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:
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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,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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
Vendored
+4
-1
@@ -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
@@ -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}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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";
|
||||
|
||||
@@ -10,11 +10,7 @@
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#ifdef __CYGWIN__
|
||||
# include <unistd.h>
|
||||
#else
|
||||
# include <io.h>
|
||||
#endif
|
||||
#include <io.h>
|
||||
#include <string.h>
|
||||
|
||||
int
|
||||
|
||||
Vendored
+1
-71
@@ -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
@@ -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
@@ -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
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user