Compare commits

...
Author SHA1 Message Date
dgp 15c03f09c9 merge trunk 2015-05-28 12:28:48 +00:00
Joe Mistachkin 7f5f2ddc7f Make sure the necessary mutexes are in a well-known state across calls to fork(). 2015-05-28 00:53:33 +00:00
Joe Mistachkin d249a8af5d Fix typo in previous check-in. 2015-05-27 22:34:53 +00:00
Joe Mistachkin e8d057ad67 Make sure the master and mutex locks are in a well-known state across the fork() call. 2015-05-27 22:29:25 +00:00
andreask 450b7aafd0 Make tweak to the mem-debug tracking official. It is now again possible to use regular packages with a mem-debug core without inciting a panic. 2015-05-27 18:35:46 +00:00
andreask a0d647ab06 Make tweak to the mem-debug tracking official. It is now again possible to use regular packages with a mem-debug core without inciting a panic. 2015-05-27 18:25:38 +00:00
dkf 8c32ef71da Added missing marker for incompatibility. 2015-05-26 10:16:24 +00:00
jan.nijtmans 756d989440 Remove useless code, trying to sync win32 environment variables with cygwin's. cygwin1.dll is responsible for doing that. Taken over from cygwin's tcl fork. 2015-05-25 20:23:09 +00:00
jan.nijtmans d93aaadc5e Remove useless code, trying to sync win32 environment variables with cygwin's. cygwin1.dll is responsible for doing that. Taken over from cygwin's tcl fork. 2015-05-25 19:15:25 +00:00
Joe Mistachkin 17420ef9f0 Minor compilation issue fix, make sure variable declaration (via macro) is first. 2015-05-22 23:26:29 +00:00
andreask 907aebaab8 Moved Tcl_Obj* objThreadMap release tracking to a location where regular packages will call through, enabling their full tracking by the core, and thus avoiding the "expected to create new entry for object map" panic seen otherwise. 2015-05-22 20:21:48 +00:00
Joe Mistachkin 967856b8f8 Additional mutex locking/unlocking during fork() to keep things synchronized. 2015-05-21 17:58:49 +00:00
dgp 2ce1ce01c5 Missed a bit 2015-05-20 15:15:46 +00:00
dgp babd0b88a0 [29044ba23f] Remove RANLIB as part of library installation. At best it's
redundant to the RANLIB already done as part of library build.  At worst, it
conflicts with needs of cross-compiling.  Thanks Erik Leunissen.
2015-05-20 15:12:50 +00:00
dgp 0f54d7701d Don't change autoconf version by accident. 2015-05-20 13:45:33 +00:00
dgp bd81f35273 merge trunk 2015-05-20 13:37:21 +00:00
dkf deaa520c80 Simplify code generation for a list of literals. Generates slightly simpler bytecode too. 2015-05-19 20:34:10 +00:00
dkf acdb6bc384 Tidier version. 2015-05-19 20:29:47 +00:00
dgp 6be68f173f Don't cause string rep generation in [list <lit> <lit> ... <lit>] bytecode.
Candidate for merge to trunk to simplify bytecode.
2015-05-19 19:22:48 +00:00
dkf 0ae5b5b3c1 regenerate configure 2015-05-18 20:41:46 +00:00
Joe Mistachkin 0dd03dfef9 First attempt at implementing the necessary auto-magic for usleep. 2015-05-18 20:33:56 +00:00
Joe Mistachkin 2e3d1fac48 Adjust tweaks from the previous check-in to prepare for configure detection of usleep(). 2015-05-18 18:23:29 +00:00
dkf fdf990faf5 [11250a236d] Made the documentation of non-greediness overrides more obvious. 2015-05-18 08:20:43 +00:00
dkf 58f3361635 [c11a51c482] Stop race condition with -accept config option, and allow overriding of it via -headers option. 2015-05-18 07:51:54 +00:00
Joe Mistachkin 282b159f3b Temporary tweaks to allow Thread package tests to pass on Unix. 2015-05-17 23:45:53 +00:00
Joe Mistachkin e403d82b18 This should completely fix the race conditions at the cost of more complexity. Also, on Unix, a more reliable means than Tcl_Sleep() of sleeping for a short time is needed. 2015-05-17 22:13:39 +00:00
Joe Mistachkin c489e47329 Update header file with the TIP number. 2015-05-17 20:13:59 +00:00
Joe Mistachkin a32cc9b49b Fix deadlock. 2015-05-17 20:10:47 +00:00
Joe Mistachkin e3a528bc44 Merge updates from trunk. 2015-05-17 19:49:44 +00:00
Joe Mistachkin 12d28d084d Fix typo in the previous check-in. 2015-05-17 19:46:04 +00:00
Joe Mistachkin fc49271c0a Draft fix for a potential race condition in the new Tcl_MutexUnlockAndFinalize API. Not yet tested. 2015-05-17 18:03:15 +00:00
dkf 8c1c07d4bf [ad6696285c] Correction of description of filter behaviour with 'unknown'. 2015-05-17 12:56:06 +00:00
dkf 4240cb00f0 [ad6696285c] Demonstrate that filters are not called for destructors. 2015-05-17 12:06:31 +00:00
Joe Mistachkin 1a30606518 Reword and clarify the doc changes from the previous check-in. 2015-05-16 06:59:27 +00:00
Joe Mistachkin 99cc729bd2 First draft of the necessary doc changes. 2015-05-16 06:49:00 +00:00
dkf 9d64916f18 [0f42ff7871] Remove unintentional difference between interpreted and compiled [next]. 2015-05-15 14:40:00 +00:00
dkf c9e70a3901 [9dd1bd7a74] Ensure that [self] returns a sensible value in a destructor even when construction didn't complete. 2015-05-15 13:54:52 +00:00
dgp c11a7a6b08 Bump to http 2.8.9 2015-05-14 11:19:27 +00:00
dkf 6135265f5c [6a71dbe6ec] Ensure that compression errors log correctly. 2015-05-14 08:23:52 +00:00
dkf 1913208e18 [b9d0434667] Prefer the gzip encoding for transfers. It's less efficient, but
it is far more interoperable and that's a more important metric.
2015-05-14 08:05:37 +00:00
dgp 73deb43f4f Added contributed tests from aspect 2015-05-12 15:00:16 +00:00
dgp 205345779a merge trunk 2015-05-12 14:45:48 +00:00
dgp 92ce12cc43 test portability 2015-04-30 15:31:42 +00:00
dgp 1754a9a311 Test portability. 2015-04-30 15:31:17 +00:00
dgp 91d8b69074 merge mark 2015-04-29 20:35:05 +00:00
dgp d3e04b3a76 Use joinable threads to avoid thread finalization crashes. 2015-04-29 20:34:26 +00:00
dgp 3b743160f6 [894da183c8] Test and fix for regression in flushing blocked channels. 2015-04-29 18:16:36 +00:00
dgp 09d67aff95 [894da183c8] Test and fix for regression in flushing blocked channels. 2015-04-29 18:00:15 +00:00
dgp 227d96bf13 [894da183c8] Fix and test for bug at the point it was introduced. 2015-04-29 16:34:33 +00:00
venkat fd9d40cb5b Merge tzdata2015d from ietf.org 2015-04-29 07:56:01 +00:00
venkat f108505a5b Update to tzdata2015d from ietf.org 2015-04-29 07:54:51 +00:00
dgp 90b9288358 [879a0747be] Repair handling of incomplete multi-byte chars at the ends of input buffers. Also properly reset input encoding flags when cycling through a fleeting EOF condition. 2015-04-24 20:17:12 +00:00
dgp 5ecd3fa2b6 [879a0747be] Repair handling of incomplete multi-byte chars at the ends
of input buffers.  Also properly reset input encoding flags when cycling
through a fleeting EOF condition.
2015-04-24 20:06:27 +00:00
dgp a46cd743dd Fix UtfToUtfProc() to remove the potential to read beyond end of input buffer. 2015-04-24 15:48:56 +00:00
dgp ae445193f4 Fix UtfToUtfProc() to remove the potential to read beyond end of input buffer. 2015-04-24 15:47:58 +00:00
oehhar 459a48dc5c Open linked folder shared on Windows - Patch [19ea026e43] 2015-04-23 12:17:53 +00:00
oehhar 1590eb50c5 Open linked folder shared on Windows - Patch [19ea026e43] 2015-04-23 11:21:41 +00:00
jan.nijtmans c3f11e7741 Fix [8065d178229d8d335eee64d36ada37c4dedf2579|8065d17822]: Duplicate -DNDEBUG in compiler command with --disable-symbols 2015-04-20 10:35:20 +00:00
Miguel Sofer 9f710e45a9 bring in dgp's improvements to zippy 2015-04-17 20:52:12 +00:00
dgp c472223773 Reduce the list walking by keeping lastPtr fields. 2015-04-16 12:27:04 +00:00
dgp 7f030a6b44 Revise the zippy dance that pushes Blocks and Tcl_Objs back the shared pool
so that the overal operation remains a FIFO.  This help preserve cache locality
where it exists.  The price (for now) is a bit more time walking to the end
of free lists.  If this is important, the addition of a lastPtr field could
fix it without difficulty.
2015-04-15 19:57:41 +00:00
jan.nijtmans de7a370d58 Fix [a0a251e4e478977334da51e346cddff8ec3fbf52|a0a251e4e4]: tcl 8.6.4 compilation on windows with msys and VS2013 fails 2015-04-10 09:23:39 +00:00
Joe Mistachkin 63f824a7e9 Add new public Tcl C API to allow a mutex to be unlocked and then finalized atomically. Candidate fix for bug [57945b574a]. 2015-04-09 19:53:39 +00:00
dkf 805cd597f9 Don't warn about warnings that are suppressed correctly now. 2015-04-09 09:27:00 +00:00
dkf 1f2fb4cf5b Squelch otherwise-unavoidable OSX warnings. It's like magic! 2015-04-09 09:20:29 +00:00
Miguel Sofer 3d5869fb4b improve comments for TclMarkTailcall and friends 2015-04-08 19:08:57 +00:00
dgp 6d6afda39d Correction suggested by miguel. Passes test suite and fixes bug demos. 2015-04-08 16:42:33 +00:00
dgp 7fc61f369b Proposed fix. 2015-04-08 14:37:58 +00:00
dkf c6e6569dfe Don't fetch values we don't need. 2015-04-04 11:47:53 +00:00
dgp bc7e4c5d68 There's no need to constrain the declaration of Tcl_GetMemoryInfo(). 2015-03-24 18:27:09 +00:00
dgp cd70770139 Tcl source code already assumes the <limits.h> file is available.
(See tcl/libtommath/tommath.h .)  So dispose of all the configuration
shenanigans pretending we want to support systems that lack one.
2015-03-24 17:34:05 +00:00
Miguel Sofer 63e0947392 fix comments describing tailcall implementation 2015-03-23 16:05:04 +00:00
Miguel Sofer 4ed03a1f4b fix comments describing tailcall implementation 2015-03-23 13:46:08 +00:00
Miguel Sofer ee626d5909 more comments 2015-03-23 13:43:37 +00:00
Miguel Sofer d4166a6b3a updated, improved tailcall comments 2015-03-23 02:11:30 +00:00
Miguel Sofer e325a4742e branch for ordering and grouping the tailcall related code, and especially clean up the comments 2015-03-23 01:01:30 +00:00
Miguel Sofer 2cc11d4918 completing the fix for bug d87cb182053fd79b3 2015-03-23 00:33:07 +00:00
Miguel Sofer 7dbf5ed0b0 adding a test to reveal a problem with the fix of bug d87cb182053fd79b3 2015-03-21 15:08:35 +00:00
dgp 1292a0d927 [d87cb18205] Let compiled ensembles handle tailcalls properly. 2015-03-21 00:31:29 +00:00
dgp 6003e823bf Remove STRICT directive from public header. It does approximately nothing,
and doesn't belong in generic code.
2015-03-20 19:57:13 +00:00
ashok 50426ba9c5 Ticket [e66e444440]. Modified ReadConsoleBytes to handle Ctrl-C / Ctrl-Break
and not return 0 bytes indicating EOF for those cases.
2015-03-19 10:41:28 +00:00
dgp f399206c21 Upon further review, due the order of #include of headers, we do not have
a history of a #define STRICT active when the #include "windows.h" in
tclWinPort.h happens.  Don't want to start something new now.
2015-03-13 17:14:16 +00:00
dgp b2c41c81e4 The STRICT directive influences how #include "windows.h" works.
This is not a generic concern.  Move it over the tclWinPort.h.
2015-03-13 16:55:39 +00:00
dgp 0e5a1e2642 merge release 2015-03-12 14:47:17 +00:00
dgp 74708147ba update changes 2015-03-11 12:30:39 +00:00
dgp b199b80ba8 merge trunk 2015-03-11 12:26:36 +00:00
dgp 226278b0ac merge mark 2015-03-11 12:25:52 +00:00
Kevin Walzer 2c4d707b8f Fix or at least improvement for Tcl/Tk Cocoa event loop by forcing Tcl_ServiceAll() event processing: http://core.tcl.tk/tk/tktview/3028676fffffffffffffffffffffffffffffffff 2015-03-10 14:44:47 +00:00
Kevin Walzer 544df0c1b8 Fix or at least improvement for Tcl/Tk Cocoa event loop by forcing Tcl_ServiceAll() event processing: http://core.tcl.tk/tk/tktview/3028676fffffffffffffffffffffffffffffffff 2015-03-10 14:41:03 +00:00
dgp 8c7378b541 .RS/.RE balance 2015-03-06 19:55:38 +00:00
dgp 4f07b18244 make html must tolerate bundled packages using configure.ac over configure.in. 2015-03-06 19:48:31 +00:00
dgp f396811dd5 product of a make dist 2015-03-06 19:43:42 +00:00
dgp 83f6249875 merge mark 2015-03-06 16:39:07 +00:00
dgp 27503d10cd merge release 2015-03-06 15:26:03 +00:00
dgp 761a093174 repair nroff breakage 2015-03-06 15:06:02 +00:00
dgp 97739f4d09 repair nroff breakage 2015-03-06 14:59:11 +00:00
dgp f14d6cb130 products of "make dist" 2015-03-06 14:38:38 +00:00
dgp 07bc28e627 update release date 2015-03-06 14:17:48 +00:00
dgp 4a22756b41 update changes 2015-03-03 21:29:08 +00:00
dgp 94f2309f51 merge trunk 2015-03-02 22:38:09 +00:00
ashok dfc57be3b1 Deleted Win95/98-specific documentation as those platforms have long been unsupported. 2015-03-02 08:54:14 +00:00
dgp ec9c80bba9 autoconf-2.59 2015-02-26 16:58:52 +00:00
dgp 7e79080ed7 Bump to 8.6.4. 2015-02-26 16:57:59 +00:00
dgp 75e1a82785 update changes 2015-02-24 15:08:02 +00:00
dgp 434f351abc merge 8.5 2015-02-20 20:22:17 +00:00
dgp 8104f5f53d [32b6159246] Accept aspect patch for broken [lreplace] bytecode.
No more [lreplace {1 2 3} 2 0] => 1 2 2 3
2015-02-20 20:19:48 +00:00
dgp b3e2027137 [e08c2c407b] The getHandleProc routine in the Tcl_Channel struct is optional. Update the docs to make that clear. 2015-02-20 19:30:48 +00:00
dgp 28fe834bc3 [e08c2c407b] The getHandleProc routine in the Tcl_Channel struct is
optional.  Update the docs to make that clear.
2015-02-20 19:29:20 +00:00
bch 2919fd5221 per ticket [e08c2c407b053bbfaab] (and stray code related to [84f208762f172e]) adj code to passing test suite 2015-02-19 22:01:36 +00:00
bch e4089d79b3 Do not fault! Tcl_Panic()! - improvements to handling Tcl_CreateChannel() args 2015-02-19 19:19:42 +00:00
bch 87e36a4aa9 backout backwards-incompatible experiment that was accidentally committed 2015-02-19 19:16:37 +00:00
bch 6d6598bbcb sync w/ [trunk] 2015-02-19 18:57:26 +00:00
aspect bb005f26e4 undo erroneous change in [1fa2e32e07] 2015-02-19 06:29:18 +00:00
aspect b8674e42d2 handle [lreplace l x y ...] where y<x 2015-02-19 02:42:13 +00:00
aspect 48650316e3 (core ticket [32b6159246]) Fix for [lreplace l x y] where y<x-1 2015-02-19 02:34:43 +00:00
dgp b1ad5d16a7 merge 8.5 2015-02-12 15:13:32 +00:00
venkat d90a15ace1 merge tzdata2015a from ietf.org 2015-02-11 23:54:00 +00:00
dkf fc506f9ca9 Even clearer failure messages. 2015-02-11 15:56:27 +00:00
dgp 48bab372b9 merge mark 2015-02-11 03:43:22 +00:00
venkat f6b7fa43d6 merge tzdata2015a from ietf.org 2015-02-11 00:19:01 +00:00
bch 4214c7a3a9 inputProc and outputProc tests run conditionally on TCL_READABLE, TCL_WRITABLE mask 2015-02-08 05:04:33 +00:00
bch 02cc7437b2 switch raw assert() to Tcl_Panic() per discussion w/ dkf 2015-02-07 21:19:05 +00:00
bch 9d3e75eb7a merge [trunk] 2015-02-07 21:12:18 +00:00
dgp 4d7ebbdc94 update changes 2015-02-06 19:56:56 +00:00
dgp 22ce6aeb4b merge 8.5 2015-02-05 19:24:27 +00:00
dgp 2fabe1cead Backport of channel mem leak fix that got missed before. 2015-02-05 19:23:35 +00:00
dgp 4b3f548c27 Bump to version 8.5.18. 2015-02-05 18:17:07 +00:00
dgp 3f9555d4c2 Fix [08872796bc] 2015-01-29 18:39:11 +00:00
dgp 8acaf40209 Test for bug [08872796bc]. 2015-01-29 18:36:45 +00:00
dgp 8ee4bdf94d Test for bug [08872796bc]. 2015-01-29 18:34:50 +00:00
dgp 579463bcec Protect against extension variable resolvers that fail to play by the post-Var Reform rules. 2015-01-29 17:48:19 +00:00
dgp 2f36a2d349 Protect against extension variable resolvers that fail to play by
the post-Var Reform rules.
2015-01-29 17:37:59 +00:00
jan.nijtmans 6a233e935b Fix [df08482b042a16007f256bfbaaacfbe0def01074|df08482b04]: Double defined INFINITY in regguts.h 2015-01-26 20:56:01 +00:00
jan.nijtmans 4d5ff6cd13 Fix [df08482b042a16007f256bfbaaacfbe0def01074|df08482b04]: Double defined INFINITY in regguts.h 2015-01-26 20:47:23 +00:00
bch acad581479 truncateProc *can* be NULL 2015-01-21 00:21:18 +00:00
bch 52d37c087d assert() on missing definitions for Tcl_ChannelCreate() required struct Tcl_ChannelType{} fields. 2015-01-20 23:40:23 +00:00
dgp 5e6453d592 merge mark 2015-01-02 22:43:45 +00:00
dgp f16ec6e776 Now that we're using TCL_ENCODING_NO_TERMINATE - be careful about acting on
the contents of dst -- they could be leftovers.  Only check bytes reported
to have been written and take care to get the assertions right.
2015-01-02 22:42:12 +00:00
dgp 42c1a1e15a Revert use of the install-headers target. Tcl 8.5 has no such target. 2015-01-02 15:19:23 +00:00
dgp 5cd16427f7 Add two new (undocumented) flags to the Tcl_ExternalToUtf() interface.
TCL_ENCODING_NO_TERMINATE rejects the default behavior of appending a
terminating NUL byte to the produced Utf output.  This permits use of all
of the dstLen bytes provided, and simplifies the buffer size calculations
demanded from callers.  Perhaps some callers need or appreciate this default
behavior, but for Tcl's own main use of encodings - conversions within I/O -
this just gets in the way.
TCL_ENCODING_CHAR_LIMIT lets the caller set a limit on the number of chars
to be output to be enforced by the encoding routines themselves.  Without
this, callers have to check after the fact for going beyond limits and
make multiple encoding calls in a trial and error approach.
Full compatibility is supported.  No defaults are changed, and the flags
have their effect even if an encoding driver has not been written to support
these flags (but greater efficiency is enjoyed if they do!).
All of Tcl's own encoding drivers are updated to support this.  Other encoding
drivers may exist somewhere, but I cannot point to any.
A TIP to document this and make it officially supported may come in time.
2014-12-23 18:39:35 +00:00
88 changed files with 2648 additions and 2551 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
README: Tcl
This is the Tcl 8.6.3 source distribution.
This is the Tcl 8.6.4 source distribution.
http://sourceforge.net/projects/tcl/files/Tcl/
You can get any source release of Tcl from the URL above.
+35
View File
@@ -8455,6 +8455,7 @@ include ::oo::class (fellows)
2014-08-28 (bug)[b9e1a3] Correct Method Search Order (nadkarni,fellows)
=> TclOO 1.0.3
*** POTENTIAL INCOMPATIBILITY ***
2014-09-05 (bug)[ccc2c2] Regression [lreplace {} 1 1] (bron,fellows)
@@ -8492,4 +8493,38 @@ include ::oo::class (fellows)
--- Released 8.6.3, November 12, 2014 --- http://core.tcl.tk/tcl/ for details
2014-11-21 (bug)[743338] Win: socket error encoding (ladayaroslav,nijtmans)
2014-12-01 (bug) restore tbcload/tclcompiler support (kupries)
2014-12-03 (bug)[0c043a] Fix compiled [set var($) val] (porter)
2014-12-04 (bug)[d2ffcc] Limit $... and bareword parsing to ASCII (ladayaroslav,porter)
*** POTENTIAL INCOMPATIBILITY ***
2014-12-06 (bug)[c6cd4a] Win: hang in async socket connection (shults,nadkarni)
2014-12-10 tzdata updated to Olson's tzdata2014j (venkat)
2014-12-13 fix header files installation on OS X (houben)
2014-12-17 (TIP 427) [fconfigure $h -connecting, -peername, -sockname] (oehlmann,rmax)
2014-12-18 (bug)[af08c8] Crash in full finalize encoding teardown (porter)
2014-12-18 (bug)[7c187a] [chan copy] crash (io-53.17) (benno,porter)
2015-01-26 (bug)[df0848] Trouble with INFINITY macro (dower,nijtmans)
2015-01-29 (bug) Stop crashes when extension var resolvers misbehave (porter)
2015-01-29 (bug)[088727] [read] past EOF (io-73.4) (fenugrec,porter)
2015-02-11 tzdata updated to Olson's tzdata2015a (venkat)
2015-02-20 (bug)[32b615] Fix compiled [lreplace] (lreplace-4.[345]) (aspect)
2015-03-10 (enhancement) Revise OS X notifier for better Cocoa (walzer)
*** POTENTIAL INCOMPATIBILITY ***
--- Released 8.6.4, March 12, 2015 --- http://core.tcl.tk/tcl/ for details
-22
View File
@@ -1,22 +0,0 @@
/*
* limits.h --
*
* This is a dummy header file to #include in Tcl when there
* is no limits.h in /usr/include. There are only a few
* definitions here; also see tclPort.h, which already
* #defines some of the things here if they're not arleady
* defined.
*
* Copyright (c) 1991 The Regents of the University of California.
* Copyright (c) 1994 Sun Microsystems, Inc.
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
#define LONG_MIN 0x80000000
#define LONG_MAX 0x7fffffff
#define INT_MIN 0x80000000
#define INT_MAX 0x7fffffff
#define SHRT_MIN 0x8000
#define SHRT_MAX 0x7fff
+1 -1
View File
@@ -336,7 +336,7 @@ typedef struct Tcl_ChannelType {
It is not necessary to provide implementations for all channel
operations. Those which are not necessary may be set to NULL in the
struct: \fIblockModeProc\fR, \fIseekProc\fR, \fIsetOptionProc\fR,
\fIgetOptionProc\fR, and \fIclose2Proc\fR, in addition to
\fIgetOptionProc\fR, \fIgetHandleProc\fR, and \fIclose2Proc\fR, in addition to
\fIflushProc\fR, \fIhandlerProc\fR, \fIthreadActionProc\fR, and
\fItruncateProc\fR. Other functions that cannot be implemented in a
meaningful way should return \fBEINVAL\fR when called, to indicate
+7 -41
View File
@@ -257,47 +257,13 @@ is filled with the corresponding number of bytes that were stored in
.PP
\fBTcl_WinUtfToTChar\fR and \fBTcl_WinTCharToUtf\fR are
Windows-only convenience
functions for converting between UTF-8 and Windows strings. On Windows 95
(as with the Unix operating system),
all strings exchanged between Tcl and the operating system are
.QW "char"
based. On Windows NT, some strings exchanged between Tcl and the
operating system are
.QW "char"
oriented while others are in Unicode. By
convention, in Windows a TCHAR is a character in the ANSI code page
on Windows 95 and a Unicode character on Windows NT.
.PP
If you planned to use the same
.QW "char"
based interfaces on both Windows
95 and Windows NT, you could use \fBTcl_UtfToExternal\fR and
\fBTcl_ExternalToUtf\fR (or their \fBTcl_DString\fR equivalents) with an
encoding of NULL (the current system encoding). On the other hand,
if you planned to use the Unicode interface when running on Windows NT
and the
.QW "char"
interfaces when running on Windows 95, you would have
to perform the following type of test over and over in your program
(as represented in pseudo-code):
.PP
.CS
if (running NT) {
encoding <- Tcl_GetEncoding("unicode");
nativeBuffer <- Tcl_UtfToExternal(encoding, utfBuffer);
Tcl_FreeEncoding(encoding);
} else {
nativeBuffer <- Tcl_UtfToExternal(NULL, utfBuffer);
}
.CE
.PP
\fBTcl_WinUtfToTChar\fR and \fBTcl_WinTCharToUtf\fR automatically
handle this test and use the proper encoding based on the current
operating system. \fBTcl_WinUtfToTChar\fR returns a pointer to
a TCHAR string, and \fBTcl_WinTCharToUtf\fR expects a TCHAR string
pointer as the \fIsrc\fR string. Otherwise, these functions
behave identically to \fBTcl_UtfToExternalDString\fR and
\fBTcl_ExternalToUtfDString\fR.
functions for converting between UTF-8 and Windows strings
based on the TCHAR type which is by convention
a Unicode character on Windows NT.
These functions are essentially wrappers around
\fBTcl_UtfToExternalDString\fR and
\fBTcl_ExternalToUtfDString\fR that convert to and from the
Unicode encoding.
.PP
\fBTcl_GetEncodingName\fR is roughly the inverse of \fBTcl_GetEncoding\fR.
Given an \fIencoding\fR, the return value is the \fIname\fR argument that
+14 -6
View File
@@ -9,7 +9,7 @@
.so man.macros
.BS
.SH NAME
Tcl_ConditionNotify, Tcl_ConditionWait, Tcl_ConditionFinalize, Tcl_GetThreadData, Tcl_MutexLock, Tcl_MutexUnlock, Tcl_MutexFinalize, Tcl_CreateThread, Tcl_JoinThread \- Tcl thread support
Tcl_ConditionNotify, Tcl_ConditionWait, Tcl_ConditionFinalize, Tcl_GetThreadData, Tcl_MutexLock, Tcl_MutexUnlock, Tcl_MutexFinalize, Tcl_MutexUnlockAndFinalize, Tcl_CreateThread, Tcl_JoinThread \- Tcl thread support
.SH SYNOPSIS
.nf
\fB#include <tcl.h>\fR
@@ -35,6 +35,9 @@ void
void
\fBTcl_MutexFinalize\fR(\fImutexPtr\fR)
.sp
void
\fBTcl_MutexUnlockAndFinalize\fR(\fImutexPtr\fR)
.sp
int
\fBTcl_CreateThread\fR(\fIidPtr, proc, clientData, stackSize, flags\fR)
.sp
@@ -138,11 +141,16 @@ A mutex is a lock that is used to serialize all threads through a piece
of code by calling \fBTcl_MutexLock\fR and \fBTcl_MutexUnlock\fR.
If one thread holds a mutex, any other thread calling \fBTcl_MutexLock\fR will
block until \fBTcl_MutexUnlock\fR is called.
A mutex can be destroyed after its use by calling \fBTcl_MutexFinalize\fR.
A mutex can be destroyed after its use by calling \fBTcl_MutexFinalize\fR or
\fBTcl_MutexUnlockAndFinalize\fR. The \fBTcl_MutexFinalize\fR function may
only be used on unlocked mutexes; otherwise, its behavior is undefined. The
\fBTcl_MutexUnlockAndFinalize\fR function may only be used on locked mutexes;
otherwise, its behavior is undefined.
The result of locking a mutex twice from the same thread is undefined.
On some platforms it will result in a deadlock.
The \fBTcl_MutexLock\fR, \fBTcl_MutexUnlock\fR and \fBTcl_MutexFinalize\fR
procedures are defined as empty macros if not compiling with threads enabled.
The \fBTcl_MutexLock\fR, \fBTcl_MutexUnlock\fR, \fBTcl_MutexFinalize\fR, and
\fBTcl_MutexUnlockAndFinalize\fR procedures are defined as empty macros if
not compiling with threads enabled.
For declaration of mutexes the \fBTCL_DECLARE_MUTEX\fR macro should be used.
This macro assures correct mutex handling even when the core is compiled
without threads enabled.
@@ -176,8 +184,8 @@ They are implemented as opaque pointers that should be NULL
upon first use.
The mutexes and condition variables are
either cleaned up by process exit handlers (if living that long) or
explicitly by calls to \fBTcl_MutexFinalize\fR or
\fBTcl_ConditionFinalize\fR.
explicitly by calls to \fBTcl_MutexFinalize\fR (or
\fBTcl_MutexUnlockAndFinalize\fR) and \fBTcl_ConditionFinalize\fR.
Thread local storage is reclaimed during \fBTcl_FinalizeThread\fR.
.SH "SCRIPT-LEVEL ACCESS TO THREADS"
.PP
+1 -66
View File
@@ -269,17 +269,13 @@ present, as is done when launching applications under wish. It is desirable
to have console applications hidden and detached. This is a designed-in
limitation as \fBexec\fR wants to communicate over pipes. The Expect
extension addresses this issue when communicating with a TUI application.
.RE
.TP
\fBWindows NT\fR
.
.PP
When attempting to execute an application, \fBexec\fR first searches for
the name as it was specified. Then, in order, \fB.com\fR, \fB.exe\fR, and
\fB.bat\fR are appended to the end of the specified name and it searches
for the longer name. If a directory name was not specified as part of the
application name, the following directories are automatically searched in
order when attempting to locate the application:
.RS
.IP \(bu 3
The directory from which the Tcl executable was loaded.
.IP \(bu 3
@@ -299,67 +295,6 @@ the caller must prepend the desired command with
because built-in commands are not implemented using executables.
.RE
.TP
\fBWindows 9x\fR
.
When attempting to execute an application, \fBexec\fR first searches for
the name as it was specified. Then, in order, \fB.com\fR, \fB.exe\fR, and
\fB.bat\fR are appended to the end of the specified name and it searches
for the longer name. If a directory name was not specified as part of the
application name, the following directories are automatically searched in
order when attempting to locate the application:
.RS
.IP \(bu 3
The directory from which the Tcl executable was loaded.
.IP \(bu 3
The current directory.
.IP \(bu 3
The Windows 9x system directory.
.IP \(bu 3
The Windows 9x home directory.
.IP \(bu 3
The directories listed in the path.
.RE
.RS
.PP
In order to execute shell built-in commands like \fBdir\fR and \fBcopy\fR,
the caller must prepend the desired command with
.QW "\fBcommand.com /c\0\fR"
because built-in commands are not implemented using executables.
.PP
Once a 16-bit DOS application has read standard input from a console and
then quit, all subsequently run 16-bit DOS applications will see the
standard input as already closed. 32-bit applications do not have this
problem and will run correctly, even after a 16-bit DOS application thinks
that standard input is closed. There is no known workaround for this bug
at this time.
.PP
Redirection between the \fBNUL:\fR device and a 16-bit application does not
always work. When redirecting from \fBNUL:\fR, some applications may hang,
others will get an infinite stream of
.QW 0x01
bytes, and some will actually
correctly get an immediate end-of-file; the behavior seems to depend upon
something compiled into the application itself. When redirecting greater than
4K or so to \fBNUL:\fR, some applications will hang. The above problems do not
happen with 32-bit applications.
.PP
All DOS 16-bit applications are run synchronously. All standard input from
a pipe to a 16-bit DOS application is collected into a temporary file; the
other end of the pipe must be closed before the 16-bit DOS application
begins executing. All standard output or error from a 16-bit DOS
application to a pipe is collected into temporary files; the application
must terminate before the temporary files are redirected to the next stage
of the pipeline. This is due to a workaround for a Windows 95 bug in the
implementation of pipes, and is how the standard Windows 95 DOS shell
handles pipes itself.
.PP
Certain applications, such as \fBcommand.com\fR, should not be executed
interactively. Applications which directly access the console window,
rather than reading from their standard input and writing to their standard
output may fail, hang Tcl, or even hang the system if their own private
console window is not available to them.
.RE
.TP
\fBUnix\fR (including Mac OS X)
.
The \fBexec\fR command is fully functional and works as described.
+3 -5
View File
@@ -241,11 +241,9 @@ as relative to the cwd). Furthermore,
paths are always expanded
to absolute form. When creating links on filesystems that either do not
support any links, or do not support the specific type requested, an
error message will be returned. In particular Windows 95, 98 and ME do
not support any links at present, but most Unix platforms support both
symbolic and hard links (the latter for files only) and Windows
NT/2000/XP (on NTFS drives) support symbolic
directory links and hard file links.
error message will be returned. Most Unix platforms support both
symbolic and hard links (the latter for files only). Windows
supports symbolic directory links and hard file links on NTFS drives.
.RE
.TP
\fBfile lstat \fIname varName\fR
+1 -7
View File
@@ -204,13 +204,7 @@ of the form
it refers to the home
directory of the user whose account information resides on the specified NT
domain server. Otherwise, user account information is obtained from
the local computer. On Windows 95 and 98, \fBglob\fR accepted patterns
like
.QW .../
and
.QW ..../
for successively higher up parent directories, but later versions of
Windows do not accept these forms.
the local computer.
.PP
Since the backslash character has a special meaning to the glob
command, glob patterns containing Windows style path separators need
+5 -3
View File
@@ -96,9 +96,11 @@ forward to the proper implementation of the method (which it does by invoking
the \fBnext\fR command as filters are inserted into the front of the method
call chain) and is responsible for returning the result of \fBnext\fR.
.PP
Filters are not invoked when processing an invocation of the \fBunknown\fR
method because of a failure to locate a method implementation, or when
invoking either constructors or destructors.
Filters are invoked when processing an invokation of the \fBunknown\fR
method because of a failure to locate a method implementation, but \fInot\fR
when invoking either constructors or destructors. (Note however that the
\fBdestroy\fR method is a conventional method, and filters are invoked as
normal when it is called.)
.SH EXAMPLES
.PP
This example demonstrates how to use the \fBnext\fR command to call the
+2 -2
View File
@@ -370,9 +370,8 @@ works for serial ports from 1 to 9. An attempt to open a serial port that
does not exist or has a number greater than 9 will fail. An alternate
form of opening serial ports is to use the filename \fB//./comX\fR,
where X is any number that corresponds to a serial port.
.RS
.PP
.
.RS
When running Tcl interactively, there may be some strange interactions
between the real console, if one is present, and a command pipeline that uses
standard input or output. If a command pipeline is opened for reading, some
@@ -384,6 +383,7 @@ application are competing for the console at the same time. If the command
pipeline is started from a script, so that Tcl is not accessing the console,
or if the command pipeline does not use standard input or output, but is
redirected from or to a file, then the above problems do not occur.
.RE
.TP
\fBUnix\fR\0\0\0\0\0\0\0
.
+25 -1
View File
@@ -683,9 +683,33 @@ earlier in the RE taking priority over ones starting later. Note that
outer subexpressions thus take priority over their component
subexpressions.
.PP
Note that the quantifiers \fB{1,1}\fR and \fB{1,1}?\fR can be used to
The quantifiers \fB{1,1}\fR and \fB{1,1}?\fR can be used to
force longest and shortest preference, respectively, on a
subexpression or a whole RE.
.RS
.PP
\fBNOTE:\fR This means that you can usually make a RE be non-greedy overall by
putting \fB{1,1}?\fR after one of the first non-constraint atoms or
parenthesized sub-expressions in it. \fIIt pays to experiment\fR with the
placing of this non-greediness override on a suitable range of input texts
when you are writing a RE if you are using this level of complexity.
.PP
For example, this regular expression is non-greedy, and will match the
shortest substring possible given that
.QW \fBabc\fR
will be matched as early as possible (the quantifier does not change that):
.PP
.CS
ab{1,1}?c.*x.*cba
.CE
.PP
The atom
.QW \fBa\fR
has no greediness preference, we explicitly give one for
.QW \fBb\fR ,
and the remaining quantifiers are overridden to be non-greedy by the preceding
non-greedy quantifier.
.RE
.PP
Match lengths are measured in characters, not collating elements. An
empty string is considered longer than no match at all. For example,
-1
View File
@@ -190,7 +190,6 @@ sockets, this option returns a list of three elements; these are the
address, the host name and the port to which the peer socket is connected
or bound. If the host name cannot be computed, the second element of the
list is identical to the address, its first element.
.RE
.TP
\fB\-connecting\fR
.
-8
View File
@@ -642,14 +642,6 @@ This test can only be run on any Windows platform.
.
This test can only be run on any Windows NT platform.
.TP
\fI95\fR
.
This test can only be run on any Windows 95 platform.
.TP
\fI98\fR
.
This test can only be run on any Windows 98 platform.
.TP
\fImac\fR
.
This test can only be run on any Mac platform.
+2 -7
View File
@@ -308,18 +308,13 @@ is the value returned by \fBuname -m\fR.
\fBos\fR
.
The name of the operating system running on this machine,
such as \fBWindows 95\fR, \fBWindows NT\fR, or \fBSunOS\fR.
such as \fBWindows NT\fR or \fBSunOS\fR.
On UNIX machines, this is the value returned by \fBuname -s\fR.
On Windows 95 and Windows 98, the value returned will be \fBWindows
95\fR to provide better backwards compatibility to Windows 95; to
distinguish between the two, check the \fBosVersion\fR.
.TP
\fBosVersion\fR
.
The version number for the operating system running on this machine.
On UNIX machines, this is the value returned by \fBuname -r\fR. On
Windows 95, the version will be 4.0; on Windows 98, the version will
be 4.10.
On UNIX machines, this is the value returned by \fBuname -r\fR.
.TP
\fBpathSeparator\fR
.VS 8.6
+7 -7
View File
@@ -996,13 +996,13 @@ parseqatom(
switch (v->nexttype) {
case '*':
m = 0;
n = INFINITY;
n = DUPINF;
qprefer = (v->nextvalue) ? LONGER : SHORTER;
NEXT();
break;
case '+':
m = 1;
n = INFINITY;
n = DUPINF;
qprefer = (v->nextvalue) ? LONGER : SHORTER;
NEXT();
break;
@@ -1019,7 +1019,7 @@ parseqatom(
if (SEE(DIGIT)) {
n = scannum(v);
} else {
n = INFINITY;
n = DUPINF;
}
if (m > n) {
ERR(REG_BADBR);
@@ -1217,8 +1217,8 @@ parseqatom(
*/
dupnfa(v->nfa, atom->begin, atom->end, s, atom->begin);
assert(m >= 1 && m != INFINITY && n >= 1);
repeat(v, s, atom->begin, m-1, (n == INFINITY) ? n : n-1);
assert(m >= 1 && m != DUPINF && n >= 1);
repeat(v, s, atom->begin, m-1, (n == DUPINF) ? n : n-1);
f = COMBINE(qprefer, atom->flags);
t = subre(v, '.', f, s, atom->end); /* prefix and atom */
NOERR();
@@ -1323,7 +1323,7 @@ repeat(
#define SOME 2
#define INF 3
#define PAIR(x, y) ((x)*4 + (y))
#define REDUCE(x) ( ((x) == INFINITY) ? INF : (((x) > 1) ? SOME : (x)) )
#define REDUCE(x) ( ((x) == DUPINF) ? INF : (((x) > 1) ? SOME : (x)) )
const int rm = REDUCE(m);
const int rn = REDUCE(n);
struct state *s, *s2;
@@ -2108,7 +2108,7 @@ stdump(
}
if (t->min != 1 || t->max != 1) {
fprintf(f, " {%d,", t->min);
if (t->max != INFINITY) {
if (t->max != DUPINF) {
fprintf(f, "%d", t->max);
}
fprintf(f, "}");
+2 -2
View File
@@ -1122,7 +1122,7 @@ complicatedBackrefDissect(
*/
i = 0;
for (p = begin; p <= stop && (i < max || max == INFINITY); p += len) {
for (p = begin; p <= stop && (i < max || max == DUPINF); p += len) {
if (v->g->compare(paren, p, len) != 0) {
break;
}
@@ -1137,7 +1137,7 @@ complicatedBackrefDissect(
if (p != end) { /* didn't consume all of it */
return REG_NOMATCH;
}
if (min <= i && (i <= max || max == INFINITY)) {
if (min <= i && (i <= max || max == DUPINF)) {
return REG_OKAY;
}
return REG_NOMATCH; /* out of range */
+1 -1
View File
@@ -99,7 +99,7 @@
#define xxx 1
#define DUPMAX _POSIX2_RE_DUP_MAX
#define INFINITY (DUPMAX+1)
#define DUPINF (DUPMAX+1)
#define REMAGIC 0xfed7 /* magic number for main struct */
+5
View File
@@ -2326,6 +2326,11 @@ declare 630 {
# ----- BASELINE -- FOR -- 8.6.0 ----- #
# TIP #435
declare 631 {
void Tcl_MutexUnlockAndFinalize(Tcl_Mutex *mutex)
}
##############################################################################
# Define the platform specific public Tcl interface. These functions are only
+10 -24
View File
@@ -56,10 +56,10 @@ extern "C" {
#define TCL_MAJOR_VERSION 8
#define TCL_MINOR_VERSION 6
#define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE
#define TCL_RELEASE_SERIAL 3
#define TCL_RELEASE_SERIAL 4
#define TCL_VERSION "8.6"
#define TCL_PATCH_LEVEL "8.6.3"
#define TCL_PATCH_LEVEL "8.6.4"
/*
*----------------------------------------------------------------------------
@@ -76,16 +76,6 @@ extern "C" {
# endif
#endif
/*
* STRICT: See MSDN Article Q83456
*/
#ifdef _WIN32
# ifndef STRICT
# define STRICT
# endif
#endif /* _WIN32 */
/*
* Utility macros: STRINGIFY takes an argument and wraps it in "" (double
* quotation marks), JOIN joins two arguments.
@@ -402,16 +392,12 @@ typedef long LONG;
* Don't know what platform it is and configure hasn't discovered what is
* going on for us. Try to guess...
*/
# ifdef NO_LIMITS_H
# error please define either TCL_WIDE_INT_TYPE or TCL_WIDE_INT_IS_LONG
# else /* !NO_LIMITS_H */
# include <limits.h>
# if (INT_MAX < LONG_MAX)
# define TCL_WIDE_INT_IS_LONG 1
# else
# define TCL_WIDE_INT_TYPE long long
# endif
# endif /* NO_LIMITS_H */
# include <limits.h>
# if (INT_MAX < LONG_MAX)
# define TCL_WIDE_INT_IS_LONG 1
# else
# define TCL_WIDE_INT_TYPE long long
# endif
# endif /* _WIN32 */
#endif /* !TCL_WIDE_INT_TYPE & !TCL_WIDE_INT_IS_LONG */
#ifdef TCL_WIDE_INT_IS_LONG
@@ -2436,9 +2422,7 @@ EXTERN void Tcl_MainEx(int argc, char **argv,
Tcl_AppInitProc *appInitProc, Tcl_Interp *interp);
EXTERN const char * Tcl_PkgInitStubsCheck(Tcl_Interp *interp,
const char *version, int exact);
#if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC)
EXTERN void Tcl_GetMemoryInfo(Tcl_DString *dsPtr);
#endif
/*
*----------------------------------------------------------------------------
@@ -2608,6 +2592,8 @@ EXTERN void Tcl_GetMemoryInfo(Tcl_DString *dsPtr);
#define Tcl_MutexLock(mutexPtr)
#undef Tcl_MutexUnlock
#define Tcl_MutexUnlock(mutexPtr)
#undef Tcl_MutexUnlockAndFinalize
#define Tcl_MutexUnlockAndFinalize(mutexPtr)
#undef Tcl_MutexFinalize
#define Tcl_MutexFinalize(mutexPtr)
#undef Tcl_ConditionNotify
+69 -25
View File
@@ -4142,8 +4142,9 @@ TclNREvalObjv(
/*
* data[1] stores a marker for use by tailcalls; it will be set to 1 by
* command redirectors (imports, alias, ensembles) so that tailcalls
* finishes the source command and not just the target.
* command redirectors (imports, alias, ensembles) so that tailcall skips
* this callback (that marks the end of the target command) and goes back
* to the end of the source command.
*/
if (iPtr->deferredCallbacks) {
@@ -4406,7 +4407,7 @@ NRCommand(
iPtr->numLevels--;
/*
* If there is a tailcall, schedule it
* If there is a tailcall, schedule it next
*/
if (data[1] && (data[1] != INT2PTR(1))) {
@@ -8170,27 +8171,31 @@ Tcl_NRCmdSwap(
}
/*****************************************************************************
* Stuff for tailcalls
* Tailcall related code
*****************************************************************************
*
* Just to show that IT CAN BE DONE! The precise semantics are not simple,
* require more thought. Possibly need a new Tcl return code to do it right?
* Questions include:
* (1) How is the objc/objv tailcall to be run? My current thinking is that
* it should essentially be
* [tailcall a b c] <=> [uplevel 1 [list a b c]]
* with two caveats
* (a) the current frame is dropped first, after running all pending
* cleanup tasks and saving its namespace
* (b) 'a' is looked up in the returning frame's namespace, but the
* command is run in the context to which we are returning
* Current implementation does this if [tailcall] is called from within
* a proc, errors otherwise.
* (2) Should a tailcall bypass [catch] in the returning frame? Current
* implementation does not (or does it? Changed, test!) - it causes an
* error.
* The steps of the tailcall dance are as follows:
*
* FIXME NRE!
* 1. when [tailcall] is invoked, it stores the corresponding callback in
* the current CallFrame and returns TCL_RETURN
* 2. when the CallFrame is popped, it calls TclSetTailcall to store the
* callback in the proper NRCommand callback - the spot where the command
* that pushed the CallFrame is completely cleaned up
* 3. when the NRCommand callback runs, it schedules the tailcall callback
* to run immediately after it returns
*
* One delicate point is to properly define the NRCommand where the tailcall
* will execute. There are functions whose purpose is to help define the
* precise spot:
* TclMarkTailcall: if the NEXT command to be pushed tailcalls, execution
* should continue right here
* TclSkipTailcall: if the NEXT command to be pushed tailcalls, execution
* should continue after the CURRENT command is fully returned ("skip
* the next command: we are redirecting to it, tailcalls should run
* after WE return")
* TclPushTailcallPoint: the search for a tailcalling spot cannot traverse
* this point. This is special for OO, as some of the oo constructs
* that behave like commands may not push an NRCommand callback.
*/
void
@@ -8224,6 +8229,18 @@ TclPushTailcallPoint(
((Interp *) interp)->numLevels++;
}
/*
*----------------------------------------------------------------------
*
* TclSetTailcall --
*
* Splice a tailcall command in the proper spot of the NRE callback
* stack, so that it runs at the right time.
*
*----------------------------------------------------------------------
*/
void
TclSetTailcall(
Tcl_Interp *interp,
@@ -8248,6 +8265,23 @@ TclSetTailcall(
runPtr->data[1] = listPtr;
}
/*
*----------------------------------------------------------------------
*
* TclNRTailcallObjCmd --
*
* Prepare the tailcall as a list and store it in the current
* varFrame. When the frame is later popped the tailcall will be spliced
* at the proper place.
*
* Results:
* The first NRCommand callback that is not marked to be skipped is
* updated so that its data[1] field contains the tailcall list.
*
*----------------------------------------------------------------------
*/
int
TclNRTailcallObjCmd(
ClientData clientData,
@@ -8262,9 +8296,9 @@ TclNRTailcallObjCmd(
return TCL_ERROR;
}
if (!(iPtr->varFramePtr->isProcCallFrame & 1)) { /* or is upleveled */
if (!(iPtr->varFramePtr->isProcCallFrame & 1)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"tailcall can only be called from a proc or lambda", -1));
"tailcall can only be called from a proc, lambda or method", -1));
Tcl_SetErrorCode(interp, "TCL", "TAILCALL", "ILLEGAL", NULL);
return TCL_ERROR;
}
@@ -8282,8 +8316,7 @@ TclNRTailcallObjCmd(
/*
* Create the callback to actually evaluate the tailcalled
* command, then set it in the varFrame so that PopCallFrame can use it
* at the proper time. Being lazy: exploit the TclNRAddCallBack macro to
* build the callback.
* at the proper time.
*/
if (objc > 1) {
@@ -8308,6 +8341,17 @@ TclNRTailcallObjCmd(
return TCL_RETURN;
}
/*
*----------------------------------------------------------------------
*
* TclNRTailcallEval --
*
* This NREcallback actually causes the tailcall to be evaluated.
*
*----------------------------------------------------------------------
*/
int
TclNRTailcallEval(
ClientData data[],
+5 -14
View File
@@ -1210,20 +1210,7 @@ TclCompileListCmd(
valueTokenPtr = TokenAfter(valueTokenPtr);
}
if (listObj != NULL) {
int len;
const char *bytes = Tcl_GetStringFromObj(listObj, &len);
PushLiteral(envPtr, bytes, len);
Tcl_DecrRefCount(listObj);
if (len > 0) {
/*
* Force list interpretation!
*/
TclEmitOpcode( INST_DUP, envPtr);
TclEmitOpcode( INST_LIST_LENGTH, envPtr);
TclEmitOpcode( INST_POP, envPtr);
}
TclEmitPush(TclAddLiteralObj(envPtr, listObj, NULL), envPtr);
return TCL_OK;
}
@@ -1501,6 +1488,10 @@ TclCompileLreplaceCmd(
return TCL_ERROR;
}
if(idx2 != INDEX_END && idx2 < idx1) {
idx2 = idx1-1;
}
/*
* Work out what this [lreplace] is actually doing.
*/
+5
View File
@@ -1815,6 +1815,8 @@ EXTERN int Tcl_FSUnloadFile(Tcl_Interp *interp,
EXTERN void Tcl_ZlibStreamSetCompressionDictionary(
Tcl_ZlibStream zhandle,
Tcl_Obj *compressionDictionaryObj);
/* 631 */
EXTERN void Tcl_MutexUnlockAndFinalize(Tcl_Mutex *mutex);
typedef struct {
const struct TclPlatStubs *tclPlatStubs;
@@ -2481,6 +2483,7 @@ typedef struct TclStubs {
void * (*tcl_FindSymbol) (Tcl_Interp *interp, Tcl_LoadHandle handle, const char *symbol); /* 628 */
int (*tcl_FSUnloadFile) (Tcl_Interp *interp, Tcl_LoadHandle handlePtr); /* 629 */
void (*tcl_ZlibStreamSetCompressionDictionary) (Tcl_ZlibStream zhandle, Tcl_Obj *compressionDictionaryObj); /* 630 */
void (*tcl_MutexUnlockAndFinalize) (Tcl_Mutex *mutex); /* 631 */
} TclStubs;
extern const TclStubs *tclStubsPtr;
@@ -3773,6 +3776,8 @@ extern const TclStubs *tclStubsPtr;
(tclStubsPtr->tcl_FSUnloadFile) /* 629 */
#define Tcl_ZlibStreamSetCompressionDictionary \
(tclStubsPtr->tcl_ZlibStreamSetCompressionDictionary) /* 630 */
#define Tcl_MutexUnlockAndFinalize \
(tclStubsPtr->tcl_MutexUnlockAndFinalize) /* 631 */
#endif /* defined(USE_TCL_STUBS) */
+1 -1
View File
@@ -2334,7 +2334,7 @@ UtfToUtfProc(
*dst++ = *src++;
} else if (pureNullMode == 1 && UCHAR(*src) == 0xc0 &&
UCHAR(*(src+1)) == 0x80) {
(src + 1 < srcEnd) && UCHAR(*(src+1)) == 0x80) {
/*
* Convert 0xc080 to real nulls when we are in output mode.
*/
+1 -98
View File
@@ -43,11 +43,6 @@ static char * EnvTraceProc(ClientData clientData, Tcl_Interp *interp,
static void ReplaceString(const char *oldStr, char *newStr);
MODULE_SCOPE void TclSetEnv(const char *name, const char *value);
MODULE_SCOPE void TclUnsetEnv(const char *name);
#if defined(__CYGWIN__)
static void TclCygwinPutenv(char *string);
# define putenv TclCygwinPutenv
#endif
/*
*----------------------------------------------------------------------
@@ -444,7 +439,7 @@ TclUnsetEnv(
* that no = should be included, and Windows requires it.
*/
#if defined(_WIN32) || defined(__CYGWIN__)
#if defined(_WIN32)
string = ckalloc(length + 2);
memcpy(string, name, (size_t) length);
string[length] = '=';
@@ -740,98 +735,6 @@ TclFinalizeEnvironment(void)
}
}
#if defined(__CYGWIN__)
/*
* When using cygwin, when an environment variable changes, we need to synch
* with both the cygwin environment (in case the application C code calls
* fork) and the Windows environment (in case the application TCL code calls
* exec, which calls the Windows CreateProcess function).
*/
DLLIMPORT extern void __stdcall SetEnvironmentVariableA(const char*, const char *);
static void
TclCygwinPutenv(
char *str)
{
char *name, *value;
/*
* Get the name and value, so that we can change the environment variable
* for Windows.
*/
name = alloca(strlen(str) + 1);
strcpy(name, str);
for (value=name ; *value!='=' && *value!='\0' ; ++value) {
/* Empty body */
}
if (*value == '\0') {
/* Can't happen. */
return;
}
*(value++) = '\0';
if (*value == '\0') {
value = NULL;
}
/*
* Set the cygwin environment variable.
*/
#undef putenv
if (value == NULL) {
unsetenv(name);
} else {
putenv(str);
}
/*
* Before changing the environment variable in Windows, if this is PATH,
* we need to convert the value back to a Windows style path.
*
* FIXME: The calling program may know it is running under windows, and
* may have set the path to a Windows path, or, worse, appended or
* prepended a Windows path to PATH.
*/
if (strcmp(name, "PATH") != 0) {
/*
* If this is Path, eliminate any PATH variable, to prevent any
* confusion.
*/
if (strcmp(name, "Path") == 0) {
SetEnvironmentVariableA("PATH", NULL);
unsetenv("PATH");
}
SetEnvironmentVariableA(name, value);
} else {
char *buf;
/*
* Eliminate any Path variable, to prevent any confusion.
*/
SetEnvironmentVariableA("Path", NULL);
unsetenv("Path");
if (value == NULL) {
buf = NULL;
} else {
int size;
size = cygwin_conv_path_list(0, value, NULL, 0);
buf = alloca(size + 1);
cygwin_conv_path_list(0, value, buf, size);
}
SetEnvironmentVariableA(name, buf);
}
}
#endif /* __CYGWIN__ */
/*
* Local Variables:
* mode: c
+3 -2
View File
@@ -3185,8 +3185,8 @@ TEBCresume(
pc += 6;
TEBC_YIELD();
TclMarkTailcall(interp);
TclNRAddCallback(interp, TclClearRootEnsemble, NULL,NULL,NULL,NULL);
TclSkipTailcall(interp);
return TclNREvalObjEx(interp, objPtr, TCL_EVAL_INVOKE, NULL, INT_MIN);
/*
@@ -4946,6 +4946,7 @@ TEBCresume(
pc += pcAdjustment;
TEBC_YIELD();
TclPushTailcallPoint(interp);
oPtr = contextPtr->oPtr;
if (oPtr->flags & FILTER_HANDLING) {
TclNRAddCallback(interp, FinalizeOONextFilter,
@@ -5591,7 +5592,7 @@ TEBCresume(
TclNewObj(objResultPtr);
} else if (TclIsPureByteArray(valuePtr)) {
objResultPtr = Tcl_NewByteArrayObj(
Tcl_GetByteArrayFromObj(valuePtr, &length)+index, 1);
Tcl_GetByteArrayFromObj(valuePtr, NULL)+index, 1);
} else if (valuePtr->bytes && length == valuePtr->length) {
objResultPtr = Tcl_NewStringObj((const char *)
valuePtr->bytes+index, 1);
+76 -11
View File
@@ -421,7 +421,11 @@ ChanRead(
* Each read op must set the blocked and eof states anew, not let
* the effect of prior reads leak through.
*/
if (GotFlag(chanPtr->state, CHANNEL_EOF)) {
chanPtr->state->inputEncodingFlags |= TCL_ENCODING_START;
}
ResetFlag(chanPtr->state, CHANNEL_BLOCKED | CHANNEL_EOF);
chanPtr->state->inputEncodingFlags &= ~TCL_ENCODING_END;
if (WillRead(chanPtr) < 0) {
return -1;
}
@@ -430,7 +434,11 @@ ChanRead(
dst, dstSize, &result);
/* Stop any flag leakage through stacked channel levels */
if (GotFlag(chanPtr->state, CHANNEL_EOF)) {
chanPtr->state->inputEncodingFlags |= TCL_ENCODING_START;
}
ResetFlag(chanPtr->state, CHANNEL_BLOCKED | CHANNEL_EOF);
chanPtr->state->inputEncodingFlags &= ~TCL_ENCODING_END;
if (bytesRead > 0) {
/*
* If we get a short read, signal up that we may be BLOCKED.
@@ -1548,6 +1556,22 @@ Tcl_CreateChannel(
*/
assert(sizeof(Tcl_ChannelTypeVersion) == sizeof(Tcl_DriverBlockModeProc *));
assert(typePtr->typeName != NULL);
if (NULL == typePtr->closeProc) {
Tcl_Panic("channel type %s must define closeProc", typePtr->typeName);
}
if ((TCL_READABLE & mask) && (NULL == typePtr->inputProc)) {
Tcl_Panic("channel type %s must define inputProc when used for reader channel", typePtr->typeName);
}
if ((TCL_WRITABLE & mask) && (NULL == typePtr->outputProc)) {
Tcl_Panic("channel type %s must define outputProc when used for writer channel", typePtr->typeName);
}
if (NULL == typePtr->watchProc) {
Tcl_Panic("channel type %s must define watchProc", typePtr->typeName);
}
if ((NULL!=typePtr->wideSeekProc) && (NULL == typePtr->seekProc)) {
Tcl_Panic("channel type %s must define seekProc if defining wideSeekProc", typePtr->typeName);
}
/*
* JH: We could subsequently memset these to 0 to avoid the numerous
@@ -2633,6 +2657,8 @@ FlushChannel(
* the post-condition that on a successful return to caller we've
* left space in the current output buffer for more writing (the flush
* call was to make new room).
* If the channel is blocking, then yes, so we guarantee that
* blocking flushes actually flush all pending data.
* Otherwise, no. Keep the current output buffer where it is so more
* can be written to it, possibly filling it, to promote more efficient
* buffer usage.
@@ -2640,7 +2666,8 @@ FlushChannel(
bufPtr = statePtr->curOutPtr;
if (bufPtr && BytesLeft(bufPtr) && /* Keep empties off queue */
(statePtr->outQueueHead == NULL || IsBufferFull(bufPtr))) {
(statePtr->outQueueHead == NULL || IsBufferFull(bufPtr)
|| !GotFlag(statePtr, CHANNEL_NONBLOCKING))) {
if (statePtr->outQueueHead == NULL) {
statePtr->outQueueHead = bufPtr;
} else {
@@ -5723,7 +5750,11 @@ DoReadChars(
/* Special handling for zero-char read request. */
if (toRead == 0) {
if (GotFlag(statePtr, CHANNEL_EOF)) {
statePtr->inputEncodingFlags |= TCL_ENCODING_START;
}
ResetFlag(statePtr, CHANNEL_BLOCKED|CHANNEL_EOF);
statePtr->inputEncodingFlags &= ~TCL_ENCODING_END;
UpdateInterest(chanPtr);
return 0;
}
@@ -5735,8 +5766,12 @@ DoReadChars(
chanPtr = statePtr->topChanPtr;
TclChannelPreserve((Tcl_Channel)chanPtr);
/* Must clear the BLOCKED flag here since we check before reading */
ResetFlag(statePtr, CHANNEL_BLOCKED);
/* Must clear the BLOCKED|EOF flags here since we check before reading */
if (GotFlag(statePtr, CHANNEL_EOF)) {
statePtr->inputEncodingFlags |= TCL_ENCODING_START;
}
ResetFlag(statePtr, CHANNEL_BLOCKED|CHANNEL_EOF);
statePtr->inputEncodingFlags &= ~TCL_ENCODING_END;
for (copied = 0; (unsigned) toRead > 0; ) {
copiedNow = -1;
if (statePtr->inQueueHead != NULL) {
@@ -5988,12 +6023,24 @@ ReadChars(
/*
* Perform the encoding transformation. Read no more than
* srcLen bytes, write no more than dstLimit bytes.
*
* Some trickiness with encoding flags here. We do not want
* the end of a buffer to be treated as the end of all input
* when the presence of bytes in a next buffer are already
* known to exist. This is checked with an assert() because
* so far no test case causing the assertion to be false has
* been created. The normal operations of channel reading
* appear to cause EOF and TCL_ENCODING_END setting to appear
* only in situations where there are no further bytes in
* any buffers.
*/
assert(bufPtr->nextPtr == NULL || BytesLeft(bufPtr->nextPtr) == 0
|| (statePtr->inputEncodingFlags & TCL_ENCODING_END) == 0);
code = Tcl_ExternalToUtf(NULL, encoding, src, srcLen,
flags & (bufPtr->nextPtr ? ~0 : ~TCL_ENCODING_END),
&statePtr->inputEncodingState, dst, dstLimit, &srcRead,
&dstDecoded, &numChars);
flags, &statePtr->inputEncodingState,
dst, dstLimit, &srcRead, &dstDecoded, &numChars);
/*
* Perform the translation transformation in place. Read no more
@@ -6110,9 +6157,12 @@ ReadChars(
statePtr->inputEncodingFlags = savedIEFlags;
statePtr->inputEncodingState = savedState;
assert(bufPtr->nextPtr == NULL
|| BytesLeft(bufPtr->nextPtr) == 0 || 0 ==
(statePtr->inputEncodingFlags & TCL_ENCODING_END));
Tcl_ExternalToUtf(NULL, encoding, src, srcLen,
(statePtr->inputEncodingFlags | TCL_ENCODING_NO_TERMINATE)
& (bufPtr->nextPtr ? ~0 : ~TCL_ENCODING_END),
(statePtr->inputEncodingFlags | TCL_ENCODING_NO_TERMINATE),
&statePtr->inputEncodingState, buffer, TCL_UTF_MAX + 1,
&read, &decoded, &count);
@@ -6198,9 +6248,8 @@ ReadChars(
* empty string.
*/
if (dst[0] == '\n') {
if (dstRead == 1 && dst[0] == '\n') {
assert(statePtr->inputTranslation == TCL_TRANSLATE_AUTO);
assert(dstRead == 1);
goto consume;
}
@@ -6488,9 +6537,13 @@ Tcl_Ungets(
/*
* Clear the EOF flags, and clear the BLOCKED bit.
*/
if (GotFlag(statePtr, CHANNEL_EOF)) {
statePtr->inputEncodingFlags |= TCL_ENCODING_START;
}
ResetFlag(statePtr,
CHANNEL_BLOCKED | CHANNEL_STICKY_EOF | CHANNEL_EOF | INPUT_SAW_CR);
statePtr->inputEncodingFlags &= ~TCL_ENCODING_END;
bufPtr = AllocChannelBuffer(len);
memcpy(InsertPoint(bufPtr), str, (size_t) len);
@@ -6860,8 +6913,12 @@ Tcl_Seek(
* point. Also clear CR related flags.
*/
if (GotFlag(statePtr, CHANNEL_EOF)) {
statePtr->inputEncodingFlags |= TCL_ENCODING_START;
}
ResetFlag(statePtr, CHANNEL_EOF | CHANNEL_STICKY_EOF | CHANNEL_BLOCKED |
INPUT_SAW_CR);
statePtr->inputEncodingFlags &= ~TCL_ENCODING_END;
/*
* If the channel is in asynchronous output mode, switch it back to
@@ -7955,7 +8012,11 @@ Tcl_SetChannelOption(
* ahead'. Ditto for blocked.
*/
if (GotFlag(statePtr, CHANNEL_EOF)) {
statePtr->inputEncodingFlags |= TCL_ENCODING_START;
}
ResetFlag(statePtr, CHANNEL_EOF|CHANNEL_STICKY_EOF|CHANNEL_BLOCKED);
statePtr->inputEncodingFlags &= ~TCL_ENCODING_END;
return TCL_OK;
} else if (HaveOpt(1, "-translation")) {
const char *readMode, *writeMode;
@@ -9651,7 +9712,11 @@ DoRead(
/* Special handling for zero-char read request. */
if (bytesToRead == 0) {
if (GotFlag(statePtr, CHANNEL_EOF)) {
statePtr->inputEncodingFlags |= TCL_ENCODING_START;
}
ResetFlag(statePtr, CHANNEL_BLOCKED|CHANNEL_EOF);
statePtr->inputEncodingFlags &= ~TCL_ENCODING_END;
UpdateInterest(chanPtr);
return 0;
}
+4 -1
View File
@@ -3059,6 +3059,8 @@ MODULE_SCOPE void TclpInitUnlock(void);
MODULE_SCOPE Tcl_Obj * TclpObjListVolumes(void);
MODULE_SCOPE void TclpMasterLock(void);
MODULE_SCOPE void TclpMasterUnlock(void);
MODULE_SCOPE void TclpMutexLock(void);
MODULE_SCOPE void TclpMutexUnlock(void);
MODULE_SCOPE int TclpMatchFiles(Tcl_Interp *interp, char *separators,
Tcl_DString *dirPtr, char *pattern, char *tail);
MODULE_SCOPE int TclpObjNormalizePath(Tcl_Interp *interp,
@@ -4116,7 +4118,8 @@ MODULE_SCOPE void TclpFreeAllocCache(void *);
AllocCache *cachePtr; \
if (((interp) == NULL) || \
((cachePtr = ((Interp *)(interp))->allocCache), \
(cachePtr->numObjects >= ALLOC_NOBJHIGH))) { \
((cachePtr->numObjects == 0) || \
(cachePtr->numObjects >= ALLOC_NOBJHIGH)))) { \
TclThreadFreeObj(objPtr); \
} else { \
(objPtr)->internalRep.twoPtrValue.ptr1 = cachePtr->firstObjPtr; \
+7 -2
View File
@@ -1675,10 +1675,13 @@ Tcl_NewObjectInstance(
/*
* Take care to not delete a deleted object; that would be
* bad. [Bug 2903011]
* bad. [Bug 2903011] Also take care to make sure that we have
* the name of the command before we delete it. [Bug
* 9dd1bd7a74]
*/
if (!Deleted(oPtr)) {
(void) TclOOObjectName(interp, oPtr);
Tcl_DeleteCommandFromToken(interp, oPtr->command);
}
return NULL;
@@ -1821,10 +1824,12 @@ FinalizeAlloc(
/*
* Take care to not delete a deleted object; that would be bad. [Bug
* 2903011]
* 2903011] Also take care to make sure that we have the name of the
* command before we delete it. [Bug 9dd1bd7a74]
*/
if (!Deleted(oPtr)) {
(void) TclOOObjectName(interp, oPtr);
Tcl_DeleteCommandFromToken(interp, oPtr->command);
}
DelRef(oPtr);
+33 -14
View File
@@ -1301,6 +1301,39 @@ TclFreeObj(
ObjInitDeletionContext(context);
# ifdef TCL_THREADS
/*
* Check to make sure that the Tcl_Obj was allocated by the current
* thread. Don't do this check when shutting down since thread local
* storage can be finalized before the last Tcl_Obj is freed.
*/
if (!TclInExit()) {
Tcl_HashTable *tablePtr;
Tcl_HashEntry *hPtr;
ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
tablePtr = tsdPtr->objThreadMap;
if (!tablePtr) {
Tcl_Panic("TclFreeObj: object table not initialized");
}
hPtr = Tcl_FindHashEntry(tablePtr, (char *) objPtr);
if (hPtr) {
/*
* As the Tcl_Obj is going to be deleted we remove the entry.
*/
ObjData *objData = Tcl_GetHashValue(hPtr);
if (objData != NULL) {
ckfree(objData);
}
Tcl_DeleteHashEntry(hPtr);
}
}
# endif
/*
* Check for a double free of the same value. This is slightly tricky
* because it is customary to free a Tcl_Obj when its refcount falls
@@ -3766,20 +3799,6 @@ Tcl_DbDecrRefCount(
Tcl_Panic("Trying to %s of Tcl_Obj allocated in another thread",
"decr ref count");
}
/*
* If the Tcl_Obj is going to be deleted, remove the entry.
*/
if ((objPtr->refCount - 1) <= 0) {
ObjData *objData = Tcl_GetHashValue(hPtr);
if (objData != NULL) {
ckfree(objData);
}
Tcl_DeleteHashEntry(hPtr);
}
}
# endif /* TCL_THREADS */
#endif /* TCL_MEM_DEBUG */
+1
View File
@@ -1412,6 +1412,7 @@ const TclStubs tclStubs = {
Tcl_FindSymbol, /* 628 */
Tcl_FSUnloadFile, /* 629 */
Tcl_ZlibStreamSetCompressionDictionary, /* 630 */
Tcl_MutexUnlockAndFinalize, /* 631 */
};
/* !END!: Do not edit above this line. */
+38
View File
@@ -50,6 +50,7 @@ static void RememberSyncObject(void *objPtr,
#undef Tcl_MutexLock
#undef Tcl_MutexUnlock
#undef Tcl_MutexFinalize
#undef Tcl_MutexUnlockAndFinalize
#undef Tcl_ConditionNotify
#undef Tcl_ConditionWait
#undef Tcl_ConditionFinalize
@@ -281,6 +282,43 @@ Tcl_MutexFinalize(
TclpMasterUnlock();
}
/*
*----------------------------------------------------------------------
*
* Tcl_MutexUnlockAndFinalize --
*
* This procedure is invoked to unlock and then finalize a mutex.
* The mutex must have been locked by Tcl_MutexLock. It is also
* removed from the list of remembered objects. The mutex can no
* longer be used after calling this procedure.
*
* Results:
* None.
*
* Side effects:
* Remove the mutex from the list.
*
*----------------------------------------------------------------------
*/
void
Tcl_MutexUnlockAndFinalize(
Tcl_Mutex *mutexPtr)
{
Tcl_Mutex mutex;
TclpMasterLock();
TclpMutexLock();
#ifdef TCL_THREADS
mutex = *mutexPtr;
*mutexPtr = NULL; /* Force it to be created again. */
Tcl_MutexUnlock(&mutex);
TclpFinalizeMutex(&mutex);
#endif
ForgetSyncObject(mutexPtr, &mutexRecord);
TclpMutexUnlock();
TclpMasterUnlock();
}
/*
*----------------------------------------------------------------------
*
+98 -21
View File
@@ -84,6 +84,7 @@ typedef union Block {
typedef struct Bucket {
Block *firstPtr; /* First block available */
Block *lastPtr; /* End of block list */
long numFree; /* Number of blocks available */
/* All fields below for accounting only */
@@ -107,6 +108,7 @@ typedef struct Cache {
Tcl_ThreadId owner; /* Which thread's cache is this? */
Tcl_Obj *firstObjPtr; /* List of free objects for thread */
int numObjects; /* Number of objects for thread */
Tcl_Obj *lastPtr; /* Last object in this cache */
int totalAssigned; /* Total space assigned to thread */
Bucket buckets[NBUCKETS]; /* The buckets for this thread */
} Cache;
@@ -135,6 +137,7 @@ static int GetBlocks(Cache *cachePtr, int bucket);
static Block * Ptr2Block(char *ptr);
static char * Block2Ptr(Block *blockPtr, int bucket, unsigned int reqSize);
static void MoveObjs(Cache *fromPtr, Cache *toPtr, int numMove);
static void PutObjs(Cache *fromPtr, int numMove);
/*
* Local variables defined in this file and initialized at startup.
@@ -271,9 +274,7 @@ TclFreeAllocCache(
*/
if (cachePtr->numObjects > 0) {
Tcl_MutexLock(objLockPtr);
MoveObjs(cachePtr, sharedPtr, cachePtr->numObjects);
Tcl_MutexUnlock(objLockPtr);
PutObjs(cachePtr, cachePtr->numObjects);
}
/*
@@ -415,6 +416,9 @@ TclpFree(
cachePtr->buckets[bucket].totalAssigned -= blockPtr->blockReqSize;
blockPtr->nextBlock = cachePtr->buckets[bucket].firstPtr;
cachePtr->buckets[bucket].firstPtr = blockPtr;
if (cachePtr->buckets[bucket].numFree == 0) {
cachePtr->buckets[bucket].lastPtr = blockPtr;
}
cachePtr->buckets[bucket].numFree++;
cachePtr->buckets[bucket].numInserts++;
@@ -572,11 +576,13 @@ TclThreadAllocObj(void)
if (newObjsPtr == NULL) {
Tcl_Panic("alloc: could not allocate %d new objects", numMove);
}
cachePtr->lastPtr = newObjsPtr + numMove - 1;
objPtr = cachePtr->firstObjPtr; /* NULL */
while (--numMove >= 0) {
objPtr = &newObjsPtr[numMove];
objPtr->internalRep.twoPtrValue.ptr1 = cachePtr->firstObjPtr;
cachePtr->firstObjPtr = objPtr;
newObjsPtr[numMove].internalRep.twoPtrValue.ptr1 = objPtr;
objPtr = newObjsPtr + numMove;
}
cachePtr->firstObjPtr = newObjsPtr;
}
}
@@ -624,6 +630,9 @@ TclThreadFreeObj(
objPtr->internalRep.twoPtrValue.ptr1 = cachePtr->firstObjPtr;
cachePtr->firstObjPtr = objPtr;
if (cachePtr->numObjects == 0) {
cachePtr->lastPtr = objPtr;
}
cachePtr->numObjects++;
/*
@@ -632,9 +641,7 @@ TclThreadFreeObj(
*/
if (cachePtr->numObjects > NOBJHIGH) {
Tcl_MutexLock(objLockPtr);
MoveObjs(cachePtr, sharedPtr, NOBJALLOC);
Tcl_MutexUnlock(objLockPtr);
PutObjs(cachePtr, NOBJALLOC);
}
}
@@ -732,10 +739,64 @@ MoveObjs(
* just have to update the first and last.
*/
objPtr->internalRep.twoPtrValue.ptr1 = toPtr->firstObjPtr;
toPtr->lastPtr = objPtr;
objPtr->internalRep.twoPtrValue.ptr1 = toPtr->firstObjPtr; /* NULL */
toPtr->firstObjPtr = fromFirstObjPtr;
}
/*
*----------------------------------------------------------------------
*
* PutObjs --
*
* Move Tcl_Obj's from thread cache to shared cache.
*
* Results:
* None.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
static void
PutObjs(
Cache *fromPtr,
int numMove)
{
int keep = fromPtr->numObjects - numMove;
Tcl_Obj *firstPtr, *lastPtr = NULL;
fromPtr->numObjects = keep;
firstPtr = fromPtr->firstObjPtr;
if (keep == 0) {
fromPtr->firstObjPtr = NULL;
} else {
do {
lastPtr = firstPtr;
firstPtr = firstPtr->internalRep.twoPtrValue.ptr1;
} while (--keep > 0);
lastPtr->internalRep.twoPtrValue.ptr1 = NULL;
}
/*
* Move all objects as a block - they are already linked to each other, we
* just have to update the first and last.
*/
Tcl_MutexLock(objLockPtr);
fromPtr->lastPtr->internalRep.twoPtrValue.ptr1 = sharedPtr->firstObjPtr;
sharedPtr->firstObjPtr = firstPtr;
if (sharedPtr->numObjects == 0) {
sharedPtr->lastPtr = fromPtr->lastPtr;
}
sharedPtr->numObjects += numMove;
Tcl_MutexUnlock(objLockPtr);
fromPtr->lastPtr = lastPtr;
}
/*
*----------------------------------------------------------------------
*
@@ -848,20 +909,25 @@ PutBlocks(
int bucket,
int numMove)
{
register Block *lastPtr, *firstPtr;
register int n = numMove;
/*
* Before acquiring the lock, walk the block list to find the last block
* to be moved.
* We have numFree. Want to shed numMove. So compute how many
* Blocks to keep.
*/
firstPtr = lastPtr = cachePtr->buckets[bucket].firstPtr;
while (--n > 0) {
lastPtr = lastPtr->nextBlock;
int keep = cachePtr->buckets[bucket].numFree - numMove;
Block *lastPtr = NULL, *firstPtr;
cachePtr->buckets[bucket].numFree = keep;
firstPtr = cachePtr->buckets[bucket].firstPtr;
if (keep == 0) {
cachePtr->buckets[bucket].firstPtr = NULL;
} else {
do {
lastPtr = firstPtr;
firstPtr = firstPtr->nextBlock;
} while (--keep > 0);
lastPtr->nextBlock = NULL;
}
cachePtr->buckets[bucket].firstPtr = lastPtr->nextBlock;
cachePtr->buckets[bucket].numFree -= numMove;
/*
* Aquire the lock and place the list of blocks at the front of the shared
@@ -869,10 +935,17 @@ PutBlocks(
*/
LockBucket(cachePtr, bucket);
lastPtr->nextBlock = sharedPtr->buckets[bucket].firstPtr;
cachePtr->buckets[bucket].lastPtr->nextBlock
= sharedPtr->buckets[bucket].firstPtr;
sharedPtr->buckets[bucket].firstPtr = firstPtr;
if (sharedPtr->buckets[bucket].numFree == 0) {
sharedPtr->buckets[bucket].lastPtr
= cachePtr->buckets[bucket].lastPtr;
}
sharedPtr->buckets[bucket].numFree += numMove;
UnlockBucket(cachePtr, bucket);
cachePtr->buckets[bucket].lastPtr = lastPtr;
}
/*
@@ -919,6 +992,8 @@ GetBlocks(
if (n >= sharedPtr->buckets[bucket].numFree) {
cachePtr->buckets[bucket].firstPtr =
sharedPtr->buckets[bucket].firstPtr;
cachePtr->buckets[bucket].lastPtr =
sharedPtr->buckets[bucket].lastPtr;
cachePtr->buckets[bucket].numFree =
sharedPtr->buckets[bucket].numFree;
sharedPtr->buckets[bucket].firstPtr = NULL;
@@ -932,6 +1007,7 @@ GetBlocks(
blockPtr = blockPtr->nextBlock;
}
sharedPtr->buckets[bucket].firstPtr = blockPtr->nextBlock;
cachePtr->buckets[bucket].lastPtr = blockPtr;
blockPtr->nextBlock = NULL;
}
}
@@ -983,6 +1059,7 @@ GetBlocks(
((char *) blockPtr + bucketInfo[bucket].blockSize);
blockPtr = blockPtr->nextBlock;
}
cachePtr->buckets[bucket].lastPtr = blockPtr;
blockPtr->nextBlock = NULL;
}
return 1;
+1 -1
View File
@@ -4746,7 +4746,7 @@ Tcl_GetVariableFullName(
} else if (iPtr->varFramePtr->procPtr) {
int index = varPtr - iPtr->varFramePtr->compiledLocals;
if (index < iPtr->varFramePtr->numCompiledLocals) {
if (index >= 0 && index < iPtr->varFramePtr->numCompiledLocals) {
namePtr = localName(iPtr->varFramePtr, index);
Tcl_AppendObjToObj(objPtr, namePtr);
}
+34 -13
View File
@@ -11,7 +11,7 @@
package require Tcl 8.6
# Keep this in sync with pkgIndex.tcl and with the install directories in
# Makefiles
package provide http 2.8.8
package provide http 2.8.9
namespace eval http {
# Allow resourcing to not clobber existing data
@@ -566,6 +566,10 @@ proc http::geturl {url args} {
# Proxy connections aren't shared among different hosts.
set state(socketinfo) $host:$port
# Save the accept types at this point to prevent a race condition. [Bug
# c11a51c482]
set state(accept-types) $http(-accept)
# See if we are supposed to use a previously opened channel.
if {$state(-keepalive)} {
variable socketmap
@@ -637,8 +641,20 @@ proc http::geturl {url args} {
return $token
}
# http::Connected --
#
# Callback used when the connection to the HTTP server is actually
# established.
#
# Arguments:
# token State token.
# proto What protocol (http, https, etc.) was used to connect.
# phost Are we using keep-alive? Non-empty if yes.
# srvurl Service-local URL that we're requesting
# Results:
# None.
proc http::Connected { token proto phost srvurl} {
proc http::Connected {token proto phost srvurl} {
variable http
variable urlTypes
@@ -691,13 +707,12 @@ proc http::Connected { token proto phost srvurl} {
if {[info exists state(-handler)]} {
set state(-protocol) 1.0
}
set accept_types_seen 0
if {[catch {
puts $sock "$how $srvurl HTTP/$state(-protocol)"
puts $sock "Accept: $http(-accept)"
array set hdrs $state(-headers)
if {[info exists hdrs(Host)]} {
if {[dict exists $state(-headers) Host]} {
# Allow Host spoofing. [Bug 928154]
puts $sock "Host: $hdrs(Host)"
puts $sock "Host: [dict get $state(-headers) Host]"
} elseif {$port == $defport} {
# Don't add port in this case, to handle broken servers. [Bug
# #504508]
@@ -705,7 +720,6 @@ proc http::Connected { token proto phost srvurl} {
} else {
puts $sock "Host: $host:$port"
}
unset hdrs
puts $sock "User-Agent: $http(-useragent)"
if {$state(-protocol) == 1.0 && $state(-keepalive)} {
puts $sock "Connection: keep-alive"
@@ -718,18 +732,21 @@ proc http::Connected { token proto phost srvurl} {
}
set accept_encoding_seen 0
set content_type_seen 0
foreach {key value} $state(-headers) {
dict for {key value} $state(-headers) {
set value [string map [list \n "" \r ""] $value]
set key [string map {" " -} [string trim $key]]
if {[string equal -nocase $key "host"]} {
continue
}
if {[string equal -nocase $key "accept-encoding"]} {
set accept_encoding_seen 1
}
if {[string equal -nocase $key "accept"]} {
set accept_types_seen 1
}
if {[string equal -nocase $key "content-type"]} {
set content_type_seen 1
}
set value [string map [list \n "" \r ""] $value]
set key [string trim $key]
if {[string equal -nocase $key "content-length"]} {
set contDone 1
set state(querylength) $value
@@ -738,8 +755,13 @@ proc http::Connected { token proto phost srvurl} {
puts $sock "$key: $value"
}
}
# Allow overriding the Accept header on a per-connection basis. Useful
# for working with REST services. [Bug c11a51c482]
if {!$accept_types_seen} {
puts $sock "Accept: $state(accept-types)"
}
if {!$accept_encoding_seen && ![info exists state(-handler)]} {
puts $sock "Accept-Encoding: deflate,gzip,compress"
puts $sock "Accept-Encoding: gzip,deflate,compress"
}
if {$isQueryChannel && $state(querylength) == 0} {
# Try to determine size of data in channel. If we cannot seek, the
@@ -795,7 +817,6 @@ proc http::Connected { token proto phost srvurl} {
Finish $token $err
}
}
}
# Data access functions:
@@ -1299,7 +1320,7 @@ proc http::Eof {token {force 0}} {
set state(body) [zlib $coding $state(body)]
}
} err]} {
Log "error doing $coding '$state(body)'"
Log "error doing decompression: $err"
return [Finish $token $err]
}
+1 -1
View File
@@ -1,2 +1,2 @@
if {![package vsatisfies [package provide Tcl] 8.6]} {return}
package ifneeded http 2.8.8 [list tclPkgSetup $dir http 2.8.8 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}]
package ifneeded http 2.8.9 [list tclPkgSetup $dir http 2.8.9 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}]
+1 -1
View File
@@ -16,7 +16,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.6.3
package require -exact Tcl 8.6.4
# Compute the auto path to use in this interpreter.
# The values on the path come from several locations:
+3 -3
View File
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
if {![info exists TZData(Africa/Asmara)]} {
LoadTimeZoneFile Africa/Asmara
if {![info exists TZData(Africa/Nairobi)]} {
LoadTimeZoneFile Africa/Nairobi
}
set TZData(:Africa/Asmera) $TZData(:Africa/Asmara)
set TZData(:Africa/Asmera) $TZData(:Africa/Nairobi)
-180
View File
@@ -129,184 +129,4 @@ set TZData(:Africa/Cairo) {
{1403816400 7200 0 EET}
{1406844000 10800 1 EEST}
{1411678800 7200 0 EET}
{1429826400 10800 1 EEST}
{1434056400 7200 0 EET}
{1437688800 10800 1 EEST}
{1443128400 7200 0 EET}
{1461880800 10800 1 EEST}
{1464901200 7200 0 EET}
{1467928800 10800 1 EEST}
{1475182800 7200 0 EET}
{1493330400 10800 1 EEST}
{1495746000 7200 0 EET}
{1498773600 10800 1 EEST}
{1506632400 7200 0 EET}
{1524780000 10800 1 EEST}
{1525986000 7200 0 EET}
{1529013600 10800 1 EEST}
{1538082000 7200 0 EET}
{1556229600 10800 1 EEST}
{1556830800 7200 0 EET}
{1559858400 10800 1 EEST}
{1569531600 7200 0 EET}
{1590703200 10800 1 EEST}
{1600981200 7200 0 EET}
{1620943200 10800 1 EEST}
{1633035600 7200 0 EET}
{1651788000 10800 1 EEST}
{1664485200 7200 0 EET}
{1682632800 10800 1 EEST}
{1695934800 7200 0 EET}
{1714082400 10800 1 EEST}
{1727384400 7200 0 EET}
{1745532000 10800 1 EEST}
{1758834000 7200 0 EET}
{1776981600 10800 1 EEST}
{1790283600 7200 0 EET}
{1809036000 10800 1 EEST}
{1822338000 7200 0 EET}
{1840485600 10800 1 EEST}
{1853787600 7200 0 EET}
{1871935200 10800 1 EEST}
{1885237200 7200 0 EET}
{1903384800 10800 1 EEST}
{1916686800 7200 0 EET}
{1934834400 10800 1 EEST}
{1948136400 7200 0 EET}
{1966888800 10800 1 EEST}
{1980190800 7200 0 EET}
{1998338400 10800 1 EEST}
{2011640400 7200 0 EET}
{2029788000 10800 1 EEST}
{2043090000 7200 0 EET}
{2061237600 10800 1 EEST}
{2074539600 7200 0 EET}
{2092687200 10800 1 EEST}
{2105989200 7200 0 EET}
{2124136800 10800 1 EEST}
{2137438800 7200 0 EET}
{2156191200 10800 1 EEST}
{2169493200 7200 0 EET}
{2187640800 10800 1 EEST}
{2200942800 7200 0 EET}
{2219090400 10800 1 EEST}
{2232392400 7200 0 EET}
{2250540000 10800 1 EEST}
{2263842000 7200 0 EET}
{2281989600 10800 1 EEST}
{2295291600 7200 0 EET}
{2313439200 10800 1 EEST}
{2326741200 7200 0 EET}
{2345493600 10800 1 EEST}
{2358795600 7200 0 EET}
{2376943200 10800 1 EEST}
{2390245200 7200 0 EET}
{2408392800 10800 1 EEST}
{2421694800 7200 0 EET}
{2439842400 10800 1 EEST}
{2453144400 7200 0 EET}
{2471292000 10800 1 EEST}
{2484594000 7200 0 EET}
{2503346400 10800 1 EEST}
{2516648400 7200 0 EET}
{2534796000 10800 1 EEST}
{2548098000 7200 0 EET}
{2566245600 10800 1 EEST}
{2579547600 7200 0 EET}
{2597695200 10800 1 EEST}
{2610997200 7200 0 EET}
{2629144800 10800 1 EEST}
{2642446800 7200 0 EET}
{2660594400 10800 1 EEST}
{2673896400 7200 0 EET}
{2692648800 10800 1 EEST}
{2705950800 7200 0 EET}
{2724098400 10800 1 EEST}
{2737400400 7200 0 EET}
{2755548000 10800 1 EEST}
{2768850000 7200 0 EET}
{2786997600 10800 1 EEST}
{2800299600 7200 0 EET}
{2818447200 10800 1 EEST}
{2831749200 7200 0 EET}
{2850501600 10800 1 EEST}
{2863803600 7200 0 EET}
{2881951200 10800 1 EEST}
{2895253200 7200 0 EET}
{2913400800 10800 1 EEST}
{2926702800 7200 0 EET}
{2944850400 10800 1 EEST}
{2958152400 7200 0 EET}
{2976300000 10800 1 EEST}
{2989602000 7200 0 EET}
{3007749600 10800 1 EEST}
{3021051600 7200 0 EET}
{3039804000 10800 1 EEST}
{3053106000 7200 0 EET}
{3071253600 10800 1 EEST}
{3084555600 7200 0 EET}
{3102703200 10800 1 EEST}
{3116005200 7200 0 EET}
{3134152800 10800 1 EEST}
{3147454800 7200 0 EET}
{3165602400 10800 1 EEST}
{3178904400 7200 0 EET}
{3197052000 10800 1 EEST}
{3210354000 7200 0 EET}
{3229106400 10800 1 EEST}
{3242408400 7200 0 EET}
{3260556000 10800 1 EEST}
{3273858000 7200 0 EET}
{3292005600 10800 1 EEST}
{3305307600 7200 0 EET}
{3323455200 10800 1 EEST}
{3336757200 7200 0 EET}
{3354904800 10800 1 EEST}
{3368206800 7200 0 EET}
{3386959200 10800 1 EEST}
{3400261200 7200 0 EET}
{3418408800 10800 1 EEST}
{3431710800 7200 0 EET}
{3449858400 10800 1 EEST}
{3463160400 7200 0 EET}
{3481308000 10800 1 EEST}
{3494610000 7200 0 EET}
{3512757600 10800 1 EEST}
{3526059600 7200 0 EET}
{3544207200 10800 1 EEST}
{3557509200 7200 0 EET}
{3576261600 10800 1 EEST}
{3589563600 7200 0 EET}
{3607711200 10800 1 EEST}
{3621013200 7200 0 EET}
{3639160800 10800 1 EEST}
{3652462800 7200 0 EET}
{3670610400 10800 1 EEST}
{3683912400 7200 0 EET}
{3702060000 10800 1 EEST}
{3715362000 7200 0 EET}
{3734114400 10800 1 EEST}
{3747416400 7200 0 EET}
{3765564000 10800 1 EEST}
{3778866000 7200 0 EET}
{3797013600 10800 1 EEST}
{3810315600 7200 0 EET}
{3828463200 10800 1 EEST}
{3841765200 7200 0 EET}
{3859912800 10800 1 EEST}
{3873214800 7200 0 EET}
{3891362400 10800 1 EEST}
{3904664400 7200 0 EET}
{3923416800 10800 1 EEST}
{3936718800 7200 0 EET}
{3954866400 10800 1 EEST}
{3968168400 7200 0 EET}
{3986316000 10800 1 EEST}
{3999618000 7200 0 EET}
{4017765600 10800 1 EEST}
{4031067600 7200 0 EET}
{4049215200 10800 1 EEST}
{4062517200 7200 0 EET}
{4080664800 10800 1 EEST}
{4093966800 7200 0 EET}
}
+233 -233
View File
@@ -40,237 +40,237 @@ set TZData(:America/Adak) {
{388587600 -36000 1 BDT}
{404913600 -39600 0 BST}
{420037200 -36000 1 BDT}
{439034400 -36000 0 HAST}
{452088000 -32400 1 HADT}
{467809200 -36000 0 HAST}
{483537600 -32400 1 HADT}
{499258800 -36000 0 HAST}
{514987200 -32400 1 HADT}
{530708400 -36000 0 HAST}
{544622400 -32400 1 HADT}
{562158000 -36000 0 HAST}
{576072000 -32400 1 HADT}
{594212400 -36000 0 HAST}
{607521600 -32400 1 HADT}
{625662000 -36000 0 HAST}
{638971200 -32400 1 HADT}
{657111600 -36000 0 HAST}
{671025600 -32400 1 HADT}
{688561200 -36000 0 HAST}
{702475200 -32400 1 HADT}
{720010800 -36000 0 HAST}
{733924800 -32400 1 HADT}
{752065200 -36000 0 HAST}
{765374400 -32400 1 HADT}
{783514800 -36000 0 HAST}
{796824000 -32400 1 HADT}
{814964400 -36000 0 HAST}
{828878400 -32400 1 HADT}
{846414000 -36000 0 HAST}
{860328000 -32400 1 HADT}
{877863600 -36000 0 HAST}
{891777600 -32400 1 HADT}
{909313200 -36000 0 HAST}
{923227200 -32400 1 HADT}
{941367600 -36000 0 HAST}
{954676800 -32400 1 HADT}
{972817200 -36000 0 HAST}
{986126400 -32400 1 HADT}
{1004266800 -36000 0 HAST}
{1018180800 -32400 1 HADT}
{1035716400 -36000 0 HAST}
{1049630400 -32400 1 HADT}
{1067166000 -36000 0 HAST}
{1081080000 -32400 1 HADT}
{1099220400 -36000 0 HAST}
{1112529600 -32400 1 HADT}
{1130670000 -36000 0 HAST}
{1143979200 -32400 1 HADT}
{1162119600 -36000 0 HAST}
{1173614400 -32400 1 HADT}
{1194174000 -36000 0 HAST}
{1205064000 -32400 1 HADT}
{1225623600 -36000 0 HAST}
{1236513600 -32400 1 HADT}
{1257073200 -36000 0 HAST}
{1268568000 -32400 1 HADT}
{1289127600 -36000 0 HAST}
{1300017600 -32400 1 HADT}
{1320577200 -36000 0 HAST}
{1331467200 -32400 1 HADT}
{1352026800 -36000 0 HAST}
{1362916800 -32400 1 HADT}
{1383476400 -36000 0 HAST}
{1394366400 -32400 1 HADT}
{1414926000 -36000 0 HAST}
{1425816000 -32400 1 HADT}
{1446375600 -36000 0 HAST}
{1457870400 -32400 1 HADT}
{1478430000 -36000 0 HAST}
{1489320000 -32400 1 HADT}
{1509879600 -36000 0 HAST}
{1520769600 -32400 1 HADT}
{1541329200 -36000 0 HAST}
{1552219200 -32400 1 HADT}
{1572778800 -36000 0 HAST}
{1583668800 -32400 1 HADT}
{1604228400 -36000 0 HAST}
{1615723200 -32400 1 HADT}
{1636282800 -36000 0 HAST}
{1647172800 -32400 1 HADT}
{1667732400 -36000 0 HAST}
{1678622400 -32400 1 HADT}
{1699182000 -36000 0 HAST}
{1710072000 -32400 1 HADT}
{1730631600 -36000 0 HAST}
{1741521600 -32400 1 HADT}
{1762081200 -36000 0 HAST}
{1772971200 -32400 1 HADT}
{1793530800 -36000 0 HAST}
{1805025600 -32400 1 HADT}
{1825585200 -36000 0 HAST}
{1836475200 -32400 1 HADT}
{1857034800 -36000 0 HAST}
{1867924800 -32400 1 HADT}
{1888484400 -36000 0 HAST}
{1899374400 -32400 1 HADT}
{1919934000 -36000 0 HAST}
{1930824000 -32400 1 HADT}
{1951383600 -36000 0 HAST}
{1962878400 -32400 1 HADT}
{1983438000 -36000 0 HAST}
{1994328000 -32400 1 HADT}
{2014887600 -36000 0 HAST}
{2025777600 -32400 1 HADT}
{2046337200 -36000 0 HAST}
{2057227200 -32400 1 HADT}
{2077786800 -36000 0 HAST}
{2088676800 -32400 1 HADT}
{2109236400 -36000 0 HAST}
{2120126400 -32400 1 HADT}
{2140686000 -36000 0 HAST}
{2152180800 -32400 1 HADT}
{2172740400 -36000 0 HAST}
{2183630400 -32400 1 HADT}
{2204190000 -36000 0 HAST}
{2215080000 -32400 1 HADT}
{2235639600 -36000 0 HAST}
{2246529600 -32400 1 HADT}
{2267089200 -36000 0 HAST}
{2277979200 -32400 1 HADT}
{2298538800 -36000 0 HAST}
{2309428800 -32400 1 HADT}
{2329988400 -36000 0 HAST}
{2341483200 -32400 1 HADT}
{2362042800 -36000 0 HAST}
{2372932800 -32400 1 HADT}
{2393492400 -36000 0 HAST}
{2404382400 -32400 1 HADT}
{2424942000 -36000 0 HAST}
{2435832000 -32400 1 HADT}
{2456391600 -36000 0 HAST}
{2467281600 -32400 1 HADT}
{2487841200 -36000 0 HAST}
{2499336000 -32400 1 HADT}
{2519895600 -36000 0 HAST}
{2530785600 -32400 1 HADT}
{2551345200 -36000 0 HAST}
{2562235200 -32400 1 HADT}
{2582794800 -36000 0 HAST}
{2593684800 -32400 1 HADT}
{2614244400 -36000 0 HAST}
{2625134400 -32400 1 HADT}
{2645694000 -36000 0 HAST}
{2656584000 -32400 1 HADT}
{2677143600 -36000 0 HAST}
{2688638400 -32400 1 HADT}
{2709198000 -36000 0 HAST}
{2720088000 -32400 1 HADT}
{2740647600 -36000 0 HAST}
{2751537600 -32400 1 HADT}
{2772097200 -36000 0 HAST}
{2782987200 -32400 1 HADT}
{2803546800 -36000 0 HAST}
{2814436800 -32400 1 HADT}
{2834996400 -36000 0 HAST}
{2846491200 -32400 1 HADT}
{2867050800 -36000 0 HAST}
{2877940800 -32400 1 HADT}
{2898500400 -36000 0 HAST}
{2909390400 -32400 1 HADT}
{2929950000 -36000 0 HAST}
{2940840000 -32400 1 HADT}
{2961399600 -36000 0 HAST}
{2972289600 -32400 1 HADT}
{2992849200 -36000 0 HAST}
{3003739200 -32400 1 HADT}
{3024298800 -36000 0 HAST}
{3035793600 -32400 1 HADT}
{3056353200 -36000 0 HAST}
{3067243200 -32400 1 HADT}
{3087802800 -36000 0 HAST}
{3098692800 -32400 1 HADT}
{3119252400 -36000 0 HAST}
{3130142400 -32400 1 HADT}
{3150702000 -36000 0 HAST}
{3161592000 -32400 1 HADT}
{3182151600 -36000 0 HAST}
{3193041600 -32400 1 HADT}
{3213601200 -36000 0 HAST}
{3225096000 -32400 1 HADT}
{3245655600 -36000 0 HAST}
{3256545600 -32400 1 HADT}
{3277105200 -36000 0 HAST}
{3287995200 -32400 1 HADT}
{3308554800 -36000 0 HAST}
{3319444800 -32400 1 HADT}
{3340004400 -36000 0 HAST}
{3350894400 -32400 1 HADT}
{3371454000 -36000 0 HAST}
{3382948800 -32400 1 HADT}
{3403508400 -36000 0 HAST}
{3414398400 -32400 1 HADT}
{3434958000 -36000 0 HAST}
{3445848000 -32400 1 HADT}
{3466407600 -36000 0 HAST}
{3477297600 -32400 1 HADT}
{3497857200 -36000 0 HAST}
{3508747200 -32400 1 HADT}
{3529306800 -36000 0 HAST}
{3540196800 -32400 1 HADT}
{3560756400 -36000 0 HAST}
{3572251200 -32400 1 HADT}
{3592810800 -36000 0 HAST}
{3603700800 -32400 1 HADT}
{3624260400 -36000 0 HAST}
{3635150400 -32400 1 HADT}
{3655710000 -36000 0 HAST}
{3666600000 -32400 1 HADT}
{3687159600 -36000 0 HAST}
{3698049600 -32400 1 HADT}
{3718609200 -36000 0 HAST}
{3730104000 -32400 1 HADT}
{3750663600 -36000 0 HAST}
{3761553600 -32400 1 HADT}
{3782113200 -36000 0 HAST}
{3793003200 -32400 1 HADT}
{3813562800 -36000 0 HAST}
{3824452800 -32400 1 HADT}
{3845012400 -36000 0 HAST}
{3855902400 -32400 1 HADT}
{3876462000 -36000 0 HAST}
{3887352000 -32400 1 HADT}
{3907911600 -36000 0 HAST}
{3919406400 -32400 1 HADT}
{3939966000 -36000 0 HAST}
{3950856000 -32400 1 HADT}
{3971415600 -36000 0 HAST}
{3982305600 -32400 1 HADT}
{4002865200 -36000 0 HAST}
{4013755200 -32400 1 HADT}
{4034314800 -36000 0 HAST}
{4045204800 -32400 1 HADT}
{4065764400 -36000 0 HAST}
{4076654400 -32400 1 HADT}
{4097214000 -36000 0 HAST}
{439034400 -36000 0 HST}
{452088000 -32400 1 HDT}
{467809200 -36000 0 HST}
{483537600 -32400 1 HDT}
{499258800 -36000 0 HST}
{514987200 -32400 1 HDT}
{530708400 -36000 0 HST}
{544622400 -32400 1 HDT}
{562158000 -36000 0 HST}
{576072000 -32400 1 HDT}
{594212400 -36000 0 HST}
{607521600 -32400 1 HDT}
{625662000 -36000 0 HST}
{638971200 -32400 1 HDT}
{657111600 -36000 0 HST}
{671025600 -32400 1 HDT}
{688561200 -36000 0 HST}
{702475200 -32400 1 HDT}
{720010800 -36000 0 HST}
{733924800 -32400 1 HDT}
{752065200 -36000 0 HST}
{765374400 -32400 1 HDT}
{783514800 -36000 0 HST}
{796824000 -32400 1 HDT}
{814964400 -36000 0 HST}
{828878400 -32400 1 HDT}
{846414000 -36000 0 HST}
{860328000 -32400 1 HDT}
{877863600 -36000 0 HST}
{891777600 -32400 1 HDT}
{909313200 -36000 0 HST}
{923227200 -32400 1 HDT}
{941367600 -36000 0 HST}
{954676800 -32400 1 HDT}
{972817200 -36000 0 HST}
{986126400 -32400 1 HDT}
{1004266800 -36000 0 HST}
{1018180800 -32400 1 HDT}
{1035716400 -36000 0 HST}
{1049630400 -32400 1 HDT}
{1067166000 -36000 0 HST}
{1081080000 -32400 1 HDT}
{1099220400 -36000 0 HST}
{1112529600 -32400 1 HDT}
{1130670000 -36000 0 HST}
{1143979200 -32400 1 HDT}
{1162119600 -36000 0 HST}
{1173614400 -32400 1 HDT}
{1194174000 -36000 0 HST}
{1205064000 -32400 1 HDT}
{1225623600 -36000 0 HST}
{1236513600 -32400 1 HDT}
{1257073200 -36000 0 HST}
{1268568000 -32400 1 HDT}
{1289127600 -36000 0 HST}
{1300017600 -32400 1 HDT}
{1320577200 -36000 0 HST}
{1331467200 -32400 1 HDT}
{1352026800 -36000 0 HST}
{1362916800 -32400 1 HDT}
{1383476400 -36000 0 HST}
{1394366400 -32400 1 HDT}
{1414926000 -36000 0 HST}
{1425816000 -32400 1 HDT}
{1446375600 -36000 0 HST}
{1457870400 -32400 1 HDT}
{1478430000 -36000 0 HST}
{1489320000 -32400 1 HDT}
{1509879600 -36000 0 HST}
{1520769600 -32400 1 HDT}
{1541329200 -36000 0 HST}
{1552219200 -32400 1 HDT}
{1572778800 -36000 0 HST}
{1583668800 -32400 1 HDT}
{1604228400 -36000 0 HST}
{1615723200 -32400 1 HDT}
{1636282800 -36000 0 HST}
{1647172800 -32400 1 HDT}
{1667732400 -36000 0 HST}
{1678622400 -32400 1 HDT}
{1699182000 -36000 0 HST}
{1710072000 -32400 1 HDT}
{1730631600 -36000 0 HST}
{1741521600 -32400 1 HDT}
{1762081200 -36000 0 HST}
{1772971200 -32400 1 HDT}
{1793530800 -36000 0 HST}
{1805025600 -32400 1 HDT}
{1825585200 -36000 0 HST}
{1836475200 -32400 1 HDT}
{1857034800 -36000 0 HST}
{1867924800 -32400 1 HDT}
{1888484400 -36000 0 HST}
{1899374400 -32400 1 HDT}
{1919934000 -36000 0 HST}
{1930824000 -32400 1 HDT}
{1951383600 -36000 0 HST}
{1962878400 -32400 1 HDT}
{1983438000 -36000 0 HST}
{1994328000 -32400 1 HDT}
{2014887600 -36000 0 HST}
{2025777600 -32400 1 HDT}
{2046337200 -36000 0 HST}
{2057227200 -32400 1 HDT}
{2077786800 -36000 0 HST}
{2088676800 -32400 1 HDT}
{2109236400 -36000 0 HST}
{2120126400 -32400 1 HDT}
{2140686000 -36000 0 HST}
{2152180800 -32400 1 HDT}
{2172740400 -36000 0 HST}
{2183630400 -32400 1 HDT}
{2204190000 -36000 0 HST}
{2215080000 -32400 1 HDT}
{2235639600 -36000 0 HST}
{2246529600 -32400 1 HDT}
{2267089200 -36000 0 HST}
{2277979200 -32400 1 HDT}
{2298538800 -36000 0 HST}
{2309428800 -32400 1 HDT}
{2329988400 -36000 0 HST}
{2341483200 -32400 1 HDT}
{2362042800 -36000 0 HST}
{2372932800 -32400 1 HDT}
{2393492400 -36000 0 HST}
{2404382400 -32400 1 HDT}
{2424942000 -36000 0 HST}
{2435832000 -32400 1 HDT}
{2456391600 -36000 0 HST}
{2467281600 -32400 1 HDT}
{2487841200 -36000 0 HST}
{2499336000 -32400 1 HDT}
{2519895600 -36000 0 HST}
{2530785600 -32400 1 HDT}
{2551345200 -36000 0 HST}
{2562235200 -32400 1 HDT}
{2582794800 -36000 0 HST}
{2593684800 -32400 1 HDT}
{2614244400 -36000 0 HST}
{2625134400 -32400 1 HDT}
{2645694000 -36000 0 HST}
{2656584000 -32400 1 HDT}
{2677143600 -36000 0 HST}
{2688638400 -32400 1 HDT}
{2709198000 -36000 0 HST}
{2720088000 -32400 1 HDT}
{2740647600 -36000 0 HST}
{2751537600 -32400 1 HDT}
{2772097200 -36000 0 HST}
{2782987200 -32400 1 HDT}
{2803546800 -36000 0 HST}
{2814436800 -32400 1 HDT}
{2834996400 -36000 0 HST}
{2846491200 -32400 1 HDT}
{2867050800 -36000 0 HST}
{2877940800 -32400 1 HDT}
{2898500400 -36000 0 HST}
{2909390400 -32400 1 HDT}
{2929950000 -36000 0 HST}
{2940840000 -32400 1 HDT}
{2961399600 -36000 0 HST}
{2972289600 -32400 1 HDT}
{2992849200 -36000 0 HST}
{3003739200 -32400 1 HDT}
{3024298800 -36000 0 HST}
{3035793600 -32400 1 HDT}
{3056353200 -36000 0 HST}
{3067243200 -32400 1 HDT}
{3087802800 -36000 0 HST}
{3098692800 -32400 1 HDT}
{3119252400 -36000 0 HST}
{3130142400 -32400 1 HDT}
{3150702000 -36000 0 HST}
{3161592000 -32400 1 HDT}
{3182151600 -36000 0 HST}
{3193041600 -32400 1 HDT}
{3213601200 -36000 0 HST}
{3225096000 -32400 1 HDT}
{3245655600 -36000 0 HST}
{3256545600 -32400 1 HDT}
{3277105200 -36000 0 HST}
{3287995200 -32400 1 HDT}
{3308554800 -36000 0 HST}
{3319444800 -32400 1 HDT}
{3340004400 -36000 0 HST}
{3350894400 -32400 1 HDT}
{3371454000 -36000 0 HST}
{3382948800 -32400 1 HDT}
{3403508400 -36000 0 HST}
{3414398400 -32400 1 HDT}
{3434958000 -36000 0 HST}
{3445848000 -32400 1 HDT}
{3466407600 -36000 0 HST}
{3477297600 -32400 1 HDT}
{3497857200 -36000 0 HST}
{3508747200 -32400 1 HDT}
{3529306800 -36000 0 HST}
{3540196800 -32400 1 HDT}
{3560756400 -36000 0 HST}
{3572251200 -32400 1 HDT}
{3592810800 -36000 0 HST}
{3603700800 -32400 1 HDT}
{3624260400 -36000 0 HST}
{3635150400 -32400 1 HDT}
{3655710000 -36000 0 HST}
{3666600000 -32400 1 HDT}
{3687159600 -36000 0 HST}
{3698049600 -32400 1 HDT}
{3718609200 -36000 0 HST}
{3730104000 -32400 1 HDT}
{3750663600 -36000 0 HST}
{3761553600 -32400 1 HDT}
{3782113200 -36000 0 HST}
{3793003200 -32400 1 HDT}
{3813562800 -36000 0 HST}
{3824452800 -32400 1 HDT}
{3845012400 -36000 0 HST}
{3855902400 -32400 1 HDT}
{3876462000 -36000 0 HST}
{3887352000 -32400 1 HDT}
{3907911600 -36000 0 HST}
{3919406400 -32400 1 HDT}
{3939966000 -36000 0 HST}
{3950856000 -32400 1 HDT}
{3971415600 -36000 0 HST}
{3982305600 -32400 1 HDT}
{4002865200 -36000 0 HST}
{4013755200 -32400 1 HDT}
{4034314800 -36000 0 HST}
{4045204800 -32400 1 HDT}
{4065764400 -36000 0 HST}
{4076654400 -32400 1 HDT}
{4097214000 -36000 0 HST}
}
+3 -5
View File
@@ -1,7 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Antigua) {
{-9223372036854775808 -14832 0 LMT}
{-1825098768 -18000 0 EST}
{-599598000 -14400 0 AST}
if {![info exists TZData(America/Port_of_Spain)]} {
LoadTimeZoneFile America/Port_of_Spain
}
set TZData(:America/Antigua) $TZData(:America/Port_of_Spain)
+1 -170
View File
@@ -43,174 +43,5 @@ set TZData(:America/Cancun) {
{1382857200 -21600 0 CST}
{1396771200 -18000 1 CDT}
{1414306800 -21600 0 CST}
{1428220800 -18000 1 CDT}
{1445756400 -21600 0 CST}
{1459670400 -18000 1 CDT}
{1477810800 -21600 0 CST}
{1491120000 -18000 1 CDT}
{1509260400 -21600 0 CST}
{1522569600 -18000 1 CDT}
{1540710000 -21600 0 CST}
{1554624000 -18000 1 CDT}
{1572159600 -21600 0 CST}
{1586073600 -18000 1 CDT}
{1603609200 -21600 0 CST}
{1617523200 -18000 1 CDT}
{1635663600 -21600 0 CST}
{1648972800 -18000 1 CDT}
{1667113200 -21600 0 CST}
{1680422400 -18000 1 CDT}
{1698562800 -21600 0 CST}
{1712476800 -18000 1 CDT}
{1730012400 -21600 0 CST}
{1743926400 -18000 1 CDT}
{1761462000 -21600 0 CST}
{1775376000 -18000 1 CDT}
{1792911600 -21600 0 CST}
{1806825600 -18000 1 CDT}
{1824966000 -21600 0 CST}
{1838275200 -18000 1 CDT}
{1856415600 -21600 0 CST}
{1869724800 -18000 1 CDT}
{1887865200 -21600 0 CST}
{1901779200 -18000 1 CDT}
{1919314800 -21600 0 CST}
{1933228800 -18000 1 CDT}
{1950764400 -21600 0 CST}
{1964678400 -18000 1 CDT}
{1982818800 -21600 0 CST}
{1996128000 -18000 1 CDT}
{2014268400 -21600 0 CST}
{2027577600 -18000 1 CDT}
{2045718000 -21600 0 CST}
{2059027200 -18000 1 CDT}
{2077167600 -21600 0 CST}
{2091081600 -18000 1 CDT}
{2108617200 -21600 0 CST}
{2122531200 -18000 1 CDT}
{2140066800 -21600 0 CST}
{2153980800 -18000 1 CDT}
{2172121200 -21600 0 CST}
{2185430400 -18000 1 CDT}
{2203570800 -21600 0 CST}
{2216880000 -18000 1 CDT}
{2235020400 -21600 0 CST}
{2248934400 -18000 1 CDT}
{2266470000 -21600 0 CST}
{2280384000 -18000 1 CDT}
{2297919600 -21600 0 CST}
{2311833600 -18000 1 CDT}
{2329369200 -21600 0 CST}
{2343283200 -18000 1 CDT}
{2361423600 -21600 0 CST}
{2374732800 -18000 1 CDT}
{2392873200 -21600 0 CST}
{2406182400 -18000 1 CDT}
{2424322800 -21600 0 CST}
{2438236800 -18000 1 CDT}
{2455772400 -21600 0 CST}
{2469686400 -18000 1 CDT}
{2487222000 -21600 0 CST}
{2501136000 -18000 1 CDT}
{2519276400 -21600 0 CST}
{2532585600 -18000 1 CDT}
{2550726000 -21600 0 CST}
{2564035200 -18000 1 CDT}
{2582175600 -21600 0 CST}
{2596089600 -18000 1 CDT}
{2613625200 -21600 0 CST}
{2627539200 -18000 1 CDT}
{2645074800 -21600 0 CST}
{2658988800 -18000 1 CDT}
{2676524400 -21600 0 CST}
{2690438400 -18000 1 CDT}
{2708578800 -21600 0 CST}
{2721888000 -18000 1 CDT}
{2740028400 -21600 0 CST}
{2753337600 -18000 1 CDT}
{2771478000 -21600 0 CST}
{2785392000 -18000 1 CDT}
{2802927600 -21600 0 CST}
{2816841600 -18000 1 CDT}
{2834377200 -21600 0 CST}
{2848291200 -18000 1 CDT}
{2866431600 -21600 0 CST}
{2879740800 -18000 1 CDT}
{2897881200 -21600 0 CST}
{2911190400 -18000 1 CDT}
{2929330800 -21600 0 CST}
{2942640000 -18000 1 CDT}
{2960780400 -21600 0 CST}
{2974694400 -18000 1 CDT}
{2992230000 -21600 0 CST}
{3006144000 -18000 1 CDT}
{3023679600 -21600 0 CST}
{3037593600 -18000 1 CDT}
{3055734000 -21600 0 CST}
{3069043200 -18000 1 CDT}
{3087183600 -21600 0 CST}
{3100492800 -18000 1 CDT}
{3118633200 -21600 0 CST}
{3132547200 -18000 1 CDT}
{3150082800 -21600 0 CST}
{3163996800 -18000 1 CDT}
{3181532400 -21600 0 CST}
{3195446400 -18000 1 CDT}
{3212982000 -21600 0 CST}
{3226896000 -18000 1 CDT}
{3245036400 -21600 0 CST}
{3258345600 -18000 1 CDT}
{3276486000 -21600 0 CST}
{3289795200 -18000 1 CDT}
{3307935600 -21600 0 CST}
{3321849600 -18000 1 CDT}
{3339385200 -21600 0 CST}
{3353299200 -18000 1 CDT}
{3370834800 -21600 0 CST}
{3384748800 -18000 1 CDT}
{3402889200 -21600 0 CST}
{3416198400 -18000 1 CDT}
{3434338800 -21600 0 CST}
{3447648000 -18000 1 CDT}
{3465788400 -21600 0 CST}
{3479702400 -18000 1 CDT}
{3497238000 -21600 0 CST}
{3511152000 -18000 1 CDT}
{3528687600 -21600 0 CST}
{3542601600 -18000 1 CDT}
{3560137200 -21600 0 CST}
{3574051200 -18000 1 CDT}
{3592191600 -21600 0 CST}
{3605500800 -18000 1 CDT}
{3623641200 -21600 0 CST}
{3636950400 -18000 1 CDT}
{3655090800 -21600 0 CST}
{3669004800 -18000 1 CDT}
{3686540400 -21600 0 CST}
{3700454400 -18000 1 CDT}
{3717990000 -21600 0 CST}
{3731904000 -18000 1 CDT}
{3750044400 -21600 0 CST}
{3763353600 -18000 1 CDT}
{3781494000 -21600 0 CST}
{3794803200 -18000 1 CDT}
{3812943600 -21600 0 CST}
{3826252800 -18000 1 CDT}
{3844393200 -21600 0 CST}
{3858307200 -18000 1 CDT}
{3875842800 -21600 0 CST}
{3889756800 -18000 1 CDT}
{3907292400 -21600 0 CST}
{3921206400 -18000 1 CDT}
{3939346800 -21600 0 CST}
{3952656000 -18000 1 CDT}
{3970796400 -21600 0 CST}
{3984105600 -18000 1 CDT}
{4002246000 -21600 0 CST}
{4016160000 -18000 1 CDT}
{4033695600 -21600 0 CST}
{4047609600 -18000 1 CDT}
{4065145200 -21600 0 CST}
{4079059200 -18000 1 CDT}
{4096594800 -21600 0 CST}
{1422777600 -18000 0 EST}
}
+3 -5
View File
@@ -1,7 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Cayman) {
{-9223372036854775808 -19532 0 LMT}
{-2524502068 -18431 0 KMT}
{-1827687169 -18000 0 EST}
if {![info exists TZData(America/Panama)]} {
LoadTimeZoneFile America/Panama
}
set TZData(:America/Cayman) $TZData(:America/Panama)
+3 -364
View File
@@ -1,366 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Montreal) {
{-9223372036854775808 -17656 0 LMT}
{-2713892744 -18000 0 EST}
{-1665334800 -14400 1 EDT}
{-1662753600 -18000 0 EST}
{-1640977200 -18000 0 EST}
{-1632070800 -14400 1 EDT}
{-1615140000 -18000 0 EST}
{-1609441200 -18000 0 EST}
{-1601742600 -14400 1 EDT}
{-1583775000 -18000 0 EST}
{-1567355400 -14400 1 EDT}
{-1554053400 -18000 0 EST}
{-1535907600 -14400 1 EDT}
{-1522603800 -18000 0 EST}
{-1504458000 -14400 1 EDT}
{-1491154200 -18000 0 EST}
{-1439830800 -14400 1 EDT}
{-1428255000 -18000 0 EST}
{-1409504400 -14400 1 EDT}
{-1396805400 -18000 0 EST}
{-1378054800 -14400 1 EDT}
{-1365355800 -18000 0 EST}
{-1346612400 -14400 1 EDT}
{-1333915200 -18000 0 EST}
{-1315162800 -14400 1 EDT}
{-1301860800 -18000 0 EST}
{-1283713200 -14400 1 EDT}
{-1270411200 -18000 0 EST}
{-1252263600 -14400 1 EDT}
{-1238961600 -18000 0 EST}
{-1220814000 -14400 1 EDT}
{-1207512000 -18000 0 EST}
{-1188759600 -14400 1 EDT}
{-1176062400 -18000 0 EST}
{-1157310000 -14400 1 EDT}
{-1144008000 -18000 0 EST}
{-1125860400 -14400 1 EDT}
{-1112558400 -18000 0 EST}
{-1094410800 -14400 1 EDT}
{-1081108800 -18000 0 EST}
{-1062961200 -14400 1 EDT}
{-1049659200 -18000 0 EST}
{-1031511600 -14400 1 EDT}
{-1018209600 -18000 0 EST}
{-1000062000 -14400 1 EDT}
{-986760000 -18000 0 EST}
{-968007600 -14400 1 EDT}
{-955310400 -18000 0 EST}
{-936558000 -14400 1 EDT}
{-880218000 -14400 0 EWT}
{-769395600 -14400 1 EPT}
{-765396000 -18000 0 EST}
{-757364400 -18000 0 EST}
{-747248400 -14400 1 EDT}
{-733946400 -18000 0 EST}
{-715798800 -14400 1 EDT}
{-702496800 -18000 0 EST}
{-684349200 -14400 1 EDT}
{-671047200 -18000 0 EST}
{-652899600 -14400 1 EDT}
{-636573600 -18000 0 EST}
{-620845200 -14400 1 EDT}
{-605124000 -18000 0 EST}
{-589395600 -14400 1 EDT}
{-576093600 -18000 0 EST}
{-557946000 -14400 1 EDT}
{-544644000 -18000 0 EST}
{-526496400 -14400 1 EDT}
{-513194400 -18000 0 EST}
{-495046800 -14400 1 EDT}
{-481744800 -18000 0 EST}
{-463597200 -14400 1 EDT}
{-450295200 -18000 0 EST}
{-431542800 -14400 1 EDT}
{-418240800 -18000 0 EST}
{-400093200 -14400 1 EDT}
{-384372000 -18000 0 EST}
{-368643600 -14400 1 EDT}
{-352922400 -18000 0 EST}
{-337194000 -14400 1 EDT}
{-321472800 -18000 0 EST}
{-305744400 -14400 1 EDT}
{-289418400 -18000 0 EST}
{-273690000 -14400 1 EDT}
{-257968800 -18000 0 EST}
{-242240400 -14400 1 EDT}
{-226519200 -18000 0 EST}
{-210790800 -14400 1 EDT}
{-195069600 -18000 0 EST}
{-179341200 -14400 1 EDT}
{-163620000 -18000 0 EST}
{-147891600 -14400 1 EDT}
{-131565600 -18000 0 EST}
{-116442000 -14400 1 EDT}
{-100116000 -18000 0 EST}
{-84387600 -14400 1 EDT}
{-68666400 -18000 0 EST}
{-52938000 -14400 1 EDT}
{-37216800 -18000 0 EST}
{-21488400 -14400 1 EDT}
{-5767200 -18000 0 EST}
{9961200 -14400 1 EDT}
{25682400 -18000 0 EST}
{41410800 -14400 1 EDT}
{57736800 -18000 0 EST}
{73465200 -14400 1 EDT}
{89186400 -18000 0 EST}
{104914800 -14400 1 EDT}
{120636000 -18000 0 EST}
{126248400 -18000 0 EST}
{136364400 -14400 1 EDT}
{152085600 -18000 0 EST}
{167814000 -14400 1 EDT}
{183535200 -18000 0 EST}
{199263600 -14400 1 EDT}
{215589600 -18000 0 EST}
{230713200 -14400 1 EDT}
{247039200 -18000 0 EST}
{262767600 -14400 1 EDT}
{278488800 -18000 0 EST}
{294217200 -14400 1 EDT}
{309938400 -18000 0 EST}
{325666800 -14400 1 EDT}
{341388000 -18000 0 EST}
{357116400 -14400 1 EDT}
{372837600 -18000 0 EST}
{388566000 -14400 1 EDT}
{404892000 -18000 0 EST}
{420015600 -14400 1 EDT}
{436341600 -18000 0 EST}
{452070000 -14400 1 EDT}
{467791200 -18000 0 EST}
{483519600 -14400 1 EDT}
{499240800 -18000 0 EST}
{514969200 -14400 1 EDT}
{530690400 -18000 0 EST}
{544604400 -14400 1 EDT}
{562140000 -18000 0 EST}
{576054000 -14400 1 EDT}
{594194400 -18000 0 EST}
{607503600 -14400 1 EDT}
{625644000 -18000 0 EST}
{638953200 -14400 1 EDT}
{657093600 -18000 0 EST}
{671007600 -14400 1 EDT}
{688543200 -18000 0 EST}
{702457200 -14400 1 EDT}
{719992800 -18000 0 EST}
{733906800 -14400 1 EDT}
{752047200 -18000 0 EST}
{765356400 -14400 1 EDT}
{783496800 -18000 0 EST}
{796806000 -14400 1 EDT}
{814946400 -18000 0 EST}
{828860400 -14400 1 EDT}
{846396000 -18000 0 EST}
{860310000 -14400 1 EDT}
{877845600 -18000 0 EST}
{891759600 -14400 1 EDT}
{909295200 -18000 0 EST}
{923209200 -14400 1 EDT}
{941349600 -18000 0 EST}
{954658800 -14400 1 EDT}
{972799200 -18000 0 EST}
{986108400 -14400 1 EDT}
{1004248800 -18000 0 EST}
{1018162800 -14400 1 EDT}
{1035698400 -18000 0 EST}
{1049612400 -14400 1 EDT}
{1067148000 -18000 0 EST}
{1081062000 -14400 1 EDT}
{1099202400 -18000 0 EST}
{1112511600 -14400 1 EDT}
{1130652000 -18000 0 EST}
{1143961200 -14400 1 EDT}
{1162101600 -18000 0 EST}
{1173596400 -14400 1 EDT}
{1194156000 -18000 0 EST}
{1205046000 -14400 1 EDT}
{1225605600 -18000 0 EST}
{1236495600 -14400 1 EDT}
{1257055200 -18000 0 EST}
{1268550000 -14400 1 EDT}
{1289109600 -18000 0 EST}
{1299999600 -14400 1 EDT}
{1320559200 -18000 0 EST}
{1331449200 -14400 1 EDT}
{1352008800 -18000 0 EST}
{1362898800 -14400 1 EDT}
{1383458400 -18000 0 EST}
{1394348400 -14400 1 EDT}
{1414908000 -18000 0 EST}
{1425798000 -14400 1 EDT}
{1446357600 -18000 0 EST}
{1457852400 -14400 1 EDT}
{1478412000 -18000 0 EST}
{1489302000 -14400 1 EDT}
{1509861600 -18000 0 EST}
{1520751600 -14400 1 EDT}
{1541311200 -18000 0 EST}
{1552201200 -14400 1 EDT}
{1572760800 -18000 0 EST}
{1583650800 -14400 1 EDT}
{1604210400 -18000 0 EST}
{1615705200 -14400 1 EDT}
{1636264800 -18000 0 EST}
{1647154800 -14400 1 EDT}
{1667714400 -18000 0 EST}
{1678604400 -14400 1 EDT}
{1699164000 -18000 0 EST}
{1710054000 -14400 1 EDT}
{1730613600 -18000 0 EST}
{1741503600 -14400 1 EDT}
{1762063200 -18000 0 EST}
{1772953200 -14400 1 EDT}
{1793512800 -18000 0 EST}
{1805007600 -14400 1 EDT}
{1825567200 -18000 0 EST}
{1836457200 -14400 1 EDT}
{1857016800 -18000 0 EST}
{1867906800 -14400 1 EDT}
{1888466400 -18000 0 EST}
{1899356400 -14400 1 EDT}
{1919916000 -18000 0 EST}
{1930806000 -14400 1 EDT}
{1951365600 -18000 0 EST}
{1962860400 -14400 1 EDT}
{1983420000 -18000 0 EST}
{1994310000 -14400 1 EDT}
{2014869600 -18000 0 EST}
{2025759600 -14400 1 EDT}
{2046319200 -18000 0 EST}
{2057209200 -14400 1 EDT}
{2077768800 -18000 0 EST}
{2088658800 -14400 1 EDT}
{2109218400 -18000 0 EST}
{2120108400 -14400 1 EDT}
{2140668000 -18000 0 EST}
{2152162800 -14400 1 EDT}
{2172722400 -18000 0 EST}
{2183612400 -14400 1 EDT}
{2204172000 -18000 0 EST}
{2215062000 -14400 1 EDT}
{2235621600 -18000 0 EST}
{2246511600 -14400 1 EDT}
{2267071200 -18000 0 EST}
{2277961200 -14400 1 EDT}
{2298520800 -18000 0 EST}
{2309410800 -14400 1 EDT}
{2329970400 -18000 0 EST}
{2341465200 -14400 1 EDT}
{2362024800 -18000 0 EST}
{2372914800 -14400 1 EDT}
{2393474400 -18000 0 EST}
{2404364400 -14400 1 EDT}
{2424924000 -18000 0 EST}
{2435814000 -14400 1 EDT}
{2456373600 -18000 0 EST}
{2467263600 -14400 1 EDT}
{2487823200 -18000 0 EST}
{2499318000 -14400 1 EDT}
{2519877600 -18000 0 EST}
{2530767600 -14400 1 EDT}
{2551327200 -18000 0 EST}
{2562217200 -14400 1 EDT}
{2582776800 -18000 0 EST}
{2593666800 -14400 1 EDT}
{2614226400 -18000 0 EST}
{2625116400 -14400 1 EDT}
{2645676000 -18000 0 EST}
{2656566000 -14400 1 EDT}
{2677125600 -18000 0 EST}
{2688620400 -14400 1 EDT}
{2709180000 -18000 0 EST}
{2720070000 -14400 1 EDT}
{2740629600 -18000 0 EST}
{2751519600 -14400 1 EDT}
{2772079200 -18000 0 EST}
{2782969200 -14400 1 EDT}
{2803528800 -18000 0 EST}
{2814418800 -14400 1 EDT}
{2834978400 -18000 0 EST}
{2846473200 -14400 1 EDT}
{2867032800 -18000 0 EST}
{2877922800 -14400 1 EDT}
{2898482400 -18000 0 EST}
{2909372400 -14400 1 EDT}
{2929932000 -18000 0 EST}
{2940822000 -14400 1 EDT}
{2961381600 -18000 0 EST}
{2972271600 -14400 1 EDT}
{2992831200 -18000 0 EST}
{3003721200 -14400 1 EDT}
{3024280800 -18000 0 EST}
{3035775600 -14400 1 EDT}
{3056335200 -18000 0 EST}
{3067225200 -14400 1 EDT}
{3087784800 -18000 0 EST}
{3098674800 -14400 1 EDT}
{3119234400 -18000 0 EST}
{3130124400 -14400 1 EDT}
{3150684000 -18000 0 EST}
{3161574000 -14400 1 EDT}
{3182133600 -18000 0 EST}
{3193023600 -14400 1 EDT}
{3213583200 -18000 0 EST}
{3225078000 -14400 1 EDT}
{3245637600 -18000 0 EST}
{3256527600 -14400 1 EDT}
{3277087200 -18000 0 EST}
{3287977200 -14400 1 EDT}
{3308536800 -18000 0 EST}
{3319426800 -14400 1 EDT}
{3339986400 -18000 0 EST}
{3350876400 -14400 1 EDT}
{3371436000 -18000 0 EST}
{3382930800 -14400 1 EDT}
{3403490400 -18000 0 EST}
{3414380400 -14400 1 EDT}
{3434940000 -18000 0 EST}
{3445830000 -14400 1 EDT}
{3466389600 -18000 0 EST}
{3477279600 -14400 1 EDT}
{3497839200 -18000 0 EST}
{3508729200 -14400 1 EDT}
{3529288800 -18000 0 EST}
{3540178800 -14400 1 EDT}
{3560738400 -18000 0 EST}
{3572233200 -14400 1 EDT}
{3592792800 -18000 0 EST}
{3603682800 -14400 1 EDT}
{3624242400 -18000 0 EST}
{3635132400 -14400 1 EDT}
{3655692000 -18000 0 EST}
{3666582000 -14400 1 EDT}
{3687141600 -18000 0 EST}
{3698031600 -14400 1 EDT}
{3718591200 -18000 0 EST}
{3730086000 -14400 1 EDT}
{3750645600 -18000 0 EST}
{3761535600 -14400 1 EDT}
{3782095200 -18000 0 EST}
{3792985200 -14400 1 EDT}
{3813544800 -18000 0 EST}
{3824434800 -14400 1 EDT}
{3844994400 -18000 0 EST}
{3855884400 -14400 1 EDT}
{3876444000 -18000 0 EST}
{3887334000 -14400 1 EDT}
{3907893600 -18000 0 EST}
{3919388400 -14400 1 EDT}
{3939948000 -18000 0 EST}
{3950838000 -14400 1 EDT}
{3971397600 -18000 0 EST}
{3982287600 -14400 1 EDT}
{4002847200 -18000 0 EST}
{4013737200 -14400 1 EDT}
{4034296800 -18000 0 EST}
{4045186800 -14400 1 EDT}
{4065746400 -18000 0 EST}
{4076636400 -14400 1 EDT}
{4097196000 -18000 0 EST}
if {![info exists TZData(America/Toronto)]} {
LoadTimeZoneFile America/Toronto
}
set TZData(:America/Montreal) $TZData(:America/Toronto)
+10 -179
View File
@@ -3,9 +3,9 @@
set TZData(:America/Santiago) {
{-9223372036854775808 -16966 0 LMT}
{-2524504634 -16966 0 SMT}
{-1893439034 -18000 0 CLT}
{-1892661434 -18000 0 CLT}
{-1688410800 -16966 0 SMT}
{-1619983034 -14400 0 CLT}
{-1619205434 -14400 0 CLT}
{-1593806400 -16966 0 SMT}
{-1335986234 -18000 0 CLT}
{-1335985200 -14400 1 CLST}
@@ -18,13 +18,13 @@ set TZData(:America/Santiago) {
{-1222977600 -18000 0 CLT}
{-1209754800 -14400 1 CLST}
{-1191355200 -18000 0 CLT}
{-1178132400 -14400 1 CLST}
{-1178132400 -14400 0 CLT}
{-870552000 -18000 0 CLT}
{-865278000 -14400 1 CLST}
{-740520000 -14400 1 CLST}
{-736376400 -18000 0 CLT}
{-865278000 -14400 0 CLT}
{-740520000 -10800 1 CLST}
{-736376400 -14400 0 CLT}
{-718056000 -18000 0 CLT}
{-713646000 -14400 0 CLT}
{-713649600 -14400 0 CLT}
{-36619200 -10800 1 CLST}
{-23922000 -14400 0 CLT}
{-3355200 -10800 1 CLST}
@@ -65,10 +65,10 @@ set TZData(:America/Santiago) {
{545194800 -14400 0 CLT}
{560923200 -10800 1 CLST}
{574225200 -14400 0 CLT}
{591768000 -10800 1 CLST}
{592372800 -10800 1 CLST}
{605674800 -14400 0 CLT}
{624427200 -10800 1 CLST}
{637729200 -14400 0 CLT}
{637124400 -14400 0 CLT}
{653457600 -10800 1 CLST}
{668574000 -14400 0 CLT}
{687326400 -10800 1 CLST}
@@ -118,174 +118,5 @@ set TZData(:America/Santiago) {
{1378612800 -10800 1 CLST}
{1398567600 -14400 0 CLT}
{1410062400 -10800 1 CLST}
{1430017200 -14400 0 CLT}
{1441512000 -10800 1 CLST}
{1461466800 -14400 0 CLT}
{1472961600 -10800 1 CLST}
{1492916400 -14400 0 CLT}
{1504411200 -10800 1 CLST}
{1524970800 -14400 0 CLT}
{1535860800 -10800 1 CLST}
{1556420400 -14400 0 CLT}
{1567915200 -10800 1 CLST}
{1587870000 -14400 0 CLT}
{1599364800 -10800 1 CLST}
{1619319600 -14400 0 CLT}
{1630814400 -10800 1 CLST}
{1650769200 -14400 0 CLT}
{1662264000 -10800 1 CLST}
{1682218800 -14400 0 CLT}
{1693713600 -10800 1 CLST}
{1714273200 -14400 0 CLT}
{1725768000 -10800 1 CLST}
{1745722800 -14400 0 CLT}
{1757217600 -10800 1 CLST}
{1777172400 -14400 0 CLT}
{1788667200 -10800 1 CLST}
{1808622000 -14400 0 CLT}
{1820116800 -10800 1 CLST}
{1840071600 -14400 0 CLT}
{1851566400 -10800 1 CLST}
{1872126000 -14400 0 CLT}
{1883016000 -10800 1 CLST}
{1903575600 -14400 0 CLT}
{1915070400 -10800 1 CLST}
{1935025200 -14400 0 CLT}
{1946520000 -10800 1 CLST}
{1966474800 -14400 0 CLT}
{1977969600 -10800 1 CLST}
{1997924400 -14400 0 CLT}
{2009419200 -10800 1 CLST}
{2029374000 -14400 0 CLT}
{2040868800 -10800 1 CLST}
{2061428400 -14400 0 CLT}
{2072318400 -10800 1 CLST}
{2092878000 -14400 0 CLT}
{2104372800 -10800 1 CLST}
{2124327600 -14400 0 CLT}
{2135822400 -10800 1 CLST}
{2155777200 -14400 0 CLT}
{2167272000 -10800 1 CLST}
{2187226800 -14400 0 CLT}
{2198721600 -10800 1 CLST}
{2219281200 -14400 0 CLT}
{2230171200 -10800 1 CLST}
{2250730800 -14400 0 CLT}
{2262225600 -10800 1 CLST}
{2282180400 -14400 0 CLT}
{2293675200 -10800 1 CLST}
{2313630000 -14400 0 CLT}
{2325124800 -10800 1 CLST}
{2345079600 -14400 0 CLT}
{2356574400 -10800 1 CLST}
{2376529200 -14400 0 CLT}
{2388024000 -10800 1 CLST}
{2408583600 -14400 0 CLT}
{2419473600 -10800 1 CLST}
{2440033200 -14400 0 CLT}
{2451528000 -10800 1 CLST}
{2471482800 -14400 0 CLT}
{2482977600 -10800 1 CLST}
{2502932400 -14400 0 CLT}
{2514427200 -10800 1 CLST}
{2534382000 -14400 0 CLT}
{2545876800 -10800 1 CLST}
{2565831600 -14400 0 CLT}
{2577326400 -10800 1 CLST}
{2597886000 -14400 0 CLT}
{2609380800 -10800 1 CLST}
{2629335600 -14400 0 CLT}
{2640830400 -10800 1 CLST}
{2660785200 -14400 0 CLT}
{2672280000 -10800 1 CLST}
{2692234800 -14400 0 CLT}
{2703729600 -10800 1 CLST}
{2723684400 -14400 0 CLT}
{2735179200 -10800 1 CLST}
{2755738800 -14400 0 CLT}
{2766628800 -10800 1 CLST}
{2787188400 -14400 0 CLT}
{2798683200 -10800 1 CLST}
{2818638000 -14400 0 CLT}
{2830132800 -10800 1 CLST}
{2850087600 -14400 0 CLT}
{2861582400 -10800 1 CLST}
{2881537200 -14400 0 CLT}
{2893032000 -10800 1 CLST}
{2912986800 -14400 0 CLT}
{2924481600 -10800 1 CLST}
{2945041200 -14400 0 CLT}
{2955931200 -10800 1 CLST}
{2976490800 -14400 0 CLT}
{2987985600 -10800 1 CLST}
{3007940400 -14400 0 CLT}
{3019435200 -10800 1 CLST}
{3039390000 -14400 0 CLT}
{3050884800 -10800 1 CLST}
{3070839600 -14400 0 CLT}
{3082334400 -10800 1 CLST}
{3102894000 -14400 0 CLT}
{3113784000 -10800 1 CLST}
{3134343600 -14400 0 CLT}
{3145838400 -10800 1 CLST}
{3165793200 -14400 0 CLT}
{3177288000 -10800 1 CLST}
{3197242800 -14400 0 CLT}
{3208737600 -10800 1 CLST}
{3228692400 -14400 0 CLT}
{3240187200 -10800 1 CLST}
{3260142000 -14400 0 CLT}
{3271636800 -10800 1 CLST}
{3292196400 -14400 0 CLT}
{3303086400 -10800 1 CLST}
{3323646000 -14400 0 CLT}
{3335140800 -10800 1 CLST}
{3355095600 -14400 0 CLT}
{3366590400 -10800 1 CLST}
{3386545200 -14400 0 CLT}
{3398040000 -10800 1 CLST}
{3417994800 -14400 0 CLT}
{3429489600 -10800 1 CLST}
{3449444400 -14400 0 CLT}
{3460939200 -10800 1 CLST}
{3481498800 -14400 0 CLT}
{3492993600 -10800 1 CLST}
{3512948400 -14400 0 CLT}
{3524443200 -10800 1 CLST}
{3544398000 -14400 0 CLT}
{3555892800 -10800 1 CLST}
{3575847600 -14400 0 CLT}
{3587342400 -10800 1 CLST}
{3607297200 -14400 0 CLT}
{3618792000 -10800 1 CLST}
{3639351600 -14400 0 CLT}
{3650241600 -10800 1 CLST}
{3670801200 -14400 0 CLT}
{3682296000 -10800 1 CLST}
{3702250800 -14400 0 CLT}
{3713745600 -10800 1 CLST}
{3733700400 -14400 0 CLT}
{3745195200 -10800 1 CLST}
{3765150000 -14400 0 CLT}
{3776644800 -10800 1 CLST}
{3796599600 -14400 0 CLT}
{3808094400 -10800 1 CLST}
{3828654000 -14400 0 CLT}
{3839544000 -10800 1 CLST}
{3860103600 -14400 0 CLT}
{3871598400 -10800 1 CLST}
{3891553200 -14400 0 CLT}
{3903048000 -10800 1 CLST}
{3923002800 -14400 0 CLT}
{3934497600 -10800 1 CLST}
{3954452400 -14400 0 CLT}
{3965947200 -10800 1 CLST}
{3986506800 -14400 0 CLT}
{3997396800 -10800 1 CLST}
{4017956400 -14400 0 CLT}
{4029451200 -10800 1 CLST}
{4049406000 -14400 0 CLT}
{4060900800 -10800 1 CLST}
{4080855600 -14400 0 CLT}
{4092350400 -10800 1 CLST}
{1430017200 -10800 0 CLT}
}
+3 -172
View File
@@ -28,10 +28,10 @@ set TZData(:Antarctica/Palmer) {
{545194800 -14400 0 CLT}
{560923200 -10800 1 CLST}
{574225200 -14400 0 CLT}
{591768000 -10800 1 CLST}
{592372800 -10800 1 CLST}
{605674800 -14400 0 CLT}
{624427200 -10800 1 CLST}
{637729200 -14400 0 CLT}
{637124400 -14400 0 CLT}
{653457600 -10800 1 CLST}
{668574000 -14400 0 CLT}
{687326400 -10800 1 CLST}
@@ -81,174 +81,5 @@ set TZData(:Antarctica/Palmer) {
{1378612800 -10800 1 CLST}
{1398567600 -14400 0 CLT}
{1410062400 -10800 1 CLST}
{1430017200 -14400 0 CLT}
{1441512000 -10800 1 CLST}
{1461466800 -14400 0 CLT}
{1472961600 -10800 1 CLST}
{1492916400 -14400 0 CLT}
{1504411200 -10800 1 CLST}
{1524970800 -14400 0 CLT}
{1535860800 -10800 1 CLST}
{1556420400 -14400 0 CLT}
{1567915200 -10800 1 CLST}
{1587870000 -14400 0 CLT}
{1599364800 -10800 1 CLST}
{1619319600 -14400 0 CLT}
{1630814400 -10800 1 CLST}
{1650769200 -14400 0 CLT}
{1662264000 -10800 1 CLST}
{1682218800 -14400 0 CLT}
{1693713600 -10800 1 CLST}
{1714273200 -14400 0 CLT}
{1725768000 -10800 1 CLST}
{1745722800 -14400 0 CLT}
{1757217600 -10800 1 CLST}
{1777172400 -14400 0 CLT}
{1788667200 -10800 1 CLST}
{1808622000 -14400 0 CLT}
{1820116800 -10800 1 CLST}
{1840071600 -14400 0 CLT}
{1851566400 -10800 1 CLST}
{1872126000 -14400 0 CLT}
{1883016000 -10800 1 CLST}
{1903575600 -14400 0 CLT}
{1915070400 -10800 1 CLST}
{1935025200 -14400 0 CLT}
{1946520000 -10800 1 CLST}
{1966474800 -14400 0 CLT}
{1977969600 -10800 1 CLST}
{1997924400 -14400 0 CLT}
{2009419200 -10800 1 CLST}
{2029374000 -14400 0 CLT}
{2040868800 -10800 1 CLST}
{2061428400 -14400 0 CLT}
{2072318400 -10800 1 CLST}
{2092878000 -14400 0 CLT}
{2104372800 -10800 1 CLST}
{2124327600 -14400 0 CLT}
{2135822400 -10800 1 CLST}
{2155777200 -14400 0 CLT}
{2167272000 -10800 1 CLST}
{2187226800 -14400 0 CLT}
{2198721600 -10800 1 CLST}
{2219281200 -14400 0 CLT}
{2230171200 -10800 1 CLST}
{2250730800 -14400 0 CLT}
{2262225600 -10800 1 CLST}
{2282180400 -14400 0 CLT}
{2293675200 -10800 1 CLST}
{2313630000 -14400 0 CLT}
{2325124800 -10800 1 CLST}
{2345079600 -14400 0 CLT}
{2356574400 -10800 1 CLST}
{2376529200 -14400 0 CLT}
{2388024000 -10800 1 CLST}
{2408583600 -14400 0 CLT}
{2419473600 -10800 1 CLST}
{2440033200 -14400 0 CLT}
{2451528000 -10800 1 CLST}
{2471482800 -14400 0 CLT}
{2482977600 -10800 1 CLST}
{2502932400 -14400 0 CLT}
{2514427200 -10800 1 CLST}
{2534382000 -14400 0 CLT}
{2545876800 -10800 1 CLST}
{2565831600 -14400 0 CLT}
{2577326400 -10800 1 CLST}
{2597886000 -14400 0 CLT}
{2609380800 -10800 1 CLST}
{2629335600 -14400 0 CLT}
{2640830400 -10800 1 CLST}
{2660785200 -14400 0 CLT}
{2672280000 -10800 1 CLST}
{2692234800 -14400 0 CLT}
{2703729600 -10800 1 CLST}
{2723684400 -14400 0 CLT}
{2735179200 -10800 1 CLST}
{2755738800 -14400 0 CLT}
{2766628800 -10800 1 CLST}
{2787188400 -14400 0 CLT}
{2798683200 -10800 1 CLST}
{2818638000 -14400 0 CLT}
{2830132800 -10800 1 CLST}
{2850087600 -14400 0 CLT}
{2861582400 -10800 1 CLST}
{2881537200 -14400 0 CLT}
{2893032000 -10800 1 CLST}
{2912986800 -14400 0 CLT}
{2924481600 -10800 1 CLST}
{2945041200 -14400 0 CLT}
{2955931200 -10800 1 CLST}
{2976490800 -14400 0 CLT}
{2987985600 -10800 1 CLST}
{3007940400 -14400 0 CLT}
{3019435200 -10800 1 CLST}
{3039390000 -14400 0 CLT}
{3050884800 -10800 1 CLST}
{3070839600 -14400 0 CLT}
{3082334400 -10800 1 CLST}
{3102894000 -14400 0 CLT}
{3113784000 -10800 1 CLST}
{3134343600 -14400 0 CLT}
{3145838400 -10800 1 CLST}
{3165793200 -14400 0 CLT}
{3177288000 -10800 1 CLST}
{3197242800 -14400 0 CLT}
{3208737600 -10800 1 CLST}
{3228692400 -14400 0 CLT}
{3240187200 -10800 1 CLST}
{3260142000 -14400 0 CLT}
{3271636800 -10800 1 CLST}
{3292196400 -14400 0 CLT}
{3303086400 -10800 1 CLST}
{3323646000 -14400 0 CLT}
{3335140800 -10800 1 CLST}
{3355095600 -14400 0 CLT}
{3366590400 -10800 1 CLST}
{3386545200 -14400 0 CLT}
{3398040000 -10800 1 CLST}
{3417994800 -14400 0 CLT}
{3429489600 -10800 1 CLST}
{3449444400 -14400 0 CLT}
{3460939200 -10800 1 CLST}
{3481498800 -14400 0 CLT}
{3492993600 -10800 1 CLST}
{3512948400 -14400 0 CLT}
{3524443200 -10800 1 CLST}
{3544398000 -14400 0 CLT}
{3555892800 -10800 1 CLST}
{3575847600 -14400 0 CLT}
{3587342400 -10800 1 CLST}
{3607297200 -14400 0 CLT}
{3618792000 -10800 1 CLST}
{3639351600 -14400 0 CLT}
{3650241600 -10800 1 CLST}
{3670801200 -14400 0 CLT}
{3682296000 -10800 1 CLST}
{3702250800 -14400 0 CLT}
{3713745600 -10800 1 CLST}
{3733700400 -14400 0 CLT}
{3745195200 -10800 1 CLST}
{3765150000 -14400 0 CLT}
{3776644800 -10800 1 CLST}
{3796599600 -14400 0 CLT}
{3808094400 -10800 1 CLST}
{3828654000 -14400 0 CLT}
{3839544000 -10800 1 CLST}
{3860103600 -14400 0 CLT}
{3871598400 -10800 1 CLST}
{3891553200 -14400 0 CLT}
{3903048000 -10800 1 CLST}
{3923002800 -14400 0 CLT}
{3934497600 -10800 1 CLST}
{3954452400 -14400 0 CLT}
{3965947200 -10800 1 CLST}
{3986506800 -14400 0 CLT}
{3997396800 -10800 1 CLST}
{4017956400 -14400 0 CLT}
{4029451200 -10800 1 CLST}
{4049406000 -14400 0 CLT}
{4060900800 -10800 1 CLST}
{4080855600 -14400 0 CLT}
{4092350400 -10800 1 CLST}
{1430017200 -10800 0 CLT}
}
+3 -4
View File
@@ -1,6 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Asia/Aden) {
{-9223372036854775808 10794 0 LMT}
{-631162794 10800 0 AST}
if {![info exists TZData(Asia/Riyadh)]} {
LoadTimeZoneFile Asia/Riyadh
}
set TZData(:Asia/Aden) $TZData(:Asia/Riyadh)
+3 -5
View File
@@ -1,7 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Asia/Bahrain) {
{-9223372036854775808 12140 0 LMT}
{-1577935340 14400 0 GST}
{76190400 10800 0 AST}
if {![info exists TZData(Asia/Qatar)]} {
LoadTimeZoneFile Asia/Qatar
}
set TZData(:Asia/Bahrain) $TZData(:Asia/Qatar)
+171
View File
@@ -48,4 +48,175 @@ set TZData(:Asia/Choibalsan) {
{1127491200 32400 0 CHOT}
{1143219600 36000 1 CHOST}
{1159545600 32400 0 CHOT}
{1206889200 28800 0 CHOT}
{1427479200 32400 1 CHOST}
{1443193200 28800 0 CHOT}
{1458928800 32400 1 CHOST}
{1474642800 28800 0 CHOT}
{1490378400 32400 1 CHOST}
{1506697200 28800 0 CHOT}
{1522432800 32400 1 CHOST}
{1538146800 28800 0 CHOT}
{1553882400 32400 1 CHOST}
{1569596400 28800 0 CHOT}
{1585332000 32400 1 CHOST}
{1601046000 28800 0 CHOT}
{1616781600 32400 1 CHOST}
{1632495600 28800 0 CHOT}
{1648231200 32400 1 CHOST}
{1663945200 28800 0 CHOT}
{1679680800 32400 1 CHOST}
{1695999600 28800 0 CHOT}
{1711735200 32400 1 CHOST}
{1727449200 28800 0 CHOT}
{1743184800 32400 1 CHOST}
{1758898800 28800 0 CHOT}
{1774634400 32400 1 CHOST}
{1790348400 28800 0 CHOT}
{1806084000 32400 1 CHOST}
{1821798000 28800 0 CHOT}
{1837533600 32400 1 CHOST}
{1853852400 28800 0 CHOT}
{1869588000 32400 1 CHOST}
{1885302000 28800 0 CHOT}
{1901037600 32400 1 CHOST}
{1916751600 28800 0 CHOT}
{1932487200 32400 1 CHOST}
{1948201200 28800 0 CHOT}
{1963936800 32400 1 CHOST}
{1979650800 28800 0 CHOT}
{1995386400 32400 1 CHOST}
{2011100400 28800 0 CHOT}
{2026836000 32400 1 CHOST}
{2043154800 28800 0 CHOT}
{2058890400 32400 1 CHOST}
{2074604400 28800 0 CHOT}
{2090340000 32400 1 CHOST}
{2106054000 28800 0 CHOT}
{2121789600 32400 1 CHOST}
{2137503600 28800 0 CHOT}
{2153239200 32400 1 CHOST}
{2168953200 28800 0 CHOT}
{2184688800 32400 1 CHOST}
{2200402800 28800 0 CHOT}
{2216743200 32400 1 CHOST}
{2232457200 28800 0 CHOT}
{2248192800 32400 1 CHOST}
{2263906800 28800 0 CHOT}
{2279642400 32400 1 CHOST}
{2295356400 28800 0 CHOT}
{2311092000 32400 1 CHOST}
{2326806000 28800 0 CHOT}
{2342541600 32400 1 CHOST}
{2358255600 28800 0 CHOT}
{2373991200 32400 1 CHOST}
{2390310000 28800 0 CHOT}
{2406045600 32400 1 CHOST}
{2421759600 28800 0 CHOT}
{2437495200 32400 1 CHOST}
{2453209200 28800 0 CHOT}
{2468944800 32400 1 CHOST}
{2484658800 28800 0 CHOT}
{2500394400 32400 1 CHOST}
{2516108400 28800 0 CHOT}
{2531844000 32400 1 CHOST}
{2547558000 28800 0 CHOT}
{2563293600 32400 1 CHOST}
{2579612400 28800 0 CHOT}
{2595348000 32400 1 CHOST}
{2611062000 28800 0 CHOT}
{2626797600 32400 1 CHOST}
{2642511600 28800 0 CHOT}
{2658247200 32400 1 CHOST}
{2673961200 28800 0 CHOT}
{2689696800 32400 1 CHOST}
{2705410800 28800 0 CHOT}
{2721146400 32400 1 CHOST}
{2737465200 28800 0 CHOT}
{2753200800 32400 1 CHOST}
{2768914800 28800 0 CHOT}
{2784650400 32400 1 CHOST}
{2800364400 28800 0 CHOT}
{2816100000 32400 1 CHOST}
{2831814000 28800 0 CHOT}
{2847549600 32400 1 CHOST}
{2863263600 28800 0 CHOT}
{2878999200 32400 1 CHOST}
{2894713200 28800 0 CHOT}
{2910448800 32400 1 CHOST}
{2926767600 28800 0 CHOT}
{2942503200 32400 1 CHOST}
{2958217200 28800 0 CHOT}
{2973952800 32400 1 CHOST}
{2989666800 28800 0 CHOT}
{3005402400 32400 1 CHOST}
{3021116400 28800 0 CHOT}
{3036852000 32400 1 CHOST}
{3052566000 28800 0 CHOT}
{3068301600 32400 1 CHOST}
{3084015600 28800 0 CHOT}
{3100356000 32400 1 CHOST}
{3116070000 28800 0 CHOT}
{3131805600 32400 1 CHOST}
{3147519600 28800 0 CHOT}
{3163255200 32400 1 CHOST}
{3178969200 28800 0 CHOT}
{3194704800 32400 1 CHOST}
{3210418800 28800 0 CHOT}
{3226154400 32400 1 CHOST}
{3241868400 28800 0 CHOT}
{3257604000 32400 1 CHOST}
{3273922800 28800 0 CHOT}
{3289658400 32400 1 CHOST}
{3305372400 28800 0 CHOT}
{3321108000 32400 1 CHOST}
{3336822000 28800 0 CHOT}
{3352557600 32400 1 CHOST}
{3368271600 28800 0 CHOT}
{3384007200 32400 1 CHOST}
{3399721200 28800 0 CHOT}
{3415456800 32400 1 CHOST}
{3431170800 28800 0 CHOT}
{3446906400 32400 1 CHOST}
{3463225200 28800 0 CHOT}
{3478960800 32400 1 CHOST}
{3494674800 28800 0 CHOT}
{3510410400 32400 1 CHOST}
{3526124400 28800 0 CHOT}
{3541860000 32400 1 CHOST}
{3557574000 28800 0 CHOT}
{3573309600 32400 1 CHOST}
{3589023600 28800 0 CHOT}
{3604759200 32400 1 CHOST}
{3621078000 28800 0 CHOT}
{3636813600 32400 1 CHOST}
{3652527600 28800 0 CHOT}
{3668263200 32400 1 CHOST}
{3683977200 28800 0 CHOT}
{3699712800 32400 1 CHOST}
{3715426800 28800 0 CHOT}
{3731162400 32400 1 CHOST}
{3746876400 28800 0 CHOT}
{3762612000 32400 1 CHOST}
{3778326000 28800 0 CHOT}
{3794061600 32400 1 CHOST}
{3810380400 28800 0 CHOT}
{3826116000 32400 1 CHOST}
{3841830000 28800 0 CHOT}
{3857565600 32400 1 CHOST}
{3873279600 28800 0 CHOT}
{3889015200 32400 1 CHOST}
{3904729200 28800 0 CHOT}
{3920464800 32400 1 CHOST}
{3936178800 28800 0 CHOT}
{3951914400 32400 1 CHOST}
{3967628400 28800 0 CHOT}
{3983968800 32400 1 CHOST}
{3999682800 28800 0 CHOT}
{4015418400 32400 1 CHOST}
{4031132400 28800 0 CHOT}
{4046868000 32400 1 CHOST}
{4062582000 28800 0 CHOT}
{4078317600 32400 1 CHOST}
{4094031600 28800 0 CHOT}
}
+171 -171
View File
@@ -104,175 +104,175 @@ set TZData(:Asia/Gaza) {
{1364508000 10800 1 EEST}
{1380229200 7200 0 EET}
{1395957600 10800 1 EEST}
{1411678800 7200 0 EET}
{1427407200 10800 1 EEST}
{1443128400 7200 0 EET}
{1459461600 10800 1 EEST}
{1474578000 7200 0 EET}
{1490911200 10800 1 EEST}
{1506027600 7200 0 EET}
{1522360800 10800 1 EEST}
{1537477200 7200 0 EET}
{1553810400 10800 1 EEST}
{1569531600 7200 0 EET}
{1585260000 10800 1 EEST}
{1600981200 7200 0 EET}
{1616709600 10800 1 EEST}
{1632430800 7200 0 EET}
{1648764000 10800 1 EEST}
{1663880400 7200 0 EET}
{1680213600 10800 1 EEST}
{1695330000 7200 0 EET}
{1711663200 10800 1 EEST}
{1727384400 7200 0 EET}
{1743112800 10800 1 EEST}
{1758834000 7200 0 EET}
{1774562400 10800 1 EEST}
{1790283600 7200 0 EET}
{1806012000 10800 1 EEST}
{1821733200 7200 0 EET}
{1838066400 10800 1 EEST}
{1853182800 7200 0 EET}
{1869516000 10800 1 EEST}
{1884632400 7200 0 EET}
{1900965600 10800 1 EEST}
{1916686800 7200 0 EET}
{1932415200 10800 1 EEST}
{1948136400 7200 0 EET}
{1963864800 10800 1 EEST}
{1979586000 7200 0 EET}
{1995919200 10800 1 EEST}
{2011035600 7200 0 EET}
{2027368800 10800 1 EEST}
{2042485200 7200 0 EET}
{2058818400 10800 1 EEST}
{2073934800 7200 0 EET}
{2090268000 10800 1 EEST}
{2105989200 7200 0 EET}
{2121717600 10800 1 EEST}
{2137438800 7200 0 EET}
{2153167200 10800 1 EEST}
{2168888400 7200 0 EET}
{2185221600 10800 1 EEST}
{2200338000 7200 0 EET}
{2216671200 10800 1 EEST}
{2231787600 7200 0 EET}
{2248120800 10800 1 EEST}
{2263842000 7200 0 EET}
{2279570400 10800 1 EEST}
{2295291600 7200 0 EET}
{2311020000 10800 1 EEST}
{2326741200 7200 0 EET}
{2343074400 10800 1 EEST}
{2358190800 7200 0 EET}
{2374524000 10800 1 EEST}
{2389640400 7200 0 EET}
{2405973600 10800 1 EEST}
{2421090000 7200 0 EET}
{2437423200 10800 1 EEST}
{2453144400 7200 0 EET}
{2468872800 10800 1 EEST}
{2484594000 7200 0 EET}
{2500322400 10800 1 EEST}
{2516043600 7200 0 EET}
{2532376800 10800 1 EEST}
{2547493200 7200 0 EET}
{2563826400 10800 1 EEST}
{2578942800 7200 0 EET}
{2595276000 10800 1 EEST}
{2610997200 7200 0 EET}
{2626725600 10800 1 EEST}
{2642446800 7200 0 EET}
{2658175200 10800 1 EEST}
{2673896400 7200 0 EET}
{2689624800 10800 1 EEST}
{2705346000 7200 0 EET}
{2721679200 10800 1 EEST}
{2736795600 7200 0 EET}
{2753128800 10800 1 EEST}
{2768245200 7200 0 EET}
{2784578400 10800 1 EEST}
{2800299600 7200 0 EET}
{2816028000 10800 1 EEST}
{2831749200 7200 0 EET}
{2847477600 10800 1 EEST}
{2863198800 7200 0 EET}
{2879532000 10800 1 EEST}
{2894648400 7200 0 EET}
{2910981600 10800 1 EEST}
{2926098000 7200 0 EET}
{2942431200 10800 1 EEST}
{2957547600 7200 0 EET}
{2973880800 10800 1 EEST}
{2989602000 7200 0 EET}
{3005330400 10800 1 EEST}
{3021051600 7200 0 EET}
{3036780000 10800 1 EEST}
{3052501200 7200 0 EET}
{3068834400 10800 1 EEST}
{3083950800 7200 0 EET}
{3100284000 10800 1 EEST}
{3115400400 7200 0 EET}
{3131733600 10800 1 EEST}
{3147454800 7200 0 EET}
{3163183200 10800 1 EEST}
{3178904400 7200 0 EET}
{3194632800 10800 1 EEST}
{3210354000 7200 0 EET}
{3226687200 10800 1 EEST}
{3241803600 7200 0 EET}
{3258136800 10800 1 EEST}
{3273253200 7200 0 EET}
{3289586400 10800 1 EEST}
{3304702800 7200 0 EET}
{3321036000 10800 1 EEST}
{3336757200 7200 0 EET}
{3352485600 10800 1 EEST}
{3368206800 7200 0 EET}
{3383935200 10800 1 EEST}
{3399656400 7200 0 EET}
{3415989600 10800 1 EEST}
{3431106000 7200 0 EET}
{3447439200 10800 1 EEST}
{3462555600 7200 0 EET}
{3478888800 10800 1 EEST}
{3494610000 7200 0 EET}
{3510338400 10800 1 EEST}
{3526059600 7200 0 EET}
{3541788000 10800 1 EEST}
{3557509200 7200 0 EET}
{3573237600 10800 1 EEST}
{3588958800 7200 0 EET}
{3605292000 10800 1 EEST}
{3620408400 7200 0 EET}
{3636741600 10800 1 EEST}
{3651858000 7200 0 EET}
{3668191200 10800 1 EEST}
{3683912400 7200 0 EET}
{3699640800 10800 1 EEST}
{3715362000 7200 0 EET}
{3731090400 10800 1 EEST}
{3746811600 7200 0 EET}
{3763144800 10800 1 EEST}
{3778261200 7200 0 EET}
{3794594400 10800 1 EEST}
{3809710800 7200 0 EET}
{3826044000 10800 1 EEST}
{3841160400 7200 0 EET}
{3857493600 10800 1 EEST}
{3873214800 7200 0 EET}
{3888943200 10800 1 EEST}
{3904664400 7200 0 EET}
{3920392800 10800 1 EEST}
{3936114000 7200 0 EET}
{3952447200 10800 1 EEST}
{3967563600 7200 0 EET}
{3983896800 10800 1 EEST}
{3999013200 7200 0 EET}
{4015346400 10800 1 EEST}
{4031067600 7200 0 EET}
{4046796000 10800 1 EEST}
{4062517200 7200 0 EET}
{4078245600 10800 1 EEST}
{4093966800 7200 0 EET}
{1414098000 7200 0 EET}
{1427493600 10800 1 EEST}
{1445547600 7200 0 EET}
{1458943200 10800 1 EEST}
{1476997200 7200 0 EET}
{1490997600 10800 1 EEST}
{1509051600 7200 0 EET}
{1522447200 10800 1 EEST}
{1540501200 7200 0 EET}
{1553896800 10800 1 EEST}
{1571950800 7200 0 EET}
{1585346400 10800 1 EEST}
{1603400400 7200 0 EET}
{1616796000 10800 1 EEST}
{1634850000 7200 0 EET}
{1648245600 10800 1 EEST}
{1666299600 7200 0 EET}
{1680300000 10800 1 EEST}
{1698354000 7200 0 EET}
{1711749600 10800 1 EEST}
{1729803600 7200 0 EET}
{1743199200 10800 1 EEST}
{1761253200 7200 0 EET}
{1774648800 10800 1 EEST}
{1792702800 7200 0 EET}
{1806098400 10800 1 EEST}
{1824152400 7200 0 EET}
{1838152800 10800 1 EEST}
{1856206800 7200 0 EET}
{1869602400 10800 1 EEST}
{1887656400 7200 0 EET}
{1901052000 10800 1 EEST}
{1919106000 7200 0 EET}
{1932501600 10800 1 EEST}
{1950555600 7200 0 EET}
{1963951200 10800 1 EEST}
{1982005200 7200 0 EET}
{1995400800 10800 1 EEST}
{2013454800 7200 0 EET}
{2027455200 10800 1 EEST}
{2045509200 7200 0 EET}
{2058904800 10800 1 EEST}
{2076958800 7200 0 EET}
{2090354400 10800 1 EEST}
{2108408400 7200 0 EET}
{2121804000 10800 1 EEST}
{2139858000 7200 0 EET}
{2153253600 10800 1 EEST}
{2171307600 7200 0 EET}
{2184703200 10800 1 EEST}
{2202757200 7200 0 EET}
{2216757600 10800 1 EEST}
{2234811600 7200 0 EET}
{2248207200 10800 1 EEST}
{2266261200 7200 0 EET}
{2279656800 10800 1 EEST}
{2297710800 7200 0 EET}
{2311106400 10800 1 EEST}
{2329160400 7200 0 EET}
{2342556000 10800 1 EEST}
{2360610000 7200 0 EET}
{2374610400 10800 1 EEST}
{2392664400 7200 0 EET}
{2406060000 10800 1 EEST}
{2424114000 7200 0 EET}
{2437509600 10800 1 EEST}
{2455563600 7200 0 EET}
{2468959200 10800 1 EEST}
{2487013200 7200 0 EET}
{2500408800 10800 1 EEST}
{2518462800 7200 0 EET}
{2531858400 10800 1 EEST}
{2549912400 7200 0 EET}
{2563912800 10800 1 EEST}
{2581966800 7200 0 EET}
{2595362400 10800 1 EEST}
{2613416400 7200 0 EET}
{2626812000 10800 1 EEST}
{2644866000 7200 0 EET}
{2658261600 10800 1 EEST}
{2676315600 7200 0 EET}
{2689711200 10800 1 EEST}
{2707765200 7200 0 EET}
{2721765600 10800 1 EEST}
{2739819600 7200 0 EET}
{2753215200 10800 1 EEST}
{2771269200 7200 0 EET}
{2784664800 10800 1 EEST}
{2802718800 7200 0 EET}
{2816114400 10800 1 EEST}
{2834168400 7200 0 EET}
{2847564000 10800 1 EEST}
{2865618000 7200 0 EET}
{2879013600 10800 1 EEST}
{2897067600 7200 0 EET}
{2911068000 10800 1 EEST}
{2929122000 7200 0 EET}
{2942517600 10800 1 EEST}
{2960571600 7200 0 EET}
{2973967200 10800 1 EEST}
{2992021200 7200 0 EET}
{3005416800 10800 1 EEST}
{3023470800 7200 0 EET}
{3036866400 10800 1 EEST}
{3054920400 7200 0 EET}
{3068316000 10800 1 EEST}
{3086370000 7200 0 EET}
{3100370400 10800 1 EEST}
{3118424400 7200 0 EET}
{3131820000 10800 1 EEST}
{3149874000 7200 0 EET}
{3163269600 10800 1 EEST}
{3181323600 7200 0 EET}
{3194719200 10800 1 EEST}
{3212773200 7200 0 EET}
{3226168800 10800 1 EEST}
{3244222800 7200 0 EET}
{3258223200 10800 1 EEST}
{3276277200 7200 0 EET}
{3289672800 10800 1 EEST}
{3307726800 7200 0 EET}
{3321122400 10800 1 EEST}
{3339176400 7200 0 EET}
{3352572000 10800 1 EEST}
{3370626000 7200 0 EET}
{3384021600 10800 1 EEST}
{3402075600 7200 0 EET}
{3415471200 10800 1 EEST}
{3433525200 7200 0 EET}
{3447525600 10800 1 EEST}
{3465579600 7200 0 EET}
{3478975200 10800 1 EEST}
{3497029200 7200 0 EET}
{3510424800 10800 1 EEST}
{3528478800 7200 0 EET}
{3541874400 10800 1 EEST}
{3559928400 7200 0 EET}
{3573324000 10800 1 EEST}
{3591378000 7200 0 EET}
{3605378400 10800 1 EEST}
{3623432400 7200 0 EET}
{3636828000 10800 1 EEST}
{3654882000 7200 0 EET}
{3668277600 10800 1 EEST}
{3686331600 7200 0 EET}
{3699727200 10800 1 EEST}
{3717781200 7200 0 EET}
{3731176800 10800 1 EEST}
{3749230800 7200 0 EET}
{3762626400 10800 1 EEST}
{3780680400 7200 0 EET}
{3794680800 10800 1 EEST}
{3812734800 7200 0 EET}
{3826130400 10800 1 EEST}
{3844184400 7200 0 EET}
{3857580000 10800 1 EEST}
{3875634000 7200 0 EET}
{3889029600 10800 1 EEST}
{3907083600 7200 0 EET}
{3920479200 10800 1 EEST}
{3938533200 7200 0 EET}
{3951928800 10800 1 EEST}
{3969982800 7200 0 EET}
{3983983200 10800 1 EEST}
{4002037200 7200 0 EET}
{4015432800 10800 1 EEST}
{4033486800 7200 0 EET}
{4046882400 10800 1 EEST}
{4064936400 7200 0 EET}
{4078332000 10800 1 EEST}
{4096386000 7200 0 EET}
}
+171 -171
View File
@@ -103,175 +103,175 @@ set TZData(:Asia/Hebron) {
{1364508000 10800 1 EEST}
{1380229200 7200 0 EET}
{1395957600 10800 1 EEST}
{1411678800 7200 0 EET}
{1427407200 10800 1 EEST}
{1443128400 7200 0 EET}
{1459461600 10800 1 EEST}
{1474578000 7200 0 EET}
{1490911200 10800 1 EEST}
{1506027600 7200 0 EET}
{1522360800 10800 1 EEST}
{1537477200 7200 0 EET}
{1553810400 10800 1 EEST}
{1569531600 7200 0 EET}
{1585260000 10800 1 EEST}
{1600981200 7200 0 EET}
{1616709600 10800 1 EEST}
{1632430800 7200 0 EET}
{1648764000 10800 1 EEST}
{1663880400 7200 0 EET}
{1680213600 10800 1 EEST}
{1695330000 7200 0 EET}
{1711663200 10800 1 EEST}
{1727384400 7200 0 EET}
{1743112800 10800 1 EEST}
{1758834000 7200 0 EET}
{1774562400 10800 1 EEST}
{1790283600 7200 0 EET}
{1806012000 10800 1 EEST}
{1821733200 7200 0 EET}
{1838066400 10800 1 EEST}
{1853182800 7200 0 EET}
{1869516000 10800 1 EEST}
{1884632400 7200 0 EET}
{1900965600 10800 1 EEST}
{1916686800 7200 0 EET}
{1932415200 10800 1 EEST}
{1948136400 7200 0 EET}
{1963864800 10800 1 EEST}
{1979586000 7200 0 EET}
{1995919200 10800 1 EEST}
{2011035600 7200 0 EET}
{2027368800 10800 1 EEST}
{2042485200 7200 0 EET}
{2058818400 10800 1 EEST}
{2073934800 7200 0 EET}
{2090268000 10800 1 EEST}
{2105989200 7200 0 EET}
{2121717600 10800 1 EEST}
{2137438800 7200 0 EET}
{2153167200 10800 1 EEST}
{2168888400 7200 0 EET}
{2185221600 10800 1 EEST}
{2200338000 7200 0 EET}
{2216671200 10800 1 EEST}
{2231787600 7200 0 EET}
{2248120800 10800 1 EEST}
{2263842000 7200 0 EET}
{2279570400 10800 1 EEST}
{2295291600 7200 0 EET}
{2311020000 10800 1 EEST}
{2326741200 7200 0 EET}
{2343074400 10800 1 EEST}
{2358190800 7200 0 EET}
{2374524000 10800 1 EEST}
{2389640400 7200 0 EET}
{2405973600 10800 1 EEST}
{2421090000 7200 0 EET}
{2437423200 10800 1 EEST}
{2453144400 7200 0 EET}
{2468872800 10800 1 EEST}
{2484594000 7200 0 EET}
{2500322400 10800 1 EEST}
{2516043600 7200 0 EET}
{2532376800 10800 1 EEST}
{2547493200 7200 0 EET}
{2563826400 10800 1 EEST}
{2578942800 7200 0 EET}
{2595276000 10800 1 EEST}
{2610997200 7200 0 EET}
{2626725600 10800 1 EEST}
{2642446800 7200 0 EET}
{2658175200 10800 1 EEST}
{2673896400 7200 0 EET}
{2689624800 10800 1 EEST}
{2705346000 7200 0 EET}
{2721679200 10800 1 EEST}
{2736795600 7200 0 EET}
{2753128800 10800 1 EEST}
{2768245200 7200 0 EET}
{2784578400 10800 1 EEST}
{2800299600 7200 0 EET}
{2816028000 10800 1 EEST}
{2831749200 7200 0 EET}
{2847477600 10800 1 EEST}
{2863198800 7200 0 EET}
{2879532000 10800 1 EEST}
{2894648400 7200 0 EET}
{2910981600 10800 1 EEST}
{2926098000 7200 0 EET}
{2942431200 10800 1 EEST}
{2957547600 7200 0 EET}
{2973880800 10800 1 EEST}
{2989602000 7200 0 EET}
{3005330400 10800 1 EEST}
{3021051600 7200 0 EET}
{3036780000 10800 1 EEST}
{3052501200 7200 0 EET}
{3068834400 10800 1 EEST}
{3083950800 7200 0 EET}
{3100284000 10800 1 EEST}
{3115400400 7200 0 EET}
{3131733600 10800 1 EEST}
{3147454800 7200 0 EET}
{3163183200 10800 1 EEST}
{3178904400 7200 0 EET}
{3194632800 10800 1 EEST}
{3210354000 7200 0 EET}
{3226687200 10800 1 EEST}
{3241803600 7200 0 EET}
{3258136800 10800 1 EEST}
{3273253200 7200 0 EET}
{3289586400 10800 1 EEST}
{3304702800 7200 0 EET}
{3321036000 10800 1 EEST}
{3336757200 7200 0 EET}
{3352485600 10800 1 EEST}
{3368206800 7200 0 EET}
{3383935200 10800 1 EEST}
{3399656400 7200 0 EET}
{3415989600 10800 1 EEST}
{3431106000 7200 0 EET}
{3447439200 10800 1 EEST}
{3462555600 7200 0 EET}
{3478888800 10800 1 EEST}
{3494610000 7200 0 EET}
{3510338400 10800 1 EEST}
{3526059600 7200 0 EET}
{3541788000 10800 1 EEST}
{3557509200 7200 0 EET}
{3573237600 10800 1 EEST}
{3588958800 7200 0 EET}
{3605292000 10800 1 EEST}
{3620408400 7200 0 EET}
{3636741600 10800 1 EEST}
{3651858000 7200 0 EET}
{3668191200 10800 1 EEST}
{3683912400 7200 0 EET}
{3699640800 10800 1 EEST}
{3715362000 7200 0 EET}
{3731090400 10800 1 EEST}
{3746811600 7200 0 EET}
{3763144800 10800 1 EEST}
{3778261200 7200 0 EET}
{3794594400 10800 1 EEST}
{3809710800 7200 0 EET}
{3826044000 10800 1 EEST}
{3841160400 7200 0 EET}
{3857493600 10800 1 EEST}
{3873214800 7200 0 EET}
{3888943200 10800 1 EEST}
{3904664400 7200 0 EET}
{3920392800 10800 1 EEST}
{3936114000 7200 0 EET}
{3952447200 10800 1 EEST}
{3967563600 7200 0 EET}
{3983896800 10800 1 EEST}
{3999013200 7200 0 EET}
{4015346400 10800 1 EEST}
{4031067600 7200 0 EET}
{4046796000 10800 1 EEST}
{4062517200 7200 0 EET}
{4078245600 10800 1 EEST}
{4093966800 7200 0 EET}
{1414098000 7200 0 EET}
{1427493600 10800 1 EEST}
{1445547600 7200 0 EET}
{1458943200 10800 1 EEST}
{1476997200 7200 0 EET}
{1490997600 10800 1 EEST}
{1509051600 7200 0 EET}
{1522447200 10800 1 EEST}
{1540501200 7200 0 EET}
{1553896800 10800 1 EEST}
{1571950800 7200 0 EET}
{1585346400 10800 1 EEST}
{1603400400 7200 0 EET}
{1616796000 10800 1 EEST}
{1634850000 7200 0 EET}
{1648245600 10800 1 EEST}
{1666299600 7200 0 EET}
{1680300000 10800 1 EEST}
{1698354000 7200 0 EET}
{1711749600 10800 1 EEST}
{1729803600 7200 0 EET}
{1743199200 10800 1 EEST}
{1761253200 7200 0 EET}
{1774648800 10800 1 EEST}
{1792702800 7200 0 EET}
{1806098400 10800 1 EEST}
{1824152400 7200 0 EET}
{1838152800 10800 1 EEST}
{1856206800 7200 0 EET}
{1869602400 10800 1 EEST}
{1887656400 7200 0 EET}
{1901052000 10800 1 EEST}
{1919106000 7200 0 EET}
{1932501600 10800 1 EEST}
{1950555600 7200 0 EET}
{1963951200 10800 1 EEST}
{1982005200 7200 0 EET}
{1995400800 10800 1 EEST}
{2013454800 7200 0 EET}
{2027455200 10800 1 EEST}
{2045509200 7200 0 EET}
{2058904800 10800 1 EEST}
{2076958800 7200 0 EET}
{2090354400 10800 1 EEST}
{2108408400 7200 0 EET}
{2121804000 10800 1 EEST}
{2139858000 7200 0 EET}
{2153253600 10800 1 EEST}
{2171307600 7200 0 EET}
{2184703200 10800 1 EEST}
{2202757200 7200 0 EET}
{2216757600 10800 1 EEST}
{2234811600 7200 0 EET}
{2248207200 10800 1 EEST}
{2266261200 7200 0 EET}
{2279656800 10800 1 EEST}
{2297710800 7200 0 EET}
{2311106400 10800 1 EEST}
{2329160400 7200 0 EET}
{2342556000 10800 1 EEST}
{2360610000 7200 0 EET}
{2374610400 10800 1 EEST}
{2392664400 7200 0 EET}
{2406060000 10800 1 EEST}
{2424114000 7200 0 EET}
{2437509600 10800 1 EEST}
{2455563600 7200 0 EET}
{2468959200 10800 1 EEST}
{2487013200 7200 0 EET}
{2500408800 10800 1 EEST}
{2518462800 7200 0 EET}
{2531858400 10800 1 EEST}
{2549912400 7200 0 EET}
{2563912800 10800 1 EEST}
{2581966800 7200 0 EET}
{2595362400 10800 1 EEST}
{2613416400 7200 0 EET}
{2626812000 10800 1 EEST}
{2644866000 7200 0 EET}
{2658261600 10800 1 EEST}
{2676315600 7200 0 EET}
{2689711200 10800 1 EEST}
{2707765200 7200 0 EET}
{2721765600 10800 1 EEST}
{2739819600 7200 0 EET}
{2753215200 10800 1 EEST}
{2771269200 7200 0 EET}
{2784664800 10800 1 EEST}
{2802718800 7200 0 EET}
{2816114400 10800 1 EEST}
{2834168400 7200 0 EET}
{2847564000 10800 1 EEST}
{2865618000 7200 0 EET}
{2879013600 10800 1 EEST}
{2897067600 7200 0 EET}
{2911068000 10800 1 EEST}
{2929122000 7200 0 EET}
{2942517600 10800 1 EEST}
{2960571600 7200 0 EET}
{2973967200 10800 1 EEST}
{2992021200 7200 0 EET}
{3005416800 10800 1 EEST}
{3023470800 7200 0 EET}
{3036866400 10800 1 EEST}
{3054920400 7200 0 EET}
{3068316000 10800 1 EEST}
{3086370000 7200 0 EET}
{3100370400 10800 1 EEST}
{3118424400 7200 0 EET}
{3131820000 10800 1 EEST}
{3149874000 7200 0 EET}
{3163269600 10800 1 EEST}
{3181323600 7200 0 EET}
{3194719200 10800 1 EEST}
{3212773200 7200 0 EET}
{3226168800 10800 1 EEST}
{3244222800 7200 0 EET}
{3258223200 10800 1 EEST}
{3276277200 7200 0 EET}
{3289672800 10800 1 EEST}
{3307726800 7200 0 EET}
{3321122400 10800 1 EEST}
{3339176400 7200 0 EET}
{3352572000 10800 1 EEST}
{3370626000 7200 0 EET}
{3384021600 10800 1 EEST}
{3402075600 7200 0 EET}
{3415471200 10800 1 EEST}
{3433525200 7200 0 EET}
{3447525600 10800 1 EEST}
{3465579600 7200 0 EET}
{3478975200 10800 1 EEST}
{3497029200 7200 0 EET}
{3510424800 10800 1 EEST}
{3528478800 7200 0 EET}
{3541874400 10800 1 EEST}
{3559928400 7200 0 EET}
{3573324000 10800 1 EEST}
{3591378000 7200 0 EET}
{3605378400 10800 1 EEST}
{3623432400 7200 0 EET}
{3636828000 10800 1 EEST}
{3654882000 7200 0 EET}
{3668277600 10800 1 EEST}
{3686331600 7200 0 EET}
{3699727200 10800 1 EEST}
{3717781200 7200 0 EET}
{3731176800 10800 1 EEST}
{3749230800 7200 0 EET}
{3762626400 10800 1 EEST}
{3780680400 7200 0 EET}
{3794680800 10800 1 EEST}
{3812734800 7200 0 EET}
{3826130400 10800 1 EEST}
{3844184400 7200 0 EET}
{3857580000 10800 1 EEST}
{3875634000 7200 0 EET}
{3889029600 10800 1 EEST}
{3907083600 7200 0 EET}
{3920479200 10800 1 EEST}
{3938533200 7200 0 EET}
{3951928800 10800 1 EEST}
{3969982800 7200 0 EET}
{3983983200 10800 1 EEST}
{4002037200 7200 0 EET}
{4015432800 10800 1 EEST}
{4033486800 7200 0 EET}
{4046882400 10800 1 EEST}
{4064936400 7200 0 EET}
{4078332000 10800 1 EEST}
{4096386000 7200 0 EET}
}
+170
View File
@@ -48,4 +48,174 @@ set TZData(:Asia/Hovd) {
{1127498400 25200 0 HOVT}
{1143226800 28800 1 HOVST}
{1159552800 25200 0 HOVT}
{1427482800 28800 1 HOVST}
{1443196800 25200 0 HOVT}
{1458932400 28800 1 HOVST}
{1474646400 25200 0 HOVT}
{1490382000 28800 1 HOVST}
{1506700800 25200 0 HOVT}
{1522436400 28800 1 HOVST}
{1538150400 25200 0 HOVT}
{1553886000 28800 1 HOVST}
{1569600000 25200 0 HOVT}
{1585335600 28800 1 HOVST}
{1601049600 25200 0 HOVT}
{1616785200 28800 1 HOVST}
{1632499200 25200 0 HOVT}
{1648234800 28800 1 HOVST}
{1663948800 25200 0 HOVT}
{1679684400 28800 1 HOVST}
{1696003200 25200 0 HOVT}
{1711738800 28800 1 HOVST}
{1727452800 25200 0 HOVT}
{1743188400 28800 1 HOVST}
{1758902400 25200 0 HOVT}
{1774638000 28800 1 HOVST}
{1790352000 25200 0 HOVT}
{1806087600 28800 1 HOVST}
{1821801600 25200 0 HOVT}
{1837537200 28800 1 HOVST}
{1853856000 25200 0 HOVT}
{1869591600 28800 1 HOVST}
{1885305600 25200 0 HOVT}
{1901041200 28800 1 HOVST}
{1916755200 25200 0 HOVT}
{1932490800 28800 1 HOVST}
{1948204800 25200 0 HOVT}
{1963940400 28800 1 HOVST}
{1979654400 25200 0 HOVT}
{1995390000 28800 1 HOVST}
{2011104000 25200 0 HOVT}
{2026839600 28800 1 HOVST}
{2043158400 25200 0 HOVT}
{2058894000 28800 1 HOVST}
{2074608000 25200 0 HOVT}
{2090343600 28800 1 HOVST}
{2106057600 25200 0 HOVT}
{2121793200 28800 1 HOVST}
{2137507200 25200 0 HOVT}
{2153242800 28800 1 HOVST}
{2168956800 25200 0 HOVT}
{2184692400 28800 1 HOVST}
{2200406400 25200 0 HOVT}
{2216746800 28800 1 HOVST}
{2232460800 25200 0 HOVT}
{2248196400 28800 1 HOVST}
{2263910400 25200 0 HOVT}
{2279646000 28800 1 HOVST}
{2295360000 25200 0 HOVT}
{2311095600 28800 1 HOVST}
{2326809600 25200 0 HOVT}
{2342545200 28800 1 HOVST}
{2358259200 25200 0 HOVT}
{2373994800 28800 1 HOVST}
{2390313600 25200 0 HOVT}
{2406049200 28800 1 HOVST}
{2421763200 25200 0 HOVT}
{2437498800 28800 1 HOVST}
{2453212800 25200 0 HOVT}
{2468948400 28800 1 HOVST}
{2484662400 25200 0 HOVT}
{2500398000 28800 1 HOVST}
{2516112000 25200 0 HOVT}
{2531847600 28800 1 HOVST}
{2547561600 25200 0 HOVT}
{2563297200 28800 1 HOVST}
{2579616000 25200 0 HOVT}
{2595351600 28800 1 HOVST}
{2611065600 25200 0 HOVT}
{2626801200 28800 1 HOVST}
{2642515200 25200 0 HOVT}
{2658250800 28800 1 HOVST}
{2673964800 25200 0 HOVT}
{2689700400 28800 1 HOVST}
{2705414400 25200 0 HOVT}
{2721150000 28800 1 HOVST}
{2737468800 25200 0 HOVT}
{2753204400 28800 1 HOVST}
{2768918400 25200 0 HOVT}
{2784654000 28800 1 HOVST}
{2800368000 25200 0 HOVT}
{2816103600 28800 1 HOVST}
{2831817600 25200 0 HOVT}
{2847553200 28800 1 HOVST}
{2863267200 25200 0 HOVT}
{2879002800 28800 1 HOVST}
{2894716800 25200 0 HOVT}
{2910452400 28800 1 HOVST}
{2926771200 25200 0 HOVT}
{2942506800 28800 1 HOVST}
{2958220800 25200 0 HOVT}
{2973956400 28800 1 HOVST}
{2989670400 25200 0 HOVT}
{3005406000 28800 1 HOVST}
{3021120000 25200 0 HOVT}
{3036855600 28800 1 HOVST}
{3052569600 25200 0 HOVT}
{3068305200 28800 1 HOVST}
{3084019200 25200 0 HOVT}
{3100359600 28800 1 HOVST}
{3116073600 25200 0 HOVT}
{3131809200 28800 1 HOVST}
{3147523200 25200 0 HOVT}
{3163258800 28800 1 HOVST}
{3178972800 25200 0 HOVT}
{3194708400 28800 1 HOVST}
{3210422400 25200 0 HOVT}
{3226158000 28800 1 HOVST}
{3241872000 25200 0 HOVT}
{3257607600 28800 1 HOVST}
{3273926400 25200 0 HOVT}
{3289662000 28800 1 HOVST}
{3305376000 25200 0 HOVT}
{3321111600 28800 1 HOVST}
{3336825600 25200 0 HOVT}
{3352561200 28800 1 HOVST}
{3368275200 25200 0 HOVT}
{3384010800 28800 1 HOVST}
{3399724800 25200 0 HOVT}
{3415460400 28800 1 HOVST}
{3431174400 25200 0 HOVT}
{3446910000 28800 1 HOVST}
{3463228800 25200 0 HOVT}
{3478964400 28800 1 HOVST}
{3494678400 25200 0 HOVT}
{3510414000 28800 1 HOVST}
{3526128000 25200 0 HOVT}
{3541863600 28800 1 HOVST}
{3557577600 25200 0 HOVT}
{3573313200 28800 1 HOVST}
{3589027200 25200 0 HOVT}
{3604762800 28800 1 HOVST}
{3621081600 25200 0 HOVT}
{3636817200 28800 1 HOVST}
{3652531200 25200 0 HOVT}
{3668266800 28800 1 HOVST}
{3683980800 25200 0 HOVT}
{3699716400 28800 1 HOVST}
{3715430400 25200 0 HOVT}
{3731166000 28800 1 HOVST}
{3746880000 25200 0 HOVT}
{3762615600 28800 1 HOVST}
{3778329600 25200 0 HOVT}
{3794065200 28800 1 HOVST}
{3810384000 25200 0 HOVT}
{3826119600 28800 1 HOVST}
{3841833600 25200 0 HOVT}
{3857569200 28800 1 HOVST}
{3873283200 25200 0 HOVT}
{3889018800 28800 1 HOVST}
{3904732800 25200 0 HOVT}
{3920468400 28800 1 HOVST}
{3936182400 25200 0 HOVT}
{3951918000 28800 1 HOVST}
{3967632000 25200 0 HOVT}
{3983972400 28800 1 HOVST}
{3999686400 25200 0 HOVT}
{4015422000 28800 1 HOVST}
{4031136000 25200 0 HOVT}
{4046871600 28800 1 HOVST}
{4062585600 25200 0 HOVT}
{4078321200 28800 1 HOVST}
{4094035200 25200 0 HOVT}
}
+3 -4
View File
@@ -1,6 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Asia/Kuwait) {
{-9223372036854775808 11516 0 LMT}
{-631163516 10800 0 AST}
if {![info exists TZData(Asia/Riyadh)]} {
LoadTimeZoneFile Asia/Riyadh
}
set TZData(:Asia/Kuwait) $TZData(:Asia/Riyadh)
+3 -4
View File
@@ -1,6 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Asia/Muscat) {
{-9223372036854775808 14064 0 LMT}
{-1577937264 14400 0 GST}
if {![info exists TZData(Asia/Dubai)]} {
LoadTimeZoneFile Asia/Dubai
}
set TZData(:Asia/Muscat) $TZData(:Asia/Dubai)
+170
View File
@@ -48,4 +48,174 @@ set TZData(:Asia/Ulaanbaatar) {
{1127494800 28800 0 ULAT}
{1143223200 32400 1 ULAST}
{1159549200 28800 0 ULAT}
{1427479200 32400 1 ULAST}
{1443193200 28800 0 ULAT}
{1458928800 32400 1 ULAST}
{1474642800 28800 0 ULAT}
{1490378400 32400 1 ULAST}
{1506697200 28800 0 ULAT}
{1522432800 32400 1 ULAST}
{1538146800 28800 0 ULAT}
{1553882400 32400 1 ULAST}
{1569596400 28800 0 ULAT}
{1585332000 32400 1 ULAST}
{1601046000 28800 0 ULAT}
{1616781600 32400 1 ULAST}
{1632495600 28800 0 ULAT}
{1648231200 32400 1 ULAST}
{1663945200 28800 0 ULAT}
{1679680800 32400 1 ULAST}
{1695999600 28800 0 ULAT}
{1711735200 32400 1 ULAST}
{1727449200 28800 0 ULAT}
{1743184800 32400 1 ULAST}
{1758898800 28800 0 ULAT}
{1774634400 32400 1 ULAST}
{1790348400 28800 0 ULAT}
{1806084000 32400 1 ULAST}
{1821798000 28800 0 ULAT}
{1837533600 32400 1 ULAST}
{1853852400 28800 0 ULAT}
{1869588000 32400 1 ULAST}
{1885302000 28800 0 ULAT}
{1901037600 32400 1 ULAST}
{1916751600 28800 0 ULAT}
{1932487200 32400 1 ULAST}
{1948201200 28800 0 ULAT}
{1963936800 32400 1 ULAST}
{1979650800 28800 0 ULAT}
{1995386400 32400 1 ULAST}
{2011100400 28800 0 ULAT}
{2026836000 32400 1 ULAST}
{2043154800 28800 0 ULAT}
{2058890400 32400 1 ULAST}
{2074604400 28800 0 ULAT}
{2090340000 32400 1 ULAST}
{2106054000 28800 0 ULAT}
{2121789600 32400 1 ULAST}
{2137503600 28800 0 ULAT}
{2153239200 32400 1 ULAST}
{2168953200 28800 0 ULAT}
{2184688800 32400 1 ULAST}
{2200402800 28800 0 ULAT}
{2216743200 32400 1 ULAST}
{2232457200 28800 0 ULAT}
{2248192800 32400 1 ULAST}
{2263906800 28800 0 ULAT}
{2279642400 32400 1 ULAST}
{2295356400 28800 0 ULAT}
{2311092000 32400 1 ULAST}
{2326806000 28800 0 ULAT}
{2342541600 32400 1 ULAST}
{2358255600 28800 0 ULAT}
{2373991200 32400 1 ULAST}
{2390310000 28800 0 ULAT}
{2406045600 32400 1 ULAST}
{2421759600 28800 0 ULAT}
{2437495200 32400 1 ULAST}
{2453209200 28800 0 ULAT}
{2468944800 32400 1 ULAST}
{2484658800 28800 0 ULAT}
{2500394400 32400 1 ULAST}
{2516108400 28800 0 ULAT}
{2531844000 32400 1 ULAST}
{2547558000 28800 0 ULAT}
{2563293600 32400 1 ULAST}
{2579612400 28800 0 ULAT}
{2595348000 32400 1 ULAST}
{2611062000 28800 0 ULAT}
{2626797600 32400 1 ULAST}
{2642511600 28800 0 ULAT}
{2658247200 32400 1 ULAST}
{2673961200 28800 0 ULAT}
{2689696800 32400 1 ULAST}
{2705410800 28800 0 ULAT}
{2721146400 32400 1 ULAST}
{2737465200 28800 0 ULAT}
{2753200800 32400 1 ULAST}
{2768914800 28800 0 ULAT}
{2784650400 32400 1 ULAST}
{2800364400 28800 0 ULAT}
{2816100000 32400 1 ULAST}
{2831814000 28800 0 ULAT}
{2847549600 32400 1 ULAST}
{2863263600 28800 0 ULAT}
{2878999200 32400 1 ULAST}
{2894713200 28800 0 ULAT}
{2910448800 32400 1 ULAST}
{2926767600 28800 0 ULAT}
{2942503200 32400 1 ULAST}
{2958217200 28800 0 ULAT}
{2973952800 32400 1 ULAST}
{2989666800 28800 0 ULAT}
{3005402400 32400 1 ULAST}
{3021116400 28800 0 ULAT}
{3036852000 32400 1 ULAST}
{3052566000 28800 0 ULAT}
{3068301600 32400 1 ULAST}
{3084015600 28800 0 ULAT}
{3100356000 32400 1 ULAST}
{3116070000 28800 0 ULAT}
{3131805600 32400 1 ULAST}
{3147519600 28800 0 ULAT}
{3163255200 32400 1 ULAST}
{3178969200 28800 0 ULAT}
{3194704800 32400 1 ULAST}
{3210418800 28800 0 ULAT}
{3226154400 32400 1 ULAST}
{3241868400 28800 0 ULAT}
{3257604000 32400 1 ULAST}
{3273922800 28800 0 ULAT}
{3289658400 32400 1 ULAST}
{3305372400 28800 0 ULAT}
{3321108000 32400 1 ULAST}
{3336822000 28800 0 ULAT}
{3352557600 32400 1 ULAST}
{3368271600 28800 0 ULAT}
{3384007200 32400 1 ULAST}
{3399721200 28800 0 ULAT}
{3415456800 32400 1 ULAST}
{3431170800 28800 0 ULAT}
{3446906400 32400 1 ULAST}
{3463225200 28800 0 ULAT}
{3478960800 32400 1 ULAST}
{3494674800 28800 0 ULAT}
{3510410400 32400 1 ULAST}
{3526124400 28800 0 ULAT}
{3541860000 32400 1 ULAST}
{3557574000 28800 0 ULAT}
{3573309600 32400 1 ULAST}
{3589023600 28800 0 ULAT}
{3604759200 32400 1 ULAST}
{3621078000 28800 0 ULAT}
{3636813600 32400 1 ULAST}
{3652527600 28800 0 ULAT}
{3668263200 32400 1 ULAST}
{3683977200 28800 0 ULAT}
{3699712800 32400 1 ULAST}
{3715426800 28800 0 ULAT}
{3731162400 32400 1 ULAST}
{3746876400 28800 0 ULAT}
{3762612000 32400 1 ULAST}
{3778326000 28800 0 ULAT}
{3794061600 32400 1 ULAST}
{3810380400 28800 0 ULAT}
{3826116000 32400 1 ULAST}
{3841830000 28800 0 ULAT}
{3857565600 32400 1 ULAST}
{3873279600 28800 0 ULAT}
{3889015200 32400 1 ULAST}
{3904729200 28800 0 ULAT}
{3920464800 32400 1 ULAST}
{3936178800 28800 0 ULAT}
{3951914400 32400 1 ULAST}
{3967628400 28800 0 ULAT}
{3983968800 32400 1 ULAST}
{3999682800 28800 0 ULAT}
{4015418400 32400 1 ULAST}
{4031132400 28800 0 ULAT}
{4046868000 32400 1 ULAST}
{4062582000 28800 0 ULAT}
{4078317600 32400 1 ULAST}
{4094031600 28800 0 ULAT}
}
+7 -4
View File
@@ -1,15 +1,18 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Atlantic/Reykjavik) {
{-9223372036854775808 -5244 0 LMT}
{-4197047556 -5268 0 RMT}
{-1956609132 -3600 0 IST}
{-9223372036854775808 -5280 0 LMT}
{-1956609120 -3600 0 IST}
{-1668211200 0 1 ISST}
{-1647212400 -3600 0 IST}
{-1636675200 0 1 ISST}
{-1613430000 -3600 0 IST}
{-1605139200 0 1 ISST}
{-1581894000 -3600 0 IST}
{-1539561600 0 1 ISST}
{-1531350000 -3600 0 IST}
{-968025600 0 1 ISST}
{-949615200 -3600 0 IST}
{-952293600 -3600 0 IST}
{-942008400 0 1 ISST}
{-920239200 -3600 0 IST}
{-909957600 0 1 ISST}
+19 -19
View File
@@ -28,43 +28,43 @@ set TZData(:Europe/Volgograd) {
{638319600 14400 1 VOLST}
{654649200 10800 0 VOLT}
{670374000 14400 0 VOLT}
{701820000 14400 0 MSK}
{701820000 14400 0 MSD}
{717534000 10800 0 MSK}
{733273200 14400 1 MSK}
{733273200 14400 1 MSD}
{748998000 10800 0 MSK}
{764722800 14400 1 MSK}
{764722800 14400 1 MSD}
{780447600 10800 0 MSK}
{796172400 14400 1 MSK}
{796172400 14400 1 MSD}
{811897200 10800 0 MSK}
{828226800 14400 1 MSK}
{828226800 14400 1 MSD}
{846370800 10800 0 MSK}
{859676400 14400 1 MSK}
{859676400 14400 1 MSD}
{877820400 10800 0 MSK}
{891126000 14400 1 MSK}
{891126000 14400 1 MSD}
{909270000 10800 0 MSK}
{922575600 14400 1 MSK}
{922575600 14400 1 MSD}
{941324400 10800 0 MSK}
{954025200 14400 1 MSK}
{954025200 14400 1 MSD}
{972774000 10800 0 MSK}
{985474800 14400 1 MSK}
{985474800 14400 1 MSD}
{1004223600 10800 0 MSK}
{1017529200 14400 1 MSK}
{1017529200 14400 1 MSD}
{1035673200 10800 0 MSK}
{1048978800 14400 1 MSK}
{1048978800 14400 1 MSD}
{1067122800 10800 0 MSK}
{1080428400 14400 1 MSK}
{1080428400 14400 1 MSD}
{1099177200 10800 0 MSK}
{1111878000 14400 1 MSK}
{1111878000 14400 1 MSD}
{1130626800 10800 0 MSK}
{1143327600 14400 1 MSK}
{1143327600 14400 1 MSD}
{1162076400 10800 0 MSK}
{1174777200 14400 1 MSK}
{1174777200 14400 1 MSD}
{1193526000 10800 0 MSK}
{1206831600 14400 1 MSK}
{1206831600 14400 1 MSD}
{1224975600 10800 0 MSK}
{1238281200 14400 1 MSK}
{1238281200 14400 1 MSD}
{1256425200 10800 0 MSK}
{1269730800 14400 1 MSK}
{1269730800 14400 1 MSD}
{1288479600 10800 0 MSK}
{1301180400 14400 0 MSK}
{1414274400 10800 0 MSK}
+6 -180
View File
@@ -1,14 +1,9 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Pacific/Easter) {
{-9223372036854775808 -26264 0 LMT}
{-2524495336 -26248 0 EMT}
{-1178124152 -21600 0 EASST}
{-870552000 -25200 0 EAST}
{-865278000 -21600 1 EASST}
{-740520000 -21600 1 EASST}
{-736376400 -25200 0 EAST}
{-718056000 -25200 0 EAST}
{-9223372036854775808 -26248 0 LMT}
{-2524495352 -26248 0 EMT}
{-1178124152 -25200 0 EAST}
{-36619200 -21600 1 EASST}
{-23922000 -25200 0 EAST}
{-3355200 -21600 1 EASST}
@@ -49,10 +44,10 @@ set TZData(:Pacific/Easter) {
{545194800 -21600 0 EAST}
{560923200 -18000 1 EASST}
{574225200 -21600 0 EAST}
{591768000 -18000 1 EASST}
{592372800 -18000 1 EASST}
{605674800 -21600 0 EAST}
{624427200 -18000 1 EASST}
{637729200 -21600 0 EAST}
{637124400 -21600 0 EAST}
{653457600 -18000 1 EASST}
{668574000 -21600 0 EAST}
{687326400 -18000 1 EASST}
@@ -102,174 +97,5 @@ set TZData(:Pacific/Easter) {
{1378612800 -18000 1 EASST}
{1398567600 -21600 0 EAST}
{1410062400 -18000 1 EASST}
{1430017200 -21600 0 EAST}
{1441512000 -18000 1 EASST}
{1461466800 -21600 0 EAST}
{1472961600 -18000 1 EASST}
{1492916400 -21600 0 EAST}
{1504411200 -18000 1 EASST}
{1524970800 -21600 0 EAST}
{1535860800 -18000 1 EASST}
{1556420400 -21600 0 EAST}
{1567915200 -18000 1 EASST}
{1587870000 -21600 0 EAST}
{1599364800 -18000 1 EASST}
{1619319600 -21600 0 EAST}
{1630814400 -18000 1 EASST}
{1650769200 -21600 0 EAST}
{1662264000 -18000 1 EASST}
{1682218800 -21600 0 EAST}
{1693713600 -18000 1 EASST}
{1714273200 -21600 0 EAST}
{1725768000 -18000 1 EASST}
{1745722800 -21600 0 EAST}
{1757217600 -18000 1 EASST}
{1777172400 -21600 0 EAST}
{1788667200 -18000 1 EASST}
{1808622000 -21600 0 EAST}
{1820116800 -18000 1 EASST}
{1840071600 -21600 0 EAST}
{1851566400 -18000 1 EASST}
{1872126000 -21600 0 EAST}
{1883016000 -18000 1 EASST}
{1903575600 -21600 0 EAST}
{1915070400 -18000 1 EASST}
{1935025200 -21600 0 EAST}
{1946520000 -18000 1 EASST}
{1966474800 -21600 0 EAST}
{1977969600 -18000 1 EASST}
{1997924400 -21600 0 EAST}
{2009419200 -18000 1 EASST}
{2029374000 -21600 0 EAST}
{2040868800 -18000 1 EASST}
{2061428400 -21600 0 EAST}
{2072318400 -18000 1 EASST}
{2092878000 -21600 0 EAST}
{2104372800 -18000 1 EASST}
{2124327600 -21600 0 EAST}
{2135822400 -18000 1 EASST}
{2155777200 -21600 0 EAST}
{2167272000 -18000 1 EASST}
{2187226800 -21600 0 EAST}
{2198721600 -18000 1 EASST}
{2219281200 -21600 0 EAST}
{2230171200 -18000 1 EASST}
{2250730800 -21600 0 EAST}
{2262225600 -18000 1 EASST}
{2282180400 -21600 0 EAST}
{2293675200 -18000 1 EASST}
{2313630000 -21600 0 EAST}
{2325124800 -18000 1 EASST}
{2345079600 -21600 0 EAST}
{2356574400 -18000 1 EASST}
{2376529200 -21600 0 EAST}
{2388024000 -18000 1 EASST}
{2408583600 -21600 0 EAST}
{2419473600 -18000 1 EASST}
{2440033200 -21600 0 EAST}
{2451528000 -18000 1 EASST}
{2471482800 -21600 0 EAST}
{2482977600 -18000 1 EASST}
{2502932400 -21600 0 EAST}
{2514427200 -18000 1 EASST}
{2534382000 -21600 0 EAST}
{2545876800 -18000 1 EASST}
{2565831600 -21600 0 EAST}
{2577326400 -18000 1 EASST}
{2597886000 -21600 0 EAST}
{2609380800 -18000 1 EASST}
{2629335600 -21600 0 EAST}
{2640830400 -18000 1 EASST}
{2660785200 -21600 0 EAST}
{2672280000 -18000 1 EASST}
{2692234800 -21600 0 EAST}
{2703729600 -18000 1 EASST}
{2723684400 -21600 0 EAST}
{2735179200 -18000 1 EASST}
{2755738800 -21600 0 EAST}
{2766628800 -18000 1 EASST}
{2787188400 -21600 0 EAST}
{2798683200 -18000 1 EASST}
{2818638000 -21600 0 EAST}
{2830132800 -18000 1 EASST}
{2850087600 -21600 0 EAST}
{2861582400 -18000 1 EASST}
{2881537200 -21600 0 EAST}
{2893032000 -18000 1 EASST}
{2912986800 -21600 0 EAST}
{2924481600 -18000 1 EASST}
{2945041200 -21600 0 EAST}
{2955931200 -18000 1 EASST}
{2976490800 -21600 0 EAST}
{2987985600 -18000 1 EASST}
{3007940400 -21600 0 EAST}
{3019435200 -18000 1 EASST}
{3039390000 -21600 0 EAST}
{3050884800 -18000 1 EASST}
{3070839600 -21600 0 EAST}
{3082334400 -18000 1 EASST}
{3102894000 -21600 0 EAST}
{3113784000 -18000 1 EASST}
{3134343600 -21600 0 EAST}
{3145838400 -18000 1 EASST}
{3165793200 -21600 0 EAST}
{3177288000 -18000 1 EASST}
{3197242800 -21600 0 EAST}
{3208737600 -18000 1 EASST}
{3228692400 -21600 0 EAST}
{3240187200 -18000 1 EASST}
{3260142000 -21600 0 EAST}
{3271636800 -18000 1 EASST}
{3292196400 -21600 0 EAST}
{3303086400 -18000 1 EASST}
{3323646000 -21600 0 EAST}
{3335140800 -18000 1 EASST}
{3355095600 -21600 0 EAST}
{3366590400 -18000 1 EASST}
{3386545200 -21600 0 EAST}
{3398040000 -18000 1 EASST}
{3417994800 -21600 0 EAST}
{3429489600 -18000 1 EASST}
{3449444400 -21600 0 EAST}
{3460939200 -18000 1 EASST}
{3481498800 -21600 0 EAST}
{3492993600 -18000 1 EASST}
{3512948400 -21600 0 EAST}
{3524443200 -18000 1 EASST}
{3544398000 -21600 0 EAST}
{3555892800 -18000 1 EASST}
{3575847600 -21600 0 EAST}
{3587342400 -18000 1 EASST}
{3607297200 -21600 0 EAST}
{3618792000 -18000 1 EASST}
{3639351600 -21600 0 EAST}
{3650241600 -18000 1 EASST}
{3670801200 -21600 0 EAST}
{3682296000 -18000 1 EASST}
{3702250800 -21600 0 EAST}
{3713745600 -18000 1 EASST}
{3733700400 -21600 0 EAST}
{3745195200 -18000 1 EASST}
{3765150000 -21600 0 EAST}
{3776644800 -18000 1 EASST}
{3796599600 -21600 0 EAST}
{3808094400 -18000 1 EASST}
{3828654000 -21600 0 EAST}
{3839544000 -18000 1 EASST}
{3860103600 -21600 0 EAST}
{3871598400 -18000 1 EASST}
{3891553200 -21600 0 EAST}
{3903048000 -18000 1 EASST}
{3923002800 -21600 0 EAST}
{3934497600 -18000 1 EASST}
{3954452400 -21600 0 EAST}
{3965947200 -18000 1 EASST}
{3986506800 -21600 0 EAST}
{3997396800 -18000 1 EASST}
{4017956400 -21600 0 EAST}
{4029451200 -18000 1 EASST}
{4049406000 -21600 0 EAST}
{4060900800 -18000 1 EASST}
{4080855600 -21600 0 EAST}
{4092350400 -18000 1 EASST}
{1430017200 -18000 0 EAST}
}
+3 -8
View File
@@ -1,10 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Pacific/Midway) {
{-9223372036854775808 -42568 0 LMT}
{-2177410232 -39600 0 NST}
{-428504400 -36000 1 NDT}
{-420645600 -39600 0 NST}
{-86878800 -39600 0 BST}
{439038000 -39600 0 SST}
if {![info exists TZData(Pacific/Pago_Pago)]} {
LoadTimeZoneFile Pacific/Pago_Pago
}
set TZData(:Pacific/Midway) $TZData(:Pacific/Pago_Pago)
+3 -7
View File
@@ -1,9 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Pacific/Saipan) {
{-9223372036854775808 -51420 0 LMT}
{-3944626980 34980 0 LMT}
{-2177487780 32400 0 MPT}
{-7981200 36000 0 MPT}
{977493600 36000 0 ChST}
if {![info exists TZData(Pacific/Guam)]} {
LoadTimeZoneFile Pacific/Guam
}
set TZData(:Pacific/Saipan) $TZData(:Pacific/Guam)
+2 -1
View File
@@ -1412,7 +1412,8 @@ UpdateWaitingListAndServiceEvents(
(tsdPtr->runLoopNestingLevel > 1
|| !tsdPtr->runLoopRunning)) {
tsdPtr->runLoopServicingEvents = 1;
while (Tcl_ServiceAll() && tsdPtr->waitTime == 0) {}
/* This call seems to simply force event processing through and prevents hangups that have long been observed with Tk-Cocoa. */
Tcl_ServiceAll();
tsdPtr->runLoopServicingEvents = 0;
}
break;
+19 -5
View File
@@ -306,7 +306,6 @@ test http-3.13 {http::geturl socket leak test} {
for {set i 0} {$i < 3} {incr i} {
catch {http::geturl $badurl -timeout 5000}
}
# No extra channels should be taken
expr {[llength [file channels]] == $chanCount}
} 1
@@ -372,11 +371,11 @@ test http-3.27 {http::geturl: -headers override -type} -body {
http::data $token
} -cleanup {
http::cleanup $token
} -match regexp -result {(?n)Accept \*/\*
Host .*
} -match regexp -result {(?n)Host .*
User-Agent .*
Connection close
Content-Type {text/plain;charset=utf-8}
Accept \*/\*
Accept-Encoding .*
Content-Length 5}
test http-3.28 {http::geturl: -headers override -type default} -body {
@@ -385,11 +384,11 @@ test http-3.28 {http::geturl: -headers override -type default} -body {
http::data $token
} -cleanup {
http::cleanup $token
} -match regexp -result {(?n)Accept \*/\*
Host .*
} -match regexp -result {(?n)Host .*
User-Agent .*
Connection close
Content-Type {text/plain;charset=utf-8}
Accept \*/\*
Accept-Encoding .*
Content-Length 5}
test http-3.29 {http::geturl IPv6 address} -body {
@@ -418,6 +417,21 @@ test http-3.31 {http::geturl fragment without path} -body {
} -cleanup {
catch { http::cleanup $token }
} -result 200
# Bug c11a51c482
test http-3.32 {http::geturl: -headers override -accept default} -body {
set token [http::geturl $url/headers -query dummy \
-headers [list "Accept" "text/plain,application/tcl-test-value"]]
http::data $token
} -cleanup {
http::cleanup $token
} -match regexp -result {(?n)Host .*
User-Agent .*
Connection close
Accept text/plain,application/tcl-test-value
Accept-Encoding .*
Content-Type application/x-www-form-urlencoded
Content-Length 5}
test http-4.1 {http::Event} -body {
set token [http::geturl $url -keepalive 0]
upvar #0 $token data
+26 -7
View File
@@ -70,11 +70,8 @@ proc check_crc {tok args} {
return "ok"
}
makeFile "<html><head><title>test</title></head>\
<body><p>this is a test</p>\n\
[string repeat {<p>This is a tcl test file.</p>} 4192]\n\
</body></html>" testdoc.html
makeFile "<html><head><title>test</title></head><body><p>this is a test</p>\n[string repeat {<p>This is a tcl test file.</p>} 4192]\n</body></html>" testdoc.html
# -------------------------------------------------------------------------
test http11-1.0 "normal request for document " -setup {
@@ -447,7 +444,8 @@ test http11-2.10 "-channel,deflate,keepalive" -setup {
set chan [open [makeFile {} testfile.tmp] wb+]
} -body {
set tok [http::geturl http://localhost:$httpd_port/testdoc.html \
-timeout 5000 -channel $chan -keepalive 1]
-timeout 5000 -channel $chan -keepalive 1 \
-headers {accept-encoding deflate}]
http::wait $tok
seek $chan 0
set data [read $chan]
@@ -482,6 +480,27 @@ test http11-2.11 "-channel,identity,keepalive" -setup {
halt_httpd
} -result {ok {HTTP/1.1 200 OK} ok {} {} chunked}
test http11-2.12 "-channel,negotiate,keepalive" -setup {
variable httpd [create_httpd]
set chan [open [makeFile {} testfile.tmp] wb+]
} -body {
set tok [http::geturl http://localhost:$httpd_port/testdoc.html \
-timeout 5000 -channel $chan -keepalive 1]
http::wait $tok
seek $chan 0
set data [read $chan]
list [http::status $tok] [http::code $tok] [check_crc $tok $data]\
[meta $tok connection] [meta $tok content-encoding]\
[meta $tok transfer-encoding] [meta $tok x-requested-encodings]\
[expr {[file size testdoc.html]-[file size testfile.tmp]}]
} -cleanup {
http::cleanup $tok
close $chan
removeFile testfile.tmp
halt_httpd
} -result {ok {HTTP/1.1 200 OK} ok {} gzip chunked gzip,deflate,compress 0}
# -------------------------------------------------------------------------
#
# The following tests for the -handler option will require changes in
@@ -644,7 +663,7 @@ test http11-4.3 "normal post request, check channel query length" -setup {
removeFile testfile.tmp
halt_httpd
} -result {status ok code {HTTP/1.1 200 OK} crc ok connection close query-length 122880}
# -------------------------------------------------------------------------
foreach p {create_httpd httpd_read halt_httpd meta check_crc} {
+8 -7
View File
@@ -158,13 +158,13 @@ proc Service {chan addr port} {
}
if {$protocol eq "HTTP/1.1"} {
if {[string match "*deflate*" [dict get? $meta accept-encoding]]} {
set encoding deflate
} elseif {[string match "*gzip*" [dict get? $meta accept-encoding]]} {
set encoding gzip
} elseif {[string match "*compress*" [dict get? $meta accept-encoding]]} {
set encoding compress
}
foreach enc [split [dict get? $meta accept-encoding] ,] {
set enc [string trim $enc]
if {$enc in {deflate gzip compress}} {
set encoding $enc
break
}
}
set transfer chunked
} else {
set close 1
@@ -189,6 +189,7 @@ proc Service {chan addr port} {
if {$close} {
Puts $chan "connection: close"
}
Puts $chan "x-requested-encodings: [dict get? $meta accept-encoding]"
if {$encoding eq "identity"} {
Puts $chan "content-length: [string length $data]"
} else {
+104 -1
View File
@@ -1517,6 +1517,39 @@ test io-12.7 {ReadChars: too many chars read [bc5b790099]} {
}
close $c
} {}
test io-12.8 {ReadChars: multibyte chars split} {
set f [open $path(test1) w]
fconfigure $f -translation binary
puts -nonewline $f [string repeat a 9]\xc2\xa0
close $f
set f [open $path(test1)]
fconfigure $f -encoding utf-8 -buffersize 10
set in [read $f]
close $f
scan [string index $in end] %c
} 160
test io-12.9 {ReadChars: multibyte chars split} {
set f [open $path(test1) w]
fconfigure $f -translation binary
puts -nonewline $f [string repeat a 9]\xc2
close $f
set f [open $path(test1)]
fconfigure $f -encoding utf-8 -buffersize 10
set in [read $f]
close $f
scan [string index $in end] %c
} 194
test io-12.10 {ReadChars: multibyte chars split} {
set f [open $path(test1) w]
fconfigure $f -translation binary
puts -nonewline $f [string repeat a 9]\xc2
close $f
set f [open $path(test1)]
fconfigure $f -encoding utf-8 -buffersize 11
set in [read $f]
close $f
scan [string index $in end] %c
} 194
test io-13.1 {TranslateInputEOL: cr mode} {} {
set f [open $path(test1) w]
@@ -7355,7 +7388,7 @@ test io-53.4 {CopyData: background write overflow} {stdio unix openpipe fileeven
set result ""
fileevent $f1 read [namespace code {
append result [read $f1 1024]
if {[string length $result] >= [string length $big]} {
if {[string length $result] >= [string length $big]+1} {
set x done
}
}]
@@ -7364,6 +7397,38 @@ test io-53.4 {CopyData: background write overflow} {stdio unix openpipe fileeven
set big {}
set x
} done
test io-53.4.1 {Bug 894da183c8} {stdio fcopy} {
set big bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n
variable x
for {set x 0} {$x < 12} {incr x} {
append big $big
}
file delete $path(pipe)
set f1 [open $path(pipe) w]
puts $f1 [list file delete $path(test1)]
puts $f1 {
puts ready
set f [open io-53.4.1 w]
chan configure $f -translation lf
fcopy stdin $f -command { set x }
vwait x
close $f
}
puts $f1 "close \[[list open $path(test1) w]]"
close $f1
set f1 [open "|[list [interpreter] $path(pipe)]" r+]
set result [gets $f1]
fconfigure $f1 -blocking 0 -buffersize 125000 -translation lf
puts $f1 $big
fconfigure $f1 -blocking 1
close $f1
set big {}
while {[catch {glob $path(test1)}]} {after 50}
file delete $path(test1)
set check [file size io-53.4.1]
file delete io-53.4.1
set check
} 266241
set result {}
proc FcopyTestAccept {sock args} {
after 1000 "close $sock"
@@ -8523,6 +8588,44 @@ test io-73.3 {[5adc350683] [gets] after EOF} -setup {
removeFile io-73.3
} -result {1 1 {more data} 0 {} 1}
test io-73.4 {[5adc350683] [read] after EOF} -setup {
set fn [makeFile {} io-73.4]
set rfd [open $fn r]
set wfd [open $fn a]
chan configure $wfd -buffering line
read $rfd
} -body {
set result [eof $rfd]
puts $wfd "more data"
lappend result [eof $rfd]
lappend result [read $rfd]
lappend result [eof $rfd]
} -cleanup {
close $wfd
close $rfd
removeFile io-73.4
} -result {1 1 {more data
} 1}
test io-73.5 {effect of eof on encoding end flags} -setup {
set fn [makeFile {} io-73.5]
set rfd [open $fn r]
set wfd [open $fn a]
chan configure $wfd -buffering none -translation binary
chan configure $rfd -buffersize 5 -encoding utf-8
read $rfd
} -body {
set result [eof $rfd]
puts -nonewline $wfd "more\u00c2\u00a0data"
lappend result [eof $rfd]
lappend result [read $rfd]
lappend result [eof $rfd]
} -cleanup {
close $wfd
close $rfd
removeFile io-73.5
} -result [list 1 1 more\u00a0data 1]
# ### ### ### ######### ######### #########
# cleanup
+9
View File
@@ -137,6 +137,15 @@ test lreplace-4.1 {Bug ccc2c2cc98: lreplace edge case} {
test lreplace-4.2 {Bug ccc2c2cc98: lreplace edge case} {
lreplace { } 1 1
} {}
test lreplace-4.3 {lreplace edge case} {
lreplace {1 2 3} 2 0
} {1 2 3}
test lreplace-4.4 {lreplace edge case} {
lreplace {1 2 3 4 5} 3 1
} {1 2 3 4 5}
test lreplace-4.5 {lreplace edge case} {
lreplace {1 2 3 4 5} 3 0 _
} {1 2 3 _ 4 5}
# cleanup
catch {unset foo}
+21
View File
@@ -151,6 +151,27 @@ test nre-4.1 {ensembles are not recursive} -setup {
testnrelevels
} -result {{0 2 1 1} 0}
test nre-4.2 {(compiled) ensembles do not break tailcall} -setup {
# Fix Bug d87cb18205
proc b {} {
tailcall append result first
}
set map [namespace ensemble configure ::dict -map]
dict set map a b
namespace ensemble configure ::dict -map $map
proc demo {} {
dict a
append result second
}
} -body {
demo
} -cleanup {
rename demo {}
namespace ensemble configure ::dict -map [dict remove $map a]
unset map
rename b {}
} -result firstsecond
test nre-5.1 {[namespace eval] is not recursive} -setup {
namespace eval ::foo {
setabs
+53
View File
@@ -416,6 +416,31 @@ test oo-2.8 {construction, method calls and ensembles - Bug 3514761} -setup {
} -returnCodes error -cleanup {
namespace delete k
} -result {wrong # args: should be "k next j"}
test oo-2.9 {construction failures and self creation} -setup {
set ::result {}
oo::class create Root
} -body {
oo::class create A {
superclass Root
constructor {} {
lappend ::result "in A"
error "failure in A"
}
destructor {lappend ::result [self]}
}
oo::class create B {
superclass Root
constructor {} {
lappend ::result "in B [self]"
error "failure in B"
}
destructor {lappend ::result [self]}
}
lappend ::result [catch {A create a} msg] $msg
lappend ::result [catch {B create b} msg] $msg
} -cleanup {
Root destroy
} -result {{in A} ::a 1 {failure in A} {in B ::b} ::b 1 {failure in B}}
test oo-3.1 {basic test of OO functionality: destructor} -setup {
# This is a bit complex because it needs to run in a sub-interp as we're
@@ -1544,6 +1569,34 @@ test oo-12.7 {OO: filters} -setup {
} -cleanup {
Aclass destroy
} -result {foo {{::Aclass outerfoo} {::Aclass InnerFoo}}}
test oo-12.8 {OO: filters and destructors} -setup {
oo::class create Aclass
Aclass create Aobject
set ::log {}
} -body {
oo::define Aclass {
constructor {} {
lappend ::log "in constructor"
}
destructor {
lappend ::log "in destructor"
}
method bar {} {
lappend ::log "in method"
}
method Boo args {
lappend ::log [self target]
next {*}$args
}
filter Boo
}
set obj [Aclass new]
$obj bar
$obj destroy
return $::log
} -cleanup {
Aclass destroy
} -result {{in constructor} {::Aclass bar} {in method} {::oo::object destroy} {in destructor}}
test oo-13.1 {OO: changing an object's class} {
oo::class create Aclass
+190
View File
@@ -866,6 +866,196 @@ test oo-call-3.4 {current call introspection: in destructors} -setup {
} -cleanup {
root destroy
} -result {{{{method <destructor> ::B method} {method <destructor> ::A method}} 0} {{{method <destructor> ::B method} {method <destructor> ::A method}} 1}}
# Contributed tests from aspect, related to [0f42ff7871]
#
# dkf's "Principles Leading to a Fix"
#
# A method ought to work "the same" whether or not it has been overridden by
# a subclass. A tailcalled command ought to have as parent stack the same
# thing you'd get with uplevel 1. A subclass will often expect the
# superclass's result to be the result that would be returned if the
# subclass was not there.
# Common setup:
# any invocation of bar should emit "abc\nhi\n" then return to its
# caller
set testopts {
-setup {
oo::class create Master
oo::class create Foo {
superclass Master
method bar {} {
puts abc
tailcall puts hi
puts xyz
}
}
oo::class create Foo2 {
superclass Master
}
}
-cleanup {
Master destroy
}
}
# these succeed, showing that without [next] the bug doesn't fire
test next-tailcall-simple-1 "trivial case with one method" {*}$testopts -body {
[Foo create foo] bar
} -output [join {abc hi} \n]\n
test next-tailcall-simple-2 "my bar" {*}$testopts -body {
oo::define Foo method baz {} {
puts a
my bar
puts b
}
[Foo create foo] baz
} -output [join {a abc hi b} \n]\n
test next-tailcall-simple-3 "\[self\] bar" {*}$testopts -body {
oo::define Foo method baz {} {
puts a
[self] bar
puts b
}
[Foo create foo] baz
} -output [join {a abc hi b} \n]\n
test next-tailcall-simple-4 "foo bar" {*}$testopts -body {
oo::define Foo method baz {} {
puts a
foo bar
puts b
}
[Foo create foo] baz
} -output [join {a abc hi b} \n]\n
# everything from here on uses [next], and fails on 8.6.4 with compilation
test next-tailcall-superclass-1 "next superclass" {*}$testopts -body {
oo::define Foo2 {
superclass Foo
method bar {} {
puts a
next
puts b
}
}
[Foo2 create foo] bar
} -output [join {a abc hi b} \n]\n
test next-tailcall-superclass-2 "nextto superclass" {*}$testopts -body {
oo::define Foo2 {
superclass Foo
method bar {} {
puts a
nextto Foo
puts b
}
}
[Foo2 create foo] bar
} -output [join {a abc hi b} \n]\n
test next-tailcall-mixin-1 "class mixin" {*}$testopts -body {
oo::define Foo2 {
method Bar {} {
puts a
next
puts b
}
filter Bar
}
oo::define Foo mixin Foo2
Foo create foo
foo bar
} -output [join {a abc hi b} \n]\n
test next-tailcall-objmixin-1 "object mixin" {*}$testopts -body {
oo::define Foo2 {
method Bar {} {
puts a
next
puts b
}
filter Bar
}
Foo create foo
oo::objdefine foo mixin Foo2
foo bar
} -output [join {a abc hi b} \n]\n
test next-tailcall-filter-1 "filter method" {*}$testopts -body {
oo::define Foo method Filter {} {
puts a
next
puts b
}
oo::define Foo filter Filter
[Foo new] bar
} -output [join {a abc hi b} \n]\n
test next-tailcall-forward-1 "forward method" {*}$testopts -body {
proc foobar {} {
puts "abc"
tailcall puts "hi"
puts "xyz"
}
oo::define Foo forward foobar foobar
oo::define Foo2 {
superclass Foo
method foobar {} {
puts a
next
puts b
}
}
[Foo2 new] foobar
} -output [join {a abc hi b} \n]\n
test next-tailcall-constructor-1 "next in constructor" -body {
oo::class create Foo {
constructor {} {
puts abc
tailcall puts hi
puts xyz
}
}
oo::class create Foo2 {
superclass Foo
constructor {} {
puts a
next
puts b
}
}
list [Foo new] [Foo2 new]
return ""
} -cleanup {
Foo destroy
} -output [join {abc hi a abc hi b} \n]\n
test next-tailcall-destructor-1 "next in destructor" -body {
oo::class create Foo {
destructor {
puts abc
tailcall puts hi
puts xyz
}
}
oo::class create Foo2 {
superclass Foo
destructor {
puts a
next
puts b
}
}
Foo create foo
Foo2 create foo2
foo destroy
foo2 destroy
} -output [join {abc hi a abc hi b} \n]\n -cleanup {
Foo destroy
}
unset testopts
cleanupTests
return
+30
View File
@@ -147,6 +147,36 @@ test tailcall-0.5 {tailcall is constant space} -constraints testnrelevels -setup
rename b {}
} -result {0 0 0 0 0 0}
test tailcall-0.5.1 {tailcall is constant space} -constraints testnrelevels -setup {
#
# This test is related to [bug d87cb182053fd79b3]: the fix to that bug was
# to remove a call to TclSkipTailcall, which caused a violation of the
# constant-space property of tailcall in that particular
# configuration. This test was added to detect that, and insure that the
# problem is fixed.
#
proc b i {
if {$i == 1} {
depthDiff
}
if {[incr i] > 10} {
return [depthDiff]
}
tailcall dict b $i
}
set map0 [namespace ensemble configure dict -map]
set map $map0
dict set map b b
namespace ensemble configure dict -map $map
} -body {
dict b 0
} -cleanup {
rename b {}
namespace ensemble configure dict -map $map0
unset map map0
} -result {0 0 0 0 0 0}
test tailcall-0.6 {tailcall is constant space} -constraints {testnrelevels knownBug} -setup {
#
# This test fails because ns-unknown is not NR-enabled
+5 -1
View File
@@ -667,7 +667,11 @@ try {
# ... but try to extract (name, version) from subdir contents
try {
set f [open [file join $pkgsDir $dir configure.in]]
try {
set f [open [file join $pkgsDir $dir configure.in]]
} trap {POSIX ENOENT} {} {
set f [open [file join $pkgsDir $dir configure.ac]]
}
foreach line [split [read $f] \n] {
if {2 == [scan $line \
{ AC_INIT ( [%[^]]] , [%[^]]] ) } n v]} {
+3 -8
View File
@@ -96,7 +96,7 @@ CFLAGS_WARNING = @CFLAGS_WARNING@
# The default switches for optimization or debugging
CFLAGS_DEBUG = @CFLAGS_DEBUG@
CFLAGS_OPTIMIZE = -DNDEBUG @CFLAGS_OPTIMIZE@
CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
# To change the compiler switches, for example to change from optimization to
# debugging symbols, change the following line:
@@ -783,10 +783,6 @@ install-strip:
INSTALL_PROGRAM="$(INSTALL_PROGRAM) ${INSTALL_STRIP_PROGRAM}" \
INSTALL_LIBRARY="$(INSTALL_LIBRARY) ${INSTALL_STRIP_LIBRARY}"
# Note: before running ranlib below, must cd to target directory because some
# ranlibs write to current directory, and this might not always be possible
# (e.g. if installing as root).
install-binaries: binaries
@for i in "$(LIB_INSTALL_DIR)" "$(BIN_INSTALL_DIR)" \
"$(CONFIG_INSTALL_DIR)"; \
@@ -844,8 +840,8 @@ install-libraries: libraries
do \
$(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/http1.0; \
done;
@echo "Installing package http 2.8.8 as a Tcl Module";
@$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.6/http-2.8.8.tm;
@echo "Installing package http 2.8.9 as a Tcl Module";
@$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.6/http-2.8.9.tm;
@echo "Installing package opt0.4 files to $(SCRIPT_INSTALL_DIR)/opt0.4/";
@for i in $(TOP_DIR)/library/opt/*.tcl ; \
do \
@@ -1200,7 +1196,6 @@ tclLoadDld.o: $(UNIX_DIR)/tclLoadDld.c
$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclLoadDld.c
tclLoadDyld.o: $(UNIX_DIR)/tclLoadDyld.c
@echo Warnings are expected from compiling tclLoadDyld.c: deprecated API use
$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclLoadDyld.c
tclLoadNone.o: $(GENERIC_DIR)/tclLoadNone.c
+234 -157
View File
@@ -857,6 +857,8 @@ Optional Features:
--enable-load allow dynamic loading and "load" command (default:
on)
--enable-symbols build with debugging symbols (default: off)
--enable-usleep use usleep if possible to sleep, otherwise use
Tcl_Sleep (default: on)
--enable-langinfo use nl_langinfo if possible to determine encoding at
startup, otherwise use old heuristic (default: on)
--enable-dll-unloading enable the 'unload' command (default: on)
@@ -1335,7 +1337,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
TCL_VERSION=8.6
TCL_MAJOR_VERSION=8
TCL_MINOR_VERSION=6
TCL_PATCH_LEVEL=".3"
TCL_PATCH_LEVEL=".4"
VERSION=${TCL_VERSION}
EXTRA_INSTALL_BINARIES=${EXTRA_INSTALL_BINARIES:-"@:"}
@@ -3329,158 +3331,6 @@ cat >>confdefs.h <<\_ACEOF
#define NO_VALUES_H 1
_ACEOF
fi
if test "${ac_cv_header_limits_h+set}" = set; then
echo "$as_me:$LINENO: checking for limits.h" >&5
echo $ECHO_N "checking for limits.h... $ECHO_C" >&6
if test "${ac_cv_header_limits_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
fi
echo "$as_me:$LINENO: result: $ac_cv_header_limits_h" >&5
echo "${ECHO_T}$ac_cv_header_limits_h" >&6
else
# Is the header compilable?
echo "$as_me:$LINENO: checking limits.h usability" >&5
echo $ECHO_N "checking limits.h usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
#include <limits.h>
_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
ac_header_compiler=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
# Is the header present?
echo "$as_me:$LINENO: checking limits.h presence" >&5
echo $ECHO_N "checking limits.h presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <limits.h>
_ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
else
ac_cpp_err=yes
fi
if test -z "$ac_cpp_err"; then
ac_header_preproc=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_preproc=no
fi
rm -f conftest.err conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
yes:no: )
{ echo "$as_me:$LINENO: WARNING: limits.h: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: limits.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
{ echo "$as_me:$LINENO: WARNING: limits.h: proceeding with the compiler's result" >&5
echo "$as_me: WARNING: limits.h: proceeding with the compiler's result" >&2;}
ac_header_preproc=yes
;;
no:yes:* )
{ echo "$as_me:$LINENO: WARNING: limits.h: present but cannot be compiled" >&5
echo "$as_me: WARNING: limits.h: present but cannot be compiled" >&2;}
{ echo "$as_me:$LINENO: WARNING: limits.h: check for missing prerequisite headers?" >&5
echo "$as_me: WARNING: limits.h: check for missing prerequisite headers?" >&2;}
{ echo "$as_me:$LINENO: WARNING: limits.h: see the Autoconf documentation" >&5
echo "$as_me: WARNING: limits.h: see the Autoconf documentation" >&2;}
{ echo "$as_me:$LINENO: WARNING: limits.h: section \"Present But Cannot Be Compiled\"" >&5
echo "$as_me: WARNING: limits.h: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: limits.h: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: limits.h: proceeding with the preprocessor's result" >&2;}
{ echo "$as_me:$LINENO: WARNING: limits.h: in the future, the compiler will take precedence" >&5
echo "$as_me: WARNING: limits.h: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
## ------------------------------ ##
## Report this to the tcl lists. ##
## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
;;
esac
echo "$as_me:$LINENO: checking for limits.h" >&5
echo $ECHO_N "checking for limits.h... $ECHO_C" >&6
if test "${ac_cv_header_limits_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_cv_header_limits_h=$ac_header_preproc
fi
echo "$as_me:$LINENO: result: $ac_cv_header_limits_h" >&5
echo "${ECHO_T}$ac_cv_header_limits_h" >&6
fi
if test $ac_cv_header_limits_h = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_LIMITS_H 1
_ACEOF
else
cat >>confdefs.h <<\_ACEOF
#define NO_LIMITS_H 1
_ACEOF
fi
@@ -9008,15 +8858,14 @@ else
if test "$RANLIB" = ""; then
MAKE_LIB='$(STLIB_LD) $@ ${OBJS}'
INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) "$(LIB_INSTALL_DIR)/$(LIB_FILE)"'
else
MAKE_LIB='${STLIB_LD} $@ ${OBJS} ; ${RANLIB} $@'
INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) "$(LIB_INSTALL_DIR)/$(LIB_FILE)" ; (cd "$(LIB_INSTALL_DIR)" ; $(RANLIB) $(LIB_FILE))'
fi
INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) "$(LIB_INSTALL_DIR)/$(LIB_FILE)"'
fi
@@ -9025,15 +8874,14 @@ fi
if test "$RANLIB" = ""; then
MAKE_STUB_LIB='${STLIB_LD} $@ ${STUB_LIB_OBJS}'
INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) "$(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)"'
else
MAKE_STUB_LIB='${STLIB_LD} $@ ${STUB_LIB_OBJS} ; ${RANLIB} $@'
INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) "$(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)" ; (cd "$(LIB_INSTALL_DIR)" ; $(RANLIB) $(STUB_LIB_FILE))'
fi
INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) "$(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)"'
# Define TCL_LIBS now that we know what DL_LIBS is.
# The trick here is that we don't want to change the value of TCL_LIBS if
@@ -16881,6 +16729,235 @@ _ACEOF
fi
#--------------------------------------------------------------------
# Check for support of usleep function
#--------------------------------------------------------------------
# Check whether --enable-usleep or --disable-usleep was given.
if test "${enable_usleep+set}" = set; then
enableval="$enable_usleep"
usleep_ok=$enableval
else
usleep_ok=yes
fi;
HAVE_USLEEP=0
if test "$usleep_ok" = "yes"; then
if test "${ac_cv_header_unistd_h+set}" = set; then
echo "$as_me:$LINENO: checking for unistd.h" >&5
echo $ECHO_N "checking for unistd.h... $ECHO_C" >&6
if test "${ac_cv_header_unistd_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
fi
echo "$as_me:$LINENO: result: $ac_cv_header_unistd_h" >&5
echo "${ECHO_T}$ac_cv_header_unistd_h" >&6
else
# Is the header compilable?
echo "$as_me:$LINENO: checking unistd.h usability" >&5
echo $ECHO_N "checking unistd.h usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
#include <unistd.h>
_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
ac_header_compiler=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
# Is the header present?
echo "$as_me:$LINENO: checking unistd.h presence" >&5
echo $ECHO_N "checking unistd.h presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <unistd.h>
_ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 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); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
else
ac_cpp_err=yes
fi
if test -z "$ac_cpp_err"; then
ac_header_preproc=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_preproc=no
fi
rm -f conftest.err conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
yes:no: )
{ echo "$as_me:$LINENO: WARNING: unistd.h: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: unistd.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
{ echo "$as_me:$LINENO: WARNING: unistd.h: proceeding with the compiler's result" >&5
echo "$as_me: WARNING: unistd.h: proceeding with the compiler's result" >&2;}
ac_header_preproc=yes
;;
no:yes:* )
{ echo "$as_me:$LINENO: WARNING: unistd.h: present but cannot be compiled" >&5
echo "$as_me: WARNING: unistd.h: present but cannot be compiled" >&2;}
{ echo "$as_me:$LINENO: WARNING: unistd.h: check for missing prerequisite headers?" >&5
echo "$as_me: WARNING: unistd.h: check for missing prerequisite headers?" >&2;}
{ echo "$as_me:$LINENO: WARNING: unistd.h: see the Autoconf documentation" >&5
echo "$as_me: WARNING: unistd.h: see the Autoconf documentation" >&2;}
{ echo "$as_me:$LINENO: WARNING: unistd.h: section \"Present But Cannot Be Compiled\"" >&5
echo "$as_me: WARNING: unistd.h: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: unistd.h: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: unistd.h: proceeding with the preprocessor's result" >&2;}
{ echo "$as_me:$LINENO: WARNING: unistd.h: in the future, the compiler will take precedence" >&5
echo "$as_me: WARNING: unistd.h: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
## ------------------------------ ##
## Report this to the tcl lists. ##
## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
;;
esac
echo "$as_me:$LINENO: checking for unistd.h" >&5
echo $ECHO_N "checking for unistd.h... $ECHO_C" >&6
if test "${ac_cv_header_unistd_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_cv_header_unistd_h=$ac_header_preproc
fi
echo "$as_me:$LINENO: result: $ac_cv_header_unistd_h" >&5
echo "${ECHO_T}$ac_cv_header_unistd_h" >&6
fi
if test $ac_cv_header_unistd_h = yes; then
usleep_ok=yes
else
usleep_ok=no
fi
fi
echo "$as_me:$LINENO: checking whether to use usleep" >&5
echo $ECHO_N "checking whether to use usleep... $ECHO_C" >&6
if test "$usleep_ok" = "yes"; then
if test "${tcl_cv_usleep_h+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 <unistd.h>
int
main ()
{
usleep(0);
;
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_cv_usleep_h=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
tcl_cv_usleep_h=no
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $tcl_cv_usleep_h" >&5
echo "${ECHO_T}$tcl_cv_usleep_h" >&6
if test $tcl_cv_usleep_h = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_USLEEP 1
_ACEOF
fi
else
echo "$as_me:$LINENO: result: $usleep_ok" >&5
echo "${ECHO_T}$usleep_ok" >&6
fi
#--------------------------------------------------------------------
# Check for support of nl_langinfo function
#--------------------------------------------------------------------
+7 -1
View File
@@ -25,7 +25,7 @@ m4_ifdef([SC_USE_CONFIG_HEADERS], [
TCL_VERSION=8.6
TCL_MAJOR_VERSION=8
TCL_MINOR_VERSION=6
TCL_PATCH_LEVEL=".3"
TCL_PATCH_LEVEL=".4"
VERSION=${TCL_VERSION}
EXTRA_INSTALL_BINARIES=${EXTRA_INSTALL_BINARIES:-"@:"}
@@ -544,6 +544,12 @@ if test $tcl_cv_putenv_copy = yes; then
[Does putenv() copy strings or incorporate them by reference?])
fi
#--------------------------------------------------------------------
# Check for support of usleep function
#--------------------------------------------------------------------
SC_ENABLE_USLEEP
#--------------------------------------------------------------------
# Check for support of nl_langinfo function
#--------------------------------------------------------------------
+44 -8
View File
@@ -773,6 +773,48 @@ AC_DEFUN([SC_ENABLE_SYMBOLS], [
fi
])
#------------------------------------------------------------------------
# SC_ENABLE_USLEEP --
#
# Allows use of usleep function.
# This is only relevant for Unix.
#
# Arguments:
# none
#
# Results:
#
# Adds the following arguments to configure:
# --enable-usleep=yes|no (default is yes)
#
# Defines the following vars:
# HAVE_USLEEP Triggers use of usleep if defined.
#------------------------------------------------------------------------
AC_DEFUN([SC_ENABLE_USLEEP], [
AC_ARG_ENABLE(usleep,
AC_HELP_STRING([--enable-usleep],
[use usleep if possible to sleep, otherwise use Tcl_Sleep (default: on)]),
[usleep_ok=$enableval], [usleep_ok=yes])
HAVE_USLEEP=0
if test "$usleep_ok" = "yes"; then
AC_CHECK_HEADER(unistd.h,[usleep_ok=yes],[usleep_ok=no])
fi
AC_MSG_CHECKING([whether to use usleep])
if test "$usleep_ok" = "yes"; then
AC_CACHE_VAL(tcl_cv_usleep_h, [
AC_TRY_COMPILE([#include <unistd.h>], [usleep(0);],
[tcl_cv_usleep_h=yes],[tcl_cv_usleep_h=no])])
AC_MSG_RESULT([$tcl_cv_usleep_h])
if test $tcl_cv_usleep_h = yes; then
AC_DEFINE(HAVE_USLEEP, 1, [Do we have usleep()?])
fi
else
AC_MSG_RESULT([$usleep_ok])
fi
])
#------------------------------------------------------------------------
# SC_ENABLE_LANGINFO --
#
@@ -2060,21 +2102,19 @@ dnl # preprocessing tests use only CPPFLAGS.
AS_IF([test "$RANLIB" = ""], [
MAKE_LIB='$(STLIB_LD) [$]@ ${OBJS}'
INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) "$(LIB_INSTALL_DIR)/$(LIB_FILE)"'
], [
MAKE_LIB='${STLIB_LD} [$]@ ${OBJS} ; ${RANLIB} [$]@'
INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) "$(LIB_INSTALL_DIR)/$(LIB_FILE)" ; (cd "$(LIB_INSTALL_DIR)" ; $(RANLIB) $(LIB_FILE))'
])
INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) "$(LIB_INSTALL_DIR)/$(LIB_FILE)"'
])
# Stub lib does not depend on shared/static configuration
AS_IF([test "$RANLIB" = ""], [
MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS}'
INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) "$(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)"'
], [
MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS} ; ${RANLIB} [$]@'
INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) "$(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)" ; (cd "$(LIB_INSTALL_DIR)" ; $(RANLIB) $(STUB_LIB_FILE))'
])
INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) "$(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)"'
# Define TCL_LIBS now that we know what DL_LIBS is.
# The trick here is that we don't want to change the value of TCL_LIBS if
@@ -2158,7 +2198,6 @@ dnl # preprocessing tests use only CPPFLAGS.
# Defines some of the following vars:
# NO_DIRENT_H
# NO_VALUES_H
# HAVE_LIMITS_H or NO_LIMITS_H
# NO_STDLIB_H
# NO_STRING_H
# NO_SYS_WAIT_H
@@ -2198,9 +2237,6 @@ closedir(d);
AC_CHECK_HEADER(float.h, , [AC_DEFINE(NO_FLOAT_H, 1, [Do we have <float.h>?])])
AC_CHECK_HEADER(values.h, , [AC_DEFINE(NO_VALUES_H, 1, [Do we have <values.h>?])])
AC_CHECK_HEADER(limits.h,
[AC_DEFINE(HAVE_LIMITS_H, 1, [Do we have <limits.h>?])],
[AC_DEFINE(NO_LIMITS_H, 1, [Do we have <limits.h>?])])
AC_CHECK_HEADER(stdlib.h, tcl_ok=1, tcl_ok=0)
AC_EGREP_HEADER(strtol, stdlib.h, , tcl_ok=0)
AC_EGREP_HEADER(strtoul, stdlib.h, , tcl_ok=0)
+1 -1
View File
@@ -4,7 +4,7 @@
Name: tcl
Summary: Tcl scripting language development environment
Version: 8.6.3
Version: 8.6.4
Release: 2
License: BSD
Group: Development/Languages
+6 -26
View File
@@ -4,9 +4,6 @@
#ifndef _TCLCONFIG
#define _TCLCONFIG
/* Define if building universal (internal helper macro) */
#undef AC_APPLE_UNIVERSAL_BUILD
/* Is gettimeofday() actually declared in <sys/time.h>? */
#undef GETTOD_NOT_DECLARED
@@ -130,9 +127,6 @@
/* Define to 1 if you have the <libkern/OSAtomic.h> header file. */
#undef HAVE_LIBKERN_OSATOMIC_H
/* Do we have <limits.h>? */
#undef HAVE_LIMITS_H
/* Define to 1 if you have the `localtime_r' function. */
#undef HAVE_LOCALTIME_R
@@ -214,10 +208,10 @@
/* Is 'struct stat64' in <sys/stat.h>? */
#undef HAVE_STRUCT_STAT64
/* Define to 1 if `st_blksize' is a member of `struct stat'. */
/* Define to 1 if `st_blksize' is member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BLKSIZE
/* Define to 1 if `st_blocks' is a member of `struct stat'. */
/* Define to 1 if `st_blocks' is member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_BLOCKS
/* Define to 1 if you have the <sys/filio.h> header file. */
@@ -316,9 +310,6 @@
/* Do we have a usable 'isnan'? */
#undef NO_ISNAN
/* Do we have <limits.h>? */
#undef NO_LIMITS_H
/* Do we have memmove()? */
#undef NO_MEMMOVE
@@ -361,9 +352,6 @@
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the home page for this package. */
#undef PACKAGE_URL
/* Define to the version of this package. */
#undef PACKAGE_VERSION
@@ -442,17 +430,9 @@
/* Should we use vfork() instead of fork()? */
#undef USE_VFORK
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
# if defined __BIG_ENDIAN__
# define WORDS_BIGENDIAN 1
# endif
#else
# ifndef WORDS_BIGENDIAN
# undef WORDS_BIGENDIAN
# endif
#endif
/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */
#undef WORDS_BIGENDIAN
/* Are Darwin SUSv3 extensions available? */
#undef _DARWIN_C_SOURCE
@@ -507,7 +487,7 @@
/* Define to `int' if <sys/types.h> does not define. */
#undef pid_t
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* Define to `unsigned' if <sys/types.h> does not define. */
#undef size_t
/* Define as int if socklen_t is not available */
+1
View File
@@ -48,6 +48,7 @@
#endif /* TCL_DYLD_USE_DLFCN */
#if TCL_DYLD_USE_NSMODULE || defined(TCL_LOAD_FROM_MEMORY)
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#include <mach-o/dyld.h>
#include <mach-o/fat.h>
#include <mach-o/swap.h>
+9 -1
View File
@@ -1334,6 +1334,9 @@ NotifierThreadProc(
static void
AtForkPrepare(void)
{
Tcl_MutexLock(&notifierMutex);
TclpMasterLock();
TclpMutexLock();
}
/*
@@ -1355,6 +1358,9 @@ AtForkPrepare(void)
static void
AtForkParent(void)
{
TclpMutexUnlock();
TclpMasterUnlock();
Tcl_MutexUnlock(&notifierMutex);
}
/*
@@ -1376,7 +1382,9 @@ AtForkParent(void)
static void
AtForkChild(void)
{
Tcl_MutexFinalize(&notifierMutex);
TclpMutexUnlock();
TclpMasterUnlock();
Tcl_MutexUnlockAndFinalize(&notifierMutex);
Tcl_InitNotifier();
}
#endif /* HAVE_PTHREAD_ATFORK */
+1 -8
View File
@@ -98,9 +98,6 @@ typedef off_t Tcl_SeekOffset;
__declspec(dllimport) extern __stdcall int SetFileAttributesW(const WCHAR *, int);
__declspec(dllimport) extern int cygwin_conv_path(int, const void *, void *, int);
__declspec(dllimport) extern int cygwin_conv_path_list(int, const void *, void *, int);
# define USE_PUTENV 1
# define USE_PUTENV_FOR_UNSET 1
/* On Cygwin, the environment is imported from the Cygwin DLL. */
#ifndef __x86_64__
# define environ __cygwin_environ
@@ -144,11 +141,7 @@ typedef off_t Tcl_SeekOffset;
#if HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#ifdef NO_LIMITS_H
# include "../compat/limits.h"
#else
# include <limits.h>
#endif
#include <limits.h>
#if HAVE_STDINT_H
# include <stdint.h>
#endif
+100 -2
View File
@@ -21,6 +21,19 @@ typedef struct ThreadSpecificData {
static Tcl_ThreadDataKey dataKey;
/*
* This is the number of milliseconds to wait between internal retries in
* the Tcl_MutexLock function. This value must be greater than zero and
* should be a suitable value for the given platform.
*
* TODO: This may need to be dynamically determined, based on the relative
* performance of the running process.
*/
#ifndef TCL_MUTEX_LOCK_SLEEP_TIME
# define TCL_MUTEX_LOCK_SLEEP_TIME (25)
#endif
/*
* masterLock is used to serialize creation of mutexes, condition variables,
* and thread local storage. This is the only place that can count on the
@@ -44,6 +57,13 @@ static pthread_mutex_t initLock = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t allocLock = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t *allocLockPtr = &allocLock;
/*
* The mutexLock serializes Tcl_MutexLock. This is necessary to prevent
* races when finalizing a mutex that some other thread may want to lock.
*/
static pthread_mutex_t mutexLock = PTHREAD_MUTEX_INITIALIZER;
/*
* These are for the critical sections inside this file.
*/
@@ -361,6 +381,58 @@ TclpMasterUnlock(void)
#endif
}
/*
*----------------------------------------------------------------------
*
* TclpMutexLock
*
* This procedure is used to grab a lock that serializes locking
* another mutex.
*
* Results:
* None.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
void
TclpMutexLock(void)
{
#ifdef TCL_THREADS
pthread_mutex_lock(&mutexLock);
#endif
}
/*
*----------------------------------------------------------------------
*
* TclpMutexUnlock
*
* This procedure is used to release a lock that serializes locking
* another mutex.
*
* Results:
* None.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
void
TclpMutexUnlock(void)
{
#ifdef TCL_THREADS
pthread_mutex_unlock(&mutexLock);
#endif
}
/*
*----------------------------------------------------------------------
@@ -421,6 +493,8 @@ Tcl_MutexLock(
{
pthread_mutex_t *pmutexPtr;
retry:
if (*mutexPtr == NULL) {
MASTER_LOCK;
if (*mutexPtr == NULL) {
@@ -435,8 +509,32 @@ Tcl_MutexLock(
}
MASTER_UNLOCK;
}
pmutexPtr = *((pthread_mutex_t **)mutexPtr);
pthread_mutex_lock(pmutexPtr);
while (1) {
TclpMutexLock();
pmutexPtr = *((pthread_mutex_t **)mutexPtr);
if (pmutexPtr == NULL) {
TclpMutexUnlock();
goto retry;
}
if (pthread_mutex_trylock(pmutexPtr) == 0) {
TclpMutexUnlock();
return;
}
TclpMutexUnlock();
/*
* BUGBUG: All core and Thread package tests pass when usleep()
* is used; however, the Thread package tests hang at
* various places when Tcl_Sleep() is used, typically
* while running test "thread-17.8", "thread-17.9", or
* "thread-17.11a". Really, what we want here is just
* to yield to other threads for a while.
*/
#ifdef HAVE_USLEEP
usleep(TCL_MUTEX_LOCK_SLEEP_TIME);
#else
Tcl_Sleep(TCL_MUTEX_LOCK_SLEEP_TIME);
#endif
}
}
/*
+7 -6
View File
@@ -110,6 +110,7 @@ GENERIC_DIR_NATIVE = $(shell $(CYGPATH) '$(GENERIC_DIR)' | sed 's!\\!/!g')
TOMMATH_DIR_NATIVE = $(shell $(CYGPATH) '$(TOMMATH_DIR)' | sed 's!\\!/!g')
WIN_DIR_NATIVE = $(shell $(CYGPATH) '$(WIN_DIR)' | sed 's!\\!/!g')
ROOT_DIR_NATIVE = $(shell $(CYGPATH) '$(ROOT_DIR)' | sed 's!\\!/!g')
ZLIB_DIR_NATIVE = $(shell $(CYGPATH) '$(ZLIB_DIR)' | sed 's!\\!/!g')
#GENERIC_DIR_NATIVE = $(GENERIC_DIR)
#TOMMATH_DIR_NATIVE = $(TOMMATH_DIR)
#WIN_DIR_NATIVE = $(WIN_DIR)
@@ -189,10 +190,10 @@ SHELL = @SHELL@
RM = rm -f
COPY = cp
CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${TCL_SHLIB_CFLAGS} -I"${ZLIB_DIR}" \
-I"${GENERIC_DIR_NATIVE}" -DTCL_TOMMATH -DMP_PREC=4 -I"${TOMMATH_DIR_NATIVE}" \
-I"${WIN_DIR_NATIVE}" ${AC_FLAGS} \
${COMPILE_DEBUG_FLAGS} ${NO_DEPRECATED_FLAGS}
CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${TCL_SHLIB_CFLAGS} \
-I"${ZLIB_DIR_NATIVE}" -I"${GENERIC_DIR_NATIVE}" -DTCL_TOMMATH \
-DMP_PREC=4 -I"${TOMMATH_DIR_NATIVE}" -I"${WIN_DIR_NATIVE}" \
${AC_FLAGS} ${COMPILE_DEBUG_FLAGS} ${NO_DEPRECATED_FLAGS}
CC_OBJNAME = @CC_OBJNAME@
CC_EXENAME = @CC_EXENAME@
@@ -642,8 +643,8 @@ install-libraries: libraries install-tzdata install-msgs
do \
$(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http1.0"; \
done;
@echo "Installing package http 2.8.8 as a Tcl Module";
@$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.6/http-2.8.8.tm;
@echo "Installing package http 2.8.9 as a Tcl Module";
@$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.6/http-2.8.9.tm;
@echo "Installing library opt0.4 directory";
@for j in $(ROOT_DIR)/library/opt/*.tcl; \
do \
+4 -4
View File
@@ -1311,7 +1311,7 @@ SHELL=/bin/sh
TCL_VERSION=8.6
TCL_MAJOR_VERSION=8
TCL_MINOR_VERSION=6
TCL_PATCH_LEVEL=".3"
TCL_PATCH_LEVEL=".4"
VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION
TCL_DDE_VERSION=1.4
@@ -4364,12 +4364,12 @@ if test "$tcl_ok" = "yes"; then
if test "$GCC" == "yes"; then
ZLIB_LIBS=\${ZLIB_DIR}/win64/libz.dll.a
ZLIB_LIBS=\${ZLIB_DIR_NATIVE}/win64/libz.dll.a
else
ZLIB_LIBS=\${ZLIB_DIR}/win64/zdll.lib
ZLIB_LIBS=\${ZLIB_DIR_NATIVE}/win64/zdll.lib
fi
@@ -4377,7 +4377,7 @@ fi
else
ZLIB_LIBS=\${ZLIB_DIR}/win32/zdll.lib
ZLIB_LIBS=\${ZLIB_DIR_NATIVE}/win32/zdll.lib
fi
+4 -4
View File
@@ -14,7 +14,7 @@ SHELL=/bin/sh
TCL_VERSION=8.6
TCL_MAJOR_VERSION=8
TCL_MINOR_VERSION=6
TCL_PATCH_LEVEL=".3"
TCL_PATCH_LEVEL=".4"
VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION
TCL_DDE_VERSION=1.4
@@ -130,12 +130,12 @@ AS_IF([test "$tcl_ok" = "yes"], [
AC_SUBST(ZLIB_DLL_FILE,[\${ZLIB_DLL_FILE}])
AS_IF([test "$do64bit" = "yes"], [
AS_IF([test "$GCC" == "yes"],[
AC_SUBST(ZLIB_LIBS,[\${ZLIB_DIR}/win64/libz.dll.a])
AC_SUBST(ZLIB_LIBS,[\${ZLIB_DIR_NATIVE}/win64/libz.dll.a])
], [
AC_SUBST(ZLIB_LIBS,[\${ZLIB_DIR}/win64/zdll.lib])
AC_SUBST(ZLIB_LIBS,[\${ZLIB_DIR_NATIVE}/win64/zdll.lib])
])
], [
AC_SUBST(ZLIB_LIBS,[\${ZLIB_DIR}/win32/zdll.lib])
AC_SUBST(ZLIB_LIBS,[\${ZLIB_DIR_NATIVE}/win32/zdll.lib])
])
], [
AC_SUBST(ZLIB_OBJS,[\${ZLIB_OBJS}])
+2
View File
@@ -16,7 +16,9 @@
#include "tcl.h"
#define WIN32_LEAN_AND_MEAN
#define STRICT /* See MSDN Article Q83456 */
#include <windows.h>
#undef STRICT
#undef WIN32_LEAN_AND_MEAN
#include <locale.h>
#include <stdlib.h>
+14 -2
View File
@@ -220,8 +220,20 @@ ReadConsoleBytes(
BOOL result;
int tcharsize = sizeof(TCHAR);
result = ReadConsole(hConsole, lpBuffer, nbytes / tcharsize, &ntchars,
NULL);
/*
* If user types a Ctrl-Break or Ctrl-C, ReadConsole will return
* success with ntchars == 0 and GetLastError() will be
* ERROR_OPERATION_ABORTED. We do not want to treat this case
* as EOF so we will loop around again. If no Ctrl signal handlers
* have been established, the default signal OS handler in a separate
* thread will terminate the program. If a Ctrl signal handler
* has been established (through an extension for example), it
* will run and take whatever action it deems appropriate.
*/
do {
result = ReadConsole(hConsole, lpBuffer, nbytes / tcharsize, &ntchars,
NULL);
} while (result && ntchars == 0 && GetLastError() == ERROR_OPERATION_ABORTED);
if (nbytesread != NULL) {
*nbytesread = ntchars * tcharsize;
}
+1 -1
View File
@@ -668,7 +668,7 @@ NativeReadReparse(
HANDLE hFile;
DWORD returnedLength;
hFile = CreateFile(linkDirPath, desiredAccess, 0, NULL, OPEN_EXISTING,
hFile = CreateFile(linkDirPath, desiredAccess, FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
+81 -2
View File
@@ -23,6 +23,16 @@
_CRTIMP unsigned int __cdecl _controlfp (unsigned int unNew, unsigned int unMask);
#endif
/*
* This is the number of milliseconds to wait between internal retries in
* the Tcl_MutexLock function. This value must be greater than or equal
* to zero and should be a suitable value for the given platform.
*/
#ifndef TCL_MUTEX_LOCK_SLEEP_TIME
# define TCL_MUTEX_LOCK_SLEEP_TIME (0)
#endif
/*
* This is the master lock used to serialize access to other serialization
* data structures.
@@ -56,6 +66,13 @@ static int allocOnce = 0;
#endif /* TCL_THREADS */
/*
* The mutexLock serializes Tcl_MutexLock. This is necessary to prevent
* races when finalizing a mutex that some other thread may want to lock.
*/
static CRITICAL_SECTION mutexLock;
/*
* The joinLock serializes Create- and ExitThread. This is necessary to
* prevent a race where a new joinable thread exits before the creating thread
@@ -369,6 +386,7 @@ TclpInitLock(void)
*/
init = 1;
InitializeCriticalSection(&mutexLock);
InitializeCriticalSection(&joinLock);
InitializeCriticalSection(&initLock);
InitializeCriticalSection(&masterLock);
@@ -461,6 +479,52 @@ TclpMasterUnlock(void)
LeaveCriticalSection(&masterLock);
}
/*
*----------------------------------------------------------------------
*
* TclpMutexLock
*
* This procedure is used to grab a lock that serializes locking
* another mutex.
*
* Results:
* None.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
void
TclpMutexLock(void)
{
EnterCriticalSection(&mutexLock);
}
/*
*----------------------------------------------------------------------
*
* TclpMutexUnlock
*
* This procedure is used to release a lock that serializes locking
* another mutex.
*
* Results:
* None.
*
* Side effects:
* None.
*
*----------------------------------------------------------------------
*/
void
TclpMutexUnlock(void)
{
LeaveCriticalSection(&mutexLock);
}
/*
*----------------------------------------------------------------------
*
@@ -516,6 +580,7 @@ void
TclFinalizeLock(void)
{
MASTER_LOCK;
DeleteCriticalSection(&mutexLock);
DeleteCriticalSection(&joinLock);
/*
@@ -569,6 +634,8 @@ Tcl_MutexLock(
{
CRITICAL_SECTION *csPtr;
retry:
if (*mutexPtr == NULL) {
MASTER_LOCK;
@@ -584,8 +651,20 @@ Tcl_MutexLock(
}
MASTER_UNLOCK;
}
csPtr = *((CRITICAL_SECTION **)mutexPtr);
EnterCriticalSection(csPtr);
while (1) {
TclpMutexLock();
csPtr = *((CRITICAL_SECTION **)mutexPtr);
if (csPtr == NULL) {
TclpMutexUnlock();
goto retry;
}
if (TryEnterCriticalSection(csPtr)) {
TclpMutexUnlock();
return;
}
TclpMutexUnlock();
Tcl_Sleep(TCL_MUTEX_LOCK_SLEEP_TIME);
}
}
/*