Compare commits
46
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d9096d1ada | ||
|
|
fc106439d4 | ||
|
|
c0d3a447bc | ||
|
|
0981d85b0c | ||
|
|
443ca84a71 | ||
|
|
2aaf426036 | ||
|
|
e15b769c9d | ||
|
|
d197994bd2 | ||
|
|
19e7a90783 | ||
|
|
daab595dea | ||
|
|
f86d726f85 | ||
|
|
3ad87b0a02 | ||
|
|
c83af8f8d4 | ||
|
|
d6e62aeb84 | ||
|
|
eb7a25fe2b | ||
|
|
560c2dcbe1 | ||
|
|
7413854f34 | ||
|
|
28552e2e35 | ||
|
|
c3651154a7 | ||
|
|
73b02508fa | ||
|
|
4759be8760 | ||
|
|
4b54ec077b | ||
|
|
76ca8e7008 | ||
|
|
31d38b0701 | ||
|
|
e104cccd94 | ||
|
|
8789461a94 | ||
|
|
ec1dceef35 | ||
|
|
5e1eaa44bc | ||
|
|
a403e2663e | ||
|
|
c5f68dde5c | ||
|
|
868c2951dc | ||
|
|
e438509c68 | ||
|
|
4f19f86513 | ||
|
|
fd38147f32 | ||
|
|
ce33f01bf1 | ||
|
|
bfb7ea0e46 | ||
|
|
694bd3ba73 | ||
|
|
067ef1dcea | ||
|
|
878c0cff52 | ||
|
|
9bdcf8e201 | ||
|
|
09a4760ba3 | ||
|
|
ce9b84204c | ||
|
|
e929b91222 | ||
|
|
1d119413f6 | ||
|
|
1fce20754c | ||
|
|
96fec1a88c |
+1
-1
@@ -111,7 +111,7 @@ function. Note that the Tcl_Obj reference returned by \fBTcl_GetObjectName\fR
|
||||
is a shared reference.
|
||||
.PP
|
||||
Instances of classes are created using \fBTcl_NewObjectInstance\fR, which
|
||||
takes creates an object from any class (and which is internally called by both
|
||||
creates an object from any class (and which is internally called by both
|
||||
the \fBcreate\fR and \fBnew\fR methods of the \fBoo::class\fR class). It takes
|
||||
parameters that optionally give the name of the object and namespace to
|
||||
create, and which describe the arguments to pass to the class's constructor
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
'\"
|
||||
'\" Copyright (c) 2012 Donal K. Fellows
|
||||
'\"
|
||||
'\" See the file "license.terms" for information on usage and redistribution
|
||||
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
'\"
|
||||
.so man.macros
|
||||
.TH Tcl_OOInitStubs 3 1.0 TclOO "TclOO Library Functions"
|
||||
.BS
|
||||
'\" Note: do not modify the .SH NAME line immediately below!
|
||||
.SH NAME
|
||||
Tcl_OOInitStubs \- initialize library access to TclOO functionality
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
\fB#include <tclOO.h>\fR
|
||||
.sp
|
||||
const char *
|
||||
\fBTcl_OOInitStubs\fR(\fIinterp\fR)
|
||||
.fi
|
||||
.SH ARGUMENTS
|
||||
.AS Tcl_Interp *interp in
|
||||
.AP Tcl_Interp *interp in
|
||||
The Tcl interpreter that the TclOO API is integrated with and whose C
|
||||
interface is going to be used.
|
||||
.BE
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
When an extension library is going to use the C interface exposed by TclOO, it
|
||||
should use \fBTcl_OOInitStubs\fR to initialize its access to that interface
|
||||
from within its \fI*\fB_Init\fR (or \fI*\fB_SafeInit\fR) function, passing in
|
||||
the \fIinterp\fR that was passed into that routine as context. If the result
|
||||
of calling \fBTcl_OOInitStubs\fR is NULL, the initialization failed and an
|
||||
error message will have been left in the interpreter's result. Otherwise, the
|
||||
initialization succeeded and the TclOO API may thereafter be used; the
|
||||
version of the TclOO API is returned.
|
||||
.PP
|
||||
When using this function, either the C #define symbol \fBUSE_TCLOO_STUBS\fR
|
||||
should be defined and your library code linked against the Tcl stub library,
|
||||
or that #define symbol should \fInot\fR be defined and your library code
|
||||
linked against the Tcl main library directly.
|
||||
.SH "BACKWARD COMPATIBILITY NOTE"
|
||||
.PP
|
||||
If you are linking against the Tcl 8.5 forward compatibility package for
|
||||
TclOO, \fIonly\fR the stub-enabled configuration is supported and you should
|
||||
also link against the TclOO independent stub library; that library is an
|
||||
integrated part of the main Tcl stub library in Tcl 8.6.
|
||||
.SH KEYWORDS
|
||||
stubs
|
||||
.SH "SEE ALSO"
|
||||
Tcl_InitStubs(3)
|
||||
.\" Local variables:
|
||||
.\" mode: nroff
|
||||
.\" fill-column: 78
|
||||
.\" End:
|
||||
+31
-3
@@ -246,6 +246,8 @@ static void BBEmitInstInt4(AssemblyEnv* assemEnvPtr, int tblIdx,
|
||||
int opnd, int count);
|
||||
static void BBEmitInst1or4(AssemblyEnv* assemEnvPtr, int tblIdx,
|
||||
int param, int count);
|
||||
static void BBEmitInvoke1or4(AssemblyEnv* assemEnvPtr, int tblIdx,
|
||||
int param, int count);
|
||||
static void BBEmitOpcode(AssemblyEnv* assemEnvPtr, int tblIdx,
|
||||
int count);
|
||||
static int BuildExceptionRanges(AssemblyEnv* assemEnvPtr);
|
||||
@@ -679,10 +681,13 @@ BBEmitInstInt4(
|
||||
/*
|
||||
*-----------------------------------------------------------------------------
|
||||
*
|
||||
* BBEmitInst1or4 --
|
||||
* BBEmitInst1or4, BBEmitInvoke1or4 --
|
||||
*
|
||||
* Emits a 1- or 4-byte operation according to the magnitude of the
|
||||
* operand
|
||||
* operand. The Invoke variant generates wrapping stack-balance
|
||||
* management if necessary (which is not normally required in assembled
|
||||
* code, as loop exception ranges, expansions, breaks and continues can't
|
||||
* be issued currently).
|
||||
*
|
||||
*-----------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -714,6 +719,29 @@ BBEmitInst1or4(
|
||||
TclUpdateAtCmdStart(op, envPtr);
|
||||
BBUpdateStackReqs(bbPtr, tblIdx, count);
|
||||
}
|
||||
|
||||
static void
|
||||
BBEmitInvoke1or4(
|
||||
AssemblyEnv* assemEnvPtr, /* Assembly environment */
|
||||
int tblIdx, /* Index in TalInstructionTable of op */
|
||||
int param, /* Variable-length parameter */
|
||||
int count) /* Arity if variadic */
|
||||
{
|
||||
CompileEnv* envPtr = assemEnvPtr->envPtr;
|
||||
/* Compilation environment */
|
||||
BasicBlock* bbPtr = assemEnvPtr->curr_bb;
|
||||
/* Current basic block */
|
||||
int op = TalInstructionTable[tblIdx].tclInstCode;
|
||||
|
||||
if (param <= 0xff) {
|
||||
op >>= 8;
|
||||
} else {
|
||||
op &= 0xff;
|
||||
}
|
||||
TclEmitInvoke(envPtr, op, param);
|
||||
TclUpdateAtCmdStart(op, envPtr);
|
||||
BBUpdateStackReqs(bbPtr, tblIdx, count);
|
||||
}
|
||||
|
||||
/*
|
||||
*-----------------------------------------------------------------------------
|
||||
@@ -1450,7 +1478,7 @@ AssembleOneLine(
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
BBEmitInst1or4(assemEnvPtr, tblIdx, opnd, opnd);
|
||||
BBEmitInvoke1or4(assemEnvPtr, tblIdx, opnd, opnd);
|
||||
break;
|
||||
|
||||
case ASSEM_JUMP:
|
||||
|
||||
+4
-2
@@ -2500,7 +2500,8 @@ BinaryEncode64(
|
||||
return TCL_ERROR;
|
||||
}
|
||||
if (maxlen < 0) {
|
||||
Tcl_SetResult(interp, "line length out of range", TCL_STATIC);
|
||||
Tcl_SetObjResult(interp, Tcl_NewStringObj(
|
||||
"line length out of range", -1));
|
||||
Tcl_SetErrorCode(interp, "TCL", "BINARY", "ENCODE",
|
||||
"LINE_LENGTH", NULL);
|
||||
return TCL_ERROR;
|
||||
@@ -2606,7 +2607,8 @@ BinaryEncodeUu(
|
||||
return TCL_ERROR;
|
||||
}
|
||||
if (lineLength < 3 || lineLength > 85) {
|
||||
Tcl_SetResult(interp, "line length out of range", TCL_STATIC);
|
||||
Tcl_SetObjResult(interp, Tcl_NewStringObj(
|
||||
"line length out of range", -1));
|
||||
Tcl_SetErrorCode(interp, "TCL", "BINARY", "ENCODE",
|
||||
"LINE_LENGTH", NULL);
|
||||
return TCL_ERROR;
|
||||
|
||||
+41
-12
@@ -269,7 +269,7 @@ TclCompileArraySetCmd(
|
||||
if (isDataValid && !isDataEven) {
|
||||
PushStringLiteral(envPtr, "list must have an even number of elements");
|
||||
PushStringLiteral(envPtr, "-errorCode {TCL ARGUMENT FORMAT}");
|
||||
TclEmitInstInt4(INST_RETURN_IMM, 1, envPtr);
|
||||
TclEmitInstInt4(INST_RETURN_IMM, TCL_ERROR, envPtr);
|
||||
TclEmitInt4( 0, envPtr);
|
||||
goto done;
|
||||
}
|
||||
@@ -354,7 +354,7 @@ TclCompileArraySetCmd(
|
||||
TclEmitInstInt1(INST_JUMP_FALSE1, 0, envPtr);
|
||||
PushStringLiteral(envPtr, "list must have an even number of elements");
|
||||
PushStringLiteral(envPtr, "-errorCode {TCL ARGUMENT FORMAT}");
|
||||
TclEmitInstInt4(INST_RETURN_IMM, 1, envPtr);
|
||||
TclEmitInstInt4(INST_RETURN_IMM, TCL_ERROR, envPtr);
|
||||
TclEmitInt4( 0, envPtr);
|
||||
TclAdjustStackDepth(-1, envPtr);
|
||||
fwd = CurrentOffset(envPtr) - offsetFwd;
|
||||
@@ -620,7 +620,7 @@ TclCompileCatchCmd(
|
||||
TclEmitInstInt4( INST_BEGIN_CATCH4, range, envPtr);
|
||||
ExceptionRangeStarts(envPtr, range);
|
||||
TclEmitOpcode( INST_DUP, envPtr);
|
||||
TclEmitOpcode( INST_EVAL_STK, envPtr);
|
||||
TclEmitInvoke(envPtr, INST_EVAL_STK);
|
||||
}
|
||||
/* Stack at this point:
|
||||
* nonsimple: script <mark> result
|
||||
@@ -1675,7 +1675,7 @@ TclCompileDictUpdateCmd(
|
||||
|
||||
TclEmitInstInt4( INST_DICT_UPDATE_END, dictIndex, envPtr);
|
||||
TclEmitInt4( infoIndex, envPtr);
|
||||
TclEmitOpcode( INST_RETURN_STK, envPtr);
|
||||
TclEmitInvoke(envPtr,INST_RETURN_STK);
|
||||
|
||||
if (TclFixupForwardJumpToHere(envPtr, &jumpFixup, 127)) {
|
||||
Tcl_Panic("TclCompileDictCmd(update): bad jump distance %d",
|
||||
@@ -2033,7 +2033,7 @@ TclCompileDictWithCmd(
|
||||
} else {
|
||||
TclEmitInstInt4( INST_DICT_RECOMBINE_IMM, dictVar, envPtr);
|
||||
}
|
||||
TclEmitOpcode( INST_RETURN_STK, envPtr);
|
||||
TclEmitInvoke(envPtr, INST_RETURN_STK);
|
||||
|
||||
/*
|
||||
* Prepare for the start of the next command.
|
||||
@@ -2135,19 +2135,48 @@ TclCompileErrorCmd(
|
||||
{
|
||||
/*
|
||||
* General syntax: [error message ?errorInfo? ?errorCode?]
|
||||
* However, we only deal with the case where there is just a message.
|
||||
*/
|
||||
Tcl_Token *messageTokenPtr;
|
||||
|
||||
Tcl_Token *tokenPtr;
|
||||
DefineLineInformation; /* TIP #280 */
|
||||
|
||||
if (parsePtr->numWords != 2) {
|
||||
if (parsePtr->numWords < 2 || parsePtr->numWords > 4) {
|
||||
return TCL_ERROR;
|
||||
}
|
||||
messageTokenPtr = TokenAfter(parsePtr->tokenPtr);
|
||||
|
||||
PushStringLiteral(envPtr, "-code error -level 0");
|
||||
CompileWord(envPtr, messageTokenPtr, interp, 1);
|
||||
TclEmitOpcode(INST_RETURN_STK, envPtr);
|
||||
/*
|
||||
* Handle the message.
|
||||
*/
|
||||
|
||||
tokenPtr = TokenAfter(parsePtr->tokenPtr);
|
||||
CompileWord(envPtr, tokenPtr, interp, 1);
|
||||
|
||||
/*
|
||||
* Construct the options. Note that -code and -level are not here.
|
||||
*/
|
||||
|
||||
if (parsePtr->numWords == 2) {
|
||||
PushStringLiteral(envPtr, "");
|
||||
} else {
|
||||
PushStringLiteral(envPtr, "-errorinfo");
|
||||
tokenPtr = TokenAfter(tokenPtr);
|
||||
CompileWord(envPtr, tokenPtr, interp, 2);
|
||||
if (parsePtr->numWords == 3) {
|
||||
TclEmitInstInt4( INST_LIST, 2, envPtr);
|
||||
} else {
|
||||
PushStringLiteral(envPtr, "-errorcode");
|
||||
tokenPtr = TokenAfter(tokenPtr);
|
||||
CompileWord(envPtr, tokenPtr, interp, 3);
|
||||
TclEmitInstInt4( INST_LIST, 4, envPtr);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Issue the error via 'returnImm error 0'.
|
||||
*/
|
||||
|
||||
TclEmitInstInt4( INST_RETURN_IMM, TCL_ERROR, envPtr);
|
||||
TclEmitInt4( 0, envPtr);
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
|
||||
+24
-3
@@ -2367,7 +2367,7 @@ TclCompileReturnCmd(
|
||||
|
||||
CompileWord(envPtr, optsTokenPtr, interp, 2);
|
||||
CompileWord(envPtr, msgTokenPtr, interp, 3);
|
||||
TclEmitOpcode(INST_RETURN_STK, envPtr);
|
||||
TclEmitInvoke(envPtr, INST_RETURN_STK);
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
@@ -2381,6 +2381,10 @@ TclCompileReturnCmd(
|
||||
* Scan through the return options. If any are unknown at compile time,
|
||||
* there is no value in bytecompiling. Save the option values known in an
|
||||
* objv array for merging into a return options dictionary.
|
||||
*
|
||||
* TODO: There is potential for improvement if all option keys are known
|
||||
* at compile time and all option values relating to '-code' and '-level'
|
||||
* are known at compile time.
|
||||
*/
|
||||
|
||||
for (objc = 0; objc < numOptionWords; objc++) {
|
||||
@@ -2388,7 +2392,7 @@ TclCompileReturnCmd(
|
||||
Tcl_IncrRefCount(objv[objc]);
|
||||
if (!TclWordKnownAtCompileTime(wordTokenPtr, objv[objc])) {
|
||||
/*
|
||||
* Non-literal, so punt to run-time.
|
||||
* Non-literal, so punt to run-time assembly of the dictionary.
|
||||
*/
|
||||
|
||||
for (; objc>=0 ; objc--) {
|
||||
@@ -2509,7 +2513,7 @@ TclCompileReturnCmd(
|
||||
* Issue the RETURN itself.
|
||||
*/
|
||||
|
||||
TclEmitOpcode(INST_RETURN_STK, envPtr);
|
||||
TclEmitInvoke(envPtr, INST_RETURN_STK);
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
@@ -2521,6 +2525,23 @@ CompileReturnInternal(
|
||||
int level,
|
||||
Tcl_Obj *returnOpts)
|
||||
{
|
||||
if (level == 0 && (code == TCL_BREAK || code == TCL_CONTINUE)) {
|
||||
ExceptionRange *rangePtr;
|
||||
ExceptionAux *exceptAux;
|
||||
|
||||
rangePtr = TclGetInnermostExceptionRange(envPtr, code, &exceptAux);
|
||||
if (rangePtr && rangePtr->type == LOOP_EXCEPTION_RANGE) {
|
||||
TclCleanupStackForBreakContinue(envPtr, exceptAux);
|
||||
if (code == TCL_BREAK) {
|
||||
TclAddLoopBreakFixup(envPtr, exceptAux);
|
||||
} else {
|
||||
TclAddLoopContinueFixup(envPtr, exceptAux);
|
||||
}
|
||||
Tcl_DecrRefCount(returnOpts);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
TclEmitPush(TclAddLiteralObj(envPtr, returnOpts, NULL), envPtr);
|
||||
TclEmitInstInt4(op, code, envPtr);
|
||||
TclEmitInt4(level, envPtr);
|
||||
|
||||
@@ -99,6 +99,8 @@ const AuxDataType tclJumptableInfoType = {
|
||||
if ((idx)<256) {OP1(LOAD_SCALAR1,(idx));} else {OP4(LOAD_SCALAR4,(idx));}
|
||||
#define STORE(idx) \
|
||||
if ((idx)<256) {OP1(STORE_SCALAR1,(idx));} else {OP4(STORE_SCALAR4,(idx));}
|
||||
#define INVOKE(name) \
|
||||
TclEmitInvoke(envPtr,INST_##name)
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
@@ -873,7 +875,7 @@ TclSubstCompile(
|
||||
OP( END_CATCH);
|
||||
OP( RETURN_CODE_BRANCH);
|
||||
|
||||
/* ERROR -> reraise it */
|
||||
/* ERROR -> reraise it; NB: can't require BREAK/CONTINUE handling */
|
||||
OP( RETURN_STK);
|
||||
OP( NOP);
|
||||
|
||||
@@ -1965,7 +1967,7 @@ TclCompileThrowCmd(
|
||||
OP( LIST_LENGTH);
|
||||
OP1( JUMP_FALSE1, 16);
|
||||
OP4( LIST, 2);
|
||||
OP44( RETURN_IMM, 1, 0);
|
||||
OP44( RETURN_IMM, TCL_ERROR, 0);
|
||||
TclAdjustStackDepth(2, envPtr);
|
||||
OP( POP);
|
||||
OP( POP);
|
||||
@@ -1974,7 +1976,7 @@ TclCompileThrowCmd(
|
||||
PUSH( "type must be non-empty list");
|
||||
PUSH( "-errorcode {TCL OPERATION THROW BADEXCEPTION}");
|
||||
}
|
||||
OP44( RETURN_IMM, 1, 0);
|
||||
OP44( RETURN_IMM, TCL_ERROR, 0);
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
@@ -2396,7 +2398,7 @@ IssueTryClausesInstructions(
|
||||
TclAdjustStackDepth(-1, envPtr);
|
||||
FIXJUMP1( dontChangeOptions);
|
||||
OP4( REVERSE, 2);
|
||||
OP( RETURN_STK);
|
||||
INVOKE( RETURN_STK);
|
||||
}
|
||||
|
||||
JUMP4( JUMP, addrsToFix[i]);
|
||||
@@ -2415,7 +2417,7 @@ IssueTryClausesInstructions(
|
||||
OP( POP);
|
||||
LOAD( optionsVar);
|
||||
LOAD( resultVar);
|
||||
OP( RETURN_STK);
|
||||
INVOKE( RETURN_STK);
|
||||
|
||||
/*
|
||||
* Fix all the jumps from taken clauses to here (which is the end of the
|
||||
@@ -2724,7 +2726,7 @@ IssueTryClausesFinallyInstructions(
|
||||
FIXJUMP1( finalOK);
|
||||
LOAD( optionsVar);
|
||||
LOAD( resultVar);
|
||||
OP( RETURN_STK);
|
||||
INVOKE( RETURN_STK);
|
||||
|
||||
return TCL_OK;
|
||||
}
|
||||
@@ -2783,7 +2785,7 @@ IssueTryFinallyInstructions(
|
||||
OP1( JUMP1, 7);
|
||||
FIXJUMP1( jumpOK);
|
||||
OP4( REVERSE, 2);
|
||||
OP( RETURN_STK);
|
||||
INVOKE( RETURN_STK);
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
|
||||
@@ -2335,9 +2335,9 @@ CompileExprTree(
|
||||
*/
|
||||
|
||||
if (numWords < 255) {
|
||||
TclEmitInstInt1(INST_INVOKE_STK1, numWords, envPtr);
|
||||
TclEmitInvoke(envPtr, INST_INVOKE_STK1, numWords);
|
||||
} else {
|
||||
TclEmitInstInt4(INST_INVOKE_STK4, numWords, envPtr);
|
||||
TclEmitInvoke(envPtr, INST_INVOKE_STK4, numWords);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+201
-7
@@ -1738,9 +1738,9 @@ TclCompileInvocation(
|
||||
}
|
||||
|
||||
if (wordIdx <= 255) {
|
||||
TclEmitInstInt1(INST_INVOKE_STK1, wordIdx, envPtr);
|
||||
TclEmitInvoke(envPtr, INST_INVOKE_STK1, wordIdx);
|
||||
} else {
|
||||
TclEmitInstInt4(INST_INVOKE_STK4, wordIdx, envPtr);
|
||||
TclEmitInvoke(envPtr, INST_INVOKE_STK4, wordIdx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1802,9 +1802,7 @@ CompileExpanded(
|
||||
* stack-neutral in general.
|
||||
*/
|
||||
|
||||
TclEmitOpcode(INST_INVOKE_EXPANDED, envPtr);
|
||||
envPtr->expandCount--;
|
||||
TclAdjustStackDepth(1 - wordIdx, envPtr);
|
||||
TclEmitInvoke(envPtr, INST_INVOKE_EXPANDED, wordIdx);
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -2229,7 +2227,7 @@ TclCompileTokens(
|
||||
Tcl_DString textBuffer; /* Holds concatenated chars from adjacent
|
||||
* TCL_TOKEN_TEXT, TCL_TOKEN_BS tokens. */
|
||||
char buffer[TCL_UTF_MAX];
|
||||
int i, numObjsToConcat, length;
|
||||
int i, numObjsToConcat, length, adjust;
|
||||
unsigned char *entryCodeNext = envPtr->codeNext;
|
||||
#define NUM_STATIC_POS 20
|
||||
int isLiteral, maxNumCL, numCL;
|
||||
@@ -2266,6 +2264,7 @@ TclCompileTokens(
|
||||
clPosition = ckalloc(maxNumCL * sizeof(int));
|
||||
}
|
||||
|
||||
adjust = 0;
|
||||
Tcl_DStringInit(&textBuffer);
|
||||
numObjsToConcat = 0;
|
||||
for ( ; count > 0; count--, tokenPtr++) {
|
||||
@@ -2309,6 +2308,7 @@ TclCompileTokens(
|
||||
clPosition[numCL] = clPos;
|
||||
numCL ++;
|
||||
}
|
||||
adjust++;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2331,8 +2331,10 @@ TclCompileTokens(
|
||||
numCL = 0;
|
||||
}
|
||||
|
||||
envPtr->line += adjust;
|
||||
TclCompileScript(interp, tokenPtr->start+1,
|
||||
tokenPtr->size-2, envPtr);
|
||||
envPtr->line -= adjust;
|
||||
numObjsToConcat++;
|
||||
break;
|
||||
|
||||
@@ -2454,7 +2456,7 @@ TclCompileCmdWord(
|
||||
*/
|
||||
|
||||
TclCompileTokens(interp, tokenPtr, count, envPtr);
|
||||
TclEmitOpcode(INST_EVAL_STK, envPtr);
|
||||
TclEmitInvoke(envPtr, INST_EVAL_STK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3897,6 +3899,198 @@ TclFixupForwardJump(
|
||||
return 1; /* the jump was grown */
|
||||
}
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* TclEmitInvoke --
|
||||
*
|
||||
* Emit one of the invoke-related instructions, wrapping it if necessary
|
||||
* in code that ensures that any break or continue operation passing
|
||||
* through it gets the stack unwinding correct, converting it into an
|
||||
* internal jump if in an appropriate context.
|
||||
*
|
||||
* Results:
|
||||
* None
|
||||
*
|
||||
* Side effects:
|
||||
* Issues the jump with all correct stack management. May create another
|
||||
* loop exception range; pointers to ExceptionRange and ExceptionAux
|
||||
* structures should not be held across this call.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
void
|
||||
TclEmitInvoke(
|
||||
CompileEnv *envPtr,
|
||||
int opcode,
|
||||
...)
|
||||
{
|
||||
va_list argList;
|
||||
ExceptionRange *rangePtr;
|
||||
ExceptionAux *auxBreakPtr, *auxContinuePtr;
|
||||
int arg1, arg2, wordCount = 0, expandCount = 0;
|
||||
int loopRange, breakRange, continueRange;
|
||||
|
||||
/*
|
||||
* Parse the arguments.
|
||||
*/
|
||||
|
||||
va_start(argList, opcode);
|
||||
switch (opcode) {
|
||||
case INST_INVOKE_STK1:
|
||||
wordCount = arg1 = va_arg(argList, int);
|
||||
arg2 = 0;
|
||||
break;
|
||||
case INST_INVOKE_STK4:
|
||||
wordCount = arg1 = va_arg(argList, int);
|
||||
arg2 = 0;
|
||||
break;
|
||||
case INST_INVOKE_REPLACE:
|
||||
arg1 = va_arg(argList, int);
|
||||
arg2 = va_arg(argList, int);
|
||||
wordCount = arg1 + arg2 - 1;
|
||||
break;
|
||||
default:
|
||||
Tcl_Panic("unexpected opcode");
|
||||
case INST_EVAL_STK:
|
||||
wordCount = 1;
|
||||
arg1 = arg2 = 0;
|
||||
break;
|
||||
case INST_RETURN_STK:
|
||||
wordCount = 2;
|
||||
arg1 = arg2 = 0;
|
||||
break;
|
||||
case INST_INVOKE_EXPANDED:
|
||||
wordCount = arg1 = va_arg(argList, int);
|
||||
arg2 = 0;
|
||||
expandCount = 1;
|
||||
break;
|
||||
}
|
||||
va_end(argList);
|
||||
|
||||
/*
|
||||
* Determine if we need to handle break and continue exceptions with a
|
||||
* special handling exception range (so that we can correctly unwind the
|
||||
* stack).
|
||||
*
|
||||
* These must be done separately; they can be different (especially for
|
||||
* calls from inside a [for] increment clause).
|
||||
*/
|
||||
|
||||
rangePtr = TclGetInnermostExceptionRange(envPtr, TCL_BREAK, &auxBreakPtr);
|
||||
if (rangePtr == NULL || rangePtr->type != LOOP_EXCEPTION_RANGE) {
|
||||
auxBreakPtr = NULL;
|
||||
} else if (auxBreakPtr->stackDepth == envPtr->currStackDepth-wordCount
|
||||
&& auxBreakPtr->expandTarget == envPtr->expandCount-expandCount) {
|
||||
auxBreakPtr = NULL;
|
||||
} else {
|
||||
breakRange = auxBreakPtr - envPtr->exceptAuxArrayPtr;
|
||||
}
|
||||
|
||||
rangePtr = TclGetInnermostExceptionRange(envPtr, TCL_CONTINUE,
|
||||
&auxContinuePtr);
|
||||
if (rangePtr == NULL || rangePtr->type != LOOP_EXCEPTION_RANGE) {
|
||||
auxContinuePtr = NULL;
|
||||
} else if (auxContinuePtr->stackDepth == envPtr->currStackDepth-wordCount
|
||||
&& auxContinuePtr->expandTarget == envPtr->expandCount-expandCount) {
|
||||
auxContinuePtr = NULL;
|
||||
} else {
|
||||
continueRange = auxBreakPtr - envPtr->exceptAuxArrayPtr;
|
||||
}
|
||||
|
||||
if (auxBreakPtr != NULL || auxContinuePtr != NULL) {
|
||||
loopRange = TclCreateExceptRange(LOOP_EXCEPTION_RANGE, envPtr);
|
||||
ExceptionRangeStarts(envPtr, loopRange);
|
||||
}
|
||||
|
||||
/*
|
||||
* Issue the invoke itself.
|
||||
*/
|
||||
|
||||
switch (opcode) {
|
||||
case INST_INVOKE_STK1:
|
||||
TclEmitInstInt1(INST_INVOKE_STK1, arg1, envPtr);
|
||||
break;
|
||||
case INST_INVOKE_STK4:
|
||||
TclEmitInstInt4(INST_INVOKE_STK4, arg1, envPtr);
|
||||
break;
|
||||
case INST_INVOKE_EXPANDED:
|
||||
TclEmitOpcode(INST_INVOKE_EXPANDED, envPtr);
|
||||
envPtr->expandCount--;
|
||||
TclAdjustStackDepth(1 - arg1, envPtr);
|
||||
break;
|
||||
case INST_EVAL_STK:
|
||||
TclEmitOpcode(INST_EVAL_STK, envPtr);
|
||||
break;
|
||||
case INST_RETURN_STK:
|
||||
TclEmitOpcode(INST_RETURN_STK, envPtr);
|
||||
break;
|
||||
case INST_INVOKE_REPLACE:
|
||||
TclEmitInstInt4(INST_INVOKE_REPLACE, arg1, envPtr);
|
||||
TclEmitInt1(arg2, envPtr);
|
||||
TclAdjustStackDepth(-1, envPtr); /* Correction to stack depth calcs */
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* If we're generating a special wrapper exception range, we need to
|
||||
* finish that up now.
|
||||
*/
|
||||
|
||||
if (auxBreakPtr != NULL || auxContinuePtr != NULL) {
|
||||
int savedStackDepth = envPtr->currStackDepth;
|
||||
int savedExpandCount = envPtr->expandCount;
|
||||
JumpFixup nonTrapFixup;
|
||||
ExceptionAux *exceptAux = envPtr->exceptAuxArrayPtr + loopRange;
|
||||
|
||||
if (auxBreakPtr != NULL) {
|
||||
auxBreakPtr = envPtr->exceptAuxArrayPtr + breakRange;
|
||||
}
|
||||
if (auxContinuePtr != NULL) {
|
||||
auxContinuePtr = envPtr->exceptAuxArrayPtr + continueRange;
|
||||
}
|
||||
|
||||
ExceptionRangeEnds(envPtr, loopRange);
|
||||
TclEmitForwardJump(envPtr, TCL_UNCONDITIONAL_JUMP, &nonTrapFixup);
|
||||
|
||||
/*
|
||||
* Careful! When generating these stack unwinding sequences, the depth
|
||||
* of stack in the cases where they are taken is not the same as if
|
||||
* the exception is not taken.
|
||||
*/
|
||||
|
||||
if (auxBreakPtr != NULL) {
|
||||
TclAdjustStackDepth(-1, envPtr);
|
||||
exceptAux->stackDepth = auxBreakPtr->stackDepth;
|
||||
exceptAux->expandTarget = auxBreakPtr->expandTarget;
|
||||
|
||||
ExceptionRangeTarget(envPtr, loopRange, breakOffset);
|
||||
TclCleanupStackForBreakContinue(envPtr, exceptAux);
|
||||
TclAddLoopBreakFixup(envPtr, auxBreakPtr);
|
||||
|
||||
envPtr->currStackDepth = savedStackDepth;
|
||||
envPtr->expandCount = savedExpandCount;
|
||||
}
|
||||
|
||||
if (auxContinuePtr != NULL) {
|
||||
TclAdjustStackDepth(-1, envPtr);
|
||||
exceptAux->stackDepth = auxContinuePtr->stackDepth;
|
||||
exceptAux->expandTarget = auxContinuePtr->expandTarget;
|
||||
|
||||
ExceptionRangeTarget(envPtr, loopRange, continueOffset);
|
||||
TclCleanupStackForBreakContinue(envPtr, exceptAux);
|
||||
TclAddLoopContinueFixup(envPtr, auxContinuePtr);
|
||||
|
||||
envPtr->currStackDepth = savedStackDepth;
|
||||
envPtr->expandCount = savedExpandCount;
|
||||
}
|
||||
|
||||
TclFinalizeLoopExceptionRange(envPtr, loopRange);
|
||||
TclFixupForwardJumpToHere(envPtr, &nonTrapFixup, 127);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
|
||||
@@ -1021,6 +1021,7 @@ MODULE_SCOPE void TclDeleteLiteralTable(Tcl_Interp *interp,
|
||||
LiteralTable *tablePtr);
|
||||
MODULE_SCOPE void TclEmitForwardJump(CompileEnv *envPtr,
|
||||
TclJumpType jumpType, JumpFixup *jumpFixupPtr);
|
||||
MODULE_SCOPE void TclEmitInvoke(CompileEnv *envPtr, int opcode, ...);
|
||||
MODULE_SCOPE ExceptionRange * TclGetExceptionRangeForPc(unsigned char *pc,
|
||||
int catchOnly, ByteCode *codePtr);
|
||||
MODULE_SCOPE void TclExpandJumpFixupArray(JumpFixupArray *fixupArrayPtr);
|
||||
|
||||
@@ -3179,9 +3179,7 @@ CompileToInvokedCommand(
|
||||
* Do the replacing dispatch.
|
||||
*/
|
||||
|
||||
TclEmitInstInt4(INST_INVOKE_REPLACE, parsePtr->numWords, envPtr);
|
||||
TclEmitInt1(numWords+1, envPtr);
|
||||
TclAdjustStackDepth(-1, envPtr); /* Correction to stack depth calcs. */
|
||||
TclEmitInvoke(envPtr, INST_INVOKE_REPLACE, parsePtr->numWords,numWords+1);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+65
-16
@@ -76,36 +76,56 @@ TclSetupEnv(
|
||||
Tcl_Interp *interp) /* Interpreter whose "env" array is to be
|
||||
* managed. */
|
||||
{
|
||||
Var *varPtr, *arrayPtr;
|
||||
Tcl_Obj *varNamePtr;
|
||||
Tcl_DString envString;
|
||||
char *p1, *p2;
|
||||
int i;
|
||||
Tcl_HashTable namesHash;
|
||||
Tcl_HashEntry *hPtr;
|
||||
Tcl_HashSearch search;
|
||||
|
||||
/*
|
||||
* Synchronize the values in the environ array with the contents of the
|
||||
* Tcl "env" variable. To do this:
|
||||
* 1) Remove the trace that fires when the "env" var is unset.
|
||||
* 2) Unset the "env" variable.
|
||||
* 3) If there are no environ variables, create an empty "env" array.
|
||||
* Otherwise populate the array with current values.
|
||||
* 4) Add a trace that synchronizes the "env" array.
|
||||
* 1) Remove the trace that fires when the "env" var is updated.
|
||||
* 2) Find the existing contents of the "env", storing in a hash table.
|
||||
* 3) Create/update elements for each environ variable, removing
|
||||
* elements from the hash table as we go.
|
||||
* 4) Remove the elements for each remaining entry in the hash table,
|
||||
* which must have existed before yet have no analog in the environ
|
||||
* variable.
|
||||
* 5) Add a trace that synchronizes the "env" array.
|
||||
*/
|
||||
|
||||
Tcl_UntraceVar2(interp, "env", NULL,
|
||||
TCL_GLOBAL_ONLY | TCL_TRACE_WRITES | TCL_TRACE_UNSETS |
|
||||
TCL_TRACE_READS | TCL_TRACE_ARRAY, EnvTraceProc, NULL);
|
||||
|
||||
Tcl_UnsetVar2(interp, "env", NULL, TCL_GLOBAL_ONLY);
|
||||
/*
|
||||
* Find out what elements are currently in the global env array.
|
||||
*/
|
||||
|
||||
if (environ[0] == NULL) {
|
||||
Tcl_Obj *varNamePtr;
|
||||
TclNewLiteralStringObj(varNamePtr, "env");
|
||||
Tcl_IncrRefCount(varNamePtr);
|
||||
Tcl_InitObjHashTable(&namesHash);
|
||||
varPtr = TclObjLookupVarEx(interp, varNamePtr, NULL, TCL_GLOBAL_ONLY,
|
||||
/*msg*/ 0, /*createPart1*/ 0, /*createPart2*/ 0, &arrayPtr);
|
||||
TclFindArrayPtrElements(varPtr, &namesHash);
|
||||
|
||||
/*
|
||||
* Go through the environment array and transfer its values into Tcl. At
|
||||
* the same time, remove those elements we add/update from the hash table
|
||||
* of existing elements, so that after this part processes, that table
|
||||
* will hold just the parts to remove.
|
||||
*/
|
||||
|
||||
if (environ[0] != NULL) {
|
||||
int i;
|
||||
|
||||
TclNewLiteralStringObj(varNamePtr, "env");
|
||||
Tcl_IncrRefCount(varNamePtr);
|
||||
TclArraySet(interp, varNamePtr, NULL);
|
||||
Tcl_DecrRefCount(varNamePtr);
|
||||
} else {
|
||||
Tcl_MutexLock(&envMutex);
|
||||
for (i = 0; environ[i] != NULL; i++) {
|
||||
Tcl_Obj *obj1, *obj2;
|
||||
char *p1, *p2;
|
||||
|
||||
p1 = Tcl_ExternalToUtfDString(NULL, environ[i], -1, &envString);
|
||||
p2 = strchr(p1, '=');
|
||||
if (p2 == NULL) {
|
||||
@@ -119,12 +139,41 @@ TclSetupEnv(
|
||||
}
|
||||
p2++;
|
||||
p2[-1] = '\0';
|
||||
Tcl_SetVar2(interp, "env", p1, p2, TCL_GLOBAL_ONLY);
|
||||
obj1 = Tcl_NewStringObj(p1, -1);
|
||||
obj2 = Tcl_NewStringObj(p2, -1);
|
||||
Tcl_DStringFree(&envString);
|
||||
|
||||
Tcl_IncrRefCount(obj1);
|
||||
Tcl_IncrRefCount(obj2);
|
||||
Tcl_ObjSetVar2(interp, varNamePtr, obj1, obj2, TCL_GLOBAL_ONLY);
|
||||
hPtr = Tcl_FindHashEntry(&namesHash, obj1);
|
||||
if (hPtr != NULL) {
|
||||
Tcl_DeleteHashEntry(hPtr);
|
||||
}
|
||||
Tcl_DecrRefCount(obj1);
|
||||
Tcl_DecrRefCount(obj2);
|
||||
}
|
||||
Tcl_MutexUnlock(&envMutex);
|
||||
}
|
||||
|
||||
/*
|
||||
* Delete those elements that existed in the array but which had no
|
||||
* counterparts in the environment array.
|
||||
*/
|
||||
|
||||
for (hPtr=Tcl_FirstHashEntry(&namesHash, &search); hPtr!=NULL;
|
||||
hPtr=Tcl_NextHashEntry(&search)) {
|
||||
Tcl_Obj *elemName = Tcl_GetHashValue(hPtr);
|
||||
|
||||
TclObjUnsetVar2(interp, varNamePtr, elemName, TCL_GLOBAL_ONLY);
|
||||
}
|
||||
Tcl_DeleteHashTable(&namesHash);
|
||||
Tcl_DecrRefCount(varNamePtr);
|
||||
|
||||
/*
|
||||
* Re-establish the trace.
|
||||
*/
|
||||
|
||||
Tcl_TraceVar2(interp, "env", NULL,
|
||||
TCL_GLOBAL_ONLY | TCL_TRACE_WRITES | TCL_TRACE_UNSETS |
|
||||
TCL_TRACE_READS | TCL_TRACE_ARRAY, EnvTraceProc, NULL);
|
||||
|
||||
+12
-8
@@ -293,12 +293,14 @@ VarHashCreateVar(
|
||||
switch (nCleanup) { \
|
||||
case 1: goto cleanup1_pushObjResultPtr; \
|
||||
case 2: goto cleanup2_pushObjResultPtr; \
|
||||
case 0: break; \
|
||||
} \
|
||||
} else { \
|
||||
pc += (pcAdjustment); \
|
||||
switch (nCleanup) { \
|
||||
case 1: goto cleanup1; \
|
||||
case 2: goto cleanup2; \
|
||||
case 0: break; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
@@ -360,6 +362,8 @@ VarHashCreateVar(
|
||||
|
||||
#define CURR_DEPTH ((ptrdiff_t) (tosPtr - initTosPtr))
|
||||
|
||||
#define STACK_BASE(esPtr) ((esPtr)->stackWords - 1)
|
||||
|
||||
/*
|
||||
* Macros used to trace instruction execution. The macros TRACE,
|
||||
* TRACE_WITH_OBJ, and O2S are only used inside TclNRExecuteByteCode. O2S is
|
||||
@@ -451,7 +455,7 @@ VarHashCreateVar(
|
||||
(&((objPtr)->internalRep.doubleValue)), TCL_OK) : \
|
||||
((((objPtr)->typePtr == NULL) && ((objPtr)->bytes == NULL)) || \
|
||||
(((objPtr)->bytes != NULL) && ((objPtr)->length == 0))) \
|
||||
? TCL_ERROR : \
|
||||
? (*(tPtr) = TCL_NUMBER_LONG),TCL_ERROR : \
|
||||
TclGetNumberFromObj((interp), (objPtr), (ptrPtr), (tPtr)))
|
||||
#else /* !TCL_WIDE_INT_IS_LONG */
|
||||
#define GetNumberFromObj(interp, objPtr, ptrPtr, tPtr) \
|
||||
@@ -471,7 +475,7 @@ VarHashCreateVar(
|
||||
(&((objPtr)->internalRep.doubleValue)), TCL_OK) : \
|
||||
((((objPtr)->typePtr == NULL) && ((objPtr)->bytes == NULL)) || \
|
||||
(((objPtr)->bytes != NULL) && ((objPtr)->length == 0))) \
|
||||
? TCL_ERROR : \
|
||||
? (*(tPtr) = TCL_NUMBER_LONG),TCL_ERROR : \
|
||||
TclGetNumberFromObj((interp), (objPtr), (ptrPtr), (tPtr)))
|
||||
#endif /* TCL_WIDE_INT_IS_LONG */
|
||||
|
||||
@@ -885,7 +889,7 @@ TclCreateExecEnv(
|
||||
esPtr->nextPtr = NULL;
|
||||
esPtr->markerPtr = NULL;
|
||||
esPtr->endPtr = &esPtr->stackWords[size-1];
|
||||
esPtr->tosPtr = &esPtr->stackWords[-1];
|
||||
esPtr->tosPtr = STACK_BASE(esPtr);
|
||||
|
||||
Tcl_MutexLock(&execMutex);
|
||||
if (!execInitialized) {
|
||||
@@ -1106,8 +1110,8 @@ GrowEvaluationStack(
|
||||
if (esPtr->nextPtr) {
|
||||
oldPtr = esPtr;
|
||||
esPtr = oldPtr->nextPtr;
|
||||
currElems = esPtr->endPtr - &esPtr->stackWords[-1];
|
||||
if (esPtr->markerPtr || (esPtr->tosPtr != &esPtr->stackWords[-1])) {
|
||||
currElems = esPtr->endPtr - STACK_BASE(esPtr);
|
||||
if (esPtr->markerPtr || (esPtr->tosPtr != STACK_BASE(esPtr))) {
|
||||
Tcl_Panic("STACK: Stack after current is in use");
|
||||
}
|
||||
if (esPtr->nextPtr) {
|
||||
@@ -1119,7 +1123,7 @@ GrowEvaluationStack(
|
||||
DeleteExecStack(esPtr);
|
||||
esPtr = oldPtr;
|
||||
} else {
|
||||
currElems = esPtr->endPtr - &esPtr->stackWords[-1];
|
||||
currElems = esPtr->endPtr - STACK_BASE(esPtr);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1273,10 +1277,10 @@ TclStackFree(
|
||||
while (esPtr->nextPtr) {
|
||||
esPtr = esPtr->nextPtr;
|
||||
}
|
||||
esPtr->tosPtr = &esPtr->stackWords[-1];
|
||||
esPtr->tosPtr = STACK_BASE(esPtr);
|
||||
while (esPtr->prevPtr) {
|
||||
ExecStack *tmpPtr = esPtr->prevPtr;
|
||||
if (tmpPtr->tosPtr == &tmpPtr->stackWords[-1]) {
|
||||
if (tmpPtr->tosPtr == STACK_BASE(tmpPtr)) {
|
||||
DeleteExecStack(tmpPtr);
|
||||
} else {
|
||||
break;
|
||||
|
||||
+1
-1
@@ -1944,7 +1944,7 @@ TclNREvalFile(
|
||||
iPtr->evalFlags |= TCL_EVAL_FILE;
|
||||
TclNRAddCallback(interp, EvalFileCallback, oldScriptFile, pathPtr, objPtr,
|
||||
NULL);
|
||||
return TclNREvalObjEx(interp, objPtr, TCL_EVAL_DIRECT, NULL, INT_MIN);
|
||||
return TclNREvalObjEx(interp, objPtr, 0, NULL, INT_MIN);
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
@@ -3857,6 +3857,8 @@ MODULE_SCOPE int TclPtrUnsetVar(Tcl_Interp *interp, Var *varPtr,
|
||||
Tcl_Obj *part2Ptr, const int flags,
|
||||
int index);
|
||||
MODULE_SCOPE void TclInvalidateNsPath(Namespace *nsPtr);
|
||||
MODULE_SCOPE void TclFindArrayPtrElements(Var *arrayPtr,
|
||||
Tcl_HashTable *tablePtr);
|
||||
|
||||
/*
|
||||
* The new extended interface to the variable traces.
|
||||
|
||||
+65
-30
@@ -673,6 +673,10 @@ Tcl_CreateNamespace(
|
||||
Tcl_DString *namePtr, *buffPtr;
|
||||
int newEntry, nameLen;
|
||||
ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
|
||||
const char *nameStr;
|
||||
Tcl_DString tmpBuffer;
|
||||
|
||||
Tcl_DStringInit(&tmpBuffer);
|
||||
|
||||
/*
|
||||
* If there is no active namespace, the interpreter is being initialized.
|
||||
@@ -686,49 +690,78 @@ Tcl_CreateNamespace(
|
||||
|
||||
parentPtr = NULL;
|
||||
simpleName = "";
|
||||
} else if (*name == '\0') {
|
||||
goto doCreate;
|
||||
}
|
||||
|
||||
/*
|
||||
* Ensure that there are no trailing colons as that causes chaos when a
|
||||
* deleteProc is specified. [Bug d614d63989]
|
||||
*/
|
||||
|
||||
if (deleteProc != NULL) {
|
||||
nameStr = name + strlen(name) - 2;
|
||||
if (nameStr >= name && nameStr[1] == ':' && nameStr[0] == ':') {
|
||||
Tcl_DStringAppend(&tmpBuffer, name, -1);
|
||||
while ((nameLen = Tcl_DStringLength(&tmpBuffer)) > 0
|
||||
&& Tcl_DStringValue(&tmpBuffer)[nameLen-1] == ':') {
|
||||
Tcl_DStringSetLength(&tmpBuffer, nameLen-1);
|
||||
}
|
||||
name = Tcl_DStringValue(&tmpBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If we've ended up with an empty string now, we're attempting to create
|
||||
* the global namespace despite the global namespace existing. That's
|
||||
* naughty!
|
||||
*/
|
||||
|
||||
if (*name == '\0') {
|
||||
Tcl_SetObjResult(interp, Tcl_NewStringObj("can't create namespace"
|
||||
" \"\": only global namespace can have empty name", -1));
|
||||
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "NAMESPACE",
|
||||
"CREATEGLOBAL", NULL);
|
||||
Tcl_DStringFree(&tmpBuffer);
|
||||
return NULL;
|
||||
} else {
|
||||
/*
|
||||
* Find the parent for the new namespace.
|
||||
*/
|
||||
}
|
||||
|
||||
TclGetNamespaceForQualName(interp, name, NULL, TCL_CREATE_NS_IF_UNKNOWN,
|
||||
&parentPtr, &dummy1Ptr, &dummy2Ptr, &simpleName);
|
||||
/*
|
||||
* Find the parent for the new namespace.
|
||||
*/
|
||||
|
||||
/*
|
||||
* If the unqualified name at the end is empty, there were trailing
|
||||
* "::"s after the namespace's name which we ignore. The new namespace
|
||||
* was already (recursively) created and is pointed to by parentPtr.
|
||||
*/
|
||||
TclGetNamespaceForQualName(interp, name, NULL, TCL_CREATE_NS_IF_UNKNOWN,
|
||||
&parentPtr, &dummy1Ptr, &dummy2Ptr, &simpleName);
|
||||
|
||||
if (*simpleName == '\0') {
|
||||
return (Tcl_Namespace *) parentPtr;
|
||||
}
|
||||
/*
|
||||
* If the unqualified name at the end is empty, there were trailing "::"s
|
||||
* after the namespace's name which we ignore. The new namespace was
|
||||
* already (recursively) created and is pointed to by parentPtr.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Check for a bad namespace name and make sure that the name does not
|
||||
* already exist in the parent namespace.
|
||||
*/
|
||||
if (*simpleName == '\0') {
|
||||
Tcl_DStringFree(&tmpBuffer);
|
||||
return (Tcl_Namespace *) parentPtr;
|
||||
}
|
||||
|
||||
if (
|
||||
/*
|
||||
* Check for a bad namespace name and make sure that the name does not
|
||||
* already exist in the parent namespace.
|
||||
*/
|
||||
|
||||
if (
|
||||
#ifndef BREAK_NAMESPACE_COMPAT
|
||||
Tcl_FindHashEntry(&parentPtr->childTable, simpleName) != NULL
|
||||
Tcl_FindHashEntry(&parentPtr->childTable, simpleName) != NULL
|
||||
#else
|
||||
parentPtr->childTablePtr != NULL &&
|
||||
Tcl_FindHashEntry(parentPtr->childTablePtr, simpleName) != NULL
|
||||
parentPtr->childTablePtr != NULL &&
|
||||
Tcl_FindHashEntry(parentPtr->childTablePtr, simpleName) != NULL
|
||||
#endif
|
||||
) {
|
||||
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
|
||||
"can't create namespace \"%s\": already exists", name));
|
||||
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "NAMESPACE",
|
||||
"CREATEEXISTING", NULL);
|
||||
return NULL;
|
||||
}
|
||||
) {
|
||||
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
|
||||
"can't create namespace \"%s\": already exists", name));
|
||||
Tcl_SetErrorCode(interp, "TCL", "OPERATION", "NAMESPACE",
|
||||
"CREATEEXISTING", NULL);
|
||||
Tcl_DStringFree(&tmpBuffer);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -736,6 +769,7 @@ Tcl_CreateNamespace(
|
||||
* of namespaces created.
|
||||
*/
|
||||
|
||||
doCreate:
|
||||
nsPtr = ckalloc(sizeof(Namespace));
|
||||
nameLen = strlen(simpleName) + 1;
|
||||
nsPtr->name = ckalloc(nameLen);
|
||||
@@ -831,6 +865,7 @@ Tcl_CreateNamespace(
|
||||
|
||||
Tcl_DStringFree(&buffer1);
|
||||
Tcl_DStringFree(&buffer2);
|
||||
Tcl_DStringFree(&tmpBuffer);
|
||||
|
||||
/*
|
||||
* If compilation of commands originating from the parent NS is
|
||||
|
||||
+17
-3
@@ -1,12 +1,24 @@
|
||||
# tclOO.decls --
|
||||
#
|
||||
# This file contains the declarations for all supported public functions
|
||||
# that are exported by the TclOO package that is embedded within the Tcl
|
||||
# library via the stubs table. This file is used to generate the
|
||||
# tclOODecls.h, tclOOIntDecls.h, tclOOStubInit.c, and tclOOStubLib.c
|
||||
# files.
|
||||
#
|
||||
# Copyright (c) 2008-2013 by Donal K. Fellows.
|
||||
#
|
||||
# See the file "license.terms" for information on usage and redistribution of
|
||||
# this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
|
||||
library tclOO
|
||||
|
||||
######################################################################
|
||||
# public API
|
||||
# Public API, exposed for general users of TclOO.
|
||||
#
|
||||
|
||||
interface tclOO
|
||||
hooks tclOOInt
|
||||
scspec TCLOOAPI
|
||||
|
||||
declare 0 {
|
||||
Tcl_Object Tcl_CopyObjectInstance(Tcl_Interp *interp,
|
||||
@@ -116,7 +128,9 @@ declare 28 {
|
||||
}
|
||||
|
||||
######################################################################
|
||||
# private API, exposed to support advanced OO systems that plug in on top
|
||||
# Private API, exposed to support advanced OO systems that plug in on top of
|
||||
# TclOO; not intended for general use and does not have any commitment to
|
||||
# long-term support.
|
||||
#
|
||||
|
||||
interface tclOOInt
|
||||
|
||||
+22
-15
@@ -12,21 +12,6 @@
|
||||
|
||||
#ifndef TCLOO_H_INCLUDED
|
||||
#define TCLOO_H_INCLUDED
|
||||
#include "tcl.h"
|
||||
|
||||
#ifndef TCLOOAPI
|
||||
# if defined(BUILD_tcl) || defined(BUILD_TclOO)
|
||||
# define TCLOOAPI MODULE_SCOPE
|
||||
# else
|
||||
# define TCLOOAPI extern
|
||||
# undef USE_TCLOO_STUBS
|
||||
# define USE_TCLOO_STUBS 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
extern const char *TclOOInitializeStubs(
|
||||
Tcl_Interp *, const char *version);
|
||||
#define Tcl_OOInitStubs(interp) TclOOInitializeStubs((interp), TCLOO_VERSION)
|
||||
|
||||
/*
|
||||
* Be careful when it comes to versioning; need to make sure that the
|
||||
@@ -42,6 +27,25 @@ extern const char *TclOOInitializeStubs(
|
||||
#define TCLOO_VERSION "1.0.1"
|
||||
#define TCLOO_PATCHLEVEL TCLOO_VERSION
|
||||
|
||||
#include "tcl.h"
|
||||
|
||||
/*
|
||||
* For C++ compilers, use extern "C"
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if (defined(USE_TCLOO_STUBS) || defined(USE_TCL_STUBS))
|
||||
extern const char *TclOOInitializeStubs(
|
||||
Tcl_Interp *, const char *version);
|
||||
#define Tcl_OOInitStubs(interp) \
|
||||
TclOOInitializeStubs((interp), TCLOO_VERSION)
|
||||
#else
|
||||
#define Tcl_OOInitStubs(interp) (TCLOO_PATCHLEVEL)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* These are opaque types.
|
||||
*/
|
||||
@@ -130,6 +134,9 @@ typedef struct {
|
||||
|
||||
#include "tclOODecls.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
+43
-29
@@ -5,6 +5,17 @@
|
||||
#ifndef _TCLOODECLS
|
||||
#define _TCLOODECLS
|
||||
|
||||
#undef TCL_STORAGE_CLASS
|
||||
#ifdef BUILD_tcl
|
||||
# define TCL_STORAGE_CLASS DLLEXPORT
|
||||
#else
|
||||
# ifdef USE_TCL_STUBS
|
||||
# define TCL_STORAGE_CLASS
|
||||
# else
|
||||
# define TCL_STORAGE_CLASS DLLIMPORT
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* !BEGIN!: Do not edit below this line. */
|
||||
|
||||
/*
|
||||
@@ -12,92 +23,92 @@
|
||||
*/
|
||||
|
||||
/* 0 */
|
||||
TCLOOAPI Tcl_Object Tcl_CopyObjectInstance(Tcl_Interp *interp,
|
||||
EXTERN Tcl_Object Tcl_CopyObjectInstance(Tcl_Interp *interp,
|
||||
Tcl_Object sourceObject,
|
||||
const char *targetName,
|
||||
const char *targetNamespaceName);
|
||||
/* 1 */
|
||||
TCLOOAPI Tcl_Object Tcl_GetClassAsObject(Tcl_Class clazz);
|
||||
EXTERN Tcl_Object Tcl_GetClassAsObject(Tcl_Class clazz);
|
||||
/* 2 */
|
||||
TCLOOAPI Tcl_Class Tcl_GetObjectAsClass(Tcl_Object object);
|
||||
EXTERN Tcl_Class Tcl_GetObjectAsClass(Tcl_Object object);
|
||||
/* 3 */
|
||||
TCLOOAPI Tcl_Command Tcl_GetObjectCommand(Tcl_Object object);
|
||||
EXTERN Tcl_Command Tcl_GetObjectCommand(Tcl_Object object);
|
||||
/* 4 */
|
||||
TCLOOAPI Tcl_Object Tcl_GetObjectFromObj(Tcl_Interp *interp,
|
||||
EXTERN Tcl_Object Tcl_GetObjectFromObj(Tcl_Interp *interp,
|
||||
Tcl_Obj *objPtr);
|
||||
/* 5 */
|
||||
TCLOOAPI Tcl_Namespace * Tcl_GetObjectNamespace(Tcl_Object object);
|
||||
EXTERN Tcl_Namespace * Tcl_GetObjectNamespace(Tcl_Object object);
|
||||
/* 6 */
|
||||
TCLOOAPI Tcl_Class Tcl_MethodDeclarerClass(Tcl_Method method);
|
||||
EXTERN Tcl_Class Tcl_MethodDeclarerClass(Tcl_Method method);
|
||||
/* 7 */
|
||||
TCLOOAPI Tcl_Object Tcl_MethodDeclarerObject(Tcl_Method method);
|
||||
EXTERN Tcl_Object Tcl_MethodDeclarerObject(Tcl_Method method);
|
||||
/* 8 */
|
||||
TCLOOAPI int Tcl_MethodIsPublic(Tcl_Method method);
|
||||
EXTERN int Tcl_MethodIsPublic(Tcl_Method method);
|
||||
/* 9 */
|
||||
TCLOOAPI int Tcl_MethodIsType(Tcl_Method method,
|
||||
EXTERN int Tcl_MethodIsType(Tcl_Method method,
|
||||
const Tcl_MethodType *typePtr,
|
||||
ClientData *clientDataPtr);
|
||||
/* 10 */
|
||||
TCLOOAPI Tcl_Obj * Tcl_MethodName(Tcl_Method method);
|
||||
EXTERN Tcl_Obj * Tcl_MethodName(Tcl_Method method);
|
||||
/* 11 */
|
||||
TCLOOAPI Tcl_Method Tcl_NewInstanceMethod(Tcl_Interp *interp,
|
||||
EXTERN Tcl_Method Tcl_NewInstanceMethod(Tcl_Interp *interp,
|
||||
Tcl_Object object, Tcl_Obj *nameObj,
|
||||
int isPublic, const Tcl_MethodType *typePtr,
|
||||
ClientData clientData);
|
||||
/* 12 */
|
||||
TCLOOAPI Tcl_Method Tcl_NewMethod(Tcl_Interp *interp, Tcl_Class cls,
|
||||
EXTERN Tcl_Method Tcl_NewMethod(Tcl_Interp *interp, Tcl_Class cls,
|
||||
Tcl_Obj *nameObj, int isPublic,
|
||||
const Tcl_MethodType *typePtr,
|
||||
ClientData clientData);
|
||||
/* 13 */
|
||||
TCLOOAPI Tcl_Object Tcl_NewObjectInstance(Tcl_Interp *interp,
|
||||
EXTERN Tcl_Object Tcl_NewObjectInstance(Tcl_Interp *interp,
|
||||
Tcl_Class cls, const char *nameStr,
|
||||
const char *nsNameStr, int objc,
|
||||
Tcl_Obj *const *objv, int skip);
|
||||
/* 14 */
|
||||
TCLOOAPI int Tcl_ObjectDeleted(Tcl_Object object);
|
||||
EXTERN int Tcl_ObjectDeleted(Tcl_Object object);
|
||||
/* 15 */
|
||||
TCLOOAPI int Tcl_ObjectContextIsFiltering(
|
||||
EXTERN int Tcl_ObjectContextIsFiltering(
|
||||
Tcl_ObjectContext context);
|
||||
/* 16 */
|
||||
TCLOOAPI Tcl_Method Tcl_ObjectContextMethod(Tcl_ObjectContext context);
|
||||
EXTERN Tcl_Method Tcl_ObjectContextMethod(Tcl_ObjectContext context);
|
||||
/* 17 */
|
||||
TCLOOAPI Tcl_Object Tcl_ObjectContextObject(Tcl_ObjectContext context);
|
||||
EXTERN Tcl_Object Tcl_ObjectContextObject(Tcl_ObjectContext context);
|
||||
/* 18 */
|
||||
TCLOOAPI int Tcl_ObjectContextSkippedArgs(
|
||||
EXTERN int Tcl_ObjectContextSkippedArgs(
|
||||
Tcl_ObjectContext context);
|
||||
/* 19 */
|
||||
TCLOOAPI ClientData Tcl_ClassGetMetadata(Tcl_Class clazz,
|
||||
EXTERN ClientData Tcl_ClassGetMetadata(Tcl_Class clazz,
|
||||
const Tcl_ObjectMetadataType *typePtr);
|
||||
/* 20 */
|
||||
TCLOOAPI void Tcl_ClassSetMetadata(Tcl_Class clazz,
|
||||
EXTERN void Tcl_ClassSetMetadata(Tcl_Class clazz,
|
||||
const Tcl_ObjectMetadataType *typePtr,
|
||||
ClientData metadata);
|
||||
/* 21 */
|
||||
TCLOOAPI ClientData Tcl_ObjectGetMetadata(Tcl_Object object,
|
||||
EXTERN ClientData Tcl_ObjectGetMetadata(Tcl_Object object,
|
||||
const Tcl_ObjectMetadataType *typePtr);
|
||||
/* 22 */
|
||||
TCLOOAPI void Tcl_ObjectSetMetadata(Tcl_Object object,
|
||||
EXTERN void Tcl_ObjectSetMetadata(Tcl_Object object,
|
||||
const Tcl_ObjectMetadataType *typePtr,
|
||||
ClientData metadata);
|
||||
/* 23 */
|
||||
TCLOOAPI int Tcl_ObjectContextInvokeNext(Tcl_Interp *interp,
|
||||
EXTERN int Tcl_ObjectContextInvokeNext(Tcl_Interp *interp,
|
||||
Tcl_ObjectContext context, int objc,
|
||||
Tcl_Obj *const *objv, int skip);
|
||||
/* 24 */
|
||||
TCLOOAPI Tcl_ObjectMapMethodNameProc * Tcl_ObjectGetMethodNameMapper(
|
||||
EXTERN Tcl_ObjectMapMethodNameProc * Tcl_ObjectGetMethodNameMapper(
|
||||
Tcl_Object object);
|
||||
/* 25 */
|
||||
TCLOOAPI void Tcl_ObjectSetMethodNameMapper(Tcl_Object object,
|
||||
EXTERN void Tcl_ObjectSetMethodNameMapper(Tcl_Object object,
|
||||
Tcl_ObjectMapMethodNameProc *mapMethodNameProc);
|
||||
/* 26 */
|
||||
TCLOOAPI void Tcl_ClassSetConstructor(Tcl_Interp *interp,
|
||||
EXTERN void Tcl_ClassSetConstructor(Tcl_Interp *interp,
|
||||
Tcl_Class clazz, Tcl_Method method);
|
||||
/* 27 */
|
||||
TCLOOAPI void Tcl_ClassSetDestructor(Tcl_Interp *interp,
|
||||
EXTERN void Tcl_ClassSetDestructor(Tcl_Interp *interp,
|
||||
Tcl_Class clazz, Tcl_Method method);
|
||||
/* 28 */
|
||||
TCLOOAPI Tcl_Obj * Tcl_GetObjectName(Tcl_Interp *interp,
|
||||
EXTERN Tcl_Obj * Tcl_GetObjectName(Tcl_Interp *interp,
|
||||
Tcl_Object object);
|
||||
|
||||
typedef struct {
|
||||
@@ -215,4 +226,7 @@ extern const TclOOStubs *tclOOStubsPtr;
|
||||
#endif /* defined(USE_TCLOO_STUBS) */
|
||||
|
||||
/* !END!: Do not edit above this line. */
|
||||
|
||||
#undef TCL_STORAGE_CLASS
|
||||
#define TCL_STORAGE_CLASS DLLIMPORT
|
||||
#endif /* _TCLOODECLS */
|
||||
|
||||
+30
-16
@@ -5,6 +5,17 @@
|
||||
#ifndef _TCLOOINTDECLS
|
||||
#define _TCLOOINTDECLS
|
||||
|
||||
#undef TCL_STORAGE_CLASS
|
||||
#ifdef BUILD_tcl
|
||||
# define TCL_STORAGE_CLASS DLLEXPORT
|
||||
#else
|
||||
# ifdef USE_TCL_STUBS
|
||||
# define TCL_STORAGE_CLASS
|
||||
# else
|
||||
# define TCL_STORAGE_CLASS DLLIMPORT
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* !BEGIN!: Do not edit below this line. */
|
||||
|
||||
/*
|
||||
@@ -12,46 +23,46 @@
|
||||
*/
|
||||
|
||||
/* 0 */
|
||||
TCLOOAPI Tcl_Object TclOOGetDefineCmdContext(Tcl_Interp *interp);
|
||||
EXTERN Tcl_Object TclOOGetDefineCmdContext(Tcl_Interp *interp);
|
||||
/* 1 */
|
||||
TCLOOAPI Tcl_Method TclOOMakeProcInstanceMethod(Tcl_Interp *interp,
|
||||
EXTERN Tcl_Method TclOOMakeProcInstanceMethod(Tcl_Interp *interp,
|
||||
Object *oPtr, int flags, Tcl_Obj *nameObj,
|
||||
Tcl_Obj *argsObj, Tcl_Obj *bodyObj,
|
||||
const Tcl_MethodType *typePtr,
|
||||
ClientData clientData, Proc **procPtrPtr);
|
||||
/* 2 */
|
||||
TCLOOAPI Tcl_Method TclOOMakeProcMethod(Tcl_Interp *interp,
|
||||
EXTERN Tcl_Method TclOOMakeProcMethod(Tcl_Interp *interp,
|
||||
Class *clsPtr, int flags, Tcl_Obj *nameObj,
|
||||
const char *namePtr, Tcl_Obj *argsObj,
|
||||
Tcl_Obj *bodyObj,
|
||||
const Tcl_MethodType *typePtr,
|
||||
ClientData clientData, Proc **procPtrPtr);
|
||||
/* 3 */
|
||||
TCLOOAPI Method * TclOONewProcInstanceMethod(Tcl_Interp *interp,
|
||||
EXTERN Method * TclOONewProcInstanceMethod(Tcl_Interp *interp,
|
||||
Object *oPtr, int flags, Tcl_Obj *nameObj,
|
||||
Tcl_Obj *argsObj, Tcl_Obj *bodyObj,
|
||||
ProcedureMethod **pmPtrPtr);
|
||||
/* 4 */
|
||||
TCLOOAPI Method * TclOONewProcMethod(Tcl_Interp *interp, Class *clsPtr,
|
||||
EXTERN Method * TclOONewProcMethod(Tcl_Interp *interp, Class *clsPtr,
|
||||
int flags, Tcl_Obj *nameObj,
|
||||
Tcl_Obj *argsObj, Tcl_Obj *bodyObj,
|
||||
ProcedureMethod **pmPtrPtr);
|
||||
/* 5 */
|
||||
TCLOOAPI int TclOOObjectCmdCore(Object *oPtr, Tcl_Interp *interp,
|
||||
EXTERN int TclOOObjectCmdCore(Object *oPtr, Tcl_Interp *interp,
|
||||
int objc, Tcl_Obj *const *objv,
|
||||
int publicOnly, Class *startCls);
|
||||
/* 6 */
|
||||
TCLOOAPI int TclOOIsReachable(Class *targetPtr, Class *startPtr);
|
||||
EXTERN int TclOOIsReachable(Class *targetPtr, Class *startPtr);
|
||||
/* 7 */
|
||||
TCLOOAPI Method * TclOONewForwardMethod(Tcl_Interp *interp,
|
||||
EXTERN Method * TclOONewForwardMethod(Tcl_Interp *interp,
|
||||
Class *clsPtr, int isPublic,
|
||||
Tcl_Obj *nameObj, Tcl_Obj *prefixObj);
|
||||
/* 8 */
|
||||
TCLOOAPI Method * TclOONewForwardInstanceMethod(Tcl_Interp *interp,
|
||||
EXTERN Method * TclOONewForwardInstanceMethod(Tcl_Interp *interp,
|
||||
Object *oPtr, int isPublic, Tcl_Obj *nameObj,
|
||||
Tcl_Obj *prefixObj);
|
||||
/* 9 */
|
||||
TCLOOAPI Tcl_Method TclOONewProcInstanceMethodEx(Tcl_Interp *interp,
|
||||
EXTERN Tcl_Method TclOONewProcInstanceMethodEx(Tcl_Interp *interp,
|
||||
Tcl_Object oPtr,
|
||||
TclOO_PreCallProc *preCallPtr,
|
||||
TclOO_PostCallProc *postCallPtr,
|
||||
@@ -60,7 +71,7 @@ TCLOOAPI Tcl_Method TclOONewProcInstanceMethodEx(Tcl_Interp *interp,
|
||||
Tcl_Obj *argsObj, Tcl_Obj *bodyObj,
|
||||
int flags, void **internalTokenPtr);
|
||||
/* 10 */
|
||||
TCLOOAPI Tcl_Method TclOONewProcMethodEx(Tcl_Interp *interp,
|
||||
EXTERN Tcl_Method TclOONewProcMethodEx(Tcl_Interp *interp,
|
||||
Tcl_Class clsPtr,
|
||||
TclOO_PreCallProc *preCallPtr,
|
||||
TclOO_PostCallProc *postCallPtr,
|
||||
@@ -69,22 +80,22 @@ TCLOOAPI Tcl_Method TclOONewProcMethodEx(Tcl_Interp *interp,
|
||||
Tcl_Obj *argsObj, Tcl_Obj *bodyObj,
|
||||
int flags, void **internalTokenPtr);
|
||||
/* 11 */
|
||||
TCLOOAPI int TclOOInvokeObject(Tcl_Interp *interp,
|
||||
EXTERN int TclOOInvokeObject(Tcl_Interp *interp,
|
||||
Tcl_Object object, Tcl_Class startCls,
|
||||
int publicPrivate, int objc,
|
||||
Tcl_Obj *const *objv);
|
||||
/* 12 */
|
||||
TCLOOAPI void TclOOObjectSetFilters(Object *oPtr, int numFilters,
|
||||
EXTERN void TclOOObjectSetFilters(Object *oPtr, int numFilters,
|
||||
Tcl_Obj *const *filters);
|
||||
/* 13 */
|
||||
TCLOOAPI void TclOOClassSetFilters(Tcl_Interp *interp,
|
||||
EXTERN void TclOOClassSetFilters(Tcl_Interp *interp,
|
||||
Class *classPtr, int numFilters,
|
||||
Tcl_Obj *const *filters);
|
||||
/* 14 */
|
||||
TCLOOAPI void TclOOObjectSetMixins(Object *oPtr, int numMixins,
|
||||
EXTERN void TclOOObjectSetMixins(Object *oPtr, int numMixins,
|
||||
Class *const *mixins);
|
||||
/* 15 */
|
||||
TCLOOAPI void TclOOClassSetMixins(Tcl_Interp *interp,
|
||||
EXTERN void TclOOClassSetMixins(Tcl_Interp *interp,
|
||||
Class *classPtr, int numMixins,
|
||||
Class *const *mixins);
|
||||
|
||||
@@ -160,4 +171,7 @@ extern const TclOOIntStubs *tclOOIntStubsPtr;
|
||||
#endif /* defined(USE_TCLOO_STUBS) */
|
||||
|
||||
/* !END!: Do not edit above this line. */
|
||||
|
||||
#undef TCL_STORAGE_CLASS
|
||||
#define TCL_STORAGE_CLASS DLLIMPORT
|
||||
#endif /* _TCLOOINTDECLS */
|
||||
|
||||
+17
-1
@@ -344,21 +344,28 @@ AdvanceJumps(
|
||||
CompileEnv *envPtr)
|
||||
{
|
||||
unsigned char *currentInstPtr;
|
||||
Tcl_HashTable jumps;
|
||||
|
||||
for (currentInstPtr = envPtr->codeStart ;
|
||||
currentInstPtr < envPtr->codeNext-1 ;
|
||||
currentInstPtr += AddrLength(currentInstPtr)) {
|
||||
int offset, delta;
|
||||
int offset, delta, isNew;
|
||||
|
||||
switch (*currentInstPtr) {
|
||||
case INST_JUMP1:
|
||||
case INST_JUMP_TRUE1:
|
||||
case INST_JUMP_FALSE1:
|
||||
offset = TclGetInt1AtPtr(currentInstPtr + 1);
|
||||
Tcl_InitHashTable(&jumps, TCL_ONE_WORD_KEYS);
|
||||
for (delta=0 ; offset+delta != 0 ;) {
|
||||
if (offset + delta < -128 || offset + delta > 127) {
|
||||
break;
|
||||
}
|
||||
Tcl_CreateHashEntry(&jumps, INT2PTR(offset), &isNew);
|
||||
if (!isNew) {
|
||||
offset = TclGetInt1AtPtr(currentInstPtr + 1);
|
||||
break;
|
||||
}
|
||||
offset += delta;
|
||||
switch (*(currentInstPtr + offset)) {
|
||||
case INST_NOP:
|
||||
@@ -373,13 +380,21 @@ AdvanceJumps(
|
||||
}
|
||||
break;
|
||||
}
|
||||
Tcl_DeleteHashTable(&jumps);
|
||||
TclStoreInt1AtPtr(offset, currentInstPtr + 1);
|
||||
continue;
|
||||
|
||||
case INST_JUMP4:
|
||||
case INST_JUMP_TRUE4:
|
||||
case INST_JUMP_FALSE4:
|
||||
Tcl_InitHashTable(&jumps, TCL_ONE_WORD_KEYS);
|
||||
Tcl_CreateHashEntry(&jumps, INT2PTR(0), &isNew);
|
||||
for (offset = TclGetInt4AtPtr(currentInstPtr + 1); offset!=0 ;) {
|
||||
Tcl_CreateHashEntry(&jumps, INT2PTR(offset), &isNew);
|
||||
if (!isNew) {
|
||||
offset = TclGetInt4AtPtr(currentInstPtr + 1);
|
||||
break;
|
||||
}
|
||||
switch (*(currentInstPtr + offset)) {
|
||||
case INST_NOP:
|
||||
offset += InstLength(INST_NOP);
|
||||
@@ -393,6 +408,7 @@ AdvanceJumps(
|
||||
}
|
||||
break;
|
||||
}
|
||||
Tcl_DeleteHashTable(&jumps);
|
||||
TclStoreInt4AtPtr(offset, currentInstPtr + 1);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -3847,6 +3847,53 @@ ArrayNamesCmd(
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* TclFindArrayPtrElements --
|
||||
*
|
||||
* Fill out a hash table (which *must* use Tcl_Obj* keys) with an entry
|
||||
* for each existing element of the given array. The provided hash table
|
||||
* is assumed to be initially empty.
|
||||
*
|
||||
* Result:
|
||||
* none
|
||||
*
|
||||
* Side effects:
|
||||
* The keys of the array gain an extra reference. The supplied hash table
|
||||
* has elements added to it.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
void
|
||||
TclFindArrayPtrElements(
|
||||
Var *arrayPtr,
|
||||
Tcl_HashTable *tablePtr)
|
||||
{
|
||||
Var *varPtr;
|
||||
Tcl_HashSearch search;
|
||||
|
||||
if ((arrayPtr == NULL) || !TclIsVarArray(arrayPtr)
|
||||
|| TclIsVarUndefined(arrayPtr)) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (varPtr=VarHashFirstVar(arrayPtr->value.tablePtr, &search);
|
||||
varPtr!=NULL ; varPtr=VarHashNextVar(&search)) {
|
||||
Tcl_HashEntry *hPtr;
|
||||
Tcl_Obj *nameObj;
|
||||
int dummy;
|
||||
|
||||
if (TclIsVarUndefined(varPtr)) {
|
||||
continue;
|
||||
}
|
||||
nameObj = VarHashGetKey(varPtr);
|
||||
hPtr = Tcl_CreateHashEntry(tablePtr, (char *) nameObj, &dummy);
|
||||
Tcl_SetHashValue(hPtr, nameObj);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
|
||||
+3
-6
@@ -250,8 +250,7 @@ proc unknown args {
|
||||
# Make sure we're not trying to load the same proc twice.
|
||||
#
|
||||
if {[info exists UnknownPending($name)]} {
|
||||
return -code error -errorcode [list TCL LOOKUP COMMAND $name] \
|
||||
"self-referential recursion\
|
||||
return -code error "self-referential recursion\
|
||||
in \"unknown\" for command \"$name\""
|
||||
}
|
||||
set UnknownPending($name) pending
|
||||
@@ -400,12 +399,10 @@ proc unknown args {
|
||||
return -options $::tcl::UnknownOptions $::tcl::UnknownResult
|
||||
}
|
||||
if {[llength $cmds]} {
|
||||
return -code error -errorcode [list TCL LOOKUP COMMAND $name] \
|
||||
"ambiguous command name \"$name\": [lsort $cmds]"
|
||||
return -code error "ambiguous command name \"$name\": [lsort $cmds]"
|
||||
}
|
||||
}
|
||||
return -code error -errorcode [list TCL LOOKUP COMMAND $name] \
|
||||
"invalid command name \"$name\""
|
||||
return -code error "invalid command name \"$name\""
|
||||
}
|
||||
|
||||
# auto_load --
|
||||
|
||||
+114
-170
@@ -36,189 +36,133 @@ set TZData(:Africa/Casablanca) {
|
||||
{1367114400 3600 1 WEST}
|
||||
{1373162400 0 0 WET}
|
||||
{1376100000 3600 1 WEST}
|
||||
{1380420000 0 0 WET}
|
||||
{1398564000 3600 1 WEST}
|
||||
{1382839200 0 0 WET}
|
||||
{1396144800 3600 1 WEST}
|
||||
{1404007200 0 0 WET}
|
||||
{1406599200 3600 1 WEST}
|
||||
{1411869600 0 0 WET}
|
||||
{1430013600 3600 1 WEST}
|
||||
{1414288800 0 0 WET}
|
||||
{1427594400 3600 1 WEST}
|
||||
{1434592800 0 0 WET}
|
||||
{1437184800 3600 1 WEST}
|
||||
{1443319200 0 0 WET}
|
||||
{1461463200 3600 1 WEST}
|
||||
{1445738400 0 0 WET}
|
||||
{1459044000 3600 1 WEST}
|
||||
{1465264800 0 0 WET}
|
||||
{1467856800 3600 1 WEST}
|
||||
{1474768800 0 0 WET}
|
||||
{1493517600 3600 1 WEST}
|
||||
{1477792800 0 0 WET}
|
||||
{1490493600 3600 1 WEST}
|
||||
{1495850400 0 0 WET}
|
||||
{1498442400 3600 1 WEST}
|
||||
{1506218400 0 0 WET}
|
||||
{1524967200 3600 1 WEST}
|
||||
{1509242400 0 0 WET}
|
||||
{1521943200 3600 1 WEST}
|
||||
{1526436000 0 0 WET}
|
||||
{1529028000 3600 1 WEST}
|
||||
{1538272800 0 0 WET}
|
||||
{1556416800 3600 1 WEST}
|
||||
{1540692000 0 0 WET}
|
||||
{1553997600 3600 1 WEST}
|
||||
{1557108000 0 0 WET}
|
||||
{1559700000 3600 1 WEST}
|
||||
{1569722400 0 0 WET}
|
||||
{1572141600 0 0 WET}
|
||||
{1585447200 3600 1 WEST}
|
||||
{1587693600 0 0 WET}
|
||||
{1590285600 3600 1 WEST}
|
||||
{1601172000 0 0 WET}
|
||||
{1603591200 0 0 WET}
|
||||
{1616896800 3600 1 WEST}
|
||||
{1618279200 0 0 WET}
|
||||
{1620871200 3600 1 WEST}
|
||||
{1632621600 0 0 WET}
|
||||
{1635645600 0 0 WET}
|
||||
{1648346400 3600 1 WEST}
|
||||
{1648951200 0 0 WET}
|
||||
{1651543200 3600 1 WEST}
|
||||
{1664071200 0 0 WET}
|
||||
{1682820000 3600 1 WEST}
|
||||
{1695520800 0 0 WET}
|
||||
{1714269600 3600 1 WEST}
|
||||
{1727575200 0 0 WET}
|
||||
{1745719200 3600 1 WEST}
|
||||
{1759024800 0 0 WET}
|
||||
{1777168800 3600 1 WEST}
|
||||
{1790474400 0 0 WET}
|
||||
{1808618400 3600 1 WEST}
|
||||
{1821924000 0 0 WET}
|
||||
{1840672800 3600 1 WEST}
|
||||
{1853373600 0 0 WET}
|
||||
{1872122400 3600 1 WEST}
|
||||
{1885428000 0 0 WET}
|
||||
{1903572000 3600 1 WEST}
|
||||
{1916877600 0 0 WET}
|
||||
{1935021600 3600 1 WEST}
|
||||
{1948327200 0 0 WET}
|
||||
{1966471200 3600 1 WEST}
|
||||
{1979776800 0 0 WET}
|
||||
{1997920800 3600 1 WEST}
|
||||
{2011226400 0 0 WET}
|
||||
{2029975200 3600 1 WEST}
|
||||
{2042676000 0 0 WET}
|
||||
{2061424800 3600 1 WEST}
|
||||
{2074730400 0 0 WET}
|
||||
{2092874400 3600 1 WEST}
|
||||
{2106180000 0 0 WET}
|
||||
{2124324000 3600 1 WEST}
|
||||
{2137629600 0 0 WET}
|
||||
{2155773600 3600 1 WEST}
|
||||
{2169079200 0 0 WET}
|
||||
{2187223200 3600 1 WEST}
|
||||
{2200528800 0 0 WET}
|
||||
{2219277600 3600 1 WEST}
|
||||
{2232583200 0 0 WET}
|
||||
{2250727200 3600 1 WEST}
|
||||
{2264032800 0 0 WET}
|
||||
{2282176800 3600 1 WEST}
|
||||
{2295482400 0 0 WET}
|
||||
{2313626400 3600 1 WEST}
|
||||
{2326932000 0 0 WET}
|
||||
{2345076000 3600 1 WEST}
|
||||
{2358381600 0 0 WET}
|
||||
{2377130400 3600 1 WEST}
|
||||
{2389831200 0 0 WET}
|
||||
{2408580000 3600 1 WEST}
|
||||
{2421885600 0 0 WET}
|
||||
{2440029600 3600 1 WEST}
|
||||
{2453335200 0 0 WET}
|
||||
{2471479200 3600 1 WEST}
|
||||
{2484784800 0 0 WET}
|
||||
{2502928800 3600 1 WEST}
|
||||
{2516234400 0 0 WET}
|
||||
{2534378400 3600 1 WEST}
|
||||
{2547684000 0 0 WET}
|
||||
{2566432800 3600 1 WEST}
|
||||
{2579133600 0 0 WET}
|
||||
{2597882400 3600 1 WEST}
|
||||
{2611188000 0 0 WET}
|
||||
{2629332000 3600 1 WEST}
|
||||
{2642637600 0 0 WET}
|
||||
{2660781600 3600 1 WEST}
|
||||
{2674087200 0 0 WET}
|
||||
{2692231200 3600 1 WEST}
|
||||
{2705536800 0 0 WET}
|
||||
{2724285600 3600 1 WEST}
|
||||
{2736986400 0 0 WET}
|
||||
{2755735200 3600 1 WEST}
|
||||
{2769040800 0 0 WET}
|
||||
{2787184800 3600 1 WEST}
|
||||
{2800490400 0 0 WET}
|
||||
{2818634400 3600 1 WEST}
|
||||
{2831940000 0 0 WET}
|
||||
{2850084000 3600 1 WEST}
|
||||
{2863389600 0 0 WET}
|
||||
{2881533600 3600 1 WEST}
|
||||
{2894839200 0 0 WET}
|
||||
{2913588000 3600 1 WEST}
|
||||
{2926288800 0 0 WET}
|
||||
{2945037600 3600 1 WEST}
|
||||
{2958343200 0 0 WET}
|
||||
{2976487200 3600 1 WEST}
|
||||
{2989792800 0 0 WET}
|
||||
{3007936800 3600 1 WEST}
|
||||
{3021242400 0 0 WET}
|
||||
{3039386400 3600 1 WEST}
|
||||
{3052692000 0 0 WET}
|
||||
{3070836000 3600 1 WEST}
|
||||
{3084141600 0 0 WET}
|
||||
{3102890400 3600 1 WEST}
|
||||
{3116196000 0 0 WET}
|
||||
{3134340000 3600 1 WEST}
|
||||
{3147645600 0 0 WET}
|
||||
{3165789600 3600 1 WEST}
|
||||
{3179095200 0 0 WET}
|
||||
{3197239200 3600 1 WEST}
|
||||
{3210544800 0 0 WET}
|
||||
{3228688800 3600 1 WEST}
|
||||
{3241994400 0 0 WET}
|
||||
{3260743200 3600 1 WEST}
|
||||
{3273444000 0 0 WET}
|
||||
{3292192800 3600 1 WEST}
|
||||
{3305498400 0 0 WET}
|
||||
{3323642400 3600 1 WEST}
|
||||
{3336948000 0 0 WET}
|
||||
{3355092000 3600 1 WEST}
|
||||
{3368397600 0 0 WET}
|
||||
{3386541600 3600 1 WEST}
|
||||
{3399847200 0 0 WET}
|
||||
{3417991200 3600 1 WEST}
|
||||
{3431296800 0 0 WET}
|
||||
{3450045600 3600 1 WEST}
|
||||
{3462746400 0 0 WET}
|
||||
{3481495200 3600 1 WEST}
|
||||
{3494800800 0 0 WET}
|
||||
{3512944800 3600 1 WEST}
|
||||
{3526250400 0 0 WET}
|
||||
{3544394400 3600 1 WEST}
|
||||
{3557700000 0 0 WET}
|
||||
{3575844000 3600 1 WEST}
|
||||
{3589149600 0 0 WET}
|
||||
{3607898400 3600 1 WEST}
|
||||
{3620599200 0 0 WET}
|
||||
{3639348000 3600 1 WEST}
|
||||
{3652653600 0 0 WET}
|
||||
{3670797600 3600 1 WEST}
|
||||
{3684103200 0 0 WET}
|
||||
{3702247200 3600 1 WEST}
|
||||
{3715552800 0 0 WET}
|
||||
{3733696800 3600 1 WEST}
|
||||
{3747002400 0 0 WET}
|
||||
{3765146400 3600 1 WEST}
|
||||
{3778452000 0 0 WET}
|
||||
{3797200800 3600 1 WEST}
|
||||
{3809901600 0 0 WET}
|
||||
{3828650400 3600 1 WEST}
|
||||
{3841956000 0 0 WET}
|
||||
{3860100000 3600 1 WEST}
|
||||
{3873405600 0 0 WET}
|
||||
{3891549600 3600 1 WEST}
|
||||
{3904855200 0 0 WET}
|
||||
{3922999200 3600 1 WEST}
|
||||
{3936304800 0 0 WET}
|
||||
{3954448800 3600 1 WEST}
|
||||
{3967754400 0 0 WET}
|
||||
{3986503200 3600 1 WEST}
|
||||
{3999808800 0 0 WET}
|
||||
{4017952800 3600 1 WEST}
|
||||
{4031258400 0 0 WET}
|
||||
{4049402400 3600 1 WEST}
|
||||
{4062708000 0 0 WET}
|
||||
{4080852000 3600 1 WEST}
|
||||
{4094157600 0 0 WET}
|
||||
{1667095200 0 0 WET}
|
||||
{1682128800 3600 1 WEST}
|
||||
{1698544800 0 0 WET}
|
||||
{1712714400 3600 1 WEST}
|
||||
{1729994400 0 0 WET}
|
||||
{1743386400 3600 1 WEST}
|
||||
{1761444000 0 0 WET}
|
||||
{1774749600 3600 1 WEST}
|
||||
{1792893600 0 0 WET}
|
||||
{1806199200 3600 1 WEST}
|
||||
{1824948000 0 0 WET}
|
||||
{1837648800 3600 1 WEST}
|
||||
{1856397600 0 0 WET}
|
||||
{1869098400 3600 1 WEST}
|
||||
{1887847200 0 0 WET}
|
||||
{1901152800 3600 1 WEST}
|
||||
{1919296800 0 0 WET}
|
||||
{1932602400 3600 1 WEST}
|
||||
{1950746400 0 0 WET}
|
||||
{1964052000 3600 1 WEST}
|
||||
{1982800800 0 0 WET}
|
||||
{1995501600 3600 1 WEST}
|
||||
{2014250400 0 0 WET}
|
||||
{2026951200 3600 1 WEST}
|
||||
{2045700000 0 0 WET}
|
||||
{2058400800 3600 1 WEST}
|
||||
{2077149600 0 0 WET}
|
||||
{2090455200 3600 1 WEST}
|
||||
{2108167200 0 0 WET}
|
||||
{2121904800 3600 1 WEST}
|
||||
{2138839200 0 0 WET}
|
||||
{2153354400 3600 1 WEST}
|
||||
{2184800400 3600 1 WEST}
|
||||
{2216250000 3600 1 WEST}
|
||||
{2248304400 3600 1 WEST}
|
||||
{2279754000 3600 1 WEST}
|
||||
{2311203600 3600 1 WEST}
|
||||
{2342653200 3600 1 WEST}
|
||||
{2374102800 3600 1 WEST}
|
||||
{2405552400 3600 1 WEST}
|
||||
{2437606800 3600 1 WEST}
|
||||
{2469056400 3600 1 WEST}
|
||||
{2500506000 3600 1 WEST}
|
||||
{2531955600 3600 1 WEST}
|
||||
{2563405200 3600 1 WEST}
|
||||
{2595459600 3600 1 WEST}
|
||||
{2626909200 3600 1 WEST}
|
||||
{2658358800 3600 1 WEST}
|
||||
{2689808400 3600 1 WEST}
|
||||
{2721258000 3600 1 WEST}
|
||||
{2752707600 3600 1 WEST}
|
||||
{2784762000 3600 1 WEST}
|
||||
{2816211600 3600 1 WEST}
|
||||
{2847661200 3600 1 WEST}
|
||||
{2879110800 3600 1 WEST}
|
||||
{2910560400 3600 1 WEST}
|
||||
{2942010000 3600 1 WEST}
|
||||
{2974064400 3600 1 WEST}
|
||||
{3005514000 3600 1 WEST}
|
||||
{3036963600 3600 1 WEST}
|
||||
{3068413200 3600 1 WEST}
|
||||
{3099862800 3600 1 WEST}
|
||||
{3131917200 3600 1 WEST}
|
||||
{3163366800 3600 1 WEST}
|
||||
{3194816400 3600 1 WEST}
|
||||
{3226266000 3600 1 WEST}
|
||||
{3257715600 3600 1 WEST}
|
||||
{3289165200 3600 1 WEST}
|
||||
{3321219600 3600 1 WEST}
|
||||
{3352669200 3600 1 WEST}
|
||||
{3384118800 3600 1 WEST}
|
||||
{3415568400 3600 1 WEST}
|
||||
{3447018000 3600 1 WEST}
|
||||
{3479072400 3600 1 WEST}
|
||||
{3510522000 3600 1 WEST}
|
||||
{3541971600 3600 1 WEST}
|
||||
{3573421200 3600 1 WEST}
|
||||
{3604870800 3600 1 WEST}
|
||||
{3636320400 3600 1 WEST}
|
||||
{3668374800 3600 1 WEST}
|
||||
{3699824400 3600 1 WEST}
|
||||
{3731274000 3600 1 WEST}
|
||||
{3762723600 3600 1 WEST}
|
||||
{3794173200 3600 1 WEST}
|
||||
{3825622800 3600 1 WEST}
|
||||
{3857677200 3600 1 WEST}
|
||||
{3889126800 3600 1 WEST}
|
||||
{3920576400 3600 1 WEST}
|
||||
{3952026000 3600 1 WEST}
|
||||
{3983475600 3600 1 WEST}
|
||||
{4015530000 3600 1 WEST}
|
||||
{4046979600 3600 1 WEST}
|
||||
{4078429200 3600 1 WEST}
|
||||
}
|
||||
|
||||
@@ -1,39 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:Africa/Juba) {
|
||||
{-9223372036854775808 7584 0 LMT}
|
||||
{-1230775584 7200 0 CAT}
|
||||
{10360800 10800 1 CAST}
|
||||
{24786000 7200 0 CAT}
|
||||
{41810400 10800 1 CAST}
|
||||
{56322000 7200 0 CAT}
|
||||
{73432800 10800 1 CAST}
|
||||
{87944400 7200 0 CAT}
|
||||
{104882400 10800 1 CAST}
|
||||
{119480400 7200 0 CAT}
|
||||
{136332000 10800 1 CAST}
|
||||
{151016400 7200 0 CAT}
|
||||
{167781600 10800 1 CAST}
|
||||
{182552400 7200 0 CAT}
|
||||
{199231200 10800 1 CAST}
|
||||
{214174800 7200 0 CAT}
|
||||
{230680800 10800 1 CAST}
|
||||
{245710800 7200 0 CAT}
|
||||
{262735200 10800 1 CAST}
|
||||
{277246800 7200 0 CAT}
|
||||
{294184800 10800 1 CAST}
|
||||
{308782800 7200 0 CAT}
|
||||
{325634400 10800 1 CAST}
|
||||
{340405200 7200 0 CAT}
|
||||
{357084000 10800 1 CAST}
|
||||
{371941200 7200 0 CAT}
|
||||
{388533600 10800 1 CAST}
|
||||
{403477200 7200 0 CAT}
|
||||
{419983200 10800 1 CAST}
|
||||
{435013200 7200 0 CAT}
|
||||
{452037600 10800 1 CAST}
|
||||
{466635600 7200 0 CAT}
|
||||
{483487200 10800 1 CAST}
|
||||
{498171600 7200 0 CAT}
|
||||
{947930400 10800 0 EAT}
|
||||
if {![info exists TZData(Africa/Khartoum)]} {
|
||||
LoadTimeZoneFile Africa/Khartoum
|
||||
}
|
||||
set TZData(:Africa/Juba) $TZData(:Africa/Khartoum)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:America/Anguilla) {
|
||||
{-9223372036854775808 -15136 0 LMT}
|
||||
{-1825098464 -14400 0 AST}
|
||||
if {![info exists TZData(America/Port_of_Spain)]} {
|
||||
LoadTimeZoneFile America/Port_of_Spain
|
||||
}
|
||||
set TZData(:America/Anguilla) $TZData(:America/Port_of_Spain)
|
||||
|
||||
@@ -56,177 +56,5 @@ set TZData(:America/Araguaina) {
|
||||
{1064368800 -10800 0 BRT}
|
||||
{1350788400 -7200 0 BRST}
|
||||
{1361066400 -10800 0 BRT}
|
||||
{1382238000 -7200 1 BRST}
|
||||
{1392516000 -10800 0 BRT}
|
||||
{1413687600 -7200 1 BRST}
|
||||
{1424570400 -10800 0 BRT}
|
||||
{1445137200 -7200 1 BRST}
|
||||
{1456020000 -10800 0 BRT}
|
||||
{1476586800 -7200 1 BRST}
|
||||
{1487469600 -10800 0 BRT}
|
||||
{1508036400 -7200 1 BRST}
|
||||
{1518919200 -10800 0 BRT}
|
||||
{1540090800 -7200 1 BRST}
|
||||
{1550368800 -10800 0 BRT}
|
||||
{1571540400 -7200 1 BRST}
|
||||
{1581818400 -10800 0 BRT}
|
||||
{1602990000 -7200 1 BRST}
|
||||
{1613872800 -10800 0 BRT}
|
||||
{1634439600 -7200 1 BRST}
|
||||
{1645322400 -10800 0 BRT}
|
||||
{1665889200 -7200 1 BRST}
|
||||
{1677376800 -10800 0 BRT}
|
||||
{1697338800 -7200 1 BRST}
|
||||
{1708221600 -10800 0 BRT}
|
||||
{1729393200 -7200 1 BRST}
|
||||
{1739671200 -10800 0 BRT}
|
||||
{1760842800 -7200 1 BRST}
|
||||
{1771725600 -10800 0 BRT}
|
||||
{1792292400 -7200 1 BRST}
|
||||
{1803175200 -10800 0 BRT}
|
||||
{1823742000 -7200 1 BRST}
|
||||
{1834624800 -10800 0 BRT}
|
||||
{1855191600 -7200 1 BRST}
|
||||
{1866074400 -10800 0 BRT}
|
||||
{1887246000 -7200 1 BRST}
|
||||
{1897524000 -10800 0 BRT}
|
||||
{1918695600 -7200 1 BRST}
|
||||
{1928973600 -10800 0 BRT}
|
||||
{1950145200 -7200 1 BRST}
|
||||
{1960423200 -10800 0 BRT}
|
||||
{1981594800 -7200 1 BRST}
|
||||
{1992477600 -10800 0 BRT}
|
||||
{2013044400 -7200 1 BRST}
|
||||
{2024532000 -10800 0 BRT}
|
||||
{2044494000 -7200 1 BRST}
|
||||
{2055376800 -10800 0 BRT}
|
||||
{2076548400 -7200 1 BRST}
|
||||
{2086826400 -10800 0 BRT}
|
||||
{2107998000 -7200 1 BRST}
|
||||
{2118880800 -10800 0 BRT}
|
||||
{2139447600 -7200 1 BRST}
|
||||
{2150330400 -10800 0 BRT}
|
||||
{2170897200 -7200 1 BRST}
|
||||
{2181780000 -10800 0 BRT}
|
||||
{2202346800 -7200 1 BRST}
|
||||
{2213229600 -10800 0 BRT}
|
||||
{2234401200 -7200 1 BRST}
|
||||
{2244679200 -10800 0 BRT}
|
||||
{2265850800 -7200 1 BRST}
|
||||
{2276128800 -10800 0 BRT}
|
||||
{2297300400 -7200 1 BRST}
|
||||
{2307578400 -10800 0 BRT}
|
||||
{2328750000 -7200 1 BRST}
|
||||
{2339632800 -10800 0 BRT}
|
||||
{2360199600 -7200 1 BRST}
|
||||
{2371082400 -10800 0 BRT}
|
||||
{2391649200 -7200 1 BRST}
|
||||
{2402532000 -10800 0 BRT}
|
||||
{2423703600 -7200 1 BRST}
|
||||
{2433981600 -10800 0 BRT}
|
||||
{2455153200 -7200 1 BRST}
|
||||
{2465431200 -10800 0 BRT}
|
||||
{2486602800 -7200 1 BRST}
|
||||
{2497485600 -10800 0 BRT}
|
||||
{2518052400 -7200 1 BRST}
|
||||
{2528935200 -10800 0 BRT}
|
||||
{2549502000 -7200 1 BRST}
|
||||
{2560384800 -10800 0 BRT}
|
||||
{2580951600 -7200 1 BRST}
|
||||
{2591834400 -10800 0 BRT}
|
||||
{2613006000 -7200 1 BRST}
|
||||
{2623284000 -10800 0 BRT}
|
||||
{2644455600 -7200 1 BRST}
|
||||
{2654733600 -10800 0 BRT}
|
||||
{2675905200 -7200 1 BRST}
|
||||
{2686788000 -10800 0 BRT}
|
||||
{2707354800 -7200 1 BRST}
|
||||
{2718237600 -10800 0 BRT}
|
||||
{2738804400 -7200 1 BRST}
|
||||
{2749687200 -10800 0 BRT}
|
||||
{2770858800 -7200 1 BRST}
|
||||
{2781136800 -10800 0 BRT}
|
||||
{2802308400 -7200 1 BRST}
|
||||
{2812586400 -10800 0 BRT}
|
||||
{2833758000 -7200 1 BRST}
|
||||
{2844036000 -10800 0 BRT}
|
||||
{2865207600 -7200 1 BRST}
|
||||
{2876090400 -10800 0 BRT}
|
||||
{2896657200 -7200 1 BRST}
|
||||
{2907540000 -10800 0 BRT}
|
||||
{2928106800 -7200 1 BRST}
|
||||
{2938989600 -10800 0 BRT}
|
||||
{2960161200 -7200 1 BRST}
|
||||
{2970439200 -10800 0 BRT}
|
||||
{2991610800 -7200 1 BRST}
|
||||
{3001888800 -10800 0 BRT}
|
||||
{3023060400 -7200 1 BRST}
|
||||
{3033943200 -10800 0 BRT}
|
||||
{3054510000 -7200 1 BRST}
|
||||
{3065392800 -10800 0 BRT}
|
||||
{3085959600 -7200 1 BRST}
|
||||
{3096842400 -10800 0 BRT}
|
||||
{3118014000 -7200 1 BRST}
|
||||
{3128292000 -10800 0 BRT}
|
||||
{3149463600 -7200 1 BRST}
|
||||
{3159741600 -10800 0 BRT}
|
||||
{3180913200 -7200 1 BRST}
|
||||
{3191191200 -10800 0 BRT}
|
||||
{3212362800 -7200 1 BRST}
|
||||
{3223245600 -10800 0 BRT}
|
||||
{3243812400 -7200 1 BRST}
|
||||
{3254695200 -10800 0 BRT}
|
||||
{3275262000 -7200 1 BRST}
|
||||
{3286144800 -10800 0 BRT}
|
||||
{3307316400 -7200 1 BRST}
|
||||
{3317594400 -10800 0 BRT}
|
||||
{3338766000 -7200 1 BRST}
|
||||
{3349044000 -10800 0 BRT}
|
||||
{3370215600 -7200 1 BRST}
|
||||
{3381098400 -10800 0 BRT}
|
||||
{3401665200 -7200 1 BRST}
|
||||
{3412548000 -10800 0 BRT}
|
||||
{3433114800 -7200 1 BRST}
|
||||
{3443997600 -10800 0 BRT}
|
||||
{3464564400 -7200 1 BRST}
|
||||
{3475447200 -10800 0 BRT}
|
||||
{3496618800 -7200 1 BRST}
|
||||
{3506896800 -10800 0 BRT}
|
||||
{3528068400 -7200 1 BRST}
|
||||
{3538346400 -10800 0 BRT}
|
||||
{3559518000 -7200 1 BRST}
|
||||
{3570400800 -10800 0 BRT}
|
||||
{3590967600 -7200 1 BRST}
|
||||
{3601850400 -10800 0 BRT}
|
||||
{3622417200 -7200 1 BRST}
|
||||
{3633300000 -10800 0 BRT}
|
||||
{3654471600 -7200 1 BRST}
|
||||
{3664749600 -10800 0 BRT}
|
||||
{3685921200 -7200 1 BRST}
|
||||
{3696199200 -10800 0 BRT}
|
||||
{3717370800 -7200 1 BRST}
|
||||
{3727648800 -10800 0 BRT}
|
||||
{3748820400 -7200 1 BRST}
|
||||
{3759703200 -10800 0 BRT}
|
||||
{3780270000 -7200 1 BRST}
|
||||
{3791152800 -10800 0 BRT}
|
||||
{3811719600 -7200 1 BRST}
|
||||
{3822602400 -10800 0 BRT}
|
||||
{3843774000 -7200 1 BRST}
|
||||
{3854052000 -10800 0 BRT}
|
||||
{3875223600 -7200 1 BRST}
|
||||
{3885501600 -10800 0 BRT}
|
||||
{3906673200 -7200 1 BRST}
|
||||
{3917556000 -10800 0 BRT}
|
||||
{3938122800 -7200 1 BRST}
|
||||
{3949005600 -10800 0 BRT}
|
||||
{3969572400 -7200 1 BRST}
|
||||
{3980455200 -10800 0 BRT}
|
||||
{4001626800 -7200 1 BRST}
|
||||
{4011904800 -10800 0 BRT}
|
||||
{4033076400 -7200 1 BRST}
|
||||
{4043354400 -10800 0 BRT}
|
||||
{4064526000 -7200 1 BRST}
|
||||
{4074804000 -10800 0 BRT}
|
||||
{4095975600 -7200 1 BRST}
|
||||
{1378000800 -10800 0 BRT}
|
||||
}
|
||||
|
||||
@@ -64,5 +64,5 @@ set TZData(:America/Argentina/San_Luis) {
|
||||
{1205031600 -14400 0 WART}
|
||||
{1223784000 -10800 1 WARST}
|
||||
{1236481200 -14400 0 WART}
|
||||
{1255233600 -10800 1 WARST}
|
||||
{1255233600 -10800 0 ART}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:America/Aruba) {
|
||||
{-9223372036854775808 -16824 0 LMT}
|
||||
{-1826738376 -16200 0 ANT}
|
||||
{-157750200 -14400 0 AST}
|
||||
if {![info exists TZData(America/Curacao)]} {
|
||||
LoadTimeZoneFile America/Curacao
|
||||
}
|
||||
set TZData(:America/Aruba) $TZData(:America/Curacao)
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
|
||||
set TZData(:America/Cayman) {
|
||||
{-9223372036854775808 -19532 0 LMT}
|
||||
{-2524502068 -18432 0 KMT}
|
||||
{-1827687168 -18000 0 EST}
|
||||
{-2524502068 -18431 0 KMT}
|
||||
{-1827687169 -18000 0 EST}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:America/Dominica) {
|
||||
{-9223372036854775808 -14736 0 LMT}
|
||||
{-1846266804 -14400 0 AST}
|
||||
if {![info exists TZData(America/Port_of_Spain)]} {
|
||||
LoadTimeZoneFile America/Port_of_Spain
|
||||
}
|
||||
set TZData(:America/Dominica) $TZData(:America/Port_of_Spain)
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
set TZData(:America/Grand_Turk) {
|
||||
{-9223372036854775808 -17072 0 LMT}
|
||||
{-2524504528 -18432 0 KMT}
|
||||
{-1827687168 -18000 0 EST}
|
||||
{-2524504528 -18431 0 KMT}
|
||||
{-1827687169 -18000 0 EST}
|
||||
{294217200 -14400 1 EDT}
|
||||
{309938400 -18000 0 EST}
|
||||
{325666800 -14400 1 EDT}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:America/Grenada) {
|
||||
{-9223372036854775808 -14820 0 LMT}
|
||||
{-1846266780 -14400 0 AST}
|
||||
if {![info exists TZData(America/Port_of_Spain)]} {
|
||||
LoadTimeZoneFile America/Port_of_Spain
|
||||
}
|
||||
set TZData(:America/Grenada) $TZData(:America/Port_of_Spain)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:America/Guadeloupe) {
|
||||
{-9223372036854775808 -14768 0 LMT}
|
||||
{-1848254032 -14400 0 AST}
|
||||
if {![info exists TZData(America/Port_of_Spain)]} {
|
||||
LoadTimeZoneFile America/Port_of_Spain
|
||||
}
|
||||
set TZData(:America/Guadeloupe) $TZData(:America/Port_of_Spain)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:America/Jamaica) {
|
||||
{-9223372036854775808 -18432 0 LMT}
|
||||
{-2524503168 -18432 0 KMT}
|
||||
{-1827687168 -18000 0 EST}
|
||||
{-9223372036854775808 -18431 0 LMT}
|
||||
{-2524503169 -18431 0 KMT}
|
||||
{-1827687169 -18000 0 EST}
|
||||
{136364400 -14400 0 EDT}
|
||||
{152085600 -18000 0 EST}
|
||||
{162370800 -14400 1 EDT}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
if {![info exists TZData(America/Guadeloupe)]} {
|
||||
LoadTimeZoneFile America/Guadeloupe
|
||||
if {![info exists TZData(America/Port_of_Spain)]} {
|
||||
LoadTimeZoneFile America/Port_of_Spain
|
||||
}
|
||||
set TZData(:America/Marigot) $TZData(:America/Guadeloupe)
|
||||
set TZData(:America/Marigot) $TZData(:America/Port_of_Spain)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:America/Montserrat) {
|
||||
{-9223372036854775808 -14932 0 LMT}
|
||||
{-1846266608 -14400 0 AST}
|
||||
if {![info exists TZData(America/Port_of_Spain)]} {
|
||||
LoadTimeZoneFile America/Port_of_Spain
|
||||
}
|
||||
set TZData(:America/Montserrat) $TZData(:America/Port_of_Spain)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
if {![info exists TZData(America/Guadeloupe)]} {
|
||||
LoadTimeZoneFile America/Guadeloupe
|
||||
if {![info exists TZData(America/Port_of_Spain)]} {
|
||||
LoadTimeZoneFile America/Port_of_Spain
|
||||
}
|
||||
set TZData(:America/St_Barthelemy) $TZData(:America/Guadeloupe)
|
||||
set TZData(:America/St_Barthelemy) $TZData(:America/Port_of_Spain)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:America/St_Kitts) {
|
||||
{-9223372036854775808 -15052 0 LMT}
|
||||
{-1825098548 -14400 0 AST}
|
||||
if {![info exists TZData(America/Port_of_Spain)]} {
|
||||
LoadTimeZoneFile America/Port_of_Spain
|
||||
}
|
||||
set TZData(:America/St_Kitts) $TZData(:America/Port_of_Spain)
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:America/St_Lucia) {
|
||||
{-9223372036854775808 -14640 0 LMT}
|
||||
{-2524506960 -14640 0 CMT}
|
||||
{-1830369360 -14400 0 AST}
|
||||
if {![info exists TZData(America/Port_of_Spain)]} {
|
||||
LoadTimeZoneFile America/Port_of_Spain
|
||||
}
|
||||
set TZData(:America/St_Lucia) $TZData(:America/Port_of_Spain)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:America/St_Thomas) {
|
||||
{-9223372036854775808 -15584 0 LMT}
|
||||
{-1846266016 -14400 0 AST}
|
||||
if {![info exists TZData(America/Port_of_Spain)]} {
|
||||
LoadTimeZoneFile America/Port_of_Spain
|
||||
}
|
||||
set TZData(:America/St_Thomas) $TZData(:America/Port_of_Spain)
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:America/St_Vincent) {
|
||||
{-9223372036854775808 -14696 0 LMT}
|
||||
{-2524506904 -14696 0 KMT}
|
||||
{-1830369304 -14400 0 AST}
|
||||
if {![info exists TZData(America/Port_of_Spain)]} {
|
||||
LoadTimeZoneFile America/Port_of_Spain
|
||||
}
|
||||
set TZData(:America/St_Vincent) $TZData(:America/Port_of_Spain)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:America/Tortola) {
|
||||
{-9223372036854775808 -15508 0 LMT}
|
||||
{-1846266092 -14400 0 AST}
|
||||
if {![info exists TZData(America/Port_of_Spain)]} {
|
||||
LoadTimeZoneFile America/Port_of_Spain
|
||||
}
|
||||
set TZData(:America/Tortola) $TZData(:America/Port_of_Spain)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
if {![info exists TZData(America/St_Thomas)]} {
|
||||
LoadTimeZoneFile America/St_Thomas
|
||||
if {![info exists TZData(America/Port_of_Spain)]} {
|
||||
LoadTimeZoneFile America/Port_of_Spain
|
||||
}
|
||||
set TZData(:America/Virgin) $TZData(:America/St_Thomas)
|
||||
set TZData(:America/Virgin) $TZData(:America/Port_of_Spain)
|
||||
|
||||
@@ -1,257 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:Antarctica/McMurdo) {
|
||||
{-9223372036854775808 0 0 zzz}
|
||||
{-441849600 43200 0 NZST}
|
||||
{152632800 46800 1 NZDT}
|
||||
{162309600 43200 0 NZST}
|
||||
{183477600 46800 1 NZDT}
|
||||
{194968800 43200 0 NZST}
|
||||
{215532000 46800 1 NZDT}
|
||||
{226418400 43200 0 NZST}
|
||||
{246981600 46800 1 NZDT}
|
||||
{257868000 43200 0 NZST}
|
||||
{278431200 46800 1 NZDT}
|
||||
{289317600 43200 0 NZST}
|
||||
{309880800 46800 1 NZDT}
|
||||
{320767200 43200 0 NZST}
|
||||
{341330400 46800 1 NZDT}
|
||||
{352216800 43200 0 NZST}
|
||||
{372780000 46800 1 NZDT}
|
||||
{384271200 43200 0 NZST}
|
||||
{404834400 46800 1 NZDT}
|
||||
{415720800 43200 0 NZST}
|
||||
{436284000 46800 1 NZDT}
|
||||
{447170400 43200 0 NZST}
|
||||
{467733600 46800 1 NZDT}
|
||||
{478620000 43200 0 NZST}
|
||||
{499183200 46800 1 NZDT}
|
||||
{510069600 43200 0 NZST}
|
||||
{530632800 46800 1 NZDT}
|
||||
{541519200 43200 0 NZST}
|
||||
{562082400 46800 1 NZDT}
|
||||
{573573600 43200 0 NZST}
|
||||
{594136800 46800 1 NZDT}
|
||||
{605023200 43200 0 NZST}
|
||||
{623772000 46800 1 NZDT}
|
||||
{637682400 43200 0 NZST}
|
||||
{655221600 46800 1 NZDT}
|
||||
{669132000 43200 0 NZST}
|
||||
{686671200 46800 1 NZDT}
|
||||
{700581600 43200 0 NZST}
|
||||
{718120800 46800 1 NZDT}
|
||||
{732636000 43200 0 NZST}
|
||||
{749570400 46800 1 NZDT}
|
||||
{764085600 43200 0 NZST}
|
||||
{781020000 46800 1 NZDT}
|
||||
{795535200 43200 0 NZST}
|
||||
{812469600 46800 1 NZDT}
|
||||
{826984800 43200 0 NZST}
|
||||
{844524000 46800 1 NZDT}
|
||||
{858434400 43200 0 NZST}
|
||||
{875973600 46800 1 NZDT}
|
||||
{889884000 43200 0 NZST}
|
||||
{907423200 46800 1 NZDT}
|
||||
{921938400 43200 0 NZST}
|
||||
{938872800 46800 1 NZDT}
|
||||
{953388000 43200 0 NZST}
|
||||
{970322400 46800 1 NZDT}
|
||||
{984837600 43200 0 NZST}
|
||||
{1002376800 46800 1 NZDT}
|
||||
{1016287200 43200 0 NZST}
|
||||
{1033826400 46800 1 NZDT}
|
||||
{1047736800 43200 0 NZST}
|
||||
{1065276000 46800 1 NZDT}
|
||||
{1079791200 43200 0 NZST}
|
||||
{1096725600 46800 1 NZDT}
|
||||
{1111240800 43200 0 NZST}
|
||||
{1128175200 46800 1 NZDT}
|
||||
{1142690400 43200 0 NZST}
|
||||
{1159624800 46800 1 NZDT}
|
||||
{1174140000 43200 0 NZST}
|
||||
{1191074400 46800 1 NZDT}
|
||||
{1207404000 43200 0 NZST}
|
||||
{1222524000 46800 1 NZDT}
|
||||
{1238853600 43200 0 NZST}
|
||||
{1253973600 46800 1 NZDT}
|
||||
{1270303200 43200 0 NZST}
|
||||
{1285423200 46800 1 NZDT}
|
||||
{1301752800 43200 0 NZST}
|
||||
{1316872800 46800 1 NZDT}
|
||||
{1333202400 43200 0 NZST}
|
||||
{1348927200 46800 1 NZDT}
|
||||
{1365256800 43200 0 NZST}
|
||||
{1380376800 46800 1 NZDT}
|
||||
{1396706400 43200 0 NZST}
|
||||
{1411826400 46800 1 NZDT}
|
||||
{1428156000 43200 0 NZST}
|
||||
{1443276000 46800 1 NZDT}
|
||||
{1459605600 43200 0 NZST}
|
||||
{1474725600 46800 1 NZDT}
|
||||
{1491055200 43200 0 NZST}
|
||||
{1506175200 46800 1 NZDT}
|
||||
{1522504800 43200 0 NZST}
|
||||
{1538229600 46800 1 NZDT}
|
||||
{1554559200 43200 0 NZST}
|
||||
{1569679200 46800 1 NZDT}
|
||||
{1586008800 43200 0 NZST}
|
||||
{1601128800 46800 1 NZDT}
|
||||
{1617458400 43200 0 NZST}
|
||||
{1632578400 46800 1 NZDT}
|
||||
{1648908000 43200 0 NZST}
|
||||
{1664028000 46800 1 NZDT}
|
||||
{1680357600 43200 0 NZST}
|
||||
{1695477600 46800 1 NZDT}
|
||||
{1712412000 43200 0 NZST}
|
||||
{1727532000 46800 1 NZDT}
|
||||
{1743861600 43200 0 NZST}
|
||||
{1758981600 46800 1 NZDT}
|
||||
{1775311200 43200 0 NZST}
|
||||
{1790431200 46800 1 NZDT}
|
||||
{1806760800 43200 0 NZST}
|
||||
{1821880800 46800 1 NZDT}
|
||||
{1838210400 43200 0 NZST}
|
||||
{1853330400 46800 1 NZDT}
|
||||
{1869660000 43200 0 NZST}
|
||||
{1885384800 46800 1 NZDT}
|
||||
{1901714400 43200 0 NZST}
|
||||
{1916834400 46800 1 NZDT}
|
||||
{1933164000 43200 0 NZST}
|
||||
{1948284000 46800 1 NZDT}
|
||||
{1964613600 43200 0 NZST}
|
||||
{1979733600 46800 1 NZDT}
|
||||
{1996063200 43200 0 NZST}
|
||||
{2011183200 46800 1 NZDT}
|
||||
{2027512800 43200 0 NZST}
|
||||
{2042632800 46800 1 NZDT}
|
||||
{2058962400 43200 0 NZST}
|
||||
{2074687200 46800 1 NZDT}
|
||||
{2091016800 43200 0 NZST}
|
||||
{2106136800 46800 1 NZDT}
|
||||
{2122466400 43200 0 NZST}
|
||||
{2137586400 46800 1 NZDT}
|
||||
{2153916000 43200 0 NZST}
|
||||
{2169036000 46800 1 NZDT}
|
||||
{2185365600 43200 0 NZST}
|
||||
{2200485600 46800 1 NZDT}
|
||||
{2216815200 43200 0 NZST}
|
||||
{2232540000 46800 1 NZDT}
|
||||
{2248869600 43200 0 NZST}
|
||||
{2263989600 46800 1 NZDT}
|
||||
{2280319200 43200 0 NZST}
|
||||
{2295439200 46800 1 NZDT}
|
||||
{2311768800 43200 0 NZST}
|
||||
{2326888800 46800 1 NZDT}
|
||||
{2343218400 43200 0 NZST}
|
||||
{2358338400 46800 1 NZDT}
|
||||
{2374668000 43200 0 NZST}
|
||||
{2389788000 46800 1 NZDT}
|
||||
{2406117600 43200 0 NZST}
|
||||
{2421842400 46800 1 NZDT}
|
||||
{2438172000 43200 0 NZST}
|
||||
{2453292000 46800 1 NZDT}
|
||||
{2469621600 43200 0 NZST}
|
||||
{2484741600 46800 1 NZDT}
|
||||
{2501071200 43200 0 NZST}
|
||||
{2516191200 46800 1 NZDT}
|
||||
{2532520800 43200 0 NZST}
|
||||
{2547640800 46800 1 NZDT}
|
||||
{2563970400 43200 0 NZST}
|
||||
{2579090400 46800 1 NZDT}
|
||||
{2596024800 43200 0 NZST}
|
||||
{2611144800 46800 1 NZDT}
|
||||
{2627474400 43200 0 NZST}
|
||||
{2642594400 46800 1 NZDT}
|
||||
{2658924000 43200 0 NZST}
|
||||
{2674044000 46800 1 NZDT}
|
||||
{2690373600 43200 0 NZST}
|
||||
{2705493600 46800 1 NZDT}
|
||||
{2721823200 43200 0 NZST}
|
||||
{2736943200 46800 1 NZDT}
|
||||
{2753272800 43200 0 NZST}
|
||||
{2768997600 46800 1 NZDT}
|
||||
{2785327200 43200 0 NZST}
|
||||
{2800447200 46800 1 NZDT}
|
||||
{2816776800 43200 0 NZST}
|
||||
{2831896800 46800 1 NZDT}
|
||||
{2848226400 43200 0 NZST}
|
||||
{2863346400 46800 1 NZDT}
|
||||
{2879676000 43200 0 NZST}
|
||||
{2894796000 46800 1 NZDT}
|
||||
{2911125600 43200 0 NZST}
|
||||
{2926245600 46800 1 NZDT}
|
||||
{2942575200 43200 0 NZST}
|
||||
{2958300000 46800 1 NZDT}
|
||||
{2974629600 43200 0 NZST}
|
||||
{2989749600 46800 1 NZDT}
|
||||
{3006079200 43200 0 NZST}
|
||||
{3021199200 46800 1 NZDT}
|
||||
{3037528800 43200 0 NZST}
|
||||
{3052648800 46800 1 NZDT}
|
||||
{3068978400 43200 0 NZST}
|
||||
{3084098400 46800 1 NZDT}
|
||||
{3100428000 43200 0 NZST}
|
||||
{3116152800 46800 1 NZDT}
|
||||
{3132482400 43200 0 NZST}
|
||||
{3147602400 46800 1 NZDT}
|
||||
{3163932000 43200 0 NZST}
|
||||
{3179052000 46800 1 NZDT}
|
||||
{3195381600 43200 0 NZST}
|
||||
{3210501600 46800 1 NZDT}
|
||||
{3226831200 43200 0 NZST}
|
||||
{3241951200 46800 1 NZDT}
|
||||
{3258280800 43200 0 NZST}
|
||||
{3273400800 46800 1 NZDT}
|
||||
{3289730400 43200 0 NZST}
|
||||
{3305455200 46800 1 NZDT}
|
||||
{3321784800 43200 0 NZST}
|
||||
{3336904800 46800 1 NZDT}
|
||||
{3353234400 43200 0 NZST}
|
||||
{3368354400 46800 1 NZDT}
|
||||
{3384684000 43200 0 NZST}
|
||||
{3399804000 46800 1 NZDT}
|
||||
{3416133600 43200 0 NZST}
|
||||
{3431253600 46800 1 NZDT}
|
||||
{3447583200 43200 0 NZST}
|
||||
{3462703200 46800 1 NZDT}
|
||||
{3479637600 43200 0 NZST}
|
||||
{3494757600 46800 1 NZDT}
|
||||
{3511087200 43200 0 NZST}
|
||||
{3526207200 46800 1 NZDT}
|
||||
{3542536800 43200 0 NZST}
|
||||
{3557656800 46800 1 NZDT}
|
||||
{3573986400 43200 0 NZST}
|
||||
{3589106400 46800 1 NZDT}
|
||||
{3605436000 43200 0 NZST}
|
||||
{3620556000 46800 1 NZDT}
|
||||
{3636885600 43200 0 NZST}
|
||||
{3652610400 46800 1 NZDT}
|
||||
{3668940000 43200 0 NZST}
|
||||
{3684060000 46800 1 NZDT}
|
||||
{3700389600 43200 0 NZST}
|
||||
{3715509600 46800 1 NZDT}
|
||||
{3731839200 43200 0 NZST}
|
||||
{3746959200 46800 1 NZDT}
|
||||
{3763288800 43200 0 NZST}
|
||||
{3778408800 46800 1 NZDT}
|
||||
{3794738400 43200 0 NZST}
|
||||
{3809858400 46800 1 NZDT}
|
||||
{3826188000 43200 0 NZST}
|
||||
{3841912800 46800 1 NZDT}
|
||||
{3858242400 43200 0 NZST}
|
||||
{3873362400 46800 1 NZDT}
|
||||
{3889692000 43200 0 NZST}
|
||||
{3904812000 46800 1 NZDT}
|
||||
{3921141600 43200 0 NZST}
|
||||
{3936261600 46800 1 NZDT}
|
||||
{3952591200 43200 0 NZST}
|
||||
{3967711200 46800 1 NZDT}
|
||||
{3984040800 43200 0 NZST}
|
||||
{3999765600 46800 1 NZDT}
|
||||
{4016095200 43200 0 NZST}
|
||||
{4031215200 46800 1 NZDT}
|
||||
{4047544800 43200 0 NZST}
|
||||
{4062664800 46800 1 NZDT}
|
||||
{4078994400 43200 0 NZST}
|
||||
{4094114400 46800 1 NZDT}
|
||||
if {![info exists TZData(Pacific/Auckland)]} {
|
||||
LoadTimeZoneFile Pacific/Auckland
|
||||
}
|
||||
set TZData(:Antarctica/McMurdo) $TZData(:Pacific/Auckland)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
if {![info exists TZData(Antarctica/McMurdo)]} {
|
||||
LoadTimeZoneFile Antarctica/McMurdo
|
||||
if {![info exists TZData(Pacific/Auckland)]} {
|
||||
LoadTimeZoneFile Pacific/Auckland
|
||||
}
|
||||
set TZData(:Antarctica/South_Pole) $TZData(:Antarctica/McMurdo)
|
||||
set TZData(:Antarctica/South_Pole) $TZData(:Pacific/Auckland)
|
||||
|
||||
+1
-174
@@ -70,178 +70,5 @@ set TZData(:Asia/Amman) {
|
||||
{1301608800 10800 1 EEST}
|
||||
{1319752800 7200 0 EET}
|
||||
{1333058400 10800 1 EEST}
|
||||
{1364504400 10800 1 EEST}
|
||||
{1382652000 7200 0 EET}
|
||||
{1395957600 10800 1 EEST}
|
||||
{1414706400 7200 0 EET}
|
||||
{1427407200 10800 1 EEST}
|
||||
{1446156000 7200 0 EET}
|
||||
{1459461600 10800 1 EEST}
|
||||
{1477605600 7200 0 EET}
|
||||
{1490911200 10800 1 EEST}
|
||||
{1509055200 7200 0 EET}
|
||||
{1522360800 10800 1 EEST}
|
||||
{1540504800 7200 0 EET}
|
||||
{1553810400 10800 1 EEST}
|
||||
{1571954400 7200 0 EET}
|
||||
{1585260000 10800 1 EEST}
|
||||
{1604008800 7200 0 EET}
|
||||
{1616709600 10800 1 EEST}
|
||||
{1635458400 7200 0 EET}
|
||||
{1648764000 10800 1 EEST}
|
||||
{1666908000 7200 0 EET}
|
||||
{1680213600 10800 1 EEST}
|
||||
{1698357600 7200 0 EET}
|
||||
{1711663200 10800 1 EEST}
|
||||
{1729807200 7200 0 EET}
|
||||
{1743112800 10800 1 EEST}
|
||||
{1761861600 7200 0 EET}
|
||||
{1774562400 10800 1 EEST}
|
||||
{1793311200 7200 0 EET}
|
||||
{1806012000 10800 1 EEST}
|
||||
{1824760800 7200 0 EET}
|
||||
{1838066400 10800 1 EEST}
|
||||
{1856210400 7200 0 EET}
|
||||
{1869516000 10800 1 EEST}
|
||||
{1887660000 7200 0 EET}
|
||||
{1900965600 10800 1 EEST}
|
||||
{1919109600 7200 0 EET}
|
||||
{1932415200 10800 1 EEST}
|
||||
{1951164000 7200 0 EET}
|
||||
{1963864800 10800 1 EEST}
|
||||
{1982613600 7200 0 EET}
|
||||
{1995919200 10800 1 EEST}
|
||||
{2014063200 7200 0 EET}
|
||||
{2027368800 10800 1 EEST}
|
||||
{2045512800 7200 0 EET}
|
||||
{2058818400 10800 1 EEST}
|
||||
{2076962400 7200 0 EET}
|
||||
{2090268000 10800 1 EEST}
|
||||
{2109016800 7200 0 EET}
|
||||
{2121717600 10800 1 EEST}
|
||||
{2140466400 7200 0 EET}
|
||||
{2153167200 10800 1 EEST}
|
||||
{2171916000 7200 0 EET}
|
||||
{2185221600 10800 1 EEST}
|
||||
{2203365600 7200 0 EET}
|
||||
{2216671200 10800 1 EEST}
|
||||
{2234815200 7200 0 EET}
|
||||
{2248120800 10800 1 EEST}
|
||||
{2266264800 7200 0 EET}
|
||||
{2279570400 10800 1 EEST}
|
||||
{2298319200 7200 0 EET}
|
||||
{2311020000 10800 1 EEST}
|
||||
{2329768800 7200 0 EET}
|
||||
{2343074400 10800 1 EEST}
|
||||
{2361218400 7200 0 EET}
|
||||
{2374524000 10800 1 EEST}
|
||||
{2392668000 7200 0 EET}
|
||||
{2405973600 10800 1 EEST}
|
||||
{2424117600 7200 0 EET}
|
||||
{2437423200 10800 1 EEST}
|
||||
{2455567200 7200 0 EET}
|
||||
{2468872800 10800 1 EEST}
|
||||
{2487621600 7200 0 EET}
|
||||
{2500322400 10800 1 EEST}
|
||||
{2519071200 7200 0 EET}
|
||||
{2532376800 10800 1 EEST}
|
||||
{2550520800 7200 0 EET}
|
||||
{2563826400 10800 1 EEST}
|
||||
{2581970400 7200 0 EET}
|
||||
{2595276000 10800 1 EEST}
|
||||
{2613420000 7200 0 EET}
|
||||
{2626725600 10800 1 EEST}
|
||||
{2645474400 7200 0 EET}
|
||||
{2658175200 10800 1 EEST}
|
||||
{2676924000 7200 0 EET}
|
||||
{2689624800 10800 1 EEST}
|
||||
{2708373600 7200 0 EET}
|
||||
{2721679200 10800 1 EEST}
|
||||
{2739823200 7200 0 EET}
|
||||
{2753128800 10800 1 EEST}
|
||||
{2771272800 7200 0 EET}
|
||||
{2784578400 10800 1 EEST}
|
||||
{2802722400 7200 0 EET}
|
||||
{2816028000 10800 1 EEST}
|
||||
{2834776800 7200 0 EET}
|
||||
{2847477600 10800 1 EEST}
|
||||
{2866226400 7200 0 EET}
|
||||
{2879532000 10800 1 EEST}
|
||||
{2897676000 7200 0 EET}
|
||||
{2910981600 10800 1 EEST}
|
||||
{2929125600 7200 0 EET}
|
||||
{2942431200 10800 1 EEST}
|
||||
{2960575200 7200 0 EET}
|
||||
{2973880800 10800 1 EEST}
|
||||
{2992629600 7200 0 EET}
|
||||
{3005330400 10800 1 EEST}
|
||||
{3024079200 7200 0 EET}
|
||||
{3036780000 10800 1 EEST}
|
||||
{3055528800 7200 0 EET}
|
||||
{3068834400 10800 1 EEST}
|
||||
{3086978400 7200 0 EET}
|
||||
{3100284000 10800 1 EEST}
|
||||
{3118428000 7200 0 EET}
|
||||
{3131733600 10800 1 EEST}
|
||||
{3149877600 7200 0 EET}
|
||||
{3163183200 10800 1 EEST}
|
||||
{3181932000 7200 0 EET}
|
||||
{3194632800 10800 1 EEST}
|
||||
{3213381600 7200 0 EET}
|
||||
{3226687200 10800 1 EEST}
|
||||
{3244831200 7200 0 EET}
|
||||
{3258136800 10800 1 EEST}
|
||||
{3276280800 7200 0 EET}
|
||||
{3289586400 10800 1 EEST}
|
||||
{3307730400 7200 0 EET}
|
||||
{3321036000 10800 1 EEST}
|
||||
{3339180000 7200 0 EET}
|
||||
{3352485600 10800 1 EEST}
|
||||
{3371234400 7200 0 EET}
|
||||
{3383935200 10800 1 EEST}
|
||||
{3402684000 7200 0 EET}
|
||||
{3415989600 10800 1 EEST}
|
||||
{3434133600 7200 0 EET}
|
||||
{3447439200 10800 1 EEST}
|
||||
{3465583200 7200 0 EET}
|
||||
{3478888800 10800 1 EEST}
|
||||
{3497032800 7200 0 EET}
|
||||
{3510338400 10800 1 EEST}
|
||||
{3529087200 7200 0 EET}
|
||||
{3541788000 10800 1 EEST}
|
||||
{3560536800 7200 0 EET}
|
||||
{3573237600 10800 1 EEST}
|
||||
{3591986400 7200 0 EET}
|
||||
{3605292000 10800 1 EEST}
|
||||
{3623436000 7200 0 EET}
|
||||
{3636741600 10800 1 EEST}
|
||||
{3654885600 7200 0 EET}
|
||||
{3668191200 10800 1 EEST}
|
||||
{3686335200 7200 0 EET}
|
||||
{3699640800 10800 1 EEST}
|
||||
{3718389600 7200 0 EET}
|
||||
{3731090400 10800 1 EEST}
|
||||
{3749839200 7200 0 EET}
|
||||
{3763144800 10800 1 EEST}
|
||||
{3781288800 7200 0 EET}
|
||||
{3794594400 10800 1 EEST}
|
||||
{3812738400 7200 0 EET}
|
||||
{3826044000 10800 1 EEST}
|
||||
{3844188000 7200 0 EET}
|
||||
{3857493600 10800 1 EEST}
|
||||
{3876242400 7200 0 EET}
|
||||
{3888943200 10800 1 EEST}
|
||||
{3907692000 7200 0 EET}
|
||||
{3920392800 10800 1 EEST}
|
||||
{3939141600 7200 0 EET}
|
||||
{3952447200 10800 1 EEST}
|
||||
{3970591200 7200 0 EET}
|
||||
{3983896800 10800 1 EEST}
|
||||
{4002040800 7200 0 EET}
|
||||
{4015346400 10800 1 EEST}
|
||||
{4033490400 7200 0 EET}
|
||||
{4046796000 10800 1 EEST}
|
||||
{4065544800 7200 0 EET}
|
||||
{4078245600 10800 1 EEST}
|
||||
{4096994400 7200 0 EET}
|
||||
{1351202400 10800 0 AST}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,6 @@ set TZData(:Asia/Dili) {
|
||||
{-1830414140 28800 0 TLT}
|
||||
{-879152400 32400 0 JST}
|
||||
{-766054800 32400 0 TLT}
|
||||
{199897200 28800 0 CIT}
|
||||
{199897200 28800 0 WITA}
|
||||
{969120000 32400 0 TLT}
|
||||
}
|
||||
|
||||
+87
-87
@@ -102,177 +102,177 @@ set TZData(:Asia/Gaza) {
|
||||
{1333058400 10800 1 EEST}
|
||||
{1348178400 7200 0 EET}
|
||||
{1364508000 10800 1 EEST}
|
||||
{1380232800 7200 0 EET}
|
||||
{1380229200 7200 0 EET}
|
||||
{1395957600 10800 1 EEST}
|
||||
{1411682400 7200 0 EET}
|
||||
{1411678800 7200 0 EET}
|
||||
{1427407200 10800 1 EEST}
|
||||
{1443132000 7200 0 EET}
|
||||
{1443128400 7200 0 EET}
|
||||
{1459461600 10800 1 EEST}
|
||||
{1474581600 7200 0 EET}
|
||||
{1474578000 7200 0 EET}
|
||||
{1490911200 10800 1 EEST}
|
||||
{1506031200 7200 0 EET}
|
||||
{1506027600 7200 0 EET}
|
||||
{1522360800 10800 1 EEST}
|
||||
{1537480800 7200 0 EET}
|
||||
{1537477200 7200 0 EET}
|
||||
{1553810400 10800 1 EEST}
|
||||
{1569535200 7200 0 EET}
|
||||
{1569531600 7200 0 EET}
|
||||
{1585260000 10800 1 EEST}
|
||||
{1600984800 7200 0 EET}
|
||||
{1600981200 7200 0 EET}
|
||||
{1616709600 10800 1 EEST}
|
||||
{1632434400 7200 0 EET}
|
||||
{1632430800 7200 0 EET}
|
||||
{1648764000 10800 1 EEST}
|
||||
{1663884000 7200 0 EET}
|
||||
{1663880400 7200 0 EET}
|
||||
{1680213600 10800 1 EEST}
|
||||
{1695333600 7200 0 EET}
|
||||
{1695330000 7200 0 EET}
|
||||
{1711663200 10800 1 EEST}
|
||||
{1727388000 7200 0 EET}
|
||||
{1727384400 7200 0 EET}
|
||||
{1743112800 10800 1 EEST}
|
||||
{1758837600 7200 0 EET}
|
||||
{1758834000 7200 0 EET}
|
||||
{1774562400 10800 1 EEST}
|
||||
{1790287200 7200 0 EET}
|
||||
{1790283600 7200 0 EET}
|
||||
{1806012000 10800 1 EEST}
|
||||
{1821736800 7200 0 EET}
|
||||
{1821733200 7200 0 EET}
|
||||
{1838066400 10800 1 EEST}
|
||||
{1853186400 7200 0 EET}
|
||||
{1853182800 7200 0 EET}
|
||||
{1869516000 10800 1 EEST}
|
||||
{1884636000 7200 0 EET}
|
||||
{1884632400 7200 0 EET}
|
||||
{1900965600 10800 1 EEST}
|
||||
{1916690400 7200 0 EET}
|
||||
{1916686800 7200 0 EET}
|
||||
{1932415200 10800 1 EEST}
|
||||
{1948140000 7200 0 EET}
|
||||
{1948136400 7200 0 EET}
|
||||
{1963864800 10800 1 EEST}
|
||||
{1979589600 7200 0 EET}
|
||||
{1979586000 7200 0 EET}
|
||||
{1995919200 10800 1 EEST}
|
||||
{2011039200 7200 0 EET}
|
||||
{2011035600 7200 0 EET}
|
||||
{2027368800 10800 1 EEST}
|
||||
{2042488800 7200 0 EET}
|
||||
{2042485200 7200 0 EET}
|
||||
{2058818400 10800 1 EEST}
|
||||
{2073938400 7200 0 EET}
|
||||
{2073934800 7200 0 EET}
|
||||
{2090268000 10800 1 EEST}
|
||||
{2105992800 7200 0 EET}
|
||||
{2105989200 7200 0 EET}
|
||||
{2121717600 10800 1 EEST}
|
||||
{2137442400 7200 0 EET}
|
||||
{2137438800 7200 0 EET}
|
||||
{2153167200 10800 1 EEST}
|
||||
{2168892000 7200 0 EET}
|
||||
{2168888400 7200 0 EET}
|
||||
{2185221600 10800 1 EEST}
|
||||
{2200341600 7200 0 EET}
|
||||
{2200338000 7200 0 EET}
|
||||
{2216671200 10800 1 EEST}
|
||||
{2231791200 7200 0 EET}
|
||||
{2231787600 7200 0 EET}
|
||||
{2248120800 10800 1 EEST}
|
||||
{2263845600 7200 0 EET}
|
||||
{2263842000 7200 0 EET}
|
||||
{2279570400 10800 1 EEST}
|
||||
{2295295200 7200 0 EET}
|
||||
{2295291600 7200 0 EET}
|
||||
{2311020000 10800 1 EEST}
|
||||
{2326744800 7200 0 EET}
|
||||
{2326741200 7200 0 EET}
|
||||
{2343074400 10800 1 EEST}
|
||||
{2358194400 7200 0 EET}
|
||||
{2358190800 7200 0 EET}
|
||||
{2374524000 10800 1 EEST}
|
||||
{2389644000 7200 0 EET}
|
||||
{2389640400 7200 0 EET}
|
||||
{2405973600 10800 1 EEST}
|
||||
{2421093600 7200 0 EET}
|
||||
{2421090000 7200 0 EET}
|
||||
{2437423200 10800 1 EEST}
|
||||
{2453148000 7200 0 EET}
|
||||
{2453144400 7200 0 EET}
|
||||
{2468872800 10800 1 EEST}
|
||||
{2484597600 7200 0 EET}
|
||||
{2484594000 7200 0 EET}
|
||||
{2500322400 10800 1 EEST}
|
||||
{2516047200 7200 0 EET}
|
||||
{2516043600 7200 0 EET}
|
||||
{2532376800 10800 1 EEST}
|
||||
{2547496800 7200 0 EET}
|
||||
{2547493200 7200 0 EET}
|
||||
{2563826400 10800 1 EEST}
|
||||
{2578946400 7200 0 EET}
|
||||
{2578942800 7200 0 EET}
|
||||
{2595276000 10800 1 EEST}
|
||||
{2611000800 7200 0 EET}
|
||||
{2610997200 7200 0 EET}
|
||||
{2626725600 10800 1 EEST}
|
||||
{2642450400 7200 0 EET}
|
||||
{2642446800 7200 0 EET}
|
||||
{2658175200 10800 1 EEST}
|
||||
{2673900000 7200 0 EET}
|
||||
{2673896400 7200 0 EET}
|
||||
{2689624800 10800 1 EEST}
|
||||
{2705349600 7200 0 EET}
|
||||
{2705346000 7200 0 EET}
|
||||
{2721679200 10800 1 EEST}
|
||||
{2736799200 7200 0 EET}
|
||||
{2736795600 7200 0 EET}
|
||||
{2753128800 10800 1 EEST}
|
||||
{2768248800 7200 0 EET}
|
||||
{2768245200 7200 0 EET}
|
||||
{2784578400 10800 1 EEST}
|
||||
{2800303200 7200 0 EET}
|
||||
{2800299600 7200 0 EET}
|
||||
{2816028000 10800 1 EEST}
|
||||
{2831752800 7200 0 EET}
|
||||
{2831749200 7200 0 EET}
|
||||
{2847477600 10800 1 EEST}
|
||||
{2863202400 7200 0 EET}
|
||||
{2863198800 7200 0 EET}
|
||||
{2879532000 10800 1 EEST}
|
||||
{2894652000 7200 0 EET}
|
||||
{2894648400 7200 0 EET}
|
||||
{2910981600 10800 1 EEST}
|
||||
{2926101600 7200 0 EET}
|
||||
{2926098000 7200 0 EET}
|
||||
{2942431200 10800 1 EEST}
|
||||
{2957551200 7200 0 EET}
|
||||
{2957547600 7200 0 EET}
|
||||
{2973880800 10800 1 EEST}
|
||||
{2989605600 7200 0 EET}
|
||||
{2989602000 7200 0 EET}
|
||||
{3005330400 10800 1 EEST}
|
||||
{3021055200 7200 0 EET}
|
||||
{3021051600 7200 0 EET}
|
||||
{3036780000 10800 1 EEST}
|
||||
{3052504800 7200 0 EET}
|
||||
{3052501200 7200 0 EET}
|
||||
{3068834400 10800 1 EEST}
|
||||
{3083954400 7200 0 EET}
|
||||
{3083950800 7200 0 EET}
|
||||
{3100284000 10800 1 EEST}
|
||||
{3115404000 7200 0 EET}
|
||||
{3115400400 7200 0 EET}
|
||||
{3131733600 10800 1 EEST}
|
||||
{3147458400 7200 0 EET}
|
||||
{3147454800 7200 0 EET}
|
||||
{3163183200 10800 1 EEST}
|
||||
{3178908000 7200 0 EET}
|
||||
{3178904400 7200 0 EET}
|
||||
{3194632800 10800 1 EEST}
|
||||
{3210357600 7200 0 EET}
|
||||
{3210354000 7200 0 EET}
|
||||
{3226687200 10800 1 EEST}
|
||||
{3241807200 7200 0 EET}
|
||||
{3241803600 7200 0 EET}
|
||||
{3258136800 10800 1 EEST}
|
||||
{3273256800 7200 0 EET}
|
||||
{3273253200 7200 0 EET}
|
||||
{3289586400 10800 1 EEST}
|
||||
{3304706400 7200 0 EET}
|
||||
{3304702800 7200 0 EET}
|
||||
{3321036000 10800 1 EEST}
|
||||
{3336760800 7200 0 EET}
|
||||
{3336757200 7200 0 EET}
|
||||
{3352485600 10800 1 EEST}
|
||||
{3368210400 7200 0 EET}
|
||||
{3368206800 7200 0 EET}
|
||||
{3383935200 10800 1 EEST}
|
||||
{3399660000 7200 0 EET}
|
||||
{3399656400 7200 0 EET}
|
||||
{3415989600 10800 1 EEST}
|
||||
{3431109600 7200 0 EET}
|
||||
{3431106000 7200 0 EET}
|
||||
{3447439200 10800 1 EEST}
|
||||
{3462559200 7200 0 EET}
|
||||
{3462555600 7200 0 EET}
|
||||
{3478888800 10800 1 EEST}
|
||||
{3494613600 7200 0 EET}
|
||||
{3494610000 7200 0 EET}
|
||||
{3510338400 10800 1 EEST}
|
||||
{3526063200 7200 0 EET}
|
||||
{3526059600 7200 0 EET}
|
||||
{3541788000 10800 1 EEST}
|
||||
{3557512800 7200 0 EET}
|
||||
{3557509200 7200 0 EET}
|
||||
{3573237600 10800 1 EEST}
|
||||
{3588962400 7200 0 EET}
|
||||
{3588958800 7200 0 EET}
|
||||
{3605292000 10800 1 EEST}
|
||||
{3620412000 7200 0 EET}
|
||||
{3620408400 7200 0 EET}
|
||||
{3636741600 10800 1 EEST}
|
||||
{3651861600 7200 0 EET}
|
||||
{3651858000 7200 0 EET}
|
||||
{3668191200 10800 1 EEST}
|
||||
{3683916000 7200 0 EET}
|
||||
{3683912400 7200 0 EET}
|
||||
{3699640800 10800 1 EEST}
|
||||
{3715365600 7200 0 EET}
|
||||
{3715362000 7200 0 EET}
|
||||
{3731090400 10800 1 EEST}
|
||||
{3746815200 7200 0 EET}
|
||||
{3746811600 7200 0 EET}
|
||||
{3763144800 10800 1 EEST}
|
||||
{3778264800 7200 0 EET}
|
||||
{3778261200 7200 0 EET}
|
||||
{3794594400 10800 1 EEST}
|
||||
{3809714400 7200 0 EET}
|
||||
{3809710800 7200 0 EET}
|
||||
{3826044000 10800 1 EEST}
|
||||
{3841164000 7200 0 EET}
|
||||
{3841160400 7200 0 EET}
|
||||
{3857493600 10800 1 EEST}
|
||||
{3873218400 7200 0 EET}
|
||||
{3873214800 7200 0 EET}
|
||||
{3888943200 10800 1 EEST}
|
||||
{3904668000 7200 0 EET}
|
||||
{3904664400 7200 0 EET}
|
||||
{3920392800 10800 1 EEST}
|
||||
{3936117600 7200 0 EET}
|
||||
{3936114000 7200 0 EET}
|
||||
{3952447200 10800 1 EEST}
|
||||
{3967567200 7200 0 EET}
|
||||
{3967563600 7200 0 EET}
|
||||
{3983896800 10800 1 EEST}
|
||||
{3999016800 7200 0 EET}
|
||||
{3999013200 7200 0 EET}
|
||||
{4015346400 10800 1 EEST}
|
||||
{4031071200 7200 0 EET}
|
||||
{4031067600 7200 0 EET}
|
||||
{4046796000 10800 1 EEST}
|
||||
{4062520800 7200 0 EET}
|
||||
{4062517200 7200 0 EET}
|
||||
{4078245600 10800 1 EEST}
|
||||
{4093970400 7200 0 EET}
|
||||
{4093966800 7200 0 EET}
|
||||
}
|
||||
|
||||
+87
-87
@@ -101,177 +101,177 @@ set TZData(:Asia/Hebron) {
|
||||
{1333058400 10800 1 EEST}
|
||||
{1348178400 7200 0 EET}
|
||||
{1364508000 10800 1 EEST}
|
||||
{1380232800 7200 0 EET}
|
||||
{1380229200 7200 0 EET}
|
||||
{1395957600 10800 1 EEST}
|
||||
{1411682400 7200 0 EET}
|
||||
{1411678800 7200 0 EET}
|
||||
{1427407200 10800 1 EEST}
|
||||
{1443132000 7200 0 EET}
|
||||
{1443128400 7200 0 EET}
|
||||
{1459461600 10800 1 EEST}
|
||||
{1474581600 7200 0 EET}
|
||||
{1474578000 7200 0 EET}
|
||||
{1490911200 10800 1 EEST}
|
||||
{1506031200 7200 0 EET}
|
||||
{1506027600 7200 0 EET}
|
||||
{1522360800 10800 1 EEST}
|
||||
{1537480800 7200 0 EET}
|
||||
{1537477200 7200 0 EET}
|
||||
{1553810400 10800 1 EEST}
|
||||
{1569535200 7200 0 EET}
|
||||
{1569531600 7200 0 EET}
|
||||
{1585260000 10800 1 EEST}
|
||||
{1600984800 7200 0 EET}
|
||||
{1600981200 7200 0 EET}
|
||||
{1616709600 10800 1 EEST}
|
||||
{1632434400 7200 0 EET}
|
||||
{1632430800 7200 0 EET}
|
||||
{1648764000 10800 1 EEST}
|
||||
{1663884000 7200 0 EET}
|
||||
{1663880400 7200 0 EET}
|
||||
{1680213600 10800 1 EEST}
|
||||
{1695333600 7200 0 EET}
|
||||
{1695330000 7200 0 EET}
|
||||
{1711663200 10800 1 EEST}
|
||||
{1727388000 7200 0 EET}
|
||||
{1727384400 7200 0 EET}
|
||||
{1743112800 10800 1 EEST}
|
||||
{1758837600 7200 0 EET}
|
||||
{1758834000 7200 0 EET}
|
||||
{1774562400 10800 1 EEST}
|
||||
{1790287200 7200 0 EET}
|
||||
{1790283600 7200 0 EET}
|
||||
{1806012000 10800 1 EEST}
|
||||
{1821736800 7200 0 EET}
|
||||
{1821733200 7200 0 EET}
|
||||
{1838066400 10800 1 EEST}
|
||||
{1853186400 7200 0 EET}
|
||||
{1853182800 7200 0 EET}
|
||||
{1869516000 10800 1 EEST}
|
||||
{1884636000 7200 0 EET}
|
||||
{1884632400 7200 0 EET}
|
||||
{1900965600 10800 1 EEST}
|
||||
{1916690400 7200 0 EET}
|
||||
{1916686800 7200 0 EET}
|
||||
{1932415200 10800 1 EEST}
|
||||
{1948140000 7200 0 EET}
|
||||
{1948136400 7200 0 EET}
|
||||
{1963864800 10800 1 EEST}
|
||||
{1979589600 7200 0 EET}
|
||||
{1979586000 7200 0 EET}
|
||||
{1995919200 10800 1 EEST}
|
||||
{2011039200 7200 0 EET}
|
||||
{2011035600 7200 0 EET}
|
||||
{2027368800 10800 1 EEST}
|
||||
{2042488800 7200 0 EET}
|
||||
{2042485200 7200 0 EET}
|
||||
{2058818400 10800 1 EEST}
|
||||
{2073938400 7200 0 EET}
|
||||
{2073934800 7200 0 EET}
|
||||
{2090268000 10800 1 EEST}
|
||||
{2105992800 7200 0 EET}
|
||||
{2105989200 7200 0 EET}
|
||||
{2121717600 10800 1 EEST}
|
||||
{2137442400 7200 0 EET}
|
||||
{2137438800 7200 0 EET}
|
||||
{2153167200 10800 1 EEST}
|
||||
{2168892000 7200 0 EET}
|
||||
{2168888400 7200 0 EET}
|
||||
{2185221600 10800 1 EEST}
|
||||
{2200341600 7200 0 EET}
|
||||
{2200338000 7200 0 EET}
|
||||
{2216671200 10800 1 EEST}
|
||||
{2231791200 7200 0 EET}
|
||||
{2231787600 7200 0 EET}
|
||||
{2248120800 10800 1 EEST}
|
||||
{2263845600 7200 0 EET}
|
||||
{2263842000 7200 0 EET}
|
||||
{2279570400 10800 1 EEST}
|
||||
{2295295200 7200 0 EET}
|
||||
{2295291600 7200 0 EET}
|
||||
{2311020000 10800 1 EEST}
|
||||
{2326744800 7200 0 EET}
|
||||
{2326741200 7200 0 EET}
|
||||
{2343074400 10800 1 EEST}
|
||||
{2358194400 7200 0 EET}
|
||||
{2358190800 7200 0 EET}
|
||||
{2374524000 10800 1 EEST}
|
||||
{2389644000 7200 0 EET}
|
||||
{2389640400 7200 0 EET}
|
||||
{2405973600 10800 1 EEST}
|
||||
{2421093600 7200 0 EET}
|
||||
{2421090000 7200 0 EET}
|
||||
{2437423200 10800 1 EEST}
|
||||
{2453148000 7200 0 EET}
|
||||
{2453144400 7200 0 EET}
|
||||
{2468872800 10800 1 EEST}
|
||||
{2484597600 7200 0 EET}
|
||||
{2484594000 7200 0 EET}
|
||||
{2500322400 10800 1 EEST}
|
||||
{2516047200 7200 0 EET}
|
||||
{2516043600 7200 0 EET}
|
||||
{2532376800 10800 1 EEST}
|
||||
{2547496800 7200 0 EET}
|
||||
{2547493200 7200 0 EET}
|
||||
{2563826400 10800 1 EEST}
|
||||
{2578946400 7200 0 EET}
|
||||
{2578942800 7200 0 EET}
|
||||
{2595276000 10800 1 EEST}
|
||||
{2611000800 7200 0 EET}
|
||||
{2610997200 7200 0 EET}
|
||||
{2626725600 10800 1 EEST}
|
||||
{2642450400 7200 0 EET}
|
||||
{2642446800 7200 0 EET}
|
||||
{2658175200 10800 1 EEST}
|
||||
{2673900000 7200 0 EET}
|
||||
{2673896400 7200 0 EET}
|
||||
{2689624800 10800 1 EEST}
|
||||
{2705349600 7200 0 EET}
|
||||
{2705346000 7200 0 EET}
|
||||
{2721679200 10800 1 EEST}
|
||||
{2736799200 7200 0 EET}
|
||||
{2736795600 7200 0 EET}
|
||||
{2753128800 10800 1 EEST}
|
||||
{2768248800 7200 0 EET}
|
||||
{2768245200 7200 0 EET}
|
||||
{2784578400 10800 1 EEST}
|
||||
{2800303200 7200 0 EET}
|
||||
{2800299600 7200 0 EET}
|
||||
{2816028000 10800 1 EEST}
|
||||
{2831752800 7200 0 EET}
|
||||
{2831749200 7200 0 EET}
|
||||
{2847477600 10800 1 EEST}
|
||||
{2863202400 7200 0 EET}
|
||||
{2863198800 7200 0 EET}
|
||||
{2879532000 10800 1 EEST}
|
||||
{2894652000 7200 0 EET}
|
||||
{2894648400 7200 0 EET}
|
||||
{2910981600 10800 1 EEST}
|
||||
{2926101600 7200 0 EET}
|
||||
{2926098000 7200 0 EET}
|
||||
{2942431200 10800 1 EEST}
|
||||
{2957551200 7200 0 EET}
|
||||
{2957547600 7200 0 EET}
|
||||
{2973880800 10800 1 EEST}
|
||||
{2989605600 7200 0 EET}
|
||||
{2989602000 7200 0 EET}
|
||||
{3005330400 10800 1 EEST}
|
||||
{3021055200 7200 0 EET}
|
||||
{3021051600 7200 0 EET}
|
||||
{3036780000 10800 1 EEST}
|
||||
{3052504800 7200 0 EET}
|
||||
{3052501200 7200 0 EET}
|
||||
{3068834400 10800 1 EEST}
|
||||
{3083954400 7200 0 EET}
|
||||
{3083950800 7200 0 EET}
|
||||
{3100284000 10800 1 EEST}
|
||||
{3115404000 7200 0 EET}
|
||||
{3115400400 7200 0 EET}
|
||||
{3131733600 10800 1 EEST}
|
||||
{3147458400 7200 0 EET}
|
||||
{3147454800 7200 0 EET}
|
||||
{3163183200 10800 1 EEST}
|
||||
{3178908000 7200 0 EET}
|
||||
{3178904400 7200 0 EET}
|
||||
{3194632800 10800 1 EEST}
|
||||
{3210357600 7200 0 EET}
|
||||
{3210354000 7200 0 EET}
|
||||
{3226687200 10800 1 EEST}
|
||||
{3241807200 7200 0 EET}
|
||||
{3241803600 7200 0 EET}
|
||||
{3258136800 10800 1 EEST}
|
||||
{3273256800 7200 0 EET}
|
||||
{3273253200 7200 0 EET}
|
||||
{3289586400 10800 1 EEST}
|
||||
{3304706400 7200 0 EET}
|
||||
{3304702800 7200 0 EET}
|
||||
{3321036000 10800 1 EEST}
|
||||
{3336760800 7200 0 EET}
|
||||
{3336757200 7200 0 EET}
|
||||
{3352485600 10800 1 EEST}
|
||||
{3368210400 7200 0 EET}
|
||||
{3368206800 7200 0 EET}
|
||||
{3383935200 10800 1 EEST}
|
||||
{3399660000 7200 0 EET}
|
||||
{3399656400 7200 0 EET}
|
||||
{3415989600 10800 1 EEST}
|
||||
{3431109600 7200 0 EET}
|
||||
{3431106000 7200 0 EET}
|
||||
{3447439200 10800 1 EEST}
|
||||
{3462559200 7200 0 EET}
|
||||
{3462555600 7200 0 EET}
|
||||
{3478888800 10800 1 EEST}
|
||||
{3494613600 7200 0 EET}
|
||||
{3494610000 7200 0 EET}
|
||||
{3510338400 10800 1 EEST}
|
||||
{3526063200 7200 0 EET}
|
||||
{3526059600 7200 0 EET}
|
||||
{3541788000 10800 1 EEST}
|
||||
{3557512800 7200 0 EET}
|
||||
{3557509200 7200 0 EET}
|
||||
{3573237600 10800 1 EEST}
|
||||
{3588962400 7200 0 EET}
|
||||
{3588958800 7200 0 EET}
|
||||
{3605292000 10800 1 EEST}
|
||||
{3620412000 7200 0 EET}
|
||||
{3620408400 7200 0 EET}
|
||||
{3636741600 10800 1 EEST}
|
||||
{3651861600 7200 0 EET}
|
||||
{3651858000 7200 0 EET}
|
||||
{3668191200 10800 1 EEST}
|
||||
{3683916000 7200 0 EET}
|
||||
{3683912400 7200 0 EET}
|
||||
{3699640800 10800 1 EEST}
|
||||
{3715365600 7200 0 EET}
|
||||
{3715362000 7200 0 EET}
|
||||
{3731090400 10800 1 EEST}
|
||||
{3746815200 7200 0 EET}
|
||||
{3746811600 7200 0 EET}
|
||||
{3763144800 10800 1 EEST}
|
||||
{3778264800 7200 0 EET}
|
||||
{3778261200 7200 0 EET}
|
||||
{3794594400 10800 1 EEST}
|
||||
{3809714400 7200 0 EET}
|
||||
{3809710800 7200 0 EET}
|
||||
{3826044000 10800 1 EEST}
|
||||
{3841164000 7200 0 EET}
|
||||
{3841160400 7200 0 EET}
|
||||
{3857493600 10800 1 EEST}
|
||||
{3873218400 7200 0 EET}
|
||||
{3873214800 7200 0 EET}
|
||||
{3888943200 10800 1 EEST}
|
||||
{3904668000 7200 0 EET}
|
||||
{3904664400 7200 0 EET}
|
||||
{3920392800 10800 1 EEST}
|
||||
{3936117600 7200 0 EET}
|
||||
{3936114000 7200 0 EET}
|
||||
{3952447200 10800 1 EEST}
|
||||
{3967567200 7200 0 EET}
|
||||
{3967563600 7200 0 EET}
|
||||
{3983896800 10800 1 EEST}
|
||||
{3999016800 7200 0 EET}
|
||||
{3999013200 7200 0 EET}
|
||||
{4015346400 10800 1 EEST}
|
||||
{4031071200 7200 0 EET}
|
||||
{4031067600 7200 0 EET}
|
||||
{4046796000 10800 1 EEST}
|
||||
{4062520800 7200 0 EET}
|
||||
{4062517200 7200 0 EET}
|
||||
{4078245600 10800 1 EEST}
|
||||
{4093970400 7200 0 EET}
|
||||
{4093966800 7200 0 EET}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
set TZData(:Asia/Jakarta) {
|
||||
{-9223372036854775808 25632 0 LMT}
|
||||
{-3231299232 25632 0 JMT}
|
||||
{-3231299232 25632 0 BMT}
|
||||
{-1451719200 26400 0 JAVT}
|
||||
{-1172906400 27000 0 WIT}
|
||||
{-1172906400 27000 0 WIB}
|
||||
{-876641400 32400 0 JST}
|
||||
{-766054800 27000 0 WIT}
|
||||
{-683883000 28800 0 WIT}
|
||||
{-620812800 27000 0 WIT}
|
||||
{-189415800 25200 0 WIT}
|
||||
{-766054800 27000 0 WIB}
|
||||
{-683883000 28800 0 WIB}
|
||||
{-620812800 27000 0 WIB}
|
||||
{-189415800 25200 0 WIB}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
set TZData(:Asia/Jayapura) {
|
||||
{-9223372036854775808 33768 0 LMT}
|
||||
{-1172913768 32400 0 EIT}
|
||||
{-1172913768 32400 0 WIT}
|
||||
{-799491600 34200 0 CST}
|
||||
{-189423000 32400 0 EIT}
|
||||
{-189423000 32400 0 WIT}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
set TZData(:Asia/Makassar) {
|
||||
{-9223372036854775808 28656 0 LMT}
|
||||
{-1577951856 28656 0 MMT}
|
||||
{-1172908656 28800 0 CIT}
|
||||
{-1172908656 28800 0 WITA}
|
||||
{-880272000 32400 0 JST}
|
||||
{-766054800 28800 0 CIT}
|
||||
{-766054800 28800 0 WITA}
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
set TZData(:Asia/Pontianak) {
|
||||
{-9223372036854775808 26240 0 LMT}
|
||||
{-1946186240 26240 0 PMT}
|
||||
{-1172906240 27000 0 WIT}
|
||||
{-1172906240 27000 0 WIB}
|
||||
{-881220600 32400 0 JST}
|
||||
{-766054800 27000 0 WIT}
|
||||
{-683883000 28800 0 WIT}
|
||||
{-620812800 27000 0 WIT}
|
||||
{-189415800 28800 0 CIT}
|
||||
{567964800 25200 0 WIT}
|
||||
{-766054800 27000 0 WIB}
|
||||
{-683883000 28800 0 WIB}
|
||||
{-620812800 27000 0 WIB}
|
||||
{-189415800 28800 0 WITA}
|
||||
{567964800 25200 0 WIB}
|
||||
}
|
||||
|
||||
+3
-243
@@ -1,245 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:Europe/Vaduz) {
|
||||
{-9223372036854775808 2284 0 LMT}
|
||||
{-2385247084 3600 0 CET}
|
||||
{347151600 3600 0 CET}
|
||||
{354675600 7200 1 CEST}
|
||||
{370400400 3600 0 CET}
|
||||
{386125200 7200 1 CEST}
|
||||
{401850000 3600 0 CET}
|
||||
{417574800 7200 1 CEST}
|
||||
{433299600 3600 0 CET}
|
||||
{449024400 7200 1 CEST}
|
||||
{465354000 3600 0 CET}
|
||||
{481078800 7200 1 CEST}
|
||||
{496803600 3600 0 CET}
|
||||
{512528400 7200 1 CEST}
|
||||
{528253200 3600 0 CET}
|
||||
{543978000 7200 1 CEST}
|
||||
{559702800 3600 0 CET}
|
||||
{575427600 7200 1 CEST}
|
||||
{591152400 3600 0 CET}
|
||||
{606877200 7200 1 CEST}
|
||||
{622602000 3600 0 CET}
|
||||
{638326800 7200 1 CEST}
|
||||
{654656400 3600 0 CET}
|
||||
{670381200 7200 1 CEST}
|
||||
{686106000 3600 0 CET}
|
||||
{701830800 7200 1 CEST}
|
||||
{717555600 3600 0 CET}
|
||||
{733280400 7200 1 CEST}
|
||||
{749005200 3600 0 CET}
|
||||
{764730000 7200 1 CEST}
|
||||
{780454800 3600 0 CET}
|
||||
{796179600 7200 1 CEST}
|
||||
{811904400 3600 0 CET}
|
||||
{828234000 7200 1 CEST}
|
||||
{846378000 3600 0 CET}
|
||||
{859683600 7200 1 CEST}
|
||||
{877827600 3600 0 CET}
|
||||
{891133200 7200 1 CEST}
|
||||
{909277200 3600 0 CET}
|
||||
{922582800 7200 1 CEST}
|
||||
{941331600 3600 0 CET}
|
||||
{954032400 7200 1 CEST}
|
||||
{972781200 3600 0 CET}
|
||||
{985482000 7200 1 CEST}
|
||||
{1004230800 3600 0 CET}
|
||||
{1017536400 7200 1 CEST}
|
||||
{1035680400 3600 0 CET}
|
||||
{1048986000 7200 1 CEST}
|
||||
{1067130000 3600 0 CET}
|
||||
{1080435600 7200 1 CEST}
|
||||
{1099184400 3600 0 CET}
|
||||
{1111885200 7200 1 CEST}
|
||||
{1130634000 3600 0 CET}
|
||||
{1143334800 7200 1 CEST}
|
||||
{1162083600 3600 0 CET}
|
||||
{1174784400 7200 1 CEST}
|
||||
{1193533200 3600 0 CET}
|
||||
{1206838800 7200 1 CEST}
|
||||
{1224982800 3600 0 CET}
|
||||
{1238288400 7200 1 CEST}
|
||||
{1256432400 3600 0 CET}
|
||||
{1269738000 7200 1 CEST}
|
||||
{1288486800 3600 0 CET}
|
||||
{1301187600 7200 1 CEST}
|
||||
{1319936400 3600 0 CET}
|
||||
{1332637200 7200 1 CEST}
|
||||
{1351386000 3600 0 CET}
|
||||
{1364691600 7200 1 CEST}
|
||||
{1382835600 3600 0 CET}
|
||||
{1396141200 7200 1 CEST}
|
||||
{1414285200 3600 0 CET}
|
||||
{1427590800 7200 1 CEST}
|
||||
{1445734800 3600 0 CET}
|
||||
{1459040400 7200 1 CEST}
|
||||
{1477789200 3600 0 CET}
|
||||
{1490490000 7200 1 CEST}
|
||||
{1509238800 3600 0 CET}
|
||||
{1521939600 7200 1 CEST}
|
||||
{1540688400 3600 0 CET}
|
||||
{1553994000 7200 1 CEST}
|
||||
{1572138000 3600 0 CET}
|
||||
{1585443600 7200 1 CEST}
|
||||
{1603587600 3600 0 CET}
|
||||
{1616893200 7200 1 CEST}
|
||||
{1635642000 3600 0 CET}
|
||||
{1648342800 7200 1 CEST}
|
||||
{1667091600 3600 0 CET}
|
||||
{1679792400 7200 1 CEST}
|
||||
{1698541200 3600 0 CET}
|
||||
{1711846800 7200 1 CEST}
|
||||
{1729990800 3600 0 CET}
|
||||
{1743296400 7200 1 CEST}
|
||||
{1761440400 3600 0 CET}
|
||||
{1774746000 7200 1 CEST}
|
||||
{1792890000 3600 0 CET}
|
||||
{1806195600 7200 1 CEST}
|
||||
{1824944400 3600 0 CET}
|
||||
{1837645200 7200 1 CEST}
|
||||
{1856394000 3600 0 CET}
|
||||
{1869094800 7200 1 CEST}
|
||||
{1887843600 3600 0 CET}
|
||||
{1901149200 7200 1 CEST}
|
||||
{1919293200 3600 0 CET}
|
||||
{1932598800 7200 1 CEST}
|
||||
{1950742800 3600 0 CET}
|
||||
{1964048400 7200 1 CEST}
|
||||
{1982797200 3600 0 CET}
|
||||
{1995498000 7200 1 CEST}
|
||||
{2014246800 3600 0 CET}
|
||||
{2026947600 7200 1 CEST}
|
||||
{2045696400 3600 0 CET}
|
||||
{2058397200 7200 1 CEST}
|
||||
{2077146000 3600 0 CET}
|
||||
{2090451600 7200 1 CEST}
|
||||
{2108595600 3600 0 CET}
|
||||
{2121901200 7200 1 CEST}
|
||||
{2140045200 3600 0 CET}
|
||||
{2153350800 7200 1 CEST}
|
||||
{2172099600 3600 0 CET}
|
||||
{2184800400 7200 1 CEST}
|
||||
{2203549200 3600 0 CET}
|
||||
{2216250000 7200 1 CEST}
|
||||
{2234998800 3600 0 CET}
|
||||
{2248304400 7200 1 CEST}
|
||||
{2266448400 3600 0 CET}
|
||||
{2279754000 7200 1 CEST}
|
||||
{2297898000 3600 0 CET}
|
||||
{2311203600 7200 1 CEST}
|
||||
{2329347600 3600 0 CET}
|
||||
{2342653200 7200 1 CEST}
|
||||
{2361402000 3600 0 CET}
|
||||
{2374102800 7200 1 CEST}
|
||||
{2392851600 3600 0 CET}
|
||||
{2405552400 7200 1 CEST}
|
||||
{2424301200 3600 0 CET}
|
||||
{2437606800 7200 1 CEST}
|
||||
{2455750800 3600 0 CET}
|
||||
{2469056400 7200 1 CEST}
|
||||
{2487200400 3600 0 CET}
|
||||
{2500506000 7200 1 CEST}
|
||||
{2519254800 3600 0 CET}
|
||||
{2531955600 7200 1 CEST}
|
||||
{2550704400 3600 0 CET}
|
||||
{2563405200 7200 1 CEST}
|
||||
{2582154000 3600 0 CET}
|
||||
{2595459600 7200 1 CEST}
|
||||
{2613603600 3600 0 CET}
|
||||
{2626909200 7200 1 CEST}
|
||||
{2645053200 3600 0 CET}
|
||||
{2658358800 7200 1 CEST}
|
||||
{2676502800 3600 0 CET}
|
||||
{2689808400 7200 1 CEST}
|
||||
{2708557200 3600 0 CET}
|
||||
{2721258000 7200 1 CEST}
|
||||
{2740006800 3600 0 CET}
|
||||
{2752707600 7200 1 CEST}
|
||||
{2771456400 3600 0 CET}
|
||||
{2784762000 7200 1 CEST}
|
||||
{2802906000 3600 0 CET}
|
||||
{2816211600 7200 1 CEST}
|
||||
{2834355600 3600 0 CET}
|
||||
{2847661200 7200 1 CEST}
|
||||
{2866410000 3600 0 CET}
|
||||
{2879110800 7200 1 CEST}
|
||||
{2897859600 3600 0 CET}
|
||||
{2910560400 7200 1 CEST}
|
||||
{2929309200 3600 0 CET}
|
||||
{2942010000 7200 1 CEST}
|
||||
{2960758800 3600 0 CET}
|
||||
{2974064400 7200 1 CEST}
|
||||
{2992208400 3600 0 CET}
|
||||
{3005514000 7200 1 CEST}
|
||||
{3023658000 3600 0 CET}
|
||||
{3036963600 7200 1 CEST}
|
||||
{3055712400 3600 0 CET}
|
||||
{3068413200 7200 1 CEST}
|
||||
{3087162000 3600 0 CET}
|
||||
{3099862800 7200 1 CEST}
|
||||
{3118611600 3600 0 CET}
|
||||
{3131917200 7200 1 CEST}
|
||||
{3150061200 3600 0 CET}
|
||||
{3163366800 7200 1 CEST}
|
||||
{3181510800 3600 0 CET}
|
||||
{3194816400 7200 1 CEST}
|
||||
{3212960400 3600 0 CET}
|
||||
{3226266000 7200 1 CEST}
|
||||
{3245014800 3600 0 CET}
|
||||
{3257715600 7200 1 CEST}
|
||||
{3276464400 3600 0 CET}
|
||||
{3289165200 7200 1 CEST}
|
||||
{3307914000 3600 0 CET}
|
||||
{3321219600 7200 1 CEST}
|
||||
{3339363600 3600 0 CET}
|
||||
{3352669200 7200 1 CEST}
|
||||
{3370813200 3600 0 CET}
|
||||
{3384118800 7200 1 CEST}
|
||||
{3402867600 3600 0 CET}
|
||||
{3415568400 7200 1 CEST}
|
||||
{3434317200 3600 0 CET}
|
||||
{3447018000 7200 1 CEST}
|
||||
{3465766800 3600 0 CET}
|
||||
{3479072400 7200 1 CEST}
|
||||
{3497216400 3600 0 CET}
|
||||
{3510522000 7200 1 CEST}
|
||||
{3528666000 3600 0 CET}
|
||||
{3541971600 7200 1 CEST}
|
||||
{3560115600 3600 0 CET}
|
||||
{3573421200 7200 1 CEST}
|
||||
{3592170000 3600 0 CET}
|
||||
{3604870800 7200 1 CEST}
|
||||
{3623619600 3600 0 CET}
|
||||
{3636320400 7200 1 CEST}
|
||||
{3655069200 3600 0 CET}
|
||||
{3668374800 7200 1 CEST}
|
||||
{3686518800 3600 0 CET}
|
||||
{3699824400 7200 1 CEST}
|
||||
{3717968400 3600 0 CET}
|
||||
{3731274000 7200 1 CEST}
|
||||
{3750022800 3600 0 CET}
|
||||
{3762723600 7200 1 CEST}
|
||||
{3781472400 3600 0 CET}
|
||||
{3794173200 7200 1 CEST}
|
||||
{3812922000 3600 0 CET}
|
||||
{3825622800 7200 1 CEST}
|
||||
{3844371600 3600 0 CET}
|
||||
{3857677200 7200 1 CEST}
|
||||
{3875821200 3600 0 CET}
|
||||
{3889126800 7200 1 CEST}
|
||||
{3907270800 3600 0 CET}
|
||||
{3920576400 7200 1 CEST}
|
||||
{3939325200 3600 0 CET}
|
||||
{3952026000 7200 1 CEST}
|
||||
{3970774800 3600 0 CET}
|
||||
{3983475600 7200 1 CEST}
|
||||
{4002224400 3600 0 CET}
|
||||
{4015530000 7200 1 CEST}
|
||||
{4033674000 3600 0 CET}
|
||||
{4046979600 7200 1 CEST}
|
||||
{4065123600 3600 0 CET}
|
||||
{4078429200 7200 1 CEST}
|
||||
{4096573200 3600 0 CET}
|
||||
if {![info exists TZData(Europe/Zurich)]} {
|
||||
LoadTimeZoneFile Europe/Zurich
|
||||
}
|
||||
set TZData(:Europe/Vaduz) $TZData(:Europe/Zurich)
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
set TZData(:Europe/Zurich) {
|
||||
{-9223372036854775808 2048 0 LMT}
|
||||
{-3827954048 1784 0 BMT}
|
||||
{-2385246584 3600 0 CET}
|
||||
{-3675198848 1786 0 BMT}
|
||||
{-2385246586 3600 0 CET}
|
||||
{-904435200 7200 1 CEST}
|
||||
{-891129600 3600 0 CET}
|
||||
{-872985600 7200 1 CEST}
|
||||
|
||||
+39
-39
@@ -15,11 +15,11 @@ set TZData(:Pacific/Fiji) {
|
||||
{1327154400 43200 0 FJT}
|
||||
{1350741600 46800 1 FJST}
|
||||
{1358604000 43200 0 FJT}
|
||||
{1382191200 46800 1 FJST}
|
||||
{1382796000 46800 1 FJST}
|
||||
{1390053600 43200 0 FJT}
|
||||
{1413640800 46800 1 FJST}
|
||||
{1414245600 46800 1 FJST}
|
||||
{1421503200 43200 0 FJT}
|
||||
{1445090400 46800 1 FJST}
|
||||
{1445695200 46800 1 FJST}
|
||||
{1453557600 43200 0 FJT}
|
||||
{1477144800 46800 1 FJST}
|
||||
{1485007200 43200 0 FJT}
|
||||
@@ -27,9 +27,9 @@ set TZData(:Pacific/Fiji) {
|
||||
{1516456800 43200 0 FJT}
|
||||
{1540044000 46800 1 FJST}
|
||||
{1547906400 43200 0 FJT}
|
||||
{1571493600 46800 1 FJST}
|
||||
{1572098400 46800 1 FJST}
|
||||
{1579356000 43200 0 FJT}
|
||||
{1602943200 46800 1 FJST}
|
||||
{1603548000 46800 1 FJST}
|
||||
{1611410400 43200 0 FJT}
|
||||
{1634997600 46800 1 FJST}
|
||||
{1642860000 43200 0 FJT}
|
||||
@@ -37,11 +37,11 @@ set TZData(:Pacific/Fiji) {
|
||||
{1674309600 43200 0 FJT}
|
||||
{1697896800 46800 1 FJST}
|
||||
{1705759200 43200 0 FJT}
|
||||
{1729346400 46800 1 FJST}
|
||||
{1729951200 46800 1 FJST}
|
||||
{1737208800 43200 0 FJT}
|
||||
{1760796000 46800 1 FJST}
|
||||
{1761400800 46800 1 FJST}
|
||||
{1768658400 43200 0 FJT}
|
||||
{1792245600 46800 1 FJST}
|
||||
{1792850400 46800 1 FJST}
|
||||
{1800712800 43200 0 FJT}
|
||||
{1824300000 46800 1 FJST}
|
||||
{1832162400 43200 0 FJT}
|
||||
@@ -49,9 +49,9 @@ set TZData(:Pacific/Fiji) {
|
||||
{1863612000 43200 0 FJT}
|
||||
{1887199200 46800 1 FJST}
|
||||
{1895061600 43200 0 FJT}
|
||||
{1918648800 46800 1 FJST}
|
||||
{1919253600 46800 1 FJST}
|
||||
{1926511200 43200 0 FJT}
|
||||
{1950098400 46800 1 FJST}
|
||||
{1950703200 46800 1 FJST}
|
||||
{1957960800 43200 0 FJT}
|
||||
{1982152800 46800 1 FJST}
|
||||
{1990015200 43200 0 FJT}
|
||||
@@ -61,9 +61,9 @@ set TZData(:Pacific/Fiji) {
|
||||
{2052914400 43200 0 FJT}
|
||||
{2076501600 46800 1 FJST}
|
||||
{2084364000 43200 0 FJT}
|
||||
{2107951200 46800 1 FJST}
|
||||
{2108556000 46800 1 FJST}
|
||||
{2115813600 43200 0 FJT}
|
||||
{2139400800 46800 1 FJST}
|
||||
{2140005600 46800 1 FJST}
|
||||
{2147868000 43200 0 FJT}
|
||||
{2171455200 46800 1 FJST}
|
||||
{2179317600 43200 0 FJT}
|
||||
@@ -71,11 +71,11 @@ set TZData(:Pacific/Fiji) {
|
||||
{2210767200 43200 0 FJT}
|
||||
{2234354400 46800 1 FJST}
|
||||
{2242216800 43200 0 FJT}
|
||||
{2265804000 46800 1 FJST}
|
||||
{2266408800 46800 1 FJST}
|
||||
{2273666400 43200 0 FJT}
|
||||
{2297253600 46800 1 FJST}
|
||||
{2297858400 46800 1 FJST}
|
||||
{2305116000 43200 0 FJT}
|
||||
{2328703200 46800 1 FJST}
|
||||
{2329308000 46800 1 FJST}
|
||||
{2337170400 43200 0 FJT}
|
||||
{2360757600 46800 1 FJST}
|
||||
{2368620000 43200 0 FJT}
|
||||
@@ -83,9 +83,9 @@ set TZData(:Pacific/Fiji) {
|
||||
{2400069600 43200 0 FJT}
|
||||
{2423656800 46800 1 FJST}
|
||||
{2431519200 43200 0 FJT}
|
||||
{2455106400 46800 1 FJST}
|
||||
{2455711200 46800 1 FJST}
|
||||
{2462968800 43200 0 FJT}
|
||||
{2486556000 46800 1 FJST}
|
||||
{2487160800 46800 1 FJST}
|
||||
{2495023200 43200 0 FJT}
|
||||
{2518610400 46800 1 FJST}
|
||||
{2526472800 43200 0 FJT}
|
||||
@@ -93,11 +93,11 @@ set TZData(:Pacific/Fiji) {
|
||||
{2557922400 43200 0 FJT}
|
||||
{2581509600 46800 1 FJST}
|
||||
{2589372000 43200 0 FJT}
|
||||
{2612959200 46800 1 FJST}
|
||||
{2613564000 46800 1 FJST}
|
||||
{2620821600 43200 0 FJT}
|
||||
{2644408800 46800 1 FJST}
|
||||
{2645013600 46800 1 FJST}
|
||||
{2652271200 43200 0 FJT}
|
||||
{2675858400 46800 1 FJST}
|
||||
{2676463200 46800 1 FJST}
|
||||
{2684325600 43200 0 FJT}
|
||||
{2707912800 46800 1 FJST}
|
||||
{2715775200 43200 0 FJT}
|
||||
@@ -105,9 +105,9 @@ set TZData(:Pacific/Fiji) {
|
||||
{2747224800 43200 0 FJT}
|
||||
{2770812000 46800 1 FJST}
|
||||
{2778674400 43200 0 FJT}
|
||||
{2802261600 46800 1 FJST}
|
||||
{2802866400 46800 1 FJST}
|
||||
{2810124000 43200 0 FJT}
|
||||
{2833711200 46800 1 FJST}
|
||||
{2834316000 46800 1 FJST}
|
||||
{2841573600 43200 0 FJT}
|
||||
{2865765600 46800 1 FJST}
|
||||
{2873628000 43200 0 FJT}
|
||||
@@ -117,9 +117,9 @@ set TZData(:Pacific/Fiji) {
|
||||
{2936527200 43200 0 FJT}
|
||||
{2960114400 46800 1 FJST}
|
||||
{2967976800 43200 0 FJT}
|
||||
{2991564000 46800 1 FJST}
|
||||
{2992168800 46800 1 FJST}
|
||||
{2999426400 43200 0 FJT}
|
||||
{3023013600 46800 1 FJST}
|
||||
{3023618400 46800 1 FJST}
|
||||
{3031480800 43200 0 FJT}
|
||||
{3055068000 46800 1 FJST}
|
||||
{3062930400 43200 0 FJT}
|
||||
@@ -127,11 +127,11 @@ set TZData(:Pacific/Fiji) {
|
||||
{3094380000 43200 0 FJT}
|
||||
{3117967200 46800 1 FJST}
|
||||
{3125829600 43200 0 FJT}
|
||||
{3149416800 46800 1 FJST}
|
||||
{3150021600 46800 1 FJST}
|
||||
{3157279200 43200 0 FJT}
|
||||
{3180866400 46800 1 FJST}
|
||||
{3181471200 46800 1 FJST}
|
||||
{3188728800 43200 0 FJT}
|
||||
{3212316000 46800 1 FJST}
|
||||
{3212920800 46800 1 FJST}
|
||||
{3220783200 43200 0 FJT}
|
||||
{3244370400 46800 1 FJST}
|
||||
{3252232800 43200 0 FJT}
|
||||
@@ -139,9 +139,9 @@ set TZData(:Pacific/Fiji) {
|
||||
{3283682400 43200 0 FJT}
|
||||
{3307269600 46800 1 FJST}
|
||||
{3315132000 43200 0 FJT}
|
||||
{3338719200 46800 1 FJST}
|
||||
{3339324000 46800 1 FJST}
|
||||
{3346581600 43200 0 FJT}
|
||||
{3370168800 46800 1 FJST}
|
||||
{3370773600 46800 1 FJST}
|
||||
{3378636000 43200 0 FJT}
|
||||
{3402223200 46800 1 FJST}
|
||||
{3410085600 43200 0 FJT}
|
||||
@@ -149,11 +149,11 @@ set TZData(:Pacific/Fiji) {
|
||||
{3441535200 43200 0 FJT}
|
||||
{3465122400 46800 1 FJST}
|
||||
{3472984800 43200 0 FJT}
|
||||
{3496572000 46800 1 FJST}
|
||||
{3497176800 46800 1 FJST}
|
||||
{3504434400 43200 0 FJT}
|
||||
{3528021600 46800 1 FJST}
|
||||
{3528626400 46800 1 FJST}
|
||||
{3535884000 43200 0 FJT}
|
||||
{3559471200 46800 1 FJST}
|
||||
{3560076000 46800 1 FJST}
|
||||
{3567938400 43200 0 FJT}
|
||||
{3591525600 46800 1 FJST}
|
||||
{3599388000 43200 0 FJT}
|
||||
@@ -161,9 +161,9 @@ set TZData(:Pacific/Fiji) {
|
||||
{3630837600 43200 0 FJT}
|
||||
{3654424800 46800 1 FJST}
|
||||
{3662287200 43200 0 FJT}
|
||||
{3685874400 46800 1 FJST}
|
||||
{3686479200 46800 1 FJST}
|
||||
{3693736800 43200 0 FJT}
|
||||
{3717324000 46800 1 FJST}
|
||||
{3717928800 46800 1 FJST}
|
||||
{3725186400 43200 0 FJT}
|
||||
{3749378400 46800 1 FJST}
|
||||
{3757240800 43200 0 FJT}
|
||||
@@ -173,9 +173,9 @@ set TZData(:Pacific/Fiji) {
|
||||
{3820140000 43200 0 FJT}
|
||||
{3843727200 46800 1 FJST}
|
||||
{3851589600 43200 0 FJT}
|
||||
{3875176800 46800 1 FJST}
|
||||
{3875781600 46800 1 FJST}
|
||||
{3883039200 43200 0 FJT}
|
||||
{3906626400 46800 1 FJST}
|
||||
{3907231200 46800 1 FJST}
|
||||
{3915093600 43200 0 FJT}
|
||||
{3938680800 46800 1 FJST}
|
||||
{3946543200 43200 0 FJT}
|
||||
@@ -183,9 +183,9 @@ set TZData(:Pacific/Fiji) {
|
||||
{3977992800 43200 0 FJT}
|
||||
{4001580000 46800 1 FJST}
|
||||
{4009442400 43200 0 FJT}
|
||||
{4033029600 46800 1 FJST}
|
||||
{4033634400 46800 1 FJST}
|
||||
{4040892000 43200 0 FJT}
|
||||
{4064479200 46800 1 FJST}
|
||||
{4065084000 46800 1 FJST}
|
||||
{4072341600 43200 0 FJT}
|
||||
{4095928800 46800 1 FJST}
|
||||
{4096533600 46800 1 FJST}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# created by tools/tclZIC.tcl - do not edit
|
||||
|
||||
set TZData(:Pacific/Johnston) {
|
||||
{-9223372036854775808 -36000 0 HST}
|
||||
if {![info exists TZData(Pacific/Honolulu)]} {
|
||||
LoadTimeZoneFile Pacific/Honolulu
|
||||
}
|
||||
set TZData(:Pacific/Johnston) $TZData(:Pacific/Honolulu)
|
||||
|
||||
@@ -713,6 +713,70 @@ test compile-19.0 {Bug 3614102: reset stack housekeeping} -body {
|
||||
apply {{} {list [if 1]}}
|
||||
} -returnCodes error -match glob -result *
|
||||
|
||||
test compile-20.1 {ensure there are no infinite loops in optimizing} {
|
||||
tcl::unsupported::disassemble script {
|
||||
while 1 {
|
||||
return -code continue -level 0
|
||||
}
|
||||
}
|
||||
return
|
||||
} {}
|
||||
test compile-20.2 {ensure there are no infinite loops in optimizing} {
|
||||
tcl::unsupported::disassemble script {
|
||||
while 1 {
|
||||
while 1 {
|
||||
return -code break -level 0
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
} {}
|
||||
|
||||
test compile-21.1 {stack balance management} {
|
||||
apply {{} {
|
||||
set result {}
|
||||
while 1 {
|
||||
lappend result a
|
||||
lappend result [list b [break]]
|
||||
lappend result c
|
||||
}
|
||||
return $result
|
||||
}}
|
||||
} a
|
||||
test compile-21.2 {stack balance management} {
|
||||
apply {{} {
|
||||
set result {}
|
||||
while {[incr i] <= 10} {
|
||||
lappend result $i
|
||||
lappend result [list b [continue] c]
|
||||
lappend result c
|
||||
}
|
||||
return $result
|
||||
}}
|
||||
} {1 2 3 4 5 6 7 8 9 10}
|
||||
test compile-21.3 {stack balance management} {
|
||||
apply {args {
|
||||
set result {}
|
||||
while 1 {
|
||||
lappend result a
|
||||
lappend result [concat {*}$args [break]]
|
||||
lappend result c
|
||||
}
|
||||
return $result
|
||||
}} P Q R S T
|
||||
} a
|
||||
test compile-21.4 {stack balance management} {
|
||||
apply {args {
|
||||
set result {}
|
||||
while {[incr i] <= 10} {
|
||||
lappend result $i
|
||||
lappend result [concat {*}$args [continue] c]
|
||||
lappend result c
|
||||
}
|
||||
return $result
|
||||
}} P Q R S T
|
||||
} {1 2 3 4 5 6 7 8 9 10}
|
||||
|
||||
# TODO sometime - check that bytecode from tbcload is *not* disassembled.
|
||||
|
||||
# cleanup
|
||||
|
||||
@@ -291,6 +291,29 @@ test env-6.1 {corner cases - add lots of env variables} {} {
|
||||
expr {[array size env] - $size}
|
||||
} 100
|
||||
|
||||
test env-7.1 {[219226]: whole env array should not be unset by read} {
|
||||
set n [array size env]
|
||||
set s [array startsearch env]
|
||||
while {[array anymore env $s]} {
|
||||
array nextelement env $s
|
||||
incr n -1
|
||||
}
|
||||
array donesearch env $s
|
||||
return $n
|
||||
} 0
|
||||
test env-7.2 {[219226]: links to env elements should not be removed by read} {
|
||||
apply {{} {
|
||||
set ::env(test7_2) ok
|
||||
upvar env(test7_2) elem
|
||||
set ::env(PATH)
|
||||
try {
|
||||
return $elem
|
||||
} finally {
|
||||
unset ::env(test7_2)
|
||||
}
|
||||
}}
|
||||
} ok
|
||||
|
||||
# Restore the environment variables at the end of the test.
|
||||
|
||||
foreach name [array names env] {
|
||||
|
||||
+242
@@ -942,6 +942,248 @@ test for-7.8 {Bug 3614226: ensure that continue only cleans up the right amount}
|
||||
expr {$end - $tmp}
|
||||
}}
|
||||
} 0
|
||||
test for-7.9 {Bug 3614226: ensure that break from invoked command cleans up the stack} memory {
|
||||
apply {{} {
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
for {set x 0} {$x < 5} {incr x} {
|
||||
list a b c [apply {{} {return -code break}}] d e f
|
||||
}
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}}
|
||||
} 0
|
||||
test for-7.10 {Bug 3614226: ensure that continue from invoked command cleans up the stack} memory {
|
||||
apply {{} {
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
for {set x 0} {$x < 5} {incr x} {
|
||||
list a b c [apply {{} {return -code continue}}] d e f
|
||||
}
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}}
|
||||
} 0
|
||||
test for-7.11 {Bug 3614226: ensure that break from invoked command cleans up the expansion stack} memory {
|
||||
apply {{} {
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
for {set x 0} {[incr x]<50} {} {
|
||||
puts {*}[puts a b c {*}[apply {{} {return -code break}}] d e f]
|
||||
}
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}}
|
||||
} 0
|
||||
test for-7.12 {Bug 3614226: ensure that continue from invoked command cleans up the expansion stack} memory {
|
||||
apply {{} {
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
for {set x 0} {[incr x]<50} {} {
|
||||
puts {*}[puts a b c {*}[apply {{} {
|
||||
return -code continue
|
||||
}}] d e f]
|
||||
}
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}}
|
||||
} 0
|
||||
test for-7.13 {Bug 3614226: ensure that break from invoked command cleans up the combination of main and expansion stack} memory {
|
||||
apply {{} {
|
||||
set l [lrepeat 50 p q r]
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
for {set x 0} {[incr x]<50} {} {
|
||||
puts [puts {*}$l {*}[puts a b c {*}$l {*}[apply {{} {
|
||||
return -code break
|
||||
}}] d e f]]
|
||||
}
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}}
|
||||
} 0
|
||||
test for-7.14 {Bug 3614226: ensure that continue from invoked command cleans up the combination of main and expansion stack} memory {
|
||||
apply {{} {
|
||||
set l [lrepeat 50 p q r]
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
for {set x 0} {[incr x]<50} {} {
|
||||
puts [puts {*}$l {*}[puts a b c {*}$l {*}[apply {{} {
|
||||
return -code continue
|
||||
}}] d e f]]
|
||||
}
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}}
|
||||
} 0
|
||||
test for-7.15 {Bug 3614226: ensure that break from invoked command only cleans up the right amount} memory {
|
||||
apply {{} {
|
||||
set l [lrepeat 50 p q r]
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
unset -nocomplain {*}[for {set x 0} {[incr x]<50} {} {
|
||||
puts [puts {*}$l {*}[puts a b c {*}$l {*}[apply {{} {
|
||||
return -code break
|
||||
}}] d e f]]
|
||||
}]
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}}
|
||||
} 0
|
||||
test for-7.16 {Bug 3614226: ensure that continue from invoked command only cleans up the right amount} memory {
|
||||
apply {{} {
|
||||
set l [lrepeat 50 p q r]
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
unset -nocomplain {*}[for {set x 0} {[incr x]<50} {} {
|
||||
puts [puts {*}$l {*}[puts a b c {*}$l {*}[apply {{} {
|
||||
return -code continue
|
||||
}}] d e f]]
|
||||
}]
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}}
|
||||
} 0
|
||||
test for-7.17 {Bug 3614226: ensure that break from expanded command cleans up the stack} memory {
|
||||
apply {op {
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
for {set x 0} {$x < 5} {incr x} {
|
||||
list a b c [{*}$op] d e f
|
||||
}
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}} {return -level 0 -code break}
|
||||
} 0
|
||||
test for-7.18 {Bug 3614226: ensure that continue from expanded command cleans up the stack} memory {
|
||||
apply {op {
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
for {set x 0} {$x < 5} {incr x} {
|
||||
list a b c [{*}$op] d e f
|
||||
}
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}} {return -level 0 -code continue}
|
||||
} 0
|
||||
test for-7.19 {Bug 3614226: ensure that break from expanded command cleans up the expansion stack} memory {
|
||||
apply {op {
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
for {set x 0} {[incr x]<50} {} {
|
||||
puts {*}[puts a b c {*}[{*}$op] d e f]
|
||||
}
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}} {return -level 0 -code break}
|
||||
} 0
|
||||
test for-7.20 {Bug 3614226: ensure that continue from expanded command cleans up the expansion stack} memory {
|
||||
apply {op {
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
for {set x 0} {[incr x]<50} {} {
|
||||
puts {*}[puts a b c {*}[{*}$op] d e f]
|
||||
}
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}} {return -level 0 -code continue}
|
||||
} 0
|
||||
test for-7.21 {Bug 3614226: ensure that break from expanded command cleans up the combination of main and expansion stack} memory {
|
||||
apply {op {
|
||||
set l [lrepeat 50 p q r]
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
for {set x 0} {[incr x]<50} {} {
|
||||
puts [puts {*}$l {*}[puts a b c {*}$l {*}[{*}$op] d e f]]
|
||||
}
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}} {return -level 0 -code break}
|
||||
} 0
|
||||
test for-7.22 {Bug 3614226: ensure that continue from expanded command cleans up the combination of main and expansion stack} memory {
|
||||
apply {op {
|
||||
set l [lrepeat 50 p q r]
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
for {set x 0} {[incr x]<50} {} {
|
||||
puts [puts {*}$l {*}[puts a b c {*}$l {*}[{*}$op] d e f]]
|
||||
}
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}} {return -level 0 -code continue}
|
||||
} 0
|
||||
test for-7.23 {Bug 3614226: ensure that break from expanded command only cleans up the right amount} memory {
|
||||
apply {op {
|
||||
set l [lrepeat 50 p q r]
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
unset -nocomplain {*}[for {set x 0} {[incr x]<50} {} {
|
||||
puts [puts {*}$l {*}[puts a b c {*}$l {*}[{*}$op] d e f]]
|
||||
}]
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}} {return -level 0 -code break}
|
||||
} 0
|
||||
test for-7.24 {Bug 3614226: ensure that continue from expanded command only cleans up the right amount} memory {
|
||||
apply {op {
|
||||
set l [lrepeat 50 p q r]
|
||||
# Can't use [memtest]; must be careful when we change stack frames
|
||||
set end [meminfo]
|
||||
for {set i 0} {$i < 5} {incr i} {
|
||||
unset -nocomplain {*}[for {set x 0} {[incr x]<50} {} {
|
||||
puts [puts {*}$l {*}[puts a b c {*}$l {*}[{*}$op] d e f]]
|
||||
}]
|
||||
set tmp $end
|
||||
set end [meminfo]
|
||||
}
|
||||
expr {$end - $tmp}
|
||||
}} {return -level 0 -code continue}
|
||||
} 0
|
||||
|
||||
# cleanup
|
||||
::tcltest::cleanupTests
|
||||
|
||||
@@ -187,6 +187,16 @@ test source-3.5 {return with special code etc.} -setup {
|
||||
invoked from within
|
||||
"source $sourcefile"} {a b c}}
|
||||
|
||||
test source-4.1 {continuation line parsing} -setup {
|
||||
set sourcefile [makeFile [string map {CL \\\n} {
|
||||
format %s "[dict get [info frame 0] type]:CL[dict get [info frame 0] line]CL[dict get [info frame 0] line]CL[dict get [info frame 0] line]"
|
||||
}] source.file]
|
||||
} -body {
|
||||
source $sourcefile
|
||||
} -cleanup {
|
||||
removeFile source.file
|
||||
} -result {source: 3 4 5}
|
||||
|
||||
test source-6.1 {source is binary ok} -setup {
|
||||
# Note [makeFile] writes in the system encoding.
|
||||
# [source] defaults to reading in the system encoding.
|
||||
|
||||
+7
-1
@@ -2076,6 +2076,9 @@ alldist: dist
|
||||
# build of this HTML documentation that has already been placed online. As
|
||||
# such, this rule is not guaranteed to work well on all systems; it only needs
|
||||
# to function on those of the Tcl/Tk maintainers.
|
||||
#
|
||||
# Also note that the 8.6 tool build requires an installed 8.6 native Tcl
|
||||
# interpreter in order to be able to run.
|
||||
#--------------------------------------------------------------------------
|
||||
|
||||
html: ${NATIVE_TCLSH}
|
||||
@@ -2088,9 +2091,12 @@ html-tk: ${NATIVE_TCLSH}
|
||||
$(BUILD_HTML) --tk
|
||||
@EXTRA_BUILD_HTML@
|
||||
|
||||
# You'd better have these programs or you will have problems creating Makefile
|
||||
# from Makefile.in in the first place...
|
||||
HTML_VERSION = `basename $(TOP_DIR) | sed s/tcl//`
|
||||
BUILD_HTML = \
|
||||
@${NATIVE_TCLSH} $(TOOL_DIR)/tcltk-man2html.tcl \
|
||||
--htmldir="$(HTML_INSTALL_DIR)" \
|
||||
--useversion=$(HTML_VERSION) --htmldir="$(HTML_INSTALL_DIR)" \
|
||||
--srcdir=$(TOP_DIR)/.. $(BUILD_HTML_FLAGS)
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
|
||||
+4
-4
@@ -194,7 +194,7 @@ static Tcl_ThreadId notifierThread;
|
||||
|
||||
#ifdef TCL_THREADS
|
||||
static void NotifierThreadProc(ClientData clientData);
|
||||
#ifdef HAVE_PTHREAD_ATFORK
|
||||
#if defined(HAVE_PTHREAD_ATFORK) && !defined(__APPLE__)
|
||||
static int atForkInit = 0;
|
||||
static void AtForkPrepare(void);
|
||||
static void AtForkParent(void);
|
||||
@@ -290,7 +290,7 @@ Tcl_InitNotifier(void)
|
||||
*/
|
||||
|
||||
Tcl_MutexLock(¬ifierMutex);
|
||||
#ifdef HAVE_PTHREAD_ATFORK
|
||||
#if defined(HAVE_PTHREAD_ATFORK) && !defined(__APPLE__)
|
||||
/*
|
||||
* Install pthread_atfork handlers to reinitialize the notifier in the
|
||||
* child of a fork.
|
||||
@@ -304,7 +304,7 @@ Tcl_InitNotifier(void)
|
||||
}
|
||||
atForkInit = 1;
|
||||
}
|
||||
#endif
|
||||
#endif /* HAVE_PTHREAD_ATFORK */
|
||||
/*
|
||||
* Check if my process id changed, e.g. I was forked
|
||||
* In this case, restart the notifier thread and close the
|
||||
@@ -1313,7 +1313,7 @@ NotifierThreadProc(
|
||||
TclpThreadExit(0);
|
||||
}
|
||||
|
||||
#ifdef HAVE_PTHREAD_ATFORK
|
||||
#if defined(HAVE_PTHREAD_ATFORK) && !defined(__APPLE__)
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
|
||||
+2
-2
@@ -566,8 +566,8 @@ TestforkObjCmd(
|
||||
"Cannot fork", NULL);
|
||||
return TCL_ERROR;
|
||||
}
|
||||
#if !defined(HAVE_PTHREAD_ATFORK) || defined(MAC_OSX_TCL)
|
||||
/* Only needed when pthread_atfork is not present or on OSX. */
|
||||
#if !defined(HAVE_PTHREAD_ATFORK)
|
||||
/* Only needed when pthread_atfork is not present. */
|
||||
if (pid==0) {
|
||||
Tcl_InitNotifier();
|
||||
}
|
||||
|
||||
+1
-1
@@ -433,7 +433,7 @@ $(CAT32): cat32.$(OBJEXT)
|
||||
|
||||
${TCL_STUB_LIB_FILE}: ${STUB_OBJS}
|
||||
@$(RM) ${TCL_STUB_LIB_FILE}
|
||||
@MAKE_LIB@ ${STUB_OBJS}
|
||||
@MAKE_STUB_LIB@ ${STUB_OBJS}
|
||||
@POST_MAKE_LIB@
|
||||
|
||||
${TCL_DLL_FILE}: ${TCL_OBJS} tcl.$(RES) @ZLIB_DLL_FILE@
|
||||
|
||||
Vendored
+9
-7
@@ -309,7 +309,7 @@ ac_includes_default="\
|
||||
# include <unistd.h>
|
||||
#endif"
|
||||
|
||||
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP AR ac_ct_AR RANLIB ac_ct_RANLIB RC ac_ct_RC SET_MAKE TCL_THREADS CYGPATH CELIB_DIR DL_LIBS CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING ZLIB_DLL_FILE ZLIB_LIBS ZLIB_OBJS CFLAGS_DEFAULT LDFLAGS_DEFAULT VC_MANIFEST_EMBED_DLL VC_MANIFEST_EMBED_EXE TCL_VERSION TCL_MAJOR_VERSION TCL_MINOR_VERSION TCL_PATCH_LEVEL PKG_CFG_ARGS TCL_EXE TCL_LIB_FILE TCL_LIB_FLAG TCL_STATIC_LIB_FILE TCL_STATIC_LIB_FLAG TCL_IMPORT_LIB_FILE TCL_IMPORT_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCL_STUB_LIB_PATH TCL_INCLUDE_SPEC TCL_BUILD_STUB_LIB_SPEC TCL_BUILD_STUB_LIB_PATH TCL_DLL_FILE TCL_SRC_DIR TCL_BIN_DIR TCL_DBGX CFG_TCL_SHARED_LIB_SUFFIX CFG_TCL_UNSHARED_LIB_SUFFIX CFG_TCL_EXPORT_FILE_SUFFIX EXTRA_CFLAGS DEPARG CC_OBJNAME CC_EXENAME LDFLAGS_DEBUG LDFLAGS_OPTIMIZE LDFLAGS_CONSOLE LDFLAGS_WINDOW STLIB_LD SHLIB_LD SHLIB_LD_LIBS SHLIB_CFLAGS SHLIB_SUFFIX TCL_SHARED_BUILD LIBS_GUI DLLSUFFIX LIBPREFIX LIBSUFFIX EXESUFFIX LIBRARIES MAKE_LIB POST_MAKE_LIB MAKE_DLL MAKE_EXE TCL_BUILD_LIB_SPEC TCL_LD_SEARCH_FLAGS TCL_NEEDS_EXP_FILE TCL_BUILD_EXP_FILE TCL_EXP_FILE TCL_LIB_VERSIONS_OK TCL_PACKAGE_PATH TCL_DDE_VERSION TCL_DDE_MAJOR_VERSION TCL_DDE_MINOR_VERSION TCL_REG_VERSION TCL_REG_MAJOR_VERSION TCL_REG_MINOR_VERSION RC_OUT RC_TYPE RC_INCLUDE RC_DEFINE RC_DEFINES RES LIBOBJS LTLIBOBJS'
|
||||
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP AR ac_ct_AR RANLIB ac_ct_RANLIB RC ac_ct_RC SET_MAKE TCL_THREADS CYGPATH CELIB_DIR DL_LIBS CFLAGS_DEBUG CFLAGS_OPTIMIZE CFLAGS_WARNING ZLIB_DLL_FILE ZLIB_LIBS ZLIB_OBJS CFLAGS_DEFAULT LDFLAGS_DEFAULT VC_MANIFEST_EMBED_DLL VC_MANIFEST_EMBED_EXE TCL_VERSION TCL_MAJOR_VERSION TCL_MINOR_VERSION TCL_PATCH_LEVEL PKG_CFG_ARGS TCL_EXE TCL_LIB_FILE TCL_LIB_FLAG TCL_STATIC_LIB_FILE TCL_STATIC_LIB_FLAG TCL_IMPORT_LIB_FILE TCL_IMPORT_LIB_FLAG TCL_LIB_SPEC TCL_STUB_LIB_FILE TCL_STUB_LIB_FLAG TCL_STUB_LIB_SPEC TCL_STUB_LIB_PATH TCL_INCLUDE_SPEC TCL_BUILD_STUB_LIB_SPEC TCL_BUILD_STUB_LIB_PATH TCL_DLL_FILE TCL_SRC_DIR TCL_BIN_DIR TCL_DBGX CFG_TCL_SHARED_LIB_SUFFIX CFG_TCL_UNSHARED_LIB_SUFFIX CFG_TCL_EXPORT_FILE_SUFFIX EXTRA_CFLAGS DEPARG CC_OBJNAME CC_EXENAME LDFLAGS_DEBUG LDFLAGS_OPTIMIZE LDFLAGS_CONSOLE LDFLAGS_WINDOW STLIB_LD SHLIB_LD SHLIB_LD_LIBS SHLIB_CFLAGS SHLIB_SUFFIX TCL_SHARED_BUILD LIBS_GUI DLLSUFFIX LIBPREFIX LIBSUFFIX EXESUFFIX LIBRARIES MAKE_LIB MAKE_STUB_LIB POST_MAKE_LIB MAKE_DLL MAKE_EXE TCL_BUILD_LIB_SPEC TCL_LD_SEARCH_FLAGS TCL_NEEDS_EXP_FILE TCL_BUILD_EXP_FILE TCL_EXP_FILE TCL_LIB_VERSIONS_OK TCL_PACKAGE_PATH TCL_DDE_VERSION TCL_DDE_MAJOR_VERSION TCL_DDE_MINOR_VERSION TCL_REG_VERSION TCL_REG_MAJOR_VERSION TCL_REG_MINOR_VERSION RC_OUT RC_TYPE RC_INCLUDE RC_DEFINE RC_DEFINES RES LIBOBJS LTLIBOBJS'
|
||||
ac_subst_files=''
|
||||
|
||||
# Initialize some variables set by options.
|
||||
@@ -3449,6 +3449,8 @@ echo "${ECHO_T}yes" >&6
|
||||
# set various compiler flags depending on whether we are using gcc or cl
|
||||
|
||||
if test "${GCC}" = "yes" ; then
|
||||
extra_cflags="-pipe"
|
||||
extra_ldflags="-pipe -static-libgcc"
|
||||
echo "$as_me:$LINENO: checking for mingw32 version of gcc" >&5
|
||||
echo $ECHO_N "checking for mingw32 version of gcc... $ECHO_C" >&6
|
||||
if test "${ac_cv_win32+set}" = set; then
|
||||
@@ -3595,13 +3597,11 @@ echo $ECHO_N "checking compiler flags... $ECHO_C" >&6
|
||||
RC_DEFINE=--define
|
||||
RES=res.o
|
||||
MAKE_LIB="\${STLIB_LD} \$@"
|
||||
MAKE_STUB_LIB="\${STLIB_LD} \$@"
|
||||
POST_MAKE_LIB="\${RANLIB} \$@"
|
||||
MAKE_EXE="\${CC} -o \$@"
|
||||
LIBPREFIX="lib"
|
||||
|
||||
extra_cflags="$extra_cflags -pipe"
|
||||
extra_ldflags="$extra_ldflags -pipe"
|
||||
|
||||
if test "${SHARED_BUILD}" = "0" ; then
|
||||
# static
|
||||
echo "$as_me:$LINENO: result: using static flags" >&5
|
||||
@@ -3630,9 +3630,8 @@ echo "$as_me: error: ${CC} does not support the -shared option.
|
||||
LIBRARIES="\${SHARED_LIBRARIES}"
|
||||
fi
|
||||
# Link with gcc since ld does not link to default libs like
|
||||
# -luser32 and -lmsvcrt by default. Make sure CFLAGS is
|
||||
# included so -mno-cygwin passed the correct libs to the linker.
|
||||
SHLIB_LD='${CC} -shared ${CFLAGS}'
|
||||
# -luser32 and -lmsvcrt by default.
|
||||
SHLIB_LD='${CC} -shared'
|
||||
SHLIB_LD_LIBS='${LIBS}'
|
||||
MAKE_DLL="\${SHLIB_LD} \$(LDFLAGS) -o \$@ ${extra_ldflags} \
|
||||
-Wl,--out-implib,\$(patsubst %.dll,lib%.a,\$@)"
|
||||
@@ -4004,6 +4003,7 @@ _ACEOF
|
||||
RC_DEFINE=-d
|
||||
RES=res
|
||||
MAKE_LIB="\${STLIB_LD} -out:\$@"
|
||||
MAKE_STUB_LIB="\${STLIB_LD} -nodefaultlib -out:\$@"
|
||||
POST_MAKE_LIB=
|
||||
MAKE_EXE="\${CC} -Fe\$@"
|
||||
LIBPREFIX=""
|
||||
@@ -5233,6 +5233,7 @@ fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# empty on win, but needs sub'ing
|
||||
@@ -5976,6 +5977,7 @@ s,@LIBSUFFIX@,$LIBSUFFIX,;t t
|
||||
s,@EXESUFFIX@,$EXESUFFIX,;t t
|
||||
s,@LIBRARIES@,$LIBRARIES,;t t
|
||||
s,@MAKE_LIB@,$MAKE_LIB,;t t
|
||||
s,@MAKE_STUB_LIB@,$MAKE_STUB_LIB,;t t
|
||||
s,@POST_MAKE_LIB@,$POST_MAKE_LIB,;t t
|
||||
s,@MAKE_DLL@,$MAKE_DLL,;t t
|
||||
s,@MAKE_EXE@,$MAKE_EXE,;t t
|
||||
|
||||
@@ -413,6 +413,7 @@ AC_SUBST(LIBSUFFIX)
|
||||
AC_SUBST(EXESUFFIX)
|
||||
AC_SUBST(LIBRARIES)
|
||||
AC_SUBST(MAKE_LIB)
|
||||
AC_SUBST(MAKE_STUB_LIB)
|
||||
AC_SUBST(POST_MAKE_LIB)
|
||||
AC_SUBST(MAKE_DLL)
|
||||
AC_SUBST(MAKE_EXE)
|
||||
|
||||
+1
-1
@@ -622,7 +622,7 @@ $**
|
||||
!endif
|
||||
|
||||
$(TCLSTUBLIB): $(TCLSTUBOBJS)
|
||||
$(lib32) -nologo $(LINKERFLAGS) -out:$@ $(TCLSTUBOBJS)
|
||||
$(lib32) -nologo $(LINKERFLAGS) -nodefaultlib -out:$@ $(TCLSTUBOBJS)
|
||||
|
||||
$(TCLSH): $(TCLSHOBJS) $(TCLSTUBLIB) $(TCLIMPLIB)
|
||||
$(link32) $(conlflags) -stack:2300000 -out:$@ $(baselibs) $**
|
||||
|
||||
+7
-6
@@ -523,6 +523,7 @@ AC_DEFUN([SC_ENABLE_SYMBOLS], [
|
||||
# RES
|
||||
#
|
||||
# MAKE_LIB
|
||||
# MAKE_STUB_LIB
|
||||
# MAKE_EXE
|
||||
# MAKE_DLL
|
||||
#
|
||||
@@ -633,6 +634,8 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [
|
||||
# set various compiler flags depending on whether we are using gcc or cl
|
||||
|
||||
if test "${GCC}" = "yes" ; then
|
||||
extra_cflags="-pipe"
|
||||
extra_ldflags="-pipe -static-libgcc"
|
||||
AC_CACHE_CHECK(for mingw32 version of gcc,
|
||||
ac_cv_win32,
|
||||
AC_TRY_COMPILE([
|
||||
@@ -680,13 +683,11 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [
|
||||
RC_DEFINE=--define
|
||||
RES=res.o
|
||||
MAKE_LIB="\${STLIB_LD} \[$]@"
|
||||
MAKE_STUB_LIB="\${STLIB_LD} \[$]@"
|
||||
POST_MAKE_LIB="\${RANLIB} \[$]@"
|
||||
MAKE_EXE="\${CC} -o \[$]@"
|
||||
LIBPREFIX="lib"
|
||||
|
||||
extra_cflags="$extra_cflags -pipe"
|
||||
extra_ldflags="$extra_ldflags -pipe"
|
||||
|
||||
if test "${SHARED_BUILD}" = "0" ; then
|
||||
# static
|
||||
AC_MSG_RESULT([using static flags])
|
||||
@@ -710,9 +711,8 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [
|
||||
LIBRARIES="\${SHARED_LIBRARIES}"
|
||||
fi
|
||||
# Link with gcc since ld does not link to default libs like
|
||||
# -luser32 and -lmsvcrt by default. Make sure CFLAGS is
|
||||
# included so -mno-cygwin passed the correct libs to the linker.
|
||||
SHLIB_LD='${CC} -shared ${CFLAGS}'
|
||||
# -luser32 and -lmsvcrt by default.
|
||||
SHLIB_LD='${CC} -shared'
|
||||
SHLIB_LD_LIBS='${LIBS}'
|
||||
MAKE_DLL="\${SHLIB_LD} \$(LDFLAGS) -o \[$]@ ${extra_ldflags} \
|
||||
-Wl,--out-implib,\$(patsubst %.dll,lib%.a,\[$]@)"
|
||||
@@ -961,6 +961,7 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [
|
||||
RC_DEFINE=-d
|
||||
RES=res
|
||||
MAKE_LIB="\${STLIB_LD} -out:\[$]@"
|
||||
MAKE_STUB_LIB="\${STLIB_LD} -nodefaultlib -out:\[$]@"
|
||||
POST_MAKE_LIB=
|
||||
MAKE_EXE="\${CC} -Fe\[$]@"
|
||||
LIBPREFIX=""
|
||||
|
||||
@@ -34,6 +34,7 @@ extern Tcl_PackageInitProc Dde_SafeInit;
|
||||
#endif
|
||||
|
||||
#ifdef TCL_BROKEN_MAINARGS
|
||||
int _CRT_glob = 0;
|
||||
static void setargv(int *argcPtr, TCHAR ***argvPtr);
|
||||
#endif /* TCL_BROKEN_MAINARGS */
|
||||
|
||||
|
||||
+6
-23
@@ -25,23 +25,6 @@
|
||||
static HINSTANCE hInstance; /* HINSTANCE of this DLL. */
|
||||
static int platformId; /* Running under NT, or 95/98? */
|
||||
|
||||
#ifdef HAVE_NO_SEH
|
||||
/*
|
||||
* Unlike Borland and Microsoft, we don't register exception handlers by
|
||||
* pushing registration records onto the runtime stack. Instead, we register
|
||||
* them by creating an EXCEPTION_REGISTRATION within the activation record.
|
||||
*/
|
||||
|
||||
typedef struct EXCEPTION_REGISTRATION {
|
||||
struct EXCEPTION_REGISTRATION *link;
|
||||
EXCEPTION_DISPOSITION (*handler)(
|
||||
struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*);
|
||||
void *ebp;
|
||||
void *esp;
|
||||
int status;
|
||||
} EXCEPTION_REGISTRATION;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* VC++ 5.x has no 'cpuid' assembler instruction, so we must emulate it
|
||||
*/
|
||||
@@ -662,7 +645,7 @@ TclWinCPUID(
|
||||
|
||||
# else
|
||||
|
||||
EXCEPTION_REGISTRATION registration;
|
||||
TCLEXCEPTION_REGISTRATION registration;
|
||||
|
||||
/*
|
||||
* Execute the CPUID instruction with the given index, and store results
|
||||
@@ -671,7 +654,7 @@ TclWinCPUID(
|
||||
|
||||
__asm__ __volatile__(
|
||||
/*
|
||||
* Construct an EXCEPTION_REGISTRATION to protect the CPUID
|
||||
* Construct an TCLEXCEPTION_REGISTRATION to protect the CPUID
|
||||
* instruction (early 486's don't have CPUID)
|
||||
*/
|
||||
|
||||
@@ -685,7 +668,7 @@ TclWinCPUID(
|
||||
"movl %[error], 0x10(%%edx)" "\n\t" /* status */
|
||||
|
||||
/*
|
||||
* Link the EXCEPTION_REGISTRATION on the chain
|
||||
* Link the TCLEXCEPTION_REGISTRATION on the chain
|
||||
*/
|
||||
|
||||
"movl %%edx, %%fs:0" "\n\t"
|
||||
@@ -704,7 +687,7 @@ TclWinCPUID(
|
||||
"movl %%edx, 0xc(%%edi)" "\n\t"
|
||||
|
||||
/*
|
||||
* Come here on a normal exit. Recover the EXCEPTION_REGISTRATION and
|
||||
* Come here on a normal exit. Recover the TCLEXCEPTION_REGISTRATION and
|
||||
* store a TCL_OK status.
|
||||
*/
|
||||
|
||||
@@ -714,7 +697,7 @@ TclWinCPUID(
|
||||
"jmp 2f" "\n"
|
||||
|
||||
/*
|
||||
* Come here on an exception. Get the EXCEPTION_REGISTRATION that we
|
||||
* Come here on an exception. Get the TCLEXCEPTION_REGISTRATION that we
|
||||
* previously put on the chain.
|
||||
*/
|
||||
|
||||
@@ -724,7 +707,7 @@ TclWinCPUID(
|
||||
|
||||
/*
|
||||
* Come here however we exited. Restore context from the
|
||||
* EXCEPTION_REGISTRATION in case the stack is unbalanced.
|
||||
* TCLEXCEPTION_REGISTRATION in case the stack is unbalanced.
|
||||
*/
|
||||
|
||||
"2:" "\t"
|
||||
|
||||
+6
-23
@@ -119,23 +119,6 @@ static const Tcl_ChannelType fileChannelType = {
|
||||
FileThreadActionProc, /* Thread action proc. */
|
||||
FileTruncateProc /* Truncate proc. */
|
||||
};
|
||||
|
||||
#ifdef HAVE_NO_SEH
|
||||
/*
|
||||
* Unlike Borland and Microsoft, we don't register exception handlers by
|
||||
* pushing registration records onto the runtime stack. Instead, we register
|
||||
* them by creating an EXCEPTION_REGISTRATION within the activation record.
|
||||
*/
|
||||
|
||||
typedef struct EXCEPTION_REGISTRATION {
|
||||
struct EXCEPTION_REGISTRATION *link;
|
||||
EXCEPTION_DISPOSITION (*handler)(
|
||||
struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*);
|
||||
void *ebp;
|
||||
void *esp;
|
||||
int status;
|
||||
} EXCEPTION_REGISTRATION;
|
||||
#endif
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
@@ -1030,7 +1013,7 @@ Tcl_MakeFileChannel(
|
||||
* TCL_WRITABLE to indicate file mode. */
|
||||
{
|
||||
#if defined(HAVE_NO_SEH) && !defined(_WIN64)
|
||||
EXCEPTION_REGISTRATION registration;
|
||||
TCLEXCEPTION_REGISTRATION registration;
|
||||
#endif
|
||||
char channelName[16 + TCL_INTEGER_SPACE];
|
||||
Tcl_Channel channel = NULL;
|
||||
@@ -1111,7 +1094,7 @@ Tcl_MakeFileChannel(
|
||||
"movl %[dupedHandle], %%ebx" "\n\t"
|
||||
|
||||
/*
|
||||
* Construct an EXCEPTION_REGISTRATION to protect the call to
|
||||
* Construct an TCLEXCEPTION_REGISTRATION to protect the call to
|
||||
* CloseHandle.
|
||||
*/
|
||||
|
||||
@@ -1125,7 +1108,7 @@ Tcl_MakeFileChannel(
|
||||
"movl $0, 0x10(%%edx)" "\n\t" /* status */
|
||||
|
||||
/*
|
||||
* Link the EXCEPTION_REGISTRATION on the chain.
|
||||
* Link the TCLEXCEPTION_REGISTRATION on the chain.
|
||||
*/
|
||||
|
||||
"movl %%edx, %%fs:0" "\n\t"
|
||||
@@ -1138,7 +1121,7 @@ Tcl_MakeFileChannel(
|
||||
"call _CloseHandle@4" "\n\t"
|
||||
|
||||
/*
|
||||
* Come here on normal exit. Recover the EXCEPTION_REGISTRATION
|
||||
* Come here on normal exit. Recover the TCLEXCEPTION_REGISTRATION
|
||||
* and put a TRUE status return into it.
|
||||
*/
|
||||
|
||||
@@ -1148,7 +1131,7 @@ Tcl_MakeFileChannel(
|
||||
"jmp 2f" "\n"
|
||||
|
||||
/*
|
||||
* Come here on an exception. Recover the EXCEPTION_REGISTRATION
|
||||
* Come here on an exception. Recover the TCLEXCEPTION_REGISTRATION
|
||||
*/
|
||||
|
||||
"1:" "\t"
|
||||
@@ -1157,7 +1140,7 @@ Tcl_MakeFileChannel(
|
||||
|
||||
/*
|
||||
* Come here however we exited. Restore context from the
|
||||
* EXCEPTION_REGISTRATION in case the stack is unbalanced.
|
||||
* TCLEXCEPTION_REGISTRATION in case the stack is unbalanced.
|
||||
*/
|
||||
|
||||
"2:" "\t"
|
||||
|
||||
+12
-31
@@ -67,25 +67,6 @@ const TclFileAttrProcs tclpFileAttrProcs[] = {
|
||||
{GetWinFileShortName, CannotSetAttribute},
|
||||
{GetWinFileAttributes, SetWinFileAttributes}};
|
||||
|
||||
#ifdef HAVE_NO_SEH
|
||||
|
||||
/*
|
||||
* Unlike Borland and Microsoft, we don't register exception handlers by
|
||||
* pushing registration records onto the runtime stack. Instead, we register
|
||||
* them by creating an EXCEPTION_REGISTRATION within the activation record.
|
||||
*/
|
||||
|
||||
typedef struct EXCEPTION_REGISTRATION {
|
||||
struct EXCEPTION_REGISTRATION *link;
|
||||
EXCEPTION_DISPOSITION (*handler)(
|
||||
struct _EXCEPTION_RECORD *, void *, struct _CONTEXT *, void *);
|
||||
void *ebp;
|
||||
void *esp;
|
||||
int status;
|
||||
} EXCEPTION_REGISTRATION;
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Prototype for the TraverseWinTree callback function.
|
||||
*/
|
||||
@@ -176,7 +157,7 @@ DoRenameFile(
|
||||
* (native). */
|
||||
{
|
||||
#if defined(HAVE_NO_SEH) && !defined(_WIN64)
|
||||
EXCEPTION_REGISTRATION registration;
|
||||
TCLEXCEPTION_REGISTRATION registration;
|
||||
#endif
|
||||
DWORD srcAttr, dstAttr;
|
||||
int retval = -1;
|
||||
@@ -213,7 +194,7 @@ DoRenameFile(
|
||||
"movl %[nativeSrc], %%ecx" "\n\t"
|
||||
|
||||
/*
|
||||
* Construct an EXCEPTION_REGISTRATION to protect the call to
|
||||
* Construct an TCLEXCEPTION_REGISTRATION to protect the call to
|
||||
* MoveFile.
|
||||
*/
|
||||
|
||||
@@ -227,7 +208,7 @@ DoRenameFile(
|
||||
"movl $0, 0x10(%%edx)" "\n\t" /* status */
|
||||
|
||||
/*
|
||||
* Link the EXCEPTION_REGISTRATION on the chain.
|
||||
* Link the TCLEXCEPTION_REGISTRATION on the chain.
|
||||
*/
|
||||
|
||||
"movl %%edx, %%fs:0" "\n\t"
|
||||
@@ -242,7 +223,7 @@ DoRenameFile(
|
||||
"call *%%eax" "\n\t"
|
||||
|
||||
/*
|
||||
* Come here on normal exit. Recover the EXCEPTION_REGISTRATION and
|
||||
* Come here on normal exit. Recover the TCLEXCEPTION_REGISTRATION and
|
||||
* put the status return from MoveFile into it.
|
||||
*/
|
||||
|
||||
@@ -251,7 +232,7 @@ DoRenameFile(
|
||||
"jmp 2f" "\n"
|
||||
|
||||
/*
|
||||
* Come here on an exception. Recover the EXCEPTION_REGISTRATION
|
||||
* Come here on an exception. Recover the TCLEXCEPTION_REGISTRATION
|
||||
*/
|
||||
|
||||
"1:" "\t"
|
||||
@@ -260,7 +241,7 @@ DoRenameFile(
|
||||
|
||||
/*
|
||||
* Come here however we exited. Restore context from the
|
||||
* EXCEPTION_REGISTRATION in case the stack is unbalanced.
|
||||
* TCLEXCEPTION_REGISTRATION in case the stack is unbalanced.
|
||||
*/
|
||||
|
||||
"2:" "\t"
|
||||
@@ -563,7 +544,7 @@ DoCopyFile(
|
||||
const TCHAR *nativeDst) /* Pathname of file to copy to (native). */
|
||||
{
|
||||
#if defined(HAVE_NO_SEH) && !defined(_WIN64)
|
||||
EXCEPTION_REGISTRATION registration;
|
||||
TCLEXCEPTION_REGISTRATION registration;
|
||||
#endif
|
||||
int retval = -1;
|
||||
|
||||
@@ -600,7 +581,7 @@ DoCopyFile(
|
||||
"movl %[nativeSrc], %%ecx" "\n\t"
|
||||
|
||||
/*
|
||||
* Construct an EXCEPTION_REGISTRATION to protect the call to
|
||||
* Construct an TCLEXCEPTION_REGISTRATION to protect the call to
|
||||
* CopyFile.
|
||||
*/
|
||||
|
||||
@@ -614,7 +595,7 @@ DoCopyFile(
|
||||
"movl $0, 0x10(%%edx)" "\n\t" /* status */
|
||||
|
||||
/*
|
||||
* Link the EXCEPTION_REGISTRATION on the chain.
|
||||
* Link the TCLEXCEPTION_REGISTRATION on the chain.
|
||||
*/
|
||||
|
||||
"movl %%edx, %%fs:0" "\n\t"
|
||||
@@ -630,7 +611,7 @@ DoCopyFile(
|
||||
"call *%%eax" "\n\t"
|
||||
|
||||
/*
|
||||
* Come here on normal exit. Recover the EXCEPTION_REGISTRATION and
|
||||
* Come here on normal exit. Recover the TCLEXCEPTION_REGISTRATION and
|
||||
* put the status return from CopyFile into it.
|
||||
*/
|
||||
|
||||
@@ -639,7 +620,7 @@ DoCopyFile(
|
||||
"jmp 2f" "\n"
|
||||
|
||||
/*
|
||||
* Come here on an exception. Recover the EXCEPTION_REGISTRATION
|
||||
* Come here on an exception. Recover the TCLEXCEPTION_REGISTRATION
|
||||
*/
|
||||
|
||||
"1:" "\t"
|
||||
@@ -648,7 +629,7 @@ DoCopyFile(
|
||||
|
||||
/*
|
||||
* Come here however we exited. Restore context from the
|
||||
* EXCEPTION_REGISTRATION in case the stack is unbalanced.
|
||||
* TCLEXCEPTION_REGISTRATION in case the stack is unbalanced.
|
||||
*/
|
||||
|
||||
"2:" "\t"
|
||||
|
||||
@@ -14,6 +14,23 @@
|
||||
|
||||
#include "tclInt.h"
|
||||
|
||||
#ifdef HAVE_NO_SEH
|
||||
/*
|
||||
* Unlike Borland and Microsoft, we don't register exception handlers by
|
||||
* pushing registration records onto the runtime stack. Instead, we register
|
||||
* them by creating an TCLEXCEPTION_REGISTRATION within the activation record.
|
||||
*/
|
||||
|
||||
typedef struct TCLEXCEPTION_REGISTRATION {
|
||||
struct TCLEXCEPTION_REGISTRATION *link;
|
||||
EXCEPTION_DISPOSITION (*handler)(
|
||||
struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*);
|
||||
void *ebp;
|
||||
void *esp;
|
||||
int status;
|
||||
} TCLEXCEPTION_REGISTRATION;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Some versions of Borland C have a define for the OSVERSIONINFO for
|
||||
* Win32s and for NT, but not for Windows 95.
|
||||
|
||||
Reference in New Issue
Block a user