summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpooryorick <com.digitalsmarties@pooryorick.com>2016-10-03 16:55:56 (GMT)
committerpooryorick <com.digitalsmarties@pooryorick.com>2016-10-03 16:55:56 (GMT)
commit8826c4b5dc048432fbed200da55eef080c75b32c (patch)
tree630235c89d7d920a856d6b575a4c28ec3f917fdb
parent79732cb7bfe403d288455d98bc70bf3c73e09e8f (diff)
parent2735ae8a8f3cd9a14778858d17f195bf54fc3303 (diff)
downloadtcl-8826c4b5dc048432fbed200da55eef080c75b32c.zip
tcl-8826c4b5dc048432fbed200da55eef080c75b32c.tar.gz
tcl-8826c4b5dc048432fbed200da55eef080c75b32c.tar.bz2
merge trunk
-rw-r--r--doc/Hash.32
-rw-r--r--doc/chan.n26
-rw-r--r--doc/expr.n6
-rw-r--r--doc/fcopy.n12
-rw-r--r--doc/file.n2
-rw-r--r--generic/tcl.h6
-rw-r--r--generic/tclAssembly.c6
-rw-r--r--generic/tclCmdAH.c7
-rw-r--r--generic/tclCompCmdsGR.c2
-rw-r--r--generic/tclCompCmdsSZ.c6
-rw-r--r--generic/tclCompExpr.c18
-rw-r--r--generic/tclCompile.c22
-rw-r--r--generic/tclCompile.h30
-rw-r--r--generic/tclEnsemble.c13
-rw-r--r--generic/tclExecute.c32
-rw-r--r--generic/tclFCmd.c10
-rw-r--r--generic/tclHash.c12
-rw-r--r--generic/tclIO.c159
-rw-r--r--generic/tclIO.h6
-rw-r--r--generic/tclIndexObj.c34
-rw-r--r--generic/tclInt.decls2
-rw-r--r--generic/tclInt.h22
-rw-r--r--generic/tclIntDecls.h4
-rw-r--r--generic/tclInterp.c11
-rw-r--r--generic/tclLiteral.c49
-rw-r--r--generic/tclNamesp.c11
-rw-r--r--generic/tclObj.c162
-rw-r--r--generic/tclProc.c24
-rw-r--r--generic/tclTest.c96
-rw-r--r--generic/tclTestObj.c18
-rw-r--r--generic/tclUtf.c68
-rw-r--r--generic/tclVar.c458
-rw-r--r--generic/tclZlib.c48
-rw-r--r--library/auto.tcl11
-rw-r--r--library/tzdata/America/Cambridge_Bay2
-rw-r--r--library/tzdata/America/Inuvik2
-rw-r--r--library/tzdata/America/Iqaluit2
-rw-r--r--library/tzdata/America/Los_Angeles36
-rw-r--r--library/tzdata/America/Pangnirtung2
-rw-r--r--library/tzdata/America/Rankin_Inlet2
-rw-r--r--library/tzdata/America/Resolute2
-rw-r--r--library/tzdata/America/Tijuana14
-rw-r--r--library/tzdata/America/Yellowknife2
-rw-r--r--library/tzdata/Antarctica/Casey12
-rw-r--r--library/tzdata/Antarctica/Davis16
-rw-r--r--library/tzdata/Antarctica/DumontDUrville8
-rw-r--r--library/tzdata/Antarctica/Macquarie4
-rw-r--r--library/tzdata/Antarctica/Mawson6
-rw-r--r--library/tzdata/Antarctica/Palmer2
-rw-r--r--library/tzdata/Antarctica/Rothera4
-rw-r--r--library/tzdata/Antarctica/Syowa4
-rw-r--r--library/tzdata/Antarctica/Troll384
-rw-r--r--library/tzdata/Antarctica/Vostok4
-rw-r--r--library/tzdata/Asia/Anadyr134
-rw-r--r--library/tzdata/Asia/Ashgabat52
-rw-r--r--library/tzdata/Asia/Baku138
-rw-r--r--library/tzdata/Asia/Bishkek105
-rw-r--r--library/tzdata/Asia/Chita134
-rw-r--r--library/tzdata/Asia/Dushanbe48
-rw-r--r--library/tzdata/Asia/Irkutsk132
-rw-r--r--library/tzdata/Asia/Kamchatka132
-rw-r--r--library/tzdata/Asia/Khandyga136
-rw-r--r--library/tzdata/Asia/Krasnoyarsk132
-rw-r--r--library/tzdata/Asia/Magadan134
-rw-r--r--library/tzdata/Asia/Novokuznetsk133
-rw-r--r--library/tzdata/Asia/Novosibirsk135
-rw-r--r--library/tzdata/Asia/Omsk132
-rw-r--r--library/tzdata/Asia/Rangoon10
-rw-r--r--library/tzdata/Asia/Sakhalin137
-rw-r--r--library/tzdata/Asia/Samarkand53
-rw-r--r--library/tzdata/Asia/Srednekolymsk132
-rw-r--r--library/tzdata/Asia/Tashkent53
-rw-r--r--library/tzdata/Asia/Tbilisi108
-rw-r--r--library/tzdata/Asia/Ust-Nera132
-rw-r--r--library/tzdata/Asia/Vladivostok132
-rw-r--r--library/tzdata/Asia/Yakutsk132
-rw-r--r--library/tzdata/Asia/Yangon9
-rw-r--r--library/tzdata/Asia/Yekaterinburg132
-rw-r--r--library/tzdata/Asia/Yerevan129
-rw-r--r--library/tzdata/Etc/GMT+12
-rw-r--r--library/tzdata/Etc/GMT+102
-rw-r--r--library/tzdata/Etc/GMT+112
-rw-r--r--library/tzdata/Etc/GMT+122
-rw-r--r--library/tzdata/Etc/GMT+22
-rw-r--r--library/tzdata/Etc/GMT+32
-rw-r--r--library/tzdata/Etc/GMT+42
-rw-r--r--library/tzdata/Etc/GMT+52
-rw-r--r--library/tzdata/Etc/GMT+62
-rw-r--r--library/tzdata/Etc/GMT+72
-rw-r--r--library/tzdata/Etc/GMT+82
-rw-r--r--library/tzdata/Etc/GMT+92
-rw-r--r--library/tzdata/Etc/GMT-12
-rw-r--r--library/tzdata/Etc/GMT-102
-rw-r--r--library/tzdata/Etc/GMT-112
-rw-r--r--library/tzdata/Etc/GMT-122
-rw-r--r--library/tzdata/Etc/GMT-132
-rw-r--r--library/tzdata/Etc/GMT-142
-rw-r--r--library/tzdata/Etc/GMT-22
-rw-r--r--library/tzdata/Etc/GMT-32
-rw-r--r--library/tzdata/Etc/GMT-42
-rw-r--r--library/tzdata/Etc/GMT-52
-rw-r--r--library/tzdata/Etc/GMT-62
-rw-r--r--library/tzdata/Etc/GMT-72
-rw-r--r--library/tzdata/Etc/GMT-82
-rw-r--r--library/tzdata/Etc/GMT-92
-rw-r--r--library/tzdata/Europe/Istanbul190
-rw-r--r--library/tzdata/Europe/Kaliningrad2
-rw-r--r--library/tzdata/Europe/Kirov2
-rw-r--r--library/tzdata/Europe/Minsk9
-rw-r--r--library/tzdata/Europe/Moscow4
-rw-r--r--library/tzdata/Europe/Samara136
-rw-r--r--library/tzdata/Europe/Ulyanovsk2
-rw-r--r--library/tzdata/Europe/Volgograd133
-rw-r--r--library/tzdata/Indian/Kerguelen4
-rw-r--r--tests/chanio.test23
-rw-r--r--tests/cmdAH.test15
-rw-r--r--tests/env.test12
-rw-r--r--tests/exec.test3
-rw-r--r--tests/fileName.test4
-rw-r--r--tests/history.test5
-rw-r--r--tests/interp.test58
-rw-r--r--tests/io.test35
-rw-r--r--tests/load.test54
-rw-r--r--tests/msgcat.test9
-rw-r--r--tests/namespace.test20
-rw-r--r--tests/obj.test1
-rw-r--r--tests/parseOld.test13
-rw-r--r--tests/resolver.test117
-rw-r--r--tests/safe.test20
-rw-r--r--tests/set-old.test4
-rw-r--r--tests/set.test113
-rw-r--r--tests/socket.test1
-rw-r--r--tests/tcltest.test7
-rw-r--r--tests/unload.test170
-rw-r--r--tests/var.test98
-rw-r--r--tests/zlib.test35
-rw-r--r--unix/tclUnixInit.c8
-rw-r--r--win/Makefile.in2
-rw-r--r--win/makefile.vc20
-rw-r--r--win/rules.vc7
-rwxr-xr-xwin/tclWinFile.c8
-rw-r--r--win/tclWinPipe.c2
-rw-r--r--win/tclWinPort.h2
143 files changed, 3095 insertions, 3044 deletions
diff --git a/doc/Hash.3 b/doc/Hash.3
index 4dc3623..aa79b86 100644
--- a/doc/Hash.3
+++ b/doc/Hash.3
@@ -281,7 +281,7 @@ The \fIhashKeyProc\fR member contains the address of a function called to
calculate a hash value for the key.
.PP
.CS
-typedef unsigned int \fBTcl_HashKeyProc\fR(
+typedef TCL_HASH_TYPE \fBTcl_HashKeyProc\fR(
Tcl_HashTable *\fItablePtr\fR,
void *\fIkeyPtr\fR);
.CE
diff --git a/doc/chan.n b/doc/chan.n
index 7ea0d19..81aa9f4 100644
--- a/doc/chan.n
+++ b/doc/chan.n
@@ -287,12 +287,14 @@ slow destinations like network sockets.
.RS
.PP
The \fBchan copy\fR command transfers data from \fIinputChan\fR until
-end of file or \fIsize\fR bytes have been transferred. If no
-\fB\-size\fR argument is given, then the copy goes until end of file.
-All the data read from \fIinputChan\fR is copied to \fIoutputChan\fR.
-Without the \fB\-command\fR option, \fBchan copy\fR blocks until the
-copy is complete and returns the number of bytes written to
-\fIoutputChan\fR.
+end of file or \fIsize\fR bytes or characters have been transferred;
+\fIsize\fR is in bytes if the two channels are using the same encoding,
+and is in characters otherwise. If no \fB\-size\fR argument is given,
+then the copy goes until end of file. All the data read from
+\fIinputChan\fR is copied to \fIoutputChan\fR. Without the
+\fB\-command\fR option, \fBchan copy\fR blocks until the copy is
+complete and returns the number of bytes or characters (using the same
+rules as for the \fB\-size\fR option) written to \fIoutputChan\fR.
.PP
The \fB\-command\fR argument makes \fBchan copy\fR work in the
background. In this case it returns immediately and the
@@ -547,6 +549,18 @@ this, spawn with "2>@" or
">@" redirection operators onto the write side of a pipe, and then
immediately close it in the parent. This is necessary to get an EOF on
the read side once the child has exited or otherwise closed its output.
+.RS
+.PP
+Note that the pipe buffering semantics can vary at the operating system level
+substantially; it is not safe to assume that a write performed on the output
+side of the pipe will appear instantly to the input side. This is a
+fundamental difference and Tcl cannot conceal it. The overall stream semantics
+\fIare\fR compatible, so blocking reads and writes will not see most of the
+differences, but the details of what exactly gets written when are not. This
+is most likely to show up when using pipelines for testing; care should be
+taken to ensure that deadlocks do not occur and that potential short reads are
+allowed for.
+.RE
.VE 8.6
.TP
\fBchan pop \fIchannelId\fR
diff --git a/doc/expr.n b/doc/expr.n
index b76b6a2..e25515d 100644
--- a/doc/expr.n
+++ b/doc/expr.n
@@ -133,15 +133,15 @@ Exponentiation. Valid for any numeric operands.
Multiply, divide, remainder. None of these operators may be
applied to string operands, and remainder may be applied only
to integers.
-The remainder will always have the same sign as the divisor and
+The remainder always has the same sign as the divisor and
an absolute value smaller than the absolute value of the divisor.
.RS
.PP
When applied to integers, the division and remainder operators can be
considered to partition the number line into a sequence of equal-sized
adjacent non-overlapping pieces where each piece is the size of the divisor;
-the division result identifies which piece the divisor lay within, and the
-remainder result identifies where within that piece the divisor lay. A
+the division result identifies which piece the dividend lies within, and the
+remainder result identifies where within that piece the dividend lies. A
consequence of this is that the result of
.QW "-57 \fB/\fR 10"
is always -6, and the result of
diff --git a/doc/fcopy.n b/doc/fcopy.n
index e5dd1d6..d39c803 100644
--- a/doc/fcopy.n
+++ b/doc/fcopy.n
@@ -25,12 +25,15 @@ network sockets.
.PP
The \fBfcopy\fR
command transfers data from \fIinchan\fR until end of file
-or \fIsize\fR bytes have been
-transferred. If no \fB\-size\fR argument is given,
+or \fIsize\fR bytes or characters have been
+transferred; \fIsize\fR is in bytes if the two channels are using the
+same encoding, and is in characters otherwise.
+If no \fB\-size\fR argument is given,
then the copy goes until end of file.
All the data read from \fIinchan\fR is copied to \fIoutchan\fR.
Without the \fB\-command\fR option, \fBfcopy\fR blocks until the copy is complete
-and returns the number of bytes written to \fIoutchan\fR.
+and returns the number of bytes or characters (using the same rules as
+for the \fB\-size\fR option) written to \fIoutchan\fR.
.PP
The \fB\-command\fR argument makes \fBfcopy\fR work in the background.
In this case it returns immediately and the \fIcallback\fR is invoked
@@ -174,3 +177,6 @@ vwait done
eof(n), fblocked(n), fconfigure(n), file(n)
.SH KEYWORDS
blocking, channel, end of line, end of file, nonblocking, read, translation
+'\" Local Variables:
+'\" mode: nroff
+'\" End:
diff --git a/doc/file.n b/doc/file.n
index 58b03d8..2f8b70c 100644
--- a/doc/file.n
+++ b/doc/file.n
@@ -164,7 +164,7 @@ returns \fB/home\fR (or something similar).
Returns \fB1\fR if file \fIname\fR is executable by the current user,
\fB0\fR otherwise. On Windows, which does not have an executable attribute,
the command treats all directories and any files with extensions
-\fBexe\fR, \fBcom\fR, \fBcmd\fR, \fBbat\fR or \fBps1\fR as executable.
+\fBexe\fR, \fBcom\fR, \fBcmd\fR or \fBbat\fR as executable.
.TP
\fBfile exists \fIname\fR
.
diff --git a/generic/tcl.h b/generic/tcl.h
index 6061ea8..ded8d0b 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -1157,11 +1157,15 @@ typedef struct Tcl_DString {
* Forward declarations of Tcl_HashTable and related types.
*/
+#ifndef TCL_HASH_TYPE
+# define TCL_HASH_TYPE unsigned
+#endif
+
typedef struct Tcl_HashKeyType Tcl_HashKeyType;
typedef struct Tcl_HashTable Tcl_HashTable;
typedef struct Tcl_HashEntry Tcl_HashEntry;
-typedef unsigned (Tcl_HashKeyProc) (Tcl_HashTable *tablePtr, void *keyPtr);
+typedef TCL_HASH_TYPE (Tcl_HashKeyProc) (Tcl_HashTable *tablePtr, void *keyPtr);
typedef int (Tcl_CompareHashKeysProc) (void *keyPtr, Tcl_HashEntry *hPtr);
typedef Tcl_HashEntry * (Tcl_AllocHashEntryProc) (Tcl_HashTable *tablePtr,
void *keyPtr);
diff --git a/generic/tclAssembly.c b/generic/tclAssembly.c
index 7a5ffcc..06f277f 100644
--- a/generic/tclAssembly.c
+++ b/generic/tclAssembly.c
@@ -1300,7 +1300,7 @@ AssembleOneLine(
goto cleanup;
}
operand1 = TclGetStringFromObj(operand1Obj, &operand1Len);
- litIndex = TclRegisterNewLiteral(envPtr, operand1, operand1Len);
+ litIndex = TclRegisterLiteral(envPtr, operand1, operand1Len, 0);
BBEmitInst1or4(assemEnvPtr, tblIdx, litIndex, 0);
break;
@@ -1449,7 +1449,7 @@ AssembleOneLine(
goto cleanup;
} else {
operand1 = TclGetStringFromObj(operand1Obj, &operand1Len);
- litIndex = TclRegisterNewLiteral(envPtr, operand1, operand1Len);
+ litIndex = TclRegisterLiteral(envPtr, operand1, operand1Len, 0);
/*
* Assumes that PUSH is the first slot!
@@ -3541,7 +3541,7 @@ StackCheckExit(
* Emit a 'push' of the empty literal.
*/
- litIndex = TclRegisterNewLiteral(envPtr, "", 0);
+ litIndex = TclRegisterLiteral(envPtr, "", 0, 0);
/*
* Assumes that 'push' is at slot 0 in TalInstructionTable.
diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c
index 13d3df5..4c299f8 100644
--- a/generic/tclCmdAH.c
+++ b/generic/tclCmdAH.c
@@ -1596,14 +1596,19 @@ FileAttrIsOwnedCmd(
int objc,
Tcl_Obj *const objv[])
{
+#ifdef __CYGWIN__
+#define geteuid() (short)(geteuid)()
+#endif
+#if !defined(_WIN32)
Tcl_StatBuf buf;
+#endif
int value = 0;
if (objc != 2) {
Tcl_WrongNumArgs(interp, 1, objv, "name");
return TCL_ERROR;
}
-#if defined(_WIN32) || defined(__CYGWIN__)
+#if defined(_WIN32)
value = TclWinFileOwned(objv[1]);
#else
if (GetStatBuf(NULL, objv[1], Tcl_FSStat, &buf) == TCL_OK) {
diff --git a/generic/tclCompCmdsGR.c b/generic/tclCompCmdsGR.c
index 593a8af..ff5495c 100644
--- a/generic/tclCompCmdsGR.c
+++ b/generic/tclCompCmdsGR.c
@@ -2761,7 +2761,7 @@ TclCompileSyntaxError(
const char *bytes = TclGetStringFromObj(msg, &numBytes);
TclErrorStackResetIf(interp, bytes, numBytes);
- TclEmitPush(TclRegisterNewLiteral(envPtr, bytes, numBytes), envPtr);
+ TclEmitPush(TclRegisterLiteral(envPtr, bytes, numBytes, 0), envPtr);
CompileReturnInternal(envPtr, INST_SYNTAX, TCL_ERROR, 0,
TclNoErrorStack(interp, Tcl_GetReturnOptions(interp, TCL_ERROR)));
Tcl_ResetResult(interp);
diff --git a/generic/tclCompCmdsSZ.c b/generic/tclCompCmdsSZ.c
index 2503089..10b3cc8 100644
--- a/generic/tclCompCmdsSZ.c
+++ b/generic/tclCompCmdsSZ.c
@@ -1456,8 +1456,8 @@ TclSubstCompile(
switch (tokenPtr->type) {
case TCL_TOKEN_TEXT:
- literal = TclRegisterNewLiteral(envPtr,
- tokenPtr->start, tokenPtr->size);
+ literal = TclRegisterLiteral(envPtr,
+ tokenPtr->start, tokenPtr->size, 0);
TclEmitPush(literal, envPtr);
TclAdvanceLines(&bline, tokenPtr->start,
tokenPtr->start + tokenPtr->size);
@@ -1466,7 +1466,7 @@ TclSubstCompile(
case TCL_TOKEN_BS:
length = TclParseBackslash(tokenPtr->start, tokenPtr->size,
NULL, buf);
- literal = TclRegisterNewLiteral(envPtr, buf, length);
+ literal = TclRegisterLiteral(envPtr, buf, length, 0);
TclEmitPush(literal, envPtr);
count++;
continue;
diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c
index 654666a..83bb883 100644
--- a/generic/tclCompExpr.c
+++ b/generic/tclCompExpr.c
@@ -2267,9 +2267,9 @@ CompileExprTree(
p = TclGetStringFromObj(*funcObjv, &length);
funcObjv++;
Tcl_DStringAppend(&cmdName, p, length);
- TclEmitPush(TclRegisterNewCmdLiteral(envPtr,
+ TclEmitPush(TclRegisterLiteral(envPtr,
Tcl_DStringValue(&cmdName),
- Tcl_DStringLength(&cmdName)), envPtr);
+ Tcl_DStringLength(&cmdName), LITERAL_CMD_NAME), envPtr);
Tcl_DStringFree(&cmdName);
/*
@@ -2376,8 +2376,8 @@ CompileExprTree(
pc1 = CurrentOffset(envPtr);
TclEmitInstInt1((nodePtr->lexeme == AND) ? INST_JUMP_FALSE1
: INST_JUMP_TRUE1, 0, envPtr);
- TclEmitPush(TclRegisterNewLiteral(envPtr,
- (nodePtr->lexeme == AND) ? "1" : "0", 1), envPtr);
+ TclEmitPush(TclRegisterLiteral(envPtr,
+ (nodePtr->lexeme == AND) ? "1" : "0", 1, 0), envPtr);
pc2 = CurrentOffset(envPtr);
TclEmitInstInt1(INST_JUMP1, 0, envPtr);
TclAdjustStackDepth(-1, envPtr);
@@ -2386,8 +2386,8 @@ CompileExprTree(
if (TclFixupForwardJumpToHere(envPtr, &jumpPtr->jump, 127)) {
pc2 += 3;
}
- TclEmitPush(TclRegisterNewLiteral(envPtr,
- (nodePtr->lexeme == AND) ? "0" : "1", 1), envPtr);
+ TclEmitPush(TclRegisterLiteral(envPtr,
+ (nodePtr->lexeme == AND) ? "0" : "1", 1, 0), envPtr);
TclStoreInt1AtPtr(CurrentOffset(envPtr) - pc2,
envPtr->codeStart + pc2 + 1);
convert = 0;
@@ -2421,7 +2421,7 @@ CompileExprTree(
if (optimize) {
int length;
const char *bytes = TclGetStringFromObj(literal, &length);
- int index = TclRegisterNewLiteral(envPtr, bytes, length);
+ int index = TclRegisterLiteral(envPtr, bytes, length, 0);
Tcl_Obj *objPtr = TclFetchLiteral(envPtr, index);
if ((objPtr->typePtr == NULL) && (literal->typePtr != NULL)) {
@@ -2479,8 +2479,8 @@ CompileExprTree(
if (objPtr->bytes) {
Tcl_Obj *tableValue;
- index = TclRegisterNewLiteral(envPtr, objPtr->bytes,
- objPtr->length);
+ index = TclRegisterLiteral(envPtr, objPtr->bytes,
+ objPtr->length, 0);
tableValue = TclFetchLiteral(envPtr, index);
if ((tableValue->typePtr == NULL) &&
(objPtr->typePtr != NULL)) {
diff --git a/generic/tclCompile.c b/generic/tclCompile.c
index 0024f1e..c588731 100644
--- a/generic/tclCompile.c
+++ b/generic/tclCompile.c
@@ -1792,9 +1792,17 @@ CompileCmdLiteral(
CompileEnv *envPtr)
{
int numBytes;
- const char *bytes = TclGetStringFromObj(cmdObj, &numBytes);
- int cmdLitIdx = TclRegisterNewCmdLiteral(envPtr, bytes, numBytes);
- Command *cmdPtr = (Command *) Tcl_GetCommandFromObj(interp, cmdObj);
+ const char *bytes;
+ Command *cmdPtr;
+ int cmdLitIdx, extraLiteralFlags = LITERAL_CMD_NAME;
+
+ cmdPtr = (Command *) Tcl_GetCommandFromObj(interp, cmdObj);
+ if ((cmdPtr != NULL) && (cmdPtr->flags & CMD_VIA_RESOLVER)) {
+ extraLiteralFlags |= LITERAL_UNSHARED;
+ }
+
+ bytes = Tcl_GetStringFromObj(cmdObj, &numBytes);
+ cmdLitIdx = TclRegisterLiteral(envPtr, bytes, numBytes, extraLiteralFlags);
if (cmdPtr) {
TclSetCmdNameObj(interp, TclFetchLiteral(envPtr, cmdLitIdx), cmdPtr);
@@ -1829,8 +1837,8 @@ TclCompileInvocation(
continue;
}
- objIdx = TclRegisterNewLiteral(envPtr,
- tokenPtr[1].start, tokenPtr[1].size);
+ objIdx = TclRegisterLiteral(envPtr,
+ tokenPtr[1].start, tokenPtr[1].size, 0);
if (envPtr->clNext) {
TclContinuationsEnterDerived(TclFetchLiteral(envPtr, objIdx),
tokenPtr[1].start - envPtr->source, envPtr->clNext);
@@ -1879,8 +1887,8 @@ CompileExpanded(
continue;
}
- objIdx = TclRegisterNewLiteral(envPtr,
- tokenPtr[1].start, tokenPtr[1].size);
+ objIdx = TclRegisterLiteral(envPtr,
+ tokenPtr[1].start, tokenPtr[1].size, 0);
if (envPtr->clNext) {
TclContinuationsEnterDerived(TclFetchLiteral(envPtr, objIdx),
tokenPtr[1].start - envPtr->source, envPtr->clNext);
diff --git a/generic/tclCompile.h b/generic/tclCompile.h
index f99c07c..89cdc59 100644
--- a/generic/tclCompile.h
+++ b/generic/tclCompile.h
@@ -1095,7 +1095,7 @@ MODULE_SCOPE int TclCreateAuxData(ClientData clientData,
MODULE_SCOPE int TclCreateExceptRange(ExceptionRangeType type,
CompileEnv *envPtr);
MODULE_SCOPE ExecEnv * TclCreateExecEnv(Tcl_Interp *interp, int size);
-MODULE_SCOPE Tcl_Obj * TclCreateLiteral(Interp *iPtr, char *bytes,
+MODULE_SCOPE Tcl_Obj * TclCreateLiteral(Interp *iPtr, const char *bytes,
int length, unsigned int hash, int *newPtr,
Namespace *nsPtr, int flags,
LiteralEntry **globalPtrPtr);
@@ -1210,29 +1210,7 @@ MODULE_SCOPE int TclPushProcCallFrame(ClientData clientData,
#define LITERAL_ON_HEAP 0x01
#define LITERAL_CMD_NAME 0x02
-
-/*
- * Form of TclRegisterLiteral with flags == 0. In that case, it is safe to
- * cast away constness, and it is cleanest to do that here, all in one place.
- *
- * int TclRegisterNewLiteral(CompileEnv *envPtr, const char *bytes,
- * int length);
- */
-
-#define TclRegisterNewLiteral(envPtr, bytes, length) \
- TclRegisterLiteral(envPtr, (char *)(bytes), length, /*flags*/ 0)
-
-/*
- * Form of TclRegisterLiteral with flags == LITERAL_CMD_NAME. In that case, it
- * is safe to cast away constness, and it is cleanest to do that here, all in
- * one place.
- *
- * int TclRegisterNewNSLiteral(CompileEnv *envPtr, const char *bytes,
- * int length);
- */
-
-#define TclRegisterNewCmdLiteral(envPtr, bytes, length) \
- TclRegisterLiteral(envPtr, (char *)(bytes), length, LITERAL_CMD_NAME)
+#define LITERAL_UNSHARED 0x04
/*
* Macro used to manually adjust the stack requirements; used in cases where
@@ -1549,9 +1527,9 @@ MODULE_SCOPE int TclPushProcCallFrame(ClientData clientData,
*/
#define PushLiteral(envPtr, string, length) \
- TclEmitPush(TclRegisterNewLiteral((envPtr), (string), (length)), (envPtr))
+ TclEmitPush(TclRegisterLiteral(envPtr, string, length, 0), (envPtr))
#define PushStringLiteral(envPtr, string) \
- PushLiteral((envPtr), (string), (int) (sizeof(string "") - 1))
+ PushLiteral(envPtr, string, (int) (sizeof(string "") - 1))
/*
* Macro to advance to the next token; it is more mnemonic than the address
diff --git a/generic/tclEnsemble.c b/generic/tclEnsemble.c
index 2766769..43813f1 100644
--- a/generic/tclEnsemble.c
+++ b/generic/tclEnsemble.c
@@ -3306,7 +3306,7 @@ CompileToInvokedCommand(
Tcl_Token *tokPtr;
Tcl_Obj *objPtr, **words;
char *bytes;
- int length, i, numWords, cmdLit;
+ int length, i, numWords, cmdLit, extraLiteralFlags = LITERAL_CMD_NAME;
DefineLineInformation;
/*
@@ -3326,8 +3326,8 @@ CompileToInvokedCommand(
SetLineInformation(i);
if (tokPtr->type == TCL_TOKEN_SIMPLE_WORD) {
- int literal = TclRegisterNewLiteral(envPtr,
- tokPtr[1].start, tokPtr[1].size);
+ int literal = TclRegisterLiteral(envPtr,
+ tokPtr[1].start, tokPtr[1].size, 0);
if (envPtr->clNext) {
TclContinuationsEnterDerived(
@@ -3348,8 +3348,11 @@ CompileToInvokedCommand(
objPtr = Tcl_NewObj();
Tcl_GetCommandFullName(interp, (Tcl_Command) cmdPtr, objPtr);
- bytes = TclGetStringFromObj(objPtr, &length);
- cmdLit = TclRegisterNewCmdLiteral(envPtr, bytes, length);
+ bytes = Tcl_GetStringFromObj(objPtr, &length);
+ if ((cmdPtr != NULL) && (cmdPtr->flags & CMD_VIA_RESOLVER)) {
+ extraLiteralFlags |= LITERAL_UNSHARED;
+ }
+ cmdLit = TclRegisterLiteral(envPtr, bytes, length, extraLiteralFlags);
TclSetCmdNameObj(interp, TclFetchLiteral(envPtr, cmdLit), cmdPtr);
TclEmitPush(cmdLit, envPtr);
TclDecrRefCount(objPtr);
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index f74c468..556ec55 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -1554,7 +1554,7 @@ CompileExprObj(
*/
if (compEnv.codeNext == compEnv.codeStart) {
- TclEmitPush(TclRegisterNewLiteral(&compEnv, "0", 1),
+ TclEmitPush(TclRegisterLiteral(&compEnv, "0", 1, 0),
&compEnv);
}
@@ -2071,6 +2071,13 @@ TclNRExecuteByteCode(
#endif
/*
+ * Test namespace-50.9 demonstrates the need for this call.
+ * Use a --enable-symbols=mem bug to see.
+ */
+
+ TclResetRewriteEnsemble(interp, 1);
+
+ /*
* Push the callback for bytecode execution
*/
@@ -3166,7 +3173,7 @@ TEBCresume(
Tcl_Obj *copyPtr = Tcl_NewListObj(objc - opnd + 1, NULL);
Tcl_ListObjAppendElement(NULL, copyPtr, objPtr);
- Tcl_ListObjReplace(NULL, copyPtr, LIST_MAX, 0,
+ Tcl_ListObjReplace(NULL, copyPtr, LIST_MAX, 0,
objc - opnd, objv + opnd);
Tcl_DecrRefCount(objPtr);
objPtr = copyPtr;
@@ -5276,23 +5283,10 @@ TEBCresume(
toIdx = objc-1;
}
if (fromIdx == 0 && toIdx != objc-1 && !Tcl_IsShared(valuePtr)) {
- /*
- * BEWARE! This is looking inside the implementation of the
- * list type.
- */
-
- List *listPtr = valuePtr->internalRep.twoPtrValue.ptr1;
-
- if (listPtr->refCount == 1) {
- for (index=toIdx+1; index<objc ; index++) {
- TclDecrRefCount(objv[index]);
- }
- listPtr->elemCount = toIdx+1;
- listPtr->canonicalFlag = 1;
- TclInvalidateStringRep(valuePtr);
- TRACE_APPEND(("%.30s\n", O2S(valuePtr)));
- NEXT_INST_F(9, 0, 0);
- }
+ Tcl_ListObjReplace(interp, valuePtr,
+ toIdx + 1, LIST_MAX, 0, NULL);
+ TRACE_APPEND(("%.30s\n", O2S(valuePtr)));
+ NEXT_INST_F(9, 0, 0);
}
objResultPtr = Tcl_NewListObj(toIdx-fromIdx+1, objv+fromIdx);
} else {
diff --git a/generic/tclFCmd.c b/generic/tclFCmd.c
index bb814ea..80898fc 100644
--- a/generic/tclFCmd.c
+++ b/generic/tclFCmd.c
@@ -1079,12 +1079,9 @@ TclFileAttrsCmd(
}
if (Tcl_GetIndexFromObj(interp, objv[0], attributeStrings,
- "option", 0, &index) != TCL_OK) {
+ "option", INDEX_TEMP_TABLE, &index) != TCL_OK) {
goto end;
}
- if (attributeStringsAllocated != NULL) {
- TclFreeIntRep(objv[0]);
- }
if (Tcl_FSFileAttrsGet(interp, index, filePtr,
&objPtr) != TCL_OK) {
goto end;
@@ -1107,12 +1104,9 @@ TclFileAttrsCmd(
for (i = 0; i < objc ; i += 2) {
if (Tcl_GetIndexFromObj(interp, objv[i], attributeStrings,
- "option", 0, &index) != TCL_OK) {
+ "option", INDEX_TEMP_TABLE, &index) != TCL_OK) {
goto end;
}
- if (attributeStringsAllocated != NULL) {
- TclFreeIntRep(objv[i]);
- }
if (i + 1 == objc) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"value for \"%s\" missing", TclGetString(objv[i])));
diff --git a/generic/tclHash.c b/generic/tclHash.c
index 3ea9dd9..ac9d40e 100644
--- a/generic/tclHash.c
+++ b/generic/tclHash.c
@@ -43,7 +43,7 @@
static Tcl_HashEntry * AllocArrayEntry(Tcl_HashTable *tablePtr, void *keyPtr);
static int CompareArrayKeys(void *keyPtr, Tcl_HashEntry *hPtr);
-static unsigned int HashArrayKey(Tcl_HashTable *tablePtr, void *keyPtr);
+static TCL_HASH_TYPE HashArrayKey(Tcl_HashTable *tablePtr, void *keyPtr);
/*
* Prototypes for the one word hash key methods. Not actually declared because
@@ -65,7 +65,7 @@ static unsigned int HashOneWordKey(Tcl_HashTable *tablePtr, void *keyPtr);
static Tcl_HashEntry * AllocStringEntry(Tcl_HashTable *tablePtr,
void *keyPtr);
static int CompareStringKeys(void *keyPtr, Tcl_HashEntry *hPtr);
-static unsigned int HashStringKey(Tcl_HashTable *tablePtr, void *keyPtr);
+static TCL_HASH_TYPE HashStringKey(Tcl_HashTable *tablePtr, void *keyPtr);
/*
* Function prototypes for static functions in this file:
@@ -774,7 +774,7 @@ CompareArrayKeys(
*----------------------------------------------------------------------
*/
-static unsigned int
+static TCL_HASH_TYPE
HashArrayKey(
Tcl_HashTable *tablePtr, /* Hash table. */
void *keyPtr) /* Key from which to compute hash value. */
@@ -787,7 +787,7 @@ HashArrayKey(
count--, array++) {
result += *array;
}
- return result;
+ return (TCL_HASH_TYPE) result;
}
/*
@@ -870,7 +870,7 @@ CompareStringKeys(
*----------------------------------------------------------------------
*/
-static unsigned
+static TCL_HASH_TYPE
HashStringKey(
Tcl_HashTable *tablePtr, /* Hash table. */
void *keyPtr) /* Key from which to compute hash value. */
@@ -916,7 +916,7 @@ HashStringKey(
result += (result << 3) + UCHAR(c);
}
}
- return result;
+ return (TCL_HASH_TYPE) result;
}
/*
diff --git a/generic/tclIO.c b/generic/tclIO.c
index f93d00d..80f6fa4 100644
--- a/generic/tclIO.c
+++ b/generic/tclIO.c
@@ -313,15 +313,20 @@ static int WillRead(Channel *chanPtr);
&& (strncmp(optionName, (nameString), len) == 0))
/*
- * The ChannelObjType type. We actually store the ChannelState structure
- * as that lives longest and we want to return the bottomChanPtr when
- * requested (consistent with Tcl_GetChannel). The setFromAny and
- * updateString can be NULL as they should not be called.
+ * The ChannelObjType type. Used to store the result of looking up
+ * a channel name in the context of an interp. Saves the lookup
+ * result and values needed to check its continued validity.
*/
+typedef struct ResolvedChanName {
+ ChannelState *statePtr; /* The saved lookup result */
+ Tcl_Interp *interp; /* The interp in which the lookup was done. */
+ int epoch; /* The epoch of the channel when the lookup
+ * was done. Use to verify validity. */
+ int refCount; /* Share this struct among many Tcl_Obj. */
+} ResolvedChanName;
+
static void DupChannelIntRep(Tcl_Obj *objPtr, Tcl_Obj *copyPtr);
-static int SetChannelFromAny(Tcl_Interp *interp,
- Tcl_Obj *objPtr);
static void FreeChannelIntRep(Tcl_Obj *objPtr);
static const Tcl_ObjType chanObjType = {
@@ -329,18 +334,9 @@ static const Tcl_ObjType chanObjType = {
FreeChannelIntRep, /* freeIntRepProc */
DupChannelIntRep, /* dupIntRepProc */
NULL, /* updateStringProc */
- NULL /* setFromAnyProc SetChannelFromAny */
+ NULL /* setFromAnyProc */
};
-#define GET_CHANNELSTATE(objPtr) \
- ((ChannelState *) (objPtr)->internalRep.twoPtrValue.ptr1)
-#define SET_CHANNELSTATE(objPtr, storePtr) \
- ((objPtr)->internalRep.twoPtrValue.ptr1 = (void *) (storePtr))
-#define GET_CHANNELINTERP(objPtr) \
- ((Tcl_Interp *) (objPtr)->internalRep.twoPtrValue.ptr2)
-#define SET_CHANNELINTERP(objPtr, storePtr) \
- ((objPtr)->internalRep.twoPtrValue.ptr2 = (void *) (storePtr))
-
#define BUSY_STATE(st, fl) \
((((st)->csPtrR) && ((fl) & TCL_READABLE)) || \
(((st)->csPtrW) && ((fl) & TCL_WRITABLE)))
@@ -1021,7 +1017,7 @@ DeleteChannelTable(
*/
Tcl_DeleteHashEntry(hPtr);
- SetFlag(statePtr, CHANNEL_TAINTED);
+ statePtr->epoch++;
if (statePtr->refCount-- <= 1) {
if (!GotFlag(statePtr, BG_FLUSH_SCHEDULED)) {
(void) Tcl_Close(interp, (Tcl_Channel) chanPtr);
@@ -1365,7 +1361,7 @@ DetachChannel(
return TCL_ERROR;
}
Tcl_DeleteHashEntry(hPtr);
- SetFlag(statePtr, CHANNEL_TAINTED);
+ statePtr->epoch++;
/*
* Remove channel handlers that refer to this interpreter, so that
@@ -1498,12 +1494,57 @@ TclGetChannelFromObj(
int flags)
{
ChannelState *statePtr;
+ ResolvedChanName *resPtr = NULL;
+ Tcl_Channel chan;
+
+ if (interp == NULL) {
+ return TCL_ERROR;
+ }
+
+ if (objPtr->typePtr == &chanObjType) {
+ /*
+ * Confirm validity of saved lookup results.
+ */
+
+ resPtr = (ResolvedChanName *) objPtr->internalRep.twoPtrValue.ptr1;
+ statePtr = resPtr->statePtr;
+ if ((resPtr->interp == interp) /* Same interp context */
+ /* No epoch change in channel since lookup */
+ && (resPtr->epoch == statePtr->epoch)) {
+
+ /* Have a valid saved lookup. Jump to end to return it. */
+ goto valid;
+ }
+ }
+
+ chan = Tcl_GetChannel(interp, TclGetString(objPtr), NULL);
- if (SetChannelFromAny(interp, objPtr) != TCL_OK) {
+ if (chan == NULL) {
+ if (resPtr) {
+ FreeChannelIntRep(objPtr);
+ }
return TCL_ERROR;
}
- statePtr = GET_CHANNELSTATE(objPtr);
+ if (resPtr && resPtr->refCount == 1) {
+ /* Re-use the ResolvedCmdName struct */
+ Tcl_Release((ClientData) resPtr->statePtr);
+
+ } else {
+ TclFreeIntRep(objPtr);
+
+ resPtr = (ResolvedChanName *) ckalloc(sizeof(ResolvedChanName));
+ resPtr->refCount = 1;
+ objPtr->internalRep.twoPtrValue.ptr1 = (ClientData) resPtr;
+ objPtr->typePtr = &chanObjType;
+ }
+ statePtr = ((Channel *)chan)->state;
+ resPtr->statePtr = statePtr;
+ Tcl_Preserve((ClientData) statePtr);
+ resPtr->interp = interp;
+ resPtr->epoch = statePtr->epoch;
+
+ valid:
*channelPtr = (Tcl_Channel) statePtr->bottomChanPtr;
if (modePtr != NULL) {
@@ -1676,6 +1717,8 @@ Tcl_CreateChannel(
statePtr->chanMsg = NULL;
statePtr->unreportedMsg = NULL;
+ statePtr->epoch = 0;
+
/*
* Link the channel into the list of all channels; create an on-exit
* handler if there is not one already, to close off all the channels in
@@ -11121,78 +11164,16 @@ DupChannelIntRep(
register Tcl_Obj *copyPtr) /* Object with internal rep to set. Must not
* currently have an internal rep.*/
{
- ChannelState *statePtr = GET_CHANNELSTATE(srcPtr);
+ ResolvedChanName *resPtr = srcPtr->internalRep.twoPtrValue.ptr1;
- SET_CHANNELSTATE(copyPtr, statePtr);
- SET_CHANNELINTERP(copyPtr, GET_CHANNELINTERP(srcPtr));
- Tcl_Preserve(statePtr);
+ resPtr->refCount++;
+ copyPtr->internalRep.twoPtrValue.ptr1 = resPtr;
copyPtr->typePtr = srcPtr->typePtr;
}
/*
*----------------------------------------------------------------------
*
- * SetChannelFromAny --
- *
- * Create an internal representation of type "Channel" for an object.
- *
- * Results:
- * This operation always succeeds and returns TCL_OK.
- *
- * Side effects:
- * Any old internal reputation for objPtr is freed and the internal
- * representation is set to "Channel".
- *
- *----------------------------------------------------------------------
- */
-
-static int
-SetChannelFromAny(
- Tcl_Interp *interp, /* Used for error reporting if not NULL. */
- register Tcl_Obj *objPtr) /* The object to convert. */
-{
- ChannelState *statePtr;
-
- if (interp == NULL) {
- return TCL_ERROR;
- }
- if (objPtr->typePtr == &chanObjType) {
- /*
- * TODO: TAINT Flag and dup'd channel values?
- * The channel is valid until any call to DetachChannel occurs.
- * Ensure consistency checks are done.
- */
-
- statePtr = GET_CHANNELSTATE(objPtr);
- if (GotFlag(statePtr, CHANNEL_TAINTED|CHANNEL_CLOSED)) {
- ResetFlag(statePtr, CHANNEL_TAINTED);
- Tcl_Release(statePtr);
- objPtr->typePtr = NULL;
- } else if (interp != GET_CHANNELINTERP(objPtr)) {
- Tcl_Release(statePtr);
- objPtr->typePtr = NULL;
- }
- }
- if (objPtr->typePtr != &chanObjType) {
- Tcl_Channel chan = Tcl_GetChannel(interp, TclGetString(objPtr), NULL);
-
- if (chan == NULL) {
- return TCL_ERROR;
- }
-
- TclFreeIntRep(objPtr);
- statePtr = ((Channel *) chan)->state;
- Tcl_Preserve(statePtr);
- SET_CHANNELSTATE(objPtr, statePtr);
- SET_CHANNELINTERP(objPtr, interp);
- objPtr->typePtr = &chanObjType;
- }
- return TCL_OK;
-}
-
-/*
- *----------------------------------------------------------------------
- *
* FreeChannelIntRep --
*
* Release statePtr storage.
@@ -11210,8 +11191,14 @@ static void
FreeChannelIntRep(
Tcl_Obj *objPtr) /* Object with internal rep to free. */
{
- Tcl_Release(GET_CHANNELSTATE(objPtr));
+ ResolvedChanName *resPtr = objPtr->internalRep.twoPtrValue.ptr1;
+
objPtr->typePtr = NULL;
+ if (--resPtr->refCount) {
+ return;
+ }
+ Tcl_Release(resPtr->statePtr);
+ ckfree(resPtr);
}
#if 0
diff --git a/generic/tclIO.h b/generic/tclIO.h
index b799375..ffbfa31 100644
--- a/generic/tclIO.h
+++ b/generic/tclIO.h
@@ -214,6 +214,8 @@ typedef struct ChannelState {
* because it happened in the background. The
* value is the chanMg, if any. #219's
* companion to 'unreportedError'. */
+ int epoch; /* Used to test validity of stored channelname
+ * lookup results. */
} ChannelState;
/*
@@ -275,10 +277,6 @@ typedef struct ChannelState {
* usable, but it may not be closed
* again from within the close
* handler. */
-#define CHANNEL_TAINTED (1<<20) /* Channel stack structure has changed.
- * Used by Channel Tcl_Obj type to
- * determine if we have to revalidate
- * the channel. */
#define CHANNEL_CLOSEDWRITE (1<<21) /* Channel write side has been closed.
* No further Tcl-level write IO on
* the channel is allowed. */
diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c
index 2281d22..6a3e4e3 100644
--- a/generic/tclIndexObj.c
+++ b/generic/tclIndexObj.c
@@ -114,14 +114,13 @@ Tcl_GetIndexFromObj(
int flags, /* 0 or TCL_EXACT */
int *indexPtr) /* Place to store resulting integer index. */
{
-
/*
* See if there is a valid cached result from a previous lookup (doing the
* check here saves the overhead of calling Tcl_GetIndexFromObjStruct in
* the common case where the result is cached).
*/
- if (objPtr->typePtr == &indexType) {
+ if (!(flags & INDEX_TEMP_TABLE) && objPtr->typePtr == &indexType) {
IndexRep *indexRep = objPtr->internalRep.twoPtrValue.ptr1;
/*
@@ -211,13 +210,8 @@ GetIndexFromObjList(
tablePtr[objc] = NULL;
result = Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr,
- sizeof(char *), msg, flags, indexPtr);
-
- /*
- * The internal rep must be cleared since tablePtr will go away.
- */
+ sizeof(char *), msg, flags | INDEX_TEMP_TABLE, indexPtr);
- TclFreeIntRep(objPtr);
ckfree(tablePtr);
return result;
@@ -279,7 +273,7 @@ Tcl_GetIndexFromObjStruct(
* See if there is a valid cached result from a previous lookup.
*/
- if (objPtr->typePtr == &indexType) {
+ if (!(flags & INDEX_TEMP_TABLE) && objPtr->typePtr == &indexType) {
indexRep = objPtr->internalRep.twoPtrValue.ptr1;
if (indexRep->tablePtr==tablePtr && indexRep->offset==offset) {
*indexPtr = indexRep->index;
@@ -340,17 +334,19 @@ Tcl_GetIndexFromObjStruct(
* operation.
*/
- if (objPtr->typePtr == &indexType) {
- indexRep = objPtr->internalRep.twoPtrValue.ptr1;
- } else {
- TclFreeIntRep(objPtr);
- indexRep = ckalloc(sizeof(IndexRep));
- objPtr->internalRep.twoPtrValue.ptr1 = indexRep;
- objPtr->typePtr = &indexType;
+ if (!(flags & INDEX_TEMP_TABLE)) {
+ if (objPtr->typePtr == &indexType) {
+ indexRep = objPtr->internalRep.twoPtrValue.ptr1;
+ } else {
+ TclFreeIntRep(objPtr);
+ indexRep = ckalloc(sizeof(IndexRep));
+ objPtr->internalRep.twoPtrValue.ptr1 = indexRep;
+ objPtr->typePtr = &indexType;
+ }
+ indexRep->tablePtr = (void *) tablePtr;
+ indexRep->offset = offset;
+ indexRep->index = index;
}
- indexRep->tablePtr = (void *) tablePtr;
- indexRep->offset = offset;
- indexRep->index = index;
*indexPtr = index;
return TCL_OK;
diff --git a/generic/tclInt.decls b/generic/tclInt.decls
index 4e7e422..c00dff1 100644
--- a/generic/tclInt.decls
+++ b/generic/tclInt.decls
@@ -1009,7 +1009,7 @@ declare 250 {
# Allow extensions for optimization
declare 251 {
int TclRegisterLiteral(void *envPtr,
- char *bytes, int length, int flags)
+ const char *bytes, int length, int flags)
}
##############################################################################
diff --git a/generic/tclInt.h b/generic/tclInt.h
index 1d01116..cee6b09 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -1690,11 +1690,13 @@ typedef struct Command {
* (these last two flags are defined in tcl.h)
*/
-#define CMD_IS_DELETED 0x1
-#define CMD_TRACE_ACTIVE 0x2
-#define CMD_HAS_EXEC_TRACES 0x4
-#define CMD_COMPILES_EXPANDED 0x8
+#define CMD_IS_DELETED 0x01
+#define CMD_TRACE_ACTIVE 0x02
+#define CMD_HAS_EXEC_TRACES 0x04
+#define CMD_COMPILES_EXPANDED 0x08
#define CMD_REDEF_IN_PROGRESS 0x10
+#define CMD_VIA_RESOLVER 0x20
+
/*
*----------------------------------------------------------------
@@ -2548,6 +2550,15 @@ typedef struct TclFileAttrProcs {
} TclFileAttrProcs;
/*
+ * Private flag value which controls Tcl_GetIndexFromObj*() routines
+ * to instruct them not to cache lookups because the table will not
+ * live long enough to make it worthwhile. Must not clash with public
+ * flag value TCL_EXACT.
+ */
+
+#define INDEX_TEMP_TABLE 2
+
+/*
* Opaque handle used in pipeline routines to encapsulate platform-dependent
* state.
*/
@@ -2698,7 +2709,6 @@ MODULE_SCOPE const Tcl_ObjType tclListType;
MODULE_SCOPE const Tcl_ObjType tclDictType;
MODULE_SCOPE const Tcl_ObjType tclProcBodyType;
MODULE_SCOPE const Tcl_ObjType tclStringType;
-MODULE_SCOPE const Tcl_ObjType tclArraySearchType;
MODULE_SCOPE const Tcl_ObjType tclEnsembleCmdType;
#ifndef TCL_WIDE_INT_IS_LONG
MODULE_SCOPE const Tcl_ObjType tclWideIntType;
@@ -3982,7 +3992,7 @@ MODULE_SCOPE int TclObjCallVarTraces(Interp *iPtr, Var *arrayPtr,
MODULE_SCOPE int TclCompareObjKeys(void *keyPtr, Tcl_HashEntry *hPtr);
MODULE_SCOPE void TclFreeObjEntry(Tcl_HashEntry *hPtr);
-MODULE_SCOPE unsigned TclHashObjKey(Tcl_HashTable *tablePtr, void *keyPtr);
+MODULE_SCOPE TCL_HASH_TYPE TclHashObjKey(Tcl_HashTable *tablePtr, void *keyPtr);
MODULE_SCOPE int TclFullFinalizationRequested(void);
diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h
index f95f999..dfa5727 100644
--- a/generic/tclIntDecls.h
+++ b/generic/tclIntDecls.h
@@ -615,7 +615,7 @@ EXTERN char * TclDoubleDigits(double dv, int ndigits, int flags,
EXTERN void TclSetSlaveCancelFlags(Tcl_Interp *interp, int flags,
int force);
/* 251 */
-EXTERN int TclRegisterLiteral(void *envPtr, char *bytes,
+EXTERN int TclRegisterLiteral(void *envPtr, const char *bytes,
int length, int flags);
typedef struct TclIntStubs {
@@ -873,7 +873,7 @@ typedef struct TclIntStubs {
int (*tclCopyChannel) (Tcl_Interp *interp, Tcl_Channel inChan, Tcl_Channel outChan, Tcl_WideInt toRead, Tcl_Obj *cmdPtr); /* 248 */
char * (*tclDoubleDigits) (double dv, int ndigits, int flags, int *decpt, int *signum, char **endPtr); /* 249 */
void (*tclSetSlaveCancelFlags) (Tcl_Interp *interp, int flags, int force); /* 250 */
- int (*tclRegisterLiteral) (void *envPtr, char *bytes, int length, int flags); /* 251 */
+ int (*tclRegisterLiteral) (void *envPtr, const char *bytes, int length, int flags); /* 251 */
} TclIntStubs;
extern const TclIntStubs *tclIntStubsPtr;
diff --git a/generic/tclInterp.c b/generic/tclInterp.c
index a2de658..1bfe76a 100644
--- a/generic/tclInterp.c
+++ b/generic/tclInterp.c
@@ -660,14 +660,9 @@ NRInterpCmd(
if (masterInterp == NULL) {
return TCL_ERROR;
}
- if (TclGetString(objv[5])[0] == '\0') {
- if (objc == 6) {
- return AliasDelete(interp, slaveInterp, objv[3]);
- }
- } else {
- return AliasCreate(interp, slaveInterp, masterInterp, objv[3],
- objv[5], objc - 6, objv + 6);
- }
+
+ return AliasCreate(interp, slaveInterp, masterInterp, objv[3],
+ objv[5], objc - 6, objv + 6);
}
goto aliasArgs;
}
diff --git a/generic/tclLiteral.c b/generic/tclLiteral.c
index e0425cf..7acc9ad 100644
--- a/generic/tclLiteral.c
+++ b/generic/tclLiteral.c
@@ -174,7 +174,7 @@ TclDeleteLiteralTable(
Tcl_Obj *
TclCreateLiteral(
Interp *iPtr,
- char *bytes, /* The start of the string. Note that this is
+ const char *bytes, /* The start of the string. Note that this is
* not a NUL-terminated string. */
int length, /* Number of bytes in the string. */
unsigned hash, /* The string's hash. If -1, it will be
@@ -214,7 +214,7 @@ TclCreateLiteral(
if (globalPtrPtr) {
*globalPtrPtr = globalPtr;
}
- if (flags & LITERAL_ON_HEAP) {
+ if ((flags & LITERAL_ON_HEAP)) {
ckfree(bytes);
}
globalPtr->refCount++;
@@ -222,26 +222,40 @@ TclCreateLiteral(
}
}
if (!newPtr) {
- if (flags & LITERAL_ON_HEAP) {
+ if ((flags & LITERAL_ON_HEAP)) {
ckfree(bytes);
}
return NULL;
}
/*
- * The literal is new to the interpreter. Add it to the global literal
- * table.
+ * The literal is new to the interpreter.
*/
TclNewObj(objPtr);
- Tcl_IncrRefCount(objPtr);
- if (flags & LITERAL_ON_HEAP) {
- objPtr->bytes = bytes;
+ if ((flags & LITERAL_ON_HEAP)) {
+ objPtr->bytes = (char *) bytes;
objPtr->length = length;
} else {
TclInitStringRep(objPtr, bytes, length);
}
+ /* Should the new literal be shared globally? */
+
+ if ((flags & LITERAL_UNSHARED)) {
+ /*
+ * No, do *not* add it the global literal table
+ * Make clear, that no global value is returned
+ */
+ if (globalPtrPtr != NULL) {
+ *globalPtrPtr = NULL;
+ }
+ return objPtr;
+ }
+
+ /*
+ * Yes, add it to the global literal table.
+ */
#ifdef TCL_COMPILE_DEBUG
if (LookupLiteralEntry((Tcl_Interp *) iPtr, objPtr) != NULL) {
Tcl_Panic("%s: literal \"%.*s\" found globally but shouldn't be",
@@ -251,6 +265,7 @@ TclCreateLiteral(
globalPtr = ckalloc(sizeof(LiteralEntry));
globalPtr->objPtr = objPtr;
+ Tcl_IncrRefCount(objPtr);
globalPtr->refCount = 1;
globalPtr->nsPtr = nsPtr;
globalPtr->nextPtr = globalTablePtr->buckets[globalHash];
@@ -360,7 +375,7 @@ int
TclRegisterLiteral(
void *ePtr, /* Points to the CompileEnv in whose object
* array an object is found or created. */
- register char *bytes, /* Points to string for which to find or
+ register const char *bytes, /* Points to string for which to find or
* create an object in CompileEnv's object
* array. */
int length, /* Number of bytes in the string. If < 0, the
@@ -398,7 +413,7 @@ TclRegisterLiteral(
if ((objPtr->length == length) && ((length == 0)
|| ((objPtr->bytes[0] == bytes[0])
&& (memcmp(objPtr->bytes, bytes, (unsigned) length) == 0)))) {
- if (flags & LITERAL_ON_HEAP) {
+ if ((flags & LITERAL_ON_HEAP)) {
ckfree(bytes);
}
objIndex = (localPtr - envPtr->literalArrayPtr);
@@ -417,7 +432,7 @@ TclRegisterLiteral(
* the namespace as the interp's global NS.
*/
- if (flags & LITERAL_CMD_NAME) {
+ if ((flags & LITERAL_CMD_NAME)) {
if ((length >= 2) && (bytes[0] == ':') && (bytes[1] == ':')) {
nsPtr = iPtr->globalNsPtr;
} else {
@@ -431,12 +446,13 @@ TclRegisterLiteral(
* Is it in the interpreter's global literal table? If not, create it.
*/
+ globalPtr = NULL;
objPtr = TclCreateLiteral(iPtr, bytes, length, hash, &new, nsPtr, flags,
&globalPtr);
objIndex = AddLocalLiteralEntry(envPtr, objPtr, localHash);
#ifdef TCL_COMPILE_DEBUG
- if (globalPtr->refCount < 1) {
+ if (globalPtr != NULL && globalPtr->refCount < 1) {
Tcl_Panic("%s: global literal \"%.*s\" had bad refCount %d",
"TclRegisterLiteral", (length>60? 60 : length), bytes,
globalPtr->refCount);
@@ -1025,7 +1041,7 @@ TclInvalidateCmdLiteral(
* invalidate a cmd literal. */
{
Interp *iPtr = (Interp *) interp;
- Tcl_Obj *literalObjPtr = TclCreateLiteral(iPtr, (char *) name,
+ Tcl_Obj *literalObjPtr = TclCreateLiteral(iPtr, name,
strlen(name), -1, NULL, nsPtr, 0, NULL);
if (literalObjPtr != NULL) {
@@ -1152,13 +1168,6 @@ TclVerifyLocalLiteralTable(
"TclVerifyLocalLiteralTable",
(length>60? 60 : length), bytes, localPtr->refCount);
}
- if (LookupLiteralEntry((Tcl_Interp *) envPtr->iPtr,
- localPtr->objPtr) == NULL) {
- bytes = TclGetStringFromObj(localPtr->objPtr, &length);
- Tcl_Panic("%s: local literal \"%.*s\" is not global",
- "TclVerifyLocalLiteralTable",
- (length>60? 60 : length), bytes);
- }
if (localPtr->objPtr->bytes == NULL) {
Tcl_Panic("%s: literal has NULL string rep",
"TclVerifyLocalLiteralTable");
diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c
index 5930859..7f6ecf5 100644
--- a/generic/tclNamesp.c
+++ b/generic/tclNamesp.c
@@ -2566,7 +2566,9 @@ Tcl_FindCommand(
}
if (result == TCL_OK) {
+ ((Command *)cmd)->flags |= CMD_VIA_RESOLVER;
return cmd;
+
} else if (result != TCL_CONTINUE) {
return NULL;
}
@@ -2658,6 +2660,7 @@ Tcl_FindCommand(
}
if (cmdPtr != NULL) {
+ cmdPtr->flags &= ~CMD_VIA_RESOLVER;
return (Tcl_Command) cmdPtr;
}
@@ -2883,9 +2886,9 @@ GetNamespaceFromObj(
resNamePtr = objPtr->internalRep.twoPtrValue.ptr1;
nsPtr = resNamePtr->nsPtr;
refNsPtr = resNamePtr->refNsPtr;
- if (!(nsPtr->flags & NS_DYING) && (interp == nsPtr->interp) &&
- (!refNsPtr || ((interp == refNsPtr->interp) &&
- (refNsPtr== (Namespace *) Tcl_GetCurrentNamespace(interp))))){
+ if (!(nsPtr->flags & NS_DYING) && (interp == nsPtr->interp)
+ && (!refNsPtr || (refNsPtr ==
+ (Namespace *) TclGetCurrentNamespace(interp)))) {
*nsPtrPtr = (Tcl_Namespace *) nsPtr;
return TCL_OK;
}
@@ -4779,7 +4782,7 @@ SetNsNameFromAny(
if ((name[0] == ':') && (name[1] == ':')) {
resNamePtr->refNsPtr = NULL;
} else {
- resNamePtr->refNsPtr = (Namespace *) Tcl_GetCurrentNamespace(interp);
+ resNamePtr->refNsPtr = (Namespace *) TclGetCurrentNamespace(interp);
}
resNamePtr->refCount = 1;
TclFreeIntRep(objPtr);
diff --git a/generic/tclObj.c b/generic/tclObj.c
index 776b034..d3f59ec 100644
--- a/generic/tclObj.c
+++ b/generic/tclObj.c
@@ -402,7 +402,6 @@ TclInitObjSubsystem(void)
Tcl_RegisterObjType(&tclListType);
Tcl_RegisterObjType(&tclDictType);
Tcl_RegisterObjType(&tclByteCodeType);
- Tcl_RegisterObjType(&tclArraySearchType);
Tcl_RegisterObjType(&tclCmdNameType);
Tcl_RegisterObjType(&tclRegexpType);
Tcl_RegisterObjType(&tclProcBodyType);
@@ -4048,7 +4047,7 @@ TclFreeObjEntry(
*----------------------------------------------------------------------
*/
-unsigned int
+TCL_HASH_TYPE
TclHashObjKey(
Tcl_HashTable *tablePtr, /* Hash table. */
void *keyPtr) /* Key from which to compute hash value. */
@@ -4098,7 +4097,7 @@ TclHashObjKey(
result += (result << 3) + UCHAR(*++string);
}
}
- return result;
+ return (TCL_HASH_TYPE) result;
}
/*
@@ -4152,11 +4151,10 @@ Tcl_GetCommandFromObj(
*/
resPtr = objPtr->internalRep.twoPtrValue.ptr1;
- if ((objPtr->typePtr == &tclCmdNameType) && (resPtr != NULL)) {
+ if (objPtr->typePtr == &tclCmdNameType) {
register Command *cmdPtr = resPtr->cmdPtr;
if ((cmdPtr->cmdEpoch == resPtr->cmdEpoch)
- && !(cmdPtr->flags & CMD_IS_DELETED)
&& (interp == cmdPtr->nsPtr->interp)
&& !(cmdPtr->nsPtr->flags & NS_DYING)) {
register Namespace *refNsPtr = (Namespace *)
@@ -4204,54 +4202,78 @@ Tcl_GetCommandFromObj(
*----------------------------------------------------------------------
*/
-void
-TclSetCmdNameObj(
- Tcl_Interp *interp, /* Points to interpreter containing command
- * that should be cached in objPtr. */
- register Tcl_Obj *objPtr, /* Points to Tcl object to be changed to a
- * CmdName object. */
- Command *cmdPtr) /* Points to Command structure that the
- * CmdName object should refer to. */
+static void
+SetCmdNameObj(
+ Tcl_Interp *interp,
+ Tcl_Obj *objPtr,
+ Command *cmdPtr,
+ ResolvedCmdName *resPtr)
{
Interp *iPtr = (Interp *) interp;
- register ResolvedCmdName *resPtr;
- register Namespace *currNsPtr;
- const char *name;
+ ResolvedCmdName *fillPtr;
+ const char *name = TclGetString(objPtr);
- if (objPtr->typePtr == &tclCmdNameType) {
- return;
+ if (resPtr) {
+ fillPtr = resPtr;
+ } else {
+ fillPtr = ckalloc(sizeof(ResolvedCmdName));
+ fillPtr->refCount = 1;
}
+ fillPtr->cmdPtr = cmdPtr;
cmdPtr->refCount++;
- resPtr = ckalloc(sizeof(ResolvedCmdName));
- resPtr->cmdPtr = cmdPtr;
- resPtr->cmdEpoch = cmdPtr->cmdEpoch;
- resPtr->refCount = 1;
+ fillPtr->cmdEpoch = cmdPtr->cmdEpoch;
- name = TclGetString(objPtr);
- if ((*name++ == ':') && (*name == ':')) {
+ /* NOTE: relying on NULL termination here. */
+ if ((name[0] == ':') && (name[1] == ':')) {
/*
- * The name is fully qualified: set the referring namespace to
- * NULL.
+ * Fully qualified names always resolve to same thing. No need
+ * to record resolution context information.
*/
- resPtr->refNsPtr = NULL;
+ fillPtr->refNsPtr = NULL;
+ fillPtr->refNsId = 0; /* Will not be read */
+ fillPtr->refNsCmdEpoch = 0; /* Will not be read */
} else {
/*
- * Get the current namespace.
+ * Record current state of current namespace as the resolution
+ * context of this command name lookup.
*/
+ Namespace *currNsPtr = iPtr->varFramePtr->nsPtr;
+
+ fillPtr->refNsPtr = currNsPtr;
+ fillPtr->refNsId = currNsPtr->nsId;
+ fillPtr->refNsCmdEpoch = currNsPtr->cmdRefEpoch;
+ }
- currNsPtr = iPtr->varFramePtr->nsPtr;
+ if (resPtr == NULL) {
+ TclFreeIntRep(objPtr);
- resPtr->refNsPtr = currNsPtr;
- resPtr->refNsId = currNsPtr->nsId;
- resPtr->refNsCmdEpoch = currNsPtr->cmdRefEpoch;
+ objPtr->internalRep.twoPtrValue.ptr1 = fillPtr;
+ objPtr->internalRep.twoPtrValue.ptr2 = NULL;
+ objPtr->typePtr = &tclCmdNameType;
}
+}
- TclFreeIntRep(objPtr);
- objPtr->internalRep.twoPtrValue.ptr1 = resPtr;
- objPtr->internalRep.twoPtrValue.ptr2 = NULL;
- objPtr->typePtr = &tclCmdNameType;
+void
+TclSetCmdNameObj(
+ Tcl_Interp *interp, /* Points to interpreter containing command
+ * that should be cached in objPtr. */
+ register Tcl_Obj *objPtr, /* Points to Tcl object to be changed to a
+ * CmdName object. */
+ Command *cmdPtr) /* Points to Command structure that the
+ * CmdName object should refer to. */
+{
+ register ResolvedCmdName *resPtr;
+
+ if (objPtr->typePtr == &tclCmdNameType) {
+ resPtr = objPtr->internalRep.twoPtrValue.ptr1;
+ if (resPtr != NULL && resPtr->cmdPtr == cmdPtr) {
+ return;
+ }
+ }
+
+ SetCmdNameObj(interp, objPtr, cmdPtr, NULL);
}
/*
@@ -4282,7 +4304,6 @@ FreeCmdNameInternalRep(
{
register ResolvedCmdName *resPtr = objPtr->internalRep.twoPtrValue.ptr1;
- if (resPtr != NULL) {
/*
* Decrement the reference count of the ResolvedCmdName structure. If
* there are no more uses, free the ResolvedCmdName structure.
@@ -4300,7 +4321,6 @@ FreeCmdNameInternalRep(
TclCleanupCommandMacro(cmdPtr);
ckfree(resPtr);
}
- }
objPtr->typePtr = NULL;
}
@@ -4333,9 +4353,7 @@ DupCmdNameInternalRep(
copyPtr->internalRep.twoPtrValue.ptr1 = resPtr;
copyPtr->internalRep.twoPtrValue.ptr2 = NULL;
- if (resPtr != NULL) {
resPtr->refCount++;
- }
copyPtr->typePtr = &tclCmdNameType;
}
@@ -4365,10 +4383,8 @@ SetCmdNameFromAny(
Tcl_Interp *interp, /* Used for error reporting if not NULL. */
register Tcl_Obj *objPtr) /* The object to convert. */
{
- Interp *iPtr = (Interp *) interp;
const char *name;
register Command *cmdPtr;
- Namespace *currNsPtr;
register ResolvedCmdName *resPtr;
if (interp == NULL) {
@@ -4388,59 +4404,31 @@ SetCmdNameFromAny(
Tcl_FindCommand(interp, name, /*ns*/ NULL, /*flags*/ 0);
/*
- * Free the old internalRep before setting the new one. Do this after
- * getting the string rep to allow the conversion code (in particular,
- * Tcl_GetStringFromObj) to use that old internalRep.
+ * Stop shimmering and caching nothing when we found nothing. Just
+ * report the failure to find the command as an error.
*/
- if (cmdPtr) {
- cmdPtr->refCount++;
- resPtr = objPtr->internalRep.twoPtrValue.ptr1;
- if ((objPtr->typePtr == &tclCmdNameType)
- && resPtr && (resPtr->refCount == 1)) {
- /*
- * Reuse the old ResolvedCmdName struct instead of freeing it
- */
-
- Command *oldCmdPtr = resPtr->cmdPtr;
-
- if (--oldCmdPtr->refCount == 0) {
- TclCleanupCommandMacro(oldCmdPtr);
- }
- } else {
- TclFreeIntRep(objPtr);
- resPtr = ckalloc(sizeof(ResolvedCmdName));
- resPtr->refCount = 1;
- objPtr->internalRep.twoPtrValue.ptr1 = resPtr;
- objPtr->internalRep.twoPtrValue.ptr2 = NULL;
- objPtr->typePtr = &tclCmdNameType;
- }
- resPtr->cmdPtr = cmdPtr;
- resPtr->cmdEpoch = cmdPtr->cmdEpoch;
- if ((*name++ == ':') && (*name == ':')) {
- /*
- * The name is fully qualified: set the referring namespace to
- * NULL.
- */
+ if (cmdPtr == NULL) {
+ return TCL_ERROR;
+ }
- resPtr->refNsPtr = NULL;
- } else {
- /*
- * Get the current namespace.
- */
+ resPtr = objPtr->internalRep.twoPtrValue.ptr1;
+ if ((objPtr->typePtr == &tclCmdNameType) && (resPtr->refCount == 1)) {
+ /*
+ * Re-use existing ResolvedCmdName struct when possible.
+ * Cleanup the old fields that need it.
+ */
- currNsPtr = iPtr->varFramePtr->nsPtr;
+ Command *oldCmdPtr = resPtr->cmdPtr;
- resPtr->refNsPtr = currNsPtr;
- resPtr->refNsId = currNsPtr->nsId;
- resPtr->refNsCmdEpoch = currNsPtr->cmdRefEpoch;
+ if (--oldCmdPtr->refCount == 0) {
+ TclCleanupCommandMacro(oldCmdPtr);
}
} else {
- TclFreeIntRep(objPtr);
- objPtr->internalRep.twoPtrValue.ptr1 = NULL;
- objPtr->internalRep.twoPtrValue.ptr2 = NULL;
- objPtr->typePtr = &tclCmdNameType;
+ resPtr = NULL;
}
+
+ SetCmdNameObj(interp, objPtr, cmdPtr, resPtr);
return TCL_OK;
}
diff --git a/generic/tclProc.c b/generic/tclProc.c
index 81d3b25..bed520a 100644
--- a/generic/tclProc.c
+++ b/generic/tclProc.c
@@ -2654,30 +2654,6 @@ TclNRApplyObjCmd(
procPtr = lambdaPtr->internalRep.twoPtrValue.ptr1;
}
-#define JOE_EXTENSION 0
-/*
- * Note: this code is NOT FUNCTIONAL due to the NR implementation; DO NOT
- * ENABLE! Leaving here as reminder to (a) TIP the suggestion, and (b) adapt
- * the code. (MS)
- */
-
-#if JOE_EXTENSION
- else {
- /*
- * Joe English's suggestion to allow cmdNames to function as lambdas.
- */
-
- Tcl_Obj *elemPtr;
- int numElem;
-
- if ((lambdaPtr->typePtr == &tclCmdNameType) ||
- (TclListObjGetElements(interp, lambdaPtr, &numElem,
- &elemPtr) == TCL_OK && numElem == 1)) {
- return Tcl_EvalObjv(interp, objc-1, objv+1, 0);
- }
- }
-#endif
-
if ((procPtr == NULL) || (procPtr->iPtr != iPtr)) {
result = SetLambdaFromAny(interp, lambdaPtr);
if (result != TCL_OK) {
diff --git a/generic/tclTest.c b/generic/tclTest.c
index d3da641..47d85e1 100644
--- a/generic/tclTest.c
+++ b/generic/tclTest.c
@@ -7326,24 +7326,83 @@ InterpCmdResolver(
CallFrame *varFramePtr = iPtr->varFramePtr;
Proc *procPtr = (varFramePtr->isProcCallFrame & FRAME_IS_PROC) ?
varFramePtr->procPtr : NULL;
- Namespace *ns2NsPtr = (Namespace *)
- Tcl_FindNamespace(interp, "::ns2", NULL, 0);
+ Namespace *callerNsPtr = varFramePtr->nsPtr;
+ Tcl_Command resolvedCmdPtr = NULL;
- if (procPtr && (procPtr->cmdPtr->nsPtr == iPtr->globalNsPtr
- || (ns2NsPtr && procPtr->cmdPtr->nsPtr == ns2NsPtr))) {
- const char *callingCmdName =
+ /*
+ * Just do something special on a cmd literal "z" in two cases:
+ * A) when the caller is a proc "x", and the proc is either in "::" or in "::ns2".
+ * B) the caller's namespace is "ctx1" or "ctx2"
+ */
+ if ( (name[0] == 'z') && (name[1] == '\0') ) {
+ Namespace *ns2NsPtr = (Namespace *) Tcl_FindNamespace(interp, "::ns2", NULL, 0);
+
+ if (procPtr != NULL
+ && ((procPtr->cmdPtr->nsPtr == iPtr->globalNsPtr)
+ || (ns2NsPtr != NULL && procPtr->cmdPtr->nsPtr == ns2NsPtr)
+ )
+ ) {
+ /*
+ * Case A)
+ *
+ * - The context, in which this resolver becomes active, is
+ * determined by the name of the caller proc, which has to be
+ * named "x".
+ *
+ * - To determine the name of the caller proc, the proc is taken
+ * from the topmost stack frame.
+ *
+ * - Note that the context is NOT provided during byte-code
+ * compilation (e.g. in TclProcCompileProc)
+ *
+ * When these conditions hold, this function resolves the
+ * passed-in cmd literal into a cmd "y", which is taken from the
+ * the global namespace (for simplicity).
+ */
+
+ const char *callingCmdName =
Tcl_GetCommandName(interp, (Tcl_Command) procPtr->cmdPtr);
- if ((callingCmdName[0] == 'x') && (callingCmdName[1] == '\0')
- && (name[0] == 'z') && (name[1] == '\0')) {
- Tcl_Command sourceCmdPtr = Tcl_FindCommand(interp, "y", NULL,
- TCL_GLOBAL_ONLY);
+ if ( callingCmdName[0] == 'x' && callingCmdName[1] == '\0' ) {
+ resolvedCmdPtr = Tcl_FindCommand(interp, "y", NULL, TCL_GLOBAL_ONLY);
+ }
+ } else if (callerNsPtr != NULL) {
+ /*
+ * Case B)
+ *
+ * - The context, in which this resolver becomes active, is
+ * determined by the name of the parent namespace, which has
+ * to be named "ctx1" or "ctx2".
+ *
+ * - To determine the name of the parent namesace, it is taken
+ * from the 2nd highest stack frame.
+ *
+ * - Note that the context can be provided during byte-code
+ * compilation (e.g. in TclProcCompileProc)
+ *
+ * When these conditions hold, this function resolves the
+ * passed-in cmd literal into a cmd "y" or "Y" depending on the
+ * context. The resolved procs are taken from the the global
+ * namespace (for simplicity).
+ */
+
+ CallFrame *parentFramePtr = varFramePtr->callerPtr;
+ char *context = parentFramePtr != NULL ? parentFramePtr->nsPtr->name : "(NULL)";
- if (sourceCmdPtr != NULL) {
- *rPtr = sourceCmdPtr;
- return TCL_OK;
+ if (strcmp(context, "ctx1") == 0 && (name[0] == 'z') && (name[1] == '\0')) {
+ resolvedCmdPtr = Tcl_FindCommand(interp, "y", NULL, TCL_GLOBAL_ONLY);
+ /* fprintf(stderr, "... y ==> %p\n", resolvedCmdPtr);*/
+
+ } else if (strcmp(context, "ctx2") == 0 && (name[0] == 'z') && (name[1] == '\0')) {
+ resolvedCmdPtr = Tcl_FindCommand(interp, "Y", NULL, TCL_GLOBAL_ONLY);
+ /*fprintf(stderr, "... Y ==> %p\n", resolvedCmdPtr);*/
}
}
+
+ if (resolvedCmdPtr != NULL) {
+ *rPtr = resolvedCmdPtr;
+ return TCL_OK;
+ }
}
return TCL_CONTINUE;
}
@@ -7476,9 +7535,16 @@ TestInterpResolverCmd(
int idx;
#define RESOLVER_KEY "testInterpResolver"
- if (objc != 2) {
- Tcl_WrongNumArgs(interp, 1, objv, "up|down");
- return TCL_ERROR;
+ if ((objc < 2) || (objc > 3)) {
+ Tcl_WrongNumArgs(interp, 1, objv, "up|down ?interp?");
+ return TCL_ERROR;
+ }
+ if (objc == 3) {
+ interp = Tcl_GetSlave(interp, Tcl_GetString(objv[2]));
+ if (interp == NULL) {
+ Tcl_AppendResult(interp, "provided interpreter not found", NULL);
+ return TCL_ERROR;
+ }
}
if (Tcl_GetIndexFromObj(interp, objv[1], table, "operation", TCL_EXACT,
&idx) != TCL_OK) {
diff --git a/generic/tclTestObj.c b/generic/tclTestObj.c
index a637498..6053ae3 100644
--- a/generic/tclTestObj.c
+++ b/generic/tclTestObj.c
@@ -577,23 +577,9 @@ TestindexobjCmd(
}
argv[objc-4] = NULL;
- /*
- * Tcl_GetIndexFromObj assumes that the table is statically-allocated so
- * that its address is different for each index object. If we accidently
- * allocate a table at the same address as that cached in the index
- * object, clear out the object's cached state.
- */
-
- if (objv[3]->typePtr != NULL
- && !strcmp("index", objv[3]->typePtr->name)) {
- indexRep = objv[3]->internalRep.twoPtrValue.ptr1;
- if (indexRep->tablePtr == (void *) argv) {
- TclFreeIntRep(objv[3]);
- }
- }
-
result = Tcl_GetIndexFromObj((setError? interp : NULL), objv[3],
- argv, "token", (allowAbbrev? 0 : TCL_EXACT), &index);
+ argv, "token", INDEX_TEMP_TABLE|(allowAbbrev? 0 : TCL_EXACT),
+ &index);
ckfree(argv);
if (result == TCL_OK) {
Tcl_SetIntObj(Tcl_GetObjResult(interp), index);
diff --git a/generic/tclUtf.c b/generic/tclUtf.c
index 6c4cb7f..b33bf6a 100644
--- a/generic/tclUtf.c
+++ b/generic/tclUtf.c
@@ -73,16 +73,7 @@ static const unsigned char totalBytes[256] = {
#else
1,1,1,1,1,1,1,1,
#endif
-#if TCL_UTF_MAX > 4
- 5,5,5,5,
-#else
- 1,1,1,1,
-#endif
-#if TCL_UTF_MAX > 5
- 6,6,6,6
-#else
- 1,1,1,1
-#endif
+ 1,1,1,1,1,1,1,1
};
/*
@@ -105,14 +96,14 @@ int
TclUtfCount(
int ch) /* The Tcl_UniChar whose size is returned. */
{
- if ((ch > 0) && (ch < UNICODE_SELF)) {
+ if ((unsigned)(ch - 1) < (UNICODE_SELF - 1)) {
return 1;
}
if (ch <= 0x7FF) {
return 2;
}
#if TCL_UTF_MAX > 3
- if ((ch > 0xFFFF) && (ch <= 0x10FFFF)) {
+ if (((unsigned)(ch - 0x10000) <= 0xfffff)) {
return 4;
}
#endif
@@ -146,7 +137,7 @@ Tcl_UniCharToUtf(
* large enough to hold the UTF-8 character
* (at most TCL_UTF_MAX bytes). */
{
- if ((ch > 0) && (ch < UNICODE_SELF)) {
+ if ((unsigned)(ch - 1) < (UNICODE_SELF - 1)) {
buf[0] = (char) ch;
return 1;
}
@@ -174,11 +165,7 @@ Tcl_UniCharToUtf(
}
}
#endif
- three:
- buf[2] = (char) ((ch | 0x80) & 0xBF);
- buf[1] = (char) (((ch >> 6) | 0x80) & 0xBF);
- buf[0] = (char) ((ch >> 12) | 0xE0);
- return 3;
+ goto three;
}
#if TCL_UTF_MAX > 3
@@ -193,7 +180,11 @@ Tcl_UniCharToUtf(
}
ch = 0xFFFD;
- goto three;
+three:
+ buf[2] = (char) ((ch | 0x80) & 0xBF);
+ buf[1] = (char) (((ch >> 6) | 0x80) & 0xBF);
+ buf[0] = (char) ((ch >> 12) | 0xE0);
+ return 3;
}
/*
@@ -308,9 +299,6 @@ Tcl_UtfToUniChar(
* A two-byte-character lead-byte not followed by trail-byte
* represents itself.
*/
-
- *chPtr = (Tcl_UniChar) byte;
- return 1;
} else if (byte < 0xF0) {
if (((src[1] & 0xC0) == 0x80) && ((src[2] & 0xC0) == 0x80)) {
/*
@@ -326,31 +314,23 @@ Tcl_UtfToUniChar(
* A three-byte-character lead-byte not followed by two trail-bytes
* represents itself.
*/
-
- *chPtr = (Tcl_UniChar) byte;
- return 1;
}
#if TCL_UTF_MAX > 3
- {
- int ch, total, trail;
-
- total = totalBytes[byte];
- trail = total - 1;
- if (trail > 0) {
- ch = byte & (0x3F >> trail);
- do {
- src++;
- if ((*src & 0xC0) != 0x80) {
- *chPtr = byte;
- return 1;
- }
- ch <<= 6;
- ch |= (*src & 0x3F);
- trail--;
- } while (trail > 0);
- *chPtr = ch;
- return total;
+ else if (byte < 0xF8) {
+ if (((src[1] & 0xC0) == 0x80) && ((src[2] & 0xC0) == 0x80) && ((src[3] & 0xC0) == 0x80)) {
+ /*
+ * Four-byte-character lead byte followed by three trail bytes.
+ */
+
+ *chPtr = (Tcl_UniChar) (((byte & 0x0E) << 18) | ((src[1] & 0x3F) << 12)
+ | ((src[2] & 0x3F) << 6) | (src[3] & 0x3F));
+ return 4;
}
+
+ /*
+ * A three-byte-character lead-byte not followed by two trail-bytes
+ * represents itself.
+ */
}
#endif
diff --git a/generic/tclVar.c b/generic/tclVar.c
index a9bedd7..48e09f6 100644
--- a/generic/tclVar.c
+++ b/generic/tclVar.c
@@ -149,6 +149,7 @@ static const char *isArrayElement =
*/
typedef struct ArraySearch {
+ Tcl_Obj *name; /* Name of this search */
int id; /* Integer id used to distinguish among
* multiple concurrent searches for the same
* array. */
@@ -188,8 +189,7 @@ static ArraySearch * ParseSearchId(Tcl_Interp *interp, const Var *varPtr,
static void UnsetVarStruct(Var *varPtr, Var *arrayPtr,
Interp *iPtr, Tcl_Obj *part1Ptr,
Tcl_Obj *part2Ptr, int flags, int index);
-static int SetArraySearchObj(Tcl_Interp *interp,
- Tcl_Obj *objPtr);
+static Var * VerifyArray(Tcl_Interp *interp, Tcl_Obj *varNameObj);
/*
* Functions defined in this file that may be exported in the future for use
@@ -214,10 +214,6 @@ static Tcl_DupInternalRepProc DupParsedVarName;
* or NULL if it is this same obj
* twoPtrValue.ptr2: index into locals table
*
- * nsVarName - INTERNALREP DEFINITION:
- * twoPtrValue.ptr1: pointer to the namespace containing the reference
- * twoPtrValue.ptr2: pointer to the corresponding Var
- *
* parsedVarName - INTERNALREP DEFINITION:
* twoPtrValue.ptr1: pointer to the array name Tcl_Obj, or NULL if it is a
* scalar variable
@@ -235,22 +231,6 @@ static const Tcl_ObjType tclParsedVarNameType = {
FreeParsedVarName, DupParsedVarName, NULL, NULL
};
-/*
- * Type of Tcl_Objs used to speed up array searches.
- *
- * INTERNALREP DEFINITION:
- * twoPtrValue.ptr1: searchIdNumber (cast to pointer)
- * twoPtrValue.ptr2: variableNameStartInString (cast to pointer)
- *
- * Note that the value stored in ptr2 is the offset into the string of the
- * start of the variable name and not the address of the variable name itself,
- * as this can be safely copied.
- */
-
-const Tcl_ObjType tclArraySearchType = {
- "array search",
- NULL, NULL, NULL, SetArraySearchObj
-};
Var *
TclVarHashCreateVar(
@@ -521,16 +501,13 @@ TclObjLookupVarEx(
* is set to NULL. */
{
Interp *iPtr = (Interp *) interp;
+ CallFrame *varFramePtr = iPtr->varFramePtr;
register Var *varPtr; /* Points to the variable's in-frame Var
* structure. */
- const char *part1;
- int index, len1, len2;
- int parsed = 0;
- Tcl_Obj *objPtr;
- const Tcl_ObjType *typePtr = part1Ptr->typePtr;
const char *errMsg = NULL;
- CallFrame *varFramePtr = iPtr->varFramePtr;
- const char *part2 = part2Ptr? TclGetString(part2Ptr):NULL;
+ int index, parsed = 0;
+ const Tcl_ObjType *typePtr = part1Ptr->typePtr;
+
*arrayPtrPtr = NULL;
if (typePtr == &localVarNameType) {
@@ -546,7 +523,7 @@ TclObjLookupVarEx(
*/
Tcl_Obj *namePtr = part1Ptr->internalRep.twoPtrValue.ptr1;
- Tcl_Obj *checkNamePtr = localName(iPtr->varFramePtr, localIndex);
+ Tcl_Obj *checkNamePtr = localName(varFramePtr, localIndex);
if ((!namePtr && (checkNamePtr == part1Ptr)) ||
(namePtr && (checkNamePtr == namePtr))) {
@@ -577,11 +554,7 @@ TclObjLookupVarEx(
}
return NULL;
}
- if ((part2Ptr = part1Ptr->internalRep.twoPtrValue.ptr2)) {
- if (createPart2) {
- Tcl_IncrRefCount(part2Ptr);
- }
- }
+ part2Ptr = part1Ptr->internalRep.twoPtrValue.ptr2;
part1Ptr = part1Ptr->internalRep.twoPtrValue.ptr1;
typePtr = part1Ptr->typePtr;
if (typePtr == &localVarNameType) {
@@ -590,18 +563,23 @@ TclObjLookupVarEx(
}
parsed = 1;
}
- part1 = TclGetStringFromObj(part1Ptr, &len1);
- if (!parsed && len1 && (*(part1 + len1 - 1) == ')')) {
+ if (!parsed) {
+
/*
* part1Ptr is possibly an unparsed array element.
*/
- register int i;
+ int len;
+ const char *part1 = TclGetStringFromObj(part1Ptr, &len);
+
+ if (len > 1 && (part1[len - 1] == ')')) {
+
+ const char *part2 = strchr(part1, '(');
+
+ if (part2) {
+ Tcl_Obj *arrayPtr;
- len2 = -1;
- for (i = 0; i < len1; i++) {
- if (*(part1 + i) == '(') {
if (part2Ptr != NULL) {
if (flags & TCL_LEAVE_ERR_MSG) {
TclObjVarErrMsg(interp, part1Ptr, part2Ptr, msg,
@@ -612,47 +590,19 @@ TclObjLookupVarEx(
return NULL;
}
- /*
- * part1Ptr points to an array element; first copy the element
- * name to a new string part2.
- */
+ arrayPtr = Tcl_NewStringObj(part1, (part2 - part1));
+ part2Ptr = Tcl_NewStringObj(part2 + 1, len - (part2 - part1) - 2);
- part2 = part1 + i + 1;
- len2 = len1 - i - 2;
- len1 = i;
+ TclFreeIntRep(part1Ptr);
- part2Ptr = Tcl_NewStringObj(part2, len2);
- if (createPart2) {
- Tcl_IncrRefCount(part2Ptr);
- }
-
- /*
- * Free the internal rep of the original part1Ptr, now renamed
- * objPtr, and set it to tclParsedVarNameType.
- */
-
- objPtr = part1Ptr;
- TclFreeIntRep(objPtr);
- objPtr->typePtr = &tclParsedVarNameType;
-
- /*
- * Define a new string object to hold the new part1Ptr, i.e.,
- * the array name. Set the internal rep of objPtr, reset
- * typePtr and part1 to contain the references to the array
- * name.
- */
-
- TclNewStringObj(part1Ptr, part1, len1);
- Tcl_IncrRefCount(part1Ptr);
-
- objPtr->internalRep.twoPtrValue.ptr1 = part1Ptr;
- Tcl_IncrRefCount(part2Ptr);
- objPtr->internalRep.twoPtrValue.ptr2 = part2Ptr;
+ Tcl_IncrRefCount(arrayPtr);
+ part1Ptr->internalRep.twoPtrValue.ptr1 = arrayPtr;
+ Tcl_IncrRefCount(part2Ptr);
+ part1Ptr->internalRep.twoPtrValue.ptr2 = part2Ptr;
+ part1Ptr->typePtr = &tclParsedVarNameType;
- typePtr = part1Ptr->typePtr;
- part1 = TclGetString(part1Ptr);
- break;
- }
+ part1Ptr = arrayPtr;
+ }
}
}
@@ -662,8 +612,6 @@ TclObjLookupVarEx(
* the cached types if possible.
*/
- TclFreeIntRep(part1Ptr);
-
varPtr = TclLookupSimpleVar(interp, part1Ptr, flags, createPart1,
&errMsg, &index);
if (varPtr == NULL) {
@@ -679,11 +627,12 @@ TclObjLookupVarEx(
* Cache the newly found variable if possible.
*/
+ TclFreeIntRep(part1Ptr);
if (index >= 0) {
/*
* An indexed local variable.
*/
- Tcl_Obj *cachedNamePtr = localName(iPtr->varFramePtr, index);
+ Tcl_Obj *cachedNamePtr = localName(varFramePtr, index);
part1Ptr->typePtr = &localVarNameType;
if (part1Ptr != cachedNamePtr) {
@@ -2898,34 +2847,22 @@ TclArraySet(
*/
/* ARGSUSED */
-static int
-ArrayStartSearchCmd(
- ClientData clientData,
+
+static Var *
+VerifyArray(
Tcl_Interp *interp,
- int objc,
- Tcl_Obj *const objv[])
+ Tcl_Obj *varNameObj)
{
Interp *iPtr = (Interp *) interp;
- Var *varPtr, *arrayPtr;
- Tcl_HashEntry *hPtr;
- Tcl_Obj *varNameObj;
- int isNew;
- ArraySearch *searchPtr;
- const char *varName;
-
- if (objc != 2) {
- Tcl_WrongNumArgs(interp, 1, objv, "arrayName");
- return TCL_ERROR;
- }
- varNameObj = objv[1];
+ const char *varName = TclGetString(varNameObj);
+ Var *arrayPtr;
/*
* Locate the array variable.
*/
- varPtr = TclObjLookupVarEx(interp, varNameObj, NULL, /*flags*/ 0,
+ Var *varPtr = TclObjLookupVarEx(interp, varNameObj, NULL, /*flags*/ 0,
/*msg*/ 0, /*createPart1*/ 0, /*createPart2*/ 0, &arrayPtr);
- varName = TclGetString(varNameObj);
/*
* Special array trace used to keep the env array in sync for array names,
@@ -2937,7 +2874,7 @@ ArrayStartSearchCmd(
if (TclObjCallVarTraces(iPtr, arrayPtr, varPtr, varNameObj, NULL,
(TCL_LEAVE_ERR_MSG|TCL_NAMESPACE_ONLY|TCL_GLOBAL_ONLY|
TCL_TRACE_ARRAY), /* leaveErrMsg */ 1, -1) == TCL_ERROR) {
- return TCL_ERROR;
+ return NULL;
}
}
@@ -2947,11 +2884,36 @@ ArrayStartSearchCmd(
* traces.
*/
- if ((varPtr == NULL) || !TclIsVarArray(varPtr)
- || TclIsVarUndefined(varPtr)) {
+ if ((varPtr == NULL) || !TclIsVarArray(varPtr) || TclIsVarUndefined(varPtr)) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"\"%s\" isn't an array", varName));
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "ARRAY", varName, NULL);
+ return NULL;
+ }
+
+ return varPtr;
+}
+
+static int
+ArrayStartSearchCmd(
+ ClientData clientData,
+ Tcl_Interp *interp,
+ int objc,
+ Tcl_Obj *const objv[])
+{
+ Interp *iPtr = (Interp *) interp;
+ Var *varPtr;
+ Tcl_HashEntry *hPtr;
+ int isNew;
+ ArraySearch *searchPtr;
+
+ if (objc != 2) {
+ Tcl_WrongNumArgs(interp, 1, objv, "arrayName");
+ return TCL_ERROR;
+ }
+
+ varPtr = VerifyArray(interp, objv[1]);
+ if (varPtr == NULL) {
return TCL_ERROR;
}
@@ -2973,8 +2935,9 @@ ArrayStartSearchCmd(
searchPtr->nextEntry = VarHashFirstEntry(varPtr->value.tablePtr,
&searchPtr->search);
Tcl_SetHashValue(hPtr, searchPtr);
- Tcl_SetObjResult(interp,
- Tcl_ObjPrintf("s-%d-%s", searchPtr->id, varName));
+ searchPtr->name = Tcl_ObjPrintf("s-%d-%s", searchPtr->id, TclGetString(objv[1]));
+ Tcl_IncrRefCount(searchPtr->name);
+ Tcl_SetObjResult(interp, searchPtr->name);
return TCL_OK;
}
@@ -3004,7 +2967,7 @@ ArrayAnyMoreCmd(
Tcl_Obj *const objv[])
{
Interp *iPtr = (Interp *) interp;
- Var *varPtr, *arrayPtr;
+ Var *varPtr;
Tcl_Obj *varNameObj, *searchObj;
int gotValue;
ArraySearch *searchPtr;
@@ -3016,39 +2979,8 @@ ArrayAnyMoreCmd(
varNameObj = objv[1];
searchObj = objv[2];
- /*
- * Locate the array variable.
- */
-
- varPtr = TclObjLookupVarEx(interp, varNameObj, NULL, /*flags*/ 0,
- /*msg*/ 0, /*createPart1*/ 0, /*createPart2*/ 0, &arrayPtr);
-
- /*
- * Special array trace used to keep the env array in sync for array names,
- * array get, etc.
- */
-
- if (varPtr && (varPtr->flags & VAR_TRACED_ARRAY)
- && (TclIsVarArray(varPtr) || TclIsVarUndefined(varPtr))) {
- if (TclObjCallVarTraces(iPtr, arrayPtr, varPtr, varNameObj, NULL,
- (TCL_LEAVE_ERR_MSG|TCL_NAMESPACE_ONLY|TCL_GLOBAL_ONLY|
- TCL_TRACE_ARRAY), /* leaveErrMsg */ 1, -1) == TCL_ERROR) {
- return TCL_ERROR;
- }
- }
-
- /*
- * Verify that it is indeed an array variable. This test comes after the
- * traces - the variable may actually become an array as an effect of said
- * traces.
- */
-
- if ((varPtr == NULL) || !TclIsVarArray(varPtr)
- || TclIsVarUndefined(varPtr)) {
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "\"%s\" isn't an array", TclGetString(varNameObj)));
- Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "ARRAY",
- TclGetString(varNameObj), NULL);
+ varPtr = VerifyArray(interp, varNameObj);
+ if (varPtr == NULL) {
return TCL_ERROR;
}
@@ -3110,8 +3042,7 @@ ArrayNextElementCmd(
int objc,
Tcl_Obj *const objv[])
{
- Interp *iPtr = (Interp *) interp;
- Var *varPtr, *arrayPtr;
+ Var *varPtr;
Tcl_Obj *varNameObj, *searchObj;
ArraySearch *searchPtr;
@@ -3122,39 +3053,8 @@ ArrayNextElementCmd(
varNameObj = objv[1];
searchObj = objv[2];
- /*
- * Locate the array variable.
- */
-
- varPtr = TclObjLookupVarEx(interp, varNameObj, NULL, /*flags*/ 0,
- /*msg*/ 0, /*createPart1*/ 0, /*createPart2*/ 0, &arrayPtr);
-
- /*
- * Special array trace used to keep the env array in sync for array names,
- * array get, etc.
- */
-
- if (varPtr && (varPtr->flags & VAR_TRACED_ARRAY)
- && (TclIsVarArray(varPtr) || TclIsVarUndefined(varPtr))) {
- if (TclObjCallVarTraces(iPtr, arrayPtr, varPtr, varNameObj, NULL,
- (TCL_LEAVE_ERR_MSG|TCL_NAMESPACE_ONLY|TCL_GLOBAL_ONLY|
- TCL_TRACE_ARRAY), /* leaveErrMsg */ 1, -1) == TCL_ERROR) {
- return TCL_ERROR;
- }
- }
-
- /*
- * Verify that it is indeed an array variable. This test comes after the
- * traces - the variable may actually become an array as an effect of said
- * traces.
- */
-
- if ((varPtr == NULL) || !TclIsVarArray(varPtr)
- || TclIsVarUndefined(varPtr)) {
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "\"%s\" isn't an array", TclGetString(varNameObj)));
- Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "ARRAY",
- TclGetString(varNameObj), NULL);
+ varPtr = VerifyArray(interp, varNameObj);
+ if (varPtr == NULL) {
return TCL_ERROR;
}
@@ -3220,7 +3120,7 @@ ArrayDoneSearchCmd(
Tcl_Obj *const objv[])
{
Interp *iPtr = (Interp *) interp;
- Var *varPtr, *arrayPtr;
+ Var *varPtr;
Tcl_HashEntry *hPtr;
Tcl_Obj *varNameObj, *searchObj;
ArraySearch *searchPtr, *prevPtr;
@@ -3232,39 +3132,8 @@ ArrayDoneSearchCmd(
varNameObj = objv[1];
searchObj = objv[2];
- /*
- * Locate the array variable.
- */
-
- varPtr = TclObjLookupVarEx(interp, varNameObj, NULL, /*flags*/ 0,
- /*msg*/ 0, /*createPart1*/ 0, /*createPart2*/ 0, &arrayPtr);
-
- /*
- * Special array trace used to keep the env array in sync for array names,
- * array get, etc.
- */
-
- if (varPtr && (varPtr->flags & VAR_TRACED_ARRAY)
- && (TclIsVarArray(varPtr) || TclIsVarUndefined(varPtr))) {
- if (TclObjCallVarTraces(iPtr, arrayPtr, varPtr, varNameObj, NULL,
- (TCL_LEAVE_ERR_MSG|TCL_NAMESPACE_ONLY|TCL_GLOBAL_ONLY|
- TCL_TRACE_ARRAY), /* leaveErrMsg */ 1, -1) == TCL_ERROR) {
- return TCL_ERROR;
- }
- }
-
- /*
- * Verify that it is indeed an array variable. This test comes after the
- * traces - the variable may actually become an array as an effect of said
- * traces.
- */
-
- if ((varPtr == NULL) || !TclIsVarArray(varPtr)
- || TclIsVarUndefined(varPtr)) {
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "\"%s\" isn't an array", TclGetString(varNameObj)));
- Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "ARRAY",
- TclGetString(varNameObj), NULL);
+ varPtr = VerifyArray(interp, varNameObj);
+ if (varPtr == NULL) {
return TCL_ERROR;
}
@@ -3298,6 +3167,7 @@ ArrayDoneSearchCmd(
}
}
}
+ Tcl_DecrRefCount(searchPtr->name);
ckfree(searchPtr);
return TCL_OK;
}
@@ -4937,75 +4807,6 @@ Tcl_UpvarObjCmd(
/*
*----------------------------------------------------------------------
*
- * SetArraySearchObj --
- *
- * This function converts the given tcl object into one that has the
- * "array search" internal type.
- *
- * Results:
- * TCL_OK if the conversion succeeded, and TCL_ERROR if it failed (when
- * an error message will be placed in the interpreter's result.)
- *
- * Side effects:
- * Updates the internal type and representation of the object to make
- * this an array-search object. See the tclArraySearchType declaration
- * above for details of the internal representation.
- *
- *----------------------------------------------------------------------
- */
-
-static int
-SetArraySearchObj(
- Tcl_Interp *interp,
- Tcl_Obj *objPtr)
-{
- const char *string;
- char *end; /* Can't be const due to strtoul defn. */
- int id;
- size_t offset;
-
- /*
- * Get the string representation. Make it up-to-date if necessary.
- */
-
- string = TclGetString(objPtr);
-
- /*
- * Parse the id into the three parts separated by dashes.
- */
-
- if ((string[0] != 's') || (string[1] != '-')) {
- goto syntax;
- }
- id = strtoul(string+2, &end, 10);
- if ((end == (string+2)) || (*end != '-')) {
- goto syntax;
- }
-
- /*
- * Can't perform value check in this context, so place reference to place
- * in string to use for the check in the object instead.
- */
-
- end++;
- offset = end - string;
-
- TclFreeIntRep(objPtr);
- objPtr->typePtr = &tclArraySearchType;
- objPtr->internalRep.twoPtrValue.ptr1 = INT2PTR(id);
- objPtr->internalRep.twoPtrValue.ptr2 = INT2PTR(offset);
- return TCL_OK;
-
- syntax:
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "illegal search identifier \"%s\"", string));
- Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "ARRAYSEARCH", string, NULL);
- return TCL_ERROR;
-}
-
-/*
- *----------------------------------------------------------------------
- *
* ParseSearchId --
*
* This function translates from a tcl object to a pointer to an active
@@ -5016,10 +4817,6 @@ SetArraySearchObj(
* or NULL if there isn't one. If NULL is returned, the interp's result
* contains an error message.
*
- * Side effects:
- * The tcl object might have its internal type and representation
- * modified.
- *
*----------------------------------------------------------------------
*/
@@ -5035,65 +4832,43 @@ ParseSearchId(
* name. */
{
Interp *iPtr = (Interp *) interp;
- register const char *string;
- register size_t offset;
- int id;
ArraySearch *searchPtr;
- const char *varName = TclGetString(varNamePtr);
-
- /*
- * Parse the id.
- */
-
- if ((handleObj->typePtr != &tclArraySearchType)
- && (SetArraySearchObj(interp, handleObj) != TCL_OK)) {
- return NULL;
- }
-
- /*
- * Extract the information out of the Tcl_Obj.
- */
-
- id = PTR2INT(handleObj->internalRep.twoPtrValue.ptr1);
- string = TclGetString(handleObj);
- offset = PTR2INT(handleObj->internalRep.twoPtrValue.ptr2);
-
- /*
- * This test cannot be placed inside the Tcl_Obj machinery, since it is
- * dependent on the variable context.
- */
-
- if (strcmp(string+offset, varName) != 0) {
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "search identifier \"%s\" isn't for variable \"%s\"",
- string, varName));
- goto badLookup;
- }
-
- /*
- * Search through the list of active searches on the interpreter to see if
- * the desired one exists.
- *
- * Note that we cannot store the searchPtr directly in the Tcl_Obj as that
- * would run into trouble when DeleteSearches() was called so we must scan
- * this list every time.
- */
+ const char *handle = TclGetString(handleObj);
+ char *end;
if (varPtr->flags & VAR_SEARCH_ACTIVE) {
Tcl_HashEntry *hPtr =
Tcl_FindHashEntry(&iPtr->varSearches, varPtr);
+ /* First look for same (Tcl_Obj *) */
for (searchPtr = Tcl_GetHashValue(hPtr); searchPtr != NULL;
searchPtr = searchPtr->nextPtr) {
- if (searchPtr->id == id) {
+ if (searchPtr->name == handleObj) {
return searchPtr;
}
}
+ /* Fallback: do string compares. */
+ for (searchPtr = Tcl_GetHashValue(hPtr); searchPtr != NULL;
+ searchPtr = searchPtr->nextPtr) {
+ if (strcmp(TclGetString(searchPtr->name), handle) == 0) {
+ return searchPtr;
+ }
+ }
+ }
+ if ((handle[0] != 's') || (handle[1] != '-')
+ || (strtoul(handle + 2, &end, 10), end == (handle + 2))
+ || (*end != '-')) {
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
+ "illegal search identifier \"%s\"", handle));
+ } else if (strcmp(end + 1, TclGetString(varNamePtr)) != 0) {
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
+ "search identifier \"%s\" isn't for variable \"%s\"",
+ handle, TclGetString(varNamePtr)));
+ } else {
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
+ "couldn't find search \"%s\"", handle));
}
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "couldn't find search \"%s\"", string));
- badLookup:
- Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "ARRAYSEARCH", string, NULL);
+ Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "ARRAYSEARCH", handle, NULL);
return NULL;
}
@@ -5128,6 +4903,7 @@ DeleteSearches(
for (searchPtr = Tcl_GetHashValue(sPtr); searchPtr != NULL;
searchPtr = nextPtr) {
nextPtr = searchPtr->nextPtr;
+ Tcl_DecrRefCount(searchPtr->name);
ckfree(searchPtr);
}
arrayVarPtr->flags &= ~VAR_SEARCH_ACTIVE;
@@ -5180,13 +4956,16 @@ TclDeleteNamespaceVars(
VarHashRefCount(varPtr)++; /* Make sure we get to remove from
* hash. */
Tcl_GetVariableFullName(interp, (Tcl_Var) varPtr, objPtr);
- UnsetVarStruct(varPtr, NULL, iPtr, /* part1 */ objPtr, NULL, flags,
- -1);
- Tcl_DecrRefCount(objPtr); /* Free no longer needed obj */
+ UnsetVarStruct(varPtr, NULL, iPtr, /* part1 */ objPtr,
+ NULL, flags, -1);
/*
- * Remove the variable from the table and force it undefined in case
- * an unset trace brought it back from the dead.
+ * We just unset the variable. However, an unset trace might
+ * have re-set it, or might have re-established traces on it.
+ * This namespace and its vartable are going away unconditionally,
+ * so we cannot let such things linger. That would be a leak.
+ *
+ * First we destroy all traces. ...
*/
if (TclIsVarTraced(varPtr)) {
@@ -5210,6 +4989,17 @@ TclDeleteNamespaceVars(
}
}
}
+
+ /*
+ * ...and then, if the variable still holds a value, we unset it
+ * again. This time with no traces left, we're sure it goes away.
+ */
+
+ if (!TclIsVarUndefined(varPtr)) {
+ UnsetVarStruct(varPtr, NULL, iPtr, /* part1 */ objPtr,
+ NULL, flags, -1);
+ }
+ Tcl_DecrRefCount(objPtr); /* free no longer needed obj */
VarHashRefCount(varPtr)--;
VarHashDeleteEntry(varPtr);
}
diff --git a/generic/tclZlib.c b/generic/tclZlib.c
index 10fa4f7..a7e8a8a 100644
--- a/generic/tclZlib.c
+++ b/generic/tclZlib.c
@@ -2864,7 +2864,7 @@ ZlibTransformClose(
Tcl_Interp *interp)
{
ZlibChannelData *cd = instanceData;
- int e, result = TCL_OK;
+ int e, written, result = TCL_OK;
/*
* Delete the support timer.
@@ -2882,6 +2882,17 @@ ZlibTransformClose(
cd->outStream.next_out = (Bytef *) cd->outBuffer;
cd->outStream.avail_out = (unsigned) cd->outAllocated;
e = deflate(&cd->outStream, Z_FINISH);
+ written = cd->outAllocated - cd->outStream.avail_out;
+
+ /*
+ * Can't be sure that deflate() won't declare the buffer to be
+ * full (with Z_BUF_ERROR) so handle that case.
+ */
+
+ if (e == Z_BUF_ERROR) {
+ e = Z_OK;
+ written = cd->outAllocated;
+ }
if (e != Z_OK && e != Z_STREAM_END) {
/* TODO: is this the right way to do errors on close? */
if (!TclInThreadExit()) {
@@ -2890,20 +2901,17 @@ ZlibTransformClose(
result = TCL_ERROR;
break;
}
- if (cd->outStream.avail_out != (unsigned) cd->outAllocated) {
- if (Tcl_WriteRaw(cd->parent, cd->outBuffer,
- cd->outAllocated - cd->outStream.avail_out) < 0) {
- /* TODO: is this the right way to do errors on close?
- * Note: when close is called from FinalizeIOSubsystem
- * then interp may be NULL */
- if (!TclInThreadExit() && interp) {
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "error while finalizing file: %s",
- Tcl_PosixError(interp)));
- }
- result = TCL_ERROR;
- break;
+ if (written && Tcl_WriteRaw(cd->parent, cd->outBuffer, written) < 0) {
+ /* TODO: is this the right way to do errors on close?
+ * Note: when close is called from FinalizeIOSubsystem then
+ * interp may be NULL */
+ if (!TclInThreadExit() && interp) {
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
+ "error while finalizing file: %s",
+ Tcl_PosixError(interp)));
}
+ result = TCL_ERROR;
+ break;
}
} while (e != Z_STREAM_END);
(void) deflateEnd(&cd->outStream);
@@ -3084,7 +3092,17 @@ ZlibTransformOutput(
e = deflate(&cd->outStream, Z_NO_FLUSH);
produced = cd->outAllocated - cd->outStream.avail_out;
- if (e == Z_OK && produced > 0) {
+ if ((e == Z_OK && produced > 0) || e == Z_BUF_ERROR) {
+ /*
+ * deflate() indicates that it is out of space by returning
+ * Z_BUF_ERROR; in that case, we must write the whole buffer out
+ * and retry to compress what is left.
+ */
+
+ if (e == Z_BUF_ERROR) {
+ produced = cd->outAllocated;
+ e = Z_OK;
+ }
if (Tcl_WriteRaw(cd->parent, cd->outBuffer, produced) < 0) {
*errorCodePtr = Tcl_GetErrno();
return -1;
diff --git a/library/auto.tcl b/library/auto.tcl
index 02edcc4..97ea8af 100644
--- a/library/auto.tcl
+++ b/library/auto.tcl
@@ -122,11 +122,9 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} {
# uniquify $dirs in order
array set seen {}
foreach i $dirs {
- # Take note that the [file normalize] below has been noted to cause
- # difficulties for the freewrap utility. See Bug 1072136. Until
- # freewrap resolves the matter, one might work around the problem by
- # disabling that branch.
+ # Make sure $i is unique under normalization. Avoid repeated [source].
if {[interp issafe]} {
+ # Safe interps have no [file normalize].
set norm $i
} else {
set norm [file normalize $i]
@@ -135,10 +133,7 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} {
continue
}
set seen($norm) {}
- lappend uniqdirs $i
- }
- set dirs $uniqdirs
- foreach i $dirs {
+
set the_library $i
set file [file join $i $initScript]
diff --git a/library/tzdata/America/Cambridge_Bay b/library/tzdata/America/Cambridge_Bay
index 23004bb..3115ee1 100644
--- a/library/tzdata/America/Cambridge_Bay
+++ b/library/tzdata/America/Cambridge_Bay
@@ -1,7 +1,7 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Cambridge_Bay) {
- {-9223372036854775808 0 0 zzz}
+ {-9223372036854775808 0 0 -00}
{-1577923200 -25200 0 MST}
{-880210800 -21600 1 MWT}
{-769395600 -21600 1 MPT}
diff --git a/library/tzdata/America/Inuvik b/library/tzdata/America/Inuvik
index dd0d151..08f0fd6 100644
--- a/library/tzdata/America/Inuvik
+++ b/library/tzdata/America/Inuvik
@@ -1,7 +1,7 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Inuvik) {
- {-9223372036854775808 0 0 zzz}
+ {-9223372036854775808 0 0 -00}
{-536457600 -28800 0 PST}
{-147888000 -21600 1 PDDT}
{-131558400 -28800 0 PST}
diff --git a/library/tzdata/America/Iqaluit b/library/tzdata/America/Iqaluit
index 2a2e9fe..ff82866 100644
--- a/library/tzdata/America/Iqaluit
+++ b/library/tzdata/America/Iqaluit
@@ -1,7 +1,7 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Iqaluit) {
- {-9223372036854775808 0 0 zzz}
+ {-9223372036854775808 0 0 -00}
{-865296000 -14400 0 EWT}
{-769395600 -14400 1 EPT}
{-765396000 -18000 0 EST}
diff --git a/library/tzdata/America/Los_Angeles b/library/tzdata/America/Los_Angeles
index da6ca99..8e26526 100644
--- a/library/tzdata/America/Los_Angeles
+++ b/library/tzdata/America/Los_Angeles
@@ -11,41 +11,41 @@ set TZData(:America/Los_Angeles) {
{-769395600 -25200 1 PPT}
{-765385200 -28800 0 PST}
{-757353600 -28800 0 PST}
- {-687967200 -25200 1 PDT}
+ {-687967140 -25200 1 PDT}
{-662655600 -28800 0 PST}
- {-620834400 -25200 1 PDT}
+ {-620838000 -25200 1 PDT}
{-608137200 -28800 0 PST}
- {-589384800 -25200 1 PDT}
+ {-589388400 -25200 1 PDT}
{-576082800 -28800 0 PST}
- {-557935200 -25200 1 PDT}
+ {-557938800 -25200 1 PDT}
{-544633200 -28800 0 PST}
- {-526485600 -25200 1 PDT}
+ {-526489200 -25200 1 PDT}
{-513183600 -28800 0 PST}
- {-495036000 -25200 1 PDT}
+ {-495039600 -25200 1 PDT}
{-481734000 -28800 0 PST}
- {-463586400 -25200 1 PDT}
+ {-463590000 -25200 1 PDT}
{-450284400 -28800 0 PST}
- {-431532000 -25200 1 PDT}
+ {-431535600 -25200 1 PDT}
{-418230000 -28800 0 PST}
- {-400082400 -25200 1 PDT}
+ {-400086000 -25200 1 PDT}
{-386780400 -28800 0 PST}
- {-368632800 -25200 1 PDT}
+ {-368636400 -25200 1 PDT}
{-355330800 -28800 0 PST}
- {-337183200 -25200 1 PDT}
+ {-337186800 -25200 1 PDT}
{-323881200 -28800 0 PST}
- {-305733600 -25200 1 PDT}
+ {-305737200 -25200 1 PDT}
{-292431600 -28800 0 PST}
- {-273679200 -25200 1 PDT}
+ {-273682800 -25200 1 PDT}
{-260982000 -28800 0 PST}
- {-242229600 -25200 1 PDT}
+ {-242233200 -25200 1 PDT}
{-226508400 -28800 0 PST}
- {-210780000 -25200 1 PDT}
+ {-210783600 -25200 1 PDT}
{-195058800 -28800 0 PST}
- {-179330400 -25200 1 PDT}
+ {-179334000 -25200 1 PDT}
{-163609200 -28800 0 PST}
- {-147880800 -25200 1 PDT}
+ {-147884400 -25200 1 PDT}
{-131554800 -28800 0 PST}
- {-116431200 -25200 1 PDT}
+ {-116434800 -25200 1 PDT}
{-100105200 -28800 0 PST}
{-94665600 -28800 0 PST}
{-84376800 -25200 1 PDT}
diff --git a/library/tzdata/America/Pangnirtung b/library/tzdata/America/Pangnirtung
index 640808e..14d8516 100644
--- a/library/tzdata/America/Pangnirtung
+++ b/library/tzdata/America/Pangnirtung
@@ -1,7 +1,7 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Pangnirtung) {
- {-9223372036854775808 0 0 zzz}
+ {-9223372036854775808 0 0 -00}
{-1546300800 -14400 0 AST}
{-880221600 -10800 1 AWT}
{-769395600 -10800 1 APT}
diff --git a/library/tzdata/America/Rankin_Inlet b/library/tzdata/America/Rankin_Inlet
index 770ec5d..9ce9f8d 100644
--- a/library/tzdata/America/Rankin_Inlet
+++ b/library/tzdata/America/Rankin_Inlet
@@ -1,7 +1,7 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Rankin_Inlet) {
- {-9223372036854775808 0 0 zzz}
+ {-9223372036854775808 0 0 -00}
{-410227200 -21600 0 CST}
{-147895200 -14400 1 CDDT}
{-131565600 -21600 0 CST}
diff --git a/library/tzdata/America/Resolute b/library/tzdata/America/Resolute
index b4c0bab..a9881b4 100644
--- a/library/tzdata/America/Resolute
+++ b/library/tzdata/America/Resolute
@@ -1,7 +1,7 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Resolute) {
- {-9223372036854775808 0 0 zzz}
+ {-9223372036854775808 0 0 -00}
{-704937600 -21600 0 CST}
{-147895200 -14400 1 CDDT}
{-131565600 -21600 0 CST}
diff --git a/library/tzdata/America/Tijuana b/library/tzdata/America/Tijuana
index 6118cde..4b7ebe7 100644
--- a/library/tzdata/America/Tijuana
+++ b/library/tzdata/America/Tijuana
@@ -14,19 +14,19 @@ set TZData(:America/Tijuana) {
{-686073600 -25200 1 PDT}
{-661539600 -28800 0 PST}
{-504892800 -28800 0 PST}
- {-495036000 -25200 1 PDT}
+ {-495039600 -25200 1 PDT}
{-481734000 -28800 0 PST}
- {-463586400 -25200 1 PDT}
+ {-463590000 -25200 1 PDT}
{-450284400 -28800 0 PST}
- {-431532000 -25200 1 PDT}
+ {-431535600 -25200 1 PDT}
{-418230000 -28800 0 PST}
- {-400082400 -25200 1 PDT}
+ {-400086000 -25200 1 PDT}
{-386780400 -28800 0 PST}
- {-368632800 -25200 1 PDT}
+ {-368636400 -25200 1 PDT}
{-355330800 -28800 0 PST}
- {-337183200 -25200 1 PDT}
+ {-337186800 -25200 1 PDT}
{-323881200 -28800 0 PST}
- {-305733600 -25200 1 PDT}
+ {-305737200 -25200 1 PDT}
{-292431600 -28800 0 PST}
{-283968000 -28800 0 PST}
{189331200 -28800 0 PST}
diff --git a/library/tzdata/America/Yellowknife b/library/tzdata/America/Yellowknife
index 44ca658..c6c4ed5 100644
--- a/library/tzdata/America/Yellowknife
+++ b/library/tzdata/America/Yellowknife
@@ -1,7 +1,7 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Yellowknife) {
- {-9223372036854775808 0 0 zzz}
+ {-9223372036854775808 0 0 -00}
{-1104537600 -25200 0 MST}
{-880210800 -21600 1 MWT}
{-769395600 -21600 1 MPT}
diff --git a/library/tzdata/Antarctica/Casey b/library/tzdata/Antarctica/Casey
index 56d5df7..3035ab9 100644
--- a/library/tzdata/Antarctica/Casey
+++ b/library/tzdata/Antarctica/Casey
@@ -1,10 +1,10 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Antarctica/Casey) {
- {-9223372036854775808 0 0 zzz}
- {-31536000 28800 0 AWST}
- {1255802400 39600 0 CAST}
- {1267714800 28800 0 AWST}
- {1319738400 39600 0 CAST}
- {1329843600 28800 0 AWST}
+ {-9223372036854775808 0 0 -00}
+ {-31536000 28800 0 +08}
+ {1255802400 39600 0 +11}
+ {1267714800 28800 0 +08}
+ {1319738400 39600 0 +11}
+ {1329843600 28800 0 +08}
}
diff --git a/library/tzdata/Antarctica/Davis b/library/tzdata/Antarctica/Davis
index 2762d2f..9bb178b 100644
--- a/library/tzdata/Antarctica/Davis
+++ b/library/tzdata/Antarctica/Davis
@@ -1,12 +1,12 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Antarctica/Davis) {
- {-9223372036854775808 0 0 zzz}
- {-409190400 25200 0 DAVT}
- {-163062000 0 0 zzz}
- {-28857600 25200 0 DAVT}
- {1255806000 18000 0 DAVT}
- {1268251200 25200 0 DAVT}
- {1319742000 18000 0 DAVT}
- {1329854400 25200 0 DAVT}
+ {-9223372036854775808 0 0 -00}
+ {-409190400 25200 0 +07}
+ {-163062000 0 0 -00}
+ {-28857600 25200 0 +07}
+ {1255806000 18000 0 +05}
+ {1268251200 25200 0 +07}
+ {1319742000 18000 0 +05}
+ {1329854400 25200 0 +07}
}
diff --git a/library/tzdata/Antarctica/DumontDUrville b/library/tzdata/Antarctica/DumontDUrville
index 41dc1e3..f734aed 100644
--- a/library/tzdata/Antarctica/DumontDUrville
+++ b/library/tzdata/Antarctica/DumontDUrville
@@ -1,8 +1,8 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Antarctica/DumontDUrville) {
- {-9223372036854775808 0 0 zzz}
- {-725846400 36000 0 PMT}
- {-566992800 0 0 zzz}
- {-415497600 36000 0 DDUT}
+ {-9223372036854775808 0 0 -00}
+ {-725846400 36000 0 +10}
+ {-566992800 0 0 -00}
+ {-415497600 36000 0 +10}
}
diff --git a/library/tzdata/Antarctica/Macquarie b/library/tzdata/Antarctica/Macquarie
index 07ddff6..9ed0630 100644
--- a/library/tzdata/Antarctica/Macquarie
+++ b/library/tzdata/Antarctica/Macquarie
@@ -1,12 +1,12 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Antarctica/Macquarie) {
- {-9223372036854775808 0 0 zzz}
+ {-9223372036854775808 0 0 -00}
{-2214259200 36000 0 AEST}
{-1680508800 39600 1 AEDT}
{-1669892400 39600 0 AEDT}
{-1665392400 36000 0 AEST}
- {-1601719200 0 0 zzz}
+ {-1601719200 0 0 -00}
{-94730400 36000 0 AEST}
{-71136000 39600 1 AEDT}
{-55411200 36000 0 AEST}
diff --git a/library/tzdata/Antarctica/Mawson b/library/tzdata/Antarctica/Mawson
index ba03ba1..4828b1a 100644
--- a/library/tzdata/Antarctica/Mawson
+++ b/library/tzdata/Antarctica/Mawson
@@ -1,7 +1,7 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Antarctica/Mawson) {
- {-9223372036854775808 0 0 zzz}
- {-501206400 21600 0 MAWT}
- {1255809600 18000 0 MAWT}
+ {-9223372036854775808 0 0 -00}
+ {-501206400 21600 0 +06}
+ {1255809600 18000 0 +05}
}
diff --git a/library/tzdata/Antarctica/Palmer b/library/tzdata/Antarctica/Palmer
index 5767985..62b17e1 100644
--- a/library/tzdata/Antarctica/Palmer
+++ b/library/tzdata/Antarctica/Palmer
@@ -1,7 +1,7 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Antarctica/Palmer) {
- {-9223372036854775808 0 0 zzz}
+ {-9223372036854775808 0 0 -00}
{-157766400 -14400 0 ART}
{-152654400 -14400 0 ART}
{-132955200 -10800 1 ARST}
diff --git a/library/tzdata/Antarctica/Rothera b/library/tzdata/Antarctica/Rothera
index 24d7f3e..7f0134f 100644
--- a/library/tzdata/Antarctica/Rothera
+++ b/library/tzdata/Antarctica/Rothera
@@ -1,6 +1,6 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Antarctica/Rothera) {
- {-9223372036854775808 0 0 zzz}
- {218246400 -10800 0 ROTT}
+ {-9223372036854775808 0 0 -00}
+ {218246400 -10800 0 -03}
}
diff --git a/library/tzdata/Antarctica/Syowa b/library/tzdata/Antarctica/Syowa
index 4d046b5..a44dd5c 100644
--- a/library/tzdata/Antarctica/Syowa
+++ b/library/tzdata/Antarctica/Syowa
@@ -1,6 +1,6 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Antarctica/Syowa) {
- {-9223372036854775808 0 0 zzz}
- {-407808000 10800 0 SYOT}
+ {-9223372036854775808 0 0 -00}
+ {-407808000 10800 0 +03}
}
diff --git a/library/tzdata/Antarctica/Troll b/library/tzdata/Antarctica/Troll
index 7d2b042..fe44578 100644
--- a/library/tzdata/Antarctica/Troll
+++ b/library/tzdata/Antarctica/Troll
@@ -1,196 +1,196 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Antarctica/Troll) {
- {-9223372036854775808 0 0 zzz}
- {1108166400 0 0 UTC}
- {1111885200 7200 1 CEST}
- {1130634000 0 0 UTC}
- {1143334800 7200 1 CEST}
- {1162083600 0 0 UTC}
- {1174784400 7200 1 CEST}
- {1193533200 0 0 UTC}
- {1206838800 7200 1 CEST}
- {1224982800 0 0 UTC}
- {1238288400 7200 1 CEST}
- {1256432400 0 0 UTC}
- {1269738000 7200 1 CEST}
- {1288486800 0 0 UTC}
- {1301187600 7200 1 CEST}
- {1319936400 0 0 UTC}
- {1332637200 7200 1 CEST}
- {1351386000 0 0 UTC}
- {1364691600 7200 1 CEST}
- {1382835600 0 0 UTC}
- {1396141200 7200 1 CEST}
- {1414285200 0 0 UTC}
- {1427590800 7200 1 CEST}
- {1445734800 0 0 UTC}
- {1459040400 7200 1 CEST}
- {1477789200 0 0 UTC}
- {1490490000 7200 1 CEST}
- {1509238800 0 0 UTC}
- {1521939600 7200 1 CEST}
- {1540688400 0 0 UTC}
- {1553994000 7200 1 CEST}
- {1572138000 0 0 UTC}
- {1585443600 7200 1 CEST}
- {1603587600 0 0 UTC}
- {1616893200 7200 1 CEST}
- {1635642000 0 0 UTC}
- {1648342800 7200 1 CEST}
- {1667091600 0 0 UTC}
- {1679792400 7200 1 CEST}
- {1698541200 0 0 UTC}
- {1711846800 7200 1 CEST}
- {1729990800 0 0 UTC}
- {1743296400 7200 1 CEST}
- {1761440400 0 0 UTC}
- {1774746000 7200 1 CEST}
- {1792890000 0 0 UTC}
- {1806195600 7200 1 CEST}
- {1824944400 0 0 UTC}
- {1837645200 7200 1 CEST}
- {1856394000 0 0 UTC}
- {1869094800 7200 1 CEST}
- {1887843600 0 0 UTC}
- {1901149200 7200 1 CEST}
- {1919293200 0 0 UTC}
- {1932598800 7200 1 CEST}
- {1950742800 0 0 UTC}
- {1964048400 7200 1 CEST}
- {1982797200 0 0 UTC}
- {1995498000 7200 1 CEST}
- {2014246800 0 0 UTC}
- {2026947600 7200 1 CEST}
- {2045696400 0 0 UTC}
- {2058397200 7200 1 CEST}
- {2077146000 0 0 UTC}
- {2090451600 7200 1 CEST}
- {2108595600 0 0 UTC}
- {2121901200 7200 1 CEST}
- {2140045200 0 0 UTC}
- {2153350800 7200 1 CEST}
- {2172099600 0 0 UTC}
- {2184800400 7200 1 CEST}
- {2203549200 0 0 UTC}
- {2216250000 7200 1 CEST}
- {2234998800 0 0 UTC}
- {2248304400 7200 1 CEST}
- {2266448400 0 0 UTC}
- {2279754000 7200 1 CEST}
- {2297898000 0 0 UTC}
- {2311203600 7200 1 CEST}
- {2329347600 0 0 UTC}
- {2342653200 7200 1 CEST}
- {2361402000 0 0 UTC}
- {2374102800 7200 1 CEST}
- {2392851600 0 0 UTC}
- {2405552400 7200 1 CEST}
- {2424301200 0 0 UTC}
- {2437606800 7200 1 CEST}
- {2455750800 0 0 UTC}
- {2469056400 7200 1 CEST}
- {2487200400 0 0 UTC}
- {2500506000 7200 1 CEST}
- {2519254800 0 0 UTC}
- {2531955600 7200 1 CEST}
- {2550704400 0 0 UTC}
- {2563405200 7200 1 CEST}
- {2582154000 0 0 UTC}
- {2595459600 7200 1 CEST}
- {2613603600 0 0 UTC}
- {2626909200 7200 1 CEST}
- {2645053200 0 0 UTC}
- {2658358800 7200 1 CEST}
- {2676502800 0 0 UTC}
- {2689808400 7200 1 CEST}
- {2708557200 0 0 UTC}
- {2721258000 7200 1 CEST}
- {2740006800 0 0 UTC}
- {2752707600 7200 1 CEST}
- {2771456400 0 0 UTC}
- {2784762000 7200 1 CEST}
- {2802906000 0 0 UTC}
- {2816211600 7200 1 CEST}
- {2834355600 0 0 UTC}
- {2847661200 7200 1 CEST}
- {2866410000 0 0 UTC}
- {2879110800 7200 1 CEST}
- {2897859600 0 0 UTC}
- {2910560400 7200 1 CEST}
- {2929309200 0 0 UTC}
- {2942010000 7200 1 CEST}
- {2960758800 0 0 UTC}
- {2974064400 7200 1 CEST}
- {2992208400 0 0 UTC}
- {3005514000 7200 1 CEST}
- {3023658000 0 0 UTC}
- {3036963600 7200 1 CEST}
- {3055712400 0 0 UTC}
- {3068413200 7200 1 CEST}
- {3087162000 0 0 UTC}
- {3099862800 7200 1 CEST}
- {3118611600 0 0 UTC}
- {3131917200 7200 1 CEST}
- {3150061200 0 0 UTC}
- {3163366800 7200 1 CEST}
- {3181510800 0 0 UTC}
- {3194816400 7200 1 CEST}
- {3212960400 0 0 UTC}
- {3226266000 7200 1 CEST}
- {3245014800 0 0 UTC}
- {3257715600 7200 1 CEST}
- {3276464400 0 0 UTC}
- {3289165200 7200 1 CEST}
- {3307914000 0 0 UTC}
- {3321219600 7200 1 CEST}
- {3339363600 0 0 UTC}
- {3352669200 7200 1 CEST}
- {3370813200 0 0 UTC}
- {3384118800 7200 1 CEST}
- {3402867600 0 0 UTC}
- {3415568400 7200 1 CEST}
- {3434317200 0 0 UTC}
- {3447018000 7200 1 CEST}
- {3465766800 0 0 UTC}
- {3479072400 7200 1 CEST}
- {3497216400 0 0 UTC}
- {3510522000 7200 1 CEST}
- {3528666000 0 0 UTC}
- {3541971600 7200 1 CEST}
- {3560115600 0 0 UTC}
- {3573421200 7200 1 CEST}
- {3592170000 0 0 UTC}
- {3604870800 7200 1 CEST}
- {3623619600 0 0 UTC}
- {3636320400 7200 1 CEST}
- {3655069200 0 0 UTC}
- {3668374800 7200 1 CEST}
- {3686518800 0 0 UTC}
- {3699824400 7200 1 CEST}
- {3717968400 0 0 UTC}
- {3731274000 7200 1 CEST}
- {3750022800 0 0 UTC}
- {3762723600 7200 1 CEST}
- {3781472400 0 0 UTC}
- {3794173200 7200 1 CEST}
- {3812922000 0 0 UTC}
- {3825622800 7200 1 CEST}
- {3844371600 0 0 UTC}
- {3857677200 7200 1 CEST}
- {3875821200 0 0 UTC}
- {3889126800 7200 1 CEST}
- {3907270800 0 0 UTC}
- {3920576400 7200 1 CEST}
- {3939325200 0 0 UTC}
- {3952026000 7200 1 CEST}
- {3970774800 0 0 UTC}
- {3983475600 7200 1 CEST}
- {4002224400 0 0 UTC}
- {4015530000 7200 1 CEST}
- {4033674000 0 0 UTC}
- {4046979600 7200 1 CEST}
- {4065123600 0 0 UTC}
- {4078429200 7200 1 CEST}
- {4096573200 0 0 UTC}
+ {-9223372036854775808 0 0 -00}
+ {1108166400 0 0 +00}
+ {1111885200 7200 1 +02}
+ {1130634000 0 0 +00}
+ {1143334800 7200 1 +02}
+ {1162083600 0 0 +00}
+ {1174784400 7200 1 +02}
+ {1193533200 0 0 +00}
+ {1206838800 7200 1 +02}
+ {1224982800 0 0 +00}
+ {1238288400 7200 1 +02}
+ {1256432400 0 0 +00}
+ {1269738000 7200 1 +02}
+ {1288486800 0 0 +00}
+ {1301187600 7200 1 +02}
+ {1319936400 0 0 +00}
+ {1332637200 7200 1 +02}
+ {1351386000 0 0 +00}
+ {1364691600 7200 1 +02}
+ {1382835600 0 0 +00}
+ {1396141200 7200 1 +02}
+ {1414285200 0 0 +00}
+ {1427590800 7200 1 +02}
+ {1445734800 0 0 +00}
+ {1459040400 7200 1 +02}
+ {1477789200 0 0 +00}
+ {1490490000 7200 1 +02}
+ {1509238800 0 0 +00}
+ {1521939600 7200 1 +02}
+ {1540688400 0 0 +00}
+ {1553994000 7200 1 +02}
+ {1572138000 0 0 +00}
+ {1585443600 7200 1 +02}
+ {1603587600 0 0 +00}
+ {1616893200 7200 1 +02}
+ {1635642000 0 0 +00}
+ {1648342800 7200 1 +02}
+ {1667091600 0 0 +00}
+ {1679792400 7200 1 +02}
+ {1698541200 0 0 +00}
+ {1711846800 7200 1 +02}
+ {1729990800 0 0 +00}
+ {1743296400 7200 1 +02}
+ {1761440400 0 0 +00}
+ {1774746000 7200 1 +02}
+ {1792890000 0 0 +00}
+ {1806195600 7200 1 +02}
+ {1824944400 0 0 +00}
+ {1837645200 7200 1 +02}
+ {1856394000 0 0 +00}
+ {1869094800 7200 1 +02}
+ {1887843600 0 0 +00}
+ {1901149200 7200 1 +02}
+ {1919293200 0 0 +00}
+ {1932598800 7200 1 +02}
+ {1950742800 0 0 +00}
+ {1964048400 7200 1 +02}
+ {1982797200 0 0 +00}
+ {1995498000 7200 1 +02}
+ {2014246800 0 0 +00}
+ {2026947600 7200 1 +02}
+ {2045696400 0 0 +00}
+ {2058397200 7200 1 +02}
+ {2077146000 0 0 +00}
+ {2090451600 7200 1 +02}
+ {2108595600 0 0 +00}
+ {2121901200 7200 1 +02}
+ {2140045200 0 0 +00}
+ {2153350800 7200 1 +02}
+ {2172099600 0 0 +00}
+ {2184800400 7200 1 +02}
+ {2203549200 0 0 +00}
+ {2216250000 7200 1 +02}
+ {2234998800 0 0 +00}
+ {2248304400 7200 1 +02}
+ {2266448400 0 0 +00}
+ {2279754000 7200 1 +02}
+ {2297898000 0 0 +00}
+ {2311203600 7200 1 +02}
+ {2329347600 0 0 +00}
+ {2342653200 7200 1 +02}
+ {2361402000 0 0 +00}
+ {2374102800 7200 1 +02}
+ {2392851600 0 0 +00}
+ {2405552400 7200 1 +02}
+ {2424301200 0 0 +00}
+ {2437606800 7200 1 +02}
+ {2455750800 0 0 +00}
+ {2469056400 7200 1 +02}
+ {2487200400 0 0 +00}
+ {2500506000 7200 1 +02}
+ {2519254800 0 0 +00}
+ {2531955600 7200 1 +02}
+ {2550704400 0 0 +00}
+ {2563405200 7200 1 +02}
+ {2582154000 0 0 +00}
+ {2595459600 7200 1 +02}
+ {2613603600 0 0 +00}
+ {2626909200 7200 1 +02}
+ {2645053200 0 0 +00}
+ {2658358800 7200 1 +02}
+ {2676502800 0 0 +00}
+ {2689808400 7200 1 +02}
+ {2708557200 0 0 +00}
+ {2721258000 7200 1 +02}
+ {2740006800 0 0 +00}
+ {2752707600 7200 1 +02}
+ {2771456400 0 0 +00}
+ {2784762000 7200 1 +02}
+ {2802906000 0 0 +00}
+ {2816211600 7200 1 +02}
+ {2834355600 0 0 +00}
+ {2847661200 7200 1 +02}
+ {2866410000 0 0 +00}
+ {2879110800 7200 1 +02}
+ {2897859600 0 0 +00}
+ {2910560400 7200 1 +02}
+ {2929309200 0 0 +00}
+ {2942010000 7200 1 +02}
+ {2960758800 0 0 +00}
+ {2974064400 7200 1 +02}
+ {2992208400 0 0 +00}
+ {3005514000 7200 1 +02}
+ {3023658000 0 0 +00}
+ {3036963600 7200 1 +02}
+ {3055712400 0 0 +00}
+ {3068413200 7200 1 +02}
+ {3087162000 0 0 +00}
+ {3099862800 7200 1 +02}
+ {3118611600 0 0 +00}
+ {3131917200 7200 1 +02}
+ {3150061200 0 0 +00}
+ {3163366800 7200 1 +02}
+ {3181510800 0 0 +00}
+ {3194816400 7200 1 +02}
+ {3212960400 0 0 +00}
+ {3226266000 7200 1 +02}
+ {3245014800 0 0 +00}
+ {3257715600 7200 1 +02}
+ {3276464400 0 0 +00}
+ {3289165200 7200 1 +02}
+ {3307914000 0 0 +00}
+ {3321219600 7200 1 +02}
+ {3339363600 0 0 +00}
+ {3352669200 7200 1 +02}
+ {3370813200 0 0 +00}
+ {3384118800 7200 1 +02}
+ {3402867600 0 0 +00}
+ {3415568400 7200 1 +02}
+ {3434317200 0 0 +00}
+ {3447018000 7200 1 +02}
+ {3465766800 0 0 +00}
+ {3479072400 7200 1 +02}
+ {3497216400 0 0 +00}
+ {3510522000 7200 1 +02}
+ {3528666000 0 0 +00}
+ {3541971600 7200 1 +02}
+ {3560115600 0 0 +00}
+ {3573421200 7200 1 +02}
+ {3592170000 0 0 +00}
+ {3604870800 7200 1 +02}
+ {3623619600 0 0 +00}
+ {3636320400 7200 1 +02}
+ {3655069200 0 0 +00}
+ {3668374800 7200 1 +02}
+ {3686518800 0 0 +00}
+ {3699824400 7200 1 +02}
+ {3717968400 0 0 +00}
+ {3731274000 7200 1 +02}
+ {3750022800 0 0 +00}
+ {3762723600 7200 1 +02}
+ {3781472400 0 0 +00}
+ {3794173200 7200 1 +02}
+ {3812922000 0 0 +00}
+ {3825622800 7200 1 +02}
+ {3844371600 0 0 +00}
+ {3857677200 7200 1 +02}
+ {3875821200 0 0 +00}
+ {3889126800 7200 1 +02}
+ {3907270800 0 0 +00}
+ {3920576400 7200 1 +02}
+ {3939325200 0 0 +00}
+ {3952026000 7200 1 +02}
+ {3970774800 0 0 +00}
+ {3983475600 7200 1 +02}
+ {4002224400 0 0 +00}
+ {4015530000 7200 1 +02}
+ {4033674000 0 0 +00}
+ {4046979600 7200 1 +02}
+ {4065123600 0 0 +00}
+ {4078429200 7200 1 +02}
+ {4096573200 0 0 +00}
}
diff --git a/library/tzdata/Antarctica/Vostok b/library/tzdata/Antarctica/Vostok
index f846f65..7f345a2 100644
--- a/library/tzdata/Antarctica/Vostok
+++ b/library/tzdata/Antarctica/Vostok
@@ -1,6 +1,6 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Antarctica/Vostok) {
- {-9223372036854775808 0 0 zzz}
- {-380073600 21600 0 VOST}
+ {-9223372036854775808 0 0 -00}
+ {-380073600 21600 0 +06}
}
diff --git a/library/tzdata/Asia/Anadyr b/library/tzdata/Asia/Anadyr
index 2e8ffc7..d1314c6 100644
--- a/library/tzdata/Asia/Anadyr
+++ b/library/tzdata/Asia/Anadyr
@@ -2,71 +2,71 @@
set TZData(:Asia/Anadyr) {
{-9223372036854775808 42596 0 LMT}
- {-1441194596 43200 0 ANAT}
- {-1247572800 46800 0 ANAMMTT}
- {354884400 50400 1 ANAST}
- {370692000 46800 0 ANAT}
- {386420400 43200 0 ANAMMTT}
- {386424000 46800 1 ANAST}
- {402231600 43200 0 ANAT}
- {417960000 46800 1 ANAST}
- {433767600 43200 0 ANAT}
- {449582400 46800 1 ANAST}
- {465314400 43200 0 ANAT}
- {481039200 46800 1 ANAST}
- {496764000 43200 0 ANAT}
- {512488800 46800 1 ANAST}
- {528213600 43200 0 ANAT}
- {543938400 46800 1 ANAST}
- {559663200 43200 0 ANAT}
- {575388000 46800 1 ANAST}
- {591112800 43200 0 ANAT}
- {606837600 46800 1 ANAST}
- {622562400 43200 0 ANAT}
- {638287200 46800 1 ANAST}
- {654616800 43200 0 ANAT}
- {670341600 39600 0 ANAMMTT}
- {670345200 43200 1 ANAST}
- {686070000 39600 0 ANAT}
- {695746800 43200 0 ANAMMTT}
- {701791200 46800 1 ANAST}
- {717516000 43200 0 ANAT}
- {733240800 46800 1 ANAST}
- {748965600 43200 0 ANAT}
- {764690400 46800 1 ANAST}
- {780415200 43200 0 ANAT}
- {796140000 46800 1 ANAST}
- {811864800 43200 0 ANAT}
- {828194400 46800 1 ANAST}
- {846338400 43200 0 ANAT}
- {859644000 46800 1 ANAST}
- {877788000 43200 0 ANAT}
- {891093600 46800 1 ANAST}
- {909237600 43200 0 ANAT}
- {922543200 46800 1 ANAST}
- {941292000 43200 0 ANAT}
- {953992800 46800 1 ANAST}
- {972741600 43200 0 ANAT}
- {985442400 46800 1 ANAST}
- {1004191200 43200 0 ANAT}
- {1017496800 46800 1 ANAST}
- {1035640800 43200 0 ANAT}
- {1048946400 46800 1 ANAST}
- {1067090400 43200 0 ANAT}
- {1080396000 46800 1 ANAST}
- {1099144800 43200 0 ANAT}
- {1111845600 46800 1 ANAST}
- {1130594400 43200 0 ANAT}
- {1143295200 46800 1 ANAST}
- {1162044000 43200 0 ANAT}
- {1174744800 46800 1 ANAST}
- {1193493600 43200 0 ANAT}
- {1206799200 46800 1 ANAST}
- {1224943200 43200 0 ANAT}
- {1238248800 46800 1 ANAST}
- {1256392800 43200 0 ANAT}
- {1269698400 39600 0 ANAMMTT}
- {1269702000 43200 1 ANAST}
- {1288450800 39600 0 ANAT}
- {1301151600 43200 0 ANAT}
+ {-1441194596 43200 0 +12}
+ {-1247572800 46800 0 +14}
+ {354884400 50400 1 +14}
+ {370692000 46800 0 +13}
+ {386420400 43200 0 +13}
+ {386424000 46800 1 +13}
+ {402231600 43200 0 +12}
+ {417960000 46800 1 +13}
+ {433767600 43200 0 +12}
+ {449582400 46800 1 +13}
+ {465314400 43200 0 +12}
+ {481039200 46800 1 +13}
+ {496764000 43200 0 +12}
+ {512488800 46800 1 +13}
+ {528213600 43200 0 +12}
+ {543938400 46800 1 +13}
+ {559663200 43200 0 +12}
+ {575388000 46800 1 +13}
+ {591112800 43200 0 +12}
+ {606837600 46800 1 +13}
+ {622562400 43200 0 +12}
+ {638287200 46800 1 +13}
+ {654616800 43200 0 +12}
+ {670341600 39600 0 +12}
+ {670345200 43200 1 +12}
+ {686070000 39600 0 +11}
+ {695746800 43200 0 +13}
+ {701791200 46800 1 +13}
+ {717516000 43200 0 +12}
+ {733240800 46800 1 +13}
+ {748965600 43200 0 +12}
+ {764690400 46800 1 +13}
+ {780415200 43200 0 +12}
+ {796140000 46800 1 +13}
+ {811864800 43200 0 +12}
+ {828194400 46800 1 +13}
+ {846338400 43200 0 +12}
+ {859644000 46800 1 +13}
+ {877788000 43200 0 +12}
+ {891093600 46800 1 +13}
+ {909237600 43200 0 +12}
+ {922543200 46800 1 +13}
+ {941292000 43200 0 +12}
+ {953992800 46800 1 +13}
+ {972741600 43200 0 +12}
+ {985442400 46800 1 +13}
+ {1004191200 43200 0 +12}
+ {1017496800 46800 1 +13}
+ {1035640800 43200 0 +12}
+ {1048946400 46800 1 +13}
+ {1067090400 43200 0 +12}
+ {1080396000 46800 1 +13}
+ {1099144800 43200 0 +12}
+ {1111845600 46800 1 +13}
+ {1130594400 43200 0 +12}
+ {1143295200 46800 1 +13}
+ {1162044000 43200 0 +12}
+ {1174744800 46800 1 +13}
+ {1193493600 43200 0 +12}
+ {1206799200 46800 1 +13}
+ {1224943200 43200 0 +12}
+ {1238248800 46800 1 +13}
+ {1256392800 43200 0 +12}
+ {1269698400 39600 0 +12}
+ {1269702000 43200 1 +12}
+ {1288450800 39600 0 +11}
+ {1301151600 43200 0 +12}
}
diff --git a/library/tzdata/Asia/Ashgabat b/library/tzdata/Asia/Ashgabat
index 64bdb3a..fa6a619 100644
--- a/library/tzdata/Asia/Ashgabat
+++ b/library/tzdata/Asia/Ashgabat
@@ -2,30 +2,30 @@
set TZData(:Asia/Ashgabat) {
{-9223372036854775808 14012 0 LMT}
- {-1441166012 14400 0 ASHT}
- {-1247544000 18000 0 ASHT}
- {354913200 21600 1 ASHST}
- {370720800 18000 0 ASHT}
- {386449200 21600 1 ASHST}
- {402256800 18000 0 ASHT}
- {417985200 21600 1 ASHST}
- {433792800 18000 0 ASHT}
- {449607600 21600 1 ASHST}
- {465339600 18000 0 ASHT}
- {481064400 21600 1 ASHST}
- {496789200 18000 0 ASHT}
- {512514000 21600 1 ASHST}
- {528238800 18000 0 ASHT}
- {543963600 21600 1 ASHST}
- {559688400 18000 0 ASHT}
- {575413200 21600 1 ASHST}
- {591138000 18000 0 ASHT}
- {606862800 21600 1 ASHST}
- {622587600 18000 0 ASHT}
- {638312400 21600 1 ASHST}
- {654642000 18000 0 ASHT}
- {670366800 14400 0 ASHT}
- {670370400 18000 1 ASHST}
- {686095200 14400 0 ASHT}
- {695772000 18000 0 TMT}
+ {-1441166012 14400 0 +04}
+ {-1247544000 18000 0 +05}
+ {354913200 21600 1 +06}
+ {370720800 18000 0 +05}
+ {386449200 21600 1 +06}
+ {402256800 18000 0 +05}
+ {417985200 21600 1 +06}
+ {433792800 18000 0 +05}
+ {449607600 21600 1 +06}
+ {465339600 18000 0 +05}
+ {481064400 21600 1 +06}
+ {496789200 18000 0 +05}
+ {512514000 21600 1 +06}
+ {528238800 18000 0 +05}
+ {543963600 21600 1 +06}
+ {559688400 18000 0 +05}
+ {575413200 21600 1 +06}
+ {591138000 18000 0 +05}
+ {606862800 21600 1 +06}
+ {622587600 18000 0 +05}
+ {638312400 21600 1 +06}
+ {654642000 18000 0 +05}
+ {670366800 14400 0 +04}
+ {670370400 18000 1 +05}
+ {686095200 14400 0 +04}
+ {695772000 18000 0 +05}
}
diff --git a/library/tzdata/Asia/Baku b/library/tzdata/Asia/Baku
index bc0701a..f945b89 100644
--- a/library/tzdata/Asia/Baku
+++ b/library/tzdata/Asia/Baku
@@ -2,73 +2,73 @@
set TZData(:Asia/Baku) {
{-9223372036854775808 11964 0 LMT}
- {-1441163964 10800 0 BAKT}
- {-405140400 14400 0 BAKT}
- {354916800 18000 1 BAKST}
- {370724400 14400 0 BAKT}
- {386452800 18000 1 BAKST}
- {402260400 14400 0 BAKT}
- {417988800 18000 1 BAKST}
- {433796400 14400 0 BAKT}
- {449611200 18000 1 BAKST}
- {465343200 14400 0 BAKT}
- {481068000 18000 1 BAKST}
- {496792800 14400 0 BAKT}
- {512517600 18000 1 BAKST}
- {528242400 14400 0 BAKT}
- {543967200 18000 1 BAKST}
- {559692000 14400 0 BAKT}
- {575416800 18000 1 BAKST}
- {591141600 14400 0 BAKT}
- {606866400 18000 1 BAKST}
- {622591200 14400 0 BAKT}
- {638316000 18000 1 BAKST}
- {654645600 14400 0 BAKT}
- {670370400 14400 1 BAKST}
- {683496000 14400 0 AZST}
- {686098800 10800 0 AZT}
- {701823600 14400 1 AZST}
- {717537600 14400 0 AZT}
- {820440000 14400 0 AZT}
- {828234000 18000 1 AZST}
- {846378000 14400 0 AZT}
- {852062400 14400 0 AZT}
- {859680000 18000 1 AZST}
- {877824000 14400 0 AZT}
- {891129600 18000 1 AZST}
- {909273600 14400 0 AZT}
- {922579200 18000 1 AZST}
- {941328000 14400 0 AZT}
- {954028800 18000 1 AZST}
- {972777600 14400 0 AZT}
- {985478400 18000 1 AZST}
- {1004227200 14400 0 AZT}
- {1017532800 18000 1 AZST}
- {1035676800 14400 0 AZT}
- {1048982400 18000 1 AZST}
- {1067126400 14400 0 AZT}
- {1080432000 18000 1 AZST}
- {1099180800 14400 0 AZT}
- {1111881600 18000 1 AZST}
- {1130630400 14400 0 AZT}
- {1143331200 18000 1 AZST}
- {1162080000 14400 0 AZT}
- {1174780800 18000 1 AZST}
- {1193529600 14400 0 AZT}
- {1206835200 18000 1 AZST}
- {1224979200 14400 0 AZT}
- {1238284800 18000 1 AZST}
- {1256428800 14400 0 AZT}
- {1269734400 18000 1 AZST}
- {1288483200 14400 0 AZT}
- {1301184000 18000 1 AZST}
- {1319932800 14400 0 AZT}
- {1332633600 18000 1 AZST}
- {1351382400 14400 0 AZT}
- {1364688000 18000 1 AZST}
- {1382832000 14400 0 AZT}
- {1396137600 18000 1 AZST}
- {1414281600 14400 0 AZT}
- {1427587200 18000 1 AZST}
- {1445731200 14400 0 AZT}
+ {-1441163964 10800 0 +03}
+ {-405140400 14400 0 +04}
+ {354916800 18000 1 +05}
+ {370724400 14400 0 +04}
+ {386452800 18000 1 +05}
+ {402260400 14400 0 +04}
+ {417988800 18000 1 +05}
+ {433796400 14400 0 +04}
+ {449611200 18000 1 +05}
+ {465343200 14400 0 +04}
+ {481068000 18000 1 +05}
+ {496792800 14400 0 +04}
+ {512517600 18000 1 +05}
+ {528242400 14400 0 +04}
+ {543967200 18000 1 +05}
+ {559692000 14400 0 +04}
+ {575416800 18000 1 +05}
+ {591141600 14400 0 +04}
+ {606866400 18000 1 +05}
+ {622591200 14400 0 +04}
+ {638316000 18000 1 +05}
+ {654645600 14400 0 +04}
+ {670370400 10800 0 +03}
+ {670374000 14400 1 +04}
+ {686098800 10800 0 +03}
+ {701823600 14400 1 +04}
+ {717548400 14400 0 +04}
+ {820440000 14400 0 +04}
+ {828234000 18000 1 +05}
+ {846378000 14400 0 +04}
+ {852062400 14400 0 +04}
+ {859680000 18000 1 +05}
+ {877824000 14400 0 +04}
+ {891129600 18000 1 +05}
+ {909273600 14400 0 +04}
+ {922579200 18000 1 +05}
+ {941328000 14400 0 +04}
+ {954028800 18000 1 +05}
+ {972777600 14400 0 +04}
+ {985478400 18000 1 +05}
+ {1004227200 14400 0 +04}
+ {1017532800 18000 1 +05}
+ {1035676800 14400 0 +04}
+ {1048982400 18000 1 +05}
+ {1067126400 14400 0 +04}
+ {1080432000 18000 1 +05}
+ {1099180800 14400 0 +04}
+ {1111881600 18000 1 +05}
+ {1130630400 14400 0 +04}
+ {1143331200 18000 1 +05}
+ {1162080000 14400 0 +04}
+ {1174780800 18000 1 +05}
+ {1193529600 14400 0 +04}
+ {1206835200 18000 1 +05}
+ {1224979200 14400 0 +04}
+ {1238284800 18000 1 +05}
+ {1256428800 14400 0 +04}
+ {1269734400 18000 1 +05}
+ {1288483200 14400 0 +04}
+ {1301184000 18000 1 +05}
+ {1319932800 14400 0 +04}
+ {1332633600 18000 1 +05}
+ {1351382400 14400 0 +04}
+ {1364688000 18000 1 +05}
+ {1382832000 14400 0 +04}
+ {1396137600 18000 1 +05}
+ {1414281600 14400 0 +04}
+ {1427587200 18000 1 +05}
+ {1445731200 14400 0 +04}
}
diff --git a/library/tzdata/Asia/Bishkek b/library/tzdata/Asia/Bishkek
index 6ba3896..a02d789 100644
--- a/library/tzdata/Asia/Bishkek
+++ b/library/tzdata/Asia/Bishkek
@@ -2,56 +2,57 @@
set TZData(:Asia/Bishkek) {
{-9223372036854775808 17904 0 LMT}
- {-1441169904 18000 0 FRUT}
- {-1247547600 21600 0 FRUT}
- {354909600 25200 1 FRUST}
- {370717200 21600 0 FRUT}
- {386445600 25200 1 FRUST}
- {402253200 21600 0 FRUT}
- {417981600 25200 1 FRUST}
- {433789200 21600 0 FRUT}
- {449604000 25200 1 FRUST}
- {465336000 21600 0 FRUT}
- {481060800 25200 1 FRUST}
- {496785600 21600 0 FRUT}
- {512510400 25200 1 FRUST}
- {528235200 21600 0 FRUT}
- {543960000 25200 1 FRUST}
- {559684800 21600 0 FRUT}
- {575409600 25200 1 FRUST}
- {591134400 21600 0 FRUT}
- {606859200 25200 1 FRUST}
- {622584000 21600 0 FRUT}
- {638308800 25200 1 FRUST}
- {654638400 21600 0 FRUT}
- {670363200 21600 1 FRUST}
- {683582400 21600 0 KGT}
- {703018800 21600 1 KGST}
- {717530400 18000 0 KGT}
- {734468400 21600 1 KGST}
- {748980000 18000 0 KGT}
- {765918000 21600 1 KGST}
- {780429600 18000 0 KGT}
- {797367600 21600 1 KGST}
- {811879200 18000 0 KGT}
- {828817200 21600 1 KGST}
- {843933600 18000 0 KGT}
- {859671000 21600 1 KGST}
- {877811400 18000 0 KGT}
- {891120600 21600 1 KGST}
- {909261000 18000 0 KGT}
- {922570200 21600 1 KGST}
- {941315400 18000 0 KGT}
- {954019800 21600 1 KGST}
- {972765000 18000 0 KGT}
- {985469400 21600 1 KGST}
- {1004214600 18000 0 KGT}
- {1017523800 21600 1 KGST}
- {1035664200 18000 0 KGT}
- {1048973400 21600 1 KGST}
- {1067113800 18000 0 KGT}
- {1080423000 21600 1 KGST}
- {1099168200 18000 0 KGT}
- {1111872600 21600 1 KGST}
- {1123783200 21600 0 KGT}
+ {-1441169904 18000 0 +05}
+ {-1247547600 21600 0 +06}
+ {354909600 25200 1 +07}
+ {370717200 21600 0 +06}
+ {386445600 25200 1 +07}
+ {402253200 21600 0 +06}
+ {417981600 25200 1 +07}
+ {433789200 21600 0 +06}
+ {449604000 25200 1 +07}
+ {465336000 21600 0 +06}
+ {481060800 25200 1 +07}
+ {496785600 21600 0 +06}
+ {512510400 25200 1 +07}
+ {528235200 21600 0 +06}
+ {543960000 25200 1 +07}
+ {559684800 21600 0 +06}
+ {575409600 25200 1 +07}
+ {591134400 21600 0 +06}
+ {606859200 25200 1 +07}
+ {622584000 21600 0 +06}
+ {638308800 25200 1 +07}
+ {654638400 21600 0 +06}
+ {670363200 18000 0 +05}
+ {670366800 21600 1 +06}
+ {683586000 18000 0 +05}
+ {703018800 21600 1 +06}
+ {717530400 18000 0 +05}
+ {734468400 21600 1 +06}
+ {748980000 18000 0 +05}
+ {765918000 21600 1 +06}
+ {780429600 18000 0 +05}
+ {797367600 21600 1 +06}
+ {811879200 18000 0 +05}
+ {828817200 21600 1 +06}
+ {843933600 18000 0 +05}
+ {859671000 21600 1 +06}
+ {877811400 18000 0 +05}
+ {891120600 21600 1 +06}
+ {909261000 18000 0 +05}
+ {922570200 21600 1 +06}
+ {941315400 18000 0 +05}
+ {954019800 21600 1 +06}
+ {972765000 18000 0 +05}
+ {985469400 21600 1 +06}
+ {1004214600 18000 0 +05}
+ {1017523800 21600 1 +06}
+ {1035664200 18000 0 +05}
+ {1048973400 21600 1 +06}
+ {1067113800 18000 0 +05}
+ {1080423000 21600 1 +06}
+ {1099168200 18000 0 +05}
+ {1111872600 21600 1 +06}
+ {1123783200 21600 0 +06}
}
diff --git a/library/tzdata/Asia/Chita b/library/tzdata/Asia/Chita
index 2517beb..279c016 100644
--- a/library/tzdata/Asia/Chita
+++ b/library/tzdata/Asia/Chita
@@ -2,71 +2,71 @@
set TZData(:Asia/Chita) {
{-9223372036854775808 27232 0 LMT}
- {-1579419232 28800 0 YAKT}
- {-1247558400 32400 0 YAKMMTT}
- {354898800 36000 1 YAKST}
- {370706400 32400 0 YAKT}
- {386434800 36000 1 YAKST}
- {402242400 32400 0 YAKT}
- {417970800 36000 1 YAKST}
- {433778400 32400 0 YAKT}
- {449593200 36000 1 YAKST}
- {465325200 32400 0 YAKT}
- {481050000 36000 1 YAKST}
- {496774800 32400 0 YAKT}
- {512499600 36000 1 YAKST}
- {528224400 32400 0 YAKT}
- {543949200 36000 1 YAKST}
- {559674000 32400 0 YAKT}
- {575398800 36000 1 YAKST}
- {591123600 32400 0 YAKT}
- {606848400 36000 1 YAKST}
- {622573200 32400 0 YAKT}
- {638298000 36000 1 YAKST}
- {654627600 32400 0 YAKT}
- {670352400 28800 0 YAKMMTT}
- {670356000 32400 1 YAKST}
- {686080800 28800 0 YAKT}
- {695757600 32400 0 YAKMMTT}
- {701802000 36000 1 YAKST}
- {717526800 32400 0 YAKT}
- {733251600 36000 1 YAKST}
- {748976400 32400 0 YAKT}
- {764701200 36000 1 YAKST}
- {780426000 32400 0 YAKT}
- {796150800 36000 1 YAKST}
- {811875600 32400 0 YAKT}
- {828205200 36000 1 YAKST}
- {846349200 32400 0 YAKT}
- {859654800 36000 1 YAKST}
- {877798800 32400 0 YAKT}
- {891104400 36000 1 YAKST}
- {909248400 32400 0 YAKT}
- {922554000 36000 1 YAKST}
- {941302800 32400 0 YAKT}
- {954003600 36000 1 YAKST}
- {972752400 32400 0 YAKT}
- {985453200 36000 1 YAKST}
- {1004202000 32400 0 YAKT}
- {1017507600 36000 1 YAKST}
- {1035651600 32400 0 YAKT}
- {1048957200 36000 1 YAKST}
- {1067101200 32400 0 YAKT}
- {1080406800 36000 1 YAKST}
- {1099155600 32400 0 YAKT}
- {1111856400 36000 1 YAKST}
- {1130605200 32400 0 YAKT}
- {1143306000 36000 1 YAKST}
- {1162054800 32400 0 YAKT}
- {1174755600 36000 1 YAKST}
- {1193504400 32400 0 YAKT}
- {1206810000 36000 1 YAKST}
- {1224954000 32400 0 YAKT}
- {1238259600 36000 1 YAKST}
- {1256403600 32400 0 YAKT}
- {1269709200 36000 1 YAKST}
- {1288458000 32400 0 YAKT}
- {1301158800 36000 0 YAKT}
- {1414252800 28800 0 IRKT}
- {1459015200 32400 0 YAKT}
+ {-1579419232 28800 0 +08}
+ {-1247558400 32400 0 +10}
+ {354898800 36000 1 +10}
+ {370706400 32400 0 +09}
+ {386434800 36000 1 +10}
+ {402242400 32400 0 +09}
+ {417970800 36000 1 +10}
+ {433778400 32400 0 +09}
+ {449593200 36000 1 +10}
+ {465325200 32400 0 +09}
+ {481050000 36000 1 +10}
+ {496774800 32400 0 +09}
+ {512499600 36000 1 +10}
+ {528224400 32400 0 +09}
+ {543949200 36000 1 +10}
+ {559674000 32400 0 +09}
+ {575398800 36000 1 +10}
+ {591123600 32400 0 +09}
+ {606848400 36000 1 +10}
+ {622573200 32400 0 +09}
+ {638298000 36000 1 +10}
+ {654627600 32400 0 +09}
+ {670352400 28800 0 +09}
+ {670356000 32400 1 +09}
+ {686080800 28800 0 +08}
+ {695757600 32400 0 +10}
+ {701802000 36000 1 +10}
+ {717526800 32400 0 +09}
+ {733251600 36000 1 +10}
+ {748976400 32400 0 +09}
+ {764701200 36000 1 +10}
+ {780426000 32400 0 +09}
+ {796150800 36000 1 +10}
+ {811875600 32400 0 +09}
+ {828205200 36000 1 +10}
+ {846349200 32400 0 +09}
+ {859654800 36000 1 +10}
+ {877798800 32400 0 +09}
+ {891104400 36000 1 +10}
+ {909248400 32400 0 +09}
+ {922554000 36000 1 +10}
+ {941302800 32400 0 +09}
+ {954003600 36000 1 +10}
+ {972752400 32400 0 +09}
+ {985453200 36000 1 +10}
+ {1004202000 32400 0 +09}
+ {1017507600 36000 1 +10}
+ {1035651600 32400 0 +09}
+ {1048957200 36000 1 +10}
+ {1067101200 32400 0 +09}
+ {1080406800 36000 1 +10}
+ {1099155600 32400 0 +09}
+ {1111856400 36000 1 +10}
+ {1130605200 32400 0 +09}
+ {1143306000 36000 1 +10}
+ {1162054800 32400 0 +09}
+ {1174755600 36000 1 +10}
+ {1193504400 32400 0 +09}
+ {1206810000 36000 1 +10}
+ {1224954000 32400 0 +09}
+ {1238259600 36000 1 +10}
+ {1256403600 32400 0 +09}
+ {1269709200 36000 1 +10}
+ {1288458000 32400 0 +09}
+ {1301158800 36000 0 +10}
+ {1414252800 28800 0 +08}
+ {1459015200 32400 0 +09}
}
diff --git a/library/tzdata/Asia/Dushanbe b/library/tzdata/Asia/Dushanbe
index 59f8cb6..e9ed132 100644
--- a/library/tzdata/Asia/Dushanbe
+++ b/library/tzdata/Asia/Dushanbe
@@ -2,28 +2,28 @@
set TZData(:Asia/Dushanbe) {
{-9223372036854775808 16512 0 LMT}
- {-1441168512 18000 0 DUST}
- {-1247547600 21600 0 DUST}
- {354909600 25200 1 DUSST}
- {370717200 21600 0 DUST}
- {386445600 25200 1 DUSST}
- {402253200 21600 0 DUST}
- {417981600 25200 1 DUSST}
- {433789200 21600 0 DUST}
- {449604000 25200 1 DUSST}
- {465336000 21600 0 DUST}
- {481060800 25200 1 DUSST}
- {496785600 21600 0 DUST}
- {512510400 25200 1 DUSST}
- {528235200 21600 0 DUST}
- {543960000 25200 1 DUSST}
- {559684800 21600 0 DUST}
- {575409600 25200 1 DUSST}
- {591134400 21600 0 DUST}
- {606859200 25200 1 DUSST}
- {622584000 21600 0 DUST}
- {638308800 25200 1 DUSST}
- {654638400 21600 0 DUST}
- {670363200 21600 1 DUSST}
- {684363600 18000 0 TJT}
+ {-1441168512 18000 0 +05}
+ {-1247547600 21600 0 +06}
+ {354909600 25200 1 +07}
+ {370717200 21600 0 +06}
+ {386445600 25200 1 +07}
+ {402253200 21600 0 +06}
+ {417981600 25200 1 +07}
+ {433789200 21600 0 +06}
+ {449604000 25200 1 +07}
+ {465336000 21600 0 +06}
+ {481060800 25200 1 +07}
+ {496785600 21600 0 +06}
+ {512510400 25200 1 +07}
+ {528235200 21600 0 +06}
+ {543960000 25200 1 +07}
+ {559684800 21600 0 +06}
+ {575409600 25200 1 +07}
+ {591134400 21600 0 +06}
+ {606859200 25200 1 +07}
+ {622584000 21600 0 +06}
+ {638308800 25200 1 +07}
+ {654638400 21600 0 +06}
+ {670363200 21600 1 +06}
+ {684363600 18000 0 +05}
}
diff --git a/library/tzdata/Asia/Irkutsk b/library/tzdata/Asia/Irkutsk
index ebe00c3..9666969 100644
--- a/library/tzdata/Asia/Irkutsk
+++ b/library/tzdata/Asia/Irkutsk
@@ -3,70 +3,70 @@
set TZData(:Asia/Irkutsk) {
{-9223372036854775808 25025 0 LMT}
{-2840165825 25025 0 IMT}
- {-1575874625 25200 0 IRKT}
- {-1247554800 28800 0 IRKMMTT}
- {354902400 32400 1 IRKST}
- {370710000 28800 0 IRKT}
- {386438400 32400 1 IRKST}
- {402246000 28800 0 IRKT}
- {417974400 32400 1 IRKST}
- {433782000 28800 0 IRKT}
- {449596800 32400 1 IRKST}
- {465328800 28800 0 IRKT}
- {481053600 32400 1 IRKST}
- {496778400 28800 0 IRKT}
- {512503200 32400 1 IRKST}
- {528228000 28800 0 IRKT}
- {543952800 32400 1 IRKST}
- {559677600 28800 0 IRKT}
- {575402400 32400 1 IRKST}
- {591127200 28800 0 IRKT}
- {606852000 32400 1 IRKST}
- {622576800 28800 0 IRKT}
- {638301600 32400 1 IRKST}
- {654631200 28800 0 IRKT}
- {670356000 25200 0 IRKMMTT}
- {670359600 28800 1 IRKST}
- {686084400 25200 0 IRKT}
- {695761200 28800 0 IRKMMTT}
- {701805600 32400 1 IRKST}
- {717530400 28800 0 IRKT}
- {733255200 32400 1 IRKST}
- {748980000 28800 0 IRKT}
- {764704800 32400 1 IRKST}
- {780429600 28800 0 IRKT}
- {796154400 32400 1 IRKST}
- {811879200 28800 0 IRKT}
- {828208800 32400 1 IRKST}
- {846352800 28800 0 IRKT}
- {859658400 32400 1 IRKST}
- {877802400 28800 0 IRKT}
- {891108000 32400 1 IRKST}
- {909252000 28800 0 IRKT}
- {922557600 32400 1 IRKST}
- {941306400 28800 0 IRKT}
- {954007200 32400 1 IRKST}
- {972756000 28800 0 IRKT}
- {985456800 32400 1 IRKST}
- {1004205600 28800 0 IRKT}
- {1017511200 32400 1 IRKST}
- {1035655200 28800 0 IRKT}
- {1048960800 32400 1 IRKST}
- {1067104800 28800 0 IRKT}
- {1080410400 32400 1 IRKST}
- {1099159200 28800 0 IRKT}
- {1111860000 32400 1 IRKST}
- {1130608800 28800 0 IRKT}
- {1143309600 32400 1 IRKST}
- {1162058400 28800 0 IRKT}
- {1174759200 32400 1 IRKST}
- {1193508000 28800 0 IRKT}
- {1206813600 32400 1 IRKST}
- {1224957600 28800 0 IRKT}
- {1238263200 32400 1 IRKST}
- {1256407200 28800 0 IRKT}
- {1269712800 32400 1 IRKST}
- {1288461600 28800 0 IRKT}
- {1301162400 32400 0 IRKT}
- {1414256400 28800 0 IRKT}
+ {-1575874625 25200 0 +07}
+ {-1247554800 28800 0 +09}
+ {354902400 32400 1 +09}
+ {370710000 28800 0 +08}
+ {386438400 32400 1 +09}
+ {402246000 28800 0 +08}
+ {417974400 32400 1 +09}
+ {433782000 28800 0 +08}
+ {449596800 32400 1 +09}
+ {465328800 28800 0 +08}
+ {481053600 32400 1 +09}
+ {496778400 28800 0 +08}
+ {512503200 32400 1 +09}
+ {528228000 28800 0 +08}
+ {543952800 32400 1 +09}
+ {559677600 28800 0 +08}
+ {575402400 32400 1 +09}
+ {591127200 28800 0 +08}
+ {606852000 32400 1 +09}
+ {622576800 28800 0 +08}
+ {638301600 32400 1 +09}
+ {654631200 28800 0 +08}
+ {670356000 25200 0 +08}
+ {670359600 28800 1 +08}
+ {686084400 25200 0 +07}
+ {695761200 28800 0 +09}
+ {701805600 32400 1 +09}
+ {717530400 28800 0 +08}
+ {733255200 32400 1 +09}
+ {748980000 28800 0 +08}
+ {764704800 32400 1 +09}
+ {780429600 28800 0 +08}
+ {796154400 32400 1 +09}
+ {811879200 28800 0 +08}
+ {828208800 32400 1 +09}
+ {846352800 28800 0 +08}
+ {859658400 32400 1 +09}
+ {877802400 28800 0 +08}
+ {891108000 32400 1 +09}
+ {909252000 28800 0 +08}
+ {922557600 32400 1 +09}
+ {941306400 28800 0 +08}
+ {954007200 32400 1 +09}
+ {972756000 28800 0 +08}
+ {985456800 32400 1 +09}
+ {1004205600 28800 0 +08}
+ {1017511200 32400 1 +09}
+ {1035655200 28800 0 +08}
+ {1048960800 32400 1 +09}
+ {1067104800 28800 0 +08}
+ {1080410400 32400 1 +09}
+ {1099159200 28800 0 +08}
+ {1111860000 32400 1 +09}
+ {1130608800 28800 0 +08}
+ {1143309600 32400 1 +09}
+ {1162058400 28800 0 +08}
+ {1174759200 32400 1 +09}
+ {1193508000 28800 0 +08}
+ {1206813600 32400 1 +09}
+ {1224957600 28800 0 +08}
+ {1238263200 32400 1 +09}
+ {1256407200 28800 0 +08}
+ {1269712800 32400 1 +09}
+ {1288461600 28800 0 +08}
+ {1301162400 32400 0 +09}
+ {1414256400 28800 0 +08}
}
diff --git a/library/tzdata/Asia/Kamchatka b/library/tzdata/Asia/Kamchatka
index 2b77154..818fc2d 100644
--- a/library/tzdata/Asia/Kamchatka
+++ b/library/tzdata/Asia/Kamchatka
@@ -2,70 +2,70 @@
set TZData(:Asia/Kamchatka) {
{-9223372036854775808 38076 0 LMT}
- {-1487759676 39600 0 PETT}
- {-1247569200 43200 0 PETMMTT}
- {354888000 46800 1 PETST}
- {370695600 43200 0 PETT}
- {386424000 46800 1 PETST}
- {402231600 43200 0 PETT}
- {417960000 46800 1 PETST}
- {433767600 43200 0 PETT}
- {449582400 46800 1 PETST}
- {465314400 43200 0 PETT}
- {481039200 46800 1 PETST}
- {496764000 43200 0 PETT}
- {512488800 46800 1 PETST}
- {528213600 43200 0 PETT}
- {543938400 46800 1 PETST}
- {559663200 43200 0 PETT}
- {575388000 46800 1 PETST}
- {591112800 43200 0 PETT}
- {606837600 46800 1 PETST}
- {622562400 43200 0 PETT}
- {638287200 46800 1 PETST}
- {654616800 43200 0 PETT}
- {670341600 39600 0 PETMMTT}
- {670345200 43200 1 PETST}
- {686070000 39600 0 PETT}
- {695746800 43200 0 PETMMTT}
- {701791200 46800 1 PETST}
- {717516000 43200 0 PETT}
- {733240800 46800 1 PETST}
- {748965600 43200 0 PETT}
- {764690400 46800 1 PETST}
- {780415200 43200 0 PETT}
- {796140000 46800 1 PETST}
- {811864800 43200 0 PETT}
- {828194400 46800 1 PETST}
- {846338400 43200 0 PETT}
- {859644000 46800 1 PETST}
- {877788000 43200 0 PETT}
- {891093600 46800 1 PETST}
- {909237600 43200 0 PETT}
- {922543200 46800 1 PETST}
- {941292000 43200 0 PETT}
- {953992800 46800 1 PETST}
- {972741600 43200 0 PETT}
- {985442400 46800 1 PETST}
- {1004191200 43200 0 PETT}
- {1017496800 46800 1 PETST}
- {1035640800 43200 0 PETT}
- {1048946400 46800 1 PETST}
- {1067090400 43200 0 PETT}
- {1080396000 46800 1 PETST}
- {1099144800 43200 0 PETT}
- {1111845600 46800 1 PETST}
- {1130594400 43200 0 PETT}
- {1143295200 46800 1 PETST}
- {1162044000 43200 0 PETT}
- {1174744800 46800 1 PETST}
- {1193493600 43200 0 PETT}
- {1206799200 46800 1 PETST}
- {1224943200 43200 0 PETT}
- {1238248800 46800 1 PETST}
- {1256392800 43200 0 PETT}
- {1269698400 39600 0 PETMMTT}
- {1269702000 43200 1 PETST}
- {1288450800 39600 0 PETT}
- {1301151600 43200 0 PETT}
+ {-1487759676 39600 0 +11}
+ {-1247569200 43200 0 +13}
+ {354888000 46800 1 +13}
+ {370695600 43200 0 +12}
+ {386424000 46800 1 +13}
+ {402231600 43200 0 +12}
+ {417960000 46800 1 +13}
+ {433767600 43200 0 +12}
+ {449582400 46800 1 +13}
+ {465314400 43200 0 +12}
+ {481039200 46800 1 +13}
+ {496764000 43200 0 +12}
+ {512488800 46800 1 +13}
+ {528213600 43200 0 +12}
+ {543938400 46800 1 +13}
+ {559663200 43200 0 +12}
+ {575388000 46800 1 +13}
+ {591112800 43200 0 +12}
+ {606837600 46800 1 +13}
+ {622562400 43200 0 +12}
+ {638287200 46800 1 +13}
+ {654616800 43200 0 +12}
+ {670341600 39600 0 +12}
+ {670345200 43200 1 +12}
+ {686070000 39600 0 +11}
+ {695746800 43200 0 +13}
+ {701791200 46800 1 +13}
+ {717516000 43200 0 +12}
+ {733240800 46800 1 +13}
+ {748965600 43200 0 +12}
+ {764690400 46800 1 +13}
+ {780415200 43200 0 +12}
+ {796140000 46800 1 +13}
+ {811864800 43200 0 +12}
+ {828194400 46800 1 +13}
+ {846338400 43200 0 +12}
+ {859644000 46800 1 +13}
+ {877788000 43200 0 +12}
+ {891093600 46800 1 +13}
+ {909237600 43200 0 +12}
+ {922543200 46800 1 +13}
+ {941292000 43200 0 +12}
+ {953992800 46800 1 +13}
+ {972741600 43200 0 +12}
+ {985442400 46800 1 +13}
+ {1004191200 43200 0 +12}
+ {1017496800 46800 1 +13}
+ {1035640800 43200 0 +12}
+ {1048946400 46800 1 +13}
+ {1067090400 43200 0 +12}
+ {1080396000 46800 1 +13}
+ {1099144800 43200 0 +12}
+ {1111845600 46800 1 +13}
+ {1130594400 43200 0 +12}
+ {1143295200 46800 1 +13}
+ {1162044000 43200 0 +12}
+ {1174744800 46800 1 +13}
+ {1193493600 43200 0 +12}
+ {1206799200 46800 1 +13}
+ {1224943200 43200 0 +12}
+ {1238248800 46800 1 +13}
+ {1256392800 43200 0 +12}
+ {1269698400 39600 0 +12}
+ {1269702000 43200 1 +12}
+ {1288450800 39600 0 +11}
+ {1301151600 43200 0 +12}
}
diff --git a/library/tzdata/Asia/Khandyga b/library/tzdata/Asia/Khandyga
index b898e0d..07bffac 100644
--- a/library/tzdata/Asia/Khandyga
+++ b/library/tzdata/Asia/Khandyga
@@ -2,72 +2,72 @@
set TZData(:Asia/Khandyga) {
{-9223372036854775808 32533 0 LMT}
- {-1579424533 28800 0 YAKT}
- {-1247558400 32400 0 YAKMMTT}
- {354898800 36000 1 YAKST}
- {370706400 32400 0 YAKT}
- {386434800 36000 1 YAKST}
- {402242400 32400 0 YAKT}
- {417970800 36000 1 YAKST}
- {433778400 32400 0 YAKT}
- {449593200 36000 1 YAKST}
- {465325200 32400 0 YAKT}
- {481050000 36000 1 YAKST}
- {496774800 32400 0 YAKT}
- {512499600 36000 1 YAKST}
- {528224400 32400 0 YAKT}
- {543949200 36000 1 YAKST}
- {559674000 32400 0 YAKT}
- {575398800 36000 1 YAKST}
- {591123600 32400 0 YAKT}
- {606848400 36000 1 YAKST}
- {622573200 32400 0 YAKT}
- {638298000 36000 1 YAKST}
- {654627600 32400 0 YAKT}
- {670352400 28800 0 YAKMMTT}
- {670356000 32400 1 YAKST}
- {686080800 28800 0 YAKT}
- {695757600 32400 0 YAKMMTT}
- {701802000 36000 1 YAKST}
- {717526800 32400 0 YAKT}
- {733251600 36000 1 YAKST}
- {748976400 32400 0 YAKT}
- {764701200 36000 1 YAKST}
- {780426000 32400 0 YAKT}
- {796150800 36000 1 YAKST}
- {811875600 32400 0 YAKT}
- {828205200 36000 1 YAKST}
- {846349200 32400 0 YAKT}
- {859654800 36000 1 YAKST}
- {877798800 32400 0 YAKT}
- {891104400 36000 1 YAKST}
- {909248400 32400 0 YAKT}
- {922554000 36000 1 YAKST}
- {941302800 32400 0 YAKT}
- {954003600 36000 1 YAKST}
- {972752400 32400 0 YAKT}
- {985453200 36000 1 YAKST}
- {1004202000 32400 0 YAKT}
- {1017507600 36000 1 YAKST}
- {1035651600 32400 0 YAKT}
- {1048957200 36000 1 YAKST}
- {1067101200 32400 0 YAKT}
- {1072882800 36000 0 VLAMMTT}
- {1080403200 39600 1 VLAST}
- {1099152000 36000 0 VLAT}
- {1111852800 39600 1 VLAST}
- {1130601600 36000 0 VLAT}
- {1143302400 39600 1 VLAST}
- {1162051200 36000 0 VLAT}
- {1174752000 39600 1 VLAST}
- {1193500800 36000 0 VLAT}
- {1206806400 39600 1 VLAST}
- {1224950400 36000 0 VLAT}
- {1238256000 39600 1 VLAST}
- {1256400000 36000 0 VLAT}
- {1269705600 39600 1 VLAST}
- {1288454400 36000 0 VLAT}
- {1301155200 39600 0 VLAT}
- {1315832400 36000 0 YAKT}
- {1414252800 32400 0 YAKT}
+ {-1579424533 28800 0 +08}
+ {-1247558400 32400 0 +10}
+ {354898800 36000 1 +10}
+ {370706400 32400 0 +09}
+ {386434800 36000 1 +10}
+ {402242400 32400 0 +09}
+ {417970800 36000 1 +10}
+ {433778400 32400 0 +09}
+ {449593200 36000 1 +10}
+ {465325200 32400 0 +09}
+ {481050000 36000 1 +10}
+ {496774800 32400 0 +09}
+ {512499600 36000 1 +10}
+ {528224400 32400 0 +09}
+ {543949200 36000 1 +10}
+ {559674000 32400 0 +09}
+ {575398800 36000 1 +10}
+ {591123600 32400 0 +09}
+ {606848400 36000 1 +10}
+ {622573200 32400 0 +09}
+ {638298000 36000 1 +10}
+ {654627600 32400 0 +09}
+ {670352400 28800 0 +09}
+ {670356000 32400 1 +09}
+ {686080800 28800 0 +08}
+ {695757600 32400 0 +10}
+ {701802000 36000 1 +10}
+ {717526800 32400 0 +09}
+ {733251600 36000 1 +10}
+ {748976400 32400 0 +09}
+ {764701200 36000 1 +10}
+ {780426000 32400 0 +09}
+ {796150800 36000 1 +10}
+ {811875600 32400 0 +09}
+ {828205200 36000 1 +10}
+ {846349200 32400 0 +09}
+ {859654800 36000 1 +10}
+ {877798800 32400 0 +09}
+ {891104400 36000 1 +10}
+ {909248400 32400 0 +09}
+ {922554000 36000 1 +10}
+ {941302800 32400 0 +09}
+ {954003600 36000 1 +10}
+ {972752400 32400 0 +09}
+ {985453200 36000 1 +10}
+ {1004202000 32400 0 +09}
+ {1017507600 36000 1 +10}
+ {1035651600 32400 0 +09}
+ {1048957200 36000 1 +10}
+ {1067101200 32400 0 +09}
+ {1072882800 36000 0 +11}
+ {1080403200 39600 1 +11}
+ {1099152000 36000 0 +10}
+ {1111852800 39600 1 +11}
+ {1130601600 36000 0 +10}
+ {1143302400 39600 1 +11}
+ {1162051200 36000 0 +10}
+ {1174752000 39600 1 +11}
+ {1193500800 36000 0 +10}
+ {1206806400 39600 1 +11}
+ {1224950400 36000 0 +10}
+ {1238256000 39600 1 +11}
+ {1256400000 36000 0 +10}
+ {1269705600 39600 1 +11}
+ {1288454400 36000 0 +10}
+ {1301155200 39600 0 +11}
+ {1315832400 36000 0 +10}
+ {1414252800 32400 0 +09}
}
diff --git a/library/tzdata/Asia/Krasnoyarsk b/library/tzdata/Asia/Krasnoyarsk
index 3c6285e..0721425 100644
--- a/library/tzdata/Asia/Krasnoyarsk
+++ b/library/tzdata/Asia/Krasnoyarsk
@@ -2,70 +2,70 @@
set TZData(:Asia/Krasnoyarsk) {
{-9223372036854775808 22286 0 LMT}
- {-1577513486 21600 0 KRAT}
- {-1247551200 25200 0 KRAMMTT}
- {354906000 28800 1 KRAST}
- {370713600 25200 0 KRAT}
- {386442000 28800 1 KRAST}
- {402249600 25200 0 KRAT}
- {417978000 28800 1 KRAST}
- {433785600 25200 0 KRAT}
- {449600400 28800 1 KRAST}
- {465332400 25200 0 KRAT}
- {481057200 28800 1 KRAST}
- {496782000 25200 0 KRAT}
- {512506800 28800 1 KRAST}
- {528231600 25200 0 KRAT}
- {543956400 28800 1 KRAST}
- {559681200 25200 0 KRAT}
- {575406000 28800 1 KRAST}
- {591130800 25200 0 KRAT}
- {606855600 28800 1 KRAST}
- {622580400 25200 0 KRAT}
- {638305200 28800 1 KRAST}
- {654634800 25200 0 KRAT}
- {670359600 21600 0 KRAMMTT}
- {670363200 25200 1 KRAST}
- {686088000 21600 0 KRAT}
- {695764800 25200 0 KRAMMTT}
- {701809200 28800 1 KRAST}
- {717534000 25200 0 KRAT}
- {733258800 28800 1 KRAST}
- {748983600 25200 0 KRAT}
- {764708400 28800 1 KRAST}
- {780433200 25200 0 KRAT}
- {796158000 28800 1 KRAST}
- {811882800 25200 0 KRAT}
- {828212400 28800 1 KRAST}
- {846356400 25200 0 KRAT}
- {859662000 28800 1 KRAST}
- {877806000 25200 0 KRAT}
- {891111600 28800 1 KRAST}
- {909255600 25200 0 KRAT}
- {922561200 28800 1 KRAST}
- {941310000 25200 0 KRAT}
- {954010800 28800 1 KRAST}
- {972759600 25200 0 KRAT}
- {985460400 28800 1 KRAST}
- {1004209200 25200 0 KRAT}
- {1017514800 28800 1 KRAST}
- {1035658800 25200 0 KRAT}
- {1048964400 28800 1 KRAST}
- {1067108400 25200 0 KRAT}
- {1080414000 28800 1 KRAST}
- {1099162800 25200 0 KRAT}
- {1111863600 28800 1 KRAST}
- {1130612400 25200 0 KRAT}
- {1143313200 28800 1 KRAST}
- {1162062000 25200 0 KRAT}
- {1174762800 28800 1 KRAST}
- {1193511600 25200 0 KRAT}
- {1206817200 28800 1 KRAST}
- {1224961200 25200 0 KRAT}
- {1238266800 28800 1 KRAST}
- {1256410800 25200 0 KRAT}
- {1269716400 28800 1 KRAST}
- {1288465200 25200 0 KRAT}
- {1301166000 28800 0 KRAT}
- {1414260000 25200 0 KRAT}
+ {-1577513486 21600 0 +06}
+ {-1247551200 25200 0 +08}
+ {354906000 28800 1 +08}
+ {370713600 25200 0 +07}
+ {386442000 28800 1 +08}
+ {402249600 25200 0 +07}
+ {417978000 28800 1 +08}
+ {433785600 25200 0 +07}
+ {449600400 28800 1 +08}
+ {465332400 25200 0 +07}
+ {481057200 28800 1 +08}
+ {496782000 25200 0 +07}
+ {512506800 28800 1 +08}
+ {528231600 25200 0 +07}
+ {543956400 28800 1 +08}
+ {559681200 25200 0 +07}
+ {575406000 28800 1 +08}
+ {591130800 25200 0 +07}
+ {606855600 28800 1 +08}
+ {622580400 25200 0 +07}
+ {638305200 28800 1 +08}
+ {654634800 25200 0 +07}
+ {670359600 21600 0 +07}
+ {670363200 25200 1 +07}
+ {686088000 21600 0 +06}
+ {695764800 25200 0 +08}
+ {701809200 28800 1 +08}
+ {717534000 25200 0 +07}
+ {733258800 28800 1 +08}
+ {748983600 25200 0 +07}
+ {764708400 28800 1 +08}
+ {780433200 25200 0 +07}
+ {796158000 28800 1 +08}
+ {811882800 25200 0 +07}
+ {828212400 28800 1 +08}
+ {846356400 25200 0 +07}
+ {859662000 28800 1 +08}
+ {877806000 25200 0 +07}
+ {891111600 28800 1 +08}
+ {909255600 25200 0 +07}
+ {922561200 28800 1 +08}
+ {941310000 25200 0 +07}
+ {954010800 28800 1 +08}
+ {972759600 25200 0 +07}
+ {985460400 28800 1 +08}
+ {1004209200 25200 0 +07}
+ {1017514800 28800 1 +08}
+ {1035658800 25200 0 +07}
+ {1048964400 28800 1 +08}
+ {1067108400 25200 0 +07}
+ {1080414000 28800 1 +08}
+ {1099162800 25200 0 +07}
+ {1111863600 28800 1 +08}
+ {1130612400 25200 0 +07}
+ {1143313200 28800 1 +08}
+ {1162062000 25200 0 +07}
+ {1174762800 28800 1 +08}
+ {1193511600 25200 0 +07}
+ {1206817200 28800 1 +08}
+ {1224961200 25200 0 +07}
+ {1238266800 28800 1 +08}
+ {1256410800 25200 0 +07}
+ {1269716400 28800 1 +08}
+ {1288465200 25200 0 +07}
+ {1301166000 28800 0 +08}
+ {1414260000 25200 0 +07}
}
diff --git a/library/tzdata/Asia/Magadan b/library/tzdata/Asia/Magadan
index afe78da..0626899 100644
--- a/library/tzdata/Asia/Magadan
+++ b/library/tzdata/Asia/Magadan
@@ -2,71 +2,71 @@
set TZData(:Asia/Magadan) {
{-9223372036854775808 36192 0 LMT}
- {-1441188192 36000 0 MAGT}
- {-1247565600 39600 0 MAGMMTT}
- {354891600 43200 1 MAGST}
- {370699200 39600 0 MAGT}
- {386427600 43200 1 MAGST}
- {402235200 39600 0 MAGT}
- {417963600 43200 1 MAGST}
- {433771200 39600 0 MAGT}
- {449586000 43200 1 MAGST}
- {465318000 39600 0 MAGT}
- {481042800 43200 1 MAGST}
- {496767600 39600 0 MAGT}
- {512492400 43200 1 MAGST}
- {528217200 39600 0 MAGT}
- {543942000 43200 1 MAGST}
- {559666800 39600 0 MAGT}
- {575391600 43200 1 MAGST}
- {591116400 39600 0 MAGT}
- {606841200 43200 1 MAGST}
- {622566000 39600 0 MAGT}
- {638290800 43200 1 MAGST}
- {654620400 39600 0 MAGT}
- {670345200 36000 0 MAGMMTT}
- {670348800 39600 1 MAGST}
- {686073600 36000 0 MAGT}
- {695750400 39600 0 MAGMMTT}
- {701794800 43200 1 MAGST}
- {717519600 39600 0 MAGT}
- {733244400 43200 1 MAGST}
- {748969200 39600 0 MAGT}
- {764694000 43200 1 MAGST}
- {780418800 39600 0 MAGT}
- {796143600 43200 1 MAGST}
- {811868400 39600 0 MAGT}
- {828198000 43200 1 MAGST}
- {846342000 39600 0 MAGT}
- {859647600 43200 1 MAGST}
- {877791600 39600 0 MAGT}
- {891097200 43200 1 MAGST}
- {909241200 39600 0 MAGT}
- {922546800 43200 1 MAGST}
- {941295600 39600 0 MAGT}
- {953996400 43200 1 MAGST}
- {972745200 39600 0 MAGT}
- {985446000 43200 1 MAGST}
- {1004194800 39600 0 MAGT}
- {1017500400 43200 1 MAGST}
- {1035644400 39600 0 MAGT}
- {1048950000 43200 1 MAGST}
- {1067094000 39600 0 MAGT}
- {1080399600 43200 1 MAGST}
- {1099148400 39600 0 MAGT}
- {1111849200 43200 1 MAGST}
- {1130598000 39600 0 MAGT}
- {1143298800 43200 1 MAGST}
- {1162047600 39600 0 MAGT}
- {1174748400 43200 1 MAGST}
- {1193497200 39600 0 MAGT}
- {1206802800 43200 1 MAGST}
- {1224946800 39600 0 MAGT}
- {1238252400 43200 1 MAGST}
- {1256396400 39600 0 MAGT}
- {1269702000 43200 1 MAGST}
- {1288450800 39600 0 MAGT}
- {1301151600 43200 0 MAGT}
- {1414245600 36000 0 MAGT}
- {1461427200 39600 0 MAGT}
+ {-1441188192 36000 0 +10}
+ {-1247565600 39600 0 +12}
+ {354891600 43200 1 +12}
+ {370699200 39600 0 +11}
+ {386427600 43200 1 +12}
+ {402235200 39600 0 +11}
+ {417963600 43200 1 +12}
+ {433771200 39600 0 +11}
+ {449586000 43200 1 +12}
+ {465318000 39600 0 +11}
+ {481042800 43200 1 +12}
+ {496767600 39600 0 +11}
+ {512492400 43200 1 +12}
+ {528217200 39600 0 +11}
+ {543942000 43200 1 +12}
+ {559666800 39600 0 +11}
+ {575391600 43200 1 +12}
+ {591116400 39600 0 +11}
+ {606841200 43200 1 +12}
+ {622566000 39600 0 +11}
+ {638290800 43200 1 +12}
+ {654620400 39600 0 +11}
+ {670345200 36000 0 +11}
+ {670348800 39600 1 +11}
+ {686073600 36000 0 +10}
+ {695750400 39600 0 +12}
+ {701794800 43200 1 +12}
+ {717519600 39600 0 +11}
+ {733244400 43200 1 +12}
+ {748969200 39600 0 +11}
+ {764694000 43200 1 +12}
+ {780418800 39600 0 +11}
+ {796143600 43200 1 +12}
+ {811868400 39600 0 +11}
+ {828198000 43200 1 +12}
+ {846342000 39600 0 +11}
+ {859647600 43200 1 +12}
+ {877791600 39600 0 +11}
+ {891097200 43200 1 +12}
+ {909241200 39600 0 +11}
+ {922546800 43200 1 +12}
+ {941295600 39600 0 +11}
+ {953996400 43200 1 +12}
+ {972745200 39600 0 +11}
+ {985446000 43200 1 +12}
+ {1004194800 39600 0 +11}
+ {1017500400 43200 1 +12}
+ {1035644400 39600 0 +11}
+ {1048950000 43200 1 +12}
+ {1067094000 39600 0 +11}
+ {1080399600 43200 1 +12}
+ {1099148400 39600 0 +11}
+ {1111849200 43200 1 +12}
+ {1130598000 39600 0 +11}
+ {1143298800 43200 1 +12}
+ {1162047600 39600 0 +11}
+ {1174748400 43200 1 +12}
+ {1193497200 39600 0 +11}
+ {1206802800 43200 1 +12}
+ {1224946800 39600 0 +11}
+ {1238252400 43200 1 +12}
+ {1256396400 39600 0 +11}
+ {1269702000 43200 1 +12}
+ {1288450800 39600 0 +11}
+ {1301151600 43200 0 +12}
+ {1414245600 36000 0 +10}
+ {1461427200 39600 0 +11}
}
diff --git a/library/tzdata/Asia/Novokuznetsk b/library/tzdata/Asia/Novokuznetsk
index f079faa..a43a984 100644
--- a/library/tzdata/Asia/Novokuznetsk
+++ b/library/tzdata/Asia/Novokuznetsk
@@ -2,71 +2,70 @@
set TZData(:Asia/Novokuznetsk) {
{-9223372036854775808 20928 0 LMT}
- {-1441259328 21600 0 KRAT}
- {-1247551200 25200 0 KRAMMTT}
- {354906000 28800 1 KRAST}
- {370713600 25200 0 KRAT}
- {386442000 28800 1 KRAST}
- {402249600 25200 0 KRAT}
- {417978000 28800 1 KRAST}
- {433785600 25200 0 KRAT}
- {449600400 28800 1 KRAST}
- {465332400 25200 0 KRAT}
- {481057200 28800 1 KRAST}
- {496782000 25200 0 KRAT}
- {512506800 28800 1 KRAST}
- {528231600 25200 0 KRAT}
- {543956400 28800 1 KRAST}
- {559681200 25200 0 KRAT}
- {575406000 28800 1 KRAST}
- {591130800 25200 0 KRAT}
- {606855600 28800 1 KRAST}
- {622580400 25200 0 KRAT}
- {638305200 28800 1 KRAST}
- {654634800 25200 0 KRAT}
- {670359600 21600 0 KRAMMTT}
- {670363200 25200 1 KRAST}
- {686088000 21600 0 KRAT}
- {695764800 25200 0 KRAMMTT}
- {701809200 28800 1 KRAST}
- {717534000 25200 0 KRAT}
- {733258800 28800 1 KRAST}
- {748983600 25200 0 KRAT}
- {764708400 28800 1 KRAST}
- {780433200 25200 0 KRAT}
- {796158000 28800 1 KRAST}
- {811882800 25200 0 KRAT}
- {828212400 28800 1 KRAST}
- {846356400 25200 0 KRAT}
- {859662000 28800 1 KRAST}
- {877806000 25200 0 KRAT}
- {891111600 28800 1 KRAST}
- {909255600 25200 0 KRAT}
- {922561200 28800 1 KRAST}
- {941310000 25200 0 KRAT}
- {954010800 28800 1 KRAST}
- {972759600 25200 0 KRAT}
- {985460400 28800 1 KRAST}
- {1004209200 25200 0 KRAT}
- {1017514800 28800 1 KRAST}
- {1035658800 25200 0 KRAT}
- {1048964400 28800 1 KRAST}
- {1067108400 25200 0 KRAT}
- {1080414000 28800 1 KRAST}
- {1099162800 25200 0 KRAT}
- {1111863600 28800 1 KRAST}
- {1130612400 25200 0 KRAT}
- {1143313200 28800 1 KRAST}
- {1162062000 25200 0 KRAT}
- {1174762800 28800 1 KRAST}
- {1193511600 25200 0 KRAT}
- {1206817200 28800 1 KRAST}
- {1224961200 25200 0 KRAT}
- {1238266800 28800 1 KRAST}
- {1256410800 25200 0 KRAT}
- {1269716400 21600 0 NOVMMTT}
- {1269720000 25200 1 NOVST}
- {1288468800 21600 0 NOVT}
- {1301169600 25200 0 NOVT}
- {1414263600 25200 0 KRAT}
+ {-1441259328 21600 0 +06}
+ {-1247551200 25200 0 +08}
+ {354906000 28800 1 +08}
+ {370713600 25200 0 +07}
+ {386442000 28800 1 +08}
+ {402249600 25200 0 +07}
+ {417978000 28800 1 +08}
+ {433785600 25200 0 +07}
+ {449600400 28800 1 +08}
+ {465332400 25200 0 +07}
+ {481057200 28800 1 +08}
+ {496782000 25200 0 +07}
+ {512506800 28800 1 +08}
+ {528231600 25200 0 +07}
+ {543956400 28800 1 +08}
+ {559681200 25200 0 +07}
+ {575406000 28800 1 +08}
+ {591130800 25200 0 +07}
+ {606855600 28800 1 +08}
+ {622580400 25200 0 +07}
+ {638305200 28800 1 +08}
+ {654634800 25200 0 +07}
+ {670359600 21600 0 +07}
+ {670363200 25200 1 +07}
+ {686088000 21600 0 +06}
+ {695764800 25200 0 +08}
+ {701809200 28800 1 +08}
+ {717534000 25200 0 +07}
+ {733258800 28800 1 +08}
+ {748983600 25200 0 +07}
+ {764708400 28800 1 +08}
+ {780433200 25200 0 +07}
+ {796158000 28800 1 +08}
+ {811882800 25200 0 +07}
+ {828212400 28800 1 +08}
+ {846356400 25200 0 +07}
+ {859662000 28800 1 +08}
+ {877806000 25200 0 +07}
+ {891111600 28800 1 +08}
+ {909255600 25200 0 +07}
+ {922561200 28800 1 +08}
+ {941310000 25200 0 +07}
+ {954010800 28800 1 +08}
+ {972759600 25200 0 +07}
+ {985460400 28800 1 +08}
+ {1004209200 25200 0 +07}
+ {1017514800 28800 1 +08}
+ {1035658800 25200 0 +07}
+ {1048964400 28800 1 +08}
+ {1067108400 25200 0 +07}
+ {1080414000 28800 1 +08}
+ {1099162800 25200 0 +07}
+ {1111863600 28800 1 +08}
+ {1130612400 25200 0 +07}
+ {1143313200 28800 1 +08}
+ {1162062000 25200 0 +07}
+ {1174762800 28800 1 +08}
+ {1193511600 25200 0 +07}
+ {1206817200 28800 1 +08}
+ {1224961200 25200 0 +07}
+ {1238266800 28800 1 +08}
+ {1256410800 25200 0 +07}
+ {1269716400 21600 0 +07}
+ {1269720000 25200 1 +07}
+ {1288468800 21600 0 +06}
+ {1301169600 25200 0 +07}
}
diff --git a/library/tzdata/Asia/Novosibirsk b/library/tzdata/Asia/Novosibirsk
index 54c83fa..21f5c00 100644
--- a/library/tzdata/Asia/Novosibirsk
+++ b/library/tzdata/Asia/Novosibirsk
@@ -2,71 +2,72 @@
set TZData(:Asia/Novosibirsk) {
{-9223372036854775808 19900 0 LMT}
- {-1579476700 21600 0 NOVT}
- {-1247551200 25200 0 NOVMMTT}
- {354906000 28800 1 NOVST}
- {370713600 25200 0 NOVT}
- {386442000 28800 1 NOVST}
- {402249600 25200 0 NOVT}
- {417978000 28800 1 NOVST}
- {433785600 25200 0 NOVT}
- {449600400 28800 1 NOVST}
- {465332400 25200 0 NOVT}
- {481057200 28800 1 NOVST}
- {496782000 25200 0 NOVT}
- {512506800 28800 1 NOVST}
- {528231600 25200 0 NOVT}
- {543956400 28800 1 NOVST}
- {559681200 25200 0 NOVT}
- {575406000 28800 1 NOVST}
- {591130800 25200 0 NOVT}
- {606855600 28800 1 NOVST}
- {622580400 25200 0 NOVT}
- {638305200 28800 1 NOVST}
- {654634800 25200 0 NOVT}
- {670359600 21600 0 NOVMMTT}
- {670363200 25200 1 NOVST}
- {686088000 21600 0 NOVT}
- {695764800 25200 0 NOVMMTT}
- {701809200 28800 1 NOVST}
- {717534000 25200 0 NOVT}
- {733258800 28800 1 NOVST}
- {738090000 25200 0 NOVST}
- {748987200 21600 0 NOVT}
- {764712000 25200 1 NOVST}
- {780436800 21600 0 NOVT}
- {796161600 25200 1 NOVST}
- {811886400 21600 0 NOVT}
- {828216000 25200 1 NOVST}
- {846360000 21600 0 NOVT}
- {859665600 25200 1 NOVST}
- {877809600 21600 0 NOVT}
- {891115200 25200 1 NOVST}
- {909259200 21600 0 NOVT}
- {922564800 25200 1 NOVST}
- {941313600 21600 0 NOVT}
- {954014400 25200 1 NOVST}
- {972763200 21600 0 NOVT}
- {985464000 25200 1 NOVST}
- {1004212800 21600 0 NOVT}
- {1017518400 25200 1 NOVST}
- {1035662400 21600 0 NOVT}
- {1048968000 25200 1 NOVST}
- {1067112000 21600 0 NOVT}
- {1080417600 25200 1 NOVST}
- {1099166400 21600 0 NOVT}
- {1111867200 25200 1 NOVST}
- {1130616000 21600 0 NOVT}
- {1143316800 25200 1 NOVST}
- {1162065600 21600 0 NOVT}
- {1174766400 25200 1 NOVST}
- {1193515200 21600 0 NOVT}
- {1206820800 25200 1 NOVST}
- {1224964800 21600 0 NOVT}
- {1238270400 25200 1 NOVST}
- {1256414400 21600 0 NOVT}
- {1269720000 25200 1 NOVST}
- {1288468800 21600 0 NOVT}
- {1301169600 25200 0 NOVT}
- {1414263600 21600 0 NOVT}
+ {-1579476700 21600 0 +06}
+ {-1247551200 25200 0 +08}
+ {354906000 28800 1 +08}
+ {370713600 25200 0 +07}
+ {386442000 28800 1 +08}
+ {402249600 25200 0 +07}
+ {417978000 28800 1 +08}
+ {433785600 25200 0 +07}
+ {449600400 28800 1 +08}
+ {465332400 25200 0 +07}
+ {481057200 28800 1 +08}
+ {496782000 25200 0 +07}
+ {512506800 28800 1 +08}
+ {528231600 25200 0 +07}
+ {543956400 28800 1 +08}
+ {559681200 25200 0 +07}
+ {575406000 28800 1 +08}
+ {591130800 25200 0 +07}
+ {606855600 28800 1 +08}
+ {622580400 25200 0 +07}
+ {638305200 28800 1 +08}
+ {654634800 25200 0 +07}
+ {670359600 21600 0 +07}
+ {670363200 25200 1 +07}
+ {686088000 21600 0 +06}
+ {695764800 25200 0 +08}
+ {701809200 28800 1 +08}
+ {717534000 25200 0 +07}
+ {733258800 28800 1 +08}
+ {738090000 25200 0 +07}
+ {748987200 21600 0 +06}
+ {764712000 25200 1 +07}
+ {780436800 21600 0 +06}
+ {796161600 25200 1 +07}
+ {811886400 21600 0 +06}
+ {828216000 25200 1 +07}
+ {846360000 21600 0 +06}
+ {859665600 25200 1 +07}
+ {877809600 21600 0 +06}
+ {891115200 25200 1 +07}
+ {909259200 21600 0 +06}
+ {922564800 25200 1 +07}
+ {941313600 21600 0 +06}
+ {954014400 25200 1 +07}
+ {972763200 21600 0 +06}
+ {985464000 25200 1 +07}
+ {1004212800 21600 0 +06}
+ {1017518400 25200 1 +07}
+ {1035662400 21600 0 +06}
+ {1048968000 25200 1 +07}
+ {1067112000 21600 0 +06}
+ {1080417600 25200 1 +07}
+ {1099166400 21600 0 +06}
+ {1111867200 25200 1 +07}
+ {1130616000 21600 0 +06}
+ {1143316800 25200 1 +07}
+ {1162065600 21600 0 +06}
+ {1174766400 25200 1 +07}
+ {1193515200 21600 0 +06}
+ {1206820800 25200 1 +07}
+ {1224964800 21600 0 +06}
+ {1238270400 25200 1 +07}
+ {1256414400 21600 0 +06}
+ {1269720000 25200 1 +07}
+ {1288468800 21600 0 +06}
+ {1301169600 25200 0 +07}
+ {1414263600 21600 0 +06}
+ {1469304000 25200 0 +07}
}
diff --git a/library/tzdata/Asia/Omsk b/library/tzdata/Asia/Omsk
index a6fa180..74163d5 100644
--- a/library/tzdata/Asia/Omsk
+++ b/library/tzdata/Asia/Omsk
@@ -2,70 +2,70 @@
set TZData(:Asia/Omsk) {
{-9223372036854775808 17610 0 LMT}
- {-1582088010 18000 0 OMST}
- {-1247547600 21600 0 OMSMMTT}
- {354909600 25200 1 OMSST}
- {370717200 21600 0 OMST}
- {386445600 25200 1 OMSST}
- {402253200 21600 0 OMST}
- {417981600 25200 1 OMSST}
- {433789200 21600 0 OMST}
- {449604000 25200 1 OMSST}
- {465336000 21600 0 OMST}
- {481060800 25200 1 OMSST}
- {496785600 21600 0 OMST}
- {512510400 25200 1 OMSST}
- {528235200 21600 0 OMST}
- {543960000 25200 1 OMSST}
- {559684800 21600 0 OMST}
- {575409600 25200 1 OMSST}
- {591134400 21600 0 OMST}
- {606859200 25200 1 OMSST}
- {622584000 21600 0 OMST}
- {638308800 25200 1 OMSST}
- {654638400 21600 0 OMST}
- {670363200 18000 0 OMSMMTT}
- {670366800 21600 1 OMSST}
- {686091600 18000 0 OMST}
- {695768400 21600 0 OMSMMTT}
- {701812800 25200 1 OMSST}
- {717537600 21600 0 OMST}
- {733262400 25200 1 OMSST}
- {748987200 21600 0 OMST}
- {764712000 25200 1 OMSST}
- {780436800 21600 0 OMST}
- {796161600 25200 1 OMSST}
- {811886400 21600 0 OMST}
- {828216000 25200 1 OMSST}
- {846360000 21600 0 OMST}
- {859665600 25200 1 OMSST}
- {877809600 21600 0 OMST}
- {891115200 25200 1 OMSST}
- {909259200 21600 0 OMST}
- {922564800 25200 1 OMSST}
- {941313600 21600 0 OMST}
- {954014400 25200 1 OMSST}
- {972763200 21600 0 OMST}
- {985464000 25200 1 OMSST}
- {1004212800 21600 0 OMST}
- {1017518400 25200 1 OMSST}
- {1035662400 21600 0 OMST}
- {1048968000 25200 1 OMSST}
- {1067112000 21600 0 OMST}
- {1080417600 25200 1 OMSST}
- {1099166400 21600 0 OMST}
- {1111867200 25200 1 OMSST}
- {1130616000 21600 0 OMST}
- {1143316800 25200 1 OMSST}
- {1162065600 21600 0 OMST}
- {1174766400 25200 1 OMSST}
- {1193515200 21600 0 OMST}
- {1206820800 25200 1 OMSST}
- {1224964800 21600 0 OMST}
- {1238270400 25200 1 OMSST}
- {1256414400 21600 0 OMST}
- {1269720000 25200 1 OMSST}
- {1288468800 21600 0 OMST}
- {1301169600 25200 0 OMST}
- {1414263600 21600 0 OMST}
+ {-1582088010 18000 0 +05}
+ {-1247547600 21600 0 +07}
+ {354909600 25200 1 +07}
+ {370717200 21600 0 +06}
+ {386445600 25200 1 +07}
+ {402253200 21600 0 +06}
+ {417981600 25200 1 +07}
+ {433789200 21600 0 +06}
+ {449604000 25200 1 +07}
+ {465336000 21600 0 +06}
+ {481060800 25200 1 +07}
+ {496785600 21600 0 +06}
+ {512510400 25200 1 +07}
+ {528235200 21600 0 +06}
+ {543960000 25200 1 +07}
+ {559684800 21600 0 +06}
+ {575409600 25200 1 +07}
+ {591134400 21600 0 +06}
+ {606859200 25200 1 +07}
+ {622584000 21600 0 +06}
+ {638308800 25200 1 +07}
+ {654638400 21600 0 +06}
+ {670363200 18000 0 +06}
+ {670366800 21600 1 +06}
+ {686091600 18000 0 +05}
+ {695768400 21600 0 +07}
+ {701812800 25200 1 +07}
+ {717537600 21600 0 +06}
+ {733262400 25200 1 +07}
+ {748987200 21600 0 +06}
+ {764712000 25200 1 +07}
+ {780436800 21600 0 +06}
+ {796161600 25200 1 +07}
+ {811886400 21600 0 +06}
+ {828216000 25200 1 +07}
+ {846360000 21600 0 +06}
+ {859665600 25200 1 +07}
+ {877809600 21600 0 +06}
+ {891115200 25200 1 +07}
+ {909259200 21600 0 +06}
+ {922564800 25200 1 +07}
+ {941313600 21600 0 +06}
+ {954014400 25200 1 +07}
+ {972763200 21600 0 +06}
+ {985464000 25200 1 +07}
+ {1004212800 21600 0 +06}
+ {1017518400 25200 1 +07}
+ {1035662400 21600 0 +06}
+ {1048968000 25200 1 +07}
+ {1067112000 21600 0 +06}
+ {1080417600 25200 1 +07}
+ {1099166400 21600 0 +06}
+ {1111867200 25200 1 +07}
+ {1130616000 21600 0 +06}
+ {1143316800 25200 1 +07}
+ {1162065600 21600 0 +06}
+ {1174766400 25200 1 +07}
+ {1193515200 21600 0 +06}
+ {1206820800 25200 1 +07}
+ {1224964800 21600 0 +06}
+ {1238270400 25200 1 +07}
+ {1256414400 21600 0 +06}
+ {1269720000 25200 1 +07}
+ {1288468800 21600 0 +06}
+ {1301169600 25200 0 +07}
+ {1414263600 21600 0 +06}
}
diff --git a/library/tzdata/Asia/Rangoon b/library/tzdata/Asia/Rangoon
index 4f3ac02..8ea2748 100644
--- a/library/tzdata/Asia/Rangoon
+++ b/library/tzdata/Asia/Rangoon
@@ -1,9 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:Asia/Rangoon) {
- {-9223372036854775808 23080 0 LMT}
- {-2840163880 23080 0 RMT}
- {-1577946280 23400 0 BURT}
- {-873268200 32400 0 JST}
- {-778410000 23400 0 MMT}
+if {![info exists TZData(Asia/Yangon)]} {
+ LoadTimeZoneFile Asia/Yangon
}
+set TZData(:Asia/Rangoon) $TZData(:Asia/Yangon)
diff --git a/library/tzdata/Asia/Sakhalin b/library/tzdata/Asia/Sakhalin
index 1de22f4..4ba7c8c 100644
--- a/library/tzdata/Asia/Sakhalin
+++ b/library/tzdata/Asia/Sakhalin
@@ -2,73 +2,72 @@
set TZData(:Asia/Sakhalin) {
{-9223372036854775808 34248 0 LMT}
- {-2031039048 32400 0 JCST}
- {-1017824400 32400 0 JST}
- {-768560400 39600 0 SAKMMTT}
- {354891600 43200 1 SAKST}
- {370699200 39600 0 SAKT}
- {386427600 43200 1 SAKST}
- {402235200 39600 0 SAKT}
- {417963600 43200 1 SAKST}
- {433771200 39600 0 SAKT}
- {449586000 43200 1 SAKST}
- {465318000 39600 0 SAKT}
- {481042800 43200 1 SAKST}
- {496767600 39600 0 SAKT}
- {512492400 43200 1 SAKST}
- {528217200 39600 0 SAKT}
- {543942000 43200 1 SAKST}
- {559666800 39600 0 SAKT}
- {575391600 43200 1 SAKST}
- {591116400 39600 0 SAKT}
- {606841200 43200 1 SAKST}
- {622566000 39600 0 SAKT}
- {638290800 43200 1 SAKST}
- {654620400 39600 0 SAKT}
- {670345200 36000 0 SAKMMTT}
- {670348800 39600 1 SAKST}
- {686073600 36000 0 SAKT}
- {695750400 39600 0 SAKMMTT}
- {701794800 43200 1 SAKST}
- {717519600 39600 0 SAKT}
- {733244400 43200 1 SAKST}
- {748969200 39600 0 SAKT}
- {764694000 43200 1 SAKST}
- {780418800 39600 0 SAKT}
- {796143600 43200 1 SAKST}
- {811868400 39600 0 SAKT}
- {828198000 43200 1 SAKST}
- {846342000 39600 0 SAKT}
- {859647600 36000 0 SAKMMTT}
- {859651200 39600 1 SAKST}
- {877795200 36000 0 SAKT}
- {891100800 39600 1 SAKST}
- {909244800 36000 0 SAKT}
- {922550400 39600 1 SAKST}
- {941299200 36000 0 SAKT}
- {954000000 39600 1 SAKST}
- {972748800 36000 0 SAKT}
- {985449600 39600 1 SAKST}
- {1004198400 36000 0 SAKT}
- {1017504000 39600 1 SAKST}
- {1035648000 36000 0 SAKT}
- {1048953600 39600 1 SAKST}
- {1067097600 36000 0 SAKT}
- {1080403200 39600 1 SAKST}
- {1099152000 36000 0 SAKT}
- {1111852800 39600 1 SAKST}
- {1130601600 36000 0 SAKT}
- {1143302400 39600 1 SAKST}
- {1162051200 36000 0 SAKT}
- {1174752000 39600 1 SAKST}
- {1193500800 36000 0 SAKT}
- {1206806400 39600 1 SAKST}
- {1224950400 36000 0 SAKT}
- {1238256000 39600 1 SAKST}
- {1256400000 36000 0 SAKT}
- {1269705600 39600 1 SAKST}
- {1288454400 36000 0 SAKT}
- {1301155200 39600 0 SAKT}
- {1414249200 36000 0 SAKT}
- {1459008000 39600 0 SAKT}
+ {-2031039048 32400 0 +09}
+ {-768560400 39600 0 +12}
+ {354891600 43200 1 +12}
+ {370699200 39600 0 +11}
+ {386427600 43200 1 +12}
+ {402235200 39600 0 +11}
+ {417963600 43200 1 +12}
+ {433771200 39600 0 +11}
+ {449586000 43200 1 +12}
+ {465318000 39600 0 +11}
+ {481042800 43200 1 +12}
+ {496767600 39600 0 +11}
+ {512492400 43200 1 +12}
+ {528217200 39600 0 +11}
+ {543942000 43200 1 +12}
+ {559666800 39600 0 +11}
+ {575391600 43200 1 +12}
+ {591116400 39600 0 +11}
+ {606841200 43200 1 +12}
+ {622566000 39600 0 +11}
+ {638290800 43200 1 +12}
+ {654620400 39600 0 +11}
+ {670345200 36000 0 +11}
+ {670348800 39600 1 +11}
+ {686073600 36000 0 +10}
+ {695750400 39600 0 +12}
+ {701794800 43200 1 +12}
+ {717519600 39600 0 +11}
+ {733244400 43200 1 +12}
+ {748969200 39600 0 +11}
+ {764694000 43200 1 +12}
+ {780418800 39600 0 +11}
+ {796143600 43200 1 +12}
+ {811868400 39600 0 +11}
+ {828198000 43200 1 +12}
+ {846342000 39600 0 +11}
+ {859647600 36000 0 +11}
+ {859651200 39600 1 +11}
+ {877795200 36000 0 +10}
+ {891100800 39600 1 +11}
+ {909244800 36000 0 +10}
+ {922550400 39600 1 +11}
+ {941299200 36000 0 +10}
+ {954000000 39600 1 +11}
+ {972748800 36000 0 +10}
+ {985449600 39600 1 +11}
+ {1004198400 36000 0 +10}
+ {1017504000 39600 1 +11}
+ {1035648000 36000 0 +10}
+ {1048953600 39600 1 +11}
+ {1067097600 36000 0 +10}
+ {1080403200 39600 1 +11}
+ {1099152000 36000 0 +10}
+ {1111852800 39600 1 +11}
+ {1130601600 36000 0 +10}
+ {1143302400 39600 1 +11}
+ {1162051200 36000 0 +10}
+ {1174752000 39600 1 +11}
+ {1193500800 36000 0 +10}
+ {1206806400 39600 1 +11}
+ {1224950400 36000 0 +10}
+ {1238256000 39600 1 +11}
+ {1256400000 36000 0 +10}
+ {1269705600 39600 1 +11}
+ {1288454400 36000 0 +10}
+ {1301155200 39600 0 +11}
+ {1414249200 36000 0 +10}
+ {1459008000 39600 0 +11}
}
diff --git a/library/tzdata/Asia/Samarkand b/library/tzdata/Asia/Samarkand
index 4b3b49f..43ad774 100644
--- a/library/tzdata/Asia/Samarkand
+++ b/library/tzdata/Asia/Samarkand
@@ -2,31 +2,30 @@
set TZData(:Asia/Samarkand) {
{-9223372036854775808 16073 0 LMT}
- {-1441168073 14400 0 SAMT}
- {-1247544000 18000 0 SAMT}
- {354913200 21600 1 SAMST}
- {370720800 21600 0 TAST}
- {386445600 18000 0 SAMT}
- {386449200 21600 1 SAMST}
- {402256800 18000 0 SAMT}
- {417985200 21600 1 SAMST}
- {433792800 18000 0 SAMT}
- {449607600 21600 1 SAMST}
- {465339600 18000 0 SAMT}
- {481064400 21600 1 SAMST}
- {496789200 18000 0 SAMT}
- {512514000 21600 1 SAMST}
- {528238800 18000 0 SAMT}
- {543963600 21600 1 SAMST}
- {559688400 18000 0 SAMT}
- {575413200 21600 1 SAMST}
- {591138000 18000 0 SAMT}
- {606862800 21600 1 SAMST}
- {622587600 18000 0 SAMT}
- {638312400 21600 1 SAMST}
- {654642000 18000 0 SAMT}
- {670366800 21600 1 SAMST}
- {683665200 21600 0 UZST}
- {686091600 18000 0 UZT}
- {694206000 18000 0 UZT}
+ {-1441168073 14400 0 +04}
+ {-1247544000 18000 0 +05}
+ {354913200 21600 1 +06}
+ {370720800 21600 0 +06}
+ {386445600 18000 0 +05}
+ {386449200 21600 1 +06}
+ {402256800 18000 0 +05}
+ {417985200 21600 1 +06}
+ {433792800 18000 0 +05}
+ {449607600 21600 1 +06}
+ {465339600 18000 0 +05}
+ {481064400 21600 1 +06}
+ {496789200 18000 0 +05}
+ {512514000 21600 1 +06}
+ {528238800 18000 0 +05}
+ {543963600 21600 1 +06}
+ {559688400 18000 0 +05}
+ {575413200 21600 1 +06}
+ {591138000 18000 0 +05}
+ {606862800 21600 1 +06}
+ {622587600 18000 0 +05}
+ {638312400 21600 1 +06}
+ {654642000 18000 0 +05}
+ {670366800 21600 1 +06}
+ {686091600 18000 0 +05}
+ {694206000 18000 0 +05}
}
diff --git a/library/tzdata/Asia/Srednekolymsk b/library/tzdata/Asia/Srednekolymsk
index a0586aa..1099a4b 100644
--- a/library/tzdata/Asia/Srednekolymsk
+++ b/library/tzdata/Asia/Srednekolymsk
@@ -2,70 +2,70 @@
set TZData(:Asia/Srednekolymsk) {
{-9223372036854775808 36892 0 LMT}
- {-1441188892 36000 0 MAGT}
- {-1247565600 39600 0 MAGMMTT}
- {354891600 43200 1 MAGST}
- {370699200 39600 0 MAGT}
- {386427600 43200 1 MAGST}
- {402235200 39600 0 MAGT}
- {417963600 43200 1 MAGST}
- {433771200 39600 0 MAGT}
- {449586000 43200 1 MAGST}
- {465318000 39600 0 MAGT}
- {481042800 43200 1 MAGST}
- {496767600 39600 0 MAGT}
- {512492400 43200 1 MAGST}
- {528217200 39600 0 MAGT}
- {543942000 43200 1 MAGST}
- {559666800 39600 0 MAGT}
- {575391600 43200 1 MAGST}
- {591116400 39600 0 MAGT}
- {606841200 43200 1 MAGST}
- {622566000 39600 0 MAGT}
- {638290800 43200 1 MAGST}
- {654620400 39600 0 MAGT}
- {670345200 36000 0 MAGMMTT}
- {670348800 39600 1 MAGST}
- {686073600 36000 0 MAGT}
- {695750400 39600 0 MAGMMTT}
- {701794800 43200 1 MAGST}
- {717519600 39600 0 MAGT}
- {733244400 43200 1 MAGST}
- {748969200 39600 0 MAGT}
- {764694000 43200 1 MAGST}
- {780418800 39600 0 MAGT}
- {796143600 43200 1 MAGST}
- {811868400 39600 0 MAGT}
- {828198000 43200 1 MAGST}
- {846342000 39600 0 MAGT}
- {859647600 43200 1 MAGST}
- {877791600 39600 0 MAGT}
- {891097200 43200 1 MAGST}
- {909241200 39600 0 MAGT}
- {922546800 43200 1 MAGST}
- {941295600 39600 0 MAGT}
- {953996400 43200 1 MAGST}
- {972745200 39600 0 MAGT}
- {985446000 43200 1 MAGST}
- {1004194800 39600 0 MAGT}
- {1017500400 43200 1 MAGST}
- {1035644400 39600 0 MAGT}
- {1048950000 43200 1 MAGST}
- {1067094000 39600 0 MAGT}
- {1080399600 43200 1 MAGST}
- {1099148400 39600 0 MAGT}
- {1111849200 43200 1 MAGST}
- {1130598000 39600 0 MAGT}
- {1143298800 43200 1 MAGST}
- {1162047600 39600 0 MAGT}
- {1174748400 43200 1 MAGST}
- {1193497200 39600 0 MAGT}
- {1206802800 43200 1 MAGST}
- {1224946800 39600 0 MAGT}
- {1238252400 43200 1 MAGST}
- {1256396400 39600 0 MAGT}
- {1269702000 43200 1 MAGST}
- {1288450800 39600 0 MAGT}
- {1301151600 43200 0 MAGT}
- {1414245600 39600 0 SRET}
+ {-1441188892 36000 0 +10}
+ {-1247565600 39600 0 +12}
+ {354891600 43200 1 +12}
+ {370699200 39600 0 +11}
+ {386427600 43200 1 +12}
+ {402235200 39600 0 +11}
+ {417963600 43200 1 +12}
+ {433771200 39600 0 +11}
+ {449586000 43200 1 +12}
+ {465318000 39600 0 +11}
+ {481042800 43200 1 +12}
+ {496767600 39600 0 +11}
+ {512492400 43200 1 +12}
+ {528217200 39600 0 +11}
+ {543942000 43200 1 +12}
+ {559666800 39600 0 +11}
+ {575391600 43200 1 +12}
+ {591116400 39600 0 +11}
+ {606841200 43200 1 +12}
+ {622566000 39600 0 +11}
+ {638290800 43200 1 +12}
+ {654620400 39600 0 +11}
+ {670345200 36000 0 +11}
+ {670348800 39600 1 +11}
+ {686073600 36000 0 +10}
+ {695750400 39600 0 +12}
+ {701794800 43200 1 +12}
+ {717519600 39600 0 +11}
+ {733244400 43200 1 +12}
+ {748969200 39600 0 +11}
+ {764694000 43200 1 +12}
+ {780418800 39600 0 +11}
+ {796143600 43200 1 +12}
+ {811868400 39600 0 +11}
+ {828198000 43200 1 +12}
+ {846342000 39600 0 +11}
+ {859647600 43200 1 +12}
+ {877791600 39600 0 +11}
+ {891097200 43200 1 +12}
+ {909241200 39600 0 +11}
+ {922546800 43200 1 +12}
+ {941295600 39600 0 +11}
+ {953996400 43200 1 +12}
+ {972745200 39600 0 +11}
+ {985446000 43200 1 +12}
+ {1004194800 39600 0 +11}
+ {1017500400 43200 1 +12}
+ {1035644400 39600 0 +11}
+ {1048950000 43200 1 +12}
+ {1067094000 39600 0 +11}
+ {1080399600 43200 1 +12}
+ {1099148400 39600 0 +11}
+ {1111849200 43200 1 +12}
+ {1130598000 39600 0 +11}
+ {1143298800 43200 1 +12}
+ {1162047600 39600 0 +11}
+ {1174748400 43200 1 +12}
+ {1193497200 39600 0 +11}
+ {1206802800 43200 1 +12}
+ {1224946800 39600 0 +11}
+ {1238252400 43200 1 +12}
+ {1256396400 39600 0 +11}
+ {1269702000 43200 1 +12}
+ {1288450800 39600 0 +11}
+ {1301151600 43200 0 +12}
+ {1414245600 39600 0 +11}
}
diff --git a/library/tzdata/Asia/Tashkent b/library/tzdata/Asia/Tashkent
index 1477376..7b6abe4 100644
--- a/library/tzdata/Asia/Tashkent
+++ b/library/tzdata/Asia/Tashkent
@@ -2,31 +2,30 @@
set TZData(:Asia/Tashkent) {
{-9223372036854775808 16631 0 LMT}
- {-1441168631 18000 0 TAST}
- {-1247547600 21600 0 TAST}
- {354909600 25200 1 TASST}
- {370717200 21600 0 TAST}
- {386445600 25200 1 TASST}
- {402253200 21600 0 TAST}
- {417981600 25200 1 TASST}
- {433789200 21600 0 TAST}
- {449604000 25200 1 TASST}
- {465336000 21600 0 TAST}
- {481060800 25200 1 TASST}
- {496785600 21600 0 TAST}
- {512510400 25200 1 TASST}
- {528235200 21600 0 TAST}
- {543960000 25200 1 TASST}
- {559684800 21600 0 TAST}
- {575409600 25200 1 TASST}
- {591134400 21600 0 TAST}
- {606859200 25200 1 TASST}
- {622584000 21600 0 TAST}
- {638308800 25200 1 TASST}
- {654638400 21600 0 TAST}
- {670363200 18000 0 TAST}
- {670366800 21600 1 TASST}
- {683665200 21600 0 UZST}
- {686091600 18000 0 UZT}
- {694206000 18000 0 UZT}
+ {-1441168631 18000 0 +05}
+ {-1247547600 21600 0 +06}
+ {354909600 25200 1 +07}
+ {370717200 21600 0 +06}
+ {386445600 25200 1 +07}
+ {402253200 21600 0 +06}
+ {417981600 25200 1 +07}
+ {433789200 21600 0 +06}
+ {449604000 25200 1 +07}
+ {465336000 21600 0 +06}
+ {481060800 25200 1 +07}
+ {496785600 21600 0 +06}
+ {512510400 25200 1 +07}
+ {528235200 21600 0 +06}
+ {543960000 25200 1 +07}
+ {559684800 21600 0 +06}
+ {575409600 25200 1 +07}
+ {591134400 21600 0 +06}
+ {606859200 25200 1 +07}
+ {622584000 21600 0 +06}
+ {638308800 25200 1 +07}
+ {654638400 21600 0 +06}
+ {670363200 18000 0 +05}
+ {670366800 21600 1 +06}
+ {686091600 18000 0 +05}
+ {694206000 18000 0 +05}
}
diff --git a/library/tzdata/Asia/Tbilisi b/library/tzdata/Asia/Tbilisi
index 54b278a..60d253c 100644
--- a/library/tzdata/Asia/Tbilisi
+++ b/library/tzdata/Asia/Tbilisi
@@ -3,58 +3,58 @@
set TZData(:Asia/Tbilisi) {
{-9223372036854775808 10751 0 LMT}
{-2840151551 10751 0 TBMT}
- {-1441162751 10800 0 TBIT}
- {-405140400 14400 0 TBIT}
- {354916800 18000 1 TBIST}
- {370724400 14400 0 TBIT}
- {386452800 18000 1 TBIST}
- {402260400 14400 0 TBIT}
- {417988800 18000 1 TBIST}
- {433796400 14400 0 TBIT}
- {449611200 18000 1 TBIST}
- {465343200 14400 0 TBIT}
- {481068000 18000 1 TBIST}
- {496792800 14400 0 TBIT}
- {512517600 18000 1 TBIST}
- {528242400 14400 0 TBIT}
- {543967200 18000 1 TBIST}
- {559692000 14400 0 TBIT}
- {575416800 18000 1 TBIST}
- {591141600 14400 0 TBIT}
- {606866400 18000 1 TBIST}
- {622591200 14400 0 TBIT}
- {638316000 18000 1 TBIST}
- {654645600 14400 0 TBIT}
- {670370400 14400 1 TBIST}
- {671140800 14400 0 GEST}
- {686098800 10800 0 GET}
- {694213200 10800 0 GET}
- {701816400 14400 1 GEST}
- {717537600 10800 0 GET}
- {733266000 14400 1 GEST}
- {748987200 10800 0 GET}
- {764715600 14400 1 GEST}
- {780440400 14400 0 GET}
- {796161600 18000 1 GEST}
- {811882800 14400 0 GET}
- {828216000 18000 1 GEST}
- {846360000 18000 1 GEST}
- {859662000 18000 0 GEST}
- {877806000 14400 0 GET}
- {891115200 18000 1 GEST}
- {909255600 14400 0 GET}
- {922564800 18000 1 GEST}
- {941310000 14400 0 GET}
- {954014400 18000 1 GEST}
- {972759600 14400 0 GET}
- {985464000 18000 1 GEST}
- {1004209200 14400 0 GET}
- {1017518400 18000 1 GEST}
- {1035658800 14400 0 GET}
- {1048968000 18000 1 GEST}
- {1067108400 14400 0 GET}
- {1080417600 18000 1 GEST}
- {1088280000 14400 0 GEST}
- {1099177200 10800 0 GET}
- {1111878000 14400 0 GET}
+ {-1441162751 10800 0 +03}
+ {-405140400 14400 0 +04}
+ {354916800 18000 1 +05}
+ {370724400 14400 0 +04}
+ {386452800 18000 1 +05}
+ {402260400 14400 0 +04}
+ {417988800 18000 1 +05}
+ {433796400 14400 0 +04}
+ {449611200 18000 1 +05}
+ {465343200 14400 0 +04}
+ {481068000 18000 1 +05}
+ {496792800 14400 0 +04}
+ {512517600 18000 1 +05}
+ {528242400 14400 0 +04}
+ {543967200 18000 1 +05}
+ {559692000 14400 0 +04}
+ {575416800 18000 1 +05}
+ {591141600 14400 0 +04}
+ {606866400 18000 1 +05}
+ {622591200 14400 0 +04}
+ {638316000 18000 1 +05}
+ {654645600 14400 0 +04}
+ {670370400 10800 0 +03}
+ {670374000 14400 1 +04}
+ {686098800 10800 0 +03}
+ {694213200 10800 0 +03}
+ {701816400 14400 1 +04}
+ {717537600 10800 0 +03}
+ {733266000 14400 1 +04}
+ {748987200 10800 0 +03}
+ {764715600 14400 1 +04}
+ {780440400 14400 0 +04}
+ {796161600 18000 1 +05}
+ {811882800 14400 0 +04}
+ {828216000 18000 1 +05}
+ {846360000 18000 1 +05}
+ {859662000 18000 0 +05}
+ {877806000 14400 0 +04}
+ {891115200 18000 1 +05}
+ {909255600 14400 0 +04}
+ {922564800 18000 1 +05}
+ {941310000 14400 0 +04}
+ {954014400 18000 1 +05}
+ {972759600 14400 0 +04}
+ {985464000 18000 1 +05}
+ {1004209200 14400 0 +04}
+ {1017518400 18000 1 +05}
+ {1035658800 14400 0 +04}
+ {1048968000 18000 1 +05}
+ {1067108400 14400 0 +04}
+ {1080417600 18000 1 +05}
+ {1088280000 14400 0 +04}
+ {1099177200 10800 0 +03}
+ {1111878000 14400 0 +04}
}
diff --git a/library/tzdata/Asia/Ust-Nera b/library/tzdata/Asia/Ust-Nera
index 3380b7b..021fa62 100644
--- a/library/tzdata/Asia/Ust-Nera
+++ b/library/tzdata/Asia/Ust-Nera
@@ -2,70 +2,70 @@
set TZData(:Asia/Ust-Nera) {
{-9223372036854775808 34374 0 LMT}
- {-1579426374 28800 0 YAKT}
- {354898800 43200 0 MAGST}
- {370699200 39600 0 MAGT}
- {386427600 43200 1 MAGST}
- {402235200 39600 0 MAGT}
- {417963600 43200 1 MAGST}
- {433771200 39600 0 MAGT}
- {449586000 43200 1 MAGST}
- {465318000 39600 0 MAGT}
- {481042800 43200 1 MAGST}
- {496767600 39600 0 MAGT}
- {512492400 43200 1 MAGST}
- {528217200 39600 0 MAGT}
- {543942000 43200 1 MAGST}
- {559666800 39600 0 MAGT}
- {575391600 43200 1 MAGST}
- {591116400 39600 0 MAGT}
- {606841200 43200 1 MAGST}
- {622566000 39600 0 MAGT}
- {638290800 43200 1 MAGST}
- {654620400 39600 0 MAGT}
- {670345200 36000 0 MAGMMTT}
- {670348800 39600 1 MAGST}
- {686073600 36000 0 MAGT}
- {695750400 39600 0 MAGMMTT}
- {701794800 43200 1 MAGST}
- {717519600 39600 0 MAGT}
- {733244400 43200 1 MAGST}
- {748969200 39600 0 MAGT}
- {764694000 43200 1 MAGST}
- {780418800 39600 0 MAGT}
- {796143600 43200 1 MAGST}
- {811868400 39600 0 MAGT}
- {828198000 43200 1 MAGST}
- {846342000 39600 0 MAGT}
- {859647600 43200 1 MAGST}
- {877791600 39600 0 MAGT}
- {891097200 43200 1 MAGST}
- {909241200 39600 0 MAGT}
- {922546800 43200 1 MAGST}
- {941295600 39600 0 MAGT}
- {953996400 43200 1 MAGST}
- {972745200 39600 0 MAGT}
- {985446000 43200 1 MAGST}
- {1004194800 39600 0 MAGT}
- {1017500400 43200 1 MAGST}
- {1035644400 39600 0 MAGT}
- {1048950000 43200 1 MAGST}
- {1067094000 39600 0 MAGT}
- {1080399600 43200 1 MAGST}
- {1099148400 39600 0 MAGT}
- {1111849200 43200 1 MAGST}
- {1130598000 39600 0 MAGT}
- {1143298800 43200 1 MAGST}
- {1162047600 39600 0 MAGT}
- {1174748400 43200 1 MAGST}
- {1193497200 39600 0 MAGT}
- {1206802800 43200 1 MAGST}
- {1224946800 39600 0 MAGT}
- {1238252400 43200 1 MAGST}
- {1256396400 39600 0 MAGT}
- {1269702000 43200 1 MAGST}
- {1288450800 39600 0 MAGT}
- {1301151600 43200 0 MAGT}
- {1315828800 39600 0 VLAT}
- {1414249200 36000 0 VLAT}
+ {-1579426374 28800 0 +08}
+ {354898800 43200 0 +12}
+ {370699200 39600 0 +11}
+ {386427600 43200 1 +12}
+ {402235200 39600 0 +11}
+ {417963600 43200 1 +12}
+ {433771200 39600 0 +11}
+ {449586000 43200 1 +12}
+ {465318000 39600 0 +11}
+ {481042800 43200 1 +12}
+ {496767600 39600 0 +11}
+ {512492400 43200 1 +12}
+ {528217200 39600 0 +11}
+ {543942000 43200 1 +12}
+ {559666800 39600 0 +11}
+ {575391600 43200 1 +12}
+ {591116400 39600 0 +11}
+ {606841200 43200 1 +12}
+ {622566000 39600 0 +11}
+ {638290800 43200 1 +12}
+ {654620400 39600 0 +11}
+ {670345200 36000 0 +11}
+ {670348800 39600 1 +11}
+ {686073600 36000 0 +10}
+ {695750400 39600 0 +12}
+ {701794800 43200 1 +12}
+ {717519600 39600 0 +11}
+ {733244400 43200 1 +12}
+ {748969200 39600 0 +11}
+ {764694000 43200 1 +12}
+ {780418800 39600 0 +11}
+ {796143600 43200 1 +12}
+ {811868400 39600 0 +11}
+ {828198000 43200 1 +12}
+ {846342000 39600 0 +11}
+ {859647600 43200 1 +12}
+ {877791600 39600 0 +11}
+ {891097200 43200 1 +12}
+ {909241200 39600 0 +11}
+ {922546800 43200 1 +12}
+ {941295600 39600 0 +11}
+ {953996400 43200 1 +12}
+ {972745200 39600 0 +11}
+ {985446000 43200 1 +12}
+ {1004194800 39600 0 +11}
+ {1017500400 43200 1 +12}
+ {1035644400 39600 0 +11}
+ {1048950000 43200 1 +12}
+ {1067094000 39600 0 +11}
+ {1080399600 43200 1 +12}
+ {1099148400 39600 0 +11}
+ {1111849200 43200 1 +12}
+ {1130598000 39600 0 +11}
+ {1143298800 43200 1 +12}
+ {1162047600 39600 0 +11}
+ {1174748400 43200 1 +12}
+ {1193497200 39600 0 +11}
+ {1206802800 43200 1 +12}
+ {1224946800 39600 0 +11}
+ {1238252400 43200 1 +12}
+ {1256396400 39600 0 +11}
+ {1269702000 43200 1 +12}
+ {1288450800 39600 0 +11}
+ {1301151600 43200 0 +12}
+ {1315828800 39600 0 +11}
+ {1414249200 36000 0 +10}
}
diff --git a/library/tzdata/Asia/Vladivostok b/library/tzdata/Asia/Vladivostok
index b279d1c..e8f651c 100644
--- a/library/tzdata/Asia/Vladivostok
+++ b/library/tzdata/Asia/Vladivostok
@@ -2,70 +2,70 @@
set TZData(:Asia/Vladivostok) {
{-9223372036854775808 31651 0 LMT}
- {-1487321251 32400 0 VLAT}
- {-1247562000 36000 0 VLAMMTT}
- {354895200 39600 1 VLAST}
- {370702800 36000 0 VLAT}
- {386431200 39600 1 VLAST}
- {402238800 36000 0 VLAT}
- {417967200 39600 1 VLAST}
- {433774800 36000 0 VLAT}
- {449589600 39600 1 VLAST}
- {465321600 36000 0 VLAT}
- {481046400 39600 1 VLAST}
- {496771200 36000 0 VLAT}
- {512496000 39600 1 VLAST}
- {528220800 36000 0 VLAT}
- {543945600 39600 1 VLAST}
- {559670400 36000 0 VLAT}
- {575395200 39600 1 VLAST}
- {591120000 36000 0 VLAT}
- {606844800 39600 1 VLAST}
- {622569600 36000 0 VLAT}
- {638294400 39600 1 VLAST}
- {654624000 36000 0 VLAT}
- {670348800 32400 0 VLAMMTT}
- {670352400 36000 1 VLAST}
- {686077200 32400 0 VLAT}
- {695754000 36000 0 VLAMMTT}
- {701798400 39600 1 VLAST}
- {717523200 36000 0 VLAT}
- {733248000 39600 1 VLAST}
- {748972800 36000 0 VLAT}
- {764697600 39600 1 VLAST}
- {780422400 36000 0 VLAT}
- {796147200 39600 1 VLAST}
- {811872000 36000 0 VLAT}
- {828201600 39600 1 VLAST}
- {846345600 36000 0 VLAT}
- {859651200 39600 1 VLAST}
- {877795200 36000 0 VLAT}
- {891100800 39600 1 VLAST}
- {909244800 36000 0 VLAT}
- {922550400 39600 1 VLAST}
- {941299200 36000 0 VLAT}
- {954000000 39600 1 VLAST}
- {972748800 36000 0 VLAT}
- {985449600 39600 1 VLAST}
- {1004198400 36000 0 VLAT}
- {1017504000 39600 1 VLAST}
- {1035648000 36000 0 VLAT}
- {1048953600 39600 1 VLAST}
- {1067097600 36000 0 VLAT}
- {1080403200 39600 1 VLAST}
- {1099152000 36000 0 VLAT}
- {1111852800 39600 1 VLAST}
- {1130601600 36000 0 VLAT}
- {1143302400 39600 1 VLAST}
- {1162051200 36000 0 VLAT}
- {1174752000 39600 1 VLAST}
- {1193500800 36000 0 VLAT}
- {1206806400 39600 1 VLAST}
- {1224950400 36000 0 VLAT}
- {1238256000 39600 1 VLAST}
- {1256400000 36000 0 VLAT}
- {1269705600 39600 1 VLAST}
- {1288454400 36000 0 VLAT}
- {1301155200 39600 0 VLAT}
- {1414249200 36000 0 VLAT}
+ {-1487321251 32400 0 +09}
+ {-1247562000 36000 0 +11}
+ {354895200 39600 1 +11}
+ {370702800 36000 0 +10}
+ {386431200 39600 1 +11}
+ {402238800 36000 0 +10}
+ {417967200 39600 1 +11}
+ {433774800 36000 0 +10}
+ {449589600 39600 1 +11}
+ {465321600 36000 0 +10}
+ {481046400 39600 1 +11}
+ {496771200 36000 0 +10}
+ {512496000 39600 1 +11}
+ {528220800 36000 0 +10}
+ {543945600 39600 1 +11}
+ {559670400 36000 0 +10}
+ {575395200 39600 1 +11}
+ {591120000 36000 0 +10}
+ {606844800 39600 1 +11}
+ {622569600 36000 0 +10}
+ {638294400 39600 1 +11}
+ {654624000 36000 0 +10}
+ {670348800 32400 0 +10}
+ {670352400 36000 1 +10}
+ {686077200 32400 0 +09}
+ {695754000 36000 0 +11}
+ {701798400 39600 1 +11}
+ {717523200 36000 0 +10}
+ {733248000 39600 1 +11}
+ {748972800 36000 0 +10}
+ {764697600 39600 1 +11}
+ {780422400 36000 0 +10}
+ {796147200 39600 1 +11}
+ {811872000 36000 0 +10}
+ {828201600 39600 1 +11}
+ {846345600 36000 0 +10}
+ {859651200 39600 1 +11}
+ {877795200 36000 0 +10}
+ {891100800 39600 1 +11}
+ {909244800 36000 0 +10}
+ {922550400 39600 1 +11}
+ {941299200 36000 0 +10}
+ {954000000 39600 1 +11}
+ {972748800 36000 0 +10}
+ {985449600 39600 1 +11}
+ {1004198400 36000 0 +10}
+ {1017504000 39600 1 +11}
+ {1035648000 36000 0 +10}
+ {1048953600 39600 1 +11}
+ {1067097600 36000 0 +10}
+ {1080403200 39600 1 +11}
+ {1099152000 36000 0 +10}
+ {1111852800 39600 1 +11}
+ {1130601600 36000 0 +10}
+ {1143302400 39600 1 +11}
+ {1162051200 36000 0 +10}
+ {1174752000 39600 1 +11}
+ {1193500800 36000 0 +10}
+ {1206806400 39600 1 +11}
+ {1224950400 36000 0 +10}
+ {1238256000 39600 1 +11}
+ {1256400000 36000 0 +10}
+ {1269705600 39600 1 +11}
+ {1288454400 36000 0 +10}
+ {1301155200 39600 0 +11}
+ {1414249200 36000 0 +10}
}
diff --git a/library/tzdata/Asia/Yakutsk b/library/tzdata/Asia/Yakutsk
index 0074379..8ee153a 100644
--- a/library/tzdata/Asia/Yakutsk
+++ b/library/tzdata/Asia/Yakutsk
@@ -2,70 +2,70 @@
set TZData(:Asia/Yakutsk) {
{-9223372036854775808 31138 0 LMT}
- {-1579423138 28800 0 YAKT}
- {-1247558400 32400 0 YAKMMTT}
- {354898800 36000 1 YAKST}
- {370706400 32400 0 YAKT}
- {386434800 36000 1 YAKST}
- {402242400 32400 0 YAKT}
- {417970800 36000 1 YAKST}
- {433778400 32400 0 YAKT}
- {449593200 36000 1 YAKST}
- {465325200 32400 0 YAKT}
- {481050000 36000 1 YAKST}
- {496774800 32400 0 YAKT}
- {512499600 36000 1 YAKST}
- {528224400 32400 0 YAKT}
- {543949200 36000 1 YAKST}
- {559674000 32400 0 YAKT}
- {575398800 36000 1 YAKST}
- {591123600 32400 0 YAKT}
- {606848400 36000 1 YAKST}
- {622573200 32400 0 YAKT}
- {638298000 36000 1 YAKST}
- {654627600 32400 0 YAKT}
- {670352400 28800 0 YAKMMTT}
- {670356000 32400 1 YAKST}
- {686080800 28800 0 YAKT}
- {695757600 32400 0 YAKMMTT}
- {701802000 36000 1 YAKST}
- {717526800 32400 0 YAKT}
- {733251600 36000 1 YAKST}
- {748976400 32400 0 YAKT}
- {764701200 36000 1 YAKST}
- {780426000 32400 0 YAKT}
- {796150800 36000 1 YAKST}
- {811875600 32400 0 YAKT}
- {828205200 36000 1 YAKST}
- {846349200 32400 0 YAKT}
- {859654800 36000 1 YAKST}
- {877798800 32400 0 YAKT}
- {891104400 36000 1 YAKST}
- {909248400 32400 0 YAKT}
- {922554000 36000 1 YAKST}
- {941302800 32400 0 YAKT}
- {954003600 36000 1 YAKST}
- {972752400 32400 0 YAKT}
- {985453200 36000 1 YAKST}
- {1004202000 32400 0 YAKT}
- {1017507600 36000 1 YAKST}
- {1035651600 32400 0 YAKT}
- {1048957200 36000 1 YAKST}
- {1067101200 32400 0 YAKT}
- {1080406800 36000 1 YAKST}
- {1099155600 32400 0 YAKT}
- {1111856400 36000 1 YAKST}
- {1130605200 32400 0 YAKT}
- {1143306000 36000 1 YAKST}
- {1162054800 32400 0 YAKT}
- {1174755600 36000 1 YAKST}
- {1193504400 32400 0 YAKT}
- {1206810000 36000 1 YAKST}
- {1224954000 32400 0 YAKT}
- {1238259600 36000 1 YAKST}
- {1256403600 32400 0 YAKT}
- {1269709200 36000 1 YAKST}
- {1288458000 32400 0 YAKT}
- {1301158800 36000 0 YAKT}
- {1414252800 32400 0 YAKT}
+ {-1579423138 28800 0 +08}
+ {-1247558400 32400 0 +10}
+ {354898800 36000 1 +10}
+ {370706400 32400 0 +09}
+ {386434800 36000 1 +10}
+ {402242400 32400 0 +09}
+ {417970800 36000 1 +10}
+ {433778400 32400 0 +09}
+ {449593200 36000 1 +10}
+ {465325200 32400 0 +09}
+ {481050000 36000 1 +10}
+ {496774800 32400 0 +09}
+ {512499600 36000 1 +10}
+ {528224400 32400 0 +09}
+ {543949200 36000 1 +10}
+ {559674000 32400 0 +09}
+ {575398800 36000 1 +10}
+ {591123600 32400 0 +09}
+ {606848400 36000 1 +10}
+ {622573200 32400 0 +09}
+ {638298000 36000 1 +10}
+ {654627600 32400 0 +09}
+ {670352400 28800 0 +09}
+ {670356000 32400 1 +09}
+ {686080800 28800 0 +08}
+ {695757600 32400 0 +10}
+ {701802000 36000 1 +10}
+ {717526800 32400 0 +09}
+ {733251600 36000 1 +10}
+ {748976400 32400 0 +09}
+ {764701200 36000 1 +10}
+ {780426000 32400 0 +09}
+ {796150800 36000 1 +10}
+ {811875600 32400 0 +09}
+ {828205200 36000 1 +10}
+ {846349200 32400 0 +09}
+ {859654800 36000 1 +10}
+ {877798800 32400 0 +09}
+ {891104400 36000 1 +10}
+ {909248400 32400 0 +09}
+ {922554000 36000 1 +10}
+ {941302800 32400 0 +09}
+ {954003600 36000 1 +10}
+ {972752400 32400 0 +09}
+ {985453200 36000 1 +10}
+ {1004202000 32400 0 +09}
+ {1017507600 36000 1 +10}
+ {1035651600 32400 0 +09}
+ {1048957200 36000 1 +10}
+ {1067101200 32400 0 +09}
+ {1080406800 36000 1 +10}
+ {1099155600 32400 0 +09}
+ {1111856400 36000 1 +10}
+ {1130605200 32400 0 +09}
+ {1143306000 36000 1 +10}
+ {1162054800 32400 0 +09}
+ {1174755600 36000 1 +10}
+ {1193504400 32400 0 +09}
+ {1206810000 36000 1 +10}
+ {1224954000 32400 0 +09}
+ {1238259600 36000 1 +10}
+ {1256403600 32400 0 +09}
+ {1269709200 36000 1 +10}
+ {1288458000 32400 0 +09}
+ {1301158800 36000 0 +10}
+ {1414252800 32400 0 +09}
}
diff --git a/library/tzdata/Asia/Yangon b/library/tzdata/Asia/Yangon
new file mode 100644
index 0000000..40cfa02
--- /dev/null
+++ b/library/tzdata/Asia/Yangon
@@ -0,0 +1,9 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Yangon) {
+ {-9223372036854775808 23080 0 LMT}
+ {-2840163880 23080 0 RMT}
+ {-1577946280 23400 0 BURT}
+ {-873268200 32400 0 JST}
+ {-778410000 23400 0 MMT}
+}
diff --git a/library/tzdata/Asia/Yekaterinburg b/library/tzdata/Asia/Yekaterinburg
index fdd89b0..d2133b1 100644
--- a/library/tzdata/Asia/Yekaterinburg
+++ b/library/tzdata/Asia/Yekaterinburg
@@ -3,70 +3,70 @@
set TZData(:Asia/Yekaterinburg) {
{-9223372036854775808 14553 0 LMT}
{-1688270553 13505 0 PMT}
- {-1592610305 14400 0 SVET}
- {-1247544000 18000 0 SVEMMTT}
- {354913200 21600 1 SVEST}
- {370720800 18000 0 SVET}
- {386449200 21600 1 SVEST}
- {402256800 18000 0 SVET}
- {417985200 21600 1 SVEST}
- {433792800 18000 0 SVET}
- {449607600 21600 1 SVEST}
- {465339600 18000 0 SVET}
- {481064400 21600 1 SVEST}
- {496789200 18000 0 SVET}
- {512514000 21600 1 SVEST}
- {528238800 18000 0 SVET}
- {543963600 21600 1 SVEST}
- {559688400 18000 0 SVET}
- {575413200 21600 1 SVEST}
- {591138000 18000 0 SVET}
- {606862800 21600 1 SVEST}
- {622587600 18000 0 SVET}
- {638312400 21600 1 SVEST}
- {654642000 18000 0 SVET}
- {670366800 14400 0 SVEMMTT}
- {670370400 18000 1 SVEST}
- {686095200 14400 0 SVET}
- {695772000 18000 0 YEKMMTT}
- {701816400 21600 1 YEKST}
- {717541200 18000 0 YEKT}
- {733266000 21600 1 YEKST}
- {748990800 18000 0 YEKT}
- {764715600 21600 1 YEKST}
- {780440400 18000 0 YEKT}
- {796165200 21600 1 YEKST}
- {811890000 18000 0 YEKT}
- {828219600 21600 1 YEKST}
- {846363600 18000 0 YEKT}
- {859669200 21600 1 YEKST}
- {877813200 18000 0 YEKT}
- {891118800 21600 1 YEKST}
- {909262800 18000 0 YEKT}
- {922568400 21600 1 YEKST}
- {941317200 18000 0 YEKT}
- {954018000 21600 1 YEKST}
- {972766800 18000 0 YEKT}
- {985467600 21600 1 YEKST}
- {1004216400 18000 0 YEKT}
- {1017522000 21600 1 YEKST}
- {1035666000 18000 0 YEKT}
- {1048971600 21600 1 YEKST}
- {1067115600 18000 0 YEKT}
- {1080421200 21600 1 YEKST}
- {1099170000 18000 0 YEKT}
- {1111870800 21600 1 YEKST}
- {1130619600 18000 0 YEKT}
- {1143320400 21600 1 YEKST}
- {1162069200 18000 0 YEKT}
- {1174770000 21600 1 YEKST}
- {1193518800 18000 0 YEKT}
- {1206824400 21600 1 YEKST}
- {1224968400 18000 0 YEKT}
- {1238274000 21600 1 YEKST}
- {1256418000 18000 0 YEKT}
- {1269723600 21600 1 YEKST}
- {1288472400 18000 0 YEKT}
- {1301173200 21600 0 YEKT}
- {1414267200 18000 0 YEKT}
+ {-1592610305 14400 0 +04}
+ {-1247544000 18000 0 +06}
+ {354913200 21600 1 +06}
+ {370720800 18000 0 +05}
+ {386449200 21600 1 +06}
+ {402256800 18000 0 +05}
+ {417985200 21600 1 +06}
+ {433792800 18000 0 +05}
+ {449607600 21600 1 +06}
+ {465339600 18000 0 +05}
+ {481064400 21600 1 +06}
+ {496789200 18000 0 +05}
+ {512514000 21600 1 +06}
+ {528238800 18000 0 +05}
+ {543963600 21600 1 +06}
+ {559688400 18000 0 +05}
+ {575413200 21600 1 +06}
+ {591138000 18000 0 +05}
+ {606862800 21600 1 +06}
+ {622587600 18000 0 +05}
+ {638312400 21600 1 +06}
+ {654642000 18000 0 +05}
+ {670366800 14400 0 +05}
+ {670370400 18000 1 +05}
+ {686095200 14400 0 +04}
+ {695772000 18000 0 +06}
+ {701816400 21600 1 +06}
+ {717541200 18000 0 +05}
+ {733266000 21600 1 +06}
+ {748990800 18000 0 +05}
+ {764715600 21600 1 +06}
+ {780440400 18000 0 +05}
+ {796165200 21600 1 +06}
+ {811890000 18000 0 +05}
+ {828219600 21600 1 +06}
+ {846363600 18000 0 +05}
+ {859669200 21600 1 +06}
+ {877813200 18000 0 +05}
+ {891118800 21600 1 +06}
+ {909262800 18000 0 +05}
+ {922568400 21600 1 +06}
+ {941317200 18000 0 +05}
+ {954018000 21600 1 +06}
+ {972766800 18000 0 +05}
+ {985467600 21600 1 +06}
+ {1004216400 18000 0 +05}
+ {1017522000 21600 1 +06}
+ {1035666000 18000 0 +05}
+ {1048971600 21600 1 +06}
+ {1067115600 18000 0 +05}
+ {1080421200 21600 1 +06}
+ {1099170000 18000 0 +05}
+ {1111870800 21600 1 +06}
+ {1130619600 18000 0 +05}
+ {1143320400 21600 1 +06}
+ {1162069200 18000 0 +05}
+ {1174770000 21600 1 +06}
+ {1193518800 18000 0 +05}
+ {1206824400 21600 1 +06}
+ {1224968400 18000 0 +05}
+ {1238274000 21600 1 +06}
+ {1256418000 18000 0 +05}
+ {1269723600 21600 1 +06}
+ {1288472400 18000 0 +05}
+ {1301173200 21600 0 +06}
+ {1414267200 18000 0 +05}
}
diff --git a/library/tzdata/Asia/Yerevan b/library/tzdata/Asia/Yerevan
index c552403..0ffb69e 100644
--- a/library/tzdata/Asia/Yerevan
+++ b/library/tzdata/Asia/Yerevan
@@ -2,69 +2,68 @@
set TZData(:Asia/Yerevan) {
{-9223372036854775808 10680 0 LMT}
- {-1441162680 10800 0 YERT}
- {-405140400 14400 0 YERT}
- {354916800 18000 1 YERST}
- {370724400 14400 0 YERT}
- {386452800 18000 1 YERST}
- {402260400 14400 0 YERT}
- {417988800 18000 1 YERST}
- {433796400 14400 0 YERT}
- {449611200 18000 1 YERST}
- {465343200 14400 0 YERT}
- {481068000 18000 1 YERST}
- {496792800 14400 0 YERT}
- {512517600 18000 1 YERST}
- {528242400 14400 0 YERT}
- {543967200 18000 1 YERST}
- {559692000 14400 0 YERT}
- {575416800 18000 1 YERST}
- {591141600 14400 0 YERT}
- {606866400 18000 1 YERST}
- {622591200 14400 0 YERT}
- {638316000 18000 1 YERST}
- {654645600 14400 0 YERT}
- {670370400 14400 1 YERST}
- {685569600 14400 0 AMST}
- {686098800 10800 0 AMT}
- {701823600 14400 1 AMST}
- {717548400 10800 0 AMT}
- {733273200 14400 1 AMST}
- {748998000 10800 0 AMT}
- {764722800 14400 1 AMST}
- {780447600 10800 0 AMT}
- {796172400 14400 1 AMST}
- {811897200 14400 0 AMT}
- {852062400 14400 0 AMT}
- {859672800 18000 1 AMST}
- {877816800 14400 0 AMT}
- {891122400 18000 1 AMST}
- {909266400 14400 0 AMT}
- {922572000 18000 1 AMST}
- {941320800 14400 0 AMT}
- {954021600 18000 1 AMST}
- {972770400 14400 0 AMT}
- {985471200 18000 1 AMST}
- {1004220000 14400 0 AMT}
- {1017525600 18000 1 AMST}
- {1035669600 14400 0 AMT}
- {1048975200 18000 1 AMST}
- {1067119200 14400 0 AMT}
- {1080424800 18000 1 AMST}
- {1099173600 14400 0 AMT}
- {1111874400 18000 1 AMST}
- {1130623200 14400 0 AMT}
- {1143324000 18000 1 AMST}
- {1162072800 14400 0 AMT}
- {1174773600 18000 1 AMST}
- {1193522400 14400 0 AMT}
- {1206828000 18000 1 AMST}
- {1224972000 14400 0 AMT}
- {1238277600 18000 1 AMST}
- {1256421600 14400 0 AMT}
- {1269727200 18000 1 AMST}
- {1288476000 14400 0 AMT}
- {1301176800 18000 1 AMST}
- {1319925600 14400 0 AMT}
- {1328731200 14400 0 AMT}
+ {-1441162680 10800 0 +03}
+ {-405140400 14400 0 +04}
+ {354916800 18000 1 +05}
+ {370724400 14400 0 +04}
+ {386452800 18000 1 +05}
+ {402260400 14400 0 +04}
+ {417988800 18000 1 +05}
+ {433796400 14400 0 +04}
+ {449611200 18000 1 +05}
+ {465343200 14400 0 +04}
+ {481068000 18000 1 +05}
+ {496792800 14400 0 +04}
+ {512517600 18000 1 +05}
+ {528242400 14400 0 +04}
+ {543967200 18000 1 +05}
+ {559692000 14400 0 +04}
+ {575416800 18000 1 +05}
+ {591141600 14400 0 +04}
+ {606866400 18000 1 +05}
+ {622591200 14400 0 +04}
+ {638316000 18000 1 +05}
+ {654645600 14400 0 +04}
+ {670370400 10800 0 +03}
+ {670374000 14400 1 +04}
+ {686098800 10800 0 +03}
+ {701823600 14400 1 +04}
+ {717548400 10800 0 +03}
+ {733273200 14400 1 +04}
+ {748998000 10800 0 +03}
+ {764722800 14400 1 +04}
+ {780447600 10800 0 +03}
+ {796172400 14400 1 +04}
+ {811897200 14400 0 +04}
+ {852062400 14400 0 +04}
+ {859672800 18000 1 +05}
+ {877816800 14400 0 +04}
+ {891122400 18000 1 +05}
+ {909266400 14400 0 +04}
+ {922572000 18000 1 +05}
+ {941320800 14400 0 +04}
+ {954021600 18000 1 +05}
+ {972770400 14400 0 +04}
+ {985471200 18000 1 +05}
+ {1004220000 14400 0 +04}
+ {1017525600 18000 1 +05}
+ {1035669600 14400 0 +04}
+ {1048975200 18000 1 +05}
+ {1067119200 14400 0 +04}
+ {1080424800 18000 1 +05}
+ {1099173600 14400 0 +04}
+ {1111874400 18000 1 +05}
+ {1130623200 14400 0 +04}
+ {1143324000 18000 1 +05}
+ {1162072800 14400 0 +04}
+ {1174773600 18000 1 +05}
+ {1193522400 14400 0 +04}
+ {1206828000 18000 1 +05}
+ {1224972000 14400 0 +04}
+ {1238277600 18000 1 +05}
+ {1256421600 14400 0 +04}
+ {1269727200 18000 1 +05}
+ {1288476000 14400 0 +04}
+ {1301176800 18000 1 +05}
+ {1319925600 14400 0 +04}
}
diff --git a/library/tzdata/Etc/GMT+1 b/library/tzdata/Etc/GMT+1
index 12f97ba..70d39cf 100644
--- a/library/tzdata/Etc/GMT+1
+++ b/library/tzdata/Etc/GMT+1
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT+1) {
- {-9223372036854775808 -3600 0 GMT+1}
+ {-9223372036854775808 -3600 0 -01}
}
diff --git a/library/tzdata/Etc/GMT+10 b/library/tzdata/Etc/GMT+10
index 6ea50bb..9165a08 100644
--- a/library/tzdata/Etc/GMT+10
+++ b/library/tzdata/Etc/GMT+10
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT+10) {
- {-9223372036854775808 -36000 0 GMT+10}
+ {-9223372036854775808 -36000 0 -10}
}
diff --git a/library/tzdata/Etc/GMT+11 b/library/tzdata/Etc/GMT+11
index c91b169..a1aaf74 100644
--- a/library/tzdata/Etc/GMT+11
+++ b/library/tzdata/Etc/GMT+11
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT+11) {
- {-9223372036854775808 -39600 0 GMT+11}
+ {-9223372036854775808 -39600 0 -11}
}
diff --git a/library/tzdata/Etc/GMT+12 b/library/tzdata/Etc/GMT+12
index 29a4cee..d2c082a 100644
--- a/library/tzdata/Etc/GMT+12
+++ b/library/tzdata/Etc/GMT+12
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT+12) {
- {-9223372036854775808 -43200 0 GMT+12}
+ {-9223372036854775808 -43200 0 -12}
}
diff --git a/library/tzdata/Etc/GMT+2 b/library/tzdata/Etc/GMT+2
index 8c6b526..46cca7d 100644
--- a/library/tzdata/Etc/GMT+2
+++ b/library/tzdata/Etc/GMT+2
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT+2) {
- {-9223372036854775808 -7200 0 GMT+2}
+ {-9223372036854775808 -7200 0 -02}
}
diff --git a/library/tzdata/Etc/GMT+3 b/library/tzdata/Etc/GMT+3
index 862571d..e1e3001 100644
--- a/library/tzdata/Etc/GMT+3
+++ b/library/tzdata/Etc/GMT+3
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT+3) {
- {-9223372036854775808 -10800 0 GMT+3}
+ {-9223372036854775808 -10800 0 -03}
}
diff --git a/library/tzdata/Etc/GMT+4 b/library/tzdata/Etc/GMT+4
index a933bbc..32afa24 100644
--- a/library/tzdata/Etc/GMT+4
+++ b/library/tzdata/Etc/GMT+4
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT+4) {
- {-9223372036854775808 -14400 0 GMT+4}
+ {-9223372036854775808 -14400 0 -04}
}
diff --git a/library/tzdata/Etc/GMT+5 b/library/tzdata/Etc/GMT+5
index 80cc25c..747abf5 100644
--- a/library/tzdata/Etc/GMT+5
+++ b/library/tzdata/Etc/GMT+5
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT+5) {
- {-9223372036854775808 -18000 0 GMT+5}
+ {-9223372036854775808 -18000 0 -05}
}
diff --git a/library/tzdata/Etc/GMT+6 b/library/tzdata/Etc/GMT+6
index bc57bd6..1096839 100644
--- a/library/tzdata/Etc/GMT+6
+++ b/library/tzdata/Etc/GMT+6
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT+6) {
- {-9223372036854775808 -21600 0 GMT+6}
+ {-9223372036854775808 -21600 0 -06}
}
diff --git a/library/tzdata/Etc/GMT+7 b/library/tzdata/Etc/GMT+7
index d419eb9..6d47863 100644
--- a/library/tzdata/Etc/GMT+7
+++ b/library/tzdata/Etc/GMT+7
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT+7) {
- {-9223372036854775808 -25200 0 GMT+7}
+ {-9223372036854775808 -25200 0 -07}
}
diff --git a/library/tzdata/Etc/GMT+8 b/library/tzdata/Etc/GMT+8
index 705ad40..33c0f69 100644
--- a/library/tzdata/Etc/GMT+8
+++ b/library/tzdata/Etc/GMT+8
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT+8) {
- {-9223372036854775808 -28800 0 GMT+8}
+ {-9223372036854775808 -28800 0 -08}
}
diff --git a/library/tzdata/Etc/GMT+9 b/library/tzdata/Etc/GMT+9
index 4086639..4119bf4 100644
--- a/library/tzdata/Etc/GMT+9
+++ b/library/tzdata/Etc/GMT+9
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT+9) {
- {-9223372036854775808 -32400 0 GMT+9}
+ {-9223372036854775808 -32400 0 -09}
}
diff --git a/library/tzdata/Etc/GMT-1 b/library/tzdata/Etc/GMT-1
index a44dd1f..e7ac44b 100644
--- a/library/tzdata/Etc/GMT-1
+++ b/library/tzdata/Etc/GMT-1
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-1) {
- {-9223372036854775808 3600 0 GMT-1}
+ {-9223372036854775808 3600 0 +01}
}
diff --git a/library/tzdata/Etc/GMT-10 b/library/tzdata/Etc/GMT-10
index 1c50d01..fdbd1e3 100644
--- a/library/tzdata/Etc/GMT-10
+++ b/library/tzdata/Etc/GMT-10
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-10) {
- {-9223372036854775808 36000 0 GMT-10}
+ {-9223372036854775808 36000 0 +10}
}
diff --git a/library/tzdata/Etc/GMT-11 b/library/tzdata/Etc/GMT-11
index d07710f..4b28ad0 100644
--- a/library/tzdata/Etc/GMT-11
+++ b/library/tzdata/Etc/GMT-11
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-11) {
- {-9223372036854775808 39600 0 GMT-11}
+ {-9223372036854775808 39600 0 +11}
}
diff --git a/library/tzdata/Etc/GMT-12 b/library/tzdata/Etc/GMT-12
index a23b98d..594bac3 100644
--- a/library/tzdata/Etc/GMT-12
+++ b/library/tzdata/Etc/GMT-12
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-12) {
- {-9223372036854775808 43200 0 GMT-12}
+ {-9223372036854775808 43200 0 +12}
}
diff --git a/library/tzdata/Etc/GMT-13 b/library/tzdata/Etc/GMT-13
index 1a6700a..f61159e 100644
--- a/library/tzdata/Etc/GMT-13
+++ b/library/tzdata/Etc/GMT-13
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-13) {
- {-9223372036854775808 46800 0 GMT-13}
+ {-9223372036854775808 46800 0 +13}
}
diff --git a/library/tzdata/Etc/GMT-14 b/library/tzdata/Etc/GMT-14
index 3707e21..493800f 100644
--- a/library/tzdata/Etc/GMT-14
+++ b/library/tzdata/Etc/GMT-14
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-14) {
- {-9223372036854775808 50400 0 GMT-14}
+ {-9223372036854775808 50400 0 +14}
}
diff --git a/library/tzdata/Etc/GMT-2 b/library/tzdata/Etc/GMT-2
index f9dea16..51fdbed 100644
--- a/library/tzdata/Etc/GMT-2
+++ b/library/tzdata/Etc/GMT-2
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-2) {
- {-9223372036854775808 7200 0 GMT-2}
+ {-9223372036854775808 7200 0 +02}
}
diff --git a/library/tzdata/Etc/GMT-3 b/library/tzdata/Etc/GMT-3
index 99145b8..7aed39d 100644
--- a/library/tzdata/Etc/GMT-3
+++ b/library/tzdata/Etc/GMT-3
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-3) {
- {-9223372036854775808 10800 0 GMT-3}
+ {-9223372036854775808 10800 0 +03}
}
diff --git a/library/tzdata/Etc/GMT-4 b/library/tzdata/Etc/GMT-4
index 27b4fec..6ca6372 100644
--- a/library/tzdata/Etc/GMT-4
+++ b/library/tzdata/Etc/GMT-4
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-4) {
- {-9223372036854775808 14400 0 GMT-4}
+ {-9223372036854775808 14400 0 +04}
}
diff --git a/library/tzdata/Etc/GMT-5 b/library/tzdata/Etc/GMT-5
index dbe3df7..6c47a31 100644
--- a/library/tzdata/Etc/GMT-5
+++ b/library/tzdata/Etc/GMT-5
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-5) {
- {-9223372036854775808 18000 0 GMT-5}
+ {-9223372036854775808 18000 0 +05}
}
diff --git a/library/tzdata/Etc/GMT-6 b/library/tzdata/Etc/GMT-6
index 414dbfa..202e7f8 100644
--- a/library/tzdata/Etc/GMT-6
+++ b/library/tzdata/Etc/GMT-6
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-6) {
- {-9223372036854775808 21600 0 GMT-6}
+ {-9223372036854775808 21600 0 +06}
}
diff --git a/library/tzdata/Etc/GMT-7 b/library/tzdata/Etc/GMT-7
index 2bd59db..c6deaf3 100644
--- a/library/tzdata/Etc/GMT-7
+++ b/library/tzdata/Etc/GMT-7
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-7) {
- {-9223372036854775808 25200 0 GMT-7}
+ {-9223372036854775808 25200 0 +07}
}
diff --git a/library/tzdata/Etc/GMT-8 b/library/tzdata/Etc/GMT-8
index 7303721..4bed42e 100644
--- a/library/tzdata/Etc/GMT-8
+++ b/library/tzdata/Etc/GMT-8
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-8) {
- {-9223372036854775808 28800 0 GMT-8}
+ {-9223372036854775808 28800 0 +08}
}
diff --git a/library/tzdata/Etc/GMT-9 b/library/tzdata/Etc/GMT-9
index 46e6878..2a7625b 100644
--- a/library/tzdata/Etc/GMT-9
+++ b/library/tzdata/Etc/GMT-9
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Etc/GMT-9) {
- {-9223372036854775808 32400 0 GMT-9}
+ {-9223372036854775808 32400 0 +09}
}
diff --git a/library/tzdata/Europe/Istanbul b/library/tzdata/Europe/Istanbul
index 8eadbc3..f7b0c24 100644
--- a/library/tzdata/Europe/Istanbul
+++ b/library/tzdata/Europe/Istanbul
@@ -57,17 +57,17 @@ set TZData(:Europe/Istanbul) {
{228866400 10800 1 EEST}
{245797200 7200 0 EET}
{260316000 10800 1 EEST}
- {277246800 14400 0 TRST}
- {291769200 14400 1 TRST}
- {308779200 10800 0 TRT}
- {323827200 14400 1 TRST}
- {340228800 10800 0 TRT}
- {354672000 14400 1 TRST}
- {371678400 10800 0 TRT}
- {386121600 14400 1 TRST}
- {403128000 10800 0 TRT}
- {428446800 14400 1 TRST}
- {433886400 10800 0 TRT}
+ {277246800 14400 0 +04}
+ {291769200 14400 1 +04}
+ {308779200 10800 0 +03}
+ {323827200 14400 1 +04}
+ {340228800 10800 0 +03}
+ {354672000 14400 1 +04}
+ {371678400 10800 0 +03}
+ {386121600 14400 1 +04}
+ {403128000 10800 0 +03}
+ {428446800 14400 1 +04}
+ {433886400 10800 0 +03}
{482792400 7200 0 EET}
{482796000 10800 1 EEST}
{496702800 7200 0 EET}
@@ -136,171 +136,5 @@ set TZData(:Europe/Istanbul) {
{1445734800 10800 1 EEST}
{1446944400 7200 0 EET}
{1459040400 10800 1 EEST}
- {1477789200 7200 0 EET}
- {1490490000 10800 1 EEST}
- {1509238800 7200 0 EET}
- {1521939600 10800 1 EEST}
- {1540688400 7200 0 EET}
- {1553994000 10800 1 EEST}
- {1572138000 7200 0 EET}
- {1585443600 10800 1 EEST}
- {1603587600 7200 0 EET}
- {1616893200 10800 1 EEST}
- {1635642000 7200 0 EET}
- {1648342800 10800 1 EEST}
- {1667091600 7200 0 EET}
- {1679792400 10800 1 EEST}
- {1698541200 7200 0 EET}
- {1711846800 10800 1 EEST}
- {1729990800 7200 0 EET}
- {1743296400 10800 1 EEST}
- {1761440400 7200 0 EET}
- {1774746000 10800 1 EEST}
- {1792890000 7200 0 EET}
- {1806195600 10800 1 EEST}
- {1824944400 7200 0 EET}
- {1837645200 10800 1 EEST}
- {1856394000 7200 0 EET}
- {1869094800 10800 1 EEST}
- {1887843600 7200 0 EET}
- {1901149200 10800 1 EEST}
- {1919293200 7200 0 EET}
- {1932598800 10800 1 EEST}
- {1950742800 7200 0 EET}
- {1964048400 10800 1 EEST}
- {1982797200 7200 0 EET}
- {1995498000 10800 1 EEST}
- {2014246800 7200 0 EET}
- {2026947600 10800 1 EEST}
- {2045696400 7200 0 EET}
- {2058397200 10800 1 EEST}
- {2077146000 7200 0 EET}
- {2090451600 10800 1 EEST}
- {2108595600 7200 0 EET}
- {2121901200 10800 1 EEST}
- {2140045200 7200 0 EET}
- {2153350800 10800 1 EEST}
- {2172099600 7200 0 EET}
- {2184800400 10800 1 EEST}
- {2203549200 7200 0 EET}
- {2216250000 10800 1 EEST}
- {2234998800 7200 0 EET}
- {2248304400 10800 1 EEST}
- {2266448400 7200 0 EET}
- {2279754000 10800 1 EEST}
- {2297898000 7200 0 EET}
- {2311203600 10800 1 EEST}
- {2329347600 7200 0 EET}
- {2342653200 10800 1 EEST}
- {2361402000 7200 0 EET}
- {2374102800 10800 1 EEST}
- {2392851600 7200 0 EET}
- {2405552400 10800 1 EEST}
- {2424301200 7200 0 EET}
- {2437606800 10800 1 EEST}
- {2455750800 7200 0 EET}
- {2469056400 10800 1 EEST}
- {2487200400 7200 0 EET}
- {2500506000 10800 1 EEST}
- {2519254800 7200 0 EET}
- {2531955600 10800 1 EEST}
- {2550704400 7200 0 EET}
- {2563405200 10800 1 EEST}
- {2582154000 7200 0 EET}
- {2595459600 10800 1 EEST}
- {2613603600 7200 0 EET}
- {2626909200 10800 1 EEST}
- {2645053200 7200 0 EET}
- {2658358800 10800 1 EEST}
- {2676502800 7200 0 EET}
- {2689808400 10800 1 EEST}
- {2708557200 7200 0 EET}
- {2721258000 10800 1 EEST}
- {2740006800 7200 0 EET}
- {2752707600 10800 1 EEST}
- {2771456400 7200 0 EET}
- {2784762000 10800 1 EEST}
- {2802906000 7200 0 EET}
- {2816211600 10800 1 EEST}
- {2834355600 7200 0 EET}
- {2847661200 10800 1 EEST}
- {2866410000 7200 0 EET}
- {2879110800 10800 1 EEST}
- {2897859600 7200 0 EET}
- {2910560400 10800 1 EEST}
- {2929309200 7200 0 EET}
- {2942010000 10800 1 EEST}
- {2960758800 7200 0 EET}
- {2974064400 10800 1 EEST}
- {2992208400 7200 0 EET}
- {3005514000 10800 1 EEST}
- {3023658000 7200 0 EET}
- {3036963600 10800 1 EEST}
- {3055712400 7200 0 EET}
- {3068413200 10800 1 EEST}
- {3087162000 7200 0 EET}
- {3099862800 10800 1 EEST}
- {3118611600 7200 0 EET}
- {3131917200 10800 1 EEST}
- {3150061200 7200 0 EET}
- {3163366800 10800 1 EEST}
- {3181510800 7200 0 EET}
- {3194816400 10800 1 EEST}
- {3212960400 7200 0 EET}
- {3226266000 10800 1 EEST}
- {3245014800 7200 0 EET}
- {3257715600 10800 1 EEST}
- {3276464400 7200 0 EET}
- {3289165200 10800 1 EEST}
- {3307914000 7200 0 EET}
- {3321219600 10800 1 EEST}
- {3339363600 7200 0 EET}
- {3352669200 10800 1 EEST}
- {3370813200 7200 0 EET}
- {3384118800 10800 1 EEST}
- {3402867600 7200 0 EET}
- {3415568400 10800 1 EEST}
- {3434317200 7200 0 EET}
- {3447018000 10800 1 EEST}
- {3465766800 7200 0 EET}
- {3479072400 10800 1 EEST}
- {3497216400 7200 0 EET}
- {3510522000 10800 1 EEST}
- {3528666000 7200 0 EET}
- {3541971600 10800 1 EEST}
- {3560115600 7200 0 EET}
- {3573421200 10800 1 EEST}
- {3592170000 7200 0 EET}
- {3604870800 10800 1 EEST}
- {3623619600 7200 0 EET}
- {3636320400 10800 1 EEST}
- {3655069200 7200 0 EET}
- {3668374800 10800 1 EEST}
- {3686518800 7200 0 EET}
- {3699824400 10800 1 EEST}
- {3717968400 7200 0 EET}
- {3731274000 10800 1 EEST}
- {3750022800 7200 0 EET}
- {3762723600 10800 1 EEST}
- {3781472400 7200 0 EET}
- {3794173200 10800 1 EEST}
- {3812922000 7200 0 EET}
- {3825622800 10800 1 EEST}
- {3844371600 7200 0 EET}
- {3857677200 10800 1 EEST}
- {3875821200 7200 0 EET}
- {3889126800 10800 1 EEST}
- {3907270800 7200 0 EET}
- {3920576400 10800 1 EEST}
- {3939325200 7200 0 EET}
- {3952026000 10800 1 EEST}
- {3970774800 7200 0 EET}
- {3983475600 10800 1 EEST}
- {4002224400 7200 0 EET}
- {4015530000 10800 1 EEST}
- {4033674000 7200 0 EET}
- {4046979600 10800 1 EEST}
- {4065123600 7200 0 EET}
- {4078429200 10800 1 EEST}
- {4096573200 7200 0 EET}
+ {1473199200 10800 0 +03}
}
diff --git a/library/tzdata/Europe/Kaliningrad b/library/tzdata/Europe/Kaliningrad
index 85add82..e1713ae 100644
--- a/library/tzdata/Europe/Kaliningrad
+++ b/library/tzdata/Europe/Kaliningrad
@@ -80,6 +80,6 @@ set TZData(:Europe/Kaliningrad) {
{1256428800 7200 0 EET}
{1269734400 10800 1 EEST}
{1288483200 7200 0 EET}
- {1301184000 10800 0 FET}
+ {1301184000 10800 0 +03}
{1414278000 7200 0 EET}
}
diff --git a/library/tzdata/Europe/Kirov b/library/tzdata/Europe/Kirov
index 82ffc9e..8762d22 100644
--- a/library/tzdata/Europe/Kirov
+++ b/library/tzdata/Europe/Kirov
@@ -2,7 +2,7 @@
set TZData(:Europe/Kirov) {
{-9223372036854775808 11928 0 LMT}
- {-1593825528 10800 0 +03}
+ {-1593820800 10800 0 +03}
{-1247540400 14400 0 +05}
{354916800 18000 1 +05}
{370724400 14400 0 +04}
diff --git a/library/tzdata/Europe/Minsk b/library/tzdata/Europe/Minsk
index 5e47063..7a6232e 100644
--- a/library/tzdata/Europe/Minsk
+++ b/library/tzdata/Europe/Minsk
@@ -30,10 +30,10 @@ set TZData(:Europe/Minsk) {
{606870000 14400 1 MSD}
{622594800 10800 0 MSK}
{631141200 10800 0 MSK}
- {670374000 10800 1 EEST}
+ {670374000 7200 0 EEMMTT}
+ {670377600 10800 1 EEST}
{686102400 7200 0 EET}
- {701820000 10800 1 EEST}
- {717544800 10800 0 EEST}
+ {701827200 10800 1 EEST}
{717552000 7200 0 EET}
{733276800 10800 1 EEST}
{749001600 7200 0 EET}
@@ -71,6 +71,5 @@ set TZData(:Europe/Minsk) {
{1256428800 7200 0 EET}
{1269734400 10800 1 EEST}
{1288483200 7200 0 EET}
- {1301184000 10800 0 FET}
- {1414274400 10800 0 MSK}
+ {1301184000 10800 0 +03}
}
diff --git a/library/tzdata/Europe/Moscow b/library/tzdata/Europe/Moscow
index 1e2f45b..9b513b1 100644
--- a/library/tzdata/Europe/Moscow
+++ b/library/tzdata/Europe/Moscow
@@ -9,10 +9,10 @@ set TZData(:Europe/Moscow) {
{-1627965079 16279 1 MDST}
{-1618716679 12679 1 MST}
{-1596429079 16279 1 MDST}
- {-1593822679 14400 0 MSD}
+ {-1593820800 14400 0 MSD}
{-1589860800 10800 0 MSK}
{-1542427200 14400 1 MSD}
- {-1539493200 18000 1 MSM}
+ {-1539493200 18000 1 +05}
{-1525323600 14400 1 MSD}
{-1491188400 7200 0 EET}
{-1247536800 10800 0 MSD}
diff --git a/library/tzdata/Europe/Samara b/library/tzdata/Europe/Samara
index 08203c0..8f21c57 100644
--- a/library/tzdata/Europe/Samara
+++ b/library/tzdata/Europe/Samara
@@ -2,72 +2,72 @@
set TZData(:Europe/Samara) {
{-9223372036854775808 12020 0 LMT}
- {-1593825620 10800 0 SAMT}
- {-1247540400 14400 0 SAMT}
- {-1102305600 14400 0 KUYMMTT}
- {354916800 18000 1 KUYST}
- {370724400 14400 0 KUYT}
- {386452800 18000 1 KUYST}
- {402260400 14400 0 KUYT}
- {417988800 18000 1 KUYST}
- {433796400 14400 0 KUYT}
- {449611200 18000 1 KUYST}
- {465343200 14400 0 KUYT}
- {481068000 18000 1 KUYST}
- {496792800 14400 0 KUYT}
- {512517600 18000 1 KUYST}
- {528242400 14400 0 KUYT}
- {543967200 18000 1 KUYST}
- {559692000 14400 0 KUYT}
- {575416800 18000 1 KUYST}
- {591141600 14400 0 KUYT}
- {606866400 10800 0 MSD}
- {606870000 14400 1 MSD}
- {622594800 10800 0 MSK}
- {638319600 14400 1 MSD}
- {654649200 10800 0 MSK}
- {670374000 7200 0 EEMMTT}
- {670377600 10800 1 EEST}
- {686102400 10800 0 SAMT}
- {687916800 14400 0 SAMT}
- {701820000 18000 1 SAMST}
- {717544800 14400 0 SAMT}
- {733269600 18000 1 SAMST}
- {748994400 14400 0 SAMT}
- {764719200 18000 1 SAMST}
- {780444000 14400 0 SAMT}
- {796168800 18000 1 SAMST}
- {811893600 14400 0 SAMT}
- {828223200 18000 1 SAMST}
- {846367200 14400 0 SAMT}
- {859672800 18000 1 SAMST}
- {877816800 14400 0 SAMT}
- {891122400 18000 1 SAMST}
- {909266400 14400 0 SAMT}
- {922572000 18000 1 SAMST}
- {941320800 14400 0 SAMT}
- {954021600 18000 1 SAMST}
- {972770400 14400 0 SAMT}
- {985471200 18000 1 SAMST}
- {1004220000 14400 0 SAMT}
- {1017525600 18000 1 SAMST}
- {1035669600 14400 0 SAMT}
- {1048975200 18000 1 SAMST}
- {1067119200 14400 0 SAMT}
- {1080424800 18000 1 SAMST}
- {1099173600 14400 0 SAMT}
- {1111874400 18000 1 SAMST}
- {1130623200 14400 0 SAMT}
- {1143324000 18000 1 SAMST}
- {1162072800 14400 0 SAMT}
- {1174773600 18000 1 SAMST}
- {1193522400 14400 0 SAMT}
- {1206828000 18000 1 SAMST}
- {1224972000 14400 0 SAMT}
- {1238277600 18000 1 SAMST}
- {1256421600 14400 0 SAMT}
- {1269727200 10800 0 SAMMMTT}
- {1269730800 14400 1 SAMST}
- {1288479600 10800 0 SAMT}
- {1301180400 14400 0 SAMT}
+ {-1593820800 10800 0 +03}
+ {-1247540400 14400 0 +04}
+ {-1102305600 14400 0 +05}
+ {354916800 18000 1 +05}
+ {370724400 14400 0 +04}
+ {386452800 18000 1 +05}
+ {402260400 14400 0 +04}
+ {417988800 18000 1 +05}
+ {433796400 14400 0 +04}
+ {449611200 18000 1 +05}
+ {465343200 14400 0 +04}
+ {481068000 18000 1 +05}
+ {496792800 14400 0 +04}
+ {512517600 18000 1 +05}
+ {528242400 14400 0 +04}
+ {543967200 18000 1 +05}
+ {559692000 14400 0 +04}
+ {575416800 18000 1 +05}
+ {591141600 14400 0 +04}
+ {606866400 10800 0 +04}
+ {606870000 14400 1 +04}
+ {622594800 10800 0 +03}
+ {638319600 14400 1 +04}
+ {654649200 10800 0 +03}
+ {670374000 7200 0 +03}
+ {670377600 10800 1 +03}
+ {686102400 10800 0 +03}
+ {687916800 14400 0 +04}
+ {701820000 18000 1 +05}
+ {717544800 14400 0 +04}
+ {733269600 18000 1 +05}
+ {748994400 14400 0 +04}
+ {764719200 18000 1 +05}
+ {780444000 14400 0 +04}
+ {796168800 18000 1 +05}
+ {811893600 14400 0 +04}
+ {828223200 18000 1 +05}
+ {846367200 14400 0 +04}
+ {859672800 18000 1 +05}
+ {877816800 14400 0 +04}
+ {891122400 18000 1 +05}
+ {909266400 14400 0 +04}
+ {922572000 18000 1 +05}
+ {941320800 14400 0 +04}
+ {954021600 18000 1 +05}
+ {972770400 14400 0 +04}
+ {985471200 18000 1 +05}
+ {1004220000 14400 0 +04}
+ {1017525600 18000 1 +05}
+ {1035669600 14400 0 +04}
+ {1048975200 18000 1 +05}
+ {1067119200 14400 0 +04}
+ {1080424800 18000 1 +05}
+ {1099173600 14400 0 +04}
+ {1111874400 18000 1 +05}
+ {1130623200 14400 0 +04}
+ {1143324000 18000 1 +05}
+ {1162072800 14400 0 +04}
+ {1174773600 18000 1 +05}
+ {1193522400 14400 0 +04}
+ {1206828000 18000 1 +05}
+ {1224972000 14400 0 +04}
+ {1238277600 18000 1 +05}
+ {1256421600 14400 0 +04}
+ {1269727200 10800 0 +04}
+ {1269730800 14400 1 +04}
+ {1288479600 10800 0 +03}
+ {1301180400 14400 0 +04}
}
diff --git a/library/tzdata/Europe/Ulyanovsk b/library/tzdata/Europe/Ulyanovsk
index d5c33b5..8fb3f9e 100644
--- a/library/tzdata/Europe/Ulyanovsk
+++ b/library/tzdata/Europe/Ulyanovsk
@@ -2,7 +2,7 @@
set TZData(:Europe/Ulyanovsk) {
{-9223372036854775808 11616 0 LMT}
- {-1593825216 10800 0 +03}
+ {-1593820800 10800 0 +03}
{-1247540400 14400 0 +05}
{354916800 18000 1 +05}
{370724400 14400 0 +04}
diff --git a/library/tzdata/Europe/Volgograd b/library/tzdata/Europe/Volgograd
index 83996b0..05e1044 100644
--- a/library/tzdata/Europe/Volgograd
+++ b/library/tzdata/Europe/Volgograd
@@ -2,71 +2,70 @@
set TZData(:Europe/Volgograd) {
{-9223372036854775808 10660 0 LMT}
- {-1577761060 10800 0 TSAT}
- {-1411873200 10800 0 STAT}
- {-1247540400 14400 0 STAT}
- {-256881600 14400 0 VOLMMTT}
- {354916800 18000 1 VOLST}
- {370724400 14400 0 VOLT}
- {386452800 18000 1 VOLST}
- {402260400 14400 0 VOLT}
- {417988800 18000 1 VOLST}
- {433796400 14400 0 VOLT}
- {449611200 18000 1 VOLST}
- {465343200 14400 0 VOLT}
- {481068000 18000 1 VOLST}
- {496792800 14400 0 VOLT}
- {512517600 18000 1 VOLST}
- {528242400 14400 0 VOLT}
- {543967200 18000 1 VOLST}
- {559692000 14400 0 VOLT}
- {575416800 10800 0 VOLMMTT}
- {575420400 14400 1 VOLST}
- {591145200 10800 0 VOLT}
- {606870000 14400 1 VOLST}
- {622594800 10800 0 VOLT}
- {638319600 14400 1 VOLST}
- {654649200 10800 0 VOLT}
- {670374000 14400 0 VOLT}
- {701820000 10800 0 MSD}
- {701823600 14400 1 MSD}
- {717548400 10800 0 MSK}
- {733273200 14400 1 MSD}
- {748998000 10800 0 MSK}
- {764722800 14400 1 MSD}
- {780447600 10800 0 MSK}
- {796172400 14400 1 MSD}
- {811897200 10800 0 MSK}
- {828226800 14400 1 MSD}
- {846370800 10800 0 MSK}
- {859676400 14400 1 MSD}
- {877820400 10800 0 MSK}
- {891126000 14400 1 MSD}
- {909270000 10800 0 MSK}
- {922575600 14400 1 MSD}
- {941324400 10800 0 MSK}
- {954025200 14400 1 MSD}
- {972774000 10800 0 MSK}
- {985474800 14400 1 MSD}
- {1004223600 10800 0 MSK}
- {1017529200 14400 1 MSD}
- {1035673200 10800 0 MSK}
- {1048978800 14400 1 MSD}
- {1067122800 10800 0 MSK}
- {1080428400 14400 1 MSD}
- {1099177200 10800 0 MSK}
- {1111878000 14400 1 MSD}
- {1130626800 10800 0 MSK}
- {1143327600 14400 1 MSD}
- {1162076400 10800 0 MSK}
- {1174777200 14400 1 MSD}
- {1193526000 10800 0 MSK}
- {1206831600 14400 1 MSD}
- {1224975600 10800 0 MSK}
- {1238281200 14400 1 MSD}
- {1256425200 10800 0 MSK}
- {1269730800 14400 1 MSD}
- {1288479600 10800 0 MSK}
- {1301180400 14400 0 MSK}
- {1414274400 10800 0 MSK}
+ {-1577761060 10800 0 +03}
+ {-1247540400 14400 0 +04}
+ {-256881600 14400 0 +05}
+ {354916800 18000 1 +05}
+ {370724400 14400 0 +04}
+ {386452800 18000 1 +05}
+ {402260400 14400 0 +04}
+ {417988800 18000 1 +05}
+ {433796400 14400 0 +04}
+ {449611200 18000 1 +05}
+ {465343200 14400 0 +04}
+ {481068000 18000 1 +05}
+ {496792800 14400 0 +04}
+ {512517600 18000 1 +05}
+ {528242400 14400 0 +04}
+ {543967200 18000 1 +05}
+ {559692000 14400 0 +04}
+ {575416800 10800 0 +04}
+ {575420400 14400 1 +04}
+ {591145200 10800 0 +03}
+ {606870000 14400 1 +04}
+ {622594800 10800 0 +03}
+ {638319600 14400 1 +04}
+ {654649200 10800 0 +03}
+ {670374000 14400 0 +04}
+ {701820000 10800 0 +04}
+ {701823600 14400 1 +04}
+ {717548400 10800 0 +03}
+ {733273200 14400 1 +04}
+ {748998000 10800 0 +03}
+ {764722800 14400 1 +04}
+ {780447600 10800 0 +03}
+ {796172400 14400 1 +04}
+ {811897200 10800 0 +03}
+ {828226800 14400 1 +04}
+ {846370800 10800 0 +03}
+ {859676400 14400 1 +04}
+ {877820400 10800 0 +03}
+ {891126000 14400 1 +04}
+ {909270000 10800 0 +03}
+ {922575600 14400 1 +04}
+ {941324400 10800 0 +03}
+ {954025200 14400 1 +04}
+ {972774000 10800 0 +03}
+ {985474800 14400 1 +04}
+ {1004223600 10800 0 +03}
+ {1017529200 14400 1 +04}
+ {1035673200 10800 0 +03}
+ {1048978800 14400 1 +04}
+ {1067122800 10800 0 +03}
+ {1080428400 14400 1 +04}
+ {1099177200 10800 0 +03}
+ {1111878000 14400 1 +04}
+ {1130626800 10800 0 +03}
+ {1143327600 14400 1 +04}
+ {1162076400 10800 0 +03}
+ {1174777200 14400 1 +04}
+ {1193526000 10800 0 +03}
+ {1206831600 14400 1 +04}
+ {1224975600 10800 0 +03}
+ {1238281200 14400 1 +04}
+ {1256425200 10800 0 +03}
+ {1269730800 14400 1 +04}
+ {1288479600 10800 0 +03}
+ {1301180400 14400 0 +04}
+ {1414274400 10800 0 +03}
}
diff --git a/library/tzdata/Indian/Kerguelen b/library/tzdata/Indian/Kerguelen
index b41b85a..93f2d94 100644
--- a/library/tzdata/Indian/Kerguelen
+++ b/library/tzdata/Indian/Kerguelen
@@ -1,6 +1,6 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Indian/Kerguelen) {
- {-9223372036854775808 0 0 zzz}
- {-631152000 18000 0 TFT}
+ {-9223372036854775808 0 0 -00}
+ {-631152000 18000 0 +05}
}
diff --git a/tests/chanio.test b/tests/chanio.test
index 3017e81..075b64e 100644
--- a/tests/chanio.test
+++ b/tests/chanio.test
@@ -4160,12 +4160,20 @@ test chan-io-33.4 {Tcl_Gets with long line} -setup {
} -cleanup {
chan close $f
} -result {abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ}
-test chan-io-33.5 {Tcl_Gets with long line} {
+test chan-io-33.5 {Tcl_Gets with long line} -setup {
+ set f [open $path(test3) w]
+ puts -nonewline $f "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ puts -nonewline $f "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ puts -nonewline $f "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ puts -nonewline $f "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ puts $f "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ close $f
+} -body {
set f [open $path(test3)]
set x [chan gets $f y]
chan close $f
list $x $y
-} {260 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ}
+} -result {260 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ}
test chan-io-33.6 {Tcl_Gets and end of file} -setup {
file delete $path(test3)
set x {}
@@ -6765,7 +6773,12 @@ test chan-io-52.10 {TclCopyChannel & encodings} {fcopy} {
chan close $out
file size $path(utf8-fcopy.txt)
} 5
-test chan-io-52.11 {TclCopyChannel & encodings} {fcopy} {
+test chan-io-52.11 {TclCopyChannel & encodings} -setup {
+ set f [open $path(utf8-fcopy.txt) w]
+ fconfigure $f -encoding utf-8
+ puts $f "\u0410\u0410"
+ close $f
+} -constraints {fcopy} -body {
# binary to encoding => the input has to be in utf-8 to make sense to the
# encoder
set in [open $path(utf8-fcopy.txt) r]
@@ -6777,7 +6790,9 @@ test chan-io-52.11 {TclCopyChannel & encodings} {fcopy} {
chan close $in
chan close $out
file size $path(kyrillic.txt)
-} 3
+} -cleanup {
+ file delete $path(utf8-fcopy.txt)
+} -result 3
test chan-io-53.1 {CopyData} -setup {
file delete $path(test1)
diff --git a/tests/cmdAH.test b/tests/cmdAH.test
index ef933cb..b4ef605 100644
--- a/tests/cmdAH.test
+++ b/tests/cmdAH.test
@@ -141,9 +141,13 @@ test cmdAH-2.6.2 {cd} -constraints {unix nonPortable} -setup {
} -cleanup {
cd $dir
} -result {/}
-test cmdAH-2.6.3 {Tcl_CdObjCmd, bug #3118489} -returnCodes error -body {
+test cmdAH-2.6.3 {Tcl_CdObjCmd, bug #3118489} -setup {
+ set dir [pwd]
+} -returnCodes error -body {
cd .\0
-} -result "couldn't change working directory to \".\0\": no such file or directory"
+} -cleanup {
+ cd $dir
+} -match glob -result "couldn't change working directory to \".\0\": *"
test cmdAH-2.7 {Tcl_ConcatObjCmd} {
concat
} {}
@@ -878,9 +882,10 @@ test cmdAH-18.3 {Tcl_FileObjCmd: executable} {unix testchmod} {
} 1
test cmdAH-18.5 {Tcl_FileObjCmd: executable} -constraints {win} -body {
# On pc, must be a .exe, .com, etc.
- set x [file exe $gorpfile]
+ set x {}
set gorpexes {}
- foreach ext {exe com cmd bat ps1} {
+ foreach ext {exe com cmd bat} {
+ lappend x [file exe nosuchfile.$ext]
set gorpexe [makeFile foo gorp.$ext]
lappend gorpexes $gorpexe
lappend x [file exe $gorpexe] [file exe [string toupper $gorpexe]]
@@ -890,7 +895,7 @@ test cmdAH-18.5 {Tcl_FileObjCmd: executable} -constraints {win} -body {
foreach gorpexe $gorpexes {
removeFile $gorpexe
}
-} -result {0 1 1 1 1 1 1 1 1 1 1}
+} -result {0 1 1 0 1 1 0 1 1 0 1 1}
test cmdAH-18.6 {Tcl_FileObjCmd: executable} {} {
# Directories are always executable.
file exe $dirfile
diff --git a/tests/env.test b/tests/env.test
index 9f59fbc..0dd4f98 100644
--- a/tests/env.test
+++ b/tests/env.test
@@ -19,7 +19,7 @@ if {[lsearch [namespace children] ::tcltest] == -1} {
# Some tests require the "exec" command.
# Skip them if exec is not defined.
testConstraint exec [llength [info commands exec]]
-
+
#
# These tests will run on any platform (and indeed crashed on the Mac). So put
# them before you test for the existance of exec.
@@ -147,6 +147,7 @@ test env-2.2 {adding environment variables} -setup {
} -result {NAME1=test string}
test env-2.3 {adding environment variables} -setup {
encoding system iso8859-1
+ set env(NAME1) "test string"
} -constraints {exec} -body {
set env(NAME2) "more"
getenv
@@ -156,6 +157,8 @@ test env-2.3 {adding environment variables} -setup {
NAME2=more}
test env-2.4 {adding environment variables} -setup {
encoding system iso8859-1
+ set env(NAME1) "test string"
+ set env(NAME2) "more"
} -constraints {exec} -body {
set env(XYZZY) "garbage"
getenv
@@ -165,7 +168,9 @@ test env-2.4 {adding environment variables} -setup {
NAME2=more
XYZZY=garbage}
+set env(NAME1) "test string"
set env(NAME2) "new value"
+set env(XYZZY) "garbage"
test env-3.1 {changing environment variables} -setup {
encoding system iso8859-1
} -constraints {exec} -body {
@@ -177,6 +182,7 @@ test env-3.1 {changing environment variables} -setup {
} -result {NAME1=test string
NAME2=new value
XYZZY=garbage}
+unset -nocomplain env(NAME2)
test env-4.1 {unsetting environment variables: default} -setup {
encoding system iso8859-1
@@ -195,6 +201,7 @@ test env-4.2 {unsetting environment variables} -setup {
unset env(XYZZY)
encoding system $sysenc
} -result {XYZZY=garbage}
+unset -nocomplain env(NAME1) env(XYZZY)
test env-4.3 {setting international environment variables} -setup {
encoding system iso8859-1
} -constraints {exec} -body {
@@ -213,6 +220,7 @@ test env-4.4 {changing international environment variables} -setup {
} -result {\u00a7=\u00a7}
test env-4.5 {unsetting international environment variables} -setup {
encoding system iso8859-1
+ set env(\ua7) \ua7
} -body {
set env(\ub6) \ua7
unset env(\ua7)
@@ -323,7 +331,7 @@ test env-7.3 {[9b4702]: testing existence of env(some_thing) should not destroy
return [info exists ::env(test7_3)]
}}
} -result 1
-
+
# Restore the environment variables at the end of the test.
foreach name [array names env] {
diff --git a/tests/exec.test b/tests/exec.test
index 38927d3..2a4b31e 100644
--- a/tests/exec.test
+++ b/tests/exec.test
@@ -695,9 +695,6 @@ test exec-20.1 {exec .CMD file} -constraints {win} -body {
exec [makeFile "echo %1> $log" exec201.CMD] "Testing exec-20.1"
viewFile $log
} -result "\"Testing exec-20.1\""
-
-
-
# ----------------------------------------------------------------------
# cleanup
diff --git a/tests/fileName.test b/tests/fileName.test
index a19bd1e..387d844 100644
--- a/tests/fileName.test
+++ b/tests/fileName.test
@@ -1468,7 +1468,7 @@ if {[testConstraint testsetplatform]} {
}
test filename-17.2 {windows specific glob with executable} -body {
makeDirectory execglob
- foreach ext {exe com cmd bat ps1 notexecutable} {
+ foreach ext {exe com cmd bat notexecutable} {
makeFile contents execglob/abc.$ext
}
lsort [glob -nocomplain -dir [temporaryDirectory]/execglob -tails -types x *]
@@ -1477,7 +1477,7 @@ test filename-17.2 {windows specific glob with executable} -body {
removeFile execglob/abc.$ext
}
removeDirectory execglob
-} -result {abc.bat abc.cmd abc.com abc.exe abc.ps1}
+} -result {abc.bat abc.cmd abc.com abc.exe}
test filename-17.3 {Bug 2571597} win {
set p /a
file pathtype $p
diff --git a/tests/history.test b/tests/history.test
index 1a255a4..c2d2124 100644
--- a/tests/history.test
+++ b/tests/history.test
@@ -233,6 +233,7 @@ if {[testConstraint history]} {
test history-8.1 {clear option} history {catch {history clear junk}} 1
test history-8.2 {clear option} history {history clear} {}
if {[testConstraint history]} {
+ history clear
history add "Testing"
}
test history-8.3 {clear option} history {history} { 1 Testing}
@@ -248,3 +249,7 @@ test history-9.2 {miscellaneous} history {
# cleanup
::tcltest::cleanupTests
return
+
+# Local Variables:
+# mode: tcl
+# End:
diff --git a/tests/interp.test b/tests/interp.test
index 6c9fb56..ed76f1a 100644
--- a/tests/interp.test
+++ b/tests/interp.test
@@ -71,9 +71,11 @@ test interp-2.2 {basic interpreter creation} {
test interp-2.3 {basic interpreter creation} {
catch {interp create -safe}
} 0
-test interp-2.4 {basic interpreter creation} {
- list [catch {interp create a} msg] $msg
-} {1 {interpreter named "a" already exists, cannot create}}
+test interp-2.4 {basic interpreter creation} -setup {
+ catch {interp create a}
+} -returnCodes error -body {
+ interp create a
+} -result {interpreter named "a" already exists, cannot create}
test interp-2.5 {basic interpreter creation} {
interp create b -safe
} b
@@ -89,11 +91,13 @@ test interp-2.8 {basic interpreter creation} {
test interp-2.9 {basic interpreter creation} {
interp create -safe -- -froboz1
} -froboz1
-test interp-2.10 {basic interpreter creation} {
+test interp-2.10 {basic interpreter creation} -setup {
+ catch {interp create a}
+} -body {
interp create {a x1}
interp create {a x2}
interp create {a x3} -safe
-} {a x3}
+} -result {a x3}
test interp-2.11 {anonymous interps vs existing procs} {
set x [interp create]
regexp "interp(\[0-9]+)" $x dummy thenum
@@ -140,19 +144,26 @@ test interp-3.5 {testing interp exists and interp slaves} -body {
test interp-3.6 {testing interp exists and interp slaves} {
interp exists
} 1
-test interp-3.7 {testing interp exists and interp slaves} {
+test interp-3.7 {testing interp exists and interp slaves} -setup {
+ catch {interp create a}
+} -body {
interp slaves
-} a
+} -result a
test interp-3.8 {testing interp exists and interp slaves} -body {
interp slaves a b c
} -returnCodes error -result {wrong # args: should be "interp slaves ?path?"}
-test interp-3.9 {testing interp exists and interp slaves} {
+test interp-3.9 {testing interp exists and interp slaves} -setup {
+ catch {interp create a}
+} -body {
interp create {a a2} -safe
expr {"a2" in [interp slaves a]}
-} 1
-test interp-3.10 {testing interp exists and interp slaves} {
+} -result 1
+test interp-3.10 {testing interp exists and interp slaves} -setup {
+ catch {interp create a}
+ catch {interp create {a a2}}
+} -body {
interp exists {a a2}
-} 1
+} -result 1
# Part 3: Testing "interp delete"
test interp-3.11 {testing interp delete} {
@@ -222,6 +233,7 @@ test interp-6.3 {testing eval} {
a eval {proc foo {} {expr 3 + 5}}
a eval foo
} 8
+catch {a eval {proc foo {} {expr 3 + 5}}}
test interp-6.4 {testing eval} {
interp eval a foo
} 8
@@ -230,6 +242,7 @@ test interp-6.5 {testing eval} {
interp eval {a x2} {proc frob {} {expr 4 * 9}}
interp eval {a x2} frob
} 36
+catch {interp create {a x2}}
test interp-6.6 {testing eval} -returnCodes error -body {
interp eval {a x2} foo
} -result {invalid command name "foo"}
@@ -243,9 +256,11 @@ proc in_master {args} {
test interp-7.1 {testing basic alias creation} {
a alias foo in_master
} foo
+catch {a alias foo in_master}
test interp-7.2 {testing basic alias creation} {
a alias bar in_master a1 a2 a3
} bar
+catch {a alias bar in_master a1 a2 a3}
# Test 6.3 has been deleted.
test interp-7.3 {testing basic alias creation} {
a alias foo
@@ -476,9 +491,13 @@ test interp-13.4 {testing issafe arg checking} {
} {1 {wrong # args: should be "a issafe"}}
# part 14: testing interp aliases
-test interp-14.1 {testing interp aliases} {
- interp aliases
-} ""
+test interp-14.1 {testing interp aliases} -setup {
+ interp create abc
+} -body {
+ interp eval abc {interp aliases}
+} -cleanup {
+ interp delete abc
+} -result ""
test interp-14.2 {testing interp aliases} {
catch {interp delete a}
interp create a
@@ -587,6 +606,17 @@ test interp-14.10 {testing interp-alias: error messages} -setup {
invoked from within
"a 1"}
+test interp-14.11 {{interp alias} {target named the empty string} {bug 2bf56185}} -setup {
+ set interp [interp create [info cmdcount]]
+ interp eval $interp {
+ proc {} args {return $args}
+ }
+
+} -body {
+ interp alias {} p1 $interp {}
+ p1 one two three
+} -result {one two three}
+
# part 15: testing file sharing
test interp-15.1 {testing file sharing} {
catch {interp delete z}
diff --git a/tests/io.test b/tests/io.test
index 46856b6..6e7420d 100644
--- a/tests/io.test
+++ b/tests/io.test
@@ -44,6 +44,7 @@ testConstraint testfevent [llength [info commands testfevent]]
testConstraint testchannelevent [llength [info commands testchannelevent]]
testConstraint testmainthread [llength [info commands testmainthread]]
testConstraint thread [expr {0 == [catch {package require Thread 2.7-}]}]
+testConstraint testobj [llength [info commands testobj]]
# You need a *very* special environment to do some tests. In
# particular, many file systems do not support large-files...
@@ -4285,6 +4286,13 @@ test io-33.4 {Tcl_Gets with long line} {
close $f
set x
} {abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ}
+set f [open $path(test3) w]
+puts -nonewline $f "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+puts -nonewline $f "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+puts -nonewline $f "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+puts -nonewline $f "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+puts $f "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+close $f
test io-33.5 {Tcl_Gets with long line} {
set f [open $path(test3)]
set x [gets $f y]
@@ -7141,7 +7149,12 @@ test io-52.10 {TclCopyChannel & encodings} {fcopy} {
file size $path(utf8-fcopy.txt)
} 5
-test io-52.11 {TclCopyChannel & encodings} {fcopy} {
+test io-52.11 {TclCopyChannel & encodings} -setup {
+ set out [open $path(utf8-fcopy.txt) w]
+ fconfigure $out -encoding utf-8 -translation lf
+ puts $out "\u0410\u0410"
+ close $out
+} -constraints {fcopy} -body {
# binary to encoding => the input has to be
# in utf-8 to make sense to the encoder
@@ -7157,7 +7170,7 @@ test io-52.11 {TclCopyChannel & encodings} {fcopy} {
close $out
file size $path(kyrillic.txt)
-} 3
+} -result 3
test io-52.12 {coverage of -translation auto} {
file delete $path(test1) $path(test2)
@@ -8626,6 +8639,24 @@ test io-73.5 {effect of eof on encoding end flags} -setup {
removeFile io-73.5
} -result [list 1 1 more\u00a0data 1]
+test io-74.1 {[104f2885bb] improper cache validity check} -setup {
+ set fn [makeFile {} io-74.1]
+ set rfd [open $fn r]
+ testobj freeallvars
+ interp create slave
+} -constraints testobj -body {
+ teststringobj set 1 [string range $rfd 0 end]
+ read [teststringobj get 1]
+ testobj duplicate 1 2
+ interp transfer {} $rfd slave
+ catch {read [teststringobj get 1]}
+ read [teststringobj get 2]
+} -cleanup {
+ interp delete slave
+ testobj freeallvars
+ removeFile io-74.1
+} -returnCodes error -match glob -result {can not find channel named "*"}
+
# ### ### ### ######### ######### #########
# cleanup
diff --git a/tests/load.test b/tests/load.test
index 9536271..7c4b47f 100644
--- a/tests/load.test
+++ b/tests/load.test
@@ -124,9 +124,11 @@ test load-3.2 {error in _Init procedure, slave interpreter} \
test load-4.1 {reloading package into same interpreter} [list $dll $loaded] {
list [catch {load [file join $testDir pkga$ext] pkga} msg] $msg
} {0 {}}
-test load-4.2 {reloading package into same interpreter} [list $dll $loaded] {
- list [catch {load [file join $testDir pkga$ext] pkgb} msg] $msg
-} [list 1 "file \"[file join $testDir pkga$ext]\" is already loaded for package \"Pkga\""]
+test load-4.2 {reloading package into same interpreter} -setup {
+ catch {load [file join $testDir pkga$ext] pkga}
+} -constraints [list $dll $loaded] -returnCodes error -body {
+ load [file join $testDir pkga$ext] pkgb
+} -result "file \"[file join $testDir pkga$ext]\" is already loaded for package \"Pkga\""
test load-5.1 {file name not specified and no static package: pick default} \
[list $dll $loaded] {
@@ -169,26 +171,40 @@ test load-7.3 {Tcl_StaticPackage procedure} [list teststaticpkg] {
load {} More
set x
} {not loaded}
-test load-7.4 {Tcl_StaticPackage procedure, redundant calls} \
- [list teststaticpkg $dll $loaded] {
- teststaticpkg Double 0 1
- teststaticpkg Double 0 1
- info loaded
- } [concat [list {{} Double} {{} More} {{} Another} {{} Test} [list [file join $testDir pkge$ext] Pkge] [list [file join $testDir pkgb$ext] Pkgb] [list [file join $testDir pkga$ext] Pkga]] $alreadyTotalLoaded]
+catch {load [file join $testDir pkga$ext] pkga}
+catch {load [file join $testDir pkgb$ext] pkgb}
+catch {load [file join $testDir pkge$ext] pkge}
+set currentRealPackages [list [list [file join $testDir pkge$ext] Pkge] [list [file join $testDir pkgb$ext] Pkgb] [list [file join $testDir pkga$ext] Pkga]]
+test load-7.4 {Tcl_StaticPackage procedure, redundant calls} -setup {
+ teststaticpkg Test 1 0
+ teststaticpkg Another 0 0
+ teststaticpkg More 0 1
+} -constraints [list teststaticpkg $dll $loaded] -body {
+ teststaticpkg Double 0 1
+ teststaticpkg Double 0 1
+ info loaded
+} -result [list {{} Double} {{} More} {{} Another} {{} Test} {*}$currentRealPackages {*}$alreadyTotalLoaded]
+teststaticpkg Test 1 1
+teststaticpkg Another 0 1
+teststaticpkg More 0 1
+teststaticpkg Double 0 1
test load-8.1 {TclGetLoadedPackages procedure} [list teststaticpkg $dll $loaded] {
- info loaded
-} [concat [list {{} Double} {{} More} {{} Another} {{} Test} [list [file join $testDir pkge$ext] Pkge] [list [file join $testDir pkgb$ext] Pkgb] [list [file join $testDir pkga$ext] Pkga]] $alreadyTotalLoaded]
-test load-8.2 {TclGetLoadedPackages procedure} [list teststaticpkg] {
- list [catch {info loaded gorp} msg] $msg
-} {1 {could not find interpreter "gorp"}}
-test load-8.3 {TclGetLoadedPackages procedure} [list teststaticpkg $dll $loaded] {
- list [info loaded {}] [info loaded child]
-} [list [concat [list {{} Double} {{} More} {{} Another} {{} Test} [list [file join $testDir pkga$ext] Pkga]] $alreadyLoaded] [list {{} Test} [list [file join $testDir pkgb$ext] Pkgb]]]
+ lsort -index 1 [info loaded]
+} [lsort -index 1 [list {{} Double} {{} More} {{} Another} {{} Test} {*}$currentRealPackages {*}$alreadyTotalLoaded]]
+test load-8.2 {TclGetLoadedPackages procedure} -body {
+ info loaded gorp
+} -returnCodes error -result {could not find interpreter "gorp"}
+test load-8.3a {TclGetLoadedPackages procedure} [list teststaticpkg $dll $loaded] {
+ lsort -index 1 [info loaded {}]
+} [lsort -index 1 [list {{} Double} {{} More} {{} Another} {{} Test} [list [file join $testDir pkga$ext] Pkga] [list [file join $testDir pkgb$ext] Pkgb] {*}$alreadyLoaded]]
+test load-8.3b {TclGetLoadedPackages procedure} [list teststaticpkg $dll $loaded] {
+ lsort -index 1 [info loaded child]
+} [lsort -index 1 [list {{} Test} [list [file join $testDir pkgb$ext] Pkgb]]]
test load-8.4 {TclGetLoadedPackages procedure} [list $dll $loaded teststaticpkg] {
load [file join $testDir pkgb$ext] pkgb
- list [info loaded {}] [lsort [info commands pkgb_*]]
-} [list [concat [list [list [file join $testDir pkgb$ext] Pkgb] {{} Double} {{} More} {{} Another} {{} Test} [list [file join $testDir pkga$ext] Pkga]] $alreadyLoaded] {pkgb_demo pkgb_sub pkgb_unsafe}]
+ list [lsort -index 1 [info loaded {}]] [lsort [info commands pkgb_*]]
+} [list [lsort -index 1 [concat [list [list [file join $testDir pkgb$ext] Pkgb] {{} Double} {{} More} {{} Another} {{} Test} [list [file join $testDir pkga$ext] Pkga]] $alreadyLoaded]] {pkgb_demo pkgb_sub pkgb_unsafe}]
interp delete child
test load-9.1 {Tcl_StaticPackage, load already-loaded package into another interp} \
diff --git a/tests/msgcat.test b/tests/msgcat.test
index f50ebfb..e69220e 100644
--- a/tests/msgcat.test
+++ b/tests/msgcat.test
@@ -68,6 +68,7 @@ namespace eval ::msgcat::test {
set result c
}
}
+
test msgcat-0.$count [list \
locale initialization from environment variables $setVars \
] -setup {
@@ -974,6 +975,9 @@ namespace eval ::msgcat::test {
set bgerrorsaved [interp bgerror {}]
interp bgerror {} [namespace code callbackproc]
+ variable locale
+ if {![info exist locale]} { set locale [mclocale] }
+
test msgcat-14.1 {invokation loadcmd} -setup {
mcforgetpackage
mclocale $locale
@@ -1068,7 +1072,7 @@ namespace eval ::msgcat::test {
mc k1
} -returnCodes 1\
-result {fail}
-
+
interp bgerror {} $bgerrorsaved
cleanupTests
@@ -1076,3 +1080,6 @@ namespace eval ::msgcat::test {
namespace delete ::msgcat::test
return
+# Local Variables:
+# mode: tcl
+# End:
diff --git a/tests/namespace.test b/tests/namespace.test
index 086baf5..f6f817b 100644
--- a/tests/namespace.test
+++ b/tests/namespace.test
@@ -846,6 +846,7 @@ test namespace-17.1 {Tcl_FindNamespaceVar, absolute name found} -setup {
set ::x
}
} -result {314159}
+variable ::x 314159
test namespace-17.2 {Tcl_FindNamespaceVar, absolute name found} {
namespace eval test_ns_1 {
variable x 777
@@ -889,23 +890,25 @@ test namespace-17.6 {Tcl_FindNamespaceVar, relative name found} -setup {
} -result {777}
test namespace-17.7 {Tcl_FindNamespaceVar, relative name found} {
namespace eval test_ns_1 {
+ variable x 777
unset x
set x ;# must be global x now
}
} {314159}
-test namespace-17.8 {Tcl_FindNamespaceVar, relative name not found} {
+test namespace-17.8 {Tcl_FindNamespaceVar, relative name not found} -body {
namespace eval test_ns_1 {
- list [catch {set wuzzat} msg] $msg
+ set wuzzat
}
-} {1 {can't read "wuzzat": no such variable}}
+} -returnCodes error -result {can't read "wuzzat": no such variable}
test namespace-17.9 {Tcl_FindNamespaceVar, relative name and TCL_GLOBAL_ONLY} {
namespace eval test_ns_1 {
variable a hello
}
set test_ns_1::a
} {hello}
-test namespace-17.10 {Tcl_FindNamespaceVar, interference with cached varNames} {
+test namespace-17.10 {Tcl_FindNamespaceVar, interference with cached varNames} -setup {
namespace eval test_ns_1 {}
+} -body {
proc test_ns {} {
set ::test_ns_1::a 0
}
@@ -916,7 +919,7 @@ test namespace-17.10 {Tcl_FindNamespaceVar, interference with cached varNames} {
namespace eval test_ns_1 set a 1
namespace delete test_ns_1
return $a
-} 1
+} -result 1
catch {unset a}
catch {unset x}
@@ -2356,6 +2359,13 @@ test namespace-50.8 {[f961d7d1dd]} -setup {
rename e {}
rename target {}
}
+test namespace-50.9 {[cea0344a51]} -body {
+ namespace eval foo {
+ namespace eval bar {
+ namespace delete foo
+ }
+ }
+} -returnCodes error -result {unknown namespace "foo" in namespace delete command}
test namespace-51.1 {name resolution path control} -body {
namespace eval ::test_ns_1 {
diff --git a/tests/obj.test b/tests/obj.test
index 7bf00f7..a8d2d20 100644
--- a/tests/obj.test
+++ b/tests/obj.test
@@ -26,7 +26,6 @@ testConstraint wideBiggerThanInt [expr {wide(0x80000000) != int(0x80000000)}]
test obj-1.1 {Tcl_AppendAllObjTypes, and InitTypeTable, Tcl_RegisterObjType} testobj {
set r 1
foreach {t} {
- {array search}
bytearray
bytecode
cmdName
diff --git a/tests/parseOld.test b/tests/parseOld.test
index a6e07a2b..504d063 100644
--- a/tests/parseOld.test
+++ b/tests/parseOld.test
@@ -13,7 +13,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-package require tcltest
+package require tcltest 2
namespace import ::tcltest::*
::tcltest::loadTestedCommands
@@ -37,7 +37,7 @@ proc getArgs args {
global argv
set argv $args
}
-
+
# Basic argument parsing.
test parseOld-1.1 {basic argument parsing} {
@@ -296,6 +296,7 @@ test parseOld-8.4 {semi-colons} {
# The following checks are to ensure that the interpreter's result
# gets re-initialized by Tcl_Eval in all the right places.
+set a 22
test parseOld-9.1 {result initialization} {concat abc} abc
test parseOld-9.2 {result initialization} {concat abc; proc foo {} {}} {}
test parseOld-9.3 {result initialization} {concat abc; proc foo {} $a} {}
@@ -408,6 +409,8 @@ test parseOld-11.7 {long values} {
set b [concat 1111 2222 3333 4444 5555 6666 7777 8888 9999 aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii jjjj kkkk llll mmmm nnnn oooo pppp qqqq rrrr ssss tttt uuuu vvvv wwww xxxx yyyy zzzz AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH]
llength $b
} 43
+# Duplicate action of previous test
+llength [set b [concat 1111 2222 3333 4444 5555 6666 7777 8888 9999 aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii jjjj kkkk llll mmmm nnnn oooo pppp qqqq rrrr ssss tttt uuuu vvvv wwww xxxx yyyy zzzz AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH]]
test parseOld-11.8 {long values} {
set b
} $a
@@ -538,8 +541,12 @@ test parseOld-15.4 {TclScriptEnd procedure} {
test parseOld-15.5 {TclScriptEnd procedure} {
info complete "xyz \[abc"
} {0}
-
+
# cleanup
set argv $savedArgv
::tcltest::cleanupTests
return
+
+# Local Variables:
+# mode: tcl
+# End:
diff --git a/tests/resolver.test b/tests/resolver.test
index f3d22e5..9bb4c08 100644
--- a/tests/resolver.test
+++ b/tests/resolver.test
@@ -187,7 +187,7 @@ test resolver-2.1 {compiled var resolver: Bug #3383616} -setup {
# During the compilation the compiled var resolver, the resolve-specific
# var info is allocated, during the execution of the body, the variable is
# fetched and cached.
- x;
+ x
# During later calls, the cached variable is reused.
x
# When the proc is freed, the resolver-specific resolver var info is
@@ -196,6 +196,121 @@ test resolver-2.1 {compiled var resolver: Bug #3383616} -setup {
} -cleanup {
testinterpresolver down
} -result {}
+
+
+#
+# The test resolver-3.1* test bad interactions of resolvers on the "global"
+# (per interp) literal pools. A resolver might resolve a cmd literal depending
+# on a context differently, whereas the cmd literal sharing assumed that the
+# namespace containing the literal solely determines the resolved cmd (and is
+# resolver-agnostic).
+#
+# In order to make the test cases for the per-interpreter cmd literal pool
+# reproducable and to minimize interactions between test cases, we use a slave
+# interpreter per test-case.
+#
+#
+# Testing resolver in namespace-based context "ctx1"
+#
+test resolver-3.1a {
+ interp command resolver,
+ resolve literal "z" in proc "x1" in context "ctx1"
+} -setup {
+
+ interp create i0
+ testinterpresolver up i0
+ i0 eval {
+ proc y {} { return yy }
+ namespace eval ::ns {
+ proc x1 {} { z }
+ }
+ }
+} -constraints testinterpresolver -body {
+
+ set r [i0 eval {namespace eval ::ctx1 {
+ ::ns::x1
+ }}]
+
+ return $r
+} -cleanup {
+ testinterpresolver down i0
+ interp delete i0
+} -result {yy}
+
+#
+# Testing resolver in namespace-based context "ctx2"
+#
+test resolver-3.1b {
+ interp command resolver,
+ resolve literal "z" in proc "x2" in context "ctx2"
+} -setup {
+
+ interp create i0
+ testinterpresolver up i0
+ i0 eval {
+ proc Y {} { return YY }
+ namespace eval ::ns {
+ proc x2 {} { z }
+ }
+ }
+} -constraints testinterpresolver -body {
+
+ set r [i0 eval {namespace eval ::ctx2 {
+ ::ns::x2
+ }}]
+
+ return $r
+} -cleanup {
+ testinterpresolver down i0
+ interp delete i0
+} -result {YY}
+
+#
+# Testing resolver in namespace-based context "ctx1" and "ctx2" in the same
+# interpreter.
+#
+
+test resolver-3.1c {
+ interp command resolver,
+ resolve literal "z" in proc "x1" in context "ctx1",
+ resolve literal "z" in proc "x2" in context "ctx2"
+
+ Test, whether the shared cmd literal created by the first byte-code
+ compilation interacts with the second one.
+} -setup {
+
+ interp create i0
+ testinterpresolver up i0
+
+ i0 eval {
+ proc y {} { return yy }
+ proc Y {} { return YY }
+ namespace eval ::ns {
+ proc x1 {} { z }
+ proc x2 {} { z }
+ }
+ }
+
+} -constraints testinterpresolver -body {
+
+ set r1 [i0 eval {namespace eval ::ctx1 {
+ ::ns::x1
+ }}]
+
+ set r2 [i0 eval {namespace eval ::ctx2 {
+ ::ns::x2
+ }}]
+
+ set r3 [i0 eval {namespace eval ::ctx1 {
+ ::ns::x1
+ }}]
+
+ return [list $r1 $r2 $r3]
+} -cleanup {
+ testinterpresolver down i0
+ interp delete i0
+} -result {yy YY yy}
+
cleanupTests
return
diff --git a/tests/safe.test b/tests/safe.test
index 94c1755..6c9c6c9 100644
--- a/tests/safe.test
+++ b/tests/safe.test
@@ -211,8 +211,8 @@ test safe-7.3 {check that safe subinterpreters work} {
} {ok {} 0}
# test source control on file name
+set i "a"
test safe-8.1 {safe source control on file} -setup {
- set i "a"
catch {safe::interpDelete $i}
} -body {
safe::interpCreate $i
@@ -221,7 +221,6 @@ test safe-8.1 {safe source control on file} -setup {
safe::interpDelete $i
} -result {wrong # args: should be "source ?-encoding E? fileName"}
test safe-8.2 {safe source control on file} -setup {
- set i "a"
catch {safe::interpDelete $i}
} -body {
safe::interpCreate $i
@@ -230,7 +229,6 @@ test safe-8.2 {safe source control on file} -setup {
safe::interpDelete $i
} -result {wrong # args: should be "source ?-encoding E? fileName"}
test safe-8.3 {safe source control on file} -setup {
- set i "a"
catch {safe::interpDelete $i}
set log {}
proc safe-test-log {str} {lappend ::log $str}
@@ -245,7 +243,6 @@ test safe-8.3 {safe source control on file} -setup {
safe::interpDelete $i
} -result {1 {permission denied} {{ERROR for slave a : ".": is a directory}}}
test safe-8.4 {safe source control on file} -setup {
- set i "a"
catch {safe::interpDelete $i}
set log {}
proc safe-test-log {str} {global log; lappend log $str}
@@ -260,7 +257,6 @@ test safe-8.4 {safe source control on file} -setup {
safe::interpDelete $i
} -result {1 {permission denied} {{ERROR for slave a : "/abc/def": not in access_path}}}
test safe-8.5 {safe source control on file} -setup {
- set i "a"
catch {safe::interpDelete $i}
set log {}
proc safe-test-log {str} {global log; lappend log $str}
@@ -279,7 +275,6 @@ test safe-8.5 {safe source control on file} -setup {
safe::interpDelete $i
} -result [list 1 {no such file or directory} [list "ERROR for slave a : [file join [info library] blah]:no such file or directory"]]
test safe-8.6 {safe source control on file} -setup {
- set i "a"
catch {safe::interpDelete $i}
set log {}
proc safe-test-log {str} {global log; lappend log $str}
@@ -296,7 +291,6 @@ test safe-8.6 {safe source control on file} -setup {
safe::interpDelete $i
} -result [list 1 {no such file or directory} [list "ERROR for slave a : [file join [info library] blah.tcl]:no such file or directory"]]
test safe-8.7 {safe source control on file} -setup {
- set i "a"
catch {safe::interpDelete $i}
set log {}
proc safe-test-log {str} {global log; lappend log $str}
@@ -315,7 +309,6 @@ test safe-8.7 {safe source control on file} -setup {
safe::interpDelete $i
} -result [list 1 {no such file or directory} [list "ERROR for slave a : [file join [info library] xxxxxxxxxxx.tcl]:no such file or directory"]]
test safe-8.8 {safe source forbids -rsrc} -setup {
- set i "a"
catch {safe::interpDelete $i}
safe::interpCreate $i
} -body {
@@ -349,8 +342,8 @@ test safe-8.10 {safe source and return} -setup {
removeFile $returnScript
} -result ok
+set i "a"
test safe-9.1 {safe interps' deleteHook} -setup {
- set i "a"
catch {safe::interpDelete $i}
set res {}
} -body {
@@ -365,7 +358,6 @@ test safe-9.1 {safe interps' deleteHook} -setup {
list [interp eval $i exit] $res
} -result {{} {arg1 arg2 a}}
test safe-9.2 {safe interps' error in deleteHook} -setup {
- set i "a"
catch {safe::interpDelete $i}
set res {}
set log {}
@@ -531,14 +523,14 @@ test safe-11.7.1 {testing safe encoding} -setup {
} -body {
catch {interp eval $i encoding convertfrom} m o
dict get $o -errorinfo
-} -returnCodes ok -cleanup {
+} -returnCodes ok -match glob -cleanup {
unset -nocomplain m o
safe::interpDelete $i
} -result {wrong # args: should be "encoding convertfrom ?encoding? data"
while executing
"encoding convertfrom"
invoked from within
-"::interp invokehidden interp1 encoding convertfrom"
+"::interp invokehidden interp* encoding convertfrom"
invoked from within
"encoding convertfrom"
invoked from within
@@ -555,14 +547,14 @@ test safe-11.8.1 {testing safe encoding} -setup {
} -body {
catch {interp eval $i encoding convertto} m o
dict get $o -errorinfo
-} -returnCodes ok -cleanup {
+} -returnCodes ok -match glob -cleanup {
unset -nocomplain m o
safe::interpDelete $i
} -result {wrong # args: should be "encoding convertto ?encoding? data"
while executing
"encoding convertto"
invoked from within
-"::interp invokehidden interp1 encoding convertto"
+"::interp invokehidden interp* encoding convertto"
invoked from within
"encoding convertto"
invoked from within
diff --git a/tests/set-old.test b/tests/set-old.test
index 0e9ca63..93169f1 100644
--- a/tests/set-old.test
+++ b/tests/set-old.test
@@ -14,7 +14,7 @@
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
if {[lsearch [namespace children] ::tcltest] == -1} {
- package require tcltest
+ package require tcltest 2
namespace import -force ::tcltest::*
}
@@ -865,6 +865,8 @@ test set-old-10.13 {array enumeration errors} {
list [catch {array done a b c} msg] $msg
} {1 {wrong # args: should be "array donesearch arrayName searchId"}}
test set-old-10.14 {array enumeration errors} {
+ catch {unset a}
+ set a(a) a
list [catch {array done a b} msg] $msg
} {1 {illegal search identifier "b"}}
test set-old-10.15 {array enumeration errors} {
diff --git a/tests/set.test b/tests/set.test
index 7e4b864..3c87000 100644
--- a/tests/set.test
+++ b/tests/set.test
@@ -22,7 +22,7 @@ testConstraint testset2 [llength [info commands testset2]]
catch {unset x}
catch {unset i}
-
+
test set-1.1 {TclCompileSetCmd: missing variable name} {
list [catch {set} msg] $msg
} {1 {wrong # args: should be "set varName ?newValue?"}}
@@ -39,16 +39,18 @@ test set-1.4 {TclCompileSetCmd: simple variable name in quotes} {
set i 17
list [set "i"] $i
} {17 17}
-test set-1.5 {TclCompileSetCmd: simple variable name in braces} {
+test set-1.5 {TclCompileSetCmd: simple variable name in braces} -setup {
catch {unset {a simple var}}
+} -body {
set {a simple var} 27
list [set {a simple var}] ${a simple var}
-} {27 27}
-test set-1.6 {TclCompileSetCmd: simple array variable name} {
+} -result {27 27}
+test set-1.6 {TclCompileSetCmd: simple array variable name} -setup {
catch {unset a}
+} -body {
set a(foo) 37
list [set a(foo)] $a(foo)
-} {37 37}
+} -result {37 37}
test set-1.7 {TclCompileSetCmd: non-simple (computed) variable name} {
set x "i"
set i 77
@@ -149,22 +151,24 @@ test set-1.14 {TclCompileSetCmd: simple local name, >255 locals} {
}
260locals
} {1234}
-test set-1.15 {TclCompileSetCmd: variable is array} {
+test set-1.15 {TclCompileSetCmd: variable is array} -setup {
catch {unset a}
+} -body {
set x 27
set x [set a(foo) 11]
catch {unset a}
set x
-} 11
-test set-1.16 {TclCompileSetCmd: variable is array, elem substitutions} {
+} -result 11
+test set-1.16 {TclCompileSetCmd: variable is array, elem substitutions} -setup {
catch {unset a}
+} -body {
set i 5
set x 789
set a(foo5) 27
set x [set a(foo$i)]
catch {unset a}
set x
-} 27
+} -result 27
test set-1.17 {TclCompileSetCmd: doing assignment, simple int} {
set i 5
@@ -211,7 +215,7 @@ test set-1.25 {TclCompileSetCmd: var is array, braced (no subs)} {
test set-1.26 {TclCompileSetCmd: various array constructs} {
# Test all kinds of array constructs that TclCompileSetCmd
# may feel inclined to tamper with.
- proc p {} {
+ apply {{} {
set a x
set be(hej) 1 ; # hej
set be($a) 1 ; # x
@@ -230,28 +234,33 @@ test set-1.26 {TclCompileSetCmd: various array constructs} {
set [string range bet 0 1](foo) 1 ; # foo
set be([set be(a:$a)][set b\e($a)]) 1 ; # 51
return [lsort [array names be]]
- }
- p
+ }}
} [lsort {hej x $a x,hej x,x c(x ww a:x hej,1,hej hug {a a} {x ,ugg,hej} x,h"ej
{b c} foo 51}]; # " just a matching end quote
-test set-2.1 {set command: runtime error, bad variable name} {
+test set-2.1 {set command: runtime error, bad variable name} -setup {
unset -nocomplain {"foo}
+} -body {
list [catch {set {"foo}} msg] $msg $::errorInfo
-} {1 {can't read ""foo": no such variable} {can't read ""foo": no such variable
+} -result {1 {can't read ""foo": no such variable} {can't read ""foo": no such variable
while executing
"set {"foo}"}}
-test set-2.2 {set command: runtime error, not array variable} {
- catch {unset b}
+# Stop my editor highlighter " from being confused
+test set-2.2 {set command: runtime error, not array variable} -setup {
+ unset -nocomplain b
+} -body {
set b 44
list [catch {set b(123)} msg] $msg
-} {1 {can't read "b(123)": variable isn't array}}
-test set-2.3 {set command: runtime error, errors in reading variables} {
- catch {unset a}
+} -result {1 {can't read "b(123)": variable isn't array}}
+test set-2.3 {set command: runtime error, errors in reading variables} -setup {
+ unset -nocomplain a
+} -body {
set a(6) 44
list [catch {set a(18)} msg] $msg
-} {1 {can't read "a(18)": no such element in array}}
-test set-2.4 {set command: runtime error, readonly variable} -body {
+} -result {1 {can't read "a(18)": no such element in array}}
+test set-2.4 {set command: runtime error, readonly variable} -setup {
+ unset -nocomplain x
+} -body {
proc readonly args {error "variable is read-only"}
set x 123
trace var x w readonly
@@ -260,12 +269,18 @@ test set-2.4 {set command: runtime error, readonly variable} -body {
while executing
*
"set x 1"}}
-test set-2.5 {set command: runtime error, basic array operations} {
+test set-2.5 {set command: runtime error, basic array operations} -setup {
+ unset -nocomplain a
+} -body {
+ array set a {}
list [catch {set a(other)} msg] $msg
-} {1 {can't read "a(other)": no such element in array}}
-test set-2.6 {set command: runtime error, basic array operations} {
+} -result {1 {can't read "a(other)": no such element in array}}
+test set-2.6 {set command: runtime error, basic array operations} -setup {
+ unset -nocomplain a
+} -body {
+ array set a {}
list [catch {set a} msg] $msg
-} {1 {can't read "a": variable is array}}
+} -result {1 {can't read "a": variable is array}}
# Test the uncompiled version of set
@@ -479,25 +494,29 @@ test set-3.24 {uncompiled set command: too many arguments} {
$z msg
} {wrong # args: should be "set varName ?newValue?"}
-test set-4.1 {uncompiled set command: runtime error, bad variable name} {
+test set-4.1 {uncompiled set command: runtime error, bad variable name} -setup {
unset -nocomplain {"foo}
+} -body {
set z set
list [catch {$z {"foo}} msg] $msg $::errorInfo
-} {1 {can't read ""foo": no such variable} {can't read ""foo": no such variable
+} -result {1 {can't read ""foo": no such variable} {can't read ""foo": no such variable
while executing
"$z {"foo}"}}
-test set-4.2 {uncompiled set command: runtime error, not array variable} {
- set z set
+# Stop my editor highlighter " from being confused
+test set-4.2 {uncompiled set command: runtime error, not array variable} -setup {
catch {unset b}
+} -body {
+ set z set
$z b 44
list [catch {$z b(123)} msg] $msg
-} {1 {can't read "b(123)": variable isn't array}}
-test set-4.3 {uncompiled set command: runtime error, errors in reading variables} {
- set z set
- catch {unset a}
+} -result {1 {can't read "b(123)": variable isn't array}}
+test set-4.3 {uncompiled set command: runtime error, errors in reading variables} -setup {
+ catch {unset a}
+} -body {
+ set z set
$z a(6) 44
list [catch {$z a(18)} msg] $msg
-} {1 {can't read "a(18)": no such element in array}}
+} -result {1 {can't read "a(18)": no such element in array}}
test set-4.4 {uncompiled set command: runtime error, readonly variable} -body {
set z set
proc readonly args {error "variable is read-only"}
@@ -508,27 +527,33 @@ test set-4.4 {uncompiled set command: runtime error, readonly variable} -body {
while executing
*
"$z x 1"}}
-test set-4.5 {uncompiled set command: runtime error, basic array operations} {
+test set-4.5 {uncompiled set command: runtime error, basic array operations} -setup {
+ unset -nocomplain a
+ array set a {}
+} -body {
set z set
list [catch {$z a(other)} msg] $msg
-} {1 {can't read "a(other)": no such element in array}}
-test set-4.6 {set command: runtime error, basic array operations} {
+} -result {1 {can't read "a(other)": no such element in array}}
+test set-4.6 {set command: runtime error, basic array operations} -setup {
+ unset -nocomplain a
+ array set a {}
+} -body {
set z set
list [catch {$z a} msg] $msg
-} {1 {can't read "a": variable is array}}
+} -result {1 {can't read "a": variable is array}}
-test set-5.1 {error on malformed array name} testset2 {
+test set-5.1 {error on malformed array name} -constraints testset2 -setup {
unset -nocomplain z
+} -body {
catch {testset2 z(a) b} msg
catch {testset2 z(b) a} msg1
list $msg $msg1
-} {{can't read "z(a)(b)": variable isn't array} {can't read "z(b)(a)": variable isn't array}}
-
+} -result {{can't read "z(a)(b)": variable isn't array} {can't read "z(b)(a)": variable isn't array}}
# In a mem-debug build, this test will crash unless Bug 3602706 is fixed.
test set-5.2 {Bug 3602706} -body {
testset2 ::tcl_platform not-in-there
} -returnCodes error -result * -match glob
-
+
# cleanup
catch {unset a}
catch {unset b}
@@ -537,3 +562,7 @@ catch {unset x}
catch {unset z}
::tcltest::cleanupTests
return
+
+# Local Variables:
+# mode: tcl
+# End:
diff --git a/tests/socket.test b/tests/socket.test
index 8473602..d43c41c 100644
--- a/tests/socket.test
+++ b/tests/socket.test
@@ -1782,7 +1782,6 @@ test socket_$af-13.1 {Testing use of shared socket between two threads} -body {
set i 0
vwait x
close $f
- thread::wait
}]]
set port [thread::send $serverthread {set listen}]
set s [socket $localhost $port]
diff --git a/tests/tcltest.test b/tests/tcltest.test
index e66678b..728a018 100644
--- a/tests/tcltest.test
+++ b/tests/tcltest.test
@@ -46,6 +46,7 @@ makeFile {
cd [temporaryDirectory]
testConstraint exec [llength [info commands exec]]
+
# test -help
# Child processes because -help [exit]s.
test tcltest-1.1 {tcltest -help} {exec} {
@@ -1824,9 +1825,13 @@ test tcltest-26.2 {Bug/RFE 1017151} -setup {
---- errorInfo: body error
*
---- errorInfo(cleanup): cleanup error*}
-
+
cleanupTests
}
namespace delete ::tcltest::test
return
+
+# Local Variables:
+# mode: tcl
+# End:
diff --git a/tests/unload.test b/tests/unload.test
index 5a374c4..73f1091 100644
--- a/tests/unload.test
+++ b/tests/unload.test
@@ -45,6 +45,14 @@ testConstraint teststaticpkg [llength [info commands teststaticpkg]]
testConstraint testsimplefilesystem \
[llength [info commands testsimplefilesystem]]
+proc loadIfNotPresent {pkg args} {
+ global testDir ext
+ set loaded [lmap x [info loaded {*}$args] {lindex $x 1}]
+ if {[string totitle $pkg] ni $loaded} {
+ load [file join $testDir $pkg$ext]
+ }
+}
+
# Basic tests: parameter testing...
test unload-1.1 {basic errors} -returnCodes error -body {
unload
@@ -73,7 +81,7 @@ set pkgua_detached {}
set pkgua_unloaded {}
# Tests for loading/unloading in trusted (non-safe) interpreters...
test unload-2.1 {basic loading of non-unloadable package, with guess for package name} [list $dll $loaded] {
- load [file join $testDir pkga$ext]
+ loadIfNotPresent pkga
list [pkga_eq abc def] [lsort [info commands pkga_*]]
} {0 {pkga_eq pkga_quote}}
test unload-2.2 {basic loading of unloadable package, with guess for package name} [list $dll $loaded] {
@@ -82,28 +90,43 @@ test unload-2.2 {basic loading of unloadable package, with guess for package nam
[pkgua_eq abc def] [lsort [info commands pkgua_*]] \
$pkgua_loaded $pkgua_detached $pkgua_unloaded
} {{} {} {} {} 0 {pkgua_eq pkgua_quote} . {} {}}
-test unload-2.3 {basic unloading of non-unloadable package, with guess for package name} [list $dll $loaded] {
- list [catch {unload [file join $testDir pkga$ext]} msg] \
- [string map [list [file join $testDir pkga$ext] file] $msg]
-} {1 {file "file" cannot be unloaded under a trusted interpreter}}
-test unload-2.4 {basic unloading of unloadable package, with guess for package name} [list $dll $loaded] {
+test unload-2.3 {basic unloading of non-unloadable package, with guess for package name} -setup {
+ loadIfNotPresent pkga
+} -constraints [list $dll $loaded] -returnCodes error -match glob -body {
+ unload [file join $testDir pkga$ext]
+} -result {file "*" cannot be unloaded under a trusted interpreter}
+test unload-2.4 {basic unloading of unloadable package, with guess for package name} -setup {
+ loadIfNotPresent pkgua
+} -constraints [list $dll $loaded] -body {
list $pkgua_loaded $pkgua_detached $pkgua_unloaded \
[unload [file join $testDir pkgua$ext]] \
[info commands pkgua_*] \
$pkgua_loaded $pkgua_detached $pkgua_unloaded
-} {. {} {} {} {} . . .}
-test unload-2.5 {reloading of unloaded package, with guess for package name} [list $dll $loaded] {
+} -result {. {} {} {} {} . . .}
+test unload-2.5 {reloading of unloaded package, with guess for package name} -setup {
+ if {$pkgua_loaded eq ""} {
+ loadIfNotPresent pkgua
+ unload [file join $testDir pkgua$ext]
+ }
+} -constraints [list $dll $loaded] -body {
list $pkgua_loaded $pkgua_detached $pkgua_unloaded \
[load [file join $testDir pkgua$ext]] \
[pkgua_eq abc def] [lsort [info commands pkgua_*]] \
$pkgua_loaded $pkgua_detached $pkgua_unloaded
-} {. . . {} 0 {pkgua_eq pkgua_quote} .. . .}
-test unload-2.6 {basic unloading of re-loaded package, with guess for package name} [list $dll $loaded] {
+} -result {. . . {} 0 {pkgua_eq pkgua_quote} .. . .}
+test unload-2.6 {basic unloading of re-loaded package, with guess for package name} -setup {
+ # Establish expected state
+ if {$pkgua_loaded eq ""} {
+ loadIfNotPresent pkgua
+ unload [file join $testDir pkgua$ext]
+ load [file join $testDir pkgua$ext]
+ }
+} -constraints [list $dll $loaded] -body {
list $pkgua_loaded $pkgua_detached $pkgua_unloaded \
[unload [file join $testDir pkgua$ext]] \
[info commands pkgua_*] \
$pkgua_loaded $pkgua_detached $pkgua_unloaded
-} {.. . . {} {} .. .. ..}
+} -result {.. . . {} {} .. .. ..}
# Tests for loading/unloading in safe interpreters...
interp create -safe child
@@ -127,38 +150,52 @@ test unload-3.2 {basic loading of unloadable package in a safe interpreter, with
[lsort [child eval info commands pkgua_*]] \
[child eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}]
} {{{} {} {}} {} 0 {pkgua_eq pkgua_quote} {. {} {}}}
-test unload-3.3 {unloading of a package that has never been loaded from a safe interpreter} \
- [list $dll $loaded] {
- list [catch {unload [file join $testDir pkga$ext] {} child} msg] \
- [string map [list [file join $testDir pkga$ext] file] $msg]
-} {1 {file "file" has never been loaded in this interpreter}}
-test unload-3.4 {basic unloading of a non-unloadable package from a safe interpreter, with guess for package name} \
- [list $dll $loaded] {
- list [catch {unload [file join $testDir pkgb$ext] {} child} msg] \
- [string map [list [file join $testDir pkgb$ext] file] $msg]
-} {1 {file "file" cannot be unloaded under a safe interpreter}}
-test unload-3.5 {basic unloading of an unloadable package from a safe interpreter, with guess for package name} \
- [list $dll $loaded] {
+test unload-3.3 {unloading of a package that has never been loaded from a safe interpreter} -setup {
+ loadIfNotPresent pkga
+} -constraints [list $dll $loaded] -returnCodes error -match glob -body {
+ unload [file join $testDir pkga$ext] {} child
+} -result {file "*" has never been loaded in this interpreter}
+test unload-3.4 {basic unloading of a non-unloadable package from a safe interpreter, with guess for package name} -setup {
+ if {[lsearch -index 1 [info loaded child] Pkgb] == -1} {
+ load [file join $testDir pkgb$ext] pKgB child
+ }
+} -constraints [list $dll $loaded] -returnCodes error -match glob -body {
+ unload [file join $testDir pkgb$ext] {} child
+} -result {file "*" cannot be unloaded under a safe interpreter}
+test unload-3.5 {basic unloading of an unloadable package from a safe interpreter, with guess for package name} -setup {
+ if {[lsearch -index 1 [info loaded child] Pkgua] == -1} {
+ load [file join $testDir pkgua$ext] pkgua child
+ }
+} -constraints [list $dll $loaded] -body {
list [child eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}] \
[unload [file join $testDir pkgua$ext] {} child] \
[child eval info commands pkgua_*] \
[child eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}]
-} {{. {} {}} {} {} {. . .}}
-test unload-3.6 {reloading of unloaded package in a safe interpreter, with guess for package name} \
- [list $dll $loaded] {
+} -result {{. {} {}} {} {} {. . .}}
+test unload-3.6 {reloading of unloaded package in a safe interpreter, with guess for package name} -setup {
+ if {[child eval set pkgua_loaded] eq ""} {
+ load [file join $testDir pkgua$ext] {} child
+ unload [file join $testDir pkgua$ext] {} child
+ }
+} -constraints [list $dll $loaded] -body {
list [child eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}] \
[load [file join $testDir pkgua$ext] {} child] \
[child eval pkgua_eq abc def] \
[lsort [child eval info commands pkgua_*]] \
[child eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}]
-} {{. . .} {} 0 {pkgua_eq pkgua_quote} {.. . .}}
-test unload-3.7 {basic unloading of re-loaded package from a safe interpreter, with package name conversion} \
- [list $dll $loaded] {
+} -result {{. . .} {} 0 {pkgua_eq pkgua_quote} {.. . .}}
+test unload-3.7 {basic unloading of re-loaded package from a safe interpreter, with package name conversion} -setup {
+ if {[child eval set pkgua_loaded] eq ""} {
+ load [file join $testDir pkgua$ext] {} child
+ unload [file join $testDir pkgua$ext] {} child
+ load [file join $testDir pkgua$ext] {} child
+ }
+} -constraints [list $dll $loaded] -body {
list [child eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}] \
[unload [file join $testDir pkgua$ext] pKgUa child] \
[child eval info commands pkgua_*] \
[child eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}]
-} {{.. . .} {} {} {.. .. ..}}
+} -result {{.. . .} {} {} {.. .. ..}}
# Tests for loading/unloading of a package among multiple interpreters...
interp create child-trusted
@@ -167,56 +204,89 @@ child-trusted eval {
set pkgua_detached {}
set pkgua_unloaded {}
}
+array set load {M 0 C 0 T 0}
## Load package in main trusted interpreter...
-test unload-4.1 {loading of unloadable package in trusted interpreter, with guess for package name} \
- [list $dll $loaded] {
+test unload-4.1 {loading of unloadable package in trusted interpreter, with guess for package name} -setup {
+ set pkgua_loaded ""
+ set pkgua_detached ""
+ set pkgua_unloaded ""
+ incr load(M)
+} -constraints [list $dll $loaded] -body {
list [list $pkgua_loaded $pkgua_detached $pkgua_unloaded] \
[load [file join $testDir pkgua$ext]] \
[pkgua_eq abc def] [lsort [info commands pkgua_*]] \
[list $pkgua_loaded $pkgua_detached $pkgua_unloaded]
-} {{.. .. ..} {} 0 {pkgua_eq pkgua_quote} {... .. ..}}
+} -result {{{} {} {}} {} 0 {pkgua_eq pkgua_quote} {. {} {}}}
## Load package in child-safe interpreter...
-test unload-4.2 {basic loading of unloadable package in a safe interpreter, with package name conversion} \
- [list $dll $loaded] {
+test unload-4.2 {basic loading of unloadable package in a safe interpreter, with package name conversion} -setup {
+ child eval {
+ set pkgua_loaded ""
+ set pkgua_detached ""
+ set pkgua_unloaded ""
+ }
+ incr load(C)
+} -constraints [list $dll $loaded] -body {
list [child eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}] \
[load [file join $testDir pkgua$ext] pKgUA child] \
[child eval pkgua_eq abc def] \
[lsort [child eval info commands pkgua_*]] \
[child eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}]
-} {{.. .. ..} {} 0 {pkgua_eq pkgua_quote} {... .. ..}}
+} -result {{{} {} {}} {} 0 {pkgua_eq pkgua_quote} {. {} {}}}
## Load package in child-trusted interpreter...
-test unload-4.3 {basic loading of unloadable package in a second trusted interpreter, with package name conversion} \
- [list $dll $loaded] {
+test unload-4.3 {basic loading of unloadable package in a second trusted interpreter, with package name conversion} -setup {
+ incr load(T)
+} -constraints [list $dll $loaded] -body {
list [child-trusted eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}] \
[load [file join $testDir pkgua$ext] pkguA child-trusted] \
[child-trusted eval pkgua_eq abc def] \
[lsort [child-trusted eval info commands pkgua_*]] \
[child-trusted eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}]
-} {{{} {} {}} {} 0 {pkgua_eq pkgua_quote} {. {} {}}}
+} -result {{{} {} {}} {} 0 {pkgua_eq pkgua_quote} {. {} {}}}
## Unload the package from the main trusted interpreter...
-test unload-4.4 {basic unloading of unloadable package from trusted interpreter, with guess for package name} \
- [list $dll $loaded] {
+test unload-4.4 {basic unloading of unloadable package from trusted interpreter, with guess for package name} -setup {
+ if {!$load(M)} {
+ load [file join $testDir pkgua$ext]
+ }
+ if {!$load(C)} {
+ load [file join $testDir pkgua$ext] {} child
+ incr load(C)
+ }
+ if {!$load(T)} {
+ load [file join $testDir pkgua$ext] {} child-trusted
+ incr load(T)
+ }
+} -constraints [list $dll $loaded] -body {
list [list $pkgua_loaded $pkgua_detached $pkgua_unloaded] \
[unload [file join $testDir pkgua$ext]] \
[info commands pkgua_*] \
[list $pkgua_loaded $pkgua_detached $pkgua_unloaded]
-} {{... .. ..} {} {} {... ... ..}}
+} -result {{. {} {}} {} {} {. . {}}}
## Unload the package from the child safe interpreter...
-test unload-4.5 {basic unloading of unloadable package from a safe interpreter, with guess for package name} \
- [list $dll $loaded] {
+test unload-4.5 {basic unloading of unloadable package from a safe interpreter, with guess for package name} -setup {
+ if {!$load(C)} {
+ load [file join $testDir pkgua$ext] {} child
+ }
+ if {!$load(T)} {
+ load [file join $testDir pkgua$ext] {} child-trusted
+ incr load(T)
+ }
+} -constraints [list $dll $loaded] -body {
list [child eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}] \
[unload [file join $testDir pkgua$ext] {} child] \
[child eval info commands pkgua_*] \
[child eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}]
-} {{... .. ..} {} {} {... ... ..}}
+} -result {{. {} {}} {} {} {. . {}}}
## Unload the package from the child trusted interpreter...
-test unload-4.6 {basic unloading of unloadable package from a safe interpreter, with guess for package name} \
- [list $dll $loaded] {
+test unload-4.6 {basic unloading of unloadable package from a safe interpreter, with guess for package name} -setup {
+ if {!$load(T)} {
+ load [file join $testDir pkgua$ext] {} child-trusted
+ }
+} -constraints [list $dll $loaded] -body {
list [child-trusted eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}] \
[unload [file join $testDir pkgua$ext] {} child-trusted] \
[child-trusted eval info commands pkgua_*] \
[child-trusted eval {list $pkgua_loaded $pkgua_detached $pkgua_unloaded}]
-} {{. {} {}} {} {} {. . .}}
+} -result {{. {} {}} {} {} {. . .}}
test unload-5.1 {unload a module loaded from vfs} \
-constraints [list $dll $loaded testsimplefilesystem] \
@@ -230,9 +300,7 @@ test unload-5.1 {unload a module loaded from vfs} \
list [catch {unload simplefs:/pkgua$ext} msg] $msg
} \
-result {0 {}}
-
-
-
+
# cleanup
interp delete child
interp delete child-trusted
diff --git a/tests/var.test b/tests/var.test
index 6f90664..9816d98 100644
--- a/tests/var.test
+++ b/tests/var.test
@@ -26,6 +26,21 @@ testConstraint testupvar [llength [info commands testupvar]]
testConstraint testgetvarfullname [llength [info commands testgetvarfullname]]
testConstraint testsetnoerr [llength [info commands testsetnoerr]]
testConstraint memory [llength [info commands memory]]
+if {[testConstraint memory]} {
+ proc getbytes {} {
+ return [lindex [split [memory info] \n] 3 3]
+ }
+ proc leaktest {script {iterations 3}} {
+ set end [getbytes]
+ for {set i 0} {$i < $iterations} {incr i} {
+ uplevel 1 $script
+ set tmp $end
+ set end [getbytes]
+ }
+ return [expr {$end - $tmp}]
+ }
+}
+
catch {rename p ""}
catch {namespace delete test_ns_var}
@@ -44,10 +59,12 @@ test var-1.1 {TclLookupVar, Array handling} -setup {
set arr(foo) 37
list [$x i] $i [$x arr(foo)] $arr(foo)
} -result {11 11 38 38}
+set ::x "global value"
+namespace eval test_ns_var {
+ variable x "namespace value"
+}
test var-1.2 {TclLookupVar, TCL_GLOBAL_ONLY implies global namespace var} {
- set x "global value"
namespace eval test_ns_var {
- variable x "namespace value"
proc p {} {
global x ;# specifies TCL_GLOBAL_ONLY to get global x
return $x
@@ -167,7 +184,9 @@ test var-1.17 {TclLookupVar, resurrect array element via upvar to deleted array:
set result
}
} {0 2 1 {can't set "foo": upvar refers to element in deleted array}}
-test var-1.18 {TclLookupVar, resurrect array element via upvar to deleted array: uncompiled code path} {
+test var-1.18 {TclLookupVar, resurrect array element via upvar to deleted array: uncompiled code path} -setup {
+ unset -nocomplain test_ns_var::x
+} -body {
namespace eval test_ns_var {
variable result {}
variable x
@@ -179,7 +198,7 @@ test var-1.18 {TclLookupVar, resurrect array element via upvar to deleted array:
namespace delete [namespace current]
set result
}
-} {0 2 1 {can't set "foo": upvar refers to element in deleted array}}
+} -result {0 2 1 {can't set "foo": upvar refers to element in deleted array}}
test var-1.19 {TclLookupVar, right error message when parsing variable name} -body {
[format set] thisvar(doesntexist)
} -returnCodes error -result {can't read "thisvar(doesntexist)": no such variable}
@@ -261,6 +280,7 @@ test var-3.7 {MakeUpvar, my var has ::s} -setup {
}
} -result {789789}
test var-3.8 {MakeUpvar, my var already exists in global ns} -setup {
+ upvar #0 aaaaa xxxxx
catch {unset aaaaa}
catch {unset xxxxx}
} -body {
@@ -274,6 +294,8 @@ test var-3.9 {MakeUpvar, my var has invalid ns name} -setup {
} -returnCodes error -body {
set aaaaa 789789
upvar #0 aaaaa test_ns_fred::lnk
+} -cleanup {
+ unset ::aaaaa
} -result {can't create "test_ns_fred::lnk": parent namespace doesn't exist}
test var-3.10 {MakeUpvar, between namespaces} -body {
namespace eval {} {
@@ -282,8 +304,6 @@ test var-3.10 {MakeUpvar, between namespaces} -body {
set foo::bar 1
list $bar $foo::bar
}
-} -cleanup {
- unset ::aaaaa
} -result {1 1}
test var-3.11 {MakeUpvar, my var looks like array elem} -setup {
catch {unset aaaaa}
@@ -322,9 +342,11 @@ test var-5.2 {Tcl_GetVariableFullName, namespace variable} {
namespace which -variable martha
}
} {::test_ns_var::martha}
-test var-5.3 {Tcl_GetVariableFullName, namespace variable} {
+test var-5.3 {Tcl_GetVariableFullName, namespace variable} -setup {
+ namespace eval test_ns_var {variable martha}
+} -body {
namespace which -variable test_ns_var::martha
-} {::test_ns_var::martha}
+} -result {::test_ns_var::martha}
test var-6.1 {Tcl_GlobalObjCmd, variable is qualified by a namespace name} {
namespace eval test_ns_var {
@@ -348,6 +370,7 @@ test var-6.2 {Tcl_GlobalObjCmd, variable is qualified by a namespace name} {
test_ns_var::p
} {java}
test var-6.3 {Tcl_GlobalObjCmd, variable named {} qualified by a namespace name} {
+ namespace eval ::test_ns_var::test_ns_nested {}
set ::test_ns_var::test_ns_nested:: 24
apply {{} {
global ::test_ns_var::test_ns_nested::
@@ -389,20 +412,26 @@ test var-7.2 {Tcl_VariableObjCmd, if new and no value, leave undefined} {
}
list [info exists test_ns_var::two] [catch {set test_ns_var::two} msg] $msg
} {0 1 {can't read "test_ns_var::two": no such variable}}
-test var-7.3 {Tcl_VariableObjCmd, "define" var already created above} {
+test var-7.3 {Tcl_VariableObjCmd, "define" var already created above} -setup {
+ catch {namespace delete test_ns_var}
+ namespace eval test_ns_var {variable one 1}
+} -body {
namespace eval test_ns_var {
variable two 2
}
list [lsort [info vars test_ns_var::*]] \
[namespace eval test_ns_var {set two}]
-} [list [lsort {::test_ns_var::two ::test_ns_var::one}] 2]
-test var-7.4 {Tcl_VariableObjCmd, list of vars} {
+} -result [list [lsort {::test_ns_var::two ::test_ns_var::one}] 2]
+test var-7.4 {Tcl_VariableObjCmd, list of vars} -setup {
+ catch {namespace delete test_ns_var}
+ namespace eval test_ns_var {variable one 1; variable two 2}
+} -body {
namespace eval test_ns_var {
variable three 3 four 4
}
list [lsort [info vars test_ns_var::*]] \
[namespace eval test_ns_var {expr $three+$four}]
-} [list [lsort {::test_ns_var::four ::test_ns_var::three ::test_ns_var::two ::test_ns_var::one}] 7]
+} -result [list [lsort {::test_ns_var::four ::test_ns_var::three ::test_ns_var::two ::test_ns_var::one}] 7]
test var-7.5 {Tcl_VariableObjCmd, value for last var is optional} -setup {
catch {unset a}
catch {unset five}
@@ -476,7 +505,9 @@ test var-7.9 {Tcl_VariableObjCmd, mark as namespace var so var persists until na
[lsort {::test_ns_var2::x ::test_ns_var2::z}] 0 0\
{1 {can't unset "test_ns_var2::z": no such variable}}\
{}]
-test var-7.10 {Tcl_VariableObjCmd, variable cmd inside proc creates local link var} {
+test var-7.10 {Tcl_VariableObjCmd, variable cmd inside proc creates local link var} -setup {
+ namespace eval test_ns_var { variable eight 8 }
+} -body {
namespace eval test_ns_var {
proc p {} {
variable eight
@@ -484,14 +515,16 @@ test var-7.10 {Tcl_VariableObjCmd, variable cmd inside proc creates local link v
}
p
}
-} {8 eight}
-test var-7.11 {Tcl_VariableObjCmd, variable cmd inside proc creates local link var} {
+} -result {8 eight}
+test var-7.11 {Tcl_VariableObjCmd, variable cmd inside proc creates local link var} -setup {
+ namespace eval test_ns_var { variable eight 8 }
+} -body {
proc p {} { ;# note this proc is at global :: scope
variable test_ns_var::eight
list [set eight] [info vars]
}
p
-} {8 eight}
+} -result {8 eight}
test var-7.12 {Tcl_VariableObjCmd, variable cmd inside proc creates local link var} {
namespace eval test_ns_var {
variable {} {My name is empty}
@@ -561,6 +594,22 @@ test var-8.2 {TclDeleteNamespaceVars, "unset" traces on ns delete are called wit
list [namespace delete test_ns_var] $::info
} -result {{} {::test_ns_var::v {} u}}
+test var-8.3 {TclDeleteNamespaceVars, mem leak} -constraints memory -setup {
+ proc ::t {a i o} {
+ set $a 321
+ }
+} -body {
+ leaktest {
+ namespace eval n {
+ variable v 123
+ trace variable v u ::t
+ }
+ namespace delete n
+ }
+} -cleanup {
+ rename ::t {}
+} -result 0
+
test var-9.1 {behaviour of TclGet/SetVar simple get/set} -setup {
catch {unset u}
catch {unset v}
@@ -774,7 +823,7 @@ test var-17.1 {TclArraySet [Bug 1669489]} -setup {
test var-18.1 {array unset and unset traces: Bug 2939073} -setup {
set already 0
- unset x
+ unset -nocomplain x
} -body {
array set x {e 1 i 1}
trace add variable x unset {apply {args {
@@ -896,9 +945,6 @@ test var-21.0 {PushVarNameWord OBOE in compiled unset} -setup {
} -result 1
test var-22.0 {leak in array element unset: Bug a3309d01db} -setup {
- proc getbytes {} {
- lindex [split [memory info] \n] 3 3
- }
proc doit k {
variable A
set A($k) {}
@@ -918,13 +964,9 @@ test var-22.0 {leak in array element unset: Bug a3309d01db} -setup {
set leakedBytes [expr {$end - $tmp}]
} -cleanup {
array unset A
- rename getbytes {}
rename doit {}
} -result 0
test var-22.1 {leak in localVarName intrep: Bug 80304238ac} -setup {
- proc getbytes {} {
- lindex [split [memory info] \n] 3 3
- }
proc doit {} {
interp create slave
slave eval {
@@ -946,15 +988,21 @@ test var-22.1 {leak in localVarName intrep: Bug 80304238ac} -setup {
set leakedBytes [expr {$end - $tmp}]
} -cleanup {
array unset A
- rename getbytes {}
rename doit {}
} -result 0
+test var-22.2 {leak in parsedVarName} -constraints memory -body {
+ set i 0
+ leaktest {lappend x($i)}
+} -cleanup {
+ unset -nocomplain i x
+} -result 0
catch {namespace delete ns}
catch {unset arr}
catch {unset v}
+catch {rename getbytes ""}
catch {rename p ""}
catch {namespace delete test_ns_var}
catch {namespace delete test_ns_var2}
diff --git a/tests/zlib.test b/tests/zlib.test
index c9e5f10..15dbb34 100644
--- a/tests/zlib.test
+++ b/tests/zlib.test
@@ -251,9 +251,10 @@ test zlib-8.8 {transformation and fconfigure} -setup {
} -constraints zlib -body {
zlib push compress $outSide -dictionary $spdyDict
fconfigure $outSide -blocking 0 -translation binary -buffering none
- fconfigure $inSide -blocking 0 -translation binary
+ fconfigure $inSide -blocking 1 -translation binary
puts -nonewline $outSide $spdyHeaders
chan pop $outSide
+ chan close $outSide
set compressed [read $inSide]
catch {zlib decompress $compressed} err opt
list [string length [zlib compress $spdyHeaders]] \
@@ -269,10 +270,11 @@ test zlib-8.9 {transformation and fconfigure} -setup {
} -constraints zlib -body {
zlib push compress $outSide -dictionary $spdyDict
fconfigure $outSide -blocking 0 -translation binary -buffering none
- fconfigure $inSide -blocking 0 -translation binary
+ fconfigure $inSide -blocking 1 -translation binary
puts -nonewline $outSide $spdyHeaders
set result [fconfigure $outSide -checksum]
chan pop $outSide
+ chan close $outSide
$strm put -dictionary $spdyDict [read $inSide]
lappend result [string length $spdyHeaders] [string length [$strm get]]
} -cleanup {
@@ -285,9 +287,10 @@ test zlib-8.10 {transformation and fconfigure} -setup {
} -constraints {zlib recentZlib} -body {
zlib push deflate $outSide -dictionary $spdyDict
fconfigure $outSide -blocking 0 -translation binary -buffering none
- fconfigure $inSide -blocking 0 -translation binary
+ fconfigure $inSide -blocking 1 -translation binary
puts -nonewline $outSide $spdyHeaders
chan pop $outSide
+ chan close $outSide
set compressed [read $inSide]
catch {
zlib inflate $compressed
@@ -306,9 +309,10 @@ test zlib-8.11 {transformation and fconfigure} -setup {
} -constraints zlib -body {
zlib push deflate $outSide -dictionary $spdyDict
fconfigure $outSide -blocking 0 -translation binary -buffering none
- fconfigure $inSide -blocking 0 -translation binary
+ fconfigure $inSide -blocking 1 -translation binary
puts -nonewline $outSide $spdyHeaders
chan pop $outSide
+ chan close $outSide
$strm put -dictionary $spdyDict [read $inSide]
list [string length $spdyHeaders] [string length [$strm get]]
} -cleanup {
@@ -913,6 +917,29 @@ test zlib-12.1 {Tk Bug 9eb55debc5} -constraints zlib -setup {
} -cleanup {
$stream close
} -result {12026 18000}
+test zlib-12.2 {Patrick Dunnigan's issue} -constraints zlib -setup {
+ set filesrc [makeFile {} test.input]
+ set filedst [makeFile {} test.output]
+ set f [open $filesrc "wb"]
+ for {set i 0} {$i < 10000} {incr i} {
+ puts -nonewline $f "x"
+ }
+ close $f
+} -body {
+ set fin [open $filesrc "rb"]
+ set fout [open $filedst "wb"]
+ set header [dict create filename "test.input" time 0]
+ try {
+ fcopy $fin [zlib push gzip $fout -header $header]
+ } finally {
+ close $fin
+ close $fout
+ }
+ file size $filedst
+} -cleanup {
+ removeFile $filesrc
+ removeFile $filedst
+} -result 4152
::tcltest::cleanupTests
return
diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c
index 57215f1..91fb986 100644
--- a/unix/tclUnixInit.c
+++ b/unix/tclUnixInit.c
@@ -391,14 +391,6 @@ TclpInitPlatform(void)
#endif /* SIGPIPE */
#if defined(__FreeBSD__) && defined(__GNUC__)
- /*
- * Adjust the rounding mode to be more conventional. Note that FreeBSD
- * only provides the __fpsetreg() used by the following two for the GNU
- * Compiler. When using, say, Intel's icc they break. (Partially based on
- * patch in BSD ports system from root@celsius.bychok.com)
- */
-
- fpsetround(FP_RN);
(void) fpsetmask(0L);
#endif
diff --git a/win/Makefile.in b/win/Makefile.in
index 28ffe0a..066e6b1 100644
--- a/win/Makefile.in
+++ b/win/Makefile.in
@@ -81,7 +81,7 @@ CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
#CFLAGS = $(CFLAGS_DEBUG)
#CFLAGS = $(CFLAGS_OPTIMIZE)
#CFLAGS = $(CFLAGS_DEBUG) $(CFLAGS_OPTIMIZE)
-CFLAGS = @CFLAGS@ @CFLAGS_DEFAULT@ -DUNICODE -D_UNICODE
+CFLAGS = @CFLAGS@ @CFLAGS_DEFAULT@ -DUNICODE -D_UNICODE -D_ATL_XP_TARGETING
# To compile without backward compatibility and deprecated code uncomment the
# following
diff --git a/win/makefile.vc b/win/makefile.vc
index eb9a594..f401541 100644
--- a/win/makefile.vc
+++ b/win/makefile.vc
@@ -737,7 +737,7 @@ gentommath_h:
!ifndef HHC
HHC=""%ProgramFiles%\HTML Help Workshop\hhc.exe""
!endif
-HTMLDIR=$(ROOT)\html
+HTMLDIR=$(OUT_DIR)\html
HTMLBASE=TclTk$(VERSION)
HHPFILE=$(HTMLDIR)\$(HTMLBASE).hhp
CHMFILE=$(HTMLDIR)\$(HTMLBASE).chm
@@ -745,25 +745,27 @@ CHMFILE=$(HTMLDIR)\$(HTMLBASE).chm
htmlhelp: chmsetup $(CHMFILE)
$(CHMFILE): $(DOCDIR)\*
- @$(TCLSH) $(TOOLSDIR)\tcltk-man2html.tcl
+ @$(TCLSH) $(TOOLSDIR)\tcltk-man2html.tcl "--htmldir=$(HTMLDIR)"
@echo Compiling HTML help project
- @$(HHC) <<$(HHPFILE) >NUL
+ -$(HHC) <<$(HHPFILE) >NUL
[OPTIONS]
Compatibility=1.1 or later
Compiled file=$(HTMLBASE).chm
+Default topic=contents.htm
Display compile progress=no
Error log file=$(HTMLBASE).log
+Full-text search=Yes
Language=0x409 English (United States)
Title=Tcl/Tk $(DOT_VERSION) Help
[FILES]
contents.htm
docs.css
-Keywords
-TclCmd
-TclLib
-TkCmd
-TkLib
-UserCmd
+Keywords\*.htm
+TclCmd\*.htm
+TclLib\*.htm
+TkCmd\*.htm
+TkLib\*.htm
+UserCmd\*.htm
<<
chmsetup:
diff --git a/win/rules.vc b/win/rules.vc
index d4c2f35..e12854d 100644
--- a/win/rules.vc
+++ b/win/rules.vc
@@ -159,7 +159,7 @@ DEBUGFLAGS = $(DEBUGFLAGS) -RTC1
DEBUGFLAGS = $(DEBUGFLAGS) -GZ
!endif
-COMPILERFLAGS =-W3 -DUNICODE -D_UNICODE
+COMPILERFLAGS =-W3 /DUNICODE /D_UNICODE /D_ATL_XP_TARGETING
# In v13 -GL and -YX are incompatible.
!if [nmakehlp -c -YX]
@@ -230,6 +230,10 @@ STATIC_BUILD = 1
!else
STATIC_BUILD = 0
!endif
+!if [nmakehlp -f $(OPTS) "nomsvcrt"]
+!message *** Doing nomsvcrt
+MSVCRT = 0
+!else
!if [nmakehlp -f $(OPTS) "msvcrt"]
!message *** Doing msvcrt
MSVCRT = 1
@@ -240,6 +244,7 @@ MSVCRT = 1
MSVCRT = 0
!endif
!endif
+!endif
!if [nmakehlp -f $(OPTS) "staticpkg"] && $(STATIC_BUILD)
!message *** Doing staticpkg
TCL_USE_STATIC_PACKAGES = 1
diff --git a/win/tclWinFile.c b/win/tclWinFile.c
index 3a856a1..9458933 100755
--- a/win/tclWinFile.c
+++ b/win/tclWinFile.c
@@ -3166,8 +3166,8 @@ TclWinFileOwned(
case we are in all likelihood not the owner */
return 0;
}
-
- /*
+
+ /*
* Getting the current process SID is a multi-step process.
* We make the assumption that if a call fails, this process is
* so underprivileged it could not possibly own anything. Normally
@@ -3191,10 +3191,10 @@ TclWinFileOwned(
LocalFree(secd); /* Also frees ownerSid */
if (buf)
ckfree(buf);
-
+
return (owned != 0); /* Convert non-0 to 1 */
}
-
+
/*
* Local Variables:
* mode: c
diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c
index 382addd..4666deb 100644
--- a/win/tclWinPipe.c
+++ b/win/tclWinPipe.c
@@ -1337,7 +1337,7 @@ ApplicationType(
Tcl_DStringFree(&ds);
ext = strrchr(fullName, '.');
- if ((ext != NULL) &&
+ if ((ext != NULL) &&
(strcasecmp(ext, ".cmd") == 0 || strcasecmp(ext, ".bat") == 0)) {
applType = APPL_DOS;
break;
diff --git a/win/tclWinPort.h b/win/tclWinPort.h
index b486466..159a708 100644
--- a/win/tclWinPort.h
+++ b/win/tclWinPort.h
@@ -360,7 +360,7 @@ typedef DWORD_PTR * PDWORD_PTR;
# define S_IFLNK 0120000 /* Symbolic Link */
#endif
-/*
+/*
* Windows compilers do not define S_IFBLK. However, Tcl uses it in
* GetTypeFromMode to identify blockSpecial devices based on the
* value in the statsbuf st_mode field. We have no other way to pass this