diff options
Diffstat (limited to 'library')
302 files changed, 8695 insertions, 10023 deletions
diff --git a/library/auto.tcl b/library/auto.tcl index 881e6b9..02edcc4 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -1,49 +1,48 @@ # auto.tcl -- # -# utility procs formerly in init.tcl dealing with auto execution -# of commands and can be auto loaded themselves. -# -# RCS: @(#) $Id: auto.tcl,v 1.28 2006/11/03 00:34:52 hobbs Exp $ +# utility procs formerly in init.tcl dealing with auto execution of commands +# and can be auto loaded themselves. # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. # -# See the file "license.terms" for information on usage and redistribution -# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. # # auto_reset -- # -# Destroy all cached information for auto-loading and auto-execution, -# so that the information gets recomputed the next time it's needed. -# Also delete any commands that are listed in the auto-load index. +# Destroy all cached information for auto-loading and auto-execution, so that +# the information gets recomputed the next time it's needed. Also delete any +# commands that are listed in the auto-load index. # -# Arguments: +# Arguments: # None. proc auto_reset {} { - if {[array exists ::auto_index]} { - foreach cmdName [array names ::auto_index] { + global auto_execs auto_index auto_path + if {[array exists auto_index]} { + foreach cmdName [array names auto_index] { set fqcn [namespace which $cmdName] - if {$fqcn eq ""} {continue} + if {$fqcn eq ""} { + continue + } rename $fqcn {} } } - unset -nocomplain ::auto_execs ::auto_index ::tcl::auto_oldpath - if {[catch {llength $::auto_path}]} { - set ::auto_path [list [info library]] - } else { - if {[info library] ni $::auto_path} { - lappend ::auto_path [info library] - } + unset -nocomplain auto_execs auto_index ::tcl::auto_oldpath + if {[catch {llength $auto_path}]} { + set auto_path [list [info library]] + } elseif {[info library] ni $auto_path} { + lappend auto_path [info library] } } # tcl_findLibrary -- # # This is a utility for extensions that searches for a library directory -# using a canonical searching algorithm. A side effect is to source -# the initialization script and set a global library variable. +# using a canonical searching algorithm. A side effect is to source the +# initialization script and set a global library variable. # # Arguments: # basename Prefix of the directory name, (e.g., "tk") @@ -55,7 +54,7 @@ proc auto_reset {} { proc tcl_findLibrary {basename version patch initScript enVarName varName} { upvar #0 $varName the_library - global env + global auto_path env tcl_platform set dirs {} set errors {} @@ -65,33 +64,30 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} { if {[info exists the_library] && $the_library ne ""} { lappend dirs $the_library } else { - # Do the canonical search - # 1. From an environment variable, if it exists. - # Placing this first gives the end-user ultimate control - # to work-around any bugs, or to customize. + # 1. From an environment variable, if it exists. Placing this first + # gives the end-user ultimate control to work-around any bugs, or + # to customize. if {[info exists env($enVarName)]} { lappend dirs $env($enVarName) } - # 2. In the package script directory registered within - # the configuration of the package itself. + # 2. In the package script directory registered within the + # configuration of the package itself. - if {[catch { - ::${basename}::pkgconfig get scriptdir,runtime - } value] == 0} { - lappend dirs $value + catch { + lappend dirs [::${basename}::pkgconfig get scriptdir,runtime] } # 3. Relative to auto_path directories. This checks relative to the # Tcl library as well as allowing loading of libraries added to the # auto_path that is not relative to the core library or binary paths. - foreach d $::auto_path { + foreach d $auto_path { lappend dirs [file join $d $basename$version] - if {$::tcl_platform(platform) eq "unix" - && $::tcl_platform(os) eq "Darwin"} { + if {$tcl_platform(platform) eq "unix" + && $tcl_platform(os) eq "Darwin"} { # 4. On MacOSX, check the Resources/Scripts subdir too lappend dirs [file join $d $basename$version Resources Scripts] } @@ -102,8 +98,8 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} { # ../../lib/foo1.0 (From bin/arch directory in install hierarchy) # ../library (From unix directory in build hierarchy) # - # Remaining locations are out of date (when relevant, they ought - # to be covered by the $::auto_path seach above) and disabled. + # Remaining locations are out of date (when relevant, they ought to be + # covered by the $::auto_path seach above) and disabled. # # ../../library (From unix/arch directory in build hierarchy) # ../../foo1.0.1/library @@ -126,17 +122,19 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} { # uniquify $dirs in order array set seen {} foreach i $dirs { - # Take note that the [file normalize] below has been noted to - # cause difficulties for the freewrap utility. See Bug 1072136. - # Until freewrap resolves the matter, one might work around the - # problem by disabling that branch. + # Take note that the [file normalize] below has been noted to cause + # difficulties for the freewrap utility. See Bug 1072136. Until + # freewrap resolves the matter, one might work around the problem by + # disabling that branch. if {[interp issafe]} { set norm $i } else { set norm [file normalize $i] } - if {[info exists seen($norm)]} { continue } - set seen($norm) "" + if {[info exists seen($norm)]} { + continue + } + set seen($norm) {} lappend uniqdirs $i } set dirs $uniqdirs @@ -144,16 +142,15 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} { set the_library $i set file [file join $i $initScript] - # source everything when in a safe interpreter because - # we have a source command, but no file exists command + # source everything when in a safe interpreter because we have a + # source command, but no file exists command if {[interp issafe] || [file exists $file]} { if {![catch {uplevel #0 [list source $file]} msg opts]} { return - } else { - append errors "$file: $msg\n" - append errors [dict get $opts -errorinfo]\n } + append errors "$file: $msg\n" + append errors [dict get $opts -errorinfo]\n } } unset -nocomplain the_library @@ -168,28 +165,28 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} { # ---------------------------------------------------------------------- # auto_mkindex # ---------------------------------------------------------------------- -# The following procedures are used to generate the tclIndex file -# from Tcl source files. They use a special safe interpreter to -# parse Tcl source files, writing out index entries as "proc" -# commands are encountered. This implementation won't work in a -# safe interpreter, since a safe interpreter can't create the -# special parser and mess with its commands. +# The following procedures are used to generate the tclIndex file from Tcl +# source files. They use a special safe interpreter to parse Tcl source +# files, writing out index entries as "proc" commands are encountered. This +# implementation won't work in a safe interpreter, since a safe interpreter +# can't create the special parser and mess with its commands. if {[interp issafe]} { return ;# Stop sourcing the file here } # auto_mkindex -- -# Regenerate a tclIndex file from Tcl source files. Takes as argument -# the name of the directory in which the tclIndex file is to be placed, -# followed by any number of glob patterns to use in that directory to -# locate all of the relevant files. +# Regenerate a tclIndex file from Tcl source files. Takes as argument the +# name of the directory in which the tclIndex file is to be placed, followed +# by any number of glob patterns to use in that directory to locate all of the +# relevant files. # -# Arguments: +# Arguments: # dir - Name of the directory in which to create an index. -# args - Any number of additional arguments giving the -# names of files within dir. If no additional -# are given auto_mkindex will look for *.tcl. + +# args - Any number of additional arguments giving the names of files +# within dir. If no additional are given auto_mkindex will look +# for *.tcl. proc auto_mkindex {dir args} { if {[interp issafe]} { @@ -198,7 +195,6 @@ proc auto_mkindex {dir args} { set oldDir [pwd] cd $dir - set dir [pwd] append index "# Tcl autoload index file, version 2.0\n" append index "# This file is generated by the \"auto_mkindex\" command\n" @@ -207,18 +203,18 @@ proc auto_mkindex {dir args} { append index "# sets an element in the auto_index array, where the\n" append index "# element name is the name of a command and the value is\n" append index "# a script that loads the command.\n\n" - if {[llength $args] == 0} { + if {![llength $args]} { set args *.tcl } auto_mkindex_parser::init foreach file [glob -- {*}$args] { - if {[catch {auto_mkindex_parser::mkindex $file} msg opts] == 0} { - append index $msg - } else { - cd $oldDir + try { + append index [auto_mkindex_parser::mkindex $file] + } on error {msg opts} { + cd $oldDir return -options $opts $msg - } + } } auto_mkindex_parser::cleanup @@ -228,8 +224,8 @@ proc auto_mkindex {dir args} { cd $oldDir } -# Original version of auto_mkindex that just searches the source -# code for "proc" at the beginning of the line. +# Original version of auto_mkindex that just searches the source code for +# "proc" at the beginning of the line. proc auto_mkindex_old {dir args} { set oldDir [pwd] @@ -242,7 +238,7 @@ proc auto_mkindex_old {dir args} { append index "# sets an element in the auto_index array, where the\n" append index "# element name is the name of a command and the value is\n" append index "# a script that loads the command.\n\n" - if {[llength $args] == 0} { + if {![llength $args]} { set args *.tcl } foreach file [glob -- {*}$args] { @@ -280,9 +276,9 @@ proc auto_mkindex_old {dir args} { } # Create a safe interpreter that can be used to parse Tcl source files -# generate a tclIndex file for autoloading. This interp contains -# commands for things that need index entries. Each time a command -# is executed, it writes an entry out to the index file. +# generate a tclIndex file for autoloading. This interp contains commands for +# things that need index entries. Each time a command is executed, it writes +# an entry out to the index file. namespace eval auto_mkindex_parser { variable parser "" ;# parser used to build index @@ -307,7 +303,14 @@ namespace eval auto_mkindex_parser { $parser hide namespace $parser hide eval $parser hide puts - $parser invokehidden namespace delete :: + foreach ns [$parser invokehidden namespace children ::] { + # MUST NOT DELETE "::tcl" OR BAD THINGS HAPPEN! + if {$ns eq "::tcl"} continue + $parser invokehidden namespace delete $ns + } + foreach cmd [$parser invokehidden info commands ::*] { + $parser invokehidden rename $cmd {} + } $parser invokehidden proc unknown {args} {} # We'll need access to the "namespace" command within the @@ -334,12 +337,12 @@ namespace eval auto_mkindex_parser { # auto_mkindex_parser::mkindex -- # -# Used by the "auto_mkindex" command to create a "tclIndex" file for -# the given Tcl source file. Executes the commands in the file, and -# handles things like the "proc" command by adding an entry for the -# index file. Returns a string that represents the index file. +# Used by the "auto_mkindex" command to create a "tclIndex" file for the given +# Tcl source file. Executes the commands in the file, and handles things like +# the "proc" command by adding an entry for the index file. Returns a string +# that represents the index file. # -# Arguments: +# Arguments: # file Name of Tcl source file to be indexed. proc auto_mkindex_parser::mkindex {file} { @@ -355,14 +358,13 @@ proc auto_mkindex_parser::mkindex {file} { set contents [read $fid] close $fid - # There is one problem with sourcing files into the safe - # interpreter: references like "$x" will fail since code is not - # really being executed and variables do not really exist. - # To avoid this, we replace all $ with \0 (literally, the null char) - # later, when getting proc names we will have to reverse this replacement, - # in case there were any $ in the proc name. This will cause a problem - # if somebody actually tries to have a \0 in their proc name. Too bad - # for them. + # There is one problem with sourcing files into the safe interpreter: + # references like "$x" will fail since code is not really being executed + # and variables do not really exist. To avoid this, we replace all $ with + # \0 (literally, the null char) later, when getting proc names we will + # have to reverse this replacement, in case there were any $ in the proc + # name. This will cause a problem if somebody actually tries to have a \0 + # in their proc name. Too bad for them. set contents [string map [list \$ \0] $contents] set index "" @@ -379,10 +381,10 @@ proc auto_mkindex_parser::mkindex {file} { # auto_mkindex_parser::hook command # -# Registers a Tcl command to evaluate when initializing the -# slave interpreter used by the mkindex parser. -# The command is evaluated in the master interpreter, and can -# use the variable auto_mkindex_parser::parser to get to the slave +# Registers a Tcl command to evaluate when initializing the slave interpreter +# used by the mkindex parser. The command is evaluated in the master +# interpreter, and can use the variable auto_mkindex_parser::parser to get to +# the slave proc auto_mkindex_parser::hook {cmd} { variable initCommands @@ -392,30 +394,30 @@ proc auto_mkindex_parser::hook {cmd} { # auto_mkindex_parser::slavehook command # -# Registers a Tcl command to evaluate when initializing the -# slave interpreter used by the mkindex parser. -# The command is evaluated in the slave interpreter. +# Registers a Tcl command to evaluate when initializing the slave interpreter +# used by the mkindex parser. The command is evaluated in the slave +# interpreter. proc auto_mkindex_parser::slavehook {cmd} { variable initCommands - # The $parser variable is defined to be the name of the - # slave interpreter when this command is used later. + # The $parser variable is defined to be the name of the slave interpreter + # when this command is used later. lappend initCommands "\$parser eval [list $cmd]" } # auto_mkindex_parser::command -- # -# Registers a new command with the "auto_mkindex_parser" interpreter -# that parses Tcl files. These commands are fake versions of things -# like the "proc" command. When you execute them, they simply write -# out an entry to a "tclIndex" file for auto-loading. +# Registers a new command with the "auto_mkindex_parser" interpreter that +# parses Tcl files. These commands are fake versions of things like the +# "proc" command. When you execute them, they simply write out an entry to a +# "tclIndex" file for auto-loading. # -# This procedure allows extensions to register their own commands -# with the auto_mkindex facility. For example, a package like -# [incr Tcl] might register a "class" command so that class definitions -# could be added to a "tclIndex" file for auto-loading. +# This procedure allows extensions to register their own commands with the +# auto_mkindex facility. For example, a package like [incr Tcl] might +# register a "class" command so that class definitions could be added to a +# "tclIndex" file for auto-loading. # # Arguments: # name Name of command recognized in Tcl files. @@ -428,8 +430,8 @@ proc auto_mkindex_parser::command {name arglist body} { # auto_mkindex_parser::commandInit -- # -# This does the actual work set up by auto_mkindex_parser::command -# This is called when the interpreter used by the parser is created. +# This does the actual work set up by auto_mkindex_parser::command. This is +# called when the interpreter used by the parser is created. # # Arguments: # name Name of command recognized in Tcl files. @@ -448,25 +450,23 @@ proc auto_mkindex_parser::commandInit {name arglist body} { } proc $fakeName $arglist $body - # YUK! Tcl won't let us alias fully qualified command names, - # so we can't handle names like "::itcl::class". Instead, - # we have to build procs with the fully qualified names, and - # have the procs point to the aliases. + # YUK! Tcl won't let us alias fully qualified command names, so we can't + # handle names like "::itcl::class". Instead, we have to build procs with + # the fully qualified names, and have the procs point to the aliases. if {[string match *::* $name]} { set exportCmd [list _%@namespace export [namespace tail $name]] $parser eval [list _%@namespace eval $ns $exportCmd] - - # The following proc definition does not work if you - # want to tolerate space or something else diabolical - # in the procedure name, (i.e., space in $alias) - # The following does not work: + + # The following proc definition does not work if you want to tolerate + # space or something else diabolical in the procedure name, (i.e., + # space in $alias). The following does not work: # "_%@eval {$alias} \$args" - # because $alias gets concat'ed to $args. - # The following does not work because $cmd is somehow undefined + # because $alias gets concat'ed to $args. The following does not work + # because $cmd is somehow undefined # "set cmd {$alias} \; _%@eval {\$cmd} \$args" - # A gold star to someone that can make test - # autoMkindex-3.3 work properly + # A gold star to someone that can make test autoMkindex-3.3 work + # properly set alias [namespace tail $fakeName] $parser invokehidden proc $name {args} "_%@eval {$alias} \$args" @@ -478,15 +478,14 @@ proc auto_mkindex_parser::commandInit {name arglist body} { } # auto_mkindex_parser::fullname -- -# Used by commands like "proc" within the auto_mkindex parser. -# Returns the qualified namespace name for the "name" argument. -# If the "name" does not start with "::", elements are added from -# the current namespace stack to produce a qualified name. Then, -# the name is examined to see whether or not it should really be -# qualified. If the name has more than the leading "::", it is -# returned as a fully qualified name. Otherwise, it is returned -# as a simple name. That way, the Tcl autoloader will recognize -# it properly. +# +# Used by commands like "proc" within the auto_mkindex parser. Returns the +# qualified namespace name for the "name" argument. If the "name" does not +# start with "::", elements are added from the current namespace stack to +# produce a qualified name. Then, the name is examined to see whether or not +# it should really be qualified. If the name has more than the leading "::", +# it is returned as a fully qualified name. Otherwise, it is returned as a +# simple name. That way, the Tcl autoloader will recognize it properly. # # Arguments: # name - Name that is being added to index. @@ -509,44 +508,65 @@ proc auto_mkindex_parser::fullname {name} { set name "::$name" } - # Earlier, mkindex replaced all $'s with \0. Now, we have to reverse - # that replacement. + # Earlier, mkindex replaced all $'s with \0. Now, we have to reverse that + # replacement. return [string map [list \0 \$] $name] } +# auto_mkindex_parser::indexEntry -- +# +# Used by commands like "proc" within the auto_mkindex parser to add a +# correctly-quoted entry to the index. This is shared code so it is done +# *right*, in one place. +# +# Arguments: +# name - Name that is being added to index. + +proc auto_mkindex_parser::indexEntry {name} { + variable index + variable scriptFile + + # We convert all metacharacters to their backslashed form, and pre-split + # the file name that we know about (which will be a proper list, and so + # correctly quoted). + + set name [string range [list \}[fullname $name]] 2 end] + set filenameParts [file split $scriptFile] + + append index [format \ + {set auto_index(%s) [list source [file join $dir %s]]%s} \ + $name $filenameParts \n] + return +} + if {[llength $::auto_mkindex_parser::initCommands]} { return } -# Register all of the procedures for the auto_mkindex parser that -# will build the "tclIndex" file. +# Register all of the procedures for the auto_mkindex parser that will build +# the "tclIndex" file. # AUTO MKINDEX: proc name arglist body # Adds an entry to the auto index list for the given procedure name. auto_mkindex_parser::command proc {name args} { - variable index - variable scriptFile - # Do some fancy reformatting on the "source" call to handle platform - # differences with respect to pathnames. Use format just so that the - # command is a little easier to read (otherwise it'd be full of - # backslashed dollar signs, etc. - append index [list set auto_index([fullname $name])] \ - [format { [list source [file join $dir %s]]} \ - [file split $scriptFile]] "\n" + indexEntry $name } -# Conditionally add support for Tcl byte code files. There are some -# tricky details here. First, we need to get the tbcload library -# initialized in the current interpreter. We cannot load tbcload into the -# slave until we have done so because it needs access to the tcl_patchLevel -# variable. Second, because the package index file may defer loading the -# library until we invoke a command, we need to explicitly invoke auto_load -# to force it to be loaded. This should be a noop if the package has -# already been loaded +# Conditionally add support for Tcl byte code files. There are some tricky +# details here. First, we need to get the tbcload library initialized in the +# current interpreter. We cannot load tbcload into the slave until we have +# done so because it needs access to the tcl_patchLevel variable. Second, +# because the package index file may defer loading the library until we invoke +# a command, we need to explicitly invoke auto_load to force it to be loaded. +# This should be a noop if the package has already been loaded auto_mkindex_parser::hook { - if {![catch {package require tbcload}]} { + try { + package require tbcload + } on error {} { + # OK, don't have it so do nothing + } on ok {} { if {[namespace which -command tbcload::bcproc] eq ""} { auto_load tbcload::bcproc } @@ -554,32 +574,24 @@ auto_mkindex_parser::hook { # AUTO MKINDEX: tbcload::bcproc name arglist body # Adds an entry to the auto index list for the given pre-compiled - # procedure name. + # procedure name. auto_mkindex_parser::commandInit tbcload::bcproc {name args} { - variable index - variable scriptFile - # Do some nice reformatting of the "source" call, to get around - # path differences on different platforms. We use the format - # command just so that the code is a little easier to read. - append index [list set auto_index([fullname $name])] \ - [format { [list source [file join $dir %s]]} \ - [file split $scriptFile]] "\n" + indexEntry $name } } } # AUTO MKINDEX: namespace eval name command ?arg arg...? -# Adds the namespace name onto the context stack and evaluates the -# associated body of commands. +# Adds the namespace name onto the context stack and evaluates the associated +# body of commands. # # AUTO MKINDEX: namespace import ?-force? pattern ?pattern...? -# Performs the "import" action in the parser interpreter. This is -# important for any commands contained in a namespace that affect -# the index. For example, a script may say "itcl::class ...", -# or it may import "itcl::*" and then say "class ...". This -# procedure does the import operation, but keeps track of imported -# patterns so we can remove the imports later. +# Performs the "import" action in the parser interpreter. This is important +# for any commands contained in a namespace that affect the index. For +# example, a script may say "itcl::class ...", or it may import "itcl::*" and +# then say "class ...". This procedure does the import operation, but keeps +# track of imported patterns so we can remove the imports later. auto_mkindex_parser::command namespace {op args} { switch -- $op { @@ -604,6 +616,35 @@ auto_mkindex_parser::command namespace {op args} { } catch {$parser eval "_%@namespace import $args"} } + ensemble { + variable parser + variable contextStack + if {[lindex $args 0] eq "create"} { + set name ::[join [lreverse $contextStack] ::] + catch { + set name [dict get [lrange $args 1 end] -command] + if {![string match ::* $name]} { + set name ::[join [lreverse $contextStack] ::]$name + } + regsub -all ::+ $name :: name + } + # create artifical proc to force an entry in the tclIndex + $parser eval [list ::proc $name {} {}] + } + } + } +} + +# AUTO MKINDEX: oo::class create name ?definition? +# Adds an entry to the auto index list for the given class name. +auto_mkindex_parser::command oo::class {op name {body ""}} { + if {$op eq "create"} { + indexEntry $name + } +} +auto_mkindex_parser::command class {op name {body ""}} { + if {$op eq "create"} { + indexEntry $name } } diff --git a/library/clock.tcl b/library/clock.tcl index 8a78c39..1e652b4 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -2,9 +2,9 @@ # # clock.tcl -- # -# This file implements the portions of the [clock] ensemble that -# are coded in Tcl. Refer to the users' manual to see the description -# of the [clock] command and its subcommands. +# This file implements the portions of the [clock] ensemble that are +# coded in Tcl. Refer to the users' manual to see the description of +# the [clock] command and its subcommands. # # #---------------------------------------------------------------------- @@ -13,12 +13,10 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.47.2.5 2009/01/03 04:36:53 kennykb Exp $ -# #---------------------------------------------------------------------- -# We must have message catalogs that support the root locale, and -# we need access to the Registry on Windows systems. +# We must have message catalogs that support the root locale, and we need +# access to the Registry on Windows systems. uplevel \#0 { package require msgcat 1.4 @@ -29,9 +27,8 @@ uplevel \#0 { } } -# Put the library directory into the namespace for the ensemble -# so that the library code can find message catalogs and time zone -# definition files. +# Put the library directory into the namespace for the ensemble so that the +# library code can find message catalogs and time zone definition files. namespace eval ::tcl::clock \ [list variable LibDir [file dirname [info script]]] @@ -42,10 +39,10 @@ namespace eval ::tcl::clock \ # # Manipulate times. # -# The 'clock' command manipulates time. Refer to the user documentation -# for the available subcommands and what they do. +# The 'clock' command manipulates time. Refer to the user documentation for +# the available subcommands and what they do. # -#---------------------------------------------------------------------- +#---------------------------------------------------------------------- namespace eval ::tcl::clock { @@ -78,11 +75,11 @@ namespace eval ::tcl::clock { # Side effects: # Namespace variable in the 'clock' subsystem are initialized. # -# The '::tcl::clock::Initialize' procedure initializes the namespace -# variables and root locale message catalog for the 'clock' subsystem. -# It is broken into a procedure rather than simply evaluated as a script -# so that it will be able to use local variables, avoiding the dangers -# of 'creative writing' as in Bug 1185933. +# The '::tcl::clock::Initialize' procedure initializes the namespace variables +# and root locale message catalog for the 'clock' subsystem. It is broken +# into a procedure rather than simply evaluated as a script so that it will be +# able to use local variables, avoiding the dangers of 'creative writing' as +# in Bug 1185933. # #---------------------------------------------------------------------- @@ -174,8 +171,8 @@ proc ::tcl::clock::Initialize {} { ::msgcat::mcset fr GREGORIAN_CHANGE_DATE 2299227 - # For Belgium, we follow Southern Netherlands; Liege Diocese - # changed several weeks later. + # For Belgium, we follow Southern Netherlands; Liege Diocese changed + # several weeks later. ::msgcat::mcset fr_BE GREGORIAN_CHANGE_DATE 2299238 ::msgcat::mcset nl_BE GREGORIAN_CHANGE_DATE 2299238 @@ -191,13 +188,13 @@ proc ::tcl::clock::Initialize {} { # Germany, Norway, Denmark (Catholic Germany changed earlier) ::msgcat::mcset de_DE GREGORIAN_CHANGE_DATE 2342032 - ::msgcat::mcset nb GREGORIAN_CHANGE_DATE 2342032 + ::msgcat::mcset nb GREGORIAN_CHANGE_DATE 2342032 ::msgcat::mcset nn GREGORIAN_CHANGE_DATE 2342032 ::msgcat::mcset no GREGORIAN_CHANGE_DATE 2342032 ::msgcat::mcset da GREGORIAN_CHANGE_DATE 2342032 - # Holland (Brabant, Gelderland, Flanders, Friesland, etc. changed - # at various times) + # Holland (Brabant, Gelderland, Flanders, Friesland, etc. changed at + # various times) ::msgcat::mcset nl GREGORIAN_CHANGE_DATE 2342165 @@ -219,23 +216,23 @@ proc ::tcl::clock::Initialize {} { ::msgcat::mcset ru GREGORIAN_CHANGE_DATE 2421639 - # Romania (Transylvania changed earler - perhaps de_RO should show - # the earlier date?) + # Romania (Transylvania changed earler - perhaps de_RO should show the + # earlier date?) ::msgcat::mcset ro GREGORIAN_CHANGE_DATE 2422063 # Greece ::msgcat::mcset el GREGORIAN_CHANGE_DATE 2423480 - + #------------------------------------------------------------------ # # CONSTANTS # #------------------------------------------------------------------ - # Paths at which binary time zone data for the Olson libraries - # are known to reside on various operating systems + # Paths at which binary time zone data for the Olson libraries are known + # to reside on various operating systems variable ZoneinfoPaths {} foreach path { @@ -284,10 +281,10 @@ proc ::tcl::clock::Initialize {} { variable FEB_28 58 - # Translation table to map Windows TZI onto cities, so that - # the Olson rules can apply. In some cases the mapping is ambiguous, - # so it's wise to specify $::env(TCL_TZ) rather than simply depending - # on the system time zone. + # Translation table to map Windows TZI onto cities, so that the Olson + # rules can apply. In some cases the mapping is ambiguous, so it's wise + # to specify $::env(TCL_TZ) rather than simply depending on the system + # time zone. # The keys are long lists of values obtained from the time zone # information in the Registry. In order, the list elements are: @@ -298,10 +295,10 @@ proc ::tcl::clock::Initialize {} { # DaylightDate.wYear DaylightDate.wMonth DaylightDate.wDayOfWeek # DaylightDate.wDay DaylightDate.wHour DaylightDate.wMinute # DaylightDate.wSecond DaylightDate.wMilliseconds - # The values are the names of time zones where those rules apply. - # There is considerable ambiguity in certain zones; an attempt has - # been made to make a reasonable guess, but this table needs to be - # taken with a grain of salt. + # The values are the names of time zones where those rules apply. There + # is considerable ambiguity in certain zones; an attempt has been made to + # make a reasonable guess, but this table needs to be taken with a grain + # of salt. variable WinZoneInfo [dict create {*}{ {-43200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Kwajalein @@ -327,7 +324,7 @@ proc ::tcl::clock::Initialize {} { {-10800 0 3600 0 2 0 2 2 0 0 0 0 10 0 3 2 0 0 0} :America/Sao_Paulo {-10800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Godthab {-10800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Buenos_Aires - {-10800 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Brasilia + {-10800 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Bahia {-10800 0 3600 0 3 0 2 2 0 0 0 0 10 0 1 2 0 0 0} :America/Montevideo {-7200 0 3600 0 9 0 5 2 0 0 0 0 3 0 5 2 0 0 0} :America/Noronha {-3600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Atlantic/Azores @@ -380,10 +377,10 @@ proc ::tcl::clock::Initialize {} { {46800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Tongatapu }] - # Groups of fields that specify the date, priorities, and - # code bursts that determine Julian Day Number given those groups. - # The code in [clock scan] will choose the highest priority - # (lowest numbered) set of fields that determines the date. + # Groups of fields that specify the date, priorities, and code bursts that + # determine Julian Day Number given those groups. The code in [clock + # scan] will choose the highest priority (lowest numbered) set of fields + # that determines the date. variable DateParseActions { @@ -487,8 +484,8 @@ proc ::tcl::clock::Initialize {} { } } - # Groups of fields that specify time of day, priorities, - # and code that processes them + # Groups of fields that specify time of day, priorities, and code that + # processes them variable TimeParseActions { @@ -654,16 +651,14 @@ proc ::tcl::clock::Initialize {} { # # clock format -- # -# Formats a count of seconds since the Posix Epoch as a time -# of day. +# Formats a count of seconds since the Posix Epoch as a time of day. # -# The 'clock format' command formats times of day for output. -# Refer to the user documentation to see what it does. +# The 'clock format' command formats times of day for output. Refer to the +# user documentation to see what it does. # #---------------------------------------------------------------------- proc ::tcl::clock::format { args } { - variable FormatProc variable TZData @@ -672,7 +667,7 @@ proc ::tcl::clock::format { args } { set clockval [lindex $args 0] # Get the data for time changes in the given zone - + if {$timezone eq ""} { set timezone [GetSystemTimeZone] } @@ -682,11 +677,11 @@ proc ::tcl::clock::format { args } { return -options $opts $retval } } - - # Build a procedure to format the result. Cache the built procedure's - # name in the 'FormatProc' array to avoid losing its internal - # representation, which contains the name resolution. - + + # Build a procedure to format the result. Cache the built procedure's name + # in the 'FormatProc' array to avoid losing its internal representation, + # which contains the name resolution. + set procName formatproc'$format'$locale set procName [namespace current]::[string map {: {\:} \\ {\\}} $procName] if {[info exists FormatProc($procName)]} { @@ -695,9 +690,8 @@ proc ::tcl::clock::format { args } { set FormatProc($procName) \ [ParseClockFormatFormat $procName $format $locale] } - - return [$procName $clockval $timezone] + return [$procName $clockval $timezone] } #---------------------------------------------------------------------- @@ -716,45 +710,31 @@ proc ::tcl::clock::format { args } { #---------------------------------------------------------------------- proc ::tcl::clock::ParseClockFormatFormat {procName format locale} { - if {[namespace which $procName] ne {}} { return $procName } # Map away the locale-dependent composite format groups - + EnterLocale $locale oldLocale # Change locale if a fresh locale has been given on the command line. - set status [catch { - - ParseClockFormatFormat2 $format $locale $procName - - } result opts] - - # Restore the locale - - if { [info exists oldLocale] } { - mclocale $oldLocale - } - - # Return either the error or the proc name + try { + return [ParseClockFormatFormat2 $format $locale $procName] + } trap CLOCK {result opts} { + dict unset opts -errorinfo + return -options $opts $result + } finally { + # Restore the locale - if { $status == 1 } { - if { [lindex [dict get $opts -errorcode] 0] eq {clock} } { - return -code error $result - } else { - return -options $opts $result + if { [info exists oldLocale] } { + mclocale $oldLocale } - } else { - return $result } - } proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { - set didLocaleEra 0 set didLocaleNumerals 0 set preFormatCode \ @@ -769,7 +749,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { set formatString {} set substituents {} set state {} - + set format [LocalizeFormat $locale $format] foreach char [split $format {}] { @@ -796,7 +776,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { { [lindex @DAYS_OF_WEEK_ABBREV@ \ [expr {[dict get $date dayOfWeek] \ % 7}]]}] - } + } A { # Day of week, spelt out. append formatString %s append substituents \ @@ -897,7 +877,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { k { # Hour (0-23), no leading zero append formatString %2d append substituents \ - { [expr { [dict get $date localSeconds] + { [expr { [dict get $date localSeconds] / 3600 % 24 }]} } @@ -918,7 +898,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { M { # Minute of the hour, leading zero append formatString %02d append substituents \ - { [expr { [dict get $date localSeconds] + { [expr { [dict get $date localSeconds] / 60 % 60 }]} } @@ -959,7 +939,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { { [expr {(([dict get $date localSeconds] % 86400) < 43200) ? $am : $pm}]} - + } Q { # Hi, Jeff! append formatString %s @@ -969,11 +949,11 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { append formatString %s append substituents { [dict get $date seconds]} } - S { # Second of the minute, with + S { # Second of the minute, with # leading zero append formatString %02d append substituents \ - { [expr { [dict get $date localSeconds] + { [expr { [dict get $date localSeconds] % 60 }]} } t { # A literal tab character @@ -994,7 +974,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { } incr dow set UweekNumber \ - [expr { ( [dict get $date dayOfYear] + [expr { ( [dict get $date dayOfYear] - $dow + 7 ) / 7 }] } @@ -1017,7 +997,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { set WweekNumber \ [expr { ( [dict get $date dayOfYear] - [dict get $date dayOfWeek] - + 7 ) + + 7 ) / 7 }] } append formatString %02d @@ -1086,7 +1066,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { percentO { # Character following %O set state {} switch -exact -- $char { - d - e { # Day of the month in alternative + d - e { # Day of the month in alternative # numerals append formatString %s append substituents \ @@ -1098,7 +1078,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { append formatString %s append substituents \ { [lindex $localeNumerals \ - [expr { [dict get $date localSeconds] + [expr { [dict get $date localSeconds] / 3600 % 24 }]]} } @@ -1124,7 +1104,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { append formatString %s append substituents \ { [lindex $localeNumerals \ - [expr { [dict get $date localSeconds] + [expr { [dict get $date localSeconds] / 60 % 60 }]]} } @@ -1133,7 +1113,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { append formatString %s append substituents \ { [lindex $localeNumerals \ - [expr { [dict get $date localSeconds] + [expr { [dict get $date localSeconds] % 60 }]]} } u { # Day of the week (Monday=1,Sunday=7) @@ -1164,9 +1144,9 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { } } } - + # Clean up any improperly terminated groups - + switch -exact -- $state { percent { append formatString %% @@ -1193,16 +1173,14 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { # # clock scan -- # -# Inputs a count of seconds since the Posix Epoch as a time -# of day. +# Inputs a count of seconds since the Posix Epoch as a time of day. # -# The 'clock format' command scans times of day on input. -# Refer to the user documentation to see what it does. +# The 'clock format' command scans times of day on input. Refer to the user +# documentation to see what it does. # #---------------------------------------------------------------------- proc ::tcl::clock::scan { args } { - set format {} # Check the count of args @@ -1264,21 +1242,17 @@ proc ::tcl::clock::scan { args } { "cannot use -gmt and -timezone in same call" } if { [catch { expr { wide($base) } } result] } { - return -code error \ - "expected integer but got \"$base\"" + return -code error "expected integer but got \"$base\"" } - if { ![string is boolean $gmt] } { - return -code error \ - "expected boolean value but got \"$gmt\"" - } else { - if { $gmt } { - set timezone :GMT - } + if { ![string is boolean -strict $gmt] } { + return -code error "expected boolean value but got \"$gmt\"" + } elseif { $gmt } { + set timezone :GMT } if { ![info exists saw(-format)] } { - # Perhaps someday we'll localize the legacy code. Right now, - # it's not localized. + # Perhaps someday we'll localize the legacy code. Right now, it's not + # localized. if { [info exists saw(-locale)] } { return -code error \ -errorcode [list CLOCK flagWithLegacyFormat] \ @@ -1292,31 +1266,23 @@ proc ::tcl::clock::scan { args } { EnterLocale $locale oldLocale - set status [catch { - + try { # Map away the locale-dependent composite format groups set scanner [ParseClockScanFormat $format $locale] - $scanner $string $base $timezone + return [$scanner $string $base $timezone] + } trap CLOCK {result opts} { + # Conceal location of generation of expected errors - } result opts] - - # Restore the locale - - if { [info exists oldLocale] } { - mclocale $oldLocale - } + dict unset opts -errorinfo + return -options $opts $result + } finally { + # Restore the locale - if { $status == 1 } { - if { [lindex [dict get $opts -errorcode] 0] eq {clock} } { - return -code error $result - } else { - return -options $opts $result + if { [info exists oldLocale] } { + mclocale $oldLocale } - } else { - return $result } - } #---------------------------------------------------------------------- @@ -1332,52 +1298,50 @@ proc ::tcl::clock::scan { args } { # locale - (Unused) Name of the locale where the time will be scanned. # # Results: -# Returns the date and time extracted from the string in seconds -# from the epoch +# Returns the date and time extracted from the string in seconds from +# the epoch # #---------------------------------------------------------------------- proc ::tcl::clock::FreeScan { string base timezone locale } { - variable TZData # Get the data for time changes in the given zone - - if {[catch {SetupTimeZone $timezone} retval opts]} { + + try { + SetupTimeZone $timezone + } on error {retval opts} { dict unset opts -errorinfo return -options $opts $retval } - # Extract year, month and day from the base time for the - # parser to use as defaults - - set date [GetDateFields \ - $base \ - $TZData($timezone) \ - 2361222] - dict set date secondOfDay [expr { [dict get $date localSeconds] - % 86400 }] + # Extract year, month and day from the base time for the parser to use as + # defaults - # Parse the date. The parser will return a list comprising - # date, time, time zone, relative month/day/seconds, relative - # weekday, ordinal month. + set date [GetDateFields $base $TZData($timezone) 2361222] + dict set date secondOfDay [expr { + [dict get $date localSeconds] % 86400 + }] - set status [catch { - Oldscan $string \ - [dict get $date year] \ - [dict get $date month] \ - [dict get $date dayOfMonth] - } result] - if { $status != 0 } { - return -code error "unable to convert date-time string \"$string\"" + # Parse the date. The parser will return a list comprising date, time, + # time zone, relative month/day/seconds, relative weekday, ordinal month. + + try { + set scanned [Oldscan $string \ + [dict get $date year] \ + [dict get $date month] \ + [dict get $date dayOfMonth]] + lassign $scanned \ + parseDate parseTime parseZone parseRel \ + parseWeekday parseOrdinalMonth + } on error message { + return -code error \ + "unable to convert date-time string \"$string\": $message" } - lassign $result parseDate parseTime parseZone parseRel \ - parseWeekday parseOrdinalMonth - - # If the caller supplied a date in the string, update the 'date' dict - # with the value. If the caller didn't specify a time with the date, - # default to midnight. + # If the caller supplied a date in the string, update the 'date' dict with + # the value. If the caller didn't specify a time with the date, default to + # midnight. if { [llength $parseDate] > 0 } { lassign $parseDate y m d @@ -1397,12 +1361,12 @@ proc ::tcl::clock::FreeScan { string base timezone locale } { } } - # If the caller supplied a time zone in the string, it comes back - # as a two-element list; the first element is the number of minutes - # east of Greenwich, and the second is a Daylight Saving Time - # indicator ( 1 == yes, 0 == no, -1 == unknown ). We make it into - # a time zone indicator of +-hhmm. - + # If the caller supplied a time zone in the string, it comes back as a + # two-element list; the first element is the number of minutes east of + # Greenwich, and the second is a Daylight Saving Time indicator (1 == yes, + # 0 == no, -1 == unknown). We make it into a time zone indicator of + # +-hhmm. + if { [llength $parseZone] > 0 } { lassign $parseZone minEast dstFlag set timezone [FormatNumericTimeZone \ @@ -1416,18 +1380,19 @@ proc ::tcl::clock::FreeScan { string base timezone locale } { set date [GetJulianDayFromEraYearMonthDay $date[set date {}] 2361222] if { $parseTime ne {} } { dict set date secondOfDay $parseTime - } elseif { [llength $parseWeekday] != 0 - || [llength $parseOrdinalMonth] != 0 - || ( [llength $parseRel] != 0 + } elseif { [llength $parseWeekday] != 0 + || [llength $parseOrdinalMonth] != 0 + || ( [llength $parseRel] != 0 && ( [lindex $parseRel 0] != 0 || [lindex $parseRel 1] != 0 ) ) } { dict set date secondOfDay 0 } - dict set date localSeconds \ - [expr { -210866803200 - + ( 86400 * wide([dict get $date julianDay]) ) - + [dict get $date secondOfDay] }] + dict set date localSeconds [expr { + -210866803200 + + ( 86400 * wide([dict get $date julianDay]) ) + + [dict get $date secondOfDay] + }] dict set date tzName $timezone set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) 2361222] set seconds [dict get $date seconds] @@ -1439,18 +1404,17 @@ proc ::tcl::clock::FreeScan { string base timezone locale } { set seconds [add $seconds \ $relMonth months $relDay days $relSecond seconds \ -timezone $timezone -locale $locale] - } + } # Do relative weekday - - if { [llength $parseWeekday] > 0 } { + if { [llength $parseWeekday] > 0 } { lassign $parseWeekday dayOrdinal dayOfWeek set date2 [GetDateFields $seconds $TZData($timezone) 2361222] dict set date2 era CE - set jdwkday [WeekdayOnOrBefore $dayOfWeek \ - [expr { [dict get $date2 julianDay] - + 6 }]] + set jdwkday [WeekdayOnOrBefore $dayOfWeek [expr { + [dict get $date2 julianDay] + 6 + }]] incr jdwkday [expr { 7 * $dayOrdinal }] if { $dayOrdinal > 0 } { incr jdwkday -7 @@ -1458,21 +1422,20 @@ proc ::tcl::clock::FreeScan { string base timezone locale } { dict set date2 secondOfDay \ [expr { [dict get $date2 localSeconds] % 86400 }] dict set date2 julianDay $jdwkday - dict set date2 localSeconds \ - [expr { -210866803200 - + ( 86400 * wide([dict get $date2 julianDay]) ) - + [dict get $date secondOfDay] }] + dict set date2 localSeconds [expr { + -210866803200 + + ( 86400 * wide([dict get $date2 julianDay]) ) + + [dict get $date secondOfDay] + }] dict set date2 tzName $timezone set date2 [ConvertLocalToUTC $date2[set date2 {}] $TZData($timezone) \ 2361222] set seconds [dict get $date2 seconds] - } # Do relative month if { [llength $parseOrdinalMonth] > 0 } { - lassign $parseOrdinalMonth monthOrdinal monthNumber if { $monthOrdinal > 0 } { set monthDiff [expr { $monthNumber - [dict get $date month] }] @@ -1489,7 +1452,6 @@ proc ::tcl::clock::FreeScan { string base timezone locale } { } set seconds [add $seconds $monthOrdinal years $monthDiff months \ -timezone $timezone -locale $locale] - } return $seconds @@ -1507,30 +1469,27 @@ proc ::tcl::clock::FreeScan { string base timezone locale } { # locale - The current locale # # Results: -# Constructs and returns a procedure that accepts the -# string being scanned, the base time, and the time zone. -# The procedure will either return the scanned time or -# else throw an error that should be rethrown to the caller -# of [clock scan] +# Constructs and returns a procedure that accepts the string being +# scanned, the base time, and the time zone. The procedure will either +# return the scanned time or else throw an error that should be rethrown +# to the caller of [clock scan] # # Side effects: -# The given procedure is defined in the ::tcl::clock -# namespace. Scan procedures are not deleted once installed. -# -# Why do we parse dates by defining a procedure to parse them? -# The reason is that by doing so, we have one convenient place to -# cache all the information: the regular expressions that match the -# patterns (which will be compiled), the code that assembles the -# date information, everything lands in one place. In this way, -# when a given format is reused at run time, all the information +# The given procedure is defined in the ::tcl::clock namespace. Scan +# procedures are not deleted once installed. +# +# Why do we parse dates by defining a procedure to parse them? The reason is +# that by doing so, we have one convenient place to cache all the information: +# the regular expressions that match the patterns (which will be compiled), +# the code that assembles the date information, everything lands in one place. +# In this way, when a given format is reused at run time, all the information # of how to apply it is available in a single place. # #---------------------------------------------------------------------- proc ::tcl::clock::ParseClockScanFormat {formatString locale} { - - # Check whether the format has been parsed previously, and return - # the existing recognizer if it has. + # Check whether the format has been parsed previously, and return the + # existing recognizer if it has. set procName scanproc'$formatString'$locale set procName [namespace current]::[string map {: {\:} \\ {\\}} $procName] @@ -1574,8 +1533,8 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { append re {[[:space:]]+} } else { if { ! [string is alnum $c] } { - append re \\ - } + append re "\\" + } append re $c } } @@ -1692,7 +1651,7 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { "::scan \$field" [incr captureCount] " %ld" \ "\]\n" } - m - N { # Month number + m - N { # Month number append re \\s*(\\d\\d?) dict set fieldSet month [incr fieldCount] append postcode "dict set date month \[" \ @@ -1735,10 +1694,9 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { \] \n } s { # Seconds from Posix Epoch - # This next case is insanely difficult, - # because it's problematic to determine - # whether the field is actually within - # the range of a wide integer. + # This next case is insanely difficult, because it's + # problematic to determine whether the field is + # actually within the range of a wide integer. append re {\s*([-+]?\d+)} dict set fieldSet seconds [incr fieldCount] append postcode {dict set date seconds } \[ \ @@ -1771,14 +1729,13 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { dict set date dayOfWeek $dow } } - U { # Week of year. The - # first Sunday of the year is the - # first day of week 01. No scan rule - # uses this group. + U { # Week of year. The first Sunday of + # the year is the first day of week + # 01. No scan rule uses this group. append re \\s*\\d\\d? } V { # Week of ISO8601 year - + append re \\s*(\\d\\d?) dict set fieldSet iso8601Week [incr fieldCount] append postcode "dict set date iso8601Week \[" \ @@ -1950,7 +1907,7 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { "day of week is greater than 7" } dict set date dayOfWeek $dow - } + } } y { lassign [LocaleNumeralMatcher $locale] regex lookup @@ -1996,6 +1953,21 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { append procBody $postcode append procBody [list set changeover [mc GREGORIAN_CHANGE_DATE]] \n + # Set up the time zone before doing anything with a default base date + # that might need a timezone to interpret it. + + if { ![dict exists $fieldSet seconds] + && ![dict exists $fieldSet starDate] } { + if { [dict exists $fieldSet tzName] } { + append procBody { + set timeZone [dict get $date tzName] + } + } + append procBody { + ::tcl::clock::SetupTimeZone $timeZone + } + } + # Add code that gets Julian Day Number from the fields. append procBody [MakeParseCodeFromFields $fieldSet $DateParseActions] @@ -2004,34 +1976,29 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { append procBody [MakeParseCodeFromFields $fieldSet $TimeParseActions] - # Assemble seconds, and convert local nominal time to UTC. + # Assemble seconds from the Julian day and second of the day. + # Convert to local time unless epoch seconds or stardate are + # being processed - they're always absolute - if { ![dict exists $fieldSet seconds] + if { ![dict exists $fieldSet seconds] && ![dict exists $fieldSet starDate] } { append procBody { if { [dict get $date julianDay] > 5373484 } { return -code error -errorcode [list CLOCK dateTooLarge] \ "requested date too large to represent" } - dict set date localSeconds \ - [expr { -210866803200 - + ( 86400 * wide([dict get $date julianDay]) ) - + [dict get $date secondOfDay] }] + dict set date localSeconds [expr { + -210866803200 + + ( 86400 * wide([dict get $date julianDay]) ) + + [dict get $date secondOfDay] + }] } - } - if { ![dict exists $fieldSet seconds] - && ![dict exists $fieldSet starDate] } { - if { [dict exists $fieldSet tzName] } { - append procBody { - set timeZone [dict get $date tzName] - } - } + # Finally, convert the date to local time + append procBody { - ::tcl::clock::SetupTimeZone $timeZone set date [::tcl::clock::ConvertLocalToUTC $date[set date {}] \ - $TZData($timeZone) \ - $changeover] + $TZData($timeZone) $changeover] } } @@ -2045,20 +2012,19 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { return $procName } - + #---------------------------------------------------------------------- # # LocaleNumeralMatcher -- # -# Composes a regexp that captures the numerals in the given -# locale, and a dictionary to map them to conventional numerals. +# Composes a regexp that captures the numerals in the given locale, and +# a dictionary to map them to conventional numerals. # # Parameters: # locale - Name of the current locale # # Results: -# Returns a two-element list comprising the regexp and the -# dictionary. +# Returns a two-element list comprising the regexp and the dictionary. # # Side effects: # Caches the result. @@ -2066,7 +2032,6 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { #---------------------------------------------------------------------- proc ::tcl::clock::LocaleNumeralMatcher {l} { - variable LocaleNumeralCache if { ![dict exists $LocaleNumeralCache $l] } { @@ -2085,16 +2050,16 @@ proc ::tcl::clock::LocaleNumeralMatcher {l} { } return [dict get $LocaleNumeralCache $l] } - + #---------------------------------------------------------------------- # # UniquePrefixRegexp -- # -# Composes a regexp that performs unique-prefix matching. The -# RE matches one of a supplied set of strings, or any unique -# prefix thereof. +# Composes a regexp that performs unique-prefix matching. The RE +# matches one of a supplied set of strings, or any unique prefix +# thereof. # # Parameters: # data - List of alternating match-strings and values. @@ -2102,10 +2067,10 @@ proc ::tcl::clock::LocaleNumeralMatcher {l} { # distinct. # # Results: -# Returns a two-element list. The first is a regexp that -# matches any unique prefix of any of the strings. The second -# is a dictionary whose keys are match values from the regexp -# and whose values are the corresponding values from 'data'. +# Returns a two-element list. The first is a regexp that matches any +# unique prefix of any of the strings. The second is a dictionary whose +# keys are match values from the regexp and whose values are the +# corresponding values from 'data'. # # Side effects: # None. @@ -2113,11 +2078,10 @@ proc ::tcl::clock::LocaleNumeralMatcher {l} { #---------------------------------------------------------------------- proc ::tcl::clock::UniquePrefixRegexp { data } { - - # The 'successors' dictionary will contain, for each string that - # is a prefix of any key, all characters that may follow that - # prefix. The 'prefixMapping' dictionary will have keys that - # are prefixes of keys and values that correspond to the keys. + # The 'successors' dictionary will contain, for each string that is a + # prefix of any key, all characters that may follow that prefix. The + # 'prefixMapping' dictionary will have keys that are prefixes of keys and + # values that correspond to the keys. set prefixMapping [dict create] set successors [dict create {} {}] @@ -2125,8 +2089,7 @@ proc ::tcl::clock::UniquePrefixRegexp { data } { # Walk the key-value pairs foreach { key value } $data { - - # Construct all prefixes of the key; + # Construct all prefixes of the key; set prefix {} foreach char [split $key {}] { @@ -2144,8 +2107,8 @@ proc ::tcl::clock::UniquePrefixRegexp { data } { } } - # Identify those prefixes that designate unique values, and - # those that are the full keys + # Identify those prefixes that designate unique values, and those that are + # the full keys set uniquePrefixMapping {} dict for { key valueList } $prefixMapping { @@ -2168,8 +2131,8 @@ proc ::tcl::clock::UniquePrefixRegexp { data } { # # MakeUniquePrefixRegexp -- # -# Service procedure for 'UniquePrefixRegexp' that constructs -# a regular expresison that matches the unique prefixes. +# Service procedure for 'UniquePrefixRegexp' that constructs a regular +# expresison that matches the unique prefixes. # # Parameters: # successors - Dictionary whose keys are all prefixes @@ -2181,18 +2144,17 @@ proc ::tcl::clock::UniquePrefixRegexp { data } { # prefixString - Current prefix being processed. # # Results: -# Returns a constructed regular expression that matches the set -# of unique prefixes beginning with the 'prefixString'. +# Returns a constructed regular expression that matches the set of +# unique prefixes beginning with the 'prefixString'. # # Side effects: # None. # #---------------------------------------------------------------------- -proc ::tcl::clock::MakeUniquePrefixRegexp { successors +proc ::tcl::clock::MakeUniquePrefixRegexp { successors uniquePrefixMapping prefixString } { - # Get the characters that may follow the current prefix string set schars [lsort -ascii [dict keys [dict get $successors $prefixString]]] @@ -2200,13 +2162,15 @@ proc ::tcl::clock::MakeUniquePrefixRegexp { successors return {} } - # If there is more than one successor character, or if the current - # prefix is a unique prefix, surround the generated re with non-capturing + # If there is more than one successor character, or if the current prefix + # is a unique prefix, surround the generated re with non-capturing # parentheses. set re {} - if { [dict exists $uniquePrefixMapping $prefixString] - || [llength $schars] > 1 } { + if { + [dict exists $uniquePrefixMapping $prefixString] + || [llength $schars] > 1 + } then { append re "(?:" } @@ -2228,7 +2192,7 @@ proc ::tcl::clock::MakeUniquePrefixRegexp { successors if { [dict exists $uniquePrefixMapping $prefixString] } { append re ")?" - } elseif { [llength $schars] > 1 } { + } elseif { [llength $schars] > 1 } { append re ")" } @@ -2239,8 +2203,8 @@ proc ::tcl::clock::MakeUniquePrefixRegexp { successors # # MakeParseCodeFromFields -- # -# Composes Tcl code to extract the Julian Day Number from a -# dictionary containing date fields. +# Composes Tcl code to extract the Julian Day Number from a dictionary +# containing date fields. # # Parameters: # dateFields -- Dictionary whose keys are fields of the date, @@ -2251,8 +2215,8 @@ proc ::tcl::clock::MakeUniquePrefixRegexp { successors # the list must be in ascending order by priority # # Results: -# Returns a burst of code that extracts the day number from the -# given date. +# Returns a burst of code that extracts the day number from the given +# date. # # Side effects: # None. @@ -2260,7 +2224,6 @@ proc ::tcl::clock::MakeUniquePrefixRegexp { successors #---------------------------------------------------------------------- proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } { - set currPrio 999 set currFieldPos [list] set currCodeBurst { @@ -2268,16 +2231,15 @@ proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } { } foreach { fieldSet prio parseAction } $parseActions { - - # If we've found an answer that's better than any that follow, - # quit now. + # If we've found an answer that's better than any that follow, quit + # now. if { $prio > $currPrio } { break } - # Accumulate the field positions that are used in the current - # field grouping. + # Accumulate the field positions that are used in the current field + # grouping. set fieldPos [list] set ok true @@ -2300,9 +2262,11 @@ proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } { if { $prio == $currPrio } { foreach currPos $currFieldPos newPos $fPos { - if { ![string is integer $newPos] - || ![string is integer $currPos] - || $newPos > $currPos } { + if { + ![string is integer $newPos] + || ![string is integer $currPos] + || $newPos > $currPos + } then { break } if { $newPos < $currPos } { @@ -2320,11 +2284,9 @@ proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } { set currPrio $prio set currFieldPos $fPos set currCodeBurst $parseAction - } return $currCodeBurst - } #---------------------------------------------------------------------- @@ -2342,14 +2304,13 @@ proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } { # Returns the locale that was previously current. # # Side effects: -# Does [mclocale]. If necessary, uses [mcload] to load the -# designated locale's files, and tracks that it has done so -# in the 'McLoaded' variable. +# Does [mclocale]. If necessary, uses [mcload] to load the designated +# locale's files, and tracks that it has done so in the 'McLoaded' +# variable. # #---------------------------------------------------------------------- proc ::tcl::clock::EnterLocale { locale oldLocaleVar } { - upvar 1 $oldLocaleVar oldLocale variable MsgDir @@ -2357,27 +2318,24 @@ proc ::tcl::clock::EnterLocale { locale oldLocaleVar } { set oldLocale [mclocale] if { $locale eq {system} } { - if { $::tcl_platform(platform) ne {windows} } { - - # On a non-windows platform, the 'system' locale is - # the same as the 'current' locale + # On a non-windows platform, the 'system' locale is the same as + # the 'current' locale set locale current } else { - - # On a windows platform, the 'system' locale is - # adapted from the 'current' locale by applying the - # date and time formats from the Control Panel. - # First, load the 'current' locale if it's not yet loaded + # On a windows platform, the 'system' locale is adapted from the + # 'current' locale by applying the date and time formats from the + # Control Panel. First, load the 'current' locale if it's not yet + # loaded if {![dict exists $McLoaded $oldLocale] } { mcload $MsgDir dict set McLoaded $oldLocale {} } - # Make a new locale string for the system locale, and - # get the Control Panel information + # Make a new locale string for the system locale, and get the + # Control Panel information set locale ${oldLocale}_windows if { ![dict exists $McLoaded $locale] } { @@ -2398,15 +2356,14 @@ proc ::tcl::clock::EnterLocale { locale oldLocaleVar } { mcload $MsgDir dict set McLoaded $locale {} } - -} +} #---------------------------------------------------------------------- # # LoadWindowsDateTimeFormats -- # -# Load the date/time formats from the Control Panel in Windows -# and convert them so that they're usable by Tcl. +# Load the date/time formats from the Control Panel in Windows and +# convert them so that they're usable by Tcl. # # Parameters: # locale - Name of the locale in whose message catalog @@ -2418,14 +2375,12 @@ proc ::tcl::clock::EnterLocale { locale oldLocaleVar } { # Side effects: # Updates the given message catalog with the locale strings. # -# Presumes that on entry, [mclocale] is set to the current locale, -# so that default strings can be obtained if the Registry query -# fails. +# Presumes that on entry, [mclocale] is set to the current locale, so that +# default strings can be obtained if the Registry query fails. # #---------------------------------------------------------------------- proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } { - # Bail out if we can't find the Registry variable NoRegistry @@ -2527,7 +2482,6 @@ proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } { } return - } #---------------------------------------------------------------------- @@ -2542,8 +2496,8 @@ proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } { # format -- Format supplied to [clock scan] or [clock format] # # Results: -# Returns the string with locale-dependent composite format -# groups substituted out. +# Returns the string with locale-dependent composite format groups +# substituted out. # # Side effects: # None. @@ -2551,7 +2505,6 @@ proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } { #---------------------------------------------------------------------- proc ::tcl::clock::LocalizeFormat { locale format } { - variable McLoaded if { [dict exists $McLoaded $locale FORMAT $format] } { @@ -2559,24 +2512,27 @@ proc ::tcl::clock::LocalizeFormat { locale format } { } set inFormat $format - # Handle locale-dependent format groups by mapping them out of - # the input string. Note that the order of the [string map] - # operations is significant because earlier formats can refer - # to later ones; for example %c can refer to %X, which in turn - # can refer to %T. - - set format [string map [list %c [mc DATE_TIME_FORMAT] \ - %Ec [mc LOCALE_DATE_TIME_FORMAT]] $format] - set format [string map [list %x [mc DATE_FORMAT] \ - %Ex [mc LOCALE_DATE_FORMAT] \ - %X [mc TIME_FORMAT] \ - %EX [mc LOCALE_TIME_FORMAT]] $format] - set format [string map [list %r [mc TIME_FORMAT_12] \ - %R [mc TIME_FORMAT_24] \ - %T [mc TIME_FORMAT_24_SECS]] $format] - set format [string map [list %D %m/%d/%Y \ - %EY [mc LOCALE_YEAR_FORMAT]\ - %+ {%a %b %e %H:%M:%S %Z %Y}] $format] + # Handle locale-dependent format groups by mapping them out of the format + # string. Note that the order of the [string map] operations is + # significant because later formats can refer to later ones; for example + # %c can refer to %X, which in turn can refer to %T. + + set list { + %% %% + %D %m/%d/%Y + %+ {%a %b %e %H:%M:%S %Z %Y} + } + lappend list %EY [string map $list [mc LOCALE_YEAR_FORMAT]] + lappend list %T [string map $list [mc TIME_FORMAT_24_SECS]] + lappend list %R [string map $list [mc TIME_FORMAT_24]] + lappend list %r [string map $list [mc TIME_FORMAT_12]] + lappend list %X [string map $list [mc TIME_FORMAT]] + lappend list %EX [string map $list [mc LOCALE_TIME_FORMAT]] + lappend list %x [string map $list [mc DATE_FORMAT]] + lappend list %Ex [string map $list [mc LOCALE_DATE_FORMAT]] + lappend list %c [string map $list [mc DATE_TIME_FORMAT]] + lappend list %Ec [string map $list [mc LOCALE_DATE_TIME_FORMAT]] + set format [string map $list $format] dict set McLoaded $locale FORMAT $inFormat $format return $format @@ -2600,7 +2556,6 @@ proc ::tcl::clock::LocalizeFormat { locale format } { #---------------------------------------------------------------------- proc ::tcl::clock::FormatNumericTimeZone { z } { - if { $z < 0 } { set z [expr { - $z }] set retval - @@ -2615,7 +2570,6 @@ proc ::tcl::clock::FormatNumericTimeZone { z } { append retval [::format %02d $z] } return $retval - } #---------------------------------------------------------------------- @@ -2640,7 +2594,6 @@ proc ::tcl::clock::FormatNumericTimeZone { z } { #---------------------------------------------------------------------- proc ::tcl::clock::FormatStarDate { date } { - variable Roddenberry # Get day of year, zero based @@ -2691,7 +2644,6 @@ proc ::tcl::clock::FormatStarDate { date } { #---------------------------------------------------------------------- proc ::tcl::clock::ParseStarDate { year fractYear fractDay } { - variable Roddenberry # Build a tentative date from year and fraction. @@ -2707,8 +2659,8 @@ proc ::tcl::clock::ParseStarDate { year fractYear fractDay } { set lp [IsGregorianLeapYear $date] - # Reconvert the fractional year according to whether the given - # year is a leap year + # Reconvert the fractional year according to whether the given year is a + # leap year if { $lp } { dict set date dayOfYear \ @@ -2721,10 +2673,11 @@ proc ::tcl::clock::ParseStarDate { year fractYear fractDay } { dict unset date gregorian set date [GetJulianDayFromGregorianEraYearDay $date[set date {}]] - return [expr { 86400 * [dict get $date julianDay] - - 210866803200 - + ( 86400 / 10 ) * $fractDay }] - + return [expr { + 86400 * [dict get $date julianDay] + - 210866803200 + + ( 86400 / 10 ) * $fractDay + }] } #---------------------------------------------------------------------- @@ -2737,8 +2690,8 @@ proc ::tcl::clock::ParseStarDate { year fractYear fractDay } { # str - String containing a decimal wide integer # # Results: -# Returns the string as a pure wide integer. Throws an error if -# the string is misformatted or out of range. +# Returns the string as a pure wide integer. Throws an error if the +# string is misformatted or out of range. # #---------------------------------------------------------------------- @@ -2759,8 +2712,8 @@ proc ::tcl::clock::ScanWide { str } { # # InterpretTwoDigitYear -- # -# Given a date that contains only the year of the century, -# determines the target value of a two-digit year. +# Given a date that contains only the year of the century, determines +# the target value of a two-digit year. # # Parameters: # date - Dictionary containing fields of the date. @@ -2777,18 +2730,17 @@ proc ::tcl::clock::ScanWide { str } { # Side effects: # None. # -# The current rule for interpreting a two-digit year is that the year -# shall be between 1937 and 2037, thus staying within the range of a -# 32-bit signed value for time. This rule may change to a sliding -# window in future versions, so the 'baseTime' parameter (which is -# currently ignored) is provided in the procedure signature. +# The current rule for interpreting a two-digit year is that the year shall be +# between 1937 and 2037, thus staying within the range of a 32-bit signed +# value for time. This rule may change to a sliding window in future +# versions, so the 'baseTime' parameter (which is currently ignored) is +# provided in the procedure signature. # #---------------------------------------------------------------------- -proc ::tcl::clock::InterpretTwoDigitYear { date baseTime +proc ::tcl::clock::InterpretTwoDigitYear { date baseTime { twoDigitField yearOfCentury } { fourDigitField year } } { - set yr [dict get $date $twoDigitField] if { $yr <= 37 } { dict set date $fourDigitField [expr { $yr + 2000 }] @@ -2796,7 +2748,6 @@ proc ::tcl::clock::InterpretTwoDigitYear { date baseTime dict set date $fourDigitField [expr { $yr + 1900 }] } return $date - } #---------------------------------------------------------------------- @@ -2822,7 +2773,6 @@ proc ::tcl::clock::InterpretTwoDigitYear { date baseTime #---------------------------------------------------------------------- proc ::tcl::clock::AssignBaseYear { date baseTime timezone changeover } { - variable TZData # Find the Julian Day Number corresponding to the base time, and @@ -2836,7 +2786,6 @@ proc ::tcl::clock::AssignBaseYear { date baseTime timezone changeover } { dict set date year [dict get $date2 year] return $date - } #---------------------------------------------------------------------- @@ -2863,7 +2812,6 @@ proc ::tcl::clock::AssignBaseYear { date baseTime timezone changeover } { #---------------------------------------------------------------------- proc ::tcl::clock::AssignBaseIso8601Year {date baseTime timeZone changeover} { - variable TZData # Find the Julian Day Number corresponding to the base time @@ -2881,7 +2829,7 @@ proc ::tcl::clock::AssignBaseIso8601Year {date baseTime timeZone changeover} { # # AssignBaseMonth -- # -# Places the number of the current year and month into a +# Places the number of the current year and month into a # dictionary. # # Parameters: @@ -2900,7 +2848,6 @@ proc ::tcl::clock::AssignBaseIso8601Year {date baseTime timeZone changeover} { #---------------------------------------------------------------------- proc ::tcl::clock::AssignBaseMonth {date baseTime timezone changeover} { - variable TZData # Find the year and month corresponding to the base time @@ -2910,7 +2857,6 @@ proc ::tcl::clock::AssignBaseMonth {date baseTime timezone changeover} { dict set date year [dict get $date2 year] dict set date month [dict get $date2 month] return $date - } #---------------------------------------------------------------------- @@ -2936,7 +2882,6 @@ proc ::tcl::clock::AssignBaseMonth {date baseTime timezone changeover} { #---------------------------------------------------------------------- proc ::tcl::clock::AssignBaseWeek {date baseTime timeZone changeover} { - variable TZData # Find the Julian Day Number corresponding to the base time @@ -2973,7 +2918,6 @@ proc ::tcl::clock::AssignBaseWeek {date baseTime timeZone changeover} { #---------------------------------------------------------------------- proc ::tcl::clock::AssignBaseJulianDay { date baseTime timeZone changeover } { - variable TZData # Find the Julian Day Number corresponding to the base time @@ -3003,7 +2947,6 @@ proc ::tcl::clock::AssignBaseJulianDay { date baseTime timeZone changeover } { #---------------------------------------------------------------------- proc ::tcl::clock::InterpretHMSP { date } { - set hr [dict get $date hourAMPM] if { $hr == 12 } { set hr 0 @@ -3013,7 +2956,6 @@ proc ::tcl::clock::InterpretHMSP { date } { } dict set date hour $hr return [InterpretHMS $date[set date {}]] - } #---------------------------------------------------------------------- @@ -3036,11 +2978,11 @@ proc ::tcl::clock::InterpretHMSP { date } { #---------------------------------------------------------------------- proc ::tcl::clock::InterpretHMS { date } { - - return [expr { ( [dict get $date hour] * 60 - + [dict get $date minute] ) * 60 - + [dict get $date second] }] - + return [expr { + ( [dict get $date hour] * 60 + + [dict get $date minute] ) * 60 + + [dict get $date second] + }] } #---------------------------------------------------------------------- @@ -3063,7 +3005,6 @@ proc ::tcl::clock::InterpretHMS { date } { #---------------------------------------------------------------------- proc ::tcl::clock::GetSystemTimeZone {} { - variable CachedSystemTimeZone variable TimeZoneBad @@ -3071,18 +3012,23 @@ proc ::tcl::clock::GetSystemTimeZone {} { set timezone $result } elseif {[set result [getenv TZ]] ne {}} { set timezone $result - } elseif { [info exists CachedSystemTimeZone] } { - set timezone $CachedSystemTimeZone - } elseif { $::tcl_platform(platform) eq {windows} } { - set timezone [GuessWindowsTimeZone] - } elseif { [file exists /etc/localtime] - && ![catch {ReadZoneinfoFile \ - Tcl/Localtime /etc/localtime}] } { - set timezone :Tcl/Localtime - } else { - set timezone :localtime } - set CachedSystemTimeZone $timezone + if {![info exists timezone]} { + # Cache the time zone only if it was detected by one of the + # expensive methods. + if { [info exists CachedSystemTimeZone] } { + set timezone $CachedSystemTimeZone + } elseif { $::tcl_platform(platform) eq {windows} } { + set timezone [GuessWindowsTimeZone] + } elseif { [file exists /etc/localtime] + && ![catch {ReadZoneinfoFile \ + Tcl/Localtime /etc/localtime}] } { + set timezone :Tcl/Localtime + } else { + set timezone :localtime + } + set CachedSystemTimeZone $timezone + } if { ![dict exists $TimeZoneBad $timezone] } { dict set TimeZoneBad $timezone [catch {SetupTimeZone $timezone}] } @@ -3091,76 +3037,69 @@ proc ::tcl::clock::GetSystemTimeZone {} { } else { return $timezone } - } #---------------------------------------------------------------------- # # ConvertLegacyTimeZone -- # -# Given an alphanumeric time zone identifier and the system -# time zone, convert the alphanumeric identifier to an -# unambiguous time zone. +# Given an alphanumeric time zone identifier and the system time zone, +# convert the alphanumeric identifier to an unambiguous time zone. # # Parameters: # tzname - Name of the time zone to convert # # Results: -# Returns a time zone name corresponding to tzname, but -# in an unambiguous form, generally +hhmm. +# Returns a time zone name corresponding to tzname, but in an +# unambiguous form, generally +hhmm. # -# This procedure is implemented primarily to allow the parsing of -# RFC822 date/time strings. Processing a time zone name on input -# is not recommended practice, because there is considerable room -# for ambiguity; for instance, is BST Brazilian Standard Time, or -# British Summer Time? +# This procedure is implemented primarily to allow the parsing of RFC822 +# date/time strings. Processing a time zone name on input is not recommended +# practice, because there is considerable room for ambiguity; for instance, is +# BST Brazilian Standard Time, or British Summer Time? # #---------------------------------------------------------------------- proc ::tcl::clock::ConvertLegacyTimeZone { tzname } { - variable LegacyTimeZone set tzname [string tolower $tzname] if { ![dict exists $LegacyTimeZone $tzname] } { return -code error -errorcode [list CLOCK badTZName $tzname] \ "time zone \"$tzname\" not found" - } else { - return [dict get $LegacyTimeZone $tzname] } - + return [dict get $LegacyTimeZone $tzname] } #---------------------------------------------------------------------- # # SetupTimeZone -- # -# Given the name or specification of a time zone, sets up -# its in-memory data. +# Given the name or specification of a time zone, sets up its in-memory +# data. # # Parameters: # tzname - Name of a time zone # # Results: -# Unless the time zone is ':localtime', sets the TZData array -# to contain the lookup table for local<->UTC conversion. -# Returns an error if the time zone cannot be parsed. +# Unless the time zone is ':localtime', sets the TZData array to contain +# the lookup table for local<->UTC conversion. Returns an error if the +# time zone cannot be parsed. # #---------------------------------------------------------------------- proc ::tcl::clock::SetupTimeZone { timezone } { - variable TZData if {! [info exists TZData($timezone)] } { variable MINWIDE if { $timezone eq {:localtime} } { - # Nothing to do, we'll convert using the localtime function - } elseif { [regexp {^([-+])(\d\d)(?::?(\d\d)(?::?(\d\d))?)?} $timezone \ - -> s hh mm ss] } { - + } elseif { + [regexp {^([-+])(\d\d)(?::?(\d\d)(?::?(\d\d))?)?} $timezone \ + -> s hh mm ss] + } then { # Make a fixed offset ::scan $hh %d hh @@ -3181,24 +3120,21 @@ proc ::tcl::clock::SetupTimeZone { timezone } { set TZData($timezone) [list [list $MINWIDE $offset -1 $timezone]] } elseif { [string index $timezone 0] eq {:} } { - # Convert using a time zone file - if { + if { [catch { LoadTimeZoneFile [string range $timezone 1 end] - }] - && [catch { + }] && [catch { LoadZoneinfoFile [string range $timezone 1 end] }] - } { + } then { return -code error \ -errorcode [list CLOCK badTimeZone $timezone] \ "time zone \"$timezone\" not found" } - + } elseif { ![catch {ParsePosixTimeZone $timezone} tzfields] } { - # This looks like a POSIX time zone - try to process it if { [catch {ProcessPosixTimeZone $tzfields} data opts] } { @@ -3211,9 +3147,8 @@ proc ::tcl::clock::SetupTimeZone { timezone } { } } else { - - # We couldn't parse this as a POSIX time zone. Try - # again with a time zone file - this time without a colon + # We couldn't parse this as a POSIX time zone. Try again with a + # time zone file - this time without a colon if { [catch { LoadTimeZoneFile $timezone }] && [catch { LoadZoneinfoFile $timezone } - opts] } { @@ -3237,25 +3172,22 @@ proc ::tcl::clock::SetupTimeZone { timezone } { # None. # # Results: -# Returns a time zone specifier that corresponds to the system -# time zone information found in the Registry. +# Returns a time zone specifier that corresponds to the system time zone +# information found in the Registry. # # Bugs: -# Fixed dates for DST change are unimplemented at present, because -# no time zone information supplied with Windows actually uses -# them! +# Fixed dates for DST change are unimplemented at present, because no +# time zone information supplied with Windows actually uses them! # -# On a Windows system where neither $env(TCL_TZ) nor $env(TZ) is -# specified, GuessWindowsTimeZone looks in the Registry for the -# system time zone information. It then attempts to find an entry -# in WinZoneInfo for a time zone that uses the same rules. If -# it finds one, it returns it; otherwise, it constructs a Posix-style -# time zone string and returns that. +# On a Windows system where neither $env(TCL_TZ) nor $env(TZ) is specified, +# GuessWindowsTimeZone looks in the Registry for the system time zone +# information. It then attempts to find an entry in WinZoneInfo for a time +# zone that uses the same rules. If it finds one, it returns it; otherwise, +# it constructs a Posix-style time zone string and returns that. # #---------------------------------------------------------------------- proc ::tcl::clock::GuessWindowsTimeZone {} { - variable WinZoneInfo variable NoRegistry variable TimeZoneBad @@ -3286,16 +3218,14 @@ proc ::tcl::clock::GuessWindowsTimeZone {} { lappend data $val } }] } { - # Missing values in the Registry - bail out return :localtime } - # Make up a Posix time zone specifier if we can't find one. - # Check here that the tzdata file exists, in case we're running - # in an environment (e.g. starpack) where tzdata is incomplete. - # (Bug 1237907) + # Make up a Posix time zone specifier if we can't find one. Check here + # that the tzdata file exists, in case we're running in an environment + # (e.g. starpack) where tzdata is incomplete. (Bug 1237907) if { [dict exists $WinZoneInfo $data] } { set tzname [dict get $WinZoneInfo $data] @@ -3343,11 +3273,11 @@ proc ::tcl::clock::GuessWindowsTimeZone {} { if { $dstYear == 0 } { append tzname ,M $dstMonth . $dstDayOfMonth . $dstDayOfWeek } else { - # I have not been able to find any locale on which - # Windows converts time zone on a fixed day of the year, - # hence don't know how to interpret the fields. - # If someone can inform me, I'd be glad to code it up. - # For right now, we bail out in such a case. + # I have not been able to find any locale on which Windows + # converts time zone on a fixed day of the year, hence don't + # know how to interpret the fields. If someone can inform me, + # I'd be glad to code it up. For right now, we bail out in + # such a case. return :localtime } append tzname / [::format %02d $dstHour] \ @@ -3356,11 +3286,11 @@ proc ::tcl::clock::GuessWindowsTimeZone {} { if { $stdYear == 0 } { append tzname ,M $stdMonth . $stdDayOfMonth . $stdDayOfWeek } else { - # I have not been able to find any locale on which - # Windows converts time zone on a fixed day of the year, - # hence don't know how to interpret the fields. - # If someone can inform me, I'd be glad to code it up. - # For right now, we bail out in such a case. + # I have not been able to find any locale on which Windows + # converts time zone on a fixed day of the year, hence don't + # know how to interpret the fields. If someone can inform me, + # I'd be glad to code it up. For right now, we bail out in + # such a case. return :localtime } append tzname / [::format %02d $stdHour] \ @@ -3368,10 +3298,9 @@ proc ::tcl::clock::GuessWindowsTimeZone {} { : [::format %02d $stdSecond] } dict set WinZoneInfo $data $tzname - } + } return [dict get $WinZoneInfo $data] - } #---------------------------------------------------------------------- @@ -3400,18 +3329,18 @@ proc ::tcl::clock::LoadTimeZoneFile { fileName } { return } - # Since an unsafe interp uses the [clock] command in the master, - # this code is security sensitive. Make sure that the path name - # cannot escape the given directory. + # Since an unsafe interp uses the [clock] command in the master, this code + # is security sensitive. Make sure that the path name cannot escape the + # given directory. if { ![regexp {^[[.-.][:alpha:]_]+(?:/[[.-.][:alpha:]_]+)*$} $fileName] } { return -code error \ -errorcode [list CLOCK badTimeZone $:fileName] \ "time zone \":$fileName\" not valid" } - if { [catch { + try { source -encoding utf-8 [file join $DataDir $fileName] - }] } { + } on error {} { return -code error \ -errorcode [list CLOCK badTimeZone :$fileName] \ "time zone \":$fileName\" not found" @@ -3429,8 +3358,8 @@ proc ::tcl::clock::LoadTimeZoneFile { fileName } { # fileName - Relative path name of the file to load. # # Results: -# Returns an empty result normally; returns an error if no -# Olson file was found or the file was malformed in some way. +# Returns an empty result normally; returns an error if no Olson file +# was found or the file was malformed in some way. # # Side effects: # TZData(:fileName) contains the time zone data @@ -3438,12 +3367,11 @@ proc ::tcl::clock::LoadTimeZoneFile { fileName } { #---------------------------------------------------------------------- proc ::tcl::clock::LoadZoneinfoFile { fileName } { - variable ZoneinfoPaths - # Since an unsafe interp uses the [clock] command in the master, - # this code is security sensitive. Make sure that the path name - # cannot escape the given directory. + # Since an unsafe interp uses the [clock] command in the master, this code + # is security sensitive. Make sure that the path name cannot escape the + # given directory. if { ![regexp {^[[.-.][:alpha:]_]+(?:/[[.-.][:alpha:]_]+)*$} $fileName] } { return -code error \ @@ -3472,19 +3400,18 @@ proc ::tcl::clock::LoadZoneinfoFile { fileName } { # fname - Absolute path name of the file. # # Results: -# Returns an empty result normally; returns an error if no -# Olson file was found or the file was malformed in some way. +# Returns an empty result normally; returns an error if no Olson file +# was found or the file was malformed in some way. # # Side effects: # TZData(:fileName) contains the time zone data # #---------------------------------------------------------------------- - proc ::tcl::clock::ReadZoneinfoFile {fileName fname} { variable MINWIDE variable TZData - if { ![info exists fname] } { + if { ![file exists $fname] } { return -code error "$fileName not found" } @@ -3499,8 +3426,8 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} { set d [read $f] close $f - # The file begins with a magic number, sixteen reserved bytes, - # and then six 4-byte integers giving counts of fileds in the file. + # The file begins with a magic number, sixteen reserved bytes, and then + # six 4-byte integers giving counts of fileds in the file. binary scan $d a4a1x15IIIIII \ magic version nIsGMT nIsStd nLeap nTime nType nChar @@ -3518,18 +3445,19 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} { return -code error "$fileName contains leap seconds" } - # In a version 2 file, we use the second part of the file, which - # contains 64-bit transition times. + # In a version 2 file, we use the second part of the file, which contains + # 64-bit transition times. if {$version eq "2"} { - set seek [expr {44 - + 5 * $nTime - + 6 * $nType - + 4 * $nLeap - + $nIsStd - + $nIsGMT - + $nChar - }] + set seek [expr { + 44 + + 5 * $nTime + + 6 * $nType + + 4 * $nLeap + + $nIsStd + + $nIsGMT + + $nChar + }] binary scan $d @${seek}a4a1x15IIIIII \ magic version nIsGMT nIsStd nLeap nTime nType nChar if {$magic ne {TZif}} { @@ -3553,9 +3481,9 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} { } set codes [linsert $codes 0 0] - # Next come ${nType} time type descriptions, each of which has an - # offset (seconds east of GMT), a DST indicator, and an index into - # the abbreviation text. + # Next come ${nType} time type descriptions, each of which has an offset + # (seconds east of GMT), a DST indicator, and an index into the + # abbreviation text. for { set i 0 } { $i < $nType } { incr i } { binary scan $d @${seek}Icc gmtOff isDst abbrInd @@ -3563,10 +3491,10 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} { incr seek 6 } - # Next come $nChar characters of time zone name abbreviations, - # which are null-terminated. - # We build them up into a dictionary indexed by character index, - # because that's what's in the indices above. + # Next come $nChar characters of time zone name abbreviations, which are + # null-terminated. + # We build them up into a dictionary indexed by character index, because + # that's what's in the indices above. binary scan $d @${seek}a${nChar} abbrs incr seek ${nChar} @@ -3574,8 +3502,10 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} { set i 0 set abbrevs {} foreach a $abbrList { - dict set abbrevs $i $a - incr i [expr { [string length $a] + 1 }] + for {set j 0} {$j <= [string length $a]} {incr j} { + dict set abbrevs $i [string range $a $j end] + incr i + } } # Package up a list of tuples, each of which contains transition time, @@ -3594,8 +3524,8 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} { } # In a version 2 file, there is also a POSIX-style time zone description - # at the very end of the file. To get to it, skip over - # nLeap leap second values (8 bytes each), + # at the very end of the file. To get to it, skip over nLeap leap second + # values (8 bytes each), # nIsStd standard/DST indicators and nIsGMT UTC/local indicators. if {$version eq {2}} { @@ -3628,8 +3558,8 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} { # tz Time zone specifier to be interpreted # # Results: -# Returns a dictionary whose values contain the various pieces of -# the time zone specification. +# Returns a dictionary whose values contain the various pieces of the +# time zone specification. # # Side effects: # None. @@ -3640,7 +3570,7 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} { # The following keys are present in the dictionary: # stdName - Name of the time zone when Daylight Saving Time # is not in effect. -# stdSignum - Sign (+, -, or empty) of the offset from Greenwich +# stdSignum - Sign (+, -, or empty) of the offset from Greenwich # to the given (non-DST) time zone. + and the empty # string denote zones west of Greenwich, - denotes east # of Greenwich; this is contrary to the ISO convention @@ -3685,14 +3615,13 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} { # endHours, endMinutes, endSeconds - # Specify the end of DST in the same way that the start* fields # specify the beginning of DST. -# -# This procedure serves only to break the time specifier into fields. -# No attempt is made to canonicalize the fields or supply default values. +# +# This procedure serves only to break the time specifier into fields. No +# attempt is made to canonicalize the fields or supply default values. # #---------------------------------------------------------------------- proc ::tcl::clock::ParsePosixTimeZone { tz } { - if {[regexp -expanded -nocase -- { ^ # 1 - Standard time zone name @@ -3703,8 +3632,8 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } { ([[:digit:]]{1,2}) (?: # 4 - Standard time zone offset, minutes - : ([[:digit:]]{1,2}) - (?: + : ([[:digit:]]{1,2}) + (?: # 5 - Standard time zone offset, seconds : ([[:digit:]]{1,2} ) )? @@ -3720,8 +3649,8 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } { ([[:digit:]]{1,2}) (?: # 9 - DST time zone offset, minutes - : ([[:digit:]]{1,2}) - (?: + : ([[:digit:]]{1,2}) + (?: # 10 - DST time zone offset, seconds : ([[:digit:]]{1,2}) )? @@ -3734,8 +3663,8 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } { ( J ? ) ( [[:digit:]]+ ) | M # 13 - Month number 14 - Week of month 15 - Day of week - ( [[:digit:]] + ) - [.] ( [[:digit:]] + ) + ( [[:digit:]] + ) + [.] ( [[:digit:]] + ) [.] ( [[:digit:]] + ) ) (?: @@ -3756,8 +3685,8 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } { ( J ? ) ( [[:digit:]]+ ) | M # 21 - Month number 22 - Week of month 23 - Day of week - ( [[:digit:]] + ) - [.] ( [[:digit:]] + ) + ( [[:digit:]] + ) + [.] ( [[:digit:]] + ) [.] ( [[:digit:]] + ) ) (?: @@ -3784,27 +3713,21 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } { x(endJ) x(endDayOfYear) \ x(endMonth) x(endWeekOfMonth) x(endDayOfWeek) \ x(endHours) x(endMinutes) x(endSeconds)] } { - # it's a good timezone return [array get x] - - } else { - - return -code error\ - -errorcode [list CLOCK badTimeZone $tz] \ - "unable to parse time zone specification \"$tz\"" - } + return -code error\ + -errorcode [list CLOCK badTimeZone $tz] \ + "unable to parse time zone specification \"$tz\"" } #---------------------------------------------------------------------- # # ProcessPosixTimeZone -- # -# Handle a Posix time zone after it's been broken out into -# fields. +# Handle a Posix time zone after it's been broken out into fields. # # Parameters: # z - Dictionary returned from 'ParsePosixTimeZone' @@ -3818,7 +3741,6 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } { #---------------------------------------------------------------------- proc ::tcl::clock::ProcessPosixTimeZone { z } { - variable MINWIDE variable TZData @@ -3833,20 +3755,20 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { } else { set stdSignum -1 } - set stdHours [lindex [::scan [dict get $z stdHours] %d] 0] + set stdHours [lindex [::scan [dict get $z stdHours] %d] 0] if { [dict get $z stdMinutes] ne {} } { - set stdMinutes [lindex [::scan [dict get $z stdMinutes] %d] 0] + set stdMinutes [lindex [::scan [dict get $z stdMinutes] %d] 0] } else { set stdMinutes 0 } if { [dict get $z stdSeconds] ne {} } { - set stdSeconds [lindex [::scan [dict get $z stdSeconds] %d] 0] + set stdSeconds [lindex [::scan [dict get $z stdSeconds] %d] 0] } else { set stdSeconds 0 } - set stdOffset [expr { ( ( $stdHours * 60 + $stdMinutes ) - * 60 + $stdSeconds ) - * $stdSignum }] + set stdOffset [expr { + (($stdHours * 60 + $stdMinutes) * 60 + $stdSeconds) * $stdSignum + }] set data [list [list $MINWIDE $stdOffset 0 $stdName]] # If there's no daylight zone, we're done @@ -3869,27 +3791,34 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { if { [dict get $z dstHours] eq {} } { set dstOffset [expr { 3600 + $stdOffset }] } else { - set dstHours [lindex [::scan [dict get $z dstHours] %d] 0] + set dstHours [lindex [::scan [dict get $z dstHours] %d] 0] if { [dict get $z dstMinutes] ne {} } { - set dstMinutes [lindex [::scan [dict get $z dstMinutes] %d] 0] + set dstMinutes [lindex [::scan [dict get $z dstMinutes] %d] 0] } else { set dstMinutes 0 } if { [dict get $z dstSeconds] ne {} } { - set dstSeconds [lindex [::scan [dict get $z dstSeconds] %d] 0] + set dstSeconds [lindex [::scan [dict get $z dstSeconds] %d] 0] } else { set dstSeconds 0 } - set dstOffset [expr { ( ( $dstHours * 60 + $dstMinutes ) - * 60 + $dstSeconds ) - * $dstSignum }] + set dstOffset [expr { + (($dstHours*60 + $dstMinutes) * 60 + $dstSeconds) * $dstSignum + }] } # Fill in defaults for European or US DST rules - - if { [dict get $z startDayOfYear] eq {} - && [dict get $z startMonth] eq {} } { - if {($stdHours>=0) && ($stdHours<=12)} { + # US start time is the second Sunday in March + # EU start time is the last Sunday in March + # US end time is the first Sunday in November. + # EU end time is the last Sunday in October + + if { + [dict get $z startDayOfYear] eq {} + && [dict get $z startMonth] eq {} + } then { + if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} { + # EU dict set z startWeekOfMonth 5 if {$stdHours>2} { dict set z startHours 2 @@ -3897,6 +3826,7 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { dict set z startHours [expr {$stdHours+1}] } } else { + # US dict set z startWeekOfMonth 2 dict set z startHours 2 } @@ -3905,9 +3835,12 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { dict set z startMinutes 0 dict set z startSeconds 0 } - if { [dict get $z endDayOfYear] eq {} - && [dict get $z endMonth] eq {} } { - if {($stdHours>=0) && ($stdHours<=12)} { + if { + [dict get $z endDayOfYear] eq {} + && [dict get $z endMonth] eq {} + } then { + if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} { + # EU dict set z endMonth 10 dict set z endWeekOfMonth 5 if {$stdHours>2} { @@ -3916,6 +3849,7 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { dict set z endHours [expr {$stdHours+2}] } } else { + # US dict set z endMonth 11 dict set z endWeekOfMonth 1 dict set z endHours 2 @@ -3927,7 +3861,7 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { # Put DST in effect in all years from 1916 to 2099. - for { set y 1916 } { $y < 2099 } { incr y } { + for { set y 1916 } { $y < 2100 } { incr y } { set startTime [DeterminePosixDSTTime $z start $y] incr startTime [expr { - wide($stdOffset) }] set endTime [DeterminePosixDSTTime $z end $y] @@ -3944,15 +3878,14 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { } return $data - -} +} #---------------------------------------------------------------------- # # DeterminePosixDSTTime -- # -# Determines the time that Daylight Saving Time starts or ends -# from a Posix time zone specification. +# Determines the time that Daylight Saving Time starts or ends from a +# Posix time zone specification. # # Parameters: # z - Time zone data returned from ParsePosixTimeZone. @@ -3962,13 +3895,12 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { # y - The year for which the transition time is to be determined. # # Results: -# Returns the transition time as a count of seconds from -# the epoch. The time is relative to the wall clock, not UTC. +# Returns the transition time as a count of seconds from the epoch. The +# time is relative to the wall clock, not UTC. # #---------------------------------------------------------------------- proc ::tcl::clock::DeterminePosixDSTTime { z bound y } { - variable FEB_28 # Determine the start or end day of DST @@ -3976,18 +3908,16 @@ proc ::tcl::clock::DeterminePosixDSTTime { z bound y } { set date [dict create era CE year $y] set doy [dict get $z ${bound}DayOfYear] if { $doy ne {} } { - # Time was specified as a day of the year if { [dict get $z ${bound}J] ne {} - && [IsGregorianLeapYear $y] + && [IsGregorianLeapYear $y] && ( $doy > $FEB_28 ) } { incr doy } dict set date dayOfYear $doy set date [GetJulianDayFromEraYearDay $date[set date {}] 2361222] } else { - # Time was specified as a day of the week within a month dict set date month [dict get $z ${bound}Month] @@ -4002,8 +3932,9 @@ proc ::tcl::clock::DeterminePosixDSTTime { z bound y } { } set jd [dict get $date julianDay] - set seconds [expr { wide($jd) * wide(86400) - - wide(210866803200) }] + set seconds [expr { + wide($jd) * wide(86400) - wide(210866803200) + }] set h [dict get $z ${bound}Hours] if { $h eq {} } { @@ -4025,7 +3956,6 @@ proc ::tcl::clock::DeterminePosixDSTTime { z bound y } { } set tod [expr { ( $h * 60 + $m ) * 60 + $s }] return [expr { $seconds + $tod }] - } #---------------------------------------------------------------------- @@ -4043,26 +3973,26 @@ proc ::tcl::clock::DeterminePosixDSTTime { z bound y } { # for the target locale. # # Results: -# Returns the dictionary, augmented with the keys, 'localeEra' -# and 'localeYear'. +# Returns the dictionary, augmented with the keys, 'localeEra' and +# 'localeYear'. # #---------------------------------------------------------------------- proc ::tcl::clock::GetLocaleEra { date etable } { - set index [BSearch $etable [dict get $date localSeconds]] if { $index < 0} { dict set date localeEra \ [::format %02d [expr { [dict get $date year] / 100 }]] - dict set date localeYear \ - [expr { [dict get $date year] % 100 }] + dict set date localeYear [expr { + [dict get $date year] % 100 + }] } else { dict set date localeEra [lindex $etable $index 1] - dict set date localeYear [expr { [dict get $date year] - - [lindex $etable $index 2] }] + dict set date localeYear [expr { + [dict get $date year] - [lindex $etable $index 2] + }] } return $date - } #---------------------------------------------------------------------- @@ -4080,10 +4010,9 @@ proc ::tcl::clock::GetLocaleEra { date etable } { # adopted in the current locale. # # Results: -# Returns the given dictionary augmented with a 'julianDay' key -# whose value is the desired Julian Day Number, and a 'gregorian' -# key that specifies whether the calendar is Gregorian (1) or -# Julian (0). +# Returns the given dictionary augmented with a 'julianDay' key whose +# value is the desired Julian Day Number, and a 'gregorian' key that +# specifies whether the calendar is Gregorian (1) or Julian (0). # # Side effects: # None. @@ -4094,7 +4023,6 @@ proc ::tcl::clock::GetLocaleEra { date etable } { #---------------------------------------------------------------------- proc ::tcl::clock::GetJulianDayFromEraYearDay {date changeover} { - # Get absolute year number from the civil year switch -exact -- [dict get $date era] { @@ -4110,21 +4038,25 @@ proc ::tcl::clock::GetJulianDayFromEraYearDay {date changeover} { # Try the Gregorian calendar first. dict set date gregorian 1 - set jd [expr { 1721425 - + [dict get $date dayOfYear] - + ( 365 * $ym1 ) - + ( $ym1 / 4 ) - - ( $ym1 / 100 ) - + ( $ym1 / 400 ) }] - + set jd [expr { + 1721425 + + [dict get $date dayOfYear] + + ( 365 * $ym1 ) + + ( $ym1 / 4 ) + - ( $ym1 / 100 ) + + ( $ym1 / 400 ) + }] + # If the date is before the Gregorian change, use the Julian calendar. if { $jd < $changeover } { dict set date gregorian 0 - set jd [expr { 1721423 - + [dict get $date dayOfYear] - + ( 365 * $ym1 ) - + ( $ym1 / 4 ) }] + set jd [expr { + 1721423 + + [dict get $date dayOfYear] + + ( 365 * $ym1 ) + + ( $ym1 / 4 ) + }] } dict set date julianDay $jd @@ -4135,8 +4067,8 @@ proc ::tcl::clock::GetJulianDayFromEraYearDay {date changeover} { # # GetJulianDayFromEraYearMonthWeekDay -- # -# Determines the Julian Day number corresponding to the nth -# given day-of-the-week in a given month. +# Determines the Julian Day number corresponding to the nth given +# day-of-the-week in a given month. # # Parameters: # date - Dictionary containing the keys, 'era', 'year', 'month' @@ -4155,10 +4087,9 @@ proc ::tcl::clock::GetJulianDayFromEraYearDay {date changeover} { #---------------------------------------------------------------------- proc ::tcl::clock::GetJulianDayFromEraYearMonthWeekDay {date changeover} { - - # Come up with a reference day; either the zeroeth day of the - # given month (dayOfWeekInMonth >= 0) or the seventh day of the - # following month (dayOfWeekInMonth < 0) + # Come up with a reference day; either the zeroeth day of the given month + # (dayOfWeekInMonth >= 0) or the seventh day of the following month + # (dayOfWeekInMonth < 0) set date2 $date set week [dict get $date dayOfWeekInMonth] @@ -4174,7 +4105,6 @@ proc ::tcl::clock::GetJulianDayFromEraYearMonthWeekDay {date changeover} { [dict get $date2 julianDay]] dict set date julianDay [expr { $wd0 + 7 * $week }] return $date - } #---------------------------------------------------------------------- @@ -4197,9 +4127,8 @@ proc ::tcl::clock::GetJulianDayFromEraYearMonthWeekDay {date changeover} { #---------------------------------------------------------------------- proc ::tcl::clock::IsGregorianLeapYear { date } { - switch -exact -- [dict get $date era] { - BCE { + BCE { set year [expr { 1 - [dict get $date year]}] } CE { @@ -4217,15 +4146,14 @@ proc ::tcl::clock::IsGregorianLeapYear { date } { } else { return 1 } - } #---------------------------------------------------------------------- # # WeekdayOnOrBefore -- # -# Determine the nearest day of week (given by the 'weekday' -# parameter, Sunday==0) on or before a given Julian Day. +# Determine the nearest day of week (given by the 'weekday' parameter, +# Sunday==0) on or before a given Julian Day. # # Parameters: # weekday -- Day of the week @@ -4240,18 +4168,16 @@ proc ::tcl::clock::IsGregorianLeapYear { date } { #---------------------------------------------------------------------- proc ::tcl::clock::WeekdayOnOrBefore { weekday j } { - set k [expr { ( $weekday + 6 ) % 7 }] return [expr { $j - ( $j - $k ) % 7 }] - } #---------------------------------------------------------------------- # # BSearch -- # -# Service procedure that does binary search in several places -# inside the 'clock' command. +# Service procedure that does binary search in several places inside the +# 'clock' command. # # Parameters: # list - List of lists, sorted in ascending order by the @@ -4259,8 +4185,8 @@ proc ::tcl::clock::WeekdayOnOrBefore { weekday j } { # key - Value to search for # # Results: -# Returns the index of the greatest element in $list that is less -# than or equal to $key. +# Returns the index of the greatest element in $list that is less than +# or equal to $key. # # Side effects: # None. @@ -4268,7 +4194,6 @@ proc ::tcl::clock::WeekdayOnOrBefore { weekday j } { #---------------------------------------------------------------------- proc ::tcl::clock::BSearch { list key } { - if {[llength $list] == 0} { return -1 } @@ -4280,13 +4205,12 @@ proc ::tcl::clock::BSearch { list key } { set u [expr { [llength $list] - 1 }] while { $l < $u } { - # At this point, we know that # $k >= [lindex $list $l 0] # Either $u == [llength $list] or else $k < [lindex $list $u+1 0] # We find the midpoint of the interval {l,u} rounded UP, compare - # against it, and set l or u to maintain the invariant. Note - # that the interval shrinks at each step, guaranteeing convergence. + # against it, and set l or u to maintain the invariant. Note that the + # interval shrinks at each step, guaranteeing convergence. set m [expr { ( $l + $u + 1 ) / 2 }] if { $key >= [lindex $list $m 0] } { @@ -4330,15 +4254,14 @@ proc ::tcl::clock::BSearch { list key } { # order. # # Notes: -# It is possible that adding a number of months or years will adjust -# the day of the month as well. For instance, the time at -# one month after 31 January is either 28 or 29 February, because -# February has fewer than 31 days. +# It is possible that adding a number of months or years will adjust the +# day of the month as well. For instance, the time at one month after +# 31 January is either 28 or 29 February, because February has fewer +# than 31 days. # #---------------------------------------------------------------------- proc ::tcl::clock::add { clockval args } { - if { [llength $args] % 2 != 0 } { set cmdName "clock add" return -code error \ @@ -4357,15 +4280,10 @@ proc ::tcl::clock::add { clockval args } { set timezone [GetSystemTimeZone] foreach { a b } $args { - if { [string is integer -strict $a] } { - lappend offsets $a $b - } else { - switch -exact -- $a { - -g - -gm - -gmt { set gmt $b } @@ -4377,8 +4295,7 @@ proc ::tcl::clock::add { clockval args } { set timezone $b } default { - return -code error \ - -errorcode [list CLOCK badSwitch $a] \ + throw [list CLOCK badSwitch $a] \ "bad switch \"$a\",\ must be -gmt, -locale or -timezone" } @@ -4394,20 +4311,16 @@ proc ::tcl::clock::add { clockval args } { "cannot use -gmt and -timezone in same call" } if { [catch { expr { wide($clockval) } } result] } { - return -code error \ - "expected integer but got \"$clockval\"" + return -code error "expected integer but got \"$clockval\"" } - if { ![string is boolean $gmt] } { - return -code error \ - "expected boolean value but got \"$gmt\"" - } else { - if { $gmt } { - set timezone :GMT - } + if { ![string is boolean -strict $gmt] } { + return -code error "expected boolean value but got \"$gmt\"" + } elseif { $gmt } { + set timezone :GMT } EnterLocale $locale oldLocale - + set changeover [mc GREGORIAN_CHANGE_DATE] if {[catch {SetupTimeZone $timezone} retval opts]} { @@ -4415,29 +4328,25 @@ proc ::tcl::clock::add { clockval args } { return -options $opts $retval } - set status [catch { - + try { foreach { quantity unit } $offsets { - switch -exact -- $unit { - years - year { - set clockval \ - [AddMonths [expr { 12 * $quantity }] \ - $clockval $timezone $changeover] + set clockval [AddMonths [expr { 12 * $quantity }] \ + $clockval $timezone $changeover] } months - month { set clockval [AddMonths $quantity $clockval $timezone \ - $changeover] + $changeover] } weeks - week { set clockval [AddDays [expr { 7 * $quantity }] \ - $clockval $timezone $changeover] + $clockval $timezone $changeover] } days - day { set clockval [AddDays $quantity $clockval $timezone \ - $changeover] + $changeover] } hours - hour { @@ -4451,31 +4360,24 @@ proc ::tcl::clock::add { clockval args } { } default { - error "unknown unit \"$unit\", must be \ - years, months, weeks, days, hours, minutes or seconds" \ - "unknown unit \"$unit\", must be \ - years, months, weeks, days, hours, minutes or seconds" \ - [list CLOCK badUnit $unit] + throw [list CLOCK badUnit $unit] \ + "unknown unit \"$unit\", must be \ + years, months, weeks, days, hours, minutes or seconds" } } } - } result opts] - - # Restore the locale - - if { [info exists oldLocale] } { - mclocale $oldLocale - } + return $clockval + } trap CLOCK {result opts} { + # Conceal the innards of [clock] when it's an expected error + dict unset opts -errorinfo + return -options $opts $result + } finally { + # Restore the locale - if { $status == 1 } { - if { [lindex [dict get $opts -errorcode] 0] eq {CLOCK} } { - dict unset opts -errorinfo + if { [info exists oldLocale] } { + mclocale $oldLocale } - return -options $opts $result - } else { - return $clockval } - } #---------------------------------------------------------------------- @@ -4500,7 +4402,6 @@ proc ::tcl::clock::add { clockval args } { #---------------------------------------------------------------------- proc ::tcl::clock::AddMonths { months clockval timezone changeover } { - variable DaysInRomanMonthInCommonYear variable DaysInRomanMonthInLeapYear variable TZData @@ -4508,8 +4409,9 @@ proc ::tcl::clock::AddMonths { months clockval timezone changeover } { # Convert the time to year, month, day, and fraction of day. set date [GetDateFields $clockval $TZData($timezone) $changeover] - dict set date secondOfDay [expr { [dict get $date localSeconds] - % 86400 }] + dict set date secondOfDay [expr { + [dict get $date localSeconds] % 86400 + }] dict set date tzName $timezone # Add the requisite number of months @@ -4538,23 +4440,23 @@ proc ::tcl::clock::AddMonths { months clockval timezone changeover } { set date [GetJulianDayFromEraYearMonthDay \ $date[set date {}]\ $changeover] - dict set date localSeconds \ - [expr { -210866803200 - + ( 86400 * wide([dict get $date julianDay]) ) - + [dict get $date secondOfDay] }] + dict set date localSeconds [expr { + -210866803200 + + ( 86400 * wide([dict get $date julianDay]) ) + + [dict get $date secondOfDay] + }] set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) \ $changeover] return [dict get $date seconds] - } #---------------------------------------------------------------------- # # AddDays -- # -# Add a given number of days to a given clock value in a given -# time zone. +# Add a given number of days to a given clock value in a given time +# zone. # # Parameters: # days - Number of days to add (may be negative) @@ -4564,8 +4466,7 @@ proc ::tcl::clock::AddMonths { months clockval timezone changeover } { # in the target locale. # # Results: -# Returns the new clock value as a number of seconds since -# the epoch. +# Returns the new clock value as a number of seconds since the epoch. # # Side effects: # None. @@ -4573,14 +4474,14 @@ proc ::tcl::clock::AddMonths { months clockval timezone changeover } { #---------------------------------------------------------------------- proc ::tcl::clock::AddDays { days clockval timezone changeover } { - variable TZData # Convert the time to Julian Day set date [GetDateFields $clockval $TZData($timezone) $changeover] - dict set date secondOfDay [expr { [dict get $date localSeconds] - % 86400 }] + dict set date secondOfDay [expr { + [dict get $date localSeconds] % 86400 + }] dict set date tzName $timezone # Add the requisite number of days @@ -4589,23 +4490,23 @@ proc ::tcl::clock::AddDays { days clockval timezone changeover } { # Reconvert to a number of seconds - dict set date localSeconds \ - [expr { -210866803200 - + ( 86400 * wide([dict get $date julianDay]) ) - + [dict get $date secondOfDay] }] + dict set date localSeconds [expr { + -210866803200 + + ( 86400 * wide([dict get $date julianDay]) ) + + [dict get $date secondOfDay] + }] set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) \ $changeover] return [dict get $date seconds] - } #---------------------------------------------------------------------- # # mc -- # -# Wrapper around ::msgcat::mc that caches the result according -# to the locale. +# Wrapper around ::msgcat::mc that caches the result according to the +# locale. # # Parameters: # Accepts the name of the message to retrieve. @@ -4626,11 +4527,10 @@ proc ::tcl::clock::mc { name } { set Locale [mclocale] if { [dict exists $McLoaded $Locale $name] } { return [dict get $McLoaded $Locale $name] - } else { - set val [::msgcat::mc $name] - dict set McLoaded $Locale $name $val - return $val } + set val [::msgcat::mc $name] + dict set McLoaded $Locale $name $val + return $val } #---------------------------------------------------------------------- @@ -4651,7 +4551,6 @@ proc ::tcl::clock::mc { name } { #---------------------------------------------------------------------- proc ::tcl::clock::ClearCaches {} { - variable FormatProc variable LocaleNumeralCache variable McLoaded @@ -4671,5 +4570,4 @@ proc ::tcl::clock::ClearCaches {} { catch {unset CachedSystemTimeZone} set TimeZoneBad {} InitTZData - } diff --git a/library/dde/pkgIndex.tcl b/library/dde/pkgIndex.tcl index 3125ada..4cf73d0 100644 --- a/library/dde/pkgIndex.tcl +++ b/library/dde/pkgIndex.tcl @@ -1,7 +1,7 @@ -if {![package vsatisfies [package provide Tcl] 8]} {return} -if {[string compare $::tcl_platform(platform) windows]} {return} -if {[info exists ::tcl_platform(debug)]} { - package ifneeded dde 1.3.2 [list load [file join $dir tcldde13g.dll] dde] +if {([info commands ::tcl::pkgconfig] eq "") + || ([info sharedlibextension] ne ".dll")} return +if {[::tcl::pkgconfig get debug]} { + package ifneeded dde 1.4.0 [list load [file join $dir tcldde14g.dll] dde] } else { - package ifneeded dde 1.3.2 [list load [file join $dir tcldde13.dll] dde] + package ifneeded dde 1.4.0 [list load [file join $dir tcldde14.dll] dde] } diff --git a/library/encoding/tis-620.enc b/library/encoding/tis-620.enc index c233be5..c233be5 100755..100644 --- a/library/encoding/tis-620.enc +++ b/library/encoding/tis-620.enc diff --git a/library/history.tcl b/library/history.tcl index 3a3f16a..51d2404 100644 --- a/library/history.tcl +++ b/library/history.tcl @@ -2,22 +2,20 @@ # # Implementation of the history command. # -# RCS: @(#) $Id: history.tcl,v 1.7 2005/07/23 04:12:49 dgp Exp $ -# # Copyright (c) 1997 Sun Microsystems, Inc. # -# See the file "license.terms" for information on usage and redistribution -# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. # - -# The tcl::history array holds the history list and -# some additional bookkeeping variables. + +# The tcl::history array holds the history list and some additional +# bookkeeping variables. # # nextid the index used for the next history list item. # keep the max size of the history list # oldest the index of the oldest item in the history. -namespace eval tcl { +namespace eval ::tcl { variable history if {![info exists history]} { array set history { @@ -26,163 +24,78 @@ namespace eval tcl { oldest -20 } } -} + namespace ensemble create -command ::tcl::history -map { + add ::tcl::HistAdd + change ::tcl::HistChange + clear ::tcl::HistClear + event ::tcl::HistEvent + info ::tcl::HistInfo + keep ::tcl::HistKeep + nextid ::tcl::HistNextID + redo ::tcl::HistRedo + } +} + # history -- # # This is the main history command. See the man page for its interface. -# This does argument checking and calls helper procedures in the -# history namespace. +# This does some argument checking and calls the helper ensemble in the +# tcl namespace. -proc history {args} { - set len [llength $args] - if {$len == 0} { - return [tcl::HistInfo] - } - set key [lindex $args 0] - set options "add, change, clear, event, info, keep, nextid, or redo" - switch -glob -- $key { - a* { # history add +proc ::history {args} { + # If no command given, we're doing 'history info'. Can't be done with an + # ensemble unknown handler, as those don't fire when no subcommand is + # given at all. - if {$len > 3} { - return -code error "wrong # args: should be \"history add event ?exec?\"" - } - if {![string match $key* add]} { - return -code error "bad option \"$key\": must be $options" - } - if {$len == 3} { - set arg [lindex $args 2] - if {! ([string match e* $arg] && [string match $arg* exec])} { - return -code error "bad argument \"$arg\": should be \"exec\"" - } - } - return [tcl::HistAdd [lindex $args 1] [lindex $args 2]] - } - ch* { # history change - - if {($len > 3) || ($len < 2)} { - return -code error "wrong # args: should be \"history change newValue ?event?\"" - } - if {![string match $key* change]} { - return -code error "bad option \"$key\": must be $options" - } - if {$len == 2} { - set event 0 - } else { - set event [lindex $args 2] - } - - return [tcl::HistChange [lindex $args 1] $event] - } - cl* { # history clear - - if {($len > 1)} { - return -code error "wrong # args: should be \"history clear\"" - } - if {![string match $key* clear]} { - return -code error "bad option \"$key\": must be $options" - } - return [tcl::HistClear] - } - e* { # history event - - if {$len > 2} { - return -code error "wrong # args: should be \"history event ?event?\"" - } - if {![string match $key* event]} { - return -code error "bad option \"$key\": must be $options" - } - if {$len == 1} { - set event -1 - } else { - set event [lindex $args 1] - } - return [tcl::HistEvent $event] - } - i* { # history info - - if {$len > 2} { - return -code error "wrong # args: should be \"history info ?count?\"" - } - if {![string match $key* info]} { - return -code error "bad option \"$key\": must be $options" - } - return [tcl::HistInfo [lindex $args 1]] - } - k* { # history keep - - if {$len > 2} { - return -code error "wrong # args: should be \"history keep ?count?\"" - } - if {$len == 1} { - return [tcl::HistKeep] - } else { - set limit [lindex $args 1] - if {[catch {expr {~$limit}}] || ($limit < 0)} { - return -code error "illegal keep count \"$limit\"" - } - return [tcl::HistKeep $limit] - } - } - n* { # history nextid - - if {$len > 1} { - return -code error "wrong # args: should be \"history nextid\"" - } - if {![string match $key* nextid]} { - return -code error "bad option \"$key\": must be $options" - } - return [expr {$tcl::history(nextid) + 1}] - } - r* { # history redo - - if {$len > 2} { - return -code error "wrong # args: should be \"history redo ?event?\"" - } - if {![string match $key* redo]} { - return -code error "bad option \"$key\": must be $options" - } - return [tcl::HistRedo [lindex $args 1]] - } - default { - return -code error "bad option \"$key\": must be $options" - } + if {![llength $args]} { + set args info } -} + # Tricky stuff needed to make stack and errors come out right! + tailcall apply {arglist {tailcall history {*}$arglist} ::tcl} $args +} + # tcl::HistAdd -- # # Add an item to the history, and optionally eval it at the global scope # # Parameters: -# command the command to add -# exec (optional) a substring of "exec" causes the -# command to be evaled. +# event the command to add +# exec (optional) a substring of "exec" causes the command to +# be evaled. # Results: # If executing, then the results of the command are returned # # Side Effects: # Adds to the history list - proc tcl::HistAdd {command {exec {}}} { +proc ::tcl::HistAdd {event {exec {}}} { variable history + if { + [prefix longest {exec {}} $exec] eq "" + && [llength [info level 0]] == 3 + } then { + return -code error "bad argument \"$exec\": should be \"exec\"" + } + # Do not add empty commands to the history - if {[string trim $command] eq ""} { + if {[string trim $event] eq ""} { return "" } - set i [incr history(nextid)] - set history($i) $command - set j [incr history(oldest)] - unset -nocomplain history($j) - if {[string match e* $exec]} { - return [uplevel #0 $command] - } else { - return {} + # Maintain the history + set history([incr history(nextid)]) $event + unset -nocomplain history([incr history(oldest)]) + + # Only execute if 'exec' (or non-empty prefix of it) given + if {$exec eq ""} { + return "" } + tailcall eval $event } - + # tcl::HistKeep -- # # Set or query the limit on the length of the history list @@ -196,20 +109,22 @@ proc history {args} { # Side Effects: # Updates history(keep) if a limit is specified - proc tcl::HistKeep {{limit {}}} { +proc ::tcl::HistKeep {{count {}}} { variable history - if {$limit eq ""} { + if {[llength [info level 0]] == 1} { return $history(keep) - } else { - set oldold $history(oldest) - set history(oldest) [expr {$history(nextid) - $limit}] - for {} {$oldold <= $history(oldest)} {incr oldold} { - unset -nocomplain history($oldold) - } - set history(keep) $limit } + if {![string is integer -strict $count] || ($count < 0)} { + return -code error "illegal keep count \"$count\"" + } + set oldold $history(oldest) + set history(oldest) [expr {$history(nextid) - $count}] + for {} {$oldold <= $history(oldest)} {incr oldold} { + unset -nocomplain history($oldold) + } + set history(keep) $count } - + # tcl::HistClear -- # # Erase the history list @@ -223,7 +138,7 @@ proc history {args} { # Side Effects: # Resets the history array, except for the keep limit - proc tcl::HistClear {} { +proc ::tcl::HistClear {} { variable history set keep $history(keep) unset history @@ -233,7 +148,7 @@ proc history {args} { oldest -$keep \ ] } - + # tcl::HistInfo -- # # Return a pretty-printed version of the history list @@ -244,14 +159,16 @@ proc history {args} { # Results: # A formatted history list - proc tcl::HistInfo {{num {}}} { +proc ::tcl::HistInfo {{count {}}} { variable history - if {$num eq ""} { - set num [expr {$history(keep) + 1}] + if {[llength [info level 0]] == 1} { + set count [expr {$history(keep) + 1}] + } elseif {![string is integer -strict $count]} { + return -code error "bad integer \"$count\"" } set result {} set newline "" - for {set i [expr {$history(nextid) - $num + 1}]} \ + for {set i [expr {$history(nextid) - $count + 1}]} \ {$i <= $history(nextid)} {incr i} { if {![info exists history($i)]} { continue @@ -262,11 +179,11 @@ proc history {args} { } return $result } - + # tcl::HistRedo -- # -# Fetch the previous or specified event, execute it, and then -# replace the current history item with that event. +# Fetch the previous or specified event, execute it, and then replace +# the current history item with that event. # # Parameters: # event (optional) index of history item to redo. Defaults to -1, @@ -278,20 +195,18 @@ proc history {args} { # Side Effects: # Replaces the current history list item with the one being redone. - proc tcl::HistRedo {{event -1}} { +proc ::tcl::HistRedo {{event -1}} { variable history - if {$event eq ""} { - set event -1 - } + set i [HistIndex $event] if {$i == $history(nextid)} { return -code error "cannot redo the current event" } set cmd $history($i) HistChange $cmd 0 - uplevel #0 $cmd + tailcall eval $cmd } - + # tcl::HistIndex -- # # Map from an event specifier to an index in the history list. @@ -301,22 +216,22 @@ proc history {args} { # If this is a positive number, it is used directly. # If it is a negative number, then it counts back to a previous # event, where -1 is the most recent event. -# A string can be matched, either by being the prefix of -# a command or by matching a command with string match. +# A string can be matched, either by being the prefix of a +# command or by matching a command with string match. # # Results: # The index into history, or an error if the index didn't match. - proc tcl::HistIndex {event} { +proc ::tcl::HistIndex {event} { variable history - if {[catch {expr {~$event}}]} { + if {![string is integer -strict $event]} { for {set i [expr {$history(nextid)-1}]} {[info exists history($i)]} \ {incr i -1} { if {[string match $event* $history($i)]} { - return $i; + return $i } if {[string match $event $history($i)]} { - return $i; + return $i } } return -code error "no event matches \"$event\"" @@ -333,43 +248,64 @@ proc history {args} { } return $i } - + # tcl::HistEvent -- # # Map from an event specifier to the value in the history list. # # Parameters: -# event index of history item to redo. See index for a -# description of possible event patterns. +# event index of history item to redo. See index for a description of +# possible event patterns. # # Results: # The value from the history list. - proc tcl::HistEvent {event} { +proc ::tcl::HistEvent {{event -1}} { variable history set i [HistIndex $event] - if {[info exists history($i)]} { - return [string trimright $history($i) \ \n] - } else { - return ""; + if {![info exists history($i)]} { + return "" } + return [string trimright $history($i) \ \n] } - + # tcl::HistChange -- # # Replace a value in the history list. # # Parameters: -# cmd The new value to put into the history list. -# event (optional) index of history item to redo. See index for a -# description of possible event patterns. This defaults -# to 0, which specifies the current event. +# newValue The new value to put into the history list. +# event (optional) index of history item to redo. See index for a +# description of possible event patterns. This defaults to 0, +# which specifies the current event. # # Side Effects: # Changes the history list. - proc tcl::HistChange {cmd {event 0}} { +proc ::tcl::HistChange {newValue {event 0}} { variable history set i [HistIndex $event] - set history($i) $cmd + set history($i) $newValue } + +# tcl::HistNextID -- +# +# Returns the number of the next history event. +# +# Parameters: +# None. +# +# Side Effects: +# None. + +proc ::tcl::HistNextID {} { + variable history + return [expr {$history(nextid) + 1}] +} + +return + +# Local Variables: +# mode: tcl +# fill-column: 78 +# End: diff --git a/library/http/http.tcl b/library/http/http.tcl index 06829cd..a6b2bfd 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -1,19 +1,17 @@ # http.tcl -- # # Client-side HTTP for GET, POST, and HEAD commands. These routines can -# be used in untrusted code that uses the Safesock security policy. These -# procedures use a callback interface to avoid using vwait, which is not -# defined in the safe base. +# be used in untrusted code that uses the Safesock security policy. +# These procedures use a callback interface to avoid using vwait, which +# is not defined in the safe base. # # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. -# -# RCS: @(#) $Id: http.tcl,v 1.67.2.5 2008/10/23 23:34:32 patthoyts Exp $ -package require Tcl 8.4 -# Keep this in sync with pkgIndex.tcl and with the install directories -# in Makefiles -package provide http 2.7.2 +package require Tcl 8.6 +# Keep this in sync with pkgIndex.tcl and with the install directories in +# Makefiles +package provide http 2.8.8 namespace eval http { # Allow resourcing to not clobber existing data @@ -27,23 +25,29 @@ namespace eval http { -proxyfilter http::ProxyRequired -urlencoding utf-8 } - set http(-useragent) "Tcl http client package [package provide http]" + # We need a useragent string of this style or various servers will refuse to + # send us compressed content even when we ask for it. This follows the + # de-facto layout of user-agent strings in current browsers. + set http(-useragent) "Mozilla/5.0\ + ([string totitle $::tcl_platform(platform)]; U;\ + $::tcl_platform(os) $::tcl_platform(osVersion))\ + http/[package provide http] Tcl/[package provide Tcl]" } proc init {} { # Set up the map for quoting chars. RFC3986 Section 2.3 say percent - # encode all except: "... percent-encoded octets in the ranges of ALPHA - # (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period (%2E), - # underscore (%5F), or tilde (%7E) should not be created by URI + # encode all except: "... percent-encoded octets in the ranges of + # ALPHA (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period + # (%2E), underscore (%5F), or tilde (%7E) should not be created by URI # producers ..." for {set i 0} {$i <= 256} {incr i} { set c [format %c $i] if {![string match {[-._~a-zA-Z0-9]} $c]} { - set map($c) %[format %.2x $i] + set map($c) %[format %.2X $i] } } # These are handled specially - set map(\n) %0d%0a + set map(\n) %0D%0A variable formMap [array get map] # Create a map for HTTP/1.1 open sockets @@ -94,22 +98,22 @@ namespace eval http { # Arguments: # msg Message to output # -proc http::Log {args} {} +if {[info command http::Log] eq {}} {proc http::Log {args} {}} # http::register -- # # See documentation for details. # # Arguments: -# proto URL protocol prefix, e.g. https -# port Default port for protocol -# command Command to use to create socket +# proto URL protocol prefix, e.g. https +# port Default port for protocol +# command Command to use to create socket # Results: # list of port and command that was registered. proc http::register {proto port command} { variable urlTypes - set urlTypes($proto) [list $port $command] + set urlTypes([string tolower $proto]) [list $port $command] } # http::unregister -- @@ -117,17 +121,18 @@ proc http::register {proto port command} { # Unregisters URL protocol handler # # Arguments: -# proto URL protocol prefix, e.g. https +# proto URL protocol prefix, e.g. https # Results: # list of port and command that was unregistered. proc http::unregister {proto} { variable urlTypes - if {![info exists urlTypes($proto)]} { + set lower [string tolower $proto] + if {![info exists urlTypes($lower)]} { return -code error "unsupported url type \"$proto\"" } - set old $urlTypes($proto) - unset urlTypes($proto) + set old $urlTypes($lower) + unset urlTypes($lower) return $old } @@ -152,21 +157,19 @@ proc http::config {args} { return $result } set options [string map {- ""} $options] - set pat ^-([join $options |])$ + set pat ^-(?:[join $options |])$ if {[llength $args] == 1} { set flag [lindex $args 0] - if {[regexp -- $pat $flag]} { - return $http($flag) - } else { + if {![regexp -- $pat $flag]} { return -code error "Unknown option $flag, must be: $usage" } + return $http($flag) } else { foreach {flag value} $args { - if {[regexp -- $pat $flag]} { - set http($flag) $value - } else { + if {![regexp -- $pat $flag]} { return -code error "Unknown option $flag, must be: $usage" } + set http($flag) $value } } } @@ -179,14 +182,14 @@ proc http::config {args} { # token Connection token. # errormsg (optional) If set, forces status to error. # skipCB (optional) If set, don't call the -command callback. This -# is useful when geturl wants to throw an exception instead -# of calling the callback. That way, the same error isn't -# reported to two places. +# is useful when geturl wants to throw an exception instead +# of calling the callback. That way, the same error isn't +# reported to two places. # # Side Effects: # Closes the socket -proc http::Finish { token {errormsg ""} {skipCB 0}} { +proc http::Finish {token {errormsg ""} {skipCB 0}} { variable $token upvar 0 $token state global errorInfo errorCode @@ -194,30 +197,31 @@ proc http::Finish { token {errormsg ""} {skipCB 0}} { set state(error) [list $errormsg $errorInfo $errorCode] set state(status) "error" } - if {($state(status) eq "timeout") || ($state(status) eq "error") - || ([info exists state(connection)] && ($state(connection) eq "close")) + if { + ($state(status) eq "timeout") || ($state(status) eq "error") || + ([info exists state(connection)] && ($state(connection) eq "close")) } { CloseSocket $state(sock) $token } - if {[info exists state(after)]} { after cancel $state(after) } - if {[info exists state(-command)] && !$skipCB} { - if {[catch {eval $state(-command) {$token}} err]} { - if {$errormsg eq ""} { - set state(error) [list $err $errorInfo $errorCode] - set state(status) error - } + if {[info exists state(after)]} { + after cancel $state(after) + } + if {[info exists state(-command)] && !$skipCB + && ![info exists state(done-command-cb)]} { + set state(done-command-cb) yes + if {[catch {eval $state(-command) {$token}} err] && $errormsg eq ""} { + set state(error) [list $err $errorInfo $errorCode] + set state(status) error } - # Command callback may already have unset our state - unset -nocomplain state(-command) } } # http::CloseSocket - # -# Close a socket and remove it from the persistent sockets table. -# If possible an http token is included here but when we are called -# from a fileevent on remote closure we need to find the correct -# entry - hence the second section. +# Close a socket and remove it from the persistent sockets table. If +# possible an http token is included here but when we are called from a +# fileevent on remote closure we need to find the correct entry - hence +# the second section. proc ::http::CloseSocket {s {token {}}} { variable socketmap @@ -227,23 +231,27 @@ proc ::http::CloseSocket {s {token {}}} { variable $token upvar 0 $token state if {[info exists state(socketinfo)]} { - set conn_id $state(socketinfo) + set conn_id $state(socketinfo) } } else { set map [array get socketmap] set ndx [lsearch -exact $map $s] if {$ndx != -1} { - incr ndx -1 - set conn_id [lindex $map $ndx] + incr ndx -1 + set conn_id [lindex $map $ndx] } } if {$conn_id eq {} || ![info exists socketmap($conn_id)]} { Log "Closing socket $s (no connection info)" - if {[catch {close $s} err]} { Log "Error: $err" } + if {[catch {close $s} err]} { + Log "Error: $err" + } } else { if {[info exists socketmap($conn_id)]} { Log "Closing connection $conn_id (sock $socketmap($conn_id))" - if {[catch {close $socketmap($conn_id)} err]} { Log "Error: $err" } + if {[catch {close $socketmap($conn_id)} err]} { + Log "Error: $err" + } unset socketmap($conn_id) } else { Log "Cannot close connection $conn_id - no socket in socket map" @@ -262,7 +270,7 @@ proc ::http::CloseSocket {s {token {}}} { # Side Effects: # See Finish -proc http::reset { token {why reset} } { +proc http::reset {token {why reset}} { variable $token upvar 0 $token state set state(status) $why @@ -285,10 +293,10 @@ proc http::reset { token {why reset} } { # args Option value pairs. Valid options include: # -blocksize, -validate, -headers, -timeout # Results: -# Returns a token for this connection. This token is the name of an array -# that the caller should unset to garbage collect the state. +# Returns a token for this connection. This token is the name of an +# array that the caller should unset to garbage collect the state. -proc http::geturl { url args } { +proc http::geturl {url args} { variable http variable urlTypes variable defaultCharset @@ -351,14 +359,17 @@ proc http::geturl { url args } { } set usage [join [lsort $options] ", "] set options [string map {- ""} $options] - set pat ^-([join $options |])$ + set pat ^-(?:[join $options |])$ foreach {flag value} $args { if {[regexp -- $pat $flag]} { # Validate numbers - if {[info exists type($flag)] && - ![string is $type($flag) -strict $value]} { + if { + [info exists type($flag)] && + ![string is $type($flag) -strict $value] + } { unset $token - return -code error "Bad value for $flag ($value), must be $type($flag)" + return -code error \ + "Bad value for $flag ($value), must be $type($flag)" } set state($flag) $value } else { @@ -384,20 +395,25 @@ proc http::geturl { url args } { # First, before the colon, is the protocol scheme (e.g. http) # Second, for HTTP-like protocols, is the authority # The authority is preceded by // and lasts up to (but not including) - # the following / and it identifies up to four parts, of which only one, - # the host, is required (if an authority is present at all). All other - # parts of the authority (user name, password, port number) are optional. + # the following / or ? and it identifies up to four parts, of which + # only one, the host, is required (if an authority is present at all). + # All other parts of the authority (user name, password, port number) + # are optional. # Third is the resource name, which is split into two parts at a ? # The first part (from the single "/" up to "?") is the path, and the # second part (from that "?" up to "#") is the query. *HOWEVER*, we do # not need to separate them; we send the whole lot to the server. + # Both, path and query are allowed to be missing, including their + # delimiting character. # Fourth is the fragment identifier, which is everything after the first # "#" in the URL. The fragment identifier MUST NOT be sent to the server # and indeed, we don't bother to validate it (it could be an error to # pass it in here, but it's cheap to strip). # # An example of a URL that has all the parts: - # http://jschmoe:xyzzy@www.bogus.net:8000/foo/bar.tml?q=foo#changes + # + # http://jschmoe:xyzzy@www.bogus.net:8000/foo/bar.tml?q=foo#changes + # # The "http" is the protocol, the user is "jschmoe", the password is # "xyzzy", the host is "www.bogus.net", the port is "8000", the path is # "/foo/bar.tml", the query is "q=foo", and the fragment is "changes". @@ -405,12 +421,10 @@ proc http::geturl { url args } { # Note that the RE actually combines the user and password parts, as # recommended in RFC 3986. Indeed, that RFC states that putting passwords # in URLs is a Really Bad Idea, something with which I would agree utterly. - # Also note that we do not currently support IPv6 addresses. # # From a validation perspective, we need to ensure that the parts of the - # URL that are going to the server are correctly encoded. - # This is only done if $state(-strict) is true (inherited from - # $::http::strict). + # URL that are going to the server are correctly encoded. This is only + # done if $state(-strict) is true (inherited from $::http::strict). set URLmatcher {(?x) # this is _expanded_ syntax ^ @@ -421,10 +435,13 @@ proc http::geturl { url args } { [^@/\#?]+ # <userinfo part of authority> ) @ )? - ( [^/:\#?]+ ) # <host part of authority> + ( # <host part of authority> + [^/:\#?]+ | # host name or IPv4 address + \[ [^/\#?]+ \] # IPv6 address in square brackets + ) (?: : (\d+) )? # <port part of authority> )? - ( / [^\#?]* (?: \? [^\#?]* )?)? # <path> (including query) + ( [/\?] [^\#]*)? # <path> (including query) (?: \# (.*) )? # <fragment> $ } @@ -435,6 +452,7 @@ proc http::geturl { url args } { return -code error "Unsupported URL: $url" } # Phase two: validate + set host [string trim $host {[]}]; # strip square brackets from IPv6 address if {$host eq ""} { # Caller has to provide a host name; we do not have a "default host" # that would enable us to handle relative URLs. @@ -467,6 +485,12 @@ proc http::geturl { url args } { } } if {$srvurl ne ""} { + # RFC 3986 allows empty paths (not even a /), but servers + # return 400 if the path in the HTTP request doesn't start + # with / , so add it here if needed. + if {[string index $srvurl 0] ne "/"} { + set srvurl /$srvurl + } # Check for validity according to RFC 3986, Appendix A set validityRE {(?xi) ^ @@ -481,7 +505,7 @@ proc http::geturl { url args } { # Provide a better error message in this error case if {[regexp {(?i)%(?![0-9a-f][0-9a-f])..} $srvurl bad]} { return -code error \ - "Illegal encoding character usage \"$bad\" in URL path" + "Illegal encoding character usage \"$bad\" in URL path" } return -code error "Illegal characters in URL path" } @@ -491,12 +515,13 @@ proc http::geturl { url args } { if {$proto eq ""} { set proto http } - if {![info exists urlTypes($proto)]} { + set lower [string tolower $proto] + if {![info exists urlTypes($lower)]} { unset $token return -code error "Unsupported URL type \"$proto\"" } - set defport [lindex $urlTypes($proto) 0] - set defcmd [lindex $urlTypes($proto) 1] + set defport [lindex $urlTypes($lower) 0] + set defcmd [lindex $urlTypes($lower) 1] if {$port eq ""} { set port $defport @@ -523,11 +548,10 @@ proc http::geturl { url args } { # If a timeout is specified we set up the after event and arrange for an # asynchronous socket connection. - set sockopts [list] + set sockopts [list -async] if {$state(-timeout) > 0} { set state(after) [after $state(-timeout) \ [list http::reset $token timeout]] - lappend sockopts -async } # If we are using the proxy, we must pass in the full URL that includes @@ -565,15 +589,15 @@ proc http::geturl { url args } { lappend sockopts -myaddr $state(-myaddr) } if {[catch {eval $defcmd $sockopts $targetAddr} sock]} { - # something went wrong while trying to establish the - # connection. Clean up after events and such, but DON'T call the - # command callback (if available) because we're going to throw an - # exception from here instead. + # something went wrong while trying to establish the connection. + # Clean up after events and such, but DON'T call the command + # callback (if available) because we're going to throw an + # exception from here instead. set state(sock) $sock - Finish $token "" 1 - cleanup $token - return -code error $sock + Finish $token "" 1 + cleanup $token + return -code error $sock } } set state(sock) $sock @@ -583,16 +607,21 @@ proc http::geturl { url args } { set socketmap($state(socketinfo)) $sock } - # Wait for the connection to complete. + if {![info exists phost]} { + set phost "" + } + fileevent $sock writable [list http::Connect $token $proto $phost $srvurl] - if {$state(-timeout) > 0} { - fileevent $sock writable [list http::Connect $token] + # Wait for the connection to complete. + if {![info exists state(-command)]} { + # geturl does EVERYTHING asynchronously, so if the user + # calls it synchronously, we just do a wait here. http::wait $token if {![info exists state]} { # If we timed out then Finish has been called and the users - # command callback may have cleaned up the token. If so - # we end up here with nothing left to do. + # command callback may have cleaned up the token. If so we end up + # here with nothing left to do. return $token } elseif {$state(status) eq "error"} { # Something went wrong while trying to establish the connection. @@ -602,13 +631,30 @@ proc http::geturl { url args } { set err [lindex $state(error) 0] cleanup $token return -code error $err - } elseif {$state(status) ne "connect"} { - # Likely to be connection timeout - return $token } - set state(status) "" } + return $token +} + + +proc http::Connected { token proto phost srvurl} { + variable http + variable urlTypes + + variable $token + upvar 0 $token state + + # Set back the variables needed here + set sock $state(sock) + set isQueryChannel [info exists state(-querychannel)] + set isQuery [info exists state(-query)] + set host [lindex [split $state(socketinfo) :] 0] + set port [lindex [split $state(socketinfo) :] 1] + + set lower [string tolower $proto] + set defport [lindex $urlTypes($lower) 0] + # Send data in cr-lf format, but accept any line terminators fconfigure $sock -translation {auto crlf} -buffersize $state(-blocksize) @@ -640,17 +686,21 @@ proc http::geturl { url args } { if {[info exists state(-method)] && $state(-method) ne ""} { set how $state(-method) } - + # We cannot handle chunked encodings with -handler, so force HTTP/1.0 + # until we can manage this. + if {[info exists state(-handler)]} { + set state(-protocol) 1.0 + } if {[catch { puts $sock "$how $srvurl HTTP/$state(-protocol)" puts $sock "Accept: $http(-accept)" array set hdrs $state(-headers) if {[info exists hdrs(Host)]} { - # Allow Host spoofing [Bug 928154] + # Allow Host spoofing. [Bug 928154] puts $sock "Host: $hdrs(Host)" } elseif {$port == $defport} { - # Don't add port in this case, to handle broken servers. - # [Bug #504508] + # Don't add port in this case, to handle broken servers. [Bug + # #504508] puts $sock "Host: $host" } else { puts $sock "Host: $host:$port" @@ -658,20 +708,26 @@ proc http::geturl { url args } { unset hdrs puts $sock "User-Agent: $http(-useragent)" if {$state(-protocol) == 1.0 && $state(-keepalive)} { - puts $sock "Connection: keep-alive" + puts $sock "Connection: keep-alive" } if {$state(-protocol) > 1.0 && !$state(-keepalive)} { - puts $sock "Connection: close" ;# RFC2616 sec 8.1.2.1 + puts $sock "Connection: close" ;# RFC2616 sec 8.1.2.1 } if {[info exists phost] && ($phost ne "") && $state(-keepalive)} { - puts $sock "Proxy-Connection: Keep-Alive" + puts $sock "Proxy-Connection: Keep-Alive" } set accept_encoding_seen 0 + set content_type_seen 0 foreach {key value} $state(-headers) { - if {[string equal -nocase $key "host"]} { continue } - if {[string equal -nocase $key "accept-encoding"]} { - set accept_encoding_seen 1 - } + if {[string equal -nocase $key "host"]} { + continue + } + if {[string equal -nocase $key "accept-encoding"]} { + set accept_encoding_seen 1 + } + if {[string equal -nocase $key "content-type"]} { + set content_type_seen 1 + } set value [string map [list \n "" \r ""] $value] set key [string trim $key] if {[string equal -nocase $key "content-length"]} { @@ -682,11 +738,8 @@ proc http::geturl { url args } { puts $sock "$key: $value" } } - # Soft zlib dependency check - no package require - if {!$accept_encoding_seen && [llength [package provide zlib]] - && !([info exists state(-channel)] || [info exists state(-handler)]) - } { - puts $sock "Accept-Encoding: gzip, identity, *;q=0.1" + if {!$accept_encoding_seen && ![info exists state(-handler)]} { + puts $sock "Accept-Encoding: deflate,gzip,compress" } if {$isQueryChannel && $state(querylength) == 0} { # Try to determine size of data in channel. If we cannot seek, the @@ -707,16 +760,19 @@ proc http::geturl { url args } { # It is possible to have both the read and write fileevents active at # this point. The only scenario it seems to affect is a server that # closes the connection without reading the POST data. (e.g., early - # versions TclHttpd in various error cases). Depending on the platform, - # the client may or may not be able to get the response from the server - # because of the error it will get trying to write the post data. - # Having both fileevents active changes the timing and the behavior, - # but no two platforms (among Solaris, Linux, and NT) behave the same, - # and none behave all that well in any case. Servers should always read - # their POST data if they expect the client to read their response. + # versions TclHttpd in various error cases). Depending on the + # platform, the client may or may not be able to get the response from + # the server because of the error it will get trying to write the post + # data. Having both fileevents active changes the timing and the + # behavior, but no two platforms (among Solaris, Linux, and NT) behave + # the same, and none behave all that well in any case. Servers should + # always read their POST data if they expect the client to read their + # response. if {$isQuery || $isQueryChannel} { - puts $sock "Content-Type: $state(-type)" + if {!$content_type_seen} { + puts $sock "Content-Type: $state(-type)" + } if {!$contDone} { puts $sock "Content-Length: $state(querylength)" } @@ -729,35 +785,17 @@ proc http::geturl { url args } { fileevent $sock readable [list http::Event $sock $token] } - if {! [info exists state(-command)]} { - # geturl does EVERYTHING asynchronously, so if the user calls it - # synchronously, we just do a wait here. - - wait $token - if {$state(status) eq "error"} { - # Something went wrong, so throw the exception, and the - # enclosing catch will do cleanup. - return -code error [lindex $state(error) 0] - } - } } err]} { # The socket probably was never connected, or the connection dropped # later. - # Clean up after events and such, but DON'T call the command callback - # (if available) because we're going to throw an exception from here - # instead. - # if state(status) is error, it means someone's already called Finish # to do the above-described clean up. if {$state(status) ne "error"} { - Finish $token $err 1 + Finish $token $err } - cleanup $token - return -code error $err } - return $token } # Data access functions: @@ -772,7 +810,9 @@ proc http::data {token} { return $state(body) } proc http::status {token} { - if {![info exists $token]} { return "error" } + if {![info exists $token]} { + return "error" + } variable $token upvar 0 $token state return $state(status) @@ -839,16 +879,18 @@ proc http::cleanup {token} { # Sets the status of the connection, which unblocks # the waiting geturl call -proc http::Connect {token} { +proc http::Connect {token proto phost srvurl} { variable $token upvar 0 $token state - global errorInfo errorCode - if {[eof $state(sock)] || - [string length [fconfigure $state(sock) -error]]} { - Finish $token "connect failed [fconfigure $state(sock) -error]" 1 + set err "due to unexpected EOF" + if { + [eof $state(sock)] || + [set err [fconfigure $state(sock) -error]] ne "" + } { + Finish $token "connect failed $err" } else { - set state(status) connect fileevent $state(sock) writable {} + ::http::Connected $token $proto $phost $srvurl } return } @@ -883,7 +925,6 @@ proc http::Write {token} { incr state(queryoffset) $state(-queryblocksize) if {$state(queryoffset) >= $state(querylength)} { set state(queryoffset) $state(querylength) - puts $sock "" set done 1 } } else { @@ -934,8 +975,8 @@ proc http::Event {sock token} { if {![info exists state]} { Log "Event $sock with invalid token '$token' - remote close?" - if {! [eof $sock]} { - if {[string length [set d [read $sock]]] != 0} { + if {![eof $sock]} { + if {[set d [read $sock]] ne ""} { Log "WARNING: additional data left on closed socket" } } @@ -943,9 +984,10 @@ proc http::Event {sock token} { return } if {$state(state) eq "connecting"} { - set state(state) "header" if {[catch {gets $sock state(http)} n]} { return [Finish $token $n] + } elseif {$n >= 0} { + set state(state) "header" } } elseif {$state(state) eq "header"} { if {[catch {gets $sock line} n]} { @@ -953,7 +995,9 @@ proc http::Event {sock token} { } elseif {$n == 0} { # We have now read all headers # We ignore HTTP/1.1 100 Continue returns. RFC2616 sec 8.2.3 - if {$state(http) == "" || [lindex $state(http) 1] == 100} { return } + if {$state(http) == "" || ([regexp {^\S+\s(\d+)} $state(http) {} x] && $x == 100)} { + return + } set state(state) body @@ -963,15 +1007,16 @@ proc http::Event {sock token} { return } - # For non-chunked transfer we may have no body -- in this case we - # may get no further file event if the connection doesn't close and - # no more data is sent. We can tell and must finish up now - not - # later. - if {!(([info exists state(connection)] - && ($state(connection) eq "close")) - || [info exists state(transfer)]) - && $state(totalsize) == 0 - } then { + # For non-chunked transfer we may have no body - in this case we + # may get no further file event if the connection doesn't close + # and no more data is sent. We can tell and must finish up now - + # not later. + if { + !(([info exists state(connection)] + && ($state(connection) eq "close")) + || [info exists state(transfer)]) + && ($state(totalsize) == 0) + } { Log "body size is 0 and no events likely - complete." Eof $token return @@ -980,22 +1025,22 @@ proc http::Event {sock token} { # We have to use binary translation to count bytes properly. fconfigure $sock -translation binary - if {$state(-binary) || ![string match -nocase text* $state(type)]} { + if { + $state(-binary) || ![string match -nocase text* $state(type)] + } { # Turn off conversions for non-text data set state(binary) 1 } - if {$state(binary) || [string match *gzip* $state(coding)] - || [string match *compress* $state(coding)]} { - if {[info exists state(-channel)]} { + if {[info exists state(-channel)]} { + if {$state(binary) || [llength [ContentEncoding $token]]} { fconfigure $state(-channel) -translation binary } - } - if {[info exists state(-channel)] && - ![info exists state(-handler)]} { - # Initiate a sequence of background fcopies - fileevent $sock readable {} - CopyStart $sock $token - return + if {![info exists state(-handler)]} { + # Initiate a sequence of background fcopies + fileevent $sock readable {} + CopyStart $sock $token + return + } } } elseif {$n > 0} { # Process header lines @@ -1004,8 +1049,14 @@ proc http::Event {sock token} { content-type { set state(type) [string trim [string tolower $value]] # grab the optional charset information - regexp -nocase {charset\s*=\s*(\S+?);?} \ - $state(type) -> state(charset) + if {[regexp -nocase \ + {charset\s*=\s*\"((?:[^""]|\\\")*)\"} \ + $state(type) -> cs]} { + set state(charset) [string map {{\"} \"} $cs] + } else { + regexp -nocase {charset\s*=\s*(\S+?);?} \ + $state(type) -> state(charset) + } } content-length { set state(totalsize) [string trim $value] @@ -1041,8 +1092,10 @@ proc http::Event {sock token} { Log "final chunk part" Eof $token } - } elseif {[info exists state(transfer)] - && $state(transfer) eq "chunked"} { + } elseif { + [info exists state(transfer)] + && $state(transfer) eq "chunked" + } { set size 0 set chunk [getTextLine $sock] set n [string length $chunk] @@ -1079,8 +1132,10 @@ proc http::Event {sock token} { incr state(currentsize) $n } # If Content-Length - check for end of data. - if {($state(totalsize) > 0) - && ($state(currentsize) >= $state(totalsize))} { + if { + ($state(totalsize) > 0) + && ($state(currentsize) >= $state(totalsize)) + } { Eof $token } } @@ -1137,14 +1192,54 @@ proc http::getTextLine {sock} { # Side Effects # This closes the connection upon error -proc http::CopyStart {sock token} { - variable $token +proc http::CopyStart {sock token {initial 1}} { + upvar #0 $token state + if {[info exists state(transfer)] && $state(transfer) eq "chunked"} { + foreach coding [ContentEncoding $token] { + lappend state(zlib) [zlib stream $coding] + } + make-transformation-chunked $sock [namespace code [list CopyChunk $token]] + } else { + if {$initial} { + foreach coding [ContentEncoding $token] { + zlib push $coding $sock + } + } + if {[catch { + fcopy $sock $state(-channel) -size $state(-blocksize) -command \ + [list http::CopyDone $token] + } err]} { + Finish $token $err + } + } +} + +proc http::CopyChunk {token chunk} { upvar 0 $token state - if {[catch { - fcopy $sock $state(-channel) -size $state(-blocksize) -command \ - [list http::CopyDone $token] - } err]} { - Finish $token $err + if {[set count [string length $chunk]]} { + incr state(currentsize) $count + if {[info exists state(zlib)]} { + foreach stream $state(zlib) { + set chunk [$stream add $chunk] + } + } + puts -nonewline $state(-channel) $chunk + if {[info exists state(-progress)]} { + eval [linsert $state(-progress) end \ + $token $state(totalsize) $state(currentsize)] + } + } else { + Log "CopyChunk Finish $token" + if {[info exists state(zlib)]} { + set excess "" + foreach stream $state(zlib) { + catch {set excess [$stream add -finalize $excess]} + } + puts -nonewline $state(-channel) $excess + foreach stream $state(zlib) { $stream close } + unset state(zlib) + } + Eof $token ;# FIX ME: pipelining. } } @@ -1174,7 +1269,7 @@ proc http::CopyDone {token count {error {}}} { } elseif {[catch {eof $sock} iseof] || $iseof} { Eof $token } else { - CopyStart $sock $token + CopyStart $sock $token 0 } } @@ -1198,30 +1293,31 @@ proc http::Eof {token {force 0}} { set state(status) ok } - if {($state(coding) eq "gzip") && [string length $state(body)] > 0} { - if {[catch { - set state(body) [Gunzip $state(body)] - } err]} { - return [Finish $token $err] - } - } - - if {!$state(binary)} { + if {[string length $state(body)] > 0} { + if {[catch { + foreach coding [ContentEncoding $token] { + set state(body) [zlib $coding $state(body)] + } + } err]} { + Log "error doing $coding '$state(body)'" + return [Finish $token $err] + } - # If we are getting text, set the incoming channel's - # encoding correctly. iso8859-1 is the RFC default, but - # this could be any IANA charset. However, we only know - # how to convert what we have encodings for. + if {!$state(binary)} { + # If we are getting text, set the incoming channel's encoding + # correctly. iso8859-1 is the RFC default, but this could be any IANA + # charset. However, we only know how to convert what we have + # encodings for. - set enc [CharsetToEncoding $state(charset)] - if {$enc ne "binary"} { - set state(body) [encoding convertfrom $enc $state(body)] - } + set enc [CharsetToEncoding $state(charset)] + if {$enc ne "binary"} { + set state(body) [encoding convertfrom $enc $state(body)] + } - # Translate text line endings. - set state(body) [string map {\r\n \n \r \n} $state(body)] + # Translate text line endings. + set state(body) [string map {\r\n \n \r \n} $state(body)] + } } - Finish $token } @@ -1297,7 +1393,7 @@ proc http::mapReply {string} { } set converted [string map $formMap $string] if {[string match "*\[\u0100-\uffff\]*" $converted]} { - regexp {[\u0100-\uffff]} $converted badChar + regexp "\[\u0100-\uffff\]" $converted badChar # Return this error message for maximum compatability... :^/ return -code error \ "can't read \"formMap($badChar)\": no such element in array" @@ -1317,8 +1413,10 @@ proc http::mapReply {string} { proc http::ProxyRequired {host} { variable http if {[info exists http(-proxyhost)] && [string length $http(-proxyhost)]} { - if {![info exists http(-proxyport)] || \ - ![string length $http(-proxyport)]} { + if { + ![info exists http(-proxyport)] || + ![string length $http(-proxyport)] + } { set http(-proxyport) 8080 } return [list $http(-proxyhost) $http(-proxyport)] @@ -1327,33 +1425,33 @@ proc http::ProxyRequired {host} { # http::CharsetToEncoding -- # -# Tries to map a given IANA charset to a tcl encoding. -# If no encoding can be found, returns binary. +# Tries to map a given IANA charset to a tcl encoding. If no encoding +# can be found, returns binary. # proc http::CharsetToEncoding {charset} { variable encodings set charset [string tolower $charset] - if {[regexp {iso-?8859-([0-9]+)} $charset - num]} { + if {[regexp {iso-?8859-([0-9]+)} $charset -> num]} { set encoding "iso8859-$num" - } elseif {[regexp {iso-?2022-(jp|kr)} $charset - ext]} { + } elseif {[regexp {iso-?2022-(jp|kr)} $charset -> ext]} { set encoding "iso2022-$ext" - } elseif {[regexp {shift[-_]?js} $charset -]} { + } elseif {[regexp {shift[-_]?js} $charset]} { set encoding "shiftjis" - } elseif {[regexp {(windows|cp)-?([0-9]+)} $charset - - num]} { + } elseif {[regexp {(?:windows|cp)-?([0-9]+)} $charset -> num]} { set encoding "cp$num" } elseif {$charset eq "us-ascii"} { set encoding "ascii" - } elseif {[regexp {(iso-?)?lat(in)?-?([0-9]+)} $charset - - - num]} { + } elseif {[regexp {(?:iso-?)?lat(?:in)?-?([0-9]+)} $charset -> num]} { switch -- $num { 5 {set encoding "iso8859-9"} - 1 - - 2 - - 3 {set encoding "iso8859-$num"} + 1 - 2 - 3 { + set encoding "iso8859-$num" + } } } else { - # other charset, like euc-xx, utf-8,... may directly maps to encoding + # other charset, like euc-xx, utf-8,... may directly map to encoding set encoding $charset } set idx [lsearch -exact $encodings $encoding] @@ -1364,58 +1462,57 @@ proc http::CharsetToEncoding {charset} { } } -# http::Gunzip -- -# -# Decompress data transmitted using the gzip transfer coding. -# - -# FIX ME: redo using zlib sinflate -proc http::Gunzip {data} { - binary scan $data Scb5icc magic method flags time xfl os - set pos 10 - if {$magic != 0x1f8b} { - return -code error "invalid data: supplied data is not in gzip format" - } - if {$method != 8} { - return -code error "invalid compression method" - } - - foreach {f_text f_crc f_extra f_name f_comment} [split $flags ""] break - set extra "" - if { $f_extra } { - binary scan $data @${pos}S xlen - incr pos 2 - set extra [string range $data $pos $xlen] - set pos [incr xlen] - } - - set name "" - if { $f_name } { - set ndx [string first \0 $data $pos] - set name [string range $data $pos $ndx] - set pos [incr ndx] - } - - set comment "" - if { $f_comment } { - set ndx [string first \0 $data $pos] - set comment [string range $data $pos $ndx] - set pos [incr ndx] - } - - set fcrc "" - if { $f_crc } { - set fcrc [string range $data $pos [incr pos]] - incr pos +# Return the list of content-encoding transformations we need to do in order. +proc http::ContentEncoding {token} { + upvar 0 $token state + set r {} + if {[info exists state(coding)]} { + foreach coding [split $state(coding) ,] { + switch -exact -- $coding { + deflate { lappend r inflate } + gzip - x-gzip { lappend r gunzip } + compress - x-compress { lappend r decompress } + identity {} + default { + return -code error "unsupported content-encoding \"$coding\"" + } + } + } } + return $r +} - binary scan [string range $data end-7 end] ii crc size - set inflated [zlib inflate [string range $data $pos end-8]] - set chk [zlib crc32 $inflated] - if { ($crc & 0xffffffff) != ($chk & 0xffffffff)} { - return -code error "invalid data: checksum mismatch $crc != $chk" - } - return $inflated +proc http::make-transformation-chunked {chan command} { + set lambda {{chan command} { + set data "" + set size -1 + yield + while {1} { + chan configure $chan -translation {crlf binary} + while {[gets $chan line] < 1} { yield } + chan configure $chan -translation {binary binary} + if {[scan $line %x size] != 1} { return -code error "invalid size: \"$line\"" } + set chunk "" + while {$size && ![chan eof $chan]} { + set part [chan read $chan $size] + incr size -[string length $part] + append chunk $part + } + if {[catch { + uplevel #0 [linsert $command end $chunk] + }]} { + http::Log "Error in callback: $::errorInfo" + } + if {[string length $chunk] == 0} { + # channel might have been closed in the callback + catch {chan event $chan readable {}} + return + } + } + }} + coroutine dechunk$chan ::apply $lambda $chan $command + chan event $chan readable [namespace origin dechunk$chan] + return } # Local variables: diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 6badcea..27ba795 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -1,4 +1,2 @@ -# Tcl package index file, version 1.1 - -if {![package vsatisfies [package provide Tcl] 8.4]} {return} -package ifneeded http 2.7.2 [list tclPkgSetup $dir http 2.7.2 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] +if {![package vsatisfies [package provide Tcl] 8.6]} {return} +package ifneeded http 2.8.8 [list tclPkgSetup $dir http 2.8.8 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] diff --git a/library/http1.0/http.tcl b/library/http1.0/http.tcl index 2c548bb..8329de4 100644 --- a/library/http1.0/http.tcl +++ b/library/http1.0/http.tcl @@ -5,8 +5,6 @@ # These procedures use a callback interface to avoid using vwait, # which is not defined in the safe base. # -# RCS: @(#) $Id: http.tcl,v 1.4 2000/02/01 11:48:30 hobbs Exp $ -# # See the http.n man page for documentation package provide http 1.0 @@ -341,12 +339,12 @@ proc http_formatQuery {args} { # 2 Convert every other character to an array lookup # 3 Escape constructs that are "special" to the tcl parser # 4 "subst" the result, doing all the array substitutions - + proc httpMapReply {string} { global httpFormMap set alphanumeric a-zA-Z0-9 if {![info exists httpFormMap]} { - + for {set i 1} {$i <= 256} {incr i} { set c [format %c $i] if {![string match \[$alphanumeric\] $c]} { @@ -365,7 +363,7 @@ proc http_formatQuery {args} { return [subst $string] } -# Default proxy filter. +# Default proxy filter. proc httpProxyRequired {host} { global http if {[info exists http(-proxyhost)] && [string length $http(-proxyhost)]} { diff --git a/library/init.tcl b/library/init.tcl index 6b92c58..f63eedf 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -3,8 +3,6 @@ # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # -# RCS: @(#) $Id: init.tcl,v 1.104.2.11 2008/12/21 20:59:01 dgp Exp $ -# # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. # Copyright (c) 1998-1999 Scriptics Corporation. @@ -14,10 +12,11 @@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # +# This test intentionally written in pre-7.5 Tcl if {[info commands package] == ""} { error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]" } -package require -exact Tcl 8.5.6 +package require -exact Tcl 8.6.1 # Compute the auto path to use in this interpreter. # The values on the path come from several locations: @@ -78,7 +77,7 @@ namespace eval tcl { # TIP #255 min and max functions namespace eval mathfunc { proc min {args} { - if {[llength $args] == 0} { + if {![llength $args]} { return -code error \ "too few arguments to math function \"min\"" } @@ -89,12 +88,12 @@ namespace eval tcl { if {[catch {expr {double($arg)}} err]} { return -code error $err } - if {$arg < $val} { set val $arg } + if {$arg < $val} {set val $arg} } return $val } proc max {args} { - if {[llength $args] == 0} { + if {![llength $args]} { return -code error \ "too few arguments to math function \"max\"" } @@ -105,7 +104,7 @@ namespace eval tcl { if {[catch {expr {double($arg)}} err]} { return -code error $err } - if {$arg > $val} { set val $arg } + if {$arg > $val} {set val $arg} } return $val } @@ -118,9 +117,10 @@ namespace eval tcl { if {(![interp issafe]) && ($tcl_platform(platform) eq "windows")} { namespace eval tcl { proc EnvTraceProc {lo n1 n2 op} { - set x $::env($n2) - set ::env($lo) $x - set ::env([string toupper $lo]) $x + global env + set x $env($n2) + set env($lo) $x + set env([string toupper $lo]) $x } proc InitWinEnv {} { global env tcl_platform @@ -130,9 +130,9 @@ if {(![interp issafe]) && ($tcl_platform(platform) eq "windows")} { switch -- $u { COMSPEC - PATH { - if {![info exists env($u)]} { - set env($u) $env($p) - } + set temp $env($p) + unset env($p) + set env($u) $temp trace add variable env($p) write \ [namespace code [list EnvTraceProc $p]] trace add variable env($u) write \ @@ -142,11 +142,7 @@ if {(![interp issafe]) && ($tcl_platform(platform) eq "windows")} { } } if {![info exists env(COMSPEC)]} { - if {$tcl_platform(os) eq "Windows NT"} { - set env(COMSPEC) cmd.exe - } else { - set env(COMSPEC) command.com - } + set env(COMSPEC) cmd.exe } } InitWinEnv @@ -161,8 +157,8 @@ if {[interp issafe]} { } else { # Set up search for Tcl Modules (TIP #189). # and setup platform specific unknown package handlers - if {$::tcl_platform(os) eq "Darwin" - && $::tcl_platform(platform) eq "unix"} { + if {$tcl_platform(os) eq "Darwin" + && $tcl_platform(platform) eq "unix"} { package unknown {::tcl::tm::UnknownHandler \ {::tcl::MacOSXPkgUnknown ::tclPkgUnknown}} } else { @@ -179,9 +175,9 @@ if {[interp issafe]} { -subcommands { add clicks format microseconds milliseconds scan seconds }] - + # Auto-loading stubs for 'clock.tcl' - + foreach cmd {add format scan} { proc ::tcl::clock::$cmd args { variable TclLibDir @@ -218,11 +214,9 @@ if {[namespace which -command tclLog] eq ""} { # exist in the interpreter. It takes the following steps to make the # command available: # -# 1. See if the command has the form "namespace inscope ns cmd" and -# if so, concatenate its arguments onto the end and evaluate it. -# 2. See if the autoload facility can locate the command in a +# 1. See if the autoload facility can locate the command in a # Tcl script file. If so, load it and execute it. -# 3. If the command was invoked interactively at top-level: +# 2. If the command was invoked interactively at top-level: # (a) see if the command exists as an executable UNIX program. # If so, "exec" the command. # (b) see if the command requests csh-like history substitution @@ -237,37 +231,29 @@ if {[namespace which -command tclLog] eq ""} { proc unknown args { variable ::tcl::UnknownPending - global auto_noexec auto_noload env tcl_interactive - - # If the command word has the form "namespace inscope ns cmd" - # then concatenate its arguments onto the end and evaluate it. + global auto_noexec auto_noload env tcl_interactive errorInfo errorCode - set cmd [lindex $args 0] - if {[regexp "^:*namespace\[ \t\n\]+inscope" $cmd] && [llength $cmd] == 4} { - #return -code error "You need an {*}" - set arglist [lrange $args 1 end] - set ret [catch {uplevel 1 ::$cmd $arglist} result opts] - dict unset opts -errorinfo - dict incr opts -level - return -options $opts $result + if {[info exists errorInfo]} { + set savedErrorInfo $errorInfo + } + if {[info exists errorCode]} { + set savedErrorCode $errorCode } - catch {set savedErrorInfo $::errorInfo} - catch {set savedErrorCode $::errorCode} - set name $cmd + set name [lindex $args 0] if {![info exists auto_noload]} { # # Make sure we're not trying to load the same proc twice. # if {[info exists UnknownPending($name)]} { return -code error "self-referential recursion\ - in \"unknown\" for command \"$name\""; + in \"unknown\" for command \"$name\"" } - set UnknownPending($name) pending; + set UnknownPending($name) pending set ret [catch { auto_load $name [uplevel 1 {::namespace current}] } msg opts] - unset UnknownPending($name); + unset UnknownPending($name) if {$ret != 0} { dict append opts -errorinfo "\n (autoloading \"$name\")" return -options $opts $msg @@ -282,19 +268,19 @@ proc unknown args { unset -nocomplain ::errorCode } if {[info exists savedErrorInfo]} { - set ::errorInfo $savedErrorInfo + set errorInfo $savedErrorInfo } else { - unset -nocomplain ::errorInfo + unset -nocomplain errorInfo } set code [catch {uplevel 1 $args} msg opts] if {$code == 1} { # # Compute stack trace contribution from the [uplevel]. - # Note the dependence on how Tcl_AddErrorInfo, etc. + # Note the dependence on how Tcl_AddErrorInfo, etc. # construct the stack trace. # - set errorInfo [dict get $opts -errorinfo] - set errorCode [dict get $opts -errorcode] + set errInfo [dict get $opts -errorinfo] + set errCode [dict get $opts -errorcode] set cinfo $args if {[string bytelength $cinfo] > 150} { set cinfo [string range $cinfo 0 150] @@ -311,7 +297,7 @@ proc unknown args { # and trim the extra contribution from the matching case # set expect "$msg\n while executing\n\"$cinfo" - if {$errorInfo eq $expect} { + if {$errInfo eq $expect} { # # The stack has only the eval from the expanded command # Do not generate any stack trace here. @@ -326,18 +312,18 @@ proc unknown args { # set expect "\n invoked from within\n\"$cinfo" set exlen [string length $expect] - set eilen [string length $errorInfo] + set eilen [string length $errInfo] set i [expr {$eilen - $exlen - 1}] - set einfo [string range $errorInfo 0 $i] + set einfo [string range $errInfo 0 $i] # - # For now verify that $errorInfo consists of what we are about + # For now verify that $errInfo consists of what we are about # to return plus what we expected to trim off. # - if {$errorInfo ne "$einfo$expect"} { + if {$errInfo ne "$einfo$expect"} { error "Tcl bug: unexpected stack trace in \"unknown\"" {} \ - [list CORE UNKNOWN BADTRACE $einfo $expect $errorInfo] + [list CORE UNKNOWN BADTRACE $einfo $expect $errInfo] } - return -code error -errorcode $errorCode \ + return -code error -errorcode $errCode \ -errorinfo $einfo $msg } else { dict incr opts -level @@ -346,7 +332,7 @@ proc unknown args { } } - if {([info level] == 1) && ([info script] eq "") \ + if {([info level] == 1) && ([info script] eq "") && [info exists tcl_interactive] && $tcl_interactive} { if {![info exists auto_noexec]} { set new [auto_execok $name] @@ -421,7 +407,7 @@ proc unknown args { # library file to create the procedure. Returns 1 if it successfully # loaded the procedure, 0 otherwise. # -# Arguments: +# Arguments: # cmd - Name of the command to find and load. # namespace (optional) The namespace where the command is being used - must be # a canonical namespace as returned [namespace current] @@ -445,7 +431,7 @@ proc auto_load {cmd {namespace {}}} { # info commands $name # Unfortunately, if the name has glob-magic chars in it like * # or [], it may not match. For our purposes here, a better - # route is to use + # route is to use # namespace which -command $name if {[namespace which -command $name] ne ""} { return 1 @@ -476,7 +462,7 @@ proc auto_load {cmd {namespace {}}} { # of available commands. Returns 1 if the index is loaded, and 0 if # the index is already loaded and up to date. # -# Arguments: +# Arguments: # None. proc auto_load_index {} { @@ -555,34 +541,34 @@ proc auto_qualify {cmd namespace} { # Before each return case we give an example of which category it is # with the following form : - # ( inputCmd, inputNameSpace) -> output + # (inputCmd, inputNameSpace) -> output if {[string match ::* $cmd]} { if {$n > 1} { - # ( ::foo::bar , * ) -> ::foo::bar + # (::foo::bar , *) -> ::foo::bar return [list $cmd] } else { - # ( ::global , * ) -> global + # (::global , *) -> global return [list [string range $cmd 2 end]] } } - + # Potentially returning 2 elements to try : # (if the current namespace is not the global one) if {$n == 0} { if {$namespace eq "::"} { - # ( nocolons , :: ) -> nocolons + # (nocolons , ::) -> nocolons return [list $cmd] } else { - # ( nocolons , ::sub ) -> ::sub::nocolons nocolons + # (nocolons , ::sub) -> ::sub::nocolons nocolons return [list ${namespace}::$cmd $cmd] } } elseif {$namespace eq "::"} { - # ( foo::bar , :: ) -> ::foo::bar + # (foo::bar , ::) -> ::foo::bar return [list ::$cmd] } else { - # ( foo::bar , ::sub ) -> ::sub::foo::bar ::foo::bar + # (foo::bar , ::sub) -> ::sub::foo::bar ::foo::bar return [list ${namespace}::$cmd ::$cmd] } } @@ -624,13 +610,13 @@ proc auto_import {pattern} { # auto_execok -- # -# Returns string that indicates name of program to execute if +# Returns string that indicates name of program to execute if # name corresponds to a shell builtin or an executable in the -# Windows search path, or "" otherwise. Builds an associative -# array auto_execs that caches information about previous checks, +# Windows search path, or "" otherwise. Builds an associative +# array auto_execs that caches information about previous checks, # for speed. # -# Arguments: +# Arguments: # name - Name of a command. if {$tcl_platform(platform) eq "windows"} { @@ -659,10 +645,10 @@ proc auto_execok name { # Add an initial ; to have the {} extension check first. set execExtensions [split ";$env(PATHEXT)" ";"] } else { - set execExtensions [list {} .com .exe .bat] + set execExtensions [list {} .com .exe .bat .cmd] } - if {$name in $shellBuiltins} { + if {[string tolower $name] in $shellBuiltins} { # When this is command.com for some reason on Win2K, Tcl won't # exec it unless the case is right, which this corrects. COMSPEC # may not point to a real file, so do the check. @@ -685,7 +671,7 @@ proc auto_execok name { set path "[file dirname [info nameof]];.;" if {[info exists env(WINDIR)]} { - set windir $env(WINDIR) + set windir $env(WINDIR) } if {[info exists windir]} { if {$tcl_platform(os) eq "Windows NT"} { @@ -700,11 +686,14 @@ proc auto_execok name { } } - foreach dir [split $path {;}] { - # Skip already checked directories - if {[info exists checked($dir)] || ($dir eq {})} { continue } - set checked($dir) {} - foreach ext $execExtensions { + foreach ext $execExtensions { + unset -nocomplain checked + foreach dir [split $path {;}] { + # Skip already checked directories + if {[info exists checked($dir)] || ($dir eq "")} { + continue + } + set checked($dir) {} set file [file join $dir ${name}${ext}] if {[file exists $file] && ![file isdirectory $file]} { return [set auto_execs($name) [list $file]] @@ -750,13 +739,13 @@ proc auto_execok name { # This procedure is called by Tcl's core when attempts to call the # filesystem's copydirectory function fail. The semantics of the call # are that 'dest' does not yet exist, i.e. dest should become the exact -# image of src. If dest does exist, we throw an error. -# +# image of src. If dest does exist, we throw an error. +# # Note that making changes to this procedure can change the results # of running Tcl's tests. # -# Arguments: -# action - "renaming" or "copying" +# Arguments: +# action - "renaming" or "copying" # src - source directory # dest - destination directory proc tcl::CopyDirectory {action src dest} { @@ -784,7 +773,7 @@ proc tcl::CopyDirectory {action src dest} { # exists, then we should only call this function if -force # is true, which means we just want to over-write. So, # the following code is now commented out. - # + # # return -code error "error $action \"$src\" to\ # \"$dest\": file already exists" } else { @@ -796,7 +785,7 @@ proc tcl::CopyDirectory {action src dest} { lappend existing {*}[glob -nocomplain -directory $dest \ -type hidden * .*] foreach s $existing { - if {([file tail $s] ne ".") && ([file tail $s] ne "..")} { + if {[file tail $s] ni {. ..}} { return -code error "error $action \"$src\" to\ \"$dest\": file already exists" } @@ -804,7 +793,7 @@ proc tcl::CopyDirectory {action src dest} { } } else { if {[string first $nsrc $ndest] != -1} { - set srclen [expr {[llength [file split $nsrc]] -1}] + set srclen [expr {[llength [file split $nsrc]] - 1}] set ndest [lindex [file split $ndest] $srclen] if {$ndest eq [file tail $nsrc]} { return -code error "error $action \"$src\" to\ @@ -817,15 +806,15 @@ proc tcl::CopyDirectory {action src dest} { # Have to be careful to capture both visible and hidden files. # We will also be more generous to the file system and not # assume the hidden and non-hidden lists are non-overlapping. - # + # # On Unix 'hidden' files begin with '.'. On other platforms # or filesystems hidden files may have other interpretations. set filelist [concat [glob -nocomplain -directory $src *] \ [glob -nocomplain -directory $src -types hidden *]] foreach s [lsort -unique $filelist] { - if {([file tail $s] ne ".") && ([file tail $s] ne "..")} { - file copy -force $s [file join $dest [file tail $s]] + if {[file tail $s] ni {. ..}} { + file copy -force -- $s [file join $dest [file tail $s]] } } return diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl index ccf4054..cf3b9d7 100644 --- a/library/msgcat/msgcat.tcl +++ b/library/msgcat/msgcat.tcl @@ -9,17 +9,15 @@ # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. -# -# RCS: @(#) $Id: msgcat.tcl,v 1.26 2006/11/03 00:34:52 hobbs Exp $ package require Tcl 8.5 # When the version number changes, be sure to update the pkgIndex.tcl file, # and the installation directory in the Makefiles. -package provide msgcat 1.4.2 +package provide msgcat 1.5.2 namespace eval msgcat { namespace export mc mcload mclocale mcmax mcmset mcpreferences mcset \ - mcunknown + mcunknown mcflset mcflmset # Records the current locale as passed to mclocale variable Locale "" @@ -27,6 +25,9 @@ namespace eval msgcat { # Records the list of locales to search variable Loclist {} + # Records the locale of the currently sourced message catalogue file + variable FileLocale + # Records the mapping between source strings and translated strings. The # dict key is of the form "<locale> <namespace> <src>", where locale and # namespace should be themselves dict values and the value is @@ -34,7 +35,7 @@ namespace eval msgcat { variable Msgs [dict create] # Map of language codes used in Windows registry to those of ISO-639 - if { $::tcl_platform(platform) eq "windows" } { + if {[info sharedlibextension] eq ".dll"} { variable WinRegToISO639 [dict create {*}{ 01 ar 0401 ar_SA 0801 ar_IQ 0c01 ar_EG 1001 ar_LY 1401 ar_DZ 1801 ar_MA 1c01 ar_TN 2001 ar_OM 2401 ar_YE 2801 ar_SY @@ -68,8 +69,8 @@ namespace eval msgcat { 15 pl 0415 pl_PL 16 pt 0416 pt_BR 0816 pt_PT 17 rm 0417 rm_CH - 18 ro 0418 ro_RO - 19 ru + 18 ro 0418 ro_RO 0818 ro_MO + 19 ru 0819 ru_MO 1a hr 041a hr_HR 081a sr_YU 0c1a sr_YU@cyrillic 1b sk 041b sk_SK 1c sq 041c sq_AL @@ -94,6 +95,7 @@ namespace eval msgcat { 2f mk 042f mk_MK 30 bnt 0430 bnt_TZ 31 ts 0431 ts_ZA + 32 tn 33 ven 0433 ven_ZA 34 xh 0434 xh_ZA 35 zu 0435 zu_ZA @@ -177,7 +179,7 @@ namespace eval msgcat { # args Args to pass to the format command # # Results: -# Returns the translated string. Propagates errors thrown by the +# Returns the translated string. Propagates errors thrown by the # format command. proc msgcat::mc {src args} { @@ -189,7 +191,7 @@ proc msgcat::mc {src args} { variable Locale set ns [uplevel 1 [list ::namespace current]] - + while {$ns != ""} { foreach loc $Loclist { if {[dict exists $Msgs $loc $ns $src]} { @@ -278,17 +280,30 @@ proc msgcat::mcpreferences {} { # Returns the number of message catalogs that were loaded. proc msgcat::mcload {langdir} { + variable FileLocale + # Save the file locale if we are recursively called + if {[info exists FileLocale]} { + set nestedFileLocale $FileLocale + } set x 0 foreach p [mcpreferences] { - if { $p eq {} } { + if {$p eq {}} { set p ROOT } set langfile [file join $langdir $p.msg] if {[file exists $langfile]} { incr x + set FileLocale [string tolower [file tail [file rootname $langfile]]] + if {"root" eq $FileLocale} { + set FileLocale "" + } uplevel 1 [list ::source -encoding utf-8 $langfile] + unset FileLocale } } + if {[info exists nestedFileLocale]} { + set FileLocale $nestedFileLocale + } return $x } @@ -312,17 +327,39 @@ proc msgcat::mcset {locale src {dest ""}} { } set ns [uplevel 1 [list ::namespace current]] - + set locale [string tolower $locale] - - # create nested dictionaries if they do not exist - if {![dict exists $Msgs $locale]} { - dict set Msgs $locale [dict create] + + dict set Msgs $locale $ns $src $dest + return $dest +} + +# msgcat::mcflset -- +# +# Set the translation for a given string in the current file locale. +# +# Arguments: +# src The source string. +# dest (Optional) The translated string. If omitted, +# the source string is used. +# +# Results: +# Returns the new locale. + +proc msgcat::mcflset {src {dest ""}} { + variable FileLocale + variable Msgs + + if {![info exists FileLocale]} { + return -code error \ + "must only be used inside a message catalog loaded with ::msgcat::mcload" } - if {![dict exists $Msgs $locale $ns]} { - dict set Msgs $locale $ns [dict create] + if {[llength [info level 0]] == 2} { ;# dest not specified + set dest $src } - dict set Msgs $locale $ns $src $dest + + set ns [uplevel 1 [list ::namespace current]] + dict set Msgs $FileLocale $ns $src $dest return $dest } @@ -337,7 +374,7 @@ proc msgcat::mcset {locale src {dest ""}} { # Results: # Returns the number of pairs processed -proc msgcat::mcmset {locale pairs } { +proc msgcat::mcmset {locale pairs} { variable Msgs set length [llength $pairs] @@ -345,22 +382,46 @@ proc msgcat::mcmset {locale pairs } { return -code error "bad translation list:\ should be \"[lindex [info level 0] 0] locale {src dest ...}\"" } - + set locale [string tolower $locale] set ns [uplevel 1 [list ::namespace current]] - # create nested dictionaries if they do not exist - if {![dict exists $Msgs $locale]} { - dict set Msgs $locale [dict create] - } - if {![dict exists $Msgs $locale $ns]} { - dict set Msgs $locale $ns [dict create] - } foreach {src dest} $pairs { - dict set Msgs $locale $ns $src $dest + dict set Msgs $locale $ns $src $dest } - return $length + return [expr {$length / 2}] +} + +# msgcat::mcflmset -- +# +# Set the translation for multiple strings in the mc file locale. +# +# Arguments: +# pairs One or more src/dest pairs (must be even length) +# +# Results: +# Returns the number of pairs processed + +proc msgcat::mcflmset {pairs} { + variable FileLocale + variable Msgs + + if {![info exists FileLocale]} { + return -code error \ + "must only be used inside a message catalog loaded with ::msgcat::mcload" + } + set length [llength $pairs] + if {$length % 2} { + return -code error "bad translation list:\ + should be \"[lindex [info level 0] 0] locale {src dest ...}\"" + } + + set ns [uplevel 1 [list ::namespace current]] + foreach {src dest} $pairs { + dict set Msgs $FileLocale $ns $src $dest + } + return [expr {$length / 2}] } # msgcat::mcunknown -- @@ -368,7 +429,7 @@ proc msgcat::mcmset {locale pairs } { # This routine is called by msgcat::mc if a translation cannot # be found for a string. This routine is intended to be replaced # by an application specific routine for error reporting -# purposes. The default behavior is to return the source string. +# purposes. The default behavior is to return the source string. # If additional args are specified, the format command will be used # to work them into the traslated string. # @@ -390,7 +451,7 @@ proc msgcat::mcunknown {locale src args} { # msgcat::mcmax -- # -# Calculates the maximum length of the translated strings of the given +# Calculates the maximum length of the translated strings of the given # list. # # Arguments: @@ -403,10 +464,10 @@ proc msgcat::mcmax {args} { set max 0 foreach string $args { set translated [uplevel 1 [list [namespace origin mc] $string]] - set len [string length $translated] - if {$len>$max} { + set len [string length $translated] + if {$len>$max} { set max $len - } + } } return $max } @@ -442,13 +503,15 @@ proc msgcat::ConvertLocale {value} { # Initialize the default locale proc msgcat::Init {} { + global env + # # set default locale, try to get from environment # foreach varName {LC_ALL LC_MESSAGES LANG} { - if {[info exists ::env($varName)] && ("" ne $::env($varName))} { + if {[info exists env($varName)] && ("" ne $env($varName))} { if {![catch { - mclocale [ConvertLocale $::env($varName)] + mclocale [ConvertLocale $env($varName)] }]} { return } @@ -457,8 +520,7 @@ proc msgcat::Init {} { # # On Darwin, fallback to current CFLocale identifier if available. # - if {$::tcl_platform(os) eq "Darwin" && $::tcl_platform(platform) eq "unix" - && [info exists ::tcl::mac::locale] && $::tcl::mac::locale ne ""} { + if {[info exists ::tcl::mac::locale] && $::tcl::mac::locale ne ""} { if {![catch { mclocale [ConvertLocale $::tcl::mac::locale] }]} { @@ -466,21 +528,54 @@ proc msgcat::Init {} { } } # - # The rest of this routine is special processing for Windows; - # all other platforms, get out now. + # The rest of this routine is special processing for Windows or + # Cygwin. All other platforms, get out now. # - if { $::tcl_platform(platform) ne "windows" } { + if {([info sharedlibextension] ne ".dll") + || [catch {package require registry}]} { mclocale C return } # - # On Windows, try to set locale depending on registry settings, - # or fall back on locale of "C". + # On Windows or Cygwin, try to set locale depending on registry + # settings, or fall back on locale of "C". # - set key {HKEY_CURRENT_USER\Control Panel\International} - if {[catch {package require registry}] \ - || [catch {registry get $key "locale"} locale]} { - mclocale C + + # On Vista and later: + # HCU/Control Panel/Desktop : PreferredUILanguages is for language packs, + # HCU/Control Pannel/International : localName is the default locale. + # + # They contain the local string as RFC5646, composed of: + # [a-z]{2,3} : language + # -[a-z]{4} : script (optional, translated by table Latn->latin) + # -[a-z]{2}|[0-9]{3} : territory (optional, numerical region codes not used) + # (-.*)* : variant, extension, private use (optional, not used) + # Those are translated to local strings. + # Examples: de-CH -> de_ch, sr-Latn-CS -> sr_cs@latin, es-419 -> es + # + foreach key {{HKEY_CURRENT_USER\Control Panel\Desktop} {HKEY_CURRENT_USER\Control Panel\International}}\ + value {PreferredUILanguages localeName} { + if {![catch {registry get $key $value} localeName] + && [regexp {^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}))?(?:-.+)?$}\ + [string tolower $localeName] match locale script territory]} { + if {"" ne $territory} { + append locale _ $territory + } + set modifierDict [dict create latn latin cyrl cyrillic] + if {[dict exists $modifierDict $script]} { + append locale @ [dict get $modifierDict $script] + } + if {![catch {mclocale [ConvertLocale $locale]}]} { + return + } + } + } + + # then check value locale which contains a numerical language ID + if {[catch { + set locale [registry get $key "locale"] + }]} { + mclocale C return } # @@ -496,7 +591,7 @@ proc msgcat::Init {} { set locale [string tolower $locale] while {[string length $locale]} { if {![catch { - mclocale [ConvertLocale [dict get $WinRegToISO639 $locale]] + mclocale [ConvertLocale [dict get $WinRegToISO639 $locale]] }]} { return } diff --git a/library/msgcat/pkgIndex.tcl b/library/msgcat/pkgIndex.tcl index 5b6037c..5fabfe3 100644 --- a/library/msgcat/pkgIndex.tcl +++ b/library/msgcat/pkgIndex.tcl @@ -1,2 +1,2 @@ if {![package vsatisfies [package provide Tcl] 8.5]} {return} -package ifneeded msgcat 1.4.2 [list source [file join $dir msgcat.tcl]] +package ifneeded msgcat 1.5.2 [list source [file join $dir msgcat.tcl]] diff --git a/library/msgs/af.msg b/library/msgs/af.msg index 0892615..0892615 100755..100644 --- a/library/msgs/af.msg +++ b/library/msgs/af.msg diff --git a/library/msgs/af_za.msg b/library/msgs/af_za.msg index fef48ad..fef48ad 100755..100644 --- a/library/msgs/af_za.msg +++ b/library/msgs/af_za.msg diff --git a/library/msgs/ar.msg b/library/msgs/ar.msg index 257157f..257157f 100755..100644 --- a/library/msgs/ar.msg +++ b/library/msgs/ar.msg diff --git a/library/msgs/ar_in.msg b/library/msgs/ar_in.msg index 185e49c..185e49c 100755..100644 --- a/library/msgs/ar_in.msg +++ b/library/msgs/ar_in.msg diff --git a/library/msgs/ar_jo.msg b/library/msgs/ar_jo.msg index 0f5e269..0f5e269 100755..100644 --- a/library/msgs/ar_jo.msg +++ b/library/msgs/ar_jo.msg diff --git a/library/msgs/ar_lb.msg b/library/msgs/ar_lb.msg index e62acd3..e62acd3 100755..100644 --- a/library/msgs/ar_lb.msg +++ b/library/msgs/ar_lb.msg diff --git a/library/msgs/ar_sy.msg b/library/msgs/ar_sy.msg index d5e1c87..d5e1c87 100755..100644 --- a/library/msgs/ar_sy.msg +++ b/library/msgs/ar_sy.msg diff --git a/library/msgs/be.msg b/library/msgs/be.msg index 379a1d7..379a1d7 100755..100644 --- a/library/msgs/be.msg +++ b/library/msgs/be.msg diff --git a/library/msgs/bg.msg b/library/msgs/bg.msg index ff17759..ff17759 100755..100644 --- a/library/msgs/bg.msg +++ b/library/msgs/bg.msg diff --git a/library/msgs/bn.msg b/library/msgs/bn.msg index 664b9d8..664b9d8 100755..100644 --- a/library/msgs/bn.msg +++ b/library/msgs/bn.msg diff --git a/library/msgs/bn_in.msg b/library/msgs/bn_in.msg index 28c000f..28c000f 100755..100644 --- a/library/msgs/bn_in.msg +++ b/library/msgs/bn_in.msg diff --git a/library/msgs/ca.msg b/library/msgs/ca.msg index 36c9772..36c9772 100755..100644 --- a/library/msgs/ca.msg +++ b/library/msgs/ca.msg diff --git a/library/msgs/cs.msg b/library/msgs/cs.msg index 8db8bdd..8db8bdd 100755..100644 --- a/library/msgs/cs.msg +++ b/library/msgs/cs.msg diff --git a/library/msgs/da.msg b/library/msgs/da.msg index e4fec7f..e4fec7f 100755..100644 --- a/library/msgs/da.msg +++ b/library/msgs/da.msg diff --git a/library/msgs/de.msg b/library/msgs/de.msg index 9eb3145..9eb3145 100755..100644 --- a/library/msgs/de.msg +++ b/library/msgs/de.msg diff --git a/library/msgs/de_at.msg b/library/msgs/de_at.msg index 61bc266..61bc266 100755..100644 --- a/library/msgs/de_at.msg +++ b/library/msgs/de_at.msg diff --git a/library/msgs/de_be.msg b/library/msgs/de_be.msg index 3614763..3614763 100755..100644 --- a/library/msgs/de_be.msg +++ b/library/msgs/de_be.msg diff --git a/library/msgs/el.msg b/library/msgs/el.msg index ac19f62..ac19f62 100755..100644 --- a/library/msgs/el.msg +++ b/library/msgs/el.msg diff --git a/library/msgs/en_au.msg b/library/msgs/en_au.msg index 7f9870c..7f9870c 100755..100644 --- a/library/msgs/en_au.msg +++ b/library/msgs/en_au.msg diff --git a/library/msgs/en_be.msg b/library/msgs/en_be.msg index 5072986..5072986 100755..100644 --- a/library/msgs/en_be.msg +++ b/library/msgs/en_be.msg diff --git a/library/msgs/en_bw.msg b/library/msgs/en_bw.msg index 8fd20c7..8fd20c7 100755..100644 --- a/library/msgs/en_bw.msg +++ b/library/msgs/en_bw.msg diff --git a/library/msgs/en_ca.msg b/library/msgs/en_ca.msg index 278efe7..278efe7 100755..100644 --- a/library/msgs/en_ca.msg +++ b/library/msgs/en_ca.msg diff --git a/library/msgs/en_gb.msg b/library/msgs/en_gb.msg index 5c61c43..5c61c43 100755..100644 --- a/library/msgs/en_gb.msg +++ b/library/msgs/en_gb.msg diff --git a/library/msgs/en_hk.msg b/library/msgs/en_hk.msg index 8b33bc0..8b33bc0 100755..100644 --- a/library/msgs/en_hk.msg +++ b/library/msgs/en_hk.msg diff --git a/library/msgs/en_ie.msg b/library/msgs/en_ie.msg index ba621cf..ba621cf 100755..100644 --- a/library/msgs/en_ie.msg +++ b/library/msgs/en_ie.msg diff --git a/library/msgs/en_in.msg b/library/msgs/en_in.msg index a1f155d..a1f155d 100755..100644 --- a/library/msgs/en_in.msg +++ b/library/msgs/en_in.msg diff --git a/library/msgs/en_nz.msg b/library/msgs/en_nz.msg index b419017..b419017 100755..100644 --- a/library/msgs/en_nz.msg +++ b/library/msgs/en_nz.msg diff --git a/library/msgs/en_ph.msg b/library/msgs/en_ph.msg index 682666d..682666d 100755..100644 --- a/library/msgs/en_ph.msg +++ b/library/msgs/en_ph.msg diff --git a/library/msgs/en_sg.msg b/library/msgs/en_sg.msg index 4dc5b1d..4dc5b1d 100755..100644 --- a/library/msgs/en_sg.msg +++ b/library/msgs/en_sg.msg diff --git a/library/msgs/en_za.msg b/library/msgs/en_za.msg index fe43797..fe43797 100755..100644 --- a/library/msgs/en_za.msg +++ b/library/msgs/en_za.msg diff --git a/library/msgs/en_zw.msg b/library/msgs/en_zw.msg index 2a5804f..2a5804f 100755..100644 --- a/library/msgs/en_zw.msg +++ b/library/msgs/en_zw.msg diff --git a/library/msgs/eo.msg b/library/msgs/eo.msg index 1d2a24f..1d2a24f 100755..100644 --- a/library/msgs/eo.msg +++ b/library/msgs/eo.msg diff --git a/library/msgs/es.msg b/library/msgs/es.msg index a24f0a1..a24f0a1 100755..100644 --- a/library/msgs/es.msg +++ b/library/msgs/es.msg diff --git a/library/msgs/es_ar.msg b/library/msgs/es_ar.msg index 7d35027..7d35027 100755..100644 --- a/library/msgs/es_ar.msg +++ b/library/msgs/es_ar.msg diff --git a/library/msgs/es_bo.msg b/library/msgs/es_bo.msg index 498ad0d..498ad0d 100755..100644 --- a/library/msgs/es_bo.msg +++ b/library/msgs/es_bo.msg diff --git a/library/msgs/es_cl.msg b/library/msgs/es_cl.msg index 31d465c..31d465c 100755..100644 --- a/library/msgs/es_cl.msg +++ b/library/msgs/es_cl.msg diff --git a/library/msgs/es_co.msg b/library/msgs/es_co.msg index 77e57f0..77e57f0 100755..100644 --- a/library/msgs/es_co.msg +++ b/library/msgs/es_co.msg diff --git a/library/msgs/es_cr.msg b/library/msgs/es_cr.msg index 7a652fa..7a652fa 100755..100644 --- a/library/msgs/es_cr.msg +++ b/library/msgs/es_cr.msg diff --git a/library/msgs/es_do.msg b/library/msgs/es_do.msg index 0e283da..0e283da 100755..100644 --- a/library/msgs/es_do.msg +++ b/library/msgs/es_do.msg diff --git a/library/msgs/es_ec.msg b/library/msgs/es_ec.msg index 9e921e0..9e921e0 100755..100644 --- a/library/msgs/es_ec.msg +++ b/library/msgs/es_ec.msg diff --git a/library/msgs/es_gt.msg b/library/msgs/es_gt.msg index ecd6faf..ecd6faf 100755..100644 --- a/library/msgs/es_gt.msg +++ b/library/msgs/es_gt.msg diff --git a/library/msgs/es_hn.msg b/library/msgs/es_hn.msg index a758ca2..a758ca2 100755..100644 --- a/library/msgs/es_hn.msg +++ b/library/msgs/es_hn.msg diff --git a/library/msgs/es_mx.msg b/library/msgs/es_mx.msg index 7cfb545..7cfb545 100755..100644 --- a/library/msgs/es_mx.msg +++ b/library/msgs/es_mx.msg diff --git a/library/msgs/es_ni.msg b/library/msgs/es_ni.msg index 7c39495..7c39495 100755..100644 --- a/library/msgs/es_ni.msg +++ b/library/msgs/es_ni.msg diff --git a/library/msgs/es_pa.msg b/library/msgs/es_pa.msg index cecacdc..cecacdc 100755..100644 --- a/library/msgs/es_pa.msg +++ b/library/msgs/es_pa.msg diff --git a/library/msgs/es_pe.msg b/library/msgs/es_pe.msg index 9f90595..9f90595 100755..100644 --- a/library/msgs/es_pe.msg +++ b/library/msgs/es_pe.msg diff --git a/library/msgs/es_pr.msg b/library/msgs/es_pr.msg index 8511b12..8511b12 100755..100644 --- a/library/msgs/es_pr.msg +++ b/library/msgs/es_pr.msg diff --git a/library/msgs/es_py.msg b/library/msgs/es_py.msg index aa93d36..aa93d36 100755..100644 --- a/library/msgs/es_py.msg +++ b/library/msgs/es_py.msg diff --git a/library/msgs/es_sv.msg b/library/msgs/es_sv.msg index fc7954d..fc7954d 100755..100644 --- a/library/msgs/es_sv.msg +++ b/library/msgs/es_sv.msg diff --git a/library/msgs/es_uy.msg b/library/msgs/es_uy.msg index b33525c..b33525c 100755..100644 --- a/library/msgs/es_uy.msg +++ b/library/msgs/es_uy.msg diff --git a/library/msgs/es_ve.msg b/library/msgs/es_ve.msg index 7c2a7b0..7c2a7b0 100755..100644 --- a/library/msgs/es_ve.msg +++ b/library/msgs/es_ve.msg diff --git a/library/msgs/et.msg b/library/msgs/et.msg index 8d32e9e..8d32e9e 100755..100644 --- a/library/msgs/et.msg +++ b/library/msgs/et.msg diff --git a/library/msgs/eu.msg b/library/msgs/eu.msg index cf708b6..cf708b6 100755..100644 --- a/library/msgs/eu.msg +++ b/library/msgs/eu.msg diff --git a/library/msgs/eu_es.msg b/library/msgs/eu_es.msg index 2694418..2694418 100755..100644 --- a/library/msgs/eu_es.msg +++ b/library/msgs/eu_es.msg diff --git a/library/msgs/fa.msg b/library/msgs/fa.msg index 89b2f90..89b2f90 100755..100644 --- a/library/msgs/fa.msg +++ b/library/msgs/fa.msg diff --git a/library/msgs/fa_in.msg b/library/msgs/fa_in.msg index adc9e91..adc9e91 100755..100644 --- a/library/msgs/fa_in.msg +++ b/library/msgs/fa_in.msg diff --git a/library/msgs/fa_ir.msg b/library/msgs/fa_ir.msg index 597ce9d..597ce9d 100755..100644 --- a/library/msgs/fa_ir.msg +++ b/library/msgs/fa_ir.msg diff --git a/library/msgs/fi.msg b/library/msgs/fi.msg index acabba0..acabba0 100755..100644 --- a/library/msgs/fi.msg +++ b/library/msgs/fi.msg diff --git a/library/msgs/fo.msg b/library/msgs/fo.msg index 4696e62..4696e62 100755..100644 --- a/library/msgs/fo.msg +++ b/library/msgs/fo.msg diff --git a/library/msgs/fo_fo.msg b/library/msgs/fo_fo.msg index 2392b8e..2392b8e 100755..100644 --- a/library/msgs/fo_fo.msg +++ b/library/msgs/fo_fo.msg diff --git a/library/msgs/fr.msg b/library/msgs/fr.msg index 55b19bf..55b19bf 100755..100644 --- a/library/msgs/fr.msg +++ b/library/msgs/fr.msg diff --git a/library/msgs/fr_be.msg b/library/msgs/fr_be.msg index cdb13bd..cdb13bd 100755..100644 --- a/library/msgs/fr_be.msg +++ b/library/msgs/fr_be.msg diff --git a/library/msgs/fr_ca.msg b/library/msgs/fr_ca.msg index 00ccfff..00ccfff 100755..100644 --- a/library/msgs/fr_ca.msg +++ b/library/msgs/fr_ca.msg diff --git a/library/msgs/fr_ch.msg b/library/msgs/fr_ch.msg index 7e2bac7..7e2bac7 100755..100644 --- a/library/msgs/fr_ch.msg +++ b/library/msgs/fr_ch.msg diff --git a/library/msgs/ga.msg b/library/msgs/ga.msg index 6edf13a..6edf13a 100755..100644 --- a/library/msgs/ga.msg +++ b/library/msgs/ga.msg diff --git a/library/msgs/ga_ie.msg b/library/msgs/ga_ie.msg index b6acbbc..b6acbbc 100755..100644 --- a/library/msgs/ga_ie.msg +++ b/library/msgs/ga_ie.msg diff --git a/library/msgs/gl.msg b/library/msgs/gl.msg index 4b869e8..4b869e8 100755..100644 --- a/library/msgs/gl.msg +++ b/library/msgs/gl.msg diff --git a/library/msgs/gl_es.msg b/library/msgs/gl_es.msg index d4ed270..d4ed270 100755..100644 --- a/library/msgs/gl_es.msg +++ b/library/msgs/gl_es.msg diff --git a/library/msgs/gv.msg b/library/msgs/gv.msg index 7d332ad..7d332ad 100755..100644 --- a/library/msgs/gv.msg +++ b/library/msgs/gv.msg diff --git a/library/msgs/gv_gb.msg b/library/msgs/gv_gb.msg index 5e96e6f..5e96e6f 100755..100644 --- a/library/msgs/gv_gb.msg +++ b/library/msgs/gv_gb.msg diff --git a/library/msgs/he.msg b/library/msgs/he.msg index 52a94e2..4fd921d 100755..100644 --- a/library/msgs/he.msg +++ b/library/msgs/he.msg @@ -44,8 +44,8 @@ namespace eval ::tcl::clock { "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8"\ "\u05d3\u05e6\u05de\u05d1\u05e8"\ ""] - ::msgcat::mcset he BCE "\u05dc\u05e1\u05d4"\u05e0" - ::msgcat::mcset he CE "\u05dc\u05e4\u05e1\u05d4"\u05e0" + ::msgcat::mcset he BCE "\u05dc\u05e1\u05d4\u0022\u05e0" + ::msgcat::mcset he CE "\u05dc\u05e4\u05e1\u05d4\u0022\u05e0" ::msgcat::mcset he DATE_FORMAT "%d/%m/%Y" ::msgcat::mcset he TIME_FORMAT "%H:%M:%S" ::msgcat::mcset he DATE_TIME_FORMAT "%d/%m/%Y %H:%M:%S %z" diff --git a/library/msgs/hi.msg b/library/msgs/hi.msg index 50c9fb8..50c9fb8 100755..100644 --- a/library/msgs/hi.msg +++ b/library/msgs/hi.msg diff --git a/library/msgs/hi_in.msg b/library/msgs/hi_in.msg index 239793f..239793f 100755..100644 --- a/library/msgs/hi_in.msg +++ b/library/msgs/hi_in.msg diff --git a/library/msgs/hr.msg b/library/msgs/hr.msg index cec145b..cec145b 100755..100644 --- a/library/msgs/hr.msg +++ b/library/msgs/hr.msg diff --git a/library/msgs/hu.msg b/library/msgs/hu.msg index e5e68d9..e5e68d9 100755..100644 --- a/library/msgs/hu.msg +++ b/library/msgs/hu.msg diff --git a/library/msgs/id.msg b/library/msgs/id.msg index 17c6bb5..17c6bb5 100755..100644 --- a/library/msgs/id.msg +++ b/library/msgs/id.msg diff --git a/library/msgs/id_id.msg b/library/msgs/id_id.msg index bb672c1..bb672c1 100755..100644 --- a/library/msgs/id_id.msg +++ b/library/msgs/id_id.msg diff --git a/library/msgs/is.msg b/library/msgs/is.msg index adc2d2a..adc2d2a 100755..100644 --- a/library/msgs/is.msg +++ b/library/msgs/is.msg diff --git a/library/msgs/it.msg b/library/msgs/it.msg index b641cde..b641cde 100755..100644 --- a/library/msgs/it.msg +++ b/library/msgs/it.msg diff --git a/library/msgs/it_ch.msg b/library/msgs/it_ch.msg index b36ed36..b36ed36 100755..100644 --- a/library/msgs/it_ch.msg +++ b/library/msgs/it_ch.msg diff --git a/library/msgs/ja.msg b/library/msgs/ja.msg index 2767665..2767665 100755..100644 --- a/library/msgs/ja.msg +++ b/library/msgs/ja.msg diff --git a/library/msgs/kl.msg b/library/msgs/kl.msg index d877bfe..d877bfe 100755..100644 --- a/library/msgs/kl.msg +++ b/library/msgs/kl.msg diff --git a/library/msgs/kl_gl.msg b/library/msgs/kl_gl.msg index 403aa10..403aa10 100755..100644 --- a/library/msgs/kl_gl.msg +++ b/library/msgs/kl_gl.msg diff --git a/library/msgs/ko.msg b/library/msgs/ko.msg index 0cd17a1..0cd17a1 100755..100644 --- a/library/msgs/ko.msg +++ b/library/msgs/ko.msg diff --git a/library/msgs/ko_kr.msg b/library/msgs/ko_kr.msg index ea5bbd7..ea5bbd7 100755..100644 --- a/library/msgs/ko_kr.msg +++ b/library/msgs/ko_kr.msg diff --git a/library/msgs/kok.msg b/library/msgs/kok.msg index 0869f20..0869f20 100755..100644 --- a/library/msgs/kok.msg +++ b/library/msgs/kok.msg diff --git a/library/msgs/kok_in.msg b/library/msgs/kok_in.msg index abcb1ff..abcb1ff 100755..100644 --- a/library/msgs/kok_in.msg +++ b/library/msgs/kok_in.msg diff --git a/library/msgs/kw.msg b/library/msgs/kw.msg index aaf79b3..aaf79b3 100755..100644 --- a/library/msgs/kw.msg +++ b/library/msgs/kw.msg diff --git a/library/msgs/kw_gb.msg b/library/msgs/kw_gb.msg index 2967680..2967680 100755..100644 --- a/library/msgs/kw_gb.msg +++ b/library/msgs/kw_gb.msg diff --git a/library/msgs/lt.msg b/library/msgs/lt.msg index 27b0985..27b0985 100755..100644 --- a/library/msgs/lt.msg +++ b/library/msgs/lt.msg diff --git a/library/msgs/lv.msg b/library/msgs/lv.msg index a037b15..a037b15 100755..100644 --- a/library/msgs/lv.msg +++ b/library/msgs/lv.msg diff --git a/library/msgs/mk.msg b/library/msgs/mk.msg index 41cf60d..41cf60d 100755..100644 --- a/library/msgs/mk.msg +++ b/library/msgs/mk.msg diff --git a/library/msgs/mr.msg b/library/msgs/mr.msg index cea427a..cea427a 100755..100644 --- a/library/msgs/mr.msg +++ b/library/msgs/mr.msg diff --git a/library/msgs/mr_in.msg b/library/msgs/mr_in.msg index 1889da5..1889da5 100755..100644 --- a/library/msgs/mr_in.msg +++ b/library/msgs/mr_in.msg diff --git a/library/msgs/ms.msg b/library/msgs/ms.msg index e954431..e954431 100755..100644 --- a/library/msgs/ms.msg +++ b/library/msgs/ms.msg diff --git a/library/msgs/ms_my.msg b/library/msgs/ms_my.msg index c1f93d4..c1f93d4 100755..100644 --- a/library/msgs/ms_my.msg +++ b/library/msgs/ms_my.msg diff --git a/library/msgs/mt.msg b/library/msgs/mt.msg index ddd5446..ddd5446 100755..100644 --- a/library/msgs/mt.msg +++ b/library/msgs/mt.msg diff --git a/library/msgs/nb.msg b/library/msgs/nb.msg index 90d49a3..90d49a3 100755..100644 --- a/library/msgs/nb.msg +++ b/library/msgs/nb.msg diff --git a/library/msgs/nl.msg b/library/msgs/nl.msg index 4c5c675..4c5c675 100755..100644 --- a/library/msgs/nl.msg +++ b/library/msgs/nl.msg diff --git a/library/msgs/nl_be.msg b/library/msgs/nl_be.msg index 4b19670..4b19670 100755..100644 --- a/library/msgs/nl_be.msg +++ b/library/msgs/nl_be.msg diff --git a/library/msgs/nn.msg b/library/msgs/nn.msg index bd61ac9..bd61ac9 100755..100644 --- a/library/msgs/nn.msg +++ b/library/msgs/nn.msg diff --git a/library/msgs/pl.msg b/library/msgs/pl.msg index d206f4b..d206f4b 100755..100644 --- a/library/msgs/pl.msg +++ b/library/msgs/pl.msg diff --git a/library/msgs/pt.msg b/library/msgs/pt.msg index 96fdb35..96fdb35 100755..100644 --- a/library/msgs/pt.msg +++ b/library/msgs/pt.msg diff --git a/library/msgs/pt_br.msg b/library/msgs/pt_br.msg index 8684327..8684327 100755..100644 --- a/library/msgs/pt_br.msg +++ b/library/msgs/pt_br.msg diff --git a/library/msgs/ro.msg b/library/msgs/ro.msg index bdd7c61..bdd7c61 100755..100644 --- a/library/msgs/ro.msg +++ b/library/msgs/ro.msg diff --git a/library/msgs/ru.msg b/library/msgs/ru.msg index 65b075d..65b075d 100755..100644 --- a/library/msgs/ru.msg +++ b/library/msgs/ru.msg diff --git a/library/msgs/ru_ua.msg b/library/msgs/ru_ua.msg index 6e1f8a8..6e1f8a8 100755..100644 --- a/library/msgs/ru_ua.msg +++ b/library/msgs/ru_ua.msg diff --git a/library/msgs/sh.msg b/library/msgs/sh.msg index 6ee0fc7..6ee0fc7 100755..100644 --- a/library/msgs/sh.msg +++ b/library/msgs/sh.msg diff --git a/library/msgs/sk.msg b/library/msgs/sk.msg index 9b2f0aa..9b2f0aa 100755..100644 --- a/library/msgs/sk.msg +++ b/library/msgs/sk.msg diff --git a/library/msgs/sl.msg b/library/msgs/sl.msg index 42bc509..42bc509 100755..100644 --- a/library/msgs/sl.msg +++ b/library/msgs/sl.msg diff --git a/library/msgs/sq.msg b/library/msgs/sq.msg index 8fb1fce..8fb1fce 100755..100644 --- a/library/msgs/sq.msg +++ b/library/msgs/sq.msg diff --git a/library/msgs/sr.msg b/library/msgs/sr.msg index 7576668..7576668 100755..100644 --- a/library/msgs/sr.msg +++ b/library/msgs/sr.msg diff --git a/library/msgs/sv.msg b/library/msgs/sv.msg index f7a67c6..f7a67c6 100755..100644 --- a/library/msgs/sv.msg +++ b/library/msgs/sv.msg diff --git a/library/msgs/sw.msg b/library/msgs/sw.msg index b888b43..b888b43 100755..100644 --- a/library/msgs/sw.msg +++ b/library/msgs/sw.msg diff --git a/library/msgs/ta.msg b/library/msgs/ta.msg index 4abb90c..4abb90c 100755..100644 --- a/library/msgs/ta.msg +++ b/library/msgs/ta.msg diff --git a/library/msgs/ta_in.msg b/library/msgs/ta_in.msg index 24590ac..24590ac 100755..100644 --- a/library/msgs/ta_in.msg +++ b/library/msgs/ta_in.msg diff --git a/library/msgs/te.msg b/library/msgs/te.msg index 6111473..6111473 100755..100644 --- a/library/msgs/te.msg +++ b/library/msgs/te.msg diff --git a/library/msgs/te_in.msg b/library/msgs/te_in.msg index 61638b5..61638b5 100755..100644 --- a/library/msgs/te_in.msg +++ b/library/msgs/te_in.msg diff --git a/library/msgs/th.msg b/library/msgs/th.msg index 7486c35..7486c35 100755..100644 --- a/library/msgs/th.msg +++ b/library/msgs/th.msg diff --git a/library/msgs/tr.msg b/library/msgs/tr.msg index 7b2ecf9..7b2ecf9 100755..100644 --- a/library/msgs/tr.msg +++ b/library/msgs/tr.msg diff --git a/library/msgs/uk.msg b/library/msgs/uk.msg index 3e24f86..7d4c64a 100755..100644 --- a/library/msgs/uk.msg +++ b/library/msgs/uk.msg @@ -33,7 +33,7 @@ namespace eval ::tcl::clock { ::msgcat::mcset uk MONTHS_FULL [list \ "\u0441\u0456\u0447\u043d\u044f"\ "\u043b\u044e\u0442\u043e\u0433\u043e"\ - "\u0431\u0435\u0440\u0435\u0436\u043d\u044f"\ + "\u0431\u0435\u0440\u0435\u0437\u043d\u044f"\ "\u043a\u0432\u0456\u0442\u043d\u044f"\ "\u0442\u0440\u0430\u0432\u043d\u044f"\ "\u0447\u0435\u0440\u0432\u043d\u044f"\ diff --git a/library/msgs/vi.msg b/library/msgs/vi.msg index c98b2a6..c98b2a6 100755..100644 --- a/library/msgs/vi.msg +++ b/library/msgs/vi.msg diff --git a/library/msgs/zh.msg b/library/msgs/zh.msg index b799a32..b799a32 100755..100644 --- a/library/msgs/zh.msg +++ b/library/msgs/zh.msg diff --git a/library/msgs/zh_cn.msg b/library/msgs/zh_cn.msg index d62ce77..d62ce77 100755..100644 --- a/library/msgs/zh_cn.msg +++ b/library/msgs/zh_cn.msg diff --git a/library/msgs/zh_hk.msg b/library/msgs/zh_hk.msg index badb1dd..badb1dd 100755..100644 --- a/library/msgs/zh_hk.msg +++ b/library/msgs/zh_hk.msg diff --git a/library/msgs/zh_sg.msg b/library/msgs/zh_sg.msg index a2f3e39..a2f3e39 100755..100644 --- a/library/msgs/zh_sg.msg +++ b/library/msgs/zh_sg.msg diff --git a/library/msgs/zh_tw.msg b/library/msgs/zh_tw.msg index e0796b1..e0796b1 100755..100644 --- a/library/msgs/zh_tw.msg +++ b/library/msgs/zh_tw.msg diff --git a/library/opt/optparse.tcl b/library/opt/optparse.tcl index 4622bde..fc77fa1 100644 --- a/library/opt/optparse.tcl +++ b/library/opt/optparse.tcl @@ -7,13 +7,11 @@ # of Tcl. It is NOT supported and you should not rely # on it. If your code does rely on this package you # may directly incorporate this code into your application. -# -# RCS: @(#) $Id: optparse.tcl,v 1.10 2003/09/10 20:27:30 dgp Exp $ package require Tcl 8.2 # When this version number changes, update the pkgIndex.tcl file # and the install directory in the Makefiles. -package provide opt 0.4.5 +package provide opt 0.4.6 namespace eval ::tcl { @@ -35,7 +33,7 @@ namespace eval ::tcl { # Every OptProc give usage information on "procname -help". # Try "tcl::OptParseTest -help" and "tcl::OptParseTest -a" and # then other arguments. - # + # # example of 'valid' call: # ::tcl::OptParseTest save -4 -pr 23 -libsok SybTcl\ # -nostatics false ch1 @@ -71,10 +69,10 @@ namespace eval ::tcl { ################### No User serviceable part below ! ############### # Array storing the parsed descriptions - variable OptDesc; - array set OptDesc {}; + variable OptDesc + array set OptDesc {} # Next potentially free key id (numeric) - variable OptDescN 0; + variable OptDescN 0 # Inside algorithm/mechanism description: # (not for the faint hearted ;-) @@ -86,8 +84,8 @@ namespace eval ::tcl { # # The general structure of a "program" is # notation (pseudo bnf like) -# name :== definition defines "name" as being "definition" -# { x y z } means list of x, y, and z +# name :== definition defines "name" as being "definition" +# { x y z } means list of x, y, and z # x* means x repeated 0 or more time # x+ means "x x*" # x? means optionally x @@ -112,7 +110,7 @@ namespace eval ::tcl { # # And for this application: # -# singleStep :== { instruction varname {hasBeenSet currentValue} type +# singleStep :== { instruction varname {hasBeenSet currentValue} type # typeArgs help } # instruction :== "flags" | "value" # type :== knowType | anyword @@ -145,54 +143,54 @@ namespace eval ::tcl { # generate a unused keyid if not given # proc ::tcl::OptKeyRegister {desc {key ""}} { - variable OptDesc; - variable OptDescN; + variable OptDesc + variable OptDescN if {[string equal $key ""]} { # in case a key given to us as a parameter was a number while {[info exists OptDesc($OptDescN)]} {incr OptDescN} - set key $OptDescN; - incr OptDescN; + set key $OptDescN + incr OptDescN } # program counter - set program [list [list "P" 1]]; + set program [list [list "P" 1]] # are we processing flags (which makes a single program step) - set inflags 0; + set inflags 0 - set state {}; + set state {} # flag used to detect that we just have a single (flags set) subprogram. - set empty 1; + set empty 1 foreach item $desc { if {$state == "args"} { # more items after 'args'... - return -code error "'args' special argument must be the last one"; + return -code error "'args' special argument must be the last one" } - set res [OptNormalizeOne $item]; - set state [lindex $res 0]; + set res [OptNormalizeOne $item] + set state [lindex $res 0] if {$inflags} { if {$state == "flags"} { # add to 'subprogram' - lappend flagsprg $res; + lappend flagsprg $res } else { # put in the flags # structure for flag programs items is a list of # {subprgcounter {prg flag 1} {prg flag 2} {...}} - lappend program $flagsprg; + lappend program $flagsprg # put the other regular stuff - lappend program $res; - set inflags 0; - set empty 0; + lappend program $res + set inflags 0 + set empty 0 } } else { if {$state == "flags"} { - set inflags 1; + set inflags 1 # sub program counter + first sub program - set flagsprg [list [list "P" 1] $res]; + set flagsprg [list [list "P" 1] $res] } else { - lappend program $res; - set empty 0; + lappend program $res + set empty 0 } } } @@ -200,32 +198,32 @@ proc ::tcl::OptKeyRegister {desc {key ""}} { if {$empty} { # We just have the subprogram, optimize and remove # unneeded level: - set program $flagsprg; + set program $flagsprg } else { - lappend program $flagsprg; + lappend program $flagsprg } } - set OptDesc($key) $program; + set OptDesc($key) $program - return $key; + return $key } # # Free the storage for that given key # proc ::tcl::OptKeyDelete {key} { - variable OptDesc; - unset OptDesc($key); + variable OptDesc + unset OptDesc($key) } # Get the parsed description stored under the given key. proc OptKeyGetDesc {descKey} { - variable OptDesc; + variable OptDesc if {![info exists OptDesc($descKey)]} { - return -code error "Unknown option description key \"$descKey\""; + return -code error "Unknown option description key \"$descKey\"" } - set OptDesc($descKey); + set OptDesc($descKey) } # Parse entry point for ppl who don't want to register with a key, @@ -234,10 +232,10 @@ proc ::tcl::OptKeyDelete {key} { # as it is way faster or simply OptProc which does it all) # Assign a temporary key, call OptKeyParse and then free the storage proc ::tcl::OptParse {desc arglist} { - set tempkey [OptKeyRegister $desc]; - set ret [catch {uplevel 1 [list ::tcl::OptKeyParse $tempkey $arglist]} res]; - OptKeyDelete $tempkey; - return -code $ret $res; + set tempkey [OptKeyRegister $desc] + set ret [catch {uplevel 1 [list ::tcl::OptKeyParse $tempkey $arglist]} res] + OptKeyDelete $tempkey + return -code $ret $res } # Helper function, replacement for proc that both @@ -248,22 +246,22 @@ proc ::tcl::OptParse {desc arglist} { # (the other will be sets to their default value) # into local variable named "Args". proc ::tcl::OptProc {name desc body} { - set namespace [uplevel 1 [list ::namespace current]]; + set namespace [uplevel 1 [list ::namespace current]] if {[string match "::*" $name] || [string equal $namespace "::"]} { # absolute name or global namespace, name is the key - set key $name; + set key $name } else { # we are relative to some non top level namespace: - set key "${namespace}::${name}"; + set key "${namespace}::${name}" } - OptKeyRegister $desc $key; - uplevel 1 [list ::proc $name args "set Args \[::tcl::OptKeyParse $key \$args\]\n$body"]; - return $key; + OptKeyRegister $desc $key + uplevel 1 [list ::proc $name args "set Args \[::tcl::OptKeyParse $key \$args\]\n$body"] + return $key } # Check that a argument has been given # assumes that "OptProc" has been used as it will check in "Args" list proc ::tcl::OptProcArgGiven {argname} { - upvar Args alist; + upvar Args alist expr {[lsearch $alist $argname] >=0} } @@ -272,7 +270,7 @@ proc ::tcl::OptProcArgGiven {argname} { # Return the instruction word/list of a given step/(sub)program proc OptInstr {lst} { - lindex $lst 0; + lindex $lst 0 } # Is a (sub) program or a plain instruction ? proc OptIsPrg {lst} { @@ -288,56 +286,56 @@ proc ::tcl::OptProcArgGiven {argname} { } # Current program counter (2nd word of first word) proc OptSetPrgCounter {lstName newValue} { - upvar $lstName lst; - set lst [lreplace $lst 0 0 [concat "P" $newValue]]; + upvar $lstName lst + set lst [lreplace $lst 0 0 [concat "P" $newValue]] } # returns a list of currently selected items. proc OptSelection {lst} { - set res {}; + set res {} foreach idx [lrange [lindex $lst 0] 1 end] { - lappend res [Lget $lst $idx]; + lappend res [Lget $lst $idx] } - return $res; + return $res } # Advance to next description proc OptNextDesc {descName} { - uplevel 1 [list Lvarincr $descName {0 1}]; + uplevel 1 [list Lvarincr $descName {0 1}] } # Get the current description, eventually descend proc OptCurDesc {descriptions} { - lindex $descriptions [OptGetPrgCounter $descriptions]; + lindex $descriptions [OptGetPrgCounter $descriptions] } # get the current description, eventually descend # through sub programs as needed. proc OptCurDescFinal {descriptions} { - set item [OptCurDesc $descriptions]; + set item [OptCurDesc $descriptions] # Descend untill we get the actual item and not a sub program while {[OptIsPrg $item]} { - set item [OptCurDesc $item]; + set item [OptCurDesc $item] } - return $item; + return $item } # Current final instruction adress proc OptCurAddr {descriptions {start {}}} { - set adress [OptGetPrgCounter $descriptions]; - lappend start $adress; - set item [lindex $descriptions $adress]; + set adress [OptGetPrgCounter $descriptions] + lappend start $adress + set item [lindex $descriptions $adress] if {[OptIsPrg $item]} { - return [OptCurAddr $item $start]; + return [OptCurAddr $item $start] } else { - return $start; + return $start } } # Set the value field of the current instruction proc OptCurSetValue {descriptionsName value} { upvar $descriptionsName descriptions # get the current item full adress - set adress [OptCurAddr $descriptions]; + set adress [OptCurAddr $descriptions] # use the 3th field of the item (see OptValue / OptNewInst) lappend adress 2 - Lvarset descriptions $adress [list 1 $value]; + Lvarset descriptions $adress [list 1 $value] # ^hasBeenSet flag } @@ -345,10 +343,10 @@ proc ::tcl::OptProcArgGiven {argname} { proc OptState {item} { lindex $item 0 } - + # current state proc OptCurState {descriptions} { - OptState [OptCurDesc $descriptions]; + OptState [OptCurDesc $descriptions] } ####### @@ -356,11 +354,11 @@ proc ::tcl::OptProcArgGiven {argname} { # Returns the argument that has to be processed now proc OptCurrentArg {lst} { - lindex $lst 0; + lindex $lst 0 } # Advance to next argument proc OptNextArg {argsName} { - uplevel 1 [list Lvarpop1 $argsName]; + uplevel 1 [list Lvarpop1 $argsName] } ####### @@ -372,49 +370,49 @@ proc ::tcl::OptProcArgGiven {argname} { # eventually eat all the arguments. proc OptDoAll {descriptionsName argumentsName} { upvar $descriptionsName descriptions - upvar $argumentsName arguments; -# puts "entered DoAll"; + upvar $argumentsName arguments +# puts "entered DoAll" # Nb: the places where "state" can be set are tricky to figure # because DoOne sets the state to flagsValue and return -continue # when needed... - set state [OptCurState $descriptions]; + set state [OptCurState $descriptions] # We'll exit the loop in "OptDoOne" or when state is empty. while 1 { - set curitem [OptCurDesc $descriptions]; + set curitem [OptCurDesc $descriptions] # Do subprograms if needed, call ourselves on the sub branch while {[OptIsPrg $curitem]} { OptDoAll curitem arguments -# puts "done DoAll sub"; - # Insert back the results in current tree; +# puts "done DoAll sub" + # Insert back the results in current tree Lvarset1nc descriptions [OptGetPrgCounter $descriptions]\ - $curitem; - OptNextDesc descriptions; - set curitem [OptCurDesc $descriptions]; - set state [OptCurState $descriptions]; + $curitem + OptNextDesc descriptions + set curitem [OptCurDesc $descriptions] + set state [OptCurState $descriptions] } -# puts "state = \"$state\" - arguments=($arguments)"; +# puts "state = \"$state\" - arguments=($arguments)" if {[Lempty $state]} { # Nothing left to do, we are done in this branch: - break; + break } # The following statement can make us terminate/continue # as it use return -code {break, continue, return and error} # codes - OptDoOne descriptions state arguments; + OptDoOne descriptions state arguments # If we are here, no special return code where issued, # we'll step to next instruction : -# puts "new state = \"$state\""; - OptNextDesc descriptions; - set state [OptCurState $descriptions]; +# puts "new state = \"$state\"" + OptNextDesc descriptions + set state [OptCurState $descriptions] } } # Process one step for the state machine, # eventually consuming the current argument. proc OptDoOne {descriptionsName stateName argumentsName} { - upvar $argumentsName arguments; - upvar $descriptionsName descriptions; - upvar $stateName state; + upvar $argumentsName arguments + upvar $descriptionsName descriptions + upvar $stateName state # the special state/instruction "args" eats all # the remaining args (if any) @@ -422,27 +420,27 @@ proc ::tcl::OptProcArgGiven {argname} { if {![Lempty $arguments]} { # If there is no additional arguments, leave the default value # in. - OptCurSetValue descriptions $arguments; - set arguments {}; + OptCurSetValue descriptions $arguments + set arguments {} } # puts "breaking out ('args' state: consuming every reminding args)" - return -code break; + return -code break } if {[Lempty $arguments]} { if {$state == "flags"} { # no argument and no flags : we're done -# puts "returning to previous (sub)prg (no more args)"; - return -code return; +# puts "returning to previous (sub)prg (no more args)" + return -code return } elseif {$state == "optValue"} { set state next; # not used, for debug only # go to next state - return ; + return } else { - return -code error [OptMissingValue $descriptions]; + return -code error [OptMissingValue $descriptions] } } else { - set arg [OptCurrentArg $arguments]; + set arg [OptCurrentArg $arguments] } switch $state { @@ -452,62 +450,62 @@ proc ::tcl::OptProcArgGiven {argname} { # Still a flag ? if {![OptIsFlag $arg]} { # don't consume the argument, return to previous prg - return -code return; + return -code return } # consume the flag - OptNextArg arguments; + OptNextArg arguments if {[string equal "--" $arg]} { # return from 'flags' state - return -code return; + return -code return } - set hits [OptHits descriptions $arg]; + set hits [OptHits descriptions $arg] if {$hits > 1} { return -code error [OptAmbigous $descriptions $arg] } elseif {$hits == 0} { return -code error [OptFlagUsage $descriptions $arg] } - set item [OptCurDesc $descriptions]; + set item [OptCurDesc $descriptions] if {[OptNeedValue $item]} { # we need a value, next state is - set state flagValue; + set state flagValue } else { - OptCurSetValue descriptions 1; + OptCurSetValue descriptions 1 } # continue - return -code continue; + return -code continue } flagValue - value { - set item [OptCurDesc $descriptions]; + set item [OptCurDesc $descriptions] # Test the values against their required type if {[catch {OptCheckType $arg\ [OptType $item] [OptTypeArgs $item]} val]} { return -code error [OptBadValue $item $arg $val] } # consume the value - OptNextArg arguments; + OptNextArg arguments # set the value - OptCurSetValue descriptions $val; + OptCurSetValue descriptions $val # go to next state if {$state == "flagValue"} { set state flags - return -code continue; + return -code continue } else { set state next; # not used, for debug only return ; # will go on next step } } optValue { - set item [OptCurDesc $descriptions]; + set item [OptCurDesc $descriptions] # Test the values against their required type if {![catch {OptCheckType $arg\ [OptType $item] [OptTypeArgs $item]} val]} { # right type, so : # consume the value - OptNextArg arguments; + OptNextArg arguments # set the value - OptCurSetValue descriptions $val; + OptCurSetValue descriptions $val } # go to next state set state next; # not used, for debug only @@ -518,39 +516,39 @@ proc ::tcl::OptProcArgGiven {argname} { # state as been entered ! return -code error "Bug! unknown state in DoOne \"$state\"\ (prg counter [OptGetPrgCounter $descriptions]:\ - [OptCurDesc $descriptions])"; + [OptCurDesc $descriptions])" } # Parse the options given the key to previously registered description # and arguments list proc ::tcl::OptKeyParse {descKey arglist} { - set desc [OptKeyGetDesc $descKey]; + set desc [OptKeyGetDesc $descKey] # make sure -help always give usage if {[string equal -nocase "-help" $arglist]} { - return -code error [OptError "Usage information:" $desc 1]; + return -code error [OptError "Usage information:" $desc 1] } - OptDoAll desc arglist; + OptDoAll desc arglist if {![Lempty $arglist]} { - return -code error [OptTooManyArgs $desc $arglist]; + return -code error [OptTooManyArgs $desc $arglist] } - + # Analyse the result # Walk through the tree: - OptTreeVars $desc "#[expr {[info level]-1}]" ; + OptTreeVars $desc "#[expr {[info level]-1}]" } # determine string length for nice tabulated output proc OptTreeVars {desc level {vnamesLst {}}} { foreach item $desc { - if {[OptIsCounter $item]} continue; + if {[OptIsCounter $item]} continue if {[OptIsPrg $item]} { - set vnamesLst [OptTreeVars $item $level $vnamesLst]; + set vnamesLst [OptTreeVars $item $level $vnamesLst] } else { - set vname [OptVarName $item]; + set vname [OptVarName $item] upvar $level $vname var if {[OptHasBeenSet $item]} { # puts "adding $vname" @@ -558,10 +556,10 @@ proc ::tcl::OptKeyParse {descKey arglist} { # it is more usefull, for instance you can check that # no flags at all was given with expr # {![string match "*-*" $Args]} - lappend vnamesLst [OptName $item]; - set var [OptValue $item]; + lappend vnamesLst [OptName $item] + set var [OptValue $item] } else { - set var [OptDefaultValue $item]; + set var [OptDefaultValue $item] } } } @@ -573,7 +571,7 @@ proc ::tcl::OptKeyParse {descKey arglist} { # and emit an error if arg is not of the correct type # otherwise returns the canonical value of that arg (ie 0/1 for booleans) proc ::tcl::OptCheckType {arg type {typeArgs ""}} { -# puts "checking '$arg' against '$type' ($typeArgs)"; +# puts "checking '$arg' against '$type' ($typeArgs)" # only types "any", "choice", and numbers can have leading "-" @@ -582,7 +580,7 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { if {![string is integer -strict $arg]} { error "not an integer" } - return $arg; + return $arg } float { return [expr {double($arg)}] @@ -593,7 +591,7 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { if {[llength $arg]==0 && [OptIsFlag $arg]} { error "no values with leading -" } - return $arg; + return $arg } boolean { if {![string is boolean -strict $arg]} { @@ -606,10 +604,10 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { if {[lsearch -exact $typeArgs $arg] < 0} { error "invalid choice" } - return $arg; + return $arg } any { - return $arg; + return $arg } string - default { @@ -619,7 +617,7 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { return $arg } } - return neverReached; + return neverReached } # internal utilities @@ -627,34 +625,34 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { # returns the number of flags matching the given arg # sets the (local) prg counter to the list of matches proc OptHits {descName arg} { - upvar $descName desc; + upvar $descName desc set hits 0 set hitems {} - set i 1; + set i 1 - set larg [string tolower $arg]; - set len [string length $larg]; - set last [expr {$len-1}]; + set larg [string tolower $arg] + set len [string length $larg] + set last [expr {$len-1}] foreach item [lrange $desc 1 end] { set flag [OptName $item] # lets try to match case insensitively # (string length ought to be cheap) - set lflag [string tolower $flag]; + set lflag [string tolower $flag] if {$len == [string length $lflag]} { if {[string equal $larg $lflag]} { # Exact match case - OptSetPrgCounter desc $i; - return 1; + OptSetPrgCounter desc $i + return 1 } } elseif {[string equal $larg [string range $lflag 0 $last]]} { - lappend hitems $i; - incr hits; + lappend hitems $i + incr hits } - incr i; + incr i } if {$hits} { - OptSetPrgCounter desc $hitems; + OptSetPrgCounter desc $hitems } return $hits } @@ -662,29 +660,29 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { # Extract fields from the list structure: proc OptName {item} { - lindex $item 1; + lindex $item 1 } proc OptHasBeenSet {item} { - Lget $item {2 0}; + Lget $item {2 0} } proc OptValue {item} { - Lget $item {2 1}; + Lget $item {2 1} } proc OptIsFlag {name} { - string match "-*" $name; + string match "-*" $name } proc OptIsOpt {name} { - string match {\?*} $name; + string match {\?*} $name } proc OptVarName {item} { - set name [OptName $item]; + set name [OptName $item] if {[OptIsFlag $name]} { - return [string range $name 1 end]; + return [string range $name 1 end] } elseif {[OptIsOpt $name]} { - return [string trim $name "?"]; + return [string trim $name "?"] } else { - return $name; + return $name } } proc OptType {item} { @@ -721,13 +719,13 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { proc OptOptUsage {item {what ""}} { return -code error "invalid description format$what: $item\n\ should be a list of {varname|-flagname ?-type? ?defaultvalue?\ - ?helpstring?}"; + ?helpstring?}" } # Generate a canonical form single instruction proc OptNewInst {state varname type typeArgs help} { - list $state $varname [list 0 {}] $type $typeArgs $help; + list $state $varname [list 0 {}] $type $typeArgs $help # ^ ^ # | | # hasBeenSet=+ +=currentValue @@ -735,18 +733,18 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { # Translate one item to canonical form proc OptNormalizeOne {item} { - set lg [Lassign $item varname arg1 arg2 arg3]; -# puts "called optnormalizeone '$item' v=($varname), lg=$lg"; - set isflag [OptIsFlag $varname]; - set isopt [OptIsOpt $varname]; + set lg [Lassign $item varname arg1 arg2 arg3] +# puts "called optnormalizeone '$item' v=($varname), lg=$lg" + set isflag [OptIsFlag $varname] + set isopt [OptIsOpt $varname] if {$isflag} { - set state "flags"; + set state "flags" } elseif {$isopt} { - set state "optValue"; + set state "optValue" } elseif {![string equal $varname "args"]} { - set state "value"; + set state "value" } else { - set state "args"; + set state "args" } # apply 'smart' 'fuzzy' logic to try to make @@ -756,9 +754,9 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { switch $lg { 1 { if {$isflag} { - return [OptNewInst $state $varname boolflag false ""]; + return [OptNewInst $state $varname boolflag false ""] } else { - return [OptNewInst $state $varname any "" ""]; + return [OptNewInst $state $varname any "" ""] } } 2 { @@ -778,20 +776,20 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { set help "" set def $arg1 } - return [OptNewInst $state $varname $type $def $help]; + return [OptNewInst $state $varname $type $def $help] } 3 { # varname type value # varname value comment - + if {[regexp {^-(.+)$} $arg1 x type]} { # flags/optValue as they are optional, need a "value", # on the contrary, for a variable (non optional), # default value is pointless, 'cept for choices : if {$isflag || $isopt || ($type == "choice")} { - return [OptNewInst $state $varname $type $arg2 ""]; + return [OptNewInst $state $varname $type $arg2 ""] } else { - return [OptNewInst $state $varname $type "" $arg2]; + return [OptNewInst $state $varname $type "" $arg2] } } else { return [OptNewInst $state $varname\ @@ -800,13 +798,13 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { } 4 { if {[regexp {^-(.+)$} $arg1 x type]} { - return [OptNewInst $state $varname $type $arg2 $arg3]; + return [OptNewInst $state $varname $type $arg2 $arg3] } else { - return -code error [OptOptUsage $item]; + return -code error [OptOptUsage $item] } } default { - return -code error [OptOptUsage $item]; + return -code error [OptOptUsage $item] } } } @@ -831,7 +829,7 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { OptError "ambigous option \"$arg\", choose from:" [OptSelection $desc] } proc OptFlagUsage {desc arg} { - OptError "bad flag \"$arg\", must be one of" $desc; + OptError "bad flag \"$arg\", must be one of" $desc } proc OptTooManyArgs {desc arguments} { OptError "too many arguments (unexpected argument(s): $arguments),\ @@ -840,45 +838,45 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { } proc OptParamType {item} { if {[OptIsFlag $item]} { - return "flag"; + return "flag" } else { - return "parameter"; + return "parameter" } } proc OptBadValue {item arg {err {}}} { -# puts "bad val err = \"$err\""; +# puts "bad val err = \"$err\"" OptError "bad value \"$arg\" for [OptParamType $item]"\ [list $item] } proc OptMissingValue {descriptions} { -# set item [OptCurDescFinal $descriptions]; - set item [OptCurDesc $descriptions]; +# set item [OptCurDescFinal $descriptions] + set item [OptCurDesc $descriptions] OptError "no value given for [OptParamType $item] \"[OptName $item]\"\ (use -help for full usage) :"\ [list $item] } proc ::tcl::OptKeyError {prefix descKey {header 0}} { - OptError $prefix [OptKeyGetDesc $descKey] $header; + OptError $prefix [OptKeyGetDesc $descKey] $header } # determine string length for nice tabulated output proc OptLengths {desc nlName tlName dlName} { - upvar $nlName nl; - upvar $tlName tl; - upvar $dlName dl; + upvar $nlName nl + upvar $tlName tl + upvar $dlName dl foreach item $desc { - if {[OptIsCounter $item]} continue; + if {[OptIsCounter $item]} continue if {[OptIsPrg $item]} { OptLengths $item nl tl dl } else { SetMax nl [string length [OptName $item]] SetMax tl [string length [OptType $item]] - set dv [OptTypeArgs $item]; + set dv [OptTypeArgs $item] if {[OptState $item] != "header"} { - set dv "($dv)"; + set dv "($dv)" } - set l [string length $dv]; + set l [string length $dv] # limit the space allocated to potentially big "choices" if {([OptType $item] != "choice") || ($l<=12)} { SetMax dl $l @@ -892,22 +890,22 @@ proc ::tcl::OptKeyError {prefix descKey {header 0}} { } # output the tree proc OptTree {desc nl tl dl} { - set res ""; + set res "" foreach item $desc { - if {[OptIsCounter $item]} continue; + if {[OptIsCounter $item]} continue if {[OptIsPrg $item]} { - append res [OptTree $item $nl $tl $dl]; + append res [OptTree $item $nl $tl $dl] } else { - set dv [OptTypeArgs $item]; + set dv [OptTypeArgs $item] if {[OptState $item] != "header"} { - set dv "($dv)"; + set dv "($dv)" } - append res [format "\n %-*s %-*s %-*s %s" \ + append res [string trimright [format "\n %-*s %-*s %-*s %s" \ $nl [OptName $item] $tl [OptType $item] \ - $dl $dv [OptHelp $item]] + $dl $dv [OptHelp $item]]] } } - return $res; + return $res } # Give nice usage string @@ -915,13 +913,13 @@ proc ::tcl::OptError {prefix desc {header 0}} { # determine length if {$header} { # add faked instruction - set h [list [OptNewInst header Var/FlagName Type Value Help]]; - lappend h [OptNewInst header ------------ ---- ----- ----]; - lappend h [OptNewInst header {( -help} "" "" {gives this help )}] + set h [list [OptNewInst header Var/FlagName Type Value Help]] + lappend h [OptNewInst header ------------ ---- ----- ----] + lappend h [OptNewInst header {(-help} "" "" {gives this help)}] set desc [concat $h $desc] } OptLengths $desc nl tl dl - # actually output + # actually output return "$prefix[OptTree $desc $nl $tl $dl]" } @@ -945,105 +943,105 @@ proc ::tcl::Lempty {list} { # Gets the value of one leaf of a lists tree proc ::tcl::Lget {list indexLst} { if {[llength $indexLst] <= 1} { - return [lindex $list $indexLst]; + return [lindex $list $indexLst] } - Lget [lindex $list [lindex $indexLst 0]] [lrange $indexLst 1 end]; + Lget [lindex $list [lindex $indexLst 0]] [lrange $indexLst 1 end] } # Sets the value of one leaf of a lists tree # (we use the version that does not create the elements because # it would be even slower... needs to be written in C !) # (nb: there is a non trivial recursive problem with indexes 0, # which appear because there is no difference between a list -# of 1 element and 1 element alone : [list "a"] == "a" while +# of 1 element and 1 element alone : [list "a"] == "a" while # it should be {a} and [listp a] should be 0 while [listp {a b}] would be 1 # and [listp "a b"] maybe 0. listp does not exist either...) proc ::tcl::Lvarset {listName indexLst newValue} { - upvar $listName list; + upvar $listName list if {[llength $indexLst] <= 1} { - Lvarset1nc list $indexLst $newValue; + Lvarset1nc list $indexLst $newValue } else { - set idx [lindex $indexLst 0]; - set targetList [lindex $list $idx]; + set idx [lindex $indexLst 0] + set targetList [lindex $list $idx] # reduce refcount on targetList (not really usefull now, # could be with optimizing compiler) -# Lvarset1 list $idx {}; +# Lvarset1 list $idx {} # recursively replace in targetList - Lvarset targetList [lrange $indexLst 1 end] $newValue; + Lvarset targetList [lrange $indexLst 1 end] $newValue # put updated sub list back in the tree - Lvarset1nc list $idx $targetList; + Lvarset1nc list $idx $targetList } } # Set one cell to a value, eventually create all the needed elements # (on level-1 of lists) variable emptyList {} proc ::tcl::Lvarset1 {listName index newValue} { - upvar $listName list; + upvar $listName list if {$index < 0} {return -code error "invalid negative index"} - set lg [llength $list]; + set lg [llength $list] if {$index >= $lg} { - variable emptyList; + variable emptyList for {set i $lg} {$i<$index} {incr i} { - lappend list $emptyList; + lappend list $emptyList } - lappend list $newValue; + lappend list $newValue } else { - set list [lreplace $list $index $index $newValue]; + set list [lreplace $list $index $index $newValue] } } # same as Lvarset1 but no bound checking / creation proc ::tcl::Lvarset1nc {listName index newValue} { - upvar $listName list; - set list [lreplace $list $index $index $newValue]; + upvar $listName list + set list [lreplace $list $index $index $newValue] } # Increments the value of one leaf of a lists tree # (which must exists) proc ::tcl::Lvarincr {listName indexLst {howMuch 1}} { - upvar $listName list; + upvar $listName list if {[llength $indexLst] <= 1} { - Lvarincr1 list $indexLst $howMuch; + Lvarincr1 list $indexLst $howMuch } else { - set idx [lindex $indexLst 0]; - set targetList [lindex $list $idx]; + set idx [lindex $indexLst 0] + set targetList [lindex $list $idx] # reduce refcount on targetList - Lvarset1nc list $idx {}; + Lvarset1nc list $idx {} # recursively replace in targetList - Lvarincr targetList [lrange $indexLst 1 end] $howMuch; + Lvarincr targetList [lrange $indexLst 1 end] $howMuch # put updated sub list back in the tree - Lvarset1nc list $idx $targetList; + Lvarset1nc list $idx $targetList } } # Increments the value of one cell of a list proc ::tcl::Lvarincr1 {listName index {howMuch 1}} { - upvar $listName list; - set newValue [expr {[lindex $list $index]+$howMuch}]; - set list [lreplace $list $index $index $newValue]; - return $newValue; + upvar $listName list + set newValue [expr {[lindex $list $index]+$howMuch}] + set list [lreplace $list $index $index $newValue] + return $newValue } # Removes the first element of a list # and returns the new list value proc ::tcl::Lvarpop1 {listName} { - upvar $listName list; - set list [lrange $list 1 end]; + upvar $listName list + set list [lrange $list 1 end] } # Same but returns the removed element # (Like the tclX version) proc ::tcl::Lvarpop {listName} { - upvar $listName list; - set el [lindex $list 0]; - set list [lrange $list 1 end]; - return $el; + upvar $listName list + set el [lindex $list 0] + set list [lrange $list 1 end] + return $el } # Assign list elements to variables and return the length of the list proc ::tcl::Lassign {list args} { # faster than direct blown foreach (which does not byte compile) - set i 0; - set lg [llength $list]; + set i 0 + set lg [llength $list] foreach vname $args { if {$i>=$lg} break - uplevel 1 [list ::set $vname [lindex $list $i]]; - incr i; + uplevel 1 [list ::set $vname [lindex $list $i]] + incr i } - return $lg; + return $lg } # Misc utilities diff --git a/library/opt/pkgIndex.tcl b/library/opt/pkgIndex.tcl index c5d3635..107d4c6 100644 --- a/library/opt/pkgIndex.tcl +++ b/library/opt/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.2]} {return} -package ifneeded opt 0.4.5 [list source [file join $dir optparse.tcl]] +package ifneeded opt 0.4.6 [list source [file join $dir optparse.tcl]] diff --git a/library/package.tcl b/library/package.tcl index 6aa8be5..52daa0e 100644 --- a/library/package.tcl +++ b/library/package.tcl @@ -3,8 +3,6 @@ # utility procs formerly in init.tcl which can be loaded on demand # for package management. # -# RCS: @(#) $Id: package.tcl,v 1.35.4.1 2008/07/03 17:22:59 dgp Exp $ -# # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1998 Sun Microsystems, Inc. # @@ -16,9 +14,9 @@ namespace eval tcl::Pkg {} # ::tcl::Pkg::CompareExtension -- # -# Used internally by pkg_mkIndex to compare the extension of a file to -# a given extension. On Windows, it uses a case-insensitive comparison -# because the file system can be file insensitive. +# Used internally by pkg_mkIndex to compare the extension of a file to a given +# extension. On Windows, it uses a case-insensitive comparison because the +# file system can be file insensitive. # # Arguments: # fileName name of a file whose extension is compared @@ -29,7 +27,7 @@ namespace eval tcl::Pkg {} # Results: # Returns 1 if the extension matches, 0 otherwise -proc tcl::Pkg::CompareExtension { fileName {ext {}} } { +proc tcl::Pkg::CompareExtension {fileName {ext {}}} { global tcl_platform if {$ext eq ""} {set ext [info sharedlibextension]} if {$tcl_platform(platform) eq "windows"} { @@ -42,7 +40,7 @@ proc tcl::Pkg::CompareExtension { fileName {ext {}} } { set currExt [file extension $root] if {$currExt eq $ext} { return 1 - } + } # The current extension does not match; if it is not a numeric # value, quit, as we are only looking to ignore version number @@ -50,7 +48,7 @@ proc tcl::Pkg::CompareExtension { fileName {ext {}} } { # tcl::Pkg::CompareExtension foo.so.bar .so # which should not match. - if { ![string is integer -strict [string range $currExt 1 end]] } { + if {![string is integer -strict [string range $currExt 1 end]]} { return 0 } set root [file rootname $root] @@ -59,11 +57,10 @@ proc tcl::Pkg::CompareExtension { fileName {ext {}} } { } # pkg_mkIndex -- -# This procedure creates a package index in a given directory. The -# package index consists of a "pkgIndex.tcl" file whose contents are -# a Tcl script that sets up package information with "package require" -# commands. The commands describe all of the packages defined by the -# files given as arguments. +# This procedure creates a package index in a given directory. The package +# index consists of a "pkgIndex.tcl" file whose contents are a Tcl script that +# sets up package information with "package require" commands. The commands +# describe all of the packages defined by the files given as arguments. # # Arguments: # -direct (optional) If this flag is present, the generated @@ -84,7 +81,7 @@ proc tcl::Pkg::CompareExtension { fileName {ext {}} } { # dir. proc pkg_mkIndex {args} { - set usage {"pkg_mkIndex ?-direct? ?-lazy? ?-load pattern? ?-verbose? ?--? dir ?pattern ...?"}; + set usage {"pkg_mkIndex ?-direct? ?-lazy? ?-load pattern? ?-verbose? ?--? dir ?pattern ...?"} set argCount [llength $args] if {$argCount < 1} { @@ -130,20 +127,21 @@ proc pkg_mkIndex {args} { set dir [lindex $args $idx] set patternList [lrange $args [expr {$idx + 1}] end] - if {[llength $patternList] == 0} { + if {![llength $patternList]} { set patternList [list "*.tcl" "*[info sharedlibextension]"] } - if {[catch { - glob -directory $dir -tails -types {r f} -- {*}$patternList - } fileList o]} { - return -options $o $fileList + try { + set fileList [glob -directory $dir -tails -types {r f} -- \ + {*}$patternList] + } on error {msg opt} { + return -options $opt $msg } foreach file $fileList { # For each file, figure out what commands and packages it provides. # To do this, create a child interpreter, load the file into the - # interpreter, and get a list of the new commands and packages - # that are defined. + # interpreter, and get a list of the new commands and packages that + # are defined. if {$file eq "pkgIndex.tcl"} { continue @@ -165,20 +163,23 @@ proc pkg_mkIndex {args} { } } foreach pkg [info loaded] { - if {! [string match -nocase $loadPat [lindex $pkg 1]]} { + if {![string match -nocase $loadPat [lindex $pkg 1]]} { continue } if {$doVerbose} { tclLog "package [lindex $pkg 1] matches '$loadPat'" } - if {[catch { + try { load [lindex $pkg 0] [lindex $pkg 1] $c - } err]} { + } on error err { + if {$doVerbose} { + tclLog "warning: load [lindex $pkg 0]\ + [lindex $pkg 1]\nfailed with: $err" + } + } on ok {} { if {$doVerbose} { - tclLog "warning: load [lindex $pkg 0] [lindex $pkg 1]\nfailed with: $err" + tclLog "loaded [lindex $pkg 0] [lindex $pkg 1]" } - } elseif {$doVerbose} { - tclLog "loaded [lindex $pkg 0] [lindex $pkg 1]" } if {[lindex $pkg 1] eq "Tk"} { # Withdraw . if Tk was loaded, to avoid showing a window. @@ -187,21 +188,25 @@ proc pkg_mkIndex {args} { } $c eval { - # Stub out the package command so packages can - # require other packages. + # Stub out the package command so packages can require other + # packages. rename package __package_orig proc package {what args} { switch -- $what { - require { return ; # ignore transitive requires } - default { __package_orig $what {*}$args } + require { + return; # Ignore transitive requires + } + default { + __package_orig $what {*}$args + } } } proc tclPkgUnknown args {} package unknown tclPkgUnknown - # Stub out the unknown command so package can call - # into each other during their initialilzation. + # Stub out the unknown command so package can call into each other + # during their initialilzation. proc unknown {args} {} @@ -209,9 +214,9 @@ proc pkg_mkIndex {args} { proc auto_import {args} {} - # reserve the ::tcl namespace for support procs - # and temporary variables. This might make it awkward - # to generate a pkgIndex.tcl file for the ::tcl namespace. + # reserve the ::tcl namespace for support procs and temporary + # variables. This might make it awkward to generate a + # pkgIndex.tcl file for the ::tcl namespace. namespace eval ::tcl { variable dir ;# Current directory being processed @@ -232,22 +237,22 @@ proc pkg_mkIndex {args} { $c eval [list set ::tcl::file $file] $c eval [list set ::tcl::direct $direct] - # Download needed procedures into the slave because we've - # just deleted the unknown procedure. This doesn't handle - # procedures with default arguments. + # Download needed procedures into the slave because we've just deleted + # the unknown procedure. This doesn't handle procedures with default + # arguments. foreach p {::tcl::Pkg::CompareExtension} { $c eval [list namespace eval [namespace qualifiers $p] {}] $c eval [list proc $p [info args $p] [info body $p]] } - if {[catch { + try { $c eval { set ::tcl::debug "loading or sourcing" - # we need to track command defined by each package even in - # the -direct case, because they are needed internally by - # the "partial pkgIndex.tcl" step above. + # we need to track command defined by each package even in the + # -direct case, because they are needed internally by the + # "partial pkgIndex.tcl" step above. proc ::tcl::GetAllNamespaces {{root ::}} { set list $root @@ -269,18 +274,17 @@ proc pkg_mkIndex {args} { } set ::tcl::origCmds [info commands] - # Try to load the file if it has the shared library - # extension, otherwise source it. It's important not to - # try to load files that aren't shared libraries, because - # on some systems (like SunOS) the loader will abort the - # whole application when it gets an error. + # Try to load the file if it has the shared library extension, + # otherwise source it. It's important not to try to load + # files that aren't shared libraries, because on some systems + # (like SunOS) the loader will abort the whole application + # when it gets an error. if {[::tcl::Pkg::CompareExtension $::tcl::file [info sharedlibextension]]} { - # The "file join ." command below is necessary. - # Without it, if the file name has no \'s and we're - # on UNIX, the load command will invoke the - # LD_LIBRARY_PATH search mechanism, which could cause - # the wrong file to be used. + # The "file join ." command below is necessary. Without + # it, if the file name has no \'s and we're on UNIX, the + # load command will invoke the LD_LIBRARY_PATH search + # mechanism, which could cause the wrong file to be used. set ::tcl::debug loading load [file join $::tcl::dir $::tcl::file] @@ -291,22 +295,21 @@ proc pkg_mkIndex {args} { set ::tcl::type source } - # As a performance optimization, if we are creating - # direct load packages, don't bother figuring out the - # set of commands created by the new packages. We - # only need that list for setting up the autoloading - # used in the non-direct case. - if { !$::tcl::direct } { + # As a performance optimization, if we are creating direct + # load packages, don't bother figuring out the set of commands + # created by the new packages. We only need that list for + # setting up the autoloading used in the non-direct case. + if {!$::tcl::direct} { # See what new namespaces appeared, and import commands # from them. Only exported commands go into the index. - + foreach ::tcl::x [::tcl::GetAllNamespaces] { - if {! [info exists ::tcl::namespaces($::tcl::x)]} { + if {![info exists ::tcl::namespaces($::tcl::x)]} { namespace import -force ${::tcl::x}::* } # Figure out what commands appeared - + foreach ::tcl::x [info commands] { set ::tcl::newCmds($::tcl::x) 1 } @@ -315,18 +318,19 @@ proc pkg_mkIndex {args} { } foreach ::tcl::x [array names ::tcl::newCmds] { # determine which namespace a command comes from - + set ::tcl::abs [namespace origin $::tcl::x] - - # special case so that global names have no leading - # ::, this is required by the unknown command - + + # special case so that global names have no + # leading ::, this is required by the unknown + # command + set ::tcl::abs \ [lindex [auto_qualify $::tcl::abs ::] 0] - + if {$::tcl::x ne $::tcl::abs} { # Name changed during qualification - + set ::tcl::newCmds($::tcl::abs) 1 unset ::tcl::newCmds($::tcl::x) } @@ -334,8 +338,8 @@ proc pkg_mkIndex {args} { } } - # Look through the packages that appeared, and if there is - # a version provided, then record it + # Look through the packages that appeared, and if there is a + # version provided, then record it foreach ::tcl::x [package names] { if {[package provide $::tcl::x] ne "" @@ -345,12 +349,12 @@ proc pkg_mkIndex {args} { } } } - } msg] == 1} { + } on error msg { set what [$c eval set ::tcl::debug] if {$doVerbose} { tclLog "warning: error while $what $file: $msg" } - } else { + } on ok {} { set what [$c eval set ::tcl::debug] if {$doVerbose} { tclLog "successful $what of $file" @@ -359,7 +363,7 @@ proc pkg_mkIndex {args} { set cmds [lsort [$c eval array names ::tcl::newCmds]] set pkgs [$c eval set ::tcl::newPkgs] if {$doVerbose} { - if { !$direct } { + if {!$direct} { tclLog "commands provided were $cmds" } tclLog "packages provided were $pkgs" @@ -391,13 +395,11 @@ proc pkg_mkIndex {args} { foreach pkg [lsort [array names files]] { set cmd {} - foreach {name version} $pkg { - break - } + lassign $pkg name version lappend cmd ::tcl::Pkg::Create -name $name -version $version - foreach spec $files($pkg) { + foreach spec [lsort -index 0 $files($pkg)] { foreach {file type procs} $spec { - if { $direct } { + if {$direct} { set procs {} } lappend cmd "-$type" [list $file $procs] @@ -412,11 +414,10 @@ proc pkg_mkIndex {args} { } # tclPkgSetup -- -# This is a utility procedure use by pkgIndex.tcl files. It is invoked -# as part of a "package ifneeded" script. It calls "package provide" -# to indicate that a package is available, then sets entries in the -# auto_index array so that the package's files will be auto-loaded when -# the commands are used. +# This is a utility procedure use by pkgIndex.tcl files. It is invoked as +# part of a "package ifneeded" script. It calls "package provide" to indicate +# that a package is available, then sets entries in the auto_index array so +# that the package's files will be auto-loaded when the commands are used. # # Arguments: # dir - Directory containing all the files for this package. @@ -441,18 +442,18 @@ proc tclPkgSetup {dir pkg version files} { set auto_index($cmd) [list load [file join $dir $f] $pkg] } else { set auto_index($cmd) [list source [file join $dir $f]] - } + } } } } # tclPkgUnknown -- -# This procedure provides the default for the "package unknown" function. -# It is invoked when a package that's needed can't be found. It scans -# the auto_path directories and their immediate children looking for -# pkgIndex.tcl files and sources any such files that are found to setup -# the package database. As it searches, it will recognize changes -# to the auto_path and scan any new directories. +# This procedure provides the default for the "package unknown" function. It +# is invoked when a package that's needed can't be found. It scans the +# auto_path directories and their immediate children looking for pkgIndex.tcl +# files and sources any such files that are found to setup the package +# database. As it searches, it will recognize changes to the auto_path and +# scan any new directories. # # Arguments: # name - Name of desired package. Not used. @@ -465,12 +466,12 @@ proc tclPkgUnknown {name args} { if {![info exists auto_path]} { return } - # Cache the auto_path, because it may change while we run through - # the first set of pkgIndex.tcl files + # Cache the auto_path, because it may change while we run through the + # first set of pkgIndex.tcl files set old_path [set use_path $auto_path] while {[llength $use_path]} { set dir [lindex $use_path end] - + # Make sure we only scan each directory one time. if {[info exists tclSeenPath($dir)]} { set use_path [lrange $use_path 0 end-1] @@ -478,24 +479,22 @@ proc tclPkgUnknown {name args} { } set tclSeenPath($dir) 1 - # we can't use glob in safe interps, so enclose the following - # in a catch statement, where we get the pkgIndex files out - # of the subdirectories + # we can't use glob in safe interps, so enclose the following in a + # catch statement, where we get the pkgIndex files out of the + # subdirectories catch { foreach file [glob -directory $dir -join -nocomplain \ * pkgIndex.tcl] { set dir [file dirname $file] if {![info exists procdDirs($dir)]} { - set code [catch {source $file} msg opt] - if {$code == 1 && - [lindex [dict get $opt -errorcode] 0] eq "POSIX" && - [lindex [dict get $opt -errorcode] 1] eq "EACCES"} { + try { + source $file + } trap {POSIX EACCES} {} { # $file was not readable; silently ignore continue - } - if {$code} { + } on error msg { tclLog "error reading package index file $file: $msg" - } else { + } on ok {} { set procdDirs($dir) 1 } } @@ -504,18 +503,16 @@ proc tclPkgUnknown {name args} { set dir [lindex $use_path end] if {![info exists procdDirs($dir)]} { set file [file join $dir pkgIndex.tcl] - # safe interps usually don't have "file exists", + # safe interps usually don't have "file exists", if {([interp issafe] || [file exists $file])} { - set code [catch {source $file} msg opt] - if {$code == 1 && - [lindex [dict get $opt -errorcode] 0] eq "POSIX" && - [lindex [dict get $opt -errorcode] 1] eq "EACCES"} { + try { + source $file + } trap {POSIX EACCES} {} { # $file was not readable; silently ignore continue - } - if {$code} { + } on error msg { tclLog "error reading package index file $file: $msg" - } else { + } on ok {} { set procdDirs($dir) 1 } } @@ -523,12 +520,11 @@ proc tclPkgUnknown {name args} { set use_path [lrange $use_path 0 end-1] - # Check whether any of the index scripts we [source]d above - # set a new value for $::auto_path. If so, then find any - # new directories on the $::auto_path, and lappend them to - # the $use_path we are working from. This gives index scripts - # the (arguably unwise) power to expand the index script search - # path while the search is in progress. + # Check whether any of the index scripts we [source]d above set a new + # value for $::auto_path. If so, then find any new directories on the + # $::auto_path, and lappend them to the $use_path we are working from. + # This gives index scripts the (arguably unwise) power to expand the + # index script search path while the search is in progress. set index 0 if {[llength $old_path] == [llength $auto_path]} { foreach dir $auto_path old $old_path { @@ -540,14 +536,13 @@ proc tclPkgUnknown {name args} { } } - # $index now points to the first element of $auto_path that - # has changed, or the beginning if $auto_path has changed length - # Scan the new elements of $auto_path for directories to add to - # $use_path. Don't add directories we've already seen, or ones - # already on the $use_path. + # $index now points to the first element of $auto_path that has + # changed, or the beginning if $auto_path has changed length Scan the + # new elements of $auto_path for directories to add to $use_path. + # Don't add directories we've already seen, or ones already on the + # $use_path. foreach dir [lrange $auto_path $index end] { - if {![info exists tclSeenPath($dir)] - && ([lsearch -exact $use_path $dir] == -1) } { + if {![info exists tclSeenPath($dir)] && ($dir ni $use_path)} { lappend use_path $dir } } @@ -556,9 +551,9 @@ proc tclPkgUnknown {name args} { } # tcl::MacOSXPkgUnknown -- -# This procedure extends the "package unknown" function for MacOSX. -# It scans the Resources/Scripts directories of the immediate children -# of the auto_path directories for pkgIndex files. +# This procedure extends the "package unknown" function for MacOSX. It scans +# the Resources/Scripts directories of the immediate children of the auto_path +# directories for pkgIndex files. # # Arguments: # original - original [package unknown] procedure @@ -567,7 +562,6 @@ proc tclPkgUnknown {name args} { # exact - Either "-exact" or omitted. Not used. proc tcl::MacOSXPkgUnknown {original name args} { - # First do the cross-platform default search uplevel 1 $original [linsert $args 0 $name] @@ -577,8 +571,8 @@ proc tcl::MacOSXPkgUnknown {original name args} { if {![info exists auto_path]} { return } - # Cache the auto_path, because it may change while we run through - # the first set of pkgIndex.tcl files + # Cache the auto_path, because it may change while we run through the + # first set of pkgIndex.tcl files set old_path [set use_path $auto_path] while {[llength $use_path]} { set dir [lindex $use_path end] @@ -595,28 +589,25 @@ proc tcl::MacOSXPkgUnknown {original name args} { * Resources Scripts pkgIndex.tcl] { set dir [file dirname $file] if {![info exists procdDirs($dir)]} { - set code [catch {source $file} msg opt] - if {$code == 1 && - [lindex [dict get $opt -errorcode] 0] eq "POSIX" && - [lindex [dict get $opt -errorcode] 1] eq "EACCES"} { + try { + source $file + } trap {POSIX EACCES} {} { # $file was not readable; silently ignore continue - } - if {$code} { + } on error msg { tclLog "error reading package index file $file: $msg" - } else { + } on ok {} { set procdDirs($dir) 1 } } } set use_path [lrange $use_path 0 end-1] - # Check whether any of the index scripts we [source]d above - # set a new value for $::auto_path. If so, then find any - # new directories on the $::auto_path, and lappend them to - # the $use_path we are working from. This gives index scripts - # the (arguably unwise) power to expand the index script search - # path while the search is in progress. + # Check whether any of the index scripts we [source]d above set a new + # value for $::auto_path. If so, then find any new directories on the + # $::auto_path, and lappend them to the $use_path we are working from. + # This gives index scripts the (arguably unwise) power to expand the + # index script search path while the search is in progress. set index 0 if {[llength $old_path] == [llength $auto_path]} { foreach dir $auto_path old $old_path { @@ -628,14 +619,13 @@ proc tcl::MacOSXPkgUnknown {original name args} { } } - # $index now points to the first element of $auto_path that - # has changed, or the beginning if $auto_path has changed length - # Scan the new elements of $auto_path for directories to add to - # $use_path. Don't add directories we've already seen, or ones - # already on the $use_path. + # $index now points to the first element of $auto_path that has + # changed, or the beginning if $auto_path has changed length Scan the + # new elements of $auto_path for directories to add to $use_path. + # Don't add directories we've already seen, or ones already on the + # $use_path. foreach dir [lrange $auto_path $index end] { - if {![info exists tclSeenPath($dir)] - && ([lsearch -exact $use_path $dir] == -1) } { + if {![info exists tclSeenPath($dir)] && ($dir ni $use_path)} { lappend use_path $dir } } @@ -659,12 +649,12 @@ proc tcl::MacOSXPkgUnknown {original name args} { # # Any number of -load and -source parameters may be # specified, so long as there is at least one -load or -# -source parameter. If the procs component of a -# module specifier is left off, that module will be -# set up for direct loading; otherwise, it will be -# set up for lazy loading. If both -source and -load -# are specified, the -load'ed files will be loaded -# first, followed by the -source'd files. +# -source parameter. If the procs component of a module +# specifier is left off, that module will be set up for +# direct loading; otherwise, it will be set up for lazy +# loading. If both -source and -load are specified, the +# -load'ed files will be loaded first, followed by the +# -source'd files. # # Results: # An appropriate "package ifneeded" statement for the package. @@ -682,15 +672,12 @@ proc ::tcl::Pkg::Create {args} { # process arguments set len [llength $args] - if { $len < 6 } { + if {$len < 6} { error $err(wrongNumArgs) } - + # Initialize parameters - set opts(-name) {} - set opts(-version) {} - set opts(-source) {} - set opts(-load) {} + array set opts {-name {} -version {} -source {} -load {}} # process parameters for {set i 0} {$i < $len} {incr i} { @@ -699,14 +686,14 @@ proc ::tcl::Pkg::Create {args} { switch -glob -- $flag { "-name" - "-version" { - if { $i >= $len } { + if {$i >= $len} { error [format $err(valueMissing) $flag] } set opts($flag) [lindex $args $i] } "-source" - "-load" { - if { $i >= $len } { + if {$i >= $len} { error [format $err(valueMissing) $flag] } lappend opts($flag) [lindex $args $i] @@ -718,32 +705,27 @@ proc ::tcl::Pkg::Create {args} { } # Validate the parameters - if { [llength $opts(-name)] == 0 } { + if {![llength $opts(-name)]} { error [format $err(valueMissing) "-name"] } - if { [llength $opts(-version)] == 0 } { + if {![llength $opts(-version)]} { error [format $err(valueMissing) "-version"] } - - if { [llength $opts(-source)] == 0 && [llength $opts(-load)] == 0 } { + + if {!([llength $opts(-source)] || [llength $opts(-load)])} { error $err(noLoadOrSource) } # OK, now everything is good. Generate the package ifneeded statment. set cmdline "package ifneeded $opts(-name) $opts(-version) " - + set cmdList {} set lazyFileList {} # Handle -load and -source specs foreach key {load source} { foreach filespec $opts(-$key) { - foreach {filename proclist} {{} {}} { - break - } - foreach {filename proclist} $filespec { - break - } + lassign $filespec filename proclist if { [llength $proclist] == 0 } { set cmd "\[list $key \[file join \$dir [list $filename]\]\]" @@ -754,7 +736,7 @@ proc ::tcl::Pkg::Create {args} { } } - if { [llength $lazyFileList] > 0 } { + if {[llength $lazyFileList]} { lappend cmdList "\[list tclPkgSetup \$dir $opts(-name)\ $opts(-version) [list $lazyFileList]\]" } @@ -762,4 +744,4 @@ proc ::tcl::Pkg::Create {args} { return $cmdline } -interp alias {} ::pkg::create {} ::tcl::Pkg::Create +interp alias {} ::pkg::create {} ::tcl::Pkg::Create diff --git a/library/parray.tcl b/library/parray.tcl index e331d4d..a9c2cb1 100644 --- a/library/parray.tcl +++ b/library/parray.tcl @@ -1,8 +1,6 @@ # parray: # Print the contents of a global array on stdout. # -# RCS: @(#) $Id: parray.tcl,v 1.4 2005/06/03 10:02:23 dkf Exp $ -# # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994 Sun Microsystems, Inc. # @@ -13,7 +11,7 @@ proc parray {a {pattern *}} { upvar 1 $a array if {![array exists array]} { - error "\"$a\" isn't an array" + return -code error "\"$a\" isn't an array" } set maxl 0 set names [lsort [array names array $pattern]] diff --git a/library/platform/pkgIndex.tcl b/library/platform/pkgIndex.tcl index 27d596f..23a3408 100644 --- a/library/platform/pkgIndex.tcl +++ b/library/platform/pkgIndex.tcl @@ -1,3 +1,3 @@ -package ifneeded platform 1.0.3 [list source [file join $dir platform.tcl]] +package ifneeded platform 1.0.12 [list source [file join $dir platform.tcl]] package ifneeded platform::shell 1.1.4 [list source [file join $dir shell.tcl]] diff --git a/library/platform/platform.tcl b/library/platform/platform.tcl index 143cdc5..5698425 100644 --- a/library/platform/platform.tcl +++ b/library/platform/platform.tcl @@ -103,7 +103,12 @@ proc ::platform::generic {} { } sunos { set plat solaris - if {$cpu ne "ia64"} { + if {[string match "ix86" $cpu]} { + if {$tcl_platform(wordSize) == 8} { + set cpu x86_64 + } + } elseif {![string match "ia64*" $cpu]} { + # sparc if {$tcl_platform(wordSize) == 8} { append cpu 64 } @@ -111,6 +116,13 @@ proc ::platform::generic {} { } darwin { set plat macosx + # Correctly identify the cpu when running as a 64bit + # process on a machine with a 32bit kernel + if {$cpu eq "ix86"} { + if {$tcl_platform(wordSize) == 8} { + set cpu x86_64 + } + } } aix { set cpu powerpc @@ -120,7 +132,7 @@ proc ::platform::generic {} { } hp-ux { set plat hpux - if {$cpu ne "ia64"} { + if {![string match "ia64*" $cpu]} { set cpu parisc if {$tcl_platform(wordSize) == 8} { append cpu 64 @@ -154,42 +166,73 @@ proc ::platform::identify {} { append plat $text return "${plat}-${cpu}" } + macosx { + set major [lindex [split $tcl_platform(osVersion) .] 0] + if {$major > 8} { + incr major -4 + append plat 10.$major + return "${plat}-${cpu}" + } + } linux { # Look for the libc*.so and determine its version # (libc5/6, libc6 further glibc 2.X) set v unknown - if {[file exists /lib64] && [file isdirectory /lib64]} { - set base /lib64 - } else { - set base /lib - } - - set libclist [lsort [glob -nocomplain -directory $base libc*]] - if {[llength $libclist]} { - set libc [lindex $libclist 0] - - # Try executing the library first. This should suceed - # for a glibc library, and return the version - # information. + # Determine in which directory to look. /lib, or /lib64. + # For that we use the tcl_platform(wordSize). + # + # We could use the 'cpu' info, per the equivalence below, + # that however would be restricted to intel. And this may + # be a arm, mips, etc. system. The wordsize is more + # fundamental. + # + # ix86 <=> (wordSize == 4) <=> 32 bit ==> /lib + # x86_64 <=> (wordSize == 8) <=> 64 bit ==> /lib64 + # + # Do not look into /lib64 even if present, if the cpu + # doesn't fit. - if {![catch { - set vdata [lindex [split [exec $libc] \n] 0] - }]} { - regexp {([0-9]+(\.[0-9]+)*)} $vdata -> v - foreach {major minor} [split $v .] break - set v glibc${major}.${minor} - } else { - # We had trouble executing the library. We are now - # inspecting its name to determine the version - # number. This code by Larry McVoy. + # TODO: Determine the prefixes (i386, x86_64, ...) for + # other cpus. The path after the generic one is utterly + # specific to intel right now. Ok, on Ubuntu, possibly + # other Debian systems we may apparently be able to query + # the necessary CPU code. If we can't we simply use the + # hardwired fallback. - if {[regexp -- {libc-([0-9]+)\.([0-9]+)} $libc -> major minor]} { - set v glibc${major}.${minor} + switch -exact -- $tcl_platform(wordSize) { + 4 { + lappend bases /lib + if {[catch { + exec dpkg-architecture -qDEB_HOST_MULTIARCH + } res]} { + lappend bases /lib/i386-linux-gnu + } else { + # dpkg-arch returns the full tripled, not just cpu. + lappend bases /lib/$res + } + } + 8 { + lappend bases /lib64 + if {[catch { + exec dpkg-architecture -qDEB_HOST_MULTIARCH + } res]} { + lappend bases /lib/x86_64-linux-gnu + } else { + # dpkg-arch returns the full tripled, not just cpu. + lappend bases /lib/$res } } + default { + return -code error "Bad wordSize $tcl_platform(wordSize), expected 4 or 8" + } } + + foreach base $bases { + if {[LibcVersion $base -> v]} break + } + append plat -$v return "${plat}-${cpu}" } @@ -198,6 +241,38 @@ proc ::platform::identify {} { return $id } +proc ::platform::LibcVersion {base _->_ vv} { + upvar 1 $vv v + set libclist [lsort [glob -nocomplain -directory $base libc*]] + + if {![llength $libclist]} { return 0 } + + set libc [lindex $libclist 0] + + # Try executing the library first. This should suceed + # for a glibc library, and return the version + # information. + + if {![catch { + set vdata [lindex [split [exec $libc] \n] 0] + }]} { + regexp {version ([0-9]+(\.[0-9]+)*)} $vdata -> v + foreach {major minor} [split $v .] break + set v glibc${major}.${minor} + return 1 + } else { + # We had trouble executing the library. We are now + # inspecting its name to determine the version + # number. This code by Larry McVoy. + + if {[regexp -- {libc-([0-9]+)\.([0-9]+)} $libc -> major minor]} { + set v glibc${major}.${minor} + return 1 + } + } + return 0 +} + # -- platform::patterns # # Given an exact platform identifier, i.e. _not_ the generic @@ -238,10 +313,52 @@ proc ::platform::patterns {id} { } } } - macosx-powerpc - - macosx-ix86 { + macosx*-* { + # 10.5+ + if {[regexp {macosx([^-]*)-(.*)} $id -> v cpu]} { + + switch -exact -- $cpu { + ix86 - + x86_64 { set alt i386-x86_64 } + default { set alt {} } + } + + if {$v ne ""} { + foreach {major minor} [split $v .] break + + # Add 10.5 to 10.minor to patterns. + set res {} + for {set j $minor} {$j >= 5} {incr j -1} { + lappend res macosx${major}.${j}-${cpu} + lappend res macosx${major}.${j}-universal + if {$alt ne {}} { + lappend res macosx${major}.${j}-$alt + } + } + + # Add unversioned patterns for 10.3/10.4 builds. + lappend res macosx-${cpu} + lappend res macosx-universal + if {$alt ne {}} { + lappend res macosx-$alt + } + } else { + lappend res macosx-universal + if {$alt ne {}} { + lappend res macosx-$alt + } + } + } else { + lappend res macosx-universal + } + } + macosx-powerpc { lappend res macosx-universal } + macosx-x86_64 - + macosx-ix86 { + lappend res macosx-universal macosx-i386-x86_64 + } } lappend res tcl ; # Pure tcl packages are always compatible. return $res @@ -251,7 +368,7 @@ proc ::platform::patterns {id} { # ### ### ### ######### ######### ######### ## Ready -package provide platform 1.0.3 +package provide platform 1.0.12 # ### ### ### ######### ######### ######### ## Demo application diff --git a/library/platform/shell.tcl b/library/platform/shell.tcl index 407e639..d37cdcd 100644 --- a/library/platform/shell.tcl +++ b/library/platform/shell.tcl @@ -1,3 +1,4 @@ + # -*- tcl -*- # ### ### ### ######### ######### ######### ## Overview @@ -104,8 +105,10 @@ proc ::platform::shell::LOCATE {bv ov} { # here. If the found package is wrapped we copy the code somewhere # where the spawned shell will be able to read it. - # Note: This code depends on the form of the 'provide' command - # generated by tm.tcl. Keep them in sync. See Bug 2255235. + # This code is brittle, it needs has to adapt to whatever changes + # are made to the TM code, i.e. the provide statement generated by + # tm.tcl + set pl [package ifneeded platform [package require platform]] set base [lindex $pl end] @@ -184,7 +187,7 @@ proc ::platform::shell::TEMP {} { } } } - if {[string compare $channel ""]} { + if {$channel != ""} { return -code error "Failed to open a temporary file: $channel" } else { return -code error "Failed to find an unused temporary file name" diff --git a/library/reg/pkgIndex.tcl b/library/reg/pkgIndex.tcl index d2ed72f..55af4b3 100755 --- a/library/reg/pkgIndex.tcl +++ b/library/reg/pkgIndex.tcl @@ -1,9 +1,9 @@ -if {![package vsatisfies [package provide Tcl] 8]} {return} -if {[string compare $::tcl_platform(platform) windows]} {return} -if {[info exists ::tcl_platform(debug)]} { - package ifneeded registry 1.2.1 \ - [list load [file join $dir tclreg12g.dll] registry] +if {([info commands ::tcl::pkgconfig] eq "") + || ([info sharedlibextension] ne ".dll")} return +if {[::tcl::pkgconfig get debug]} { + package ifneeded registry 1.3.0 \ + [list load [file join $dir tclreg13g.dll] registry] } else { - package ifneeded registry 1.2.1 \ - [list load [file join $dir tclreg12.dll] registry] + package ifneeded registry 1.3.0 \ + [list load [file join $dir tclreg13.dll] registry] } diff --git a/library/safe.tcl b/library/safe.tcl index 501a552..394aa97 100644 --- a/library/safe.tcl +++ b/library/safe.tcl @@ -4,1032 +4,1130 @@ # It implements a virtual path mecanism to hide the real pathnames from the # slave. It runs in a master interpreter and sets up data structure and # aliases that will be invoked when used from a slave interpreter. -# +# # See the safe.n man page for details. # # Copyright (c) 1996-1997 Sun Microsystems, Inc. # -# See the file "license.terms" for information on usage and redistribution -# of this file, and for a DISCLAIMER OF ALL WARRANTIES. -# -# RCS: @(#) $Id: safe.tcl,v 1.16.4.1 2008/06/25 16:42:05 andreas_kupries Exp $ +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# The implementation is based on namespaces. These naming conventions -# are followed: +# The implementation is based on namespaces. These naming conventions are +# followed: # Private procs starts with uppercase. # Public procs are exported and starts with lowercase # # Needed utilities package -package require opt 0.4.1; +package require opt 0.4.1 # Create the safe namespace namespace eval ::safe { - # Exported API: namespace export interpCreate interpInit interpConfigure interpDelete \ - interpAddToAccessPath interpFindInAccessPath setLogCmd - - #### - # - # Setup the arguments parsing - # - #### - - # Make sure that our temporary variable is local to this - # namespace. [Bug 981733] - variable temp - - # Share the descriptions - set temp [::tcl::OptKeyRegister { - {-accessPath -list {} "access path for the slave"} - {-noStatics "prevent loading of statically linked pkgs"} - {-statics true "loading of statically linked pkgs"} - {-nestedLoadOk "allow nested loading"} - {-nested false "nested loading"} - {-deleteHook -script {} "delete hook"} - }] - - # create case (slave is optional) - ::tcl::OptKeyRegister { - {?slave? -name {} "name of the slave (optional)"} - } ::safe::interpCreate - # adding the flags sub programs to the command program - # (relying on Opt's internal implementation details) - lappend ::tcl::OptDesc(::safe::interpCreate) $::tcl::OptDesc($temp) - - # init and configure (slave is needed) - ::tcl::OptKeyRegister { - {slave -name {} "name of the slave"} - } ::safe::interpIC - # adding the flags sub programs to the command program - # (relying on Opt's internal implementation details) - lappend ::tcl::OptDesc(::safe::interpIC) $::tcl::OptDesc($temp) - # temp not needed anymore - ::tcl::OptKeyDelete $temp - + interpAddToAccessPath interpFindInAccessPath setLogCmd +} - # Helper function to resolve the dual way of specifying staticsok - # (either by -noStatics or -statics 0) - proc InterpStatics {} { - foreach v {Args statics noStatics} { - upvar $v $v - } - set flag [::tcl::OptProcArgGiven -noStatics]; - if {$flag && (!$noStatics == !$statics) - && ([::tcl::OptProcArgGiven -statics])} { - return -code error\ - "conflicting values given for -statics and -noStatics" - } - if {$flag} { - return [expr {!$noStatics}] - } else { - return $statics - } +# Helper function to resolve the dual way of specifying staticsok (either +# by -noStatics or -statics 0) +proc ::safe::InterpStatics {} { + foreach v {Args statics noStatics} { + upvar $v $v + } + set flag [::tcl::OptProcArgGiven -noStatics] + if {$flag && (!$noStatics == !$statics) + && ([::tcl::OptProcArgGiven -statics])} { + return -code error\ + "conflicting values given for -statics and -noStatics" } + if {$flag} { + return [expr {!$noStatics}] + } else { + return $statics + } +} - # Helper function to resolve the dual way of specifying nested loading - # (either by -nestedLoadOk or -nested 1) - proc InterpNested {} { - foreach v {Args nested nestedLoadOk} { - upvar $v $v - } - set flag [::tcl::OptProcArgGiven -nestedLoadOk]; - # note that the test here is the opposite of the "InterpStatics" - # one (it is not -noNested... because of the wanted default value) - if {$flag && (!$nestedLoadOk != !$nested) - && ([::tcl::OptProcArgGiven -nested])} { - return -code error\ - "conflicting values given for -nested and -nestedLoadOk" - } - if {$flag} { - # another difference with "InterpStatics" - return $nestedLoadOk - } else { - return $nested - } +# Helper function to resolve the dual way of specifying nested loading +# (either by -nestedLoadOk or -nested 1) +proc ::safe::InterpNested {} { + foreach v {Args nested nestedLoadOk} { + upvar $v $v } + set flag [::tcl::OptProcArgGiven -nestedLoadOk] + # note that the test here is the opposite of the "InterpStatics" one + # (it is not -noNested... because of the wanted default value) + if {$flag && (!$nestedLoadOk != !$nested) + && ([::tcl::OptProcArgGiven -nested])} { + return -code error\ + "conflicting values given for -nested and -nestedLoadOk" + } + if {$flag} { + # another difference with "InterpStatics" + return $nestedLoadOk + } else { + return $nested + } +} - #### - # - # API entry points that needs argument parsing : - # - #### +#### +# +# API entry points that needs argument parsing : +# +#### +# Interface/entry point function and front end for "Create" +proc ::safe::interpCreate {args} { + set Args [::tcl::OptKeyParse ::safe::interpCreate $args] + InterpCreate $slave $accessPath \ + [InterpStatics] [InterpNested] $deleteHook +} - # Interface/entry point function and front end for "Create" - proc interpCreate {args} { - set Args [::tcl::OptKeyParse ::safe::interpCreate $args] - InterpCreate $slave $accessPath \ - [InterpStatics] [InterpNested] $deleteHook +proc ::safe::interpInit {args} { + set Args [::tcl::OptKeyParse ::safe::interpIC $args] + if {![::interp exists $slave]} { + return -code error "\"$slave\" is not an interpreter" } + InterpInit $slave $accessPath \ + [InterpStatics] [InterpNested] $deleteHook +} - proc interpInit {args} { - set Args [::tcl::OptKeyParse ::safe::interpIC $args] - if {![::interp exists $slave]} { - return -code error "\"$slave\" is not an interpreter" - } - InterpInit $slave $accessPath \ - [InterpStatics] [InterpNested] $deleteHook; +# Check that the given slave is "one of us" +proc ::safe::CheckInterp {slave} { + namespace upvar ::safe S$slave state + if {![info exists state] || ![::interp exists $slave]} { + return -code error \ + "\"$slave\" is not an interpreter managed by ::safe::" } +} - proc CheckInterp {slave} { - if {![IsInterp $slave]} { - return -code error \ - "\"$slave\" is not an interpreter managed by ::safe::" +# Interface/entry point function and front end for "Configure". This code +# is awfully pedestrian because it would need more coupling and support +# between the way we store the configuration values in safe::interp's and +# the Opt package. Obviously we would like an OptConfigure to avoid +# duplicating all this code everywhere. +# -> TODO (the app should share or access easily the program/value stored +# by opt) + +# This is even more complicated by the boolean flags with no values that +# we had the bad idea to support for the sake of user simplicity in +# create/init but which makes life hard in configure... +# So this will be hopefully written and some integrated with opt1.0 +# (hopefully for tcl8.1 ?) +proc ::safe::interpConfigure {args} { + switch [llength $args] { + 1 { + # If we have exactly 1 argument the semantic is to return all + # the current configuration. We still call OptKeyParse though + # we know that "slave" is our given argument because it also + # checks for the "-help" option. + set Args [::tcl::OptKeyParse ::safe::interpIC $args] + CheckInterp $slave + namespace upvar ::safe S$slave state + + return [join [list \ + [list -accessPath $state(access_path)] \ + [list -statics $state(staticsok)] \ + [list -nested $state(nestedok)] \ + [list -deleteHook $state(cleanupHook)]]] } - } - - # Interface/entry point function and front end for "Configure" - # This code is awfully pedestrian because it would need - # more coupling and support between the way we store the - # configuration values in safe::interp's and the Opt package - # Obviously we would like an OptConfigure - # to avoid duplicating all this code everywhere. -> TODO - # (the app should share or access easily the program/value - # stored by opt) - # This is even more complicated by the boolean flags with no values - # that we had the bad idea to support for the sake of user simplicity - # in create/init but which makes life hard in configure... - # So this will be hopefully written and some integrated with opt1.0 - # (hopefully for tcl8.1 ?) - proc interpConfigure {args} { - switch [llength $args] { - 1 { - # If we have exactly 1 argument - # the semantic is to return all the current configuration - # We still call OptKeyParse though we know that "slave" - # is our given argument because it also checks - # for the "-help" option. - set Args [::tcl::OptKeyParse ::safe::interpIC $args] - CheckInterp $slave - set res {} - lappend res [list -accessPath [Set [PathListName $slave]]] - lappend res [list -statics [Set [StaticsOkName $slave]]] - lappend res [list -nested [Set [NestedOkName $slave]]] - lappend res [list -deleteHook [Set [DeleteHookName $slave]]] - join $res + 2 { + # If we have exactly 2 arguments the semantic is a "configure + # get" + lassign $args slave arg + + # get the flag sub program (we 'know' about Opt's internal + # representation of data) + set desc [lindex [::tcl::OptKeyGetDesc ::safe::interpIC] 2] + set hits [::tcl::OptHits desc $arg] + if {$hits > 1} { + return -code error [::tcl::OptAmbigous $desc $arg] + } elseif {$hits == 0} { + return -code error [::tcl::OptFlagUsage $desc $arg] } - 2 { - # If we have exactly 2 arguments - # the semantic is a "configure get" - ::tcl::Lassign $args slave arg - # get the flag sub program (we 'know' about Opt's internal - # representation of data) - set desc [lindex [::tcl::OptKeyGetDesc ::safe::interpIC] 2] - set hits [::tcl::OptHits desc $arg] - if {$hits > 1} { - return -code error [::tcl::OptAmbigous $desc $arg] - } elseif {$hits == 0} { - return -code error [::tcl::OptFlagUsage $desc $arg] - } - CheckInterp $slave - set item [::tcl::OptCurDesc $desc] - set name [::tcl::OptName $item] - switch -exact -- $name { - -accessPath { - return [list -accessPath [Set [PathListName $slave]]] - } - -statics { - return [list -statics [Set [StaticsOkName $slave]]] - } - -nested { - return [list -nested [Set [NestedOkName $slave]]] - } - -deleteHook { - return [list -deleteHook [Set [DeleteHookName $slave]]] - } - -noStatics { - # it is most probably a set in fact - # but we would need then to jump to the set part - # and it is not *sure* that it is a set action - # that the user want, so force it to use the - # unambigous -statics ?value? instead: - return -code error\ - "ambigous query (get or set -noStatics ?)\ - use -statics instead" - } - -nestedLoadOk { - return -code error\ - "ambigous query (get or set -nestedLoadOk ?)\ - use -nested instead" - } - default { - return -code error "unknown flag $name (bug)" - } + CheckInterp $slave + namespace upvar ::safe S$slave state + + set item [::tcl::OptCurDesc $desc] + set name [::tcl::OptName $item] + switch -exact -- $name { + -accessPath { + return [list -accessPath $state(access_path)] } - } - default { - # Otherwise we want to parse the arguments like init and create - # did - set Args [::tcl::OptKeyParse ::safe::interpIC $args] - CheckInterp $slave - # Get the current (and not the default) values of - # whatever has not been given: - if {![::tcl::OptProcArgGiven -accessPath]} { - set doreset 1 - set accessPath [Set [PathListName $slave]] - } else { - set doreset 0 + -statics { + return [list -statics $state(staticsok)] } - if {(![::tcl::OptProcArgGiven -statics]) \ - && (![::tcl::OptProcArgGiven -noStatics]) } { - set statics [Set [StaticsOkName $slave]] - } else { - set statics [InterpStatics] + -nested { + return [list -nested $state(nestedok)] } - if {([::tcl::OptProcArgGiven -nested]) \ - || ([::tcl::OptProcArgGiven -nestedLoadOk]) } { - set nested [InterpNested] - } else { - set nested [Set [NestedOkName $slave]] + -deleteHook { + return [list -deleteHook $state(cleanupHook)] } - if {![::tcl::OptProcArgGiven -deleteHook]} { - set deleteHook [Set [DeleteHookName $slave]] + -noStatics { + # it is most probably a set in fact but we would need + # then to jump to the set part and it is not *sure* + # that it is a set action that the user want, so force + # it to use the unambigous -statics ?value? instead: + return -code error\ + "ambigous query (get or set -noStatics ?)\ + use -statics instead" + } + -nestedLoadOk { + return -code error\ + "ambigous query (get or set -nestedLoadOk ?)\ + use -nested instead" } - # we can now reconfigure : - InterpSetConfig $slave $accessPath $statics $nested $deleteHook - # auto_reset the slave (to completly synch the new access_path) - if {$doreset} { - if {[catch {::interp eval $slave {auto_reset}} msg]} { - Log $slave "auto_reset failed: $msg" - } else { - Log $slave "successful auto_reset" NOTICE - } + default { + return -code error "unknown flag $name (bug)" + } + } + } + default { + # Otherwise we want to parse the arguments like init and + # create did + set Args [::tcl::OptKeyParse ::safe::interpIC $args] + CheckInterp $slave + namespace upvar ::safe S$slave state + + # Get the current (and not the default) values of whatever has + # not been given: + if {![::tcl::OptProcArgGiven -accessPath]} { + set doreset 1 + set accessPath $state(access_path) + } else { + set doreset 0 + } + if { + ![::tcl::OptProcArgGiven -statics] + && ![::tcl::OptProcArgGiven -noStatics] + } then { + set statics $state(staticsok) + } else { + set statics [InterpStatics] + } + if { + [::tcl::OptProcArgGiven -nested] || + [::tcl::OptProcArgGiven -nestedLoadOk] + } then { + set nested [InterpNested] + } else { + set nested $state(nestedok) + } + if {![::tcl::OptProcArgGiven -deleteHook]} { + set deleteHook $state(cleanupHook) + } + # we can now reconfigure : + InterpSetConfig $slave $accessPath $statics $nested $deleteHook + # auto_reset the slave (to completly synch the new access_path) + if {$doreset} { + if {[catch {::interp eval $slave {auto_reset}} msg]} { + Log $slave "auto_reset failed: $msg" + } else { + Log $slave "successful auto_reset" NOTICE } } } } +} +#### +# +# Functions that actually implements the exported APIs +# +#### - #### - # - # Functions that actually implements the exported APIs - # - #### - - - # - # safe::InterpCreate : doing the real job - # - # This procedure creates a safe slave and initializes it with the - # safe base aliases. - # NB: slave name must be simple alphanumeric string, no spaces, - # no (), no {},... {because the state array is stored as part of the name} - # - # Returns the slave name. - # - # Optional Arguments : - # + slave name : if empty, generated name will be used - # + access_path: path list controlling where load/source can occur, - # if empty: the master auto_path will be used. - # + staticsok : flag, if 0 :no static package can be loaded (load {} Xxx) - # if 1 :static packages are ok. - # + nestedok: flag, if 0 :no loading to sub-sub interps (load xx xx sub) - # if 1 : multiple levels are ok. - - # use the full name and no indent so auto_mkIndex can find us - proc ::safe::InterpCreate { - slave - access_path - staticsok - nestedok - deletehook - } { - # Create the slave. - if {$slave ne ""} { - ::interp create -safe $slave - } else { - # empty argument: generate slave name - set slave [::interp create -safe] - } - Log $slave "Created" NOTICE - - # Initialize it. (returns slave name) - InterpInit $slave $access_path $staticsok $nestedok $deletehook +# +# safe::InterpCreate : doing the real job +# +# This procedure creates a safe slave and initializes it with the safe +# base aliases. +# NB: slave name must be simple alphanumeric string, no spaces, no (), no +# {},... {because the state array is stored as part of the name} +# +# Returns the slave name. +# +# Optional Arguments : +# + slave name : if empty, generated name will be used +# + access_path: path list controlling where load/source can occur, +# if empty: the master auto_path will be used. +# + staticsok : flag, if 0 :no static package can be loaded (load {} Xxx) +# if 1 :static packages are ok. +# + nestedok: flag, if 0 :no loading to sub-sub interps (load xx xx sub) +# if 1 : multiple levels are ok. + +# use the full name and no indent so auto_mkIndex can find us +proc ::safe::InterpCreate { + slave + access_path + staticsok + nestedok + deletehook + } { + # Create the slave. + if {$slave ne ""} { + ::interp create -safe $slave + } else { + # empty argument: generate slave name + set slave [::interp create -safe] } + Log $slave "Created" NOTICE + # Initialize it. (returns slave name) + InterpInit $slave $access_path $staticsok $nestedok $deletehook +} - # - # InterpSetConfig (was setAccessPath) : - # Sets up slave virtual auto_path and corresponding structure - # within the master. Also sets the tcl_library in the slave - # to be the first directory in the path. - # Nb: If you change the path after the slave has been initialized - # you probably need to call "auto_reset" in the slave in order that it - # gets the right auto_index() array values. - - proc ::safe::InterpSetConfig {slave access_path staticsok\ - nestedok deletehook} { - - # determine and store the access path if empty - if {$access_path eq ""} { - set access_path [uplevel \#0 set auto_path] - # Make sure that tcl_library is in auto_path - # and at the first position (needed by setAccessPath) - set where [lsearch -exact $access_path [info library]] - if {$where == -1} { - # not found, add it. - set access_path [concat [list [info library]] $access_path] - Log $slave "tcl_library was not in auto_path,\ +# +# InterpSetConfig (was setAccessPath) : +# Sets up slave virtual auto_path and corresponding structure within +# the master. Also sets the tcl_library in the slave to be the first +# directory in the path. +# NB: If you change the path after the slave has been initialized you +# probably need to call "auto_reset" in the slave in order that it gets +# the right auto_index() array values. + +proc ::safe::InterpSetConfig {slave access_path staticsok nestedok deletehook} { + global auto_path + + # determine and store the access path if empty + if {$access_path eq ""} { + set access_path $auto_path + + # Make sure that tcl_library is in auto_path and at the first + # position (needed by setAccessPath) + set where [lsearch -exact $access_path [info library]] + if {$where == -1} { + # not found, add it. + set access_path [linsert $access_path 0 [info library]] + Log $slave "tcl_library was not in auto_path,\ added it to slave's access_path" NOTICE - } elseif {$where != 0} { - # not first, move it first - set access_path [concat [list [info library]]\ - [lreplace $access_path $where $where]] - Log $slave "tcl_libray was not in first in auto_path,\ + } elseif {$where != 0} { + # not first, move it first + set access_path [linsert \ + [lreplace $access_path $where $where] \ + 0 [info library]] + Log $slave "tcl_libray was not in first in auto_path,\ moved it to front of slave's access_path" NOTICE - - } - - # Add 1st level sub dirs (will searched by auto loading from tcl - # code in the slave using glob and thus fail, so we add them - # here so by default it works the same). - set access_path [AddSubDirs $access_path] } - Log $slave "Setting accessPath=($access_path) staticsok=$staticsok\ + # Add 1st level sub dirs (will searched by auto loading from tcl + # code in the slave using glob and thus fail, so we add them here + # so by default it works the same). + set access_path [AddSubDirs $access_path] + } + + Log $slave "Setting accessPath=($access_path) staticsok=$staticsok\ nestedok=$nestedok deletehook=($deletehook)" NOTICE - # clear old autopath if it existed - set nname [PathNumberName $slave] - if {[Exists $nname]} { - set n [Set $nname] - for {set i 0} {$i<$n} {incr i} { - Unset [PathToken $i $slave] - } - } + namespace upvar ::safe S$slave state + + # clear old autopath if it existed + # build new one + # Extend the access list with the paths used to look for Tcl Modules. + # We save the virtual form separately as well, as syncing it with the + # slave has to be defered until the necessary commands are present for + # setup. + + set norm_access_path {} + set slave_access_path {} + set map_access_path {} + set remap_access_path {} + set slave_tm_path {} + + set i 0 + foreach dir $access_path { + set token [PathToken $i] + lappend slave_access_path $token + lappend map_access_path $token $dir + lappend remap_access_path $dir $token + lappend norm_access_path [file normalize $dir] + incr i + } - # build new one - set slave_auto_path {} - set i 0 - foreach dir $access_path { - Set [PathToken $i $slave] $dir - lappend slave_auto_path "\$[PathToken $i]" - incr i - } - # Extend the access list with the paths used to look for Tcl - # Modules. We safe the virtual form separately as well, as - # syncing it with the slave has to be defered until the - # necessary commands are present for setup. - foreach dir [::tcl::tm::list] { - lappend access_path $dir - Set [PathToken $i $slave] $dir - lappend slave_auto_path "\$[PathToken $i]" - lappend slave_tm_path "\$[PathToken $i]" - incr i - } - Set [TmPathListName $slave] $slave_tm_path - Set $nname $i - Set [PathListName $slave] $access_path - Set [VirtualPathListName $slave] $slave_auto_path + set morepaths [::tcl::tm::list] + while {[llength $morepaths]} { + set addpaths $morepaths + set morepaths {} - Set [StaticsOkName $slave] $staticsok - Set [NestedOkName $slave] $nestedok - Set [DeleteHookName $slave] $deletehook + foreach dir $addpaths { + # Prevent the addition of dirs on the tm list to the + # result if they are already known. + if {[dict exists $remap_access_path $dir]} { + continue + } - SyncAccessPath $slave - } + set token [PathToken $i] + lappend access_path $dir + lappend slave_access_path $token + lappend map_access_path $token $dir + lappend remap_access_path $dir $token + lappend norm_access_path [file normalize $dir] + lappend slave_tm_path $token + incr i - # - # - # FindInAccessPath: - # Search for a real directory and returns its virtual Id - # (including the "$") -proc ::safe::interpFindInAccessPath {slave path} { - set access_path [GetAccessPath $slave] - set where [lsearch -exact $access_path $path] - if {$where == -1} { - return -code error "$path not found in access path $access_path" + # [Bug 2854929] + # Recursively find deeper paths which may contain + # modules. Required to handle modules with names like + # 'platform::shell', which translate into + # 'platform/shell-X.tm', i.e arbitrarily deep + # subdirectories. + lappend morepaths {*}[glob -nocomplain -directory $dir -type d *] } - return "\$[PathToken $where]" } - # - # addToAccessPath: - # add (if needed) a real directory to access path - # and return its virtual token (including the "$"). -proc ::safe::interpAddToAccessPath {slave path} { - # first check if the directory is already in there - if {![catch {interpFindInAccessPath $slave $path} res]} { - return $res - } - # new one, add it: - set nname [PathNumberName $slave] - set n [Set $nname] - Set [PathToken $n $slave] $path - - set token "\$[PathToken $n]" - - Lappend [VirtualPathListName $slave] $token - Lappend [PathListName $slave] $path - Set $nname [expr {$n+1}] + set state(access_path) $access_path + set state(access_path,map) $map_access_path + set state(access_path,remap) $remap_access_path + set state(access_path,norm) $norm_access_path + set state(access_path,slave) $slave_access_path + set state(tm_path_slave) $slave_tm_path + set state(staticsok) $staticsok + set state(nestedok) $nestedok + set state(cleanupHook) $deletehook + + SyncAccessPath $slave +} - SyncAccessPath $slave +# +# +# FindInAccessPath: +# Search for a real directory and returns its virtual Id (including the +# "$") +proc ::safe::interpFindInAccessPath {slave path} { + namespace upvar ::safe S$slave state - return $token + if {![dict exists $state(access_path,remap) $path]} { + return -code error "$path not found in access path $access_path" } - # This procedure applies the initializations to an already existing - # interpreter. It is useful when you want to install the safe base - # aliases into a preexisting safe interpreter. - proc ::safe::InterpInit { - slave - access_path - staticsok - nestedok - deletehook - } { - - # Configure will generate an access_path when access_path is - # empty. - InterpSetConfig $slave $access_path $staticsok $nestedok $deletehook - - # These aliases let the slave load files to define new commands - - # NB we need to add [namespace current], aliases are always - # absolute paths. - ::interp alias $slave source {} [namespace current]::AliasSource $slave - ::interp alias $slave load {} [namespace current]::AliasLoad $slave - - # This alias lets the slave use the encoding names, convertfrom, - # convertto, and system, but not "encoding system <name>" to set - # the system encoding. + return [dict get $state(access_path,remap) $path] +} - ::interp alias $slave encoding {} [namespace current]::AliasEncoding \ - $slave +# +# addToAccessPath: +# add (if needed) a real directory to access path and return its +# virtual token (including the "$"). +proc ::safe::interpAddToAccessPath {slave path} { + # first check if the directory is already in there + # (inlined interpFindInAccessPath). + namespace upvar ::safe S$slave state - # Handling Tcl Modules, we need a restricted form of Glob. - ::interp alias $slave glob {} [namespace current]::AliasGlob \ - $slave + if {[dict exists $state(access_path,remap) $path]} { + return [dict get $state(access_path,remap) $path] + } - # This alias lets the slave have access to a subset of the 'file' - # command functionality. + # new one, add it: + set token [PathToken [llength $state(access_path)]] - AliasSubset $slave file file dir.* join root.* ext.* tail \ - path.* split + lappend state(access_path) $path + lappend state(access_path,slave) $token + lappend state(access_path,map) $token $path + lappend state(access_path,remap) $path $token + lappend state(access_path,norm) [file normalize $path] - # This alias interposes on the 'exit' command and cleanly terminates - # the slave. + SyncAccessPath $slave + return $token +} - ::interp alias $slave exit {} [namespace current]::interpDelete $slave +# This procedure applies the initializations to an already existing +# interpreter. It is useful when you want to install the safe base aliases +# into a preexisting safe interpreter. +proc ::safe::InterpInit { + slave + access_path + staticsok + nestedok + deletehook + } { + # Configure will generate an access_path when access_path is empty. + InterpSetConfig $slave $access_path $staticsok $nestedok $deletehook + + # NB we need to add [namespace current], aliases are always absolute + # paths. + + # These aliases let the slave load files to define new commands + # This alias lets the slave use the encoding names, convertfrom, + # convertto, and system, but not "encoding system <name>" to set the + # system encoding. + # Handling Tcl Modules, we need a restricted form of Glob. + # This alias interposes on the 'exit' command and cleanly terminates + # the slave. + + foreach {command alias} { + source AliasSource + load AliasLoad + encoding AliasEncoding + exit interpDelete + glob AliasGlob + } { + ::interp alias $slave $command {} [namespace current]::$alias $slave + } - # The allowed slave variables already have been set - # by Tcl_MakeSafe(3) + # This alias lets the slave have access to a subset of the 'file' + # command functionality. + ::interp expose $slave file + foreach subcommand {dirname extension rootname tail} { + ::interp alias $slave ::tcl::file::$subcommand {} \ + ::safe::AliasFileSubcommand $slave $subcommand + } + foreach subcommand { + atime attributes copy delete executable exists isdirectory isfile + link lstat mtime mkdir nativename normalize owned readable readlink + rename size stat tempfile type volumes writable + } { + ::interp alias $slave ::tcl::file::$subcommand {} \ + ::safe::BadSubcommand $slave file $subcommand + } - # Source init.tcl and tm.tcl into the slave, to get auto_load - # and other procedures defined: + # Subcommands of info + foreach {subcommand alias} { + nameofexecutable AliasExeName + } { + ::interp alias $slave ::tcl::info::$subcommand \ + {} [namespace current]::$alias $slave + } - if {[catch {::interp eval $slave \ - {source [file join $tcl_library init.tcl]}} msg]} { - Log $slave "can't source init.tcl ($msg)" - error "can't source init.tcl into slave $slave ($msg)" - } + # The allowed slave variables already have been set by Tcl_MakeSafe(3) - if {[catch {::interp eval $slave \ - {source [file join $tcl_library tm.tcl]}} msg]} { - Log $slave "can't source tm.tcl ($msg)" - error "can't source tm.tcl into slave $slave ($msg)" - } + # Source init.tcl and tm.tcl into the slave, to get auto_load and + # other procedures defined: - # Sync the paths used to search for Tcl modules. This can be - # done only now, after tm.tcl was loaded. - ::interp eval $slave [list ::tcl::tm::add {*}[Set [TmPathListName $slave]]] + if {[catch {::interp eval $slave { + source [file join $tcl_library init.tcl] + }} msg opt]} { + Log $slave "can't source init.tcl ($msg)" + return -options $opt "can't source init.tcl into slave $slave ($msg)" + } - return $slave + if {[catch {::interp eval $slave { + source [file join $tcl_library tm.tcl] + }} msg opt]} { + Log $slave "can't source tm.tcl ($msg)" + return -options $opt "can't source tm.tcl into slave $slave ($msg)" } + # Sync the paths used to search for Tcl modules. This can be done only + # now, after tm.tcl was loaded. + namespace upvar ::safe S$slave state + if {[llength $state(tm_path_slave)] > 0} { + ::interp eval $slave [list \ + ::tcl::tm::add {*}[lreverse $state(tm_path_slave)]] + } + return $slave +} - # Add (only if needed, avoid duplicates) 1 level of - # sub directories to an existing path list. - # Also removes non directories from the returned list. - proc AddSubDirs {pathList} { - set res {} - foreach dir $pathList { - if {[file isdirectory $dir]} { - # check that we don't have it yet as a children - # of a previous dir - if {[lsearch -exact $res $dir]<0} { - lappend res $dir - } - foreach sub [glob -directory $dir -nocomplain *] { - if {([file isdirectory $sub]) \ - && ([lsearch -exact $res $sub]<0) } { - # new sub dir, add it ! - lappend res $sub - } +# Add (only if needed, avoid duplicates) 1 level of sub directories to an +# existing path list. Also removes non directories from the returned +# list. +proc ::safe::AddSubDirs {pathList} { + set res {} + foreach dir $pathList { + if {[file isdirectory $dir]} { + # check that we don't have it yet as a children of a previous + # dir + if {$dir ni $res} { + lappend res $dir + } + foreach sub [glob -directory $dir -nocomplain *] { + if {[file isdirectory $sub] && ($sub ni $res)} { + # new sub dir, add it ! + lappend res $sub } } } - return $res } + return $res +} - # This procedure deletes a safe slave managed by Safe Tcl and - # cleans up associated state: +# This procedure deletes a safe slave managed by Safe Tcl and cleans up +# associated state: proc ::safe::interpDelete {slave} { - - Log $slave "About to delete" NOTICE - - # If the slave has a cleanup hook registered, call it. - # check the existance because we might be called to delete an interp - # which has not been registered with us at all - set hookname [DeleteHookName $slave] - if {[Exists $hookname]} { - set hook [Set $hookname] - if {![::tcl::Lempty $hook]} { - # remove the hook now, otherwise if the hook - # calls us somehow, we'll loop - Unset $hookname - if {[catch {{*}$hook $slave} err]} { - Log $slave "Delete hook error ($err)" - } + Log $slave "About to delete" NOTICE + + namespace upvar ::safe S$slave state + + # If the slave has a cleanup hook registered, call it. Check the + # existance because we might be called to delete an interp which has + # not been registered with us at all + + if {[info exists state(cleanupHook)]} { + set hook $state(cleanupHook) + if {[llength $hook]} { + # remove the hook now, otherwise if the hook calls us somehow, + # we'll loop + unset state(cleanupHook) + try { + {*}$hook $slave + } on error err { + Log $slave "Delete hook error ($err)" } } + } - # Discard the global array of state associated with the slave, and - # delete the interpreter. + # Discard the global array of state associated with the slave, and + # delete the interpreter. - set statename [InterpStateName $slave] - if {[Exists $statename]} { - Unset $statename - } - - # if we have been called twice, the interp might have been deleted - # already - if {[::interp exists $slave]} { - ::interp delete $slave - Log $slave "Deleted" NOTICE - } + if {[info exists state]} { + unset state + } - return + # if we have been called twice, the interp might have been deleted + # already + if {[::interp exists $slave]} { + ::interp delete $slave + Log $slave "Deleted" NOTICE } - # Set (or get) the loging mecanism + return +} + +# Set (or get) the logging mecanism proc ::safe::setLogCmd {args} { variable Log - if {[llength $args] == 0} { + set la [llength $args] + if {$la == 0} { return $Log + } elseif {$la == 1} { + set Log [lindex $args 0] + } else { + set Log $args + } + + if {$Log eq ""} { + # Disable logging completely. Calls to it will be compiled out + # of all users. + proc ::safe::Log {args} {} } else { - if {[llength $args] == 1} { - set Log [lindex $args 0] - } else { - set Log $args + # Activate logging, define proper command. + + proc ::safe::Log {slave msg {type ERROR}} { + variable Log + {*}$Log "$type for slave $slave : $msg" + return } } } - # internal variable - variable Log {} +# ------------------- END OF PUBLIC METHODS ------------ - # ------------------- END OF PUBLIC METHODS ------------ +# +# Sets the slave auto_path to the master recorded value. Also sets +# tcl_library to the first token of the virtual path. +# +proc ::safe::SyncAccessPath {slave} { + namespace upvar ::safe S$slave state + set slave_access_path $state(access_path,slave) + ::interp eval $slave [list set auto_path $slave_access_path] - # - # sets the slave auto_path to the master recorded value. - # also sets tcl_library to the first token of the virtual path. - # - proc SyncAccessPath {slave} { - set slave_auto_path [Set [VirtualPathListName $slave]] - ::interp eval $slave [list set auto_path $slave_auto_path] - Log $slave "auto_path in $slave has been set to $slave_auto_path"\ - NOTICE - ::interp eval $slave [list set tcl_library [lindex $slave_auto_path 0]] - } + Log $slave "auto_path in $slave has been set to $slave_access_path"\ + NOTICE - # base name for storing all the slave states - # the array variable name for slave foo is thus "Sfoo" - # and for sub slave {foo bar} "Sfoo bar" (spaces are handled - # ok everywhere (or should)) - # We add the S prefix to avoid that a slave interp called "Log" - # would smash our "Log" variable. - proc InterpStateName {slave} { - return "S$slave" - } + # This code assumes that info library is the first element in the + # list of auto_path's. See -> InterpSetConfig for the code which + # ensures this condition. - # Check that the given slave is "one of us" - proc IsInterp {slave} { - expr {[Exists [InterpStateName $slave]] && [::interp exists $slave]} - } + ::interp eval $slave [list \ + set tcl_library [lindex $slave_access_path 0]] +} - # returns the virtual token for directory number N - # if the slave argument is given, - # it will return the corresponding master global variable name - proc PathToken {n {slave ""}} { - if {$slave ne ""} { - return "[InterpStateName $slave](access_path,$n)" - } else { - # We need to have a ":" in the token string so - # [file join] on the mac won't turn it into a relative - # path. - return "p(:$n:)" - } - } - # returns the variable name of the complete path list - proc PathListName {slave} { - return "[InterpStateName $slave](access_path)" - } - # returns the variable name of the complete path list - proc VirtualPathListName {slave} { - return "[InterpStateName $slave](access_path_slave)" - } - # returns the variable name of the complete tm path list - proc TmPathListName {slave} { - return "[InterpStateName $slave](tm_path_slave)" - } - # returns the variable name of the number of items - proc PathNumberName {slave} { - return "[InterpStateName $slave](access_path,n)" - } - # returns the staticsok flag var name - proc StaticsOkName {slave} { - return "[InterpStateName $slave](staticsok)" - } - # returns the nestedok flag var name - proc NestedOkName {slave} { - return "[InterpStateName $slave](nestedok)" - } - # Run some code at the namespace toplevel - proc Toplevel {args} { - namespace eval [namespace current] $args - } - # set/get values - proc Set {args} { - Toplevel set {*}$args - } - # lappend on toplevel vars - proc Lappend {args} { - Toplevel lappend {*}$args - } - # unset a var/token (currently just an global level eval) - proc Unset {args} { - Toplevel unset {*}$args - } - # test existance - proc Exists {varname} { - Toplevel info exists $varname - } - # short cut for access path getting - proc GetAccessPath {slave} { - Set [PathListName $slave] - } - # short cut for statics ok flag getting - proc StaticsOk {slave} { - Set [StaticsOkName $slave] - } - # short cut for getting the multiples interps sub loading ok flag - proc NestedOk {slave} { - Set [NestedOkName $slave] - } - # interp deletion storing hook name - proc DeleteHookName {slave} { - return [InterpStateName $slave](cleanupHook) - } +# Returns the virtual token for directory number N. +proc ::safe::PathToken {n} { + # We need to have a ":" in the token string so [file join] on the + # mac won't turn it into a relative path. + return "\$p(:$n:)" ;# Form tested by case 7.2 +} - # - # translate virtual path into real path - # - proc TranslatePath {slave path} { - # somehow strip the namespaces 'functionality' out (the danger - # is that we would strip valid macintosh "../" queries... : - if {[string match "*::*" $path] || [string match "*..*" $path]} { - error "invalid characters in path $path" - } - set n [expr {[Set [PathNumberName $slave]]-1}] - for {} {$n>=0} {incr n -1} { - # fill the token virtual names with their real value - set [PathToken $n] [Set [PathToken $n $slave]] - } - # replaces the token by their value - subst -nobackslashes -nocommands $path +# +# translate virtual path into real path +# +proc ::safe::TranslatePath {slave path} { + namespace upvar ::safe S$slave state + + # somehow strip the namespaces 'functionality' out (the danger is that + # we would strip valid macintosh "../" queries... : + if {[string match "*::*" $path] || [string match "*..*" $path]} { + return -code error "invalid characters in path $path" } + # Use a cached map instead of computed local vars and subst. - # Log eventually log an error - # to enable error logging, set Log to {puts stderr} for instance - proc Log {slave msg {type ERROR}} { - variable Log - if {[info exists Log] && [llength $Log]} { - {*}$Log "$type for slave $slave : $msg" - } + return [string map $state(access_path,map) $path] +} + +# file name control (limit access to files/resources that should be a +# valid tcl source file) +proc ::safe::CheckFileName {slave file} { + # This used to limit what can be sourced to ".tcl" and forbid files + # with more than 1 dot and longer than 14 chars, but I changed that + # for 8.4 as a safe interp has enough internal protection already to + # allow sourcing anything. - hobbs + + if {![file exists $file]} { + # don't tell the file path + return -code error "no such file or directory" } + if {![file readable $file]} { + # don't tell the file path + return -code error "not readable" + } +} - # file name control (limit access to files/ressources that should be - # a valid tcl source file) - proc CheckFileName {slave file} { - # This used to limit what can be sourced to ".tcl" and forbid files - # with more than 1 dot and longer than 14 chars, but I changed that - # for 8.4 as a safe interp has enough internal protection already - # to allow sourcing anything. - hobbs +# AliasFileSubcommand handles selected subcommands of [file] in safe +# interpreters that are *almost* safe. In particular, it just acts to +# prevent discovery of what home directories exist. - if {![file exists $file]} { - # don't tell the file path - error "no such file or directory" - } +proc ::safe::AliasFileSubcommand {slave subcommand name} { + if {[string match ~* $name]} { + set name ./$name + } + tailcall ::interp invokehidden $slave tcl:file:$subcommand $name +} - if {![file readable $file]} { - # don't tell the file path - error "not readable" - } +# AliasGlob is the target of the "glob" alias in safe interpreters. + +proc ::safe::AliasGlob {slave args} { + Log $slave "GLOB ! $args" NOTICE + set cmd {} + set at 0 + array set got { + -directory 0 + -nocomplain 0 + -join 0 + -tails 0 + -- 0 } - # AliasGlob is the target of the "glob" alias in safe interpreters. + if {$::tcl_platform(platform) eq "windows"} { + set dirPartRE {^(.*)[\\/]([^\\/]*)$} + } else { + set dirPartRE {^(.*)/([^/]*)$} + } - proc AliasGlob {slave args} { - Log $slave "GLOB ! $args" NOTICE - set cmd {} - set at 0 + set dir {} + set virtualdir {} - set dir {} - set virtualdir {} - - while {$at < [llength $args]} { - switch -glob -- [set opt [lindex $args $at]] { - -nocomplain - - -join { lappend cmd $opt ; incr at } - -directory { - lappend cmd $opt ; incr at - set virtualdir [lindex $args $at] - - # get the real path from the virtual one. - if {[catch {set dir [TranslatePath $slave $virtualdir]} msg]} { - Log $slave $msg - return -code error "permission denied" - } - # check that the path is in the access path of that slave - if {[catch {DirInAccessPath $slave $dir} msg]} { - Log $slave $msg - return -code error "permission denied" - } - lappend cmd $dir ; incr at - } - pkgIndex.tcl { - # Oops, this is globbing a subdirectory in regular - # package search. That is not wanted. Abort, - # handler does catch already (because glob was not - # defined before). See package.tcl, lines 484ff in - # tclPkgUnknown. - error "unknown command glob" - } - -* { - Log $slave "Safe base rejecting glob option '$opt'" - error "Safe base rejecting glob option '$opt'" - } - default { - lappend cmd $opt ; incr at + while {$at < [llength $args]} { + switch -glob -- [set opt [lindex $args $at]] { + -nocomplain - -- - -join - -tails { + lappend cmd $opt + set got($opt) 1 + incr at + } + -types - -type { + lappend cmd -types [lindex $args [incr at]] + incr at + } + -directory { + if {$got($opt)} { + return -code error \ + {"-directory" cannot be used with "-path"} } + set got($opt) 1 + set virtualdir [lindex $args [incr at]] + incr at + } + pkgIndex.tcl { + # Oops, this is globbing a subdirectory in regular package + # search. That is not wanted. Abort, handler does catch + # already (because glob was not defined before). See + # package.tcl, lines 484ff in tclPkgUnknown. + return -code error "unknown command glob" + } + -* { + Log $slave "Safe base rejecting glob option '$opt'" + return -code error "Safe base rejecting glob option '$opt'" + } + default { + break } } + if {$got(--)} break + } - Log $slave "GLOB = $cmd" NOTICE - - if {[catch {::interp invokehidden $slave glob {*}$cmd} msg]} { + # Get the real path from the virtual one and check that the path is in the + # access path of that slave. Done after basic argument processing so that + # we know if -nocomplain is set. + if {$got(-directory)} { + try { + set dir [TranslatePath $slave $virtualdir] + DirInAccessPath $slave $dir + } on error msg { Log $slave $msg - return -code error "script error" - } - - Log $slave "GLOB @ $msg" NOTICE - - # Translate path back to what the slave should see. - set res {} - foreach p $msg { - regsub -- ^$dir $p $virtualdir p - lappend res $p + if {$got(-nocomplain)} return + return -code error "permission denied" } + lappend cmd -directory $dir + } - Log $slave "GLOB @ $res" NOTICE - return $res + # Apply the -join semantics ourselves + if {$got(-join)} { + set args [lreplace $args $at end [join [lrange $args $at end] "/"]] } - # AliasSource is the target of the "source" alias in safe interpreters. - - proc AliasSource {slave args} { - - set argc [llength $args] - # Extended for handling of Tcl Modules to allow not only - # "source filename", but "source -encoding E filename" as - # well. - if {[lindex $args 0] eq "-encoding"} { - incr argc -2 - set encoding [lrange $args 0 1] - set at 2 - } else { - set at 0 - set encoding {} + # Process remaining pattern arguments + set firstPattern [llength $cmd] + foreach opt [lrange $args $at end] { + if {![regexp $dirPartRE $opt -> thedir thefile]} { + set thedir . + } elseif {[string match ~* $thedir]} { + set thedir ./$thedir } - if {$argc != 1} { - set msg "wrong # args: should be \"source ?-encoding E? fileName\"" - Log $slave "$msg ($args)" - return -code error $msg + if {$thedir eq "*" && + ($thefile eq "pkgIndex.tcl" || $thefile eq "*.tm")} { + set mapped 0 + foreach d [glob -directory [TranslatePath $slave $virtualdir] \ + -types d -tails *] { + catch { + DirInAccessPath $slave \ + [TranslatePath $slave [file join $virtualdir $d]] + lappend cmd [file join $d $thefile] + set mapped 1 + } + } + if {$mapped} continue } - set file [lindex $args $at] - - # get the real path from the virtual one. - if {[catch {set file [TranslatePath $slave $file]} msg]} { + try { + DirInAccessPath $slave [TranslatePath $slave \ + [file join $virtualdir $thedir]] + } on error msg { Log $slave $msg + if {$got(-nocomplain)} continue return -code error "permission denied" } - - # check that the path is in the access path of that slave - if {[catch {FileInAccessPath $slave $file} msg]} { - Log $slave $msg - return -code error "permission denied" + lappend cmd $opt + } + + Log $slave "GLOB = $cmd" NOTICE + + if {$got(-nocomplain) && [llength $cmd] eq $firstPattern} { + return + } + try { + set entries [::interp invokehidden $slave glob {*}$cmd] + } on error msg { + Log $slave $msg + return -code error "script error" + } + + Log $slave "GLOB < $entries" NOTICE + + # Translate path back to what the slave should see. + set res {} + set l [string length $dir] + foreach p $entries { + if {[string equal -length $l $dir $p]} { + set p [string replace $p 0 [expr {$l-1}] $virtualdir] } + lappend res $p + } - # do the checks on the filename : - if {[catch {CheckFileName $slave $file} msg]} { - Log $slave "$file:$msg" - return -code error $msg + Log $slave "GLOB > $res" NOTICE + return $res +} + +# AliasSource is the target of the "source" alias in safe interpreters. + +proc ::safe::AliasSource {slave args} { + set argc [llength $args] + # Extended for handling of Tcl Modules to allow not only "source + # filename", but "source -encoding E filename" as well. + if {[lindex $args 0] eq "-encoding"} { + incr argc -2 + set encoding [lindex $args 1] + set at 2 + if {$encoding eq "identity"} { + Log $slave "attempt to use the identity encoding" + return -code error "permission denied" } + } else { + set at 0 + set encoding {} + } + if {$argc != 1} { + set msg "wrong # args: should be \"source ?-encoding E? fileName\"" + Log $slave "$msg ($args)" + return -code error $msg + } + set file [lindex $args $at] + + # get the real path from the virtual one. + if {[catch { + set realfile [TranslatePath $slave $file] + } msg]} { + Log $slave $msg + return -code error "permission denied" + } + + # check that the path is in the access path of that slave + if {[catch { + FileInAccessPath $slave $realfile + } msg]} { + Log $slave $msg + return -code error "permission denied" + } - # passed all the tests , lets source it: - if {[catch {::interp invokehidden $slave source {*}$encoding $file} msg]} { - Log $slave $msg - return -code error "script error" + # do the checks on the filename : + if {[catch { + CheckFileName $slave $realfile + } msg]} { + Log $slave "$realfile:$msg" + return -code error $msg + } + + # Passed all the tests, lets source it. Note that we do this all manually + # because we want to control [info script] in the slave so information + # doesn't leak so much. [Bug 2913625] + set old [::interp eval $slave {info script}] + set replacementMsg "script error" + set code [catch { + set f [open $realfile] + fconfigure $f -eofchar \032 + if {$encoding ne ""} { + fconfigure $f -encoding $encoding } - return $msg + set contents [read $f] + close $f + ::interp eval $slave [list info script $file] + } msg opt] + if {$code == 0} { + set code [catch {::interp eval $slave $contents} msg opt] + set replacementMsg $msg + } + catch {interp eval $slave [list info script $old]} + # Note that all non-errors are fine result codes from [source], so we must + # take a little care to do it properly. [Bug 2923613] + if {$code == 1} { + Log $slave $msg + return -code error $replacementMsg } + return -code $code -options $opt $msg +} - # AliasLoad is the target of the "load" alias in safe interpreters. +# AliasLoad is the target of the "load" alias in safe interpreters. - proc AliasLoad {slave file args} { +proc ::safe::AliasLoad {slave file args} { + set argc [llength $args] + if {$argc > 2} { + set msg "load error: too many arguments" + Log $slave "$msg ($argc) {$file $args}" + return -code error $msg + } - set argc [llength $args] - if {$argc > 2} { - set msg "load error: too many arguments" - Log $slave "$msg ($argc) {$file $args}" - return -code error $msg - } + # package name (can be empty if file is not). + set package [lindex $args 0] + + namespace upvar ::safe S$slave state - # package name (can be empty if file is not). - set package [lindex $args 0] - - # Determine where to load. load use a relative interp path - # and {} means self, so we can directly and safely use passed arg. - set target [lindex $args 1] - if {$target ne ""} { - # we will try to load into a sub sub interp - # check that we want to authorize that. - if {![NestedOk $slave]} { - Log $slave "loading to a sub interp (nestedok)\ + # Determine where to load. load use a relative interp path and {} + # means self, so we can directly and safely use passed arg. + set target [lindex $args 1] + if {$target ne ""} { + # we will try to load into a sub sub interp; check that we want to + # authorize that. + if {!$state(nestedok)} { + Log $slave "loading to a sub interp (nestedok)\ disabled (trying to load $package to $target)" - return -code error "permission denied (nested load)" - } - + return -code error "permission denied (nested load)" } + } - # Determine what kind of load is requested - if {$file eq ""} { - # static package loading - if {$package eq ""} { - set msg "load error: empty filename and no package name" - Log $slave $msg - return -code error $msg - } - if {![StaticsOk $slave]} { - Log $slave "static packages loading disabled\ + # Determine what kind of load is requested + if {$file eq ""} { + # static package loading + if {$package eq ""} { + set msg "load error: empty filename and no package name" + Log $slave $msg + return -code error $msg + } + if {!$state(staticsok)} { + Log $slave "static packages loading disabled\ (trying to load $package to $target)" - return -code error "permission denied (static package)" - } - } else { - # file loading - - # get the real path from the virtual one. - if {[catch {set file [TranslatePath $slave $file]} msg]} { - Log $slave $msg - return -code error "permission denied" - } - - # check the translated path - if {[catch {FileInAccessPath $slave $file} msg]} { - Log $slave $msg - return -code error "permission denied (path)" - } + return -code error "permission denied (static package)" } + } else { + # file loading - if {[catch {::interp invokehidden\ - $slave load $file $package $target} msg]} { + # get the real path from the virtual one. + try { + set file [TranslatePath $slave $file] + } on error msg { Log $slave $msg - return -code error $msg + return -code error "permission denied" } - return $msg + # check the translated path + try { + FileInAccessPath $slave $file + } on error msg { + Log $slave $msg + return -code error "permission denied (path)" + } } - # FileInAccessPath raises an error if the file is not found in - # the list of directories contained in the (master side recorded) slave's - # access path. + try { + return [::interp invokehidden $slave load $file $package $target] + } on error msg { + Log $slave $msg + return -code error $msg + } +} - # the security here relies on "file dirname" answering the proper - # result.... needs checking ? - proc FileInAccessPath {slave file} { +# FileInAccessPath raises an error if the file is not found in the list of +# directories contained in the (master side recorded) slave's access path. - set access_path [GetAccessPath $slave] +# the security here relies on "file dirname" answering the proper +# result... needs checking ? +proc ::safe::FileInAccessPath {slave file} { + namespace upvar ::safe S$slave state + set access_path $state(access_path) - if {[file isdirectory $file]} { - error "\"$file\": is a directory" - } - set parent [file dirname $file] + if {[file isdirectory $file]} { + return -code error "\"$file\": is a directory" + } + set parent [file dirname $file] - # Normalize paths for comparison since lsearch knows nothing of - # potential pathname anomalies. - set norm_parent [file normalize $parent] - foreach path $access_path { - lappend norm_access_path [file normalize $path] - } + # Normalize paths for comparison since lsearch knows nothing of + # potential pathname anomalies. + set norm_parent [file normalize $parent] - if {[lsearch -exact $norm_access_path $norm_parent] == -1} { - error "\"$file\": not in access_path" - } + namespace upvar ::safe S$slave state + if {$norm_parent ni $state(access_path,norm)} { + return -code error "\"$file\": not in access_path" } +} - proc DirInAccessPath {slave dir} { - set access_path [GetAccessPath $slave] +proc ::safe::DirInAccessPath {slave dir} { + namespace upvar ::safe S$slave state + set access_path $state(access_path) - if {[file isfile $dir]} { - error "\"$dir\": is a file" - } + if {[file isfile $dir]} { + return -code error "\"$dir\": is a file" + } - # Normalize paths for comparison since lsearch knows nothing of - # potential pathname anomalies. - set norm_dir [file normalize $dir] - foreach path $access_path { - lappend norm_access_path [file normalize $path] - } + # Normalize paths for comparison since lsearch knows nothing of + # potential pathname anomalies. + set norm_dir [file normalize $dir] - if {[lsearch -exact $norm_access_path $norm_dir] == -1} { - error "\"$dir\": not in access_path" - } + namespace upvar ::safe S$slave state + if {$norm_dir ni $state(access_path,norm)} { + return -code error "\"$dir\": not in access_path" } +} - # This procedure enables access from a safe interpreter to only a subset of - # the subcommands of a command: +# This procedure is used to report an attempt to use an unsafe member of an +# ensemble command. - proc Subset {slave command okpat args} { - set subcommand [lindex $args 0] - if {[regexp $okpat $subcommand]} { - return [$command {*}$args] +proc ::safe::BadSubcommand {slave command subcommand args} { + set msg "not allowed to invoke subcommand $subcommand of $command" + Log $slave $msg + return -code error -errorcode {TCL SAFE SUBCOMMAND} $msg +} + +# AliasEncoding is the target of the "encoding" alias in safe interpreters. + +proc ::safe::AliasEncoding {slave option args} { + # Note that [encoding dirs] is not supported in safe slaves at all + set subcommands {convertfrom convertto names system} + try { + set option [tcl::prefix match -error [list -level 1 -errorcode \ + [list TCL LOOKUP INDEX option $option]] $subcommands $option] + # Special case: [encoding system] ok, but [encoding system foo] not + if {$option eq "system" && [llength $args]} { + return -code error -errorcode {TCL WRONGARGS} \ + "wrong # args: should be \"encoding system\"" } - set msg "not allowed to invoke subcommand $subcommand of $command" + } on error {msg options} { Log $slave $msg - error $msg + return -options $options $msg } + tailcall ::interp invokehidden $slave encoding $option {*}$args +} - # This procedure installs an alias in a slave that invokes "safesubset" - # in the master to execute allowed subcommands. It precomputes the pattern - # of allowed subcommands; you can use wildcards in the pattern if you wish - # to allow subcommand abbreviation. +# Various minor hiding of platform features. [Bug 2913625] + +proc ::safe::AliasExeName {slave} { + return "" +} + +proc ::safe::Setup {} { + #### # - # Syntax is: AliasSubset slave alias target subcommand1 subcommand2... + # Setup the arguments parsing + # + #### - proc AliasSubset {slave alias target args} { - set pat ^(; set sep "" - foreach sub $args { - append pat $sep$sub - set sep | - } - append pat )\$ - ::interp alias $slave $alias {}\ - [namespace current]::Subset $slave $target $pat - } + # Share the descriptions + set temp [::tcl::OptKeyRegister { + {-accessPath -list {} "access path for the slave"} + {-noStatics "prevent loading of statically linked pkgs"} + {-statics true "loading of statically linked pkgs"} + {-nestedLoadOk "allow nested loading"} + {-nested false "nested loading"} + {-deleteHook -script {} "delete hook"} + }] - # AliasEncoding is the target of the "encoding" alias in safe interpreters. + # create case (slave is optional) + ::tcl::OptKeyRegister { + {?slave? -name {} "name of the slave (optional)"} + } ::safe::interpCreate - proc AliasEncoding {slave args} { + # adding the flags sub programs to the command program (relying on Opt's + # internal implementation details) + lappend ::tcl::OptDesc(::safe::interpCreate) $::tcl::OptDesc($temp) - set argc [llength $args] + # init and configure (slave is needed) + ::tcl::OptKeyRegister { + {slave -name {} "name of the slave"} + } ::safe::interpIC - set okpat "^(name.*|convert.*)\$" - set subcommand [lindex $args 0] + # adding the flags sub programs to the command program (relying on Opt's + # internal implementation details) + lappend ::tcl::OptDesc(::safe::interpIC) $::tcl::OptDesc($temp) - if {[regexp $okpat $subcommand]} { - return [::interp invokehidden $slave encoding {*}$args] - } + # temp not needed anymore + ::tcl::OptKeyDelete $temp - if {[string first $subcommand system] == 0} { - if {$argc == 1} { - # passed all the tests , lets source it: - if {[catch {::interp invokehidden \ - $slave encoding system} msg]} { - Log $slave $msg - return -code error "script error" - } - } else { - set msg "wrong # args: should be \"encoding system\"" - Log $slave $msg - error $msg - } - } else { - set msg "wrong # args: should be \"encoding option ?arg ...?\"" - Log $slave $msg - error $msg - } + #### + # + # Default: No logging. + # + #### - return $msg - } + setLogCmd {} + # Log eventually. + # To enable error logging, set Log to {puts stderr} for instance, + # via setLogCmd. + return } + +namespace eval ::safe { + # internal variables + + # Log command, set via 'setLogCmd'. Logging is disabled when empty. + variable Log {} + + # The package maintains a state array per slave interp under its + # control. The name of this array is S<interp-name>. This array is + # brought into scope where needed, using 'namespace upvar'. The S + # prefix is used to avoid that a slave interp called "Log" smashes + # the "Log" variable. + # + # The array's elements are: + # + # access_path : List of paths accessible to the slave. + # access_path,norm : Ditto, in normalized form. + # access_path,slave : Ditto, as the path tokens as seen by the slave. + # access_path,map : dict ( token -> path ) + # access_path,remap : dict ( path -> token ) + # tm_path_slave : List of TM root directories, as tokens seen by the slave. + # staticsok : Value of option -statics + # nestedok : Value of option -nested + # cleanupHook : Value of option -deleteHook +} + +::safe::Setup diff --git a/library/tclIndex b/library/tclIndex index 010616f..26603c1 100644 --- a/library/tclIndex +++ b/library/tclIndex @@ -1,4 +1,5 @@ # Tcl autoload index file, version 2.0 +# -*- tcl -*- # This file is generated by the "auto_mkindex" command # and sourced to set up indexing information for one or # more commands. Typically each line is a command that @@ -48,29 +49,15 @@ set auto_index(::safe::AddSubDirs) [list source [file join $dir safe.tcl]] set auto_index(::safe::interpDelete) [list source [file join $dir safe.tcl]] set auto_index(::safe::setLogCmd) [list source [file join $dir safe.tcl]] set auto_index(::safe::SyncAccessPath) [list source [file join $dir safe.tcl]] -set auto_index(::safe::InterpStateName) [list source [file join $dir safe.tcl]] -set auto_index(::safe::IsInterp) [list source [file join $dir safe.tcl]] set auto_index(::safe::PathToken) [list source [file join $dir safe.tcl]] -set auto_index(::safe::PathListName) [list source [file join $dir safe.tcl]] -set auto_index(::safe::VirtualPathListName) [list source [file join $dir safe.tcl]] -set auto_index(::safe::PathNumberName) [list source [file join $dir safe.tcl]] -set auto_index(::safe::StaticsOkName) [list source [file join $dir safe.tcl]] -set auto_index(::safe::NestedOkName) [list source [file join $dir safe.tcl]] -set auto_index(::safe::Toplevel) [list source [file join $dir safe.tcl]] -set auto_index(::safe::Set) [list source [file join $dir safe.tcl]] -set auto_index(::safe::Lappend) [list source [file join $dir safe.tcl]] -set auto_index(::safe::Unset) [list source [file join $dir safe.tcl]] -set auto_index(::safe::Exists) [list source [file join $dir safe.tcl]] -set auto_index(::safe::GetAccessPath) [list source [file join $dir safe.tcl]] -set auto_index(::safe::StaticsOk) [list source [file join $dir safe.tcl]] -set auto_index(::safe::NestedOk) [list source [file join $dir safe.tcl]] -set auto_index(::safe::DeleteHookName) [list source [file join $dir safe.tcl]] set auto_index(::safe::TranslatePath) [list source [file join $dir safe.tcl]] set auto_index(::safe::Log) [list source [file join $dir safe.tcl]] set auto_index(::safe::CheckFileName) [list source [file join $dir safe.tcl]] +set auto_index(::safe::AliasGlob) [list source [file join $dir safe.tcl]] set auto_index(::safe::AliasSource) [list source [file join $dir safe.tcl]] set auto_index(::safe::AliasLoad) [list source [file join $dir safe.tcl]] set auto_index(::safe::FileInAccessPath) [list source [file join $dir safe.tcl]] +set auto_index(::safe::DirInAccessPath) [list source [file join $dir safe.tcl]] set auto_index(::safe::Subset) [list source [file join $dir safe.tcl]] set auto_index(::safe::AliasSubset) [list source [file join $dir safe.tcl]] set auto_index(::safe::AliasEncoding) [list source [file join $dir safe.tcl]] @@ -82,6 +69,7 @@ set auto_index(tcl_startOfPreviousWord) [list source [file join $dir word.tcl]] set auto_index(::tcl::tm::add) [list source [file join $dir tm.tcl]] set auto_index(::tcl::tm::remove) [list source [file join $dir tm.tcl]] set auto_index(::tcl::tm::list) [list source [file join $dir tm.tcl]] +set auto_index(::tcl::tm::Defaults) [list source [file join $dir tm.tcl]] set auto_index(::tcl::tm::UnknownHandler) [list source [file join $dir tm.tcl]] set auto_index(::tcl::tm::roots) [list source [file join $dir tm.tcl]] set auto_index(::tcl::tm::path) [list source [file join $dir tm.tcl]] diff --git a/library/tcltest/pkgIndex.tcl b/library/tcltest/pkgIndex.tcl index f062cde..c99ad2a 100644 --- a/library/tcltest/pkgIndex.tcl +++ b/library/tcltest/pkgIndex.tcl @@ -9,4 +9,4 @@ # full path name of this file's directory. if {![package vsatisfies [package provide Tcl] 8.5]} {return} -package ifneeded tcltest 2.3.0 [list source [file join $dir tcltest.tcl]] +package ifneeded tcltest 2.3.7 [list source [file join $dir tcltest.tcl]] diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index d799eb0..4b94312 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -15,8 +15,6 @@ # Copyright (c) 2000 by Ajuba Solutions # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. -# -# RCS: @(#) $Id: tcltest.tcl,v 1.103 2007/12/13 15:26:03 dgp Exp $ package require Tcl 8.5 ;# -verbose line uses [info frame] namespace eval tcltest { @@ -24,7 +22,7 @@ namespace eval tcltest { # When the version number changes, be sure to update the pkgIndex.tcl file, # and the install directory in the Makefiles. When the minor version # changes (new feature) be sure to update the man page as well. - variable Version 2.3.0 + variable Version 2.3.7 # Compatibility support for dumb variables defined in tcltest 1 # Do not use these. Call [package provide Tcl] and [info patchlevel] @@ -86,7 +84,7 @@ namespace eval tcltest { # None. # proc normalizePath {pathVar} { - upvar $pathVar path + upvar 1 $pathVar path set oldpwd [pwd] catch {cd $path} set path [pwd] @@ -249,15 +247,15 @@ namespace eval tcltest { # Kept only for compatibility Default constraintsSpecified {} AcceptList - trace variable constraintsSpecified r {set ::tcltest::constraintsSpecified \ - [array names ::tcltest::testConstraints] ;# } + trace add variable constraintsSpecified read [namespace code { + set constraintsSpecified [array names testConstraints] ;#}] # tests that use threads need to know which is the main thread Default mainThread 1 variable mainThread - if {[info commands thread::id] != {}} { + if {[info commands thread::id] ne {}} { set mainThread [thread::id] - } elseif {[info commands testthread] != {}} { + } elseif {[info commands testthread] ne {}} { set mainThread [testthread id] } @@ -265,7 +263,7 @@ namespace eval tcltest { # Tcl tests is the working directory. Whenever this value changes # change to that directory. variable workingDirectory - trace variable workingDirectory w \ + trace add variable workingDirectory write \ [namespace code {cd $workingDirectory ;#}] Default workingDirectory [pwd] AcceptAbsolutePath @@ -279,7 +277,7 @@ namespace eval tcltest { # Set the location of the execuatble Default tcltest [info nameofexecutable] - trace variable tcltest w [namespace code {testConstraint stdio \ + trace add variable tcltest write [namespace code {testConstraint stdio \ [eval [ConstraintInitializer stdio]] ;#}] # save the platform information so it can be restored later @@ -406,11 +404,11 @@ namespace eval tcltest { # already there. set outdir [normalizePath [file dirname \ [file join [pwd] $filename]]] - if {[string equal $outdir [temporaryDirectory]]} { + if {$outdir eq [temporaryDirectory]} { variable filesExisted FillFilesExisted set filename [file tail $filename] - if {[lsearch -exact $filesExisted $filename] == -1} { + if {$filename ni $filesExisted} { lappend filesExisted $filename } } @@ -450,11 +448,11 @@ namespace eval tcltest { # already there. set outdir [normalizePath [file dirname \ [file join [pwd] $filename]]] - if {[string equal $outdir [temporaryDirectory]]} { + if {$outdir eq [temporaryDirectory]} { variable filesExisted FillFilesExisted set filename [file tail $filename] - if {[lsearch -exact $filesExisted $filename] == -1} { + if {$filename ni $filesExisted} { lappend filesExisted $filename } } @@ -485,8 +483,10 @@ namespace eval tcltest { variable Verify variable Usage variable OptionControlledVariables + variable DefaultValue set Usage($option) $usage set Verify($option) $verify + set DefaultValue($option) $value if {[catch {$verify $value} msg]} { return -code error $msg } else { @@ -534,7 +534,7 @@ namespace eval tcltest { } default { # Exact match trumps ambiguity - if {[lsearch -exact $match $option] >= 0} { + if {$option in $match} { return $option } set values [join [lrange $match 0 end-1] ", "] @@ -549,7 +549,8 @@ namespace eval tcltest { variable OptionControlledVariables foreach varName [concat $OptionControlledVariables Option] { variable $varName - trace variable $varName r [namespace code {ProcessCmdLineArgs ;#}] + trace add variable $varName read [namespace code { + ProcessCmdLineArgs ;#}] } } @@ -557,11 +558,11 @@ namespace eval tcltest { variable OptionControlledVariables foreach varName [concat $OptionControlledVariables Option] { variable $varName - foreach pair [trace vinfo $varName] { - foreach {op cmd} $pair break - if {[string equal r $op] - && [string match *ProcessCmdLineArgs* $cmd]} { - trace vdelete $varName $op $cmd + foreach pair [trace info variable $varName] { + lassign $pair op cmd + if {($op eq "read") && + [string match *ProcessCmdLineArgs* $cmd]} { + trace remove variable $varName $op $cmd } } } @@ -601,8 +602,10 @@ namespace eval tcltest { } } proc configure args { - RemoveAutoConfigureTraces - set code [catch {eval Configure $args} msg] + if {[llength $args] > 1} { + RemoveAutoConfigureTraces + } + set code [catch {Configure {*}$args} msg] return -code $code $msg } @@ -696,7 +699,7 @@ namespace eval tcltest { Option -constraints {} { Do not skip the listed constraints listed in -constraints. } AcceptList - trace variable Option(-constraints) w \ + trace add variable Option(-constraints) write \ [namespace code {SetSelectedConstraints ;#}] # Don't run only the "-constraint" specified tests by default @@ -705,15 +708,15 @@ namespace eval tcltest { variable testConstraints if {!$Option(-limitconstraints)} {return} foreach c [array names testConstraints] { - if {[lsearch -exact $Option(-constraints) $c] == -1} { + if {$c ni $Option(-constraints)} { testConstraint $c 0 } } } - Option -limitconstraints false { + Option -limitconstraints 0 { whether to run only tests with the constraints } AcceptBoolean limitConstraints - trace variable Option(-limitconstraints) w \ + trace add variable Option(-limitconstraints) write \ [namespace code {ClearUnselectedConstraints ;#}] # A test application has to know how to load the tested commands @@ -734,7 +737,7 @@ namespace eval tcltest { } set directory [AcceptDirectory $directory] if {![file writable $directory]} { - if {[string equal [workingDirectory] $directory]} { + if {[workingDirectory] eq $directory} { # Special exception: accept the default value # even if the directory is not writable return $directory @@ -748,7 +751,7 @@ namespace eval tcltest { Option -tmpdir [workingDirectory] { Save temporary files in the specified directory. } AcceptTemporaryDirectory temporaryDirectory - trace variable Option(-tmpdir) w \ + trace add variable Option(-tmpdir) write \ [namespace code {normalizePath Option(-tmpdir) ;#}] # Tests should not rely on the current working directory. @@ -757,17 +760,17 @@ namespace eval tcltest { Option -testdir [workingDirectory] { Search tests in the specified directory. } AcceptDirectory testsDirectory - trace variable Option(-testdir) w \ + trace add variable Option(-testdir) write \ [namespace code {normalizePath Option(-testdir) ;#}] proc AcceptLoadFile { file } { - if {[string equal "" $file]} {return $file} + if {$file eq {}} {return $file} set file [file join [temporaryDirectory] $file] return [AcceptReadable $file] } proc ReadLoadScript {args} { variable Option - if {[string equal "" $Option(-loadfile)]} {return} + if {$Option(-loadfile) eq {}} {return} set tmp [open $Option(-loadfile) r] loadScript [read $tmp] close $tmp @@ -775,7 +778,7 @@ namespace eval tcltest { Option -loadfile {} { Read the script to load the tested commands from the specified file. } AcceptLoadFile loadFile - trace variable Option(-loadfile) w [namespace code ReadLoadScript] + trace add variable Option(-loadfile) write [namespace code ReadLoadScript] proc AcceptOutFile { file } { if {[string equal stderr $file]} {return $file} @@ -787,16 +790,39 @@ namespace eval tcltest { Option -outfile stdout { Send output from test runs to the specified file. } AcceptOutFile outputFile - trace variable Option(-outfile) w \ + trace add variable Option(-outfile) write \ [namespace code {outputChannel $Option(-outfile) ;#}] # errors go to stderr by default Option -errfile stderr { Send errors from test runs to the specified file. } AcceptOutFile errorFile - trace variable Option(-errfile) w \ + trace add variable Option(-errfile) write \ [namespace code {errorChannel $Option(-errfile) ;#}] + proc loadIntoSlaveInterpreter {slave args} { + variable Version + interp eval $slave [package ifneeded tcltest $Version] + interp eval $slave "tcltest::configure {*}{$args}" + interp alias $slave ::tcltest::ReportToMaster \ + {} ::tcltest::ReportedFromSlave + } + proc ReportedFromSlave {total passed skipped failed because newfiles} { + variable numTests + variable skippedBecause + variable createdNewFiles + incr numTests(Total) $total + incr numTests(Passed) $passed + incr numTests(Skipped) $skipped + incr numTests(Failed) $failed + foreach {constraint count} $because { + incr skippedBecause($constraint) $count + } + foreach {testfile created} $newfiles { + lappend createdNewFiles($testfile) {*}$created + } + return + } } ##################################################################### @@ -852,7 +878,7 @@ proc tcltest::DebugPArray {level arrayvar} { variable debug if {$debug >= $level} { - catch {upvar $arrayvar $arrayvar} + catch {upvar 1 $arrayvar $arrayvar} parray $arrayvar } return @@ -936,8 +962,7 @@ proc tcltest::testConstraint {constraint {value ""}} { if {[catch {expr {$value && $value}} msg]} { return -code error $msg } - if {[limitConstraints] - && [lsearch -exact $Option(-constraints) $constraint] == -1} { + if {[limitConstraints] && ($constraint ni $Option(-constraints))} { set value 0 } set testConstraints($constraint) $value @@ -961,11 +986,7 @@ proc tcltest::interpreter { {interp ""} } { if {[llength [info level 0]] == 1} { return $tcltest } - if {[string equal {} $interp]} { - set tcltest {} - } else { - set tcltest $interp - } + set tcltest $interp } ##################################################################### @@ -1030,7 +1051,7 @@ proc tcltest::PrintError {errorMsg} { [expr {80 - $InitialMsgLen}]]] puts [errorChannel] [string range $errorMsg 0 $beginningIndex] - while {![string equal end $beginningIndex]} { + while {$beginningIndex ne "end"} { puts -nonewline [errorChannel] \ [string repeat " " $InitialMsgLen] if {($endingIndex - $beginningIndex) @@ -1083,7 +1104,7 @@ proc tcltest::PrintError {errorMsg} { proc tcltest::SafeFetch {n1 n2 op} { variable testConstraints DebugPuts 3 "entering SafeFetch $n1 $n2 $op" - if {[string equal {} $n2]} {return} + if {$n2 eq {}} {return} if {![info exists testConstraints($n2)]} { if {[catch {testConstraint $n2 [eval [ConstraintInitializer $n2]]}]} { testConstraint $n2 0 @@ -1228,9 +1249,8 @@ proc tcltest::DefineConstraintInitializers {} { # are running as root on Unix. ConstraintInitializer root {expr \ - {[string equal unix $::tcl_platform(platform)] - && ([string equal root $::tcl_platform(user)] - || [string equal "" $::tcl_platform(user)])}} + {($::tcl_platform(platform) eq "unix") && + ($::tcl_platform(user) in {root {}})}} ConstraintInitializer notRoot {expr {![testConstraint root]}} # Set nonBlockFiles constraint: 1 means this platform supports @@ -1238,7 +1258,7 @@ proc tcltest::DefineConstraintInitializers {} { ConstraintInitializer nonBlockFiles { set code [expr {[catch {set f [open defs r]}] - || [catch {fconfigure $f -blocking off}]}] + || [catch {chan configure $f -blocking off}]}] catch {close $f} set code } @@ -1264,10 +1284,10 @@ proc tcltest::DefineConstraintInitializers {} { ConstraintInitializer unixExecs { set code 1 - if {[string equal macintosh $::tcl_platform(platform)]} { + if {$::tcl_platform(platform) eq "macintosh"} { set code 0 } - if {[string equal windows $::tcl_platform(platform)]} { + if {$::tcl_platform(platform) eq "windows"} { if {[catch { set file _tcl_test_remove_me.txt makeFile {hello} $file @@ -1361,7 +1381,7 @@ proc tcltest::Usage { {option ""} } { set allOpts [concat -help [Configure]] foreach opt $allOpts { set foo [Usage $opt] - foreach [list x type($opt) usage($opt)] $foo break + lassign $foo x type($opt) usage($opt) set line($opt) " $opt $type($opt) " set length($opt) [string length $line($opt)] if {$length($opt) > $max} {set max $length($opt)} @@ -1385,7 +1405,7 @@ proc tcltest::Usage { {option ""} } { append msg $u } return $msg\n - } elseif {[string equal -help $option]} { + } elseif {$option eq "-help"} { return [list -help "" "Display this usage information."] } else { set type [lindex [info args $Verify($option)] 0] @@ -1411,7 +1431,7 @@ proc tcltest::Usage { {option ""} } { proc tcltest::ProcessFlags {flagArray} { # Process -help first - if {[lsearch -exact $flagArray {-help}] != -1} { + if {"-help" in $flagArray} { PrintUsageInfo exit 1 } @@ -1420,14 +1440,14 @@ proc tcltest::ProcessFlags {flagArray} { RemoveAutoConfigureTraces } else { set args $flagArray - while {[llength $args]>1 && [catch {eval configure $args} msg]} { + while {[llength $args] > 1 && [catch {configure {*}$args} msg]} { # Something went wrong parsing $args for tcltest options # Check whether the problem is "unknown option" if {[regexp {^unknown option (\S+):} $msg -> option]} { # Could be this is an option the Hook knows about set moreOptions [processCmdLineArgsAddFlagsHook] - if {[lsearch -exact $moreOptions $option] == -1} { + if {$option ni $moreOptions} { # Nope. Report the error, including additional options, # but keep going if {[llength $moreOptions]} { @@ -1446,7 +1466,7 @@ proc tcltest::ProcessFlags {flagArray} { # To recover, find that unknown option and remove up to it. # then retry - while {![string equal [lindex $args 0] $option]} { + while {[lindex $args 0] ne $option} { set args [lrange $args 2 end] } set args [lrange $args 2 end] @@ -1552,7 +1572,7 @@ proc tcltest::Replace::puts {args} { } 2 { # Either -nonewline or channelId has been specified - if {[string equal -nonewline [lindex $args 0]]} { + if {[lindex $args 0] eq "-nonewline"} { append outData [lindex $args end] return # return [Puts -nonewline [lindex $args end]] @@ -1562,7 +1582,7 @@ proc tcltest::Replace::puts {args} { } } 3 { - if {[string equal -nonewline [lindex $args 0]]} { + if {[lindex $args 0] eq "-nonewline"} { # Both -nonewline and channelId are specified, unless # it's an error. -nonewline is supposed to be argv[0]. set channel [lindex $args 1] @@ -1572,12 +1592,10 @@ proc tcltest::Replace::puts {args} { } if {[info exists channel]} { - if {[string equal $channel [[namespace parent]::outputChannel]] - || [string equal $channel stdout]} { + if {$channel in [list [[namespace parent]::outputChannel] stdout]} { append outData [lindex $args end]$newline return - } elseif {[string equal $channel [[namespace parent]::errorChannel]] - || [string equal $channel stderr]} { + } elseif {$channel in [list [[namespace parent]::errorChannel] stderr]} { append errData [lindex $args end]$newline return } @@ -1585,7 +1603,7 @@ proc tcltest::Replace::puts {args} { # If we haven't returned by now, we don't know how to handle the # input. Let puts handle it. - return [eval Puts $args] + return [Puts {*}$args] } # tcltest::Eval -- @@ -1746,7 +1764,7 @@ proc tcltest::SubstArguments {argList} { set argList {} } - if {$token != {}} { + if {$token ne {}} { # If we saw a word with quote before, then there is a # multi-word token starting with that word. In this case, # add the text and the current word to this token. @@ -1853,10 +1871,7 @@ proc tcltest::test {name description args} { # Pre-define everything to null except output and errorOutput. We # determine whether or not to trap output based on whether or not # these variables (output & errorOutput) are defined. - foreach item {constraints setup cleanup body result returnCodes - match} { - set $item {} - } + lassign {} constraints setup cleanup body result returnCodes match # Set the default match mode set match exact @@ -1868,8 +1883,7 @@ proc tcltest::test {name description args} { # The old test format can't have a 3rd argument (constraints or # script) that starts with '-'. - if {[string match -* [lindex $args 0]] - || ([llength $args] <= 1)} { + if {[string match -* [lindex $args 0]] || ([llength $args] <= 1)} { if {[llength $args] == 1} { set list [SubstArguments [lindex $args 0]] foreach {element value} $list { @@ -1890,7 +1904,7 @@ proc tcltest::test {name description args} { -match -output -errorOutput -constraints} foreach flag [array names testAttributes] { - if {[lsearch -exact $validFlags $flag] == -1} { + if {$flag ni $validFlags} { incr testLevel -1 set sorted [lsort $validFlags] set options [join [lrange $sorted 0 end-1] ", "] @@ -1906,7 +1920,7 @@ proc tcltest::test {name description args} { # Check the values supplied for -match variable CustomMatch - if {[lsearch [array names CustomMatch] $match] == -1} { + if {$match ni [array names CustomMatch]} { incr testLevel -1 set sorted [lsort [array names CustomMatch]] set values [join [lrange $sorted 0 end-1] ", "] @@ -1970,7 +1984,7 @@ proc tcltest::test {name description args} { } else { set testResult [uplevel 1 [list [namespace origin Eval] $command 1]] } - foreach {actualAnswer returnCode} $testResult break + lassign $testResult actualAnswer returnCode if {$returnCode == 1} { set errorInfo(body) $::errorInfo set errorCode(body) $::errorCode @@ -2006,11 +2020,11 @@ proc tcltest::test {name description args} { if {([preserveCore] > 1) && ($coreFailure)} { append coreMsg "\nMoving file to:\ [file join [temporaryDirectory] core-$name]" - catch {file rename -force \ + catch {file rename -force -- \ [file join [workingDirectory] core] \ [file join [temporaryDirectory] core-$name] } msg - if {[string length $msg] > 0} { + if {$msg ne {}} { append coreMsg "\nError:\ Problem renaming core file: $msg" } @@ -2020,7 +2034,7 @@ proc tcltest::test {name description args} { # check if the return code matched the expected return code set codeFailure 0 - if {!$setupFailure && [lsearch -exact $returnCodes $returnCode] == -1} { + if {!$setupFailure && ($returnCode ni $returnCodes)} { set codeFailure 1 } @@ -2099,12 +2113,12 @@ proc tcltest::test {name description args} { set testFd [open $testFile r] set testLine [expr {[lsearch -regexp \ [split [read $testFd] "\n"] \ - "^\[ \t\]*test [string map {. \\.} $name] "]+1}] + "^\[ \t\]*test [string map {. \\.} $name] "] + 1}] close $testFd } } if {[info exists testLine]} { - puts [outputChannel] "$testFile:$testLine: test failed:\ + puts [outputChannel] "$testFile:$testLine: error: test failed:\ $name [string trim $description]" } } @@ -2144,7 +2158,7 @@ proc tcltest::test {name description args} { puts [outputChannel] "---- Return code should have been\ one of: $returnCodes" if {[IsVerbose error]} { - if {[info exists errorInfo(body)] && ([lsearch $returnCodes 1]<0)} { + if {[info exists errorInfo(body)] && (1 ni $returnCodes)} { puts [outputChannel] "---- errorInfo: $errorInfo(body)" puts [outputChannel] "---- errorCode: $errorCode(body)" } @@ -2225,7 +2239,7 @@ proc tcltest::Skipped {name constraints} { } return 1 } - if {[string equal {} $constraints]} { + if {$constraints eq {}} { # If we're limited to the listed constraints and there aren't # any listed, then we shouldn't run the test. if {[limitConstraints]} { @@ -2242,12 +2256,12 @@ proc tcltest::Skipped {name constraints} { set doTest 0 if {[string match {*[$\[]*} $constraints] != 0} { # full expression, e.g. {$foo > [info tclversion]} - catch {set doTest [uplevel #0 expr $constraints]} + catch {set doTest [uplevel #0 [list expr $constraints]]} } elseif {[regexp {[^.:_a-zA-Z0-9 \n\r\t]+} $constraints] != 0} { # something like {a || b} should be turned into # $testConstraints(a) || $testConstraints(b). regsub -all {[.\w]+} $constraints {$testConstraints(&)} c - catch {set doTest [eval expr $c]} + catch {set doTest [eval [list expr $c]]} } elseif {![catch {llength $constraints}]} { # just simple constraints such as {unixOnly fonts}. set doTest 1 @@ -2356,6 +2370,14 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} { FillFilesExisted set testFileName [file tail [info script]] + # Hook to handle reporting to a parent interpreter + if {[llength [info commands [namespace current]::ReportToMaster]]} { + ReportToMaster $numTests(Total) $numTests(Passed) $numTests(Skipped) \ + $numTests(Failed) [array get skippedBecause] \ + [array get createdNewFiles] + set testSingleFile false + } + # Call the cleanup hook cleanupTestsHook @@ -2368,7 +2390,7 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} { foreach file $filesMade { if {[file exists $file]} { DebugDo 1 {Warn "cleanupTests deleting $file..."} - catch {file delete -force $file} + catch {file delete -force -- $file} } } set currentFiles {} @@ -2378,7 +2400,7 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} { } set newFiles {} foreach file $currentFiles { - if {[lsearch -exact $filesExisted $file] == -1} { + if {$file ni $filesExisted} { lappend newFiles $file } } @@ -2461,8 +2483,7 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} { # then add current file to failFile list if any tests in this # file failed - if {$currentFailure \ - && ([lsearch -exact $failFiles $testFileName] == -1)} { + if {$currentFailure && ($testFileName ni $failFiles)} { lappend failFiles $testFileName } set currentFailure false @@ -2477,17 +2498,15 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} { if {![info exists originalEnv($index)]} { lappend newEnv $index unset ::env($index) - } else { - if {$::env($index) != $originalEnv($index)} { - lappend changedEnv $index - set ::env($index) $originalEnv($index) - } } } foreach index [array names originalEnv] { if {![info exists ::env($index)]} { lappend removedEnv $index set ::env($index) $originalEnv($index) + } elseif {$::env($index) ne $originalEnv($index)} { + lappend changedEnv $index + set ::env($index) $originalEnv($index) } } if {[llength $newEnv] > 0} { @@ -2522,11 +2541,11 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} { puts [outputChannel] "produced core file! \ Moving file to: \ [file join [temporaryDirectory] core-$testFileName]" - catch {file rename -force \ + catch {file rename -force -- \ [file join [workingDirectory] core] \ [file join [temporaryDirectory] core-$testFileName] } msg - if {[string length $msg] > 0} { + if {$msg ne {}} { PrintError "Problem renaming file: $msg" } } else { @@ -2571,7 +2590,7 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} { # None # a lower case version is needed for compatibility with tcltest 1.0 -proc tcltest::getMatchingFiles args {eval GetMatchingFiles $args} +proc tcltest::getMatchingFiles args {GetMatchingFiles {*}$args} proc tcltest::GetMatchingFiles { args } { if {[llength $args]} { @@ -2604,7 +2623,7 @@ proc tcltest::GetMatchingFiles { args } { # Add to result list all files in match list and not in skip list foreach file $matchFileList { - if {[lsearch -exact $skipFileList $file] == -1} { + if {$file ni $skipFileList} { lappend matchingFiles $file } } @@ -2651,7 +2670,7 @@ proc tcltest::GetMatchingDirectories {rootdir} { foreach pattern [matchDirectories] { foreach path [glob -directory $rootdir -types d -nocomplain -- \ $pattern] { - if {[lsearch -exact $skipDirs $path] == -1} { + if {$path ni $skipDirs} { set matchDirs [concat $matchDirs [GetMatchingDirectories $path]] if {[file exists [file join $path all.tcl]]} { lappend matchDirs $path @@ -2687,6 +2706,7 @@ proc tcltest::runAllTests { {shell ""} } { variable numTestFiles variable numTests variable failFiles + variable DefaultValue FillFilesExisted if {[llength [info level 0]] == 1} { @@ -2703,7 +2723,7 @@ proc tcltest::runAllTests { {shell ""} } { # [file system] first available in Tcl 8.4 if {![catch {file system [testsDirectory]} result] - && ![string equal native [lindex $result 0]]} { + && ([lindex $result 0] ne "native")} { # If we aren't running in the native filesystem, then we must # run the tests in a single process (via 'source'), because # trying to run then via a pipe will fail since the files don't @@ -2750,8 +2770,13 @@ proc tcltest::runAllTests { {shell ""} } { # needs to read and process output of children. set childargv [list] foreach opt [Configure] { - if {[string equal $opt -outfile]} {continue} - lappend childargv $opt [Configure $opt] + if {$opt eq "-outfile"} {continue} + set value [Configure $opt] + # Don't bother passing default configuration options + if {$value eq $DefaultValue($opt)} { + continue + } + lappend childargv $opt $value } set cmd [linsert $childargv 0 | $shell $file] if {[catch { @@ -2841,11 +2866,6 @@ proc tcltest::runAllTests { {shell ""} } { # none. proc tcltest::loadTestedCommands {} { - variable l - if {[string equal {} [loadScript]]} { - return - } - return [uplevel 1 [loadScript]] } @@ -2888,16 +2908,15 @@ proc tcltest::saveState {} { proc tcltest::restoreState {} { variable saveState foreach p [uplevel 1 {::info procs}] { - if {([lsearch [lindex $saveState 0] $p] < 0) - && ![string equal [namespace current]::$p \ - [uplevel 1 [list ::namespace origin $p]]]} { + if {($p ni [lindex $saveState 0]) && ("[namespace current]::$p" ne + [uplevel 1 [list ::namespace origin $p]])} { DebugPuts 2 "[lindex [info level 0] 0]: Removing proc $p" uplevel 1 [list ::catch [list ::rename $p {}]] } } foreach p [uplevel 1 {::info vars}] { - if {[lsearch [lindex $saveState 1] $p] < 0} { + if {$p ni [lindex $saveState 1]} { DebugPuts 2 "[lindex [info level 0] 0]:\ Removing variable $p" uplevel 1 [list ::catch [list ::unset $p]] @@ -2958,15 +2977,15 @@ proc tcltest::makeFile {contents name {directory ""}} { putting ``$contents'' into $fullName" set fd [open $fullName w] - fconfigure $fd -translation lf - if {[string equal [string index $contents end] \n]} { + chan configure $fd -translation lf + if {[string index $contents end] eq "\n"} { puts -nonewline $fd $contents } else { puts $fd $contents } close $fd - if {[lsearch -exact $filesMade $fullName] == -1} { + if {$fullName ni $filesMade} { lappend filesMade $fullName } return $fullName @@ -3006,7 +3025,7 @@ proc tcltest::removeFile {name {directory ""}} { Warn "removeFile removing \"$fullName\":\n not a file" } } - return [file delete $fullName] + return [file delete -- $fullName] } # tcltest::makeDirectory -- @@ -3036,7 +3055,7 @@ proc tcltest::makeDirectory {name {directory ""}} { set fullName [file join $directory $name] DebugPuts 3 "[lindex [info level 0] 0]: creating $fullName" file mkdir $fullName - if {[lsearch -exact $filesMade $fullName] == -1} { + if {$fullName ni $filesMade} { lappend filesMade $fullName } return $fullName @@ -3077,7 +3096,7 @@ proc tcltest::removeDirectory {name {directory ""}} { Warn "removeDirectory removing \"$fullName\":\n not a directory" } } - return [file delete -force $fullName] + return [file delete -force -- $fullName] } # tcltest::viewFile -- @@ -3174,7 +3193,7 @@ proc tcltest::LeakFiles {old} { } set leak {} foreach p $new { - if {[lsearch $old $p] < 0} { + if {$p ni $old} { lappend leak $p } } @@ -3245,7 +3264,7 @@ proc tcltest::RestoreLocale {} { # proc tcltest::threadReap {} { - if {[info commands testthread] != {}} { + if {[info commands testthread] ne {}} { # testthread built into tcltest @@ -3265,7 +3284,7 @@ proc tcltest::threadReap {} { } testthread errorproc ThreadError return [llength [testthread names]] - } elseif {[info commands thread::id] != {}} { + } elseif {[info commands thread::id] ne {}} { # Thread extension @@ -3297,15 +3316,15 @@ namespace eval tcltest { # Set up the constraints in the testConstraints array to be lazily # initialized by a registered initializer, or by "false" if no # initializer is registered. - trace variable testConstraints r [namespace code SafeFetch] + trace add variable testConstraints read [namespace code SafeFetch] # Only initialize constraints at package load time if an # [initConstraintsHook] has been pre-defined. This is only # for compatibility support. The modern way to add a custom # test constraint is to just call the [testConstraint] command # straight away, without all this "hook" nonsense. - if {[string equal [namespace current] \ - [namespace qualifiers [namespace which initConstraintsHook]]]} { + if {[namespace current] eq + [namespace qualifiers [namespace which initConstraintsHook]]} { InitConstraints } else { proc initConstraintsHook {} {} @@ -3326,12 +3345,12 @@ namespace eval tcltest { Tcl list: $msg" return } - if {[llength $::env(TCLTEST_OPTIONS)] % 2} { + if {[llength $options] % 2} { Warn "invalid TCLTEST_OPTIONS: \"$options\":\n should be\ -option value ?-option value ...?" return } - if {[catch {eval Configure $::env(TCLTEST_OPTIONS)} msg]} { + if {[catch {Configure {*}$options} msg]} { Warn "invalid TCLTEST_OPTIONS: \"$options\":\n $msg" return } @@ -3342,15 +3361,15 @@ namespace eval tcltest { proc LoadTimeCmdLineArgParsingRequired {} { set required false - if {[info exists ::argv] && [lsearch -exact $::argv -help] != -1} { + if {[info exists ::argv] && ("-help" in $::argv)} { # The command line asks for -help, so give it (and exit) # right now. ([configure] does not process -help) set required true } foreach hook { PrintUsageInfoHook processCmdLineArgsHook processCmdLineArgsAddFlagsHook } { - if {[string equal [namespace current] [namespace qualifiers \ - [namespace which $hook]]]} { + if {[namespace current] eq + [namespace qualifiers [namespace which $hook]]} { set required true } else { proc $hook args {} diff --git a/library/tm.tcl b/library/tm.tcl index c5db437..55efda6 100644 --- a/library/tm.tcl +++ b/library/tm.tcl @@ -1,48 +1,44 @@ # -*- tcl -*- # -# Searching for Tcl Modules. Defines a procedure, declares it as the -# primary command for finding packages, however also uses the former -# 'package unknown' command as a fallback. +# Searching for Tcl Modules. Defines a procedure, declares it as the primary +# command for finding packages, however also uses the former 'package unknown' +# command as a fallback. # -# Locates all possible packages in a directory via a less restricted -# glob. The targeted directory is derived from the name of the -# requested package. I.e. the TM scan will look only at directories -# which can contain the requested package. It will register all -# packages it found in the directory so that future requests have a -# higher chance of being fulfilled by the ifneeded database without -# having to come to us again. +# Locates all possible packages in a directory via a less restricted glob. The +# targeted directory is derived from the name of the requested package, i.e. +# the TM scan will look only at directories which can contain the requested +# package. It will register all packages it found in the directory so that +# future requests have a higher chance of being fulfilled by the ifneeded +# database without having to come to us again. # -# We do not remember where we have been and simply rescan targeted -# directories when invoked again. The reasoning is this: +# We do not remember where we have been and simply rescan targeted directories +# when invoked again. The reasoning is this: # -# - The only way we get back to the same directory is if someone is -# trying to [package require] something that wasn't there on the -# first scan. +# - The only way we get back to the same directory is if someone is trying to +# [package require] something that wasn't there on the first scan. # # Either # 1) It is there now: If we rescan, you get it; if not you don't. # -# This covers the possibility that the application asked for a -# package late, and the package was actually added to the -# installation after the application was started. It shoukld -# still be able to find it. +# This covers the possibility that the application asked for a package +# late, and the package was actually added to the installation after the +# application was started. It shoukld still be able to find it. # -# 2) It still is not there: Either way, you don't get it, but the -# rescan takes time. This is however an error case and we dont't -# care that much about it +# 2) It still is not there: Either way, you don't get it, but the rescan +# takes time. This is however an error case and we dont't care that much +# about it # -# 3) It was there the first time; but for some reason a "package -# forget" has been run, and "package" doesn't know about it -# anymore. +# 3) It was there the first time; but for some reason a "package forget" has +# been run, and "package" doesn't know about it anymore. # -# This can be an indication that the application wishes to reload -# some functionality. And should work as well. +# This can be an indication that the application wishes to reload some +# functionality. And should work as well. # -# Note that this also strikes a balance between doing a glob targeting -# a single package, and thus most likely requiring multiple globs of -# the same directory when the application is asking for many packages, -# and trying to glob for _everything_ in all subdirectories when -# looking for a package, which comes with a heavy startup cost. +# Note that this also strikes a balance between doing a glob targeting a +# single package, and thus most likely requiring multiple globs of the same +# directory when the application is asking for many packages, and trying to +# glob for _everything_ in all subdirectories when looking for a package, +# which comes with a heavy startup cost. # # We scan for regular packages only if no satisfying module was found. @@ -58,7 +54,7 @@ namespace eval ::tcl::tm { # Export the public API namespace export path - namespace ensemble create -command path -subcommand {add remove list} + namespace ensemble create -command path -subcommands {add remove list} } # ::tcl::tm::path implementations -- @@ -71,46 +67,43 @@ namespace eval ::tcl::tm { # path with 'list'. # # Results -# No result for subcommands 'add' and 'remove'. A list of paths -# for 'list'. +# No result for subcommands 'add' and 'remove'. A list of paths for +# 'list'. # # Sideeffects -# The subcommands 'add' and 'remove' manipulate the list of -# paths to search for Tcl Modules. The subcommand 'list' has no -# sideeffects. +# The subcommands 'add' and 'remove' manipulate the list of paths to +# search for Tcl Modules. The subcommand 'list' has no sideeffects. -proc ::tcl::tm::add {path args} { +proc ::tcl::tm::add {args} { # PART OF THE ::tcl::tm::path ENSEMBLE # # The path is added at the head to the list of module paths. # - # The command enforces the restriction that no path may be an - # ancestor directory of any other path on the list. If the new - # path violates this restriction an error wil be raised. + # The command enforces the restriction that no path may be an ancestor + # directory of any other path on the list. If the new path violates this + # restriction an error wil be raised. # - # If the path is already present as is no error will be raised and - # no action will be taken. + # If the path is already present as is no error will be raised and no + # action will be taken. variable paths - # We use a copy of the path as source during validation, and - # extend it as well. Because we not only have to detect if the new - # paths are bogus with respect to the existing paths, but also - # between themselves. Otherwise we can still add bogus paths, by - # specifying them in a single call. This makes the use of the new - # paths simpler as well, a trivial assignment of the collected - # paths to the official state var. + # We use a copy of the path as source during validation, and extend it as + # well. Because we not only have to detect if the new paths are bogus with + # respect to the existing paths, but also between themselves. Otherwise we + # can still add bogus paths, by specifying them in a single call. This + # makes the use of the new paths simpler as well, a trivial assignment of + # the collected paths to the official state var. set newpaths $paths - foreach p [linsert $args 0 $path] { + foreach p $args { if {$p in $newpaths} { # Ignore a path already on the list. continue } - # Search for paths which are subdirectories of the new one. If - # there are any then the new path violates the restriction - # about ancestors. + # Search for paths which are subdirectories of the new one. If there + # are any then the new path violates the restriction about ancestors. set pos [lsearch -glob $newpaths ${p}/*] # Cannot use "in", we need the position for the message. @@ -119,10 +112,9 @@ proc ::tcl::tm::add {path args} { "$p is ancestor of existing module path [lindex $newpaths $pos]." } - # Now look for existing paths which are ancestors of the new - # one. This reverse question forces us to loop over the - # existing paths, as each element is the pattern, not the new - # path :( + # Now look for existing paths which are ancestors of the new one. This + # reverse question forces us to loop over the existing paths, as each + # element is the pattern, not the new path :( foreach ep $newpaths { if {[string match ${ep}/* $p]} { @@ -134,24 +126,23 @@ proc ::tcl::tm::add {path args} { set newpaths [linsert $newpaths 0 $p] } - # The validation of the input is complete and successful, and - # everything in newpaths is either an old path, or added. We can - # now extend the official list of paths, a simple assignment is - # sufficient. + # The validation of the input is complete and successful, and everything + # in newpaths is either an old path, or added. We can now extend the + # official list of paths, a simple assignment is sufficient. set paths $newpaths return } -proc ::tcl::tm::remove {path args} { +proc ::tcl::tm::remove {args} { # PART OF THE ::tcl::tm::path ENSEMBLE # - # Removes the path from the list of module paths. The command is - # silently ignored if the path is not on the list. + # Removes the path from the list of module paths. The command is silently + # ignored if the path is not on the list. variable paths - foreach p [linsert $args 0 $path] { + foreach p $args { set pos [lsearch -exact $paths $p] if {$pos >= 0} { set paths [lreplace $paths $pos $pos] @@ -177,27 +168,26 @@ proc ::tcl::tm::list {} { # empty string. # exact - Either -exact or ommitted. # -# Name, version, and exact are used to determine -# satisfaction. The original is called iff no satisfaction was -# achieved. The name is also used to compute the directory to -# target in the search. +# Name, version, and exact are used to determine satisfaction. The +# original is called iff no satisfaction was achieved. The name is also +# used to compute the directory to target in the search. # # Results # None. # # Sideeffects -# May populate the package ifneeded database with additional -# provide scripts. +# May populate the package ifneeded database with additional provide +# scripts. proc ::tcl::tm::UnknownHandler {original name args} { # Import the list of paths to search for packages in module form. - # Import the pattern used to check package names in detail. + # Import the pattern used to check package names in detail. variable paths variable pkgpattern - # Without paths to search we can do nothing. (Except falling back - # to the regular search). + # Without paths to search we can do nothing. (Except falling back to the + # regular search). if {[llength $paths]} { set pkgpath [string map {:: /} $name] @@ -206,11 +196,10 @@ proc ::tcl::tm::UnknownHandler {original name args} { set pkgroot "" } - # We don't remember a copy of the paths while looping. Tcl - # Modules are unable to change the list while we are searching - # for them. This also simplifies the loop, as we cannot get - # additional directories while iterating over the list. A - # simple foreach is sufficient. + # We don't remember a copy of the paths while looping. Tcl Modules are + # unable to change the list while we are searching for them. This also + # simplifies the loop, as we cannot get additional directories while + # iterating over the list. A simple foreach is sufficient. set satisfied 0 foreach path $paths { @@ -223,12 +212,11 @@ proc ::tcl::tm::UnknownHandler {original name args} { } set strip [llength [file split $path]] - # We can't use glob in safe interps, so enclose the following - # in a catch statement, where we get the module files out - # of the subdirectories. In other words, Tcl Modules are - # not-functional in such an interpreter. This is the same - # as for the command "tclPkgUnknown", i.e. the search for - # regular packages. + # We can't use glob in safe interps, so enclose the following in a + # catch statement, where we get the module files out of the + # subdirectories. In other words, Tcl Modules are not-functional + # in such an interpreter. This is the same as for the command + # "tclPkgUnknown", i.e. the search for regular packages. catch { # We always look for _all_ possible modules in the current @@ -238,50 +226,57 @@ proc ::tcl::tm::UnknownHandler {original name args} { set pkgfilename [join [lrange [file split $file] $strip end] ::] if {![regexp -- $pkgpattern $pkgfilename --> pkgname pkgversion]} { - # Ignore everything not matching our pattern - # for package names. + # Ignore everything not matching our pattern for + # package names. continue } - if {[catch {package vcompare $pkgversion 0}]} { - # Ignore everything where the version part is - # not acceptable to "package vcompare". + try { + package vcompare $pkgversion 0 + } on error {} { + # Ignore everything where the version part is not + # acceptable to "package vcompare". continue } - # We have found a candidate, generate a "provide - # script" for it, and remember it. Note that we - # are using ::list to do this; locally [list] - # means something else without the namespace - # specifier. - - # NOTE. When making changes to the format of the - # provide command generated below CHECK that the - # 'LOCATE' procedure in core file - # 'platform/shell.tcl' still understands it, or, - # if not, update its implementation appropriately. + if {[package ifneeded $pkgname $pkgversion] ne {}} { + # There's already a provide script registered for + # this version of this package. Since all units of + # code claiming to be the same version of the same + # package ought to be identical, just stick with + # the one we already have. + continue + } + + # We have found a candidate, generate a "provide script" + # for it, and remember it. Note that we are using ::list + # to do this; locally [list] means something else without + # the namespace specifier. + + # NOTE. When making changes to the format of the provide + # command generated below CHECK that the 'LOCATE' + # procedure in core file 'platform/shell.tcl' still + # understands it, or, if not, update its implementation + # appropriately. # - # Right now LOCATE's implementation assumes that - # the path of the package file is the last element - # in the list. + # Right now LOCATE's implementation assumes that the path + # of the package file is the last element in the list. package ifneeded $pkgname $pkgversion \ "[::list package provide $pkgname $pkgversion];[::list source -encoding utf-8 $file]" - # We abort in this unknown handler only if we got - # a satisfying candidate for the requested - # package. Otherwise we still have to fallback to - # the regular package search to complete the - # processing. + # We abort in this unknown handler only if we got a + # satisfying candidate for the requested package. + # Otherwise we still have to fallback to the regular + # package search to complete the processing. - if { - ($pkgname eq $name) && - [package vsatisfies $pkgversion {*}$args] - } then { + if {($pkgname eq $name) + && [package vsatisfies $pkgversion {*}$args]} { set satisfied 1 - # We do not abort the loop, and keep adding - # provide scripts for every candidate in the - # directory, just remember to not fall back to - # the regular search anymore. + + # We do not abort the loop, and keep adding provide + # scripts for every candidate in the directory, just + # remember to not fall back to the regular search + # anymore. } } } @@ -292,8 +287,8 @@ proc ::tcl::tm::UnknownHandler {original name args} { } } - # Fallback to previous command, if existing. See comment above - # about ::list... + # Fallback to previous command, if existing. See comment above about + # ::list... if {[llength $original]} { uplevel 1 $original [::linsert $args 0 $name] @@ -359,22 +354,22 @@ proc ::tcl::tm::Defaults {} { # Calls 'path add' to paths to the list of module search paths. proc ::tcl::tm::roots {paths} { - foreach {major minor} [split [info tclversion] .] break + lassign [split [package present Tcl] .] major minor foreach pa $paths { set p [file join $pa tcl$major] for {set n $minor} {$n >= 0} {incr n -1} { set px [file join $p ${major}.${n}] - if {![interp issafe]} { set px [file normalize $px] } + if {![interp issafe]} {set px [file normalize $px]} path add $px } set px [file join $p site-tcl] - if {![interp issafe]} { set px [file normalize $px] } + if {![interp issafe]} {set px [file normalize $px]} path add $px } return } -# Initialization. Set up the default paths, then insert the new -# handler into the chain. +# Initialization. Set up the default paths, then insert the new handler into +# the chain. -if {![interp issafe]} { ::tcl::tm::Defaults } +if {![interp issafe]} {::tcl::tm::Defaults} diff --git a/library/tzdata/Africa/Asmara b/library/tzdata/Africa/Asmara index 1f0f13e..1f0f13e 100755..100644 --- a/library/tzdata/Africa/Asmara +++ b/library/tzdata/Africa/Asmara diff --git a/library/tzdata/Africa/Cairo b/library/tzdata/Africa/Cairo index d812a44..842b7b2 100644 --- a/library/tzdata/Africa/Cairo +++ b/library/tzdata/Africa/Cairo @@ -1,8 +1,8 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Africa/Cairo) { - {-9223372036854775808 7500 0 LMT} - {-2185409100 7200 0 EET} + {-9223372036854775808 7509 0 LMT} + {-2185409109 7200 0 EET} {-929844000 10800 1 EEST} {-923108400 7200 0 EET} {-906170400 10800 1 EEST} @@ -120,185 +120,9 @@ set TZData(:Africa/Cairo) { {1209074400 10800 1 EEST} {1219957200 7200 0 EET} {1240524000 10800 1 EEST} - {1251406800 7200 0 EET} + {1250802000 7200 0 EET} {1272578400 10800 1 EEST} - {1282856400 7200 0 EET} - {1304028000 10800 1 EEST} - {1314306000 7200 0 EET} - {1335477600 10800 1 EEST} - {1346360400 7200 0 EET} - {1366927200 10800 1 EEST} - {1377810000 7200 0 EET} - {1398376800 10800 1 EEST} - {1409259600 7200 0 EET} - {1429826400 10800 1 EEST} - {1440709200 7200 0 EET} - {1461880800 10800 1 EEST} - {1472158800 7200 0 EET} - {1493330400 10800 1 EEST} - {1504213200 7200 0 EET} - {1524780000 10800 1 EEST} - {1535662800 7200 0 EET} - {1556229600 10800 1 EEST} - {1567112400 7200 0 EET} - {1587679200 10800 1 EEST} - {1598562000 7200 0 EET} - {1619733600 10800 1 EEST} - {1630011600 7200 0 EET} - {1651183200 10800 1 EEST} - {1661461200 7200 0 EET} - {1682632800 10800 1 EEST} - {1693515600 7200 0 EET} - {1714082400 10800 1 EEST} - {1724965200 7200 0 EET} - {1745532000 10800 1 EEST} - {1756414800 7200 0 EET} - {1776981600 10800 1 EEST} - {1787864400 7200 0 EET} - {1809036000 10800 1 EEST} - {1819314000 7200 0 EET} - {1840485600 10800 1 EEST} - {1851368400 7200 0 EET} - {1871935200 10800 1 EEST} - {1882818000 7200 0 EET} - {1903384800 10800 1 EEST} - {1914267600 7200 0 EET} - {1934834400 10800 1 EEST} - {1945717200 7200 0 EET} - {1966888800 10800 1 EEST} - {1977166800 7200 0 EET} - {1998338400 10800 1 EEST} - {2008616400 7200 0 EET} - {2029788000 10800 1 EEST} - {2040670800 7200 0 EET} - {2061237600 10800 1 EEST} - {2072120400 7200 0 EET} - {2092687200 10800 1 EEST} - {2103570000 7200 0 EET} - {2124136800 10800 1 EEST} - {2135019600 7200 0 EET} - {2156191200 10800 1 EEST} - {2166469200 7200 0 EET} - {2187640800 10800 1 EEST} - {2197918800 7200 0 EET} - {2219090400 10800 1 EEST} - {2229973200 7200 0 EET} - {2250540000 10800 1 EEST} - {2261422800 7200 0 EET} - {2281989600 10800 1 EEST} - {2292872400 7200 0 EET} - {2313439200 10800 1 EEST} - {2324322000 7200 0 EET} - {2345493600 10800 1 EEST} - {2355771600 7200 0 EET} - {2376943200 10800 1 EEST} - {2387826000 7200 0 EET} - {2408392800 10800 1 EEST} - {2419275600 7200 0 EET} - {2439842400 10800 1 EEST} - {2450725200 7200 0 EET} - {2471292000 10800 1 EEST} - {2482174800 7200 0 EET} - {2503346400 10800 1 EEST} - {2513624400 7200 0 EET} - {2534796000 10800 1 EEST} - {2545074000 7200 0 EET} - {2566245600 10800 1 EEST} - {2577128400 7200 0 EET} - {2597695200 10800 1 EEST} - {2608578000 7200 0 EET} - {2629144800 10800 1 EEST} - {2640027600 7200 0 EET} - {2660594400 10800 1 EEST} - {2671477200 7200 0 EET} - {2692648800 10800 1 EEST} - {2702926800 7200 0 EET} - {2724098400 10800 1 EEST} - {2734981200 7200 0 EET} - {2755548000 10800 1 EEST} - {2766430800 7200 0 EET} - {2786997600 10800 1 EEST} - {2797880400 7200 0 EET} - {2818447200 10800 1 EEST} - {2829330000 7200 0 EET} - {2850501600 10800 1 EEST} - {2860779600 7200 0 EET} - {2881951200 10800 1 EEST} - {2892229200 7200 0 EET} - {2913400800 10800 1 EEST} - {2924283600 7200 0 EET} - {2944850400 10800 1 EEST} - {2955733200 7200 0 EET} - {2976300000 10800 1 EEST} - {2987182800 7200 0 EET} - {3007749600 10800 1 EEST} - {3018632400 7200 0 EET} - {3039804000 10800 1 EEST} - {3050082000 7200 0 EET} - {3071253600 10800 1 EEST} - {3081531600 7200 0 EET} - {3102703200 10800 1 EEST} - {3113586000 7200 0 EET} - {3134152800 10800 1 EEST} - {3145035600 7200 0 EET} - {3165602400 10800 1 EEST} - {3176485200 7200 0 EET} - {3197052000 10800 1 EEST} - {3207934800 7200 0 EET} - {3229106400 10800 1 EEST} - {3239384400 7200 0 EET} - {3260556000 10800 1 EEST} - {3271438800 7200 0 EET} - {3292005600 10800 1 EEST} - {3302888400 7200 0 EET} - {3323455200 10800 1 EEST} - {3334338000 7200 0 EET} - {3354904800 10800 1 EEST} - {3365787600 7200 0 EET} - {3386959200 10800 1 EEST} - {3397237200 7200 0 EET} - {3418408800 10800 1 EEST} - {3428686800 7200 0 EET} - {3449858400 10800 1 EEST} - {3460741200 7200 0 EET} - {3481308000 10800 1 EEST} - {3492190800 7200 0 EET} - {3512757600 10800 1 EEST} - {3523640400 7200 0 EET} - {3544207200 10800 1 EEST} - {3555090000 7200 0 EET} - {3576261600 10800 1 EEST} - {3586539600 7200 0 EET} - {3607711200 10800 1 EEST} - {3618594000 7200 0 EET} - {3639160800 10800 1 EEST} - {3650043600 7200 0 EET} - {3670610400 10800 1 EEST} - {3681493200 7200 0 EET} - {3702060000 10800 1 EEST} - {3712942800 7200 0 EET} - {3734114400 10800 1 EEST} - {3744392400 7200 0 EET} - {3765564000 10800 1 EEST} - {3775842000 7200 0 EET} - {3797013600 10800 1 EEST} - {3807896400 7200 0 EET} - {3828463200 10800 1 EEST} - {3839346000 7200 0 EET} - {3859912800 10800 1 EEST} - {3870795600 7200 0 EET} - {3891362400 10800 1 EEST} - {3902245200 7200 0 EET} - {3923416800 10800 1 EEST} - {3933694800 7200 0 EET} - {3954866400 10800 1 EEST} - {3965144400 7200 0 EET} - {3986316000 10800 1 EEST} - {3997198800 7200 0 EET} - {4017765600 10800 1 EEST} - {4028648400 7200 0 EET} - {4049215200 10800 1 EEST} - {4060098000 7200 0 EET} - {4080664800 10800 1 EEST} - {4091547600 7200 0 EET} + {1281474000 7200 0 EET} + {1284069600 10800 1 EEST} + {1285880400 7200 0 EET} } diff --git a/library/tzdata/Africa/Casablanca b/library/tzdata/Africa/Casablanca index da64c44..dec2778 100644 --- a/library/tzdata/Africa/Casablanca +++ b/library/tzdata/Africa/Casablanca @@ -23,4 +23,146 @@ set TZData(:Africa/Casablanca) { {504918000 0 0 WET} {1212278400 3600 1 WEST} {1220223600 0 0 WET} + {1243814400 3600 1 WEST} + {1250809200 0 0 WET} + {1272758400 3600 1 WEST} + {1281222000 0 0 WET} + {1301788800 3600 1 WEST} + {1312066800 0 0 WET} + {1335664800 3600 1 WEST} + {1342749600 0 0 WET} + {1345428000 3600 1 WEST} + {1348970400 0 0 WET} + {1367114400 3600 1 WEST} + {1373162400 0 0 WET} + {1376100000 3600 1 WEST} + {1382839200 0 0 WET} + {1396144800 3600 1 WEST} + {1404007200 0 0 WET} + {1406599200 3600 1 WEST} + {1414288800 0 0 WET} + {1427594400 3600 1 WEST} + {1434592800 0 0 WET} + {1437184800 3600 1 WEST} + {1445738400 0 0 WET} + {1459044000 3600 1 WEST} + {1465264800 0 0 WET} + {1467856800 3600 1 WEST} + {1477792800 0 0 WET} + {1490493600 3600 1 WEST} + {1495850400 0 0 WET} + {1498442400 3600 1 WEST} + {1509242400 0 0 WET} + {1521943200 3600 1 WEST} + {1526436000 0 0 WET} + {1529028000 3600 1 WEST} + {1540692000 0 0 WET} + {1553997600 3600 1 WEST} + {1557108000 0 0 WET} + {1559700000 3600 1 WEST} + {1572141600 0 0 WET} + {1585447200 3600 1 WEST} + {1587693600 0 0 WET} + {1590285600 3600 1 WEST} + {1603591200 0 0 WET} + {1616896800 3600 1 WEST} + {1618279200 0 0 WET} + {1620871200 3600 1 WEST} + {1635645600 0 0 WET} + {1648346400 3600 1 WEST} + {1648951200 0 0 WET} + {1651543200 3600 1 WEST} + {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} } diff --git a/library/tzdata/Africa/Dar_es_Salaam b/library/tzdata/Africa/Dar_es_Salaam index e427b9c..98151ec 100644 --- a/library/tzdata/Africa/Dar_es_Salaam +++ b/library/tzdata/Africa/Dar_es_Salaam @@ -3,6 +3,6 @@ set TZData(:Africa/Dar_es_Salaam) { {-9223372036854775808 9428 0 LMT} {-1230777428 10800 0 EAT} - {-694321200 9885 0 BEAUT} - {-284006685 10800 0 EAT} + {-694321200 9900 0 BEAUT} + {-284006700 10800 0 EAT} } diff --git a/library/tzdata/Africa/Gaborone b/library/tzdata/Africa/Gaborone index 7753ba0..bd38673 100644 --- a/library/tzdata/Africa/Gaborone +++ b/library/tzdata/Africa/Gaborone @@ -2,7 +2,8 @@ set TZData(:Africa/Gaborone) { {-9223372036854775808 6220 0 LMT} - {-2682294220 7200 0 CAT} + {-2682294220 5400 0 SAST} + {-2109288600 7200 0 CAT} {-829526400 10800 1 CAST} {-813805200 7200 0 CAT} } diff --git a/library/tzdata/Africa/Juba b/library/tzdata/Africa/Juba new file mode 100644 index 0000000..40551f2 --- /dev/null +++ b/library/tzdata/Africa/Juba @@ -0,0 +1,5 @@ +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Africa/Khartoum)]} { + LoadTimeZoneFile Africa/Khartoum +} +set TZData(:Africa/Juba) $TZData(:Africa/Khartoum) diff --git a/library/tzdata/Africa/Kampala b/library/tzdata/Africa/Kampala index ab3f085..4cc9be1 100644 --- a/library/tzdata/Africa/Kampala +++ b/library/tzdata/Africa/Kampala @@ -4,6 +4,6 @@ set TZData(:Africa/Kampala) { {-9223372036854775808 7780 0 LMT} {-1309745380 10800 0 EAT} {-1262314800 9000 0 BEAT} - {-694319400 9885 0 BEAUT} - {-410237085 10800 0 EAT} + {-694319400 9900 0 BEAUT} + {-410237100 10800 0 EAT} } diff --git a/library/tzdata/Africa/Nairobi b/library/tzdata/Africa/Nairobi index 99b0d70..6846069 100644 --- a/library/tzdata/Africa/Nairobi +++ b/library/tzdata/Africa/Nairobi @@ -4,6 +4,6 @@ set TZData(:Africa/Nairobi) { {-9223372036854775808 8836 0 LMT} {-1309746436 10800 0 EAT} {-1262314800 9000 0 BEAT} - {-946780200 9885 0 BEAUT} - {-315629085 10800 0 EAT} + {-946780200 9900 0 BEAUT} + {-315629100 10800 0 EAT} } diff --git a/library/tzdata/Africa/Tripoli b/library/tzdata/Africa/Tripoli index e993249..ac78218 100644 --- a/library/tzdata/Africa/Tripoli +++ b/library/tzdata/Africa/Tripoli @@ -27,5 +27,180 @@ set TZData(:Africa/Tripoli) { {641775600 7200 0 EET} {844034400 3600 0 CET} {860108400 7200 1 CEST} - {875916000 7200 0 EET} + {875919600 7200 0 EET} + {1352505600 3600 0 CET} + {1364515200 7200 1 CEST} + {1382659200 3600 0 CET} + {1395964800 7200 1 CEST} + {1414713600 3600 0 CET} + {1427414400 7200 1 CEST} + {1446163200 3600 0 CET} + {1458864000 7200 1 CEST} + {1477612800 3600 0 CET} + {1490918400 7200 1 CEST} + {1509062400 3600 0 CET} + {1522368000 7200 1 CEST} + {1540512000 3600 0 CET} + {1553817600 7200 1 CEST} + {1571961600 3600 0 CET} + {1585267200 7200 1 CEST} + {1604016000 3600 0 CET} + {1616716800 7200 1 CEST} + {1635465600 3600 0 CET} + {1648166400 7200 1 CEST} + {1666915200 3600 0 CET} + {1680220800 7200 1 CEST} + {1698364800 3600 0 CET} + {1711670400 7200 1 CEST} + {1729814400 3600 0 CET} + {1743120000 7200 1 CEST} + {1761868800 3600 0 CET} + {1774569600 7200 1 CEST} + {1793318400 3600 0 CET} + {1806019200 7200 1 CEST} + {1824768000 3600 0 CET} + {1838073600 7200 1 CEST} + {1856217600 3600 0 CET} + {1869523200 7200 1 CEST} + {1887667200 3600 0 CET} + {1900972800 7200 1 CEST} + {1919116800 3600 0 CET} + {1932422400 7200 1 CEST} + {1951171200 3600 0 CET} + {1963872000 7200 1 CEST} + {1982620800 3600 0 CET} + {1995321600 7200 1 CEST} + {2014070400 3600 0 CET} + {2027376000 7200 1 CEST} + {2045520000 3600 0 CET} + {2058825600 7200 1 CEST} + {2076969600 3600 0 CET} + {2090275200 7200 1 CEST} + {2109024000 3600 0 CET} + {2121724800 7200 1 CEST} + {2140473600 3600 0 CET} + {2153174400 7200 1 CEST} + {2171923200 3600 0 CET} + {2184624000 7200 1 CEST} + {2203372800 3600 0 CET} + {2216678400 7200 1 CEST} + {2234822400 3600 0 CET} + {2248128000 7200 1 CEST} + {2266272000 3600 0 CET} + {2279577600 7200 1 CEST} + {2298326400 3600 0 CET} + {2311027200 7200 1 CEST} + {2329776000 3600 0 CET} + {2342476800 7200 1 CEST} + {2361225600 3600 0 CET} + {2374531200 7200 1 CEST} + {2392675200 3600 0 CET} + {2405980800 7200 1 CEST} + {2424124800 3600 0 CET} + {2437430400 7200 1 CEST} + {2455574400 3600 0 CET} + {2468880000 7200 1 CEST} + {2487628800 3600 0 CET} + {2500329600 7200 1 CEST} + {2519078400 3600 0 CET} + {2531779200 7200 1 CEST} + {2550528000 3600 0 CET} + {2563833600 7200 1 CEST} + {2581977600 3600 0 CET} + {2595283200 7200 1 CEST} + {2613427200 3600 0 CET} + {2626732800 7200 1 CEST} + {2645481600 3600 0 CET} + {2658182400 7200 1 CEST} + {2676931200 3600 0 CET} + {2689632000 7200 1 CEST} + {2708380800 3600 0 CET} + {2721686400 7200 1 CEST} + {2739830400 3600 0 CET} + {2753136000 7200 1 CEST} + {2771280000 3600 0 CET} + {2784585600 7200 1 CEST} + {2802729600 3600 0 CET} + {2816035200 7200 1 CEST} + {2834784000 3600 0 CET} + {2847484800 7200 1 CEST} + {2866233600 3600 0 CET} + {2878934400 7200 1 CEST} + {2897683200 3600 0 CET} + {2910988800 7200 1 CEST} + {2929132800 3600 0 CET} + {2942438400 7200 1 CEST} + {2960582400 3600 0 CET} + {2973888000 7200 1 CEST} + {2992636800 3600 0 CET} + {3005337600 7200 1 CEST} + {3024086400 3600 0 CET} + {3036787200 7200 1 CEST} + {3055536000 3600 0 CET} + {3068236800 7200 1 CEST} + {3086985600 3600 0 CET} + {3100291200 7200 1 CEST} + {3118435200 3600 0 CET} + {3131740800 7200 1 CEST} + {3149884800 3600 0 CET} + {3163190400 7200 1 CEST} + {3181939200 3600 0 CET} + {3194640000 7200 1 CEST} + {3213388800 3600 0 CET} + {3226089600 7200 1 CEST} + {3244838400 3600 0 CET} + {3258144000 7200 1 CEST} + {3276288000 3600 0 CET} + {3289593600 7200 1 CEST} + {3307737600 3600 0 CET} + {3321043200 7200 1 CEST} + {3339187200 3600 0 CET} + {3352492800 7200 1 CEST} + {3371241600 3600 0 CET} + {3383942400 7200 1 CEST} + {3402691200 3600 0 CET} + {3415392000 7200 1 CEST} + {3434140800 3600 0 CET} + {3447446400 7200 1 CEST} + {3465590400 3600 0 CET} + {3478896000 7200 1 CEST} + {3497040000 3600 0 CET} + {3510345600 7200 1 CEST} + {3529094400 3600 0 CET} + {3541795200 7200 1 CEST} + {3560544000 3600 0 CET} + {3573244800 7200 1 CEST} + {3591993600 3600 0 CET} + {3605299200 7200 1 CEST} + {3623443200 3600 0 CET} + {3636748800 7200 1 CEST} + {3654892800 3600 0 CET} + {3668198400 7200 1 CEST} + {3686342400 3600 0 CET} + {3699648000 7200 1 CEST} + {3718396800 3600 0 CET} + {3731097600 7200 1 CEST} + {3749846400 3600 0 CET} + {3762547200 7200 1 CEST} + {3781296000 3600 0 CET} + {3794601600 7200 1 CEST} + {3812745600 3600 0 CET} + {3826051200 7200 1 CEST} + {3844195200 3600 0 CET} + {3857500800 7200 1 CEST} + {3876249600 3600 0 CET} + {3888950400 7200 1 CEST} + {3907699200 3600 0 CET} + {3920400000 7200 1 CEST} + {3939148800 3600 0 CET} + {3951849600 7200 1 CEST} + {3970598400 3600 0 CET} + {3983904000 7200 1 CEST} + {4002048000 3600 0 CET} + {4015353600 7200 1 CEST} + {4033497600 3600 0 CET} + {4046803200 7200 1 CEST} + {4065552000 3600 0 CET} + {4078252800 7200 1 CEST} + {4097001600 3600 0 CET} } diff --git a/library/tzdata/Africa/Tunis b/library/tzdata/Africa/Tunis index 8fdb11b..0c1db4d 100644 --- a/library/tzdata/Africa/Tunis +++ b/library/tzdata/Africa/Tunis @@ -36,186 +36,4 @@ set TZData(:Africa/Tunis) { {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} } diff --git a/library/tzdata/America/Anguilla b/library/tzdata/America/Anguilla index cfe7483..39a0d18 100644 --- a/library/tzdata/America/Anguilla +++ b/library/tzdata/America/Anguilla @@ -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) diff --git a/library/tzdata/America/Araguaina b/library/tzdata/America/Araguaina index 5073c56..e4a0d52 100644 --- a/library/tzdata/America/Araguaina +++ b/library/tzdata/America/Araguaina @@ -54,4 +54,7 @@ set TZData(:America/Araguaina) { {1036292400 -7200 1 BRST} {1045360800 -10800 0 BRT} {1064368800 -10800 0 BRT} + {1350788400 -7200 0 BRST} + {1361066400 -10800 0 BRT} + {1378000800 -10800 0 BRT} } diff --git a/library/tzdata/America/Argentina/Buenos_Aires b/library/tzdata/America/Argentina/Buenos_Aires index beccff3..73cc8e9 100644 --- a/library/tzdata/America/Argentina/Buenos_Aires +++ b/library/tzdata/America/Argentina/Buenos_Aires @@ -64,185 +64,4 @@ set TZData(:America/Argentina/Buenos_Aires) { {1205632800 -10800 0 ART} {1224385200 -7200 1 ARST} {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} } diff --git a/library/tzdata/America/Argentina/Cordoba b/library/tzdata/America/Argentina/Cordoba index 798ee86..b08539e 100644 --- a/library/tzdata/America/Argentina/Cordoba +++ b/library/tzdata/America/Argentina/Cordoba @@ -64,185 +64,4 @@ set TZData(:America/Argentina/Cordoba) { {1205632800 -10800 0 ART} {1224385200 -7200 1 ARST} {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} } diff --git a/library/tzdata/America/Argentina/San_Luis b/library/tzdata/America/Argentina/San_Luis index 60a7995..8ca55d7 100644 --- a/library/tzdata/America/Argentina/San_Luis +++ b/library/tzdata/America/Argentina/San_Luis @@ -60,5 +60,9 @@ set TZData(:America/Argentina/San_Luis) { {1085972400 -14400 0 WART} {1090728000 -10800 0 ART} {1198983600 -7200 1 ARST} - {1200880800 -10800 0 ART} + {1200880800 -10800 0 WART} + {1205031600 -14400 0 WART} + {1223784000 -10800 1 WARST} + {1236481200 -14400 0 WART} + {1255233600 -10800 0 ART} } diff --git a/library/tzdata/America/Argentina/Tucuman b/library/tzdata/America/Argentina/Tucuman index 6d12cb6..3500986 100644 --- a/library/tzdata/America/Argentina/Tucuman +++ b/library/tzdata/America/Argentina/Tucuman @@ -66,185 +66,4 @@ set TZData(:America/Argentina/Tucuman) { {1205632800 -10800 0 ART} {1224385200 -7200 1 ARST} {1237082400 -10800 0 ART} - {1255834800 -7200 1 ARST} - {1269136800 -10800 0 ART} - {1287284400 -7200 1 ARST} - {1300586400 -10800 0 ART} - {1318734000 -7200 1 ARST} - {1332036000 -10800 0 ART} - {1350788400 -7200 1 ARST} - {1363485600 -10800 0 ART} - {1382238000 -7200 1 ARST} - {1394935200 -10800 0 ART} - {1413687600 -7200 1 ARST} - {1426384800 -10800 0 ART} - {1445137200 -7200 1 ARST} - {1458439200 -10800 0 ART} - {1476586800 -7200 1 ARST} - {1489888800 -10800 0 ART} - {1508036400 -7200 1 ARST} - {1521338400 -10800 0 ART} - {1540090800 -7200 1 ARST} - {1552788000 -10800 0 ART} - {1571540400 -7200 1 ARST} - {1584237600 -10800 0 ART} - {1602990000 -7200 1 ARST} - {1616292000 -10800 0 ART} - {1634439600 -7200 1 ARST} - {1647741600 -10800 0 ART} - {1665889200 -7200 1 ARST} - {1679191200 -10800 0 ART} - {1697338800 -7200 1 ARST} - {1710640800 -10800 0 ART} - {1729393200 -7200 1 ARST} - {1742090400 -10800 0 ART} - {1760842800 -7200 1 ARST} - {1773540000 -10800 0 ART} - {1792292400 -7200 1 ARST} - {1805594400 -10800 0 ART} - {1823742000 -7200 1 ARST} - {1837044000 -10800 0 ART} - {1855191600 -7200 1 ARST} - {1868493600 -10800 0 ART} - {1887246000 -7200 1 ARST} - {1899943200 -10800 0 ART} - {1918695600 -7200 1 ARST} - {1931392800 -10800 0 ART} - {1950145200 -7200 1 ARST} - {1963447200 -10800 0 ART} - {1981594800 -7200 1 ARST} - {1994896800 -10800 0 ART} - {2013044400 -7200 1 ARST} - {2026346400 -10800 0 ART} - {2044494000 -7200 1 ARST} - {2057796000 -10800 0 ART} - {2076548400 -7200 1 ARST} - {2089245600 -10800 0 ART} - {2107998000 -7200 1 ARST} - {2120695200 -10800 0 ART} - {2139447600 -7200 1 ARST} - {2152749600 -10800 0 ART} - {2170897200 -7200 1 ARST} - {2184199200 -10800 0 ART} - {2202346800 -7200 1 ARST} - {2215648800 -10800 0 ART} - {2234401200 -7200 1 ARST} - {2247098400 -10800 0 ART} - {2265850800 -7200 1 ARST} - {2278548000 -10800 0 ART} - {2297300400 -7200 1 ARST} - {2309997600 -10800 0 ART} - {2328750000 -7200 1 ARST} - {2342052000 -10800 0 ART} - {2360199600 -7200 1 ARST} - {2373501600 -10800 0 ART} - {2391649200 -7200 1 ARST} - {2404951200 -10800 0 ART} - {2423703600 -7200 1 ARST} - {2436400800 -10800 0 ART} - {2455153200 -7200 1 ARST} - {2467850400 -10800 0 ART} - {2486602800 -7200 1 ARST} - {2499904800 -10800 0 ART} - {2518052400 -7200 1 ARST} - {2531354400 -10800 0 ART} - {2549502000 -7200 1 ARST} - {2562804000 -10800 0 ART} - {2580951600 -7200 1 ARST} - {2594253600 -10800 0 ART} - {2613006000 -7200 1 ARST} - {2625703200 -10800 0 ART} - {2644455600 -7200 1 ARST} - {2657152800 -10800 0 ART} - {2675905200 -7200 1 ARST} - {2689207200 -10800 0 ART} - {2707354800 -7200 1 ARST} - {2720656800 -10800 0 ART} - {2738804400 -7200 1 ARST} - {2752106400 -10800 0 ART} - {2770858800 -7200 1 ARST} - {2783556000 -10800 0 ART} - {2802308400 -7200 1 ARST} - {2815005600 -10800 0 ART} - {2833758000 -7200 1 ARST} - {2847060000 -10800 0 ART} - {2865207600 -7200 1 ARST} - {2878509600 -10800 0 ART} - {2896657200 -7200 1 ARST} - {2909959200 -10800 0 ART} - {2928106800 -7200 1 ARST} - {2941408800 -10800 0 ART} - {2960161200 -7200 1 ARST} - {2972858400 -10800 0 ART} - {2991610800 -7200 1 ARST} - {3004308000 -10800 0 ART} - {3023060400 -7200 1 ARST} - {3036362400 -10800 0 ART} - {3054510000 -7200 1 ARST} - {3067812000 -10800 0 ART} - {3085959600 -7200 1 ARST} - {3099261600 -10800 0 ART} - {3118014000 -7200 1 ARST} - {3130711200 -10800 0 ART} - {3149463600 -7200 1 ARST} - {3162160800 -10800 0 ART} - {3180913200 -7200 1 ARST} - {3193610400 -10800 0 ART} - {3212362800 -7200 1 ARST} - {3225664800 -10800 0 ART} - {3243812400 -7200 1 ARST} - {3257114400 -10800 0 ART} - {3275262000 -7200 1 ARST} - {3288564000 -10800 0 ART} - {3307316400 -7200 1 ARST} - {3320013600 -10800 0 ART} - {3338766000 -7200 1 ARST} - {3351463200 -10800 0 ART} - {3370215600 -7200 1 ARST} - {3383517600 -10800 0 ART} - {3401665200 -7200 1 ARST} - {3414967200 -10800 0 ART} - {3433114800 -7200 1 ARST} - {3446416800 -10800 0 ART} - {3464564400 -7200 1 ARST} - {3477866400 -10800 0 ART} - {3496618800 -7200 1 ARST} - {3509316000 -10800 0 ART} - {3528068400 -7200 1 ARST} - {3540765600 -10800 0 ART} - {3559518000 -7200 1 ARST} - {3572820000 -10800 0 ART} - {3590967600 -7200 1 ARST} - {3604269600 -10800 0 ART} - {3622417200 -7200 1 ARST} - {3635719200 -10800 0 ART} - {3654471600 -7200 1 ARST} - {3667168800 -10800 0 ART} - {3685921200 -7200 1 ARST} - {3698618400 -10800 0 ART} - {3717370800 -7200 1 ARST} - {3730672800 -10800 0 ART} - {3748820400 -7200 1 ARST} - {3762122400 -10800 0 ART} - {3780270000 -7200 1 ARST} - {3793572000 -10800 0 ART} - {3811719600 -7200 1 ARST} - {3825021600 -10800 0 ART} - {3843774000 -7200 1 ARST} - {3856471200 -10800 0 ART} - {3875223600 -7200 1 ARST} - {3887920800 -10800 0 ART} - {3906673200 -7200 1 ARST} - {3919975200 -10800 0 ART} - {3938122800 -7200 1 ARST} - {3951424800 -10800 0 ART} - {3969572400 -7200 1 ARST} - {3982874400 -10800 0 ART} - {4001626800 -7200 1 ARST} - {4014324000 -10800 0 ART} - {4033076400 -7200 1 ARST} - {4045773600 -10800 0 ART} - {4064526000 -7200 1 ARST} - {4077223200 -10800 0 ART} - {4095975600 -7200 1 ARST} } diff --git a/library/tzdata/America/Aruba b/library/tzdata/America/Aruba index 92f182d..e02d5fc 100644 --- a/library/tzdata/America/Aruba +++ b/library/tzdata/America/Aruba @@ -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) diff --git a/library/tzdata/America/Asuncion b/library/tzdata/America/Asuncion index fde228c..9ea30da 100644 --- a/library/tzdata/America/Asuncion +++ b/library/tzdata/America/Asuncion @@ -76,184 +76,184 @@ set TZData(:America/Asuncion) { {1224388800 -10800 1 PYST} {1236481200 -14400 0 PYT} {1255838400 -10800 1 PYST} - {1268535600 -14400 0 PYT} - {1287288000 -10800 1 PYST} - {1299985200 -14400 0 PYT} - {1318737600 -10800 1 PYST} - {1331434800 -14400 0 PYT} - {1350792000 -10800 1 PYST} - {1362884400 -14400 0 PYT} - {1382241600 -10800 1 PYST} - {1394334000 -14400 0 PYT} - {1413691200 -10800 1 PYST} - {1425783600 -14400 0 PYT} - {1445140800 -10800 1 PYST} - {1457838000 -14400 0 PYT} - {1476590400 -10800 1 PYST} - {1489287600 -14400 0 PYT} - {1508040000 -10800 1 PYST} - {1520737200 -14400 0 PYT} - {1540094400 -10800 1 PYST} - {1552186800 -14400 0 PYT} - {1571544000 -10800 1 PYST} - {1583636400 -14400 0 PYT} - {1602993600 -10800 1 PYST} - {1615690800 -14400 0 PYT} - {1634443200 -10800 1 PYST} - {1647140400 -14400 0 PYT} - {1665892800 -10800 1 PYST} - {1678590000 -14400 0 PYT} - {1697342400 -10800 1 PYST} - {1710039600 -14400 0 PYT} - {1729396800 -10800 1 PYST} - {1741489200 -14400 0 PYT} - {1760846400 -10800 1 PYST} - {1772938800 -14400 0 PYT} - {1792296000 -10800 1 PYST} - {1804993200 -14400 0 PYT} - {1823745600 -10800 1 PYST} - {1836442800 -14400 0 PYT} - {1855195200 -10800 1 PYST} - {1867892400 -14400 0 PYT} - {1887249600 -10800 1 PYST} - {1899342000 -14400 0 PYT} - {1918699200 -10800 1 PYST} - {1930791600 -14400 0 PYT} - {1950148800 -10800 1 PYST} - {1962846000 -14400 0 PYT} - {1981598400 -10800 1 PYST} - {1994295600 -14400 0 PYT} - {2013048000 -10800 1 PYST} - {2025745200 -14400 0 PYT} - {2044497600 -10800 1 PYST} - {2057194800 -14400 0 PYT} - {2076552000 -10800 1 PYST} - {2088644400 -14400 0 PYT} - {2108001600 -10800 1 PYST} - {2120094000 -14400 0 PYT} - {2139451200 -10800 1 PYST} - {2152148400 -14400 0 PYT} - {2170900800 -10800 1 PYST} - {2183598000 -14400 0 PYT} - {2202350400 -10800 1 PYST} - {2215047600 -14400 0 PYT} - {2234404800 -10800 1 PYST} - {2246497200 -14400 0 PYT} - {2265854400 -10800 1 PYST} - {2277946800 -14400 0 PYT} - {2297304000 -10800 1 PYST} - {2309396400 -14400 0 PYT} - {2328753600 -10800 1 PYST} - {2341450800 -14400 0 PYT} - {2360203200 -10800 1 PYST} - {2372900400 -14400 0 PYT} - {2391652800 -10800 1 PYST} - {2404350000 -14400 0 PYT} - {2423707200 -10800 1 PYST} - {2435799600 -14400 0 PYT} - {2455156800 -10800 1 PYST} - {2467249200 -14400 0 PYT} - {2486606400 -10800 1 PYST} - {2499303600 -14400 0 PYT} - {2518056000 -10800 1 PYST} - {2530753200 -14400 0 PYT} - {2549505600 -10800 1 PYST} - {2562202800 -14400 0 PYT} - {2580955200 -10800 1 PYST} - {2593652400 -14400 0 PYT} - {2613009600 -10800 1 PYST} - {2625102000 -14400 0 PYT} - {2644459200 -10800 1 PYST} - {2656551600 -14400 0 PYT} - {2675908800 -10800 1 PYST} - {2688606000 -14400 0 PYT} - {2707358400 -10800 1 PYST} - {2720055600 -14400 0 PYT} - {2738808000 -10800 1 PYST} - {2751505200 -14400 0 PYT} - {2770862400 -10800 1 PYST} - {2782954800 -14400 0 PYT} - {2802312000 -10800 1 PYST} - {2814404400 -14400 0 PYT} - {2833761600 -10800 1 PYST} - {2846458800 -14400 0 PYT} - {2865211200 -10800 1 PYST} - {2877908400 -14400 0 PYT} - {2896660800 -10800 1 PYST} - {2909358000 -14400 0 PYT} - {2928110400 -10800 1 PYST} - {2940807600 -14400 0 PYT} - {2960164800 -10800 1 PYST} - {2972257200 -14400 0 PYT} - {2991614400 -10800 1 PYST} - {3003706800 -14400 0 PYT} - {3023064000 -10800 1 PYST} - {3035761200 -14400 0 PYT} - {3054513600 -10800 1 PYST} - {3067210800 -14400 0 PYT} - {3085963200 -10800 1 PYST} - {3098660400 -14400 0 PYT} - {3118017600 -10800 1 PYST} - {3130110000 -14400 0 PYT} - {3149467200 -10800 1 PYST} - {3161559600 -14400 0 PYT} - {3180916800 -10800 1 PYST} - {3193009200 -14400 0 PYT} - {3212366400 -10800 1 PYST} - {3225063600 -14400 0 PYT} - {3243816000 -10800 1 PYST} - {3256513200 -14400 0 PYT} - {3275265600 -10800 1 PYST} - {3287962800 -14400 0 PYT} - {3307320000 -10800 1 PYST} - {3319412400 -14400 0 PYT} - {3338769600 -10800 1 PYST} - {3350862000 -14400 0 PYT} - {3370219200 -10800 1 PYST} - {3382916400 -14400 0 PYT} - {3401668800 -10800 1 PYST} - {3414366000 -14400 0 PYT} - {3433118400 -10800 1 PYST} - {3445815600 -14400 0 PYT} - {3464568000 -10800 1 PYST} - {3477265200 -14400 0 PYT} - {3496622400 -10800 1 PYST} - {3508714800 -14400 0 PYT} - {3528072000 -10800 1 PYST} - {3540164400 -14400 0 PYT} - {3559521600 -10800 1 PYST} - {3572218800 -14400 0 PYT} - {3590971200 -10800 1 PYST} - {3603668400 -14400 0 PYT} - {3622420800 -10800 1 PYST} - {3635118000 -14400 0 PYT} - {3654475200 -10800 1 PYST} - {3666567600 -14400 0 PYT} - {3685924800 -10800 1 PYST} - {3698017200 -14400 0 PYT} - {3717374400 -10800 1 PYST} - {3730071600 -14400 0 PYT} - {3748824000 -10800 1 PYST} - {3761521200 -14400 0 PYT} - {3780273600 -10800 1 PYST} - {3792970800 -14400 0 PYT} - {3811723200 -10800 1 PYST} - {3824420400 -14400 0 PYT} - {3843777600 -10800 1 PYST} - {3855870000 -14400 0 PYT} - {3875227200 -10800 1 PYST} - {3887319600 -14400 0 PYT} - {3906676800 -10800 1 PYST} - {3919374000 -14400 0 PYT} - {3938126400 -10800 1 PYST} - {3950823600 -14400 0 PYT} - {3969576000 -10800 1 PYST} - {3982273200 -14400 0 PYT} - {4001630400 -10800 1 PYST} - {4013722800 -14400 0 PYT} - {4033080000 -10800 1 PYST} - {4045172400 -14400 0 PYT} - {4064529600 -10800 1 PYST} - {4076622000 -14400 0 PYT} - {4095979200 -10800 1 PYST} + {1270954800 -14400 0 PYT} + {1286078400 -10800 1 PYST} + {1302404400 -14400 0 PYT} + {1317528000 -10800 1 PYST} + {1333854000 -14400 0 PYT} + {1349582400 -10800 1 PYST} + {1364094000 -14400 0 PYT} + {1381032000 -10800 1 PYST} + {1395543600 -14400 0 PYT} + {1412481600 -10800 1 PYST} + {1426993200 -14400 0 PYT} + {1443931200 -10800 1 PYST} + {1459047600 -14400 0 PYT} + {1475380800 -10800 1 PYST} + {1490497200 -14400 0 PYT} + {1506830400 -10800 1 PYST} + {1521946800 -14400 0 PYT} + {1538884800 -10800 1 PYST} + {1553396400 -14400 0 PYT} + {1570334400 -10800 1 PYST} + {1584846000 -14400 0 PYT} + {1601784000 -10800 1 PYST} + {1616900400 -14400 0 PYT} + {1633233600 -10800 1 PYST} + {1648350000 -14400 0 PYT} + {1664683200 -10800 1 PYST} + {1679799600 -14400 0 PYT} + {1696132800 -10800 1 PYST} + {1711249200 -14400 0 PYT} + {1728187200 -10800 1 PYST} + {1742698800 -14400 0 PYT} + {1759636800 -10800 1 PYST} + {1774148400 -14400 0 PYT} + {1791086400 -10800 1 PYST} + {1806202800 -14400 0 PYT} + {1822536000 -10800 1 PYST} + {1837652400 -14400 0 PYT} + {1853985600 -10800 1 PYST} + {1869102000 -14400 0 PYT} + {1886040000 -10800 1 PYST} + {1900551600 -14400 0 PYT} + {1917489600 -10800 1 PYST} + {1932001200 -14400 0 PYT} + {1948939200 -10800 1 PYST} + {1964055600 -14400 0 PYT} + {1980388800 -10800 1 PYST} + {1995505200 -14400 0 PYT} + {2011838400 -10800 1 PYST} + {2026954800 -14400 0 PYT} + {2043288000 -10800 1 PYST} + {2058404400 -14400 0 PYT} + {2075342400 -10800 1 PYST} + {2089854000 -14400 0 PYT} + {2106792000 -10800 1 PYST} + {2121303600 -14400 0 PYT} + {2138241600 -10800 1 PYST} + {2153358000 -14400 0 PYT} + {2169691200 -10800 1 PYST} + {2184807600 -14400 0 PYT} + {2201140800 -10800 1 PYST} + {2216257200 -14400 0 PYT} + {2233195200 -10800 1 PYST} + {2247706800 -14400 0 PYT} + {2264644800 -10800 1 PYST} + {2279156400 -14400 0 PYT} + {2296094400 -10800 1 PYST} + {2310606000 -14400 0 PYT} + {2327544000 -10800 1 PYST} + {2342660400 -14400 0 PYT} + {2358993600 -10800 1 PYST} + {2374110000 -14400 0 PYT} + {2390443200 -10800 1 PYST} + {2405559600 -14400 0 PYT} + {2422497600 -10800 1 PYST} + {2437009200 -14400 0 PYT} + {2453947200 -10800 1 PYST} + {2468458800 -14400 0 PYT} + {2485396800 -10800 1 PYST} + {2500513200 -14400 0 PYT} + {2516846400 -10800 1 PYST} + {2531962800 -14400 0 PYT} + {2548296000 -10800 1 PYST} + {2563412400 -14400 0 PYT} + {2579745600 -10800 1 PYST} + {2594862000 -14400 0 PYT} + {2611800000 -10800 1 PYST} + {2626311600 -14400 0 PYT} + {2643249600 -10800 1 PYST} + {2657761200 -14400 0 PYT} + {2674699200 -10800 1 PYST} + {2689815600 -14400 0 PYT} + {2706148800 -10800 1 PYST} + {2721265200 -14400 0 PYT} + {2737598400 -10800 1 PYST} + {2752714800 -14400 0 PYT} + {2769652800 -10800 1 PYST} + {2784164400 -14400 0 PYT} + {2801102400 -10800 1 PYST} + {2815614000 -14400 0 PYT} + {2832552000 -10800 1 PYST} + {2847668400 -14400 0 PYT} + {2864001600 -10800 1 PYST} + {2879118000 -14400 0 PYT} + {2895451200 -10800 1 PYST} + {2910567600 -14400 0 PYT} + {2926900800 -10800 1 PYST} + {2942017200 -14400 0 PYT} + {2958955200 -10800 1 PYST} + {2973466800 -14400 0 PYT} + {2990404800 -10800 1 PYST} + {3004916400 -14400 0 PYT} + {3021854400 -10800 1 PYST} + {3036970800 -14400 0 PYT} + {3053304000 -10800 1 PYST} + {3068420400 -14400 0 PYT} + {3084753600 -10800 1 PYST} + {3099870000 -14400 0 PYT} + {3116808000 -10800 1 PYST} + {3131319600 -14400 0 PYT} + {3148257600 -10800 1 PYST} + {3162769200 -14400 0 PYT} + {3179707200 -10800 1 PYST} + {3194218800 -14400 0 PYT} + {3211156800 -10800 1 PYST} + {3226273200 -14400 0 PYT} + {3242606400 -10800 1 PYST} + {3257722800 -14400 0 PYT} + {3274056000 -10800 1 PYST} + {3289172400 -14400 0 PYT} + {3306110400 -10800 1 PYST} + {3320622000 -14400 0 PYT} + {3337560000 -10800 1 PYST} + {3352071600 -14400 0 PYT} + {3369009600 -10800 1 PYST} + {3384126000 -14400 0 PYT} + {3400459200 -10800 1 PYST} + {3415575600 -14400 0 PYT} + {3431908800 -10800 1 PYST} + {3447025200 -14400 0 PYT} + {3463358400 -10800 1 PYST} + {3478474800 -14400 0 PYT} + {3495412800 -10800 1 PYST} + {3509924400 -14400 0 PYT} + {3526862400 -10800 1 PYST} + {3541374000 -14400 0 PYT} + {3558312000 -10800 1 PYST} + {3573428400 -14400 0 PYT} + {3589761600 -10800 1 PYST} + {3604878000 -14400 0 PYT} + {3621211200 -10800 1 PYST} + {3636327600 -14400 0 PYT} + {3653265600 -10800 1 PYST} + {3667777200 -14400 0 PYT} + {3684715200 -10800 1 PYST} + {3699226800 -14400 0 PYT} + {3716164800 -10800 1 PYST} + {3731281200 -14400 0 PYT} + {3747614400 -10800 1 PYST} + {3762730800 -14400 0 PYT} + {3779064000 -10800 1 PYST} + {3794180400 -14400 0 PYT} + {3810513600 -10800 1 PYST} + {3825630000 -14400 0 PYT} + {3842568000 -10800 1 PYST} + {3857079600 -14400 0 PYT} + {3874017600 -10800 1 PYST} + {3888529200 -14400 0 PYT} + {3905467200 -10800 1 PYST} + {3920583600 -14400 0 PYT} + {3936916800 -10800 1 PYST} + {3952033200 -14400 0 PYT} + {3968366400 -10800 1 PYST} + {3983482800 -14400 0 PYT} + {4000420800 -10800 1 PYST} + {4014932400 -14400 0 PYT} + {4031870400 -10800 1 PYST} + {4046382000 -14400 0 PYT} + {4063320000 -10800 1 PYST} + {4077831600 -14400 0 PYT} + {4094769600 -10800 1 PYST} } diff --git a/library/tzdata/America/Atikokan b/library/tzdata/America/Atikokan index ca0ac1c..e72b04f 100755..100644 --- a/library/tzdata/America/Atikokan +++ b/library/tzdata/America/Atikokan @@ -4,7 +4,7 @@ set TZData(:America/Atikokan) { {-9223372036854775808 -21988 0 LMT} {-2366733212 -21600 0 CST} {-1632067200 -18000 1 CDT} - {-1614790800 -21600 0 CST} + {-1615136400 -21600 0 CST} {-923248800 -18000 1 CDT} {-880214400 -18000 0 CWT} {-769395600 -18000 1 CPT} diff --git a/library/tzdata/America/Bahia b/library/tzdata/America/Bahia index b10a939..ac67b71 100644 --- a/library/tzdata/America/Bahia +++ b/library/tzdata/America/Bahia @@ -62,4 +62,7 @@ set TZData(:America/Bahia) { {1036292400 -7200 1 BRST} {1045360800 -10800 0 BRT} {1064368800 -10800 0 BRT} + {1318734000 -7200 0 BRST} + {1330221600 -10800 0 BRT} + {1350784800 -10800 0 BRT} } diff --git a/library/tzdata/America/Bahia_Banderas b/library/tzdata/America/Bahia_Banderas new file mode 100644 index 0000000..8c40a0e --- /dev/null +++ b/library/tzdata/America/Bahia_Banderas @@ -0,0 +1,222 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Bahia_Banderas) { + {-9223372036854775808 -25260 0 LMT} + {-1514739600 -25200 0 MST} + {-1343066400 -21600 0 CST} + {-1234807200 -25200 0 MST} + {-1220292000 -21600 0 CST} + {-1207159200 -25200 0 MST} + {-1191344400 -21600 0 CST} + {-873828000 -25200 0 MST} + {-661539600 -28800 0 PST} + {28800 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {989139600 -21600 1 MDT} + {1001836800 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1175418000 -21600 1 MDT} + {1193558400 -25200 0 MST} + {1207472400 -21600 1 MDT} + {1225008000 -25200 0 MST} + {1238922000 -21600 1 MDT} + {1256457600 -25200 0 MST} + {1270371600 -18000 0 CDT} + {1288508400 -21600 0 CST} + {1301817600 -18000 1 CDT} + {1319958000 -21600 0 CST} + {1333267200 -18000 1 CDT} + {1351407600 -21600 0 CST} + {1365321600 -18000 1 CDT} + {1382857200 -21600 0 CST} + {1396771200 -18000 1 CDT} + {1414306800 -21600 0 CST} + {1428220800 -18000 1 CDT} + {1445756400 -21600 0 CST} + {1459670400 -18000 1 CDT} + {1477810800 -21600 0 CST} + {1491120000 -18000 1 CDT} + {1509260400 -21600 0 CST} + {1522569600 -18000 1 CDT} + {1540710000 -21600 0 CST} + {1554624000 -18000 1 CDT} + {1572159600 -21600 0 CST} + {1586073600 -18000 1 CDT} + {1603609200 -21600 0 CST} + {1617523200 -18000 1 CDT} + {1635663600 -21600 0 CST} + {1648972800 -18000 1 CDT} + {1667113200 -21600 0 CST} + {1680422400 -18000 1 CDT} + {1698562800 -21600 0 CST} + {1712476800 -18000 1 CDT} + {1730012400 -21600 0 CST} + {1743926400 -18000 1 CDT} + {1761462000 -21600 0 CST} + {1775376000 -18000 1 CDT} + {1792911600 -21600 0 CST} + {1806825600 -18000 1 CDT} + {1824966000 -21600 0 CST} + {1838275200 -18000 1 CDT} + {1856415600 -21600 0 CST} + {1869724800 -18000 1 CDT} + {1887865200 -21600 0 CST} + {1901779200 -18000 1 CDT} + {1919314800 -21600 0 CST} + {1933228800 -18000 1 CDT} + {1950764400 -21600 0 CST} + {1964678400 -18000 1 CDT} + {1982818800 -21600 0 CST} + {1996128000 -18000 1 CDT} + {2014268400 -21600 0 CST} + {2027577600 -18000 1 CDT} + {2045718000 -21600 0 CST} + {2059027200 -18000 1 CDT} + {2077167600 -21600 0 CST} + {2091081600 -18000 1 CDT} + {2108617200 -21600 0 CST} + {2122531200 -18000 1 CDT} + {2140066800 -21600 0 CST} + {2153980800 -18000 1 CDT} + {2172121200 -21600 0 CST} + {2185430400 -18000 1 CDT} + {2203570800 -21600 0 CST} + {2216880000 -18000 1 CDT} + {2235020400 -21600 0 CST} + {2248934400 -18000 1 CDT} + {2266470000 -21600 0 CST} + {2280384000 -18000 1 CDT} + {2297919600 -21600 0 CST} + {2311833600 -18000 1 CDT} + {2329369200 -21600 0 CST} + {2343283200 -18000 1 CDT} + {2361423600 -21600 0 CST} + {2374732800 -18000 1 CDT} + {2392873200 -21600 0 CST} + {2406182400 -18000 1 CDT} + {2424322800 -21600 0 CST} + {2438236800 -18000 1 CDT} + {2455772400 -21600 0 CST} + {2469686400 -18000 1 CDT} + {2487222000 -21600 0 CST} + {2501136000 -18000 1 CDT} + {2519276400 -21600 0 CST} + {2532585600 -18000 1 CDT} + {2550726000 -21600 0 CST} + {2564035200 -18000 1 CDT} + {2582175600 -21600 0 CST} + {2596089600 -18000 1 CDT} + {2613625200 -21600 0 CST} + {2627539200 -18000 1 CDT} + {2645074800 -21600 0 CST} + {2658988800 -18000 1 CDT} + {2676524400 -21600 0 CST} + {2690438400 -18000 1 CDT} + {2708578800 -21600 0 CST} + {2721888000 -18000 1 CDT} + {2740028400 -21600 0 CST} + {2753337600 -18000 1 CDT} + {2771478000 -21600 0 CST} + {2785392000 -18000 1 CDT} + {2802927600 -21600 0 CST} + {2816841600 -18000 1 CDT} + {2834377200 -21600 0 CST} + {2848291200 -18000 1 CDT} + {2866431600 -21600 0 CST} + {2879740800 -18000 1 CDT} + {2897881200 -21600 0 CST} + {2911190400 -18000 1 CDT} + {2929330800 -21600 0 CST} + {2942640000 -18000 1 CDT} + {2960780400 -21600 0 CST} + {2974694400 -18000 1 CDT} + {2992230000 -21600 0 CST} + {3006144000 -18000 1 CDT} + {3023679600 -21600 0 CST} + {3037593600 -18000 1 CDT} + {3055734000 -21600 0 CST} + {3069043200 -18000 1 CDT} + {3087183600 -21600 0 CST} + {3100492800 -18000 1 CDT} + {3118633200 -21600 0 CST} + {3132547200 -18000 1 CDT} + {3150082800 -21600 0 CST} + {3163996800 -18000 1 CDT} + {3181532400 -21600 0 CST} + {3195446400 -18000 1 CDT} + {3212982000 -21600 0 CST} + {3226896000 -18000 1 CDT} + {3245036400 -21600 0 CST} + {3258345600 -18000 1 CDT} + {3276486000 -21600 0 CST} + {3289795200 -18000 1 CDT} + {3307935600 -21600 0 CST} + {3321849600 -18000 1 CDT} + {3339385200 -21600 0 CST} + {3353299200 -18000 1 CDT} + {3370834800 -21600 0 CST} + {3384748800 -18000 1 CDT} + {3402889200 -21600 0 CST} + {3416198400 -18000 1 CDT} + {3434338800 -21600 0 CST} + {3447648000 -18000 1 CDT} + {3465788400 -21600 0 CST} + {3479702400 -18000 1 CDT} + {3497238000 -21600 0 CST} + {3511152000 -18000 1 CDT} + {3528687600 -21600 0 CST} + {3542601600 -18000 1 CDT} + {3560137200 -21600 0 CST} + {3574051200 -18000 1 CDT} + {3592191600 -21600 0 CST} + {3605500800 -18000 1 CDT} + {3623641200 -21600 0 CST} + {3636950400 -18000 1 CDT} + {3655090800 -21600 0 CST} + {3669004800 -18000 1 CDT} + {3686540400 -21600 0 CST} + {3700454400 -18000 1 CDT} + {3717990000 -21600 0 CST} + {3731904000 -18000 1 CDT} + {3750044400 -21600 0 CST} + {3763353600 -18000 1 CDT} + {3781494000 -21600 0 CST} + {3794803200 -18000 1 CDT} + {3812943600 -21600 0 CST} + {3826252800 -18000 1 CDT} + {3844393200 -21600 0 CST} + {3858307200 -18000 1 CDT} + {3875842800 -21600 0 CST} + {3889756800 -18000 1 CDT} + {3907292400 -21600 0 CST} + {3921206400 -18000 1 CDT} + {3939346800 -21600 0 CST} + {3952656000 -18000 1 CDT} + {3970796400 -21600 0 CST} + {3984105600 -18000 1 CDT} + {4002246000 -21600 0 CST} + {4016160000 -18000 1 CDT} + {4033695600 -21600 0 CST} + {4047609600 -18000 1 CDT} + {4065145200 -21600 0 CST} + {4079059200 -18000 1 CDT} + {4096594800 -21600 0 CST} +} diff --git a/library/tzdata/America/Barbados b/library/tzdata/America/Barbados index 5c06408..ea17073 100644 --- a/library/tzdata/America/Barbados +++ b/library/tzdata/America/Barbados @@ -1,9 +1,9 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:America/Barbados) { - {-9223372036854775808 -14308 0 LMT} - {-1451678492 -14308 0 BMT} - {-1199217692 -14400 0 AST} + {-9223372036854775808 -14309 0 LMT} + {-1451678491 -14309 0 BMT} + {-1199217691 -14400 0 AST} {234943200 -10800 1 ADT} {244616400 -14400 0 AST} {261554400 -10800 1 ADT} diff --git a/library/tzdata/America/Blanc-Sablon b/library/tzdata/America/Blanc-Sablon index 47f161a..d5485e8 100755..100644 --- a/library/tzdata/America/Blanc-Sablon +++ b/library/tzdata/America/Blanc-Sablon @@ -4,7 +4,7 @@ set TZData(:America/Blanc-Sablon) { {-9223372036854775808 -13708 0 LMT} {-2713896692 -14400 0 AST} {-1632074400 -10800 1 ADT} - {-1614798000 -14400 0 AST} + {-1615143600 -14400 0 AST} {-880221600 -10800 1 AWT} {-769395600 -10800 1 APT} {-765399600 -14400 0 AST} diff --git a/library/tzdata/America/Bogota b/library/tzdata/America/Bogota index f727d17..b28abc1 100644 --- a/library/tzdata/America/Bogota +++ b/library/tzdata/America/Bogota @@ -1,9 +1,9 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:America/Bogota) { - {-9223372036854775808 -17780 0 LMT} - {-2707671820 -17780 0 BMT} - {-1739041420 -18000 0 COT} + {-9223372036854775808 -17776 0 LMT} + {-2707671824 -17776 0 BMT} + {-1739041424 -18000 0 COT} {704869200 -14400 1 COST} {733896000 -18000 0 COT} } diff --git a/library/tzdata/America/Cayman b/library/tzdata/America/Cayman index ab5d12b..3e2e3cc 100644 --- a/library/tzdata/America/Cayman +++ b/library/tzdata/America/Cayman @@ -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} } diff --git a/library/tzdata/America/Costa_Rica b/library/tzdata/America/Costa_Rica index 04420a4..8fc9343 100644 --- a/library/tzdata/America/Costa_Rica +++ b/library/tzdata/America/Costa_Rica @@ -1,9 +1,9 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:America/Costa_Rica) { - {-9223372036854775808 -20180 0 LMT} - {-2524501420 -20180 0 SJMT} - {-1545071020 -21600 0 CST} + {-9223372036854775808 -20173 0 LMT} + {-2524501427 -20173 0 SJMT} + {-1545071027 -21600 0 CST} {288770400 -18000 1 CDT} {297234000 -21600 0 CST} {320220000 -18000 1 CDT} diff --git a/library/tzdata/America/Creston b/library/tzdata/America/Creston new file mode 100644 index 0000000..30369a9 --- /dev/null +++ b/library/tzdata/America/Creston @@ -0,0 +1,8 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Creston) { + {-9223372036854775808 -27964 0 LMT} + {-2713882436 -25200 0 MST} + {-1680454800 -28800 0 PST} + {-1627833600 -25200 0 MST} +} diff --git a/library/tzdata/America/Curacao b/library/tzdata/America/Curacao index 443a319..5189e9c 100644 --- a/library/tzdata/America/Curacao +++ b/library/tzdata/America/Curacao @@ -1,7 +1,7 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:America/Curacao) { - {-9223372036854775808 -16544 0 LMT} - {-1826738656 -16200 0 ANT} + {-9223372036854775808 -16547 0 LMT} + {-1826738653 -16200 0 ANT} {-157750200 -14400 0 AST} } diff --git a/library/tzdata/America/Dawson_Creek b/library/tzdata/America/Dawson_Creek index 9f8c921..a0b5c44 100644 --- a/library/tzdata/America/Dawson_Creek +++ b/library/tzdata/America/Dawson_Creek @@ -4,7 +4,7 @@ set TZData(:America/Dawson_Creek) { {-9223372036854775808 -28856 0 LMT} {-2713881544 -28800 0 PST} {-1632060000 -25200 1 PDT} - {-1614783600 -28800 0 PST} + {-1615129200 -28800 0 PST} {-880207200 -25200 1 PWT} {-769395600 -25200 1 PPT} {-765385200 -28800 0 PST} diff --git a/library/tzdata/America/Dominica b/library/tzdata/America/Dominica index 3503a65..b97cb0e 100644 --- a/library/tzdata/America/Dominica +++ b/library/tzdata/America/Dominica @@ -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) diff --git a/library/tzdata/America/Edmonton b/library/tzdata/America/Edmonton index c4252f8..1ed38be 100644 --- a/library/tzdata/America/Edmonton +++ b/library/tzdata/America/Edmonton @@ -4,7 +4,7 @@ set TZData(:America/Edmonton) { {-9223372036854775808 -27232 0 LMT} {-1998663968 -25200 0 MST} {-1632063600 -21600 1 MDT} - {-1614787200 -25200 0 MST} + {-1615132800 -25200 0 MST} {-1600614000 -21600 1 MDT} {-1596816000 -25200 0 MST} {-1567954800 -21600 1 MDT} diff --git a/library/tzdata/America/Glace_Bay b/library/tzdata/America/Glace_Bay index 84b4822..8ee9eec 100644 --- a/library/tzdata/America/Glace_Bay +++ b/library/tzdata/America/Glace_Bay @@ -4,7 +4,7 @@ set TZData(:America/Glace_Bay) { {-9223372036854775808 -14388 0 LMT} {-2131646412 -14400 0 AST} {-1632074400 -10800 1 ADT} - {-1614798000 -14400 0 AST} + {-1615143600 -14400 0 AST} {-880221600 -10800 1 AWT} {-769395600 -10800 1 APT} {-765399600 -14400 0 AST} diff --git a/library/tzdata/America/Goose_Bay b/library/tzdata/America/Goose_Bay index f93b612..7b7b3d8 100644 --- a/library/tzdata/America/Goose_Bay +++ b/library/tzdata/America/Goose_Bay @@ -5,7 +5,7 @@ set TZData(:America/Goose_Bay) { {-2713895900 -12652 0 NST} {-1640982548 -12652 0 NST} {-1632076148 -9052 1 NDT} - {-1614799748 -12652 0 NST} + {-1615145348 -12652 0 NST} {-1609446548 -12652 0 NST} {-1096921748 -12600 0 NST} {-1072989000 -12600 0 NST} @@ -157,181 +157,182 @@ set TZData(:America/Goose_Bay) { {1268539260 -10800 1 ADT} {1289098860 -14400 0 AST} {1299988860 -10800 1 ADT} - {1320548460 -14400 0 AST} - {1331438460 -10800 1 ADT} - {1351998060 -14400 0 AST} - {1362888060 -10800 1 ADT} - {1383447660 -14400 0 AST} - {1394337660 -10800 1 ADT} - {1414897260 -14400 0 AST} - {1425787260 -10800 1 ADT} - {1446346860 -14400 0 AST} - {1457841660 -10800 1 ADT} - {1478401260 -14400 0 AST} - {1489291260 -10800 1 ADT} - {1509850860 -14400 0 AST} - {1520740860 -10800 1 ADT} - {1541300460 -14400 0 AST} - {1552190460 -10800 1 ADT} - {1572750060 -14400 0 AST} - {1583640060 -10800 1 ADT} - {1604199660 -14400 0 AST} - {1615694460 -10800 1 ADT} - {1636254060 -14400 0 AST} - {1647144060 -10800 1 ADT} - {1667703660 -14400 0 AST} - {1678593660 -10800 1 ADT} - {1699153260 -14400 0 AST} - {1710043260 -10800 1 ADT} - {1730602860 -14400 0 AST} - {1741492860 -10800 1 ADT} - {1762052460 -14400 0 AST} - {1772942460 -10800 1 ADT} - {1793502060 -14400 0 AST} - {1804996860 -10800 1 ADT} - {1825556460 -14400 0 AST} - {1836446460 -10800 1 ADT} - {1857006060 -14400 0 AST} - {1867896060 -10800 1 ADT} - {1888455660 -14400 0 AST} - {1899345660 -10800 1 ADT} - {1919905260 -14400 0 AST} - {1930795260 -10800 1 ADT} - {1951354860 -14400 0 AST} - {1962849660 -10800 1 ADT} - {1983409260 -14400 0 AST} - {1994299260 -10800 1 ADT} - {2014858860 -14400 0 AST} - {2025748860 -10800 1 ADT} - {2046308460 -14400 0 AST} - {2057198460 -10800 1 ADT} - {2077758060 -14400 0 AST} - {2088648060 -10800 1 ADT} - {2109207660 -14400 0 AST} - {2120097660 -10800 1 ADT} - {2140657260 -14400 0 AST} - {2152152060 -10800 1 ADT} - {2172711660 -14400 0 AST} - {2183601660 -10800 1 ADT} - {2204161260 -14400 0 AST} - {2215051260 -10800 1 ADT} - {2235610860 -14400 0 AST} - {2246500860 -10800 1 ADT} - {2267060460 -14400 0 AST} - {2277950460 -10800 1 ADT} - {2298510060 -14400 0 AST} - {2309400060 -10800 1 ADT} - {2329959660 -14400 0 AST} - {2341454460 -10800 1 ADT} - {2362014060 -14400 0 AST} - {2372904060 -10800 1 ADT} - {2393463660 -14400 0 AST} - {2404353660 -10800 1 ADT} - {2424913260 -14400 0 AST} - {2435803260 -10800 1 ADT} - {2456362860 -14400 0 AST} - {2467252860 -10800 1 ADT} - {2487812460 -14400 0 AST} - {2499307260 -10800 1 ADT} - {2519866860 -14400 0 AST} - {2530756860 -10800 1 ADT} - {2551316460 -14400 0 AST} - {2562206460 -10800 1 ADT} - {2582766060 -14400 0 AST} - {2593656060 -10800 1 ADT} - {2614215660 -14400 0 AST} - {2625105660 -10800 1 ADT} - {2645665260 -14400 0 AST} - {2656555260 -10800 1 ADT} - {2677114860 -14400 0 AST} - {2688609660 -10800 1 ADT} - {2709169260 -14400 0 AST} - {2720059260 -10800 1 ADT} - {2740618860 -14400 0 AST} - {2751508860 -10800 1 ADT} - {2772068460 -14400 0 AST} - {2782958460 -10800 1 ADT} - {2803518060 -14400 0 AST} - {2814408060 -10800 1 ADT} - {2834967660 -14400 0 AST} - {2846462460 -10800 1 ADT} - {2867022060 -14400 0 AST} - {2877912060 -10800 1 ADT} - {2898471660 -14400 0 AST} - {2909361660 -10800 1 ADT} - {2929921260 -14400 0 AST} - {2940811260 -10800 1 ADT} - {2961370860 -14400 0 AST} - {2972260860 -10800 1 ADT} - {2992820460 -14400 0 AST} - {3003710460 -10800 1 ADT} - {3024270060 -14400 0 AST} - {3035764860 -10800 1 ADT} - {3056324460 -14400 0 AST} - {3067214460 -10800 1 ADT} - {3087774060 -14400 0 AST} - {3098664060 -10800 1 ADT} - {3119223660 -14400 0 AST} - {3130113660 -10800 1 ADT} - {3150673260 -14400 0 AST} - {3161563260 -10800 1 ADT} - {3182122860 -14400 0 AST} - {3193012860 -10800 1 ADT} - {3213572460 -14400 0 AST} - {3225067260 -10800 1 ADT} - {3245626860 -14400 0 AST} - {3256516860 -10800 1 ADT} - {3277076460 -14400 0 AST} - {3287966460 -10800 1 ADT} - {3308526060 -14400 0 AST} - {3319416060 -10800 1 ADT} - {3339975660 -14400 0 AST} - {3350865660 -10800 1 ADT} - {3371425260 -14400 0 AST} - {3382920060 -10800 1 ADT} - {3403479660 -14400 0 AST} - {3414369660 -10800 1 ADT} - {3434929260 -14400 0 AST} - {3445819260 -10800 1 ADT} - {3466378860 -14400 0 AST} - {3477268860 -10800 1 ADT} - {3497828460 -14400 0 AST} - {3508718460 -10800 1 ADT} - {3529278060 -14400 0 AST} - {3540168060 -10800 1 ADT} - {3560727660 -14400 0 AST} - {3572222460 -10800 1 ADT} - {3592782060 -14400 0 AST} - {3603672060 -10800 1 ADT} - {3624231660 -14400 0 AST} - {3635121660 -10800 1 ADT} - {3655681260 -14400 0 AST} - {3666571260 -10800 1 ADT} - {3687130860 -14400 0 AST} - {3698020860 -10800 1 ADT} - {3718580460 -14400 0 AST} - {3730075260 -10800 1 ADT} - {3750634860 -14400 0 AST} - {3761524860 -10800 1 ADT} - {3782084460 -14400 0 AST} - {3792974460 -10800 1 ADT} - {3813534060 -14400 0 AST} - {3824424060 -10800 1 ADT} - {3844983660 -14400 0 AST} - {3855873660 -10800 1 ADT} - {3876433260 -14400 0 AST} - {3887323260 -10800 1 ADT} - {3907882860 -14400 0 AST} - {3919377660 -10800 1 ADT} - {3939937260 -14400 0 AST} - {3950827260 -10800 1 ADT} - {3971386860 -14400 0 AST} - {3982276860 -10800 1 ADT} - {4002836460 -14400 0 AST} - {4013726460 -10800 1 ADT} - {4034286060 -14400 0 AST} - {4045176060 -10800 1 ADT} - {4065735660 -14400 0 AST} - {4076625660 -10800 1 ADT} - {4097185260 -14400 0 AST} + {1320116400 -10800 0 ADT} + {1320555600 -14400 0 AST} + {1331445600 -10800 1 ADT} + {1352005200 -14400 0 AST} + {1362895200 -10800 1 ADT} + {1383454800 -14400 0 AST} + {1394344800 -10800 1 ADT} + {1414904400 -14400 0 AST} + {1425794400 -10800 1 ADT} + {1446354000 -14400 0 AST} + {1457848800 -10800 1 ADT} + {1478408400 -14400 0 AST} + {1489298400 -10800 1 ADT} + {1509858000 -14400 0 AST} + {1520748000 -10800 1 ADT} + {1541307600 -14400 0 AST} + {1552197600 -10800 1 ADT} + {1572757200 -14400 0 AST} + {1583647200 -10800 1 ADT} + {1604206800 -14400 0 AST} + {1615701600 -10800 1 ADT} + {1636261200 -14400 0 AST} + {1647151200 -10800 1 ADT} + {1667710800 -14400 0 AST} + {1678600800 -10800 1 ADT} + {1699160400 -14400 0 AST} + {1710050400 -10800 1 ADT} + {1730610000 -14400 0 AST} + {1741500000 -10800 1 ADT} + {1762059600 -14400 0 AST} + {1772949600 -10800 1 ADT} + {1793509200 -14400 0 AST} + {1805004000 -10800 1 ADT} + {1825563600 -14400 0 AST} + {1836453600 -10800 1 ADT} + {1857013200 -14400 0 AST} + {1867903200 -10800 1 ADT} + {1888462800 -14400 0 AST} + {1899352800 -10800 1 ADT} + {1919912400 -14400 0 AST} + {1930802400 -10800 1 ADT} + {1951362000 -14400 0 AST} + {1962856800 -10800 1 ADT} + {1983416400 -14400 0 AST} + {1994306400 -10800 1 ADT} + {2014866000 -14400 0 AST} + {2025756000 -10800 1 ADT} + {2046315600 -14400 0 AST} + {2057205600 -10800 1 ADT} + {2077765200 -14400 0 AST} + {2088655200 -10800 1 ADT} + {2109214800 -14400 0 AST} + {2120104800 -10800 1 ADT} + {2140664400 -14400 0 AST} + {2152159200 -10800 1 ADT} + {2172718800 -14400 0 AST} + {2183608800 -10800 1 ADT} + {2204168400 -14400 0 AST} + {2215058400 -10800 1 ADT} + {2235618000 -14400 0 AST} + {2246508000 -10800 1 ADT} + {2267067600 -14400 0 AST} + {2277957600 -10800 1 ADT} + {2298517200 -14400 0 AST} + {2309407200 -10800 1 ADT} + {2329966800 -14400 0 AST} + {2341461600 -10800 1 ADT} + {2362021200 -14400 0 AST} + {2372911200 -10800 1 ADT} + {2393470800 -14400 0 AST} + {2404360800 -10800 1 ADT} + {2424920400 -14400 0 AST} + {2435810400 -10800 1 ADT} + {2456370000 -14400 0 AST} + {2467260000 -10800 1 ADT} + {2487819600 -14400 0 AST} + {2499314400 -10800 1 ADT} + {2519874000 -14400 0 AST} + {2530764000 -10800 1 ADT} + {2551323600 -14400 0 AST} + {2562213600 -10800 1 ADT} + {2582773200 -14400 0 AST} + {2593663200 -10800 1 ADT} + {2614222800 -14400 0 AST} + {2625112800 -10800 1 ADT} + {2645672400 -14400 0 AST} + {2656562400 -10800 1 ADT} + {2677122000 -14400 0 AST} + {2688616800 -10800 1 ADT} + {2709176400 -14400 0 AST} + {2720066400 -10800 1 ADT} + {2740626000 -14400 0 AST} + {2751516000 -10800 1 ADT} + {2772075600 -14400 0 AST} + {2782965600 -10800 1 ADT} + {2803525200 -14400 0 AST} + {2814415200 -10800 1 ADT} + {2834974800 -14400 0 AST} + {2846469600 -10800 1 ADT} + {2867029200 -14400 0 AST} + {2877919200 -10800 1 ADT} + {2898478800 -14400 0 AST} + {2909368800 -10800 1 ADT} + {2929928400 -14400 0 AST} + {2940818400 -10800 1 ADT} + {2961378000 -14400 0 AST} + {2972268000 -10800 1 ADT} + {2992827600 -14400 0 AST} + {3003717600 -10800 1 ADT} + {3024277200 -14400 0 AST} + {3035772000 -10800 1 ADT} + {3056331600 -14400 0 AST} + {3067221600 -10800 1 ADT} + {3087781200 -14400 0 AST} + {3098671200 -10800 1 ADT} + {3119230800 -14400 0 AST} + {3130120800 -10800 1 ADT} + {3150680400 -14400 0 AST} + {3161570400 -10800 1 ADT} + {3182130000 -14400 0 AST} + {3193020000 -10800 1 ADT} + {3213579600 -14400 0 AST} + {3225074400 -10800 1 ADT} + {3245634000 -14400 0 AST} + {3256524000 -10800 1 ADT} + {3277083600 -14400 0 AST} + {3287973600 -10800 1 ADT} + {3308533200 -14400 0 AST} + {3319423200 -10800 1 ADT} + {3339982800 -14400 0 AST} + {3350872800 -10800 1 ADT} + {3371432400 -14400 0 AST} + {3382927200 -10800 1 ADT} + {3403486800 -14400 0 AST} + {3414376800 -10800 1 ADT} + {3434936400 -14400 0 AST} + {3445826400 -10800 1 ADT} + {3466386000 -14400 0 AST} + {3477276000 -10800 1 ADT} + {3497835600 -14400 0 AST} + {3508725600 -10800 1 ADT} + {3529285200 -14400 0 AST} + {3540175200 -10800 1 ADT} + {3560734800 -14400 0 AST} + {3572229600 -10800 1 ADT} + {3592789200 -14400 0 AST} + {3603679200 -10800 1 ADT} + {3624238800 -14400 0 AST} + {3635128800 -10800 1 ADT} + {3655688400 -14400 0 AST} + {3666578400 -10800 1 ADT} + {3687138000 -14400 0 AST} + {3698028000 -10800 1 ADT} + {3718587600 -14400 0 AST} + {3730082400 -10800 1 ADT} + {3750642000 -14400 0 AST} + {3761532000 -10800 1 ADT} + {3782091600 -14400 0 AST} + {3792981600 -10800 1 ADT} + {3813541200 -14400 0 AST} + {3824431200 -10800 1 ADT} + {3844990800 -14400 0 AST} + {3855880800 -10800 1 ADT} + {3876440400 -14400 0 AST} + {3887330400 -10800 1 ADT} + {3907890000 -14400 0 AST} + {3919384800 -10800 1 ADT} + {3939944400 -14400 0 AST} + {3950834400 -10800 1 ADT} + {3971394000 -14400 0 AST} + {3982284000 -10800 1 ADT} + {4002843600 -14400 0 AST} + {4013733600 -10800 1 ADT} + {4034293200 -14400 0 AST} + {4045183200 -10800 1 ADT} + {4065742800 -14400 0 AST} + {4076632800 -10800 1 ADT} + {4097192400 -14400 0 AST} } diff --git a/library/tzdata/America/Grand_Turk b/library/tzdata/America/Grand_Turk index a455dd5..6c8ea4a 100644 --- a/library/tzdata/America/Grand_Turk +++ b/library/tzdata/America/Grand_Turk @@ -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} diff --git a/library/tzdata/America/Grenada b/library/tzdata/America/Grenada index 3c2919b..92300c3 100644 --- a/library/tzdata/America/Grenada +++ b/library/tzdata/America/Grenada @@ -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) diff --git a/library/tzdata/America/Guadeloupe b/library/tzdata/America/Guadeloupe index b1987ce..aba6bd7 100644 --- a/library/tzdata/America/Guadeloupe +++ b/library/tzdata/America/Guadeloupe @@ -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) diff --git a/library/tzdata/America/Halifax b/library/tzdata/America/Halifax index 76f016a..08e3754 100644 --- a/library/tzdata/America/Halifax +++ b/library/tzdata/America/Halifax @@ -7,7 +7,7 @@ set TZData(:America/Halifax) { {-1680469200 -14400 0 AST} {-1640980800 -14400 0 AST} {-1632074400 -10800 1 ADT} - {-1614798000 -14400 0 AST} + {-1615143600 -14400 0 AST} {-1609444800 -14400 0 AST} {-1566763200 -10800 1 ADT} {-1557090000 -14400 0 AST} diff --git a/library/tzdata/America/Havana b/library/tzdata/America/Havana index fd66cb6..89cbc9a 100644 --- a/library/tzdata/America/Havana +++ b/library/tzdata/America/Havana @@ -95,193 +95,191 @@ set TZData(:America/Havana) { {1049605200 -14400 1 CDT} {1067144400 -18000 0 CST} {1081054800 -14400 1 CDT} - {1112504400 -14400 1 CDT} - {1143954000 -14400 1 CDT} {1162098000 -18000 0 CST} {1173589200 -14400 1 CDT} {1193547600 -18000 0 CST} {1205643600 -14400 1 CDT} {1224997200 -18000 0 CST} - {1237093200 -14400 1 CDT} + {1236488400 -14400 1 CDT} {1256446800 -18000 0 CST} - {1269147600 -14400 1 CDT} + {1268542800 -14400 1 CDT} {1288501200 -18000 0 CST} {1300597200 -14400 1 CDT} - {1319950800 -18000 0 CST} - {1332046800 -14400 1 CDT} - {1351400400 -18000 0 CST} - {1363496400 -14400 1 CDT} - {1382850000 -18000 0 CST} - {1394946000 -14400 1 CDT} - {1414299600 -18000 0 CST} - {1426395600 -14400 1 CDT} - {1445749200 -18000 0 CST} - {1458450000 -14400 1 CDT} - {1477803600 -18000 0 CST} - {1489899600 -14400 1 CDT} - {1509253200 -18000 0 CST} - {1521349200 -14400 1 CDT} - {1540702800 -18000 0 CST} - {1552798800 -14400 1 CDT} - {1572152400 -18000 0 CST} - {1584248400 -14400 1 CDT} - {1603602000 -18000 0 CST} - {1616302800 -14400 1 CDT} - {1635656400 -18000 0 CST} - {1647752400 -14400 1 CDT} - {1667106000 -18000 0 CST} - {1679202000 -14400 1 CDT} - {1698555600 -18000 0 CST} - {1710651600 -14400 1 CDT} - {1730005200 -18000 0 CST} - {1742101200 -14400 1 CDT} - {1761454800 -18000 0 CST} - {1773550800 -14400 1 CDT} - {1792904400 -18000 0 CST} - {1805605200 -14400 1 CDT} - {1824958800 -18000 0 CST} - {1837054800 -14400 1 CDT} - {1856408400 -18000 0 CST} - {1868504400 -14400 1 CDT} - {1887858000 -18000 0 CST} - {1899954000 -14400 1 CDT} - {1919307600 -18000 0 CST} - {1931403600 -14400 1 CDT} - {1950757200 -18000 0 CST} - {1963458000 -14400 1 CDT} - {1982811600 -18000 0 CST} - {1994907600 -14400 1 CDT} - {2014261200 -18000 0 CST} - {2026357200 -14400 1 CDT} - {2045710800 -18000 0 CST} - {2057806800 -14400 1 CDT} - {2077160400 -18000 0 CST} - {2089256400 -14400 1 CDT} - {2108610000 -18000 0 CST} - {2120706000 -14400 1 CDT} - {2140059600 -18000 0 CST} - {2152760400 -14400 1 CDT} - {2172114000 -18000 0 CST} - {2184210000 -14400 1 CDT} - {2203563600 -18000 0 CST} - {2215659600 -14400 1 CDT} - {2235013200 -18000 0 CST} - {2247109200 -14400 1 CDT} - {2266462800 -18000 0 CST} - {2278558800 -14400 1 CDT} - {2297912400 -18000 0 CST} - {2310008400 -14400 1 CDT} - {2329362000 -18000 0 CST} - {2342062800 -14400 1 CDT} - {2361416400 -18000 0 CST} - {2373512400 -14400 1 CDT} - {2392866000 -18000 0 CST} - {2404962000 -14400 1 CDT} - {2424315600 -18000 0 CST} - {2436411600 -14400 1 CDT} - {2455765200 -18000 0 CST} - {2467861200 -14400 1 CDT} - {2487214800 -18000 0 CST} - {2499915600 -14400 1 CDT} - {2519269200 -18000 0 CST} - {2531365200 -14400 1 CDT} - {2550718800 -18000 0 CST} - {2562814800 -14400 1 CDT} - {2582168400 -18000 0 CST} - {2594264400 -14400 1 CDT} - {2613618000 -18000 0 CST} - {2625714000 -14400 1 CDT} - {2645067600 -18000 0 CST} - {2657163600 -14400 1 CDT} - {2676517200 -18000 0 CST} - {2689218000 -14400 1 CDT} - {2708571600 -18000 0 CST} - {2720667600 -14400 1 CDT} - {2740021200 -18000 0 CST} - {2752117200 -14400 1 CDT} - {2771470800 -18000 0 CST} - {2783566800 -14400 1 CDT} - {2802920400 -18000 0 CST} - {2815016400 -14400 1 CDT} - {2834370000 -18000 0 CST} - {2847070800 -14400 1 CDT} - {2866424400 -18000 0 CST} - {2878520400 -14400 1 CDT} - {2897874000 -18000 0 CST} - {2909970000 -14400 1 CDT} - {2929323600 -18000 0 CST} - {2941419600 -14400 1 CDT} - {2960773200 -18000 0 CST} - {2972869200 -14400 1 CDT} - {2992222800 -18000 0 CST} - {3004318800 -14400 1 CDT} - {3023672400 -18000 0 CST} - {3036373200 -14400 1 CDT} - {3055726800 -18000 0 CST} - {3067822800 -14400 1 CDT} - {3087176400 -18000 0 CST} - {3099272400 -14400 1 CDT} - {3118626000 -18000 0 CST} - {3130722000 -14400 1 CDT} - {3150075600 -18000 0 CST} - {3162171600 -14400 1 CDT} - {3181525200 -18000 0 CST} - {3193621200 -14400 1 CDT} - {3212974800 -18000 0 CST} - {3225675600 -14400 1 CDT} - {3245029200 -18000 0 CST} - {3257125200 -14400 1 CDT} - {3276478800 -18000 0 CST} - {3288574800 -14400 1 CDT} - {3307928400 -18000 0 CST} - {3320024400 -14400 1 CDT} - {3339378000 -18000 0 CST} - {3351474000 -14400 1 CDT} - {3370827600 -18000 0 CST} - {3383528400 -14400 1 CDT} - {3402882000 -18000 0 CST} - {3414978000 -14400 1 CDT} - {3434331600 -18000 0 CST} - {3446427600 -14400 1 CDT} - {3465781200 -18000 0 CST} - {3477877200 -14400 1 CDT} - {3497230800 -18000 0 CST} - {3509326800 -14400 1 CDT} - {3528680400 -18000 0 CST} - {3540776400 -14400 1 CDT} - {3560130000 -18000 0 CST} - {3572830800 -14400 1 CDT} - {3592184400 -18000 0 CST} - {3604280400 -14400 1 CDT} - {3623634000 -18000 0 CST} - {3635730000 -14400 1 CDT} - {3655083600 -18000 0 CST} - {3667179600 -14400 1 CDT} - {3686533200 -18000 0 CST} - {3698629200 -14400 1 CDT} - {3717982800 -18000 0 CST} - {3730683600 -14400 1 CDT} - {3750037200 -18000 0 CST} - {3762133200 -14400 1 CDT} - {3781486800 -18000 0 CST} - {3793582800 -14400 1 CDT} - {3812936400 -18000 0 CST} - {3825032400 -14400 1 CDT} - {3844386000 -18000 0 CST} - {3856482000 -14400 1 CDT} - {3875835600 -18000 0 CST} - {3887931600 -14400 1 CDT} - {3907285200 -18000 0 CST} - {3919986000 -14400 1 CDT} - {3939339600 -18000 0 CST} - {3951435600 -14400 1 CDT} - {3970789200 -18000 0 CST} - {3982885200 -14400 1 CDT} - {4002238800 -18000 0 CST} - {4014334800 -14400 1 CDT} - {4033688400 -18000 0 CST} - {4045784400 -14400 1 CDT} - {4065138000 -18000 0 CST} - {4077234000 -14400 1 CDT} - {4096587600 -18000 0 CST} + {1321160400 -18000 0 CST} + {1333256400 -14400 1 CDT} + {1352005200 -18000 0 CST} + {1362891600 -14400 1 CDT} + {1383454800 -18000 0 CST} + {1394341200 -14400 1 CDT} + {1414904400 -18000 0 CST} + {1425790800 -14400 1 CDT} + {1446354000 -18000 0 CST} + {1457845200 -14400 1 CDT} + {1478408400 -18000 0 CST} + {1489294800 -14400 1 CDT} + {1509858000 -18000 0 CST} + {1520744400 -14400 1 CDT} + {1541307600 -18000 0 CST} + {1552194000 -14400 1 CDT} + {1572757200 -18000 0 CST} + {1583643600 -14400 1 CDT} + {1604206800 -18000 0 CST} + {1615698000 -14400 1 CDT} + {1636261200 -18000 0 CST} + {1647147600 -14400 1 CDT} + {1667710800 -18000 0 CST} + {1678597200 -14400 1 CDT} + {1699160400 -18000 0 CST} + {1710046800 -14400 1 CDT} + {1730610000 -18000 0 CST} + {1741496400 -14400 1 CDT} + {1762059600 -18000 0 CST} + {1772946000 -14400 1 CDT} + {1793509200 -18000 0 CST} + {1805000400 -14400 1 CDT} + {1825563600 -18000 0 CST} + {1836450000 -14400 1 CDT} + {1857013200 -18000 0 CST} + {1867899600 -14400 1 CDT} + {1888462800 -18000 0 CST} + {1899349200 -14400 1 CDT} + {1919912400 -18000 0 CST} + {1930798800 -14400 1 CDT} + {1951362000 -18000 0 CST} + {1962853200 -14400 1 CDT} + {1983416400 -18000 0 CST} + {1994302800 -14400 1 CDT} + {2014866000 -18000 0 CST} + {2025752400 -14400 1 CDT} + {2046315600 -18000 0 CST} + {2057202000 -14400 1 CDT} + {2077765200 -18000 0 CST} + {2088651600 -14400 1 CDT} + {2109214800 -18000 0 CST} + {2120101200 -14400 1 CDT} + {2140664400 -18000 0 CST} + {2152155600 -14400 1 CDT} + {2172718800 -18000 0 CST} + {2183605200 -14400 1 CDT} + {2204168400 -18000 0 CST} + {2215054800 -14400 1 CDT} + {2235618000 -18000 0 CST} + {2246504400 -14400 1 CDT} + {2267067600 -18000 0 CST} + {2277954000 -14400 1 CDT} + {2298517200 -18000 0 CST} + {2309403600 -14400 1 CDT} + {2329966800 -18000 0 CST} + {2341458000 -14400 1 CDT} + {2362021200 -18000 0 CST} + {2372907600 -14400 1 CDT} + {2393470800 -18000 0 CST} + {2404357200 -14400 1 CDT} + {2424920400 -18000 0 CST} + {2435806800 -14400 1 CDT} + {2456370000 -18000 0 CST} + {2467256400 -14400 1 CDT} + {2487819600 -18000 0 CST} + {2499310800 -14400 1 CDT} + {2519874000 -18000 0 CST} + {2530760400 -14400 1 CDT} + {2551323600 -18000 0 CST} + {2562210000 -14400 1 CDT} + {2582773200 -18000 0 CST} + {2593659600 -14400 1 CDT} + {2614222800 -18000 0 CST} + {2625109200 -14400 1 CDT} + {2645672400 -18000 0 CST} + {2656558800 -14400 1 CDT} + {2677122000 -18000 0 CST} + {2688613200 -14400 1 CDT} + {2709176400 -18000 0 CST} + {2720062800 -14400 1 CDT} + {2740626000 -18000 0 CST} + {2751512400 -14400 1 CDT} + {2772075600 -18000 0 CST} + {2782962000 -14400 1 CDT} + {2803525200 -18000 0 CST} + {2814411600 -14400 1 CDT} + {2834974800 -18000 0 CST} + {2846466000 -14400 1 CDT} + {2867029200 -18000 0 CST} + {2877915600 -14400 1 CDT} + {2898478800 -18000 0 CST} + {2909365200 -14400 1 CDT} + {2929928400 -18000 0 CST} + {2940814800 -14400 1 CDT} + {2961378000 -18000 0 CST} + {2972264400 -14400 1 CDT} + {2992827600 -18000 0 CST} + {3003714000 -14400 1 CDT} + {3024277200 -18000 0 CST} + {3035768400 -14400 1 CDT} + {3056331600 -18000 0 CST} + {3067218000 -14400 1 CDT} + {3087781200 -18000 0 CST} + {3098667600 -14400 1 CDT} + {3119230800 -18000 0 CST} + {3130117200 -14400 1 CDT} + {3150680400 -18000 0 CST} + {3161566800 -14400 1 CDT} + {3182130000 -18000 0 CST} + {3193016400 -14400 1 CDT} + {3213579600 -18000 0 CST} + {3225070800 -14400 1 CDT} + {3245634000 -18000 0 CST} + {3256520400 -14400 1 CDT} + {3277083600 -18000 0 CST} + {3287970000 -14400 1 CDT} + {3308533200 -18000 0 CST} + {3319419600 -14400 1 CDT} + {3339982800 -18000 0 CST} + {3350869200 -14400 1 CDT} + {3371432400 -18000 0 CST} + {3382923600 -14400 1 CDT} + {3403486800 -18000 0 CST} + {3414373200 -14400 1 CDT} + {3434936400 -18000 0 CST} + {3445822800 -14400 1 CDT} + {3466386000 -18000 0 CST} + {3477272400 -14400 1 CDT} + {3497835600 -18000 0 CST} + {3508722000 -14400 1 CDT} + {3529285200 -18000 0 CST} + {3540171600 -14400 1 CDT} + {3560734800 -18000 0 CST} + {3572226000 -14400 1 CDT} + {3592789200 -18000 0 CST} + {3603675600 -14400 1 CDT} + {3624238800 -18000 0 CST} + {3635125200 -14400 1 CDT} + {3655688400 -18000 0 CST} + {3666574800 -14400 1 CDT} + {3687138000 -18000 0 CST} + {3698024400 -14400 1 CDT} + {3718587600 -18000 0 CST} + {3730078800 -14400 1 CDT} + {3750642000 -18000 0 CST} + {3761528400 -14400 1 CDT} + {3782091600 -18000 0 CST} + {3792978000 -14400 1 CDT} + {3813541200 -18000 0 CST} + {3824427600 -14400 1 CDT} + {3844990800 -18000 0 CST} + {3855877200 -14400 1 CDT} + {3876440400 -18000 0 CST} + {3887326800 -14400 1 CDT} + {3907890000 -18000 0 CST} + {3919381200 -14400 1 CDT} + {3939944400 -18000 0 CST} + {3950830800 -14400 1 CDT} + {3971394000 -18000 0 CST} + {3982280400 -14400 1 CDT} + {4002843600 -18000 0 CST} + {4013730000 -14400 1 CDT} + {4034293200 -18000 0 CST} + {4045179600 -14400 1 CDT} + {4065742800 -18000 0 CST} + {4076629200 -14400 1 CDT} + {4097192400 -18000 0 CST} } diff --git a/library/tzdata/America/Indiana/Petersburg b/library/tzdata/America/Indiana/Petersburg index 6992bfc..6992bfc 100755..100644 --- a/library/tzdata/America/Indiana/Petersburg +++ b/library/tzdata/America/Indiana/Petersburg diff --git a/library/tzdata/America/Indiana/Tell_City b/library/tzdata/America/Indiana/Tell_City index 9eebcf7..9eebcf7 100755..100644 --- a/library/tzdata/America/Indiana/Tell_City +++ b/library/tzdata/America/Indiana/Tell_City diff --git a/library/tzdata/America/Indiana/Vincennes b/library/tzdata/America/Indiana/Vincennes index 1af7fc9..1af7fc9 100755..100644 --- a/library/tzdata/America/Indiana/Vincennes +++ b/library/tzdata/America/Indiana/Vincennes diff --git a/library/tzdata/America/Indiana/Winamac b/library/tzdata/America/Indiana/Winamac index fb6cd37..fb6cd37 100755..100644 --- a/library/tzdata/America/Indiana/Winamac +++ b/library/tzdata/America/Indiana/Winamac diff --git a/library/tzdata/America/Jamaica b/library/tzdata/America/Jamaica index 393d90a8..682e47c 100644 --- a/library/tzdata/America/Jamaica +++ b/library/tzdata/America/Jamaica @@ -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} diff --git a/library/tzdata/America/Juneau b/library/tzdata/America/Juneau index 88fe0ce..fead810 100644 --- a/library/tzdata/America/Juneau +++ b/library/tzdata/America/Juneau @@ -32,8 +32,9 @@ set TZData(:America/Juneau) { {278499600 -28800 0 PST} {294228000 -25200 1 PDT} {309949200 -28800 0 PST} - {325677600 -25200 1 PDT} - {341398800 -28800 0 PST} + {325677600 -32400 0 YST} + {325681200 -28800 1 YDT} + {341406000 -28800 0 PST} {357127200 -25200 1 PDT} {372848400 -28800 0 PST} {388576800 -25200 1 PDT} diff --git a/library/tzdata/America/Kralendijk b/library/tzdata/America/Kralendijk new file mode 100644 index 0000000..8b6db86 --- /dev/null +++ b/library/tzdata/America/Kralendijk @@ -0,0 +1,5 @@ +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Curacao)]} { + LoadTimeZoneFile America/Curacao +} +set TZData(:America/Kralendijk) $TZData(:America/Curacao) diff --git a/library/tzdata/America/Lower_Princes b/library/tzdata/America/Lower_Princes new file mode 100644 index 0000000..94c9197 --- /dev/null +++ b/library/tzdata/America/Lower_Princes @@ -0,0 +1,5 @@ +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(America/Curacao)]} { + LoadTimeZoneFile America/Curacao +} +set TZData(:America/Lower_Princes) $TZData(:America/Curacao) diff --git a/library/tzdata/America/Marigot b/library/tzdata/America/Marigot index 9f3f8f6..c2b3873 100644 --- a/library/tzdata/America/Marigot +++ b/library/tzdata/America/Marigot @@ -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) diff --git a/library/tzdata/America/Matamoros b/library/tzdata/America/Matamoros new file mode 100644 index 0000000..2b98652 --- /dev/null +++ b/library/tzdata/America/Matamoros @@ -0,0 +1,219 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Matamoros) { + {-9223372036854775808 -24000 0 LMT} + {-1514743200 -21600 0 CST} + {568015200 -21600 0 CST} + {576057600 -18000 1 CDT} + {594198000 -21600 0 CST} + {599637600 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {891763200 -18000 1 CDT} + {909298800 -21600 0 CST} + {923212800 -18000 1 CDT} + {941353200 -21600 0 CST} + {954662400 -18000 1 CDT} + {972802800 -21600 0 CST} + {989136000 -18000 1 CDT} + {1001833200 -21600 0 CST} + {1018166400 -18000 1 CDT} + {1035702000 -21600 0 CST} + {1049616000 -18000 1 CDT} + {1067151600 -21600 0 CST} + {1081065600 -18000 1 CDT} + {1099206000 -21600 0 CST} + {1112515200 -18000 1 CDT} + {1130655600 -21600 0 CST} + {1143964800 -18000 1 CDT} + {1162105200 -21600 0 CST} + {1175414400 -18000 1 CDT} + {1193554800 -21600 0 CST} + {1207468800 -18000 1 CDT} + {1225004400 -21600 0 CST} + {1238918400 -18000 1 CDT} + {1256454000 -21600 0 CST} + {1262325600 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/Metlakatla b/library/tzdata/America/Metlakatla new file mode 100644 index 0000000..e8af1c0 --- /dev/null +++ b/library/tzdata/America/Metlakatla @@ -0,0 +1,43 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Metlakatla) { + {-9223372036854775808 54822 0 LMT} + {-3225366822 -31578 0 LMT} + {-2188955622 -28800 0 PST} + {-883584000 -28800 0 PST} + {-880207200 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-765385200 -28800 0 PST} + {-757353600 -28800 0 PST} + {-31507200 -28800 0 PST} + {-21477600 -25200 1 PDT} + {-5756400 -28800 0 PST} + {9972000 -25200 1 PDT} + {25693200 -28800 0 PST} + {41421600 -25200 1 PDT} + {57747600 -28800 0 PST} + {73476000 -25200 1 PDT} + {89197200 -28800 0 PST} + {104925600 -25200 1 PDT} + {120646800 -28800 0 PST} + {126698400 -25200 1 PDT} + {152096400 -28800 0 PST} + {162381600 -25200 1 PDT} + {183546000 -28800 0 PST} + {199274400 -25200 1 PDT} + {215600400 -28800 0 PST} + {230724000 -25200 1 PDT} + {247050000 -28800 0 PST} + {262778400 -25200 1 PDT} + {278499600 -28800 0 PST} + {294228000 -25200 1 PDT} + {309949200 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436356000 -28800 0 MeST} +} diff --git a/library/tzdata/America/Moncton b/library/tzdata/America/Moncton index 408e3a1..d286c88 100755..100644 --- a/library/tzdata/America/Moncton +++ b/library/tzdata/America/Moncton @@ -5,7 +5,7 @@ set TZData(:America/Moncton) { {-2715882052 -18000 0 EST} {-2131642800 -14400 0 AST} {-1632074400 -10800 1 ADT} - {-1614798000 -14400 0 AST} + {-1615143600 -14400 0 AST} {-1167595200 -14400 0 AST} {-1153681200 -10800 1 ADT} {-1145822400 -14400 0 AST} diff --git a/library/tzdata/America/Montreal b/library/tzdata/America/Montreal index b9535eb..bebe7dc 100644 --- a/library/tzdata/America/Montreal +++ b/library/tzdata/America/Montreal @@ -7,7 +7,7 @@ set TZData(:America/Montreal) { {-1662753600 -18000 0 EST} {-1640977200 -18000 0 EST} {-1632070800 -14400 1 EDT} - {-1614794400 -18000 0 EST} + {-1615140000 -18000 0 EST} {-1609441200 -18000 0 EST} {-1601742600 -14400 1 EDT} {-1583775000 -18000 0 EST} diff --git a/library/tzdata/America/Montserrat b/library/tzdata/America/Montserrat index 4d82766..0a656d3 100644 --- a/library/tzdata/America/Montserrat +++ b/library/tzdata/America/Montserrat @@ -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) diff --git a/library/tzdata/America/Nassau b/library/tzdata/America/Nassau index 06c5f06..1c35e93 100644 --- a/library/tzdata/America/Nassau +++ b/library/tzdata/America/Nassau @@ -1,8 +1,8 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:America/Nassau) { - {-9223372036854775808 -18564 0 LMT} - {-1825095036 -18000 0 EST} + {-9223372036854775808 -18570 0 LMT} + {-1825095030 -18000 0 EST} {-179341200 -14400 1 EDT} {-163620000 -18000 0 EST} {-147891600 -14400 1 EDT} diff --git a/library/tzdata/America/Nipigon b/library/tzdata/America/Nipigon index e98bb8c..30690aa 100644 --- a/library/tzdata/America/Nipigon +++ b/library/tzdata/America/Nipigon @@ -4,7 +4,7 @@ set TZData(:America/Nipigon) { {-9223372036854775808 -21184 0 LMT} {-2366734016 -18000 0 EST} {-1632070800 -14400 1 EDT} - {-1614794400 -18000 0 EST} + {-1615140000 -18000 0 EST} {-923252400 -14400 1 EDT} {-880218000 -14400 0 EWT} {-769395600 -14400 1 EPT} diff --git a/library/tzdata/America/North_Dakota/Beulah b/library/tzdata/America/North_Dakota/Beulah new file mode 100644 index 0000000..95407c6 --- /dev/null +++ b/library/tzdata/America/North_Dakota/Beulah @@ -0,0 +1,279 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/North_Dakota/Beulah) { + {-9223372036854775808 -24427 0 LMT} + {-2717643600 -25200 0 MST} + {-1633273200 -21600 1 MDT} + {-1615132800 -25200 0 MST} + {-1601823600 -21600 1 MDT} + {-1583683200 -25200 0 MST} + {-880210800 -21600 1 MWT} + {-769395600 -21600 1 MPT} + {-765388800 -25200 0 MST} + {-84380400 -21600 1 MDT} + {-68659200 -25200 0 MST} + {-52930800 -21600 1 MDT} + {-37209600 -25200 0 MST} + {-21481200 -21600 1 MDT} + {-5760000 -25200 0 MST} + {9968400 -21600 1 MDT} + {25689600 -25200 0 MST} + {41418000 -21600 1 MDT} + {57744000 -25200 0 MST} + {73472400 -21600 1 MDT} + {89193600 -25200 0 MST} + {104922000 -21600 1 MDT} + {120643200 -25200 0 MST} + {126694800 -21600 1 MDT} + {152092800 -25200 0 MST} + {162378000 -21600 1 MDT} + {183542400 -25200 0 MST} + {199270800 -21600 1 MDT} + {215596800 -25200 0 MST} + {230720400 -21600 1 MDT} + {247046400 -25200 0 MST} + {262774800 -21600 1 MDT} + {278496000 -25200 0 MST} + {294224400 -21600 1 MDT} + {309945600 -25200 0 MST} + {325674000 -21600 1 MDT} + {341395200 -25200 0 MST} + {357123600 -21600 1 MDT} + {372844800 -25200 0 MST} + {388573200 -21600 1 MDT} + {404899200 -25200 0 MST} + {420022800 -21600 1 MDT} + {436348800 -25200 0 MST} + {452077200 -21600 1 MDT} + {467798400 -25200 0 MST} + {483526800 -21600 1 MDT} + {499248000 -25200 0 MST} + {514976400 -21600 1 MDT} + {530697600 -25200 0 MST} + {544611600 -21600 1 MDT} + {562147200 -25200 0 MST} + {576061200 -21600 1 MDT} + {594201600 -25200 0 MST} + {607510800 -21600 1 MDT} + {625651200 -25200 0 MST} + {638960400 -21600 1 MDT} + {657100800 -25200 0 MST} + {671014800 -21600 1 MDT} + {688550400 -25200 0 MST} + {702464400 -21600 1 MDT} + {720000000 -25200 0 MST} + {733914000 -21600 1 MDT} + {752054400 -25200 0 MST} + {765363600 -21600 1 MDT} + {783504000 -25200 0 MST} + {796813200 -21600 1 MDT} + {814953600 -25200 0 MST} + {828867600 -21600 1 MDT} + {846403200 -25200 0 MST} + {860317200 -21600 1 MDT} + {877852800 -25200 0 MST} + {891766800 -21600 1 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {986115600 -21600 1 MDT} + {1004256000 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1173603600 -21600 1 MDT} + {1194163200 -25200 0 MST} + {1205053200 -21600 1 MDT} + {1225612800 -25200 0 MST} + {1236502800 -21600 1 MDT} + {1257062400 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289120400 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} +} diff --git a/library/tzdata/America/North_Dakota/New_Salem b/library/tzdata/America/North_Dakota/New_Salem index 5a9d229..5a9d229 100755..100644 --- a/library/tzdata/America/North_Dakota/New_Salem +++ b/library/tzdata/America/North_Dakota/New_Salem diff --git a/library/tzdata/America/Ojinaga b/library/tzdata/America/Ojinaga new file mode 100644 index 0000000..1172708 --- /dev/null +++ b/library/tzdata/America/Ojinaga @@ -0,0 +1,222 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Ojinaga) { + {-9223372036854775808 -25060 0 LMT} + {-1514739600 -25200 0 MST} + {-1343066400 -21600 0 CST} + {-1234807200 -25200 0 MST} + {-1220292000 -21600 0 CST} + {-1207159200 -25200 0 MST} + {-1191344400 -21600 0 CST} + {820476000 -21600 0 CST} + {828864000 -18000 1 CDT} + {846399600 -21600 0 CST} + {860313600 -18000 1 CDT} + {877849200 -21600 0 CST} + {883634400 -21600 0 CST} + {891766800 -21600 0 MDT} + {909302400 -25200 0 MST} + {923216400 -21600 1 MDT} + {941356800 -25200 0 MST} + {954666000 -21600 1 MDT} + {972806400 -25200 0 MST} + {989139600 -21600 1 MDT} + {1001836800 -25200 0 MST} + {1018170000 -21600 1 MDT} + {1035705600 -25200 0 MST} + {1049619600 -21600 1 MDT} + {1067155200 -25200 0 MST} + {1081069200 -21600 1 MDT} + {1099209600 -25200 0 MST} + {1112518800 -21600 1 MDT} + {1130659200 -25200 0 MST} + {1143968400 -21600 1 MDT} + {1162108800 -25200 0 MST} + {1175418000 -21600 1 MDT} + {1193558400 -25200 0 MST} + {1207472400 -21600 1 MDT} + {1225008000 -25200 0 MST} + {1238922000 -21600 1 MDT} + {1256457600 -25200 0 MST} + {1262329200 -25200 0 MST} + {1268557200 -21600 1 MDT} + {1289116800 -25200 0 MST} + {1300006800 -21600 1 MDT} + {1320566400 -25200 0 MST} + {1331456400 -21600 1 MDT} + {1352016000 -25200 0 MST} + {1362906000 -21600 1 MDT} + {1383465600 -25200 0 MST} + {1394355600 -21600 1 MDT} + {1414915200 -25200 0 MST} + {1425805200 -21600 1 MDT} + {1446364800 -25200 0 MST} + {1457859600 -21600 1 MDT} + {1478419200 -25200 0 MST} + {1489309200 -21600 1 MDT} + {1509868800 -25200 0 MST} + {1520758800 -21600 1 MDT} + {1541318400 -25200 0 MST} + {1552208400 -21600 1 MDT} + {1572768000 -25200 0 MST} + {1583658000 -21600 1 MDT} + {1604217600 -25200 0 MST} + {1615712400 -21600 1 MDT} + {1636272000 -25200 0 MST} + {1647162000 -21600 1 MDT} + {1667721600 -25200 0 MST} + {1678611600 -21600 1 MDT} + {1699171200 -25200 0 MST} + {1710061200 -21600 1 MDT} + {1730620800 -25200 0 MST} + {1741510800 -21600 1 MDT} + {1762070400 -25200 0 MST} + {1772960400 -21600 1 MDT} + {1793520000 -25200 0 MST} + {1805014800 -21600 1 MDT} + {1825574400 -25200 0 MST} + {1836464400 -21600 1 MDT} + {1857024000 -25200 0 MST} + {1867914000 -21600 1 MDT} + {1888473600 -25200 0 MST} + {1899363600 -21600 1 MDT} + {1919923200 -25200 0 MST} + {1930813200 -21600 1 MDT} + {1951372800 -25200 0 MST} + {1962867600 -21600 1 MDT} + {1983427200 -25200 0 MST} + {1994317200 -21600 1 MDT} + {2014876800 -25200 0 MST} + {2025766800 -21600 1 MDT} + {2046326400 -25200 0 MST} + {2057216400 -21600 1 MDT} + {2077776000 -25200 0 MST} + {2088666000 -21600 1 MDT} + {2109225600 -25200 0 MST} + {2120115600 -21600 1 MDT} + {2140675200 -25200 0 MST} + {2152170000 -21600 1 MDT} + {2172729600 -25200 0 MST} + {2183619600 -21600 1 MDT} + {2204179200 -25200 0 MST} + {2215069200 -21600 1 MDT} + {2235628800 -25200 0 MST} + {2246518800 -21600 1 MDT} + {2267078400 -25200 0 MST} + {2277968400 -21600 1 MDT} + {2298528000 -25200 0 MST} + {2309418000 -21600 1 MDT} + {2329977600 -25200 0 MST} + {2341472400 -21600 1 MDT} + {2362032000 -25200 0 MST} + {2372922000 -21600 1 MDT} + {2393481600 -25200 0 MST} + {2404371600 -21600 1 MDT} + {2424931200 -25200 0 MST} + {2435821200 -21600 1 MDT} + {2456380800 -25200 0 MST} + {2467270800 -21600 1 MDT} + {2487830400 -25200 0 MST} + {2499325200 -21600 1 MDT} + {2519884800 -25200 0 MST} + {2530774800 -21600 1 MDT} + {2551334400 -25200 0 MST} + {2562224400 -21600 1 MDT} + {2582784000 -25200 0 MST} + {2593674000 -21600 1 MDT} + {2614233600 -25200 0 MST} + {2625123600 -21600 1 MDT} + {2645683200 -25200 0 MST} + {2656573200 -21600 1 MDT} + {2677132800 -25200 0 MST} + {2688627600 -21600 1 MDT} + {2709187200 -25200 0 MST} + {2720077200 -21600 1 MDT} + {2740636800 -25200 0 MST} + {2751526800 -21600 1 MDT} + {2772086400 -25200 0 MST} + {2782976400 -21600 1 MDT} + {2803536000 -25200 0 MST} + {2814426000 -21600 1 MDT} + {2834985600 -25200 0 MST} + {2846480400 -21600 1 MDT} + {2867040000 -25200 0 MST} + {2877930000 -21600 1 MDT} + {2898489600 -25200 0 MST} + {2909379600 -21600 1 MDT} + {2929939200 -25200 0 MST} + {2940829200 -21600 1 MDT} + {2961388800 -25200 0 MST} + {2972278800 -21600 1 MDT} + {2992838400 -25200 0 MST} + {3003728400 -21600 1 MDT} + {3024288000 -25200 0 MST} + {3035782800 -21600 1 MDT} + {3056342400 -25200 0 MST} + {3067232400 -21600 1 MDT} + {3087792000 -25200 0 MST} + {3098682000 -21600 1 MDT} + {3119241600 -25200 0 MST} + {3130131600 -21600 1 MDT} + {3150691200 -25200 0 MST} + {3161581200 -21600 1 MDT} + {3182140800 -25200 0 MST} + {3193030800 -21600 1 MDT} + {3213590400 -25200 0 MST} + {3225085200 -21600 1 MDT} + {3245644800 -25200 0 MST} + {3256534800 -21600 1 MDT} + {3277094400 -25200 0 MST} + {3287984400 -21600 1 MDT} + {3308544000 -25200 0 MST} + {3319434000 -21600 1 MDT} + {3339993600 -25200 0 MST} + {3350883600 -21600 1 MDT} + {3371443200 -25200 0 MST} + {3382938000 -21600 1 MDT} + {3403497600 -25200 0 MST} + {3414387600 -21600 1 MDT} + {3434947200 -25200 0 MST} + {3445837200 -21600 1 MDT} + {3466396800 -25200 0 MST} + {3477286800 -21600 1 MDT} + {3497846400 -25200 0 MST} + {3508736400 -21600 1 MDT} + {3529296000 -25200 0 MST} + {3540186000 -21600 1 MDT} + {3560745600 -25200 0 MST} + {3572240400 -21600 1 MDT} + {3592800000 -25200 0 MST} + {3603690000 -21600 1 MDT} + {3624249600 -25200 0 MST} + {3635139600 -21600 1 MDT} + {3655699200 -25200 0 MST} + {3666589200 -21600 1 MDT} + {3687148800 -25200 0 MST} + {3698038800 -21600 1 MDT} + {3718598400 -25200 0 MST} + {3730093200 -21600 1 MDT} + {3750652800 -25200 0 MST} + {3761542800 -21600 1 MDT} + {3782102400 -25200 0 MST} + {3792992400 -21600 1 MDT} + {3813552000 -25200 0 MST} + {3824442000 -21600 1 MDT} + {3845001600 -25200 0 MST} + {3855891600 -21600 1 MDT} + {3876451200 -25200 0 MST} + {3887341200 -21600 1 MDT} + {3907900800 -25200 0 MST} + {3919395600 -21600 1 MDT} + {3939955200 -25200 0 MST} + {3950845200 -21600 1 MDT} + {3971404800 -25200 0 MST} + {3982294800 -21600 1 MDT} + {4002854400 -25200 0 MST} + {4013744400 -21600 1 MDT} + {4034304000 -25200 0 MST} + {4045194000 -21600 1 MDT} + {4065753600 -25200 0 MST} + {4076643600 -21600 1 MDT} + {4097203200 -25200 0 MST} +} diff --git a/library/tzdata/America/Port-au-Prince b/library/tzdata/America/Port-au-Prince index 04ee62c..f1d7fc4 100644 --- a/library/tzdata/America/Port-au-Prince +++ b/library/tzdata/America/Port-au-Prince @@ -38,4 +38,180 @@ set TZData(:America/Port-au-Prince) { {1130644800 -18000 0 EST} {1143954000 -14400 1 EDT} {1162094400 -18000 0 EST} + {1331449200 -14400 1 EDT} + {1352008800 -18000 0 EST} + {1362898800 -14400 1 EDT} + {1383458400 -18000 0 EST} + {1394348400 -14400 1 EDT} + {1414908000 -18000 0 EST} + {1425798000 -14400 1 EDT} + {1446357600 -18000 0 EST} + {1457852400 -14400 1 EDT} + {1478412000 -18000 0 EST} + {1489302000 -14400 1 EDT} + {1509861600 -18000 0 EST} + {1520751600 -14400 1 EDT} + {1541311200 -18000 0 EST} + {1552201200 -14400 1 EDT} + {1572760800 -18000 0 EST} + {1583650800 -14400 1 EDT} + {1604210400 -18000 0 EST} + {1615705200 -14400 1 EDT} + {1636264800 -18000 0 EST} + {1647154800 -14400 1 EDT} + {1667714400 -18000 0 EST} + {1678604400 -14400 1 EDT} + {1699164000 -18000 0 EST} + {1710054000 -14400 1 EDT} + {1730613600 -18000 0 EST} + {1741503600 -14400 1 EDT} + {1762063200 -18000 0 EST} + {1772953200 -14400 1 EDT} + {1793512800 -18000 0 EST} + {1805007600 -14400 1 EDT} + {1825567200 -18000 0 EST} + {1836457200 -14400 1 EDT} + {1857016800 -18000 0 EST} + {1867906800 -14400 1 EDT} + {1888466400 -18000 0 EST} + {1899356400 -14400 1 EDT} + {1919916000 -18000 0 EST} + {1930806000 -14400 1 EDT} + {1951365600 -18000 0 EST} + {1962860400 -14400 1 EDT} + {1983420000 -18000 0 EST} + {1994310000 -14400 1 EDT} + {2014869600 -18000 0 EST} + {2025759600 -14400 1 EDT} + {2046319200 -18000 0 EST} + {2057209200 -14400 1 EDT} + {2077768800 -18000 0 EST} + {2088658800 -14400 1 EDT} + {2109218400 -18000 0 EST} + {2120108400 -14400 1 EDT} + {2140668000 -18000 0 EST} + {2152162800 -14400 1 EDT} + {2172722400 -18000 0 EST} + {2183612400 -14400 1 EDT} + {2204172000 -18000 0 EST} + {2215062000 -14400 1 EDT} + {2235621600 -18000 0 EST} + {2246511600 -14400 1 EDT} + {2267071200 -18000 0 EST} + {2277961200 -14400 1 EDT} + {2298520800 -18000 0 EST} + {2309410800 -14400 1 EDT} + {2329970400 -18000 0 EST} + {2341465200 -14400 1 EDT} + {2362024800 -18000 0 EST} + {2372914800 -14400 1 EDT} + {2393474400 -18000 0 EST} + {2404364400 -14400 1 EDT} + {2424924000 -18000 0 EST} + {2435814000 -14400 1 EDT} + {2456373600 -18000 0 EST} + {2467263600 -14400 1 EDT} + {2487823200 -18000 0 EST} + {2499318000 -14400 1 EDT} + {2519877600 -18000 0 EST} + {2530767600 -14400 1 EDT} + {2551327200 -18000 0 EST} + {2562217200 -14400 1 EDT} + {2582776800 -18000 0 EST} + {2593666800 -14400 1 EDT} + {2614226400 -18000 0 EST} + {2625116400 -14400 1 EDT} + {2645676000 -18000 0 EST} + {2656566000 -14400 1 EDT} + {2677125600 -18000 0 EST} + {2688620400 -14400 1 EDT} + {2709180000 -18000 0 EST} + {2720070000 -14400 1 EDT} + {2740629600 -18000 0 EST} + {2751519600 -14400 1 EDT} + {2772079200 -18000 0 EST} + {2782969200 -14400 1 EDT} + {2803528800 -18000 0 EST} + {2814418800 -14400 1 EDT} + {2834978400 -18000 0 EST} + {2846473200 -14400 1 EDT} + {2867032800 -18000 0 EST} + {2877922800 -14400 1 EDT} + {2898482400 -18000 0 EST} + {2909372400 -14400 1 EDT} + {2929932000 -18000 0 EST} + {2940822000 -14400 1 EDT} + {2961381600 -18000 0 EST} + {2972271600 -14400 1 EDT} + {2992831200 -18000 0 EST} + {3003721200 -14400 1 EDT} + {3024280800 -18000 0 EST} + {3035775600 -14400 1 EDT} + {3056335200 -18000 0 EST} + {3067225200 -14400 1 EDT} + {3087784800 -18000 0 EST} + {3098674800 -14400 1 EDT} + {3119234400 -18000 0 EST} + {3130124400 -14400 1 EDT} + {3150684000 -18000 0 EST} + {3161574000 -14400 1 EDT} + {3182133600 -18000 0 EST} + {3193023600 -14400 1 EDT} + {3213583200 -18000 0 EST} + {3225078000 -14400 1 EDT} + {3245637600 -18000 0 EST} + {3256527600 -14400 1 EDT} + {3277087200 -18000 0 EST} + {3287977200 -14400 1 EDT} + {3308536800 -18000 0 EST} + {3319426800 -14400 1 EDT} + {3339986400 -18000 0 EST} + {3350876400 -14400 1 EDT} + {3371436000 -18000 0 EST} + {3382930800 -14400 1 EDT} + {3403490400 -18000 0 EST} + {3414380400 -14400 1 EDT} + {3434940000 -18000 0 EST} + {3445830000 -14400 1 EDT} + {3466389600 -18000 0 EST} + {3477279600 -14400 1 EDT} + {3497839200 -18000 0 EST} + {3508729200 -14400 1 EDT} + {3529288800 -18000 0 EST} + {3540178800 -14400 1 EDT} + {3560738400 -18000 0 EST} + {3572233200 -14400 1 EDT} + {3592792800 -18000 0 EST} + {3603682800 -14400 1 EDT} + {3624242400 -18000 0 EST} + {3635132400 -14400 1 EDT} + {3655692000 -18000 0 EST} + {3666582000 -14400 1 EDT} + {3687141600 -18000 0 EST} + {3698031600 -14400 1 EDT} + {3718591200 -18000 0 EST} + {3730086000 -14400 1 EDT} + {3750645600 -18000 0 EST} + {3761535600 -14400 1 EDT} + {3782095200 -18000 0 EST} + {3792985200 -14400 1 EDT} + {3813544800 -18000 0 EST} + {3824434800 -14400 1 EDT} + {3844994400 -18000 0 EST} + {3855884400 -14400 1 EDT} + {3876444000 -18000 0 EST} + {3887334000 -14400 1 EDT} + {3907893600 -18000 0 EST} + {3919388400 -14400 1 EDT} + {3939948000 -18000 0 EST} + {3950838000 -14400 1 EDT} + {3971397600 -18000 0 EST} + {3982287600 -14400 1 EDT} + {4002847200 -18000 0 EST} + {4013737200 -14400 1 EDT} + {4034296800 -18000 0 EST} + {4045186800 -14400 1 EDT} + {4065746400 -18000 0 EST} + {4076636400 -14400 1 EDT} + {4097196000 -18000 0 EST} } diff --git a/library/tzdata/America/Rainy_River b/library/tzdata/America/Rainy_River index 331bac6..a2b11aa 100644 --- a/library/tzdata/America/Rainy_River +++ b/library/tzdata/America/Rainy_River @@ -4,7 +4,7 @@ set TZData(:America/Rainy_River) { {-9223372036854775808 -22696 0 LMT} {-2366732504 -21600 0 CST} {-1632067200 -18000 1 CDT} - {-1614790800 -21600 0 CST} + {-1615136400 -21600 0 CST} {-923248800 -18000 1 CDT} {-880214400 -18000 0 CWT} {-769395600 -18000 1 CPT} diff --git a/library/tzdata/America/Regina b/library/tzdata/America/Regina index 2030d75..e42b5be 100644 --- a/library/tzdata/America/Regina +++ b/library/tzdata/America/Regina @@ -4,7 +4,7 @@ set TZData(:America/Regina) { {-9223372036854775808 -25116 0 LMT} {-2030202084 -25200 0 MST} {-1632063600 -21600 1 MDT} - {-1614787200 -25200 0 MST} + {-1615132800 -25200 0 MST} {-1251651600 -21600 1 MDT} {-1238349600 -25200 0 MST} {-1220202000 -21600 1 MDT} diff --git a/library/tzdata/America/Resolute b/library/tzdata/America/Resolute index d82a837..b4c0bab 100755..100644 --- a/library/tzdata/America/Resolute +++ b/library/tzdata/America/Resolute @@ -59,4 +59,190 @@ set TZData(:America/Resolute) { {1130655600 -21600 0 CST} {1143964800 -18000 1 CDT} {1162108800 -18000 0 EST} + {1173600000 -18000 0 CDT} + {1194159600 -21600 0 CST} + {1205049600 -18000 1 CDT} + {1225609200 -21600 0 CST} + {1236499200 -18000 1 CDT} + {1257058800 -21600 0 CST} + {1268553600 -18000 1 CDT} + {1289113200 -21600 0 CST} + {1300003200 -18000 1 CDT} + {1320562800 -21600 0 CST} + {1331452800 -18000 1 CDT} + {1352012400 -21600 0 CST} + {1362902400 -18000 1 CDT} + {1383462000 -21600 0 CST} + {1394352000 -18000 1 CDT} + {1414911600 -21600 0 CST} + {1425801600 -18000 1 CDT} + {1446361200 -21600 0 CST} + {1457856000 -18000 1 CDT} + {1478415600 -21600 0 CST} + {1489305600 -18000 1 CDT} + {1509865200 -21600 0 CST} + {1520755200 -18000 1 CDT} + {1541314800 -21600 0 CST} + {1552204800 -18000 1 CDT} + {1572764400 -21600 0 CST} + {1583654400 -18000 1 CDT} + {1604214000 -21600 0 CST} + {1615708800 -18000 1 CDT} + {1636268400 -21600 0 CST} + {1647158400 -18000 1 CDT} + {1667718000 -21600 0 CST} + {1678608000 -18000 1 CDT} + {1699167600 -21600 0 CST} + {1710057600 -18000 1 CDT} + {1730617200 -21600 0 CST} + {1741507200 -18000 1 CDT} + {1762066800 -21600 0 CST} + {1772956800 -18000 1 CDT} + {1793516400 -21600 0 CST} + {1805011200 -18000 1 CDT} + {1825570800 -21600 0 CST} + {1836460800 -18000 1 CDT} + {1857020400 -21600 0 CST} + {1867910400 -18000 1 CDT} + {1888470000 -21600 0 CST} + {1899360000 -18000 1 CDT} + {1919919600 -21600 0 CST} + {1930809600 -18000 1 CDT} + {1951369200 -21600 0 CST} + {1962864000 -18000 1 CDT} + {1983423600 -21600 0 CST} + {1994313600 -18000 1 CDT} + {2014873200 -21600 0 CST} + {2025763200 -18000 1 CDT} + {2046322800 -21600 0 CST} + {2057212800 -18000 1 CDT} + {2077772400 -21600 0 CST} + {2088662400 -18000 1 CDT} + {2109222000 -21600 0 CST} + {2120112000 -18000 1 CDT} + {2140671600 -21600 0 CST} + {2152166400 -18000 1 CDT} + {2172726000 -21600 0 CST} + {2183616000 -18000 1 CDT} + {2204175600 -21600 0 CST} + {2215065600 -18000 1 CDT} + {2235625200 -21600 0 CST} + {2246515200 -18000 1 CDT} + {2267074800 -21600 0 CST} + {2277964800 -18000 1 CDT} + {2298524400 -21600 0 CST} + {2309414400 -18000 1 CDT} + {2329974000 -21600 0 CST} + {2341468800 -18000 1 CDT} + {2362028400 -21600 0 CST} + {2372918400 -18000 1 CDT} + {2393478000 -21600 0 CST} + {2404368000 -18000 1 CDT} + {2424927600 -21600 0 CST} + {2435817600 -18000 1 CDT} + {2456377200 -21600 0 CST} + {2467267200 -18000 1 CDT} + {2487826800 -21600 0 CST} + {2499321600 -18000 1 CDT} + {2519881200 -21600 0 CST} + {2530771200 -18000 1 CDT} + {2551330800 -21600 0 CST} + {2562220800 -18000 1 CDT} + {2582780400 -21600 0 CST} + {2593670400 -18000 1 CDT} + {2614230000 -21600 0 CST} + {2625120000 -18000 1 CDT} + {2645679600 -21600 0 CST} + {2656569600 -18000 1 CDT} + {2677129200 -21600 0 CST} + {2688624000 -18000 1 CDT} + {2709183600 -21600 0 CST} + {2720073600 -18000 1 CDT} + {2740633200 -21600 0 CST} + {2751523200 -18000 1 CDT} + {2772082800 -21600 0 CST} + {2782972800 -18000 1 CDT} + {2803532400 -21600 0 CST} + {2814422400 -18000 1 CDT} + {2834982000 -21600 0 CST} + {2846476800 -18000 1 CDT} + {2867036400 -21600 0 CST} + {2877926400 -18000 1 CDT} + {2898486000 -21600 0 CST} + {2909376000 -18000 1 CDT} + {2929935600 -21600 0 CST} + {2940825600 -18000 1 CDT} + {2961385200 -21600 0 CST} + {2972275200 -18000 1 CDT} + {2992834800 -21600 0 CST} + {3003724800 -18000 1 CDT} + {3024284400 -21600 0 CST} + {3035779200 -18000 1 CDT} + {3056338800 -21600 0 CST} + {3067228800 -18000 1 CDT} + {3087788400 -21600 0 CST} + {3098678400 -18000 1 CDT} + {3119238000 -21600 0 CST} + {3130128000 -18000 1 CDT} + {3150687600 -21600 0 CST} + {3161577600 -18000 1 CDT} + {3182137200 -21600 0 CST} + {3193027200 -18000 1 CDT} + {3213586800 -21600 0 CST} + {3225081600 -18000 1 CDT} + {3245641200 -21600 0 CST} + {3256531200 -18000 1 CDT} + {3277090800 -21600 0 CST} + {3287980800 -18000 1 CDT} + {3308540400 -21600 0 CST} + {3319430400 -18000 1 CDT} + {3339990000 -21600 0 CST} + {3350880000 -18000 1 CDT} + {3371439600 -21600 0 CST} + {3382934400 -18000 1 CDT} + {3403494000 -21600 0 CST} + {3414384000 -18000 1 CDT} + {3434943600 -21600 0 CST} + {3445833600 -18000 1 CDT} + {3466393200 -21600 0 CST} + {3477283200 -18000 1 CDT} + {3497842800 -21600 0 CST} + {3508732800 -18000 1 CDT} + {3529292400 -21600 0 CST} + {3540182400 -18000 1 CDT} + {3560742000 -21600 0 CST} + {3572236800 -18000 1 CDT} + {3592796400 -21600 0 CST} + {3603686400 -18000 1 CDT} + {3624246000 -21600 0 CST} + {3635136000 -18000 1 CDT} + {3655695600 -21600 0 CST} + {3666585600 -18000 1 CDT} + {3687145200 -21600 0 CST} + {3698035200 -18000 1 CDT} + {3718594800 -21600 0 CST} + {3730089600 -18000 1 CDT} + {3750649200 -21600 0 CST} + {3761539200 -18000 1 CDT} + {3782098800 -21600 0 CST} + {3792988800 -18000 1 CDT} + {3813548400 -21600 0 CST} + {3824438400 -18000 1 CDT} + {3844998000 -21600 0 CST} + {3855888000 -18000 1 CDT} + {3876447600 -21600 0 CST} + {3887337600 -18000 1 CDT} + {3907897200 -21600 0 CST} + {3919392000 -18000 1 CDT} + {3939951600 -21600 0 CST} + {3950841600 -18000 1 CDT} + {3971401200 -21600 0 CST} + {3982291200 -18000 1 CDT} + {4002850800 -21600 0 CST} + {4013740800 -18000 1 CDT} + {4034300400 -21600 0 CST} + {4045190400 -18000 1 CDT} + {4065750000 -21600 0 CST} + {4076640000 -18000 1 CDT} + {4097199600 -21600 0 CST} } diff --git a/library/tzdata/America/Santa_Isabel b/library/tzdata/America/Santa_Isabel new file mode 100644 index 0000000..87cb5a8 --- /dev/null +++ b/library/tzdata/America/Santa_Isabel @@ -0,0 +1,284 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Santa_Isabel) { + {-9223372036854775808 -27568 0 LMT} + {-1514736000 -25200 0 MST} + {-1451667600 -28800 0 PST} + {-1343062800 -25200 0 MST} + {-1234803600 -28800 0 PST} + {-1222963200 -25200 1 PDT} + {-1207242000 -28800 0 PST} + {-873820800 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-761677200 -28800 0 PST} + {-686073600 -25200 1 PDT} + {-661539600 -28800 0 PST} + {-504892800 -28800 0 PST} + {-495036000 -25200 1 PDT} + {-481734000 -28800 0 PST} + {-463586400 -25200 1 PDT} + {-450284400 -28800 0 PST} + {-431532000 -25200 1 PDT} + {-418230000 -28800 0 PST} + {-400082400 -25200 1 PDT} + {-386780400 -28800 0 PST} + {-368632800 -25200 1 PDT} + {-355330800 -28800 0 PST} + {-337183200 -25200 1 PDT} + {-323881200 -28800 0 PST} + {-305733600 -25200 1 PDT} + {-292431600 -28800 0 PST} + {-283968000 -28800 0 PST} + {189331200 -28800 0 PST} + {199274400 -25200 1 PDT} + {215600400 -28800 0 PST} + {230724000 -25200 1 PDT} + {247050000 -28800 0 PST} + {262778400 -25200 1 PDT} + {278499600 -28800 0 PST} + {294228000 -25200 1 PDT} + {309949200 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {436352400 -28800 0 PST} + {452080800 -25200 1 PDT} + {467802000 -28800 0 PST} + {483530400 -25200 1 PDT} + {499251600 -28800 0 PST} + {514980000 -25200 1 PDT} + {530701200 -28800 0 PST} + {544615200 -25200 1 PDT} + {562150800 -28800 0 PST} + {576064800 -25200 1 PDT} + {594205200 -28800 0 PST} + {607514400 -25200 1 PDT} + {625654800 -28800 0 PST} + {638964000 -25200 1 PDT} + {657104400 -28800 0 PST} + {671018400 -25200 1 PDT} + {688554000 -28800 0 PST} + {702468000 -25200 1 PDT} + {720003600 -28800 0 PST} + {733917600 -25200 1 PDT} + {752058000 -28800 0 PST} + {765367200 -25200 1 PDT} + {783507600 -28800 0 PST} + {796816800 -25200 1 PDT} + {814957200 -28800 0 PST} + {820483200 -28800 0 PST} + {828871200 -25200 1 PDT} + {846406800 -28800 0 PST} + {860320800 -25200 1 PDT} + {877856400 -28800 0 PST} + {891770400 -25200 1 PDT} + {909306000 -28800 0 PST} + {923220000 -25200 1 PDT} + {941360400 -28800 0 PST} + {954669600 -25200 1 PDT} + {972810000 -28800 0 PST} + {978336000 -28800 0 PST} + {986119200 -25200 1 PDT} + {1004259600 -28800 0 PST} + {1014192000 -28800 0 PST} + {1018173600 -25200 1 PDT} + {1035709200 -28800 0 PST} + {1049623200 -25200 1 PDT} + {1067158800 -28800 0 PST} + {1081072800 -25200 1 PDT} + {1099213200 -28800 0 PST} + {1112522400 -25200 1 PDT} + {1130662800 -28800 0 PST} + {1143972000 -25200 1 PDT} + {1162112400 -28800 0 PST} + {1175421600 -25200 1 PDT} + {1193562000 -28800 0 PST} + {1207476000 -25200 1 PDT} + {1225011600 -28800 0 PST} + {1238925600 -25200 1 PDT} + {1256461200 -28800 0 PST} + {1270375200 -25200 1 PDT} + {1288515600 -28800 0 PST} + {1301824800 -25200 1 PDT} + {1319965200 -28800 0 PST} + {1333274400 -25200 1 PDT} + {1351414800 -28800 0 PST} + {1365328800 -25200 1 PDT} + {1382864400 -28800 0 PST} + {1396778400 -25200 1 PDT} + {1414314000 -28800 0 PST} + {1428228000 -25200 1 PDT} + {1445763600 -28800 0 PST} + {1459677600 -25200 1 PDT} + {1477818000 -28800 0 PST} + {1491127200 -25200 1 PDT} + {1509267600 -28800 0 PST} + {1522576800 -25200 1 PDT} + {1540717200 -28800 0 PST} + {1554631200 -25200 1 PDT} + {1572166800 -28800 0 PST} + {1586080800 -25200 1 PDT} + {1603616400 -28800 0 PST} + {1617530400 -25200 1 PDT} + {1635670800 -28800 0 PST} + {1648980000 -25200 1 PDT} + {1667120400 -28800 0 PST} + {1680429600 -25200 1 PDT} + {1698570000 -28800 0 PST} + {1712484000 -25200 1 PDT} + {1730019600 -28800 0 PST} + {1743933600 -25200 1 PDT} + {1761469200 -28800 0 PST} + {1775383200 -25200 1 PDT} + {1792918800 -28800 0 PST} + {1806832800 -25200 1 PDT} + {1824973200 -28800 0 PST} + {1838282400 -25200 1 PDT} + {1856422800 -28800 0 PST} + {1869732000 -25200 1 PDT} + {1887872400 -28800 0 PST} + {1901786400 -25200 1 PDT} + {1919322000 -28800 0 PST} + {1933236000 -25200 1 PDT} + {1950771600 -28800 0 PST} + {1964685600 -25200 1 PDT} + {1982826000 -28800 0 PST} + {1996135200 -25200 1 PDT} + {2014275600 -28800 0 PST} + {2027584800 -25200 1 PDT} + {2045725200 -28800 0 PST} + {2059034400 -25200 1 PDT} + {2077174800 -28800 0 PST} + {2091088800 -25200 1 PDT} + {2108624400 -28800 0 PST} + {2122538400 -25200 1 PDT} + {2140074000 -28800 0 PST} + {2153988000 -25200 1 PDT} + {2172128400 -28800 0 PST} + {2185437600 -25200 1 PDT} + {2203578000 -28800 0 PST} + {2216887200 -25200 1 PDT} + {2235027600 -28800 0 PST} + {2248941600 -25200 1 PDT} + {2266477200 -28800 0 PST} + {2280391200 -25200 1 PDT} + {2297926800 -28800 0 PST} + {2311840800 -25200 1 PDT} + {2329376400 -28800 0 PST} + {2343290400 -25200 1 PDT} + {2361430800 -28800 0 PST} + {2374740000 -25200 1 PDT} + {2392880400 -28800 0 PST} + {2406189600 -25200 1 PDT} + {2424330000 -28800 0 PST} + {2438244000 -25200 1 PDT} + {2455779600 -28800 0 PST} + {2469693600 -25200 1 PDT} + {2487229200 -28800 0 PST} + {2501143200 -25200 1 PDT} + {2519283600 -28800 0 PST} + {2532592800 -25200 1 PDT} + {2550733200 -28800 0 PST} + {2564042400 -25200 1 PDT} + {2582182800 -28800 0 PST} + {2596096800 -25200 1 PDT} + {2613632400 -28800 0 PST} + {2627546400 -25200 1 PDT} + {2645082000 -28800 0 PST} + {2658996000 -25200 1 PDT} + {2676531600 -28800 0 PST} + {2690445600 -25200 1 PDT} + {2708586000 -28800 0 PST} + {2721895200 -25200 1 PDT} + {2740035600 -28800 0 PST} + {2753344800 -25200 1 PDT} + {2771485200 -28800 0 PST} + {2785399200 -25200 1 PDT} + {2802934800 -28800 0 PST} + {2816848800 -25200 1 PDT} + {2834384400 -28800 0 PST} + {2848298400 -25200 1 PDT} + {2866438800 -28800 0 PST} + {2879748000 -25200 1 PDT} + {2897888400 -28800 0 PST} + {2911197600 -25200 1 PDT} + {2929338000 -28800 0 PST} + {2942647200 -25200 1 PDT} + {2960787600 -28800 0 PST} + {2974701600 -25200 1 PDT} + {2992237200 -28800 0 PST} + {3006151200 -25200 1 PDT} + {3023686800 -28800 0 PST} + {3037600800 -25200 1 PDT} + {3055741200 -28800 0 PST} + {3069050400 -25200 1 PDT} + {3087190800 -28800 0 PST} + {3100500000 -25200 1 PDT} + {3118640400 -28800 0 PST} + {3132554400 -25200 1 PDT} + {3150090000 -28800 0 PST} + {3164004000 -25200 1 PDT} + {3181539600 -28800 0 PST} + {3195453600 -25200 1 PDT} + {3212989200 -28800 0 PST} + {3226903200 -25200 1 PDT} + {3245043600 -28800 0 PST} + {3258352800 -25200 1 PDT} + {3276493200 -28800 0 PST} + {3289802400 -25200 1 PDT} + {3307942800 -28800 0 PST} + {3321856800 -25200 1 PDT} + {3339392400 -28800 0 PST} + {3353306400 -25200 1 PDT} + {3370842000 -28800 0 PST} + {3384756000 -25200 1 PDT} + {3402896400 -28800 0 PST} + {3416205600 -25200 1 PDT} + {3434346000 -28800 0 PST} + {3447655200 -25200 1 PDT} + {3465795600 -28800 0 PST} + {3479709600 -25200 1 PDT} + {3497245200 -28800 0 PST} + {3511159200 -25200 1 PDT} + {3528694800 -28800 0 PST} + {3542608800 -25200 1 PDT} + {3560144400 -28800 0 PST} + {3574058400 -25200 1 PDT} + {3592198800 -28800 0 PST} + {3605508000 -25200 1 PDT} + {3623648400 -28800 0 PST} + {3636957600 -25200 1 PDT} + {3655098000 -28800 0 PST} + {3669012000 -25200 1 PDT} + {3686547600 -28800 0 PST} + {3700461600 -25200 1 PDT} + {3717997200 -28800 0 PST} + {3731911200 -25200 1 PDT} + {3750051600 -28800 0 PST} + {3763360800 -25200 1 PDT} + {3781501200 -28800 0 PST} + {3794810400 -25200 1 PDT} + {3812950800 -28800 0 PST} + {3826260000 -25200 1 PDT} + {3844400400 -28800 0 PST} + {3858314400 -25200 1 PDT} + {3875850000 -28800 0 PST} + {3889764000 -25200 1 PDT} + {3907299600 -28800 0 PST} + {3921213600 -25200 1 PDT} + {3939354000 -28800 0 PST} + {3952663200 -25200 1 PDT} + {3970803600 -28800 0 PST} + {3984112800 -25200 1 PDT} + {4002253200 -28800 0 PST} + {4016167200 -25200 1 PDT} + {4033702800 -28800 0 PST} + {4047616800 -25200 1 PDT} + {4065152400 -28800 0 PST} + {4079066400 -25200 1 PDT} + {4096602000 -28800 0 PST} +} diff --git a/library/tzdata/America/Santiago b/library/tzdata/America/Santiago index 9f1d358..44be9f8 100644 --- a/library/tzdata/America/Santiago +++ b/library/tzdata/America/Santiago @@ -108,184 +108,184 @@ set TZData(:America/Santiago) { {1223784000 -10800 1 CLST} {1237086000 -14400 0 CLT} {1255233600 -10800 1 CLST} - {1268535600 -14400 0 CLT} + {1270350000 -14400 0 CLT} {1286683200 -10800 1 CLST} - {1299985200 -14400 0 CLT} - {1318132800 -10800 1 CLST} - {1331434800 -14400 0 CLT} - {1350187200 -10800 1 CLST} - {1362884400 -14400 0 CLT} - {1381636800 -10800 1 CLST} - {1394334000 -14400 0 CLT} - {1413086400 -10800 1 CLST} - {1426388400 -14400 0 CLT} - {1444536000 -10800 1 CLST} - {1457838000 -14400 0 CLT} - {1475985600 -10800 1 CLST} - {1489287600 -14400 0 CLT} - {1508040000 -10800 1 CLST} - {1520737200 -14400 0 CLT} - {1539489600 -10800 1 CLST} - {1552186800 -14400 0 CLT} - {1570939200 -10800 1 CLST} - {1584241200 -14400 0 CLT} - {1602388800 -10800 1 CLST} - {1615690800 -14400 0 CLT} - {1633838400 -10800 1 CLST} - {1647140400 -14400 0 CLT} - {1665288000 -10800 1 CLST} - {1678590000 -14400 0 CLT} - {1697342400 -10800 1 CLST} - {1710039600 -14400 0 CLT} - {1728792000 -10800 1 CLST} - {1741489200 -14400 0 CLT} - {1760241600 -10800 1 CLST} - {1773543600 -14400 0 CLT} - {1791691200 -10800 1 CLST} - {1804993200 -14400 0 CLT} - {1823140800 -10800 1 CLST} - {1836442800 -14400 0 CLT} - {1855195200 -10800 1 CLST} - {1867892400 -14400 0 CLT} - {1886644800 -10800 1 CLST} - {1899342000 -14400 0 CLT} - {1918094400 -10800 1 CLST} - {1930791600 -14400 0 CLT} - {1949544000 -10800 1 CLST} - {1962846000 -14400 0 CLT} - {1980993600 -10800 1 CLST} - {1994295600 -14400 0 CLT} - {2012443200 -10800 1 CLST} - {2025745200 -14400 0 CLT} - {2044497600 -10800 1 CLST} - {2057194800 -14400 0 CLT} - {2075947200 -10800 1 CLST} - {2088644400 -14400 0 CLT} - {2107396800 -10800 1 CLST} - {2120698800 -14400 0 CLT} - {2138846400 -10800 1 CLST} - {2152148400 -14400 0 CLT} - {2170296000 -10800 1 CLST} - {2183598000 -14400 0 CLT} - {2201745600 -10800 1 CLST} - {2215047600 -14400 0 CLT} - {2233800000 -10800 1 CLST} - {2246497200 -14400 0 CLT} - {2265249600 -10800 1 CLST} - {2277946800 -14400 0 CLT} - {2296699200 -10800 1 CLST} - {2310001200 -14400 0 CLT} - {2328148800 -10800 1 CLST} - {2341450800 -14400 0 CLT} - {2359598400 -10800 1 CLST} - {2372900400 -14400 0 CLT} - {2391652800 -10800 1 CLST} - {2404350000 -14400 0 CLT} - {2423102400 -10800 1 CLST} - {2435799600 -14400 0 CLT} - {2454552000 -10800 1 CLST} - {2467854000 -14400 0 CLT} - {2486001600 -10800 1 CLST} - {2499303600 -14400 0 CLT} - {2517451200 -10800 1 CLST} - {2530753200 -14400 0 CLT} - {2548900800 -10800 1 CLST} - {2562202800 -14400 0 CLT} - {2580955200 -10800 1 CLST} - {2593652400 -14400 0 CLT} - {2612404800 -10800 1 CLST} - {2625102000 -14400 0 CLT} - {2643854400 -10800 1 CLST} - {2657156400 -14400 0 CLT} - {2675304000 -10800 1 CLST} - {2688606000 -14400 0 CLT} - {2706753600 -10800 1 CLST} - {2720055600 -14400 0 CLT} - {2738808000 -10800 1 CLST} - {2751505200 -14400 0 CLT} - {2770257600 -10800 1 CLST} - {2782954800 -14400 0 CLT} - {2801707200 -10800 1 CLST} - {2814404400 -14400 0 CLT} - {2833156800 -10800 1 CLST} - {2846458800 -14400 0 CLT} - {2864606400 -10800 1 CLST} - {2877908400 -14400 0 CLT} - {2896056000 -10800 1 CLST} - {2909358000 -14400 0 CLT} - {2928110400 -10800 1 CLST} - {2940807600 -14400 0 CLT} - {2959560000 -10800 1 CLST} - {2972257200 -14400 0 CLT} - {2991009600 -10800 1 CLST} - {3004311600 -14400 0 CLT} - {3022459200 -10800 1 CLST} - {3035761200 -14400 0 CLT} - {3053908800 -10800 1 CLST} - {3067210800 -14400 0 CLT} - {3085358400 -10800 1 CLST} - {3098660400 -14400 0 CLT} - {3117412800 -10800 1 CLST} - {3130110000 -14400 0 CLT} - {3148862400 -10800 1 CLST} - {3161559600 -14400 0 CLT} - {3180312000 -10800 1 CLST} - {3193614000 -14400 0 CLT} - {3211761600 -10800 1 CLST} - {3225063600 -14400 0 CLT} - {3243211200 -10800 1 CLST} - {3256513200 -14400 0 CLT} - {3275265600 -10800 1 CLST} - {3287962800 -14400 0 CLT} - {3306715200 -10800 1 CLST} - {3319412400 -14400 0 CLT} - {3338164800 -10800 1 CLST} - {3351466800 -14400 0 CLT} - {3369614400 -10800 1 CLST} - {3382916400 -14400 0 CLT} - {3401064000 -10800 1 CLST} - {3414366000 -14400 0 CLT} - {3432513600 -10800 1 CLST} - {3445815600 -14400 0 CLT} - {3464568000 -10800 1 CLST} - {3477265200 -14400 0 CLT} - {3496017600 -10800 1 CLST} - {3508714800 -14400 0 CLT} - {3527467200 -10800 1 CLST} - {3540769200 -14400 0 CLT} - {3558916800 -10800 1 CLST} - {3572218800 -14400 0 CLT} - {3590366400 -10800 1 CLST} - {3603668400 -14400 0 CLT} - {3622420800 -10800 1 CLST} - {3635118000 -14400 0 CLT} - {3653870400 -10800 1 CLST} - {3666567600 -14400 0 CLT} - {3685320000 -10800 1 CLST} - {3698017200 -14400 0 CLT} - {3716769600 -10800 1 CLST} - {3730071600 -14400 0 CLT} - {3748219200 -10800 1 CLST} - {3761521200 -14400 0 CLT} - {3779668800 -10800 1 CLST} - {3792970800 -14400 0 CLT} - {3811723200 -10800 1 CLST} - {3824420400 -14400 0 CLT} - {3843172800 -10800 1 CLST} - {3855870000 -14400 0 CLT} - {3874622400 -10800 1 CLST} - {3887924400 -14400 0 CLT} - {3906072000 -10800 1 CLST} - {3919374000 -14400 0 CLT} - {3937521600 -10800 1 CLST} - {3950823600 -14400 0 CLT} - {3968971200 -10800 1 CLST} - {3982273200 -14400 0 CLT} - {4001025600 -10800 1 CLST} - {4013722800 -14400 0 CLT} - {4032475200 -10800 1 CLST} - {4045172400 -14400 0 CLT} - {4063924800 -10800 1 CLST} - {4077226800 -14400 0 CLT} - {4095374400 -10800 1 CLST} + {1304823600 -14400 0 CLT} + {1313899200 -10800 1 CLST} + {1335668400 -14400 0 CLT} + {1346558400 -10800 1 CLST} + {1367118000 -14400 0 CLT} + {1378612800 -10800 1 CLST} + {1398567600 -14400 0 CLT} + {1410062400 -10800 1 CLST} + {1430017200 -14400 0 CLT} + {1441512000 -10800 1 CLST} + {1461466800 -14400 0 CLT} + {1472961600 -10800 1 CLST} + {1492916400 -14400 0 CLT} + {1504411200 -10800 1 CLST} + {1524970800 -14400 0 CLT} + {1535860800 -10800 1 CLST} + {1556420400 -14400 0 CLT} + {1567915200 -10800 1 CLST} + {1587870000 -14400 0 CLT} + {1599364800 -10800 1 CLST} + {1619319600 -14400 0 CLT} + {1630814400 -10800 1 CLST} + {1650769200 -14400 0 CLT} + {1662264000 -10800 1 CLST} + {1682218800 -14400 0 CLT} + {1693713600 -10800 1 CLST} + {1714273200 -14400 0 CLT} + {1725768000 -10800 1 CLST} + {1745722800 -14400 0 CLT} + {1757217600 -10800 1 CLST} + {1777172400 -14400 0 CLT} + {1788667200 -10800 1 CLST} + {1808622000 -14400 0 CLT} + {1820116800 -10800 1 CLST} + {1840071600 -14400 0 CLT} + {1851566400 -10800 1 CLST} + {1872126000 -14400 0 CLT} + {1883016000 -10800 1 CLST} + {1903575600 -14400 0 CLT} + {1915070400 -10800 1 CLST} + {1935025200 -14400 0 CLT} + {1946520000 -10800 1 CLST} + {1966474800 -14400 0 CLT} + {1977969600 -10800 1 CLST} + {1997924400 -14400 0 CLT} + {2009419200 -10800 1 CLST} + {2029374000 -14400 0 CLT} + {2040868800 -10800 1 CLST} + {2061428400 -14400 0 CLT} + {2072318400 -10800 1 CLST} + {2092878000 -14400 0 CLT} + {2104372800 -10800 1 CLST} + {2124327600 -14400 0 CLT} + {2135822400 -10800 1 CLST} + {2155777200 -14400 0 CLT} + {2167272000 -10800 1 CLST} + {2187226800 -14400 0 CLT} + {2198721600 -10800 1 CLST} + {2219281200 -14400 0 CLT} + {2230171200 -10800 1 CLST} + {2250730800 -14400 0 CLT} + {2262225600 -10800 1 CLST} + {2282180400 -14400 0 CLT} + {2293675200 -10800 1 CLST} + {2313630000 -14400 0 CLT} + {2325124800 -10800 1 CLST} + {2345079600 -14400 0 CLT} + {2356574400 -10800 1 CLST} + {2376529200 -14400 0 CLT} + {2388024000 -10800 1 CLST} + {2408583600 -14400 0 CLT} + {2419473600 -10800 1 CLST} + {2440033200 -14400 0 CLT} + {2451528000 -10800 1 CLST} + {2471482800 -14400 0 CLT} + {2482977600 -10800 1 CLST} + {2502932400 -14400 0 CLT} + {2514427200 -10800 1 CLST} + {2534382000 -14400 0 CLT} + {2545876800 -10800 1 CLST} + {2565831600 -14400 0 CLT} + {2577326400 -10800 1 CLST} + {2597886000 -14400 0 CLT} + {2609380800 -10800 1 CLST} + {2629335600 -14400 0 CLT} + {2640830400 -10800 1 CLST} + {2660785200 -14400 0 CLT} + {2672280000 -10800 1 CLST} + {2692234800 -14400 0 CLT} + {2703729600 -10800 1 CLST} + {2723684400 -14400 0 CLT} + {2735179200 -10800 1 CLST} + {2755738800 -14400 0 CLT} + {2766628800 -10800 1 CLST} + {2787188400 -14400 0 CLT} + {2798683200 -10800 1 CLST} + {2818638000 -14400 0 CLT} + {2830132800 -10800 1 CLST} + {2850087600 -14400 0 CLT} + {2861582400 -10800 1 CLST} + {2881537200 -14400 0 CLT} + {2893032000 -10800 1 CLST} + {2912986800 -14400 0 CLT} + {2924481600 -10800 1 CLST} + {2945041200 -14400 0 CLT} + {2955931200 -10800 1 CLST} + {2976490800 -14400 0 CLT} + {2987985600 -10800 1 CLST} + {3007940400 -14400 0 CLT} + {3019435200 -10800 1 CLST} + {3039390000 -14400 0 CLT} + {3050884800 -10800 1 CLST} + {3070839600 -14400 0 CLT} + {3082334400 -10800 1 CLST} + {3102894000 -14400 0 CLT} + {3113784000 -10800 1 CLST} + {3134343600 -14400 0 CLT} + {3145838400 -10800 1 CLST} + {3165793200 -14400 0 CLT} + {3177288000 -10800 1 CLST} + {3197242800 -14400 0 CLT} + {3208737600 -10800 1 CLST} + {3228692400 -14400 0 CLT} + {3240187200 -10800 1 CLST} + {3260142000 -14400 0 CLT} + {3271636800 -10800 1 CLST} + {3292196400 -14400 0 CLT} + {3303086400 -10800 1 CLST} + {3323646000 -14400 0 CLT} + {3335140800 -10800 1 CLST} + {3355095600 -14400 0 CLT} + {3366590400 -10800 1 CLST} + {3386545200 -14400 0 CLT} + {3398040000 -10800 1 CLST} + {3417994800 -14400 0 CLT} + {3429489600 -10800 1 CLST} + {3449444400 -14400 0 CLT} + {3460939200 -10800 1 CLST} + {3481498800 -14400 0 CLT} + {3492993600 -10800 1 CLST} + {3512948400 -14400 0 CLT} + {3524443200 -10800 1 CLST} + {3544398000 -14400 0 CLT} + {3555892800 -10800 1 CLST} + {3575847600 -14400 0 CLT} + {3587342400 -10800 1 CLST} + {3607297200 -14400 0 CLT} + {3618792000 -10800 1 CLST} + {3639351600 -14400 0 CLT} + {3650241600 -10800 1 CLST} + {3670801200 -14400 0 CLT} + {3682296000 -10800 1 CLST} + {3702250800 -14400 0 CLT} + {3713745600 -10800 1 CLST} + {3733700400 -14400 0 CLT} + {3745195200 -10800 1 CLST} + {3765150000 -14400 0 CLT} + {3776644800 -10800 1 CLST} + {3796599600 -14400 0 CLT} + {3808094400 -10800 1 CLST} + {3828654000 -14400 0 CLT} + {3839544000 -10800 1 CLST} + {3860103600 -14400 0 CLT} + {3871598400 -10800 1 CLST} + {3891553200 -14400 0 CLT} + {3903048000 -10800 1 CLST} + {3923002800 -14400 0 CLT} + {3934497600 -10800 1 CLST} + {3954452400 -14400 0 CLT} + {3965947200 -10800 1 CLST} + {3986506800 -14400 0 CLT} + {3997396800 -10800 1 CLST} + {4017956400 -14400 0 CLT} + {4029451200 -10800 1 CLST} + {4049406000 -14400 0 CLT} + {4060900800 -10800 1 CLST} + {4080855600 -14400 0 CLT} + {4092350400 -10800 1 CLST} } diff --git a/library/tzdata/America/Sitka b/library/tzdata/America/Sitka new file mode 100644 index 0000000..8c53d93 --- /dev/null +++ b/library/tzdata/America/Sitka @@ -0,0 +1,275 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:America/Sitka) { + {-9223372036854775808 53927 0 LMT} + {-3225365927 -32473 0 LMT} + {-2188954727 -28800 0 PST} + {-883584000 -28800 0 PST} + {-880207200 -25200 1 PWT} + {-769395600 -25200 1 PPT} + {-765385200 -28800 0 PST} + {-757353600 -28800 0 PST} + {-31507200 -28800 0 PST} + {-21477600 -25200 1 PDT} + {-5756400 -28800 0 PST} + {9972000 -25200 1 PDT} + {25693200 -28800 0 PST} + {41421600 -25200 1 PDT} + {57747600 -28800 0 PST} + {73476000 -25200 1 PDT} + {89197200 -28800 0 PST} + {104925600 -25200 1 PDT} + {120646800 -28800 0 PST} + {126698400 -25200 1 PDT} + {152096400 -28800 0 PST} + {162381600 -25200 1 PDT} + {183546000 -28800 0 PST} + {199274400 -25200 1 PDT} + {215600400 -28800 0 PST} + {230724000 -25200 1 PDT} + {247050000 -28800 0 PST} + {262778400 -25200 1 PDT} + {278499600 -28800 0 PST} + {294228000 -25200 1 PDT} + {309949200 -28800 0 PST} + {325677600 -25200 1 PDT} + {341398800 -28800 0 PST} + {357127200 -25200 1 PDT} + {372848400 -28800 0 PST} + {388576800 -25200 1 PDT} + {404902800 -28800 0 PST} + {420026400 -25200 1 PDT} + {439030800 -32400 0 AKST} + {452084400 -28800 1 AKDT} + {467805600 -32400 0 AKST} + {483534000 -28800 1 AKDT} + {499255200 -32400 0 AKST} + {514983600 -28800 1 AKDT} + {530704800 -32400 0 AKST} + {544618800 -28800 1 AKDT} + {562154400 -32400 0 AKST} + {576068400 -28800 1 AKDT} + {594208800 -32400 0 AKST} + {607518000 -28800 1 AKDT} + {625658400 -32400 0 AKST} + {638967600 -28800 1 AKDT} + {657108000 -32400 0 AKST} + {671022000 -28800 1 AKDT} + {688557600 -32400 0 AKST} + {702471600 -28800 1 AKDT} + {720007200 -32400 0 AKST} + {733921200 -28800 1 AKDT} + {752061600 -32400 0 AKST} + {765370800 -28800 1 AKDT} + {783511200 -32400 0 AKST} + {796820400 -28800 1 AKDT} + {814960800 -32400 0 AKST} + {828874800 -28800 1 AKDT} + {846410400 -32400 0 AKST} + {860324400 -28800 1 AKDT} + {877860000 -32400 0 AKST} + {891774000 -28800 1 AKDT} + {909309600 -32400 0 AKST} + {923223600 -28800 1 AKDT} + {941364000 -32400 0 AKST} + {954673200 -28800 1 AKDT} + {972813600 -32400 0 AKST} + {986122800 -28800 1 AKDT} + {1004263200 -32400 0 AKST} + {1018177200 -28800 1 AKDT} + {1035712800 -32400 0 AKST} + {1049626800 -28800 1 AKDT} + {1067162400 -32400 0 AKST} + {1081076400 -28800 1 AKDT} + {1099216800 -32400 0 AKST} + {1112526000 -28800 1 AKDT} + {1130666400 -32400 0 AKST} + {1143975600 -28800 1 AKDT} + {1162116000 -32400 0 AKST} + {1173610800 -28800 1 AKDT} + {1194170400 -32400 0 AKST} + {1205060400 -28800 1 AKDT} + {1225620000 -32400 0 AKST} + {1236510000 -28800 1 AKDT} + {1257069600 -32400 0 AKST} + {1268564400 -28800 1 AKDT} + {1289124000 -32400 0 AKST} + {1300014000 -28800 1 AKDT} + {1320573600 -32400 0 AKST} + {1331463600 -28800 1 AKDT} + {1352023200 -32400 0 AKST} + {1362913200 -28800 1 AKDT} + {1383472800 -32400 0 AKST} + {1394362800 -28800 1 AKDT} + {1414922400 -32400 0 AKST} + {1425812400 -28800 1 AKDT} + {1446372000 -32400 0 AKST} + {1457866800 -28800 1 AKDT} + {1478426400 -32400 0 AKST} + {1489316400 -28800 1 AKDT} + {1509876000 -32400 0 AKST} + {1520766000 -28800 1 AKDT} + {1541325600 -32400 0 AKST} + {1552215600 -28800 1 AKDT} + {1572775200 -32400 0 AKST} + {1583665200 -28800 1 AKDT} + {1604224800 -32400 0 AKST} + {1615719600 -28800 1 AKDT} + {1636279200 -32400 0 AKST} + {1647169200 -28800 1 AKDT} + {1667728800 -32400 0 AKST} + {1678618800 -28800 1 AKDT} + {1699178400 -32400 0 AKST} + {1710068400 -28800 1 AKDT} + {1730628000 -32400 0 AKST} + {1741518000 -28800 1 AKDT} + {1762077600 -32400 0 AKST} + {1772967600 -28800 1 AKDT} + {1793527200 -32400 0 AKST} + {1805022000 -28800 1 AKDT} + {1825581600 -32400 0 AKST} + {1836471600 -28800 1 AKDT} + {1857031200 -32400 0 AKST} + {1867921200 -28800 1 AKDT} + {1888480800 -32400 0 AKST} + {1899370800 -28800 1 AKDT} + {1919930400 -32400 0 AKST} + {1930820400 -28800 1 AKDT} + {1951380000 -32400 0 AKST} + {1962874800 -28800 1 AKDT} + {1983434400 -32400 0 AKST} + {1994324400 -28800 1 AKDT} + {2014884000 -32400 0 AKST} + {2025774000 -28800 1 AKDT} + {2046333600 -32400 0 AKST} + {2057223600 -28800 1 AKDT} + {2077783200 -32400 0 AKST} + {2088673200 -28800 1 AKDT} + {2109232800 -32400 0 AKST} + {2120122800 -28800 1 AKDT} + {2140682400 -32400 0 AKST} + {2152177200 -28800 1 AKDT} + {2172736800 -32400 0 AKST} + {2183626800 -28800 1 AKDT} + {2204186400 -32400 0 AKST} + {2215076400 -28800 1 AKDT} + {2235636000 -32400 0 AKST} + {2246526000 -28800 1 AKDT} + {2267085600 -32400 0 AKST} + {2277975600 -28800 1 AKDT} + {2298535200 -32400 0 AKST} + {2309425200 -28800 1 AKDT} + {2329984800 -32400 0 AKST} + {2341479600 -28800 1 AKDT} + {2362039200 -32400 0 AKST} + {2372929200 -28800 1 AKDT} + {2393488800 -32400 0 AKST} + {2404378800 -28800 1 AKDT} + {2424938400 -32400 0 AKST} + {2435828400 -28800 1 AKDT} + {2456388000 -32400 0 AKST} + {2467278000 -28800 1 AKDT} + {2487837600 -32400 0 AKST} + {2499332400 -28800 1 AKDT} + {2519892000 -32400 0 AKST} + {2530782000 -28800 1 AKDT} + {2551341600 -32400 0 AKST} + {2562231600 -28800 1 AKDT} + {2582791200 -32400 0 AKST} + {2593681200 -28800 1 AKDT} + {2614240800 -32400 0 AKST} + {2625130800 -28800 1 AKDT} + {2645690400 -32400 0 AKST} + {2656580400 -28800 1 AKDT} + {2677140000 -32400 0 AKST} + {2688634800 -28800 1 AKDT} + {2709194400 -32400 0 AKST} + {2720084400 -28800 1 AKDT} + {2740644000 -32400 0 AKST} + {2751534000 -28800 1 AKDT} + {2772093600 -32400 0 AKST} + {2782983600 -28800 1 AKDT} + {2803543200 -32400 0 AKST} + {2814433200 -28800 1 AKDT} + {2834992800 -32400 0 AKST} + {2846487600 -28800 1 AKDT} + {2867047200 -32400 0 AKST} + {2877937200 -28800 1 AKDT} + {2898496800 -32400 0 AKST} + {2909386800 -28800 1 AKDT} + {2929946400 -32400 0 AKST} + {2940836400 -28800 1 AKDT} + {2961396000 -32400 0 AKST} + {2972286000 -28800 1 AKDT} + {2992845600 -32400 0 AKST} + {3003735600 -28800 1 AKDT} + {3024295200 -32400 0 AKST} + {3035790000 -28800 1 AKDT} + {3056349600 -32400 0 AKST} + {3067239600 -28800 1 AKDT} + {3087799200 -32400 0 AKST} + {3098689200 -28800 1 AKDT} + {3119248800 -32400 0 AKST} + {3130138800 -28800 1 AKDT} + {3150698400 -32400 0 AKST} + {3161588400 -28800 1 AKDT} + {3182148000 -32400 0 AKST} + {3193038000 -28800 1 AKDT} + {3213597600 -32400 0 AKST} + {3225092400 -28800 1 AKDT} + {3245652000 -32400 0 AKST} + {3256542000 -28800 1 AKDT} + {3277101600 -32400 0 AKST} + {3287991600 -28800 1 AKDT} + {3308551200 -32400 0 AKST} + {3319441200 -28800 1 AKDT} + {3340000800 -32400 0 AKST} + {3350890800 -28800 1 AKDT} + {3371450400 -32400 0 AKST} + {3382945200 -28800 1 AKDT} + {3403504800 -32400 0 AKST} + {3414394800 -28800 1 AKDT} + {3434954400 -32400 0 AKST} + {3445844400 -28800 1 AKDT} + {3466404000 -32400 0 AKST} + {3477294000 -28800 1 AKDT} + {3497853600 -32400 0 AKST} + {3508743600 -28800 1 AKDT} + {3529303200 -32400 0 AKST} + {3540193200 -28800 1 AKDT} + {3560752800 -32400 0 AKST} + {3572247600 -28800 1 AKDT} + {3592807200 -32400 0 AKST} + {3603697200 -28800 1 AKDT} + {3624256800 -32400 0 AKST} + {3635146800 -28800 1 AKDT} + {3655706400 -32400 0 AKST} + {3666596400 -28800 1 AKDT} + {3687156000 -32400 0 AKST} + {3698046000 -28800 1 AKDT} + {3718605600 -32400 0 AKST} + {3730100400 -28800 1 AKDT} + {3750660000 -32400 0 AKST} + {3761550000 -28800 1 AKDT} + {3782109600 -32400 0 AKST} + {3792999600 -28800 1 AKDT} + {3813559200 -32400 0 AKST} + {3824449200 -28800 1 AKDT} + {3845008800 -32400 0 AKST} + {3855898800 -28800 1 AKDT} + {3876458400 -32400 0 AKST} + {3887348400 -28800 1 AKDT} + {3907908000 -32400 0 AKST} + {3919402800 -28800 1 AKDT} + {3939962400 -32400 0 AKST} + {3950852400 -28800 1 AKDT} + {3971412000 -32400 0 AKST} + {3982302000 -28800 1 AKDT} + {4002861600 -32400 0 AKST} + {4013751600 -28800 1 AKDT} + {4034311200 -32400 0 AKST} + {4045201200 -28800 1 AKDT} + {4065760800 -32400 0 AKST} + {4076650800 -28800 1 AKDT} + {4097210400 -32400 0 AKST} +} diff --git a/library/tzdata/America/St_Barthelemy b/library/tzdata/America/St_Barthelemy index 25c114a..46bc287 100644 --- a/library/tzdata/America/St_Barthelemy +++ b/library/tzdata/America/St_Barthelemy @@ -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) diff --git a/library/tzdata/America/St_Johns b/library/tzdata/America/St_Johns index 59f92bb..1492961 100644 --- a/library/tzdata/America/St_Johns +++ b/library/tzdata/America/St_Johns @@ -7,7 +7,7 @@ set TZData(:America/St_Johns) { {-1650137348 -12652 0 NST} {-1640982548 -12652 0 NST} {-1632076148 -9052 1 NDT} - {-1614799748 -12652 0 NST} + {-1615145348 -12652 0 NST} {-1609446548 -12652 0 NST} {-1598650148 -9052 1 NDT} {-1590100148 -12652 0 NST} @@ -191,181 +191,182 @@ set TZData(:America/St_Johns) { {1268537460 -9000 1 NDT} {1289097060 -12600 0 NST} {1299987060 -9000 1 NDT} - {1320546660 -12600 0 NST} - {1331436660 -9000 1 NDT} - {1351996260 -12600 0 NST} - {1362886260 -9000 1 NDT} - {1383445860 -12600 0 NST} - {1394335860 -9000 1 NDT} - {1414895460 -12600 0 NST} - {1425785460 -9000 1 NDT} - {1446345060 -12600 0 NST} - {1457839860 -9000 1 NDT} - {1478399460 -12600 0 NST} - {1489289460 -9000 1 NDT} - {1509849060 -12600 0 NST} - {1520739060 -9000 1 NDT} - {1541298660 -12600 0 NST} - {1552188660 -9000 1 NDT} - {1572748260 -12600 0 NST} - {1583638260 -9000 1 NDT} - {1604197860 -12600 0 NST} - {1615692660 -9000 1 NDT} - {1636252260 -12600 0 NST} - {1647142260 -9000 1 NDT} - {1667701860 -12600 0 NST} - {1678591860 -9000 1 NDT} - {1699151460 -12600 0 NST} - {1710041460 -9000 1 NDT} - {1730601060 -12600 0 NST} - {1741491060 -9000 1 NDT} - {1762050660 -12600 0 NST} - {1772940660 -9000 1 NDT} - {1793500260 -12600 0 NST} - {1804995060 -9000 1 NDT} - {1825554660 -12600 0 NST} - {1836444660 -9000 1 NDT} - {1857004260 -12600 0 NST} - {1867894260 -9000 1 NDT} - {1888453860 -12600 0 NST} - {1899343860 -9000 1 NDT} - {1919903460 -12600 0 NST} - {1930793460 -9000 1 NDT} - {1951353060 -12600 0 NST} - {1962847860 -9000 1 NDT} - {1983407460 -12600 0 NST} - {1994297460 -9000 1 NDT} - {2014857060 -12600 0 NST} - {2025747060 -9000 1 NDT} - {2046306660 -12600 0 NST} - {2057196660 -9000 1 NDT} - {2077756260 -12600 0 NST} - {2088646260 -9000 1 NDT} - {2109205860 -12600 0 NST} - {2120095860 -9000 1 NDT} - {2140655460 -12600 0 NST} - {2152150260 -9000 1 NDT} - {2172709860 -12600 0 NST} - {2183599860 -9000 1 NDT} - {2204159460 -12600 0 NST} - {2215049460 -9000 1 NDT} - {2235609060 -12600 0 NST} - {2246499060 -9000 1 NDT} - {2267058660 -12600 0 NST} - {2277948660 -9000 1 NDT} - {2298508260 -12600 0 NST} - {2309398260 -9000 1 NDT} - {2329957860 -12600 0 NST} - {2341452660 -9000 1 NDT} - {2362012260 -12600 0 NST} - {2372902260 -9000 1 NDT} - {2393461860 -12600 0 NST} - {2404351860 -9000 1 NDT} - {2424911460 -12600 0 NST} - {2435801460 -9000 1 NDT} - {2456361060 -12600 0 NST} - {2467251060 -9000 1 NDT} - {2487810660 -12600 0 NST} - {2499305460 -9000 1 NDT} - {2519865060 -12600 0 NST} - {2530755060 -9000 1 NDT} - {2551314660 -12600 0 NST} - {2562204660 -9000 1 NDT} - {2582764260 -12600 0 NST} - {2593654260 -9000 1 NDT} - {2614213860 -12600 0 NST} - {2625103860 -9000 1 NDT} - {2645663460 -12600 0 NST} - {2656553460 -9000 1 NDT} - {2677113060 -12600 0 NST} - {2688607860 -9000 1 NDT} - {2709167460 -12600 0 NST} - {2720057460 -9000 1 NDT} - {2740617060 -12600 0 NST} - {2751507060 -9000 1 NDT} - {2772066660 -12600 0 NST} - {2782956660 -9000 1 NDT} - {2803516260 -12600 0 NST} - {2814406260 -9000 1 NDT} - {2834965860 -12600 0 NST} - {2846460660 -9000 1 NDT} - {2867020260 -12600 0 NST} - {2877910260 -9000 1 NDT} - {2898469860 -12600 0 NST} - {2909359860 -9000 1 NDT} - {2929919460 -12600 0 NST} - {2940809460 -9000 1 NDT} - {2961369060 -12600 0 NST} - {2972259060 -9000 1 NDT} - {2992818660 -12600 0 NST} - {3003708660 -9000 1 NDT} - {3024268260 -12600 0 NST} - {3035763060 -9000 1 NDT} - {3056322660 -12600 0 NST} - {3067212660 -9000 1 NDT} - {3087772260 -12600 0 NST} - {3098662260 -9000 1 NDT} - {3119221860 -12600 0 NST} - {3130111860 -9000 1 NDT} - {3150671460 -12600 0 NST} - {3161561460 -9000 1 NDT} - {3182121060 -12600 0 NST} - {3193011060 -9000 1 NDT} - {3213570660 -12600 0 NST} - {3225065460 -9000 1 NDT} - {3245625060 -12600 0 NST} - {3256515060 -9000 1 NDT} - {3277074660 -12600 0 NST} - {3287964660 -9000 1 NDT} - {3308524260 -12600 0 NST} - {3319414260 -9000 1 NDT} - {3339973860 -12600 0 NST} - {3350863860 -9000 1 NDT} - {3371423460 -12600 0 NST} - {3382918260 -9000 1 NDT} - {3403477860 -12600 0 NST} - {3414367860 -9000 1 NDT} - {3434927460 -12600 0 NST} - {3445817460 -9000 1 NDT} - {3466377060 -12600 0 NST} - {3477267060 -9000 1 NDT} - {3497826660 -12600 0 NST} - {3508716660 -9000 1 NDT} - {3529276260 -12600 0 NST} - {3540166260 -9000 1 NDT} - {3560725860 -12600 0 NST} - {3572220660 -9000 1 NDT} - {3592780260 -12600 0 NST} - {3603670260 -9000 1 NDT} - {3624229860 -12600 0 NST} - {3635119860 -9000 1 NDT} - {3655679460 -12600 0 NST} - {3666569460 -9000 1 NDT} - {3687129060 -12600 0 NST} - {3698019060 -9000 1 NDT} - {3718578660 -12600 0 NST} - {3730073460 -9000 1 NDT} - {3750633060 -12600 0 NST} - {3761523060 -9000 1 NDT} - {3782082660 -12600 0 NST} - {3792972660 -9000 1 NDT} - {3813532260 -12600 0 NST} - {3824422260 -9000 1 NDT} - {3844981860 -12600 0 NST} - {3855871860 -9000 1 NDT} - {3876431460 -12600 0 NST} - {3887321460 -9000 1 NDT} - {3907881060 -12600 0 NST} - {3919375860 -9000 1 NDT} - {3939935460 -12600 0 NST} - {3950825460 -9000 1 NDT} - {3971385060 -12600 0 NST} - {3982275060 -9000 1 NDT} - {4002834660 -12600 0 NST} - {4013724660 -9000 1 NDT} - {4034284260 -12600 0 NST} - {4045174260 -9000 1 NDT} - {4065733860 -12600 0 NST} - {4076623860 -9000 1 NDT} - {4097183460 -12600 0 NST} + {1320114600 -9000 0 NDT} + {1320553800 -12600 0 NST} + {1331443800 -9000 1 NDT} + {1352003400 -12600 0 NST} + {1362893400 -9000 1 NDT} + {1383453000 -12600 0 NST} + {1394343000 -9000 1 NDT} + {1414902600 -12600 0 NST} + {1425792600 -9000 1 NDT} + {1446352200 -12600 0 NST} + {1457847000 -9000 1 NDT} + {1478406600 -12600 0 NST} + {1489296600 -9000 1 NDT} + {1509856200 -12600 0 NST} + {1520746200 -9000 1 NDT} + {1541305800 -12600 0 NST} + {1552195800 -9000 1 NDT} + {1572755400 -12600 0 NST} + {1583645400 -9000 1 NDT} + {1604205000 -12600 0 NST} + {1615699800 -9000 1 NDT} + {1636259400 -12600 0 NST} + {1647149400 -9000 1 NDT} + {1667709000 -12600 0 NST} + {1678599000 -9000 1 NDT} + {1699158600 -12600 0 NST} + {1710048600 -9000 1 NDT} + {1730608200 -12600 0 NST} + {1741498200 -9000 1 NDT} + {1762057800 -12600 0 NST} + {1772947800 -9000 1 NDT} + {1793507400 -12600 0 NST} + {1805002200 -9000 1 NDT} + {1825561800 -12600 0 NST} + {1836451800 -9000 1 NDT} + {1857011400 -12600 0 NST} + {1867901400 -9000 1 NDT} + {1888461000 -12600 0 NST} + {1899351000 -9000 1 NDT} + {1919910600 -12600 0 NST} + {1930800600 -9000 1 NDT} + {1951360200 -12600 0 NST} + {1962855000 -9000 1 NDT} + {1983414600 -12600 0 NST} + {1994304600 -9000 1 NDT} + {2014864200 -12600 0 NST} + {2025754200 -9000 1 NDT} + {2046313800 -12600 0 NST} + {2057203800 -9000 1 NDT} + {2077763400 -12600 0 NST} + {2088653400 -9000 1 NDT} + {2109213000 -12600 0 NST} + {2120103000 -9000 1 NDT} + {2140662600 -12600 0 NST} + {2152157400 -9000 1 NDT} + {2172717000 -12600 0 NST} + {2183607000 -9000 1 NDT} + {2204166600 -12600 0 NST} + {2215056600 -9000 1 NDT} + {2235616200 -12600 0 NST} + {2246506200 -9000 1 NDT} + {2267065800 -12600 0 NST} + {2277955800 -9000 1 NDT} + {2298515400 -12600 0 NST} + {2309405400 -9000 1 NDT} + {2329965000 -12600 0 NST} + {2341459800 -9000 1 NDT} + {2362019400 -12600 0 NST} + {2372909400 -9000 1 NDT} + {2393469000 -12600 0 NST} + {2404359000 -9000 1 NDT} + {2424918600 -12600 0 NST} + {2435808600 -9000 1 NDT} + {2456368200 -12600 0 NST} + {2467258200 -9000 1 NDT} + {2487817800 -12600 0 NST} + {2499312600 -9000 1 NDT} + {2519872200 -12600 0 NST} + {2530762200 -9000 1 NDT} + {2551321800 -12600 0 NST} + {2562211800 -9000 1 NDT} + {2582771400 -12600 0 NST} + {2593661400 -9000 1 NDT} + {2614221000 -12600 0 NST} + {2625111000 -9000 1 NDT} + {2645670600 -12600 0 NST} + {2656560600 -9000 1 NDT} + {2677120200 -12600 0 NST} + {2688615000 -9000 1 NDT} + {2709174600 -12600 0 NST} + {2720064600 -9000 1 NDT} + {2740624200 -12600 0 NST} + {2751514200 -9000 1 NDT} + {2772073800 -12600 0 NST} + {2782963800 -9000 1 NDT} + {2803523400 -12600 0 NST} + {2814413400 -9000 1 NDT} + {2834973000 -12600 0 NST} + {2846467800 -9000 1 NDT} + {2867027400 -12600 0 NST} + {2877917400 -9000 1 NDT} + {2898477000 -12600 0 NST} + {2909367000 -9000 1 NDT} + {2929926600 -12600 0 NST} + {2940816600 -9000 1 NDT} + {2961376200 -12600 0 NST} + {2972266200 -9000 1 NDT} + {2992825800 -12600 0 NST} + {3003715800 -9000 1 NDT} + {3024275400 -12600 0 NST} + {3035770200 -9000 1 NDT} + {3056329800 -12600 0 NST} + {3067219800 -9000 1 NDT} + {3087779400 -12600 0 NST} + {3098669400 -9000 1 NDT} + {3119229000 -12600 0 NST} + {3130119000 -9000 1 NDT} + {3150678600 -12600 0 NST} + {3161568600 -9000 1 NDT} + {3182128200 -12600 0 NST} + {3193018200 -9000 1 NDT} + {3213577800 -12600 0 NST} + {3225072600 -9000 1 NDT} + {3245632200 -12600 0 NST} + {3256522200 -9000 1 NDT} + {3277081800 -12600 0 NST} + {3287971800 -9000 1 NDT} + {3308531400 -12600 0 NST} + {3319421400 -9000 1 NDT} + {3339981000 -12600 0 NST} + {3350871000 -9000 1 NDT} + {3371430600 -12600 0 NST} + {3382925400 -9000 1 NDT} + {3403485000 -12600 0 NST} + {3414375000 -9000 1 NDT} + {3434934600 -12600 0 NST} + {3445824600 -9000 1 NDT} + {3466384200 -12600 0 NST} + {3477274200 -9000 1 NDT} + {3497833800 -12600 0 NST} + {3508723800 -9000 1 NDT} + {3529283400 -12600 0 NST} + {3540173400 -9000 1 NDT} + {3560733000 -12600 0 NST} + {3572227800 -9000 1 NDT} + {3592787400 -12600 0 NST} + {3603677400 -9000 1 NDT} + {3624237000 -12600 0 NST} + {3635127000 -9000 1 NDT} + {3655686600 -12600 0 NST} + {3666576600 -9000 1 NDT} + {3687136200 -12600 0 NST} + {3698026200 -9000 1 NDT} + {3718585800 -12600 0 NST} + {3730080600 -9000 1 NDT} + {3750640200 -12600 0 NST} + {3761530200 -9000 1 NDT} + {3782089800 -12600 0 NST} + {3792979800 -9000 1 NDT} + {3813539400 -12600 0 NST} + {3824429400 -9000 1 NDT} + {3844989000 -12600 0 NST} + {3855879000 -9000 1 NDT} + {3876438600 -12600 0 NST} + {3887328600 -9000 1 NDT} + {3907888200 -12600 0 NST} + {3919383000 -9000 1 NDT} + {3939942600 -12600 0 NST} + {3950832600 -9000 1 NDT} + {3971392200 -12600 0 NST} + {3982282200 -9000 1 NDT} + {4002841800 -12600 0 NST} + {4013731800 -9000 1 NDT} + {4034291400 -12600 0 NST} + {4045181400 -9000 1 NDT} + {4065741000 -12600 0 NST} + {4076631000 -9000 1 NDT} + {4097190600 -12600 0 NST} } diff --git a/library/tzdata/America/St_Kitts b/library/tzdata/America/St_Kitts index bfd803b..6ad7f04 100644 --- a/library/tzdata/America/St_Kitts +++ b/library/tzdata/America/St_Kitts @@ -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) diff --git a/library/tzdata/America/St_Lucia b/library/tzdata/America/St_Lucia index c2767dd..e479b31 100644 --- a/library/tzdata/America/St_Lucia +++ b/library/tzdata/America/St_Lucia @@ -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) diff --git a/library/tzdata/America/St_Thomas b/library/tzdata/America/St_Thomas index bf93595..24698b8 100644 --- a/library/tzdata/America/St_Thomas +++ b/library/tzdata/America/St_Thomas @@ -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) diff --git a/library/tzdata/America/St_Vincent b/library/tzdata/America/St_Vincent index 3a884c7..e3b32fb 100644 --- a/library/tzdata/America/St_Vincent +++ b/library/tzdata/America/St_Vincent @@ -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) diff --git a/library/tzdata/America/Swift_Current b/library/tzdata/America/Swift_Current index dc4aa37..ad07762 100644 --- a/library/tzdata/America/Swift_Current +++ b/library/tzdata/America/Swift_Current @@ -4,7 +4,7 @@ set TZData(:America/Swift_Current) { {-9223372036854775808 -25880 0 LMT} {-2030201320 -25200 0 MST} {-1632063600 -21600 1 MDT} - {-1614787200 -25200 0 MST} + {-1615132800 -25200 0 MST} {-880210800 -21600 1 MWT} {-769395600 -21600 1 MPT} {-765388800 -25200 0 MST} diff --git a/library/tzdata/America/Tijuana b/library/tzdata/America/Tijuana index c191c3c..6118cde 100644 --- a/library/tzdata/America/Tijuana +++ b/library/tzdata/America/Tijuana @@ -101,184 +101,185 @@ set TZData(:America/Tijuana) { {1225011600 -28800 0 PST} {1238925600 -25200 1 PDT} {1256461200 -28800 0 PST} - {1270375200 -25200 1 PDT} - {1288515600 -28800 0 PST} - {1301824800 -25200 1 PDT} - {1319965200 -28800 0 PST} - {1333274400 -25200 1 PDT} - {1351414800 -28800 0 PST} - {1365328800 -25200 1 PDT} - {1382864400 -28800 0 PST} - {1396778400 -25200 1 PDT} - {1414314000 -28800 0 PST} - {1428228000 -25200 1 PDT} - {1445763600 -28800 0 PST} - {1459677600 -25200 1 PDT} - {1477818000 -28800 0 PST} - {1491127200 -25200 1 PDT} - {1509267600 -28800 0 PST} - {1522576800 -25200 1 PDT} - {1540717200 -28800 0 PST} - {1554631200 -25200 1 PDT} - {1572166800 -28800 0 PST} - {1586080800 -25200 1 PDT} - {1603616400 -28800 0 PST} - {1617530400 -25200 1 PDT} - {1635670800 -28800 0 PST} - {1648980000 -25200 1 PDT} - {1667120400 -28800 0 PST} - {1680429600 -25200 1 PDT} - {1698570000 -28800 0 PST} - {1712484000 -25200 1 PDT} - {1730019600 -28800 0 PST} - {1743933600 -25200 1 PDT} - {1761469200 -28800 0 PST} - {1775383200 -25200 1 PDT} - {1792918800 -28800 0 PST} - {1806832800 -25200 1 PDT} - {1824973200 -28800 0 PST} - {1838282400 -25200 1 PDT} - {1856422800 -28800 0 PST} - {1869732000 -25200 1 PDT} - {1887872400 -28800 0 PST} - {1901786400 -25200 1 PDT} - {1919322000 -28800 0 PST} - {1933236000 -25200 1 PDT} - {1950771600 -28800 0 PST} - {1964685600 -25200 1 PDT} - {1982826000 -28800 0 PST} - {1996135200 -25200 1 PDT} - {2014275600 -28800 0 PST} - {2027584800 -25200 1 PDT} - {2045725200 -28800 0 PST} - {2059034400 -25200 1 PDT} - {2077174800 -28800 0 PST} - {2091088800 -25200 1 PDT} - {2108624400 -28800 0 PST} - {2122538400 -25200 1 PDT} - {2140074000 -28800 0 PST} - {2153988000 -25200 1 PDT} - {2172128400 -28800 0 PST} - {2185437600 -25200 1 PDT} - {2203578000 -28800 0 PST} - {2216887200 -25200 1 PDT} - {2235027600 -28800 0 PST} - {2248941600 -25200 1 PDT} - {2266477200 -28800 0 PST} - {2280391200 -25200 1 PDT} - {2297926800 -28800 0 PST} - {2311840800 -25200 1 PDT} - {2329376400 -28800 0 PST} - {2343290400 -25200 1 PDT} - {2361430800 -28800 0 PST} - {2374740000 -25200 1 PDT} - {2392880400 -28800 0 PST} - {2406189600 -25200 1 PDT} - {2424330000 -28800 0 PST} - {2438244000 -25200 1 PDT} - {2455779600 -28800 0 PST} - {2469693600 -25200 1 PDT} - {2487229200 -28800 0 PST} - {2501143200 -25200 1 PDT} - {2519283600 -28800 0 PST} - {2532592800 -25200 1 PDT} - {2550733200 -28800 0 PST} - {2564042400 -25200 1 PDT} - {2582182800 -28800 0 PST} - {2596096800 -25200 1 PDT} - {2613632400 -28800 0 PST} - {2627546400 -25200 1 PDT} - {2645082000 -28800 0 PST} - {2658996000 -25200 1 PDT} - {2676531600 -28800 0 PST} - {2690445600 -25200 1 PDT} - {2708586000 -28800 0 PST} - {2721895200 -25200 1 PDT} - {2740035600 -28800 0 PST} - {2753344800 -25200 1 PDT} - {2771485200 -28800 0 PST} - {2785399200 -25200 1 PDT} - {2802934800 -28800 0 PST} - {2816848800 -25200 1 PDT} - {2834384400 -28800 0 PST} - {2848298400 -25200 1 PDT} - {2866438800 -28800 0 PST} - {2879748000 -25200 1 PDT} - {2897888400 -28800 0 PST} - {2911197600 -25200 1 PDT} - {2929338000 -28800 0 PST} - {2942647200 -25200 1 PDT} - {2960787600 -28800 0 PST} - {2974701600 -25200 1 PDT} - {2992237200 -28800 0 PST} - {3006151200 -25200 1 PDT} - {3023686800 -28800 0 PST} - {3037600800 -25200 1 PDT} - {3055741200 -28800 0 PST} - {3069050400 -25200 1 PDT} - {3087190800 -28800 0 PST} - {3100500000 -25200 1 PDT} - {3118640400 -28800 0 PST} - {3132554400 -25200 1 PDT} - {3150090000 -28800 0 PST} - {3164004000 -25200 1 PDT} - {3181539600 -28800 0 PST} - {3195453600 -25200 1 PDT} - {3212989200 -28800 0 PST} - {3226903200 -25200 1 PDT} - {3245043600 -28800 0 PST} - {3258352800 -25200 1 PDT} - {3276493200 -28800 0 PST} - {3289802400 -25200 1 PDT} - {3307942800 -28800 0 PST} - {3321856800 -25200 1 PDT} - {3339392400 -28800 0 PST} - {3353306400 -25200 1 PDT} - {3370842000 -28800 0 PST} - {3384756000 -25200 1 PDT} - {3402896400 -28800 0 PST} - {3416205600 -25200 1 PDT} - {3434346000 -28800 0 PST} - {3447655200 -25200 1 PDT} - {3465795600 -28800 0 PST} - {3479709600 -25200 1 PDT} - {3497245200 -28800 0 PST} - {3511159200 -25200 1 PDT} - {3528694800 -28800 0 PST} - {3542608800 -25200 1 PDT} - {3560144400 -28800 0 PST} - {3574058400 -25200 1 PDT} - {3592198800 -28800 0 PST} - {3605508000 -25200 1 PDT} - {3623648400 -28800 0 PST} - {3636957600 -25200 1 PDT} - {3655098000 -28800 0 PST} - {3669012000 -25200 1 PDT} - {3686547600 -28800 0 PST} - {3700461600 -25200 1 PDT} - {3717997200 -28800 0 PST} - {3731911200 -25200 1 PDT} - {3750051600 -28800 0 PST} - {3763360800 -25200 1 PDT} - {3781501200 -28800 0 PST} - {3794810400 -25200 1 PDT} - {3812950800 -28800 0 PST} - {3826260000 -25200 1 PDT} - {3844400400 -28800 0 PST} - {3858314400 -25200 1 PDT} - {3875850000 -28800 0 PST} - {3889764000 -25200 1 PDT} - {3907299600 -28800 0 PST} - {3921213600 -25200 1 PDT} - {3939354000 -28800 0 PST} - {3952663200 -25200 1 PDT} - {3970803600 -28800 0 PST} - {3984112800 -25200 1 PDT} - {4002253200 -28800 0 PST} - {4016167200 -25200 1 PDT} - {4033702800 -28800 0 PST} - {4047616800 -25200 1 PDT} - {4065152400 -28800 0 PST} - {4079066400 -25200 1 PDT} - {4096602000 -28800 0 PST} + {1262332800 -28800 0 PST} + {1268560800 -25200 1 PDT} + {1289120400 -28800 0 PST} + {1300010400 -25200 1 PDT} + {1320570000 -28800 0 PST} + {1331460000 -25200 1 PDT} + {1352019600 -28800 0 PST} + {1362909600 -25200 1 PDT} + {1383469200 -28800 0 PST} + {1394359200 -25200 1 PDT} + {1414918800 -28800 0 PST} + {1425808800 -25200 1 PDT} + {1446368400 -28800 0 PST} + {1457863200 -25200 1 PDT} + {1478422800 -28800 0 PST} + {1489312800 -25200 1 PDT} + {1509872400 -28800 0 PST} + {1520762400 -25200 1 PDT} + {1541322000 -28800 0 PST} + {1552212000 -25200 1 PDT} + {1572771600 -28800 0 PST} + {1583661600 -25200 1 PDT} + {1604221200 -28800 0 PST} + {1615716000 -25200 1 PDT} + {1636275600 -28800 0 PST} + {1647165600 -25200 1 PDT} + {1667725200 -28800 0 PST} + {1678615200 -25200 1 PDT} + {1699174800 -28800 0 PST} + {1710064800 -25200 1 PDT} + {1730624400 -28800 0 PST} + {1741514400 -25200 1 PDT} + {1762074000 -28800 0 PST} + {1772964000 -25200 1 PDT} + {1793523600 -28800 0 PST} + {1805018400 -25200 1 PDT} + {1825578000 -28800 0 PST} + {1836468000 -25200 1 PDT} + {1857027600 -28800 0 PST} + {1867917600 -25200 1 PDT} + {1888477200 -28800 0 PST} + {1899367200 -25200 1 PDT} + {1919926800 -28800 0 PST} + {1930816800 -25200 1 PDT} + {1951376400 -28800 0 PST} + {1962871200 -25200 1 PDT} + {1983430800 -28800 0 PST} + {1994320800 -25200 1 PDT} + {2014880400 -28800 0 PST} + {2025770400 -25200 1 PDT} + {2046330000 -28800 0 PST} + {2057220000 -25200 1 PDT} + {2077779600 -28800 0 PST} + {2088669600 -25200 1 PDT} + {2109229200 -28800 0 PST} + {2120119200 -25200 1 PDT} + {2140678800 -28800 0 PST} + {2152173600 -25200 1 PDT} + {2172733200 -28800 0 PST} + {2183623200 -25200 1 PDT} + {2204182800 -28800 0 PST} + {2215072800 -25200 1 PDT} + {2235632400 -28800 0 PST} + {2246522400 -25200 1 PDT} + {2267082000 -28800 0 PST} + {2277972000 -25200 1 PDT} + {2298531600 -28800 0 PST} + {2309421600 -25200 1 PDT} + {2329981200 -28800 0 PST} + {2341476000 -25200 1 PDT} + {2362035600 -28800 0 PST} + {2372925600 -25200 1 PDT} + {2393485200 -28800 0 PST} + {2404375200 -25200 1 PDT} + {2424934800 -28800 0 PST} + {2435824800 -25200 1 PDT} + {2456384400 -28800 0 PST} + {2467274400 -25200 1 PDT} + {2487834000 -28800 0 PST} + {2499328800 -25200 1 PDT} + {2519888400 -28800 0 PST} + {2530778400 -25200 1 PDT} + {2551338000 -28800 0 PST} + {2562228000 -25200 1 PDT} + {2582787600 -28800 0 PST} + {2593677600 -25200 1 PDT} + {2614237200 -28800 0 PST} + {2625127200 -25200 1 PDT} + {2645686800 -28800 0 PST} + {2656576800 -25200 1 PDT} + {2677136400 -28800 0 PST} + {2688631200 -25200 1 PDT} + {2709190800 -28800 0 PST} + {2720080800 -25200 1 PDT} + {2740640400 -28800 0 PST} + {2751530400 -25200 1 PDT} + {2772090000 -28800 0 PST} + {2782980000 -25200 1 PDT} + {2803539600 -28800 0 PST} + {2814429600 -25200 1 PDT} + {2834989200 -28800 0 PST} + {2846484000 -25200 1 PDT} + {2867043600 -28800 0 PST} + {2877933600 -25200 1 PDT} + {2898493200 -28800 0 PST} + {2909383200 -25200 1 PDT} + {2929942800 -28800 0 PST} + {2940832800 -25200 1 PDT} + {2961392400 -28800 0 PST} + {2972282400 -25200 1 PDT} + {2992842000 -28800 0 PST} + {3003732000 -25200 1 PDT} + {3024291600 -28800 0 PST} + {3035786400 -25200 1 PDT} + {3056346000 -28800 0 PST} + {3067236000 -25200 1 PDT} + {3087795600 -28800 0 PST} + {3098685600 -25200 1 PDT} + {3119245200 -28800 0 PST} + {3130135200 -25200 1 PDT} + {3150694800 -28800 0 PST} + {3161584800 -25200 1 PDT} + {3182144400 -28800 0 PST} + {3193034400 -25200 1 PDT} + {3213594000 -28800 0 PST} + {3225088800 -25200 1 PDT} + {3245648400 -28800 0 PST} + {3256538400 -25200 1 PDT} + {3277098000 -28800 0 PST} + {3287988000 -25200 1 PDT} + {3308547600 -28800 0 PST} + {3319437600 -25200 1 PDT} + {3339997200 -28800 0 PST} + {3350887200 -25200 1 PDT} + {3371446800 -28800 0 PST} + {3382941600 -25200 1 PDT} + {3403501200 -28800 0 PST} + {3414391200 -25200 1 PDT} + {3434950800 -28800 0 PST} + {3445840800 -25200 1 PDT} + {3466400400 -28800 0 PST} + {3477290400 -25200 1 PDT} + {3497850000 -28800 0 PST} + {3508740000 -25200 1 PDT} + {3529299600 -28800 0 PST} + {3540189600 -25200 1 PDT} + {3560749200 -28800 0 PST} + {3572244000 -25200 1 PDT} + {3592803600 -28800 0 PST} + {3603693600 -25200 1 PDT} + {3624253200 -28800 0 PST} + {3635143200 -25200 1 PDT} + {3655702800 -28800 0 PST} + {3666592800 -25200 1 PDT} + {3687152400 -28800 0 PST} + {3698042400 -25200 1 PDT} + {3718602000 -28800 0 PST} + {3730096800 -25200 1 PDT} + {3750656400 -28800 0 PST} + {3761546400 -25200 1 PDT} + {3782106000 -28800 0 PST} + {3792996000 -25200 1 PDT} + {3813555600 -28800 0 PST} + {3824445600 -25200 1 PDT} + {3845005200 -28800 0 PST} + {3855895200 -25200 1 PDT} + {3876454800 -28800 0 PST} + {3887344800 -25200 1 PDT} + {3907904400 -28800 0 PST} + {3919399200 -25200 1 PDT} + {3939958800 -28800 0 PST} + {3950848800 -25200 1 PDT} + {3971408400 -28800 0 PST} + {3982298400 -25200 1 PDT} + {4002858000 -28800 0 PST} + {4013748000 -25200 1 PDT} + {4034307600 -28800 0 PST} + {4045197600 -25200 1 PDT} + {4065757200 -28800 0 PST} + {4076647200 -25200 1 PDT} + {4097206800 -28800 0 PST} } diff --git a/library/tzdata/America/Toronto b/library/tzdata/America/Toronto index e4fc91a..09bf786 100644 --- a/library/tzdata/America/Toronto +++ b/library/tzdata/America/Toronto @@ -4,7 +4,7 @@ set TZData(:America/Toronto) { {-9223372036854775808 -19052 0 LMT} {-2366736148 -18000 0 EST} {-1632070800 -14400 1 EDT} - {-1614794400 -18000 0 EST} + {-1615140000 -18000 0 EST} {-1609441200 -18000 0 EST} {-1601753400 -14400 1 EDT} {-1583697600 -18000 0 EST} diff --git a/library/tzdata/America/Tortola b/library/tzdata/America/Tortola index bf7f1fc..aa6f655 100644 --- a/library/tzdata/America/Tortola +++ b/library/tzdata/America/Tortola @@ -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) diff --git a/library/tzdata/America/Vancouver b/library/tzdata/America/Vancouver index b2e0415..aef639a 100644 --- a/library/tzdata/America/Vancouver +++ b/library/tzdata/America/Vancouver @@ -4,7 +4,7 @@ set TZData(:America/Vancouver) { {-9223372036854775808 -29548 0 LMT} {-2713880852 -28800 0 PST} {-1632060000 -25200 1 PDT} - {-1614783600 -28800 0 PST} + {-1615129200 -28800 0 PST} {-880207200 -25200 1 PWT} {-769395600 -25200 1 PPT} {-765385200 -28800 0 PST} diff --git a/library/tzdata/America/Virgin b/library/tzdata/America/Virgin index 390d7c2..c267e5b 100644 --- a/library/tzdata/America/Virgin +++ b/library/tzdata/America/Virgin @@ -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) diff --git a/library/tzdata/America/Winnipeg b/library/tzdata/America/Winnipeg index 7e6208a..e6efe47 100644 --- a/library/tzdata/America/Winnipeg +++ b/library/tzdata/America/Winnipeg @@ -6,7 +6,7 @@ set TZData(:America/Winnipeg) { {-1694368800 -18000 1 CDT} {-1681671600 -21600 0 CST} {-1632067200 -18000 1 CDT} - {-1614790800 -21600 0 CST} + {-1615136400 -21600 0 CST} {-1029686400 -18000 1 CDT} {-1018198800 -21600 0 CST} {-880214400 -18000 1 CWT} diff --git a/library/tzdata/Antarctica/Casey b/library/tzdata/Antarctica/Casey index 6d383f3..cbe3e3c 100644 --- a/library/tzdata/Antarctica/Casey +++ b/library/tzdata/Antarctica/Casey @@ -3,4 +3,8 @@ set TZData(:Antarctica/Casey) { {-9223372036854775808 0 0 zzz} {-31536000 28800 0 WST} + {1255802400 39600 0 CAST} + {1267714800 28800 0 WST} + {1319738400 39600 0 CAST} + {1329843600 28800 0 WST} } diff --git a/library/tzdata/Antarctica/Davis b/library/tzdata/Antarctica/Davis index f4b7282..2762d2f 100644 --- a/library/tzdata/Antarctica/Davis +++ b/library/tzdata/Antarctica/Davis @@ -5,4 +5,8 @@ set TZData(:Antarctica/Davis) { {-409190400 25200 0 DAVT} {-163062000 0 0 zzz} {-28857600 25200 0 DAVT} + {1255806000 18000 0 DAVT} + {1268251200 25200 0 DAVT} + {1319742000 18000 0 DAVT} + {1329854400 25200 0 DAVT} } diff --git a/library/tzdata/Antarctica/Macquarie b/library/tzdata/Antarctica/Macquarie new file mode 100644 index 0000000..bd5cf8a --- /dev/null +++ b/library/tzdata/Antarctica/Macquarie @@ -0,0 +1,97 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Antarctica/Macquarie) { + {-9223372036854775808 0 0 zzz} + {-2214259200 36000 0 EST} + {-1680508800 39600 1 EST} + {-1669892400 39600 0 EST} + {-1665392400 36000 0 EST} + {-1601719200 0 0 zzz} + {-94730400 36000 0 EST} + {-71136000 39600 1 EST} + {-55411200 36000 0 EST} + {-37267200 39600 1 EST} + {-25776000 36000 0 EST} + {-5817600 39600 1 EST} + {5673600 36000 0 EST} + {25632000 39600 1 EST} + {37728000 36000 0 EST} + {57686400 39600 1 EST} + {67968000 36000 0 EST} + {89136000 39600 1 EST} + {100022400 36000 0 EST} + {120585600 39600 1 EST} + {131472000 36000 0 EST} + {152035200 39600 1 EST} + {162921600 36000 0 EST} + {183484800 39600 1 EST} + {194976000 36000 0 EST} + {215539200 39600 1 EST} + {226425600 36000 0 EST} + {246988800 39600 1 EST} + {257875200 36000 0 EST} + {278438400 39600 1 EST} + {289324800 36000 0 EST} + {309888000 39600 1 EST} + {320774400 36000 0 EST} + {341337600 39600 1 EST} + {352224000 36000 0 EST} + {372787200 39600 1 EST} + {386092800 36000 0 EST} + {404841600 39600 1 EST} + {417542400 36000 0 EST} + {436291200 39600 1 EST} + {447177600 36000 0 EST} + {467740800 39600 1 EST} + {478627200 36000 0 EST} + {499190400 39600 1 EST} + {510076800 36000 0 EST} + {530035200 39600 1 EST} + {542736000 36000 0 EST} + {562089600 39600 1 EST} + {574790400 36000 0 EST} + {594144000 39600 1 EST} + {606240000 36000 0 EST} + {625593600 39600 1 EST} + {637689600 36000 0 EST} + {657043200 39600 1 EST} + {670348800 36000 0 EST} + {686678400 39600 1 EST} + {701798400 36000 0 EST} + {718128000 39600 1 EST} + {733248000 36000 0 EST} + {749577600 39600 1 EST} + {764697600 36000 0 EST} + {781027200 39600 1 EST} + {796147200 36000 0 EST} + {812476800 39600 1 EST} + {828201600 36000 0 EST} + {844531200 39600 1 EST} + {859651200 36000 0 EST} + {875980800 39600 1 EST} + {891100800 36000 0 EST} + {907430400 39600 1 EST} + {922550400 36000 0 EST} + {938880000 39600 1 EST} + {954000000 36000 0 EST} + {967305600 39600 1 EST} + {985449600 36000 0 EST} + {1002384000 39600 1 EST} + {1017504000 36000 0 EST} + {1033833600 39600 1 EST} + {1048953600 36000 0 EST} + {1065283200 39600 1 EST} + {1080403200 36000 0 EST} + {1096732800 39600 1 EST} + {1111852800 36000 0 EST} + {1128182400 39600 1 EST} + {1143907200 36000 0 EST} + {1159632000 39600 1 EST} + {1174752000 36000 0 EST} + {1191686400 39600 1 EST} + {1207411200 36000 0 EST} + {1223136000 39600 1 EST} + {1238860800 36000 0 EST} + {1254585600 39600 1 EST} + {1270310400 39600 0 MIST} +} diff --git a/library/tzdata/Antarctica/Mawson b/library/tzdata/Antarctica/Mawson index 1f0c3fe..ba03ba1 100644 --- a/library/tzdata/Antarctica/Mawson +++ b/library/tzdata/Antarctica/Mawson @@ -3,4 +3,5 @@ set TZData(:Antarctica/Mawson) { {-9223372036854775808 0 0 zzz} {-501206400 21600 0 MAWT} + {1255809600 18000 0 MAWT} } diff --git a/library/tzdata/Antarctica/McMurdo b/library/tzdata/Antarctica/McMurdo index 670f7eb..3b29ba1 100644 --- a/library/tzdata/Antarctica/McMurdo +++ b/library/tzdata/Antarctica/McMurdo @@ -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) diff --git a/library/tzdata/Antarctica/Palmer b/library/tzdata/Antarctica/Palmer index 1e24754..e87b171 100644 --- a/library/tzdata/Antarctica/Palmer +++ b/library/tzdata/Antarctica/Palmer @@ -67,188 +67,188 @@ set TZData(:Antarctica/Palmer) { {1160884800 -10800 1 CLST} {1173582000 -14400 0 CLT} {1192334400 -10800 1 CLST} - {1205031600 -14400 0 CLT} + {1206846000 -14400 0 CLT} {1223784000 -10800 1 CLST} {1237086000 -14400 0 CLT} {1255233600 -10800 1 CLST} - {1268535600 -14400 0 CLT} + {1270350000 -14400 0 CLT} {1286683200 -10800 1 CLST} - {1299985200 -14400 0 CLT} - {1318132800 -10800 1 CLST} - {1331434800 -14400 0 CLT} - {1350187200 -10800 1 CLST} - {1362884400 -14400 0 CLT} - {1381636800 -10800 1 CLST} - {1394334000 -14400 0 CLT} - {1413086400 -10800 1 CLST} - {1426388400 -14400 0 CLT} - {1444536000 -10800 1 CLST} - {1457838000 -14400 0 CLT} - {1475985600 -10800 1 CLST} - {1489287600 -14400 0 CLT} - {1508040000 -10800 1 CLST} - {1520737200 -14400 0 CLT} - {1539489600 -10800 1 CLST} - {1552186800 -14400 0 CLT} - {1570939200 -10800 1 CLST} - {1584241200 -14400 0 CLT} - {1602388800 -10800 1 CLST} - {1615690800 -14400 0 CLT} - {1633838400 -10800 1 CLST} - {1647140400 -14400 0 CLT} - {1665288000 -10800 1 CLST} - {1678590000 -14400 0 CLT} - {1697342400 -10800 1 CLST} - {1710039600 -14400 0 CLT} - {1728792000 -10800 1 CLST} - {1741489200 -14400 0 CLT} - {1760241600 -10800 1 CLST} - {1773543600 -14400 0 CLT} - {1791691200 -10800 1 CLST} - {1804993200 -14400 0 CLT} - {1823140800 -10800 1 CLST} - {1836442800 -14400 0 CLT} - {1855195200 -10800 1 CLST} - {1867892400 -14400 0 CLT} - {1886644800 -10800 1 CLST} - {1899342000 -14400 0 CLT} - {1918094400 -10800 1 CLST} - {1930791600 -14400 0 CLT} - {1949544000 -10800 1 CLST} - {1962846000 -14400 0 CLT} - {1980993600 -10800 1 CLST} - {1994295600 -14400 0 CLT} - {2012443200 -10800 1 CLST} - {2025745200 -14400 0 CLT} - {2044497600 -10800 1 CLST} - {2057194800 -14400 0 CLT} - {2075947200 -10800 1 CLST} - {2088644400 -14400 0 CLT} - {2107396800 -10800 1 CLST} - {2120698800 -14400 0 CLT} - {2138846400 -10800 1 CLST} - {2152148400 -14400 0 CLT} - {2170296000 -10800 1 CLST} - {2183598000 -14400 0 CLT} - {2201745600 -10800 1 CLST} - {2215047600 -14400 0 CLT} - {2233800000 -10800 1 CLST} - {2246497200 -14400 0 CLT} - {2265249600 -10800 1 CLST} - {2277946800 -14400 0 CLT} - {2296699200 -10800 1 CLST} - {2310001200 -14400 0 CLT} - {2328148800 -10800 1 CLST} - {2341450800 -14400 0 CLT} - {2359598400 -10800 1 CLST} - {2372900400 -14400 0 CLT} - {2391652800 -10800 1 CLST} - {2404350000 -14400 0 CLT} - {2423102400 -10800 1 CLST} - {2435799600 -14400 0 CLT} - {2454552000 -10800 1 CLST} - {2467854000 -14400 0 CLT} - {2486001600 -10800 1 CLST} - {2499303600 -14400 0 CLT} - {2517451200 -10800 1 CLST} - {2530753200 -14400 0 CLT} - {2548900800 -10800 1 CLST} - {2562202800 -14400 0 CLT} - {2580955200 -10800 1 CLST} - {2593652400 -14400 0 CLT} - {2612404800 -10800 1 CLST} - {2625102000 -14400 0 CLT} - {2643854400 -10800 1 CLST} - {2657156400 -14400 0 CLT} - {2675304000 -10800 1 CLST} - {2688606000 -14400 0 CLT} - {2706753600 -10800 1 CLST} - {2720055600 -14400 0 CLT} - {2738808000 -10800 1 CLST} - {2751505200 -14400 0 CLT} - {2770257600 -10800 1 CLST} - {2782954800 -14400 0 CLT} - {2801707200 -10800 1 CLST} - {2814404400 -14400 0 CLT} - {2833156800 -10800 1 CLST} - {2846458800 -14400 0 CLT} - {2864606400 -10800 1 CLST} - {2877908400 -14400 0 CLT} - {2896056000 -10800 1 CLST} - {2909358000 -14400 0 CLT} - {2928110400 -10800 1 CLST} - {2940807600 -14400 0 CLT} - {2959560000 -10800 1 CLST} - {2972257200 -14400 0 CLT} - {2991009600 -10800 1 CLST} - {3004311600 -14400 0 CLT} - {3022459200 -10800 1 CLST} - {3035761200 -14400 0 CLT} - {3053908800 -10800 1 CLST} - {3067210800 -14400 0 CLT} - {3085358400 -10800 1 CLST} - {3098660400 -14400 0 CLT} - {3117412800 -10800 1 CLST} - {3130110000 -14400 0 CLT} - {3148862400 -10800 1 CLST} - {3161559600 -14400 0 CLT} - {3180312000 -10800 1 CLST} - {3193614000 -14400 0 CLT} - {3211761600 -10800 1 CLST} - {3225063600 -14400 0 CLT} - {3243211200 -10800 1 CLST} - {3256513200 -14400 0 CLT} - {3275265600 -10800 1 CLST} - {3287962800 -14400 0 CLT} - {3306715200 -10800 1 CLST} - {3319412400 -14400 0 CLT} - {3338164800 -10800 1 CLST} - {3351466800 -14400 0 CLT} - {3369614400 -10800 1 CLST} - {3382916400 -14400 0 CLT} - {3401064000 -10800 1 CLST} - {3414366000 -14400 0 CLT} - {3432513600 -10800 1 CLST} - {3445815600 -14400 0 CLT} - {3464568000 -10800 1 CLST} - {3477265200 -14400 0 CLT} - {3496017600 -10800 1 CLST} - {3508714800 -14400 0 CLT} - {3527467200 -10800 1 CLST} - {3540769200 -14400 0 CLT} - {3558916800 -10800 1 CLST} - {3572218800 -14400 0 CLT} - {3590366400 -10800 1 CLST} - {3603668400 -14400 0 CLT} - {3622420800 -10800 1 CLST} - {3635118000 -14400 0 CLT} - {3653870400 -10800 1 CLST} - {3666567600 -14400 0 CLT} - {3685320000 -10800 1 CLST} - {3698017200 -14400 0 CLT} - {3716769600 -10800 1 CLST} - {3730071600 -14400 0 CLT} - {3748219200 -10800 1 CLST} - {3761521200 -14400 0 CLT} - {3779668800 -10800 1 CLST} - {3792970800 -14400 0 CLT} - {3811723200 -10800 1 CLST} - {3824420400 -14400 0 CLT} - {3843172800 -10800 1 CLST} - {3855870000 -14400 0 CLT} - {3874622400 -10800 1 CLST} - {3887924400 -14400 0 CLT} - {3906072000 -10800 1 CLST} - {3919374000 -14400 0 CLT} - {3937521600 -10800 1 CLST} - {3950823600 -14400 0 CLT} - {3968971200 -10800 1 CLST} - {3982273200 -14400 0 CLT} - {4001025600 -10800 1 CLST} - {4013722800 -14400 0 CLT} - {4032475200 -10800 1 CLST} - {4045172400 -14400 0 CLT} - {4063924800 -10800 1 CLST} - {4077226800 -14400 0 CLT} - {4095374400 -10800 1 CLST} + {1304823600 -14400 0 CLT} + {1313899200 -10800 1 CLST} + {1335668400 -14400 0 CLT} + {1346558400 -10800 1 CLST} + {1367118000 -14400 0 CLT} + {1378612800 -10800 1 CLST} + {1398567600 -14400 0 CLT} + {1410062400 -10800 1 CLST} + {1430017200 -14400 0 CLT} + {1441512000 -10800 1 CLST} + {1461466800 -14400 0 CLT} + {1472961600 -10800 1 CLST} + {1492916400 -14400 0 CLT} + {1504411200 -10800 1 CLST} + {1524970800 -14400 0 CLT} + {1535860800 -10800 1 CLST} + {1556420400 -14400 0 CLT} + {1567915200 -10800 1 CLST} + {1587870000 -14400 0 CLT} + {1599364800 -10800 1 CLST} + {1619319600 -14400 0 CLT} + {1630814400 -10800 1 CLST} + {1650769200 -14400 0 CLT} + {1662264000 -10800 1 CLST} + {1682218800 -14400 0 CLT} + {1693713600 -10800 1 CLST} + {1714273200 -14400 0 CLT} + {1725768000 -10800 1 CLST} + {1745722800 -14400 0 CLT} + {1757217600 -10800 1 CLST} + {1777172400 -14400 0 CLT} + {1788667200 -10800 1 CLST} + {1808622000 -14400 0 CLT} + {1820116800 -10800 1 CLST} + {1840071600 -14400 0 CLT} + {1851566400 -10800 1 CLST} + {1872126000 -14400 0 CLT} + {1883016000 -10800 1 CLST} + {1903575600 -14400 0 CLT} + {1915070400 -10800 1 CLST} + {1935025200 -14400 0 CLT} + {1946520000 -10800 1 CLST} + {1966474800 -14400 0 CLT} + {1977969600 -10800 1 CLST} + {1997924400 -14400 0 CLT} + {2009419200 -10800 1 CLST} + {2029374000 -14400 0 CLT} + {2040868800 -10800 1 CLST} + {2061428400 -14400 0 CLT} + {2072318400 -10800 1 CLST} + {2092878000 -14400 0 CLT} + {2104372800 -10800 1 CLST} + {2124327600 -14400 0 CLT} + {2135822400 -10800 1 CLST} + {2155777200 -14400 0 CLT} + {2167272000 -10800 1 CLST} + {2187226800 -14400 0 CLT} + {2198721600 -10800 1 CLST} + {2219281200 -14400 0 CLT} + {2230171200 -10800 1 CLST} + {2250730800 -14400 0 CLT} + {2262225600 -10800 1 CLST} + {2282180400 -14400 0 CLT} + {2293675200 -10800 1 CLST} + {2313630000 -14400 0 CLT} + {2325124800 -10800 1 CLST} + {2345079600 -14400 0 CLT} + {2356574400 -10800 1 CLST} + {2376529200 -14400 0 CLT} + {2388024000 -10800 1 CLST} + {2408583600 -14400 0 CLT} + {2419473600 -10800 1 CLST} + {2440033200 -14400 0 CLT} + {2451528000 -10800 1 CLST} + {2471482800 -14400 0 CLT} + {2482977600 -10800 1 CLST} + {2502932400 -14400 0 CLT} + {2514427200 -10800 1 CLST} + {2534382000 -14400 0 CLT} + {2545876800 -10800 1 CLST} + {2565831600 -14400 0 CLT} + {2577326400 -10800 1 CLST} + {2597886000 -14400 0 CLT} + {2609380800 -10800 1 CLST} + {2629335600 -14400 0 CLT} + {2640830400 -10800 1 CLST} + {2660785200 -14400 0 CLT} + {2672280000 -10800 1 CLST} + {2692234800 -14400 0 CLT} + {2703729600 -10800 1 CLST} + {2723684400 -14400 0 CLT} + {2735179200 -10800 1 CLST} + {2755738800 -14400 0 CLT} + {2766628800 -10800 1 CLST} + {2787188400 -14400 0 CLT} + {2798683200 -10800 1 CLST} + {2818638000 -14400 0 CLT} + {2830132800 -10800 1 CLST} + {2850087600 -14400 0 CLT} + {2861582400 -10800 1 CLST} + {2881537200 -14400 0 CLT} + {2893032000 -10800 1 CLST} + {2912986800 -14400 0 CLT} + {2924481600 -10800 1 CLST} + {2945041200 -14400 0 CLT} + {2955931200 -10800 1 CLST} + {2976490800 -14400 0 CLT} + {2987985600 -10800 1 CLST} + {3007940400 -14400 0 CLT} + {3019435200 -10800 1 CLST} + {3039390000 -14400 0 CLT} + {3050884800 -10800 1 CLST} + {3070839600 -14400 0 CLT} + {3082334400 -10800 1 CLST} + {3102894000 -14400 0 CLT} + {3113784000 -10800 1 CLST} + {3134343600 -14400 0 CLT} + {3145838400 -10800 1 CLST} + {3165793200 -14400 0 CLT} + {3177288000 -10800 1 CLST} + {3197242800 -14400 0 CLT} + {3208737600 -10800 1 CLST} + {3228692400 -14400 0 CLT} + {3240187200 -10800 1 CLST} + {3260142000 -14400 0 CLT} + {3271636800 -10800 1 CLST} + {3292196400 -14400 0 CLT} + {3303086400 -10800 1 CLST} + {3323646000 -14400 0 CLT} + {3335140800 -10800 1 CLST} + {3355095600 -14400 0 CLT} + {3366590400 -10800 1 CLST} + {3386545200 -14400 0 CLT} + {3398040000 -10800 1 CLST} + {3417994800 -14400 0 CLT} + {3429489600 -10800 1 CLST} + {3449444400 -14400 0 CLT} + {3460939200 -10800 1 CLST} + {3481498800 -14400 0 CLT} + {3492993600 -10800 1 CLST} + {3512948400 -14400 0 CLT} + {3524443200 -10800 1 CLST} + {3544398000 -14400 0 CLT} + {3555892800 -10800 1 CLST} + {3575847600 -14400 0 CLT} + {3587342400 -10800 1 CLST} + {3607297200 -14400 0 CLT} + {3618792000 -10800 1 CLST} + {3639351600 -14400 0 CLT} + {3650241600 -10800 1 CLST} + {3670801200 -14400 0 CLT} + {3682296000 -10800 1 CLST} + {3702250800 -14400 0 CLT} + {3713745600 -10800 1 CLST} + {3733700400 -14400 0 CLT} + {3745195200 -10800 1 CLST} + {3765150000 -14400 0 CLT} + {3776644800 -10800 1 CLST} + {3796599600 -14400 0 CLT} + {3808094400 -10800 1 CLST} + {3828654000 -14400 0 CLT} + {3839544000 -10800 1 CLST} + {3860103600 -14400 0 CLT} + {3871598400 -10800 1 CLST} + {3891553200 -14400 0 CLT} + {3903048000 -10800 1 CLST} + {3923002800 -14400 0 CLT} + {3934497600 -10800 1 CLST} + {3954452400 -14400 0 CLT} + {3965947200 -10800 1 CLST} + {3986506800 -14400 0 CLT} + {3997396800 -10800 1 CLST} + {4017956400 -14400 0 CLT} + {4029451200 -10800 1 CLST} + {4049406000 -14400 0 CLT} + {4060900800 -10800 1 CLST} + {4080855600 -14400 0 CLT} + {4092350400 -10800 1 CLST} } diff --git a/library/tzdata/Antarctica/South_Pole b/library/tzdata/Antarctica/South_Pole index 34d0db1..544bde4 100644 --- a/library/tzdata/Antarctica/South_Pole +++ b/library/tzdata/Antarctica/South_Pole @@ -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) diff --git a/library/tzdata/Asia/Aden b/library/tzdata/Asia/Aden index e939235..399d9f0 100644 --- a/library/tzdata/Asia/Aden +++ b/library/tzdata/Asia/Aden @@ -1,6 +1,6 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Asia/Aden) { - {-9223372036854775808 10848 0 LMT} - {-631162848 10800 0 AST} + {-9223372036854775808 10794 0 LMT} + {-631162794 10800 0 AST} } diff --git a/library/tzdata/Asia/Amman b/library/tzdata/Asia/Amman index 5b34dbd..d5e8616 100644 --- a/library/tzdata/Asia/Amman +++ b/library/tzdata/Asia/Amman @@ -44,205 +44,31 @@ set TZData(:Asia/Amman) { {891554400 10800 1 EEST} {906069600 7200 0 EET} {930780000 10800 1 EEST} - {938642400 7200 0 EET} + {938124000 7200 0 EET} {954367200 10800 1 EEST} - {970092000 7200 0 EET} + {970178400 7200 0 EET} {985816800 10800 1 EEST} - {1001541600 7200 0 EET} - {1017266400 10800 1 EEST} - {1032991200 7200 0 EET} - {1048716000 10800 1 EEST} + {1001628000 7200 0 EET} + {1017352800 10800 1 EEST} + {1033077600 7200 0 EET} + {1048802400 10800 1 EEST} {1066946400 7200 0 EET} - {1080165600 10800 1 EEST} + {1080252000 10800 1 EEST} {1097791200 7200 0 EET} - {1112220000 10800 1 EEST} + {1112306400 10800 1 EEST} {1128031200 7200 0 EET} - {1143669600 10800 1 EEST} + {1143756000 10800 1 EEST} {1161900000 7200 0 EET} - {1175119200 10800 1 EEST} + {1175205600 10800 1 EEST} {1193349600 7200 0 EET} - {1206568800 10800 1 EEST} + {1206655200 10800 1 EEST} {1225404000 7200 0 EET} - {1238018400 10800 1 EEST} + {1238104800 10800 1 EEST} {1256853600 7200 0 EET} - {1269468000 10800 1 EEST} + {1269554400 10800 1 EEST} {1288303200 7200 0 EET} - {1301522400 10800 1 EEST} + {1301608800 10800 1 EEST} {1319752800 7200 0 EET} - {1332972000 10800 1 EEST} - {1351202400 7200 0 EET} - {1364421600 10800 1 EEST} - {1382652000 7200 0 EET} - {1395871200 10800 1 EEST} - {1414706400 7200 0 EET} - {1427320800 10800 1 EEST} - {1446156000 7200 0 EET} - {1459375200 10800 1 EEST} - {1477605600 7200 0 EET} - {1490824800 10800 1 EEST} - {1509055200 7200 0 EET} - {1522274400 10800 1 EEST} - {1540504800 7200 0 EET} - {1553724000 10800 1 EEST} - {1571954400 7200 0 EET} - {1585173600 10800 1 EEST} - {1604008800 7200 0 EET} - {1616623200 10800 1 EEST} - {1635458400 7200 0 EET} - {1648677600 10800 1 EEST} - {1666908000 7200 0 EET} - {1680127200 10800 1 EEST} - {1698357600 7200 0 EET} - {1711576800 10800 1 EEST} - {1729807200 7200 0 EET} - {1743026400 10800 1 EEST} - {1761861600 7200 0 EET} - {1774476000 10800 1 EEST} - {1793311200 7200 0 EET} - {1805925600 10800 1 EEST} - {1824760800 7200 0 EET} - {1837980000 10800 1 EEST} - {1856210400 7200 0 EET} - {1869429600 10800 1 EEST} - {1887660000 7200 0 EET} - {1900879200 10800 1 EEST} - {1919109600 7200 0 EET} - {1932328800 10800 1 EEST} - {1951164000 7200 0 EET} - {1963778400 10800 1 EEST} - {1982613600 7200 0 EET} - {1995832800 10800 1 EEST} - {2014063200 7200 0 EET} - {2027282400 10800 1 EEST} - {2045512800 7200 0 EET} - {2058732000 10800 1 EEST} - {2076962400 7200 0 EET} - {2090181600 10800 1 EEST} - {2109016800 7200 0 EET} - {2121631200 10800 1 EEST} - {2140466400 7200 0 EET} - {2153080800 10800 1 EEST} - {2171916000 7200 0 EET} - {2185135200 10800 1 EEST} - {2203365600 7200 0 EET} - {2216584800 10800 1 EEST} - {2234815200 7200 0 EET} - {2248034400 10800 1 EEST} - {2266264800 7200 0 EET} - {2279484000 10800 1 EEST} - {2298319200 7200 0 EET} - {2310933600 10800 1 EEST} - {2329768800 7200 0 EET} - {2342988000 10800 1 EEST} - {2361218400 7200 0 EET} - {2374437600 10800 1 EEST} - {2392668000 7200 0 EET} - {2405887200 10800 1 EEST} - {2424117600 7200 0 EET} - {2437336800 10800 1 EEST} - {2455567200 7200 0 EET} - {2468786400 10800 1 EEST} - {2487621600 7200 0 EET} - {2500236000 10800 1 EEST} - {2519071200 7200 0 EET} - {2532290400 10800 1 EEST} - {2550520800 7200 0 EET} - {2563740000 10800 1 EEST} - {2581970400 7200 0 EET} - {2595189600 10800 1 EEST} - {2613420000 7200 0 EET} - {2626639200 10800 1 EEST} - {2645474400 7200 0 EET} - {2658088800 10800 1 EEST} - {2676924000 7200 0 EET} - {2689538400 10800 1 EEST} - {2708373600 7200 0 EET} - {2721592800 10800 1 EEST} - {2739823200 7200 0 EET} - {2753042400 10800 1 EEST} - {2771272800 7200 0 EET} - {2784492000 10800 1 EEST} - {2802722400 7200 0 EET} - {2815941600 10800 1 EEST} - {2834776800 7200 0 EET} - {2847391200 10800 1 EEST} - {2866226400 7200 0 EET} - {2879445600 10800 1 EEST} - {2897676000 7200 0 EET} - {2910895200 10800 1 EEST} - {2929125600 7200 0 EET} - {2942344800 10800 1 EEST} - {2960575200 7200 0 EET} - {2973794400 10800 1 EEST} - {2992629600 7200 0 EET} - {3005244000 10800 1 EEST} - {3024079200 7200 0 EET} - {3036693600 10800 1 EEST} - {3055528800 7200 0 EET} - {3068748000 10800 1 EEST} - {3086978400 7200 0 EET} - {3100197600 10800 1 EEST} - {3118428000 7200 0 EET} - {3131647200 10800 1 EEST} - {3149877600 7200 0 EET} - {3163096800 10800 1 EEST} - {3181932000 7200 0 EET} - {3194546400 10800 1 EEST} - {3213381600 7200 0 EET} - {3226600800 10800 1 EEST} - {3244831200 7200 0 EET} - {3258050400 10800 1 EEST} - {3276280800 7200 0 EET} - {3289500000 10800 1 EEST} - {3307730400 7200 0 EET} - {3320949600 10800 1 EEST} - {3339180000 7200 0 EET} - {3352399200 10800 1 EEST} - {3371234400 7200 0 EET} - {3383848800 10800 1 EEST} - {3402684000 7200 0 EET} - {3415903200 10800 1 EEST} - {3434133600 7200 0 EET} - {3447352800 10800 1 EEST} - {3465583200 7200 0 EET} - {3478802400 10800 1 EEST} - {3497032800 7200 0 EET} - {3510252000 10800 1 EEST} - {3529087200 7200 0 EET} - {3541701600 10800 1 EEST} - {3560536800 7200 0 EET} - {3573151200 10800 1 EEST} - {3591986400 7200 0 EET} - {3605205600 10800 1 EEST} - {3623436000 7200 0 EET} - {3636655200 10800 1 EEST} - {3654885600 7200 0 EET} - {3668104800 10800 1 EEST} - {3686335200 7200 0 EET} - {3699554400 10800 1 EEST} - {3718389600 7200 0 EET} - {3731004000 10800 1 EEST} - {3749839200 7200 0 EET} - {3763058400 10800 1 EEST} - {3781288800 7200 0 EET} - {3794508000 10800 1 EEST} - {3812738400 7200 0 EET} - {3825957600 10800 1 EEST} - {3844188000 7200 0 EET} - {3857407200 10800 1 EEST} - {3876242400 7200 0 EET} - {3888856800 10800 1 EEST} - {3907692000 7200 0 EET} - {3920306400 10800 1 EEST} - {3939141600 7200 0 EET} - {3952360800 10800 1 EEST} - {3970591200 7200 0 EET} - {3983810400 10800 1 EEST} - {4002040800 7200 0 EET} - {4015260000 10800 1 EEST} - {4033490400 7200 0 EET} - {4046709600 10800 1 EEST} - {4065544800 7200 0 EET} - {4078159200 10800 1 EEST} - {4096994400 7200 0 EET} + {1333058400 10800 1 EEST} + {1351202400 10800 0 AST} } diff --git a/library/tzdata/Asia/Anadyr b/library/tzdata/Asia/Anadyr index c0e98a7..50ace50 100644 --- a/library/tzdata/Asia/Anadyr +++ b/library/tzdata/Asia/Anadyr @@ -65,184 +65,8 @@ set TZData(:Asia/Anadyr) { {1224943200 43200 0 ANAT} {1238248800 46800 1 ANAST} {1256392800 43200 0 ANAT} - {1269698400 46800 1 ANAST} - {1288447200 43200 0 ANAT} - {1301148000 46800 1 ANAST} - {1319896800 43200 0 ANAT} - {1332597600 46800 1 ANAST} - {1351346400 43200 0 ANAT} - {1364652000 46800 1 ANAST} - {1382796000 43200 0 ANAT} - {1396101600 46800 1 ANAST} - {1414245600 43200 0 ANAT} - {1427551200 46800 1 ANAST} - {1445695200 43200 0 ANAT} - {1459000800 46800 1 ANAST} - {1477749600 43200 0 ANAT} - {1490450400 46800 1 ANAST} - {1509199200 43200 0 ANAT} - {1521900000 46800 1 ANAST} - {1540648800 43200 0 ANAT} - {1553954400 46800 1 ANAST} - {1572098400 43200 0 ANAT} - {1585404000 46800 1 ANAST} - {1603548000 43200 0 ANAT} - {1616853600 46800 1 ANAST} - {1635602400 43200 0 ANAT} - {1648303200 46800 1 ANAST} - {1667052000 43200 0 ANAT} - {1679752800 46800 1 ANAST} - {1698501600 43200 0 ANAT} - {1711807200 46800 1 ANAST} - {1729951200 43200 0 ANAT} - {1743256800 46800 1 ANAST} - {1761400800 43200 0 ANAT} - {1774706400 46800 1 ANAST} - {1792850400 43200 0 ANAT} - {1806156000 46800 1 ANAST} - {1824904800 43200 0 ANAT} - {1837605600 46800 1 ANAST} - {1856354400 43200 0 ANAT} - {1869055200 46800 1 ANAST} - {1887804000 43200 0 ANAT} - {1901109600 46800 1 ANAST} - {1919253600 43200 0 ANAT} - {1932559200 46800 1 ANAST} - {1950703200 43200 0 ANAT} - {1964008800 46800 1 ANAST} - {1982757600 43200 0 ANAT} - {1995458400 46800 1 ANAST} - {2014207200 43200 0 ANAT} - {2026908000 46800 1 ANAST} - {2045656800 43200 0 ANAT} - {2058357600 46800 1 ANAST} - {2077106400 43200 0 ANAT} - {2090412000 46800 1 ANAST} - {2108556000 43200 0 ANAT} - {2121861600 46800 1 ANAST} - {2140005600 43200 0 ANAT} - {2153311200 46800 1 ANAST} - {2172060000 43200 0 ANAT} - {2184760800 46800 1 ANAST} - {2203509600 43200 0 ANAT} - {2216210400 46800 1 ANAST} - {2234959200 43200 0 ANAT} - {2248264800 46800 1 ANAST} - {2266408800 43200 0 ANAT} - {2279714400 46800 1 ANAST} - {2297858400 43200 0 ANAT} - {2311164000 46800 1 ANAST} - {2329308000 43200 0 ANAT} - {2342613600 46800 1 ANAST} - {2361362400 43200 0 ANAT} - {2374063200 46800 1 ANAST} - {2392812000 43200 0 ANAT} - {2405512800 46800 1 ANAST} - {2424261600 43200 0 ANAT} - {2437567200 46800 1 ANAST} - {2455711200 43200 0 ANAT} - {2469016800 46800 1 ANAST} - {2487160800 43200 0 ANAT} - {2500466400 46800 1 ANAST} - {2519215200 43200 0 ANAT} - {2531916000 46800 1 ANAST} - {2550664800 43200 0 ANAT} - {2563365600 46800 1 ANAST} - {2582114400 43200 0 ANAT} - {2595420000 46800 1 ANAST} - {2613564000 43200 0 ANAT} - {2626869600 46800 1 ANAST} - {2645013600 43200 0 ANAT} - {2658319200 46800 1 ANAST} - {2676463200 43200 0 ANAT} - {2689768800 46800 1 ANAST} - {2708517600 43200 0 ANAT} - {2721218400 46800 1 ANAST} - {2739967200 43200 0 ANAT} - {2752668000 46800 1 ANAST} - {2771416800 43200 0 ANAT} - {2784722400 46800 1 ANAST} - {2802866400 43200 0 ANAT} - {2816172000 46800 1 ANAST} - {2834316000 43200 0 ANAT} - {2847621600 46800 1 ANAST} - {2866370400 43200 0 ANAT} - {2879071200 46800 1 ANAST} - {2897820000 43200 0 ANAT} - {2910520800 46800 1 ANAST} - {2929269600 43200 0 ANAT} - {2941970400 46800 1 ANAST} - {2960719200 43200 0 ANAT} - {2974024800 46800 1 ANAST} - {2992168800 43200 0 ANAT} - {3005474400 46800 1 ANAST} - {3023618400 43200 0 ANAT} - {3036924000 46800 1 ANAST} - {3055672800 43200 0 ANAT} - {3068373600 46800 1 ANAST} - {3087122400 43200 0 ANAT} - {3099823200 46800 1 ANAST} - {3118572000 43200 0 ANAT} - {3131877600 46800 1 ANAST} - {3150021600 43200 0 ANAT} - {3163327200 46800 1 ANAST} - {3181471200 43200 0 ANAT} - {3194776800 46800 1 ANAST} - {3212920800 43200 0 ANAT} - {3226226400 46800 1 ANAST} - {3244975200 43200 0 ANAT} - {3257676000 46800 1 ANAST} - {3276424800 43200 0 ANAT} - {3289125600 46800 1 ANAST} - {3307874400 43200 0 ANAT} - {3321180000 46800 1 ANAST} - {3339324000 43200 0 ANAT} - {3352629600 46800 1 ANAST} - {3370773600 43200 0 ANAT} - {3384079200 46800 1 ANAST} - {3402828000 43200 0 ANAT} - {3415528800 46800 1 ANAST} - {3434277600 43200 0 ANAT} - {3446978400 46800 1 ANAST} - {3465727200 43200 0 ANAT} - {3479032800 46800 1 ANAST} - {3497176800 43200 0 ANAT} - {3510482400 46800 1 ANAST} - {3528626400 43200 0 ANAT} - {3541932000 46800 1 ANAST} - {3560076000 43200 0 ANAT} - {3573381600 46800 1 ANAST} - {3592130400 43200 0 ANAT} - {3604831200 46800 1 ANAST} - {3623580000 43200 0 ANAT} - {3636280800 46800 1 ANAST} - {3655029600 43200 0 ANAT} - {3668335200 46800 1 ANAST} - {3686479200 43200 0 ANAT} - {3699784800 46800 1 ANAST} - {3717928800 43200 0 ANAT} - {3731234400 46800 1 ANAST} - {3749983200 43200 0 ANAT} - {3762684000 46800 1 ANAST} - {3781432800 43200 0 ANAT} - {3794133600 46800 1 ANAST} - {3812882400 43200 0 ANAT} - {3825583200 46800 1 ANAST} - {3844332000 43200 0 ANAT} - {3857637600 46800 1 ANAST} - {3875781600 43200 0 ANAT} - {3889087200 46800 1 ANAST} - {3907231200 43200 0 ANAT} - {3920536800 46800 1 ANAST} - {3939285600 43200 0 ANAT} - {3951986400 46800 1 ANAST} - {3970735200 43200 0 ANAT} - {3983436000 46800 1 ANAST} - {4002184800 43200 0 ANAT} - {4015490400 46800 1 ANAST} - {4033634400 43200 0 ANAT} - {4046940000 46800 1 ANAST} - {4065084000 43200 0 ANAT} - {4078389600 46800 1 ANAST} - {4096533600 43200 0 ANAT} + {1269698400 39600 0 ANAMMTT} + {1269702000 43200 1 ANAST} + {1288450800 39600 0 ANAT} + {1301151600 43200 0 ANAT} } diff --git a/library/tzdata/Asia/Damascus b/library/tzdata/Asia/Damascus index 4cfeee7..fafef49 100644 --- a/library/tzdata/Asia/Damascus +++ b/library/tzdata/Asia/Damascus @@ -95,186 +95,186 @@ set TZData(:Asia/Damascus) { {1193950800 7200 0 EET} {1207260000 10800 1 EEST} {1225486800 7200 0 EET} - {1238709600 10800 1 EEST} - {1257022800 7200 0 EET} + {1238104800 10800 1 EEST} + {1256850000 7200 0 EET} {1270159200 10800 1 EEST} - {1288558800 7200 0 EET} + {1288299600 7200 0 EET} {1301608800 10800 1 EEST} - {1320094800 7200 0 EET} - {1333663200 10800 1 EEST} - {1351717200 7200 0 EET} - {1365112800 10800 1 EEST} - {1383253200 7200 0 EET} - {1396562400 10800 1 EEST} - {1414789200 7200 0 EET} - {1428012000 10800 1 EEST} - {1446325200 7200 0 EET} - {1459461600 10800 1 EEST} - {1477947600 7200 0 EET} - {1491516000 10800 1 EEST} - {1509483600 7200 0 EET} - {1522965600 10800 1 EEST} - {1541019600 7200 0 EET} - {1554415200 10800 1 EEST} - {1572555600 7200 0 EET} - {1585864800 10800 1 EEST} - {1604178000 7200 0 EET} - {1617314400 10800 1 EEST} - {1635714000 7200 0 EET} - {1648764000 10800 1 EEST} - {1667250000 7200 0 EET} - {1680818400 10800 1 EEST} - {1698786000 7200 0 EET} - {1712268000 10800 1 EEST} - {1730408400 7200 0 EET} - {1743717600 10800 1 EEST} - {1761944400 7200 0 EET} - {1775167200 10800 1 EEST} - {1793480400 7200 0 EET} - {1806616800 10800 1 EEST} - {1825016400 7200 0 EET} - {1838671200 10800 1 EEST} - {1856638800 7200 0 EET} - {1870120800 10800 1 EEST} - {1888174800 7200 0 EET} - {1901570400 10800 1 EEST} - {1919710800 7200 0 EET} - {1933020000 10800 1 EEST} - {1951246800 7200 0 EET} - {1964469600 10800 1 EEST} - {1982869200 7200 0 EET} - {1995919200 10800 1 EEST} - {2014405200 7200 0 EET} - {2027973600 10800 1 EEST} - {2045941200 7200 0 EET} - {2059423200 10800 1 EEST} - {2077477200 7200 0 EET} - {2090872800 10800 1 EEST} - {2109099600 7200 0 EET} - {2122322400 10800 1 EEST} - {2140635600 7200 0 EET} - {2153772000 10800 1 EEST} - {2172171600 7200 0 EET} - {2185221600 10800 1 EEST} - {2203707600 7200 0 EET} - {2217276000 10800 1 EEST} - {2235330000 7200 0 EET} - {2248725600 10800 1 EEST} - {2266866000 7200 0 EET} - {2280175200 10800 1 EEST} - {2298402000 7200 0 EET} - {2311624800 10800 1 EEST} - {2329938000 7200 0 EET} - {2343074400 10800 1 EEST} - {2361560400 7200 0 EET} - {2375128800 10800 1 EEST} - {2393096400 7200 0 EET} - {2406578400 10800 1 EEST} - {2424632400 7200 0 EET} - {2438028000 10800 1 EEST} - {2456168400 7200 0 EET} - {2469477600 10800 1 EEST} - {2487790800 7200 0 EET} - {2500927200 10800 1 EEST} - {2519326800 7200 0 EET} - {2532376800 10800 1 EEST} - {2550862800 7200 0 EET} - {2564431200 10800 1 EEST} - {2582398800 7200 0 EET} - {2595880800 10800 1 EEST} - {2614021200 7200 0 EET} - {2627330400 10800 1 EEST} - {2645557200 7200 0 EET} - {2658780000 10800 1 EEST} - {2677093200 7200 0 EET} - {2690229600 10800 1 EEST} - {2708629200 7200 0 EET} - {2722284000 10800 1 EEST} - {2740251600 7200 0 EET} - {2753733600 10800 1 EEST} - {2771787600 7200 0 EET} - {2785183200 10800 1 EEST} - {2803323600 7200 0 EET} - {2816632800 10800 1 EEST} - {2834859600 7200 0 EET} - {2848082400 10800 1 EEST} - {2866482000 7200 0 EET} - {2879532000 10800 1 EEST} - {2898018000 7200 0 EET} - {2911586400 10800 1 EEST} - {2929554000 7200 0 EET} - {2943036000 10800 1 EEST} - {2961090000 7200 0 EET} - {2974485600 10800 1 EEST} - {2992712400 7200 0 EET} - {3005935200 10800 1 EEST} - {3024248400 7200 0 EET} - {3037384800 10800 1 EEST} - {3055784400 7200 0 EET} - {3068834400 10800 1 EEST} - {3087320400 7200 0 EET} - {3100888800 10800 1 EEST} - {3118942800 7200 0 EET} - {3132338400 10800 1 EEST} - {3150478800 7200 0 EET} - {3163788000 10800 1 EEST} - {3182014800 7200 0 EET} - {3195237600 10800 1 EEST} - {3213550800 7200 0 EET} - {3226687200 10800 1 EEST} - {3245173200 7200 0 EET} - {3258741600 10800 1 EEST} - {3276709200 7200 0 EET} - {3290191200 10800 1 EEST} - {3308245200 7200 0 EET} - {3321640800 10800 1 EEST} - {3339781200 7200 0 EET} - {3353090400 10800 1 EEST} - {3371403600 7200 0 EET} - {3384540000 10800 1 EEST} - {3402939600 7200 0 EET} - {3415989600 10800 1 EEST} - {3434475600 7200 0 EET} - {3448044000 10800 1 EEST} - {3466011600 7200 0 EET} - {3479493600 10800 1 EEST} - {3497634000 7200 0 EET} - {3510943200 10800 1 EEST} - {3529170000 7200 0 EET} - {3542392800 10800 1 EEST} - {3560706000 7200 0 EET} - {3573842400 10800 1 EEST} - {3592242000 7200 0 EET} - {3605896800 10800 1 EEST} - {3623864400 7200 0 EET} - {3637346400 10800 1 EEST} - {3655400400 7200 0 EET} - {3668796000 10800 1 EEST} - {3686936400 7200 0 EET} - {3700245600 10800 1 EEST} - {3718472400 7200 0 EET} - {3731695200 10800 1 EEST} - {3750094800 7200 0 EET} - {3763144800 10800 1 EEST} - {3781630800 7200 0 EET} - {3795199200 10800 1 EEST} - {3813166800 7200 0 EET} - {3826648800 10800 1 EEST} - {3844702800 7200 0 EET} - {3858098400 10800 1 EEST} - {3876325200 7200 0 EET} - {3889548000 10800 1 EEST} - {3907861200 7200 0 EET} - {3920997600 10800 1 EEST} - {3939397200 7200 0 EET} - {3952447200 10800 1 EEST} - {3970933200 7200 0 EET} - {3984501600 10800 1 EEST} - {4002555600 7200 0 EET} - {4015951200 10800 1 EEST} - {4034091600 7200 0 EET} - {4047400800 10800 1 EEST} - {4065627600 7200 0 EET} - {4078850400 10800 1 EEST} - {4097163600 7200 0 EET} + {1319749200 7200 0 EET} + {1333058400 10800 1 EEST} + {1351198800 7200 0 EET} + {1364508000 10800 1 EEST} + {1382648400 7200 0 EET} + {1395957600 10800 1 EEST} + {1414702800 7200 0 EET} + {1427407200 10800 1 EEST} + {1446152400 7200 0 EET} + {1458856800 10800 1 EEST} + {1477602000 7200 0 EET} + {1490911200 10800 1 EEST} + {1509051600 7200 0 EET} + {1522360800 10800 1 EEST} + {1540501200 7200 0 EET} + {1553810400 10800 1 EEST} + {1571950800 7200 0 EET} + {1585260000 10800 1 EEST} + {1604005200 7200 0 EET} + {1616709600 10800 1 EEST} + {1635454800 7200 0 EET} + {1648159200 10800 1 EEST} + {1666904400 7200 0 EET} + {1680213600 10800 1 EEST} + {1698354000 7200 0 EET} + {1711663200 10800 1 EEST} + {1729803600 7200 0 EET} + {1743112800 10800 1 EEST} + {1761858000 7200 0 EET} + {1774562400 10800 1 EEST} + {1793307600 7200 0 EET} + {1806012000 10800 1 EEST} + {1824757200 7200 0 EET} + {1838066400 10800 1 EEST} + {1856206800 7200 0 EET} + {1869516000 10800 1 EEST} + {1887656400 7200 0 EET} + {1900965600 10800 1 EEST} + {1919106000 7200 0 EET} + {1932415200 10800 1 EEST} + {1951160400 7200 0 EET} + {1963864800 10800 1 EEST} + {1982610000 7200 0 EET} + {1995314400 10800 1 EEST} + {2014059600 7200 0 EET} + {2027368800 10800 1 EEST} + {2045509200 7200 0 EET} + {2058818400 10800 1 EEST} + {2076958800 7200 0 EET} + {2090268000 10800 1 EEST} + {2109013200 7200 0 EET} + {2121717600 10800 1 EEST} + {2140462800 7200 0 EET} + {2153167200 10800 1 EEST} + {2171912400 7200 0 EET} + {2184616800 10800 1 EEST} + {2203362000 7200 0 EET} + {2216671200 10800 1 EEST} + {2234811600 7200 0 EET} + {2248120800 10800 1 EEST} + {2266261200 7200 0 EET} + {2279570400 10800 1 EEST} + {2298315600 7200 0 EET} + {2311020000 10800 1 EEST} + {2329765200 7200 0 EET} + {2342469600 10800 1 EEST} + {2361214800 7200 0 EET} + {2374524000 10800 1 EEST} + {2392664400 7200 0 EET} + {2405973600 10800 1 EEST} + {2424114000 7200 0 EET} + {2437423200 10800 1 EEST} + {2455563600 7200 0 EET} + {2468872800 10800 1 EEST} + {2487618000 7200 0 EET} + {2500322400 10800 1 EEST} + {2519067600 7200 0 EET} + {2531772000 10800 1 EEST} + {2550517200 7200 0 EET} + {2563826400 10800 1 EEST} + {2581966800 7200 0 EET} + {2595276000 10800 1 EEST} + {2613416400 7200 0 EET} + {2626725600 10800 1 EEST} + {2645470800 7200 0 EET} + {2658175200 10800 1 EEST} + {2676920400 7200 0 EET} + {2689624800 10800 1 EEST} + {2708370000 7200 0 EET} + {2721679200 10800 1 EEST} + {2739819600 7200 0 EET} + {2753128800 10800 1 EEST} + {2771269200 7200 0 EET} + {2784578400 10800 1 EEST} + {2802718800 7200 0 EET} + {2816028000 10800 1 EEST} + {2834773200 7200 0 EET} + {2847477600 10800 1 EEST} + {2866222800 7200 0 EET} + {2878927200 10800 1 EEST} + {2897672400 7200 0 EET} + {2910981600 10800 1 EEST} + {2929122000 7200 0 EET} + {2942431200 10800 1 EEST} + {2960571600 7200 0 EET} + {2973880800 10800 1 EEST} + {2992626000 7200 0 EET} + {3005330400 10800 1 EEST} + {3024075600 7200 0 EET} + {3036780000 10800 1 EEST} + {3055525200 7200 0 EET} + {3068229600 10800 1 EEST} + {3086974800 7200 0 EET} + {3100284000 10800 1 EEST} + {3118424400 7200 0 EET} + {3131733600 10800 1 EEST} + {3149874000 7200 0 EET} + {3163183200 10800 1 EEST} + {3181928400 7200 0 EET} + {3194632800 10800 1 EEST} + {3213378000 7200 0 EET} + {3226082400 10800 1 EEST} + {3244827600 7200 0 EET} + {3258136800 10800 1 EEST} + {3276277200 7200 0 EET} + {3289586400 10800 1 EEST} + {3307726800 7200 0 EET} + {3321036000 10800 1 EEST} + {3339176400 7200 0 EET} + {3352485600 10800 1 EEST} + {3371230800 7200 0 EET} + {3383935200 10800 1 EEST} + {3402680400 7200 0 EET} + {3415384800 10800 1 EEST} + {3434130000 7200 0 EET} + {3447439200 10800 1 EEST} + {3465579600 7200 0 EET} + {3478888800 10800 1 EEST} + {3497029200 7200 0 EET} + {3510338400 10800 1 EEST} + {3529083600 7200 0 EET} + {3541788000 10800 1 EEST} + {3560533200 7200 0 EET} + {3573237600 10800 1 EEST} + {3591982800 7200 0 EET} + {3605292000 10800 1 EEST} + {3623432400 7200 0 EET} + {3636741600 10800 1 EEST} + {3654882000 7200 0 EET} + {3668191200 10800 1 EEST} + {3686331600 7200 0 EET} + {3699640800 10800 1 EEST} + {3718386000 7200 0 EET} + {3731090400 10800 1 EEST} + {3749835600 7200 0 EET} + {3762540000 10800 1 EEST} + {3781285200 7200 0 EET} + {3794594400 10800 1 EEST} + {3812734800 7200 0 EET} + {3826044000 10800 1 EEST} + {3844184400 7200 0 EET} + {3857493600 10800 1 EEST} + {3876238800 7200 0 EET} + {3888943200 10800 1 EEST} + {3907688400 7200 0 EET} + {3920392800 10800 1 EEST} + {3939138000 7200 0 EET} + {3951842400 10800 1 EEST} + {3970587600 7200 0 EET} + {3983896800 10800 1 EEST} + {4002037200 7200 0 EET} + {4015346400 10800 1 EEST} + {4033486800 7200 0 EET} + {4046796000 10800 1 EEST} + {4065541200 7200 0 EET} + {4078245600 10800 1 EEST} + {4096990800 7200 0 EET} } diff --git a/library/tzdata/Asia/Dhaka b/library/tzdata/Asia/Dhaka index 8eac24f..e0c270d 100644 --- a/library/tzdata/Asia/Dhaka +++ b/library/tzdata/Asia/Dhaka @@ -8,4 +8,7 @@ set TZData(:Asia/Dhaka) { {-862637400 23400 0 BURT} {-576138600 21600 0 DACT} {38772000 21600 0 BDT} + {1230746400 21600 0 BDT} + {1245430800 25200 1 BDST} + {1262278740 21600 0 BDT} } diff --git a/library/tzdata/Asia/Dili b/library/tzdata/Asia/Dili index 36910fd..f783557 100644 --- a/library/tzdata/Asia/Dili +++ b/library/tzdata/Asia/Dili @@ -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} } diff --git a/library/tzdata/Asia/Gaza b/library/tzdata/Asia/Gaza index 80f53c9..7d62a96 100644 --- a/library/tzdata/Asia/Gaza +++ b/library/tzdata/Asia/Gaza @@ -88,188 +88,191 @@ set TZData(:Asia/Gaza) { {1158872400 7200 0 EET} {1175378400 10800 1 EEST} {1189638000 7200 0 EET} - {1207000800 10800 1 EEST} - {1219878000 7200 0 EET} - {1238536800 10800 1 EEST} - {1251327600 7200 0 EET} - {1270072800 10800 1 EEST} - {1282777200 7200 0 EET} - {1301608800 10800 1 EEST} - {1314226800 7200 0 EET} - {1333231200 10800 1 EEST} - {1346281200 7200 0 EET} - {1364767200 10800 1 EEST} - {1377730800 7200 0 EET} - {1396303200 10800 1 EEST} - {1409180400 7200 0 EET} - {1427839200 10800 1 EEST} - {1440630000 7200 0 EET} + {1206655200 10800 1 EEST} + {1219960800 7200 0 EET} + {1220220000 7200 0 EET} + {1238104800 10800 1 EEST} + {1252015200 7200 0 EET} + {1262296800 7200 0 EET} + {1269640860 10800 0 EEST} + {1281474000 7200 0 EET} + {1301608860 10800 1 EEST} + {1312149600 7200 0 EET} + {1325368800 7200 0 EET} + {1333058400 10800 1 EEST} + {1348178400 7200 0 EET} + {1364508000 10800 1 EEST} + {1380229200 7200 0 EET} + {1395957600 10800 1 EEST} + {1411678800 7200 0 EET} + {1427407200 10800 1 EEST} + {1443128400 7200 0 EET} {1459461600 10800 1 EEST} - {1472079600 7200 0 EET} - {1490997600 10800 1 EEST} - {1504134000 7200 0 EET} - {1522533600 10800 1 EEST} - {1535583600 7200 0 EET} - {1554069600 10800 1 EEST} - {1567033200 7200 0 EET} - {1585692000 10800 1 EEST} - {1598482800 7200 0 EET} - {1617228000 10800 1 EEST} - {1629932400 7200 0 EET} + {1474578000 7200 0 EET} + {1490911200 10800 1 EEST} + {1506027600 7200 0 EET} + {1522360800 10800 1 EEST} + {1537477200 7200 0 EET} + {1553810400 10800 1 EEST} + {1569531600 7200 0 EET} + {1585260000 10800 1 EEST} + {1600981200 7200 0 EET} + {1616709600 10800 1 EEST} + {1632430800 7200 0 EET} {1648764000 10800 1 EEST} - {1661382000 7200 0 EET} - {1680300000 10800 1 EEST} - {1693436400 7200 0 EET} - {1711922400 10800 1 EEST} - {1724886000 7200 0 EET} - {1743458400 10800 1 EEST} - {1756335600 7200 0 EET} - {1774994400 10800 1 EEST} - {1787785200 7200 0 EET} - {1806530400 10800 1 EEST} - {1819234800 7200 0 EET} - {1838152800 10800 1 EEST} - {1851289200 7200 0 EET} - {1869688800 10800 1 EEST} - {1882738800 7200 0 EET} - {1901224800 10800 1 EEST} - {1914188400 7200 0 EET} - {1932760800 10800 1 EEST} - {1945638000 7200 0 EET} - {1964383200 10800 1 EEST} - {1977087600 7200 0 EET} + {1663880400 7200 0 EET} + {1680213600 10800 1 EEST} + {1695330000 7200 0 EET} + {1711663200 10800 1 EEST} + {1727384400 7200 0 EET} + {1743112800 10800 1 EEST} + {1758834000 7200 0 EET} + {1774562400 10800 1 EEST} + {1790283600 7200 0 EET} + {1806012000 10800 1 EEST} + {1821733200 7200 0 EET} + {1838066400 10800 1 EEST} + {1853182800 7200 0 EET} + {1869516000 10800 1 EEST} + {1884632400 7200 0 EET} + {1900965600 10800 1 EEST} + {1916686800 7200 0 EET} + {1932415200 10800 1 EEST} + {1948136400 7200 0 EET} + {1963864800 10800 1 EEST} + {1979586000 7200 0 EET} {1995919200 10800 1 EEST} - {2008537200 7200 0 EET} - {2027455200 10800 1 EEST} - {2040591600 7200 0 EET} - {2058991200 10800 1 EEST} - {2072041200 7200 0 EET} - {2090613600 10800 1 EEST} - {2103490800 7200 0 EET} - {2122149600 10800 1 EEST} - {2134940400 7200 0 EET} - {2153685600 10800 1 EEST} - {2166390000 7200 0 EET} + {2011035600 7200 0 EET} + {2027368800 10800 1 EEST} + {2042485200 7200 0 EET} + {2058818400 10800 1 EEST} + {2073934800 7200 0 EET} + {2090268000 10800 1 EEST} + {2105989200 7200 0 EET} + {2121717600 10800 1 EEST} + {2137438800 7200 0 EET} + {2153167200 10800 1 EEST} + {2168888400 7200 0 EET} {2185221600 10800 1 EEST} - {2197839600 7200 0 EET} - {2216844000 10800 1 EEST} - {2229894000 7200 0 EET} - {2248380000 10800 1 EEST} - {2261343600 7200 0 EET} - {2279916000 10800 1 EEST} - {2292793200 7200 0 EET} - {2311452000 10800 1 EEST} - {2324242800 7200 0 EET} + {2200338000 7200 0 EET} + {2216671200 10800 1 EEST} + {2231787600 7200 0 EET} + {2248120800 10800 1 EEST} + {2263842000 7200 0 EET} + {2279570400 10800 1 EEST} + {2295291600 7200 0 EET} + {2311020000 10800 1 EEST} + {2326741200 7200 0 EET} {2343074400 10800 1 EEST} - {2355692400 7200 0 EET} - {2374610400 10800 1 EEST} - {2387746800 7200 0 EET} - {2406146400 10800 1 EEST} - {2419196400 7200 0 EET} - {2437682400 10800 1 EEST} - {2450646000 7200 0 EET} - {2469304800 10800 1 EEST} - {2482095600 7200 0 EET} - {2500840800 10800 1 EEST} - {2513545200 7200 0 EET} + {2358190800 7200 0 EET} + {2374524000 10800 1 EEST} + {2389640400 7200 0 EET} + {2405973600 10800 1 EEST} + {2421090000 7200 0 EET} + {2437423200 10800 1 EEST} + {2453144400 7200 0 EET} + {2468872800 10800 1 EEST} + {2484594000 7200 0 EET} + {2500322400 10800 1 EEST} + {2516043600 7200 0 EET} {2532376800 10800 1 EEST} - {2544994800 7200 0 EET} - {2563912800 10800 1 EEST} - {2577049200 7200 0 EET} - {2595535200 10800 1 EEST} - {2608498800 7200 0 EET} - {2627071200 10800 1 EEST} - {2639948400 7200 0 EET} - {2658607200 10800 1 EEST} - {2671398000 7200 0 EET} - {2690143200 10800 1 EEST} - {2702847600 7200 0 EET} - {2721765600 10800 1 EEST} - {2734902000 7200 0 EET} - {2753301600 10800 1 EEST} - {2766351600 7200 0 EET} - {2784837600 10800 1 EEST} - {2797801200 7200 0 EET} - {2816373600 10800 1 EEST} - {2829250800 7200 0 EET} - {2847996000 10800 1 EEST} - {2860700400 7200 0 EET} + {2547493200 7200 0 EET} + {2563826400 10800 1 EEST} + {2578942800 7200 0 EET} + {2595276000 10800 1 EEST} + {2610997200 7200 0 EET} + {2626725600 10800 1 EEST} + {2642446800 7200 0 EET} + {2658175200 10800 1 EEST} + {2673896400 7200 0 EET} + {2689624800 10800 1 EEST} + {2705346000 7200 0 EET} + {2721679200 10800 1 EEST} + {2736795600 7200 0 EET} + {2753128800 10800 1 EEST} + {2768245200 7200 0 EET} + {2784578400 10800 1 EEST} + {2800299600 7200 0 EET} + {2816028000 10800 1 EEST} + {2831749200 7200 0 EET} + {2847477600 10800 1 EEST} + {2863198800 7200 0 EET} {2879532000 10800 1 EEST} - {2892150000 7200 0 EET} - {2911068000 10800 1 EEST} - {2924204400 7200 0 EET} - {2942604000 10800 1 EEST} - {2955654000 7200 0 EET} - {2974226400 10800 1 EEST} - {2987103600 7200 0 EET} - {3005762400 10800 1 EEST} - {3018553200 7200 0 EET} - {3037298400 10800 1 EEST} - {3050002800 7200 0 EET} + {2894648400 7200 0 EET} + {2910981600 10800 1 EEST} + {2926098000 7200 0 EET} + {2942431200 10800 1 EEST} + {2957547600 7200 0 EET} + {2973880800 10800 1 EEST} + {2989602000 7200 0 EET} + {3005330400 10800 1 EEST} + {3021051600 7200 0 EET} + {3036780000 10800 1 EEST} + {3052501200 7200 0 EET} {3068834400 10800 1 EEST} - {3081452400 7200 0 EET} - {3100456800 10800 1 EEST} - {3113506800 7200 0 EET} - {3131992800 10800 1 EEST} - {3144956400 7200 0 EET} - {3163528800 10800 1 EEST} - {3176406000 7200 0 EET} - {3195064800 10800 1 EEST} - {3207855600 7200 0 EET} + {3083950800 7200 0 EET} + {3100284000 10800 1 EEST} + {3115400400 7200 0 EET} + {3131733600 10800 1 EEST} + {3147454800 7200 0 EET} + {3163183200 10800 1 EEST} + {3178904400 7200 0 EET} + {3194632800 10800 1 EEST} + {3210354000 7200 0 EET} {3226687200 10800 1 EEST} - {3239305200 7200 0 EET} - {3258223200 10800 1 EEST} - {3271359600 7200 0 EET} - {3289759200 10800 1 EEST} - {3302809200 7200 0 EET} - {3321295200 10800 1 EEST} - {3334258800 7200 0 EET} - {3352917600 10800 1 EEST} - {3365708400 7200 0 EET} - {3384453600 10800 1 EEST} - {3397158000 7200 0 EET} + {3241803600 7200 0 EET} + {3258136800 10800 1 EEST} + {3273253200 7200 0 EET} + {3289586400 10800 1 EEST} + {3304702800 7200 0 EET} + {3321036000 10800 1 EEST} + {3336757200 7200 0 EET} + {3352485600 10800 1 EEST} + {3368206800 7200 0 EET} + {3383935200 10800 1 EEST} + {3399656400 7200 0 EET} {3415989600 10800 1 EEST} - {3428607600 7200 0 EET} - {3447525600 10800 1 EEST} - {3460662000 7200 0 EET} - {3479148000 10800 1 EEST} - {3492111600 7200 0 EET} - {3510684000 10800 1 EEST} - {3523561200 7200 0 EET} - {3542220000 10800 1 EEST} - {3555010800 7200 0 EET} - {3573756000 10800 1 EEST} - {3586460400 7200 0 EET} - {3605378400 10800 1 EEST} - {3618514800 7200 0 EET} - {3636914400 10800 1 EEST} - {3649964400 7200 0 EET} - {3668450400 10800 1 EEST} - {3681414000 7200 0 EET} - {3699986400 10800 1 EEST} - {3712863600 7200 0 EET} - {3731608800 10800 1 EEST} - {3744313200 7200 0 EET} + {3431106000 7200 0 EET} + {3447439200 10800 1 EEST} + {3462555600 7200 0 EET} + {3478888800 10800 1 EEST} + {3494610000 7200 0 EET} + {3510338400 10800 1 EEST} + {3526059600 7200 0 EET} + {3541788000 10800 1 EEST} + {3557509200 7200 0 EET} + {3573237600 10800 1 EEST} + {3588958800 7200 0 EET} + {3605292000 10800 1 EEST} + {3620408400 7200 0 EET} + {3636741600 10800 1 EEST} + {3651858000 7200 0 EET} + {3668191200 10800 1 EEST} + {3683912400 7200 0 EET} + {3699640800 10800 1 EEST} + {3715362000 7200 0 EET} + {3731090400 10800 1 EEST} + {3746811600 7200 0 EET} {3763144800 10800 1 EEST} - {3775762800 7200 0 EET} - {3794680800 10800 1 EEST} - {3807817200 7200 0 EET} - {3826216800 10800 1 EEST} - {3839266800 7200 0 EET} - {3857839200 10800 1 EEST} - {3870716400 7200 0 EET} - {3889375200 10800 1 EEST} - {3902166000 7200 0 EET} - {3920911200 10800 1 EEST} - {3933615600 7200 0 EET} + {3778261200 7200 0 EET} + {3794594400 10800 1 EEST} + {3809710800 7200 0 EET} + {3826044000 10800 1 EEST} + {3841160400 7200 0 EET} + {3857493600 10800 1 EEST} + {3873214800 7200 0 EET} + {3888943200 10800 1 EEST} + {3904664400 7200 0 EET} + {3920392800 10800 1 EEST} + {3936114000 7200 0 EET} {3952447200 10800 1 EEST} - {3965065200 7200 0 EET} - {3984069600 10800 1 EEST} - {3997119600 7200 0 EET} - {4015605600 10800 1 EEST} - {4028569200 7200 0 EET} - {4047141600 10800 1 EEST} - {4060018800 7200 0 EET} - {4078677600 10800 1 EEST} - {4091468400 7200 0 EET} + {3967563600 7200 0 EET} + {3983896800 10800 1 EEST} + {3999013200 7200 0 EET} + {4015346400 10800 1 EEST} + {4031067600 7200 0 EET} + {4046796000 10800 1 EEST} + {4062517200 7200 0 EET} + {4078245600 10800 1 EEST} + {4093966800 7200 0 EET} } diff --git a/library/tzdata/Asia/Hebron b/library/tzdata/Asia/Hebron new file mode 100644 index 0000000..1333d5a --- /dev/null +++ b/library/tzdata/Asia/Hebron @@ -0,0 +1,277 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Hebron) { + {-9223372036854775808 8423 0 LMT} + {-2185410023 7200 0 EET} + {-933645600 10800 1 EET} + {-857358000 7200 0 EET} + {-844300800 10800 1 EET} + {-825822000 7200 0 EET} + {-812685600 10800 1 EET} + {-794199600 7200 0 EET} + {-779853600 10800 1 EET} + {-762656400 7200 0 EET} + {-748310400 10800 1 EET} + {-731127600 7200 0 EET} + {-682653600 7200 0 EET} + {-399088800 10800 1 EEST} + {-386650800 7200 0 EET} + {-368330400 10800 1 EEST} + {-355114800 7200 0 EET} + {-336790800 10800 1 EEST} + {-323654400 7200 0 EET} + {-305168400 10800 1 EEST} + {-292032000 7200 0 EET} + {-273632400 10800 1 EEST} + {-260496000 7200 0 EET} + {-242096400 10800 1 EEST} + {-228960000 7200 0 EET} + {-210560400 10800 1 EEST} + {-197424000 7200 0 EET} + {-178938000 10800 1 EEST} + {-165801600 7200 0 EET} + {-147402000 10800 1 EEST} + {-134265600 7200 0 EET} + {-115866000 10800 1 EEST} + {-102643200 7200 0 EET} + {-84330000 10800 1 EEST} + {-81313200 10800 0 IST} + {142376400 10800 1 IDT} + {150843600 7200 0 IST} + {167176800 10800 1 IDT} + {178664400 7200 0 IST} + {482277600 10800 1 IDT} + {495579600 7200 0 IST} + {516751200 10800 1 IDT} + {526424400 7200 0 IST} + {545436000 10800 1 IDT} + {558478800 7200 0 IST} + {576540000 10800 1 IDT} + {589237200 7200 0 IST} + {609890400 10800 1 IDT} + {620773200 7200 0 IST} + {638316000 10800 1 IDT} + {651618000 7200 0 IST} + {669765600 10800 1 IDT} + {683672400 7200 0 IST} + {701820000 10800 1 IDT} + {715726800 7200 0 IST} + {733701600 10800 1 IDT} + {747176400 7200 0 IST} + {765151200 10800 1 IDT} + {778021200 7200 0 IST} + {796600800 10800 1 IDT} + {810075600 7200 0 IST} + {820447200 7200 0 EET} + {828655200 10800 1 EEST} + {843170400 7200 0 EET} + {860104800 10800 1 EEST} + {874620000 7200 0 EET} + {891554400 10800 1 EEST} + {906069600 7200 0 EET} + {915141600 7200 0 EET} + {924213600 10800 1 EEST} + {939934800 7200 0 EET} + {956268000 10800 1 EEST} + {971989200 7200 0 EET} + {987717600 10800 1 EEST} + {1003438800 7200 0 EET} + {1019167200 10800 1 EEST} + {1034888400 7200 0 EET} + {1050616800 10800 1 EEST} + {1066338000 7200 0 EET} + {1082066400 10800 1 EEST} + {1096581600 7200 0 EET} + {1113516000 10800 1 EEST} + {1128380400 7200 0 EET} + {1143842400 10800 1 EEST} + {1158872400 7200 0 EET} + {1175378400 10800 1 EEST} + {1189638000 7200 0 EET} + {1206655200 10800 1 EEST} + {1220216400 7200 0 EET} + {1238104800 10800 1 EEST} + {1252015200 7200 0 EET} + {1269554400 10800 1 EEST} + {1281474000 7200 0 EET} + {1301608860 10800 1 EEST} + {1312146000 7200 0 EET} + {1314655200 10800 1 EEST} + {1317330000 7200 0 EET} + {1333058400 10800 1 EEST} + {1348178400 7200 0 EET} + {1364508000 10800 1 EEST} + {1380229200 7200 0 EET} + {1395957600 10800 1 EEST} + {1411678800 7200 0 EET} + {1427407200 10800 1 EEST} + {1443128400 7200 0 EET} + {1459461600 10800 1 EEST} + {1474578000 7200 0 EET} + {1490911200 10800 1 EEST} + {1506027600 7200 0 EET} + {1522360800 10800 1 EEST} + {1537477200 7200 0 EET} + {1553810400 10800 1 EEST} + {1569531600 7200 0 EET} + {1585260000 10800 1 EEST} + {1600981200 7200 0 EET} + {1616709600 10800 1 EEST} + {1632430800 7200 0 EET} + {1648764000 10800 1 EEST} + {1663880400 7200 0 EET} + {1680213600 10800 1 EEST} + {1695330000 7200 0 EET} + {1711663200 10800 1 EEST} + {1727384400 7200 0 EET} + {1743112800 10800 1 EEST} + {1758834000 7200 0 EET} + {1774562400 10800 1 EEST} + {1790283600 7200 0 EET} + {1806012000 10800 1 EEST} + {1821733200 7200 0 EET} + {1838066400 10800 1 EEST} + {1853182800 7200 0 EET} + {1869516000 10800 1 EEST} + {1884632400 7200 0 EET} + {1900965600 10800 1 EEST} + {1916686800 7200 0 EET} + {1932415200 10800 1 EEST} + {1948136400 7200 0 EET} + {1963864800 10800 1 EEST} + {1979586000 7200 0 EET} + {1995919200 10800 1 EEST} + {2011035600 7200 0 EET} + {2027368800 10800 1 EEST} + {2042485200 7200 0 EET} + {2058818400 10800 1 EEST} + {2073934800 7200 0 EET} + {2090268000 10800 1 EEST} + {2105989200 7200 0 EET} + {2121717600 10800 1 EEST} + {2137438800 7200 0 EET} + {2153167200 10800 1 EEST} + {2168888400 7200 0 EET} + {2185221600 10800 1 EEST} + {2200338000 7200 0 EET} + {2216671200 10800 1 EEST} + {2231787600 7200 0 EET} + {2248120800 10800 1 EEST} + {2263842000 7200 0 EET} + {2279570400 10800 1 EEST} + {2295291600 7200 0 EET} + {2311020000 10800 1 EEST} + {2326741200 7200 0 EET} + {2343074400 10800 1 EEST} + {2358190800 7200 0 EET} + {2374524000 10800 1 EEST} + {2389640400 7200 0 EET} + {2405973600 10800 1 EEST} + {2421090000 7200 0 EET} + {2437423200 10800 1 EEST} + {2453144400 7200 0 EET} + {2468872800 10800 1 EEST} + {2484594000 7200 0 EET} + {2500322400 10800 1 EEST} + {2516043600 7200 0 EET} + {2532376800 10800 1 EEST} + {2547493200 7200 0 EET} + {2563826400 10800 1 EEST} + {2578942800 7200 0 EET} + {2595276000 10800 1 EEST} + {2610997200 7200 0 EET} + {2626725600 10800 1 EEST} + {2642446800 7200 0 EET} + {2658175200 10800 1 EEST} + {2673896400 7200 0 EET} + {2689624800 10800 1 EEST} + {2705346000 7200 0 EET} + {2721679200 10800 1 EEST} + {2736795600 7200 0 EET} + {2753128800 10800 1 EEST} + {2768245200 7200 0 EET} + {2784578400 10800 1 EEST} + {2800299600 7200 0 EET} + {2816028000 10800 1 EEST} + {2831749200 7200 0 EET} + {2847477600 10800 1 EEST} + {2863198800 7200 0 EET} + {2879532000 10800 1 EEST} + {2894648400 7200 0 EET} + {2910981600 10800 1 EEST} + {2926098000 7200 0 EET} + {2942431200 10800 1 EEST} + {2957547600 7200 0 EET} + {2973880800 10800 1 EEST} + {2989602000 7200 0 EET} + {3005330400 10800 1 EEST} + {3021051600 7200 0 EET} + {3036780000 10800 1 EEST} + {3052501200 7200 0 EET} + {3068834400 10800 1 EEST} + {3083950800 7200 0 EET} + {3100284000 10800 1 EEST} + {3115400400 7200 0 EET} + {3131733600 10800 1 EEST} + {3147454800 7200 0 EET} + {3163183200 10800 1 EEST} + {3178904400 7200 0 EET} + {3194632800 10800 1 EEST} + {3210354000 7200 0 EET} + {3226687200 10800 1 EEST} + {3241803600 7200 0 EET} + {3258136800 10800 1 EEST} + {3273253200 7200 0 EET} + {3289586400 10800 1 EEST} + {3304702800 7200 0 EET} + {3321036000 10800 1 EEST} + {3336757200 7200 0 EET} + {3352485600 10800 1 EEST} + {3368206800 7200 0 EET} + {3383935200 10800 1 EEST} + {3399656400 7200 0 EET} + {3415989600 10800 1 EEST} + {3431106000 7200 0 EET} + {3447439200 10800 1 EEST} + {3462555600 7200 0 EET} + {3478888800 10800 1 EEST} + {3494610000 7200 0 EET} + {3510338400 10800 1 EEST} + {3526059600 7200 0 EET} + {3541788000 10800 1 EEST} + {3557509200 7200 0 EET} + {3573237600 10800 1 EEST} + {3588958800 7200 0 EET} + {3605292000 10800 1 EEST} + {3620408400 7200 0 EET} + {3636741600 10800 1 EEST} + {3651858000 7200 0 EET} + {3668191200 10800 1 EEST} + {3683912400 7200 0 EET} + {3699640800 10800 1 EEST} + {3715362000 7200 0 EET} + {3731090400 10800 1 EEST} + {3746811600 7200 0 EET} + {3763144800 10800 1 EEST} + {3778261200 7200 0 EET} + {3794594400 10800 1 EEST} + {3809710800 7200 0 EET} + {3826044000 10800 1 EEST} + {3841160400 7200 0 EET} + {3857493600 10800 1 EEST} + {3873214800 7200 0 EET} + {3888943200 10800 1 EEST} + {3904664400 7200 0 EET} + {3920392800 10800 1 EEST} + {3936114000 7200 0 EET} + {3952447200 10800 1 EEST} + {3967563600 7200 0 EET} + {3983896800 10800 1 EEST} + {3999013200 7200 0 EET} + {4015346400 10800 1 EEST} + {4031067600 7200 0 EET} + {4046796000 10800 1 EEST} + {4062517200 7200 0 EET} + {4078245600 10800 1 EEST} + {4093966800 7200 0 EET} +} diff --git a/library/tzdata/Asia/Hong_Kong b/library/tzdata/Asia/Hong_Kong index 88d8091..fcf98a6 100644 --- a/library/tzdata/Asia/Hong_Kong +++ b/library/tzdata/Asia/Hong_Kong @@ -1,8 +1,12 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Asia/Hong_Kong) { - {-9223372036854775808 27396 0 LMT} - {-2056692996 28800 0 HKT} + {-9223372036854775808 27402 0 LMT} + {-2056693002 28800 0 HKT} + {-907389000 32400 1 HKST} + {-891667800 28800 0 HKT} + {-884246400 32400 0 JST} + {-766746000 28800 0 HKT} {-747981000 32400 1 HKST} {-728544600 28800 0 HKT} {-717049800 32400 1 HKST} @@ -16,7 +20,7 @@ set TZData(:Asia/Hong_Kong) { {-591856200 32400 1 HKST} {-573715800 28800 0 HKT} {-559801800 32400 1 HKST} - {-542266200 28800 0 HKT} + {-542352600 28800 0 HKT} {-528352200 32400 1 HKST} {-510211800 28800 0 HKT} {-498112200 32400 1 HKST} @@ -59,16 +63,13 @@ set TZData(:Asia/Hong_Kong) { {88540200 28800 0 HKT} {104268600 32400 1 HKST} {119989800 28800 0 HKT} - {135718200 32400 1 HKST} + {126041400 32400 1 HKST} + {135714600 32400 1 HKST} {151439400 28800 0 HKT} {167167800 32400 1 HKST} {182889000 28800 0 HKT} {198617400 32400 1 HKST} {214338600 28800 0 HKT} - {230067000 32400 1 HKST} - {245788200 28800 0 HKT} {295385400 32400 1 HKST} {309292200 28800 0 HKT} - {326835000 32400 1 HKST} - {340741800 28800 0 HKT} } diff --git a/library/tzdata/Asia/Irkutsk b/library/tzdata/Asia/Irkutsk index 771ebc9..bca1dcc 100644 --- a/library/tzdata/Asia/Irkutsk +++ b/library/tzdata/Asia/Irkutsk @@ -67,182 +67,5 @@ set TZData(:Asia/Irkutsk) { {1256407200 28800 0 IRKT} {1269712800 32400 1 IRKST} {1288461600 28800 0 IRKT} - {1301162400 32400 1 IRKST} - {1319911200 28800 0 IRKT} - {1332612000 32400 1 IRKST} - {1351360800 28800 0 IRKT} - {1364666400 32400 1 IRKST} - {1382810400 28800 0 IRKT} - {1396116000 32400 1 IRKST} - {1414260000 28800 0 IRKT} - {1427565600 32400 1 IRKST} - {1445709600 28800 0 IRKT} - {1459015200 32400 1 IRKST} - {1477764000 28800 0 IRKT} - {1490464800 32400 1 IRKST} - {1509213600 28800 0 IRKT} - {1521914400 32400 1 IRKST} - {1540663200 28800 0 IRKT} - {1553968800 32400 1 IRKST} - {1572112800 28800 0 IRKT} - {1585418400 32400 1 IRKST} - {1603562400 28800 0 IRKT} - {1616868000 32400 1 IRKST} - {1635616800 28800 0 IRKT} - {1648317600 32400 1 IRKST} - {1667066400 28800 0 IRKT} - {1679767200 32400 1 IRKST} - {1698516000 28800 0 IRKT} - {1711821600 32400 1 IRKST} - {1729965600 28800 0 IRKT} - {1743271200 32400 1 IRKST} - {1761415200 28800 0 IRKT} - {1774720800 32400 1 IRKST} - {1792864800 28800 0 IRKT} - {1806170400 32400 1 IRKST} - {1824919200 28800 0 IRKT} - {1837620000 32400 1 IRKST} - {1856368800 28800 0 IRKT} - {1869069600 32400 1 IRKST} - {1887818400 28800 0 IRKT} - {1901124000 32400 1 IRKST} - {1919268000 28800 0 IRKT} - {1932573600 32400 1 IRKST} - {1950717600 28800 0 IRKT} - {1964023200 32400 1 IRKST} - {1982772000 28800 0 IRKT} - {1995472800 32400 1 IRKST} - {2014221600 28800 0 IRKT} - {2026922400 32400 1 IRKST} - {2045671200 28800 0 IRKT} - {2058372000 32400 1 IRKST} - {2077120800 28800 0 IRKT} - {2090426400 32400 1 IRKST} - {2108570400 28800 0 IRKT} - {2121876000 32400 1 IRKST} - {2140020000 28800 0 IRKT} - {2153325600 32400 1 IRKST} - {2172074400 28800 0 IRKT} - {2184775200 32400 1 IRKST} - {2203524000 28800 0 IRKT} - {2216224800 32400 1 IRKST} - {2234973600 28800 0 IRKT} - {2248279200 32400 1 IRKST} - {2266423200 28800 0 IRKT} - {2279728800 32400 1 IRKST} - {2297872800 28800 0 IRKT} - {2311178400 32400 1 IRKST} - {2329322400 28800 0 IRKT} - {2342628000 32400 1 IRKST} - {2361376800 28800 0 IRKT} - {2374077600 32400 1 IRKST} - {2392826400 28800 0 IRKT} - {2405527200 32400 1 IRKST} - {2424276000 28800 0 IRKT} - {2437581600 32400 1 IRKST} - {2455725600 28800 0 IRKT} - {2469031200 32400 1 IRKST} - {2487175200 28800 0 IRKT} - {2500480800 32400 1 IRKST} - {2519229600 28800 0 IRKT} - {2531930400 32400 1 IRKST} - {2550679200 28800 0 IRKT} - {2563380000 32400 1 IRKST} - {2582128800 28800 0 IRKT} - {2595434400 32400 1 IRKST} - {2613578400 28800 0 IRKT} - {2626884000 32400 1 IRKST} - {2645028000 28800 0 IRKT} - {2658333600 32400 1 IRKST} - {2676477600 28800 0 IRKT} - {2689783200 32400 1 IRKST} - {2708532000 28800 0 IRKT} - {2721232800 32400 1 IRKST} - {2739981600 28800 0 IRKT} - {2752682400 32400 1 IRKST} - {2771431200 28800 0 IRKT} - {2784736800 32400 1 IRKST} - {2802880800 28800 0 IRKT} - {2816186400 32400 1 IRKST} - {2834330400 28800 0 IRKT} - {2847636000 32400 1 IRKST} - {2866384800 28800 0 IRKT} - {2879085600 32400 1 IRKST} - {2897834400 28800 0 IRKT} - {2910535200 32400 1 IRKST} - {2929284000 28800 0 IRKT} - {2941984800 32400 1 IRKST} - {2960733600 28800 0 IRKT} - {2974039200 32400 1 IRKST} - {2992183200 28800 0 IRKT} - {3005488800 32400 1 IRKST} - {3023632800 28800 0 IRKT} - {3036938400 32400 1 IRKST} - {3055687200 28800 0 IRKT} - {3068388000 32400 1 IRKST} - {3087136800 28800 0 IRKT} - {3099837600 32400 1 IRKST} - {3118586400 28800 0 IRKT} - {3131892000 32400 1 IRKST} - {3150036000 28800 0 IRKT} - {3163341600 32400 1 IRKST} - {3181485600 28800 0 IRKT} - {3194791200 32400 1 IRKST} - {3212935200 28800 0 IRKT} - {3226240800 32400 1 IRKST} - {3244989600 28800 0 IRKT} - {3257690400 32400 1 IRKST} - {3276439200 28800 0 IRKT} - {3289140000 32400 1 IRKST} - {3307888800 28800 0 IRKT} - {3321194400 32400 1 IRKST} - {3339338400 28800 0 IRKT} - {3352644000 32400 1 IRKST} - {3370788000 28800 0 IRKT} - {3384093600 32400 1 IRKST} - {3402842400 28800 0 IRKT} - {3415543200 32400 1 IRKST} - {3434292000 28800 0 IRKT} - {3446992800 32400 1 IRKST} - {3465741600 28800 0 IRKT} - {3479047200 32400 1 IRKST} - {3497191200 28800 0 IRKT} - {3510496800 32400 1 IRKST} - {3528640800 28800 0 IRKT} - {3541946400 32400 1 IRKST} - {3560090400 28800 0 IRKT} - {3573396000 32400 1 IRKST} - {3592144800 28800 0 IRKT} - {3604845600 32400 1 IRKST} - {3623594400 28800 0 IRKT} - {3636295200 32400 1 IRKST} - {3655044000 28800 0 IRKT} - {3668349600 32400 1 IRKST} - {3686493600 28800 0 IRKT} - {3699799200 32400 1 IRKST} - {3717943200 28800 0 IRKT} - {3731248800 32400 1 IRKST} - {3749997600 28800 0 IRKT} - {3762698400 32400 1 IRKST} - {3781447200 28800 0 IRKT} - {3794148000 32400 1 IRKST} - {3812896800 28800 0 IRKT} - {3825597600 32400 1 IRKST} - {3844346400 28800 0 IRKT} - {3857652000 32400 1 IRKST} - {3875796000 28800 0 IRKT} - {3889101600 32400 1 IRKST} - {3907245600 28800 0 IRKT} - {3920551200 32400 1 IRKST} - {3939300000 28800 0 IRKT} - {3952000800 32400 1 IRKST} - {3970749600 28800 0 IRKT} - {3983450400 32400 1 IRKST} - {4002199200 28800 0 IRKT} - {4015504800 32400 1 IRKST} - {4033648800 28800 0 IRKT} - {4046954400 32400 1 IRKST} - {4065098400 28800 0 IRKT} - {4078404000 32400 1 IRKST} - {4096548000 28800 0 IRKT} + {1301162400 32400 0 IRKT} } diff --git a/library/tzdata/Asia/Jakarta b/library/tzdata/Asia/Jakarta index 27033e8..75cd659 100644 --- a/library/tzdata/Asia/Jakarta +++ b/library/tzdata/Asia/Jakarta @@ -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} } diff --git a/library/tzdata/Asia/Jayapura b/library/tzdata/Asia/Jayapura index 893da8b..a71228f 100644 --- a/library/tzdata/Asia/Jayapura +++ b/library/tzdata/Asia/Jayapura @@ -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} } diff --git a/library/tzdata/Asia/Jerusalem b/library/tzdata/Asia/Jerusalem index 48e213d..7662680 100644 --- a/library/tzdata/Asia/Jerusalem +++ b/library/tzdata/Asia/Jerusalem @@ -1,8 +1,8 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Asia/Jerusalem) { - {-9223372036854775808 8456 0 LMT} - {-2840149256 8440 0 JMT} + {-9223372036854775808 8454 0 LMT} + {-2840149254 8440 0 JMT} {-1641003640 7200 0 IST} {-933645600 10800 1 IDT} {-857358000 7200 0 IST} @@ -96,53 +96,177 @@ set TZData(:Asia/Jerusalem) { {1333065600 10800 1 IDT} {1348354800 7200 0 IST} {1364515200 10800 1 IDT} - {1378594800 7200 0 IST} + {1382828400 7200 0 IST} {1395964800 10800 1 IDT} - {1411858800 7200 0 IST} + {1414278000 7200 0 IST} {1427414400 10800 1 IDT} - {1442703600 7200 0 IST} - {1459468800 10800 1 IDT} - {1475967600 7200 0 IST} - {1490918400 10800 1 IDT} - {1506207600 7200 0 IST} - {1522368000 10800 1 IDT} - {1537052400 7200 0 IST} + {1445727600 7200 0 IST} + {1458864000 10800 1 IDT} + {1477782000 7200 0 IST} + {1490313600 10800 1 IDT} + {1509231600 7200 0 IST} + {1521763200 10800 1 IDT} + {1540681200 7200 0 IST} {1553817600 10800 1 IDT} - {1570316400 7200 0 IST} + {1572130800 7200 0 IST} {1585267200 10800 1 IDT} - {1601161200 7200 0 IST} + {1603580400 7200 0 IST} {1616716800 10800 1 IDT} - {1631401200 7200 0 IST} - {1648771200 10800 1 IDT} - {1664665200 7200 0 IST} - {1680220800 10800 1 IDT} - {1695510000 7200 0 IST} + {1635634800 7200 0 IST} + {1648166400 10800 1 IDT} + {1667084400 7200 0 IST} + {1679616000 10800 1 IDT} + {1698534000 7200 0 IST} {1711670400 10800 1 IDT} - {1728169200 7200 0 IST} + {1729983600 7200 0 IST} {1743120000 10800 1 IDT} - {1759014000 7200 0 IST} + {1761433200 7200 0 IST} {1774569600 10800 1 IDT} - {1789858800 7200 0 IST} + {1792882800 7200 0 IST} {1806019200 10800 1 IDT} - {1823122800 7200 0 IST} - {1838073600 10800 1 IDT} - {1853362800 7200 0 IST} - {1869523200 10800 1 IDT} - {1884207600 7200 0 IST} + {1824937200 7200 0 IST} + {1837468800 10800 1 IDT} + {1856386800 7200 0 IST} + {1868918400 10800 1 IDT} + {1887836400 7200 0 IST} {1900972800 10800 1 IDT} - {1917471600 7200 0 IST} + {1919286000 7200 0 IST} {1932422400 10800 1 IDT} - {1947711600 7200 0 IST} + {1950735600 7200 0 IST} {1963872000 10800 1 IDT} - {1978556400 7200 0 IST} - {1995926400 10800 1 IDT} - {2011820400 7200 0 IST} - {2027376000 10800 1 IDT} - {2042060400 7200 0 IST} - {2058825600 10800 1 IDT} - {2075324400 7200 0 IST} + {1982790000 7200 0 IST} + {1995321600 10800 1 IDT} + {2014239600 7200 0 IST} + {2026771200 10800 1 IDT} + {2045689200 7200 0 IST} + {2058220800 10800 1 IDT} + {2077138800 7200 0 IST} {2090275200 10800 1 IDT} - {2106169200 7200 0 IST} + {2108588400 7200 0 IST} {2121724800 10800 1 IDT} - {2136409200 7200 0 IST} + {2140038000 7200 0 IST} + {2153174400 10800 1 IDT} + {2172092400 7200 0 IST} + {2184624000 10800 1 IDT} + {2203542000 7200 0 IST} + {2216073600 10800 1 IDT} + {2234991600 7200 0 IST} + {2248128000 10800 1 IDT} + {2266441200 7200 0 IST} + {2279577600 10800 1 IDT} + {2297890800 7200 0 IST} + {2311027200 10800 1 IDT} + {2329340400 7200 0 IST} + {2342476800 10800 1 IDT} + {2361394800 7200 0 IST} + {2373926400 10800 1 IDT} + {2392844400 7200 0 IST} + {2405376000 10800 1 IDT} + {2424294000 7200 0 IST} + {2437430400 10800 1 IDT} + {2455743600 7200 0 IST} + {2468880000 10800 1 IDT} + {2487193200 7200 0 IST} + {2500329600 10800 1 IDT} + {2519247600 7200 0 IST} + {2531779200 10800 1 IDT} + {2550697200 7200 0 IST} + {2563228800 10800 1 IDT} + {2582146800 7200 0 IST} + {2595283200 10800 1 IDT} + {2613596400 7200 0 IST} + {2626732800 10800 1 IDT} + {2645046000 7200 0 IST} + {2658182400 10800 1 IDT} + {2676495600 7200 0 IST} + {2689632000 10800 1 IDT} + {2708550000 7200 0 IST} + {2721081600 10800 1 IDT} + {2739999600 7200 0 IST} + {2752531200 10800 1 IDT} + {2771449200 7200 0 IST} + {2784585600 10800 1 IDT} + {2802898800 7200 0 IST} + {2816035200 10800 1 IDT} + {2834348400 7200 0 IST} + {2847484800 10800 1 IDT} + {2866402800 7200 0 IST} + {2878934400 10800 1 IDT} + {2897852400 7200 0 IST} + {2910384000 10800 1 IDT} + {2929302000 7200 0 IST} + {2941833600 10800 1 IDT} + {2960751600 7200 0 IST} + {2973888000 10800 1 IDT} + {2992201200 7200 0 IST} + {3005337600 10800 1 IDT} + {3023650800 7200 0 IST} + {3036787200 10800 1 IDT} + {3055705200 7200 0 IST} + {3068236800 10800 1 IDT} + {3087154800 7200 0 IST} + {3099686400 10800 1 IDT} + {3118604400 7200 0 IST} + {3131740800 10800 1 IDT} + {3150054000 7200 0 IST} + {3163190400 10800 1 IDT} + {3181503600 7200 0 IST} + {3194640000 10800 1 IDT} + {3212953200 7200 0 IST} + {3226089600 10800 1 IDT} + {3245007600 7200 0 IST} + {3257539200 10800 1 IDT} + {3276457200 7200 0 IST} + {3288988800 10800 1 IDT} + {3307906800 7200 0 IST} + {3321043200 10800 1 IDT} + {3339356400 7200 0 IST} + {3352492800 10800 1 IDT} + {3370806000 7200 0 IST} + {3383942400 10800 1 IDT} + {3402860400 7200 0 IST} + {3415392000 10800 1 IDT} + {3434310000 7200 0 IST} + {3446841600 10800 1 IDT} + {3465759600 7200 0 IST} + {3478896000 10800 1 IDT} + {3497209200 7200 0 IST} + {3510345600 10800 1 IDT} + {3528658800 7200 0 IST} + {3541795200 10800 1 IDT} + {3560108400 7200 0 IST} + {3573244800 10800 1 IDT} + {3592162800 7200 0 IST} + {3604694400 10800 1 IDT} + {3623612400 7200 0 IST} + {3636144000 10800 1 IDT} + {3655062000 7200 0 IST} + {3668198400 10800 1 IDT} + {3686511600 7200 0 IST} + {3699648000 10800 1 IDT} + {3717961200 7200 0 IST} + {3731097600 10800 1 IDT} + {3750015600 7200 0 IST} + {3762547200 10800 1 IDT} + {3781465200 7200 0 IST} + {3793996800 10800 1 IDT} + {3812914800 7200 0 IST} + {3825446400 10800 1 IDT} + {3844364400 7200 0 IST} + {3857500800 10800 1 IDT} + {3875814000 7200 0 IST} + {3888950400 10800 1 IDT} + {3907263600 7200 0 IST} + {3920400000 10800 1 IDT} + {3939318000 7200 0 IST} + {3951849600 10800 1 IDT} + {3970767600 7200 0 IST} + {3983299200 10800 1 IDT} + {4002217200 7200 0 IST} + {4015353600 10800 1 IDT} + {4033666800 7200 0 IST} + {4046803200 10800 1 IDT} + {4065116400 7200 0 IST} + {4078252800 10800 1 IDT} + {4096566000 7200 0 IST} } diff --git a/library/tzdata/Asia/Kamchatka b/library/tzdata/Asia/Kamchatka index a390701..82abcfa 100644 --- a/library/tzdata/Asia/Kamchatka +++ b/library/tzdata/Asia/Kamchatka @@ -64,184 +64,8 @@ set TZData(:Asia/Kamchatka) { {1224943200 43200 0 PETT} {1238248800 46800 1 PETST} {1256392800 43200 0 PETT} - {1269698400 46800 1 PETST} - {1288447200 43200 0 PETT} - {1301148000 46800 1 PETST} - {1319896800 43200 0 PETT} - {1332597600 46800 1 PETST} - {1351346400 43200 0 PETT} - {1364652000 46800 1 PETST} - {1382796000 43200 0 PETT} - {1396101600 46800 1 PETST} - {1414245600 43200 0 PETT} - {1427551200 46800 1 PETST} - {1445695200 43200 0 PETT} - {1459000800 46800 1 PETST} - {1477749600 43200 0 PETT} - {1490450400 46800 1 PETST} - {1509199200 43200 0 PETT} - {1521900000 46800 1 PETST} - {1540648800 43200 0 PETT} - {1553954400 46800 1 PETST} - {1572098400 43200 0 PETT} - {1585404000 46800 1 PETST} - {1603548000 43200 0 PETT} - {1616853600 46800 1 PETST} - {1635602400 43200 0 PETT} - {1648303200 46800 1 PETST} - {1667052000 43200 0 PETT} - {1679752800 46800 1 PETST} - {1698501600 43200 0 PETT} - {1711807200 46800 1 PETST} - {1729951200 43200 0 PETT} - {1743256800 46800 1 PETST} - {1761400800 43200 0 PETT} - {1774706400 46800 1 PETST} - {1792850400 43200 0 PETT} - {1806156000 46800 1 PETST} - {1824904800 43200 0 PETT} - {1837605600 46800 1 PETST} - {1856354400 43200 0 PETT} - {1869055200 46800 1 PETST} - {1887804000 43200 0 PETT} - {1901109600 46800 1 PETST} - {1919253600 43200 0 PETT} - {1932559200 46800 1 PETST} - {1950703200 43200 0 PETT} - {1964008800 46800 1 PETST} - {1982757600 43200 0 PETT} - {1995458400 46800 1 PETST} - {2014207200 43200 0 PETT} - {2026908000 46800 1 PETST} - {2045656800 43200 0 PETT} - {2058357600 46800 1 PETST} - {2077106400 43200 0 PETT} - {2090412000 46800 1 PETST} - {2108556000 43200 0 PETT} - {2121861600 46800 1 PETST} - {2140005600 43200 0 PETT} - {2153311200 46800 1 PETST} - {2172060000 43200 0 PETT} - {2184760800 46800 1 PETST} - {2203509600 43200 0 PETT} - {2216210400 46800 1 PETST} - {2234959200 43200 0 PETT} - {2248264800 46800 1 PETST} - {2266408800 43200 0 PETT} - {2279714400 46800 1 PETST} - {2297858400 43200 0 PETT} - {2311164000 46800 1 PETST} - {2329308000 43200 0 PETT} - {2342613600 46800 1 PETST} - {2361362400 43200 0 PETT} - {2374063200 46800 1 PETST} - {2392812000 43200 0 PETT} - {2405512800 46800 1 PETST} - {2424261600 43200 0 PETT} - {2437567200 46800 1 PETST} - {2455711200 43200 0 PETT} - {2469016800 46800 1 PETST} - {2487160800 43200 0 PETT} - {2500466400 46800 1 PETST} - {2519215200 43200 0 PETT} - {2531916000 46800 1 PETST} - {2550664800 43200 0 PETT} - {2563365600 46800 1 PETST} - {2582114400 43200 0 PETT} - {2595420000 46800 1 PETST} - {2613564000 43200 0 PETT} - {2626869600 46800 1 PETST} - {2645013600 43200 0 PETT} - {2658319200 46800 1 PETST} - {2676463200 43200 0 PETT} - {2689768800 46800 1 PETST} - {2708517600 43200 0 PETT} - {2721218400 46800 1 PETST} - {2739967200 43200 0 PETT} - {2752668000 46800 1 PETST} - {2771416800 43200 0 PETT} - {2784722400 46800 1 PETST} - {2802866400 43200 0 PETT} - {2816172000 46800 1 PETST} - {2834316000 43200 0 PETT} - {2847621600 46800 1 PETST} - {2866370400 43200 0 PETT} - {2879071200 46800 1 PETST} - {2897820000 43200 0 PETT} - {2910520800 46800 1 PETST} - {2929269600 43200 0 PETT} - {2941970400 46800 1 PETST} - {2960719200 43200 0 PETT} - {2974024800 46800 1 PETST} - {2992168800 43200 0 PETT} - {3005474400 46800 1 PETST} - {3023618400 43200 0 PETT} - {3036924000 46800 1 PETST} - {3055672800 43200 0 PETT} - {3068373600 46800 1 PETST} - {3087122400 43200 0 PETT} - {3099823200 46800 1 PETST} - {3118572000 43200 0 PETT} - {3131877600 46800 1 PETST} - {3150021600 43200 0 PETT} - {3163327200 46800 1 PETST} - {3181471200 43200 0 PETT} - {3194776800 46800 1 PETST} - {3212920800 43200 0 PETT} - {3226226400 46800 1 PETST} - {3244975200 43200 0 PETT} - {3257676000 46800 1 PETST} - {3276424800 43200 0 PETT} - {3289125600 46800 1 PETST} - {3307874400 43200 0 PETT} - {3321180000 46800 1 PETST} - {3339324000 43200 0 PETT} - {3352629600 46800 1 PETST} - {3370773600 43200 0 PETT} - {3384079200 46800 1 PETST} - {3402828000 43200 0 PETT} - {3415528800 46800 1 PETST} - {3434277600 43200 0 PETT} - {3446978400 46800 1 PETST} - {3465727200 43200 0 PETT} - {3479032800 46800 1 PETST} - {3497176800 43200 0 PETT} - {3510482400 46800 1 PETST} - {3528626400 43200 0 PETT} - {3541932000 46800 1 PETST} - {3560076000 43200 0 PETT} - {3573381600 46800 1 PETST} - {3592130400 43200 0 PETT} - {3604831200 46800 1 PETST} - {3623580000 43200 0 PETT} - {3636280800 46800 1 PETST} - {3655029600 43200 0 PETT} - {3668335200 46800 1 PETST} - {3686479200 43200 0 PETT} - {3699784800 46800 1 PETST} - {3717928800 43200 0 PETT} - {3731234400 46800 1 PETST} - {3749983200 43200 0 PETT} - {3762684000 46800 1 PETST} - {3781432800 43200 0 PETT} - {3794133600 46800 1 PETST} - {3812882400 43200 0 PETT} - {3825583200 46800 1 PETST} - {3844332000 43200 0 PETT} - {3857637600 46800 1 PETST} - {3875781600 43200 0 PETT} - {3889087200 46800 1 PETST} - {3907231200 43200 0 PETT} - {3920536800 46800 1 PETST} - {3939285600 43200 0 PETT} - {3951986400 46800 1 PETST} - {3970735200 43200 0 PETT} - {3983436000 46800 1 PETST} - {4002184800 43200 0 PETT} - {4015490400 46800 1 PETST} - {4033634400 43200 0 PETT} - {4046940000 46800 1 PETST} - {4065084000 43200 0 PETT} - {4078389600 46800 1 PETST} - {4096533600 43200 0 PETT} + {1269698400 39600 0 PETMMTT} + {1269702000 43200 1 PETST} + {1288450800 39600 0 PETT} + {1301151600 43200 0 PETT} } diff --git a/library/tzdata/Asia/Karachi b/library/tzdata/Asia/Karachi index 9db002c..3faa31e 100644 --- a/library/tzdata/Asia/Karachi +++ b/library/tzdata/Asia/Karachi @@ -11,4 +11,6 @@ set TZData(:Asia/Karachi) { {1033840860 18000 0 PKT} {1212260400 21600 1 PKST} {1225476000 18000 0 PKT} + {1239735600 21600 1 PKST} + {1257012000 18000 0 PKT} } diff --git a/library/tzdata/Asia/Kathmandu b/library/tzdata/Asia/Kathmandu new file mode 100644 index 0000000..dbec1f0 --- /dev/null +++ b/library/tzdata/Asia/Kathmandu @@ -0,0 +1,7 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Kathmandu) { + {-9223372036854775808 20476 0 LMT} + {-1577943676 19800 0 IST} + {504901800 20700 0 NPT} +} diff --git a/library/tzdata/Asia/Katmandu b/library/tzdata/Asia/Katmandu index 12f7662..2d6d060 100644 --- a/library/tzdata/Asia/Katmandu +++ b/library/tzdata/Asia/Katmandu @@ -1,7 +1,5 @@ # created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Katmandu) { - {-9223372036854775808 20476 0 LMT} - {-1577943676 19800 0 IST} - {504901800 20700 0 NPT} +if {![info exists TZData(Asia/Kathmandu)]} { + LoadTimeZoneFile Asia/Kathmandu } +set TZData(:Asia/Katmandu) $TZData(:Asia/Kathmandu) diff --git a/library/tzdata/Asia/Khandyga b/library/tzdata/Asia/Khandyga new file mode 100644 index 0000000..2464b9f --- /dev/null +++ b/library/tzdata/Asia/Khandyga @@ -0,0 +1,72 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Khandyga) { + {-9223372036854775808 32533 0 LMT} + {-1579424533 28800 0 YAKT} + {-1247558400 32400 0 YAKMMTT} + {354898800 36000 1 YAKST} + {370706400 32400 0 YAKT} + {386434800 36000 1 YAKST} + {402242400 32400 0 YAKT} + {417970800 36000 1 YAKST} + {433778400 32400 0 YAKT} + {449593200 36000 1 YAKST} + {465325200 32400 0 YAKT} + {481050000 36000 1 YAKST} + {496774800 32400 0 YAKT} + {512499600 36000 1 YAKST} + {528224400 32400 0 YAKT} + {543949200 36000 1 YAKST} + {559674000 32400 0 YAKT} + {575398800 36000 1 YAKST} + {591123600 32400 0 YAKT} + {606848400 36000 1 YAKST} + {622573200 32400 0 YAKT} + {638298000 36000 1 YAKST} + {654627600 32400 0 YAKT} + {670352400 28800 0 YAKMMTT} + {670356000 32400 1 YAKST} + {686080800 28800 0 YAKT} + {695757600 32400 0 YAKMMTT} + {701791200 36000 1 YAKST} + {717512400 32400 0 YAKT} + {733251600 36000 1 YAKST} + {748976400 32400 0 YAKT} + {764701200 36000 1 YAKST} + {780426000 32400 0 YAKT} + {796150800 36000 1 YAKST} + {811875600 32400 0 YAKT} + {828205200 36000 1 YAKST} + {846349200 32400 0 YAKT} + {859654800 36000 1 YAKST} + {877798800 32400 0 YAKT} + {891104400 36000 1 YAKST} + {909248400 32400 0 YAKT} + {922554000 36000 1 YAKST} + {941302800 32400 0 YAKT} + {954003600 36000 1 YAKST} + {972752400 32400 0 YAKT} + {985453200 36000 1 YAKST} + {1004202000 32400 0 YAKT} + {1017507600 36000 1 YAKST} + {1035651600 32400 0 YAKT} + {1048957200 36000 1 YAKST} + {1067101200 32400 0 YAKT} + {1072882800 36000 0 VLAMMTT} + {1080403200 39600 1 VLAST} + {1099152000 36000 0 VLAT} + {1111852800 39600 1 VLAST} + {1130601600 36000 0 VLAT} + {1143302400 39600 1 VLAST} + {1162051200 36000 0 VLAT} + {1174752000 39600 1 VLAST} + {1193500800 36000 0 VLAT} + {1206806400 39600 1 VLAST} + {1224950400 36000 0 VLAT} + {1238256000 39600 1 VLAST} + {1256400000 36000 0 VLAT} + {1269705600 39600 1 VLAST} + {1288454400 36000 0 VLAT} + {1301155200 39600 0 VLAT} + {1315832400 36000 0 YAKT} +} diff --git a/library/tzdata/Asia/Krasnoyarsk b/library/tzdata/Asia/Krasnoyarsk index 24046fe..13dfeb5 100644 --- a/library/tzdata/Asia/Krasnoyarsk +++ b/library/tzdata/Asia/Krasnoyarsk @@ -66,182 +66,5 @@ set TZData(:Asia/Krasnoyarsk) { {1256410800 25200 0 KRAT} {1269716400 28800 1 KRAST} {1288465200 25200 0 KRAT} - {1301166000 28800 1 KRAST} - {1319914800 25200 0 KRAT} - {1332615600 28800 1 KRAST} - {1351364400 25200 0 KRAT} - {1364670000 28800 1 KRAST} - {1382814000 25200 0 KRAT} - {1396119600 28800 1 KRAST} - {1414263600 25200 0 KRAT} - {1427569200 28800 1 KRAST} - {1445713200 25200 0 KRAT} - {1459018800 28800 1 KRAST} - {1477767600 25200 0 KRAT} - {1490468400 28800 1 KRAST} - {1509217200 25200 0 KRAT} - {1521918000 28800 1 KRAST} - {1540666800 25200 0 KRAT} - {1553972400 28800 1 KRAST} - {1572116400 25200 0 KRAT} - {1585422000 28800 1 KRAST} - {1603566000 25200 0 KRAT} - {1616871600 28800 1 KRAST} - {1635620400 25200 0 KRAT} - {1648321200 28800 1 KRAST} - {1667070000 25200 0 KRAT} - {1679770800 28800 1 KRAST} - {1698519600 25200 0 KRAT} - {1711825200 28800 1 KRAST} - {1729969200 25200 0 KRAT} - {1743274800 28800 1 KRAST} - {1761418800 25200 0 KRAT} - {1774724400 28800 1 KRAST} - {1792868400 25200 0 KRAT} - {1806174000 28800 1 KRAST} - {1824922800 25200 0 KRAT} - {1837623600 28800 1 KRAST} - {1856372400 25200 0 KRAT} - {1869073200 28800 1 KRAST} - {1887822000 25200 0 KRAT} - {1901127600 28800 1 KRAST} - {1919271600 25200 0 KRAT} - {1932577200 28800 1 KRAST} - {1950721200 25200 0 KRAT} - {1964026800 28800 1 KRAST} - {1982775600 25200 0 KRAT} - {1995476400 28800 1 KRAST} - {2014225200 25200 0 KRAT} - {2026926000 28800 1 KRAST} - {2045674800 25200 0 KRAT} - {2058375600 28800 1 KRAST} - {2077124400 25200 0 KRAT} - {2090430000 28800 1 KRAST} - {2108574000 25200 0 KRAT} - {2121879600 28800 1 KRAST} - {2140023600 25200 0 KRAT} - {2153329200 28800 1 KRAST} - {2172078000 25200 0 KRAT} - {2184778800 28800 1 KRAST} - {2203527600 25200 0 KRAT} - {2216228400 28800 1 KRAST} - {2234977200 25200 0 KRAT} - {2248282800 28800 1 KRAST} - {2266426800 25200 0 KRAT} - {2279732400 28800 1 KRAST} - {2297876400 25200 0 KRAT} - {2311182000 28800 1 KRAST} - {2329326000 25200 0 KRAT} - {2342631600 28800 1 KRAST} - {2361380400 25200 0 KRAT} - {2374081200 28800 1 KRAST} - {2392830000 25200 0 KRAT} - {2405530800 28800 1 KRAST} - {2424279600 25200 0 KRAT} - {2437585200 28800 1 KRAST} - {2455729200 25200 0 KRAT} - {2469034800 28800 1 KRAST} - {2487178800 25200 0 KRAT} - {2500484400 28800 1 KRAST} - {2519233200 25200 0 KRAT} - {2531934000 28800 1 KRAST} - {2550682800 25200 0 KRAT} - {2563383600 28800 1 KRAST} - {2582132400 25200 0 KRAT} - {2595438000 28800 1 KRAST} - {2613582000 25200 0 KRAT} - {2626887600 28800 1 KRAST} - {2645031600 25200 0 KRAT} - {2658337200 28800 1 KRAST} - {2676481200 25200 0 KRAT} - {2689786800 28800 1 KRAST} - {2708535600 25200 0 KRAT} - {2721236400 28800 1 KRAST} - {2739985200 25200 0 KRAT} - {2752686000 28800 1 KRAST} - {2771434800 25200 0 KRAT} - {2784740400 28800 1 KRAST} - {2802884400 25200 0 KRAT} - {2816190000 28800 1 KRAST} - {2834334000 25200 0 KRAT} - {2847639600 28800 1 KRAST} - {2866388400 25200 0 KRAT} - {2879089200 28800 1 KRAST} - {2897838000 25200 0 KRAT} - {2910538800 28800 1 KRAST} - {2929287600 25200 0 KRAT} - {2941988400 28800 1 KRAST} - {2960737200 25200 0 KRAT} - {2974042800 28800 1 KRAST} - {2992186800 25200 0 KRAT} - {3005492400 28800 1 KRAST} - {3023636400 25200 0 KRAT} - {3036942000 28800 1 KRAST} - {3055690800 25200 0 KRAT} - {3068391600 28800 1 KRAST} - {3087140400 25200 0 KRAT} - {3099841200 28800 1 KRAST} - {3118590000 25200 0 KRAT} - {3131895600 28800 1 KRAST} - {3150039600 25200 0 KRAT} - {3163345200 28800 1 KRAST} - {3181489200 25200 0 KRAT} - {3194794800 28800 1 KRAST} - {3212938800 25200 0 KRAT} - {3226244400 28800 1 KRAST} - {3244993200 25200 0 KRAT} - {3257694000 28800 1 KRAST} - {3276442800 25200 0 KRAT} - {3289143600 28800 1 KRAST} - {3307892400 25200 0 KRAT} - {3321198000 28800 1 KRAST} - {3339342000 25200 0 KRAT} - {3352647600 28800 1 KRAST} - {3370791600 25200 0 KRAT} - {3384097200 28800 1 KRAST} - {3402846000 25200 0 KRAT} - {3415546800 28800 1 KRAST} - {3434295600 25200 0 KRAT} - {3446996400 28800 1 KRAST} - {3465745200 25200 0 KRAT} - {3479050800 28800 1 KRAST} - {3497194800 25200 0 KRAT} - {3510500400 28800 1 KRAST} - {3528644400 25200 0 KRAT} - {3541950000 28800 1 KRAST} - {3560094000 25200 0 KRAT} - {3573399600 28800 1 KRAST} - {3592148400 25200 0 KRAT} - {3604849200 28800 1 KRAST} - {3623598000 25200 0 KRAT} - {3636298800 28800 1 KRAST} - {3655047600 25200 0 KRAT} - {3668353200 28800 1 KRAST} - {3686497200 25200 0 KRAT} - {3699802800 28800 1 KRAST} - {3717946800 25200 0 KRAT} - {3731252400 28800 1 KRAST} - {3750001200 25200 0 KRAT} - {3762702000 28800 1 KRAST} - {3781450800 25200 0 KRAT} - {3794151600 28800 1 KRAST} - {3812900400 25200 0 KRAT} - {3825601200 28800 1 KRAST} - {3844350000 25200 0 KRAT} - {3857655600 28800 1 KRAST} - {3875799600 25200 0 KRAT} - {3889105200 28800 1 KRAST} - {3907249200 25200 0 KRAT} - {3920554800 28800 1 KRAST} - {3939303600 25200 0 KRAT} - {3952004400 28800 1 KRAST} - {3970753200 25200 0 KRAT} - {3983454000 28800 1 KRAST} - {4002202800 25200 0 KRAT} - {4015508400 28800 1 KRAST} - {4033652400 25200 0 KRAT} - {4046958000 28800 1 KRAST} - {4065102000 25200 0 KRAT} - {4078407600 28800 1 KRAST} - {4096551600 25200 0 KRAT} + {1301166000 28800 0 KRAT} } diff --git a/library/tzdata/Asia/Magadan b/library/tzdata/Asia/Magadan index 28e1f2f..62e01c5 100644 --- a/library/tzdata/Asia/Magadan +++ b/library/tzdata/Asia/Magadan @@ -66,182 +66,5 @@ set TZData(:Asia/Magadan) { {1256396400 39600 0 MAGT} {1269702000 43200 1 MAGST} {1288450800 39600 0 MAGT} - {1301151600 43200 1 MAGST} - {1319900400 39600 0 MAGT} - {1332601200 43200 1 MAGST} - {1351350000 39600 0 MAGT} - {1364655600 43200 1 MAGST} - {1382799600 39600 0 MAGT} - {1396105200 43200 1 MAGST} - {1414249200 39600 0 MAGT} - {1427554800 43200 1 MAGST} - {1445698800 39600 0 MAGT} - {1459004400 43200 1 MAGST} - {1477753200 39600 0 MAGT} - {1490454000 43200 1 MAGST} - {1509202800 39600 0 MAGT} - {1521903600 43200 1 MAGST} - {1540652400 39600 0 MAGT} - {1553958000 43200 1 MAGST} - {1572102000 39600 0 MAGT} - {1585407600 43200 1 MAGST} - {1603551600 39600 0 MAGT} - {1616857200 43200 1 MAGST} - {1635606000 39600 0 MAGT} - {1648306800 43200 1 MAGST} - {1667055600 39600 0 MAGT} - {1679756400 43200 1 MAGST} - {1698505200 39600 0 MAGT} - {1711810800 43200 1 MAGST} - {1729954800 39600 0 MAGT} - {1743260400 43200 1 MAGST} - {1761404400 39600 0 MAGT} - {1774710000 43200 1 MAGST} - {1792854000 39600 0 MAGT} - {1806159600 43200 1 MAGST} - {1824908400 39600 0 MAGT} - {1837609200 43200 1 MAGST} - {1856358000 39600 0 MAGT} - {1869058800 43200 1 MAGST} - {1887807600 39600 0 MAGT} - {1901113200 43200 1 MAGST} - {1919257200 39600 0 MAGT} - {1932562800 43200 1 MAGST} - {1950706800 39600 0 MAGT} - {1964012400 43200 1 MAGST} - {1982761200 39600 0 MAGT} - {1995462000 43200 1 MAGST} - {2014210800 39600 0 MAGT} - {2026911600 43200 1 MAGST} - {2045660400 39600 0 MAGT} - {2058361200 43200 1 MAGST} - {2077110000 39600 0 MAGT} - {2090415600 43200 1 MAGST} - {2108559600 39600 0 MAGT} - {2121865200 43200 1 MAGST} - {2140009200 39600 0 MAGT} - {2153314800 43200 1 MAGST} - {2172063600 39600 0 MAGT} - {2184764400 43200 1 MAGST} - {2203513200 39600 0 MAGT} - {2216214000 43200 1 MAGST} - {2234962800 39600 0 MAGT} - {2248268400 43200 1 MAGST} - {2266412400 39600 0 MAGT} - {2279718000 43200 1 MAGST} - {2297862000 39600 0 MAGT} - {2311167600 43200 1 MAGST} - {2329311600 39600 0 MAGT} - {2342617200 43200 1 MAGST} - {2361366000 39600 0 MAGT} - {2374066800 43200 1 MAGST} - {2392815600 39600 0 MAGT} - {2405516400 43200 1 MAGST} - {2424265200 39600 0 MAGT} - {2437570800 43200 1 MAGST} - {2455714800 39600 0 MAGT} - {2469020400 43200 1 MAGST} - {2487164400 39600 0 MAGT} - {2500470000 43200 1 MAGST} - {2519218800 39600 0 MAGT} - {2531919600 43200 1 MAGST} - {2550668400 39600 0 MAGT} - {2563369200 43200 1 MAGST} - {2582118000 39600 0 MAGT} - {2595423600 43200 1 MAGST} - {2613567600 39600 0 MAGT} - {2626873200 43200 1 MAGST} - {2645017200 39600 0 MAGT} - {2658322800 43200 1 MAGST} - {2676466800 39600 0 MAGT} - {2689772400 43200 1 MAGST} - {2708521200 39600 0 MAGT} - {2721222000 43200 1 MAGST} - {2739970800 39600 0 MAGT} - {2752671600 43200 1 MAGST} - {2771420400 39600 0 MAGT} - {2784726000 43200 1 MAGST} - {2802870000 39600 0 MAGT} - {2816175600 43200 1 MAGST} - {2834319600 39600 0 MAGT} - {2847625200 43200 1 MAGST} - {2866374000 39600 0 MAGT} - {2879074800 43200 1 MAGST} - {2897823600 39600 0 MAGT} - {2910524400 43200 1 MAGST} - {2929273200 39600 0 MAGT} - {2941974000 43200 1 MAGST} - {2960722800 39600 0 MAGT} - {2974028400 43200 1 MAGST} - {2992172400 39600 0 MAGT} - {3005478000 43200 1 MAGST} - {3023622000 39600 0 MAGT} - {3036927600 43200 1 MAGST} - {3055676400 39600 0 MAGT} - {3068377200 43200 1 MAGST} - {3087126000 39600 0 MAGT} - {3099826800 43200 1 MAGST} - {3118575600 39600 0 MAGT} - {3131881200 43200 1 MAGST} - {3150025200 39600 0 MAGT} - {3163330800 43200 1 MAGST} - {3181474800 39600 0 MAGT} - {3194780400 43200 1 MAGST} - {3212924400 39600 0 MAGT} - {3226230000 43200 1 MAGST} - {3244978800 39600 0 MAGT} - {3257679600 43200 1 MAGST} - {3276428400 39600 0 MAGT} - {3289129200 43200 1 MAGST} - {3307878000 39600 0 MAGT} - {3321183600 43200 1 MAGST} - {3339327600 39600 0 MAGT} - {3352633200 43200 1 MAGST} - {3370777200 39600 0 MAGT} - {3384082800 43200 1 MAGST} - {3402831600 39600 0 MAGT} - {3415532400 43200 1 MAGST} - {3434281200 39600 0 MAGT} - {3446982000 43200 1 MAGST} - {3465730800 39600 0 MAGT} - {3479036400 43200 1 MAGST} - {3497180400 39600 0 MAGT} - {3510486000 43200 1 MAGST} - {3528630000 39600 0 MAGT} - {3541935600 43200 1 MAGST} - {3560079600 39600 0 MAGT} - {3573385200 43200 1 MAGST} - {3592134000 39600 0 MAGT} - {3604834800 43200 1 MAGST} - {3623583600 39600 0 MAGT} - {3636284400 43200 1 MAGST} - {3655033200 39600 0 MAGT} - {3668338800 43200 1 MAGST} - {3686482800 39600 0 MAGT} - {3699788400 43200 1 MAGST} - {3717932400 39600 0 MAGT} - {3731238000 43200 1 MAGST} - {3749986800 39600 0 MAGT} - {3762687600 43200 1 MAGST} - {3781436400 39600 0 MAGT} - {3794137200 43200 1 MAGST} - {3812886000 39600 0 MAGT} - {3825586800 43200 1 MAGST} - {3844335600 39600 0 MAGT} - {3857641200 43200 1 MAGST} - {3875785200 39600 0 MAGT} - {3889090800 43200 1 MAGST} - {3907234800 39600 0 MAGT} - {3920540400 43200 1 MAGST} - {3939289200 39600 0 MAGT} - {3951990000 43200 1 MAGST} - {3970738800 39600 0 MAGT} - {3983439600 43200 1 MAGST} - {4002188400 39600 0 MAGT} - {4015494000 43200 1 MAGST} - {4033638000 39600 0 MAGT} - {4046943600 43200 1 MAGST} - {4065087600 39600 0 MAGT} - {4078393200 43200 1 MAGST} - {4096537200 39600 0 MAGT} + {1301151600 43200 0 MAGT} } diff --git a/library/tzdata/Asia/Makassar b/library/tzdata/Asia/Makassar index aa604b4..be947f3 100644 --- a/library/tzdata/Asia/Makassar +++ b/library/tzdata/Asia/Makassar @@ -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} } diff --git a/library/tzdata/Asia/Muscat b/library/tzdata/Asia/Muscat index 21b5873..a69b880 100644 --- a/library/tzdata/Asia/Muscat +++ b/library/tzdata/Asia/Muscat @@ -1,6 +1,6 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Asia/Muscat) { - {-9223372036854775808 14060 0 LMT} - {-1577937260 14400 0 GST} + {-9223372036854775808 14064 0 LMT} + {-1577937264 14400 0 GST} } diff --git a/library/tzdata/Asia/Novokuznetsk b/library/tzdata/Asia/Novokuznetsk new file mode 100644 index 0000000..9cd45c0 --- /dev/null +++ b/library/tzdata/Asia/Novokuznetsk @@ -0,0 +1,71 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Novokuznetsk) { + {-9223372036854775808 20928 0 NMT} + {-1577512128 21600 0 KRAT} + {-1247551200 25200 0 KRAMMTT} + {354906000 28800 1 KRAST} + {370713600 25200 0 KRAT} + {386442000 28800 1 KRAST} + {402249600 25200 0 KRAT} + {417978000 28800 1 KRAST} + {433785600 25200 0 KRAT} + {449600400 28800 1 KRAST} + {465332400 25200 0 KRAT} + {481057200 28800 1 KRAST} + {496782000 25200 0 KRAT} + {512506800 28800 1 KRAST} + {528231600 25200 0 KRAT} + {543956400 28800 1 KRAST} + {559681200 25200 0 KRAT} + {575406000 28800 1 KRAST} + {591130800 25200 0 KRAT} + {606855600 28800 1 KRAST} + {622580400 25200 0 KRAT} + {638305200 28800 1 KRAST} + {654634800 25200 0 KRAT} + {670359600 21600 0 KRAMMTT} + {670363200 25200 1 KRAST} + {686088000 21600 0 KRAT} + {695764800 25200 0 KRAMMTT} + {701798400 28800 1 KRAST} + {717519600 25200 0 KRAT} + {733258800 28800 1 KRAST} + {748983600 25200 0 KRAT} + {764708400 28800 1 KRAST} + {780433200 25200 0 KRAT} + {796158000 28800 1 KRAST} + {811882800 25200 0 KRAT} + {828212400 28800 1 KRAST} + {846356400 25200 0 KRAT} + {859662000 28800 1 KRAST} + {877806000 25200 0 KRAT} + {891111600 28800 1 KRAST} + {909255600 25200 0 KRAT} + {922561200 28800 1 KRAST} + {941310000 25200 0 KRAT} + {954010800 28800 1 KRAST} + {972759600 25200 0 KRAT} + {985460400 28800 1 KRAST} + {1004209200 25200 0 KRAT} + {1017514800 28800 1 KRAST} + {1035658800 25200 0 KRAT} + {1048964400 28800 1 KRAST} + {1067108400 25200 0 KRAT} + {1080414000 28800 1 KRAST} + {1099162800 25200 0 KRAT} + {1111863600 28800 1 KRAST} + {1130612400 25200 0 KRAT} + {1143313200 28800 1 KRAST} + {1162062000 25200 0 KRAT} + {1174762800 28800 1 KRAST} + {1193511600 25200 0 KRAT} + {1206817200 28800 1 KRAST} + {1224961200 25200 0 KRAT} + {1238266800 28800 1 KRAST} + {1256410800 25200 0 KRAT} + {1269716400 21600 0 NOVMMTT} + {1269720000 25200 1 NOVST} + {1288468800 21600 0 NOVT} + {1301169600 25200 0 NOVT} +} diff --git a/library/tzdata/Asia/Novosibirsk b/library/tzdata/Asia/Novosibirsk index 0b35658..5032eec 100644 --- a/library/tzdata/Asia/Novosibirsk +++ b/library/tzdata/Asia/Novosibirsk @@ -67,182 +67,5 @@ set TZData(:Asia/Novosibirsk) { {1256414400 21600 0 NOVT} {1269720000 25200 1 NOVST} {1288468800 21600 0 NOVT} - {1301169600 25200 1 NOVST} - {1319918400 21600 0 NOVT} - {1332619200 25200 1 NOVST} - {1351368000 21600 0 NOVT} - {1364673600 25200 1 NOVST} - {1382817600 21600 0 NOVT} - {1396123200 25200 1 NOVST} - {1414267200 21600 0 NOVT} - {1427572800 25200 1 NOVST} - {1445716800 21600 0 NOVT} - {1459022400 25200 1 NOVST} - {1477771200 21600 0 NOVT} - {1490472000 25200 1 NOVST} - {1509220800 21600 0 NOVT} - {1521921600 25200 1 NOVST} - {1540670400 21600 0 NOVT} - {1553976000 25200 1 NOVST} - {1572120000 21600 0 NOVT} - {1585425600 25200 1 NOVST} - {1603569600 21600 0 NOVT} - {1616875200 25200 1 NOVST} - {1635624000 21600 0 NOVT} - {1648324800 25200 1 NOVST} - {1667073600 21600 0 NOVT} - {1679774400 25200 1 NOVST} - {1698523200 21600 0 NOVT} - {1711828800 25200 1 NOVST} - {1729972800 21600 0 NOVT} - {1743278400 25200 1 NOVST} - {1761422400 21600 0 NOVT} - {1774728000 25200 1 NOVST} - {1792872000 21600 0 NOVT} - {1806177600 25200 1 NOVST} - {1824926400 21600 0 NOVT} - {1837627200 25200 1 NOVST} - {1856376000 21600 0 NOVT} - {1869076800 25200 1 NOVST} - {1887825600 21600 0 NOVT} - {1901131200 25200 1 NOVST} - {1919275200 21600 0 NOVT} - {1932580800 25200 1 NOVST} - {1950724800 21600 0 NOVT} - {1964030400 25200 1 NOVST} - {1982779200 21600 0 NOVT} - {1995480000 25200 1 NOVST} - {2014228800 21600 0 NOVT} - {2026929600 25200 1 NOVST} - {2045678400 21600 0 NOVT} - {2058379200 25200 1 NOVST} - {2077128000 21600 0 NOVT} - {2090433600 25200 1 NOVST} - {2108577600 21600 0 NOVT} - {2121883200 25200 1 NOVST} - {2140027200 21600 0 NOVT} - {2153332800 25200 1 NOVST} - {2172081600 21600 0 NOVT} - {2184782400 25200 1 NOVST} - {2203531200 21600 0 NOVT} - {2216232000 25200 1 NOVST} - {2234980800 21600 0 NOVT} - {2248286400 25200 1 NOVST} - {2266430400 21600 0 NOVT} - {2279736000 25200 1 NOVST} - {2297880000 21600 0 NOVT} - {2311185600 25200 1 NOVST} - {2329329600 21600 0 NOVT} - {2342635200 25200 1 NOVST} - {2361384000 21600 0 NOVT} - {2374084800 25200 1 NOVST} - {2392833600 21600 0 NOVT} - {2405534400 25200 1 NOVST} - {2424283200 21600 0 NOVT} - {2437588800 25200 1 NOVST} - {2455732800 21600 0 NOVT} - {2469038400 25200 1 NOVST} - {2487182400 21600 0 NOVT} - {2500488000 25200 1 NOVST} - {2519236800 21600 0 NOVT} - {2531937600 25200 1 NOVST} - {2550686400 21600 0 NOVT} - {2563387200 25200 1 NOVST} - {2582136000 21600 0 NOVT} - {2595441600 25200 1 NOVST} - {2613585600 21600 0 NOVT} - {2626891200 25200 1 NOVST} - {2645035200 21600 0 NOVT} - {2658340800 25200 1 NOVST} - {2676484800 21600 0 NOVT} - {2689790400 25200 1 NOVST} - {2708539200 21600 0 NOVT} - {2721240000 25200 1 NOVST} - {2739988800 21600 0 NOVT} - {2752689600 25200 1 NOVST} - {2771438400 21600 0 NOVT} - {2784744000 25200 1 NOVST} - {2802888000 21600 0 NOVT} - {2816193600 25200 1 NOVST} - {2834337600 21600 0 NOVT} - {2847643200 25200 1 NOVST} - {2866392000 21600 0 NOVT} - {2879092800 25200 1 NOVST} - {2897841600 21600 0 NOVT} - {2910542400 25200 1 NOVST} - {2929291200 21600 0 NOVT} - {2941992000 25200 1 NOVST} - {2960740800 21600 0 NOVT} - {2974046400 25200 1 NOVST} - {2992190400 21600 0 NOVT} - {3005496000 25200 1 NOVST} - {3023640000 21600 0 NOVT} - {3036945600 25200 1 NOVST} - {3055694400 21600 0 NOVT} - {3068395200 25200 1 NOVST} - {3087144000 21600 0 NOVT} - {3099844800 25200 1 NOVST} - {3118593600 21600 0 NOVT} - {3131899200 25200 1 NOVST} - {3150043200 21600 0 NOVT} - {3163348800 25200 1 NOVST} - {3181492800 21600 0 NOVT} - {3194798400 25200 1 NOVST} - {3212942400 21600 0 NOVT} - {3226248000 25200 1 NOVST} - {3244996800 21600 0 NOVT} - {3257697600 25200 1 NOVST} - {3276446400 21600 0 NOVT} - {3289147200 25200 1 NOVST} - {3307896000 21600 0 NOVT} - {3321201600 25200 1 NOVST} - {3339345600 21600 0 NOVT} - {3352651200 25200 1 NOVST} - {3370795200 21600 0 NOVT} - {3384100800 25200 1 NOVST} - {3402849600 21600 0 NOVT} - {3415550400 25200 1 NOVST} - {3434299200 21600 0 NOVT} - {3447000000 25200 1 NOVST} - {3465748800 21600 0 NOVT} - {3479054400 25200 1 NOVST} - {3497198400 21600 0 NOVT} - {3510504000 25200 1 NOVST} - {3528648000 21600 0 NOVT} - {3541953600 25200 1 NOVST} - {3560097600 21600 0 NOVT} - {3573403200 25200 1 NOVST} - {3592152000 21600 0 NOVT} - {3604852800 25200 1 NOVST} - {3623601600 21600 0 NOVT} - {3636302400 25200 1 NOVST} - {3655051200 21600 0 NOVT} - {3668356800 25200 1 NOVST} - {3686500800 21600 0 NOVT} - {3699806400 25200 1 NOVST} - {3717950400 21600 0 NOVT} - {3731256000 25200 1 NOVST} - {3750004800 21600 0 NOVT} - {3762705600 25200 1 NOVST} - {3781454400 21600 0 NOVT} - {3794155200 25200 1 NOVST} - {3812904000 21600 0 NOVT} - {3825604800 25200 1 NOVST} - {3844353600 21600 0 NOVT} - {3857659200 25200 1 NOVST} - {3875803200 21600 0 NOVT} - {3889108800 25200 1 NOVST} - {3907252800 21600 0 NOVT} - {3920558400 25200 1 NOVST} - {3939307200 21600 0 NOVT} - {3952008000 25200 1 NOVST} - {3970756800 21600 0 NOVT} - {3983457600 25200 1 NOVST} - {4002206400 21600 0 NOVT} - {4015512000 25200 1 NOVST} - {4033656000 21600 0 NOVT} - {4046961600 25200 1 NOVST} - {4065105600 21600 0 NOVT} - {4078411200 25200 1 NOVST} - {4096555200 21600 0 NOVT} + {1301169600 25200 0 NOVT} } diff --git a/library/tzdata/Asia/Omsk b/library/tzdata/Asia/Omsk index 21db9c9..ca90d2e 100644 --- a/library/tzdata/Asia/Omsk +++ b/library/tzdata/Asia/Omsk @@ -66,182 +66,5 @@ set TZData(:Asia/Omsk) { {1256414400 21600 0 OMST} {1269720000 25200 1 OMSST} {1288468800 21600 0 OMST} - {1301169600 25200 1 OMSST} - {1319918400 21600 0 OMST} - {1332619200 25200 1 OMSST} - {1351368000 21600 0 OMST} - {1364673600 25200 1 OMSST} - {1382817600 21600 0 OMST} - {1396123200 25200 1 OMSST} - {1414267200 21600 0 OMST} - {1427572800 25200 1 OMSST} - {1445716800 21600 0 OMST} - {1459022400 25200 1 OMSST} - {1477771200 21600 0 OMST} - {1490472000 25200 1 OMSST} - {1509220800 21600 0 OMST} - {1521921600 25200 1 OMSST} - {1540670400 21600 0 OMST} - {1553976000 25200 1 OMSST} - {1572120000 21600 0 OMST} - {1585425600 25200 1 OMSST} - {1603569600 21600 0 OMST} - {1616875200 25200 1 OMSST} - {1635624000 21600 0 OMST} - {1648324800 25200 1 OMSST} - {1667073600 21600 0 OMST} - {1679774400 25200 1 OMSST} - {1698523200 21600 0 OMST} - {1711828800 25200 1 OMSST} - {1729972800 21600 0 OMST} - {1743278400 25200 1 OMSST} - {1761422400 21600 0 OMST} - {1774728000 25200 1 OMSST} - {1792872000 21600 0 OMST} - {1806177600 25200 1 OMSST} - {1824926400 21600 0 OMST} - {1837627200 25200 1 OMSST} - {1856376000 21600 0 OMST} - {1869076800 25200 1 OMSST} - {1887825600 21600 0 OMST} - {1901131200 25200 1 OMSST} - {1919275200 21600 0 OMST} - {1932580800 25200 1 OMSST} - {1950724800 21600 0 OMST} - {1964030400 25200 1 OMSST} - {1982779200 21600 0 OMST} - {1995480000 25200 1 OMSST} - {2014228800 21600 0 OMST} - {2026929600 25200 1 OMSST} - {2045678400 21600 0 OMST} - {2058379200 25200 1 OMSST} - {2077128000 21600 0 OMST} - {2090433600 25200 1 OMSST} - {2108577600 21600 0 OMST} - {2121883200 25200 1 OMSST} - {2140027200 21600 0 OMST} - {2153332800 25200 1 OMSST} - {2172081600 21600 0 OMST} - {2184782400 25200 1 OMSST} - {2203531200 21600 0 OMST} - {2216232000 25200 1 OMSST} - {2234980800 21600 0 OMST} - {2248286400 25200 1 OMSST} - {2266430400 21600 0 OMST} - {2279736000 25200 1 OMSST} - {2297880000 21600 0 OMST} - {2311185600 25200 1 OMSST} - {2329329600 21600 0 OMST} - {2342635200 25200 1 OMSST} - {2361384000 21600 0 OMST} - {2374084800 25200 1 OMSST} - {2392833600 21600 0 OMST} - {2405534400 25200 1 OMSST} - {2424283200 21600 0 OMST} - {2437588800 25200 1 OMSST} - {2455732800 21600 0 OMST} - {2469038400 25200 1 OMSST} - {2487182400 21600 0 OMST} - {2500488000 25200 1 OMSST} - {2519236800 21600 0 OMST} - {2531937600 25200 1 OMSST} - {2550686400 21600 0 OMST} - {2563387200 25200 1 OMSST} - {2582136000 21600 0 OMST} - {2595441600 25200 1 OMSST} - {2613585600 21600 0 OMST} - {2626891200 25200 1 OMSST} - {2645035200 21600 0 OMST} - {2658340800 25200 1 OMSST} - {2676484800 21600 0 OMST} - {2689790400 25200 1 OMSST} - {2708539200 21600 0 OMST} - {2721240000 25200 1 OMSST} - {2739988800 21600 0 OMST} - {2752689600 25200 1 OMSST} - {2771438400 21600 0 OMST} - {2784744000 25200 1 OMSST} - {2802888000 21600 0 OMST} - {2816193600 25200 1 OMSST} - {2834337600 21600 0 OMST} - {2847643200 25200 1 OMSST} - {2866392000 21600 0 OMST} - {2879092800 25200 1 OMSST} - {2897841600 21600 0 OMST} - {2910542400 25200 1 OMSST} - {2929291200 21600 0 OMST} - {2941992000 25200 1 OMSST} - {2960740800 21600 0 OMST} - {2974046400 25200 1 OMSST} - {2992190400 21600 0 OMST} - {3005496000 25200 1 OMSST} - {3023640000 21600 0 OMST} - {3036945600 25200 1 OMSST} - {3055694400 21600 0 OMST} - {3068395200 25200 1 OMSST} - {3087144000 21600 0 OMST} - {3099844800 25200 1 OMSST} - {3118593600 21600 0 OMST} - {3131899200 25200 1 OMSST} - {3150043200 21600 0 OMST} - {3163348800 25200 1 OMSST} - {3181492800 21600 0 OMST} - {3194798400 25200 1 OMSST} - {3212942400 21600 0 OMST} - {3226248000 25200 1 OMSST} - {3244996800 21600 0 OMST} - {3257697600 25200 1 OMSST} - {3276446400 21600 0 OMST} - {3289147200 25200 1 OMSST} - {3307896000 21600 0 OMST} - {3321201600 25200 1 OMSST} - {3339345600 21600 0 OMST} - {3352651200 25200 1 OMSST} - {3370795200 21600 0 OMST} - {3384100800 25200 1 OMSST} - {3402849600 21600 0 OMST} - {3415550400 25200 1 OMSST} - {3434299200 21600 0 OMST} - {3447000000 25200 1 OMSST} - {3465748800 21600 0 OMST} - {3479054400 25200 1 OMSST} - {3497198400 21600 0 OMST} - {3510504000 25200 1 OMSST} - {3528648000 21600 0 OMST} - {3541953600 25200 1 OMSST} - {3560097600 21600 0 OMST} - {3573403200 25200 1 OMSST} - {3592152000 21600 0 OMST} - {3604852800 25200 1 OMSST} - {3623601600 21600 0 OMST} - {3636302400 25200 1 OMSST} - {3655051200 21600 0 OMST} - {3668356800 25200 1 OMSST} - {3686500800 21600 0 OMST} - {3699806400 25200 1 OMSST} - {3717950400 21600 0 OMST} - {3731256000 25200 1 OMSST} - {3750004800 21600 0 OMST} - {3762705600 25200 1 OMSST} - {3781454400 21600 0 OMST} - {3794155200 25200 1 OMSST} - {3812904000 21600 0 OMST} - {3825604800 25200 1 OMSST} - {3844353600 21600 0 OMST} - {3857659200 25200 1 OMSST} - {3875803200 21600 0 OMST} - {3889108800 25200 1 OMSST} - {3907252800 21600 0 OMST} - {3920558400 25200 1 OMSST} - {3939307200 21600 0 OMST} - {3952008000 25200 1 OMSST} - {3970756800 21600 0 OMST} - {3983457600 25200 1 OMSST} - {4002206400 21600 0 OMST} - {4015512000 25200 1 OMSST} - {4033656000 21600 0 OMST} - {4046961600 25200 1 OMSST} - {4065105600 21600 0 OMST} - {4078411200 25200 1 OMSST} - {4096555200 21600 0 OMST} + {1301169600 25200 0 OMST} } diff --git a/library/tzdata/Asia/Pontianak b/library/tzdata/Asia/Pontianak index f3567dd..728b552 100644 --- a/library/tzdata/Asia/Pontianak +++ b/library/tzdata/Asia/Pontianak @@ -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} } diff --git a/library/tzdata/Asia/Rangoon b/library/tzdata/Asia/Rangoon index 2b8c4fa..4f3ac02 100644 --- a/library/tzdata/Asia/Rangoon +++ b/library/tzdata/Asia/Rangoon @@ -2,8 +2,8 @@ set TZData(:Asia/Rangoon) { {-9223372036854775808 23080 0 LMT} - {-2840163880 23076 0 RMT} - {-1577946276 23400 0 BURT} + {-2840163880 23080 0 RMT} + {-1577946280 23400 0 BURT} {-873268200 32400 0 JST} {-778410000 23400 0 MMT} } diff --git a/library/tzdata/Asia/Sakhalin b/library/tzdata/Asia/Sakhalin index 31395ab..0b29e82 100644 --- a/library/tzdata/Asia/Sakhalin +++ b/library/tzdata/Asia/Sakhalin @@ -68,182 +68,5 @@ set TZData(:Asia/Sakhalin) { {1256400000 36000 0 SAKT} {1269705600 39600 1 SAKST} {1288454400 36000 0 SAKT} - {1301155200 39600 1 SAKST} - {1319904000 36000 0 SAKT} - {1332604800 39600 1 SAKST} - {1351353600 36000 0 SAKT} - {1364659200 39600 1 SAKST} - {1382803200 36000 0 SAKT} - {1396108800 39600 1 SAKST} - {1414252800 36000 0 SAKT} - {1427558400 39600 1 SAKST} - {1445702400 36000 0 SAKT} - {1459008000 39600 1 SAKST} - {1477756800 36000 0 SAKT} - {1490457600 39600 1 SAKST} - {1509206400 36000 0 SAKT} - {1521907200 39600 1 SAKST} - {1540656000 36000 0 SAKT} - {1553961600 39600 1 SAKST} - {1572105600 36000 0 SAKT} - {1585411200 39600 1 SAKST} - {1603555200 36000 0 SAKT} - {1616860800 39600 1 SAKST} - {1635609600 36000 0 SAKT} - {1648310400 39600 1 SAKST} - {1667059200 36000 0 SAKT} - {1679760000 39600 1 SAKST} - {1698508800 36000 0 SAKT} - {1711814400 39600 1 SAKST} - {1729958400 36000 0 SAKT} - {1743264000 39600 1 SAKST} - {1761408000 36000 0 SAKT} - {1774713600 39600 1 SAKST} - {1792857600 36000 0 SAKT} - {1806163200 39600 1 SAKST} - {1824912000 36000 0 SAKT} - {1837612800 39600 1 SAKST} - {1856361600 36000 0 SAKT} - {1869062400 39600 1 SAKST} - {1887811200 36000 0 SAKT} - {1901116800 39600 1 SAKST} - {1919260800 36000 0 SAKT} - {1932566400 39600 1 SAKST} - {1950710400 36000 0 SAKT} - {1964016000 39600 1 SAKST} - {1982764800 36000 0 SAKT} - {1995465600 39600 1 SAKST} - {2014214400 36000 0 SAKT} - {2026915200 39600 1 SAKST} - {2045664000 36000 0 SAKT} - {2058364800 39600 1 SAKST} - {2077113600 36000 0 SAKT} - {2090419200 39600 1 SAKST} - {2108563200 36000 0 SAKT} - {2121868800 39600 1 SAKST} - {2140012800 36000 0 SAKT} - {2153318400 39600 1 SAKST} - {2172067200 36000 0 SAKT} - {2184768000 39600 1 SAKST} - {2203516800 36000 0 SAKT} - {2216217600 39600 1 SAKST} - {2234966400 36000 0 SAKT} - {2248272000 39600 1 SAKST} - {2266416000 36000 0 SAKT} - {2279721600 39600 1 SAKST} - {2297865600 36000 0 SAKT} - {2311171200 39600 1 SAKST} - {2329315200 36000 0 SAKT} - {2342620800 39600 1 SAKST} - {2361369600 36000 0 SAKT} - {2374070400 39600 1 SAKST} - {2392819200 36000 0 SAKT} - {2405520000 39600 1 SAKST} - {2424268800 36000 0 SAKT} - {2437574400 39600 1 SAKST} - {2455718400 36000 0 SAKT} - {2469024000 39600 1 SAKST} - {2487168000 36000 0 SAKT} - {2500473600 39600 1 SAKST} - {2519222400 36000 0 SAKT} - {2531923200 39600 1 SAKST} - {2550672000 36000 0 SAKT} - {2563372800 39600 1 SAKST} - {2582121600 36000 0 SAKT} - {2595427200 39600 1 SAKST} - {2613571200 36000 0 SAKT} - {2626876800 39600 1 SAKST} - {2645020800 36000 0 SAKT} - {2658326400 39600 1 SAKST} - {2676470400 36000 0 SAKT} - {2689776000 39600 1 SAKST} - {2708524800 36000 0 SAKT} - {2721225600 39600 1 SAKST} - {2739974400 36000 0 SAKT} - {2752675200 39600 1 SAKST} - {2771424000 36000 0 SAKT} - {2784729600 39600 1 SAKST} - {2802873600 36000 0 SAKT} - {2816179200 39600 1 SAKST} - {2834323200 36000 0 SAKT} - {2847628800 39600 1 SAKST} - {2866377600 36000 0 SAKT} - {2879078400 39600 1 SAKST} - {2897827200 36000 0 SAKT} - {2910528000 39600 1 SAKST} - {2929276800 36000 0 SAKT} - {2941977600 39600 1 SAKST} - {2960726400 36000 0 SAKT} - {2974032000 39600 1 SAKST} - {2992176000 36000 0 SAKT} - {3005481600 39600 1 SAKST} - {3023625600 36000 0 SAKT} - {3036931200 39600 1 SAKST} - {3055680000 36000 0 SAKT} - {3068380800 39600 1 SAKST} - {3087129600 36000 0 SAKT} - {3099830400 39600 1 SAKST} - {3118579200 36000 0 SAKT} - {3131884800 39600 1 SAKST} - {3150028800 36000 0 SAKT} - {3163334400 39600 1 SAKST} - {3181478400 36000 0 SAKT} - {3194784000 39600 1 SAKST} - {3212928000 36000 0 SAKT} - {3226233600 39600 1 SAKST} - {3244982400 36000 0 SAKT} - {3257683200 39600 1 SAKST} - {3276432000 36000 0 SAKT} - {3289132800 39600 1 SAKST} - {3307881600 36000 0 SAKT} - {3321187200 39600 1 SAKST} - {3339331200 36000 0 SAKT} - {3352636800 39600 1 SAKST} - {3370780800 36000 0 SAKT} - {3384086400 39600 1 SAKST} - {3402835200 36000 0 SAKT} - {3415536000 39600 1 SAKST} - {3434284800 36000 0 SAKT} - {3446985600 39600 1 SAKST} - {3465734400 36000 0 SAKT} - {3479040000 39600 1 SAKST} - {3497184000 36000 0 SAKT} - {3510489600 39600 1 SAKST} - {3528633600 36000 0 SAKT} - {3541939200 39600 1 SAKST} - {3560083200 36000 0 SAKT} - {3573388800 39600 1 SAKST} - {3592137600 36000 0 SAKT} - {3604838400 39600 1 SAKST} - {3623587200 36000 0 SAKT} - {3636288000 39600 1 SAKST} - {3655036800 36000 0 SAKT} - {3668342400 39600 1 SAKST} - {3686486400 36000 0 SAKT} - {3699792000 39600 1 SAKST} - {3717936000 36000 0 SAKT} - {3731241600 39600 1 SAKST} - {3749990400 36000 0 SAKT} - {3762691200 39600 1 SAKST} - {3781440000 36000 0 SAKT} - {3794140800 39600 1 SAKST} - {3812889600 36000 0 SAKT} - {3825590400 39600 1 SAKST} - {3844339200 36000 0 SAKT} - {3857644800 39600 1 SAKST} - {3875788800 36000 0 SAKT} - {3889094400 39600 1 SAKST} - {3907238400 36000 0 SAKT} - {3920544000 39600 1 SAKST} - {3939292800 36000 0 SAKT} - {3951993600 39600 1 SAKST} - {3970742400 36000 0 SAKT} - {3983443200 39600 1 SAKST} - {4002192000 36000 0 SAKT} - {4015497600 39600 1 SAKST} - {4033641600 36000 0 SAKT} - {4046947200 39600 1 SAKST} - {4065091200 36000 0 SAKT} - {4078396800 39600 1 SAKST} - {4096540800 36000 0 SAKT} + {1301155200 39600 0 SAKT} } diff --git a/library/tzdata/Asia/Shanghai b/library/tzdata/Asia/Shanghai index aa7dc58..4b3cc3b 100644 --- a/library/tzdata/Asia/Shanghai +++ b/library/tzdata/Asia/Shanghai @@ -1,8 +1,8 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Asia/Shanghai) { - {-9223372036854775808 29152 0 LMT} - {-1325491552 28800 0 CST} + {-9223372036854775808 29157 0 LMT} + {-1325491557 28800 0 CST} {-933494400 32400 1 CDT} {-923130000 28800 0 CST} {-908784000 32400 1 CDT} diff --git a/library/tzdata/Asia/Taipei b/library/tzdata/Asia/Taipei index 6366b34..a3c7ecf 100644 --- a/library/tzdata/Asia/Taipei +++ b/library/tzdata/Asia/Taipei @@ -41,6 +41,6 @@ set TZData(:Asia/Taipei) { {149785200 28800 0 CST} {165513600 32400 1 CDT} {181321200 28800 0 CST} - {331142400 32400 1 CDT} - {339087600 28800 0 CST} + {299520000 32400 1 CDT} + {307465200 28800 0 CST} } diff --git a/library/tzdata/Asia/Ust-Nera b/library/tzdata/Asia/Ust-Nera new file mode 100644 index 0000000..c8de7a5 --- /dev/null +++ b/library/tzdata/Asia/Ust-Nera @@ -0,0 +1,70 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Ust-Nera) { + {-9223372036854775808 34374 0 LMT} + {-1579426374 28800 0 YAKT} + {354898800 43200 0 MAGST} + {370699200 39600 0 MAGT} + {386427600 43200 1 MAGST} + {402235200 39600 0 MAGT} + {417963600 43200 1 MAGST} + {433771200 39600 0 MAGT} + {449586000 43200 1 MAGST} + {465318000 39600 0 MAGT} + {481042800 43200 1 MAGST} + {496767600 39600 0 MAGT} + {512492400 43200 1 MAGST} + {528217200 39600 0 MAGT} + {543942000 43200 1 MAGST} + {559666800 39600 0 MAGT} + {575391600 43200 1 MAGST} + {591116400 39600 0 MAGT} + {606841200 43200 1 MAGST} + {622566000 39600 0 MAGT} + {638290800 43200 1 MAGST} + {654620400 39600 0 MAGT} + {670345200 36000 0 MAGMMTT} + {670348800 39600 1 MAGST} + {686073600 36000 0 MAGT} + {695750400 39600 0 MAGMMTT} + {701784000 43200 1 MAGST} + {717505200 39600 0 MAGT} + {733244400 43200 1 MAGST} + {748969200 39600 0 MAGT} + {764694000 43200 1 MAGST} + {780418800 39600 0 MAGT} + {796143600 43200 1 MAGST} + {811868400 39600 0 MAGT} + {828198000 43200 1 MAGST} + {846342000 39600 0 MAGT} + {859647600 43200 1 MAGST} + {877791600 39600 0 MAGT} + {891097200 43200 1 MAGST} + {909241200 39600 0 MAGT} + {922546800 43200 1 MAGST} + {941295600 39600 0 MAGT} + {953996400 43200 1 MAGST} + {972745200 39600 0 MAGT} + {985446000 43200 1 MAGST} + {1004194800 39600 0 MAGT} + {1017500400 43200 1 MAGST} + {1035644400 39600 0 MAGT} + {1048950000 43200 1 MAGST} + {1067094000 39600 0 MAGT} + {1080399600 43200 1 MAGST} + {1099148400 39600 0 MAGT} + {1111849200 43200 1 MAGST} + {1130598000 39600 0 MAGT} + {1143298800 43200 1 MAGST} + {1162047600 39600 0 MAGT} + {1174748400 43200 1 MAGST} + {1193497200 39600 0 MAGT} + {1206802800 43200 1 MAGST} + {1224946800 39600 0 MAGT} + {1238252400 43200 1 MAGST} + {1256396400 39600 0 MAGT} + {1269702000 43200 1 MAGST} + {1288450800 39600 0 MAGT} + {1301151600 43200 0 MAGT} + {1315828800 39600 0 VLAT} +} diff --git a/library/tzdata/Asia/Vladivostok b/library/tzdata/Asia/Vladivostok index 29e8f62..54101a5 100644 --- a/library/tzdata/Asia/Vladivostok +++ b/library/tzdata/Asia/Vladivostok @@ -66,182 +66,5 @@ set TZData(:Asia/Vladivostok) { {1256400000 36000 0 VLAT} {1269705600 39600 1 VLAST} {1288454400 36000 0 VLAT} - {1301155200 39600 1 VLAST} - {1319904000 36000 0 VLAT} - {1332604800 39600 1 VLAST} - {1351353600 36000 0 VLAT} - {1364659200 39600 1 VLAST} - {1382803200 36000 0 VLAT} - {1396108800 39600 1 VLAST} - {1414252800 36000 0 VLAT} - {1427558400 39600 1 VLAST} - {1445702400 36000 0 VLAT} - {1459008000 39600 1 VLAST} - {1477756800 36000 0 VLAT} - {1490457600 39600 1 VLAST} - {1509206400 36000 0 VLAT} - {1521907200 39600 1 VLAST} - {1540656000 36000 0 VLAT} - {1553961600 39600 1 VLAST} - {1572105600 36000 0 VLAT} - {1585411200 39600 1 VLAST} - {1603555200 36000 0 VLAT} - {1616860800 39600 1 VLAST} - {1635609600 36000 0 VLAT} - {1648310400 39600 1 VLAST} - {1667059200 36000 0 VLAT} - {1679760000 39600 1 VLAST} - {1698508800 36000 0 VLAT} - {1711814400 39600 1 VLAST} - {1729958400 36000 0 VLAT} - {1743264000 39600 1 VLAST} - {1761408000 36000 0 VLAT} - {1774713600 39600 1 VLAST} - {1792857600 36000 0 VLAT} - {1806163200 39600 1 VLAST} - {1824912000 36000 0 VLAT} - {1837612800 39600 1 VLAST} - {1856361600 36000 0 VLAT} - {1869062400 39600 1 VLAST} - {1887811200 36000 0 VLAT} - {1901116800 39600 1 VLAST} - {1919260800 36000 0 VLAT} - {1932566400 39600 1 VLAST} - {1950710400 36000 0 VLAT} - {1964016000 39600 1 VLAST} - {1982764800 36000 0 VLAT} - {1995465600 39600 1 VLAST} - {2014214400 36000 0 VLAT} - {2026915200 39600 1 VLAST} - {2045664000 36000 0 VLAT} - {2058364800 39600 1 VLAST} - {2077113600 36000 0 VLAT} - {2090419200 39600 1 VLAST} - {2108563200 36000 0 VLAT} - {2121868800 39600 1 VLAST} - {2140012800 36000 0 VLAT} - {2153318400 39600 1 VLAST} - {2172067200 36000 0 VLAT} - {2184768000 39600 1 VLAST} - {2203516800 36000 0 VLAT} - {2216217600 39600 1 VLAST} - {2234966400 36000 0 VLAT} - {2248272000 39600 1 VLAST} - {2266416000 36000 0 VLAT} - {2279721600 39600 1 VLAST} - {2297865600 36000 0 VLAT} - {2311171200 39600 1 VLAST} - {2329315200 36000 0 VLAT} - {2342620800 39600 1 VLAST} - {2361369600 36000 0 VLAT} - {2374070400 39600 1 VLAST} - {2392819200 36000 0 VLAT} - {2405520000 39600 1 VLAST} - {2424268800 36000 0 VLAT} - {2437574400 39600 1 VLAST} - {2455718400 36000 0 VLAT} - {2469024000 39600 1 VLAST} - {2487168000 36000 0 VLAT} - {2500473600 39600 1 VLAST} - {2519222400 36000 0 VLAT} - {2531923200 39600 1 VLAST} - {2550672000 36000 0 VLAT} - {2563372800 39600 1 VLAST} - {2582121600 36000 0 VLAT} - {2595427200 39600 1 VLAST} - {2613571200 36000 0 VLAT} - {2626876800 39600 1 VLAST} - {2645020800 36000 0 VLAT} - {2658326400 39600 1 VLAST} - {2676470400 36000 0 VLAT} - {2689776000 39600 1 VLAST} - {2708524800 36000 0 VLAT} - {2721225600 39600 1 VLAST} - {2739974400 36000 0 VLAT} - {2752675200 39600 1 VLAST} - {2771424000 36000 0 VLAT} - {2784729600 39600 1 VLAST} - {2802873600 36000 0 VLAT} - {2816179200 39600 1 VLAST} - {2834323200 36000 0 VLAT} - {2847628800 39600 1 VLAST} - {2866377600 36000 0 VLAT} - {2879078400 39600 1 VLAST} - {2897827200 36000 0 VLAT} - {2910528000 39600 1 VLAST} - {2929276800 36000 0 VLAT} - {2941977600 39600 1 VLAST} - {2960726400 36000 0 VLAT} - {2974032000 39600 1 VLAST} - {2992176000 36000 0 VLAT} - {3005481600 39600 1 VLAST} - {3023625600 36000 0 VLAT} - {3036931200 39600 1 VLAST} - {3055680000 36000 0 VLAT} - {3068380800 39600 1 VLAST} - {3087129600 36000 0 VLAT} - {3099830400 39600 1 VLAST} - {3118579200 36000 0 VLAT} - {3131884800 39600 1 VLAST} - {3150028800 36000 0 VLAT} - {3163334400 39600 1 VLAST} - {3181478400 36000 0 VLAT} - {3194784000 39600 1 VLAST} - {3212928000 36000 0 VLAT} - {3226233600 39600 1 VLAST} - {3244982400 36000 0 VLAT} - {3257683200 39600 1 VLAST} - {3276432000 36000 0 VLAT} - {3289132800 39600 1 VLAST} - {3307881600 36000 0 VLAT} - {3321187200 39600 1 VLAST} - {3339331200 36000 0 VLAT} - {3352636800 39600 1 VLAST} - {3370780800 36000 0 VLAT} - {3384086400 39600 1 VLAST} - {3402835200 36000 0 VLAT} - {3415536000 39600 1 VLAST} - {3434284800 36000 0 VLAT} - {3446985600 39600 1 VLAST} - {3465734400 36000 0 VLAT} - {3479040000 39600 1 VLAST} - {3497184000 36000 0 VLAT} - {3510489600 39600 1 VLAST} - {3528633600 36000 0 VLAT} - {3541939200 39600 1 VLAST} - {3560083200 36000 0 VLAT} - {3573388800 39600 1 VLAST} - {3592137600 36000 0 VLAT} - {3604838400 39600 1 VLAST} - {3623587200 36000 0 VLAT} - {3636288000 39600 1 VLAST} - {3655036800 36000 0 VLAT} - {3668342400 39600 1 VLAST} - {3686486400 36000 0 VLAT} - {3699792000 39600 1 VLAST} - {3717936000 36000 0 VLAT} - {3731241600 39600 1 VLAST} - {3749990400 36000 0 VLAT} - {3762691200 39600 1 VLAST} - {3781440000 36000 0 VLAT} - {3794140800 39600 1 VLAST} - {3812889600 36000 0 VLAT} - {3825590400 39600 1 VLAST} - {3844339200 36000 0 VLAT} - {3857644800 39600 1 VLAST} - {3875788800 36000 0 VLAT} - {3889094400 39600 1 VLAST} - {3907238400 36000 0 VLAT} - {3920544000 39600 1 VLAST} - {3939292800 36000 0 VLAT} - {3951993600 39600 1 VLAST} - {3970742400 36000 0 VLAT} - {3983443200 39600 1 VLAST} - {4002192000 36000 0 VLAT} - {4015497600 39600 1 VLAST} - {4033641600 36000 0 VLAT} - {4046947200 39600 1 VLAST} - {4065091200 36000 0 VLAT} - {4078396800 39600 1 VLAST} - {4096540800 36000 0 VLAT} + {1301155200 39600 0 VLAT} } diff --git a/library/tzdata/Asia/Yakutsk b/library/tzdata/Asia/Yakutsk index acf5d7d..5c32cc9 100644 --- a/library/tzdata/Asia/Yakutsk +++ b/library/tzdata/Asia/Yakutsk @@ -66,182 +66,5 @@ set TZData(:Asia/Yakutsk) { {1256403600 32400 0 YAKT} {1269709200 36000 1 YAKST} {1288458000 32400 0 YAKT} - {1301158800 36000 1 YAKST} - {1319907600 32400 0 YAKT} - {1332608400 36000 1 YAKST} - {1351357200 32400 0 YAKT} - {1364662800 36000 1 YAKST} - {1382806800 32400 0 YAKT} - {1396112400 36000 1 YAKST} - {1414256400 32400 0 YAKT} - {1427562000 36000 1 YAKST} - {1445706000 32400 0 YAKT} - {1459011600 36000 1 YAKST} - {1477760400 32400 0 YAKT} - {1490461200 36000 1 YAKST} - {1509210000 32400 0 YAKT} - {1521910800 36000 1 YAKST} - {1540659600 32400 0 YAKT} - {1553965200 36000 1 YAKST} - {1572109200 32400 0 YAKT} - {1585414800 36000 1 YAKST} - {1603558800 32400 0 YAKT} - {1616864400 36000 1 YAKST} - {1635613200 32400 0 YAKT} - {1648314000 36000 1 YAKST} - {1667062800 32400 0 YAKT} - {1679763600 36000 1 YAKST} - {1698512400 32400 0 YAKT} - {1711818000 36000 1 YAKST} - {1729962000 32400 0 YAKT} - {1743267600 36000 1 YAKST} - {1761411600 32400 0 YAKT} - {1774717200 36000 1 YAKST} - {1792861200 32400 0 YAKT} - {1806166800 36000 1 YAKST} - {1824915600 32400 0 YAKT} - {1837616400 36000 1 YAKST} - {1856365200 32400 0 YAKT} - {1869066000 36000 1 YAKST} - {1887814800 32400 0 YAKT} - {1901120400 36000 1 YAKST} - {1919264400 32400 0 YAKT} - {1932570000 36000 1 YAKST} - {1950714000 32400 0 YAKT} - {1964019600 36000 1 YAKST} - {1982768400 32400 0 YAKT} - {1995469200 36000 1 YAKST} - {2014218000 32400 0 YAKT} - {2026918800 36000 1 YAKST} - {2045667600 32400 0 YAKT} - {2058368400 36000 1 YAKST} - {2077117200 32400 0 YAKT} - {2090422800 36000 1 YAKST} - {2108566800 32400 0 YAKT} - {2121872400 36000 1 YAKST} - {2140016400 32400 0 YAKT} - {2153322000 36000 1 YAKST} - {2172070800 32400 0 YAKT} - {2184771600 36000 1 YAKST} - {2203520400 32400 0 YAKT} - {2216221200 36000 1 YAKST} - {2234970000 32400 0 YAKT} - {2248275600 36000 1 YAKST} - {2266419600 32400 0 YAKT} - {2279725200 36000 1 YAKST} - {2297869200 32400 0 YAKT} - {2311174800 36000 1 YAKST} - {2329318800 32400 0 YAKT} - {2342624400 36000 1 YAKST} - {2361373200 32400 0 YAKT} - {2374074000 36000 1 YAKST} - {2392822800 32400 0 YAKT} - {2405523600 36000 1 YAKST} - {2424272400 32400 0 YAKT} - {2437578000 36000 1 YAKST} - {2455722000 32400 0 YAKT} - {2469027600 36000 1 YAKST} - {2487171600 32400 0 YAKT} - {2500477200 36000 1 YAKST} - {2519226000 32400 0 YAKT} - {2531926800 36000 1 YAKST} - {2550675600 32400 0 YAKT} - {2563376400 36000 1 YAKST} - {2582125200 32400 0 YAKT} - {2595430800 36000 1 YAKST} - {2613574800 32400 0 YAKT} - {2626880400 36000 1 YAKST} - {2645024400 32400 0 YAKT} - {2658330000 36000 1 YAKST} - {2676474000 32400 0 YAKT} - {2689779600 36000 1 YAKST} - {2708528400 32400 0 YAKT} - {2721229200 36000 1 YAKST} - {2739978000 32400 0 YAKT} - {2752678800 36000 1 YAKST} - {2771427600 32400 0 YAKT} - {2784733200 36000 1 YAKST} - {2802877200 32400 0 YAKT} - {2816182800 36000 1 YAKST} - {2834326800 32400 0 YAKT} - {2847632400 36000 1 YAKST} - {2866381200 32400 0 YAKT} - {2879082000 36000 1 YAKST} - {2897830800 32400 0 YAKT} - {2910531600 36000 1 YAKST} - {2929280400 32400 0 YAKT} - {2941981200 36000 1 YAKST} - {2960730000 32400 0 YAKT} - {2974035600 36000 1 YAKST} - {2992179600 32400 0 YAKT} - {3005485200 36000 1 YAKST} - {3023629200 32400 0 YAKT} - {3036934800 36000 1 YAKST} - {3055683600 32400 0 YAKT} - {3068384400 36000 1 YAKST} - {3087133200 32400 0 YAKT} - {3099834000 36000 1 YAKST} - {3118582800 32400 0 YAKT} - {3131888400 36000 1 YAKST} - {3150032400 32400 0 YAKT} - {3163338000 36000 1 YAKST} - {3181482000 32400 0 YAKT} - {3194787600 36000 1 YAKST} - {3212931600 32400 0 YAKT} - {3226237200 36000 1 YAKST} - {3244986000 32400 0 YAKT} - {3257686800 36000 1 YAKST} - {3276435600 32400 0 YAKT} - {3289136400 36000 1 YAKST} - {3307885200 32400 0 YAKT} - {3321190800 36000 1 YAKST} - {3339334800 32400 0 YAKT} - {3352640400 36000 1 YAKST} - {3370784400 32400 0 YAKT} - {3384090000 36000 1 YAKST} - {3402838800 32400 0 YAKT} - {3415539600 36000 1 YAKST} - {3434288400 32400 0 YAKT} - {3446989200 36000 1 YAKST} - {3465738000 32400 0 YAKT} - {3479043600 36000 1 YAKST} - {3497187600 32400 0 YAKT} - {3510493200 36000 1 YAKST} - {3528637200 32400 0 YAKT} - {3541942800 36000 1 YAKST} - {3560086800 32400 0 YAKT} - {3573392400 36000 1 YAKST} - {3592141200 32400 0 YAKT} - {3604842000 36000 1 YAKST} - {3623590800 32400 0 YAKT} - {3636291600 36000 1 YAKST} - {3655040400 32400 0 YAKT} - {3668346000 36000 1 YAKST} - {3686490000 32400 0 YAKT} - {3699795600 36000 1 YAKST} - {3717939600 32400 0 YAKT} - {3731245200 36000 1 YAKST} - {3749994000 32400 0 YAKT} - {3762694800 36000 1 YAKST} - {3781443600 32400 0 YAKT} - {3794144400 36000 1 YAKST} - {3812893200 32400 0 YAKT} - {3825594000 36000 1 YAKST} - {3844342800 32400 0 YAKT} - {3857648400 36000 1 YAKST} - {3875792400 32400 0 YAKT} - {3889098000 36000 1 YAKST} - {3907242000 32400 0 YAKT} - {3920547600 36000 1 YAKST} - {3939296400 32400 0 YAKT} - {3951997200 36000 1 YAKST} - {3970746000 32400 0 YAKT} - {3983446800 36000 1 YAKST} - {4002195600 32400 0 YAKT} - {4015501200 36000 1 YAKST} - {4033645200 32400 0 YAKT} - {4046950800 36000 1 YAKST} - {4065094800 32400 0 YAKT} - {4078400400 36000 1 YAKST} - {4096544400 32400 0 YAKT} + {1301158800 36000 0 YAKT} } diff --git a/library/tzdata/Asia/Yekaterinburg b/library/tzdata/Asia/Yekaterinburg index 980f903..2045496 100644 --- a/library/tzdata/Asia/Yekaterinburg +++ b/library/tzdata/Asia/Yekaterinburg @@ -66,182 +66,5 @@ set TZData(:Asia/Yekaterinburg) { {1256418000 18000 0 YEKT} {1269723600 21600 1 YEKST} {1288472400 18000 0 YEKT} - {1301173200 21600 1 YEKST} - {1319922000 18000 0 YEKT} - {1332622800 21600 1 YEKST} - {1351371600 18000 0 YEKT} - {1364677200 21600 1 YEKST} - {1382821200 18000 0 YEKT} - {1396126800 21600 1 YEKST} - {1414270800 18000 0 YEKT} - {1427576400 21600 1 YEKST} - {1445720400 18000 0 YEKT} - {1459026000 21600 1 YEKST} - {1477774800 18000 0 YEKT} - {1490475600 21600 1 YEKST} - {1509224400 18000 0 YEKT} - {1521925200 21600 1 YEKST} - {1540674000 18000 0 YEKT} - {1553979600 21600 1 YEKST} - {1572123600 18000 0 YEKT} - {1585429200 21600 1 YEKST} - {1603573200 18000 0 YEKT} - {1616878800 21600 1 YEKST} - {1635627600 18000 0 YEKT} - {1648328400 21600 1 YEKST} - {1667077200 18000 0 YEKT} - {1679778000 21600 1 YEKST} - {1698526800 18000 0 YEKT} - {1711832400 21600 1 YEKST} - {1729976400 18000 0 YEKT} - {1743282000 21600 1 YEKST} - {1761426000 18000 0 YEKT} - {1774731600 21600 1 YEKST} - {1792875600 18000 0 YEKT} - {1806181200 21600 1 YEKST} - {1824930000 18000 0 YEKT} - {1837630800 21600 1 YEKST} - {1856379600 18000 0 YEKT} - {1869080400 21600 1 YEKST} - {1887829200 18000 0 YEKT} - {1901134800 21600 1 YEKST} - {1919278800 18000 0 YEKT} - {1932584400 21600 1 YEKST} - {1950728400 18000 0 YEKT} - {1964034000 21600 1 YEKST} - {1982782800 18000 0 YEKT} - {1995483600 21600 1 YEKST} - {2014232400 18000 0 YEKT} - {2026933200 21600 1 YEKST} - {2045682000 18000 0 YEKT} - {2058382800 21600 1 YEKST} - {2077131600 18000 0 YEKT} - {2090437200 21600 1 YEKST} - {2108581200 18000 0 YEKT} - {2121886800 21600 1 YEKST} - {2140030800 18000 0 YEKT} - {2153336400 21600 1 YEKST} - {2172085200 18000 0 YEKT} - {2184786000 21600 1 YEKST} - {2203534800 18000 0 YEKT} - {2216235600 21600 1 YEKST} - {2234984400 18000 0 YEKT} - {2248290000 21600 1 YEKST} - {2266434000 18000 0 YEKT} - {2279739600 21600 1 YEKST} - {2297883600 18000 0 YEKT} - {2311189200 21600 1 YEKST} - {2329333200 18000 0 YEKT} - {2342638800 21600 1 YEKST} - {2361387600 18000 0 YEKT} - {2374088400 21600 1 YEKST} - {2392837200 18000 0 YEKT} - {2405538000 21600 1 YEKST} - {2424286800 18000 0 YEKT} - {2437592400 21600 1 YEKST} - {2455736400 18000 0 YEKT} - {2469042000 21600 1 YEKST} - {2487186000 18000 0 YEKT} - {2500491600 21600 1 YEKST} - {2519240400 18000 0 YEKT} - {2531941200 21600 1 YEKST} - {2550690000 18000 0 YEKT} - {2563390800 21600 1 YEKST} - {2582139600 18000 0 YEKT} - {2595445200 21600 1 YEKST} - {2613589200 18000 0 YEKT} - {2626894800 21600 1 YEKST} - {2645038800 18000 0 YEKT} - {2658344400 21600 1 YEKST} - {2676488400 18000 0 YEKT} - {2689794000 21600 1 YEKST} - {2708542800 18000 0 YEKT} - {2721243600 21600 1 YEKST} - {2739992400 18000 0 YEKT} - {2752693200 21600 1 YEKST} - {2771442000 18000 0 YEKT} - {2784747600 21600 1 YEKST} - {2802891600 18000 0 YEKT} - {2816197200 21600 1 YEKST} - {2834341200 18000 0 YEKT} - {2847646800 21600 1 YEKST} - {2866395600 18000 0 YEKT} - {2879096400 21600 1 YEKST} - {2897845200 18000 0 YEKT} - {2910546000 21600 1 YEKST} - {2929294800 18000 0 YEKT} - {2941995600 21600 1 YEKST} - {2960744400 18000 0 YEKT} - {2974050000 21600 1 YEKST} - {2992194000 18000 0 YEKT} - {3005499600 21600 1 YEKST} - {3023643600 18000 0 YEKT} - {3036949200 21600 1 YEKST} - {3055698000 18000 0 YEKT} - {3068398800 21600 1 YEKST} - {3087147600 18000 0 YEKT} - {3099848400 21600 1 YEKST} - {3118597200 18000 0 YEKT} - {3131902800 21600 1 YEKST} - {3150046800 18000 0 YEKT} - {3163352400 21600 1 YEKST} - {3181496400 18000 0 YEKT} - {3194802000 21600 1 YEKST} - {3212946000 18000 0 YEKT} - {3226251600 21600 1 YEKST} - {3245000400 18000 0 YEKT} - {3257701200 21600 1 YEKST} - {3276450000 18000 0 YEKT} - {3289150800 21600 1 YEKST} - {3307899600 18000 0 YEKT} - {3321205200 21600 1 YEKST} - {3339349200 18000 0 YEKT} - {3352654800 21600 1 YEKST} - {3370798800 18000 0 YEKT} - {3384104400 21600 1 YEKST} - {3402853200 18000 0 YEKT} - {3415554000 21600 1 YEKST} - {3434302800 18000 0 YEKT} - {3447003600 21600 1 YEKST} - {3465752400 18000 0 YEKT} - {3479058000 21600 1 YEKST} - {3497202000 18000 0 YEKT} - {3510507600 21600 1 YEKST} - {3528651600 18000 0 YEKT} - {3541957200 21600 1 YEKST} - {3560101200 18000 0 YEKT} - {3573406800 21600 1 YEKST} - {3592155600 18000 0 YEKT} - {3604856400 21600 1 YEKST} - {3623605200 18000 0 YEKT} - {3636306000 21600 1 YEKST} - {3655054800 18000 0 YEKT} - {3668360400 21600 1 YEKST} - {3686504400 18000 0 YEKT} - {3699810000 21600 1 YEKST} - {3717954000 18000 0 YEKT} - {3731259600 21600 1 YEKST} - {3750008400 18000 0 YEKT} - {3762709200 21600 1 YEKST} - {3781458000 18000 0 YEKT} - {3794158800 21600 1 YEKST} - {3812907600 18000 0 YEKT} - {3825608400 21600 1 YEKST} - {3844357200 18000 0 YEKT} - {3857662800 21600 1 YEKST} - {3875806800 18000 0 YEKT} - {3889112400 21600 1 YEKST} - {3907256400 18000 0 YEKT} - {3920562000 21600 1 YEKST} - {3939310800 18000 0 YEKT} - {3952011600 21600 1 YEKST} - {3970760400 18000 0 YEKT} - {3983461200 21600 1 YEKST} - {4002210000 18000 0 YEKT} - {4015515600 21600 1 YEKST} - {4033659600 18000 0 YEKT} - {4046965200 21600 1 YEKST} - {4065109200 18000 0 YEKT} - {4078414800 21600 1 YEKST} - {4096558800 18000 0 YEKT} + {1301173200 21600 0 YEKT} } diff --git a/library/tzdata/Asia/Yerevan b/library/tzdata/Asia/Yerevan index cd70b4f..22008ef 100644 --- a/library/tzdata/Asia/Yerevan +++ b/library/tzdata/Asia/Yerevan @@ -66,180 +66,5 @@ set TZData(:Asia/Yerevan) { {1288476000 14400 0 AMT} {1301176800 18000 1 AMST} {1319925600 14400 0 AMT} - {1332626400 18000 1 AMST} - {1351375200 14400 0 AMT} - {1364680800 18000 1 AMST} - {1382824800 14400 0 AMT} - {1396130400 18000 1 AMST} - {1414274400 14400 0 AMT} - {1427580000 18000 1 AMST} - {1445724000 14400 0 AMT} - {1459029600 18000 1 AMST} - {1477778400 14400 0 AMT} - {1490479200 18000 1 AMST} - {1509228000 14400 0 AMT} - {1521928800 18000 1 AMST} - {1540677600 14400 0 AMT} - {1553983200 18000 1 AMST} - {1572127200 14400 0 AMT} - {1585432800 18000 1 AMST} - {1603576800 14400 0 AMT} - {1616882400 18000 1 AMST} - {1635631200 14400 0 AMT} - {1648332000 18000 1 AMST} - {1667080800 14400 0 AMT} - {1679781600 18000 1 AMST} - {1698530400 14400 0 AMT} - {1711836000 18000 1 AMST} - {1729980000 14400 0 AMT} - {1743285600 18000 1 AMST} - {1761429600 14400 0 AMT} - {1774735200 18000 1 AMST} - {1792879200 14400 0 AMT} - {1806184800 18000 1 AMST} - {1824933600 14400 0 AMT} - {1837634400 18000 1 AMST} - {1856383200 14400 0 AMT} - {1869084000 18000 1 AMST} - {1887832800 14400 0 AMT} - {1901138400 18000 1 AMST} - {1919282400 14400 0 AMT} - {1932588000 18000 1 AMST} - {1950732000 14400 0 AMT} - {1964037600 18000 1 AMST} - {1982786400 14400 0 AMT} - {1995487200 18000 1 AMST} - {2014236000 14400 0 AMT} - {2026936800 18000 1 AMST} - {2045685600 14400 0 AMT} - {2058386400 18000 1 AMST} - {2077135200 14400 0 AMT} - {2090440800 18000 1 AMST} - {2108584800 14400 0 AMT} - {2121890400 18000 1 AMST} - {2140034400 14400 0 AMT} - {2153340000 18000 1 AMST} - {2172088800 14400 0 AMT} - {2184789600 18000 1 AMST} - {2203538400 14400 0 AMT} - {2216239200 18000 1 AMST} - {2234988000 14400 0 AMT} - {2248293600 18000 1 AMST} - {2266437600 14400 0 AMT} - {2279743200 18000 1 AMST} - {2297887200 14400 0 AMT} - {2311192800 18000 1 AMST} - {2329336800 14400 0 AMT} - {2342642400 18000 1 AMST} - {2361391200 14400 0 AMT} - {2374092000 18000 1 AMST} - {2392840800 14400 0 AMT} - {2405541600 18000 1 AMST} - {2424290400 14400 0 AMT} - {2437596000 18000 1 AMST} - {2455740000 14400 0 AMT} - {2469045600 18000 1 AMST} - {2487189600 14400 0 AMT} - {2500495200 18000 1 AMST} - {2519244000 14400 0 AMT} - {2531944800 18000 1 AMST} - {2550693600 14400 0 AMT} - {2563394400 18000 1 AMST} - {2582143200 14400 0 AMT} - {2595448800 18000 1 AMST} - {2613592800 14400 0 AMT} - {2626898400 18000 1 AMST} - {2645042400 14400 0 AMT} - {2658348000 18000 1 AMST} - {2676492000 14400 0 AMT} - {2689797600 18000 1 AMST} - {2708546400 14400 0 AMT} - {2721247200 18000 1 AMST} - {2739996000 14400 0 AMT} - {2752696800 18000 1 AMST} - {2771445600 14400 0 AMT} - {2784751200 18000 1 AMST} - {2802895200 14400 0 AMT} - {2816200800 18000 1 AMST} - {2834344800 14400 0 AMT} - {2847650400 18000 1 AMST} - {2866399200 14400 0 AMT} - {2879100000 18000 1 AMST} - {2897848800 14400 0 AMT} - {2910549600 18000 1 AMST} - {2929298400 14400 0 AMT} - {2941999200 18000 1 AMST} - {2960748000 14400 0 AMT} - {2974053600 18000 1 AMST} - {2992197600 14400 0 AMT} - {3005503200 18000 1 AMST} - {3023647200 14400 0 AMT} - {3036952800 18000 1 AMST} - {3055701600 14400 0 AMT} - {3068402400 18000 1 AMST} - {3087151200 14400 0 AMT} - {3099852000 18000 1 AMST} - {3118600800 14400 0 AMT} - {3131906400 18000 1 AMST} - {3150050400 14400 0 AMT} - {3163356000 18000 1 AMST} - {3181500000 14400 0 AMT} - {3194805600 18000 1 AMST} - {3212949600 14400 0 AMT} - {3226255200 18000 1 AMST} - {3245004000 14400 0 AMT} - {3257704800 18000 1 AMST} - {3276453600 14400 0 AMT} - {3289154400 18000 1 AMST} - {3307903200 14400 0 AMT} - {3321208800 18000 1 AMST} - {3339352800 14400 0 AMT} - {3352658400 18000 1 AMST} - {3370802400 14400 0 AMT} - {3384108000 18000 1 AMST} - {3402856800 14400 0 AMT} - {3415557600 18000 1 AMST} - {3434306400 14400 0 AMT} - {3447007200 18000 1 AMST} - {3465756000 14400 0 AMT} - {3479061600 18000 1 AMST} - {3497205600 14400 0 AMT} - {3510511200 18000 1 AMST} - {3528655200 14400 0 AMT} - {3541960800 18000 1 AMST} - {3560104800 14400 0 AMT} - {3573410400 18000 1 AMST} - {3592159200 14400 0 AMT} - {3604860000 18000 1 AMST} - {3623608800 14400 0 AMT} - {3636309600 18000 1 AMST} - {3655058400 14400 0 AMT} - {3668364000 18000 1 AMST} - {3686508000 14400 0 AMT} - {3699813600 18000 1 AMST} - {3717957600 14400 0 AMT} - {3731263200 18000 1 AMST} - {3750012000 14400 0 AMT} - {3762712800 18000 1 AMST} - {3781461600 14400 0 AMT} - {3794162400 18000 1 AMST} - {3812911200 14400 0 AMT} - {3825612000 18000 1 AMST} - {3844360800 14400 0 AMT} - {3857666400 18000 1 AMST} - {3875810400 14400 0 AMT} - {3889116000 18000 1 AMST} - {3907260000 14400 0 AMT} - {3920565600 18000 1 AMST} - {3939314400 14400 0 AMT} - {3952015200 18000 1 AMST} - {3970764000 14400 0 AMT} - {3983464800 18000 1 AMST} - {4002213600 14400 0 AMT} - {4015519200 18000 1 AMST} - {4033663200 14400 0 AMT} - {4046968800 18000 1 AMST} - {4065112800 14400 0 AMT} - {4078418400 18000 1 AMST} - {4096562400 14400 0 AMT} + {1332626400 14400 0 AMT} } diff --git a/library/tzdata/Atlantic/Bermuda b/library/tzdata/Atlantic/Bermuda index e8b165a..2d4d983 100644 --- a/library/tzdata/Atlantic/Bermuda +++ b/library/tzdata/Atlantic/Bermuda @@ -1,8 +1,8 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Atlantic/Bermuda) { - {-9223372036854775808 -15544 0 LMT} - {-1262281256 -14400 0 AST} + {-9223372036854775808 -15558 0 LMT} + {-1262281242 -14400 0 AST} {136360800 -10800 0 ADT} {152082000 -14400 0 AST} {167810400 -10800 1 ADT} diff --git a/library/tzdata/Atlantic/Faroe b/library/tzdata/Atlantic/Faroe index d2c314a..d2c314a 100755..100644 --- a/library/tzdata/Atlantic/Faroe +++ b/library/tzdata/Atlantic/Faroe diff --git a/library/tzdata/Atlantic/Stanley b/library/tzdata/Atlantic/Stanley index 70dc402..c287238 100644 --- a/library/tzdata/Atlantic/Stanley +++ b/library/tzdata/Atlantic/Stanley @@ -71,183 +71,5 @@ set TZData(:Atlantic/Stanley) { {1240117200 -14400 0 FKT} {1252216800 -10800 1 FKST} {1271566800 -14400 0 FKT} - {1283666400 -10800 1 FKST} - {1303016400 -14400 0 FKT} - {1315116000 -10800 1 FKST} - {1334466000 -14400 0 FKT} - {1346565600 -10800 1 FKST} - {1366520400 -14400 0 FKT} - {1378015200 -10800 1 FKST} - {1397970000 -14400 0 FKT} - {1410069600 -10800 1 FKST} - {1429419600 -14400 0 FKT} - {1441519200 -10800 1 FKST} - {1460869200 -14400 0 FKT} - {1472968800 -10800 1 FKST} - {1492318800 -14400 0 FKT} - {1504418400 -10800 1 FKST} - {1523768400 -14400 0 FKT} - {1535868000 -10800 1 FKST} - {1555822800 -14400 0 FKT} - {1567317600 -10800 1 FKST} - {1587272400 -14400 0 FKT} - {1599372000 -10800 1 FKST} - {1618722000 -14400 0 FKT} - {1630821600 -10800 1 FKST} - {1650171600 -14400 0 FKT} - {1662271200 -10800 1 FKST} - {1681621200 -14400 0 FKT} - {1693720800 -10800 1 FKST} - {1713675600 -14400 0 FKT} - {1725170400 -10800 1 FKST} - {1745125200 -14400 0 FKT} - {1757224800 -10800 1 FKST} - {1776574800 -14400 0 FKT} - {1788674400 -10800 1 FKST} - {1808024400 -14400 0 FKT} - {1820124000 -10800 1 FKST} - {1839474000 -14400 0 FKT} - {1851573600 -10800 1 FKST} - {1870923600 -14400 0 FKT} - {1883023200 -10800 1 FKST} - {1902978000 -14400 0 FKT} - {1914472800 -10800 1 FKST} - {1934427600 -14400 0 FKT} - {1946527200 -10800 1 FKST} - {1965877200 -14400 0 FKT} - {1977976800 -10800 1 FKST} - {1997326800 -14400 0 FKT} - {2009426400 -10800 1 FKST} - {2028776400 -14400 0 FKT} - {2040876000 -10800 1 FKST} - {2060226000 -14400 0 FKT} - {2072325600 -10800 1 FKST} - {2092280400 -14400 0 FKT} - {2104380000 -10800 1 FKST} - {2123730000 -14400 0 FKT} - {2135829600 -10800 1 FKST} - {2155179600 -14400 0 FKT} - {2167279200 -10800 1 FKST} - {2186629200 -14400 0 FKT} - {2198728800 -10800 1 FKST} - {2218078800 -14400 0 FKT} - {2230178400 -10800 1 FKST} - {2250133200 -14400 0 FKT} - {2261628000 -10800 1 FKST} - {2281582800 -14400 0 FKT} - {2293682400 -10800 1 FKST} - {2313032400 -14400 0 FKT} - {2325132000 -10800 1 FKST} - {2344482000 -14400 0 FKT} - {2356581600 -10800 1 FKST} - {2375931600 -14400 0 FKT} - {2388031200 -10800 1 FKST} - {2407381200 -14400 0 FKT} - {2419480800 -10800 1 FKST} - {2439435600 -14400 0 FKT} - {2450930400 -10800 1 FKST} - {2470885200 -14400 0 FKT} - {2482984800 -10800 1 FKST} - {2502334800 -14400 0 FKT} - {2514434400 -10800 1 FKST} - {2533784400 -14400 0 FKT} - {2545884000 -10800 1 FKST} - {2565234000 -14400 0 FKT} - {2577333600 -10800 1 FKST} - {2597288400 -14400 0 FKT} - {2608783200 -10800 1 FKST} - {2628738000 -14400 0 FKT} - {2640837600 -10800 1 FKST} - {2660187600 -14400 0 FKT} - {2672287200 -10800 1 FKST} - {2691637200 -14400 0 FKT} - {2703736800 -10800 1 FKST} - {2723086800 -14400 0 FKT} - {2735186400 -10800 1 FKST} - {2754536400 -14400 0 FKT} - {2766636000 -10800 1 FKST} - {2786590800 -14400 0 FKT} - {2798085600 -10800 1 FKST} - {2818040400 -14400 0 FKT} - {2830140000 -10800 1 FKST} - {2849490000 -14400 0 FKT} - {2861589600 -10800 1 FKST} - {2880939600 -14400 0 FKT} - {2893039200 -10800 1 FKST} - {2912389200 -14400 0 FKT} - {2924488800 -10800 1 FKST} - {2943838800 -14400 0 FKT} - {2955938400 -10800 1 FKST} - {2975893200 -14400 0 FKT} - {2987992800 -10800 1 FKST} - {3007342800 -14400 0 FKT} - {3019442400 -10800 1 FKST} - {3038792400 -14400 0 FKT} - {3050892000 -10800 1 FKST} - {3070242000 -14400 0 FKT} - {3082341600 -10800 1 FKST} - {3101691600 -14400 0 FKT} - {3113791200 -10800 1 FKST} - {3133746000 -14400 0 FKT} - {3145240800 -10800 1 FKST} - {3165195600 -14400 0 FKT} - {3177295200 -10800 1 FKST} - {3196645200 -14400 0 FKT} - {3208744800 -10800 1 FKST} - {3228094800 -14400 0 FKT} - {3240194400 -10800 1 FKST} - {3259544400 -14400 0 FKT} - {3271644000 -10800 1 FKST} - {3290994000 -14400 0 FKT} - {3303093600 -10800 1 FKST} - {3323048400 -14400 0 FKT} - {3334543200 -10800 1 FKST} - {3354498000 -14400 0 FKT} - {3366597600 -10800 1 FKST} - {3385947600 -14400 0 FKT} - {3398047200 -10800 1 FKST} - {3417397200 -14400 0 FKT} - {3429496800 -10800 1 FKST} - {3448846800 -14400 0 FKT} - {3460946400 -10800 1 FKST} - {3480901200 -14400 0 FKT} - {3492396000 -10800 1 FKST} - {3512350800 -14400 0 FKT} - {3524450400 -10800 1 FKST} - {3543800400 -14400 0 FKT} - {3555900000 -10800 1 FKST} - {3575250000 -14400 0 FKT} - {3587349600 -10800 1 FKST} - {3606699600 -14400 0 FKT} - {3618799200 -10800 1 FKST} - {3638149200 -14400 0 FKT} - {3650248800 -10800 1 FKST} - {3670203600 -14400 0 FKT} - {3681698400 -10800 1 FKST} - {3701653200 -14400 0 FKT} - {3713752800 -10800 1 FKST} - {3733102800 -14400 0 FKT} - {3745202400 -10800 1 FKST} - {3764552400 -14400 0 FKT} - {3776652000 -10800 1 FKST} - {3796002000 -14400 0 FKT} - {3808101600 -10800 1 FKST} - {3827451600 -14400 0 FKT} - {3839551200 -10800 1 FKST} - {3859506000 -14400 0 FKT} - {3871605600 -10800 1 FKST} - {3890955600 -14400 0 FKT} - {3903055200 -10800 1 FKST} - {3922405200 -14400 0 FKT} - {3934504800 -10800 1 FKST} - {3953854800 -14400 0 FKT} - {3965954400 -10800 1 FKST} - {3985304400 -14400 0 FKT} - {3997404000 -10800 1 FKST} - {4017358800 -14400 0 FKT} - {4028853600 -10800 1 FKST} - {4048808400 -14400 0 FKT} - {4060908000 -10800 1 FKST} - {4080258000 -14400 0 FKT} - {4092357600 -10800 1 FKST} + {1283662800 -10800 0 FKST} } diff --git a/library/tzdata/Australia/Eucla b/library/tzdata/Australia/Eucla index 0f8ed4d..0f8ed4d 100755..100644 --- a/library/tzdata/Australia/Eucla +++ b/library/tzdata/Australia/Eucla diff --git a/library/tzdata/Europe/Busingen b/library/tzdata/Europe/Busingen new file mode 100644 index 0000000..62abc29 --- /dev/null +++ b/library/tzdata/Europe/Busingen @@ -0,0 +1,5 @@ +# created by tools/tclZIC.tcl - do not edit +if {![info exists TZData(Europe/Zurich)]} { + LoadTimeZoneFile Europe/Zurich +} +set TZData(:Europe/Busingen) $TZData(:Europe/Zurich) diff --git a/library/tzdata/Europe/Guernsey b/library/tzdata/Europe/Guernsey index 4372c64..4372c64 100755..100644 --- a/library/tzdata/Europe/Guernsey +++ b/library/tzdata/Europe/Guernsey diff --git a/library/tzdata/Europe/Helsinki b/library/tzdata/Europe/Helsinki index 04bd991..3abf790 100644 --- a/library/tzdata/Europe/Helsinki +++ b/library/tzdata/Europe/Helsinki @@ -6,11 +6,11 @@ set TZData(:Europe/Helsinki) { {-1535938792 7200 0 EET} {-875671200 10800 1 EEST} {-859863600 7200 0 EET} - {354672000 7200 0 EET} - {354675600 10800 1 EEST} - {370400400 7200 0 EET} - {386125200 10800 1 EEST} - {401850000 7200 0 EET} + {354672000 10800 1 EEST} + {370396800 7200 0 EET} + {386121600 10800 1 EEST} + {401846400 7200 0 EET} + {410220000 7200 0 EET} {417574800 10800 1 EEST} {433299600 7200 0 EET} {449024400 10800 1 EEST} diff --git a/library/tzdata/Europe/Isle_of_Man b/library/tzdata/Europe/Isle_of_Man index 870ac45..870ac45 100755..100644 --- a/library/tzdata/Europe/Isle_of_Man +++ b/library/tzdata/Europe/Isle_of_Man diff --git a/library/tzdata/Europe/Istanbul b/library/tzdata/Europe/Istanbul index 06b2f88..7737d75 100644 --- a/library/tzdata/Europe/Istanbul +++ b/library/tzdata/Europe/Istanbul @@ -122,7 +122,8 @@ set TZData(:Europe/Istanbul) { {1256432400 7200 0 EET} {1269738000 10800 1 EEST} {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} + {1301187600 7200 0 EET} + {1301274000 10800 0 EEST} {1319936400 7200 0 EET} {1332637200 10800 1 EEST} {1351386000 7200 0 EET} diff --git a/library/tzdata/Europe/Jersey b/library/tzdata/Europe/Jersey index e4da512..e4da512 100755..100644 --- a/library/tzdata/Europe/Jersey +++ b/library/tzdata/Europe/Jersey diff --git a/library/tzdata/Europe/Kaliningrad b/library/tzdata/Europe/Kaliningrad index 94ebb12..d5be459 100644 --- a/library/tzdata/Europe/Kaliningrad +++ b/library/tzdata/Europe/Kaliningrad @@ -80,182 +80,5 @@ set TZData(:Europe/Kaliningrad) { {1256428800 7200 0 EET} {1269734400 10800 1 EEST} {1288483200 7200 0 EET} - {1301184000 10800 1 EEST} - {1319932800 7200 0 EET} - {1332633600 10800 1 EEST} - {1351382400 7200 0 EET} - {1364688000 10800 1 EEST} - {1382832000 7200 0 EET} - {1396137600 10800 1 EEST} - {1414281600 7200 0 EET} - {1427587200 10800 1 EEST} - {1445731200 7200 0 EET} - {1459036800 10800 1 EEST} - {1477785600 7200 0 EET} - {1490486400 10800 1 EEST} - {1509235200 7200 0 EET} - {1521936000 10800 1 EEST} - {1540684800 7200 0 EET} - {1553990400 10800 1 EEST} - {1572134400 7200 0 EET} - {1585440000 10800 1 EEST} - {1603584000 7200 0 EET} - {1616889600 10800 1 EEST} - {1635638400 7200 0 EET} - {1648339200 10800 1 EEST} - {1667088000 7200 0 EET} - {1679788800 10800 1 EEST} - {1698537600 7200 0 EET} - {1711843200 10800 1 EEST} - {1729987200 7200 0 EET} - {1743292800 10800 1 EEST} - {1761436800 7200 0 EET} - {1774742400 10800 1 EEST} - {1792886400 7200 0 EET} - {1806192000 10800 1 EEST} - {1824940800 7200 0 EET} - {1837641600 10800 1 EEST} - {1856390400 7200 0 EET} - {1869091200 10800 1 EEST} - {1887840000 7200 0 EET} - {1901145600 10800 1 EEST} - {1919289600 7200 0 EET} - {1932595200 10800 1 EEST} - {1950739200 7200 0 EET} - {1964044800 10800 1 EEST} - {1982793600 7200 0 EET} - {1995494400 10800 1 EEST} - {2014243200 7200 0 EET} - {2026944000 10800 1 EEST} - {2045692800 7200 0 EET} - {2058393600 10800 1 EEST} - {2077142400 7200 0 EET} - {2090448000 10800 1 EEST} - {2108592000 7200 0 EET} - {2121897600 10800 1 EEST} - {2140041600 7200 0 EET} - {2153347200 10800 1 EEST} - {2172096000 7200 0 EET} - {2184796800 10800 1 EEST} - {2203545600 7200 0 EET} - {2216246400 10800 1 EEST} - {2234995200 7200 0 EET} - {2248300800 10800 1 EEST} - {2266444800 7200 0 EET} - {2279750400 10800 1 EEST} - {2297894400 7200 0 EET} - {2311200000 10800 1 EEST} - {2329344000 7200 0 EET} - {2342649600 10800 1 EEST} - {2361398400 7200 0 EET} - {2374099200 10800 1 EEST} - {2392848000 7200 0 EET} - {2405548800 10800 1 EEST} - {2424297600 7200 0 EET} - {2437603200 10800 1 EEST} - {2455747200 7200 0 EET} - {2469052800 10800 1 EEST} - {2487196800 7200 0 EET} - {2500502400 10800 1 EEST} - {2519251200 7200 0 EET} - {2531952000 10800 1 EEST} - {2550700800 7200 0 EET} - {2563401600 10800 1 EEST} - {2582150400 7200 0 EET} - {2595456000 10800 1 EEST} - {2613600000 7200 0 EET} - {2626905600 10800 1 EEST} - {2645049600 7200 0 EET} - {2658355200 10800 1 EEST} - {2676499200 7200 0 EET} - {2689804800 10800 1 EEST} - {2708553600 7200 0 EET} - {2721254400 10800 1 EEST} - {2740003200 7200 0 EET} - {2752704000 10800 1 EEST} - {2771452800 7200 0 EET} - {2784758400 10800 1 EEST} - {2802902400 7200 0 EET} - {2816208000 10800 1 EEST} - {2834352000 7200 0 EET} - {2847657600 10800 1 EEST} - {2866406400 7200 0 EET} - {2879107200 10800 1 EEST} - {2897856000 7200 0 EET} - {2910556800 10800 1 EEST} - {2929305600 7200 0 EET} - {2942006400 10800 1 EEST} - {2960755200 7200 0 EET} - {2974060800 10800 1 EEST} - {2992204800 7200 0 EET} - {3005510400 10800 1 EEST} - {3023654400 7200 0 EET} - {3036960000 10800 1 EEST} - {3055708800 7200 0 EET} - {3068409600 10800 1 EEST} - {3087158400 7200 0 EET} - {3099859200 10800 1 EEST} - {3118608000 7200 0 EET} - {3131913600 10800 1 EEST} - {3150057600 7200 0 EET} - {3163363200 10800 1 EEST} - {3181507200 7200 0 EET} - {3194812800 10800 1 EEST} - {3212956800 7200 0 EET} - {3226262400 10800 1 EEST} - {3245011200 7200 0 EET} - {3257712000 10800 1 EEST} - {3276460800 7200 0 EET} - {3289161600 10800 1 EEST} - {3307910400 7200 0 EET} - {3321216000 10800 1 EEST} - {3339360000 7200 0 EET} - {3352665600 10800 1 EEST} - {3370809600 7200 0 EET} - {3384115200 10800 1 EEST} - {3402864000 7200 0 EET} - {3415564800 10800 1 EEST} - {3434313600 7200 0 EET} - {3447014400 10800 1 EEST} - {3465763200 7200 0 EET} - {3479068800 10800 1 EEST} - {3497212800 7200 0 EET} - {3510518400 10800 1 EEST} - {3528662400 7200 0 EET} - {3541968000 10800 1 EEST} - {3560112000 7200 0 EET} - {3573417600 10800 1 EEST} - {3592166400 7200 0 EET} - {3604867200 10800 1 EEST} - {3623616000 7200 0 EET} - {3636316800 10800 1 EEST} - {3655065600 7200 0 EET} - {3668371200 10800 1 EEST} - {3686515200 7200 0 EET} - {3699820800 10800 1 EEST} - {3717964800 7200 0 EET} - {3731270400 10800 1 EEST} - {3750019200 7200 0 EET} - {3762720000 10800 1 EEST} - {3781468800 7200 0 EET} - {3794169600 10800 1 EEST} - {3812918400 7200 0 EET} - {3825619200 10800 1 EEST} - {3844368000 7200 0 EET} - {3857673600 10800 1 EEST} - {3875817600 7200 0 EET} - {3889123200 10800 1 EEST} - {3907267200 7200 0 EET} - {3920572800 10800 1 EEST} - {3939321600 7200 0 EET} - {3952022400 10800 1 EEST} - {3970771200 7200 0 EET} - {3983472000 10800 1 EEST} - {4002220800 7200 0 EET} - {4015526400 10800 1 EEST} - {4033670400 7200 0 EET} - {4046976000 10800 1 EEST} - {4065120000 7200 0 EET} - {4078425600 10800 1 EEST} - {4096569600 7200 0 EET} + {1301184000 10800 0 FET} } diff --git a/library/tzdata/Europe/Minsk b/library/tzdata/Europe/Minsk index d7d9434..1adcff8 100644 --- a/library/tzdata/Europe/Minsk +++ b/library/tzdata/Europe/Minsk @@ -70,182 +70,5 @@ set TZData(:Europe/Minsk) { {1256428800 7200 0 EET} {1269734400 10800 1 EEST} {1288483200 7200 0 EET} - {1301184000 10800 1 EEST} - {1319932800 7200 0 EET} - {1332633600 10800 1 EEST} - {1351382400 7200 0 EET} - {1364688000 10800 1 EEST} - {1382832000 7200 0 EET} - {1396137600 10800 1 EEST} - {1414281600 7200 0 EET} - {1427587200 10800 1 EEST} - {1445731200 7200 0 EET} - {1459036800 10800 1 EEST} - {1477785600 7200 0 EET} - {1490486400 10800 1 EEST} - {1509235200 7200 0 EET} - {1521936000 10800 1 EEST} - {1540684800 7200 0 EET} - {1553990400 10800 1 EEST} - {1572134400 7200 0 EET} - {1585440000 10800 1 EEST} - {1603584000 7200 0 EET} - {1616889600 10800 1 EEST} - {1635638400 7200 0 EET} - {1648339200 10800 1 EEST} - {1667088000 7200 0 EET} - {1679788800 10800 1 EEST} - {1698537600 7200 0 EET} - {1711843200 10800 1 EEST} - {1729987200 7200 0 EET} - {1743292800 10800 1 EEST} - {1761436800 7200 0 EET} - {1774742400 10800 1 EEST} - {1792886400 7200 0 EET} - {1806192000 10800 1 EEST} - {1824940800 7200 0 EET} - {1837641600 10800 1 EEST} - {1856390400 7200 0 EET} - {1869091200 10800 1 EEST} - {1887840000 7200 0 EET} - {1901145600 10800 1 EEST} - {1919289600 7200 0 EET} - {1932595200 10800 1 EEST} - {1950739200 7200 0 EET} - {1964044800 10800 1 EEST} - {1982793600 7200 0 EET} - {1995494400 10800 1 EEST} - {2014243200 7200 0 EET} - {2026944000 10800 1 EEST} - {2045692800 7200 0 EET} - {2058393600 10800 1 EEST} - {2077142400 7200 0 EET} - {2090448000 10800 1 EEST} - {2108592000 7200 0 EET} - {2121897600 10800 1 EEST} - {2140041600 7200 0 EET} - {2153347200 10800 1 EEST} - {2172096000 7200 0 EET} - {2184796800 10800 1 EEST} - {2203545600 7200 0 EET} - {2216246400 10800 1 EEST} - {2234995200 7200 0 EET} - {2248300800 10800 1 EEST} - {2266444800 7200 0 EET} - {2279750400 10800 1 EEST} - {2297894400 7200 0 EET} - {2311200000 10800 1 EEST} - {2329344000 7200 0 EET} - {2342649600 10800 1 EEST} - {2361398400 7200 0 EET} - {2374099200 10800 1 EEST} - {2392848000 7200 0 EET} - {2405548800 10800 1 EEST} - {2424297600 7200 0 EET} - {2437603200 10800 1 EEST} - {2455747200 7200 0 EET} - {2469052800 10800 1 EEST} - {2487196800 7200 0 EET} - {2500502400 10800 1 EEST} - {2519251200 7200 0 EET} - {2531952000 10800 1 EEST} - {2550700800 7200 0 EET} - {2563401600 10800 1 EEST} - {2582150400 7200 0 EET} - {2595456000 10800 1 EEST} - {2613600000 7200 0 EET} - {2626905600 10800 1 EEST} - {2645049600 7200 0 EET} - {2658355200 10800 1 EEST} - {2676499200 7200 0 EET} - {2689804800 10800 1 EEST} - {2708553600 7200 0 EET} - {2721254400 10800 1 EEST} - {2740003200 7200 0 EET} - {2752704000 10800 1 EEST} - {2771452800 7200 0 EET} - {2784758400 10800 1 EEST} - {2802902400 7200 0 EET} - {2816208000 10800 1 EEST} - {2834352000 7200 0 EET} - {2847657600 10800 1 EEST} - {2866406400 7200 0 EET} - {2879107200 10800 1 EEST} - {2897856000 7200 0 EET} - {2910556800 10800 1 EEST} - {2929305600 7200 0 EET} - {2942006400 10800 1 EEST} - {2960755200 7200 0 EET} - {2974060800 10800 1 EEST} - {2992204800 7200 0 EET} - {3005510400 10800 1 EEST} - {3023654400 7200 0 EET} - {3036960000 10800 1 EEST} - {3055708800 7200 0 EET} - {3068409600 10800 1 EEST} - {3087158400 7200 0 EET} - {3099859200 10800 1 EEST} - {3118608000 7200 0 EET} - {3131913600 10800 1 EEST} - {3150057600 7200 0 EET} - {3163363200 10800 1 EEST} - {3181507200 7200 0 EET} - {3194812800 10800 1 EEST} - {3212956800 7200 0 EET} - {3226262400 10800 1 EEST} - {3245011200 7200 0 EET} - {3257712000 10800 1 EEST} - {3276460800 7200 0 EET} - {3289161600 10800 1 EEST} - {3307910400 7200 0 EET} - {3321216000 10800 1 EEST} - {3339360000 7200 0 EET} - {3352665600 10800 1 EEST} - {3370809600 7200 0 EET} - {3384115200 10800 1 EEST} - {3402864000 7200 0 EET} - {3415564800 10800 1 EEST} - {3434313600 7200 0 EET} - {3447014400 10800 1 EEST} - {3465763200 7200 0 EET} - {3479068800 10800 1 EEST} - {3497212800 7200 0 EET} - {3510518400 10800 1 EEST} - {3528662400 7200 0 EET} - {3541968000 10800 1 EEST} - {3560112000 7200 0 EET} - {3573417600 10800 1 EEST} - {3592166400 7200 0 EET} - {3604867200 10800 1 EEST} - {3623616000 7200 0 EET} - {3636316800 10800 1 EEST} - {3655065600 7200 0 EET} - {3668371200 10800 1 EEST} - {3686515200 7200 0 EET} - {3699820800 10800 1 EEST} - {3717964800 7200 0 EET} - {3731270400 10800 1 EEST} - {3750019200 7200 0 EET} - {3762720000 10800 1 EEST} - {3781468800 7200 0 EET} - {3794169600 10800 1 EEST} - {3812918400 7200 0 EET} - {3825619200 10800 1 EEST} - {3844368000 7200 0 EET} - {3857673600 10800 1 EEST} - {3875817600 7200 0 EET} - {3889123200 10800 1 EEST} - {3907267200 7200 0 EET} - {3920572800 10800 1 EEST} - {3939321600 7200 0 EET} - {3952022400 10800 1 EEST} - {3970771200 7200 0 EET} - {3983472000 10800 1 EEST} - {4002220800 7200 0 EET} - {4015526400 10800 1 EEST} - {4033670400 7200 0 EET} - {4046976000 10800 1 EEST} - {4065120000 7200 0 EET} - {4078425600 10800 1 EEST} - {4096569600 7200 0 EET} + {1301184000 10800 0 FET} } diff --git a/library/tzdata/Europe/Moscow b/library/tzdata/Europe/Moscow index 9acbd2c..8f40741 100644 --- a/library/tzdata/Europe/Moscow +++ b/library/tzdata/Europe/Moscow @@ -79,182 +79,5 @@ set TZData(:Europe/Moscow) { {1256425200 10800 0 MSK} {1269730800 14400 1 MSD} {1288479600 10800 0 MSK} - {1301180400 14400 1 MSD} - {1319929200 10800 0 MSK} - {1332630000 14400 1 MSD} - {1351378800 10800 0 MSK} - {1364684400 14400 1 MSD} - {1382828400 10800 0 MSK} - {1396134000 14400 1 MSD} - {1414278000 10800 0 MSK} - {1427583600 14400 1 MSD} - {1445727600 10800 0 MSK} - {1459033200 14400 1 MSD} - {1477782000 10800 0 MSK} - {1490482800 14400 1 MSD} - {1509231600 10800 0 MSK} - {1521932400 14400 1 MSD} - {1540681200 10800 0 MSK} - {1553986800 14400 1 MSD} - {1572130800 10800 0 MSK} - {1585436400 14400 1 MSD} - {1603580400 10800 0 MSK} - {1616886000 14400 1 MSD} - {1635634800 10800 0 MSK} - {1648335600 14400 1 MSD} - {1667084400 10800 0 MSK} - {1679785200 14400 1 MSD} - {1698534000 10800 0 MSK} - {1711839600 14400 1 MSD} - {1729983600 10800 0 MSK} - {1743289200 14400 1 MSD} - {1761433200 10800 0 MSK} - {1774738800 14400 1 MSD} - {1792882800 10800 0 MSK} - {1806188400 14400 1 MSD} - {1824937200 10800 0 MSK} - {1837638000 14400 1 MSD} - {1856386800 10800 0 MSK} - {1869087600 14400 1 MSD} - {1887836400 10800 0 MSK} - {1901142000 14400 1 MSD} - {1919286000 10800 0 MSK} - {1932591600 14400 1 MSD} - {1950735600 10800 0 MSK} - {1964041200 14400 1 MSD} - {1982790000 10800 0 MSK} - {1995490800 14400 1 MSD} - {2014239600 10800 0 MSK} - {2026940400 14400 1 MSD} - {2045689200 10800 0 MSK} - {2058390000 14400 1 MSD} - {2077138800 10800 0 MSK} - {2090444400 14400 1 MSD} - {2108588400 10800 0 MSK} - {2121894000 14400 1 MSD} - {2140038000 10800 0 MSK} - {2153343600 14400 1 MSD} - {2172092400 10800 0 MSK} - {2184793200 14400 1 MSD} - {2203542000 10800 0 MSK} - {2216242800 14400 1 MSD} - {2234991600 10800 0 MSK} - {2248297200 14400 1 MSD} - {2266441200 10800 0 MSK} - {2279746800 14400 1 MSD} - {2297890800 10800 0 MSK} - {2311196400 14400 1 MSD} - {2329340400 10800 0 MSK} - {2342646000 14400 1 MSD} - {2361394800 10800 0 MSK} - {2374095600 14400 1 MSD} - {2392844400 10800 0 MSK} - {2405545200 14400 1 MSD} - {2424294000 10800 0 MSK} - {2437599600 14400 1 MSD} - {2455743600 10800 0 MSK} - {2469049200 14400 1 MSD} - {2487193200 10800 0 MSK} - {2500498800 14400 1 MSD} - {2519247600 10800 0 MSK} - {2531948400 14400 1 MSD} - {2550697200 10800 0 MSK} - {2563398000 14400 1 MSD} - {2582146800 10800 0 MSK} - {2595452400 14400 1 MSD} - {2613596400 10800 0 MSK} - {2626902000 14400 1 MSD} - {2645046000 10800 0 MSK} - {2658351600 14400 1 MSD} - {2676495600 10800 0 MSK} - {2689801200 14400 1 MSD} - {2708550000 10800 0 MSK} - {2721250800 14400 1 MSD} - {2739999600 10800 0 MSK} - {2752700400 14400 1 MSD} - {2771449200 10800 0 MSK} - {2784754800 14400 1 MSD} - {2802898800 10800 0 MSK} - {2816204400 14400 1 MSD} - {2834348400 10800 0 MSK} - {2847654000 14400 1 MSD} - {2866402800 10800 0 MSK} - {2879103600 14400 1 MSD} - {2897852400 10800 0 MSK} - {2910553200 14400 1 MSD} - {2929302000 10800 0 MSK} - {2942002800 14400 1 MSD} - {2960751600 10800 0 MSK} - {2974057200 14400 1 MSD} - {2992201200 10800 0 MSK} - {3005506800 14400 1 MSD} - {3023650800 10800 0 MSK} - {3036956400 14400 1 MSD} - {3055705200 10800 0 MSK} - {3068406000 14400 1 MSD} - {3087154800 10800 0 MSK} - {3099855600 14400 1 MSD} - {3118604400 10800 0 MSK} - {3131910000 14400 1 MSD} - {3150054000 10800 0 MSK} - {3163359600 14400 1 MSD} - {3181503600 10800 0 MSK} - {3194809200 14400 1 MSD} - {3212953200 10800 0 MSK} - {3226258800 14400 1 MSD} - {3245007600 10800 0 MSK} - {3257708400 14400 1 MSD} - {3276457200 10800 0 MSK} - {3289158000 14400 1 MSD} - {3307906800 10800 0 MSK} - {3321212400 14400 1 MSD} - {3339356400 10800 0 MSK} - {3352662000 14400 1 MSD} - {3370806000 10800 0 MSK} - {3384111600 14400 1 MSD} - {3402860400 10800 0 MSK} - {3415561200 14400 1 MSD} - {3434310000 10800 0 MSK} - {3447010800 14400 1 MSD} - {3465759600 10800 0 MSK} - {3479065200 14400 1 MSD} - {3497209200 10800 0 MSK} - {3510514800 14400 1 MSD} - {3528658800 10800 0 MSK} - {3541964400 14400 1 MSD} - {3560108400 10800 0 MSK} - {3573414000 14400 1 MSD} - {3592162800 10800 0 MSK} - {3604863600 14400 1 MSD} - {3623612400 10800 0 MSK} - {3636313200 14400 1 MSD} - {3655062000 10800 0 MSK} - {3668367600 14400 1 MSD} - {3686511600 10800 0 MSK} - {3699817200 14400 1 MSD} - {3717961200 10800 0 MSK} - {3731266800 14400 1 MSD} - {3750015600 10800 0 MSK} - {3762716400 14400 1 MSD} - {3781465200 10800 0 MSK} - {3794166000 14400 1 MSD} - {3812914800 10800 0 MSK} - {3825615600 14400 1 MSD} - {3844364400 10800 0 MSK} - {3857670000 14400 1 MSD} - {3875814000 10800 0 MSK} - {3889119600 14400 1 MSD} - {3907263600 10800 0 MSK} - {3920569200 14400 1 MSD} - {3939318000 10800 0 MSK} - {3952018800 14400 1 MSD} - {3970767600 10800 0 MSK} - {3983468400 14400 1 MSD} - {4002217200 10800 0 MSK} - {4015522800 14400 1 MSD} - {4033666800 10800 0 MSK} - {4046972400 14400 1 MSD} - {4065116400 10800 0 MSK} - {4078422000 14400 1 MSD} - {4096566000 10800 0 MSK} + {1301180400 14400 0 MSK} } diff --git a/library/tzdata/Europe/Podgorica b/library/tzdata/Europe/Podgorica index f4f9066..f4f9066 100755..100644 --- a/library/tzdata/Europe/Podgorica +++ b/library/tzdata/Europe/Podgorica diff --git a/library/tzdata/Europe/Samara b/library/tzdata/Europe/Samara index 47e57e4..f2ac911 100644 --- a/library/tzdata/Europe/Samara +++ b/library/tzdata/Europe/Samara @@ -66,184 +66,8 @@ set TZData(:Europe/Samara) { {1224972000 14400 0 SAMT} {1238277600 18000 1 SAMST} {1256421600 14400 0 SAMT} - {1269727200 18000 1 SAMST} - {1288476000 14400 0 SAMT} - {1301176800 18000 1 SAMST} - {1319925600 14400 0 SAMT} - {1332626400 18000 1 SAMST} - {1351375200 14400 0 SAMT} - {1364680800 18000 1 SAMST} - {1382824800 14400 0 SAMT} - {1396130400 18000 1 SAMST} - {1414274400 14400 0 SAMT} - {1427580000 18000 1 SAMST} - {1445724000 14400 0 SAMT} - {1459029600 18000 1 SAMST} - {1477778400 14400 0 SAMT} - {1490479200 18000 1 SAMST} - {1509228000 14400 0 SAMT} - {1521928800 18000 1 SAMST} - {1540677600 14400 0 SAMT} - {1553983200 18000 1 SAMST} - {1572127200 14400 0 SAMT} - {1585432800 18000 1 SAMST} - {1603576800 14400 0 SAMT} - {1616882400 18000 1 SAMST} - {1635631200 14400 0 SAMT} - {1648332000 18000 1 SAMST} - {1667080800 14400 0 SAMT} - {1679781600 18000 1 SAMST} - {1698530400 14400 0 SAMT} - {1711836000 18000 1 SAMST} - {1729980000 14400 0 SAMT} - {1743285600 18000 1 SAMST} - {1761429600 14400 0 SAMT} - {1774735200 18000 1 SAMST} - {1792879200 14400 0 SAMT} - {1806184800 18000 1 SAMST} - {1824933600 14400 0 SAMT} - {1837634400 18000 1 SAMST} - {1856383200 14400 0 SAMT} - {1869084000 18000 1 SAMST} - {1887832800 14400 0 SAMT} - {1901138400 18000 1 SAMST} - {1919282400 14400 0 SAMT} - {1932588000 18000 1 SAMST} - {1950732000 14400 0 SAMT} - {1964037600 18000 1 SAMST} - {1982786400 14400 0 SAMT} - {1995487200 18000 1 SAMST} - {2014236000 14400 0 SAMT} - {2026936800 18000 1 SAMST} - {2045685600 14400 0 SAMT} - {2058386400 18000 1 SAMST} - {2077135200 14400 0 SAMT} - {2090440800 18000 1 SAMST} - {2108584800 14400 0 SAMT} - {2121890400 18000 1 SAMST} - {2140034400 14400 0 SAMT} - {2153340000 18000 1 SAMST} - {2172088800 14400 0 SAMT} - {2184789600 18000 1 SAMST} - {2203538400 14400 0 SAMT} - {2216239200 18000 1 SAMST} - {2234988000 14400 0 SAMT} - {2248293600 18000 1 SAMST} - {2266437600 14400 0 SAMT} - {2279743200 18000 1 SAMST} - {2297887200 14400 0 SAMT} - {2311192800 18000 1 SAMST} - {2329336800 14400 0 SAMT} - {2342642400 18000 1 SAMST} - {2361391200 14400 0 SAMT} - {2374092000 18000 1 SAMST} - {2392840800 14400 0 SAMT} - {2405541600 18000 1 SAMST} - {2424290400 14400 0 SAMT} - {2437596000 18000 1 SAMST} - {2455740000 14400 0 SAMT} - {2469045600 18000 1 SAMST} - {2487189600 14400 0 SAMT} - {2500495200 18000 1 SAMST} - {2519244000 14400 0 SAMT} - {2531944800 18000 1 SAMST} - {2550693600 14400 0 SAMT} - {2563394400 18000 1 SAMST} - {2582143200 14400 0 SAMT} - {2595448800 18000 1 SAMST} - {2613592800 14400 0 SAMT} - {2626898400 18000 1 SAMST} - {2645042400 14400 0 SAMT} - {2658348000 18000 1 SAMST} - {2676492000 14400 0 SAMT} - {2689797600 18000 1 SAMST} - {2708546400 14400 0 SAMT} - {2721247200 18000 1 SAMST} - {2739996000 14400 0 SAMT} - {2752696800 18000 1 SAMST} - {2771445600 14400 0 SAMT} - {2784751200 18000 1 SAMST} - {2802895200 14400 0 SAMT} - {2816200800 18000 1 SAMST} - {2834344800 14400 0 SAMT} - {2847650400 18000 1 SAMST} - {2866399200 14400 0 SAMT} - {2879100000 18000 1 SAMST} - {2897848800 14400 0 SAMT} - {2910549600 18000 1 SAMST} - {2929298400 14400 0 SAMT} - {2941999200 18000 1 SAMST} - {2960748000 14400 0 SAMT} - {2974053600 18000 1 SAMST} - {2992197600 14400 0 SAMT} - {3005503200 18000 1 SAMST} - {3023647200 14400 0 SAMT} - {3036952800 18000 1 SAMST} - {3055701600 14400 0 SAMT} - {3068402400 18000 1 SAMST} - {3087151200 14400 0 SAMT} - {3099852000 18000 1 SAMST} - {3118600800 14400 0 SAMT} - {3131906400 18000 1 SAMST} - {3150050400 14400 0 SAMT} - {3163356000 18000 1 SAMST} - {3181500000 14400 0 SAMT} - {3194805600 18000 1 SAMST} - {3212949600 14400 0 SAMT} - {3226255200 18000 1 SAMST} - {3245004000 14400 0 SAMT} - {3257704800 18000 1 SAMST} - {3276453600 14400 0 SAMT} - {3289154400 18000 1 SAMST} - {3307903200 14400 0 SAMT} - {3321208800 18000 1 SAMST} - {3339352800 14400 0 SAMT} - {3352658400 18000 1 SAMST} - {3370802400 14400 0 SAMT} - {3384108000 18000 1 SAMST} - {3402856800 14400 0 SAMT} - {3415557600 18000 1 SAMST} - {3434306400 14400 0 SAMT} - {3447007200 18000 1 SAMST} - {3465756000 14400 0 SAMT} - {3479061600 18000 1 SAMST} - {3497205600 14400 0 SAMT} - {3510511200 18000 1 SAMST} - {3528655200 14400 0 SAMT} - {3541960800 18000 1 SAMST} - {3560104800 14400 0 SAMT} - {3573410400 18000 1 SAMST} - {3592159200 14400 0 SAMT} - {3604860000 18000 1 SAMST} - {3623608800 14400 0 SAMT} - {3636309600 18000 1 SAMST} - {3655058400 14400 0 SAMT} - {3668364000 18000 1 SAMST} - {3686508000 14400 0 SAMT} - {3699813600 18000 1 SAMST} - {3717957600 14400 0 SAMT} - {3731263200 18000 1 SAMST} - {3750012000 14400 0 SAMT} - {3762712800 18000 1 SAMST} - {3781461600 14400 0 SAMT} - {3794162400 18000 1 SAMST} - {3812911200 14400 0 SAMT} - {3825612000 18000 1 SAMST} - {3844360800 14400 0 SAMT} - {3857666400 18000 1 SAMST} - {3875810400 14400 0 SAMT} - {3889116000 18000 1 SAMST} - {3907260000 14400 0 SAMT} - {3920565600 18000 1 SAMST} - {3939314400 14400 0 SAMT} - {3952015200 18000 1 SAMST} - {3970764000 14400 0 SAMT} - {3983464800 18000 1 SAMST} - {4002213600 14400 0 SAMT} - {4015519200 18000 1 SAMST} - {4033663200 14400 0 SAMT} - {4046968800 18000 1 SAMST} - {4065112800 14400 0 SAMT} - {4078418400 18000 1 SAMST} - {4096562400 14400 0 SAMT} + {1269727200 10800 0 SAMMMTT} + {1269730800 14400 1 SAMST} + {1288479600 10800 0 SAMT} + {1301180400 14400 0 SAMT} } diff --git a/library/tzdata/Europe/Vaduz b/library/tzdata/Europe/Vaduz index 3118331..095e018 100644 --- a/library/tzdata/Europe/Vaduz +++ b/library/tzdata/Europe/Vaduz @@ -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) diff --git a/library/tzdata/Europe/Vienna b/library/tzdata/Europe/Vienna index 41d744d..95283eb 100644 --- a/library/tzdata/Europe/Vienna +++ b/library/tzdata/Europe/Vienna @@ -1,8 +1,8 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Europe/Vienna) { - {-9223372036854775808 3920 0 LMT} - {-2422055120 3600 0 CET} + {-9223372036854775808 3921 0 LMT} + {-2422055121 3600 0 CET} {-1693706400 7200 1 CEST} {-1680483600 3600 0 CET} {-1663455600 7200 1 CEST} diff --git a/library/tzdata/Europe/Volgograd b/library/tzdata/Europe/Volgograd index 49cf1e5..c3f148f 100755..100644 --- a/library/tzdata/Europe/Volgograd +++ b/library/tzdata/Europe/Volgograd @@ -66,182 +66,5 @@ set TZData(:Europe/Volgograd) { {1256425200 10800 0 VOLT} {1269730800 14400 1 VOLST} {1288479600 10800 0 VOLT} - {1301180400 14400 1 VOLST} - {1319929200 10800 0 VOLT} - {1332630000 14400 1 VOLST} - {1351378800 10800 0 VOLT} - {1364684400 14400 1 VOLST} - {1382828400 10800 0 VOLT} - {1396134000 14400 1 VOLST} - {1414278000 10800 0 VOLT} - {1427583600 14400 1 VOLST} - {1445727600 10800 0 VOLT} - {1459033200 14400 1 VOLST} - {1477782000 10800 0 VOLT} - {1490482800 14400 1 VOLST} - {1509231600 10800 0 VOLT} - {1521932400 14400 1 VOLST} - {1540681200 10800 0 VOLT} - {1553986800 14400 1 VOLST} - {1572130800 10800 0 VOLT} - {1585436400 14400 1 VOLST} - {1603580400 10800 0 VOLT} - {1616886000 14400 1 VOLST} - {1635634800 10800 0 VOLT} - {1648335600 14400 1 VOLST} - {1667084400 10800 0 VOLT} - {1679785200 14400 1 VOLST} - {1698534000 10800 0 VOLT} - {1711839600 14400 1 VOLST} - {1729983600 10800 0 VOLT} - {1743289200 14400 1 VOLST} - {1761433200 10800 0 VOLT} - {1774738800 14400 1 VOLST} - {1792882800 10800 0 VOLT} - {1806188400 14400 1 VOLST} - {1824937200 10800 0 VOLT} - {1837638000 14400 1 VOLST} - {1856386800 10800 0 VOLT} - {1869087600 14400 1 VOLST} - {1887836400 10800 0 VOLT} - {1901142000 14400 1 VOLST} - {1919286000 10800 0 VOLT} - {1932591600 14400 1 VOLST} - {1950735600 10800 0 VOLT} - {1964041200 14400 1 VOLST} - {1982790000 10800 0 VOLT} - {1995490800 14400 1 VOLST} - {2014239600 10800 0 VOLT} - {2026940400 14400 1 VOLST} - {2045689200 10800 0 VOLT} - {2058390000 14400 1 VOLST} - {2077138800 10800 0 VOLT} - {2090444400 14400 1 VOLST} - {2108588400 10800 0 VOLT} - {2121894000 14400 1 VOLST} - {2140038000 10800 0 VOLT} - {2153343600 14400 1 VOLST} - {2172092400 10800 0 VOLT} - {2184793200 14400 1 VOLST} - {2203542000 10800 0 VOLT} - {2216242800 14400 1 VOLST} - {2234991600 10800 0 VOLT} - {2248297200 14400 1 VOLST} - {2266441200 10800 0 VOLT} - {2279746800 14400 1 VOLST} - {2297890800 10800 0 VOLT} - {2311196400 14400 1 VOLST} - {2329340400 10800 0 VOLT} - {2342646000 14400 1 VOLST} - {2361394800 10800 0 VOLT} - {2374095600 14400 1 VOLST} - {2392844400 10800 0 VOLT} - {2405545200 14400 1 VOLST} - {2424294000 10800 0 VOLT} - {2437599600 14400 1 VOLST} - {2455743600 10800 0 VOLT} - {2469049200 14400 1 VOLST} - {2487193200 10800 0 VOLT} - {2500498800 14400 1 VOLST} - {2519247600 10800 0 VOLT} - {2531948400 14400 1 VOLST} - {2550697200 10800 0 VOLT} - {2563398000 14400 1 VOLST} - {2582146800 10800 0 VOLT} - {2595452400 14400 1 VOLST} - {2613596400 10800 0 VOLT} - {2626902000 14400 1 VOLST} - {2645046000 10800 0 VOLT} - {2658351600 14400 1 VOLST} - {2676495600 10800 0 VOLT} - {2689801200 14400 1 VOLST} - {2708550000 10800 0 VOLT} - {2721250800 14400 1 VOLST} - {2739999600 10800 0 VOLT} - {2752700400 14400 1 VOLST} - {2771449200 10800 0 VOLT} - {2784754800 14400 1 VOLST} - {2802898800 10800 0 VOLT} - {2816204400 14400 1 VOLST} - {2834348400 10800 0 VOLT} - {2847654000 14400 1 VOLST} - {2866402800 10800 0 VOLT} - {2879103600 14400 1 VOLST} - {2897852400 10800 0 VOLT} - {2910553200 14400 1 VOLST} - {2929302000 10800 0 VOLT} - {2942002800 14400 1 VOLST} - {2960751600 10800 0 VOLT} - {2974057200 14400 1 VOLST} - {2992201200 10800 0 VOLT} - {3005506800 14400 1 VOLST} - {3023650800 10800 0 VOLT} - {3036956400 14400 1 VOLST} - {3055705200 10800 0 VOLT} - {3068406000 14400 1 VOLST} - {3087154800 10800 0 VOLT} - {3099855600 14400 1 VOLST} - {3118604400 10800 0 VOLT} - {3131910000 14400 1 VOLST} - {3150054000 10800 0 VOLT} - {3163359600 14400 1 VOLST} - {3181503600 10800 0 VOLT} - {3194809200 14400 1 VOLST} - {3212953200 10800 0 VOLT} - {3226258800 14400 1 VOLST} - {3245007600 10800 0 VOLT} - {3257708400 14400 1 VOLST} - {3276457200 10800 0 VOLT} - {3289158000 14400 1 VOLST} - {3307906800 10800 0 VOLT} - {3321212400 14400 1 VOLST} - {3339356400 10800 0 VOLT} - {3352662000 14400 1 VOLST} - {3370806000 10800 0 VOLT} - {3384111600 14400 1 VOLST} - {3402860400 10800 0 VOLT} - {3415561200 14400 1 VOLST} - {3434310000 10800 0 VOLT} - {3447010800 14400 1 VOLST} - {3465759600 10800 0 VOLT} - {3479065200 14400 1 VOLST} - {3497209200 10800 0 VOLT} - {3510514800 14400 1 VOLST} - {3528658800 10800 0 VOLT} - {3541964400 14400 1 VOLST} - {3560108400 10800 0 VOLT} - {3573414000 14400 1 VOLST} - {3592162800 10800 0 VOLT} - {3604863600 14400 1 VOLST} - {3623612400 10800 0 VOLT} - {3636313200 14400 1 VOLST} - {3655062000 10800 0 VOLT} - {3668367600 14400 1 VOLST} - {3686511600 10800 0 VOLT} - {3699817200 14400 1 VOLST} - {3717961200 10800 0 VOLT} - {3731266800 14400 1 VOLST} - {3750015600 10800 0 VOLT} - {3762716400 14400 1 VOLST} - {3781465200 10800 0 VOLT} - {3794166000 14400 1 VOLST} - {3812914800 10800 0 VOLT} - {3825615600 14400 1 VOLST} - {3844364400 10800 0 VOLT} - {3857670000 14400 1 VOLST} - {3875814000 10800 0 VOLT} - {3889119600 14400 1 VOLST} - {3907263600 10800 0 VOLT} - {3920569200 14400 1 VOLST} - {3939318000 10800 0 VOLT} - {3952018800 14400 1 VOLST} - {3970767600 10800 0 VOLT} - {3983468400 14400 1 VOLST} - {4002217200 10800 0 VOLT} - {4015522800 14400 1 VOLST} - {4033666800 10800 0 VOLT} - {4046972400 14400 1 VOLST} - {4065116400 10800 0 VOLT} - {4078422000 14400 1 VOLST} - {4096566000 10800 0 VOLT} + {1301180400 14400 0 VOLT} } diff --git a/library/tzdata/Europe/Zurich b/library/tzdata/Europe/Zurich index b6b44d1..87a20db 100644 --- a/library/tzdata/Europe/Zurich +++ b/library/tzdata/Europe/Zurich @@ -2,14 +2,12 @@ set TZData(:Europe/Zurich) { {-9223372036854775808 2048 0 LMT} - {-3827954048 1784 0 BMT} - {-2385246584 3600 0 CET} - {-920336400 7200 1 CEST} - {-915242400 3600 0 CET} - {-904518000 7200 1 CEST} - {-891223200 3600 0 CET} - {-873068400 7200 1 CEST} - {-859773600 3600 0 CET} + {-3675198848 1786 0 BMT} + {-2385246586 3600 0 CET} + {-904435200 7200 1 CEST} + {-891129600 3600 0 CET} + {-872985600 7200 1 CEST} + {-859680000 3600 0 CET} {347151600 3600 0 CET} {354675600 7200 1 CEST} {370400400 3600 0 CET} diff --git a/library/tzdata/Indian/Mauritius b/library/tzdata/Indian/Mauritius index 69fe8fe..a9c07eb 100644 --- a/library/tzdata/Indian/Mauritius +++ b/library/tzdata/Indian/Mauritius @@ -6,186 +6,5 @@ set TZData(:Indian/Mauritius) { {403041600 18000 1 MUST} {417034800 14400 0 MUT} {1224972000 18000 1 MUST} - {1238277600 14400 0 MUT} - {1256421600 18000 1 MUST} - {1269727200 14400 0 MUT} - {1288476000 18000 1 MUST} - {1301176800 14400 0 MUT} - {1319925600 18000 1 MUST} - {1332626400 14400 0 MUT} - {1351375200 18000 1 MUST} - {1364680800 14400 0 MUT} - {1382824800 18000 1 MUST} - {1396130400 14400 0 MUT} - {1414274400 18000 1 MUST} - {1427580000 14400 0 MUT} - {1445724000 18000 1 MUST} - {1459029600 14400 0 MUT} - {1477778400 18000 1 MUST} - {1490479200 14400 0 MUT} - {1509228000 18000 1 MUST} - {1521928800 14400 0 MUT} - {1540677600 18000 1 MUST} - {1553983200 14400 0 MUT} - {1572127200 18000 1 MUST} - {1585432800 14400 0 MUT} - {1603576800 18000 1 MUST} - {1616882400 14400 0 MUT} - {1635631200 18000 1 MUST} - {1648332000 14400 0 MUT} - {1667080800 18000 1 MUST} - {1679781600 14400 0 MUT} - {1698530400 18000 1 MUST} - {1711836000 14400 0 MUT} - {1729980000 18000 1 MUST} - {1743285600 14400 0 MUT} - {1761429600 18000 1 MUST} - {1774735200 14400 0 MUT} - {1792879200 18000 1 MUST} - {1806184800 14400 0 MUT} - {1824933600 18000 1 MUST} - {1837634400 14400 0 MUT} - {1856383200 18000 1 MUST} - {1869084000 14400 0 MUT} - {1887832800 18000 1 MUST} - {1901138400 14400 0 MUT} - {1919282400 18000 1 MUST} - {1932588000 14400 0 MUT} - {1950732000 18000 1 MUST} - {1964037600 14400 0 MUT} - {1982786400 18000 1 MUST} - {1995487200 14400 0 MUT} - {2014236000 18000 1 MUST} - {2026936800 14400 0 MUT} - {2045685600 18000 1 MUST} - {2058386400 14400 0 MUT} - {2077135200 18000 1 MUST} - {2090440800 14400 0 MUT} - {2108584800 18000 1 MUST} - {2121890400 14400 0 MUT} - {2140034400 18000 1 MUST} - {2153340000 14400 0 MUT} - {2172088800 18000 1 MUST} - {2184789600 14400 0 MUT} - {2203538400 18000 1 MUST} - {2216239200 14400 0 MUT} - {2234988000 18000 1 MUST} - {2248293600 14400 0 MUT} - {2266437600 18000 1 MUST} - {2279743200 14400 0 MUT} - {2297887200 18000 1 MUST} - {2311192800 14400 0 MUT} - {2329336800 18000 1 MUST} - {2342642400 14400 0 MUT} - {2361391200 18000 1 MUST} - {2374092000 14400 0 MUT} - {2392840800 18000 1 MUST} - {2405541600 14400 0 MUT} - {2424290400 18000 1 MUST} - {2437596000 14400 0 MUT} - {2455740000 18000 1 MUST} - {2469045600 14400 0 MUT} - {2487189600 18000 1 MUST} - {2500495200 14400 0 MUT} - {2519244000 18000 1 MUST} - {2531944800 14400 0 MUT} - {2550693600 18000 1 MUST} - {2563394400 14400 0 MUT} - {2582143200 18000 1 MUST} - {2595448800 14400 0 MUT} - {2613592800 18000 1 MUST} - {2626898400 14400 0 MUT} - {2645042400 18000 1 MUST} - {2658348000 14400 0 MUT} - {2676492000 18000 1 MUST} - {2689797600 14400 0 MUT} - {2708546400 18000 1 MUST} - {2721247200 14400 0 MUT} - {2739996000 18000 1 MUST} - {2752696800 14400 0 MUT} - {2771445600 18000 1 MUST} - {2784751200 14400 0 MUT} - {2802895200 18000 1 MUST} - {2816200800 14400 0 MUT} - {2834344800 18000 1 MUST} - {2847650400 14400 0 MUT} - {2866399200 18000 1 MUST} - {2879100000 14400 0 MUT} - {2897848800 18000 1 MUST} - {2910549600 14400 0 MUT} - {2929298400 18000 1 MUST} - {2941999200 14400 0 MUT} - {2960748000 18000 1 MUST} - {2974053600 14400 0 MUT} - {2992197600 18000 1 MUST} - {3005503200 14400 0 MUT} - {3023647200 18000 1 MUST} - {3036952800 14400 0 MUT} - {3055701600 18000 1 MUST} - {3068402400 14400 0 MUT} - {3087151200 18000 1 MUST} - {3099852000 14400 0 MUT} - {3118600800 18000 1 MUST} - {3131906400 14400 0 MUT} - {3150050400 18000 1 MUST} - {3163356000 14400 0 MUT} - {3181500000 18000 1 MUST} - {3194805600 14400 0 MUT} - {3212949600 18000 1 MUST} - {3226255200 14400 0 MUT} - {3245004000 18000 1 MUST} - {3257704800 14400 0 MUT} - {3276453600 18000 1 MUST} - {3289154400 14400 0 MUT} - {3307903200 18000 1 MUST} - {3321208800 14400 0 MUT} - {3339352800 18000 1 MUST} - {3352658400 14400 0 MUT} - {3370802400 18000 1 MUST} - {3384108000 14400 0 MUT} - {3402856800 18000 1 MUST} - {3415557600 14400 0 MUT} - {3434306400 18000 1 MUST} - {3447007200 14400 0 MUT} - {3465756000 18000 1 MUST} - {3479061600 14400 0 MUT} - {3497205600 18000 1 MUST} - {3510511200 14400 0 MUT} - {3528655200 18000 1 MUST} - {3541960800 14400 0 MUT} - {3560104800 18000 1 MUST} - {3573410400 14400 0 MUT} - {3592159200 18000 1 MUST} - {3604860000 14400 0 MUT} - {3623608800 18000 1 MUST} - {3636309600 14400 0 MUT} - {3655058400 18000 1 MUST} - {3668364000 14400 0 MUT} - {3686508000 18000 1 MUST} - {3699813600 14400 0 MUT} - {3717957600 18000 1 MUST} - {3731263200 14400 0 MUT} - {3750012000 18000 1 MUST} - {3762712800 14400 0 MUT} - {3781461600 18000 1 MUST} - {3794162400 14400 0 MUT} - {3812911200 18000 1 MUST} - {3825612000 14400 0 MUT} - {3844360800 18000 1 MUST} - {3857666400 14400 0 MUT} - {3875810400 18000 1 MUST} - {3889116000 14400 0 MUT} - {3907260000 18000 1 MUST} - {3920565600 14400 0 MUT} - {3939314400 18000 1 MUST} - {3952015200 14400 0 MUT} - {3970764000 18000 1 MUST} - {3983464800 14400 0 MUT} - {4002213600 18000 1 MUST} - {4015519200 14400 0 MUT} - {4033663200 18000 1 MUST} - {4046968800 14400 0 MUT} - {4065112800 18000 1 MUST} - {4078418400 14400 0 MUT} - {4096562400 18000 1 MUST} + {1238274000 14400 0 MUT} } diff --git a/library/tzdata/Pacific/Apia b/library/tzdata/Pacific/Apia index 5d34ed1..e6f33ad 100644 --- a/library/tzdata/Pacific/Apia +++ b/library/tzdata/Pacific/Apia @@ -5,4 +5,184 @@ set TZData(:Pacific/Apia) { {-2855737984 -41216 0 LMT} {-1861878784 -41400 0 SAMT} {-631110600 -39600 0 WST} + {1285498800 -36000 1 WSDT} + {1301752800 -39600 0 WST} + {1316872800 -36000 1 WSDT} + {1325239200 50400 1 WSDT} + {1333202400 46800 0 WST} + {1348927200 50400 1 WSDT} + {1365256800 46800 0 WST} + {1380376800 50400 1 WSDT} + {1396706400 46800 0 WST} + {1411826400 50400 1 WSDT} + {1428156000 46800 0 WST} + {1443276000 50400 1 WSDT} + {1459605600 46800 0 WST} + {1474725600 50400 1 WSDT} + {1491055200 46800 0 WST} + {1506175200 50400 1 WSDT} + {1522504800 46800 0 WST} + {1538229600 50400 1 WSDT} + {1554559200 46800 0 WST} + {1569679200 50400 1 WSDT} + {1586008800 46800 0 WST} + {1601128800 50400 1 WSDT} + {1617458400 46800 0 WST} + {1632578400 50400 1 WSDT} + {1648908000 46800 0 WST} + {1664028000 50400 1 WSDT} + {1680357600 46800 0 WST} + {1695477600 50400 1 WSDT} + {1712412000 46800 0 WST} + {1727532000 50400 1 WSDT} + {1743861600 46800 0 WST} + {1758981600 50400 1 WSDT} + {1775311200 46800 0 WST} + {1790431200 50400 1 WSDT} + {1806760800 46800 0 WST} + {1821880800 50400 1 WSDT} + {1838210400 46800 0 WST} + {1853330400 50400 1 WSDT} + {1869660000 46800 0 WST} + {1885384800 50400 1 WSDT} + {1901714400 46800 0 WST} + {1916834400 50400 1 WSDT} + {1933164000 46800 0 WST} + {1948284000 50400 1 WSDT} + {1964613600 46800 0 WST} + {1979733600 50400 1 WSDT} + {1996063200 46800 0 WST} + {2011183200 50400 1 WSDT} + {2027512800 46800 0 WST} + {2042632800 50400 1 WSDT} + {2058962400 46800 0 WST} + {2074687200 50400 1 WSDT} + {2091016800 46800 0 WST} + {2106136800 50400 1 WSDT} + {2122466400 46800 0 WST} + {2137586400 50400 1 WSDT} + {2153916000 46800 0 WST} + {2169036000 50400 1 WSDT} + {2185365600 46800 0 WST} + {2200485600 50400 1 WSDT} + {2216815200 46800 0 WST} + {2232540000 50400 1 WSDT} + {2248869600 46800 0 WST} + {2263989600 50400 1 WSDT} + {2280319200 46800 0 WST} + {2295439200 50400 1 WSDT} + {2311768800 46800 0 WST} + {2326888800 50400 1 WSDT} + {2343218400 46800 0 WST} + {2358338400 50400 1 WSDT} + {2374668000 46800 0 WST} + {2389788000 50400 1 WSDT} + {2406117600 46800 0 WST} + {2421842400 50400 1 WSDT} + {2438172000 46800 0 WST} + {2453292000 50400 1 WSDT} + {2469621600 46800 0 WST} + {2484741600 50400 1 WSDT} + {2501071200 46800 0 WST} + {2516191200 50400 1 WSDT} + {2532520800 46800 0 WST} + {2547640800 50400 1 WSDT} + {2563970400 46800 0 WST} + {2579090400 50400 1 WSDT} + {2596024800 46800 0 WST} + {2611144800 50400 1 WSDT} + {2627474400 46800 0 WST} + {2642594400 50400 1 WSDT} + {2658924000 46800 0 WST} + {2674044000 50400 1 WSDT} + {2690373600 46800 0 WST} + {2705493600 50400 1 WSDT} + {2721823200 46800 0 WST} + {2736943200 50400 1 WSDT} + {2753272800 46800 0 WST} + {2768997600 50400 1 WSDT} + {2785327200 46800 0 WST} + {2800447200 50400 1 WSDT} + {2816776800 46800 0 WST} + {2831896800 50400 1 WSDT} + {2848226400 46800 0 WST} + {2863346400 50400 1 WSDT} + {2879676000 46800 0 WST} + {2894796000 50400 1 WSDT} + {2911125600 46800 0 WST} + {2926245600 50400 1 WSDT} + {2942575200 46800 0 WST} + {2958300000 50400 1 WSDT} + {2974629600 46800 0 WST} + {2989749600 50400 1 WSDT} + {3006079200 46800 0 WST} + {3021199200 50400 1 WSDT} + {3037528800 46800 0 WST} + {3052648800 50400 1 WSDT} + {3068978400 46800 0 WST} + {3084098400 50400 1 WSDT} + {3100428000 46800 0 WST} + {3116152800 50400 1 WSDT} + {3132482400 46800 0 WST} + {3147602400 50400 1 WSDT} + {3163932000 46800 0 WST} + {3179052000 50400 1 WSDT} + {3195381600 46800 0 WST} + {3210501600 50400 1 WSDT} + {3226831200 46800 0 WST} + {3241951200 50400 1 WSDT} + {3258280800 46800 0 WST} + {3273400800 50400 1 WSDT} + {3289730400 46800 0 WST} + {3305455200 50400 1 WSDT} + {3321784800 46800 0 WST} + {3336904800 50400 1 WSDT} + {3353234400 46800 0 WST} + {3368354400 50400 1 WSDT} + {3384684000 46800 0 WST} + {3399804000 50400 1 WSDT} + {3416133600 46800 0 WST} + {3431253600 50400 1 WSDT} + {3447583200 46800 0 WST} + {3462703200 50400 1 WSDT} + {3479637600 46800 0 WST} + {3494757600 50400 1 WSDT} + {3511087200 46800 0 WST} + {3526207200 50400 1 WSDT} + {3542536800 46800 0 WST} + {3557656800 50400 1 WSDT} + {3573986400 46800 0 WST} + {3589106400 50400 1 WSDT} + {3605436000 46800 0 WST} + {3620556000 50400 1 WSDT} + {3636885600 46800 0 WST} + {3652610400 50400 1 WSDT} + {3668940000 46800 0 WST} + {3684060000 50400 1 WSDT} + {3700389600 46800 0 WST} + {3715509600 50400 1 WSDT} + {3731839200 46800 0 WST} + {3746959200 50400 1 WSDT} + {3763288800 46800 0 WST} + {3778408800 50400 1 WSDT} + {3794738400 46800 0 WST} + {3809858400 50400 1 WSDT} + {3826188000 46800 0 WST} + {3841912800 50400 1 WSDT} + {3858242400 46800 0 WST} + {3873362400 50400 1 WSDT} + {3889692000 46800 0 WST} + {3904812000 50400 1 WSDT} + {3921141600 46800 0 WST} + {3936261600 50400 1 WSDT} + {3952591200 46800 0 WST} + {3967711200 50400 1 WSDT} + {3984040800 46800 0 WST} + {3999765600 50400 1 WSDT} + {4016095200 46800 0 WST} + {4031215200 50400 1 WSDT} + {4047544800 46800 0 WST} + {4062664800 50400 1 WSDT} + {4078994400 46800 0 WST} + {4094114400 50400 1 WSDT} } diff --git a/library/tzdata/Pacific/Chuuk b/library/tzdata/Pacific/Chuuk new file mode 100644 index 0000000..70b14b2 --- /dev/null +++ b/library/tzdata/Pacific/Chuuk @@ -0,0 +1,6 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Chuuk) { + {-9223372036854775808 36428 0 LMT} + {-2177489228 36000 0 CHUT} +} diff --git a/library/tzdata/Pacific/Easter b/library/tzdata/Pacific/Easter index ac00f5e..000c6d1 100644 --- a/library/tzdata/Pacific/Easter +++ b/library/tzdata/Pacific/Easter @@ -92,184 +92,184 @@ set TZData(:Pacific/Easter) { {1223784000 -18000 1 EASST} {1237086000 -21600 0 EAST} {1255233600 -18000 1 EASST} - {1268535600 -21600 0 EAST} + {1270350000 -21600 0 EAST} {1286683200 -18000 1 EASST} - {1299985200 -21600 0 EAST} - {1318132800 -18000 1 EASST} - {1331434800 -21600 0 EAST} - {1350187200 -18000 1 EASST} - {1362884400 -21600 0 EAST} - {1381636800 -18000 1 EASST} - {1394334000 -21600 0 EAST} - {1413086400 -18000 1 EASST} - {1426388400 -21600 0 EAST} - {1444536000 -18000 1 EASST} - {1457838000 -21600 0 EAST} - {1475985600 -18000 1 EASST} - {1489287600 -21600 0 EAST} - {1508040000 -18000 1 EASST} - {1520737200 -21600 0 EAST} - {1539489600 -18000 1 EASST} - {1552186800 -21600 0 EAST} - {1570939200 -18000 1 EASST} - {1584241200 -21600 0 EAST} - {1602388800 -18000 1 EASST} - {1615690800 -21600 0 EAST} - {1633838400 -18000 1 EASST} - {1647140400 -21600 0 EAST} - {1665288000 -18000 1 EASST} - {1678590000 -21600 0 EAST} - {1697342400 -18000 1 EASST} - {1710039600 -21600 0 EAST} - {1728792000 -18000 1 EASST} - {1741489200 -21600 0 EAST} - {1760241600 -18000 1 EASST} - {1773543600 -21600 0 EAST} - {1791691200 -18000 1 EASST} - {1804993200 -21600 0 EAST} - {1823140800 -18000 1 EASST} - {1836442800 -21600 0 EAST} - {1855195200 -18000 1 EASST} - {1867892400 -21600 0 EAST} - {1886644800 -18000 1 EASST} - {1899342000 -21600 0 EAST} - {1918094400 -18000 1 EASST} - {1930791600 -21600 0 EAST} - {1949544000 -18000 1 EASST} - {1962846000 -21600 0 EAST} - {1980993600 -18000 1 EASST} - {1994295600 -21600 0 EAST} - {2012443200 -18000 1 EASST} - {2025745200 -21600 0 EAST} - {2044497600 -18000 1 EASST} - {2057194800 -21600 0 EAST} - {2075947200 -18000 1 EASST} - {2088644400 -21600 0 EAST} - {2107396800 -18000 1 EASST} - {2120698800 -21600 0 EAST} - {2138846400 -18000 1 EASST} - {2152148400 -21600 0 EAST} - {2170296000 -18000 1 EASST} - {2183598000 -21600 0 EAST} - {2201745600 -18000 1 EASST} - {2215047600 -21600 0 EAST} - {2233800000 -18000 1 EASST} - {2246497200 -21600 0 EAST} - {2265249600 -18000 1 EASST} - {2277946800 -21600 0 EAST} - {2296699200 -18000 1 EASST} - {2310001200 -21600 0 EAST} - {2328148800 -18000 1 EASST} - {2341450800 -21600 0 EAST} - {2359598400 -18000 1 EASST} - {2372900400 -21600 0 EAST} - {2391652800 -18000 1 EASST} - {2404350000 -21600 0 EAST} - {2423102400 -18000 1 EASST} - {2435799600 -21600 0 EAST} - {2454552000 -18000 1 EASST} - {2467854000 -21600 0 EAST} - {2486001600 -18000 1 EASST} - {2499303600 -21600 0 EAST} - {2517451200 -18000 1 EASST} - {2530753200 -21600 0 EAST} - {2548900800 -18000 1 EASST} - {2562202800 -21600 0 EAST} - {2580955200 -18000 1 EASST} - {2593652400 -21600 0 EAST} - {2612404800 -18000 1 EASST} - {2625102000 -21600 0 EAST} - {2643854400 -18000 1 EASST} - {2657156400 -21600 0 EAST} - {2675304000 -18000 1 EASST} - {2688606000 -21600 0 EAST} - {2706753600 -18000 1 EASST} - {2720055600 -21600 0 EAST} - {2738808000 -18000 1 EASST} - {2751505200 -21600 0 EAST} - {2770257600 -18000 1 EASST} - {2782954800 -21600 0 EAST} - {2801707200 -18000 1 EASST} - {2814404400 -21600 0 EAST} - {2833156800 -18000 1 EASST} - {2846458800 -21600 0 EAST} - {2864606400 -18000 1 EASST} - {2877908400 -21600 0 EAST} - {2896056000 -18000 1 EASST} - {2909358000 -21600 0 EAST} - {2928110400 -18000 1 EASST} - {2940807600 -21600 0 EAST} - {2959560000 -18000 1 EASST} - {2972257200 -21600 0 EAST} - {2991009600 -18000 1 EASST} - {3004311600 -21600 0 EAST} - {3022459200 -18000 1 EASST} - {3035761200 -21600 0 EAST} - {3053908800 -18000 1 EASST} - {3067210800 -21600 0 EAST} - {3085358400 -18000 1 EASST} - {3098660400 -21600 0 EAST} - {3117412800 -18000 1 EASST} - {3130110000 -21600 0 EAST} - {3148862400 -18000 1 EASST} - {3161559600 -21600 0 EAST} - {3180312000 -18000 1 EASST} - {3193614000 -21600 0 EAST} - {3211761600 -18000 1 EASST} - {3225063600 -21600 0 EAST} - {3243211200 -18000 1 EASST} - {3256513200 -21600 0 EAST} - {3275265600 -18000 1 EASST} - {3287962800 -21600 0 EAST} - {3306715200 -18000 1 EASST} - {3319412400 -21600 0 EAST} - {3338164800 -18000 1 EASST} - {3351466800 -21600 0 EAST} - {3369614400 -18000 1 EASST} - {3382916400 -21600 0 EAST} - {3401064000 -18000 1 EASST} - {3414366000 -21600 0 EAST} - {3432513600 -18000 1 EASST} - {3445815600 -21600 0 EAST} - {3464568000 -18000 1 EASST} - {3477265200 -21600 0 EAST} - {3496017600 -18000 1 EASST} - {3508714800 -21600 0 EAST} - {3527467200 -18000 1 EASST} - {3540769200 -21600 0 EAST} - {3558916800 -18000 1 EASST} - {3572218800 -21600 0 EAST} - {3590366400 -18000 1 EASST} - {3603668400 -21600 0 EAST} - {3622420800 -18000 1 EASST} - {3635118000 -21600 0 EAST} - {3653870400 -18000 1 EASST} - {3666567600 -21600 0 EAST} - {3685320000 -18000 1 EASST} - {3698017200 -21600 0 EAST} - {3716769600 -18000 1 EASST} - {3730071600 -21600 0 EAST} - {3748219200 -18000 1 EASST} - {3761521200 -21600 0 EAST} - {3779668800 -18000 1 EASST} - {3792970800 -21600 0 EAST} - {3811723200 -18000 1 EASST} - {3824420400 -21600 0 EAST} - {3843172800 -18000 1 EASST} - {3855870000 -21600 0 EAST} - {3874622400 -18000 1 EASST} - {3887924400 -21600 0 EAST} - {3906072000 -18000 1 EASST} - {3919374000 -21600 0 EAST} - {3937521600 -18000 1 EASST} - {3950823600 -21600 0 EAST} - {3968971200 -18000 1 EASST} - {3982273200 -21600 0 EAST} - {4001025600 -18000 1 EASST} - {4013722800 -21600 0 EAST} - {4032475200 -18000 1 EASST} - {4045172400 -21600 0 EAST} - {4063924800 -18000 1 EASST} - {4077226800 -21600 0 EAST} - {4095374400 -18000 1 EASST} + {1304823600 -21600 0 EAST} + {1313899200 -18000 1 EASST} + {1335668400 -21600 0 EAST} + {1346558400 -18000 1 EASST} + {1367118000 -21600 0 EAST} + {1378612800 -18000 1 EASST} + {1398567600 -21600 0 EAST} + {1410062400 -18000 1 EASST} + {1430017200 -21600 0 EAST} + {1441512000 -18000 1 EASST} + {1461466800 -21600 0 EAST} + {1472961600 -18000 1 EASST} + {1492916400 -21600 0 EAST} + {1504411200 -18000 1 EASST} + {1524970800 -21600 0 EAST} + {1535860800 -18000 1 EASST} + {1556420400 -21600 0 EAST} + {1567915200 -18000 1 EASST} + {1587870000 -21600 0 EAST} + {1599364800 -18000 1 EASST} + {1619319600 -21600 0 EAST} + {1630814400 -18000 1 EASST} + {1650769200 -21600 0 EAST} + {1662264000 -18000 1 EASST} + {1682218800 -21600 0 EAST} + {1693713600 -18000 1 EASST} + {1714273200 -21600 0 EAST} + {1725768000 -18000 1 EASST} + {1745722800 -21600 0 EAST} + {1757217600 -18000 1 EASST} + {1777172400 -21600 0 EAST} + {1788667200 -18000 1 EASST} + {1808622000 -21600 0 EAST} + {1820116800 -18000 1 EASST} + {1840071600 -21600 0 EAST} + {1851566400 -18000 1 EASST} + {1872126000 -21600 0 EAST} + {1883016000 -18000 1 EASST} + {1903575600 -21600 0 EAST} + {1915070400 -18000 1 EASST} + {1935025200 -21600 0 EAST} + {1946520000 -18000 1 EASST} + {1966474800 -21600 0 EAST} + {1977969600 -18000 1 EASST} + {1997924400 -21600 0 EAST} + {2009419200 -18000 1 EASST} + {2029374000 -21600 0 EAST} + {2040868800 -18000 1 EASST} + {2061428400 -21600 0 EAST} + {2072318400 -18000 1 EASST} + {2092878000 -21600 0 EAST} + {2104372800 -18000 1 EASST} + {2124327600 -21600 0 EAST} + {2135822400 -18000 1 EASST} + {2155777200 -21600 0 EAST} + {2167272000 -18000 1 EASST} + {2187226800 -21600 0 EAST} + {2198721600 -18000 1 EASST} + {2219281200 -21600 0 EAST} + {2230171200 -18000 1 EASST} + {2250730800 -21600 0 EAST} + {2262225600 -18000 1 EASST} + {2282180400 -21600 0 EAST} + {2293675200 -18000 1 EASST} + {2313630000 -21600 0 EAST} + {2325124800 -18000 1 EASST} + {2345079600 -21600 0 EAST} + {2356574400 -18000 1 EASST} + {2376529200 -21600 0 EAST} + {2388024000 -18000 1 EASST} + {2408583600 -21600 0 EAST} + {2419473600 -18000 1 EASST} + {2440033200 -21600 0 EAST} + {2451528000 -18000 1 EASST} + {2471482800 -21600 0 EAST} + {2482977600 -18000 1 EASST} + {2502932400 -21600 0 EAST} + {2514427200 -18000 1 EASST} + {2534382000 -21600 0 EAST} + {2545876800 -18000 1 EASST} + {2565831600 -21600 0 EAST} + {2577326400 -18000 1 EASST} + {2597886000 -21600 0 EAST} + {2609380800 -18000 1 EASST} + {2629335600 -21600 0 EAST} + {2640830400 -18000 1 EASST} + {2660785200 -21600 0 EAST} + {2672280000 -18000 1 EASST} + {2692234800 -21600 0 EAST} + {2703729600 -18000 1 EASST} + {2723684400 -21600 0 EAST} + {2735179200 -18000 1 EASST} + {2755738800 -21600 0 EAST} + {2766628800 -18000 1 EASST} + {2787188400 -21600 0 EAST} + {2798683200 -18000 1 EASST} + {2818638000 -21600 0 EAST} + {2830132800 -18000 1 EASST} + {2850087600 -21600 0 EAST} + {2861582400 -18000 1 EASST} + {2881537200 -21600 0 EAST} + {2893032000 -18000 1 EASST} + {2912986800 -21600 0 EAST} + {2924481600 -18000 1 EASST} + {2945041200 -21600 0 EAST} + {2955931200 -18000 1 EASST} + {2976490800 -21600 0 EAST} + {2987985600 -18000 1 EASST} + {3007940400 -21600 0 EAST} + {3019435200 -18000 1 EASST} + {3039390000 -21600 0 EAST} + {3050884800 -18000 1 EASST} + {3070839600 -21600 0 EAST} + {3082334400 -18000 1 EASST} + {3102894000 -21600 0 EAST} + {3113784000 -18000 1 EASST} + {3134343600 -21600 0 EAST} + {3145838400 -18000 1 EASST} + {3165793200 -21600 0 EAST} + {3177288000 -18000 1 EASST} + {3197242800 -21600 0 EAST} + {3208737600 -18000 1 EASST} + {3228692400 -21600 0 EAST} + {3240187200 -18000 1 EASST} + {3260142000 -21600 0 EAST} + {3271636800 -18000 1 EASST} + {3292196400 -21600 0 EAST} + {3303086400 -18000 1 EASST} + {3323646000 -21600 0 EAST} + {3335140800 -18000 1 EASST} + {3355095600 -21600 0 EAST} + {3366590400 -18000 1 EASST} + {3386545200 -21600 0 EAST} + {3398040000 -18000 1 EASST} + {3417994800 -21600 0 EAST} + {3429489600 -18000 1 EASST} + {3449444400 -21600 0 EAST} + {3460939200 -18000 1 EASST} + {3481498800 -21600 0 EAST} + {3492993600 -18000 1 EASST} + {3512948400 -21600 0 EAST} + {3524443200 -18000 1 EASST} + {3544398000 -21600 0 EAST} + {3555892800 -18000 1 EASST} + {3575847600 -21600 0 EAST} + {3587342400 -18000 1 EASST} + {3607297200 -21600 0 EAST} + {3618792000 -18000 1 EASST} + {3639351600 -21600 0 EAST} + {3650241600 -18000 1 EASST} + {3670801200 -21600 0 EAST} + {3682296000 -18000 1 EASST} + {3702250800 -21600 0 EAST} + {3713745600 -18000 1 EASST} + {3733700400 -21600 0 EAST} + {3745195200 -18000 1 EASST} + {3765150000 -21600 0 EAST} + {3776644800 -18000 1 EASST} + {3796599600 -21600 0 EAST} + {3808094400 -18000 1 EASST} + {3828654000 -21600 0 EAST} + {3839544000 -18000 1 EASST} + {3860103600 -21600 0 EAST} + {3871598400 -18000 1 EASST} + {3891553200 -21600 0 EAST} + {3903048000 -18000 1 EASST} + {3923002800 -21600 0 EAST} + {3934497600 -18000 1 EASST} + {3954452400 -21600 0 EAST} + {3965947200 -18000 1 EASST} + {3986506800 -21600 0 EAST} + {3997396800 -18000 1 EASST} + {4017956400 -21600 0 EAST} + {4029451200 -18000 1 EASST} + {4049406000 -21600 0 EAST} + {4060900800 -18000 1 EASST} + {4080855600 -21600 0 EAST} + {4092350400 -18000 1 EASST} } diff --git a/library/tzdata/Pacific/Fakaofo b/library/tzdata/Pacific/Fakaofo index 7420639..6ec98eb 100644 --- a/library/tzdata/Pacific/Fakaofo +++ b/library/tzdata/Pacific/Fakaofo @@ -2,5 +2,6 @@ set TZData(:Pacific/Fakaofo) { {-9223372036854775808 -41096 0 LMT} - {-2177411704 -36000 0 TKT} + {-2177411704 -39600 0 TKT} + {1325242800 46800 0 TKT} } diff --git a/library/tzdata/Pacific/Fiji b/library/tzdata/Pacific/Fiji index 2194d59..454ee87 100644 --- a/library/tzdata/Pacific/Fiji +++ b/library/tzdata/Pacific/Fiji @@ -1,10 +1,191 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Pacific/Fiji) { - {-9223372036854775808 42820 0 LMT} - {-1709985220 43200 0 FJT} + {-9223372036854775808 42944 0 LMT} + {-1709985344 43200 0 FJT} {909842400 46800 1 FJST} {920124000 43200 0 FJT} {941896800 46800 1 FJST} {951573600 43200 0 FJT} + {1259416800 46800 1 FJST} + {1269698400 43200 0 FJT} + {1287842400 46800 1 FJST} + {1299333600 43200 0 FJT} + {1319292000 46800 1 FJST} + {1327154400 43200 0 FJT} + {1350741600 46800 1 FJST} + {1358604000 43200 0 FJT} + {1382796000 46800 1 FJST} + {1390053600 43200 0 FJT} + {1414245600 46800 1 FJST} + {1421503200 43200 0 FJT} + {1445695200 46800 1 FJST} + {1453557600 43200 0 FJT} + {1477144800 46800 1 FJST} + {1485007200 43200 0 FJT} + {1508594400 46800 1 FJST} + {1516456800 43200 0 FJT} + {1540044000 46800 1 FJST} + {1547906400 43200 0 FJT} + {1572098400 46800 1 FJST} + {1579356000 43200 0 FJT} + {1603548000 46800 1 FJST} + {1611410400 43200 0 FJT} + {1634997600 46800 1 FJST} + {1642860000 43200 0 FJT} + {1666447200 46800 1 FJST} + {1674309600 43200 0 FJT} + {1697896800 46800 1 FJST} + {1705759200 43200 0 FJT} + {1729951200 46800 1 FJST} + {1737208800 43200 0 FJT} + {1761400800 46800 1 FJST} + {1768658400 43200 0 FJT} + {1792850400 46800 1 FJST} + {1800712800 43200 0 FJT} + {1824300000 46800 1 FJST} + {1832162400 43200 0 FJT} + {1855749600 46800 1 FJST} + {1863612000 43200 0 FJT} + {1887199200 46800 1 FJST} + {1895061600 43200 0 FJT} + {1919253600 46800 1 FJST} + {1926511200 43200 0 FJT} + {1950703200 46800 1 FJST} + {1957960800 43200 0 FJT} + {1982152800 46800 1 FJST} + {1990015200 43200 0 FJT} + {2013602400 46800 1 FJST} + {2021464800 43200 0 FJT} + {2045052000 46800 1 FJST} + {2052914400 43200 0 FJT} + {2076501600 46800 1 FJST} + {2084364000 43200 0 FJT} + {2108556000 46800 1 FJST} + {2115813600 43200 0 FJT} + {2140005600 46800 1 FJST} + {2147868000 43200 0 FJT} + {2171455200 46800 1 FJST} + {2179317600 43200 0 FJT} + {2202904800 46800 1 FJST} + {2210767200 43200 0 FJT} + {2234354400 46800 1 FJST} + {2242216800 43200 0 FJT} + {2266408800 46800 1 FJST} + {2273666400 43200 0 FJT} + {2297858400 46800 1 FJST} + {2305116000 43200 0 FJT} + {2329308000 46800 1 FJST} + {2337170400 43200 0 FJT} + {2360757600 46800 1 FJST} + {2368620000 43200 0 FJT} + {2392207200 46800 1 FJST} + {2400069600 43200 0 FJT} + {2423656800 46800 1 FJST} + {2431519200 43200 0 FJT} + {2455711200 46800 1 FJST} + {2462968800 43200 0 FJT} + {2487160800 46800 1 FJST} + {2495023200 43200 0 FJT} + {2518610400 46800 1 FJST} + {2526472800 43200 0 FJT} + {2550060000 46800 1 FJST} + {2557922400 43200 0 FJT} + {2581509600 46800 1 FJST} + {2589372000 43200 0 FJT} + {2613564000 46800 1 FJST} + {2620821600 43200 0 FJT} + {2645013600 46800 1 FJST} + {2652271200 43200 0 FJT} + {2676463200 46800 1 FJST} + {2684325600 43200 0 FJT} + {2707912800 46800 1 FJST} + {2715775200 43200 0 FJT} + {2739362400 46800 1 FJST} + {2747224800 43200 0 FJT} + {2770812000 46800 1 FJST} + {2778674400 43200 0 FJT} + {2802866400 46800 1 FJST} + {2810124000 43200 0 FJT} + {2834316000 46800 1 FJST} + {2841573600 43200 0 FJT} + {2865765600 46800 1 FJST} + {2873628000 43200 0 FJT} + {2897215200 46800 1 FJST} + {2905077600 43200 0 FJT} + {2928664800 46800 1 FJST} + {2936527200 43200 0 FJT} + {2960114400 46800 1 FJST} + {2967976800 43200 0 FJT} + {2992168800 46800 1 FJST} + {2999426400 43200 0 FJT} + {3023618400 46800 1 FJST} + {3031480800 43200 0 FJT} + {3055068000 46800 1 FJST} + {3062930400 43200 0 FJT} + {3086517600 46800 1 FJST} + {3094380000 43200 0 FJT} + {3117967200 46800 1 FJST} + {3125829600 43200 0 FJT} + {3150021600 46800 1 FJST} + {3157279200 43200 0 FJT} + {3181471200 46800 1 FJST} + {3188728800 43200 0 FJT} + {3212920800 46800 1 FJST} + {3220783200 43200 0 FJT} + {3244370400 46800 1 FJST} + {3252232800 43200 0 FJT} + {3275820000 46800 1 FJST} + {3283682400 43200 0 FJT} + {3307269600 46800 1 FJST} + {3315132000 43200 0 FJT} + {3339324000 46800 1 FJST} + {3346581600 43200 0 FJT} + {3370773600 46800 1 FJST} + {3378636000 43200 0 FJT} + {3402223200 46800 1 FJST} + {3410085600 43200 0 FJT} + {3433672800 46800 1 FJST} + {3441535200 43200 0 FJT} + {3465122400 46800 1 FJST} + {3472984800 43200 0 FJT} + {3497176800 46800 1 FJST} + {3504434400 43200 0 FJT} + {3528626400 46800 1 FJST} + {3535884000 43200 0 FJT} + {3560076000 46800 1 FJST} + {3567938400 43200 0 FJT} + {3591525600 46800 1 FJST} + {3599388000 43200 0 FJT} + {3622975200 46800 1 FJST} + {3630837600 43200 0 FJT} + {3654424800 46800 1 FJST} + {3662287200 43200 0 FJT} + {3686479200 46800 1 FJST} + {3693736800 43200 0 FJT} + {3717928800 46800 1 FJST} + {3725186400 43200 0 FJT} + {3749378400 46800 1 FJST} + {3757240800 43200 0 FJT} + {3780828000 46800 1 FJST} + {3788690400 43200 0 FJT} + {3812277600 46800 1 FJST} + {3820140000 43200 0 FJT} + {3843727200 46800 1 FJST} + {3851589600 43200 0 FJT} + {3875781600 46800 1 FJST} + {3883039200 43200 0 FJT} + {3907231200 46800 1 FJST} + {3915093600 43200 0 FJT} + {3938680800 46800 1 FJST} + {3946543200 43200 0 FJT} + {3970130400 46800 1 FJST} + {3977992800 43200 0 FJT} + {4001580000 46800 1 FJST} + {4009442400 43200 0 FJT} + {4033634400 46800 1 FJST} + {4040892000 43200 0 FJT} + {4065084000 46800 1 FJST} + {4072341600 43200 0 FJT} + {4096533600 46800 1 FJST} } diff --git a/library/tzdata/Pacific/Honolulu b/library/tzdata/Pacific/Honolulu index f441a02..5e70598 100644 --- a/library/tzdata/Pacific/Honolulu +++ b/library/tzdata/Pacific/Honolulu @@ -2,11 +2,10 @@ set TZData(:Pacific/Honolulu) { {-9223372036854775808 -37886 0 LMT} - {-2208907714 -37800 0 HST} + {-2334101314 -37800 0 HST} {-1157283000 -34200 1 HDT} - {-1155472200 -34200 0 HST} - {-880201800 -34200 1 HWT} - {-769395600 -34200 1 HPT} + {-1155436200 -37800 0 HST} + {-880198200 -34200 1 HDT} {-765376200 -37800 0 HST} {-712150200 -36000 0 HST} } diff --git a/library/tzdata/Pacific/Johnston b/library/tzdata/Pacific/Johnston index 7f9fee4..21ab39a 100644 --- a/library/tzdata/Pacific/Johnston +++ b/library/tzdata/Pacific/Johnston @@ -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) diff --git a/library/tzdata/Pacific/Pohnpei b/library/tzdata/Pacific/Pohnpei new file mode 100644 index 0000000..58978da --- /dev/null +++ b/library/tzdata/Pacific/Pohnpei @@ -0,0 +1,6 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Pacific/Pohnpei) { + {-9223372036854775808 37972 0 LMT} + {-2177490772 39600 0 PONT} +} diff --git a/library/tzdata/Pacific/Ponape b/library/tzdata/Pacific/Ponape index 092b0a9..89644f7 100644 --- a/library/tzdata/Pacific/Ponape +++ b/library/tzdata/Pacific/Ponape @@ -1,6 +1,5 @@ # created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Ponape) { - {-9223372036854775808 37972 0 LMT} - {-2177490772 39600 0 PONT} +if {![info exists TZData(Pacific/Pohnpei)]} { + LoadTimeZoneFile Pacific/Pohnpei } +set TZData(:Pacific/Ponape) $TZData(:Pacific/Pohnpei) diff --git a/library/tzdata/Pacific/Truk b/library/tzdata/Pacific/Truk index c152198..c9b1894 100644 --- a/library/tzdata/Pacific/Truk +++ b/library/tzdata/Pacific/Truk @@ -1,6 +1,5 @@ # created by tools/tclZIC.tcl - do not edit - -set TZData(:Pacific/Truk) { - {-9223372036854775808 36428 0 LMT} - {-2177489228 36000 0 TRUT} +if {![info exists TZData(Pacific/Chuuk)]} { + LoadTimeZoneFile Pacific/Chuuk } +set TZData(:Pacific/Truk) $TZData(:Pacific/Chuuk) diff --git a/library/tzdata/Pacific/Yap b/library/tzdata/Pacific/Yap index a97a195..4931030 100644 --- a/library/tzdata/Pacific/Yap +++ b/library/tzdata/Pacific/Yap @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Pacific/Truk)]} { - LoadTimeZoneFile Pacific/Truk +if {![info exists TZData(Pacific/Chuuk)]} { + LoadTimeZoneFile Pacific/Chuuk } -set TZData(:Pacific/Yap) $TZData(:Pacific/Truk) +set TZData(:Pacific/Yap) $TZData(:Pacific/Chuuk) diff --git a/library/word.tcl b/library/word.tcl index b8f7f7d..b8f34a5 100644 --- a/library/word.tcl +++ b/library/word.tcl @@ -7,10 +7,8 @@ # Copyright (c) 1996 by Sun Microsystems, Inc. # Copyright (c) 1998 by Scritpics Corporation. # -# See the file "license.terms" for information on usage and redistribution of -# this file, and for a DISCLAIMER OF ALL WARRANTIES. -# -# RCS: @(#) $Id: word.tcl,v 1.10 2007/12/13 15:26:03 dgp Exp $ +# See the file "license.terms" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. # The following variables are used to determine which characters are # interpreted as white space. @@ -69,7 +67,7 @@ namespace eval ::tcl { proc tcl_wordBreakAfter {str start} { variable ::tcl::WordBreakRE set result {-1 -1} - regexp -indices -start $start $WordBreakRE(after) $str result + regexp -indices -start $start -- $WordBreakRE(after) $str result return [lindex $result 1] } @@ -87,7 +85,7 @@ proc tcl_wordBreakAfter {str start} { proc tcl_wordBreakBefore {str start} { variable ::tcl::WordBreakRE set result {-1 -1} - regexp -indices $WordBreakRE(before) [string range $str 0 $start] result + regexp -indices -- $WordBreakRE(before) [string range $str 0 $start] result return [lindex $result 1] } @@ -106,7 +104,7 @@ proc tcl_wordBreakBefore {str start} { proc tcl_endOfWord {str start} { variable ::tcl::WordBreakRE set result {-1 -1} - regexp -indices -start $start $WordBreakRE(end) $str result + regexp -indices -start $start -- $WordBreakRE(end) $str result return [lindex $result 1] } @@ -124,7 +122,7 @@ proc tcl_endOfWord {str start} { proc tcl_startOfNextWord {str start} { variable ::tcl::WordBreakRE set result {-1 -1} - regexp -indices -start $start $WordBreakRE(next) $str result + regexp -indices -start $start -- $WordBreakRE(next) $str result return [lindex $result 1] } @@ -140,7 +138,7 @@ proc tcl_startOfNextWord {str start} { proc tcl_startOfPreviousWord {str start} { variable ::tcl::WordBreakRE set word {-1 -1} - regexp -indices $WordBreakRE(previous) [string range $str 0 $start-1] \ + regexp -indices -- $WordBreakRE(previous) [string range $str 0 $start-1] \ result word return [lindex $word 0] } |