diff options
Diffstat (limited to 'library')
128 files changed, 5404 insertions, 6598 deletions
diff --git a/library/auto.tcl b/library/auto.tcl index 97ea8af..ec680de 100644 --- a/library/auto.tcl +++ b/library/auto.tcl @@ -1,20 +1,20 @@ # auto.tcl -- # -# utility procs formerly in init.tcl dealing with auto execution of commands -# and can be auto loaded themselves. +# 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: # None. @@ -24,25 +24,25 @@ proc auto_reset {} { 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]] - } elseif {[info library] ni $auto_path} { - lappend auto_path [info library] + } else { + if {[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") @@ -64,21 +64,24 @@ 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. - catch { - lappend dirs [::${basename}::pkgconfig get scriptdir,runtime] + if {[catch { + ::${basename}::pkgconfig get scriptdir,runtime + } value] == 0} { + lappend dirs $value } # 3. Relative to auto_path directories. This checks relative to the @@ -98,8 +101,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 @@ -122,30 +125,34 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} { # uniquify $dirs in order array set seen {} foreach i $dirs { - # Make sure $i is unique under normalization. Avoid repeated [source]. + # 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]} { - # Safe interps have no [file normalize]. 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 + foreach i $dirs { 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 @@ -160,28 +167,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: # 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]} { @@ -190,6 +197,7 @@ 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" @@ -198,18 +206,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]} { + if {[llength $args] == 0} { set args *.tcl } auto_mkindex_parser::init foreach file [glob -- {*}$args] { - try { - append index [auto_mkindex_parser::mkindex $file] - } on error {msg opts} { - cd $oldDir + if {[catch {auto_mkindex_parser::mkindex $file} msg opts] == 0} { + append index $msg + } else { + cd $oldDir return -options $opts $msg - } + } } auto_mkindex_parser::cleanup @@ -219,8 +227,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] @@ -233,7 +241,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]} { + if {[llength $args] == 0} { set args *.tcl } foreach file [glob -- {*}$args] { @@ -271,9 +279,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 @@ -298,14 +306,7 @@ namespace eval auto_mkindex_parser { $parser hide namespace $parser hide eval $parser hide puts - 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 namespace delete :: $parser invokehidden proc unknown {args} {} # We'll need access to the "namespace" command within the @@ -332,10 +333,10 @@ 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: # file Name of Tcl source file to be indexed. @@ -353,13 +354,14 @@ 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 "" @@ -376,10 +378,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 @@ -389,30 +391,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. @@ -425,8 +427,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. @@ -445,23 +447,25 @@ 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" @@ -473,14 +477,15 @@ 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. @@ -503,65 +508,44 @@ 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} { - indexEntry $name + 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" } -# 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 { - try { - package require tbcload - } on error {} { - # OK, don't have it so do nothing - } on ok {} { + if {![catch {package require tbcload}]} { if {[namespace which -command tbcload::bcproc] eq ""} { auto_load tbcload::bcproc } @@ -572,21 +556,29 @@ auto_mkindex_parser::hook { # procedure name. auto_mkindex_parser::commandInit tbcload::bcproc {name args} { - indexEntry $name + 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" } } } # 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 { @@ -616,13 +608,6 @@ auto_mkindex_parser::command namespace {op args} { 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 {} {}] } @@ -630,17 +615,4 @@ auto_mkindex_parser::command namespace {op args} { } } -# 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 - } -} - return diff --git a/library/clock.tcl b/library/clock.tcl index 535a67d..eb87251 100755..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. # # #---------------------------------------------------------------------- @@ -15,11 +15,11 @@ # #---------------------------------------------------------------------- -# 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.6 + package require msgcat 1.4 if { $::tcl_platform(platform) eq {windows} } { if { [catch { package require registry 1.1 }] } { namespace eval ::tcl::clock [list variable NoRegistry {}] @@ -27,8 +27,9 @@ 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]]] @@ -39,8 +40,8 @@ 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. # #---------------------------------------------------------------------- @@ -60,8 +61,6 @@ namespace eval ::tcl::clock { namespace import ::msgcat::mcload namespace import ::msgcat::mclocale - namespace import ::msgcat::mc - namespace import ::msgcat::mcpackagelocale } @@ -77,11 +76,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. # #---------------------------------------------------------------------- @@ -108,11 +107,6 @@ proc ::tcl::clock::Initialize {} { } InitTZData - mcpackagelocale set {} - ::msgcat::mcpackageconfig set mcfolder [file join $LibDir msgs] - ::msgcat::mcpackageconfig set unknowncmd "" - ::msgcat::mcpackageconfig set changecmd ChangeCurrentLocale - # Define the message catalog for the root locale. ::msgcat::mcmset {} { @@ -178,8 +172,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 @@ -200,8 +194,8 @@ proc ::tcl::clock::Initialize {} { ::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 @@ -223,8 +217,8 @@ 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 @@ -238,8 +232,8 @@ proc ::tcl::clock::Initialize {} { # #------------------------------------------------------------------ - # 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 { @@ -256,6 +250,7 @@ proc ::tcl::clock::Initialize {} { # Define the directories for time zone data and message catalogs. variable DataDir [file join $LibDir tzdata] + variable MsgDir [file join $LibDir msgs] # Number of days in the months, in common years and leap years. @@ -287,10 +282,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: @@ -301,10 +296,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 @@ -383,10 +378,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 { @@ -490,8 +485,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 { @@ -629,6 +624,11 @@ proc ::tcl::clock::Initialize {} { # in the given locales and dictionaries # mapping the numerals to their numeric # values. + variable McLoaded {}; # Dictionary whose keys are locales + # in which [mcload] has been executed + # and whose values are second-level + # dictionaries indexed by message + # name and giving message text. # variable CachedSystemTimeZone; # If 'CachedSystemTimeZone' exists, # it contains the value of the # system time zone, as determined from @@ -652,10 +652,11 @@ 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. # #---------------------------------------------------------------------- @@ -680,9 +681,9 @@ proc ::tcl::clock::format { args } { } } - # 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] @@ -720,19 +721,38 @@ proc ::tcl::clock::ParseClockFormatFormat {procName format locale} { # Map away the locale-dependent composite format groups - EnterLocale $locale + EnterLocale $locale oldLocale # Change locale if a fresh locale has been given on the command line. - try { - return [ParseClockFormatFormat2 $format $locale $procName] - } trap CLOCK {result opts} { - dict unset opts -errorinfo - return -options $opts $result + 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 + + if { $status == 1 } { + if { [lindex [dict get $opts -errorcode] 0] eq {clock} } { + return -code error $result + } else { + return -options $opts $result + } + } else { + return $result + } + } proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} { + set didLocaleEra 0 set didLocaleNumerals 0 set preFormatCode \ @@ -1171,10 +1191,11 @@ 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. # #---------------------------------------------------------------------- @@ -1226,8 +1247,8 @@ proc ::tcl::clock::scan { args } { } default { return -code error \ - -errorcode [list CLOCK badOption $flag] \ - "bad option \"$flag\",\ + -errorcode [list CLOCK badSwitch $flag] \ + "bad switch \"$flag\",\ must be -base, -format, -gmt, -locale or -timezone" } } @@ -1241,17 +1262,21 @@ 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 -strict $gmt] } { - return -code error "expected boolean value but got \"$gmt\"" - } elseif { $gmt } { - set timezone :GMT + if { ![string is boolean $gmt] } { + return -code error \ + "expected boolean value but got \"$gmt\"" + } else { + if { $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] \ @@ -1263,18 +1288,33 @@ proc ::tcl::clock::scan { args } { # Change locale if a fresh locale has been given on the command line. - EnterLocale $locale + EnterLocale $locale oldLocale + + set status [catch { - try { # Map away the locale-dependent composite format groups set scanner [ParseClockScanFormat $format $locale] - return [$scanner $string $base $timezone] - } trap CLOCK {result opts} { - # Conceal location of generation of expected errors - dict unset opts -errorinfo - return -options $opts $result + $scanner $string $base $timezone + + } result opts] + + # Restore the locale + + if { [info exists oldLocale] } { + mclocale $oldLocale + } + + if { $status == 1 } { + if { [lindex [dict get $opts -errorcode] 0] eq {clock} } { + return -code error $result + } else { + return -options $opts $result + } + } else { + return $result } + } #---------------------------------------------------------------------- @@ -1290,8 +1330,8 @@ 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 # #---------------------------------------------------------------------- @@ -1301,40 +1341,41 @@ proc ::tcl::clock::FreeScan { string base timezone locale } { # Get the data for time changes in the given zone - try { - SetupTimeZone $timezone - } on error {retval opts} { + if {[catch {SetupTimeZone $timezone} 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 + # 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 - }] + set date [GetDateFields \ + $base \ + $TZData($timezone) \ + 2361222] + dict set date secondOfDay [expr { [dict get $date localSeconds] + % 86400 }] - # 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" + # Parse the date. The parser will return a list comprising + # date, time, time zone, relative month/day/seconds, relative + # weekday, ordinal month. + + 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\": $result" } - # 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. + 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 { [llength $parseDate] > 0 } { lassign $parseDate y m d @@ -1354,11 +1395,11 @@ 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 @@ -1381,11 +1422,10 @@ proc ::tcl::clock::FreeScan { string base timezone locale } { 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] @@ -1402,12 +1442,13 @@ proc ::tcl::clock::FreeScan { string base timezone locale } { # Do relative weekday 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 @@ -1415,11 +1456,10 @@ 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] @@ -1430,6 +1470,7 @@ proc ::tcl::clock::FreeScan { string base timezone locale } { # Do relative month if { [llength $parseOrdinalMonth] > 0 } { + lassign $parseOrdinalMonth monthOrdinal monthNumber if { $monthOrdinal > 0 } { set monthDiff [expr { $monthNumber - [dict get $date month] }] @@ -1446,6 +1487,7 @@ proc ::tcl::clock::FreeScan { string base timezone locale } { } set seconds [add $seconds $monthOrdinal years $monthDiff months \ -timezone $timezone -locale $locale] + } return $seconds @@ -1463,27 +1505,30 @@ 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] @@ -1527,8 +1572,8 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { append re {[[:space:]]+} } else { if { ! [string is alnum $c] } { - append re "\\" - } + append re \\ + } append re $c } } @@ -1645,7 +1690,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 \[" \ @@ -1688,9 +1733,10 @@ 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 } \[ \ @@ -1723,9 +1769,10 @@ 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 @@ -1947,11 +1994,10 @@ 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. + # Get time zone if needed if { ![dict exists $fieldSet seconds] - && ![dict exists $fieldSet starDate] } { + && ![dict exists $fieldSet starDate] } { if { [dict exists $fieldSet tzName] } { append procBody { set timeZone [dict get $date tzName] @@ -1970,9 +2016,7 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { append procBody [MakeParseCodeFromFields $fieldSet $TimeParseActions] - # 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 + # Assemble seconds, and convert local nominal time to UTC. if { ![dict exists $fieldSet seconds] && ![dict exists $fieldSet starDate] } { @@ -1981,18 +2025,15 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { 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] }] } - - # Finally, convert the date to local time - append procBody { set date [::tcl::clock::ConvertLocalToUTC $date[set date {}] \ - $TZData($timeZone) $changeover] + $TZData($timeZone) \ + $changeover] } } @@ -2011,14 +2052,15 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { # # 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. @@ -2026,6 +2068,7 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} { #---------------------------------------------------------------------- proc ::tcl::clock::LocaleNumeralMatcher {l} { + variable LocaleNumeralCache if { ![dict exists $LocaleNumeralCache $l] } { @@ -2051,9 +2094,9 @@ proc ::tcl::clock::LocaleNumeralMatcher {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. @@ -2061,10 +2104,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. @@ -2072,10 +2115,11 @@ 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 {} {}] @@ -2083,6 +2127,7 @@ proc ::tcl::clock::UniquePrefixRegexp { data } { # Walk the key-value pairs foreach { key value } $data { + # Construct all prefixes of the key; set prefix {} @@ -2101,8 +2146,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 { @@ -2125,8 +2170,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 @@ -2138,8 +2183,8 @@ 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. @@ -2157,15 +2202,13 @@ 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 - } then { + if { [dict exists $uniquePrefixMapping $prefixString] + || [llength $schars] > 1 } { append re "(?:" } @@ -2187,7 +2230,7 @@ proc ::tcl::clock::MakeUniquePrefixRegexp { successors if { [dict exists $uniquePrefixMapping $prefixString] } { append re ")?" - } elseif { [llength $schars] > 1 } { + } elseif { [llength $schars] > 1 } { append re ")" } @@ -2198,8 +2241,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, @@ -2210,8 +2253,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. @@ -2227,15 +2270,16 @@ 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 @@ -2258,11 +2302,9 @@ 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 - } then { + if { ![string is integer $newPos] + || ![string is integer $currPos] + || $newPos > $currPos } { break } if { $newPos < $currPos } { @@ -2280,9 +2322,11 @@ proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } { set currPrio $prio set currFieldPos $fPos set currCodeBurst $parseAction + } return $currCodeBurst + } #---------------------------------------------------------------------- @@ -2293,52 +2337,78 @@ proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } { # # Parameters: # locale -- Desired locale +# oldLocaleVar -- Name of a variable in caller's scope that +# tracks the previous locale name. # # Results: # Returns the locale that was previously current. # # Side effects: -# Does [mclocale]. If necessary, loades the designated locale's files. +# 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 } { +proc ::tcl::clock::EnterLocale { locale oldLocaleVar } { + + upvar 1 $oldLocaleVar oldLocale + + variable MsgDir + variable McLoaded + + 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 - mcpackagelocale set [mclocale] + # 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 [mclocale]_windows - if { ! [mcpackagelocale present $locale] } { + set locale ${oldLocale}_windows + if { ![dict exists $McLoaded $locale] } { LoadWindowsDateTimeFormats $locale + dict set McLoaded $locale {} } } } if { $locale eq {current}} { - set locale [mclocale] + set locale $oldLocale + unset oldLocale + } elseif { $locale eq $oldLocale } { + unset oldLocale + } else { + mclocale $locale } - # Eventually load the locale - mcpackagelocale set $locale + if { ![dict exists $McLoaded $locale] } { + 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 @@ -2350,12 +2420,14 @@ proc ::tcl::clock::EnterLocale { locale } { # 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 @@ -2472,8 +2544,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. @@ -2482,12 +2554,13 @@ proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } { proc ::tcl::clock::LocalizeFormat { locale format } { - # message catalog key to cache this format - set key FORMAT_$format + variable McLoaded - if { [::msgcat::mcexists -exactlocale -exactnamespace $key] } { - return [mc $key] + if { [dict exists $McLoaded $locale FORMAT $format] } { + return [dict get $McLoaded $locale FORMAT $format] } + set inFormat $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 @@ -2510,7 +2583,7 @@ proc ::tcl::clock::LocalizeFormat { locale format } { lappend list %Ec [string map $list [mc LOCALE_DATE_TIME_FORMAT]] set format [string map $list $format] - ::msgcat::mcset $locale $key $format + dict set McLoaded $locale FORMAT $inFormat $format return $format } @@ -2532,6 +2605,7 @@ proc ::tcl::clock::LocalizeFormat { locale format } { #---------------------------------------------------------------------- proc ::tcl::clock::FormatNumericTimeZone { z } { + if { $z < 0 } { set z [expr { - $z }] set retval - @@ -2546,6 +2620,7 @@ proc ::tcl::clock::FormatNumericTimeZone { z } { append retval [::format %02d $z] } return $retval + } #---------------------------------------------------------------------- @@ -2570,6 +2645,7 @@ proc ::tcl::clock::FormatNumericTimeZone { z } { #---------------------------------------------------------------------- proc ::tcl::clock::FormatStarDate { date } { + variable Roddenberry # Get day of year, zero based @@ -2620,6 +2696,7 @@ proc ::tcl::clock::FormatStarDate { date } { #---------------------------------------------------------------------- proc ::tcl::clock::ParseStarDate { year fractYear fractDay } { + variable Roddenberry # Build a tentative date from year and fraction. @@ -2635,8 +2712,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 \ @@ -2649,11 +2726,10 @@ 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 }] + } #---------------------------------------------------------------------- @@ -2666,8 +2742,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. # #---------------------------------------------------------------------- @@ -2688,8 +2764,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. @@ -2706,17 +2782,18 @@ 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 { twoDigitField yearOfCentury } { fourDigitField year } } { + set yr [dict get $date $twoDigitField] if { $yr <= 37 } { dict set date $fourDigitField [expr { $yr + 2000 }] @@ -2724,6 +2801,7 @@ proc ::tcl::clock::InterpretTwoDigitYear { date baseTime dict set date $fourDigitField [expr { $yr + 1900 }] } return $date + } #---------------------------------------------------------------------- @@ -2749,6 +2827,7 @@ 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 @@ -2762,6 +2841,7 @@ proc ::tcl::clock::AssignBaseYear { date baseTime timezone changeover } { dict set date year [dict get $date2 year] return $date + } #---------------------------------------------------------------------- @@ -2788,6 +2868,7 @@ 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 @@ -2824,6 +2905,7 @@ 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 @@ -2833,6 +2915,7 @@ 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 + } #---------------------------------------------------------------------- @@ -2858,6 +2941,7 @@ 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 @@ -2894,6 +2978,7 @@ 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 @@ -2923,6 +3008,7 @@ 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 @@ -2932,6 +3018,7 @@ proc ::tcl::clock::InterpretHMSP { date } { } dict set date hour $hr return [InterpretHMS $date[set date {}]] + } #---------------------------------------------------------------------- @@ -2954,11 +3041,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] }] + } #---------------------------------------------------------------------- @@ -2981,6 +3068,7 @@ proc ::tcl::clock::InterpretHMS { date } { #---------------------------------------------------------------------- proc ::tcl::clock::GetSystemTimeZone {} { + variable CachedSystemTimeZone variable TimeZoneBad @@ -3013,69 +3101,76 @@ 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] - } then { + } elseif { [regexp {^([-+])(\d\d)(?::?(\d\d)(?::?(\d\d))?)?} $timezone \ + -> s hh mm ss] } { + # Make a fixed offset ::scan $hh %d hh @@ -3096,20 +3191,24 @@ 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 { [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] } { @@ -3122,8 +3221,9 @@ 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] } { @@ -3147,22 +3247,25 @@ 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 @@ -3193,14 +3296,16 @@ 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] @@ -3248,11 +3353,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] \ @@ -3261,11 +3366,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] \ @@ -3276,6 +3381,7 @@ proc ::tcl::clock::GuessWindowsTimeZone {} { } return [dict get $WinZoneInfo $data] + } #---------------------------------------------------------------------- @@ -3304,18 +3410,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" } - try { + if { [catch { source -encoding utf-8 [file join $DataDir $fileName] - } on error {} { + }] } { return -code error \ -errorcode [list CLOCK badTimeZone :$fileName] \ "time zone \":$fileName\" not found" @@ -3333,8 +3439,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 @@ -3342,11 +3448,12 @@ 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 \ @@ -3375,14 +3482,15 @@ 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 @@ -3401,8 +3509,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 @@ -3420,19 +3528,18 @@ 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}} { @@ -3456,9 +3563,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 @@ -3466,10 +3573,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} @@ -3499,8 +3606,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}} { @@ -3533,8 +3640,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. @@ -3591,12 +3698,13 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} { # 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 @@ -3688,21 +3796,27 @@ 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' @@ -3716,6 +3830,7 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } { #---------------------------------------------------------------------- proc ::tcl::clock::ProcessPosixTimeZone { z } { + variable MINWIDE variable TZData @@ -3741,9 +3856,9 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { } 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 @@ -3777,9 +3892,9 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { } 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 @@ -3788,10 +3903,8 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } { # 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 { [dict get $z startDayOfYear] eq {} + && [dict get $z startMonth] eq {} } { if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} { # EU dict set z startWeekOfMonth 5 @@ -3810,10 +3923,8 @@ 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 {} - } then { + if { [dict get $z endDayOfYear] eq {} + && [dict get $z endMonth] eq {} } { if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} { # EU dict set z endMonth 10 @@ -3853,14 +3964,15 @@ 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. @@ -3870,8 +3982,8 @@ 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. # #---------------------------------------------------------------------- @@ -3895,6 +4007,7 @@ proc ::tcl::clock::DeterminePosixDSTTime { z bound y } { 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] @@ -3909,9 +4022,8 @@ 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 {} } { @@ -3933,6 +4045,7 @@ proc ::tcl::clock::DeterminePosixDSTTime { z bound y } { } set tod [expr { ( $h * 60 + $m ) * 60 + $s }] return [expr { $seconds + $tod }] + } #---------------------------------------------------------------------- @@ -3950,26 +4063,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 + } #---------------------------------------------------------------------- @@ -3987,9 +4100,10 @@ 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. @@ -4000,6 +4114,7 @@ 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] { @@ -4015,25 +4130,21 @@ 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 @@ -4044,8 +4155,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' @@ -4064,9 +4175,10 @@ 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] @@ -4082,6 +4194,7 @@ proc ::tcl::clock::GetJulianDayFromEraYearMonthWeekDay {date changeover} { [dict get $date2 julianDay]] dict set date julianDay [expr { $wd0 + 7 * $week }] return $date + } #---------------------------------------------------------------------- @@ -4104,6 +4217,7 @@ proc ::tcl::clock::GetJulianDayFromEraYearMonthWeekDay {date changeover} { #---------------------------------------------------------------------- proc ::tcl::clock::IsGregorianLeapYear { date } { + switch -exact -- [dict get $date era] { BCE { set year [expr { 1 - [dict get $date year]}] @@ -4123,14 +4237,15 @@ 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 @@ -4145,16 +4260,18 @@ 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 @@ -4162,8 +4279,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. @@ -4171,6 +4288,7 @@ proc ::tcl::clock::WeekdayOnOrBefore { weekday j } { #---------------------------------------------------------------------- proc ::tcl::clock::BSearch { list key } { + if {[llength $list] == 0} { return -1 } @@ -4182,12 +4300,13 @@ 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] } { @@ -4231,14 +4350,15 @@ 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 \ @@ -4248,7 +4368,7 @@ proc ::tcl::clock::add { clockval args } { ?-gmt boolean? ?-locale LOCALE? ?-timezone ZONE?\"" } if { [catch { expr {wide($clockval)} } result] } { - return -code error "expected integer but got \"$clockval\"" + return -code error $result } set offsets {} @@ -4257,10 +4377,15 @@ 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 } @@ -4272,8 +4397,9 @@ proc ::tcl::clock::add { clockval args } { set timezone $b } default { - throw [list CLOCK badOption $a] \ - "bad option \"$a\",\ + return -code error \ + -errorcode [list CLOCK badSwitch $a] \ + "bad switch \"$a\",\ must be -gmt, -locale or -timezone" } } @@ -4287,13 +4413,20 @@ proc ::tcl::clock::add { clockval args } { -errorcode [list CLOCK gmtWithTimezone] \ "cannot use -gmt and -timezone in same call" } - if { ![string is boolean -strict $gmt] } { - return -code error "expected boolean value but got \"$gmt\"" - } elseif { $gmt } { - set timezone :GMT + if { [catch { expr { wide($clockval) } } result] } { + 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 + } } - EnterLocale $locale + EnterLocale $locale oldLocale set changeover [mc GREGORIAN_CHANGE_DATE] @@ -4302,30 +4435,29 @@ proc ::tcl::clock::add { clockval args } { return -options $opts $retval } - try { + set status [catch { + 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] - } - - weekdays - weekday { - set clockval [AddWeekDays $quantity $clockval $timezone \ - $changeover] + $changeover] } hours - hour { @@ -4339,18 +4471,31 @@ proc ::tcl::clock::add { clockval args } { } default { - throw [list CLOCK badUnit $unit] \ - "unknown unit \"$unit\", must be \ - years, months, weeks, days, hours, minutes or seconds" + 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] } } } - return $clockval - } trap CLOCK {result opts} { - # Conceal the innards of [clock] when it's an expected error - dict unset opts -errorinfo + } result opts] + + # Restore the locale + + if { [info exists oldLocale] } { + mclocale $oldLocale + } + + if { $status == 1 } { + if { [lindex [dict get $opts -errorcode] 0] eq {CLOCK} } { + dict unset opts -errorinfo + } return -options $opts $result + } else { + return $clockval } + } #---------------------------------------------------------------------- @@ -4375,6 +4520,7 @@ proc ::tcl::clock::add { clockval args } { #---------------------------------------------------------------------- proc ::tcl::clock::AddMonths { months clockval timezone changeover } { + variable DaysInRomanMonthInCommonYear variable DaysInRomanMonthInLeapYear variable TZData @@ -4382,9 +4528,8 @@ 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 @@ -4413,11 +4558,10 @@ 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] @@ -4427,60 +4571,10 @@ proc ::tcl::clock::AddMonths { months clockval timezone changeover } { #---------------------------------------------------------------------- # -# AddWeekDays -- -# -# Add a given number of week days (skipping Saturdays and Sundays) -# to a given clock value in a given time zone. -# -# Parameters: -# days - Number of days to add (may be negative) -# clockval - Seconds since the epoch before the operation -# timezone - Time zone in which the operation is to be performed -# changeover - Julian Day on which the Gregorian calendar was adopted -# in the target locale. -# -# Results: -# Returns the new clock value as a number of seconds since the epoch. -# -# Side effects: -# None. -# -#---------------------------------------------------------------------- - -proc ::tcl::clock::AddWeekDays { days clockval timezone changeover } { - - if {$days == 0} { - return $clockval - } - - set day [format $clockval -format %u] - - set weeks [expr {$days / 5}] - set rdays [expr {$days % 5}] - set toAdd [expr {7 * $weeks + $rdays}] - set resDay [expr {$day + ($toAdd % 7)}] - - # Adjust if we start from a weekend - if {$day > 5} { - set adj [expr {5 - $day}] - incr toAdd $adj - incr resDay $adj - } - - # Adjust if we end up on a weekend - if {$resDay > 5} { - incr toAdd 2 - } - - AddDays $toAdd $clockval $timezone $changeover -} - -#---------------------------------------------------------------------- -# # 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) @@ -4490,7 +4584,8 @@ proc ::tcl::clock::AddWeekDays { days 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. @@ -4498,14 +4593,14 @@ proc ::tcl::clock::AddWeekDays { days 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 @@ -4514,11 +4609,10 @@ 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] @@ -4528,37 +4622,35 @@ proc ::tcl::clock::AddDays { days clockval timezone changeover } { #---------------------------------------------------------------------- # -# ChangeCurrentLocale -- +# mc -- # -# The global locale was changed within msgcat. -# Clears the buffered parse functions of the current locale. +# Wrapper around ::msgcat::mc that caches the result according +# to the locale. # # Parameters: -# loclist (ignored) +# Accepts the name of the message to retrieve. # # Results: -# None. +# Returns the message text. # # Side effects: -# Buffered parse functions are cleared. +# Caches the message text. +# +# Notes: +# Only the single-argument version of [mc] is supported. # #---------------------------------------------------------------------- -proc ::tcl::clock::ChangeCurrentLocale {args} { - variable FormatProc - variable LocaleNumeralCache - variable CachedSystemTimeZone - variable TimeZoneBad - - foreach p [info procs [namespace current]::scanproc'*'current] { - rename $p {} - } - foreach p [info procs [namespace current]::formatproc'*'current] { - rename $p {} +proc ::tcl::clock::mc { name } { + variable McLoaded + 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 } - - catch {array unset FormatProc *'current} - set LocaleNumeralCache {} } #---------------------------------------------------------------------- @@ -4579,8 +4671,10 @@ proc ::tcl::clock::ChangeCurrentLocale {args} { #---------------------------------------------------------------------- proc ::tcl::clock::ClearCaches {} { + variable FormatProc variable LocaleNumeralCache + variable McLoaded variable CachedSystemTimeZone variable TimeZoneBad @@ -4593,7 +4687,9 @@ proc ::tcl::clock::ClearCaches {} { catch {unset FormatProc} set LocaleNumeralCache {} + set McLoaded {} catch {unset CachedSystemTimeZone} set TimeZoneBad {} InitTZData + } diff --git a/library/dde/pkgIndex.tcl b/library/dde/pkgIndex.tcl index 4cf73d0..114dee6 100644 --- a/library/dde/pkgIndex.tcl +++ b/library/dde/pkgIndex.tcl @@ -1,7 +1,7 @@ -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] +if {![package vsatisfies [package provide Tcl] 8]} return +if {[info sharedlibextension] != ".dll"} return +if {[info exists ::tcl_platform(debug)]} { + package ifneeded dde 1.3.3 [list load [file join $dir tcldde13g.dll] dde] } else { - package ifneeded dde 1.4.0 [list load [file join $dir tcldde14.dll] dde] + package ifneeded dde 1.3.3 [list load [file join $dir tcldde13.dll] dde] } diff --git a/library/history.tcl b/library/history.tcl index ef9099b..888d144 100644 --- a/library/history.tcl +++ b/library/history.tcl @@ -4,18 +4,18 @@ # # 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 { @@ -24,102 +24,163 @@ 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 some argument checking and calls the helper ensemble in the -# tcl namespace. - -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. +# This does argument checking and calls helper procedures in the +# history namespace. - if {![llength $args]} { - set args info +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 - # Tricky stuff needed to make stack and errors come out right! - tailcall apply {arglist {tailcall history {*}$arglist} ::tcl} $args -} - -# (unnamed) -- -# -# Callback when [::history] is destroyed. Destroys the implementation. -# -# Parameters: -# oldName what the command was called. -# newName what the command is now called (an empty string). -# op the operation (= delete). -# -# Results: -# none -# -# Side Effects: -# The implementation of the [::history] command ceases to exist. + 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 -trace add command ::history delete [list apply {{oldName newName op} { - variable history - unset -nocomplain history - foreach c [info procs ::tcl::Hist*] { - rename $c {} + 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" + } } - rename ::tcl::history {} -} ::tcl}] - +} + # tcl::HistAdd -- # # Add an item to the history, and optionally eval it at the global scope # # Parameters: -# event the command to add -# exec (optional) a substring of "exec" causes the command to -# be evaled. +# command 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 {event {exec {}}} { + proc tcl::HistAdd {command {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 $event] eq ""} { + if {[string trim $command] eq ""} { 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 "" + 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 {} } - tailcall eval $event } - + # tcl::HistKeep -- # # Set or query the limit on the length of the history list @@ -133,22 +194,20 @@ proc ::tcl::HistAdd {event {exec {}}} { # Side Effects: # Updates history(keep) if a limit is specified -proc ::tcl::HistKeep {{count {}}} { + proc tcl::HistKeep {{limit {}}} { variable history - if {[llength [info level 0]] == 1} { + if {$limit eq ""} { 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 @@ -162,7 +221,7 @@ proc ::tcl::HistKeep {{count {}}} { # 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 @@ -172,7 +231,7 @@ proc ::tcl::HistClear {} { oldest -$keep \ ] } - + # tcl::HistInfo -- # # Return a pretty-printed version of the history list @@ -183,16 +242,14 @@ proc ::tcl::HistClear {} { # Results: # A formatted history list -proc ::tcl::HistInfo {{count {}}} { + proc tcl::HistInfo {{num {}}} { variable history - if {[llength [info level 0]] == 1} { - set count [expr {$history(keep) + 1}] - } elseif {![string is integer -strict $count]} { - return -code error "bad integer \"$count\"" + if {$num eq ""} { + set num [expr {$history(keep) + 1}] } set result {} set newline "" - for {set i [expr {$history(nextid) - $count + 1}]} \ + for {set i [expr {$history(nextid) - $num + 1}]} \ {$i <= $history(nextid)} {incr i} { if {![info exists history($i)]} { continue @@ -203,11 +260,11 @@ proc ::tcl::HistInfo {{count {}}} { } 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, @@ -219,18 +276,20 @@ proc ::tcl::HistInfo {{count {}}} { # 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 - tailcall eval $cmd + uplevel #0 $cmd } - + # tcl::HistIndex -- # # Map from an event specifier to an index in the history list. @@ -240,22 +299,22 @@ proc ::tcl::HistRedo {{event -1}} { # 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 {![string is integer -strict $event]} { + if {[catch {expr {~$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\"" @@ -272,64 +331,43 @@ proc ::tcl::HistIndex {event} { } 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 -1}} { + proc tcl::HistEvent {event} { variable history set i [HistIndex $event] - if {![info exists history($i)]} { - return "" + if {[info exists history($i)]} { + return [string trimright $history($i) \ \n] + } else { + return ""; } - return [string trimright $history($i) \ \n] } - + # tcl::HistChange -- # # Replace a value in the history list. # # Parameters: -# 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. +# 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. # # Side Effects: # Changes the history list. -proc ::tcl::HistChange {newValue {event 0}} { + proc tcl::HistChange {cmd {event 0}} { variable history set i [HistIndex $event] - 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}] + set history($i) $cmd } - -return - -# Local Variables: -# mode: tcl -# fill-column: 78 -# End: diff --git a/library/http/http.tcl b/library/http/http.tcl index ccd4cd1..4c99f62 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -8,10 +8,10 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. -package require Tcl 8.6- +package require Tcl 8.4 # Keep this in sync with pkgIndex.tcl and with the install directories in # Makefiles -package provide http 2.8.10 +package provide http 2.7.13 namespace eval http { # Allow resourcing to not clobber existing data @@ -25,13 +25,7 @@ namespace eval http { -proxyfilter http::ProxyRequired -urlencoding utf-8 } - # 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]" + set http(-useragent) "Tcl http client package [package provide http]" } proc init {} { @@ -98,7 +92,7 @@ namespace eval http { # Arguments: # msg Message to output # -if {[info command http::Log] eq {}} {proc http::Log {args} {}} +proc http::Log {args} {} # http::register -- # @@ -200,7 +194,7 @@ proc http::Finish {token {errormsg ""} {skipCB 0}} { if { ($state(status) eq "timeout") || ($state(status) eq "error") || ([info exists state(connection)] && ($state(connection) eq "close")) - } { + } then { CloseSocket $state(sock) $token } if {[info exists state(after)]} { @@ -366,7 +360,7 @@ proc http::geturl {url args} { if { [info exists type($flag)] && ![string is $type($flag) -strict $value] - } { + } then { unset $token return -code error \ "Bad value for $flag ($value), must be $type($flag)" @@ -421,6 +415,7 @@ 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 @@ -435,10 +430,7 @@ proc http::geturl {url args} { [^@/\#?]+ # <userinfo part of authority> ) @ )? - ( # <host part of authority> - [^/:\#?]+ | # host name or IPv4 address - \[ [^/\#?]+ \] # IPv6 address in square brackets - ) + ( [^/:\#?]+ ) # <host part of authority> (?: : (\d+) )? # <port part of authority> )? ( [/\?] [^\#]*)? # <path> (including query) @@ -452,7 +444,6 @@ 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. @@ -566,10 +557,6 @@ proc http::geturl {url args} { # Proxy connections aren't shared among different hosts. set state(socketinfo) $host:$port - # Save the accept types at this point to prevent a race condition. [Bug - # c11a51c482] - set state(accept-types) $http(-accept) - # See if we are supposed to use a previously opened channel. if {$state(-keepalive)} { variable socketmap @@ -641,20 +628,8 @@ proc http::geturl {url args} { return $token } -# http::Connected -- -# -# Callback used when the connection to the HTTP server is actually -# established. -# -# Arguments: -# token State token. -# proto What protocol (http, https, etc.) was used to connect. -# phost Are we using keep-alive? Non-empty if yes. -# srvurl Service-local URL that we're requesting -# Results: -# None. -proc http::Connected {token proto phost srvurl} { +proc http::Connected { token proto phost srvurl} { variable http variable urlTypes @@ -702,17 +677,14 @@ proc http::Connected {token proto phost srvurl} { 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 - } - set accept_types_seen 0 + if {[catch { puts $sock "$how $srvurl HTTP/$state(-protocol)" - if {[dict exists $state(-headers) Host]} { + puts $sock "Accept: $http(-accept)" + array set hdrs $state(-headers) + if {[info exists hdrs(Host)]} { # Allow Host spoofing. [Bug 928154] - puts $sock "Host: [dict get $state(-headers) Host]" + puts $sock "Host: $hdrs(Host)" } elseif {$port == $defport} { # Don't add port in this case, to handle broken servers. [Bug # #504508] @@ -720,6 +692,7 @@ proc http::Connected {token proto phost srvurl} { } else { puts $sock "Host: $host:$port" } + unset hdrs puts $sock "User-Agent: $http(-useragent)" if {$state(-protocol) == 1.0 && $state(-keepalive)} { puts $sock "Connection: keep-alive" @@ -732,21 +705,18 @@ proc http::Connected {token proto phost srvurl} { } set accept_encoding_seen 0 set content_type_seen 0 - dict for {key value} $state(-headers) { - set value [string map [list \n "" \r ""] $value] - set key [string map {" " -} [string trim $key]] + 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 "accept"]} { - set accept_types_seen 1 - } if {[string equal -nocase $key "content-type"]} { set content_type_seen 1 } + set value [string map [list \n "" \r ""] $value] + set key [string trim $key] if {[string equal -nocase $key "content-length"]} { set contDone 1 set state(querylength) $value @@ -755,13 +725,14 @@ proc http::Connected {token proto phost srvurl} { puts $sock "$key: $value" } } - # Allow overriding the Accept header on a per-connection basis. Useful - # for working with REST services. [Bug c11a51c482] - if {!$accept_types_seen} { - puts $sock "Accept: $state(accept-types)" - } - if {!$accept_encoding_seen && ![info exists state(-handler)]} { - puts $sock "Accept-Encoding: gzip,deflate,compress" + # Soft zlib dependency check - no package require + if { + !$accept_encoding_seen && + ([package vsatisfies [package provide Tcl] 8.6] + || [llength [package provide zlib]]) && + !([info exists state(-channel)] || [info exists state(-handler)]) + } then { + puts $sock "Accept-Encoding: gzip, identity, *;q=0.1" } if {$isQueryChannel && $state(querylength) == 0} { # Try to determine size of data in channel. If we cannot seek, the @@ -785,7 +756,7 @@ proc http::Connected {token proto phost srvurl} { # 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 + # 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 @@ -807,7 +778,7 @@ proc http::Connected {token proto phost srvurl} { fileevent $sock readable [list http::Event $sock $token] } - } err]} { + } err]} then { # The socket probably was never connected, or the connection dropped # later. @@ -817,6 +788,7 @@ proc http::Connected {token proto phost srvurl} { Finish $token $err } } + } # Data access functions: @@ -907,7 +879,7 @@ proc http::Connect {token proto phost srvurl} { if { [eof $state(sock)] || [set err [fconfigure $state(sock) -error]] ne "" - } { + } then { Finish $token "connect failed $err" } else { fileevent $state(sock) writable {} @@ -958,7 +930,7 @@ proc http::Write {token} { set done 1 } } - } err]} { + } err]} then { # Do not call Finish here, but instead let the read half of the socket # process whatever server reply there is to get. @@ -1037,7 +1009,7 @@ proc http::Event {sock token} { && ($state(connection) eq "close")) || [info exists state(transfer)]) && ($state(totalsize) == 0) - } { + } then { Log "body size is 0 and no events likely - complete." Eof $token return @@ -1047,21 +1019,27 @@ proc http::Event {sock token} { fconfigure $sock -translation binary if { - $state(-binary) || [IsBinaryContentType $state(type)] - } { + $state(-binary) || ![string match -nocase text* $state(type)] + } then { # Turn off conversions for non-text data set state(binary) 1 } - if {[info exists state(-channel)]} { - if {$state(binary) || [llength [ContentEncoding $token]]} { + if { + $state(binary) || [string match *gzip* $state(coding)] || + [string match *compress* $state(coding)] + } then { + if {[info exists state(-channel)]} { fconfigure $state(-channel) -translation binary } - if {![info exists state(-handler)]} { - # Initiate a sequence of background fcopies - fileevent $sock readable {} - CopyStart $sock $token - return - } + } + if { + [info exists state(-channel)] && + ![info exists state(-handler)] + } then { + # Initiate a sequence of background fcopies + fileevent $sock readable {} + CopyStart $sock $token + return } } elseif {$n > 0} { # Process header lines @@ -1116,7 +1094,7 @@ proc http::Event {sock token} { } elseif { [info exists state(transfer)] && $state(transfer) eq "chunked" - } { + } then { set size 0 set chunk [getTextLine $sock] set n [string length $chunk] @@ -1156,11 +1134,11 @@ proc http::Event {sock token} { if { ($state(totalsize) > 0) && ($state(currentsize) >= $state(totalsize)) - } { + } then { Eof $token } } - } err]} { + } err]} then { return [Finish $token $err] } else { if {[info exists state(-progress)]} { @@ -1183,38 +1161,6 @@ proc http::Event {sock token} { } } -# http::IsBinaryContentType -- -# -# Determine if the content-type means that we should definitely transfer -# the data as binary. [Bug 838e99a76d] -# -# Arguments -# type The content-type of the data. -# -# Results: -# Boolean, true if we definitely should be binary. - -proc http::IsBinaryContentType {type} { - lassign [split [string tolower $type] "/;"] major minor - if {$major eq "text"} { - return false - } - # There's a bunch of XML-as-application-format things about. See RFC 3023 - # and so on. - if {$major eq "application"} { - set minor [string trimright $minor] - if {$minor in {"xml" "xml-external-parsed-entity" "xml-dtd"}} { - return false - } - } - # Not just application/foobar+xml but also image/svg+xml, so let us not - # restrict things for now... - if {[string match "*+xml" $minor]} { - return false - } - return true -} - # http::getTextLine -- # # Get one line with the stream in blocking crlf mode @@ -1245,54 +1191,14 @@ proc http::getTextLine {sock} { # Side Effects # This closes the connection upon error -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} { +proc http::CopyStart {sock token} { + variable $token upvar 0 $token state - 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. + if {[catch { + fcopy $sock $state(-channel) -size $state(-blocksize) -command \ + [list http::CopyDone $token] + } err]} then { + Finish $token $err } } @@ -1322,7 +1228,7 @@ proc http::CopyDone {token count {error {}}} { } elseif {[catch {eof $sock} iseof] || $iseof} { Eof $token } else { - CopyStart $sock $token 0 + CopyStart $sock $token } } @@ -1346,31 +1252,34 @@ proc http::Eof {token {force 0}} { set state(status) ok } - if {[string length $state(body)] > 0} { - if {[catch { - foreach coding [ContentEncoding $token] { - set state(body) [zlib $coding $state(body)] + if {($state(coding) eq "gzip") && [string length $state(body)] > 0} { + if {[catch { + if {[package vsatisfies [package present Tcl] 8.6]} { + # The zlib integration into 8.6 includes proper gzip support + set state(body) [zlib gunzip $state(body)] + } else { + set state(body) [Gunzip $state(body)] } - } err]} { - Log "error doing decompression: $err" + } err]} then { return [Finish $token $err] - } + } + } - 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. + 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 } @@ -1446,8 +1355,8 @@ proc http::mapReply {string} { } set converted [string map $formMap $string] if {[string match "*\[\u0100-\uffff\]*" $converted]} { - regexp "\[\u0100-\uffff\]" $converted badChar - # Return this error message for maximum compatibility... :^/ + 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" } @@ -1469,7 +1378,7 @@ proc http::ProxyRequired {host} { if { ![info exists http(-proxyport)] || ![string length $http(-proxyport)] - } { + } then { set http(-proxyport) 8080 } return [list $http(-proxyhost) $http(-proxyport)] @@ -1515,57 +1424,59 @@ proc http::CharsetToEncoding {charset} { } } -# 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\"" - } - } - } +# 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" } - return $r -} -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 + # lassign [split $flags ""] f_text f_crc f_extra f_name f_comment + 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 + } + + 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 } # Local variables: diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index 841b4eb..be8b883 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -1,2 +1,4 @@ -if {![package vsatisfies [package provide Tcl] 8.6-]} {return} -package ifneeded http 2.8.10 [list tclPkgSetup $dir http 2.8.10 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] +# Tcl package index file, version 1.1 + +if {![package vsatisfies [package provide Tcl] 8.4]} {return} +package ifneeded http 2.7.13 [list tclPkgSetup $dir http 2.7.13 {{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 8329de4..8041ee4 100644 --- a/library/http1.0/http.tcl +++ b/library/http1.0/http.tcl @@ -339,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]} { @@ -363,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 49a523c..62729e6 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -16,7 +16,7 @@ if {[info commands package] == ""} { error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]" } -package require -exact Tcl 8.7a0 +package require -exact Tcl 8.5.18 # Compute the auto path to use in this interpreter. # The values on the path come from several locations: @@ -45,7 +45,6 @@ if {![info exists auto_path]} { set auto_path "" } } - namespace eval tcl { variable Dir foreach Dir [list $::tcl_library [file dirname $::tcl_library]] { @@ -113,8 +112,6 @@ namespace eval tcl { } } -namespace eval tcl::Pkg {} - # Windows specific end of initialization if {(![interp issafe]) && ($tcl_platform(platform) eq "windows")} { @@ -145,7 +142,11 @@ if {(![interp issafe]) && ($tcl_platform(platform) eq "windows")} { } } if {![info exists env(COMSPEC)]} { - set env(COMSPEC) cmd.exe + if {$tcl_platform(os) eq "Windows NT"} { + set env(COMSPEC) cmd.exe + } else { + set env(COMSPEC) command.com + } } } InitWinEnv @@ -217,9 +218,11 @@ if {[namespace which -command tclLog] eq ""} { # exist in the interpreter. It takes the following steps to make the # command available: # -# 1. See if the autoload facility can locate the command in a +# 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 # Tcl script file. If so, load it and execute it. -# 2. If the command was invoked interactively at top-level: +# 3. 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 @@ -236,14 +239,22 @@ proc unknown args { variable ::tcl::UnknownPending global auto_noexec auto_noload env tcl_interactive errorInfo errorCode - if {[info exists errorInfo]} { - set savedErrorInfo $errorInfo - } - if {[info exists errorCode]} { - set savedErrorCode $errorCode + # If the command word has the form "namespace inscope ns cmd" + # then concatenate its arguments onto the end and evaluate it. + + 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 } - set name [lindex $args 0] + catch {set savedErrorInfo $errorInfo} + catch {set savedErrorCode $errorCode} + set name $cmd if {![info exists auto_noload]} { # # Make sure we're not trying to load the same proc twice. @@ -401,8 +412,7 @@ proc unknown args { return -code error "ambiguous command name \"$name\": [lsort $cmds]" } } - return -code error -errorcode [list TCL LOOKUP COMMAND $name] \ - "invalid command name \"$name\"" + return -code error "invalid command name \"$name\"" } # auto_load -- @@ -460,22 +470,6 @@ proc auto_load {cmd {namespace {}}} { return 0 } -# ::tcl::Pkg::source -- -# This procedure provides an alternative "source" command, which doesn't -# register the file for the "package files" command. Safe interpreters -# don't have to do anything special. -# -# Arguments: -# filename - -proc ::tcl::Pkg::source {filename} { - if {[interp issafe]} { - uplevel 1 [list ::source $filename] - } else { - uplevel 1 [list ::source -nopkg $filename] - } -} - # auto_load_index -- # Loads the contents of tclIndex files on the auto_path directory # list. This is usually invoked within auto_load to load the index @@ -518,7 +512,7 @@ proc auto_load_index {} { } set name [lindex $line 0] set auto_index($name) \ - "::tcl::Pkg::source [file join $dir [lindex $line 1]]" + "source [file join $dir [lindex $line 1]]" } } else { error "[file join $dir tclIndex] isn't a proper Tcl index file" @@ -655,9 +649,8 @@ proc auto_execok name { } set auto_execs($name) "" - set shellBuiltins [list assoc cls copy date del dir echo erase ftype \ - md mkdir mklink move rd ren rename rmdir start \ - time type ver vol] + set shellBuiltins [list cls copy date del dir echo erase md mkdir \ + mklink rd ren rename rmdir start time type ver vol] if {[info exists env(PATHEXT)]} { # Add an initial ; to have the {} extension check first. set execExtensions [split ";$env(PATHEXT)" ";"] diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl index 928474d..cf3b9d7 100644 --- a/library/msgcat/msgcat.tcl +++ b/library/msgcat/msgcat.tcl @@ -4,40 +4,32 @@ # message catalog facility for Tcl programs. It should be # loaded with the command "package require msgcat". # -# Copyright (c) 2010-2015 by Harald Oehlmann. # Copyright (c) 1998-2000 by Ajuba Solutions. # Copyright (c) 1998 by Mark Harrison. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. -package require Tcl 8.5- +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.6.0 +package provide msgcat 1.5.2 namespace eval msgcat { - namespace export mc mcexists mcload mclocale mcmax mcmset mcpreferences mcset\ - mcunknown mcflset mcflmset mcloadedlocales mcforgetpackage\ - mcpackageconfig mcpackagelocale + namespace export mc mcload mclocale mcmax mcmset mcpreferences mcset \ + mcunknown mcflset mcflmset + + # Records the current locale as passed to mclocale + variable Locale "" # Records the list of locales to search variable Loclist {} - # List of currently loaded locales - variable LoadedLocales {} - # Records the locale of the currently sourced message catalogue file variable FileLocale - # Configuration values per Package (e.g. client namespace). - # The dict key is of the form "<option> <namespace>" and the value is the - # configuration option. A nonexisting key is an unset option. - variable PackageConfig [dict create mcfolder {} loadcmd {} changecmd {}\ - unknowncmd {} loadedlocales {} loclist {}] - # Records the mapping between source strings and translated strings. The - # dict key is of the form "<namespace> <locale> <src>", where locale and + # dict key is of the form "<locale> <namespace> <src>", where locale and # namespace should be themselves dict values and the value is # the translated string. variable Msgs [dict create] @@ -181,8 +173,6 @@ namespace eval msgcat { # parent namespace until the source is found. If additional args are # specified, use the format command to work them into the traslated # string. -# If no catalog item is found, mcunknown is called in the caller frame -# and its result is returned. # # Arguments: # src The string to translate. @@ -193,86 +183,30 @@ namespace eval msgcat { # format command. proc msgcat::mc {src args} { - # this may be replaced by: - # return [mcget -namespace [uplevel 1 [list ::namespace current]] --\ - # $src {*}$args] - # Check for the src in each namespace starting from the local and # ending in the global. variable Msgs variable Loclist + variable Locale set ns [uplevel 1 [list ::namespace current]] - set loclist [PackagePreferences $ns] - - set nscur $ns - while {$nscur != ""} { - foreach loc $loclist { - if {[dict exists $Msgs $nscur $loc $src]} { - return [DefaultUnknown "" [dict get $Msgs $nscur $loc $src]\ - {*}$args] - } - } - set nscur [namespace parent $nscur] - } - # call package local or default unknown command - set args [linsert $args 0 [lindex $loclist 0] $src] - switch -exact -- [Invoke unknowncmd $args $ns result 1] { - 0 { return [uplevel 1 [linsert $args 0 [namespace origin mcunknown]]] } - 1 { return [DefaultUnknown {*}$args] } - default { return $result } - } -} - -# msgcat::mcexists -- -# -# Check if a catalog item is set or if mc would invoke mcunknown. -# -# Arguments: -# -exactnamespace Only check the exact namespace and no -# parent namespaces -# -exactlocale Only check the exact locale and not all members -# of the preferences list -# src Message catalog key -# -# Results: -# true if an adequate catalog key was found - -proc msgcat::mcexists {args} { - - variable Msgs - variable Loclist - variable PackageConfig - - set ns [uplevel 1 [list ::namespace current]] - set loclist [PackagePreferences $ns] - while {[llength $args] != 1} { - set args [lassign $args option] - switch -glob -- $option { - -exactnamespace { set exactnamespace 1 } - -exactlocale { set loclist [lrange $loclist 0 0] } - -* { return -code error "unknown option \"$option\"" } - default { - return -code error "wrong # args: should be\ - \"[lindex [info level 0] 0] ?-exactnamespace?\ - ?-exactlocale? src\"" - } - } - } - set src [lindex $args 0] - - while {$ns ne ""} { - foreach loc $loclist { - if {[dict exists $Msgs $ns $loc $src]} { - return 1 + while {$ns != ""} { + foreach loc $Loclist { + if {[dict exists $Msgs $loc $ns $src]} { + if {[llength $args] == 0} { + return [dict get $Msgs $loc $ns $src] + } else { + return [format [dict get $Msgs $loc $ns $src] {*}$args] + } } } - if {[info exists exactnamespace]} {return 0} set ns [namespace parent $ns] } - return 0 + # we have not found the translation + return [uplevel 1 [list [namespace origin mcunknown] \ + $Locale $src {*}$args]] } # msgcat::mclocale -- @@ -285,11 +219,11 @@ proc msgcat::mcexists {args} { # separated by underscores (e.g. en_US). # # Results: -# Returns the normalized set locale. +# Returns the current locale. proc msgcat::mclocale {args} { variable Loclist - variable LoadedLocales + variable Locale set len [llength $args] if {$len > 1} { @@ -298,49 +232,24 @@ proc msgcat::mclocale {args} { } if {$len == 1} { - set newLocale [string tolower [lindex $args 0]] + set newLocale [lindex $args 0] if {$newLocale ne [file tail $newLocale]} { return -code error "invalid newLocale value \"$newLocale\":\ could be path to unsafe code." } - if {[lindex $Loclist 0] ne $newLocale} { - set Loclist [GetPreferences $newLocale] - - # locale not loaded jet - LoadAll $Loclist - # Invoke callback - Invoke changecmd $Loclist - } - } - return [lindex $Loclist 0] -} - -# msgcat::GetPreferences -- -# -# Get list of locales from a locale. -# The first element is always the lowercase locale. -# Other elements have one component separated by "_" less. -# Multiple "_" are seen as one separator: de__ch_spec de__ch de {} -# -# Arguments: -# Locale. -# -# Results: -# Locale list - -proc msgcat::GetPreferences {locale} { - set locale [string tolower $locale] - set loclist [list $locale] - while {-1 !=[set pos [string last "_" $locale]]} { - set locale [string range $locale 0 $pos-1] - if { "_" ne [string index $locale end] } { - lappend loclist $locale + set Locale [string tolower $newLocale] + set Loclist {} + set word "" + foreach part [split $Locale _] { + set word [string trim "${word}_${part}" _] + if {$word ne [lindex $Loclist 0]} { + set Loclist [linsert $Loclist 0 $word] + } } + lappend Loclist {} + set Locale [lindex $Loclist 0] } - if {"" ne [lindex $loclist end]} { - lappend loclist {} - } - return $loclist + return $Locale } # msgcat::mcpreferences -- @@ -359,391 +268,6 @@ proc msgcat::mcpreferences {} { return $Loclist } -# msgcat::mcloadedlocales -- -# -# Get or change the list of currently loaded default locales -# -# The following subcommands are available: -# loaded -# Get the current list of loaded locales -# clear -# Remove all loaded locales not present in mcpreferences. -# -# Arguments: -# subcommand One of loaded or clear -# -# Results: -# Empty string, if not stated differently for the subcommand - -proc msgcat::mcloadedlocales {subcommand} { - variable Loclist - variable LoadedLocales - variable Msgs - variable PackageConfig - switch -exact -- $subcommand { - clear { - # Remove all locales not contained in Loclist - # skip any packages with package locale - set LoadedLocales $Loclist - foreach ns [dict keys $Msgs] { - if {![dict exists $PackageConfig loclist $ns]} { - foreach locale [dict keys [dict get $Msgs $ns]] { - if {$locale ni $Loclist} { - dict unset Msgs $ns $locale - } - } - } - } - } - loaded { return $LoadedLocales } - default { - return -code error "unknown subcommand \"$subcommand\": must be\ - clear, or loaded" - } - } - return -} - -# msgcat::mcpackagelocale -- -# -# Get or change the package locale of the calling package. -# -# The following subcommands are available: -# set -# Set a package locale. -# This may load message catalog files and may clear message catalog -# items, if the former locale was the default locale. -# Returns the normalized set locale. -# The default locale is taken, if locale is not given. -# get -# Get the locale valid for this package. -# isset -# Returns true, if a package locale is set -# unset -# Unset the package locale and activate the default locale. -# This loads message catalog file which where missing in the package -# locale. -# preferences -# Return locale preference list valid for the package. -# loaded -# Return loaded locale list valid for the current package. -# clear -# If the current package has a package locale, remove all package -# locales not containes in package mcpreferences. -# It is an error to call this without a package locale set. -# -# The subcommands get, preferences and loaded return the corresponding -# default data, if no package locale is set. -# -# Arguments: -# subcommand see list above -# locale package locale (only set subcommand) -# -# Results: -# Empty string, if not stated differently for the subcommand - -proc msgcat::mcpackagelocale {subcommand {locale ""}} { - # todo: implement using an ensemble - variable Loclist - variable LoadedLocales - variable Msgs - variable PackageConfig - # Check option - # check if required item is exactly provided - if {[llength [info level 0]] == 2} { - # locale not given - unset locale - } else { - # locale given - if {$subcommand in - {"get" "isset" "unset" "preferences" "loaded" "clear"} } { - return -code error "wrong # args: should be\ - \"[lrange [info level 0] 0 1]\"" - } - set locale [string tolower $locale] - } - set ns [uplevel 1 {::namespace current}] - - switch -exact -- $subcommand { - get { return [lindex [PackagePreferences $ns] 0] } - preferences { return [PackagePreferences $ns] } - loaded { return [PackageLocales $ns] } - present { return [expr {$locale in [PackageLocales $ns]} ]} - isset { return [dict exists $PackageConfig loclist $ns] } - set { # set a package locale or add a package locale - - # Copy the default locale if no package locale set so far - if {![dict exists $PackageConfig loclist $ns]} { - dict set PackageConfig loclist $ns $Loclist - dict set PackageConfig loadedlocales $ns $LoadedLocales - } - - # Check if changed - set loclist [dict get $PackageConfig loclist $ns] - if {! [info exists locale] || $locale eq [lindex $loclist 0] } { - return [lindex $loclist 0] - } - - # Change loclist - set loclist [GetPreferences $locale] - set locale [lindex $loclist 0] - dict set PackageConfig loclist $ns $loclist - - # load eventual missing locales - set loadedLocales [dict get $PackageConfig loadedlocales $ns] - if {$locale in $loadedLocales} { return $locale } - set loadLocales [ListComplement $loadedLocales $loclist] - dict set PackageConfig loadedlocales $ns\ - [concat $loadedLocales $loadLocales] - Load $ns $loadLocales - return $locale - } - clear { # Remove all locales not contained in Loclist - if {![dict exists $PackageConfig loclist $ns]} { - return -code error "clear only when package locale set" - } - set loclist [dict get $PackageConfig loclist $ns] - dict set PackageConfig loadedlocales $ns $loclist - if {[dict exists $Msgs $ns]} { - foreach locale [dict keys [dict get $Msgs $ns]] { - if {$locale ni $loclist} { - dict unset Msgs $ns $locale - } - } - } - } - unset { # unset package locale and restore default locales - - if { ![dict exists $PackageConfig loclist $ns] } { return } - - # unset package locale - set loadLocales [ListComplement\ - [dict get $PackageConfig loadedlocales $ns] $LoadedLocales] - dict unset PackageConfig loadedlocales $ns - dict unset PackageConfig loclist $ns - - # unset keys not in global loaded locales - if {[dict exists $Msgs $ns]} { - foreach locale [dict keys [dict get $Msgs $ns]] { - if {$locale ni $LoadedLocales} { - dict unset Msgs $ns $locale - } - } - } - - # Add missing locales - Load $ns $loadLocales - } - default { - return -code error "unknown subcommand \"$subcommand\": must be\ - clear, get, isset, loaded, present, set, or unset" - } - } - return -} - -# msgcat::mcforgetpackage -- -# -# Remove any data of the calling package from msgcat -# - -proc msgcat::mcforgetpackage {} { - # todo: this may be implemented using an ensemble - variable PackageConfig - variable Msgs - set ns [uplevel 1 {::namespace current}] - # Remove MC items - dict unset Msgs $ns - # Remove config items - foreach key [dict keys $PackageConfig] { - dict unset PackageConfig $key $ns - } - return -} - -# msgcat::mcpackageconfig -- -# -# Get or modify the per caller namespace (e.g. packages) config options. -# -# Available subcommands are: -# -# get get the current value or an error if not set. -# isset return true, if the option is set -# set set the value (see also distinct option). -# Returns the number of loaded message files. -# unset Clear option. return "". -# -# Available options are: -# -# mcfolder -# The message catalog folder of the package. -# This is automatically set by mcload. -# If the value is changed using the set subcommand, an evntual -# loadcmd is invoked and all message files of the package locale are -# loaded. -# -# loadcmd -# The command gets executed before a message file would be -# sourced for this module. -# The command is invoked with the expanded locale list to load. -# The command is not invoked if the registering package namespace -# is not present. -# This callback might also be used as an alternative to message -# files. -# If the value is changed using the set subcommand, the callback is -# directly invoked with the current file locale list. No file load is -# executed. -# -# changecmd -# The command is invoked, after an executed locale change. -# Appended argument is expanded mcpreferences. -# -# unknowncmd -# Use a package locale mcunknown procedure instead the global one. -# The appended arguments are identical to mcunknown. -# A default unknown handler is used if set to the empty string. -# This consists in returning the key if no arguments are given. -# With given arguments, format is used to process the arguments. -# -# Arguments: -# subcommand Operation on the package -# option The package option to get or set. -# ?value? Eventual value for the subcommand -# -# Results: -# Depends on the subcommand and option and is described there - -proc msgcat::mcpackageconfig {subcommand option {value ""}} { - variable PackageConfig - # get namespace - set ns [uplevel 1 {::namespace current}] - - if {$option ni {"mcfolder" "loadcmd" "changecmd" "unknowncmd"}} { - return -code error "bad option \"$option\": must be mcfolder, loadcmd,\ - changecmd, or unknowncmd" - } - - # check if value argument is exactly provided - if {[llength [info level 0]] == 4 } { - # value provided - if {$subcommand in {"get" "isset" "unset"}} { - return -code error "wrong # args: should be\ - \"[lrange [info level 0] 0 2] value\"" - } - } elseif {$subcommand eq "set"} { - return -code error\ - "wrong # args: should be \"[lrange [info level 0] 0 2]\"" - } - - # Execute subcommands - switch -exact -- $subcommand { - get { # Operation get return current value - if {![dict exists $PackageConfig $option $ns]} { - return -code error "package option \"$option\" not set" - } - return [dict get $PackageConfig $option $ns] - } - isset { return [dict exists $PackageConfig $option $ns] } - unset { dict unset PackageConfig $option $ns } - set { # Set option - - if {$option eq "mcfolder"} { - set value [file normalize $value] - } - # Check if changed - if { [dict exists $PackageConfig $option $ns] - && $value eq [dict get $PackageConfig $option $ns] } { - return 0 - } - - # set new value - dict set PackageConfig $option $ns $value - - # Reload pending message catalogs - switch -exact -- $option { - mcfolder { return [Load $ns [PackageLocales $ns]] } - loadcmd { return [Load $ns [PackageLocales $ns] 1] } - } - return 0 - } - default { - return -code error "unknown subcommand \"$subcommand\":\ - must be get, isset, set, or unset" - } - } - return -} - -# msgcat::PackagePreferences -- -# -# Return eventual present package preferences or the default list if not -# present. -# -# Arguments: -# ns Package namespace -# -# Results: -# locale list - -proc msgcat::PackagePreferences {ns} { - variable PackageConfig - if {[dict exists $PackageConfig loclist $ns]} { - return [dict get $PackageConfig loclist $ns] - } - variable Loclist - return $Loclist -} - -# msgcat::PackageLocales -- -# -# Return eventual present package locales or the default list if not -# present. -# -# Arguments: -# ns Package namespace -# -# Results: -# locale list - -proc msgcat::PackageLocales {ns} { - variable PackageConfig - if {[dict exists $PackageConfig loadedlocales $ns]} { - return [dict get $PackageConfig loadedlocales $ns] - } - variable LoadedLocales - return $LoadedLocales -} - -# msgcat::ListComplement -- -# -# Build the complement of two lists. -# Return a list with all elements in list2 but not in list1. -# Optionally return the intersection. -# -# Arguments: -# list1 excluded list -# list2 included list -# inlistname If not "", write in this variable the intersection list -# -# Results: -# list with all elements in list2 but not in list1 - -proc msgcat::ListComplement {list1 list2 {inlistname ""}} { - if {"" ne $inlistname} { - upvar 1 $inlistname inlist - } - set inlist {} - set outlist {} - foreach item $list2 { - if {$item in $list1} { - lappend inlist $item - } else { - lappend outlist $item - } - } - return $outlist -} - # msgcat::mcload -- # # Attempt to load message catalogs for each locale in the @@ -756,88 +280,24 @@ proc msgcat::ListComplement {list1 list2 {inlistname ""}} { # Returns the number of message catalogs that were loaded. proc msgcat::mcload {langdir} { - return [uplevel 1 [list\ - [namespace origin mcpackageconfig] set mcfolder $langdir]] -} - -# msgcat::LoadAll -- -# -# Load a list of locales for all packages not having a package locale -# list. -# -# Arguments: -# langdir The directory to search. -# -# Results: -# Returns the number of message catalogs that were loaded. - -proc msgcat::LoadAll {locales} { - variable PackageConfig - variable LoadedLocales - if {0 == [llength $locales]} { return {} } - # filter jet unloaded locales - set locales [ListComplement $LoadedLocales $locales] - if {0 == [llength $locales]} { return {} } - lappend LoadedLocales {*}$locales - - set packages [lsort -unique [concat\ - [dict keys [dict get $PackageConfig loadcmd]]\ - [dict keys [dict get $PackageConfig mcfolder]]]] - foreach ns $packages { - if {! [dict exists $PackageConfig loclist $ns] } { - Load $ns $locales - } - } - return $locales -} - -# msgcat::Load -- -# -# Invoke message load callback and load message catalog files. -# -# Arguments: -# ns Namespace (equal package) to load the message catalog. -# locales List of locales to load. -# callbackonly true if only callback should be invoked -# -# Results: -# Returns the number of message catalogs that were loaded. - -proc msgcat::Load {ns locales {callbackonly 0}} { variable FileLocale - variable PackageConfig - variable LoadedLocals - - if {0 == [llength $locales]} { return 0 } - - # Invoke callback - Invoke loadcmd $locales $ns - - if {$callbackonly || ![dict exists $PackageConfig mcfolder $ns]} { - return 0 - } - - # Invoke file load - set langdir [dict get $PackageConfig mcfolder $ns] - # Save the file locale if we are recursively called if {[info exists FileLocale]} { set nestedFileLocale $FileLocale } set x 0 - foreach p $locales { + foreach p [mcpreferences] { 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]]] + set FileLocale [string tolower [file tail [file rootname $langfile]]] if {"root" eq $FileLocale} { set FileLocale "" } - namespace inscope $ns [list ::source -encoding utf-8 $langfile] + uplevel 1 [list ::source -encoding utf-8 $langfile] unset FileLocale } } @@ -847,63 +307,6 @@ proc msgcat::Load {ns locales {callbackonly 0}} { return $x } -# msgcat::Invoke -- -# -# Invoke a set of registered callbacks. -# The callback is only invoked, if its registered namespace exists. -# -# Arguments: -# index Index into PackageConfig to get callback command -# arglist parameters to the callback invocation -# ns (Optional) package to call. -# If not given or empty, check all registered packages. -# resultname Variable to save the callback result of the last called -# callback to. May be set to "" to discard the result. -# failerror (0) Fail on error if true. Otherwise call bgerror. -# -# Results: -# Possible values: -# - 0: no valid command registered -# - 1: registered command was the empty string -# - 2: registered command called, resultname is set -# - 3: registered command failed -# If multiple commands are called, the maximum of all results is returned. - -proc msgcat::Invoke {index arglist {ns ""} {resultname ""} {failerror 0}} { - variable PackageConfig - variable Config - if {"" ne $resultname} { - upvar 1 $resultname result - } - if {"" eq $ns} { - set packageList [dict keys [dict get $PackageConfig $index]] - } else { - set packageList [list $ns] - } - set ret 0 - foreach ns $packageList { - if {[dict exists $PackageConfig $index $ns] && [namespace exists $ns]} { - set cmd [dict get $PackageConfig $index $ns] - if {"" eq $cmd} { - if {$ret == 0} {set ret 1} - } else { - if {$failerror} { - set result [namespace inscope $ns $cmd {*}$arglist] - set ret 2 - } elseif {1 == [catch { - set result [namespace inscope $ns $cmd {*}$arglist] - if {$ret < 2} {set ret 2} - } err derr]} { - after idle [concat [::interp bgerror ""]\ - [list $err $derr]] - set ret 3 - } - } - } - } - return $ret -} - # msgcat::mcset -- # # Set the translation for a given string in a specified locale. @@ -927,7 +330,7 @@ proc msgcat::mcset {locale src {dest ""}} { set locale [string tolower $locale] - dict set Msgs $ns $locale $src $dest + dict set Msgs $locale $ns $src $dest return $dest } @@ -948,10 +351,16 @@ proc msgcat::mcflset {src {dest ""}} { variable Msgs if {![info exists FileLocale]} { - return -code error "must only be used inside a message catalog loaded\ - with ::msgcat::mcload" + return -code error \ + "must only be used inside a message catalog loaded with ::msgcat::mcload" } - return [uplevel 1 [list [namespace origin mcset] $FileLocale $src $dest]] + if {[llength [info level 0]] == 2} { ;# dest not specified + set dest $src + } + + set ns [uplevel 1 [list ::namespace current]] + dict set Msgs $FileLocale $ns $src $dest + return $dest } # msgcat::mcmset -- @@ -971,14 +380,14 @@ proc msgcat::mcmset {locale pairs} { set length [llength $pairs] if {$length % 2} { return -code error "bad translation list:\ - should be \"[lindex [info level 0] 0] locale {src dest ...}\"" + should be \"[lindex [info level 0] 0] locale {src dest ...}\"" } set locale [string tolower $locale] set ns [uplevel 1 [list ::namespace current]] foreach {src dest} $pairs { - dict set Msgs $ns $locale $src $dest + dict set Msgs $locale $ns $src $dest } return [expr {$length / 2}] @@ -999,17 +408,26 @@ proc msgcat::mcflmset {pairs} { variable Msgs if {![info exists FileLocale]} { - return -code error "must only be used inside a message catalog loaded\ - with ::msgcat::mcload" + return -code error \ + "must only be used inside a message catalog loaded with ::msgcat::mcload" } - return [uplevel 1 [list [namespace origin mcmset] $FileLocale $pairs]] + 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 -- # # This routine is called by msgcat::mc if a translation cannot -# be found for a string and no unknowncmd is set for the current -# package. This routine is intended to be replaced +# 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. # If additional args are specified, the format command will be used @@ -1023,30 +441,7 @@ proc msgcat::mcflmset {pairs} { # Results: # Returns the translated value. -proc msgcat::mcunknown {args} { - return [uplevel 1 [list [namespace origin DefaultUnknown] {*}$args]] -} - -# msgcat::DefaultUnknown -- -# -# This routine is called by msgcat::mc if a translation cannot -# be found for a string in the following circumstances: -# - Default global handler, if mcunknown is not redefined. -# - Per package handler, if the package sets unknowncmd to the empty -# string. -# It returna the source string if the argument list is empty. -# If additional args are specified, the format command will be used -# to work them into the traslated string. -# -# Arguments: -# locale (unused) The current locale. -# src The string to be translated. -# args Args to pass to the format command -# -# Results: -# Returns the translated value. - -proc msgcat::DefaultUnknown {locale src args} { +proc msgcat::mcunknown {locale src args} { if {[llength $args]} { return [format $src {*}$args] } else { diff --git a/library/msgcat/pkgIndex.tcl b/library/msgcat/pkgIndex.tcl index 7399c92..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.6.0 [list source [file join $dir msgcat.tcl]] +package ifneeded msgcat 1.5.2 [list source [file join $dir msgcat.tcl]] diff --git a/library/opt/optparse.tcl b/library/opt/optparse.tcl index 869a2b6..c9438a0 100644 --- a/library/opt/optparse.tcl +++ b/library/opt/optparse.tcl @@ -11,7 +11,7 @@ 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.6 +package provide opt 0.4.5 namespace eval ::tcl { @@ -33,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 @@ -69,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 ;-) @@ -84,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 @@ -110,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 @@ -143,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; } } } @@ -198,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, @@ -232,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 @@ -246,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} } @@ -270,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} { @@ -286,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 } @@ -343,10 +343,10 @@ proc ::tcl::OptProcArgGiven {argname} { proc OptState {item} { lindex $item 0 } - + # current state proc OptCurState {descriptions} { - OptState [OptCurDesc $descriptions] + OptState [OptCurDesc $descriptions]; } ####### @@ -354,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]; } ####### @@ -370,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) @@ -420,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 { @@ -450,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 @@ -516,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" @@ -556,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]; } } } @@ -571,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 "-" @@ -580,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)}] @@ -591,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]} { @@ -604,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 { @@ -617,7 +617,7 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} { return $arg } } - return neverReached + return neverReached; } # internal utilities @@ -625,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 } @@ -660,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} { @@ -719,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 @@ -733,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 @@ -754,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 { @@ -776,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\ @@ -798,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]; } } } @@ -829,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),\ @@ -838,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 @@ -890,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 [string trimright [format "\n %-*s %-*s %-*s %s" \ + append res [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 @@ -913,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]" } @@ -943,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 107d4c6..c5d3635 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.6 [list source [file join $dir optparse.tcl]] +package ifneeded opt 0.4.5 [list source [file join $dir optparse.tcl]] diff --git a/library/package.tcl b/library/package.tcl index c72fbfb..3783722 100644 --- a/library/package.tcl +++ b/library/package.tcl @@ -14,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 @@ -27,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"} { @@ -48,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] @@ -57,10 +57,11 @@ 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 @@ -81,7 +82,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} { @@ -127,21 +128,20 @@ proc pkg_mkIndex {args} { set dir [lindex $args $idx] set patternList [lrange $args [expr {$idx + 1}] end] - if {![llength $patternList]} { + if {[llength $patternList] == 0} { set patternList [list "*.tcl" "*[info sharedlibextension]"] } - try { - set fileList [glob -directory $dir -tails -types {r f} -- \ - {*}$patternList] - } on error {msg opt} { - return -options $opt $msg + if {[catch { + glob -directory $dir -tails -types {r f} -- {*}$patternList + } fileList o]} { + return -options $o $fileList } 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 @@ -163,23 +163,20 @@ 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'" } - try { + if {[catch { load [lindex $pkg 0] [lindex $pkg 1] $c - } on error err { + } err]} { if {$doVerbose} { - tclLog "warning: load [lindex $pkg 0]\ - [lindex $pkg 1]\nfailed with: $err" - } - } on ok {} { - if {$doVerbose} { - tclLog "loaded [lindex $pkg 0] [lindex $pkg 1]" + tclLog "warning: load [lindex $pkg 0] [lindex $pkg 1]\nfailed with: $err" } + } 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. @@ -188,25 +185,21 @@ 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} {} @@ -214,9 +207,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 @@ -237,22 +230,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]] } - try { + if {[catch { $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 @@ -274,17 +267,18 @@ 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] @@ -295,16 +289,17 @@ 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}::* } @@ -321,9 +316,8 @@ proc pkg_mkIndex {args} { 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] @@ -338,8 +332,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 "" @@ -349,12 +343,12 @@ proc pkg_mkIndex {args} { } } } - } on error msg { + } msg] == 1} { set what [$c eval set ::tcl::debug] if {$doVerbose} { tclLog "warning: error while $what $file: $msg" } - } on ok {} { + } else { set what [$c eval set ::tcl::debug] if {$doVerbose} { tclLog "successful $what of $file" @@ -363,7 +357,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" @@ -399,7 +393,7 @@ proc pkg_mkIndex {args} { lappend cmd ::tcl::Pkg::Create -name $name -version $version foreach spec [lsort -index 0 $files($pkg)] { foreach {file type procs} $spec { - if {$direct} { + if { $direct } { set procs {} } lappend cmd "-$type" [list $file $procs] @@ -414,10 +408,11 @@ 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. @@ -448,12 +443,12 @@ proc tclPkgSetup {dir pkg version files} { } # 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. @@ -466,8 +461,8 @@ 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] @@ -479,22 +474,24 @@ 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)]} { - try { - ::tcl::Pkg::source $file - } trap {POSIX EACCES} {} { + 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"} { # $file was not readable; silently ignore continue - } on error msg { + } + if {$code} { tclLog "error reading package index file $file: $msg" - } on ok {} { + } else { set procdDirs($dir) 1 } } @@ -505,14 +502,16 @@ proc tclPkgUnknown {name args} { set file [file join $dir pkgIndex.tcl] # safe interps usually don't have "file exists", if {([interp issafe] || [file exists $file])} { - try { - ::tcl::Pkg::source $file - } trap {POSIX EACCES} {} { + 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"} { # $file was not readable; silently ignore continue - } on error msg { + } + if {$code} { tclLog "error reading package index file $file: $msg" - } on ok {} { + } else { set procdDirs($dir) 1 } } @@ -520,11 +519,12 @@ 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 { @@ -536,11 +536,11 @@ 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)] && ($dir ni $use_path)} { lappend use_path $dir @@ -551,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 @@ -562,6 +562,7 @@ 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] @@ -571,8 +572,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] @@ -589,25 +590,28 @@ proc tcl::MacOSXPkgUnknown {original name args} { * Resources Scripts pkgIndex.tcl] { set dir [file dirname $file] if {![info exists procdDirs($dir)]} { - try { - ::tcl::Pkg::source $file - } trap {POSIX EACCES} {} { + 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"} { # $file was not readable; silently ignore continue - } on error msg { + } + if {$code} { tclLog "error reading package index file $file: $msg" - } on ok {} { + } else { 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 { @@ -619,11 +623,11 @@ 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)] && ($dir ni $use_path)} { lappend use_path $dir @@ -649,12 +653,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. @@ -672,7 +676,7 @@ proc ::tcl::Pkg::Create {args} { # process arguments set len [llength $args] - if {$len < 6} { + if { $len < 6 } { error $err(wrongNumArgs) } @@ -686,14 +690,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] @@ -705,14 +709,14 @@ proc ::tcl::Pkg::Create {args} { } # Validate the parameters - if {![llength $opts(-name)]} { + if { [llength $opts(-name)] == 0 } { error [format $err(valueMissing) "-name"] } - if {![llength $opts(-version)]} { + if { [llength $opts(-version)] == 0 } { error [format $err(valueMissing) "-version"] } - if {!([llength $opts(-source)] || [llength $opts(-load)])} { + if { [llength $opts(-source)] == 0 && [llength $opts(-load)] == 0 } { error $err(noLoadOrSource) } @@ -736,7 +740,7 @@ proc ::tcl::Pkg::Create {args} { } } - if {[llength $lazyFileList]} { + if { [llength $lazyFileList] > 0 } { lappend cmdList "\[list tclPkgSetup \$dir $opts(-name)\ $opts(-version) [list $lazyFileList]\]" } diff --git a/library/reg/pkgIndex.tcl b/library/reg/pkgIndex.tcl index b1fe234..1241f2a 100755 --- a/library/reg/pkgIndex.tcl +++ b/library/reg/pkgIndex.tcl @@ -1,9 +1,9 @@ -if {([info commands ::tcl::pkgconfig] eq "") - || ([info sharedlibextension] ne ".dll")} return -if {[::tcl::pkgconfig get debug]} { - package ifneeded registry 1.3.2 \ - [list load [file join $dir tclreg13g.dll] registry] +if {![package vsatisfies [package provide Tcl] 8]} return +if {[info sharedlibextension] != ".dll"} return +if {[info exists ::tcl_platform(debug)]} { + package ifneeded registry 1.2.2 \ + [list load [file join $dir tclreg12g.dll] registry] } else { - package ifneeded registry 1.3.2 \ - [list load [file join $dir tclreg13.dll] registry] + package ifneeded registry 1.2.2 \ + [list load [file join $dir tclreg12.dll] registry] } diff --git a/library/safe.tcl b/library/safe.tcl index ea6391d..2dd4aed 100644 --- a/library/safe.tcl +++ b/library/safe.tcl @@ -151,18 +151,10 @@ proc ::safe::interpConfigure {args} { set item [::tcl::OptCurDesc $desc] set name [::tcl::OptName $item] switch -exact -- $name { - -accessPath { - return [list -accessPath $state(access_path)] - } - -statics { - return [list -statics $state(staticsok)] - } - -nested { - return [list -nested $state(nestedok)] - } - -deleteHook { - return [list -deleteHook $state(cleanupHook)] - } + -accessPath {return [list -accessPath $state(access_path)]} + -statics {return [list -statics $state(staticsok)]} + -nested {return [list -nested $state(nestedok)]} + -deleteHook {return [list -deleteHook $state(cleanupHook)]} -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* @@ -200,7 +192,7 @@ proc ::safe::interpConfigure {args} { if { ![::tcl::OptProcArgGiven -statics] && ![::tcl::OptProcArgGiven -noStatics] - } then { + } { set statics $state(staticsok) } else { set statics [InterpStatics] @@ -208,7 +200,7 @@ proc ::safe::interpConfigure {args} { if { [::tcl::OptProcArgGiven -nested] || [::tcl::OptProcArgGiven -nestedLoadOk] - } then { + } { set nested [InterpNested] } else { set nested $state(nestedok) @@ -465,19 +457,8 @@ proc ::safe::InterpInit { # 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 - } + AliasSubset $slave file \ + file dir.* join root.* ext.* tail path.* split # Subcommands of info foreach {subcommand alias} { @@ -494,16 +475,16 @@ proc ::safe::InterpInit { if {[catch {::interp eval $slave { source [file join $tcl_library init.tcl] - }} msg opt]} { + }} msg]} { Log $slave "can't source init.tcl ($msg)" - return -options $opt "can't source init.tcl into slave $slave ($msg)" + return -code error "can't source init.tcl into slave $slave ($msg)" } if {[catch {::interp eval $slave { source [file join $tcl_library tm.tcl] - }} msg opt]} { + }} msg]} { Log $slave "can't source tm.tcl ($msg)" - return -options $opt "can't source tm.tcl into slave $slave ($msg)" + return -code error "can't source tm.tcl into slave $slave ($msg)" } # Sync the paths used to search for Tcl modules. This can be done only @@ -557,9 +538,9 @@ proc ::safe::interpDelete {slave} { # remove the hook now, otherwise if the hook calls us somehow, # we'll loop unset state(cleanupHook) - try { + if {[catch { {*}$hook $slave - } on error err { + } err]} { Log $slave "Delete hook error ($err)" } } @@ -676,19 +657,7 @@ proc ::safe::CheckFileName {slave file} { } } -# 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. - -proc ::safe::AliasFileSubcommand {slave subcommand name} { - if {[string match ~* $name]} { - set name ./$name - } - tailcall ::interp invokehidden $slave tcl:file:$subcommand $name -} - # AliasGlob is the target of the "glob" alias in safe interpreters. - proc ::safe::AliasGlob {slave args} { Log $slave "GLOB ! $args" NOTICE set cmd {} @@ -752,12 +721,14 @@ proc ::safe::AliasGlob {slave args} { # access path of that slave. Done after basic argument processing so that # we know if -nocomplain is set. if {$got(-directory)} { - try { + if {[catch { set dir [TranslatePath $slave $virtualdir] DirInAccessPath $slave $dir - } on error msg { + } msg]} { Log $slave $msg - if {$got(-nocomplain)} return + if {$got(-nocomplain)} { + return + } return -code error "permission denied" } lappend cmd -directory $dir @@ -773,27 +744,26 @@ proc ::safe::AliasGlob {slave args} { foreach opt [lrange $args $at end] { if {![regexp $dirPartRE $opt -> thedir thefile]} { set thedir . - } elseif {[string match ~* $thedir]} { - set thedir ./$thedir } - if {$thedir eq "*" && - ($thefile eq "pkgIndex.tcl" || $thefile eq "*.tm")} { + if {$thedir eq "*"} { 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 {$thefile eq "pkgIndex.tcl" || $thefile eq "*.tm"} { + lappend cmd [file join $d $thefile] + set mapped 1 + } } } if {$mapped} continue } - try { - DirInAccessPath $slave [TranslatePath $slave \ - [file join $virtualdir $thedir]] - } on error msg { + if {[catch { + set thedir [file join $virtualdir $thedir] + DirInAccessPath $slave [TranslatePath $slave $thedir] + } msg]} { Log $slave $msg if {$got(-nocomplain)} continue return -code error "permission denied" @@ -806,19 +776,19 @@ proc ::safe::AliasGlob {slave args} { if {$got(-nocomplain) && [llength $cmd] eq $firstPattern} { return } - try { - set entries [::interp invokehidden $slave glob {*}$cmd] - } on error msg { + if {[catch { + ::interp invokehidden $slave glob {*}$cmd + } msg]} { Log $slave $msg return -code error "script error" } - Log $slave "GLOB < $entries" NOTICE + Log $slave "GLOB < $msg" NOTICE # Translate path back to what the slave should see. set res {} set l [string length $dir] - foreach p $entries { + foreach p $msg { if {[string equal -length $l $dir $p]} { set p [string replace $p 0 [expr {$l-1}] $virtualdir] } @@ -882,7 +852,6 @@ proc ::safe::AliasSource {slave args} { # 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 @@ -892,17 +861,14 @@ proc ::safe::AliasSource {slave args} { set contents [read $f] close $f ::interp eval $slave [list info script $file] + ::interp eval $slave $contents } 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 error "script error" } return -code $code -options $opt $msg } @@ -952,28 +918,30 @@ proc ::safe::AliasLoad {slave file args} { # file loading # get the real path from the virtual one. - try { + if {[catch { set file [TranslatePath $slave $file] - } on error msg { + } msg]} { Log $slave $msg return -code error "permission denied" } # check the translated path - try { + if {[catch { FileInAccessPath $slave $file - } on error msg { + } msg]} { Log $slave $msg return -code error "permission denied (path)" } } - try { - return [::interp invokehidden $slave load $file $package $target] - } on error msg { + if {[catch { + ::interp invokehidden $slave load $file $package $target + } msg]} { Log $slave $msg return -code error $msg } + + return $msg } # FileInAccessPath raises an error if the file is not found in the list of @@ -1018,33 +986,59 @@ proc ::safe::DirInAccessPath {slave dir} { } } -# This procedure is used to report an attempt to use an unsafe member of an -# ensemble command. +# This procedure enables access from a safe interpreter to only a subset +# of the subcommands of a command: -proc ::safe::BadSubcommand {slave command subcommand args} { +proc ::safe::Subset {slave command okpat args} { + set subcommand [lindex $args 0] + if {[regexp $okpat $subcommand]} { + return [$command {*}$args] + } set msg "not allowed to invoke subcommand $subcommand of $command" Log $slave $msg - return -code error -errorcode {TCL SAFE SUBCOMMAND} $msg + return -code error $msg +} + +# 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. +# +# Syntax is: AliasSubset slave alias target subcommand1 subcommand2... + +proc ::safe::AliasSubset {slave alias target args} { + set pat "^([join $args |])\$" + ::interp alias $slave $alias {}\ + [namespace current]::Subset $slave $target $pat } # 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\"" + # Careful; do not want empty option to get through to the [string equal] + if {[regexp {^(name.*|convert.*|)$} $option]} { + return [::interp invokehidden $slave encoding $option {*}$args] + } + + if {[string equal -length [string length $option] $option "system"]} { + if {[llength $args] == 0} { + # passed all the tests , lets source it: + if {[catch { + set sysenc [::interp invokehidden $slave encoding system] + } msg]} { + Log $slave $msg + return -code error "script error" + } + return $sysenc } - } on error {msg options} { - Log $slave $msg - return -options $options $msg + set msg "wrong # args: should be \"encoding system\"" + set code {TCL WRONGARGS} + } else { + set msg "bad option \"$option\": must be convertfrom, convertto, names, or system" + set code [list TCL LOOKUP INDEX option $option] } - tailcall ::interp invokehidden $slave encoding $option {*}$args + Log $slave $msg + return -code error -errorcode $code $msg } # Various minor hiding of platform features. [Bug 2913625] diff --git a/library/tclIndex b/library/tclIndex index 87a2814..010616f 100644 --- a/library/tclIndex +++ b/library/tclIndex @@ -1,5 +1,4 @@ # 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 @@ -7,69 +6,82 @@ # element name is the name of a command and the value is # a script that loads the command. -set auto_index(auto_reset) [list ::tcl::Pkg::source [file join $dir auto.tcl]] -set auto_index(tcl_findLibrary) [list ::tcl::Pkg::source [file join $dir auto.tcl]] -set auto_index(auto_mkindex) [list ::tcl::Pkg::source [file join $dir auto.tcl]] -set auto_index(auto_mkindex_old) [list ::tcl::Pkg::source [file join $dir auto.tcl]] -set auto_index(::auto_mkindex_parser::init) [list ::tcl::Pkg::source [file join $dir auto.tcl]] -set auto_index(::auto_mkindex_parser::cleanup) [list ::tcl::Pkg::source [file join $dir auto.tcl]] -set auto_index(::auto_mkindex_parser::mkindex) [list ::tcl::Pkg::source [file join $dir auto.tcl]] -set auto_index(::auto_mkindex_parser::hook) [list ::tcl::Pkg::source [file join $dir auto.tcl]] -set auto_index(::auto_mkindex_parser::slavehook) [list ::tcl::Pkg::source [file join $dir auto.tcl]] -set auto_index(::auto_mkindex_parser::command) [list ::tcl::Pkg::source [file join $dir auto.tcl]] -set auto_index(::auto_mkindex_parser::commandInit) [list ::tcl::Pkg::source [file join $dir auto.tcl]] -set auto_index(::auto_mkindex_parser::fullname) [list ::tcl::Pkg::source [file join $dir auto.tcl]] -set auto_index(history) [list ::tcl::Pkg::source [file join $dir history.tcl]] -set auto_index(::tcl::HistAdd) [list ::tcl::Pkg::source [file join $dir history.tcl]] -set auto_index(::tcl::HistKeep) [list ::tcl::Pkg::source [file join $dir history.tcl]] -set auto_index(::tcl::HistClear) [list ::tcl::Pkg::source [file join $dir history.tcl]] -set auto_index(::tcl::HistInfo) [list ::tcl::Pkg::source [file join $dir history.tcl]] -set auto_index(::tcl::HistRedo) [list ::tcl::Pkg::source [file join $dir history.tcl]] -set auto_index(::tcl::HistIndex) [list ::tcl::Pkg::source [file join $dir history.tcl]] -set auto_index(::tcl::HistEvent) [list ::tcl::Pkg::source [file join $dir history.tcl]] -set auto_index(::tcl::HistChange) [list ::tcl::Pkg::source [file join $dir history.tcl]] -set auto_index(pkg_mkIndex) [list ::tcl::Pkg::source [file join $dir package.tcl]] -set auto_index(tclPkgSetup) [list ::tcl::Pkg::source [file join $dir package.tcl]] -set auto_index(tclPkgUnknown) [list ::tcl::Pkg::source [file join $dir package.tcl]] -set auto_index(::tcl::MacOSXPkgUnknown) [list ::tcl::Pkg::source [file join $dir package.tcl]] -set auto_index(::pkg::create) [list ::tcl::Pkg::source [file join $dir package.tcl]] -set auto_index(parray) [list ::tcl::Pkg::source [file join $dir parray.tcl]] -set auto_index(::safe::InterpStatics) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::InterpNested) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::interpCreate) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::interpInit) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::CheckInterp) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::interpConfigure) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::InterpCreate) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::InterpSetConfig) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::interpFindInAccessPath) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::interpAddToAccessPath) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::InterpInit) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::AddSubDirs) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::interpDelete) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::setLogCmd) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::SyncAccessPath) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::PathToken) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::TranslatePath) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::Log) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::CheckFileName) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::AliasGlob) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::AliasSource) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::AliasLoad) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::FileInAccessPath) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::DirInAccessPath) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::Subset) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::AliasSubset) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(::safe::AliasEncoding) [list ::tcl::Pkg::source [file join $dir safe.tcl]] -set auto_index(tcl_wordBreakAfter) [list ::tcl::Pkg::source [file join $dir word.tcl]] -set auto_index(tcl_wordBreakBefore) [list ::tcl::Pkg::source [file join $dir word.tcl]] -set auto_index(tcl_endOfWord) [list ::tcl::Pkg::source [file join $dir word.tcl]] -set auto_index(tcl_startOfNextWord) [list ::tcl::Pkg::source [file join $dir word.tcl]] -set auto_index(tcl_startOfPreviousWord) [list ::tcl::Pkg::source [file join $dir word.tcl]] -set auto_index(::tcl::tm::add) [list ::tcl::Pkg::source [file join $dir tm.tcl]] -set auto_index(::tcl::tm::remove) [list ::tcl::Pkg::source [file join $dir tm.tcl]] -set auto_index(::tcl::tm::list) [list ::tcl::Pkg::source [file join $dir tm.tcl]] -set auto_index(::tcl::tm::Defaults) [list ::tcl::Pkg::source [file join $dir tm.tcl]] -set auto_index(::tcl::tm::UnknownHandler) [list ::tcl::Pkg::source [file join $dir tm.tcl]] -set auto_index(::tcl::tm::roots) [list ::tcl::Pkg::source [file join $dir tm.tcl]] -set auto_index(::tcl::tm::path) [list ::tcl::Pkg::source [file join $dir tm.tcl]] +set auto_index(auto_reset) [list source [file join $dir auto.tcl]] +set auto_index(tcl_findLibrary) [list source [file join $dir auto.tcl]] +set auto_index(auto_mkindex) [list source [file join $dir auto.tcl]] +set auto_index(auto_mkindex_old) [list source [file join $dir auto.tcl]] +set auto_index(::auto_mkindex_parser::init) [list source [file join $dir auto.tcl]] +set auto_index(::auto_mkindex_parser::cleanup) [list source [file join $dir auto.tcl]] +set auto_index(::auto_mkindex_parser::mkindex) [list source [file join $dir auto.tcl]] +set auto_index(::auto_mkindex_parser::hook) [list source [file join $dir auto.tcl]] +set auto_index(::auto_mkindex_parser::slavehook) [list source [file join $dir auto.tcl]] +set auto_index(::auto_mkindex_parser::command) [list source [file join $dir auto.tcl]] +set auto_index(::auto_mkindex_parser::commandInit) [list source [file join $dir auto.tcl]] +set auto_index(::auto_mkindex_parser::fullname) [list source [file join $dir auto.tcl]] +set auto_index(history) [list source [file join $dir history.tcl]] +set auto_index(::tcl::HistAdd) [list source [file join $dir history.tcl]] +set auto_index(::tcl::HistKeep) [list source [file join $dir history.tcl]] +set auto_index(::tcl::HistClear) [list source [file join $dir history.tcl]] +set auto_index(::tcl::HistInfo) [list source [file join $dir history.tcl]] +set auto_index(::tcl::HistRedo) [list source [file join $dir history.tcl]] +set auto_index(::tcl::HistIndex) [list source [file join $dir history.tcl]] +set auto_index(::tcl::HistEvent) [list source [file join $dir history.tcl]] +set auto_index(::tcl::HistChange) [list source [file join $dir history.tcl]] +set auto_index(pkg_mkIndex) [list source [file join $dir package.tcl]] +set auto_index(tclPkgSetup) [list source [file join $dir package.tcl]] +set auto_index(tclPkgUnknown) [list source [file join $dir package.tcl]] +set auto_index(::tcl::MacOSXPkgUnknown) [list source [file join $dir package.tcl]] +set auto_index(::pkg::create) [list source [file join $dir package.tcl]] +set auto_index(parray) [list source [file join $dir parray.tcl]] +set auto_index(::safe::InterpStatics) [list source [file join $dir safe.tcl]] +set auto_index(::safe::InterpNested) [list source [file join $dir safe.tcl]] +set auto_index(::safe::interpCreate) [list source [file join $dir safe.tcl]] +set auto_index(::safe::interpInit) [list source [file join $dir safe.tcl]] +set auto_index(::safe::CheckInterp) [list source [file join $dir safe.tcl]] +set auto_index(::safe::interpConfigure) [list source [file join $dir safe.tcl]] +set auto_index(::safe::InterpCreate) [list source [file join $dir safe.tcl]] +set auto_index(::safe::InterpSetConfig) [list source [file join $dir safe.tcl]] +set auto_index(::safe::interpFindInAccessPath) [list source [file join $dir safe.tcl]] +set auto_index(::safe::interpAddToAccessPath) [list source [file join $dir safe.tcl]] +set auto_index(::safe::InterpInit) [list source [file join $dir safe.tcl]] +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::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::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]] +set auto_index(tcl_wordBreakAfter) [list source [file join $dir word.tcl]] +set auto_index(tcl_wordBreakBefore) [list source [file join $dir word.tcl]] +set auto_index(tcl_endOfWord) [list source [file join $dir word.tcl]] +set auto_index(tcl_startOfNextWord) [list source [file join $dir word.tcl]] +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::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 5ac8823..987725f 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.4.0 [list source [file join $dir tcltest.tcl]] +package ifneeded tcltest 2.3.8 [list source [file join $dir tcltest.tcl]] diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl index 75975d2..8e43859 100644 --- a/library/tcltest/tcltest.tcl +++ b/library/tcltest/tcltest.tcl @@ -16,13 +16,13 @@ # Contributions from Don Porter, NIST, 2002. (not subject to US copyright) # All rights reserved. -package require Tcl 8.5- ;# -verbose line uses [info frame] +package require Tcl 8.5 ;# -verbose line uses [info frame] 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.4.0 + variable Version 2.3.8 # Compatibility support for dumb variables defined in tcltest 1 # Do not use these. Call [package provide Tcl] and [info patchlevel] @@ -347,7 +347,7 @@ namespace eval tcltest { # This is very subtle and tricky, so let me try to explain. # (Hopefully this longer comment will be clear when I come # back in a few months, unlike its predecessor :) ) - # + # # The [outputChannel] command (and underlying variable) have to # be kept in sync with the [configure -outfile] configuration # option ( and underlying variable Option(-outfile) ). This is @@ -362,12 +362,12 @@ namespace eval tcltest { # configuration options to parse the command line option the first # time they are read. These traces are cancelled whenever the # program itself calls [configure]. - # + # # OK, then so to support tcltest 1 compatibility, it seems we want # to get the return from [outputFile] to trigger the read traces, # just in case. # - # BUT! A little known feature of Tcl variable traces is that + # BUT! A little known feature of Tcl variable traces is that # traces are disabled during the handling of other traces. So, # if we trigger read traces on Option(-outfile) and that triggers # command line parsing which turns around and sets an initial @@ -608,30 +608,19 @@ namespace eval tcltest { set code [catch {Configure {*}$args} msg] return -code $code $msg } - + proc AcceptVerbose { level } { set level [AcceptList $level] - set levelMap { - l list - p pass - b body - s skip - t start - e error - l line - m msec - u usec - } - set levelRegexp "^([join [dict values $levelMap] |])\$" if {[llength $level] == 1} { - if {![regexp $levelRegexp $level]} { + if {![regexp {^(pass|body|skip|start|error|line)$} $level]} { # translate single characters abbreviations to expanded list - set level [string map $levelMap [split $level {}]] + set level [string map {p pass b body s skip t start e error l line} \ + [split $level {}]] } } set valid [list] foreach v $level { - if {[regexp $levelRegexp $v]} { + if {[regexp {^(pass|body|skip|start|error|line)$} $v]} { lappend valid $v } } @@ -650,7 +639,7 @@ namespace eval tcltest { skipped tests if 's' is specified, the bodies of failed tests if 'b' is specified, and when tests start if 't' is specified. ErrorInfo is displayed if 'e' is specified. Source file line - information of failed tests is displayed if 'l' is specified. + information of failed tests is displayed if 'l' is specified. } AcceptVerbose verbose # Match and skip patterns default to the empty list, except for @@ -698,7 +687,7 @@ namespace eval tcltest { # some additional output regarding operations of the test harness. # The tcltest package currently implements only up to debug level 3. Option -debug 0 { - Internal debug level + Internal debug level } AcceptInteger debug proc SetSelectedConstraints args { @@ -726,7 +715,7 @@ namespace eval tcltest { } Option -limitconstraints 0 { whether to run only tests with the constraints - } AcceptBoolean limitConstraints + } AcceptBoolean limitConstraints trace add variable Option(-limitconstraints) write \ [namespace code {ClearUnselectedConstraints ;#}] @@ -739,7 +728,7 @@ namespace eval tcltest { # Default is to run each test file in a separate process Option -singleproc 0 { whether to run all tests in one process - } AcceptBoolean singleProcess + } AcceptBoolean singleProcess proc AcceptTemporaryDirectory { directory } { set directory [AcceptAbsolutePath $directory] @@ -1268,7 +1257,7 @@ proc tcltest::DefineConstraintInitializers {} { # setting files into nonblocking mode. ConstraintInitializer nonBlockFiles { - set code [expr {[catch {set f [open defs r]}] + set code [expr {[catch {set f [open defs r]}] || [catch {chan configure $f -blocking off}]}] catch {close $f} set code @@ -1282,7 +1271,7 @@ proc tcltest::DefineConstraintInitializers {} { # (Mark Diekhans). ConstraintInitializer asyncPipeClose {expr { - !([string equal unix $::tcl_platform(platform)] + !([string equal unix $::tcl_platform(platform)] && ([catch {exec uname -X | fgrep {Release = 3.2v}}] == 0))}} # Test to see if we have a broken version of sprintf with respect @@ -1965,7 +1954,7 @@ proc tcltest::test {name description args} { return } - # Save information about the core file. + # Save information about the core file. if {[preserveCore]} { if {[file exists [file join [workingDirectory] core]]} { set coreModTime [file mtime [file join [workingDirectory] core]] @@ -1983,11 +1972,6 @@ proc tcltest::test {name description args} { # Only run the test body if the setup was successful if {!$setupFailure} { - # Register startup time - if {[IsVerbose msec] || [IsVerbose usec]} { - set timeStart [clock microseconds] - } - # Verbose notification of $body start if {[IsVerbose start]} { puts [outputChannel] "---- $name start" @@ -2076,7 +2060,7 @@ proc tcltest::test {name description args} { } else { set coreFailure 1 } - + if {([preserveCore] > 1) && ($coreFailure)} { append coreMsg "\nMoving file to:\ [file join [temporaryDirectory] core-$name]" @@ -2092,16 +2076,6 @@ proc tcltest::test {name description args} { } } - if {[IsVerbose msec] || [IsVerbose usec]} { - set t [expr {[clock microseconds] - $timeStart}] - if {[IsVerbose usec]} { - puts [outputChannel] "++++ $name took $t μs" - } - if {[IsVerbose msec]} { - puts [outputChannel] "++++ $name took [expr {round($t/1000.)}] ms" - } - } - # if we didn't experience any failures, then we passed variable numTests if {!($setupFailure || $cleanupFailure || $coreFailure @@ -2126,7 +2100,7 @@ proc tcltest::test {name description args} { variable currentFailure true if {![IsVerbose body]} { set body "" - } + } puts [outputChannel] "\n" if {[IsVerbose line]} { if {![catch {set testFrame [info frame -1]}] && @@ -2147,7 +2121,7 @@ proc tcltest::test {name description args} { puts [outputChannel] "$testFile:$testLine: error: test failed:\ $name [string trim $description]" } - } + } puts [outputChannel] "==== $name\ [string trim $description] FAILED" if {[string length $body]} { @@ -2303,7 +2277,7 @@ proc tcltest::Skipped {name constraints} { } } } - + if {!$doTest} { if {[IsVerbose skip]} { puts [outputChannel] "++++ $name SKIPPED: $constraints" @@ -2709,7 +2683,7 @@ proc tcltest::GetMatchingDirectories {rootdir} { DebugPuts 1 "No test directories remain after applying match\ and skip patterns!" } - return [lsort $matchDirs] + return $matchDirs } # tcltest::runAllTests -- @@ -2860,9 +2834,9 @@ proc tcltest::runAllTests { {shell ""} } { set dir [file tail $directory] puts [outputChannel] [string repeat ~ 44] puts [outputChannel] "$dir test began at [eval $timeCmd]\n" - + uplevel 1 [list ::source [file join $directory all.tcl]] - + set endTime [eval $timeCmd] puts [outputChannel] "\n$dir test ended at $endTime" puts [outputChannel] "" @@ -3045,7 +3019,7 @@ proc tcltest::removeFile {name {directory ""}} { DebugDo 1 { Warn "removeFile removing \"$fullName\":\n not created by makeFile" } - } + } if {![file isfile $fullName]} { DebugDo 1 { Warn "removeFile removing \"$fullName\":\n not a file" @@ -3116,7 +3090,7 @@ proc tcltest::removeDirectory {name {directory ""}} { Warn "removeDirectory removing \"$fullName\":\n not created\ by makeDirectory" } - } + } if {![file isdirectory $fullName]} { DebugDo 1 { Warn "removeDirectory removing \"$fullName\":\n not a directory" @@ -3311,7 +3285,7 @@ proc tcltest::threadReap {} { testthread errorproc ThreadError return [llength [testthread names]] } elseif {[info commands thread::id] ne {}} { - + # Thread extension thread::errorproc ThreadNullError diff --git a/library/tm.tcl b/library/tm.tcl index 66c56a1..87db0df 100644 --- a/library/tm.tcl +++ b/library/tm.tcl @@ -1,44 +1,48 @@ # -*- 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. @@ -67,43 +71,46 @@ 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 {args} { +proc ::tcl::tm::add {path 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 $args { + foreach p [linsert $args 0 $path] { 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. @@ -112,9 +119,10 @@ proc ::tcl::tm::add {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]} { @@ -126,23 +134,24 @@ proc ::tcl::tm::add {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 {args} { +proc ::tcl::tm::remove {path 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 $args { + foreach p [linsert $args 0 $path] { set pos [lsearch -exact $paths $p] if {$pos >= 0} { set paths [lreplace $paths $pos $pos] @@ -168,16 +177,17 @@ 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. @@ -186,8 +196,8 @@ proc ::tcl::tm::UnknownHandler {original name args} { 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] @@ -196,10 +206,11 @@ 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 { @@ -212,11 +223,12 @@ 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 @@ -226,15 +238,13 @@ 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 } - try { - package vcompare $pkgversion 0 - } on error {} { - # Ignore everything where the version part is not - # acceptable to "package vcompare". + if {[catch {package vcompare $pkgversion 0}]} { + # Ignore everything where the version part is + # not acceptable to "package vcompare". continue } @@ -247,36 +257,38 @@ proc ::tcl::tm::UnknownHandler {original name args} { 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. + # 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]} { 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. } } } @@ -287,8 +299,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] @@ -354,22 +366,22 @@ proc ::tcl::tm::Defaults {} { # Calls 'path add' to paths to the list of module search paths. proc ::tcl::tm::roots {paths} { - regexp {^(\d+)\.(\d+)} [package present Tcl] - major minor + 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/America/Cambridge_Bay b/library/tzdata/America/Cambridge_Bay index 3115ee1..23004bb 100644 --- a/library/tzdata/America/Cambridge_Bay +++ b/library/tzdata/America/Cambridge_Bay @@ -1,7 +1,7 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:America/Cambridge_Bay) { - {-9223372036854775808 0 0 -00} + {-9223372036854775808 0 0 zzz} {-1577923200 -25200 0 MST} {-880210800 -21600 1 MWT} {-769395600 -21600 1 MPT} diff --git a/library/tzdata/America/Caracas b/library/tzdata/America/Caracas index 253c4ce..2ba87ae 100644 --- a/library/tzdata/America/Caracas +++ b/library/tzdata/America/Caracas @@ -6,5 +6,4 @@ set TZData(:America/Caracas) { {-1826739140 -16200 0 VET} {-157750200 -14400 0 VET} {1197183600 -16200 0 VET} - {1462086000 -14400 0 VET} } diff --git a/library/tzdata/America/Cayman b/library/tzdata/America/Cayman index 92ce5e2..5231ca9 100644 --- a/library/tzdata/America/Cayman +++ b/library/tzdata/America/Cayman @@ -1,5 +1,176 @@ # created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Panama)]} { - LoadTimeZoneFile America/Panama + +set TZData(:America/Cayman) { + {-9223372036854775808 -19532 0 LMT} + {-2524502068 -18431 0 KMT} + {-1827687169 -18000 0 EST} + {1451624400 -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} } -set TZData(:America/Cayman) $TZData(:America/Panama) diff --git a/library/tzdata/America/Inuvik b/library/tzdata/America/Inuvik index 08f0fd6..dd0d151 100644 --- a/library/tzdata/America/Inuvik +++ b/library/tzdata/America/Inuvik @@ -1,7 +1,7 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:America/Inuvik) { - {-9223372036854775808 0 0 -00} + {-9223372036854775808 0 0 zzz} {-536457600 -28800 0 PST} {-147888000 -21600 1 PDDT} {-131558400 -28800 0 PST} diff --git a/library/tzdata/America/Iqaluit b/library/tzdata/America/Iqaluit index ff82866..2a2e9fe 100644 --- a/library/tzdata/America/Iqaluit +++ b/library/tzdata/America/Iqaluit @@ -1,7 +1,7 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:America/Iqaluit) { - {-9223372036854775808 0 0 -00} + {-9223372036854775808 0 0 zzz} {-865296000 -14400 0 EWT} {-769395600 -14400 1 EPT} {-765396000 -18000 0 EST} diff --git a/library/tzdata/America/Los_Angeles b/library/tzdata/America/Los_Angeles index 8e26526..da6ca99 100644 --- a/library/tzdata/America/Los_Angeles +++ b/library/tzdata/America/Los_Angeles @@ -11,41 +11,41 @@ set TZData(:America/Los_Angeles) { {-769395600 -25200 1 PPT} {-765385200 -28800 0 PST} {-757353600 -28800 0 PST} - {-687967140 -25200 1 PDT} + {-687967200 -25200 1 PDT} {-662655600 -28800 0 PST} - {-620838000 -25200 1 PDT} + {-620834400 -25200 1 PDT} {-608137200 -28800 0 PST} - {-589388400 -25200 1 PDT} + {-589384800 -25200 1 PDT} {-576082800 -28800 0 PST} - {-557938800 -25200 1 PDT} + {-557935200 -25200 1 PDT} {-544633200 -28800 0 PST} - {-526489200 -25200 1 PDT} + {-526485600 -25200 1 PDT} {-513183600 -28800 0 PST} - {-495039600 -25200 1 PDT} + {-495036000 -25200 1 PDT} {-481734000 -28800 0 PST} - {-463590000 -25200 1 PDT} + {-463586400 -25200 1 PDT} {-450284400 -28800 0 PST} - {-431535600 -25200 1 PDT} + {-431532000 -25200 1 PDT} {-418230000 -28800 0 PST} - {-400086000 -25200 1 PDT} + {-400082400 -25200 1 PDT} {-386780400 -28800 0 PST} - {-368636400 -25200 1 PDT} + {-368632800 -25200 1 PDT} {-355330800 -28800 0 PST} - {-337186800 -25200 1 PDT} + {-337183200 -25200 1 PDT} {-323881200 -28800 0 PST} - {-305737200 -25200 1 PDT} + {-305733600 -25200 1 PDT} {-292431600 -28800 0 PST} - {-273682800 -25200 1 PDT} + {-273679200 -25200 1 PDT} {-260982000 -28800 0 PST} - {-242233200 -25200 1 PDT} + {-242229600 -25200 1 PDT} {-226508400 -28800 0 PST} - {-210783600 -25200 1 PDT} + {-210780000 -25200 1 PDT} {-195058800 -28800 0 PST} - {-179334000 -25200 1 PDT} + {-179330400 -25200 1 PDT} {-163609200 -28800 0 PST} - {-147884400 -25200 1 PDT} + {-147880800 -25200 1 PDT} {-131554800 -28800 0 PST} - {-116434800 -25200 1 PDT} + {-116431200 -25200 1 PDT} {-100105200 -28800 0 PST} {-94665600 -28800 0 PST} {-84376800 -25200 1 PDT} diff --git a/library/tzdata/America/Metlakatla b/library/tzdata/America/Metlakatla index 407948d..8ea80fa 100644 --- a/library/tzdata/America/Metlakatla +++ b/library/tzdata/America/Metlakatla @@ -40,173 +40,4 @@ set TZData(:America/Metlakatla) { {404902800 -28800 0 PST} {420026400 -25200 1 PDT} {436356000 -28800 0 PST} - {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/Pangnirtung b/library/tzdata/America/Pangnirtung index 14d8516..640808e 100644 --- a/library/tzdata/America/Pangnirtung +++ b/library/tzdata/America/Pangnirtung @@ -1,7 +1,7 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:America/Pangnirtung) { - {-9223372036854775808 0 0 -00} + {-9223372036854775808 0 0 zzz} {-1546300800 -14400 0 AST} {-880221600 -10800 1 AWT} {-769395600 -10800 1 APT} diff --git a/library/tzdata/America/Port-au-Prince b/library/tzdata/America/Port-au-Prince index b8b60d6..f1d7fc4 100644 --- a/library/tzdata/America/Port-au-Prince +++ b/library/tzdata/America/Port-au-Prince @@ -46,4 +46,172 @@ set TZData(:America/Port-au-Prince) { {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/Rankin_Inlet b/library/tzdata/America/Rankin_Inlet index 9ce9f8d..770ec5d 100644 --- a/library/tzdata/America/Rankin_Inlet +++ b/library/tzdata/America/Rankin_Inlet @@ -1,7 +1,7 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:America/Rankin_Inlet) { - {-9223372036854775808 0 0 -00} + {-9223372036854775808 0 0 zzz} {-410227200 -21600 0 CST} {-147895200 -14400 1 CDDT} {-131565600 -21600 0 CST} diff --git a/library/tzdata/America/Resolute b/library/tzdata/America/Resolute index a9881b4..b4c0bab 100644 --- a/library/tzdata/America/Resolute +++ b/library/tzdata/America/Resolute @@ -1,7 +1,7 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:America/Resolute) { - {-9223372036854775808 0 0 -00} + {-9223372036854775808 0 0 zzz} {-704937600 -21600 0 CST} {-147895200 -14400 1 CDDT} {-131565600 -21600 0 CST} diff --git a/library/tzdata/America/Santa_Isabel b/library/tzdata/America/Santa_Isabel index a3a3b4f..87cb5a8 100644 --- a/library/tzdata/America/Santa_Isabel +++ b/library/tzdata/America/Santa_Isabel @@ -1,5 +1,284 @@ # created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(America/Tijuana)]} { - LoadTimeZoneFile America/Tijuana + +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} } -set TZData(:America/Santa_Isabel) $TZData(:America/Tijuana) diff --git a/library/tzdata/America/Santiago b/library/tzdata/America/Santiago index 3a5c0fd..b6d9b38 100644 --- a/library/tzdata/America/Santiago +++ b/library/tzdata/America/Santiago @@ -118,172 +118,5 @@ set TZData(:America/Santiago) { {1378612800 -10800 1 CLST} {1398567600 -14400 0 CLT} {1410062400 -10800 1 CLST} - {1463281200 -14400 0 CLT} - {1471147200 -10800 1 CLST} - {1494730800 -14400 0 CLT} - {1502596800 -10800 1 CLST} - {1526180400 -14400 0 CLT} - {1534046400 -10800 1 CLST} - {1557630000 -14400 0 CLT} - {1565496000 -10800 1 CLST} - {1589079600 -14400 0 CLT} - {1596945600 -10800 1 CLST} - {1620529200 -14400 0 CLT} - {1629000000 -10800 1 CLST} - {1652583600 -14400 0 CLT} - {1660449600 -10800 1 CLST} - {1684033200 -14400 0 CLT} - {1691899200 -10800 1 CLST} - {1715482800 -14400 0 CLT} - {1723348800 -10800 1 CLST} - {1746932400 -14400 0 CLT} - {1754798400 -10800 1 CLST} - {1778382000 -14400 0 CLT} - {1786248000 -10800 1 CLST} - {1809831600 -14400 0 CLT} - {1818302400 -10800 1 CLST} - {1841886000 -14400 0 CLT} - {1849752000 -10800 1 CLST} - {1873335600 -14400 0 CLT} - {1881201600 -10800 1 CLST} - {1904785200 -14400 0 CLT} - {1912651200 -10800 1 CLST} - {1936234800 -14400 0 CLT} - {1944100800 -10800 1 CLST} - {1967684400 -14400 0 CLT} - {1976155200 -10800 1 CLST} - {1999738800 -14400 0 CLT} - {2007604800 -10800 1 CLST} - {2031188400 -14400 0 CLT} - {2039054400 -10800 1 CLST} - {2062638000 -14400 0 CLT} - {2070504000 -10800 1 CLST} - {2094087600 -14400 0 CLT} - {2101953600 -10800 1 CLST} - {2125537200 -14400 0 CLT} - {2133403200 -10800 1 CLST} - {2156986800 -14400 0 CLT} - {2165457600 -10800 1 CLST} - {2189041200 -14400 0 CLT} - {2196907200 -10800 1 CLST} - {2220490800 -14400 0 CLT} - {2228356800 -10800 1 CLST} - {2251940400 -14400 0 CLT} - {2259806400 -10800 1 CLST} - {2283390000 -14400 0 CLT} - {2291256000 -10800 1 CLST} - {2314839600 -14400 0 CLT} - {2322705600 -10800 1 CLST} - {2346894000 -14400 0 CLT} - {2354760000 -10800 1 CLST} - {2378343600 -14400 0 CLT} - {2386209600 -10800 1 CLST} - {2409793200 -14400 0 CLT} - {2417659200 -10800 1 CLST} - {2441242800 -14400 0 CLT} - {2449108800 -10800 1 CLST} - {2472692400 -14400 0 CLT} - {2480558400 -10800 1 CLST} - {2504142000 -14400 0 CLT} - {2512612800 -10800 1 CLST} - {2536196400 -14400 0 CLT} - {2544062400 -10800 1 CLST} - {2567646000 -14400 0 CLT} - {2575512000 -10800 1 CLST} - {2599095600 -14400 0 CLT} - {2606961600 -10800 1 CLST} - {2630545200 -14400 0 CLT} - {2638411200 -10800 1 CLST} - {2661994800 -14400 0 CLT} - {2669860800 -10800 1 CLST} - {2693444400 -14400 0 CLT} - {2701915200 -10800 1 CLST} - {2725498800 -14400 0 CLT} - {2733364800 -10800 1 CLST} - {2756948400 -14400 0 CLT} - {2764814400 -10800 1 CLST} - {2788398000 -14400 0 CLT} - {2796264000 -10800 1 CLST} - {2819847600 -14400 0 CLT} - {2827713600 -10800 1 CLST} - {2851297200 -14400 0 CLT} - {2859768000 -10800 1 CLST} - {2883351600 -14400 0 CLT} - {2891217600 -10800 1 CLST} - {2914801200 -14400 0 CLT} - {2922667200 -10800 1 CLST} - {2946250800 -14400 0 CLT} - {2954116800 -10800 1 CLST} - {2977700400 -14400 0 CLT} - {2985566400 -10800 1 CLST} - {3009150000 -14400 0 CLT} - {3017016000 -10800 1 CLST} - {3040599600 -14400 0 CLT} - {3049070400 -10800 1 CLST} - {3072654000 -14400 0 CLT} - {3080520000 -10800 1 CLST} - {3104103600 -14400 0 CLT} - {3111969600 -10800 1 CLST} - {3135553200 -14400 0 CLT} - {3143419200 -10800 1 CLST} - {3167002800 -14400 0 CLT} - {3174868800 -10800 1 CLST} - {3198452400 -14400 0 CLT} - {3206318400 -10800 1 CLST} - {3230506800 -14400 0 CLT} - {3238372800 -10800 1 CLST} - {3261956400 -14400 0 CLT} - {3269822400 -10800 1 CLST} - {3293406000 -14400 0 CLT} - {3301272000 -10800 1 CLST} - {3324855600 -14400 0 CLT} - {3332721600 -10800 1 CLST} - {3356305200 -14400 0 CLT} - {3364171200 -10800 1 CLST} - {3387754800 -14400 0 CLT} - {3396225600 -10800 1 CLST} - {3419809200 -14400 0 CLT} - {3427675200 -10800 1 CLST} - {3451258800 -14400 0 CLT} - {3459124800 -10800 1 CLST} - {3482708400 -14400 0 CLT} - {3490574400 -10800 1 CLST} - {3514158000 -14400 0 CLT} - {3522024000 -10800 1 CLST} - {3545607600 -14400 0 CLT} - {3553473600 -10800 1 CLST} - {3577057200 -14400 0 CLT} - {3585528000 -10800 1 CLST} - {3609111600 -14400 0 CLT} - {3616977600 -10800 1 CLST} - {3640561200 -14400 0 CLT} - {3648427200 -10800 1 CLST} - {3672010800 -14400 0 CLT} - {3679876800 -10800 1 CLST} - {3703460400 -14400 0 CLT} - {3711326400 -10800 1 CLST} - {3734910000 -14400 0 CLT} - {3743380800 -10800 1 CLST} - {3766964400 -14400 0 CLT} - {3774830400 -10800 1 CLST} - {3798414000 -14400 0 CLT} - {3806280000 -10800 1 CLST} - {3829863600 -14400 0 CLT} - {3837729600 -10800 1 CLST} - {3861313200 -14400 0 CLT} - {3869179200 -10800 1 CLST} - {3892762800 -14400 0 CLT} - {3900628800 -10800 1 CLST} - {3924212400 -14400 0 CLT} - {3932683200 -10800 1 CLST} - {3956266800 -14400 0 CLT} - {3964132800 -10800 1 CLST} - {3987716400 -14400 0 CLT} - {3995582400 -10800 1 CLST} - {4019166000 -14400 0 CLT} - {4027032000 -10800 1 CLST} - {4050615600 -14400 0 CLT} - {4058481600 -10800 1 CLST} - {4082065200 -14400 0 CLT} - {4089931200 -10800 1 CLST} + {1430017200 -10800 0 CLT} } diff --git a/library/tzdata/America/Tijuana b/library/tzdata/America/Tijuana index 4b7ebe7..6118cde 100644 --- a/library/tzdata/America/Tijuana +++ b/library/tzdata/America/Tijuana @@ -14,19 +14,19 @@ set TZData(:America/Tijuana) { {-686073600 -25200 1 PDT} {-661539600 -28800 0 PST} {-504892800 -28800 0 PST} - {-495039600 -25200 1 PDT} + {-495036000 -25200 1 PDT} {-481734000 -28800 0 PST} - {-463590000 -25200 1 PDT} + {-463586400 -25200 1 PDT} {-450284400 -28800 0 PST} - {-431535600 -25200 1 PDT} + {-431532000 -25200 1 PDT} {-418230000 -28800 0 PST} - {-400086000 -25200 1 PDT} + {-400082400 -25200 1 PDT} {-386780400 -28800 0 PST} - {-368636400 -25200 1 PDT} + {-368632800 -25200 1 PDT} {-355330800 -28800 0 PST} - {-337186800 -25200 1 PDT} + {-337183200 -25200 1 PDT} {-323881200 -28800 0 PST} - {-305737200 -25200 1 PDT} + {-305733600 -25200 1 PDT} {-292431600 -28800 0 PST} {-283968000 -28800 0 PST} {189331200 -28800 0 PST} diff --git a/library/tzdata/America/Yellowknife b/library/tzdata/America/Yellowknife index c6c4ed5..44ca658 100644 --- a/library/tzdata/America/Yellowknife +++ b/library/tzdata/America/Yellowknife @@ -1,7 +1,7 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:America/Yellowknife) { - {-9223372036854775808 0 0 -00} + {-9223372036854775808 0 0 zzz} {-1104537600 -25200 0 MST} {-880210800 -21600 1 MWT} {-769395600 -21600 1 MPT} diff --git a/library/tzdata/Antarctica/Casey b/library/tzdata/Antarctica/Casey index beb0f9e..56d5df7 100644 --- a/library/tzdata/Antarctica/Casey +++ b/library/tzdata/Antarctica/Casey @@ -1,11 +1,10 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Antarctica/Casey) { - {-9223372036854775808 0 0 -00} - {-31536000 28800 0 +08} - {1255802400 39600 0 +11} - {1267714800 28800 0 +08} - {1319738400 39600 0 +11} - {1329843600 28800 0 +08} - {1477065600 39600 0 +11} + {-9223372036854775808 0 0 zzz} + {-31536000 28800 0 AWST} + {1255802400 39600 0 CAST} + {1267714800 28800 0 AWST} + {1319738400 39600 0 CAST} + {1329843600 28800 0 AWST} } diff --git a/library/tzdata/Antarctica/Davis b/library/tzdata/Antarctica/Davis index 9bb178b..2762d2f 100644 --- a/library/tzdata/Antarctica/Davis +++ b/library/tzdata/Antarctica/Davis @@ -1,12 +1,12 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Antarctica/Davis) { - {-9223372036854775808 0 0 -00} - {-409190400 25200 0 +07} - {-163062000 0 0 -00} - {-28857600 25200 0 +07} - {1255806000 18000 0 +05} - {1268251200 25200 0 +07} - {1319742000 18000 0 +05} - {1329854400 25200 0 +07} + {-9223372036854775808 0 0 zzz} + {-409190400 25200 0 DAVT} + {-163062000 0 0 zzz} + {-28857600 25200 0 DAVT} + {1255806000 18000 0 DAVT} + {1268251200 25200 0 DAVT} + {1319742000 18000 0 DAVT} + {1329854400 25200 0 DAVT} } diff --git a/library/tzdata/Antarctica/DumontDUrville b/library/tzdata/Antarctica/DumontDUrville index f734aed..41dc1e3 100644 --- a/library/tzdata/Antarctica/DumontDUrville +++ b/library/tzdata/Antarctica/DumontDUrville @@ -1,8 +1,8 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Antarctica/DumontDUrville) { - {-9223372036854775808 0 0 -00} - {-725846400 36000 0 +10} - {-566992800 0 0 -00} - {-415497600 36000 0 +10} + {-9223372036854775808 0 0 zzz} + {-725846400 36000 0 PMT} + {-566992800 0 0 zzz} + {-415497600 36000 0 DDUT} } diff --git a/library/tzdata/Antarctica/Macquarie b/library/tzdata/Antarctica/Macquarie index 9ed0630..07ddff6 100644 --- a/library/tzdata/Antarctica/Macquarie +++ b/library/tzdata/Antarctica/Macquarie @@ -1,12 +1,12 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Antarctica/Macquarie) { - {-9223372036854775808 0 0 -00} + {-9223372036854775808 0 0 zzz} {-2214259200 36000 0 AEST} {-1680508800 39600 1 AEDT} {-1669892400 39600 0 AEDT} {-1665392400 36000 0 AEST} - {-1601719200 0 0 -00} + {-1601719200 0 0 zzz} {-94730400 36000 0 AEST} {-71136000 39600 1 AEDT} {-55411200 36000 0 AEST} diff --git a/library/tzdata/Antarctica/Mawson b/library/tzdata/Antarctica/Mawson index 4828b1a..ba03ba1 100644 --- a/library/tzdata/Antarctica/Mawson +++ b/library/tzdata/Antarctica/Mawson @@ -1,7 +1,7 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Antarctica/Mawson) { - {-9223372036854775808 0 0 -00} - {-501206400 21600 0 +06} - {1255809600 18000 0 +05} + {-9223372036854775808 0 0 zzz} + {-501206400 21600 0 MAWT} + {1255809600 18000 0 MAWT} } diff --git a/library/tzdata/Antarctica/Palmer b/library/tzdata/Antarctica/Palmer index 62b17e1..2c43861 100644 --- a/library/tzdata/Antarctica/Palmer +++ b/library/tzdata/Antarctica/Palmer @@ -1,7 +1,7 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Antarctica/Palmer) { - {-9223372036854775808 0 0 -00} + {-9223372036854775808 0 0 zzz} {-157766400 -14400 0 ART} {-152654400 -14400 0 ART} {-132955200 -10800 1 ARST} @@ -81,172 +81,5 @@ set TZData(:Antarctica/Palmer) { {1378612800 -10800 1 CLST} {1398567600 -14400 0 CLT} {1410062400 -10800 1 CLST} - {1463281200 -14400 0 CLT} - {1471147200 -10800 1 CLST} - {1494730800 -14400 0 CLT} - {1502596800 -10800 1 CLST} - {1526180400 -14400 0 CLT} - {1534046400 -10800 1 CLST} - {1557630000 -14400 0 CLT} - {1565496000 -10800 1 CLST} - {1589079600 -14400 0 CLT} - {1596945600 -10800 1 CLST} - {1620529200 -14400 0 CLT} - {1629000000 -10800 1 CLST} - {1652583600 -14400 0 CLT} - {1660449600 -10800 1 CLST} - {1684033200 -14400 0 CLT} - {1691899200 -10800 1 CLST} - {1715482800 -14400 0 CLT} - {1723348800 -10800 1 CLST} - {1746932400 -14400 0 CLT} - {1754798400 -10800 1 CLST} - {1778382000 -14400 0 CLT} - {1786248000 -10800 1 CLST} - {1809831600 -14400 0 CLT} - {1818302400 -10800 1 CLST} - {1841886000 -14400 0 CLT} - {1849752000 -10800 1 CLST} - {1873335600 -14400 0 CLT} - {1881201600 -10800 1 CLST} - {1904785200 -14400 0 CLT} - {1912651200 -10800 1 CLST} - {1936234800 -14400 0 CLT} - {1944100800 -10800 1 CLST} - {1967684400 -14400 0 CLT} - {1976155200 -10800 1 CLST} - {1999738800 -14400 0 CLT} - {2007604800 -10800 1 CLST} - {2031188400 -14400 0 CLT} - {2039054400 -10800 1 CLST} - {2062638000 -14400 0 CLT} - {2070504000 -10800 1 CLST} - {2094087600 -14400 0 CLT} - {2101953600 -10800 1 CLST} - {2125537200 -14400 0 CLT} - {2133403200 -10800 1 CLST} - {2156986800 -14400 0 CLT} - {2165457600 -10800 1 CLST} - {2189041200 -14400 0 CLT} - {2196907200 -10800 1 CLST} - {2220490800 -14400 0 CLT} - {2228356800 -10800 1 CLST} - {2251940400 -14400 0 CLT} - {2259806400 -10800 1 CLST} - {2283390000 -14400 0 CLT} - {2291256000 -10800 1 CLST} - {2314839600 -14400 0 CLT} - {2322705600 -10800 1 CLST} - {2346894000 -14400 0 CLT} - {2354760000 -10800 1 CLST} - {2378343600 -14400 0 CLT} - {2386209600 -10800 1 CLST} - {2409793200 -14400 0 CLT} - {2417659200 -10800 1 CLST} - {2441242800 -14400 0 CLT} - {2449108800 -10800 1 CLST} - {2472692400 -14400 0 CLT} - {2480558400 -10800 1 CLST} - {2504142000 -14400 0 CLT} - {2512612800 -10800 1 CLST} - {2536196400 -14400 0 CLT} - {2544062400 -10800 1 CLST} - {2567646000 -14400 0 CLT} - {2575512000 -10800 1 CLST} - {2599095600 -14400 0 CLT} - {2606961600 -10800 1 CLST} - {2630545200 -14400 0 CLT} - {2638411200 -10800 1 CLST} - {2661994800 -14400 0 CLT} - {2669860800 -10800 1 CLST} - {2693444400 -14400 0 CLT} - {2701915200 -10800 1 CLST} - {2725498800 -14400 0 CLT} - {2733364800 -10800 1 CLST} - {2756948400 -14400 0 CLT} - {2764814400 -10800 1 CLST} - {2788398000 -14400 0 CLT} - {2796264000 -10800 1 CLST} - {2819847600 -14400 0 CLT} - {2827713600 -10800 1 CLST} - {2851297200 -14400 0 CLT} - {2859768000 -10800 1 CLST} - {2883351600 -14400 0 CLT} - {2891217600 -10800 1 CLST} - {2914801200 -14400 0 CLT} - {2922667200 -10800 1 CLST} - {2946250800 -14400 0 CLT} - {2954116800 -10800 1 CLST} - {2977700400 -14400 0 CLT} - {2985566400 -10800 1 CLST} - {3009150000 -14400 0 CLT} - {3017016000 -10800 1 CLST} - {3040599600 -14400 0 CLT} - {3049070400 -10800 1 CLST} - {3072654000 -14400 0 CLT} - {3080520000 -10800 1 CLST} - {3104103600 -14400 0 CLT} - {3111969600 -10800 1 CLST} - {3135553200 -14400 0 CLT} - {3143419200 -10800 1 CLST} - {3167002800 -14400 0 CLT} - {3174868800 -10800 1 CLST} - {3198452400 -14400 0 CLT} - {3206318400 -10800 1 CLST} - {3230506800 -14400 0 CLT} - {3238372800 -10800 1 CLST} - {3261956400 -14400 0 CLT} - {3269822400 -10800 1 CLST} - {3293406000 -14400 0 CLT} - {3301272000 -10800 1 CLST} - {3324855600 -14400 0 CLT} - {3332721600 -10800 1 CLST} - {3356305200 -14400 0 CLT} - {3364171200 -10800 1 CLST} - {3387754800 -14400 0 CLT} - {3396225600 -10800 1 CLST} - {3419809200 -14400 0 CLT} - {3427675200 -10800 1 CLST} - {3451258800 -14400 0 CLT} - {3459124800 -10800 1 CLST} - {3482708400 -14400 0 CLT} - {3490574400 -10800 1 CLST} - {3514158000 -14400 0 CLT} - {3522024000 -10800 1 CLST} - {3545607600 -14400 0 CLT} - {3553473600 -10800 1 CLST} - {3577057200 -14400 0 CLT} - {3585528000 -10800 1 CLST} - {3609111600 -14400 0 CLT} - {3616977600 -10800 1 CLST} - {3640561200 -14400 0 CLT} - {3648427200 -10800 1 CLST} - {3672010800 -14400 0 CLT} - {3679876800 -10800 1 CLST} - {3703460400 -14400 0 CLT} - {3711326400 -10800 1 CLST} - {3734910000 -14400 0 CLT} - {3743380800 -10800 1 CLST} - {3766964400 -14400 0 CLT} - {3774830400 -10800 1 CLST} - {3798414000 -14400 0 CLT} - {3806280000 -10800 1 CLST} - {3829863600 -14400 0 CLT} - {3837729600 -10800 1 CLST} - {3861313200 -14400 0 CLT} - {3869179200 -10800 1 CLST} - {3892762800 -14400 0 CLT} - {3900628800 -10800 1 CLST} - {3924212400 -14400 0 CLT} - {3932683200 -10800 1 CLST} - {3956266800 -14400 0 CLT} - {3964132800 -10800 1 CLST} - {3987716400 -14400 0 CLT} - {3995582400 -10800 1 CLST} - {4019166000 -14400 0 CLT} - {4027032000 -10800 1 CLST} - {4050615600 -14400 0 CLT} - {4058481600 -10800 1 CLST} - {4082065200 -14400 0 CLT} - {4089931200 -10800 1 CLST} + {1430017200 -10800 0 CLT} } diff --git a/library/tzdata/Antarctica/Rothera b/library/tzdata/Antarctica/Rothera index 7f0134f..24d7f3e 100644 --- a/library/tzdata/Antarctica/Rothera +++ b/library/tzdata/Antarctica/Rothera @@ -1,6 +1,6 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Antarctica/Rothera) { - {-9223372036854775808 0 0 -00} - {218246400 -10800 0 -03} + {-9223372036854775808 0 0 zzz} + {218246400 -10800 0 ROTT} } diff --git a/library/tzdata/Antarctica/Syowa b/library/tzdata/Antarctica/Syowa index a44dd5c..4d046b5 100644 --- a/library/tzdata/Antarctica/Syowa +++ b/library/tzdata/Antarctica/Syowa @@ -1,6 +1,6 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Antarctica/Syowa) { - {-9223372036854775808 0 0 -00} - {-407808000 10800 0 +03} + {-9223372036854775808 0 0 zzz} + {-407808000 10800 0 SYOT} } diff --git a/library/tzdata/Antarctica/Troll b/library/tzdata/Antarctica/Troll index fe44578..7d2b042 100644 --- a/library/tzdata/Antarctica/Troll +++ b/library/tzdata/Antarctica/Troll @@ -1,196 +1,196 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Antarctica/Troll) { - {-9223372036854775808 0 0 -00} - {1108166400 0 0 +00} - {1111885200 7200 1 +02} - {1130634000 0 0 +00} - {1143334800 7200 1 +02} - {1162083600 0 0 +00} - {1174784400 7200 1 +02} - {1193533200 0 0 +00} - {1206838800 7200 1 +02} - {1224982800 0 0 +00} - {1238288400 7200 1 +02} - {1256432400 0 0 +00} - {1269738000 7200 1 +02} - {1288486800 0 0 +00} - {1301187600 7200 1 +02} - {1319936400 0 0 +00} - {1332637200 7200 1 +02} - {1351386000 0 0 +00} - {1364691600 7200 1 +02} - {1382835600 0 0 +00} - {1396141200 7200 1 +02} - {1414285200 0 0 +00} - {1427590800 7200 1 +02} - {1445734800 0 0 +00} - {1459040400 7200 1 +02} - {1477789200 0 0 +00} - {1490490000 7200 1 +02} - {1509238800 0 0 +00} - {1521939600 7200 1 +02} - {1540688400 0 0 +00} - {1553994000 7200 1 +02} - {1572138000 0 0 +00} - {1585443600 7200 1 +02} - {1603587600 0 0 +00} - {1616893200 7200 1 +02} - {1635642000 0 0 +00} - {1648342800 7200 1 +02} - {1667091600 0 0 +00} - {1679792400 7200 1 +02} - {1698541200 0 0 +00} - {1711846800 7200 1 +02} - {1729990800 0 0 +00} - {1743296400 7200 1 +02} - {1761440400 0 0 +00} - {1774746000 7200 1 +02} - {1792890000 0 0 +00} - {1806195600 7200 1 +02} - {1824944400 0 0 +00} - {1837645200 7200 1 +02} - {1856394000 0 0 +00} - {1869094800 7200 1 +02} - {1887843600 0 0 +00} - {1901149200 7200 1 +02} - {1919293200 0 0 +00} - {1932598800 7200 1 +02} - {1950742800 0 0 +00} - {1964048400 7200 1 +02} - {1982797200 0 0 +00} - {1995498000 7200 1 +02} - {2014246800 0 0 +00} - {2026947600 7200 1 +02} - {2045696400 0 0 +00} - {2058397200 7200 1 +02} - {2077146000 0 0 +00} - {2090451600 7200 1 +02} - {2108595600 0 0 +00} - {2121901200 7200 1 +02} - {2140045200 0 0 +00} - {2153350800 7200 1 +02} - {2172099600 0 0 +00} - {2184800400 7200 1 +02} - {2203549200 0 0 +00} - {2216250000 7200 1 +02} - {2234998800 0 0 +00} - {2248304400 7200 1 +02} - {2266448400 0 0 +00} - {2279754000 7200 1 +02} - {2297898000 0 0 +00} - {2311203600 7200 1 +02} - {2329347600 0 0 +00} - {2342653200 7200 1 +02} - {2361402000 0 0 +00} - {2374102800 7200 1 +02} - {2392851600 0 0 +00} - {2405552400 7200 1 +02} - {2424301200 0 0 +00} - {2437606800 7200 1 +02} - {2455750800 0 0 +00} - {2469056400 7200 1 +02} - {2487200400 0 0 +00} - {2500506000 7200 1 +02} - {2519254800 0 0 +00} - {2531955600 7200 1 +02} - {2550704400 0 0 +00} - {2563405200 7200 1 +02} - {2582154000 0 0 +00} - {2595459600 7200 1 +02} - {2613603600 0 0 +00} - {2626909200 7200 1 +02} - {2645053200 0 0 +00} - {2658358800 7200 1 +02} - {2676502800 0 0 +00} - {2689808400 7200 1 +02} - {2708557200 0 0 +00} - {2721258000 7200 1 +02} - {2740006800 0 0 +00} - {2752707600 7200 1 +02} - {2771456400 0 0 +00} - {2784762000 7200 1 +02} - {2802906000 0 0 +00} - {2816211600 7200 1 +02} - {2834355600 0 0 +00} - {2847661200 7200 1 +02} - {2866410000 0 0 +00} - {2879110800 7200 1 +02} - {2897859600 0 0 +00} - {2910560400 7200 1 +02} - {2929309200 0 0 +00} - {2942010000 7200 1 +02} - {2960758800 0 0 +00} - {2974064400 7200 1 +02} - {2992208400 0 0 +00} - {3005514000 7200 1 +02} - {3023658000 0 0 +00} - {3036963600 7200 1 +02} - {3055712400 0 0 +00} - {3068413200 7200 1 +02} - {3087162000 0 0 +00} - {3099862800 7200 1 +02} - {3118611600 0 0 +00} - {3131917200 7200 1 +02} - {3150061200 0 0 +00} - {3163366800 7200 1 +02} - {3181510800 0 0 +00} - {3194816400 7200 1 +02} - {3212960400 0 0 +00} - {3226266000 7200 1 +02} - {3245014800 0 0 +00} - {3257715600 7200 1 +02} - {3276464400 0 0 +00} - {3289165200 7200 1 +02} - {3307914000 0 0 +00} - {3321219600 7200 1 +02} - {3339363600 0 0 +00} - {3352669200 7200 1 +02} - {3370813200 0 0 +00} - {3384118800 7200 1 +02} - {3402867600 0 0 +00} - {3415568400 7200 1 +02} - {3434317200 0 0 +00} - {3447018000 7200 1 +02} - {3465766800 0 0 +00} - {3479072400 7200 1 +02} - {3497216400 0 0 +00} - {3510522000 7200 1 +02} - {3528666000 0 0 +00} - {3541971600 7200 1 +02} - {3560115600 0 0 +00} - {3573421200 7200 1 +02} - {3592170000 0 0 +00} - {3604870800 7200 1 +02} - {3623619600 0 0 +00} - {3636320400 7200 1 +02} - {3655069200 0 0 +00} - {3668374800 7200 1 +02} - {3686518800 0 0 +00} - {3699824400 7200 1 +02} - {3717968400 0 0 +00} - {3731274000 7200 1 +02} - {3750022800 0 0 +00} - {3762723600 7200 1 +02} - {3781472400 0 0 +00} - {3794173200 7200 1 +02} - {3812922000 0 0 +00} - {3825622800 7200 1 +02} - {3844371600 0 0 +00} - {3857677200 7200 1 +02} - {3875821200 0 0 +00} - {3889126800 7200 1 +02} - {3907270800 0 0 +00} - {3920576400 7200 1 +02} - {3939325200 0 0 +00} - {3952026000 7200 1 +02} - {3970774800 0 0 +00} - {3983475600 7200 1 +02} - {4002224400 0 0 +00} - {4015530000 7200 1 +02} - {4033674000 0 0 +00} - {4046979600 7200 1 +02} - {4065123600 0 0 +00} - {4078429200 7200 1 +02} - {4096573200 0 0 +00} + {-9223372036854775808 0 0 zzz} + {1108166400 0 0 UTC} + {1111885200 7200 1 CEST} + {1130634000 0 0 UTC} + {1143334800 7200 1 CEST} + {1162083600 0 0 UTC} + {1174784400 7200 1 CEST} + {1193533200 0 0 UTC} + {1206838800 7200 1 CEST} + {1224982800 0 0 UTC} + {1238288400 7200 1 CEST} + {1256432400 0 0 UTC} + {1269738000 7200 1 CEST} + {1288486800 0 0 UTC} + {1301187600 7200 1 CEST} + {1319936400 0 0 UTC} + {1332637200 7200 1 CEST} + {1351386000 0 0 UTC} + {1364691600 7200 1 CEST} + {1382835600 0 0 UTC} + {1396141200 7200 1 CEST} + {1414285200 0 0 UTC} + {1427590800 7200 1 CEST} + {1445734800 0 0 UTC} + {1459040400 7200 1 CEST} + {1477789200 0 0 UTC} + {1490490000 7200 1 CEST} + {1509238800 0 0 UTC} + {1521939600 7200 1 CEST} + {1540688400 0 0 UTC} + {1553994000 7200 1 CEST} + {1572138000 0 0 UTC} + {1585443600 7200 1 CEST} + {1603587600 0 0 UTC} + {1616893200 7200 1 CEST} + {1635642000 0 0 UTC} + {1648342800 7200 1 CEST} + {1667091600 0 0 UTC} + {1679792400 7200 1 CEST} + {1698541200 0 0 UTC} + {1711846800 7200 1 CEST} + {1729990800 0 0 UTC} + {1743296400 7200 1 CEST} + {1761440400 0 0 UTC} + {1774746000 7200 1 CEST} + {1792890000 0 0 UTC} + {1806195600 7200 1 CEST} + {1824944400 0 0 UTC} + {1837645200 7200 1 CEST} + {1856394000 0 0 UTC} + {1869094800 7200 1 CEST} + {1887843600 0 0 UTC} + {1901149200 7200 1 CEST} + {1919293200 0 0 UTC} + {1932598800 7200 1 CEST} + {1950742800 0 0 UTC} + {1964048400 7200 1 CEST} + {1982797200 0 0 UTC} + {1995498000 7200 1 CEST} + {2014246800 0 0 UTC} + {2026947600 7200 1 CEST} + {2045696400 0 0 UTC} + {2058397200 7200 1 CEST} + {2077146000 0 0 UTC} + {2090451600 7200 1 CEST} + {2108595600 0 0 UTC} + {2121901200 7200 1 CEST} + {2140045200 0 0 UTC} + {2153350800 7200 1 CEST} + {2172099600 0 0 UTC} + {2184800400 7200 1 CEST} + {2203549200 0 0 UTC} + {2216250000 7200 1 CEST} + {2234998800 0 0 UTC} + {2248304400 7200 1 CEST} + {2266448400 0 0 UTC} + {2279754000 7200 1 CEST} + {2297898000 0 0 UTC} + {2311203600 7200 1 CEST} + {2329347600 0 0 UTC} + {2342653200 7200 1 CEST} + {2361402000 0 0 UTC} + {2374102800 7200 1 CEST} + {2392851600 0 0 UTC} + {2405552400 7200 1 CEST} + {2424301200 0 0 UTC} + {2437606800 7200 1 CEST} + {2455750800 0 0 UTC} + {2469056400 7200 1 CEST} + {2487200400 0 0 UTC} + {2500506000 7200 1 CEST} + {2519254800 0 0 UTC} + {2531955600 7200 1 CEST} + {2550704400 0 0 UTC} + {2563405200 7200 1 CEST} + {2582154000 0 0 UTC} + {2595459600 7200 1 CEST} + {2613603600 0 0 UTC} + {2626909200 7200 1 CEST} + {2645053200 0 0 UTC} + {2658358800 7200 1 CEST} + {2676502800 0 0 UTC} + {2689808400 7200 1 CEST} + {2708557200 0 0 UTC} + {2721258000 7200 1 CEST} + {2740006800 0 0 UTC} + {2752707600 7200 1 CEST} + {2771456400 0 0 UTC} + {2784762000 7200 1 CEST} + {2802906000 0 0 UTC} + {2816211600 7200 1 CEST} + {2834355600 0 0 UTC} + {2847661200 7200 1 CEST} + {2866410000 0 0 UTC} + {2879110800 7200 1 CEST} + {2897859600 0 0 UTC} + {2910560400 7200 1 CEST} + {2929309200 0 0 UTC} + {2942010000 7200 1 CEST} + {2960758800 0 0 UTC} + {2974064400 7200 1 CEST} + {2992208400 0 0 UTC} + {3005514000 7200 1 CEST} + {3023658000 0 0 UTC} + {3036963600 7200 1 CEST} + {3055712400 0 0 UTC} + {3068413200 7200 1 CEST} + {3087162000 0 0 UTC} + {3099862800 7200 1 CEST} + {3118611600 0 0 UTC} + {3131917200 7200 1 CEST} + {3150061200 0 0 UTC} + {3163366800 7200 1 CEST} + {3181510800 0 0 UTC} + {3194816400 7200 1 CEST} + {3212960400 0 0 UTC} + {3226266000 7200 1 CEST} + {3245014800 0 0 UTC} + {3257715600 7200 1 CEST} + {3276464400 0 0 UTC} + {3289165200 7200 1 CEST} + {3307914000 0 0 UTC} + {3321219600 7200 1 CEST} + {3339363600 0 0 UTC} + {3352669200 7200 1 CEST} + {3370813200 0 0 UTC} + {3384118800 7200 1 CEST} + {3402867600 0 0 UTC} + {3415568400 7200 1 CEST} + {3434317200 0 0 UTC} + {3447018000 7200 1 CEST} + {3465766800 0 0 UTC} + {3479072400 7200 1 CEST} + {3497216400 0 0 UTC} + {3510522000 7200 1 CEST} + {3528666000 0 0 UTC} + {3541971600 7200 1 CEST} + {3560115600 0 0 UTC} + {3573421200 7200 1 CEST} + {3592170000 0 0 UTC} + {3604870800 7200 1 CEST} + {3623619600 0 0 UTC} + {3636320400 7200 1 CEST} + {3655069200 0 0 UTC} + {3668374800 7200 1 CEST} + {3686518800 0 0 UTC} + {3699824400 7200 1 CEST} + {3717968400 0 0 UTC} + {3731274000 7200 1 CEST} + {3750022800 0 0 UTC} + {3762723600 7200 1 CEST} + {3781472400 0 0 UTC} + {3794173200 7200 1 CEST} + {3812922000 0 0 UTC} + {3825622800 7200 1 CEST} + {3844371600 0 0 UTC} + {3857677200 7200 1 CEST} + {3875821200 0 0 UTC} + {3889126800 7200 1 CEST} + {3907270800 0 0 UTC} + {3920576400 7200 1 CEST} + {3939325200 0 0 UTC} + {3952026000 7200 1 CEST} + {3970774800 0 0 UTC} + {3983475600 7200 1 CEST} + {4002224400 0 0 UTC} + {4015530000 7200 1 CEST} + {4033674000 0 0 UTC} + {4046979600 7200 1 CEST} + {4065123600 0 0 UTC} + {4078429200 7200 1 CEST} + {4096573200 0 0 UTC} } diff --git a/library/tzdata/Antarctica/Vostok b/library/tzdata/Antarctica/Vostok index 7f345a2..f846f65 100644 --- a/library/tzdata/Antarctica/Vostok +++ b/library/tzdata/Antarctica/Vostok @@ -1,6 +1,6 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Antarctica/Vostok) { - {-9223372036854775808 0 0 -00} - {-380073600 21600 0 +06} + {-9223372036854775808 0 0 zzz} + {-380073600 21600 0 VOST} } diff --git a/library/tzdata/Asia/Almaty b/library/tzdata/Asia/Almaty index 2b83197..68dee29 100644 --- a/library/tzdata/Asia/Almaty +++ b/library/tzdata/Asia/Almaty @@ -2,56 +2,55 @@ set TZData(:Asia/Almaty) { {-9223372036854775808 18468 0 LMT} - {-1441170468 18000 0 +05} - {-1247547600 21600 0 +06} - {354909600 25200 1 +07} - {370717200 21600 0 +06} - {386445600 25200 1 +07} - {402253200 21600 0 +06} - {417981600 25200 1 +07} - {433789200 21600 0 +06} - {449604000 25200 1 +07} - {465336000 21600 0 +06} - {481060800 25200 1 +07} - {496785600 21600 0 +06} - {512510400 25200 1 +07} - {528235200 21600 0 +06} - {543960000 25200 1 +07} - {559684800 21600 0 +06} - {575409600 25200 1 +07} - {591134400 21600 0 +06} - {606859200 25200 1 +07} - {622584000 21600 0 +06} - {638308800 25200 1 +07} - {654638400 21600 0 +06} - {670363200 18000 0 +05} - {670366800 21600 1 +06} - {686091600 18000 0 +05} - {695768400 21600 0 +06} - {701812800 25200 1 +07} - {717537600 21600 0 +06} - {733262400 25200 1 +07} - {748987200 21600 0 +06} - {764712000 25200 1 +07} - {780436800 21600 0 +06} - {796161600 25200 1 +07} - {811886400 21600 0 +06} - {828216000 25200 1 +07} - {846360000 21600 0 +06} - {859665600 25200 1 +07} - {877809600 21600 0 +06} - {891115200 25200 1 +07} - {909259200 21600 0 +06} - {922564800 25200 1 +07} - {941313600 21600 0 +06} - {954014400 25200 1 +07} - {972763200 21600 0 +06} - {985464000 25200 1 +07} - {1004212800 21600 0 +06} - {1017518400 25200 1 +07} - {1035662400 21600 0 +06} - {1048968000 25200 1 +07} - {1067112000 21600 0 +06} - {1080417600 25200 1 +07} - {1099166400 21600 0 +06} + {-1441170468 18000 0 ALMT} + {-1247547600 21600 0 ALMT} + {354909600 25200 1 ALMST} + {370717200 21600 0 ALMT} + {386445600 25200 1 ALMST} + {402253200 21600 0 ALMT} + {417981600 25200 1 ALMST} + {433789200 21600 0 ALMT} + {449604000 25200 1 ALMST} + {465336000 21600 0 ALMT} + {481060800 25200 1 ALMST} + {496785600 21600 0 ALMT} + {512510400 25200 1 ALMST} + {528235200 21600 0 ALMT} + {543960000 25200 1 ALMST} + {559684800 21600 0 ALMT} + {575409600 25200 1 ALMST} + {591134400 21600 0 ALMT} + {606859200 25200 1 ALMST} + {622584000 21600 0 ALMT} + {638308800 25200 1 ALMST} + {654638400 21600 0 ALMT} + {662666400 21600 0 ALMT} + {694202400 21600 0 ALMT} + {701802000 25200 1 ALMST} + {717523200 21600 0 ALMT} + {733262400 25200 1 ALMST} + {748987200 21600 0 ALMT} + {764712000 25200 1 ALMST} + {780436800 21600 0 ALMT} + {796161600 25200 1 ALMST} + {811886400 21600 0 ALMT} + {828216000 25200 1 ALMST} + {846360000 21600 0 ALMT} + {859665600 25200 1 ALMST} + {877809600 21600 0 ALMT} + {891115200 25200 1 ALMST} + {909259200 21600 0 ALMT} + {922564800 25200 1 ALMST} + {941313600 21600 0 ALMT} + {954014400 25200 1 ALMST} + {972763200 21600 0 ALMT} + {985464000 25200 1 ALMST} + {1004212800 21600 0 ALMT} + {1017518400 25200 1 ALMST} + {1035662400 21600 0 ALMT} + {1048968000 25200 1 ALMST} + {1067112000 21600 0 ALMT} + {1080417600 25200 1 ALMST} + {1099166400 21600 0 ALMT} + {1110823200 21600 0 ALMT} } diff --git a/library/tzdata/Asia/Anadyr b/library/tzdata/Asia/Anadyr index d1314c6..50ace50 100644 --- a/library/tzdata/Asia/Anadyr +++ b/library/tzdata/Asia/Anadyr @@ -2,71 +2,71 @@ set TZData(:Asia/Anadyr) { {-9223372036854775808 42596 0 LMT} - {-1441194596 43200 0 +12} - {-1247572800 46800 0 +14} - {354884400 50400 1 +14} - {370692000 46800 0 +13} - {386420400 43200 0 +13} - {386424000 46800 1 +13} - {402231600 43200 0 +12} - {417960000 46800 1 +13} - {433767600 43200 0 +12} - {449582400 46800 1 +13} - {465314400 43200 0 +12} - {481039200 46800 1 +13} - {496764000 43200 0 +12} - {512488800 46800 1 +13} - {528213600 43200 0 +12} - {543938400 46800 1 +13} - {559663200 43200 0 +12} - {575388000 46800 1 +13} - {591112800 43200 0 +12} - {606837600 46800 1 +13} - {622562400 43200 0 +12} - {638287200 46800 1 +13} - {654616800 43200 0 +12} - {670341600 39600 0 +12} - {670345200 43200 1 +12} - {686070000 39600 0 +11} - {695746800 43200 0 +13} - {701791200 46800 1 +13} - {717516000 43200 0 +12} - {733240800 46800 1 +13} - {748965600 43200 0 +12} - {764690400 46800 1 +13} - {780415200 43200 0 +12} - {796140000 46800 1 +13} - {811864800 43200 0 +12} - {828194400 46800 1 +13} - {846338400 43200 0 +12} - {859644000 46800 1 +13} - {877788000 43200 0 +12} - {891093600 46800 1 +13} - {909237600 43200 0 +12} - {922543200 46800 1 +13} - {941292000 43200 0 +12} - {953992800 46800 1 +13} - {972741600 43200 0 +12} - {985442400 46800 1 +13} - {1004191200 43200 0 +12} - {1017496800 46800 1 +13} - {1035640800 43200 0 +12} - {1048946400 46800 1 +13} - {1067090400 43200 0 +12} - {1080396000 46800 1 +13} - {1099144800 43200 0 +12} - {1111845600 46800 1 +13} - {1130594400 43200 0 +12} - {1143295200 46800 1 +13} - {1162044000 43200 0 +12} - {1174744800 46800 1 +13} - {1193493600 43200 0 +12} - {1206799200 46800 1 +13} - {1224943200 43200 0 +12} - {1238248800 46800 1 +13} - {1256392800 43200 0 +12} - {1269698400 39600 0 +12} - {1269702000 43200 1 +12} - {1288450800 39600 0 +11} - {1301151600 43200 0 +12} + {-1441194596 43200 0 ANAT} + {-1247572800 46800 0 ANAMMTT} + {354884400 50400 1 ANAST} + {370692000 46800 0 ANAT} + {386420400 43200 0 ANAMMTT} + {386424000 46800 1 ANAST} + {402231600 43200 0 ANAT} + {417960000 46800 1 ANAST} + {433767600 43200 0 ANAT} + {449582400 46800 1 ANAST} + {465314400 43200 0 ANAT} + {481039200 46800 1 ANAST} + {496764000 43200 0 ANAT} + {512488800 46800 1 ANAST} + {528213600 43200 0 ANAT} + {543938400 46800 1 ANAST} + {559663200 43200 0 ANAT} + {575388000 46800 1 ANAST} + {591112800 43200 0 ANAT} + {606837600 46800 1 ANAST} + {622562400 43200 0 ANAT} + {638287200 46800 1 ANAST} + {654616800 43200 0 ANAT} + {670341600 39600 0 ANAMMTT} + {670345200 43200 1 ANAST} + {686070000 39600 0 ANAT} + {695746800 43200 0 ANAMMTT} + {701780400 46800 1 ANAST} + {717501600 43200 0 ANAT} + {733240800 46800 1 ANAST} + {748965600 43200 0 ANAT} + {764690400 46800 1 ANAST} + {780415200 43200 0 ANAT} + {796140000 46800 1 ANAST} + {811864800 43200 0 ANAT} + {828194400 46800 1 ANAST} + {846338400 43200 0 ANAT} + {859644000 46800 1 ANAST} + {877788000 43200 0 ANAT} + {891093600 46800 1 ANAST} + {909237600 43200 0 ANAT} + {922543200 46800 1 ANAST} + {941292000 43200 0 ANAT} + {953992800 46800 1 ANAST} + {972741600 43200 0 ANAT} + {985442400 46800 1 ANAST} + {1004191200 43200 0 ANAT} + {1017496800 46800 1 ANAST} + {1035640800 43200 0 ANAT} + {1048946400 46800 1 ANAST} + {1067090400 43200 0 ANAT} + {1080396000 46800 1 ANAST} + {1099144800 43200 0 ANAT} + {1111845600 46800 1 ANAST} + {1130594400 43200 0 ANAT} + {1143295200 46800 1 ANAST} + {1162044000 43200 0 ANAT} + {1174744800 46800 1 ANAST} + {1193493600 43200 0 ANAT} + {1206799200 46800 1 ANAST} + {1224943200 43200 0 ANAT} + {1238248800 46800 1 ANAST} + {1256392800 43200 0 ANAT} + {1269698400 39600 0 ANAMMTT} + {1269702000 43200 1 ANAST} + {1288450800 39600 0 ANAT} + {1301151600 43200 0 ANAT} } diff --git a/library/tzdata/Asia/Aqtau b/library/tzdata/Asia/Aqtau index c128b27..11e89a2 100644 --- a/library/tzdata/Asia/Aqtau +++ b/library/tzdata/Asia/Aqtau @@ -2,57 +2,57 @@ set TZData(:Asia/Aqtau) { {-9223372036854775808 12064 0 LMT} - {-1441164064 14400 0 +04} - {-1247544000 18000 0 +05} - {370724400 21600 0 +06} - {386445600 18000 0 +05} - {386449200 21600 1 +06} - {402256800 18000 0 +05} - {417985200 21600 1 +06} - {433792800 18000 0 +05} - {449607600 21600 1 +06} - {465339600 18000 0 +05} - {481064400 21600 1 +06} - {496789200 18000 0 +05} - {512514000 21600 1 +06} - {528238800 18000 0 +05} - {543963600 21600 1 +06} - {559688400 18000 0 +05} - {575413200 21600 1 +06} - {591138000 18000 0 +05} - {606862800 21600 1 +06} - {622587600 18000 0 +05} - {638312400 21600 1 +06} - {654642000 18000 0 +05} - {670366800 14400 0 +04} - {670370400 18000 1 +05} - {686095200 14400 0 +04} - {695772000 18000 0 +05} - {701816400 21600 1 +06} - {717541200 18000 0 +05} - {733266000 21600 1 +06} - {748990800 18000 0 +05} - {764715600 21600 1 +06} - {780440400 18000 0 +05} - {780444000 14400 0 +04} - {796168800 18000 1 +05} - {811893600 14400 0 +04} - {828223200 18000 1 +05} - {846367200 14400 0 +04} - {859672800 18000 1 +05} - {877816800 14400 0 +04} - {891122400 18000 1 +05} - {909266400 14400 0 +04} - {922572000 18000 1 +05} - {941320800 14400 0 +04} - {954021600 18000 1 +05} - {972770400 14400 0 +04} - {985471200 18000 1 +05} - {1004220000 14400 0 +04} - {1017525600 18000 1 +05} - {1035669600 14400 0 +04} - {1048975200 18000 1 +05} - {1067119200 14400 0 +04} - {1080424800 18000 1 +05} - {1099173600 18000 0 +05} + {-1441164064 14400 0 FORT} + {-1247544000 18000 0 FORT} + {-220942800 18000 0 SHET} + {370724400 21600 0 SHET} + {386445600 18000 0 SHET} + {386449200 21600 1 SHEST} + {402256800 18000 0 SHET} + {417985200 21600 1 SHEST} + {433792800 18000 0 SHET} + {449607600 21600 1 SHEST} + {465339600 18000 0 SHET} + {481064400 21600 1 SHEST} + {496789200 18000 0 SHET} + {512514000 21600 1 SHEST} + {528238800 18000 0 SHET} + {543963600 21600 1 SHEST} + {559688400 18000 0 SHET} + {575413200 21600 1 SHEST} + {591138000 18000 0 SHET} + {606862800 21600 1 SHEST} + {622587600 18000 0 SHET} + {638312400 21600 1 SHEST} + {654642000 18000 0 SHET} + {662670000 18000 0 SHET} + {692823600 18000 0 AQTT} + {701805600 21600 1 AQTST} + {717526800 18000 0 AQTT} + {733266000 21600 1 AQTST} + {748990800 18000 0 AQTT} + {764715600 21600 1 AQTST} + {780440400 18000 0 AQTT} + {796165200 14400 0 AQTT} + {796168800 18000 1 AQTST} + {811893600 14400 0 AQTT} + {828223200 18000 1 AQTST} + {846367200 14400 0 AQTT} + {859672800 18000 1 AQTST} + {877816800 14400 0 AQTT} + {891122400 18000 1 AQTST} + {909266400 14400 0 AQTT} + {922572000 18000 1 AQTST} + {941320800 14400 0 AQTT} + {954021600 18000 1 AQTST} + {972770400 14400 0 AQTT} + {985471200 18000 1 AQTST} + {1004220000 14400 0 AQTT} + {1017525600 18000 1 AQTST} + {1035669600 14400 0 AQTT} + {1048975200 18000 1 AQTST} + {1067119200 14400 0 AQTT} + {1080424800 18000 1 AQTST} + {1099173600 14400 0 AQTT} + {1110830400 18000 0 AQTT} } diff --git a/library/tzdata/Asia/Aqtobe b/library/tzdata/Asia/Aqtobe index 55ef556..c857491 100644 --- a/library/tzdata/Asia/Aqtobe +++ b/library/tzdata/Asia/Aqtobe @@ -2,57 +2,56 @@ set TZData(:Asia/Aqtobe) { {-9223372036854775808 13720 0 LMT} - {-1441165720 14400 0 +04} - {-1247544000 18000 0 +05} - {354913200 21600 1 +06} - {370720800 21600 0 +06} - {386445600 18000 0 +05} - {386449200 21600 1 +06} - {402256800 18000 0 +05} - {417985200 21600 1 +06} - {433792800 18000 0 +05} - {449607600 21600 1 +06} - {465339600 18000 0 +05} - {481064400 21600 1 +06} - {496789200 18000 0 +05} - {512514000 21600 1 +06} - {528238800 18000 0 +05} - {543963600 21600 1 +06} - {559688400 18000 0 +05} - {575413200 21600 1 +06} - {591138000 18000 0 +05} - {606862800 21600 1 +06} - {622587600 18000 0 +05} - {638312400 21600 1 +06} - {654642000 18000 0 +05} - {670366800 14400 0 +04} - {670370400 18000 1 +05} - {686095200 14400 0 +04} - {695772000 18000 0 +05} - {701816400 21600 1 +06} - {717541200 18000 0 +05} - {733266000 21600 1 +06} - {748990800 18000 0 +05} - {764715600 21600 1 +06} - {780440400 18000 0 +05} - {796165200 21600 1 +06} - {811890000 18000 0 +05} - {828219600 21600 1 +06} - {846363600 18000 0 +05} - {859669200 21600 1 +06} - {877813200 18000 0 +05} - {891118800 21600 1 +06} - {909262800 18000 0 +05} - {922568400 21600 1 +06} - {941317200 18000 0 +05} - {954018000 21600 1 +06} - {972766800 18000 0 +05} - {985467600 21600 1 +06} - {1004216400 18000 0 +05} - {1017522000 21600 1 +06} - {1035666000 18000 0 +05} - {1048971600 21600 1 +06} - {1067115600 18000 0 +05} - {1080421200 21600 1 +06} - {1099170000 18000 0 +05} + {-1441165720 14400 0 AKTT} + {-1247544000 18000 0 AKTT} + {354913200 21600 1 AKTST} + {370720800 21600 0 AKTT} + {386445600 18000 0 AKTT} + {386449200 21600 1 AKTST} + {402256800 18000 0 AKTT} + {417985200 21600 1 AKTST} + {433792800 18000 0 AKTT} + {449607600 21600 1 AKTST} + {465339600 18000 0 AKTT} + {481064400 21600 1 AKTST} + {496789200 18000 0 AKTT} + {512514000 21600 1 AKTST} + {528238800 18000 0 AKTT} + {543963600 21600 1 AKTST} + {559688400 18000 0 AKTT} + {575413200 21600 1 AKTST} + {591138000 18000 0 AKTT} + {606862800 21600 1 AKTST} + {622587600 18000 0 AKTT} + {638312400 21600 1 AKTST} + {654642000 18000 0 AKTT} + {662670000 18000 0 AKTT} + {692823600 18000 0 AQTT} + {701805600 21600 1 AQTST} + {717526800 18000 0 AQTT} + {733266000 21600 1 AQTST} + {748990800 18000 0 AQTT} + {764715600 21600 1 AQTST} + {780440400 18000 0 AQTT} + {796165200 21600 1 AQTST} + {811890000 18000 0 AQTT} + {828219600 21600 1 AQTST} + {846363600 18000 0 AQTT} + {859669200 21600 1 AQTST} + {877813200 18000 0 AQTT} + {891118800 21600 1 AQTST} + {909262800 18000 0 AQTT} + {922568400 21600 1 AQTST} + {941317200 18000 0 AQTT} + {954018000 21600 1 AQTST} + {972766800 18000 0 AQTT} + {985467600 21600 1 AQTST} + {1004216400 18000 0 AQTT} + {1017522000 21600 1 AQTST} + {1035666000 18000 0 AQTT} + {1048971600 21600 1 AQTST} + {1067115600 18000 0 AQTT} + {1080421200 21600 1 AQTST} + {1099170000 18000 0 AQTT} + {1110826800 18000 0 AQTT} } diff --git a/library/tzdata/Asia/Ashgabat b/library/tzdata/Asia/Ashgabat index fa6a619..64bdb3a 100644 --- a/library/tzdata/Asia/Ashgabat +++ b/library/tzdata/Asia/Ashgabat @@ -2,30 +2,30 @@ set TZData(:Asia/Ashgabat) { {-9223372036854775808 14012 0 LMT} - {-1441166012 14400 0 +04} - {-1247544000 18000 0 +05} - {354913200 21600 1 +06} - {370720800 18000 0 +05} - {386449200 21600 1 +06} - {402256800 18000 0 +05} - {417985200 21600 1 +06} - {433792800 18000 0 +05} - {449607600 21600 1 +06} - {465339600 18000 0 +05} - {481064400 21600 1 +06} - {496789200 18000 0 +05} - {512514000 21600 1 +06} - {528238800 18000 0 +05} - {543963600 21600 1 +06} - {559688400 18000 0 +05} - {575413200 21600 1 +06} - {591138000 18000 0 +05} - {606862800 21600 1 +06} - {622587600 18000 0 +05} - {638312400 21600 1 +06} - {654642000 18000 0 +05} - {670366800 14400 0 +04} - {670370400 18000 1 +05} - {686095200 14400 0 +04} - {695772000 18000 0 +05} + {-1441166012 14400 0 ASHT} + {-1247544000 18000 0 ASHT} + {354913200 21600 1 ASHST} + {370720800 18000 0 ASHT} + {386449200 21600 1 ASHST} + {402256800 18000 0 ASHT} + {417985200 21600 1 ASHST} + {433792800 18000 0 ASHT} + {449607600 21600 1 ASHST} + {465339600 18000 0 ASHT} + {481064400 21600 1 ASHST} + {496789200 18000 0 ASHT} + {512514000 21600 1 ASHST} + {528238800 18000 0 ASHT} + {543963600 21600 1 ASHST} + {559688400 18000 0 ASHT} + {575413200 21600 1 ASHST} + {591138000 18000 0 ASHT} + {606862800 21600 1 ASHST} + {622587600 18000 0 ASHT} + {638312400 21600 1 ASHST} + {654642000 18000 0 ASHT} + {670366800 14400 0 ASHT} + {670370400 18000 1 ASHST} + {686095200 14400 0 ASHT} + {695772000 18000 0 TMT} } diff --git a/library/tzdata/Asia/Atyrau b/library/tzdata/Asia/Atyrau deleted file mode 100644 index f274540..0000000 --- a/library/tzdata/Asia/Atyrau +++ /dev/null @@ -1,58 +0,0 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Atyrau) { - {-9223372036854775808 12464 0 LMT} - {-1441164464 14400 0 +04} - {-1247544000 18000 0 +05} - {370724400 21600 0 +06} - {386445600 18000 0 +05} - {386449200 21600 1 +06} - {402256800 18000 0 +05} - {417985200 21600 1 +06} - {433792800 18000 0 +05} - {449607600 21600 1 +06} - {465339600 18000 0 +05} - {481064400 21600 1 +06} - {496789200 18000 0 +05} - {512514000 21600 1 +06} - {528238800 18000 0 +05} - {543963600 21600 1 +06} - {559688400 18000 0 +05} - {575413200 21600 1 +06} - {591138000 18000 0 +05} - {606862800 21600 1 +06} - {622587600 18000 0 +05} - {638312400 21600 1 +06} - {654642000 18000 0 +05} - {670366800 14400 0 +04} - {670370400 18000 1 +05} - {686095200 14400 0 +04} - {695772000 18000 0 +05} - {701816400 21600 1 +06} - {717541200 18000 0 +05} - {733266000 21600 1 +06} - {748990800 18000 0 +05} - {764715600 21600 1 +06} - {780440400 18000 0 +05} - {796165200 21600 1 +06} - {811890000 18000 0 +05} - {828219600 21600 1 +06} - {846363600 18000 0 +05} - {859669200 21600 1 +06} - {877813200 18000 0 +05} - {891118800 21600 1 +06} - {909262800 18000 0 +05} - {922568400 14400 0 +04} - {922572000 18000 1 +05} - {941320800 14400 0 +04} - {954021600 18000 1 +05} - {972770400 14400 0 +04} - {985471200 18000 1 +05} - {1004220000 14400 0 +04} - {1017525600 18000 1 +05} - {1035669600 14400 0 +04} - {1048975200 18000 1 +05} - {1067119200 14400 0 +04} - {1080424800 18000 1 +05} - {1099173600 18000 0 +05} -} diff --git a/library/tzdata/Asia/Baku b/library/tzdata/Asia/Baku index f945b89..e50071b 100644 --- a/library/tzdata/Asia/Baku +++ b/library/tzdata/Asia/Baku @@ -2,73 +2,241 @@ set TZData(:Asia/Baku) { {-9223372036854775808 11964 0 LMT} - {-1441163964 10800 0 +03} - {-405140400 14400 0 +04} - {354916800 18000 1 +05} - {370724400 14400 0 +04} - {386452800 18000 1 +05} - {402260400 14400 0 +04} - {417988800 18000 1 +05} - {433796400 14400 0 +04} - {449611200 18000 1 +05} - {465343200 14400 0 +04} - {481068000 18000 1 +05} - {496792800 14400 0 +04} - {512517600 18000 1 +05} - {528242400 14400 0 +04} - {543967200 18000 1 +05} - {559692000 14400 0 +04} - {575416800 18000 1 +05} - {591141600 14400 0 +04} - {606866400 18000 1 +05} - {622591200 14400 0 +04} - {638316000 18000 1 +05} - {654645600 14400 0 +04} - {670370400 10800 0 +03} - {670374000 14400 1 +04} - {686098800 10800 0 +03} - {701823600 14400 1 +04} - {717548400 14400 0 +04} - {820440000 14400 0 +04} - {828234000 18000 1 +05} - {846378000 14400 0 +04} - {852062400 14400 0 +04} - {859680000 18000 1 +05} - {877824000 14400 0 +04} - {891129600 18000 1 +05} - {909273600 14400 0 +04} - {922579200 18000 1 +05} - {941328000 14400 0 +04} - {954028800 18000 1 +05} - {972777600 14400 0 +04} - {985478400 18000 1 +05} - {1004227200 14400 0 +04} - {1017532800 18000 1 +05} - {1035676800 14400 0 +04} - {1048982400 18000 1 +05} - {1067126400 14400 0 +04} - {1080432000 18000 1 +05} - {1099180800 14400 0 +04} - {1111881600 18000 1 +05} - {1130630400 14400 0 +04} - {1143331200 18000 1 +05} - {1162080000 14400 0 +04} - {1174780800 18000 1 +05} - {1193529600 14400 0 +04} - {1206835200 18000 1 +05} - {1224979200 14400 0 +04} - {1238284800 18000 1 +05} - {1256428800 14400 0 +04} - {1269734400 18000 1 +05} - {1288483200 14400 0 +04} - {1301184000 18000 1 +05} - {1319932800 14400 0 +04} - {1332633600 18000 1 +05} - {1351382400 14400 0 +04} - {1364688000 18000 1 +05} - {1382832000 14400 0 +04} - {1396137600 18000 1 +05} - {1414281600 14400 0 +04} - {1427587200 18000 1 +05} - {1445731200 14400 0 +04} + {-1441163964 10800 0 BAKT} + {-405140400 14400 0 BAKT} + {354916800 18000 1 BAKST} + {370724400 14400 0 BAKT} + {386452800 18000 1 BAKST} + {402260400 14400 0 BAKT} + {417988800 18000 1 BAKST} + {433796400 14400 0 BAKT} + {449611200 18000 1 BAKST} + {465343200 14400 0 BAKT} + {481068000 18000 1 BAKST} + {496792800 14400 0 BAKT} + {512517600 18000 1 BAKST} + {528242400 14400 0 BAKT} + {543967200 18000 1 BAKST} + {559692000 14400 0 BAKT} + {575416800 18000 1 BAKST} + {591141600 14400 0 BAKT} + {606866400 18000 1 BAKST} + {622591200 14400 0 BAKT} + {638316000 18000 1 BAKST} + {654645600 14400 0 BAKT} + {670370400 14400 1 BAKST} + {683496000 14400 0 AZST} + {686098800 10800 0 AZT} + {701812800 14400 1 AZST} + {717537600 14400 0 AZT} + {820440000 14400 0 AZT} + {828234000 18000 1 AZST} + {846378000 14400 0 AZT} + {852062400 14400 0 AZT} + {859680000 18000 1 AZST} + {877824000 14400 0 AZT} + {891129600 18000 1 AZST} + {909273600 14400 0 AZT} + {922579200 18000 1 AZST} + {941328000 14400 0 AZT} + {954028800 18000 1 AZST} + {972777600 14400 0 AZT} + {985478400 18000 1 AZST} + {1004227200 14400 0 AZT} + {1017532800 18000 1 AZST} + {1035676800 14400 0 AZT} + {1048982400 18000 1 AZST} + {1067126400 14400 0 AZT} + {1080432000 18000 1 AZST} + {1099180800 14400 0 AZT} + {1111881600 18000 1 AZST} + {1130630400 14400 0 AZT} + {1143331200 18000 1 AZST} + {1162080000 14400 0 AZT} + {1174780800 18000 1 AZST} + {1193529600 14400 0 AZT} + {1206835200 18000 1 AZST} + {1224979200 14400 0 AZT} + {1238284800 18000 1 AZST} + {1256428800 14400 0 AZT} + {1269734400 18000 1 AZST} + {1288483200 14400 0 AZT} + {1301184000 18000 1 AZST} + {1319932800 14400 0 AZT} + {1332633600 18000 1 AZST} + {1351382400 14400 0 AZT} + {1364688000 18000 1 AZST} + {1382832000 14400 0 AZT} + {1396137600 18000 1 AZST} + {1414281600 14400 0 AZT} + {1427587200 18000 1 AZST} + {1445731200 14400 0 AZT} + {1459036800 18000 1 AZST} + {1477785600 14400 0 AZT} + {1490486400 18000 1 AZST} + {1509235200 14400 0 AZT} + {1521936000 18000 1 AZST} + {1540684800 14400 0 AZT} + {1553990400 18000 1 AZST} + {1572134400 14400 0 AZT} + {1585440000 18000 1 AZST} + {1603584000 14400 0 AZT} + {1616889600 18000 1 AZST} + {1635638400 14400 0 AZT} + {1648339200 18000 1 AZST} + {1667088000 14400 0 AZT} + {1679788800 18000 1 AZST} + {1698537600 14400 0 AZT} + {1711843200 18000 1 AZST} + {1729987200 14400 0 AZT} + {1743292800 18000 1 AZST} + {1761436800 14400 0 AZT} + {1774742400 18000 1 AZST} + {1792886400 14400 0 AZT} + {1806192000 18000 1 AZST} + {1824940800 14400 0 AZT} + {1837641600 18000 1 AZST} + {1856390400 14400 0 AZT} + {1869091200 18000 1 AZST} + {1887840000 14400 0 AZT} + {1901145600 18000 1 AZST} + {1919289600 14400 0 AZT} + {1932595200 18000 1 AZST} + {1950739200 14400 0 AZT} + {1964044800 18000 1 AZST} + {1982793600 14400 0 AZT} + {1995494400 18000 1 AZST} + {2014243200 14400 0 AZT} + {2026944000 18000 1 AZST} + {2045692800 14400 0 AZT} + {2058393600 18000 1 AZST} + {2077142400 14400 0 AZT} + {2090448000 18000 1 AZST} + {2108592000 14400 0 AZT} + {2121897600 18000 1 AZST} + {2140041600 14400 0 AZT} + {2153347200 18000 1 AZST} + {2172096000 14400 0 AZT} + {2184796800 18000 1 AZST} + {2203545600 14400 0 AZT} + {2216246400 18000 1 AZST} + {2234995200 14400 0 AZT} + {2248300800 18000 1 AZST} + {2266444800 14400 0 AZT} + {2279750400 18000 1 AZST} + {2297894400 14400 0 AZT} + {2311200000 18000 1 AZST} + {2329344000 14400 0 AZT} + {2342649600 18000 1 AZST} + {2361398400 14400 0 AZT} + {2374099200 18000 1 AZST} + {2392848000 14400 0 AZT} + {2405548800 18000 1 AZST} + {2424297600 14400 0 AZT} + {2437603200 18000 1 AZST} + {2455747200 14400 0 AZT} + {2469052800 18000 1 AZST} + {2487196800 14400 0 AZT} + {2500502400 18000 1 AZST} + {2519251200 14400 0 AZT} + {2531952000 18000 1 AZST} + {2550700800 14400 0 AZT} + {2563401600 18000 1 AZST} + {2582150400 14400 0 AZT} + {2595456000 18000 1 AZST} + {2613600000 14400 0 AZT} + {2626905600 18000 1 AZST} + {2645049600 14400 0 AZT} + {2658355200 18000 1 AZST} + {2676499200 14400 0 AZT} + {2689804800 18000 1 AZST} + {2708553600 14400 0 AZT} + {2721254400 18000 1 AZST} + {2740003200 14400 0 AZT} + {2752704000 18000 1 AZST} + {2771452800 14400 0 AZT} + {2784758400 18000 1 AZST} + {2802902400 14400 0 AZT} + {2816208000 18000 1 AZST} + {2834352000 14400 0 AZT} + {2847657600 18000 1 AZST} + {2866406400 14400 0 AZT} + {2879107200 18000 1 AZST} + {2897856000 14400 0 AZT} + {2910556800 18000 1 AZST} + {2929305600 14400 0 AZT} + {2942006400 18000 1 AZST} + {2960755200 14400 0 AZT} + {2974060800 18000 1 AZST} + {2992204800 14400 0 AZT} + {3005510400 18000 1 AZST} + {3023654400 14400 0 AZT} + {3036960000 18000 1 AZST} + {3055708800 14400 0 AZT} + {3068409600 18000 1 AZST} + {3087158400 14400 0 AZT} + {3099859200 18000 1 AZST} + {3118608000 14400 0 AZT} + {3131913600 18000 1 AZST} + {3150057600 14400 0 AZT} + {3163363200 18000 1 AZST} + {3181507200 14400 0 AZT} + {3194812800 18000 1 AZST} + {3212956800 14400 0 AZT} + {3226262400 18000 1 AZST} + {3245011200 14400 0 AZT} + {3257712000 18000 1 AZST} + {3276460800 14400 0 AZT} + {3289161600 18000 1 AZST} + {3307910400 14400 0 AZT} + {3321216000 18000 1 AZST} + {3339360000 14400 0 AZT} + {3352665600 18000 1 AZST} + {3370809600 14400 0 AZT} + {3384115200 18000 1 AZST} + {3402864000 14400 0 AZT} + {3415564800 18000 1 AZST} + {3434313600 14400 0 AZT} + {3447014400 18000 1 AZST} + {3465763200 14400 0 AZT} + {3479068800 18000 1 AZST} + {3497212800 14400 0 AZT} + {3510518400 18000 1 AZST} + {3528662400 14400 0 AZT} + {3541968000 18000 1 AZST} + {3560112000 14400 0 AZT} + {3573417600 18000 1 AZST} + {3592166400 14400 0 AZT} + {3604867200 18000 1 AZST} + {3623616000 14400 0 AZT} + {3636316800 18000 1 AZST} + {3655065600 14400 0 AZT} + {3668371200 18000 1 AZST} + {3686515200 14400 0 AZT} + {3699820800 18000 1 AZST} + {3717964800 14400 0 AZT} + {3731270400 18000 1 AZST} + {3750019200 14400 0 AZT} + {3762720000 18000 1 AZST} + {3781468800 14400 0 AZT} + {3794169600 18000 1 AZST} + {3812918400 14400 0 AZT} + {3825619200 18000 1 AZST} + {3844368000 14400 0 AZT} + {3857673600 18000 1 AZST} + {3875817600 14400 0 AZT} + {3889123200 18000 1 AZST} + {3907267200 14400 0 AZT} + {3920572800 18000 1 AZST} + {3939321600 14400 0 AZT} + {3952022400 18000 1 AZST} + {3970771200 14400 0 AZT} + {3983472000 18000 1 AZST} + {4002220800 14400 0 AZT} + {4015526400 18000 1 AZST} + {4033670400 14400 0 AZT} + {4046976000 18000 1 AZST} + {4065120000 14400 0 AZT} + {4078425600 18000 1 AZST} + {4096569600 14400 0 AZT} } diff --git a/library/tzdata/Asia/Barnaul b/library/tzdata/Asia/Barnaul deleted file mode 100644 index bf6abbf..0000000 --- a/library/tzdata/Asia/Barnaul +++ /dev/null @@ -1,73 +0,0 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Barnaul) { - {-9223372036854775808 20100 0 LMT} - {-1579844100 21600 0 +06} - {-1247551200 25200 0 +08} - {354906000 28800 1 +08} - {370713600 25200 0 +07} - {386442000 28800 1 +08} - {402249600 25200 0 +07} - {417978000 28800 1 +08} - {433785600 25200 0 +07} - {449600400 28800 1 +08} - {465332400 25200 0 +07} - {481057200 28800 1 +08} - {496782000 25200 0 +07} - {512506800 28800 1 +08} - {528231600 25200 0 +07} - {543956400 28800 1 +08} - {559681200 25200 0 +07} - {575406000 28800 1 +08} - {591130800 25200 0 +07} - {606855600 28800 1 +08} - {622580400 25200 0 +07} - {638305200 28800 1 +08} - {654634800 25200 0 +07} - {670359600 21600 0 +07} - {670363200 25200 1 +07} - {686088000 21600 0 +06} - {695764800 25200 0 +08} - {701809200 28800 1 +08} - {717534000 25200 0 +07} - {733258800 28800 1 +08} - {748983600 25200 0 +07} - {764708400 28800 1 +08} - {780433200 25200 0 +07} - {796158000 28800 1 +08} - {801594000 25200 0 +07} - {811886400 21600 0 +06} - {828216000 25200 1 +07} - {846360000 21600 0 +06} - {859665600 25200 1 +07} - {877809600 21600 0 +06} - {891115200 25200 1 +07} - {909259200 21600 0 +06} - {922564800 25200 1 +07} - {941313600 21600 0 +06} - {954014400 25200 1 +07} - {972763200 21600 0 +06} - {985464000 25200 1 +07} - {1004212800 21600 0 +06} - {1017518400 25200 1 +07} - {1035662400 21600 0 +06} - {1048968000 25200 1 +07} - {1067112000 21600 0 +06} - {1080417600 25200 1 +07} - {1099166400 21600 0 +06} - {1111867200 25200 1 +07} - {1130616000 21600 0 +06} - {1143316800 25200 1 +07} - {1162065600 21600 0 +06} - {1174766400 25200 1 +07} - {1193515200 21600 0 +06} - {1206820800 25200 1 +07} - {1224964800 21600 0 +06} - {1238270400 25200 1 +07} - {1256414400 21600 0 +06} - {1269720000 25200 1 +07} - {1288468800 21600 0 +06} - {1301169600 25200 0 +07} - {1414263600 21600 0 +06} - {1459022400 25200 0 +07} -} diff --git a/library/tzdata/Asia/Bishkek b/library/tzdata/Asia/Bishkek index a02d789..6ba3896 100644 --- a/library/tzdata/Asia/Bishkek +++ b/library/tzdata/Asia/Bishkek @@ -2,57 +2,56 @@ set TZData(:Asia/Bishkek) { {-9223372036854775808 17904 0 LMT} - {-1441169904 18000 0 +05} - {-1247547600 21600 0 +06} - {354909600 25200 1 +07} - {370717200 21600 0 +06} - {386445600 25200 1 +07} - {402253200 21600 0 +06} - {417981600 25200 1 +07} - {433789200 21600 0 +06} - {449604000 25200 1 +07} - {465336000 21600 0 +06} - {481060800 25200 1 +07} - {496785600 21600 0 +06} - {512510400 25200 1 +07} - {528235200 21600 0 +06} - {543960000 25200 1 +07} - {559684800 21600 0 +06} - {575409600 25200 1 +07} - {591134400 21600 0 +06} - {606859200 25200 1 +07} - {622584000 21600 0 +06} - {638308800 25200 1 +07} - {654638400 21600 0 +06} - {670363200 18000 0 +05} - {670366800 21600 1 +06} - {683586000 18000 0 +05} - {703018800 21600 1 +06} - {717530400 18000 0 +05} - {734468400 21600 1 +06} - {748980000 18000 0 +05} - {765918000 21600 1 +06} - {780429600 18000 0 +05} - {797367600 21600 1 +06} - {811879200 18000 0 +05} - {828817200 21600 1 +06} - {843933600 18000 0 +05} - {859671000 21600 1 +06} - {877811400 18000 0 +05} - {891120600 21600 1 +06} - {909261000 18000 0 +05} - {922570200 21600 1 +06} - {941315400 18000 0 +05} - {954019800 21600 1 +06} - {972765000 18000 0 +05} - {985469400 21600 1 +06} - {1004214600 18000 0 +05} - {1017523800 21600 1 +06} - {1035664200 18000 0 +05} - {1048973400 21600 1 +06} - {1067113800 18000 0 +05} - {1080423000 21600 1 +06} - {1099168200 18000 0 +05} - {1111872600 21600 1 +06} - {1123783200 21600 0 +06} + {-1441169904 18000 0 FRUT} + {-1247547600 21600 0 FRUT} + {354909600 25200 1 FRUST} + {370717200 21600 0 FRUT} + {386445600 25200 1 FRUST} + {402253200 21600 0 FRUT} + {417981600 25200 1 FRUST} + {433789200 21600 0 FRUT} + {449604000 25200 1 FRUST} + {465336000 21600 0 FRUT} + {481060800 25200 1 FRUST} + {496785600 21600 0 FRUT} + {512510400 25200 1 FRUST} + {528235200 21600 0 FRUT} + {543960000 25200 1 FRUST} + {559684800 21600 0 FRUT} + {575409600 25200 1 FRUST} + {591134400 21600 0 FRUT} + {606859200 25200 1 FRUST} + {622584000 21600 0 FRUT} + {638308800 25200 1 FRUST} + {654638400 21600 0 FRUT} + {670363200 21600 1 FRUST} + {683582400 21600 0 KGT} + {703018800 21600 1 KGST} + {717530400 18000 0 KGT} + {734468400 21600 1 KGST} + {748980000 18000 0 KGT} + {765918000 21600 1 KGST} + {780429600 18000 0 KGT} + {797367600 21600 1 KGST} + {811879200 18000 0 KGT} + {828817200 21600 1 KGST} + {843933600 18000 0 KGT} + {859671000 21600 1 KGST} + {877811400 18000 0 KGT} + {891120600 21600 1 KGST} + {909261000 18000 0 KGT} + {922570200 21600 1 KGST} + {941315400 18000 0 KGT} + {954019800 21600 1 KGST} + {972765000 18000 0 KGT} + {985469400 21600 1 KGST} + {1004214600 18000 0 KGT} + {1017523800 21600 1 KGST} + {1035664200 18000 0 KGT} + {1048973400 21600 1 KGST} + {1067113800 18000 0 KGT} + {1080423000 21600 1 KGST} + {1099168200 18000 0 KGT} + {1111872600 21600 1 KGST} + {1123783200 21600 0 KGT} } diff --git a/library/tzdata/Asia/Chita b/library/tzdata/Asia/Chita index 279c016..eabce7f 100644 --- a/library/tzdata/Asia/Chita +++ b/library/tzdata/Asia/Chita @@ -2,71 +2,70 @@ set TZData(:Asia/Chita) { {-9223372036854775808 27232 0 LMT} - {-1579419232 28800 0 +08} - {-1247558400 32400 0 +10} - {354898800 36000 1 +10} - {370706400 32400 0 +09} - {386434800 36000 1 +10} - {402242400 32400 0 +09} - {417970800 36000 1 +10} - {433778400 32400 0 +09} - {449593200 36000 1 +10} - {465325200 32400 0 +09} - {481050000 36000 1 +10} - {496774800 32400 0 +09} - {512499600 36000 1 +10} - {528224400 32400 0 +09} - {543949200 36000 1 +10} - {559674000 32400 0 +09} - {575398800 36000 1 +10} - {591123600 32400 0 +09} - {606848400 36000 1 +10} - {622573200 32400 0 +09} - {638298000 36000 1 +10} - {654627600 32400 0 +09} - {670352400 28800 0 +09} - {670356000 32400 1 +09} - {686080800 28800 0 +08} - {695757600 32400 0 +10} - {701802000 36000 1 +10} - {717526800 32400 0 +09} - {733251600 36000 1 +10} - {748976400 32400 0 +09} - {764701200 36000 1 +10} - {780426000 32400 0 +09} - {796150800 36000 1 +10} - {811875600 32400 0 +09} - {828205200 36000 1 +10} - {846349200 32400 0 +09} - {859654800 36000 1 +10} - {877798800 32400 0 +09} - {891104400 36000 1 +10} - {909248400 32400 0 +09} - {922554000 36000 1 +10} - {941302800 32400 0 +09} - {954003600 36000 1 +10} - {972752400 32400 0 +09} - {985453200 36000 1 +10} - {1004202000 32400 0 +09} - {1017507600 36000 1 +10} - {1035651600 32400 0 +09} - {1048957200 36000 1 +10} - {1067101200 32400 0 +09} - {1080406800 36000 1 +10} - {1099155600 32400 0 +09} - {1111856400 36000 1 +10} - {1130605200 32400 0 +09} - {1143306000 36000 1 +10} - {1162054800 32400 0 +09} - {1174755600 36000 1 +10} - {1193504400 32400 0 +09} - {1206810000 36000 1 +10} - {1224954000 32400 0 +09} - {1238259600 36000 1 +10} - {1256403600 32400 0 +09} - {1269709200 36000 1 +10} - {1288458000 32400 0 +09} - {1301158800 36000 0 +10} - {1414252800 28800 0 +08} - {1459015200 32400 0 +09} + {-1579419232 28800 0 YAKT} + {-1247558400 32400 0 YAKMMTT} + {354898800 36000 1 YAKST} + {370706400 32400 0 YAKT} + {386434800 36000 1 YAKST} + {402242400 32400 0 YAKT} + {417970800 36000 1 YAKST} + {433778400 32400 0 YAKT} + {449593200 36000 1 YAKST} + {465325200 32400 0 YAKT} + {481050000 36000 1 YAKST} + {496774800 32400 0 YAKT} + {512499600 36000 1 YAKST} + {528224400 32400 0 YAKT} + {543949200 36000 1 YAKST} + {559674000 32400 0 YAKT} + {575398800 36000 1 YAKST} + {591123600 32400 0 YAKT} + {606848400 36000 1 YAKST} + {622573200 32400 0 YAKT} + {638298000 36000 1 YAKST} + {654627600 32400 0 YAKT} + {670352400 28800 0 YAKMMTT} + {670356000 32400 1 YAKST} + {686080800 28800 0 YAKT} + {695757600 32400 0 YAKMMTT} + {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} + {1080406800 36000 1 YAKST} + {1099155600 32400 0 YAKT} + {1111856400 36000 1 YAKST} + {1130605200 32400 0 YAKT} + {1143306000 36000 1 YAKST} + {1162054800 32400 0 YAKT} + {1174755600 36000 1 YAKST} + {1193504400 32400 0 YAKT} + {1206810000 36000 1 YAKST} + {1224954000 32400 0 YAKT} + {1238259600 36000 1 YAKST} + {1256403600 32400 0 YAKT} + {1269709200 36000 1 YAKST} + {1288458000 32400 0 YAKT} + {1301158800 36000 0 YAKT} + {1414252800 28800 0 IRKT} } diff --git a/library/tzdata/Asia/Colombo b/library/tzdata/Asia/Colombo index 7a14a9b..ca7bffc 100644 --- a/library/tzdata/Asia/Colombo +++ b/library/tzdata/Asia/Colombo @@ -3,11 +3,11 @@ set TZData(:Asia/Colombo) { {-9223372036854775808 19164 0 LMT} {-2840159964 19172 0 MMT} - {-2019705572 19800 0 +0530} - {-883287000 21600 1 +06} - {-862639200 23400 1 +0630} - {-764051400 19800 0 +0530} - {832962600 23400 0 +0630} - {846266400 21600 0 +06} - {1145039400 19800 0 +0530} + {-2019705572 19800 0 IST} + {-883287000 21600 1 IHST} + {-862639200 23400 1 IST} + {-764051400 19800 0 IST} + {832962600 23400 0 LKT} + {846266400 21600 0 LKT} + {1145039400 19800 0 IST} } diff --git a/library/tzdata/Asia/Dushanbe b/library/tzdata/Asia/Dushanbe index e9ed132..59f8cb6 100644 --- a/library/tzdata/Asia/Dushanbe +++ b/library/tzdata/Asia/Dushanbe @@ -2,28 +2,28 @@ set TZData(:Asia/Dushanbe) { {-9223372036854775808 16512 0 LMT} - {-1441168512 18000 0 +05} - {-1247547600 21600 0 +06} - {354909600 25200 1 +07} - {370717200 21600 0 +06} - {386445600 25200 1 +07} - {402253200 21600 0 +06} - {417981600 25200 1 +07} - {433789200 21600 0 +06} - {449604000 25200 1 +07} - {465336000 21600 0 +06} - {481060800 25200 1 +07} - {496785600 21600 0 +06} - {512510400 25200 1 +07} - {528235200 21600 0 +06} - {543960000 25200 1 +07} - {559684800 21600 0 +06} - {575409600 25200 1 +07} - {591134400 21600 0 +06} - {606859200 25200 1 +07} - {622584000 21600 0 +06} - {638308800 25200 1 +07} - {654638400 21600 0 +06} - {670363200 21600 1 +06} - {684363600 18000 0 +05} + {-1441168512 18000 0 DUST} + {-1247547600 21600 0 DUST} + {354909600 25200 1 DUSST} + {370717200 21600 0 DUST} + {386445600 25200 1 DUSST} + {402253200 21600 0 DUST} + {417981600 25200 1 DUSST} + {433789200 21600 0 DUST} + {449604000 25200 1 DUSST} + {465336000 21600 0 DUST} + {481060800 25200 1 DUSST} + {496785600 21600 0 DUST} + {512510400 25200 1 DUSST} + {528235200 21600 0 DUST} + {543960000 25200 1 DUSST} + {559684800 21600 0 DUST} + {575409600 25200 1 DUSST} + {591134400 21600 0 DUST} + {606859200 25200 1 DUSST} + {622584000 21600 0 DUST} + {638308800 25200 1 DUSST} + {654638400 21600 0 DUST} + {670363200 21600 1 DUSST} + {684363600 18000 0 TJT} } diff --git a/library/tzdata/Asia/Famagusta b/library/tzdata/Asia/Famagusta deleted file mode 100644 index 384c183..0000000 --- a/library/tzdata/Asia/Famagusta +++ /dev/null @@ -1,91 +0,0 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Famagusta) { - {-9223372036854775808 8148 0 LMT} - {-1518920148 7200 0 EET} - {166572000 10800 1 EEST} - {182293200 7200 0 EET} - {200959200 10800 1 EEST} - {213829200 7200 0 EET} - {228866400 10800 1 EEST} - {243982800 7200 0 EET} - {260316000 10800 1 EEST} - {276123600 7200 0 EET} - {291765600 10800 1 EEST} - {307486800 7200 0 EET} - {323820000 10800 1 EEST} - {338936400 7200 0 EET} - {354664800 10800 1 EEST} - {370386000 7200 0 EET} - {386114400 10800 1 EEST} - {401835600 7200 0 EET} - {417564000 10800 1 EEST} - {433285200 7200 0 EET} - {449013600 10800 1 EEST} - {465339600 7200 0 EET} - {481068000 10800 1 EEST} - {496789200 7200 0 EET} - {512517600 10800 1 EEST} - {528238800 7200 0 EET} - {543967200 10800 1 EEST} - {559688400 7200 0 EET} - {575416800 10800 1 EEST} - {591138000 7200 0 EET} - {606866400 10800 1 EEST} - {622587600 7200 0 EET} - {638316000 10800 1 EEST} - {654642000 7200 0 EET} - {670370400 10800 1 EEST} - {686091600 7200 0 EET} - {701820000 10800 1 EEST} - {717541200 7200 0 EET} - {733269600 10800 1 EEST} - {748990800 7200 0 EET} - {764719200 10800 1 EEST} - {780440400 7200 0 EET} - {796168800 10800 1 EEST} - {811890000 7200 0 EET} - {828223200 10800 1 EEST} - {843944400 7200 0 EET} - {859672800 10800 1 EEST} - {875394000 7200 0 EET} - {891122400 10800 1 EEST} - {904597200 10800 0 EEST} - {909277200 7200 0 EET} - {922582800 10800 1 EEST} - {941331600 7200 0 EET} - {954032400 10800 1 EEST} - {972781200 7200 0 EET} - {985482000 10800 1 EEST} - {1004230800 7200 0 EET} - {1017536400 10800 1 EEST} - {1035680400 7200 0 EET} - {1048986000 10800 1 EEST} - {1067130000 7200 0 EET} - {1080435600 10800 1 EEST} - {1099184400 7200 0 EET} - {1111885200 10800 1 EEST} - {1130634000 7200 0 EET} - {1143334800 10800 1 EEST} - {1162083600 7200 0 EET} - {1174784400 10800 1 EEST} - {1193533200 7200 0 EET} - {1206838800 10800 1 EEST} - {1224982800 7200 0 EET} - {1238288400 10800 1 EEST} - {1256432400 7200 0 EET} - {1269738000 10800 1 EEST} - {1288486800 7200 0 EET} - {1301187600 10800 1 EEST} - {1319936400 7200 0 EET} - {1332637200 10800 1 EEST} - {1351386000 7200 0 EET} - {1364691600 10800 1 EEST} - {1382835600 7200 0 EET} - {1396141200 10800 1 EEST} - {1414285200 7200 0 EET} - {1427590800 10800 1 EEST} - {1445734800 7200 0 EET} - {1459040400 10800 1 EEST} - {1473285600 10800 0 +03} -} diff --git a/library/tzdata/Asia/Gaza b/library/tzdata/Asia/Gaza index 1149d51..805b6b7 100644 --- a/library/tzdata/Asia/Gaza +++ b/library/tzdata/Asia/Gaza @@ -2,17 +2,17 @@ set TZData(:Asia/Gaza) { {-9223372036854775808 8272 0 LMT} - {-2185409872 7200 0 EEST} - {-933645600 10800 1 EEST} - {-857358000 7200 0 EEST} - {-844300800 10800 1 EEST} - {-825822000 7200 0 EEST} - {-812685600 10800 1 EEST} - {-794199600 7200 0 EEST} - {-779853600 10800 1 EEST} - {-762656400 7200 0 EEST} - {-748310400 10800 1 EEST} - {-731127600 7200 0 EEST} + {-2185409872 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} @@ -107,172 +107,172 @@ set TZData(:Asia/Gaza) { {1414098000 7200 0 EET} {1427493600 10800 1 EEST} {1445547600 7200 0 EET} - {1458946800 10800 1 EEST} - {1477692000 7200 0 EET} - {1490396400 10800 1 EEST} - {1509141600 7200 0 EET} - {1522450800 10800 1 EEST} - {1540591200 7200 0 EET} - {1553900400 10800 1 EEST} - {1572040800 7200 0 EET} - {1585350000 10800 1 EEST} - {1604095200 7200 0 EET} - {1616799600 10800 1 EEST} - {1635544800 7200 0 EET} - {1648249200 10800 1 EEST} - {1666994400 7200 0 EET} - {1679698800 10800 1 EEST} - {1698444000 7200 0 EET} - {1711753200 10800 1 EEST} - {1729893600 7200 0 EET} - {1743202800 10800 1 EEST} - {1761343200 7200 0 EET} - {1774652400 10800 1 EEST} - {1793397600 7200 0 EET} - {1806102000 10800 1 EEST} - {1824847200 7200 0 EET} - {1837551600 10800 1 EEST} - {1856296800 7200 0 EET} - {1869606000 10800 1 EEST} - {1887746400 7200 0 EET} - {1901055600 10800 1 EEST} - {1919196000 7200 0 EET} - {1932505200 10800 1 EEST} - {1950645600 7200 0 EET} - {1963954800 10800 1 EEST} - {1982700000 7200 0 EET} - {1995404400 10800 1 EEST} - {2014149600 7200 0 EET} - {2026854000 10800 1 EEST} - {2045599200 7200 0 EET} - {2058908400 10800 1 EEST} - {2077048800 7200 0 EET} - {2090358000 10800 1 EEST} - {2108498400 7200 0 EET} - {2121807600 10800 1 EEST} - {2140552800 7200 0 EET} - {2153257200 10800 1 EEST} - {2172002400 7200 0 EET} - {2184706800 10800 1 EEST} - {2203452000 7200 0 EET} - {2216761200 10800 1 EEST} - {2234901600 7200 0 EET} - {2248210800 10800 1 EEST} - {2266351200 7200 0 EET} - {2279660400 10800 1 EEST} - {2297800800 7200 0 EET} - {2311110000 10800 1 EEST} - {2329855200 7200 0 EET} - {2342559600 10800 1 EEST} - {2361304800 7200 0 EET} - {2374009200 10800 1 EEST} - {2392754400 7200 0 EET} - {2406063600 10800 1 EEST} - {2424204000 7200 0 EET} - {2437513200 10800 1 EEST} - {2455653600 7200 0 EET} - {2468962800 10800 1 EEST} - {2487708000 7200 0 EET} - {2500412400 10800 1 EEST} - {2519157600 7200 0 EET} - {2531862000 10800 1 EEST} - {2550607200 7200 0 EET} - {2563311600 10800 1 EEST} - {2582056800 7200 0 EET} - {2595366000 10800 1 EEST} - {2613506400 7200 0 EET} - {2626815600 10800 1 EEST} - {2644956000 7200 0 EET} - {2658265200 10800 1 EEST} - {2677010400 7200 0 EET} - {2689714800 10800 1 EEST} - {2708460000 7200 0 EET} - {2721164400 10800 1 EEST} - {2739909600 7200 0 EET} - {2753218800 10800 1 EEST} - {2771359200 7200 0 EET} - {2784668400 10800 1 EEST} - {2802808800 7200 0 EET} - {2816118000 10800 1 EEST} - {2834258400 7200 0 EET} - {2847567600 10800 1 EEST} - {2866312800 7200 0 EET} - {2879017200 10800 1 EEST} - {2897762400 7200 0 EET} - {2910466800 10800 1 EEST} - {2929212000 7200 0 EET} - {2942521200 10800 1 EEST} - {2960661600 7200 0 EET} - {2973970800 10800 1 EEST} - {2992111200 7200 0 EET} - {3005420400 10800 1 EEST} - {3024165600 7200 0 EET} - {3036870000 10800 1 EEST} - {3055615200 7200 0 EET} - {3068319600 10800 1 EEST} - {3087064800 7200 0 EET} - {3100374000 10800 1 EEST} - {3118514400 7200 0 EET} - {3131823600 10800 1 EEST} - {3149964000 7200 0 EET} - {3163273200 10800 1 EEST} - {3181413600 7200 0 EET} - {3194722800 10800 1 EEST} - {3213468000 7200 0 EET} - {3226172400 10800 1 EEST} - {3244917600 7200 0 EET} - {3257622000 10800 1 EEST} - {3276367200 7200 0 EET} - {3289676400 10800 1 EEST} - {3307816800 7200 0 EET} - {3321126000 10800 1 EEST} - {3339266400 7200 0 EET} - {3352575600 10800 1 EEST} - {3371320800 7200 0 EET} - {3384025200 10800 1 EEST} - {3402770400 7200 0 EET} - {3415474800 10800 1 EEST} - {3434220000 7200 0 EET} - {3446924400 10800 1 EEST} - {3465669600 7200 0 EET} - {3478978800 10800 1 EEST} - {3497119200 7200 0 EET} - {3510428400 10800 1 EEST} - {3528568800 7200 0 EET} - {3541878000 10800 1 EEST} - {3560623200 7200 0 EET} - {3573327600 10800 1 EEST} - {3592072800 7200 0 EET} - {3604777200 10800 1 EEST} - {3623522400 7200 0 EET} - {3636831600 10800 1 EEST} - {3654972000 7200 0 EET} - {3668281200 10800 1 EEST} - {3686421600 7200 0 EET} - {3699730800 10800 1 EEST} - {3717871200 7200 0 EET} - {3731180400 10800 1 EEST} - {3749925600 7200 0 EET} - {3762630000 10800 1 EEST} - {3781375200 7200 0 EET} - {3794079600 10800 1 EEST} - {3812824800 7200 0 EET} - {3826134000 10800 1 EEST} - {3844274400 7200 0 EET} - {3857583600 10800 1 EEST} - {3875724000 7200 0 EET} - {3889033200 10800 1 EEST} - {3907778400 7200 0 EET} - {3920482800 10800 1 EEST} - {3939228000 7200 0 EET} - {3951932400 10800 1 EEST} - {3970677600 7200 0 EET} - {3983986800 10800 1 EEST} - {4002127200 7200 0 EET} - {4015436400 10800 1 EEST} - {4033576800 7200 0 EET} - {4046886000 10800 1 EEST} - {4065026400 7200 0 EET} - {4078335600 10800 1 EEST} - {4097080800 7200 0 EET} + {1458943200 10800 1 EEST} + {1476997200 7200 0 EET} + {1490997600 10800 1 EEST} + {1509051600 7200 0 EET} + {1522447200 10800 1 EEST} + {1540501200 7200 0 EET} + {1553896800 10800 1 EEST} + {1571950800 7200 0 EET} + {1585346400 10800 1 EEST} + {1603400400 7200 0 EET} + {1616796000 10800 1 EEST} + {1634850000 7200 0 EET} + {1648245600 10800 1 EEST} + {1666299600 7200 0 EET} + {1680300000 10800 1 EEST} + {1698354000 7200 0 EET} + {1711749600 10800 1 EEST} + {1729803600 7200 0 EET} + {1743199200 10800 1 EEST} + {1761253200 7200 0 EET} + {1774648800 10800 1 EEST} + {1792702800 7200 0 EET} + {1806098400 10800 1 EEST} + {1824152400 7200 0 EET} + {1838152800 10800 1 EEST} + {1856206800 7200 0 EET} + {1869602400 10800 1 EEST} + {1887656400 7200 0 EET} + {1901052000 10800 1 EEST} + {1919106000 7200 0 EET} + {1932501600 10800 1 EEST} + {1950555600 7200 0 EET} + {1963951200 10800 1 EEST} + {1982005200 7200 0 EET} + {1995400800 10800 1 EEST} + {2013454800 7200 0 EET} + {2027455200 10800 1 EEST} + {2045509200 7200 0 EET} + {2058904800 10800 1 EEST} + {2076958800 7200 0 EET} + {2090354400 10800 1 EEST} + {2108408400 7200 0 EET} + {2121804000 10800 1 EEST} + {2139858000 7200 0 EET} + {2153253600 10800 1 EEST} + {2171307600 7200 0 EET} + {2184703200 10800 1 EEST} + {2202757200 7200 0 EET} + {2216757600 10800 1 EEST} + {2234811600 7200 0 EET} + {2248207200 10800 1 EEST} + {2266261200 7200 0 EET} + {2279656800 10800 1 EEST} + {2297710800 7200 0 EET} + {2311106400 10800 1 EEST} + {2329160400 7200 0 EET} + {2342556000 10800 1 EEST} + {2360610000 7200 0 EET} + {2374610400 10800 1 EEST} + {2392664400 7200 0 EET} + {2406060000 10800 1 EEST} + {2424114000 7200 0 EET} + {2437509600 10800 1 EEST} + {2455563600 7200 0 EET} + {2468959200 10800 1 EEST} + {2487013200 7200 0 EET} + {2500408800 10800 1 EEST} + {2518462800 7200 0 EET} + {2531858400 10800 1 EEST} + {2549912400 7200 0 EET} + {2563912800 10800 1 EEST} + {2581966800 7200 0 EET} + {2595362400 10800 1 EEST} + {2613416400 7200 0 EET} + {2626812000 10800 1 EEST} + {2644866000 7200 0 EET} + {2658261600 10800 1 EEST} + {2676315600 7200 0 EET} + {2689711200 10800 1 EEST} + {2707765200 7200 0 EET} + {2721765600 10800 1 EEST} + {2739819600 7200 0 EET} + {2753215200 10800 1 EEST} + {2771269200 7200 0 EET} + {2784664800 10800 1 EEST} + {2802718800 7200 0 EET} + {2816114400 10800 1 EEST} + {2834168400 7200 0 EET} + {2847564000 10800 1 EEST} + {2865618000 7200 0 EET} + {2879013600 10800 1 EEST} + {2897067600 7200 0 EET} + {2911068000 10800 1 EEST} + {2929122000 7200 0 EET} + {2942517600 10800 1 EEST} + {2960571600 7200 0 EET} + {2973967200 10800 1 EEST} + {2992021200 7200 0 EET} + {3005416800 10800 1 EEST} + {3023470800 7200 0 EET} + {3036866400 10800 1 EEST} + {3054920400 7200 0 EET} + {3068316000 10800 1 EEST} + {3086370000 7200 0 EET} + {3100370400 10800 1 EEST} + {3118424400 7200 0 EET} + {3131820000 10800 1 EEST} + {3149874000 7200 0 EET} + {3163269600 10800 1 EEST} + {3181323600 7200 0 EET} + {3194719200 10800 1 EEST} + {3212773200 7200 0 EET} + {3226168800 10800 1 EEST} + {3244222800 7200 0 EET} + {3258223200 10800 1 EEST} + {3276277200 7200 0 EET} + {3289672800 10800 1 EEST} + {3307726800 7200 0 EET} + {3321122400 10800 1 EEST} + {3339176400 7200 0 EET} + {3352572000 10800 1 EEST} + {3370626000 7200 0 EET} + {3384021600 10800 1 EEST} + {3402075600 7200 0 EET} + {3415471200 10800 1 EEST} + {3433525200 7200 0 EET} + {3447525600 10800 1 EEST} + {3465579600 7200 0 EET} + {3478975200 10800 1 EEST} + {3497029200 7200 0 EET} + {3510424800 10800 1 EEST} + {3528478800 7200 0 EET} + {3541874400 10800 1 EEST} + {3559928400 7200 0 EET} + {3573324000 10800 1 EEST} + {3591378000 7200 0 EET} + {3605378400 10800 1 EEST} + {3623432400 7200 0 EET} + {3636828000 10800 1 EEST} + {3654882000 7200 0 EET} + {3668277600 10800 1 EEST} + {3686331600 7200 0 EET} + {3699727200 10800 1 EEST} + {3717781200 7200 0 EET} + {3731176800 10800 1 EEST} + {3749230800 7200 0 EET} + {3762626400 10800 1 EEST} + {3780680400 7200 0 EET} + {3794680800 10800 1 EEST} + {3812734800 7200 0 EET} + {3826130400 10800 1 EEST} + {3844184400 7200 0 EET} + {3857580000 10800 1 EEST} + {3875634000 7200 0 EET} + {3889029600 10800 1 EEST} + {3907083600 7200 0 EET} + {3920479200 10800 1 EEST} + {3938533200 7200 0 EET} + {3951928800 10800 1 EEST} + {3969982800 7200 0 EET} + {3983983200 10800 1 EEST} + {4002037200 7200 0 EET} + {4015432800 10800 1 EEST} + {4033486800 7200 0 EET} + {4046882400 10800 1 EEST} + {4064936400 7200 0 EET} + {4078332000 10800 1 EEST} + {4096386000 7200 0 EET} } diff --git a/library/tzdata/Asia/Hebron b/library/tzdata/Asia/Hebron index 5d312b8..9049d93 100644 --- a/library/tzdata/Asia/Hebron +++ b/library/tzdata/Asia/Hebron @@ -2,17 +2,17 @@ set TZData(:Asia/Hebron) { {-9223372036854775808 8423 0 LMT} - {-2185410023 7200 0 EEST} - {-933645600 10800 1 EEST} - {-857358000 7200 0 EEST} - {-844300800 10800 1 EEST} - {-825822000 7200 0 EEST} - {-812685600 10800 1 EEST} - {-794199600 7200 0 EEST} - {-779853600 10800 1 EEST} - {-762656400 7200 0 EEST} - {-748310400 10800 1 EEST} - {-731127600 7200 0 EEST} + {-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} @@ -106,172 +106,172 @@ set TZData(:Asia/Hebron) { {1414098000 7200 0 EET} {1427493600 10800 1 EEST} {1445547600 7200 0 EET} - {1458946800 10800 1 EEST} - {1477692000 7200 0 EET} - {1490396400 10800 1 EEST} - {1509141600 7200 0 EET} - {1522450800 10800 1 EEST} - {1540591200 7200 0 EET} - {1553900400 10800 1 EEST} - {1572040800 7200 0 EET} - {1585350000 10800 1 EEST} - {1604095200 7200 0 EET} - {1616799600 10800 1 EEST} - {1635544800 7200 0 EET} - {1648249200 10800 1 EEST} - {1666994400 7200 0 EET} - {1679698800 10800 1 EEST} - {1698444000 7200 0 EET} - {1711753200 10800 1 EEST} - {1729893600 7200 0 EET} - {1743202800 10800 1 EEST} - {1761343200 7200 0 EET} - {1774652400 10800 1 EEST} - {1793397600 7200 0 EET} - {1806102000 10800 1 EEST} - {1824847200 7200 0 EET} - {1837551600 10800 1 EEST} - {1856296800 7200 0 EET} - {1869606000 10800 1 EEST} - {1887746400 7200 0 EET} - {1901055600 10800 1 EEST} - {1919196000 7200 0 EET} - {1932505200 10800 1 EEST} - {1950645600 7200 0 EET} - {1963954800 10800 1 EEST} - {1982700000 7200 0 EET} - {1995404400 10800 1 EEST} - {2014149600 7200 0 EET} - {2026854000 10800 1 EEST} - {2045599200 7200 0 EET} - {2058908400 10800 1 EEST} - {2077048800 7200 0 EET} - {2090358000 10800 1 EEST} - {2108498400 7200 0 EET} - {2121807600 10800 1 EEST} - {2140552800 7200 0 EET} - {2153257200 10800 1 EEST} - {2172002400 7200 0 EET} - {2184706800 10800 1 EEST} - {2203452000 7200 0 EET} - {2216761200 10800 1 EEST} - {2234901600 7200 0 EET} - {2248210800 10800 1 EEST} - {2266351200 7200 0 EET} - {2279660400 10800 1 EEST} - {2297800800 7200 0 EET} - {2311110000 10800 1 EEST} - {2329855200 7200 0 EET} - {2342559600 10800 1 EEST} - {2361304800 7200 0 EET} - {2374009200 10800 1 EEST} - {2392754400 7200 0 EET} - {2406063600 10800 1 EEST} - {2424204000 7200 0 EET} - {2437513200 10800 1 EEST} - {2455653600 7200 0 EET} - {2468962800 10800 1 EEST} - {2487708000 7200 0 EET} - {2500412400 10800 1 EEST} - {2519157600 7200 0 EET} - {2531862000 10800 1 EEST} - {2550607200 7200 0 EET} - {2563311600 10800 1 EEST} - {2582056800 7200 0 EET} - {2595366000 10800 1 EEST} - {2613506400 7200 0 EET} - {2626815600 10800 1 EEST} - {2644956000 7200 0 EET} - {2658265200 10800 1 EEST} - {2677010400 7200 0 EET} - {2689714800 10800 1 EEST} - {2708460000 7200 0 EET} - {2721164400 10800 1 EEST} - {2739909600 7200 0 EET} - {2753218800 10800 1 EEST} - {2771359200 7200 0 EET} - {2784668400 10800 1 EEST} - {2802808800 7200 0 EET} - {2816118000 10800 1 EEST} - {2834258400 7200 0 EET} - {2847567600 10800 1 EEST} - {2866312800 7200 0 EET} - {2879017200 10800 1 EEST} - {2897762400 7200 0 EET} - {2910466800 10800 1 EEST} - {2929212000 7200 0 EET} - {2942521200 10800 1 EEST} - {2960661600 7200 0 EET} - {2973970800 10800 1 EEST} - {2992111200 7200 0 EET} - {3005420400 10800 1 EEST} - {3024165600 7200 0 EET} - {3036870000 10800 1 EEST} - {3055615200 7200 0 EET} - {3068319600 10800 1 EEST} - {3087064800 7200 0 EET} - {3100374000 10800 1 EEST} - {3118514400 7200 0 EET} - {3131823600 10800 1 EEST} - {3149964000 7200 0 EET} - {3163273200 10800 1 EEST} - {3181413600 7200 0 EET} - {3194722800 10800 1 EEST} - {3213468000 7200 0 EET} - {3226172400 10800 1 EEST} - {3244917600 7200 0 EET} - {3257622000 10800 1 EEST} - {3276367200 7200 0 EET} - {3289676400 10800 1 EEST} - {3307816800 7200 0 EET} - {3321126000 10800 1 EEST} - {3339266400 7200 0 EET} - {3352575600 10800 1 EEST} - {3371320800 7200 0 EET} - {3384025200 10800 1 EEST} - {3402770400 7200 0 EET} - {3415474800 10800 1 EEST} - {3434220000 7200 0 EET} - {3446924400 10800 1 EEST} - {3465669600 7200 0 EET} - {3478978800 10800 1 EEST} - {3497119200 7200 0 EET} - {3510428400 10800 1 EEST} - {3528568800 7200 0 EET} - {3541878000 10800 1 EEST} - {3560623200 7200 0 EET} - {3573327600 10800 1 EEST} - {3592072800 7200 0 EET} - {3604777200 10800 1 EEST} - {3623522400 7200 0 EET} - {3636831600 10800 1 EEST} - {3654972000 7200 0 EET} - {3668281200 10800 1 EEST} - {3686421600 7200 0 EET} - {3699730800 10800 1 EEST} - {3717871200 7200 0 EET} - {3731180400 10800 1 EEST} - {3749925600 7200 0 EET} - {3762630000 10800 1 EEST} - {3781375200 7200 0 EET} - {3794079600 10800 1 EEST} - {3812824800 7200 0 EET} - {3826134000 10800 1 EEST} - {3844274400 7200 0 EET} - {3857583600 10800 1 EEST} - {3875724000 7200 0 EET} - {3889033200 10800 1 EEST} - {3907778400 7200 0 EET} - {3920482800 10800 1 EEST} - {3939228000 7200 0 EET} - {3951932400 10800 1 EEST} - {3970677600 7200 0 EET} - {3983986800 10800 1 EEST} - {4002127200 7200 0 EET} - {4015436400 10800 1 EEST} - {4033576800 7200 0 EET} - {4046886000 10800 1 EEST} - {4065026400 7200 0 EET} - {4078335600 10800 1 EEST} - {4097080800 7200 0 EET} + {1458943200 10800 1 EEST} + {1476997200 7200 0 EET} + {1490997600 10800 1 EEST} + {1509051600 7200 0 EET} + {1522447200 10800 1 EEST} + {1540501200 7200 0 EET} + {1553896800 10800 1 EEST} + {1571950800 7200 0 EET} + {1585346400 10800 1 EEST} + {1603400400 7200 0 EET} + {1616796000 10800 1 EEST} + {1634850000 7200 0 EET} + {1648245600 10800 1 EEST} + {1666299600 7200 0 EET} + {1680300000 10800 1 EEST} + {1698354000 7200 0 EET} + {1711749600 10800 1 EEST} + {1729803600 7200 0 EET} + {1743199200 10800 1 EEST} + {1761253200 7200 0 EET} + {1774648800 10800 1 EEST} + {1792702800 7200 0 EET} + {1806098400 10800 1 EEST} + {1824152400 7200 0 EET} + {1838152800 10800 1 EEST} + {1856206800 7200 0 EET} + {1869602400 10800 1 EEST} + {1887656400 7200 0 EET} + {1901052000 10800 1 EEST} + {1919106000 7200 0 EET} + {1932501600 10800 1 EEST} + {1950555600 7200 0 EET} + {1963951200 10800 1 EEST} + {1982005200 7200 0 EET} + {1995400800 10800 1 EEST} + {2013454800 7200 0 EET} + {2027455200 10800 1 EEST} + {2045509200 7200 0 EET} + {2058904800 10800 1 EEST} + {2076958800 7200 0 EET} + {2090354400 10800 1 EEST} + {2108408400 7200 0 EET} + {2121804000 10800 1 EEST} + {2139858000 7200 0 EET} + {2153253600 10800 1 EEST} + {2171307600 7200 0 EET} + {2184703200 10800 1 EEST} + {2202757200 7200 0 EET} + {2216757600 10800 1 EEST} + {2234811600 7200 0 EET} + {2248207200 10800 1 EEST} + {2266261200 7200 0 EET} + {2279656800 10800 1 EEST} + {2297710800 7200 0 EET} + {2311106400 10800 1 EEST} + {2329160400 7200 0 EET} + {2342556000 10800 1 EEST} + {2360610000 7200 0 EET} + {2374610400 10800 1 EEST} + {2392664400 7200 0 EET} + {2406060000 10800 1 EEST} + {2424114000 7200 0 EET} + {2437509600 10800 1 EEST} + {2455563600 7200 0 EET} + {2468959200 10800 1 EEST} + {2487013200 7200 0 EET} + {2500408800 10800 1 EEST} + {2518462800 7200 0 EET} + {2531858400 10800 1 EEST} + {2549912400 7200 0 EET} + {2563912800 10800 1 EEST} + {2581966800 7200 0 EET} + {2595362400 10800 1 EEST} + {2613416400 7200 0 EET} + {2626812000 10800 1 EEST} + {2644866000 7200 0 EET} + {2658261600 10800 1 EEST} + {2676315600 7200 0 EET} + {2689711200 10800 1 EEST} + {2707765200 7200 0 EET} + {2721765600 10800 1 EEST} + {2739819600 7200 0 EET} + {2753215200 10800 1 EEST} + {2771269200 7200 0 EET} + {2784664800 10800 1 EEST} + {2802718800 7200 0 EET} + {2816114400 10800 1 EEST} + {2834168400 7200 0 EET} + {2847564000 10800 1 EEST} + {2865618000 7200 0 EET} + {2879013600 10800 1 EEST} + {2897067600 7200 0 EET} + {2911068000 10800 1 EEST} + {2929122000 7200 0 EET} + {2942517600 10800 1 EEST} + {2960571600 7200 0 EET} + {2973967200 10800 1 EEST} + {2992021200 7200 0 EET} + {3005416800 10800 1 EEST} + {3023470800 7200 0 EET} + {3036866400 10800 1 EEST} + {3054920400 7200 0 EET} + {3068316000 10800 1 EEST} + {3086370000 7200 0 EET} + {3100370400 10800 1 EEST} + {3118424400 7200 0 EET} + {3131820000 10800 1 EEST} + {3149874000 7200 0 EET} + {3163269600 10800 1 EEST} + {3181323600 7200 0 EET} + {3194719200 10800 1 EEST} + {3212773200 7200 0 EET} + {3226168800 10800 1 EEST} + {3244222800 7200 0 EET} + {3258223200 10800 1 EEST} + {3276277200 7200 0 EET} + {3289672800 10800 1 EEST} + {3307726800 7200 0 EET} + {3321122400 10800 1 EEST} + {3339176400 7200 0 EET} + {3352572000 10800 1 EEST} + {3370626000 7200 0 EET} + {3384021600 10800 1 EEST} + {3402075600 7200 0 EET} + {3415471200 10800 1 EEST} + {3433525200 7200 0 EET} + {3447525600 10800 1 EEST} + {3465579600 7200 0 EET} + {3478975200 10800 1 EEST} + {3497029200 7200 0 EET} + {3510424800 10800 1 EEST} + {3528478800 7200 0 EET} + {3541874400 10800 1 EEST} + {3559928400 7200 0 EET} + {3573324000 10800 1 EEST} + {3591378000 7200 0 EET} + {3605378400 10800 1 EEST} + {3623432400 7200 0 EET} + {3636828000 10800 1 EEST} + {3654882000 7200 0 EET} + {3668277600 10800 1 EEST} + {3686331600 7200 0 EET} + {3699727200 10800 1 EEST} + {3717781200 7200 0 EET} + {3731176800 10800 1 EEST} + {3749230800 7200 0 EET} + {3762626400 10800 1 EEST} + {3780680400 7200 0 EET} + {3794680800 10800 1 EEST} + {3812734800 7200 0 EET} + {3826130400 10800 1 EEST} + {3844184400 7200 0 EET} + {3857580000 10800 1 EEST} + {3875634000 7200 0 EET} + {3889029600 10800 1 EEST} + {3907083600 7200 0 EET} + {3920479200 10800 1 EEST} + {3938533200 7200 0 EET} + {3951928800 10800 1 EEST} + {3969982800 7200 0 EET} + {3983983200 10800 1 EEST} + {4002037200 7200 0 EET} + {4015432800 10800 1 EEST} + {4033486800 7200 0 EET} + {4046882400 10800 1 EEST} + {4064936400 7200 0 EET} + {4078332000 10800 1 EEST} + {4096386000 7200 0 EET} } diff --git a/library/tzdata/Asia/Irkutsk b/library/tzdata/Asia/Irkutsk index 9666969..08e5798 100644 --- a/library/tzdata/Asia/Irkutsk +++ b/library/tzdata/Asia/Irkutsk @@ -3,70 +3,70 @@ set TZData(:Asia/Irkutsk) { {-9223372036854775808 25025 0 LMT} {-2840165825 25025 0 IMT} - {-1575874625 25200 0 +07} - {-1247554800 28800 0 +09} - {354902400 32400 1 +09} - {370710000 28800 0 +08} - {386438400 32400 1 +09} - {402246000 28800 0 +08} - {417974400 32400 1 +09} - {433782000 28800 0 +08} - {449596800 32400 1 +09} - {465328800 28800 0 +08} - {481053600 32400 1 +09} - {496778400 28800 0 +08} - {512503200 32400 1 +09} - {528228000 28800 0 +08} - {543952800 32400 1 +09} - {559677600 28800 0 +08} - {575402400 32400 1 +09} - {591127200 28800 0 +08} - {606852000 32400 1 +09} - {622576800 28800 0 +08} - {638301600 32400 1 +09} - {654631200 28800 0 +08} - {670356000 25200 0 +08} - {670359600 28800 1 +08} - {686084400 25200 0 +07} - {695761200 28800 0 +09} - {701805600 32400 1 +09} - {717530400 28800 0 +08} - {733255200 32400 1 +09} - {748980000 28800 0 +08} - {764704800 32400 1 +09} - {780429600 28800 0 +08} - {796154400 32400 1 +09} - {811879200 28800 0 +08} - {828208800 32400 1 +09} - {846352800 28800 0 +08} - {859658400 32400 1 +09} - {877802400 28800 0 +08} - {891108000 32400 1 +09} - {909252000 28800 0 +08} - {922557600 32400 1 +09} - {941306400 28800 0 +08} - {954007200 32400 1 +09} - {972756000 28800 0 +08} - {985456800 32400 1 +09} - {1004205600 28800 0 +08} - {1017511200 32400 1 +09} - {1035655200 28800 0 +08} - {1048960800 32400 1 +09} - {1067104800 28800 0 +08} - {1080410400 32400 1 +09} - {1099159200 28800 0 +08} - {1111860000 32400 1 +09} - {1130608800 28800 0 +08} - {1143309600 32400 1 +09} - {1162058400 28800 0 +08} - {1174759200 32400 1 +09} - {1193508000 28800 0 +08} - {1206813600 32400 1 +09} - {1224957600 28800 0 +08} - {1238263200 32400 1 +09} - {1256407200 28800 0 +08} - {1269712800 32400 1 +09} - {1288461600 28800 0 +08} - {1301162400 32400 0 +09} - {1414256400 28800 0 +08} + {-1575874625 25200 0 IRKT} + {-1247554800 28800 0 IRKMMTT} + {354902400 32400 1 IRKST} + {370710000 28800 0 IRKT} + {386438400 32400 1 IRKST} + {402246000 28800 0 IRKT} + {417974400 32400 1 IRKST} + {433782000 28800 0 IRKT} + {449596800 32400 1 IRKST} + {465328800 28800 0 IRKT} + {481053600 32400 1 IRKST} + {496778400 28800 0 IRKT} + {512503200 32400 1 IRKST} + {528228000 28800 0 IRKT} + {543952800 32400 1 IRKST} + {559677600 28800 0 IRKT} + {575402400 32400 1 IRKST} + {591127200 28800 0 IRKT} + {606852000 32400 1 IRKST} + {622576800 28800 0 IRKT} + {638301600 32400 1 IRKST} + {654631200 28800 0 IRKT} + {670356000 25200 0 IRKMMTT} + {670359600 28800 1 IRKST} + {686084400 25200 0 IRKT} + {695761200 28800 0 IRKMMTT} + {701794800 32400 1 IRKST} + {717516000 28800 0 IRKT} + {733255200 32400 1 IRKST} + {748980000 28800 0 IRKT} + {764704800 32400 1 IRKST} + {780429600 28800 0 IRKT} + {796154400 32400 1 IRKST} + {811879200 28800 0 IRKT} + {828208800 32400 1 IRKST} + {846352800 28800 0 IRKT} + {859658400 32400 1 IRKST} + {877802400 28800 0 IRKT} + {891108000 32400 1 IRKST} + {909252000 28800 0 IRKT} + {922557600 32400 1 IRKST} + {941306400 28800 0 IRKT} + {954007200 32400 1 IRKST} + {972756000 28800 0 IRKT} + {985456800 32400 1 IRKST} + {1004205600 28800 0 IRKT} + {1017511200 32400 1 IRKST} + {1035655200 28800 0 IRKT} + {1048960800 32400 1 IRKST} + {1067104800 28800 0 IRKT} + {1080410400 32400 1 IRKST} + {1099159200 28800 0 IRKT} + {1111860000 32400 1 IRKST} + {1130608800 28800 0 IRKT} + {1143309600 32400 1 IRKST} + {1162058400 28800 0 IRKT} + {1174759200 32400 1 IRKST} + {1193508000 28800 0 IRKT} + {1206813600 32400 1 IRKST} + {1224957600 28800 0 IRKT} + {1238263200 32400 1 IRKST} + {1256407200 28800 0 IRKT} + {1269712800 32400 1 IRKST} + {1288461600 28800 0 IRKT} + {1301162400 32400 0 IRKT} + {1414256400 28800 0 IRKT} } diff --git a/library/tzdata/Asia/Kamchatka b/library/tzdata/Asia/Kamchatka index 818fc2d..82abcfa 100644 --- a/library/tzdata/Asia/Kamchatka +++ b/library/tzdata/Asia/Kamchatka @@ -2,70 +2,70 @@ set TZData(:Asia/Kamchatka) { {-9223372036854775808 38076 0 LMT} - {-1487759676 39600 0 +11} - {-1247569200 43200 0 +13} - {354888000 46800 1 +13} - {370695600 43200 0 +12} - {386424000 46800 1 +13} - {402231600 43200 0 +12} - {417960000 46800 1 +13} - {433767600 43200 0 +12} - {449582400 46800 1 +13} - {465314400 43200 0 +12} - {481039200 46800 1 +13} - {496764000 43200 0 +12} - {512488800 46800 1 +13} - {528213600 43200 0 +12} - {543938400 46800 1 +13} - {559663200 43200 0 +12} - {575388000 46800 1 +13} - {591112800 43200 0 +12} - {606837600 46800 1 +13} - {622562400 43200 0 +12} - {638287200 46800 1 +13} - {654616800 43200 0 +12} - {670341600 39600 0 +12} - {670345200 43200 1 +12} - {686070000 39600 0 +11} - {695746800 43200 0 +13} - {701791200 46800 1 +13} - {717516000 43200 0 +12} - {733240800 46800 1 +13} - {748965600 43200 0 +12} - {764690400 46800 1 +13} - {780415200 43200 0 +12} - {796140000 46800 1 +13} - {811864800 43200 0 +12} - {828194400 46800 1 +13} - {846338400 43200 0 +12} - {859644000 46800 1 +13} - {877788000 43200 0 +12} - {891093600 46800 1 +13} - {909237600 43200 0 +12} - {922543200 46800 1 +13} - {941292000 43200 0 +12} - {953992800 46800 1 +13} - {972741600 43200 0 +12} - {985442400 46800 1 +13} - {1004191200 43200 0 +12} - {1017496800 46800 1 +13} - {1035640800 43200 0 +12} - {1048946400 46800 1 +13} - {1067090400 43200 0 +12} - {1080396000 46800 1 +13} - {1099144800 43200 0 +12} - {1111845600 46800 1 +13} - {1130594400 43200 0 +12} - {1143295200 46800 1 +13} - {1162044000 43200 0 +12} - {1174744800 46800 1 +13} - {1193493600 43200 0 +12} - {1206799200 46800 1 +13} - {1224943200 43200 0 +12} - {1238248800 46800 1 +13} - {1256392800 43200 0 +12} - {1269698400 39600 0 +12} - {1269702000 43200 1 +12} - {1288450800 39600 0 +11} - {1301151600 43200 0 +12} + {-1487759676 39600 0 PETT} + {-1247569200 43200 0 PETMMTT} + {354888000 46800 1 PETST} + {370695600 43200 0 PETT} + {386424000 46800 1 PETST} + {402231600 43200 0 PETT} + {417960000 46800 1 PETST} + {433767600 43200 0 PETT} + {449582400 46800 1 PETST} + {465314400 43200 0 PETT} + {481039200 46800 1 PETST} + {496764000 43200 0 PETT} + {512488800 46800 1 PETST} + {528213600 43200 0 PETT} + {543938400 46800 1 PETST} + {559663200 43200 0 PETT} + {575388000 46800 1 PETST} + {591112800 43200 0 PETT} + {606837600 46800 1 PETST} + {622562400 43200 0 PETT} + {638287200 46800 1 PETST} + {654616800 43200 0 PETT} + {670341600 39600 0 PETMMTT} + {670345200 43200 1 PETST} + {686070000 39600 0 PETT} + {695746800 43200 0 PETMMTT} + {701780400 46800 1 PETST} + {717501600 43200 0 PETT} + {733240800 46800 1 PETST} + {748965600 43200 0 PETT} + {764690400 46800 1 PETST} + {780415200 43200 0 PETT} + {796140000 46800 1 PETST} + {811864800 43200 0 PETT} + {828194400 46800 1 PETST} + {846338400 43200 0 PETT} + {859644000 46800 1 PETST} + {877788000 43200 0 PETT} + {891093600 46800 1 PETST} + {909237600 43200 0 PETT} + {922543200 46800 1 PETST} + {941292000 43200 0 PETT} + {953992800 46800 1 PETST} + {972741600 43200 0 PETT} + {985442400 46800 1 PETST} + {1004191200 43200 0 PETT} + {1017496800 46800 1 PETST} + {1035640800 43200 0 PETT} + {1048946400 46800 1 PETST} + {1067090400 43200 0 PETT} + {1080396000 46800 1 PETST} + {1099144800 43200 0 PETT} + {1111845600 46800 1 PETST} + {1130594400 43200 0 PETT} + {1143295200 46800 1 PETST} + {1162044000 43200 0 PETT} + {1174744800 46800 1 PETST} + {1193493600 43200 0 PETT} + {1206799200 46800 1 PETST} + {1224943200 43200 0 PETT} + {1238248800 46800 1 PETST} + {1256392800 43200 0 PETT} + {1269698400 39600 0 PETMMTT} + {1269702000 43200 1 PETST} + {1288450800 39600 0 PETT} + {1301151600 43200 0 PETT} } diff --git a/library/tzdata/Asia/Karachi b/library/tzdata/Asia/Karachi index 669c11a..3faa31e 100644 --- a/library/tzdata/Asia/Karachi +++ b/library/tzdata/Asia/Karachi @@ -7,8 +7,8 @@ set TZData(:Asia/Karachi) { {-764145000 19800 0 IST} {-576135000 18000 0 KART} {38775600 18000 0 PKT} - {1018119600 21600 1 PKST} - {1033840800 18000 0 PKT} + {1018119660 21600 1 PKST} + {1033840860 18000 0 PKT} {1212260400 21600 1 PKST} {1225476000 18000 0 PKT} {1239735600 21600 1 PKST} diff --git a/library/tzdata/Asia/Khandyga b/library/tzdata/Asia/Khandyga index 07bffac..b2dc97a 100644 --- a/library/tzdata/Asia/Khandyga +++ b/library/tzdata/Asia/Khandyga @@ -2,72 +2,72 @@ set TZData(:Asia/Khandyga) { {-9223372036854775808 32533 0 LMT} - {-1579424533 28800 0 +08} - {-1247558400 32400 0 +10} - {354898800 36000 1 +10} - {370706400 32400 0 +09} - {386434800 36000 1 +10} - {402242400 32400 0 +09} - {417970800 36000 1 +10} - {433778400 32400 0 +09} - {449593200 36000 1 +10} - {465325200 32400 0 +09} - {481050000 36000 1 +10} - {496774800 32400 0 +09} - {512499600 36000 1 +10} - {528224400 32400 0 +09} - {543949200 36000 1 +10} - {559674000 32400 0 +09} - {575398800 36000 1 +10} - {591123600 32400 0 +09} - {606848400 36000 1 +10} - {622573200 32400 0 +09} - {638298000 36000 1 +10} - {654627600 32400 0 +09} - {670352400 28800 0 +09} - {670356000 32400 1 +09} - {686080800 28800 0 +08} - {695757600 32400 0 +10} - {701802000 36000 1 +10} - {717526800 32400 0 +09} - {733251600 36000 1 +10} - {748976400 32400 0 +09} - {764701200 36000 1 +10} - {780426000 32400 0 +09} - {796150800 36000 1 +10} - {811875600 32400 0 +09} - {828205200 36000 1 +10} - {846349200 32400 0 +09} - {859654800 36000 1 +10} - {877798800 32400 0 +09} - {891104400 36000 1 +10} - {909248400 32400 0 +09} - {922554000 36000 1 +10} - {941302800 32400 0 +09} - {954003600 36000 1 +10} - {972752400 32400 0 +09} - {985453200 36000 1 +10} - {1004202000 32400 0 +09} - {1017507600 36000 1 +10} - {1035651600 32400 0 +09} - {1048957200 36000 1 +10} - {1067101200 32400 0 +09} - {1072882800 36000 0 +11} - {1080403200 39600 1 +11} - {1099152000 36000 0 +10} - {1111852800 39600 1 +11} - {1130601600 36000 0 +10} - {1143302400 39600 1 +11} - {1162051200 36000 0 +10} - {1174752000 39600 1 +11} - {1193500800 36000 0 +10} - {1206806400 39600 1 +11} - {1224950400 36000 0 +10} - {1238256000 39600 1 +11} - {1256400000 36000 0 +10} - {1269705600 39600 1 +11} - {1288454400 36000 0 +10} - {1301155200 39600 0 +11} - {1315832400 36000 0 +10} - {1414252800 32400 0 +09} + {-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} + {1414252800 32400 0 YAKT} } diff --git a/library/tzdata/Asia/Krasnoyarsk b/library/tzdata/Asia/Krasnoyarsk index 0721425..17ea6c0 100644 --- a/library/tzdata/Asia/Krasnoyarsk +++ b/library/tzdata/Asia/Krasnoyarsk @@ -2,70 +2,70 @@ set TZData(:Asia/Krasnoyarsk) { {-9223372036854775808 22286 0 LMT} - {-1577513486 21600 0 +06} - {-1247551200 25200 0 +08} - {354906000 28800 1 +08} - {370713600 25200 0 +07} - {386442000 28800 1 +08} - {402249600 25200 0 +07} - {417978000 28800 1 +08} - {433785600 25200 0 +07} - {449600400 28800 1 +08} - {465332400 25200 0 +07} - {481057200 28800 1 +08} - {496782000 25200 0 +07} - {512506800 28800 1 +08} - {528231600 25200 0 +07} - {543956400 28800 1 +08} - {559681200 25200 0 +07} - {575406000 28800 1 +08} - {591130800 25200 0 +07} - {606855600 28800 1 +08} - {622580400 25200 0 +07} - {638305200 28800 1 +08} - {654634800 25200 0 +07} - {670359600 21600 0 +07} - {670363200 25200 1 +07} - {686088000 21600 0 +06} - {695764800 25200 0 +08} - {701809200 28800 1 +08} - {717534000 25200 0 +07} - {733258800 28800 1 +08} - {748983600 25200 0 +07} - {764708400 28800 1 +08} - {780433200 25200 0 +07} - {796158000 28800 1 +08} - {811882800 25200 0 +07} - {828212400 28800 1 +08} - {846356400 25200 0 +07} - {859662000 28800 1 +08} - {877806000 25200 0 +07} - {891111600 28800 1 +08} - {909255600 25200 0 +07} - {922561200 28800 1 +08} - {941310000 25200 0 +07} - {954010800 28800 1 +08} - {972759600 25200 0 +07} - {985460400 28800 1 +08} - {1004209200 25200 0 +07} - {1017514800 28800 1 +08} - {1035658800 25200 0 +07} - {1048964400 28800 1 +08} - {1067108400 25200 0 +07} - {1080414000 28800 1 +08} - {1099162800 25200 0 +07} - {1111863600 28800 1 +08} - {1130612400 25200 0 +07} - {1143313200 28800 1 +08} - {1162062000 25200 0 +07} - {1174762800 28800 1 +08} - {1193511600 25200 0 +07} - {1206817200 28800 1 +08} - {1224961200 25200 0 +07} - {1238266800 28800 1 +08} - {1256410800 25200 0 +07} - {1269716400 28800 1 +08} - {1288465200 25200 0 +07} - {1301166000 28800 0 +08} - {1414260000 25200 0 +07} + {-1577513486 21600 0 KRAT} + {-1247551200 25200 0 KRAMMTT} + {354906000 28800 1 KRAST} + {370713600 25200 0 KRAT} + {386442000 28800 1 KRAST} + {402249600 25200 0 KRAT} + {417978000 28800 1 KRAST} + {433785600 25200 0 KRAT} + {449600400 28800 1 KRAST} + {465332400 25200 0 KRAT} + {481057200 28800 1 KRAST} + {496782000 25200 0 KRAT} + {512506800 28800 1 KRAST} + {528231600 25200 0 KRAT} + {543956400 28800 1 KRAST} + {559681200 25200 0 KRAT} + {575406000 28800 1 KRAST} + {591130800 25200 0 KRAT} + {606855600 28800 1 KRAST} + {622580400 25200 0 KRAT} + {638305200 28800 1 KRAST} + {654634800 25200 0 KRAT} + {670359600 21600 0 KRAMMTT} + {670363200 25200 1 KRAST} + {686088000 21600 0 KRAT} + {695764800 25200 0 KRAMMTT} + {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 28800 1 KRAST} + {1288465200 25200 0 KRAT} + {1301166000 28800 0 KRAT} + {1414260000 25200 0 KRAT} } diff --git a/library/tzdata/Asia/Magadan b/library/tzdata/Asia/Magadan index 0626899..bf796a7 100644 --- a/library/tzdata/Asia/Magadan +++ b/library/tzdata/Asia/Magadan @@ -2,71 +2,70 @@ set TZData(:Asia/Magadan) { {-9223372036854775808 36192 0 LMT} - {-1441188192 36000 0 +10} - {-1247565600 39600 0 +12} - {354891600 43200 1 +12} - {370699200 39600 0 +11} - {386427600 43200 1 +12} - {402235200 39600 0 +11} - {417963600 43200 1 +12} - {433771200 39600 0 +11} - {449586000 43200 1 +12} - {465318000 39600 0 +11} - {481042800 43200 1 +12} - {496767600 39600 0 +11} - {512492400 43200 1 +12} - {528217200 39600 0 +11} - {543942000 43200 1 +12} - {559666800 39600 0 +11} - {575391600 43200 1 +12} - {591116400 39600 0 +11} - {606841200 43200 1 +12} - {622566000 39600 0 +11} - {638290800 43200 1 +12} - {654620400 39600 0 +11} - {670345200 36000 0 +11} - {670348800 39600 1 +11} - {686073600 36000 0 +10} - {695750400 39600 0 +12} - {701794800 43200 1 +12} - {717519600 39600 0 +11} - {733244400 43200 1 +12} - {748969200 39600 0 +11} - {764694000 43200 1 +12} - {780418800 39600 0 +11} - {796143600 43200 1 +12} - {811868400 39600 0 +11} - {828198000 43200 1 +12} - {846342000 39600 0 +11} - {859647600 43200 1 +12} - {877791600 39600 0 +11} - {891097200 43200 1 +12} - {909241200 39600 0 +11} - {922546800 43200 1 +12} - {941295600 39600 0 +11} - {953996400 43200 1 +12} - {972745200 39600 0 +11} - {985446000 43200 1 +12} - {1004194800 39600 0 +11} - {1017500400 43200 1 +12} - {1035644400 39600 0 +11} - {1048950000 43200 1 +12} - {1067094000 39600 0 +11} - {1080399600 43200 1 +12} - {1099148400 39600 0 +11} - {1111849200 43200 1 +12} - {1130598000 39600 0 +11} - {1143298800 43200 1 +12} - {1162047600 39600 0 +11} - {1174748400 43200 1 +12} - {1193497200 39600 0 +11} - {1206802800 43200 1 +12} - {1224946800 39600 0 +11} - {1238252400 43200 1 +12} - {1256396400 39600 0 +11} - {1269702000 43200 1 +12} - {1288450800 39600 0 +11} - {1301151600 43200 0 +12} - {1414245600 36000 0 +10} - {1461427200 39600 0 +11} + {-1441188192 36000 0 MAGT} + {-1247565600 39600 0 MAGMMTT} + {354891600 43200 1 MAGST} + {370699200 39600 0 MAGT} + {386427600 43200 1 MAGST} + {402235200 39600 0 MAGT} + {417963600 43200 1 MAGST} + {433771200 39600 0 MAGT} + {449586000 43200 1 MAGST} + {465318000 39600 0 MAGT} + {481042800 43200 1 MAGST} + {496767600 39600 0 MAGT} + {512492400 43200 1 MAGST} + {528217200 39600 0 MAGT} + {543942000 43200 1 MAGST} + {559666800 39600 0 MAGT} + {575391600 43200 1 MAGST} + {591116400 39600 0 MAGT} + {606841200 43200 1 MAGST} + {622566000 39600 0 MAGT} + {638290800 43200 1 MAGST} + {654620400 39600 0 MAGT} + {670345200 36000 0 MAGMMTT} + {670348800 39600 1 MAGST} + {686073600 36000 0 MAGT} + {695750400 39600 0 MAGMMTT} + {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} + {1414245600 36000 0 MAGT} } diff --git a/library/tzdata/Asia/Novokuznetsk b/library/tzdata/Asia/Novokuznetsk index a43a984..ab3c2d5 100644 --- a/library/tzdata/Asia/Novokuznetsk +++ b/library/tzdata/Asia/Novokuznetsk @@ -2,70 +2,71 @@ set TZData(:Asia/Novokuznetsk) { {-9223372036854775808 20928 0 LMT} - {-1441259328 21600 0 +06} - {-1247551200 25200 0 +08} - {354906000 28800 1 +08} - {370713600 25200 0 +07} - {386442000 28800 1 +08} - {402249600 25200 0 +07} - {417978000 28800 1 +08} - {433785600 25200 0 +07} - {449600400 28800 1 +08} - {465332400 25200 0 +07} - {481057200 28800 1 +08} - {496782000 25200 0 +07} - {512506800 28800 1 +08} - {528231600 25200 0 +07} - {543956400 28800 1 +08} - {559681200 25200 0 +07} - {575406000 28800 1 +08} - {591130800 25200 0 +07} - {606855600 28800 1 +08} - {622580400 25200 0 +07} - {638305200 28800 1 +08} - {654634800 25200 0 +07} - {670359600 21600 0 +07} - {670363200 25200 1 +07} - {686088000 21600 0 +06} - {695764800 25200 0 +08} - {701809200 28800 1 +08} - {717534000 25200 0 +07} - {733258800 28800 1 +08} - {748983600 25200 0 +07} - {764708400 28800 1 +08} - {780433200 25200 0 +07} - {796158000 28800 1 +08} - {811882800 25200 0 +07} - {828212400 28800 1 +08} - {846356400 25200 0 +07} - {859662000 28800 1 +08} - {877806000 25200 0 +07} - {891111600 28800 1 +08} - {909255600 25200 0 +07} - {922561200 28800 1 +08} - {941310000 25200 0 +07} - {954010800 28800 1 +08} - {972759600 25200 0 +07} - {985460400 28800 1 +08} - {1004209200 25200 0 +07} - {1017514800 28800 1 +08} - {1035658800 25200 0 +07} - {1048964400 28800 1 +08} - {1067108400 25200 0 +07} - {1080414000 28800 1 +08} - {1099162800 25200 0 +07} - {1111863600 28800 1 +08} - {1130612400 25200 0 +07} - {1143313200 28800 1 +08} - {1162062000 25200 0 +07} - {1174762800 28800 1 +08} - {1193511600 25200 0 +07} - {1206817200 28800 1 +08} - {1224961200 25200 0 +07} - {1238266800 28800 1 +08} - {1256410800 25200 0 +07} - {1269716400 21600 0 +07} - {1269720000 25200 1 +07} - {1288468800 21600 0 +06} - {1301169600 25200 0 +07} + {-1441259328 21600 0 KRAT} + {-1247551200 25200 0 KRAMMTT} + {354906000 28800 1 KRAST} + {370713600 25200 0 KRAT} + {386442000 28800 1 KRAST} + {402249600 25200 0 KRAT} + {417978000 28800 1 KRAST} + {433785600 25200 0 KRAT} + {449600400 28800 1 KRAST} + {465332400 25200 0 KRAT} + {481057200 28800 1 KRAST} + {496782000 25200 0 KRAT} + {512506800 28800 1 KRAST} + {528231600 25200 0 KRAT} + {543956400 28800 1 KRAST} + {559681200 25200 0 KRAT} + {575406000 28800 1 KRAST} + {591130800 25200 0 KRAT} + {606855600 28800 1 KRAST} + {622580400 25200 0 KRAT} + {638305200 28800 1 KRAST} + {654634800 25200 0 KRAT} + {670359600 21600 0 KRAMMTT} + {670363200 25200 1 KRAST} + {686088000 21600 0 KRAT} + {695764800 25200 0 KRAMMTT} + {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} + {1414263600 25200 0 KRAT} } diff --git a/library/tzdata/Asia/Novosibirsk b/library/tzdata/Asia/Novosibirsk index 21f5c00..7227780 100644 --- a/library/tzdata/Asia/Novosibirsk +++ b/library/tzdata/Asia/Novosibirsk @@ -2,72 +2,71 @@ set TZData(:Asia/Novosibirsk) { {-9223372036854775808 19900 0 LMT} - {-1579476700 21600 0 +06} - {-1247551200 25200 0 +08} - {354906000 28800 1 +08} - {370713600 25200 0 +07} - {386442000 28800 1 +08} - {402249600 25200 0 +07} - {417978000 28800 1 +08} - {433785600 25200 0 +07} - {449600400 28800 1 +08} - {465332400 25200 0 +07} - {481057200 28800 1 +08} - {496782000 25200 0 +07} - {512506800 28800 1 +08} - {528231600 25200 0 +07} - {543956400 28800 1 +08} - {559681200 25200 0 +07} - {575406000 28800 1 +08} - {591130800 25200 0 +07} - {606855600 28800 1 +08} - {622580400 25200 0 +07} - {638305200 28800 1 +08} - {654634800 25200 0 +07} - {670359600 21600 0 +07} - {670363200 25200 1 +07} - {686088000 21600 0 +06} - {695764800 25200 0 +08} - {701809200 28800 1 +08} - {717534000 25200 0 +07} - {733258800 28800 1 +08} - {738090000 25200 0 +07} - {748987200 21600 0 +06} - {764712000 25200 1 +07} - {780436800 21600 0 +06} - {796161600 25200 1 +07} - {811886400 21600 0 +06} - {828216000 25200 1 +07} - {846360000 21600 0 +06} - {859665600 25200 1 +07} - {877809600 21600 0 +06} - {891115200 25200 1 +07} - {909259200 21600 0 +06} - {922564800 25200 1 +07} - {941313600 21600 0 +06} - {954014400 25200 1 +07} - {972763200 21600 0 +06} - {985464000 25200 1 +07} - {1004212800 21600 0 +06} - {1017518400 25200 1 +07} - {1035662400 21600 0 +06} - {1048968000 25200 1 +07} - {1067112000 21600 0 +06} - {1080417600 25200 1 +07} - {1099166400 21600 0 +06} - {1111867200 25200 1 +07} - {1130616000 21600 0 +06} - {1143316800 25200 1 +07} - {1162065600 21600 0 +06} - {1174766400 25200 1 +07} - {1193515200 21600 0 +06} - {1206820800 25200 1 +07} - {1224964800 21600 0 +06} - {1238270400 25200 1 +07} - {1256414400 21600 0 +06} - {1269720000 25200 1 +07} - {1288468800 21600 0 +06} - {1301169600 25200 0 +07} - {1414263600 21600 0 +06} - {1469304000 25200 0 +07} + {-1579476700 21600 0 NOVT} + {-1247551200 25200 0 NOVMMTT} + {354906000 28800 1 NOVST} + {370713600 25200 0 NOVT} + {386442000 28800 1 NOVST} + {402249600 25200 0 NOVT} + {417978000 28800 1 NOVST} + {433785600 25200 0 NOVT} + {449600400 28800 1 NOVST} + {465332400 25200 0 NOVT} + {481057200 28800 1 NOVST} + {496782000 25200 0 NOVT} + {512506800 28800 1 NOVST} + {528231600 25200 0 NOVT} + {543956400 28800 1 NOVST} + {559681200 25200 0 NOVT} + {575406000 28800 1 NOVST} + {591130800 25200 0 NOVT} + {606855600 28800 1 NOVST} + {622580400 25200 0 NOVT} + {638305200 28800 1 NOVST} + {654634800 25200 0 NOVT} + {670359600 21600 0 NOVMMTT} + {670363200 25200 1 NOVST} + {686088000 21600 0 NOVT} + {695764800 25200 0 NOVMMTT} + {701798400 28800 1 NOVST} + {717519600 25200 0 NOVT} + {733258800 28800 1 NOVST} + {738090000 25200 0 NOVST} + {748987200 21600 0 NOVT} + {764712000 25200 1 NOVST} + {780436800 21600 0 NOVT} + {796161600 25200 1 NOVST} + {811886400 21600 0 NOVT} + {828216000 25200 1 NOVST} + {846360000 21600 0 NOVT} + {859665600 25200 1 NOVST} + {877809600 21600 0 NOVT} + {891115200 25200 1 NOVST} + {909259200 21600 0 NOVT} + {922564800 25200 1 NOVST} + {941313600 21600 0 NOVT} + {954014400 25200 1 NOVST} + {972763200 21600 0 NOVT} + {985464000 25200 1 NOVST} + {1004212800 21600 0 NOVT} + {1017518400 25200 1 NOVST} + {1035662400 21600 0 NOVT} + {1048968000 25200 1 NOVST} + {1067112000 21600 0 NOVT} + {1080417600 25200 1 NOVST} + {1099166400 21600 0 NOVT} + {1111867200 25200 1 NOVST} + {1130616000 21600 0 NOVT} + {1143316800 25200 1 NOVST} + {1162065600 21600 0 NOVT} + {1174766400 25200 1 NOVST} + {1193515200 21600 0 NOVT} + {1206820800 25200 1 NOVST} + {1224964800 21600 0 NOVT} + {1238270400 25200 1 NOVST} + {1256414400 21600 0 NOVT} + {1269720000 25200 1 NOVST} + {1288468800 21600 0 NOVT} + {1301169600 25200 0 NOVT} + {1414263600 21600 0 NOVT} } diff --git a/library/tzdata/Asia/Omsk b/library/tzdata/Asia/Omsk index 74163d5..f25b8d4 100644 --- a/library/tzdata/Asia/Omsk +++ b/library/tzdata/Asia/Omsk @@ -2,70 +2,70 @@ set TZData(:Asia/Omsk) { {-9223372036854775808 17610 0 LMT} - {-1582088010 18000 0 +05} - {-1247547600 21600 0 +07} - {354909600 25200 1 +07} - {370717200 21600 0 +06} - {386445600 25200 1 +07} - {402253200 21600 0 +06} - {417981600 25200 1 +07} - {433789200 21600 0 +06} - {449604000 25200 1 +07} - {465336000 21600 0 +06} - {481060800 25200 1 +07} - {496785600 21600 0 +06} - {512510400 25200 1 +07} - {528235200 21600 0 +06} - {543960000 25200 1 +07} - {559684800 21600 0 +06} - {575409600 25200 1 +07} - {591134400 21600 0 +06} - {606859200 25200 1 +07} - {622584000 21600 0 +06} - {638308800 25200 1 +07} - {654638400 21600 0 +06} - {670363200 18000 0 +06} - {670366800 21600 1 +06} - {686091600 18000 0 +05} - {695768400 21600 0 +07} - {701812800 25200 1 +07} - {717537600 21600 0 +06} - {733262400 25200 1 +07} - {748987200 21600 0 +06} - {764712000 25200 1 +07} - {780436800 21600 0 +06} - {796161600 25200 1 +07} - {811886400 21600 0 +06} - {828216000 25200 1 +07} - {846360000 21600 0 +06} - {859665600 25200 1 +07} - {877809600 21600 0 +06} - {891115200 25200 1 +07} - {909259200 21600 0 +06} - {922564800 25200 1 +07} - {941313600 21600 0 +06} - {954014400 25200 1 +07} - {972763200 21600 0 +06} - {985464000 25200 1 +07} - {1004212800 21600 0 +06} - {1017518400 25200 1 +07} - {1035662400 21600 0 +06} - {1048968000 25200 1 +07} - {1067112000 21600 0 +06} - {1080417600 25200 1 +07} - {1099166400 21600 0 +06} - {1111867200 25200 1 +07} - {1130616000 21600 0 +06} - {1143316800 25200 1 +07} - {1162065600 21600 0 +06} - {1174766400 25200 1 +07} - {1193515200 21600 0 +06} - {1206820800 25200 1 +07} - {1224964800 21600 0 +06} - {1238270400 25200 1 +07} - {1256414400 21600 0 +06} - {1269720000 25200 1 +07} - {1288468800 21600 0 +06} - {1301169600 25200 0 +07} - {1414263600 21600 0 +06} + {-1582088010 18000 0 OMST} + {-1247547600 21600 0 OMSMMTT} + {354909600 25200 1 OMSST} + {370717200 21600 0 OMST} + {386445600 25200 1 OMSST} + {402253200 21600 0 OMST} + {417981600 25200 1 OMSST} + {433789200 21600 0 OMST} + {449604000 25200 1 OMSST} + {465336000 21600 0 OMST} + {481060800 25200 1 OMSST} + {496785600 21600 0 OMST} + {512510400 25200 1 OMSST} + {528235200 21600 0 OMST} + {543960000 25200 1 OMSST} + {559684800 21600 0 OMST} + {575409600 25200 1 OMSST} + {591134400 21600 0 OMST} + {606859200 25200 1 OMSST} + {622584000 21600 0 OMST} + {638308800 25200 1 OMSST} + {654638400 21600 0 OMST} + {670363200 18000 0 OMSMMTT} + {670366800 21600 1 OMSST} + {686091600 18000 0 OMST} + {695768400 21600 0 OMSMMTT} + {701802000 25200 1 OMSST} + {717523200 21600 0 OMST} + {733262400 25200 1 OMSST} + {748987200 21600 0 OMST} + {764712000 25200 1 OMSST} + {780436800 21600 0 OMST} + {796161600 25200 1 OMSST} + {811886400 21600 0 OMST} + {828216000 25200 1 OMSST} + {846360000 21600 0 OMST} + {859665600 25200 1 OMSST} + {877809600 21600 0 OMST} + {891115200 25200 1 OMSST} + {909259200 21600 0 OMST} + {922564800 25200 1 OMSST} + {941313600 21600 0 OMST} + {954014400 25200 1 OMSST} + {972763200 21600 0 OMST} + {985464000 25200 1 OMSST} + {1004212800 21600 0 OMST} + {1017518400 25200 1 OMSST} + {1035662400 21600 0 OMST} + {1048968000 25200 1 OMSST} + {1067112000 21600 0 OMST} + {1080417600 25200 1 OMSST} + {1099166400 21600 0 OMST} + {1111867200 25200 1 OMSST} + {1130616000 21600 0 OMST} + {1143316800 25200 1 OMSST} + {1162065600 21600 0 OMST} + {1174766400 25200 1 OMSST} + {1193515200 21600 0 OMST} + {1206820800 25200 1 OMSST} + {1224964800 21600 0 OMST} + {1238270400 25200 1 OMSST} + {1256414400 21600 0 OMST} + {1269720000 25200 1 OMSST} + {1288468800 21600 0 OMST} + {1301169600 25200 0 OMST} + {1414263600 21600 0 OMST} } diff --git a/library/tzdata/Asia/Oral b/library/tzdata/Asia/Oral index 962111b..88b9a29 100644 --- a/library/tzdata/Asia/Oral +++ b/library/tzdata/Asia/Oral @@ -2,57 +2,57 @@ set TZData(:Asia/Oral) { {-9223372036854775808 12324 0 LMT} - {-1441164324 14400 0 +04} - {-1247544000 18000 0 +05} - {354913200 21600 1 +06} - {370720800 21600 0 +06} - {386445600 18000 0 +05} - {386449200 21600 1 +06} - {402256800 18000 0 +05} - {417985200 21600 1 +06} - {433792800 18000 0 +05} - {449607600 21600 1 +06} - {465339600 18000 0 +05} - {481064400 21600 1 +06} - {496789200 18000 0 +05} - {512514000 21600 1 +06} - {528238800 18000 0 +05} - {543963600 21600 1 +06} - {559688400 18000 0 +05} - {575413200 21600 1 +06} - {591138000 18000 0 +05} - {606862800 14400 0 +04} - {606866400 18000 1 +05} - {622591200 14400 0 +04} - {638316000 18000 1 +05} - {654645600 14400 0 +04} - {670370400 18000 1 +05} - {686095200 14400 0 +04} - {701816400 14400 0 +04} - {701820000 18000 1 +05} - {717544800 14400 0 +04} - {733269600 18000 1 +05} - {748994400 14400 0 +04} - {764719200 18000 1 +05} - {780444000 14400 0 +04} - {796168800 18000 1 +05} - {811893600 14400 0 +04} - {828223200 18000 1 +05} - {846367200 14400 0 +04} - {859672800 18000 1 +05} - {877816800 14400 0 +04} - {891122400 18000 1 +05} - {909266400 14400 0 +04} - {922572000 18000 1 +05} - {941320800 14400 0 +04} - {954021600 18000 1 +05} - {972770400 14400 0 +04} - {985471200 18000 1 +05} - {1004220000 14400 0 +04} - {1017525600 18000 1 +05} - {1035669600 14400 0 +04} - {1048975200 18000 1 +05} - {1067119200 14400 0 +04} - {1080424800 18000 1 +05} - {1099173600 18000 0 +05} + {-1441164324 14400 0 URAT} + {-1247544000 18000 0 URAT} + {354913200 21600 1 URAST} + {370720800 21600 0 URAT} + {386445600 18000 0 URAT} + {386449200 21600 1 URAST} + {402256800 18000 0 URAT} + {417985200 21600 1 URAST} + {433792800 18000 0 URAT} + {449607600 21600 1 URAST} + {465339600 18000 0 URAT} + {481064400 21600 1 URAST} + {496789200 18000 0 URAT} + {512514000 21600 1 URAST} + {528238800 18000 0 URAT} + {543963600 21600 1 URAST} + {559688400 18000 0 URAT} + {575413200 21600 1 URAST} + {591138000 18000 0 URAT} + {606862800 14400 0 URAT} + {606866400 18000 1 URAST} + {622591200 14400 0 URAT} + {638316000 18000 1 URAST} + {654645600 14400 0 URAT} + {662673600 14400 0 URAT} + {692827200 14400 0 ORAT} + {701809200 18000 1 ORAST} + {717530400 14400 0 ORAT} + {733269600 18000 1 ORAST} + {748994400 14400 0 ORAT} + {764719200 18000 1 ORAST} + {780444000 14400 0 ORAT} + {796168800 18000 1 ORAST} + {811893600 14400 0 ORAT} + {828223200 18000 1 ORAST} + {846367200 14400 0 ORAT} + {859672800 18000 1 ORAST} + {877816800 14400 0 ORAT} + {891122400 18000 1 ORAST} + {909266400 14400 0 ORAT} + {922572000 18000 1 ORAST} + {941320800 14400 0 ORAT} + {954021600 18000 1 ORAST} + {972770400 14400 0 ORAT} + {985471200 18000 1 ORAST} + {1004220000 14400 0 ORAT} + {1017525600 18000 1 ORAST} + {1035669600 14400 0 ORAT} + {1048975200 18000 1 ORAST} + {1067119200 14400 0 ORAT} + {1080424800 18000 1 ORAST} + {1099173600 14400 0 ORAT} + {1110830400 18000 0 ORAT} } diff --git a/library/tzdata/Asia/Qyzylorda b/library/tzdata/Asia/Qyzylorda index b2e9472..16da574 100644 --- a/library/tzdata/Asia/Qyzylorda +++ b/library/tzdata/Asia/Qyzylorda @@ -2,56 +2,57 @@ set TZData(:Asia/Qyzylorda) { {-9223372036854775808 15712 0 LMT} - {-1441167712 14400 0 +04} - {-1247544000 18000 0 +05} - {354913200 21600 1 +06} - {370720800 21600 0 +06} - {386445600 18000 0 +05} - {386449200 21600 1 +06} - {402256800 18000 0 +05} - {417985200 21600 1 +06} - {433792800 18000 0 +05} - {449607600 21600 1 +06} - {465339600 18000 0 +05} - {481064400 21600 1 +06} - {496789200 18000 0 +05} - {512514000 21600 1 +06} - {528238800 18000 0 +05} - {543963600 21600 1 +06} - {559688400 18000 0 +05} - {575413200 21600 1 +06} - {591138000 18000 0 +05} - {606862800 21600 1 +06} - {622587600 18000 0 +05} - {638312400 21600 1 +06} - {654642000 18000 0 +05} - {670366800 14400 0 +04} - {670370400 18000 1 +05} - {701812800 18000 0 +05} - {701816400 21600 1 +06} - {717541200 18000 0 +05} - {733266000 21600 1 +06} - {748990800 18000 0 +05} - {764715600 21600 1 +06} - {780440400 18000 0 +05} - {796165200 21600 1 +06} - {811890000 18000 0 +05} - {828219600 21600 1 +06} - {846363600 18000 0 +05} - {859669200 21600 1 +06} - {877813200 18000 0 +05} - {891118800 21600 1 +06} - {909262800 18000 0 +05} - {922568400 21600 1 +06} - {941317200 18000 0 +05} - {954018000 21600 1 +06} - {972766800 18000 0 +05} - {985467600 21600 1 +06} - {1004216400 18000 0 +05} - {1017522000 21600 1 +06} - {1035666000 18000 0 +05} - {1048971600 21600 1 +06} - {1067115600 18000 0 +05} - {1080421200 21600 1 +06} - {1099170000 21600 0 +06} + {-1441167712 14400 0 KIZT} + {-1247544000 18000 0 KIZT} + {354913200 21600 1 KIZST} + {370720800 21600 0 KIZT} + {386445600 18000 0 KIZT} + {386449200 21600 1 KIZST} + {402256800 18000 0 KIZT} + {417985200 21600 1 KIZST} + {433792800 18000 0 KIZT} + {449607600 21600 1 KIZST} + {465339600 18000 0 KIZT} + {481064400 21600 1 KIZST} + {496789200 18000 0 KIZT} + {512514000 21600 1 KIZST} + {528238800 18000 0 KIZT} + {543963600 21600 1 KIZST} + {559688400 18000 0 KIZT} + {575413200 21600 1 KIZST} + {591138000 18000 0 KIZT} + {606862800 21600 1 KIZST} + {622587600 18000 0 KIZT} + {638312400 21600 1 KIZST} + {654642000 18000 0 KIZT} + {662670000 18000 0 KIZT} + {692823600 18000 0 QYZT} + {695768400 21600 0 QYZT} + {701802000 25200 1 QYZST} + {717523200 21600 0 QYZT} + {733262400 25200 1 QYZST} + {748987200 21600 0 QYZT} + {764712000 25200 1 QYZST} + {780436800 21600 0 QYZT} + {796161600 25200 1 QYZST} + {811886400 21600 0 QYZT} + {828216000 25200 1 QYZST} + {846360000 21600 0 QYZT} + {859665600 25200 1 QYZST} + {877809600 21600 0 QYZT} + {891115200 25200 1 QYZST} + {909259200 21600 0 QYZT} + {922564800 25200 1 QYZST} + {941313600 21600 0 QYZT} + {954014400 25200 1 QYZST} + {972763200 21600 0 QYZT} + {985464000 25200 1 QYZST} + {1004212800 21600 0 QYZT} + {1017518400 25200 1 QYZST} + {1035662400 21600 0 QYZT} + {1048968000 25200 1 QYZST} + {1067112000 21600 0 QYZT} + {1080417600 25200 1 QYZST} + {1099166400 21600 0 QYZT} + {1110823200 21600 0 QYZT} } diff --git a/library/tzdata/Asia/Rangoon b/library/tzdata/Asia/Rangoon index 8ea2748..4f3ac02 100644 --- a/library/tzdata/Asia/Rangoon +++ b/library/tzdata/Asia/Rangoon @@ -1,5 +1,9 @@ # created by tools/tclZIC.tcl - do not edit -if {![info exists TZData(Asia/Yangon)]} { - LoadTimeZoneFile Asia/Yangon + +set TZData(:Asia/Rangoon) { + {-9223372036854775808 23080 0 LMT} + {-2840163880 23080 0 RMT} + {-1577946280 23400 0 BURT} + {-873268200 32400 0 JST} + {-778410000 23400 0 MMT} } -set TZData(:Asia/Rangoon) $TZData(:Asia/Yangon) diff --git a/library/tzdata/Asia/Sakhalin b/library/tzdata/Asia/Sakhalin index 4ba7c8c..eed20ba 100644 --- a/library/tzdata/Asia/Sakhalin +++ b/library/tzdata/Asia/Sakhalin @@ -2,72 +2,72 @@ set TZData(:Asia/Sakhalin) { {-9223372036854775808 34248 0 LMT} - {-2031039048 32400 0 +09} - {-768560400 39600 0 +12} - {354891600 43200 1 +12} - {370699200 39600 0 +11} - {386427600 43200 1 +12} - {402235200 39600 0 +11} - {417963600 43200 1 +12} - {433771200 39600 0 +11} - {449586000 43200 1 +12} - {465318000 39600 0 +11} - {481042800 43200 1 +12} - {496767600 39600 0 +11} - {512492400 43200 1 +12} - {528217200 39600 0 +11} - {543942000 43200 1 +12} - {559666800 39600 0 +11} - {575391600 43200 1 +12} - {591116400 39600 0 +11} - {606841200 43200 1 +12} - {622566000 39600 0 +11} - {638290800 43200 1 +12} - {654620400 39600 0 +11} - {670345200 36000 0 +11} - {670348800 39600 1 +11} - {686073600 36000 0 +10} - {695750400 39600 0 +12} - {701794800 43200 1 +12} - {717519600 39600 0 +11} - {733244400 43200 1 +12} - {748969200 39600 0 +11} - {764694000 43200 1 +12} - {780418800 39600 0 +11} - {796143600 43200 1 +12} - {811868400 39600 0 +11} - {828198000 43200 1 +12} - {846342000 39600 0 +11} - {859647600 36000 0 +11} - {859651200 39600 1 +11} - {877795200 36000 0 +10} - {891100800 39600 1 +11} - {909244800 36000 0 +10} - {922550400 39600 1 +11} - {941299200 36000 0 +10} - {954000000 39600 1 +11} - {972748800 36000 0 +10} - {985449600 39600 1 +11} - {1004198400 36000 0 +10} - {1017504000 39600 1 +11} - {1035648000 36000 0 +10} - {1048953600 39600 1 +11} - {1067097600 36000 0 +10} - {1080403200 39600 1 +11} - {1099152000 36000 0 +10} - {1111852800 39600 1 +11} - {1130601600 36000 0 +10} - {1143302400 39600 1 +11} - {1162051200 36000 0 +10} - {1174752000 39600 1 +11} - {1193500800 36000 0 +10} - {1206806400 39600 1 +11} - {1224950400 36000 0 +10} - {1238256000 39600 1 +11} - {1256400000 36000 0 +10} - {1269705600 39600 1 +11} - {1288454400 36000 0 +10} - {1301155200 39600 0 +11} - {1414249200 36000 0 +10} - {1459008000 39600 0 +11} + {-2031039048 32400 0 JCST} + {-1017824400 32400 0 JST} + {-768560400 39600 0 SAKMMTT} + {354891600 43200 1 SAKST} + {370699200 39600 0 SAKT} + {386427600 43200 1 SAKST} + {402235200 39600 0 SAKT} + {417963600 43200 1 SAKST} + {433771200 39600 0 SAKT} + {449586000 43200 1 SAKST} + {465318000 39600 0 SAKT} + {481042800 43200 1 SAKST} + {496767600 39600 0 SAKT} + {512492400 43200 1 SAKST} + {528217200 39600 0 SAKT} + {543942000 43200 1 SAKST} + {559666800 39600 0 SAKT} + {575391600 43200 1 SAKST} + {591116400 39600 0 SAKT} + {606841200 43200 1 SAKST} + {622566000 39600 0 SAKT} + {638290800 43200 1 SAKST} + {654620400 39600 0 SAKT} + {670345200 36000 0 SAKMMTT} + {670348800 39600 1 SAKST} + {686073600 36000 0 SAKT} + {695750400 39600 0 SAKMMTT} + {701784000 43200 1 SAKST} + {717505200 39600 0 SAKT} + {733244400 43200 1 SAKST} + {748969200 39600 0 SAKT} + {764694000 43200 1 SAKST} + {780418800 39600 0 SAKT} + {796143600 43200 1 SAKST} + {811868400 39600 0 SAKT} + {828198000 43200 1 SAKST} + {846342000 39600 0 SAKT} + {859647600 36000 0 SAKMMTT} + {859651200 39600 1 SAKST} + {877795200 36000 0 SAKT} + {891100800 39600 1 SAKST} + {909244800 36000 0 SAKT} + {922550400 39600 1 SAKST} + {941299200 36000 0 SAKT} + {954000000 39600 1 SAKST} + {972748800 36000 0 SAKT} + {985449600 39600 1 SAKST} + {1004198400 36000 0 SAKT} + {1017504000 39600 1 SAKST} + {1035648000 36000 0 SAKT} + {1048953600 39600 1 SAKST} + {1067097600 36000 0 SAKT} + {1080403200 39600 1 SAKST} + {1099152000 36000 0 SAKT} + {1111852800 39600 1 SAKST} + {1130601600 36000 0 SAKT} + {1143302400 39600 1 SAKST} + {1162051200 36000 0 SAKT} + {1174752000 39600 1 SAKST} + {1193500800 36000 0 SAKT} + {1206806400 39600 1 SAKST} + {1224950400 36000 0 SAKT} + {1238256000 39600 1 SAKST} + {1256400000 36000 0 SAKT} + {1269705600 39600 1 SAKST} + {1288454400 36000 0 SAKT} + {1301155200 39600 0 SAKT} + {1414249200 36000 0 SAKT} } diff --git a/library/tzdata/Asia/Samarkand b/library/tzdata/Asia/Samarkand index 43ad774..4b3b49f 100644 --- a/library/tzdata/Asia/Samarkand +++ b/library/tzdata/Asia/Samarkand @@ -2,30 +2,31 @@ set TZData(:Asia/Samarkand) { {-9223372036854775808 16073 0 LMT} - {-1441168073 14400 0 +04} - {-1247544000 18000 0 +05} - {354913200 21600 1 +06} - {370720800 21600 0 +06} - {386445600 18000 0 +05} - {386449200 21600 1 +06} - {402256800 18000 0 +05} - {417985200 21600 1 +06} - {433792800 18000 0 +05} - {449607600 21600 1 +06} - {465339600 18000 0 +05} - {481064400 21600 1 +06} - {496789200 18000 0 +05} - {512514000 21600 1 +06} - {528238800 18000 0 +05} - {543963600 21600 1 +06} - {559688400 18000 0 +05} - {575413200 21600 1 +06} - {591138000 18000 0 +05} - {606862800 21600 1 +06} - {622587600 18000 0 +05} - {638312400 21600 1 +06} - {654642000 18000 0 +05} - {670366800 21600 1 +06} - {686091600 18000 0 +05} - {694206000 18000 0 +05} + {-1441168073 14400 0 SAMT} + {-1247544000 18000 0 SAMT} + {354913200 21600 1 SAMST} + {370720800 21600 0 TAST} + {386445600 18000 0 SAMT} + {386449200 21600 1 SAMST} + {402256800 18000 0 SAMT} + {417985200 21600 1 SAMST} + {433792800 18000 0 SAMT} + {449607600 21600 1 SAMST} + {465339600 18000 0 SAMT} + {481064400 21600 1 SAMST} + {496789200 18000 0 SAMT} + {512514000 21600 1 SAMST} + {528238800 18000 0 SAMT} + {543963600 21600 1 SAMST} + {559688400 18000 0 SAMT} + {575413200 21600 1 SAMST} + {591138000 18000 0 SAMT} + {606862800 21600 1 SAMST} + {622587600 18000 0 SAMT} + {638312400 21600 1 SAMST} + {654642000 18000 0 SAMT} + {670366800 21600 1 SAMST} + {683665200 21600 0 UZST} + {686091600 18000 0 UZT} + {694206000 18000 0 UZT} } diff --git a/library/tzdata/Asia/Srednekolymsk b/library/tzdata/Asia/Srednekolymsk index 1099a4b..d1dd879 100644 --- a/library/tzdata/Asia/Srednekolymsk +++ b/library/tzdata/Asia/Srednekolymsk @@ -2,70 +2,70 @@ set TZData(:Asia/Srednekolymsk) { {-9223372036854775808 36892 0 LMT} - {-1441188892 36000 0 +10} - {-1247565600 39600 0 +12} - {354891600 43200 1 +12} - {370699200 39600 0 +11} - {386427600 43200 1 +12} - {402235200 39600 0 +11} - {417963600 43200 1 +12} - {433771200 39600 0 +11} - {449586000 43200 1 +12} - {465318000 39600 0 +11} - {481042800 43200 1 +12} - {496767600 39600 0 +11} - {512492400 43200 1 +12} - {528217200 39600 0 +11} - {543942000 43200 1 +12} - {559666800 39600 0 +11} - {575391600 43200 1 +12} - {591116400 39600 0 +11} - {606841200 43200 1 +12} - {622566000 39600 0 +11} - {638290800 43200 1 +12} - {654620400 39600 0 +11} - {670345200 36000 0 +11} - {670348800 39600 1 +11} - {686073600 36000 0 +10} - {695750400 39600 0 +12} - {701794800 43200 1 +12} - {717519600 39600 0 +11} - {733244400 43200 1 +12} - {748969200 39600 0 +11} - {764694000 43200 1 +12} - {780418800 39600 0 +11} - {796143600 43200 1 +12} - {811868400 39600 0 +11} - {828198000 43200 1 +12} - {846342000 39600 0 +11} - {859647600 43200 1 +12} - {877791600 39600 0 +11} - {891097200 43200 1 +12} - {909241200 39600 0 +11} - {922546800 43200 1 +12} - {941295600 39600 0 +11} - {953996400 43200 1 +12} - {972745200 39600 0 +11} - {985446000 43200 1 +12} - {1004194800 39600 0 +11} - {1017500400 43200 1 +12} - {1035644400 39600 0 +11} - {1048950000 43200 1 +12} - {1067094000 39600 0 +11} - {1080399600 43200 1 +12} - {1099148400 39600 0 +11} - {1111849200 43200 1 +12} - {1130598000 39600 0 +11} - {1143298800 43200 1 +12} - {1162047600 39600 0 +11} - {1174748400 43200 1 +12} - {1193497200 39600 0 +11} - {1206802800 43200 1 +12} - {1224946800 39600 0 +11} - {1238252400 43200 1 +12} - {1256396400 39600 0 +11} - {1269702000 43200 1 +12} - {1288450800 39600 0 +11} - {1301151600 43200 0 +12} - {1414245600 39600 0 +11} + {-1441188892 36000 0 MAGT} + {-1247565600 39600 0 MAGMMTT} + {354891600 43200 1 MAGST} + {370699200 39600 0 MAGT} + {386427600 43200 1 MAGST} + {402235200 39600 0 MAGT} + {417963600 43200 1 MAGST} + {433771200 39600 0 MAGT} + {449586000 43200 1 MAGST} + {465318000 39600 0 MAGT} + {481042800 43200 1 MAGST} + {496767600 39600 0 MAGT} + {512492400 43200 1 MAGST} + {528217200 39600 0 MAGT} + {543942000 43200 1 MAGST} + {559666800 39600 0 MAGT} + {575391600 43200 1 MAGST} + {591116400 39600 0 MAGT} + {606841200 43200 1 MAGST} + {622566000 39600 0 MAGT} + {638290800 43200 1 MAGST} + {654620400 39600 0 MAGT} + {670345200 36000 0 MAGMMTT} + {670348800 39600 1 MAGST} + {686073600 36000 0 MAGT} + {695750400 39600 0 MAGMMTT} + {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} + {1414245600 39600 0 SRET} } diff --git a/library/tzdata/Asia/Tashkent b/library/tzdata/Asia/Tashkent index 7b6abe4..1477376 100644 --- a/library/tzdata/Asia/Tashkent +++ b/library/tzdata/Asia/Tashkent @@ -2,30 +2,31 @@ set TZData(:Asia/Tashkent) { {-9223372036854775808 16631 0 LMT} - {-1441168631 18000 0 +05} - {-1247547600 21600 0 +06} - {354909600 25200 1 +07} - {370717200 21600 0 +06} - {386445600 25200 1 +07} - {402253200 21600 0 +06} - {417981600 25200 1 +07} - {433789200 21600 0 +06} - {449604000 25200 1 +07} - {465336000 21600 0 +06} - {481060800 25200 1 +07} - {496785600 21600 0 +06} - {512510400 25200 1 +07} - {528235200 21600 0 +06} - {543960000 25200 1 +07} - {559684800 21600 0 +06} - {575409600 25200 1 +07} - {591134400 21600 0 +06} - {606859200 25200 1 +07} - {622584000 21600 0 +06} - {638308800 25200 1 +07} - {654638400 21600 0 +06} - {670363200 18000 0 +05} - {670366800 21600 1 +06} - {686091600 18000 0 +05} - {694206000 18000 0 +05} + {-1441168631 18000 0 TAST} + {-1247547600 21600 0 TAST} + {354909600 25200 1 TASST} + {370717200 21600 0 TAST} + {386445600 25200 1 TASST} + {402253200 21600 0 TAST} + {417981600 25200 1 TASST} + {433789200 21600 0 TAST} + {449604000 25200 1 TASST} + {465336000 21600 0 TAST} + {481060800 25200 1 TASST} + {496785600 21600 0 TAST} + {512510400 25200 1 TASST} + {528235200 21600 0 TAST} + {543960000 25200 1 TASST} + {559684800 21600 0 TAST} + {575409600 25200 1 TASST} + {591134400 21600 0 TAST} + {606859200 25200 1 TASST} + {622584000 21600 0 TAST} + {638308800 25200 1 TASST} + {654638400 21600 0 TAST} + {670363200 18000 0 TAST} + {670366800 21600 1 TASST} + {683665200 21600 0 UZST} + {686091600 18000 0 UZT} + {694206000 18000 0 UZT} } diff --git a/library/tzdata/Asia/Tbilisi b/library/tzdata/Asia/Tbilisi index 60d253c..54b278a 100644 --- a/library/tzdata/Asia/Tbilisi +++ b/library/tzdata/Asia/Tbilisi @@ -3,58 +3,58 @@ set TZData(:Asia/Tbilisi) { {-9223372036854775808 10751 0 LMT} {-2840151551 10751 0 TBMT} - {-1441162751 10800 0 +03} - {-405140400 14400 0 +04} - {354916800 18000 1 +05} - {370724400 14400 0 +04} - {386452800 18000 1 +05} - {402260400 14400 0 +04} - {417988800 18000 1 +05} - {433796400 14400 0 +04} - {449611200 18000 1 +05} - {465343200 14400 0 +04} - {481068000 18000 1 +05} - {496792800 14400 0 +04} - {512517600 18000 1 +05} - {528242400 14400 0 +04} - {543967200 18000 1 +05} - {559692000 14400 0 +04} - {575416800 18000 1 +05} - {591141600 14400 0 +04} - {606866400 18000 1 +05} - {622591200 14400 0 +04} - {638316000 18000 1 +05} - {654645600 14400 0 +04} - {670370400 10800 0 +03} - {670374000 14400 1 +04} - {686098800 10800 0 +03} - {694213200 10800 0 +03} - {701816400 14400 1 +04} - {717537600 10800 0 +03} - {733266000 14400 1 +04} - {748987200 10800 0 +03} - {764715600 14400 1 +04} - {780440400 14400 0 +04} - {796161600 18000 1 +05} - {811882800 14400 0 +04} - {828216000 18000 1 +05} - {846360000 18000 1 +05} - {859662000 18000 0 +05} - {877806000 14400 0 +04} - {891115200 18000 1 +05} - {909255600 14400 0 +04} - {922564800 18000 1 +05} - {941310000 14400 0 +04} - {954014400 18000 1 +05} - {972759600 14400 0 +04} - {985464000 18000 1 +05} - {1004209200 14400 0 +04} - {1017518400 18000 1 +05} - {1035658800 14400 0 +04} - {1048968000 18000 1 +05} - {1067108400 14400 0 +04} - {1080417600 18000 1 +05} - {1088280000 14400 0 +04} - {1099177200 10800 0 +03} - {1111878000 14400 0 +04} + {-1441162751 10800 0 TBIT} + {-405140400 14400 0 TBIT} + {354916800 18000 1 TBIST} + {370724400 14400 0 TBIT} + {386452800 18000 1 TBIST} + {402260400 14400 0 TBIT} + {417988800 18000 1 TBIST} + {433796400 14400 0 TBIT} + {449611200 18000 1 TBIST} + {465343200 14400 0 TBIT} + {481068000 18000 1 TBIST} + {496792800 14400 0 TBIT} + {512517600 18000 1 TBIST} + {528242400 14400 0 TBIT} + {543967200 18000 1 TBIST} + {559692000 14400 0 TBIT} + {575416800 18000 1 TBIST} + {591141600 14400 0 TBIT} + {606866400 18000 1 TBIST} + {622591200 14400 0 TBIT} + {638316000 18000 1 TBIST} + {654645600 14400 0 TBIT} + {670370400 14400 1 TBIST} + {671140800 14400 0 GEST} + {686098800 10800 0 GET} + {694213200 10800 0 GET} + {701816400 14400 1 GEST} + {717537600 10800 0 GET} + {733266000 14400 1 GEST} + {748987200 10800 0 GET} + {764715600 14400 1 GEST} + {780440400 14400 0 GET} + {796161600 18000 1 GEST} + {811882800 14400 0 GET} + {828216000 18000 1 GEST} + {846360000 18000 1 GEST} + {859662000 18000 0 GEST} + {877806000 14400 0 GET} + {891115200 18000 1 GEST} + {909255600 14400 0 GET} + {922564800 18000 1 GEST} + {941310000 14400 0 GET} + {954014400 18000 1 GEST} + {972759600 14400 0 GET} + {985464000 18000 1 GEST} + {1004209200 14400 0 GET} + {1017518400 18000 1 GEST} + {1035658800 14400 0 GET} + {1048968000 18000 1 GEST} + {1067108400 14400 0 GET} + {1080417600 18000 1 GEST} + {1088280000 14400 0 GEST} + {1099177200 10800 0 GET} + {1111878000 14400 0 GET} } diff --git a/library/tzdata/Asia/Tehran b/library/tzdata/Asia/Tehran index 5fd840d..7dca0ae 100644 --- a/library/tzdata/Asia/Tehran +++ b/library/tzdata/Asia/Tehran @@ -102,128 +102,4 @@ set TZData(:Asia/Tehran) { {2105551800 12600 0 IRST} {2121193800 16200 1 IRDT} {2137087800 12600 0 IRST} - {2152729800 16200 1 IRDT} - {2168623800 12600 0 IRST} - {2184265800 16200 1 IRDT} - {2200159800 12600 0 IRST} - {2215888200 16200 1 IRDT} - {2231782200 12600 0 IRST} - {2247424200 16200 1 IRDT} - {2263318200 12600 0 IRST} - {2278960200 16200 1 IRDT} - {2294854200 12600 0 IRST} - {2310496200 16200 1 IRDT} - {2326390200 12600 0 IRST} - {2342118600 16200 1 IRDT} - {2358012600 12600 0 IRST} - {2373654600 16200 1 IRDT} - {2389548600 12600 0 IRST} - {2405190600 16200 1 IRDT} - {2421084600 12600 0 IRST} - {2436726600 16200 1 IRDT} - {2452620600 12600 0 IRST} - {2468349000 16200 1 IRDT} - {2484243000 12600 0 IRST} - {2499885000 16200 1 IRDT} - {2515779000 12600 0 IRST} - {2531421000 16200 1 IRDT} - {2547315000 12600 0 IRST} - {2562957000 16200 1 IRDT} - {2578851000 12600 0 IRST} - {2594579400 16200 1 IRDT} - {2610473400 12600 0 IRST} - {2626115400 16200 1 IRDT} - {2642009400 12600 0 IRST} - {2657651400 16200 1 IRDT} - {2673545400 12600 0 IRST} - {2689187400 16200 1 IRDT} - {2705081400 12600 0 IRST} - {2720809800 16200 1 IRDT} - {2736703800 12600 0 IRST} - {2752345800 16200 1 IRDT} - {2768239800 12600 0 IRST} - {2783881800 16200 1 IRDT} - {2799775800 12600 0 IRST} - {2815417800 16200 1 IRDT} - {2831311800 12600 0 IRST} - {2847040200 16200 1 IRDT} - {2862934200 12600 0 IRST} - {2878576200 16200 1 IRDT} - {2894470200 12600 0 IRST} - {2910112200 16200 1 IRDT} - {2926006200 12600 0 IRST} - {2941648200 16200 1 IRDT} - {2957542200 12600 0 IRST} - {2973270600 16200 1 IRDT} - {2989164600 12600 0 IRST} - {3004806600 16200 1 IRDT} - {3020700600 12600 0 IRST} - {3036342600 16200 1 IRDT} - {3052236600 12600 0 IRST} - {3067878600 16200 1 IRDT} - {3083772600 12600 0 IRST} - {3099501000 16200 1 IRDT} - {3115395000 12600 0 IRST} - {3131037000 16200 1 IRDT} - {3146931000 12600 0 IRST} - {3162573000 16200 1 IRDT} - {3178467000 12600 0 IRST} - {3194109000 16200 1 IRDT} - {3210003000 12600 0 IRST} - {3225731400 16200 1 IRDT} - {3241625400 12600 0 IRST} - {3257267400 16200 1 IRDT} - {3273161400 12600 0 IRST} - {3288803400 16200 1 IRDT} - {3304697400 12600 0 IRST} - {3320339400 16200 1 IRDT} - {3336233400 12600 0 IRST} - {3351961800 16200 1 IRDT} - {3367855800 12600 0 IRST} - {3383497800 16200 1 IRDT} - {3399391800 12600 0 IRST} - {3415033800 16200 1 IRDT} - {3430927800 12600 0 IRST} - {3446569800 16200 1 IRDT} - {3462463800 12600 0 IRST} - {3478192200 16200 1 IRDT} - {3494086200 12600 0 IRST} - {3509728200 16200 1 IRDT} - {3525622200 12600 0 IRST} - {3541264200 16200 1 IRDT} - {3557158200 12600 0 IRST} - {3572800200 16200 1 IRDT} - {3588694200 12600 0 IRST} - {3604422600 16200 1 IRDT} - {3620316600 12600 0 IRST} - {3635958600 16200 1 IRDT} - {3651852600 12600 0 IRST} - {3667494600 16200 1 IRDT} - {3683388600 12600 0 IRST} - {3699030600 16200 1 IRDT} - {3714924600 12600 0 IRST} - {3730653000 16200 1 IRDT} - {3746547000 12600 0 IRST} - {3762189000 16200 1 IRDT} - {3778083000 12600 0 IRST} - {3793725000 16200 1 IRDT} - {3809619000 12600 0 IRST} - {3825261000 16200 1 IRDT} - {3841155000 12600 0 IRST} - {3856883400 16200 1 IRDT} - {3872777400 12600 0 IRST} - {3888419400 16200 1 IRDT} - {3904313400 12600 0 IRST} - {3919955400 16200 1 IRDT} - {3935849400 12600 0 IRST} - {3951491400 16200 1 IRDT} - {3967385400 12600 0 IRST} - {3983113800 16200 1 IRDT} - {3999007800 12600 0 IRST} - {4014649800 16200 1 IRDT} - {4030543800 12600 0 IRST} - {4046185800 16200 1 IRDT} - {4062079800 12600 0 IRST} - {4077721800 16200 1 IRDT} - {4093615800 12600 0 IRST} } diff --git a/library/tzdata/Asia/Tomsk b/library/tzdata/Asia/Tomsk deleted file mode 100644 index 0694d01..0000000 --- a/library/tzdata/Asia/Tomsk +++ /dev/null @@ -1,73 +0,0 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Tomsk) { - {-9223372036854775808 20391 0 LMT} - {-1578807591 21600 0 +06} - {-1247551200 25200 0 +08} - {354906000 28800 1 +08} - {370713600 25200 0 +07} - {386442000 28800 1 +08} - {402249600 25200 0 +07} - {417978000 28800 1 +08} - {433785600 25200 0 +07} - {449600400 28800 1 +08} - {465332400 25200 0 +07} - {481057200 28800 1 +08} - {496782000 25200 0 +07} - {512506800 28800 1 +08} - {528231600 25200 0 +07} - {543956400 28800 1 +08} - {559681200 25200 0 +07} - {575406000 28800 1 +08} - {591130800 25200 0 +07} - {606855600 28800 1 +08} - {622580400 25200 0 +07} - {638305200 28800 1 +08} - {654634800 25200 0 +07} - {670359600 21600 0 +07} - {670363200 25200 1 +07} - {686088000 21600 0 +06} - {695764800 25200 0 +08} - {701809200 28800 1 +08} - {717534000 25200 0 +07} - {733258800 28800 1 +08} - {748983600 25200 0 +07} - {764708400 28800 1 +08} - {780433200 25200 0 +07} - {796158000 28800 1 +08} - {811882800 25200 0 +07} - {828212400 28800 1 +08} - {846356400 25200 0 +07} - {859662000 28800 1 +08} - {877806000 25200 0 +07} - {891111600 28800 1 +08} - {909255600 25200 0 +07} - {922561200 28800 1 +08} - {941310000 25200 0 +07} - {954010800 28800 1 +08} - {972759600 25200 0 +07} - {985460400 28800 1 +08} - {1004209200 25200 0 +07} - {1017514800 28800 1 +08} - {1020196800 25200 0 +07} - {1035662400 21600 0 +06} - {1048968000 25200 1 +07} - {1067112000 21600 0 +06} - {1080417600 25200 1 +07} - {1099166400 21600 0 +06} - {1111867200 25200 1 +07} - {1130616000 21600 0 +06} - {1143316800 25200 1 +07} - {1162065600 21600 0 +06} - {1174766400 25200 1 +07} - {1193515200 21600 0 +06} - {1206820800 25200 1 +07} - {1224964800 21600 0 +06} - {1238270400 25200 1 +07} - {1256414400 21600 0 +06} - {1269720000 25200 1 +07} - {1288468800 21600 0 +06} - {1301169600 25200 0 +07} - {1414263600 21600 0 +06} - {1464465600 25200 0 +07} -} diff --git a/library/tzdata/Asia/Ust-Nera b/library/tzdata/Asia/Ust-Nera index 021fa62..90fa7d5 100644 --- a/library/tzdata/Asia/Ust-Nera +++ b/library/tzdata/Asia/Ust-Nera @@ -2,70 +2,70 @@ set TZData(:Asia/Ust-Nera) { {-9223372036854775808 34374 0 LMT} - {-1579426374 28800 0 +08} - {354898800 43200 0 +12} - {370699200 39600 0 +11} - {386427600 43200 1 +12} - {402235200 39600 0 +11} - {417963600 43200 1 +12} - {433771200 39600 0 +11} - {449586000 43200 1 +12} - {465318000 39600 0 +11} - {481042800 43200 1 +12} - {496767600 39600 0 +11} - {512492400 43200 1 +12} - {528217200 39600 0 +11} - {543942000 43200 1 +12} - {559666800 39600 0 +11} - {575391600 43200 1 +12} - {591116400 39600 0 +11} - {606841200 43200 1 +12} - {622566000 39600 0 +11} - {638290800 43200 1 +12} - {654620400 39600 0 +11} - {670345200 36000 0 +11} - {670348800 39600 1 +11} - {686073600 36000 0 +10} - {695750400 39600 0 +12} - {701794800 43200 1 +12} - {717519600 39600 0 +11} - {733244400 43200 1 +12} - {748969200 39600 0 +11} - {764694000 43200 1 +12} - {780418800 39600 0 +11} - {796143600 43200 1 +12} - {811868400 39600 0 +11} - {828198000 43200 1 +12} - {846342000 39600 0 +11} - {859647600 43200 1 +12} - {877791600 39600 0 +11} - {891097200 43200 1 +12} - {909241200 39600 0 +11} - {922546800 43200 1 +12} - {941295600 39600 0 +11} - {953996400 43200 1 +12} - {972745200 39600 0 +11} - {985446000 43200 1 +12} - {1004194800 39600 0 +11} - {1017500400 43200 1 +12} - {1035644400 39600 0 +11} - {1048950000 43200 1 +12} - {1067094000 39600 0 +11} - {1080399600 43200 1 +12} - {1099148400 39600 0 +11} - {1111849200 43200 1 +12} - {1130598000 39600 0 +11} - {1143298800 43200 1 +12} - {1162047600 39600 0 +11} - {1174748400 43200 1 +12} - {1193497200 39600 0 +11} - {1206802800 43200 1 +12} - {1224946800 39600 0 +11} - {1238252400 43200 1 +12} - {1256396400 39600 0 +11} - {1269702000 43200 1 +12} - {1288450800 39600 0 +11} - {1301151600 43200 0 +12} - {1315828800 39600 0 +11} - {1414249200 36000 0 +10} + {-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} + {1414249200 36000 0 VLAT} } diff --git a/library/tzdata/Asia/Vladivostok b/library/tzdata/Asia/Vladivostok index e8f651c..119ff57 100644 --- a/library/tzdata/Asia/Vladivostok +++ b/library/tzdata/Asia/Vladivostok @@ -2,70 +2,70 @@ set TZData(:Asia/Vladivostok) { {-9223372036854775808 31651 0 LMT} - {-1487321251 32400 0 +09} - {-1247562000 36000 0 +11} - {354895200 39600 1 +11} - {370702800 36000 0 +10} - {386431200 39600 1 +11} - {402238800 36000 0 +10} - {417967200 39600 1 +11} - {433774800 36000 0 +10} - {449589600 39600 1 +11} - {465321600 36000 0 +10} - {481046400 39600 1 +11} - {496771200 36000 0 +10} - {512496000 39600 1 +11} - {528220800 36000 0 +10} - {543945600 39600 1 +11} - {559670400 36000 0 +10} - {575395200 39600 1 +11} - {591120000 36000 0 +10} - {606844800 39600 1 +11} - {622569600 36000 0 +10} - {638294400 39600 1 +11} - {654624000 36000 0 +10} - {670348800 32400 0 +10} - {670352400 36000 1 +10} - {686077200 32400 0 +09} - {695754000 36000 0 +11} - {701798400 39600 1 +11} - {717523200 36000 0 +10} - {733248000 39600 1 +11} - {748972800 36000 0 +10} - {764697600 39600 1 +11} - {780422400 36000 0 +10} - {796147200 39600 1 +11} - {811872000 36000 0 +10} - {828201600 39600 1 +11} - {846345600 36000 0 +10} - {859651200 39600 1 +11} - {877795200 36000 0 +10} - {891100800 39600 1 +11} - {909244800 36000 0 +10} - {922550400 39600 1 +11} - {941299200 36000 0 +10} - {954000000 39600 1 +11} - {972748800 36000 0 +10} - {985449600 39600 1 +11} - {1004198400 36000 0 +10} - {1017504000 39600 1 +11} - {1035648000 36000 0 +10} - {1048953600 39600 1 +11} - {1067097600 36000 0 +10} - {1080403200 39600 1 +11} - {1099152000 36000 0 +10} - {1111852800 39600 1 +11} - {1130601600 36000 0 +10} - {1143302400 39600 1 +11} - {1162051200 36000 0 +10} - {1174752000 39600 1 +11} - {1193500800 36000 0 +10} - {1206806400 39600 1 +11} - {1224950400 36000 0 +10} - {1238256000 39600 1 +11} - {1256400000 36000 0 +10} - {1269705600 39600 1 +11} - {1288454400 36000 0 +10} - {1301155200 39600 0 +11} - {1414249200 36000 0 +10} + {-1487321251 32400 0 VLAT} + {-1247562000 36000 0 VLAMMTT} + {354895200 39600 1 VLAST} + {370702800 36000 0 VLAT} + {386431200 39600 1 VLAST} + {402238800 36000 0 VLAT} + {417967200 39600 1 VLAST} + {433774800 36000 0 VLAT} + {449589600 39600 1 VLAST} + {465321600 36000 0 VLAT} + {481046400 39600 1 VLAST} + {496771200 36000 0 VLAT} + {512496000 39600 1 VLAST} + {528220800 36000 0 VLAT} + {543945600 39600 1 VLAST} + {559670400 36000 0 VLAT} + {575395200 39600 1 VLAST} + {591120000 36000 0 VLAT} + {606844800 39600 1 VLAST} + {622569600 36000 0 VLAT} + {638294400 39600 1 VLAST} + {654624000 36000 0 VLAT} + {670348800 32400 0 VLAMMTT} + {670352400 36000 1 VLAST} + {686077200 32400 0 VLAT} + {695754000 36000 0 VLAMMTT} + {701787600 39600 1 VLAST} + {717508800 36000 0 VLAT} + {733248000 39600 1 VLAST} + {748972800 36000 0 VLAT} + {764697600 39600 1 VLAST} + {780422400 36000 0 VLAT} + {796147200 39600 1 VLAST} + {811872000 36000 0 VLAT} + {828201600 39600 1 VLAST} + {846345600 36000 0 VLAT} + {859651200 39600 1 VLAST} + {877795200 36000 0 VLAT} + {891100800 39600 1 VLAST} + {909244800 36000 0 VLAT} + {922550400 39600 1 VLAST} + {941299200 36000 0 VLAT} + {954000000 39600 1 VLAST} + {972748800 36000 0 VLAT} + {985449600 39600 1 VLAST} + {1004198400 36000 0 VLAT} + {1017504000 39600 1 VLAST} + {1035648000 36000 0 VLAT} + {1048953600 39600 1 VLAST} + {1067097600 36000 0 VLAT} + {1080403200 39600 1 VLAST} + {1099152000 36000 0 VLAT} + {1111852800 39600 1 VLAST} + {1130601600 36000 0 VLAT} + {1143302400 39600 1 VLAST} + {1162051200 36000 0 VLAT} + {1174752000 39600 1 VLAST} + {1193500800 36000 0 VLAT} + {1206806400 39600 1 VLAST} + {1224950400 36000 0 VLAT} + {1238256000 39600 1 VLAST} + {1256400000 36000 0 VLAT} + {1269705600 39600 1 VLAST} + {1288454400 36000 0 VLAT} + {1301155200 39600 0 VLAT} + {1414249200 36000 0 VLAT} } diff --git a/library/tzdata/Asia/Yakutsk b/library/tzdata/Asia/Yakutsk index 8ee153a..17493a6 100644 --- a/library/tzdata/Asia/Yakutsk +++ b/library/tzdata/Asia/Yakutsk @@ -2,70 +2,70 @@ set TZData(:Asia/Yakutsk) { {-9223372036854775808 31138 0 LMT} - {-1579423138 28800 0 +08} - {-1247558400 32400 0 +10} - {354898800 36000 1 +10} - {370706400 32400 0 +09} - {386434800 36000 1 +10} - {402242400 32400 0 +09} - {417970800 36000 1 +10} - {433778400 32400 0 +09} - {449593200 36000 1 +10} - {465325200 32400 0 +09} - {481050000 36000 1 +10} - {496774800 32400 0 +09} - {512499600 36000 1 +10} - {528224400 32400 0 +09} - {543949200 36000 1 +10} - {559674000 32400 0 +09} - {575398800 36000 1 +10} - {591123600 32400 0 +09} - {606848400 36000 1 +10} - {622573200 32400 0 +09} - {638298000 36000 1 +10} - {654627600 32400 0 +09} - {670352400 28800 0 +09} - {670356000 32400 1 +09} - {686080800 28800 0 +08} - {695757600 32400 0 +10} - {701802000 36000 1 +10} - {717526800 32400 0 +09} - {733251600 36000 1 +10} - {748976400 32400 0 +09} - {764701200 36000 1 +10} - {780426000 32400 0 +09} - {796150800 36000 1 +10} - {811875600 32400 0 +09} - {828205200 36000 1 +10} - {846349200 32400 0 +09} - {859654800 36000 1 +10} - {877798800 32400 0 +09} - {891104400 36000 1 +10} - {909248400 32400 0 +09} - {922554000 36000 1 +10} - {941302800 32400 0 +09} - {954003600 36000 1 +10} - {972752400 32400 0 +09} - {985453200 36000 1 +10} - {1004202000 32400 0 +09} - {1017507600 36000 1 +10} - {1035651600 32400 0 +09} - {1048957200 36000 1 +10} - {1067101200 32400 0 +09} - {1080406800 36000 1 +10} - {1099155600 32400 0 +09} - {1111856400 36000 1 +10} - {1130605200 32400 0 +09} - {1143306000 36000 1 +10} - {1162054800 32400 0 +09} - {1174755600 36000 1 +10} - {1193504400 32400 0 +09} - {1206810000 36000 1 +10} - {1224954000 32400 0 +09} - {1238259600 36000 1 +10} - {1256403600 32400 0 +09} - {1269709200 36000 1 +10} - {1288458000 32400 0 +09} - {1301158800 36000 0 +10} - {1414252800 32400 0 +09} + {-1579423138 28800 0 YAKT} + {-1247558400 32400 0 YAKMMTT} + {354898800 36000 1 YAKST} + {370706400 32400 0 YAKT} + {386434800 36000 1 YAKST} + {402242400 32400 0 YAKT} + {417970800 36000 1 YAKST} + {433778400 32400 0 YAKT} + {449593200 36000 1 YAKST} + {465325200 32400 0 YAKT} + {481050000 36000 1 YAKST} + {496774800 32400 0 YAKT} + {512499600 36000 1 YAKST} + {528224400 32400 0 YAKT} + {543949200 36000 1 YAKST} + {559674000 32400 0 YAKT} + {575398800 36000 1 YAKST} + {591123600 32400 0 YAKT} + {606848400 36000 1 YAKST} + {622573200 32400 0 YAKT} + {638298000 36000 1 YAKST} + {654627600 32400 0 YAKT} + {670352400 28800 0 YAKMMTT} + {670356000 32400 1 YAKST} + {686080800 28800 0 YAKT} + {695757600 32400 0 YAKMMTT} + {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} + {1080406800 36000 1 YAKST} + {1099155600 32400 0 YAKT} + {1111856400 36000 1 YAKST} + {1130605200 32400 0 YAKT} + {1143306000 36000 1 YAKST} + {1162054800 32400 0 YAKT} + {1174755600 36000 1 YAKST} + {1193504400 32400 0 YAKT} + {1206810000 36000 1 YAKST} + {1224954000 32400 0 YAKT} + {1238259600 36000 1 YAKST} + {1256403600 32400 0 YAKT} + {1269709200 36000 1 YAKST} + {1288458000 32400 0 YAKT} + {1301158800 36000 0 YAKT} + {1414252800 32400 0 YAKT} } diff --git a/library/tzdata/Asia/Yangon b/library/tzdata/Asia/Yangon deleted file mode 100644 index 40cfa02..0000000 --- a/library/tzdata/Asia/Yangon +++ /dev/null @@ -1,9 +0,0 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Asia/Yangon) { - {-9223372036854775808 23080 0 LMT} - {-2840163880 23080 0 RMT} - {-1577946280 23400 0 BURT} - {-873268200 32400 0 JST} - {-778410000 23400 0 MMT} -} diff --git a/library/tzdata/Asia/Yekaterinburg b/library/tzdata/Asia/Yekaterinburg index d2133b1..2678958 100644 --- a/library/tzdata/Asia/Yekaterinburg +++ b/library/tzdata/Asia/Yekaterinburg @@ -3,70 +3,70 @@ set TZData(:Asia/Yekaterinburg) { {-9223372036854775808 14553 0 LMT} {-1688270553 13505 0 PMT} - {-1592610305 14400 0 +04} - {-1247544000 18000 0 +06} - {354913200 21600 1 +06} - {370720800 18000 0 +05} - {386449200 21600 1 +06} - {402256800 18000 0 +05} - {417985200 21600 1 +06} - {433792800 18000 0 +05} - {449607600 21600 1 +06} - {465339600 18000 0 +05} - {481064400 21600 1 +06} - {496789200 18000 0 +05} - {512514000 21600 1 +06} - {528238800 18000 0 +05} - {543963600 21600 1 +06} - {559688400 18000 0 +05} - {575413200 21600 1 +06} - {591138000 18000 0 +05} - {606862800 21600 1 +06} - {622587600 18000 0 +05} - {638312400 21600 1 +06} - {654642000 18000 0 +05} - {670366800 14400 0 +05} - {670370400 18000 1 +05} - {686095200 14400 0 +04} - {695772000 18000 0 +06} - {701816400 21600 1 +06} - {717541200 18000 0 +05} - {733266000 21600 1 +06} - {748990800 18000 0 +05} - {764715600 21600 1 +06} - {780440400 18000 0 +05} - {796165200 21600 1 +06} - {811890000 18000 0 +05} - {828219600 21600 1 +06} - {846363600 18000 0 +05} - {859669200 21600 1 +06} - {877813200 18000 0 +05} - {891118800 21600 1 +06} - {909262800 18000 0 +05} - {922568400 21600 1 +06} - {941317200 18000 0 +05} - {954018000 21600 1 +06} - {972766800 18000 0 +05} - {985467600 21600 1 +06} - {1004216400 18000 0 +05} - {1017522000 21600 1 +06} - {1035666000 18000 0 +05} - {1048971600 21600 1 +06} - {1067115600 18000 0 +05} - {1080421200 21600 1 +06} - {1099170000 18000 0 +05} - {1111870800 21600 1 +06} - {1130619600 18000 0 +05} - {1143320400 21600 1 +06} - {1162069200 18000 0 +05} - {1174770000 21600 1 +06} - {1193518800 18000 0 +05} - {1206824400 21600 1 +06} - {1224968400 18000 0 +05} - {1238274000 21600 1 +06} - {1256418000 18000 0 +05} - {1269723600 21600 1 +06} - {1288472400 18000 0 +05} - {1301173200 21600 0 +06} - {1414267200 18000 0 +05} + {-1592610305 14400 0 SVET} + {-1247544000 18000 0 SVEMMTT} + {354913200 21600 1 SVEST} + {370720800 18000 0 SVET} + {386449200 21600 1 SVEST} + {402256800 18000 0 SVET} + {417985200 21600 1 SVEST} + {433792800 18000 0 SVET} + {449607600 21600 1 SVEST} + {465339600 18000 0 SVET} + {481064400 21600 1 SVEST} + {496789200 18000 0 SVET} + {512514000 21600 1 SVEST} + {528238800 18000 0 SVET} + {543963600 21600 1 SVEST} + {559688400 18000 0 SVET} + {575413200 21600 1 SVEST} + {591138000 18000 0 SVET} + {606862800 21600 1 SVEST} + {622587600 18000 0 SVET} + {638312400 21600 1 SVEST} + {654642000 18000 0 SVET} + {670366800 14400 0 SVEMMTT} + {670370400 18000 1 SVEST} + {686095200 14400 0 SVET} + {695772000 18000 0 YEKMMTT} + {701805600 21600 1 YEKST} + {717526800 18000 0 YEKT} + {733266000 21600 1 YEKST} + {748990800 18000 0 YEKT} + {764715600 21600 1 YEKST} + {780440400 18000 0 YEKT} + {796165200 21600 1 YEKST} + {811890000 18000 0 YEKT} + {828219600 21600 1 YEKST} + {846363600 18000 0 YEKT} + {859669200 21600 1 YEKST} + {877813200 18000 0 YEKT} + {891118800 21600 1 YEKST} + {909262800 18000 0 YEKT} + {922568400 21600 1 YEKST} + {941317200 18000 0 YEKT} + {954018000 21600 1 YEKST} + {972766800 18000 0 YEKT} + {985467600 21600 1 YEKST} + {1004216400 18000 0 YEKT} + {1017522000 21600 1 YEKST} + {1035666000 18000 0 YEKT} + {1048971600 21600 1 YEKST} + {1067115600 18000 0 YEKT} + {1080421200 21600 1 YEKST} + {1099170000 18000 0 YEKT} + {1111870800 21600 1 YEKST} + {1130619600 18000 0 YEKT} + {1143320400 21600 1 YEKST} + {1162069200 18000 0 YEKT} + {1174770000 21600 1 YEKST} + {1193518800 18000 0 YEKT} + {1206824400 21600 1 YEKST} + {1224968400 18000 0 YEKT} + {1238274000 21600 1 YEKST} + {1256418000 18000 0 YEKT} + {1269723600 21600 1 YEKST} + {1288472400 18000 0 YEKT} + {1301173200 21600 0 YEKT} + {1414267200 18000 0 YEKT} } diff --git a/library/tzdata/Asia/Yerevan b/library/tzdata/Asia/Yerevan index 0ffb69e..22008ef 100644 --- a/library/tzdata/Asia/Yerevan +++ b/library/tzdata/Asia/Yerevan @@ -2,68 +2,69 @@ set TZData(:Asia/Yerevan) { {-9223372036854775808 10680 0 LMT} - {-1441162680 10800 0 +03} - {-405140400 14400 0 +04} - {354916800 18000 1 +05} - {370724400 14400 0 +04} - {386452800 18000 1 +05} - {402260400 14400 0 +04} - {417988800 18000 1 +05} - {433796400 14400 0 +04} - {449611200 18000 1 +05} - {465343200 14400 0 +04} - {481068000 18000 1 +05} - {496792800 14400 0 +04} - {512517600 18000 1 +05} - {528242400 14400 0 +04} - {543967200 18000 1 +05} - {559692000 14400 0 +04} - {575416800 18000 1 +05} - {591141600 14400 0 +04} - {606866400 18000 1 +05} - {622591200 14400 0 +04} - {638316000 18000 1 +05} - {654645600 14400 0 +04} - {670370400 10800 0 +03} - {670374000 14400 1 +04} - {686098800 10800 0 +03} - {701823600 14400 1 +04} - {717548400 10800 0 +03} - {733273200 14400 1 +04} - {748998000 10800 0 +03} - {764722800 14400 1 +04} - {780447600 10800 0 +03} - {796172400 14400 1 +04} - {811897200 14400 0 +04} - {852062400 14400 0 +04} - {859672800 18000 1 +05} - {877816800 14400 0 +04} - {891122400 18000 1 +05} - {909266400 14400 0 +04} - {922572000 18000 1 +05} - {941320800 14400 0 +04} - {954021600 18000 1 +05} - {972770400 14400 0 +04} - {985471200 18000 1 +05} - {1004220000 14400 0 +04} - {1017525600 18000 1 +05} - {1035669600 14400 0 +04} - {1048975200 18000 1 +05} - {1067119200 14400 0 +04} - {1080424800 18000 1 +05} - {1099173600 14400 0 +04} - {1111874400 18000 1 +05} - {1130623200 14400 0 +04} - {1143324000 18000 1 +05} - {1162072800 14400 0 +04} - {1174773600 18000 1 +05} - {1193522400 14400 0 +04} - {1206828000 18000 1 +05} - {1224972000 14400 0 +04} - {1238277600 18000 1 +05} - {1256421600 14400 0 +04} - {1269727200 18000 1 +05} - {1288476000 14400 0 +04} - {1301176800 18000 1 +05} - {1319925600 14400 0 +04} + {-1441162680 10800 0 YERT} + {-405140400 14400 0 YERT} + {354916800 18000 1 YERST} + {370724400 14400 0 YERT} + {386452800 18000 1 YERST} + {402260400 14400 0 YERT} + {417988800 18000 1 YERST} + {433796400 14400 0 YERT} + {449611200 18000 1 YERST} + {465343200 14400 0 YERT} + {481068000 18000 1 YERST} + {496792800 14400 0 YERT} + {512517600 18000 1 YERST} + {528242400 14400 0 YERT} + {543967200 18000 1 YERST} + {559692000 14400 0 YERT} + {575416800 18000 1 YERST} + {591141600 14400 0 YERT} + {606866400 18000 1 YERST} + {622591200 14400 0 YERT} + {638316000 18000 1 YERST} + {654645600 14400 0 YERT} + {670370400 14400 1 YERST} + {685569600 14400 0 AMST} + {686098800 10800 0 AMT} + {701812800 14400 1 AMST} + {717534000 10800 0 AMT} + {733273200 14400 1 AMST} + {748998000 10800 0 AMT} + {764722800 14400 1 AMST} + {780447600 10800 0 AMT} + {796172400 14400 1 AMST} + {811897200 14400 0 AMT} + {852062400 14400 0 AMT} + {859672800 18000 1 AMST} + {877816800 14400 0 AMT} + {891122400 18000 1 AMST} + {909266400 14400 0 AMT} + {922572000 18000 1 AMST} + {941320800 14400 0 AMT} + {954021600 18000 1 AMST} + {972770400 14400 0 AMT} + {985471200 18000 1 AMST} + {1004220000 14400 0 AMT} + {1017525600 18000 1 AMST} + {1035669600 14400 0 AMT} + {1048975200 18000 1 AMST} + {1067119200 14400 0 AMT} + {1080424800 18000 1 AMST} + {1099173600 14400 0 AMT} + {1111874400 18000 1 AMST} + {1130623200 14400 0 AMT} + {1143324000 18000 1 AMST} + {1162072800 14400 0 AMT} + {1174773600 18000 1 AMST} + {1193522400 14400 0 AMT} + {1206828000 18000 1 AMST} + {1224972000 14400 0 AMT} + {1238277600 18000 1 AMST} + {1256421600 14400 0 AMT} + {1269727200 18000 1 AMST} + {1288476000 14400 0 AMT} + {1301176800 18000 1 AMST} + {1319925600 14400 0 AMT} + {1332626400 14400 0 AMT} } diff --git a/library/tzdata/Etc/GMT+1 b/library/tzdata/Etc/GMT+1 index 70d39cf..12f97ba 100644 --- a/library/tzdata/Etc/GMT+1 +++ b/library/tzdata/Etc/GMT+1 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT+1) { - {-9223372036854775808 -3600 0 -01} + {-9223372036854775808 -3600 0 GMT+1} } diff --git a/library/tzdata/Etc/GMT+10 b/library/tzdata/Etc/GMT+10 index 9165a08..6ea50bb 100644 --- a/library/tzdata/Etc/GMT+10 +++ b/library/tzdata/Etc/GMT+10 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT+10) { - {-9223372036854775808 -36000 0 -10} + {-9223372036854775808 -36000 0 GMT+10} } diff --git a/library/tzdata/Etc/GMT+11 b/library/tzdata/Etc/GMT+11 index a1aaf74..c91b169 100644 --- a/library/tzdata/Etc/GMT+11 +++ b/library/tzdata/Etc/GMT+11 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT+11) { - {-9223372036854775808 -39600 0 -11} + {-9223372036854775808 -39600 0 GMT+11} } diff --git a/library/tzdata/Etc/GMT+12 b/library/tzdata/Etc/GMT+12 index d2c082a..29a4cee 100644 --- a/library/tzdata/Etc/GMT+12 +++ b/library/tzdata/Etc/GMT+12 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT+12) { - {-9223372036854775808 -43200 0 -12} + {-9223372036854775808 -43200 0 GMT+12} } diff --git a/library/tzdata/Etc/GMT+2 b/library/tzdata/Etc/GMT+2 index 46cca7d..8c6b526 100644 --- a/library/tzdata/Etc/GMT+2 +++ b/library/tzdata/Etc/GMT+2 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT+2) { - {-9223372036854775808 -7200 0 -02} + {-9223372036854775808 -7200 0 GMT+2} } diff --git a/library/tzdata/Etc/GMT+3 b/library/tzdata/Etc/GMT+3 index e1e3001..862571d 100644 --- a/library/tzdata/Etc/GMT+3 +++ b/library/tzdata/Etc/GMT+3 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT+3) { - {-9223372036854775808 -10800 0 -03} + {-9223372036854775808 -10800 0 GMT+3} } diff --git a/library/tzdata/Etc/GMT+4 b/library/tzdata/Etc/GMT+4 index 32afa24..a933bbc 100644 --- a/library/tzdata/Etc/GMT+4 +++ b/library/tzdata/Etc/GMT+4 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT+4) { - {-9223372036854775808 -14400 0 -04} + {-9223372036854775808 -14400 0 GMT+4} } diff --git a/library/tzdata/Etc/GMT+5 b/library/tzdata/Etc/GMT+5 index 747abf5..80cc25c 100644 --- a/library/tzdata/Etc/GMT+5 +++ b/library/tzdata/Etc/GMT+5 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT+5) { - {-9223372036854775808 -18000 0 -05} + {-9223372036854775808 -18000 0 GMT+5} } diff --git a/library/tzdata/Etc/GMT+6 b/library/tzdata/Etc/GMT+6 index 1096839..bc57bd6 100644 --- a/library/tzdata/Etc/GMT+6 +++ b/library/tzdata/Etc/GMT+6 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT+6) { - {-9223372036854775808 -21600 0 -06} + {-9223372036854775808 -21600 0 GMT+6} } diff --git a/library/tzdata/Etc/GMT+7 b/library/tzdata/Etc/GMT+7 index 6d47863..d419eb9 100644 --- a/library/tzdata/Etc/GMT+7 +++ b/library/tzdata/Etc/GMT+7 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT+7) { - {-9223372036854775808 -25200 0 -07} + {-9223372036854775808 -25200 0 GMT+7} } diff --git a/library/tzdata/Etc/GMT+8 b/library/tzdata/Etc/GMT+8 index 33c0f69..705ad40 100644 --- a/library/tzdata/Etc/GMT+8 +++ b/library/tzdata/Etc/GMT+8 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT+8) { - {-9223372036854775808 -28800 0 -08} + {-9223372036854775808 -28800 0 GMT+8} } diff --git a/library/tzdata/Etc/GMT+9 b/library/tzdata/Etc/GMT+9 index 4119bf4..4086639 100644 --- a/library/tzdata/Etc/GMT+9 +++ b/library/tzdata/Etc/GMT+9 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT+9) { - {-9223372036854775808 -32400 0 -09} + {-9223372036854775808 -32400 0 GMT+9} } diff --git a/library/tzdata/Etc/GMT-1 b/library/tzdata/Etc/GMT-1 index e7ac44b..a44dd1f 100644 --- a/library/tzdata/Etc/GMT-1 +++ b/library/tzdata/Etc/GMT-1 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-1) { - {-9223372036854775808 3600 0 +01} + {-9223372036854775808 3600 0 GMT-1} } diff --git a/library/tzdata/Etc/GMT-10 b/library/tzdata/Etc/GMT-10 index fdbd1e3..1c50d01 100644 --- a/library/tzdata/Etc/GMT-10 +++ b/library/tzdata/Etc/GMT-10 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-10) { - {-9223372036854775808 36000 0 +10} + {-9223372036854775808 36000 0 GMT-10} } diff --git a/library/tzdata/Etc/GMT-11 b/library/tzdata/Etc/GMT-11 index 4b28ad0..d07710f 100644 --- a/library/tzdata/Etc/GMT-11 +++ b/library/tzdata/Etc/GMT-11 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-11) { - {-9223372036854775808 39600 0 +11} + {-9223372036854775808 39600 0 GMT-11} } diff --git a/library/tzdata/Etc/GMT-12 b/library/tzdata/Etc/GMT-12 index 594bac3..a23b98d 100644 --- a/library/tzdata/Etc/GMT-12 +++ b/library/tzdata/Etc/GMT-12 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-12) { - {-9223372036854775808 43200 0 +12} + {-9223372036854775808 43200 0 GMT-12} } diff --git a/library/tzdata/Etc/GMT-13 b/library/tzdata/Etc/GMT-13 index f61159e..1a6700a 100644 --- a/library/tzdata/Etc/GMT-13 +++ b/library/tzdata/Etc/GMT-13 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-13) { - {-9223372036854775808 46800 0 +13} + {-9223372036854775808 46800 0 GMT-13} } diff --git a/library/tzdata/Etc/GMT-14 b/library/tzdata/Etc/GMT-14 index 493800f..3707e21 100644 --- a/library/tzdata/Etc/GMT-14 +++ b/library/tzdata/Etc/GMT-14 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-14) { - {-9223372036854775808 50400 0 +14} + {-9223372036854775808 50400 0 GMT-14} } diff --git a/library/tzdata/Etc/GMT-2 b/library/tzdata/Etc/GMT-2 index 51fdbed..f9dea16 100644 --- a/library/tzdata/Etc/GMT-2 +++ b/library/tzdata/Etc/GMT-2 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-2) { - {-9223372036854775808 7200 0 +02} + {-9223372036854775808 7200 0 GMT-2} } diff --git a/library/tzdata/Etc/GMT-3 b/library/tzdata/Etc/GMT-3 index 7aed39d..99145b8 100644 --- a/library/tzdata/Etc/GMT-3 +++ b/library/tzdata/Etc/GMT-3 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-3) { - {-9223372036854775808 10800 0 +03} + {-9223372036854775808 10800 0 GMT-3} } diff --git a/library/tzdata/Etc/GMT-4 b/library/tzdata/Etc/GMT-4 index 6ca6372..27b4fec 100644 --- a/library/tzdata/Etc/GMT-4 +++ b/library/tzdata/Etc/GMT-4 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-4) { - {-9223372036854775808 14400 0 +04} + {-9223372036854775808 14400 0 GMT-4} } diff --git a/library/tzdata/Etc/GMT-5 b/library/tzdata/Etc/GMT-5 index 6c47a31..dbe3df7 100644 --- a/library/tzdata/Etc/GMT-5 +++ b/library/tzdata/Etc/GMT-5 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-5) { - {-9223372036854775808 18000 0 +05} + {-9223372036854775808 18000 0 GMT-5} } diff --git a/library/tzdata/Etc/GMT-6 b/library/tzdata/Etc/GMT-6 index 202e7f8..414dbfa 100644 --- a/library/tzdata/Etc/GMT-6 +++ b/library/tzdata/Etc/GMT-6 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-6) { - {-9223372036854775808 21600 0 +06} + {-9223372036854775808 21600 0 GMT-6} } diff --git a/library/tzdata/Etc/GMT-7 b/library/tzdata/Etc/GMT-7 index c6deaf3..2bd59db 100644 --- a/library/tzdata/Etc/GMT-7 +++ b/library/tzdata/Etc/GMT-7 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-7) { - {-9223372036854775808 25200 0 +07} + {-9223372036854775808 25200 0 GMT-7} } diff --git a/library/tzdata/Etc/GMT-8 b/library/tzdata/Etc/GMT-8 index 4bed42e..7303721 100644 --- a/library/tzdata/Etc/GMT-8 +++ b/library/tzdata/Etc/GMT-8 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-8) { - {-9223372036854775808 28800 0 +08} + {-9223372036854775808 28800 0 GMT-8} } diff --git a/library/tzdata/Etc/GMT-9 b/library/tzdata/Etc/GMT-9 index 2a7625b..46e6878 100644 --- a/library/tzdata/Etc/GMT-9 +++ b/library/tzdata/Etc/GMT-9 @@ -1,5 +1,5 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Etc/GMT-9) { - {-9223372036854775808 32400 0 +09} + {-9223372036854775808 32400 0 GMT-9} } diff --git a/library/tzdata/Europe/Astrakhan b/library/tzdata/Europe/Astrakhan deleted file mode 100644 index 9881bb8..0000000 --- a/library/tzdata/Europe/Astrakhan +++ /dev/null @@ -1,71 +0,0 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Astrakhan) { - {-9223372036854775808 11532 0 LMT} - {-1441249932 10800 0 +03} - {-1247540400 14400 0 +05} - {354916800 18000 1 +05} - {370724400 14400 0 +04} - {386452800 18000 1 +05} - {402260400 14400 0 +04} - {417988800 18000 1 +05} - {433796400 14400 0 +04} - {449611200 18000 1 +05} - {465343200 14400 0 +04} - {481068000 18000 1 +05} - {496792800 14400 0 +04} - {512517600 18000 1 +05} - {528242400 14400 0 +04} - {543967200 18000 1 +05} - {559692000 14400 0 +04} - {575416800 18000 1 +05} - {591141600 14400 0 +04} - {606866400 10800 0 +04} - {606870000 14400 1 +04} - {622594800 10800 0 +03} - {638319600 14400 1 +04} - {654649200 10800 0 +03} - {670374000 14400 0 +04} - {701820000 10800 0 +04} - {701823600 14400 1 +04} - {717548400 10800 0 +03} - {733273200 14400 1 +04} - {748998000 10800 0 +03} - {764722800 14400 1 +04} - {780447600 10800 0 +03} - {796172400 14400 1 +04} - {811897200 10800 0 +03} - {828226800 14400 1 +04} - {846370800 10800 0 +03} - {859676400 14400 1 +04} - {877820400 10800 0 +03} - {891126000 14400 1 +04} - {909270000 10800 0 +03} - {922575600 14400 1 +04} - {941324400 10800 0 +03} - {954025200 14400 1 +04} - {972774000 10800 0 +03} - {985474800 14400 1 +04} - {1004223600 10800 0 +03} - {1017529200 14400 1 +04} - {1035673200 10800 0 +03} - {1048978800 14400 1 +04} - {1067122800 10800 0 +03} - {1080428400 14400 1 +04} - {1099177200 10800 0 +03} - {1111878000 14400 1 +04} - {1130626800 10800 0 +03} - {1143327600 14400 1 +04} - {1162076400 10800 0 +03} - {1174777200 14400 1 +04} - {1193526000 10800 0 +03} - {1206831600 14400 1 +04} - {1224975600 10800 0 +03} - {1238281200 14400 1 +04} - {1256425200 10800 0 +03} - {1269730800 14400 1 +04} - {1288479600 10800 0 +03} - {1301180400 14400 0 +04} - {1414274400 10800 0 +03} - {1459033200 14400 0 +04} -} diff --git a/library/tzdata/Europe/Chisinau b/library/tzdata/Europe/Chisinau index db4c6db..5c240e7 100644 --- a/library/tzdata/Europe/Chisinau +++ b/library/tzdata/Europe/Chisinau @@ -46,9 +46,9 @@ set TZData(:Europe/Chisinau) { {591145200 10800 0 MSK} {606870000 14400 1 MSD} {622594800 10800 0 MSK} - {638319600 14400 1 MSD} - {641948400 10800 0 EEST} - {654652800 7200 0 EET} + {631141200 10800 0 MSK} + {641941200 7200 0 EET} + {662680800 7200 0 EEMMTT} {670377600 10800 1 EEST} {686102400 7200 0 EET} {694216800 7200 0 EET} diff --git a/library/tzdata/Europe/Istanbul b/library/tzdata/Europe/Istanbul index d00533f..8eadbc3 100644 --- a/library/tzdata/Europe/Istanbul +++ b/library/tzdata/Europe/Istanbul @@ -57,37 +57,37 @@ set TZData(:Europe/Istanbul) { {228866400 10800 1 EEST} {245797200 7200 0 EET} {260316000 10800 1 EEST} - {277246800 14400 0 +04} - {291769200 14400 1 +04} - {308779200 10800 0 +03} - {323827200 14400 1 +04} - {340228800 10800 0 +03} - {354672000 14400 1 +04} - {371678400 10800 0 +03} - {386121600 14400 1 +04} - {403128000 10800 0 +03} - {428446800 14400 1 +04} - {433886400 10800 0 +03} + {277246800 14400 0 TRST} + {291769200 14400 1 TRST} + {308779200 10800 0 TRT} + {323827200 14400 1 TRST} + {340228800 10800 0 TRT} + {354672000 14400 1 TRST} + {371678400 10800 0 TRT} + {386121600 14400 1 TRST} + {403128000 10800 0 TRT} + {428446800 14400 1 TRST} + {433886400 10800 0 TRT} {482792400 7200 0 EET} {482796000 10800 1 EEST} {496702800 7200 0 EET} - {512521200 10800 1 EEST} - {528246000 7200 0 EET} - {543970800 10800 1 EEST} - {559695600 7200 0 EET} - {575420400 10800 1 EEST} - {591145200 7200 0 EET} - {606870000 10800 1 EEST} - {622594800 7200 0 EET} - {638319600 10800 1 EEST} - {654649200 7200 0 EET} + {512524800 10800 1 EEST} + {528249600 7200 0 EET} + {543974400 10800 1 EEST} + {559699200 7200 0 EET} + {575424000 10800 1 EEST} + {591148800 7200 0 EET} + {606873600 10800 1 EEST} + {622598400 7200 0 EET} + {638323200 10800 1 EEST} + {654652800 7200 0 EET} {670374000 10800 1 EEST} {686098800 7200 0 EET} {701823600 10800 1 EEST} {717548400 7200 0 EET} {733273200 10800 1 EEST} {748998000 7200 0 EET} - {764118000 10800 1 EEST} + {764722800 10800 1 EEST} {780447600 7200 0 EET} {796172400 10800 1 EEST} {811897200 7200 0 EET} @@ -136,5 +136,171 @@ set TZData(:Europe/Istanbul) { {1445734800 10800 1 EEST} {1446944400 7200 0 EET} {1459040400 10800 1 EEST} - {1473199200 10800 0 +03} + {1477789200 7200 0 EET} + {1490490000 10800 1 EEST} + {1509238800 7200 0 EET} + {1521939600 10800 1 EEST} + {1540688400 7200 0 EET} + {1553994000 10800 1 EEST} + {1572138000 7200 0 EET} + {1585443600 10800 1 EEST} + {1603587600 7200 0 EET} + {1616893200 10800 1 EEST} + {1635642000 7200 0 EET} + {1648342800 10800 1 EEST} + {1667091600 7200 0 EET} + {1679792400 10800 1 EEST} + {1698541200 7200 0 EET} + {1711846800 10800 1 EEST} + {1729990800 7200 0 EET} + {1743296400 10800 1 EEST} + {1761440400 7200 0 EET} + {1774746000 10800 1 EEST} + {1792890000 7200 0 EET} + {1806195600 10800 1 EEST} + {1824944400 7200 0 EET} + {1837645200 10800 1 EEST} + {1856394000 7200 0 EET} + {1869094800 10800 1 EEST} + {1887843600 7200 0 EET} + {1901149200 10800 1 EEST} + {1919293200 7200 0 EET} + {1932598800 10800 1 EEST} + {1950742800 7200 0 EET} + {1964048400 10800 1 EEST} + {1982797200 7200 0 EET} + {1995498000 10800 1 EEST} + {2014246800 7200 0 EET} + {2026947600 10800 1 EEST} + {2045696400 7200 0 EET} + {2058397200 10800 1 EEST} + {2077146000 7200 0 EET} + {2090451600 10800 1 EEST} + {2108595600 7200 0 EET} + {2121901200 10800 1 EEST} + {2140045200 7200 0 EET} + {2153350800 10800 1 EEST} + {2172099600 7200 0 EET} + {2184800400 10800 1 EEST} + {2203549200 7200 0 EET} + {2216250000 10800 1 EEST} + {2234998800 7200 0 EET} + {2248304400 10800 1 EEST} + {2266448400 7200 0 EET} + {2279754000 10800 1 EEST} + {2297898000 7200 0 EET} + {2311203600 10800 1 EEST} + {2329347600 7200 0 EET} + {2342653200 10800 1 EEST} + {2361402000 7200 0 EET} + {2374102800 10800 1 EEST} + {2392851600 7200 0 EET} + {2405552400 10800 1 EEST} + {2424301200 7200 0 EET} + {2437606800 10800 1 EEST} + {2455750800 7200 0 EET} + {2469056400 10800 1 EEST} + {2487200400 7200 0 EET} + {2500506000 10800 1 EEST} + {2519254800 7200 0 EET} + {2531955600 10800 1 EEST} + {2550704400 7200 0 EET} + {2563405200 10800 1 EEST} + {2582154000 7200 0 EET} + {2595459600 10800 1 EEST} + {2613603600 7200 0 EET} + {2626909200 10800 1 EEST} + {2645053200 7200 0 EET} + {2658358800 10800 1 EEST} + {2676502800 7200 0 EET} + {2689808400 10800 1 EEST} + {2708557200 7200 0 EET} + {2721258000 10800 1 EEST} + {2740006800 7200 0 EET} + {2752707600 10800 1 EEST} + {2771456400 7200 0 EET} + {2784762000 10800 1 EEST} + {2802906000 7200 0 EET} + {2816211600 10800 1 EEST} + {2834355600 7200 0 EET} + {2847661200 10800 1 EEST} + {2866410000 7200 0 EET} + {2879110800 10800 1 EEST} + {2897859600 7200 0 EET} + {2910560400 10800 1 EEST} + {2929309200 7200 0 EET} + {2942010000 10800 1 EEST} + {2960758800 7200 0 EET} + {2974064400 10800 1 EEST} + {2992208400 7200 0 EET} + {3005514000 10800 1 EEST} + {3023658000 7200 0 EET} + {3036963600 10800 1 EEST} + {3055712400 7200 0 EET} + {3068413200 10800 1 EEST} + {3087162000 7200 0 EET} + {3099862800 10800 1 EEST} + {3118611600 7200 0 EET} + {3131917200 10800 1 EEST} + {3150061200 7200 0 EET} + {3163366800 10800 1 EEST} + {3181510800 7200 0 EET} + {3194816400 10800 1 EEST} + {3212960400 7200 0 EET} + {3226266000 10800 1 EEST} + {3245014800 7200 0 EET} + {3257715600 10800 1 EEST} + {3276464400 7200 0 EET} + {3289165200 10800 1 EEST} + {3307914000 7200 0 EET} + {3321219600 10800 1 EEST} + {3339363600 7200 0 EET} + {3352669200 10800 1 EEST} + {3370813200 7200 0 EET} + {3384118800 10800 1 EEST} + {3402867600 7200 0 EET} + {3415568400 10800 1 EEST} + {3434317200 7200 0 EET} + {3447018000 10800 1 EEST} + {3465766800 7200 0 EET} + {3479072400 10800 1 EEST} + {3497216400 7200 0 EET} + {3510522000 10800 1 EEST} + {3528666000 7200 0 EET} + {3541971600 10800 1 EEST} + {3560115600 7200 0 EET} + {3573421200 10800 1 EEST} + {3592170000 7200 0 EET} + {3604870800 10800 1 EEST} + {3623619600 7200 0 EET} + {3636320400 10800 1 EEST} + {3655069200 7200 0 EET} + {3668374800 10800 1 EEST} + {3686518800 7200 0 EET} + {3699824400 10800 1 EEST} + {3717968400 7200 0 EET} + {3731274000 10800 1 EEST} + {3750022800 7200 0 EET} + {3762723600 10800 1 EEST} + {3781472400 7200 0 EET} + {3794173200 10800 1 EEST} + {3812922000 7200 0 EET} + {3825622800 10800 1 EEST} + {3844371600 7200 0 EET} + {3857677200 10800 1 EEST} + {3875821200 7200 0 EET} + {3889126800 10800 1 EEST} + {3907270800 7200 0 EET} + {3920576400 10800 1 EEST} + {3939325200 7200 0 EET} + {3952026000 10800 1 EEST} + {3970774800 7200 0 EET} + {3983475600 10800 1 EEST} + {4002224400 7200 0 EET} + {4015530000 10800 1 EEST} + {4033674000 7200 0 EET} + {4046979600 10800 1 EEST} + {4065123600 7200 0 EET} + {4078429200 10800 1 EEST} + {4096573200 7200 0 EET} } diff --git a/library/tzdata/Europe/Kaliningrad b/library/tzdata/Europe/Kaliningrad index e1713ae..d03f7d0 100644 --- a/library/tzdata/Europe/Kaliningrad +++ b/library/tzdata/Europe/Kaliningrad @@ -35,15 +35,15 @@ set TZData(:Europe/Kaliningrad) { {559695600 10800 0 MSK} {575420400 14400 1 MSD} {591145200 10800 0 MSK} - {606870000 7200 0 EEMMTT} - {606873600 10800 1 EEST} - {622598400 7200 0 EET} - {638323200 10800 1 EEST} - {654652800 7200 0 EET} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {638319600 14400 1 MSD} + {654649200 10800 0 MSK} + {670374000 7200 0 EEMMTT} {670377600 10800 1 EEST} {686102400 7200 0 EET} - {701827200 10800 1 EEST} - {717552000 7200 0 EET} + {701816400 10800 1 EEST} + {717537600 7200 0 EET} {733276800 10800 1 EEST} {749001600 7200 0 EET} {764726400 10800 1 EEST} @@ -80,6 +80,6 @@ set TZData(:Europe/Kaliningrad) { {1256428800 7200 0 EET} {1269734400 10800 1 EEST} {1288483200 7200 0 EET} - {1301184000 10800 0 +03} + {1301184000 10800 0 FET} {1414278000 7200 0 EET} } diff --git a/library/tzdata/Europe/Kirov b/library/tzdata/Europe/Kirov deleted file mode 100644 index 8762d22..0000000 --- a/library/tzdata/Europe/Kirov +++ /dev/null @@ -1,70 +0,0 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Kirov) { - {-9223372036854775808 11928 0 LMT} - {-1593820800 10800 0 +03} - {-1247540400 14400 0 +05} - {354916800 18000 1 +05} - {370724400 14400 0 +04} - {386452800 18000 1 +05} - {402260400 14400 0 +04} - {417988800 18000 1 +05} - {433796400 14400 0 +04} - {449611200 18000 1 +05} - {465343200 14400 0 +04} - {481068000 18000 1 +05} - {496792800 14400 0 +04} - {512517600 18000 1 +05} - {528242400 14400 0 +04} - {543967200 18000 1 +05} - {559692000 14400 0 +04} - {575416800 18000 1 +05} - {591141600 14400 0 +04} - {606866400 10800 0 +04} - {606870000 14400 1 +04} - {622594800 10800 0 +03} - {638319600 14400 1 +04} - {654649200 10800 0 +03} - {670374000 14400 0 +04} - {701820000 10800 0 +04} - {701823600 14400 1 +04} - {717548400 10800 0 +03} - {733273200 14400 1 +04} - {748998000 10800 0 +03} - {764722800 14400 1 +04} - {780447600 10800 0 +03} - {796172400 14400 1 +04} - {811897200 10800 0 +03} - {828226800 14400 1 +04} - {846370800 10800 0 +03} - {859676400 14400 1 +04} - {877820400 10800 0 +03} - {891126000 14400 1 +04} - {909270000 10800 0 +03} - {922575600 14400 1 +04} - {941324400 10800 0 +03} - {954025200 14400 1 +04} - {972774000 10800 0 +03} - {985474800 14400 1 +04} - {1004223600 10800 0 +03} - {1017529200 14400 1 +04} - {1035673200 10800 0 +03} - {1048978800 14400 1 +04} - {1067122800 10800 0 +03} - {1080428400 14400 1 +04} - {1099177200 10800 0 +03} - {1111878000 14400 1 +04} - {1130626800 10800 0 +03} - {1143327600 14400 1 +04} - {1162076400 10800 0 +03} - {1174777200 14400 1 +04} - {1193526000 10800 0 +03} - {1206831600 14400 1 +04} - {1224975600 10800 0 +03} - {1238281200 14400 1 +04} - {1256425200 10800 0 +03} - {1269730800 14400 1 +04} - {1288479600 10800 0 +03} - {1301180400 14400 0 +04} - {1414274400 10800 0 +03} -} diff --git a/library/tzdata/Europe/Malta b/library/tzdata/Europe/Malta index 0ebe2f6..b84f68e 100644 --- a/library/tzdata/Europe/Malta +++ b/library/tzdata/Europe/Malta @@ -3,23 +3,23 @@ set TZData(:Europe/Malta) { {-9223372036854775808 3484 0 LMT} {-2403478684 3600 0 CET} - {-1690765200 7200 1 CEST} - {-1680487200 3600 0 CET} + {-1690851600 7200 1 CEST} + {-1680483600 3600 0 CET} {-1664758800 7200 1 CEST} - {-1648951200 3600 0 CET} + {-1649034000 3600 0 CET} {-1635123600 7200 1 CEST} - {-1616896800 3600 0 CET} + {-1616979600 3600 0 CET} {-1604278800 7200 1 CEST} - {-1585533600 3600 0 CET} + {-1585530000 3600 0 CET} {-1571014800 7200 1 CEST} - {-1555293600 3600 0 CET} + {-1555290000 3600 0 CET} {-932432400 7200 1 CEST} {-857257200 3600 0 CET} {-844556400 7200 1 CEST} {-828226800 3600 0 CET} - {-812588400 7200 1 CEST} - {-798073200 3600 0 CET} - {-781052400 7200 1 CEST} + {-812502000 7200 1 CEST} + {-796777200 3600 0 CET} + {-781052400 7200 0 CEST} {-766717200 3600 0 CET} {-750898800 7200 1 CEST} {-733359600 3600 0 CET} @@ -30,17 +30,17 @@ set TZData(:Europe/Malta) { {-114051600 7200 1 CEST} {-103168800 3600 0 CET} {-81997200 7200 1 CEST} - {-71715600 3600 0 CET} + {-71719200 3600 0 CET} {-50547600 7200 1 CEST} - {-40266000 3600 0 CET} + {-40269600 3600 0 CET} {-18493200 7200 1 CEST} - {-8211600 3600 0 CET} + {-8215200 3600 0 CET} {12956400 7200 1 CEST} - {23238000 3600 0 CET} + {23234400 3600 0 CET} {43801200 7200 1 CEST} {54687600 3600 0 CET} {75855600 7200 1 CEST} - {86742000 3600 0 CET} + {86738400 3600 0 CET} {102380400 7200 0 CEST} {118105200 3600 0 CET} {135730800 7200 1 CEST} diff --git a/library/tzdata/Europe/Minsk b/library/tzdata/Europe/Minsk index 7a6232e..0acb4aa 100644 --- a/library/tzdata/Europe/Minsk +++ b/library/tzdata/Europe/Minsk @@ -30,11 +30,10 @@ set TZData(:Europe/Minsk) { {606870000 14400 1 MSD} {622594800 10800 0 MSK} {631141200 10800 0 MSK} - {670374000 7200 0 EEMMTT} - {670377600 10800 1 EEST} + {670374000 10800 1 EEST} {686102400 7200 0 EET} - {701827200 10800 1 EEST} - {717552000 7200 0 EET} + {701820000 10800 1 EEST} + {717544800 7200 0 EET} {733276800 10800 1 EEST} {749001600 7200 0 EET} {764726400 10800 1 EEST} @@ -71,5 +70,6 @@ set TZData(:Europe/Minsk) { {1256428800 7200 0 EET} {1269734400 10800 1 EEST} {1288483200 7200 0 EET} - {1301184000 10800 0 +03} + {1301184000 10800 0 FET} + {1414274400 10800 0 MSK} } diff --git a/library/tzdata/Europe/Moscow b/library/tzdata/Europe/Moscow index 9b513b1..686b3d0 100644 --- a/library/tzdata/Europe/Moscow +++ b/library/tzdata/Europe/Moscow @@ -9,10 +9,10 @@ set TZData(:Europe/Moscow) { {-1627965079 16279 1 MDST} {-1618716679 12679 1 MST} {-1596429079 16279 1 MDST} - {-1593820800 14400 0 MSD} + {-1593822679 14400 0 MSD} {-1589860800 10800 0 MSK} {-1542427200 14400 1 MSD} - {-1539493200 18000 1 +05} + {-1539493200 18000 1 MSM} {-1525323600 14400 1 MSD} {-1491188400 7200 0 EET} {-1247536800 10800 0 MSD} @@ -40,8 +40,8 @@ set TZData(:Europe/Moscow) { {670377600 10800 1 EEST} {686102400 7200 0 EET} {695779200 10800 0 MSD} - {701823600 14400 1 MSD} - {717548400 10800 0 MSK} + {701812800 14400 1 MSD} + {717534000 10800 0 MSK} {733273200 14400 1 MSD} {748998000 10800 0 MSK} {764722800 14400 1 MSD} diff --git a/library/tzdata/Europe/Rome b/library/tzdata/Europe/Rome index f53340c..64948b8 100644 --- a/library/tzdata/Europe/Rome +++ b/library/tzdata/Europe/Rome @@ -3,25 +3,24 @@ set TZData(:Europe/Rome) { {-9223372036854775808 2996 0 LMT} {-3259097396 2996 0 RMT} - {-2403565200 3600 0 CET} - {-1690765200 7200 1 CEST} - {-1680487200 3600 0 CET} + {-2403564596 3600 0 CET} + {-1690851600 7200 1 CEST} + {-1680483600 3600 0 CET} {-1664758800 7200 1 CEST} - {-1648951200 3600 0 CET} + {-1649034000 3600 0 CET} {-1635123600 7200 1 CEST} - {-1616896800 3600 0 CET} + {-1616979600 3600 0 CET} {-1604278800 7200 1 CEST} - {-1585533600 3600 0 CET} + {-1585530000 3600 0 CET} {-1571014800 7200 1 CEST} - {-1555293600 3600 0 CET} + {-1555290000 3600 0 CET} {-932432400 7200 1 CEST} {-857257200 3600 0 CET} {-844556400 7200 1 CEST} - {-830307600 7200 0 CEST} {-828226800 3600 0 CET} {-812502000 7200 1 CEST} - {-807152400 7200 0 CEST} - {-798073200 3600 0 CET} + {-804819600 3600 0 CET} + {-798080400 3600 0 CET} {-781052400 7200 1 CEST} {-766717200 3600 0 CET} {-750898800 7200 1 CEST} @@ -33,21 +32,21 @@ set TZData(:Europe/Rome) { {-114051600 7200 1 CEST} {-103168800 3600 0 CET} {-81997200 7200 1 CEST} - {-71715600 3600 0 CET} + {-71719200 3600 0 CET} {-50547600 7200 1 CEST} - {-40266000 3600 0 CET} + {-40269600 3600 0 CET} {-18493200 7200 1 CEST} - {-8211600 3600 0 CET} + {-8215200 3600 0 CET} {12956400 7200 1 CEST} - {23238000 3600 0 CET} + {23234400 3600 0 CET} {43801200 7200 1 CEST} {54687600 3600 0 CET} {75855600 7200 1 CEST} - {86742000 3600 0 CET} + {86738400 3600 0 CET} {107910000 7200 1 CEST} - {118191600 3600 0 CET} + {118188000 3600 0 CET} {138754800 7200 1 CEST} - {149641200 3600 0 CET} + {149637600 3600 0 CET} {170809200 7200 1 CEST} {181090800 3600 0 CET} {202258800 7200 1 CEST} diff --git a/library/tzdata/Europe/Samara b/library/tzdata/Europe/Samara index 8f21c57..ee9d989 100644 --- a/library/tzdata/Europe/Samara +++ b/library/tzdata/Europe/Samara @@ -2,72 +2,72 @@ set TZData(:Europe/Samara) { {-9223372036854775808 12020 0 LMT} - {-1593820800 10800 0 +03} - {-1247540400 14400 0 +04} - {-1102305600 14400 0 +05} - {354916800 18000 1 +05} - {370724400 14400 0 +04} - {386452800 18000 1 +05} - {402260400 14400 0 +04} - {417988800 18000 1 +05} - {433796400 14400 0 +04} - {449611200 18000 1 +05} - {465343200 14400 0 +04} - {481068000 18000 1 +05} - {496792800 14400 0 +04} - {512517600 18000 1 +05} - {528242400 14400 0 +04} - {543967200 18000 1 +05} - {559692000 14400 0 +04} - {575416800 18000 1 +05} - {591141600 14400 0 +04} - {606866400 10800 0 +04} - {606870000 14400 1 +04} - {622594800 10800 0 +03} - {638319600 14400 1 +04} - {654649200 10800 0 +03} - {670374000 7200 0 +03} - {670377600 10800 1 +03} - {686102400 10800 0 +03} - {687916800 14400 0 +04} - {701820000 18000 1 +05} - {717544800 14400 0 +04} - {733269600 18000 1 +05} - {748994400 14400 0 +04} - {764719200 18000 1 +05} - {780444000 14400 0 +04} - {796168800 18000 1 +05} - {811893600 14400 0 +04} - {828223200 18000 1 +05} - {846367200 14400 0 +04} - {859672800 18000 1 +05} - {877816800 14400 0 +04} - {891122400 18000 1 +05} - {909266400 14400 0 +04} - {922572000 18000 1 +05} - {941320800 14400 0 +04} - {954021600 18000 1 +05} - {972770400 14400 0 +04} - {985471200 18000 1 +05} - {1004220000 14400 0 +04} - {1017525600 18000 1 +05} - {1035669600 14400 0 +04} - {1048975200 18000 1 +05} - {1067119200 14400 0 +04} - {1080424800 18000 1 +05} - {1099173600 14400 0 +04} - {1111874400 18000 1 +05} - {1130623200 14400 0 +04} - {1143324000 18000 1 +05} - {1162072800 14400 0 +04} - {1174773600 18000 1 +05} - {1193522400 14400 0 +04} - {1206828000 18000 1 +05} - {1224972000 14400 0 +04} - {1238277600 18000 1 +05} - {1256421600 14400 0 +04} - {1269727200 10800 0 +04} - {1269730800 14400 1 +04} - {1288479600 10800 0 +03} - {1301180400 14400 0 +04} + {-1593825620 10800 0 SAMT} + {-1247540400 14400 0 SAMT} + {-1102305600 14400 0 KUYMMTT} + {354916800 18000 1 KUYST} + {370724400 14400 0 KUYT} + {386452800 18000 1 KUYST} + {402260400 14400 0 KUYT} + {417988800 18000 1 KUYST} + {433796400 14400 0 KUYT} + {449611200 18000 1 KUYST} + {465343200 14400 0 KUYT} + {481068000 18000 1 KUYST} + {496792800 14400 0 KUYT} + {512517600 18000 1 KUYST} + {528242400 14400 0 KUYT} + {543967200 18000 1 KUYST} + {559692000 14400 0 KUYT} + {575416800 18000 1 KUYST} + {591141600 14400 0 KUYT} + {606866400 10800 0 MSD} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {638319600 14400 1 MSD} + {654649200 10800 0 MSK} + {670374000 7200 0 EEMMTT} + {670377600 10800 1 EEST} + {686102400 10800 0 KUYT} + {687916800 14400 0 SAMT} + {701809200 18000 1 SAMST} + {717530400 14400 0 SAMT} + {733269600 18000 1 SAMST} + {748994400 14400 0 SAMT} + {764719200 18000 1 SAMST} + {780444000 14400 0 SAMT} + {796168800 18000 1 SAMST} + {811893600 14400 0 SAMT} + {828223200 18000 1 SAMST} + {846367200 14400 0 SAMT} + {859672800 18000 1 SAMST} + {877816800 14400 0 SAMT} + {891122400 18000 1 SAMST} + {909266400 14400 0 SAMT} + {922572000 18000 1 SAMST} + {941320800 14400 0 SAMT} + {954021600 18000 1 SAMST} + {972770400 14400 0 SAMT} + {985471200 18000 1 SAMST} + {1004220000 14400 0 SAMT} + {1017525600 18000 1 SAMST} + {1035669600 14400 0 SAMT} + {1048975200 18000 1 SAMST} + {1067119200 14400 0 SAMT} + {1080424800 18000 1 SAMST} + {1099173600 14400 0 SAMT} + {1111874400 18000 1 SAMST} + {1130623200 14400 0 SAMT} + {1143324000 18000 1 SAMST} + {1162072800 14400 0 SAMT} + {1174773600 18000 1 SAMST} + {1193522400 14400 0 SAMT} + {1206828000 18000 1 SAMST} + {1224972000 14400 0 SAMT} + {1238277600 18000 1 SAMST} + {1256421600 14400 0 SAMT} + {1269727200 10800 0 SAMMMTT} + {1269730800 14400 1 SAMST} + {1288479600 10800 0 SAMT} + {1301180400 14400 0 SAMT} } diff --git a/library/tzdata/Europe/Saratov b/library/tzdata/Europe/Saratov deleted file mode 100644 index d89a217..0000000 --- a/library/tzdata/Europe/Saratov +++ /dev/null @@ -1,71 +0,0 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Saratov) { - {-9223372036854775808 11058 0 LMT} - {-1593820800 10800 0 +03} - {-1247540400 14400 0 +05} - {354916800 18000 1 +05} - {370724400 14400 0 +04} - {386452800 18000 1 +05} - {402260400 14400 0 +04} - {417988800 18000 1 +05} - {433796400 14400 0 +04} - {449611200 18000 1 +05} - {465343200 14400 0 +04} - {481068000 18000 1 +05} - {496792800 14400 0 +04} - {512517600 18000 1 +05} - {528242400 14400 0 +04} - {543967200 18000 1 +05} - {559692000 14400 0 +04} - {575416800 10800 0 +04} - {575420400 14400 1 +04} - {591145200 10800 0 +03} - {606870000 14400 1 +04} - {622594800 10800 0 +03} - {638319600 14400 1 +04} - {654649200 10800 0 +03} - {670374000 14400 0 +04} - {701820000 10800 0 +04} - {701823600 14400 1 +04} - {717548400 10800 0 +03} - {733273200 14400 1 +04} - {748998000 10800 0 +03} - {764722800 14400 1 +04} - {780447600 10800 0 +03} - {796172400 14400 1 +04} - {811897200 10800 0 +03} - {828226800 14400 1 +04} - {846370800 10800 0 +03} - {859676400 14400 1 +04} - {877820400 10800 0 +03} - {891126000 14400 1 +04} - {909270000 10800 0 +03} - {922575600 14400 1 +04} - {941324400 10800 0 +03} - {954025200 14400 1 +04} - {972774000 10800 0 +03} - {985474800 14400 1 +04} - {1004223600 10800 0 +03} - {1017529200 14400 1 +04} - {1035673200 10800 0 +03} - {1048978800 14400 1 +04} - {1067122800 10800 0 +03} - {1080428400 14400 1 +04} - {1099177200 10800 0 +03} - {1111878000 14400 1 +04} - {1130626800 10800 0 +03} - {1143327600 14400 1 +04} - {1162076400 10800 0 +03} - {1174777200 14400 1 +04} - {1193526000 10800 0 +03} - {1206831600 14400 1 +04} - {1224975600 10800 0 +03} - {1238281200 14400 1 +04} - {1256425200 10800 0 +03} - {1269730800 14400 1 +04} - {1288479600 10800 0 +03} - {1301180400 14400 0 +04} - {1414274400 10800 0 +03} - {1480806000 14400 0 +04} -} diff --git a/library/tzdata/Europe/Ulyanovsk b/library/tzdata/Europe/Ulyanovsk deleted file mode 100644 index 8fb3f9e..0000000 --- a/library/tzdata/Europe/Ulyanovsk +++ /dev/null @@ -1,73 +0,0 @@ -# created by tools/tclZIC.tcl - do not edit - -set TZData(:Europe/Ulyanovsk) { - {-9223372036854775808 11616 0 LMT} - {-1593820800 10800 0 +03} - {-1247540400 14400 0 +05} - {354916800 18000 1 +05} - {370724400 14400 0 +04} - {386452800 18000 1 +05} - {402260400 14400 0 +04} - {417988800 18000 1 +05} - {433796400 14400 0 +04} - {449611200 18000 1 +05} - {465343200 14400 0 +04} - {481068000 18000 1 +05} - {496792800 14400 0 +04} - {512517600 18000 1 +05} - {528242400 14400 0 +04} - {543967200 18000 1 +05} - {559692000 14400 0 +04} - {575416800 18000 1 +05} - {591141600 14400 0 +04} - {606866400 10800 0 +04} - {606870000 14400 1 +04} - {622594800 10800 0 +03} - {638319600 14400 1 +04} - {654649200 10800 0 +03} - {670374000 7200 0 +03} - {670377600 10800 1 +03} - {686102400 7200 0 +02} - {695779200 10800 0 +04} - {701823600 14400 1 +04} - {717548400 10800 0 +03} - {733273200 14400 1 +04} - {748998000 10800 0 +03} - {764722800 14400 1 +04} - {780447600 10800 0 +03} - {796172400 14400 1 +04} - {811897200 10800 0 +03} - {828226800 14400 1 +04} - {846370800 10800 0 +03} - {859676400 14400 1 +04} - {877820400 10800 0 +03} - {891126000 14400 1 +04} - {909270000 10800 0 +03} - {922575600 14400 1 +04} - {941324400 10800 0 +03} - {954025200 14400 1 +04} - {972774000 10800 0 +03} - {985474800 14400 1 +04} - {1004223600 10800 0 +03} - {1017529200 14400 1 +04} - {1035673200 10800 0 +03} - {1048978800 14400 1 +04} - {1067122800 10800 0 +03} - {1080428400 14400 1 +04} - {1099177200 10800 0 +03} - {1111878000 14400 1 +04} - {1130626800 10800 0 +03} - {1143327600 14400 1 +04} - {1162076400 10800 0 +03} - {1174777200 14400 1 +04} - {1193526000 10800 0 +03} - {1206831600 14400 1 +04} - {1224975600 10800 0 +03} - {1238281200 14400 1 +04} - {1256425200 10800 0 +03} - {1269730800 14400 1 +04} - {1288479600 10800 0 +03} - {1301180400 14400 0 +04} - {1414274400 10800 0 +03} - {1459033200 14400 0 +04} -} diff --git a/library/tzdata/Europe/Vilnius b/library/tzdata/Europe/Vilnius index 5e73150..62d5d87 100644 --- a/library/tzdata/Europe/Vilnius +++ b/library/tzdata/Europe/Vilnius @@ -30,12 +30,11 @@ set TZData(:Europe/Vilnius) { {559695600 10800 0 MSK} {575420400 14400 1 MSD} {591145200 10800 0 MSK} - {606870000 7200 0 EEMMTT} - {606873600 10800 1 EEST} - {622598400 7200 0 EET} - {638323200 10800 1 EEST} - {654652800 7200 0 EET} - {670377600 10800 1 EEST} + {606870000 14400 1 MSD} + {622594800 10800 0 MSK} + {638319600 14400 1 MSD} + {654649200 10800 0 MSK} + {670374000 10800 1 EEST} {686102400 7200 0 EET} {701827200 10800 1 EEST} {717552000 7200 0 EET} diff --git a/library/tzdata/Europe/Volgograd b/library/tzdata/Europe/Volgograd index 05e1044..d71fb0b 100644 --- a/library/tzdata/Europe/Volgograd +++ b/library/tzdata/Europe/Volgograd @@ -2,70 +2,70 @@ set TZData(:Europe/Volgograd) { {-9223372036854775808 10660 0 LMT} - {-1577761060 10800 0 +03} - {-1247540400 14400 0 +04} - {-256881600 14400 0 +05} - {354916800 18000 1 +05} - {370724400 14400 0 +04} - {386452800 18000 1 +05} - {402260400 14400 0 +04} - {417988800 18000 1 +05} - {433796400 14400 0 +04} - {449611200 18000 1 +05} - {465343200 14400 0 +04} - {481068000 18000 1 +05} - {496792800 14400 0 +04} - {512517600 18000 1 +05} - {528242400 14400 0 +04} - {543967200 18000 1 +05} - {559692000 14400 0 +04} - {575416800 10800 0 +04} - {575420400 14400 1 +04} - {591145200 10800 0 +03} - {606870000 14400 1 +04} - {622594800 10800 0 +03} - {638319600 14400 1 +04} - {654649200 10800 0 +03} - {670374000 14400 0 +04} - {701820000 10800 0 +04} - {701823600 14400 1 +04} - {717548400 10800 0 +03} - {733273200 14400 1 +04} - {748998000 10800 0 +03} - {764722800 14400 1 +04} - {780447600 10800 0 +03} - {796172400 14400 1 +04} - {811897200 10800 0 +03} - {828226800 14400 1 +04} - {846370800 10800 0 +03} - {859676400 14400 1 +04} - {877820400 10800 0 +03} - {891126000 14400 1 +04} - {909270000 10800 0 +03} - {922575600 14400 1 +04} - {941324400 10800 0 +03} - {954025200 14400 1 +04} - {972774000 10800 0 +03} - {985474800 14400 1 +04} - {1004223600 10800 0 +03} - {1017529200 14400 1 +04} - {1035673200 10800 0 +03} - {1048978800 14400 1 +04} - {1067122800 10800 0 +03} - {1080428400 14400 1 +04} - {1099177200 10800 0 +03} - {1111878000 14400 1 +04} - {1130626800 10800 0 +03} - {1143327600 14400 1 +04} - {1162076400 10800 0 +03} - {1174777200 14400 1 +04} - {1193526000 10800 0 +03} - {1206831600 14400 1 +04} - {1224975600 10800 0 +03} - {1238281200 14400 1 +04} - {1256425200 10800 0 +03} - {1269730800 14400 1 +04} - {1288479600 10800 0 +03} - {1301180400 14400 0 +04} - {1414274400 10800 0 +03} + {-1577761060 10800 0 TSAT} + {-1411873200 10800 0 STAT} + {-1247540400 14400 0 STAT} + {-256881600 14400 0 VOLMMTT} + {354916800 18000 1 VOLST} + {370724400 14400 0 VOLT} + {386452800 18000 1 VOLST} + {402260400 14400 0 VOLT} + {417988800 18000 1 VOLST} + {433796400 14400 0 VOLT} + {449611200 18000 1 VOLST} + {465343200 14400 0 VOLT} + {481068000 18000 1 VOLST} + {496792800 14400 0 VOLT} + {512517600 18000 1 VOLST} + {528242400 14400 0 VOLT} + {543967200 18000 1 VOLST} + {559692000 14400 0 VOLT} + {575416800 18000 1 VOLST} + {591141600 14400 0 VOLT} + {606866400 10800 0 VOLMMTT} + {606870000 14400 1 VOLST} + {622594800 10800 0 VOLT} + {638319600 14400 1 VOLST} + {654649200 10800 0 VOLT} + {670374000 14400 0 VOLT} + {701820000 14400 0 MSD} + {717534000 10800 0 MSK} + {733273200 14400 1 MSD} + {748998000 10800 0 MSK} + {764722800 14400 1 MSD} + {780447600 10800 0 MSK} + {796172400 14400 1 MSD} + {811897200 10800 0 MSK} + {828226800 14400 1 MSD} + {846370800 10800 0 MSK} + {859676400 14400 1 MSD} + {877820400 10800 0 MSK} + {891126000 14400 1 MSD} + {909270000 10800 0 MSK} + {922575600 14400 1 MSD} + {941324400 10800 0 MSK} + {954025200 14400 1 MSD} + {972774000 10800 0 MSK} + {985474800 14400 1 MSD} + {1004223600 10800 0 MSK} + {1017529200 14400 1 MSD} + {1035673200 10800 0 MSK} + {1048978800 14400 1 MSD} + {1067122800 10800 0 MSK} + {1080428400 14400 1 MSD} + {1099177200 10800 0 MSK} + {1111878000 14400 1 MSD} + {1130626800 10800 0 MSK} + {1143327600 14400 1 MSD} + {1162076400 10800 0 MSK} + {1174777200 14400 1 MSD} + {1193526000 10800 0 MSK} + {1206831600 14400 1 MSD} + {1224975600 10800 0 MSK} + {1238281200 14400 1 MSD} + {1256425200 10800 0 MSK} + {1269730800 14400 1 MSD} + {1288479600 10800 0 MSK} + {1301180400 14400 0 MSK} + {1414274400 10800 0 MSK} } diff --git a/library/tzdata/Indian/Kerguelen b/library/tzdata/Indian/Kerguelen index 93f2d94..b41b85a 100644 --- a/library/tzdata/Indian/Kerguelen +++ b/library/tzdata/Indian/Kerguelen @@ -1,6 +1,6 @@ # created by tools/tclZIC.tcl - do not edit set TZData(:Indian/Kerguelen) { - {-9223372036854775808 0 0 -00} - {-631152000 18000 0 +05} + {-9223372036854775808 0 0 zzz} + {-631152000 18000 0 TFT} } diff --git a/library/tzdata/Pacific/Easter b/library/tzdata/Pacific/Easter index ef0f2d5..4b45ba2 100644 --- a/library/tzdata/Pacific/Easter +++ b/library/tzdata/Pacific/Easter @@ -97,172 +97,5 @@ set TZData(:Pacific/Easter) { {1378612800 -18000 1 EASST} {1398567600 -21600 0 EAST} {1410062400 -18000 1 EASST} - {1463281200 -21600 0 EAST} - {1471147200 -18000 1 EASST} - {1494730800 -21600 0 EAST} - {1502596800 -18000 1 EASST} - {1526180400 -21600 0 EAST} - {1534046400 -18000 1 EASST} - {1557630000 -21600 0 EAST} - {1565496000 -18000 1 EASST} - {1589079600 -21600 0 EAST} - {1596945600 -18000 1 EASST} - {1620529200 -21600 0 EAST} - {1629000000 -18000 1 EASST} - {1652583600 -21600 0 EAST} - {1660449600 -18000 1 EASST} - {1684033200 -21600 0 EAST} - {1691899200 -18000 1 EASST} - {1715482800 -21600 0 EAST} - {1723348800 -18000 1 EASST} - {1746932400 -21600 0 EAST} - {1754798400 -18000 1 EASST} - {1778382000 -21600 0 EAST} - {1786248000 -18000 1 EASST} - {1809831600 -21600 0 EAST} - {1818302400 -18000 1 EASST} - {1841886000 -21600 0 EAST} - {1849752000 -18000 1 EASST} - {1873335600 -21600 0 EAST} - {1881201600 -18000 1 EASST} - {1904785200 -21600 0 EAST} - {1912651200 -18000 1 EASST} - {1936234800 -21600 0 EAST} - {1944100800 -18000 1 EASST} - {1967684400 -21600 0 EAST} - {1976155200 -18000 1 EASST} - {1999738800 -21600 0 EAST} - {2007604800 -18000 1 EASST} - {2031188400 -21600 0 EAST} - {2039054400 -18000 1 EASST} - {2062638000 -21600 0 EAST} - {2070504000 -18000 1 EASST} - {2094087600 -21600 0 EAST} - {2101953600 -18000 1 EASST} - {2125537200 -21600 0 EAST} - {2133403200 -18000 1 EASST} - {2156986800 -21600 0 EAST} - {2165457600 -18000 1 EASST} - {2189041200 -21600 0 EAST} - {2196907200 -18000 1 EASST} - {2220490800 -21600 0 EAST} - {2228356800 -18000 1 EASST} - {2251940400 -21600 0 EAST} - {2259806400 -18000 1 EASST} - {2283390000 -21600 0 EAST} - {2291256000 -18000 1 EASST} - {2314839600 -21600 0 EAST} - {2322705600 -18000 1 EASST} - {2346894000 -21600 0 EAST} - {2354760000 -18000 1 EASST} - {2378343600 -21600 0 EAST} - {2386209600 -18000 1 EASST} - {2409793200 -21600 0 EAST} - {2417659200 -18000 1 EASST} - {2441242800 -21600 0 EAST} - {2449108800 -18000 1 EASST} - {2472692400 -21600 0 EAST} - {2480558400 -18000 1 EASST} - {2504142000 -21600 0 EAST} - {2512612800 -18000 1 EASST} - {2536196400 -21600 0 EAST} - {2544062400 -18000 1 EASST} - {2567646000 -21600 0 EAST} - {2575512000 -18000 1 EASST} - {2599095600 -21600 0 EAST} - {2606961600 -18000 1 EASST} - {2630545200 -21600 0 EAST} - {2638411200 -18000 1 EASST} - {2661994800 -21600 0 EAST} - {2669860800 -18000 1 EASST} - {2693444400 -21600 0 EAST} - {2701915200 -18000 1 EASST} - {2725498800 -21600 0 EAST} - {2733364800 -18000 1 EASST} - {2756948400 -21600 0 EAST} - {2764814400 -18000 1 EASST} - {2788398000 -21600 0 EAST} - {2796264000 -18000 1 EASST} - {2819847600 -21600 0 EAST} - {2827713600 -18000 1 EASST} - {2851297200 -21600 0 EAST} - {2859768000 -18000 1 EASST} - {2883351600 -21600 0 EAST} - {2891217600 -18000 1 EASST} - {2914801200 -21600 0 EAST} - {2922667200 -18000 1 EASST} - {2946250800 -21600 0 EAST} - {2954116800 -18000 1 EASST} - {2977700400 -21600 0 EAST} - {2985566400 -18000 1 EASST} - {3009150000 -21600 0 EAST} - {3017016000 -18000 1 EASST} - {3040599600 -21600 0 EAST} - {3049070400 -18000 1 EASST} - {3072654000 -21600 0 EAST} - {3080520000 -18000 1 EASST} - {3104103600 -21600 0 EAST} - {3111969600 -18000 1 EASST} - {3135553200 -21600 0 EAST} - {3143419200 -18000 1 EASST} - {3167002800 -21600 0 EAST} - {3174868800 -18000 1 EASST} - {3198452400 -21600 0 EAST} - {3206318400 -18000 1 EASST} - {3230506800 -21600 0 EAST} - {3238372800 -18000 1 EASST} - {3261956400 -21600 0 EAST} - {3269822400 -18000 1 EASST} - {3293406000 -21600 0 EAST} - {3301272000 -18000 1 EASST} - {3324855600 -21600 0 EAST} - {3332721600 -18000 1 EASST} - {3356305200 -21600 0 EAST} - {3364171200 -18000 1 EASST} - {3387754800 -21600 0 EAST} - {3396225600 -18000 1 EASST} - {3419809200 -21600 0 EAST} - {3427675200 -18000 1 EASST} - {3451258800 -21600 0 EAST} - {3459124800 -18000 1 EASST} - {3482708400 -21600 0 EAST} - {3490574400 -18000 1 EASST} - {3514158000 -21600 0 EAST} - {3522024000 -18000 1 EASST} - {3545607600 -21600 0 EAST} - {3553473600 -18000 1 EASST} - {3577057200 -21600 0 EAST} - {3585528000 -18000 1 EASST} - {3609111600 -21600 0 EAST} - {3616977600 -18000 1 EASST} - {3640561200 -21600 0 EAST} - {3648427200 -18000 1 EASST} - {3672010800 -21600 0 EAST} - {3679876800 -18000 1 EASST} - {3703460400 -21600 0 EAST} - {3711326400 -18000 1 EASST} - {3734910000 -21600 0 EAST} - {3743380800 -18000 1 EASST} - {3766964400 -21600 0 EAST} - {3774830400 -18000 1 EASST} - {3798414000 -21600 0 EAST} - {3806280000 -18000 1 EASST} - {3829863600 -21600 0 EAST} - {3837729600 -18000 1 EASST} - {3861313200 -21600 0 EAST} - {3869179200 -18000 1 EASST} - {3892762800 -21600 0 EAST} - {3900628800 -18000 1 EASST} - {3924212400 -21600 0 EAST} - {3932683200 -18000 1 EASST} - {3956266800 -21600 0 EAST} - {3964132800 -18000 1 EASST} - {3987716400 -21600 0 EAST} - {3995582400 -18000 1 EASST} - {4019166000 -21600 0 EAST} - {4027032000 -18000 1 EASST} - {4050615600 -21600 0 EAST} - {4058481600 -18000 1 EASST} - {4082065200 -21600 0 EAST} - {4089931200 -18000 1 EASST} + {1430017200 -18000 0 EAST} } diff --git a/library/tzdata/Pacific/Tongatapu b/library/tzdata/Pacific/Tongatapu index 731b4f6..da9f857 100644 --- a/library/tzdata/Pacific/Tongatapu +++ b/library/tzdata/Pacific/Tongatapu @@ -2,180 +2,13 @@ set TZData(:Pacific/Tongatapu) { {-9223372036854775808 44360 0 LMT} - {-2177497160 44400 0 +1220} - {-915193200 46800 0 +13} - {915102000 46800 0 +13} - {939214800 50400 1 +14} - {953384400 46800 0 +13} - {973342800 50400 1 +14} - {980596800 46800 0 +13} - {1004792400 50400 1 +14} - {1012046400 46800 0 +13} - {1478350800 50400 1 +14} - {1484398800 46800 0 +13} - {1509800400 50400 1 +14} - {1516453200 46800 0 +13} - {1541250000 50400 1 +14} - {1547902800 46800 0 +13} - {1572699600 50400 1 +14} - {1579352400 46800 0 +13} - {1604149200 50400 1 +14} - {1610802000 46800 0 +13} - {1636203600 50400 1 +14} - {1642251600 46800 0 +13} - {1667653200 50400 1 +14} - {1673701200 46800 0 +13} - {1699102800 50400 1 +14} - {1705755600 46800 0 +13} - {1730552400 50400 1 +14} - {1737205200 46800 0 +13} - {1762002000 50400 1 +14} - {1768654800 46800 0 +13} - {1793451600 50400 1 +14} - {1800104400 46800 0 +13} - {1825506000 50400 1 +14} - {1831554000 46800 0 +13} - {1856955600 50400 1 +14} - {1863608400 46800 0 +13} - {1888405200 50400 1 +14} - {1895058000 46800 0 +13} - {1919854800 50400 1 +14} - {1926507600 46800 0 +13} - {1951304400 50400 1 +14} - {1957957200 46800 0 +13} - {1983358800 50400 1 +14} - {1989406800 46800 0 +13} - {2014808400 50400 1 +14} - {2020856400 46800 0 +13} - {2046258000 50400 1 +14} - {2052910800 46800 0 +13} - {2077707600 50400 1 +14} - {2084360400 46800 0 +13} - {2109157200 50400 1 +14} - {2115810000 46800 0 +13} - {2140606800 50400 1 +14} - {2147259600 46800 0 +13} - {2172661200 50400 1 +14} - {2178709200 46800 0 +13} - {2204110800 50400 1 +14} - {2210158800 46800 0 +13} - {2235560400 50400 1 +14} - {2242213200 46800 0 +13} - {2267010000 50400 1 +14} - {2273662800 46800 0 +13} - {2298459600 50400 1 +14} - {2305112400 46800 0 +13} - {2329909200 50400 1 +14} - {2336562000 46800 0 +13} - {2361963600 50400 1 +14} - {2368011600 46800 0 +13} - {2393413200 50400 1 +14} - {2400066000 46800 0 +13} - {2424862800 50400 1 +14} - {2431515600 46800 0 +13} - {2456312400 50400 1 +14} - {2462965200 46800 0 +13} - {2487762000 50400 1 +14} - {2494414800 46800 0 +13} - {2519816400 50400 1 +14} - {2525864400 46800 0 +13} - {2551266000 50400 1 +14} - {2557314000 46800 0 +13} - {2582715600 50400 1 +14} - {2589368400 46800 0 +13} - {2614165200 50400 1 +14} - {2620818000 46800 0 +13} - {2645614800 50400 1 +14} - {2652267600 46800 0 +13} - {2677064400 50400 1 +14} - {2683717200 46800 0 +13} - {2709118800 50400 1 +14} - {2715166800 46800 0 +13} - {2740568400 50400 1 +14} - {2747221200 46800 0 +13} - {2772018000 50400 1 +14} - {2778670800 46800 0 +13} - {2803467600 50400 1 +14} - {2810120400 46800 0 +13} - {2834917200 50400 1 +14} - {2841570000 46800 0 +13} - {2866971600 50400 1 +14} - {2873019600 46800 0 +13} - {2898421200 50400 1 +14} - {2904469200 46800 0 +13} - {2929870800 50400 1 +14} - {2936523600 46800 0 +13} - {2961320400 50400 1 +14} - {2967973200 46800 0 +13} - {2992770000 50400 1 +14} - {2999422800 46800 0 +13} - {3024219600 50400 1 +14} - {3030872400 46800 0 +13} - {3056274000 50400 1 +14} - {3062322000 46800 0 +13} - {3087723600 50400 1 +14} - {3093771600 46800 0 +13} - {3119173200 50400 1 +14} - {3125826000 46800 0 +13} - {3150622800 50400 1 +14} - {3157275600 46800 0 +13} - {3182072400 50400 1 +14} - {3188725200 46800 0 +13} - {3213522000 50400 1 +14} - {3220174800 46800 0 +13} - {3245576400 50400 1 +14} - {3251624400 46800 0 +13} - {3277026000 50400 1 +14} - {3283678800 46800 0 +13} - {3308475600 50400 1 +14} - {3315128400 46800 0 +13} - {3339925200 50400 1 +14} - {3346578000 46800 0 +13} - {3371374800 50400 1 +14} - {3378027600 46800 0 +13} - {3403429200 50400 1 +14} - {3409477200 46800 0 +13} - {3434878800 50400 1 +14} - {3440926800 46800 0 +13} - {3466328400 50400 1 +14} - {3472981200 46800 0 +13} - {3497778000 50400 1 +14} - {3504430800 46800 0 +13} - {3529227600 50400 1 +14} - {3535880400 46800 0 +13} - {3560677200 50400 1 +14} - {3567330000 46800 0 +13} - {3592731600 50400 1 +14} - {3598779600 46800 0 +13} - {3624181200 50400 1 +14} - {3630834000 46800 0 +13} - {3655630800 50400 1 +14} - {3662283600 46800 0 +13} - {3687080400 50400 1 +14} - {3693733200 46800 0 +13} - {3718530000 50400 1 +14} - {3725182800 46800 0 +13} - {3750584400 50400 1 +14} - {3756632400 46800 0 +13} - {3782034000 50400 1 +14} - {3788082000 46800 0 +13} - {3813483600 50400 1 +14} - {3820136400 46800 0 +13} - {3844933200 50400 1 +14} - {3851586000 46800 0 +13} - {3876382800 50400 1 +14} - {3883035600 46800 0 +13} - {3907832400 50400 1 +14} - {3914485200 46800 0 +13} - {3939886800 50400 1 +14} - {3945934800 46800 0 +13} - {3971336400 50400 1 +14} - {3977384400 46800 0 +13} - {4002786000 50400 1 +14} - {4009438800 46800 0 +13} - {4034235600 50400 1 +14} - {4040888400 46800 0 +13} - {4065685200 50400 1 +14} - {4072338000 46800 0 +13} - {4097134800 50400 1 +14} + {-2177497160 44400 0 TOT} + {-915193200 46800 0 TOT} + {915102000 46800 0 TOT} + {939214800 50400 1 TOST} + {953384400 46800 0 TOT} + {973342800 50400 1 TOST} + {980596800 46800 0 TOT} + {1004792400 50400 1 TOST} + {1012046400 46800 0 TOT} } diff --git a/library/word.tcl b/library/word.tcl index 0246530..b8f34a5 100644 --- a/library/word.tcl +++ b/library/word.tcl @@ -11,13 +11,15 @@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # The following variables are used to determine which characters are -# interpreted as word characters. See bug [f1253530cdd8]. Will -# probably be removed in Tcl 9. - -if {![info exists ::tcl_wordchars]} { +# interpreted as white space. + +if {$::tcl_platform(platform) eq "windows"} { + # Windows style - any but a unicode space char + set ::tcl_wordchars {\S} + set ::tcl_nonwordchars {\s} +} else { + # Motif style - any unicode word char (number, letter, or underscore) set ::tcl_wordchars {\w} -} -if {![info exists ::tcl_nonwordchars]} { set ::tcl_nonwordchars {\W} } |
