summaryrefslogtreecommitdiffstats
path: root/library
diff options
context:
space:
mode:
Diffstat (limited to 'library')
-rw-r--r--library/auto.tcl381
-rw-r--r--library/clock.tcl1222
-rw-r--r--library/dde/pkgIndex.tcl10
-rw-r--r--[-rwxr-xr-x]library/encoding/tis-620.enc0
-rw-r--r--library/history.tcl304
-rw-r--r--library/http/http.tcl633
-rw-r--r--library/http/pkgIndex.tcl6
-rw-r--r--library/http1.0/http.tcl8
-rw-r--r--library/init.tcl169
-rw-r--r--library/msgcat/msgcat.tcl191
-rw-r--r--library/msgcat/pkgIndex.tcl2
-rw-r--r--[-rwxr-xr-x]library/msgs/af.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/af_za.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ar.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ar_in.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ar_jo.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ar_lb.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ar_sy.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/be.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/bg.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/bn.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/bn_in.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ca.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/cs.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/da.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/de.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/de_at.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/de_be.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/el.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/en_au.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/en_be.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/en_bw.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/en_ca.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/en_gb.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/en_hk.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/en_ie.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/en_in.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/en_nz.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/en_ph.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/en_sg.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/en_za.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/en_zw.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/eo.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_ar.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_bo.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_cl.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_co.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_cr.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_do.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_ec.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_gt.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_hn.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_mx.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_ni.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_pa.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_pe.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_pr.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_py.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_sv.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_uy.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/es_ve.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/et.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/eu.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/eu_es.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/fa.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/fa_in.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/fa_ir.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/fi.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/fo.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/fo_fo.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/fr.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/fr_be.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/fr_ca.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/fr_ch.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ga.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ga_ie.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/gl.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/gl_es.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/gv.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/gv_gb.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/he.msg4
-rw-r--r--[-rwxr-xr-x]library/msgs/hi.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/hi_in.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/hr.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/hu.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/id.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/id_id.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/is.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/it.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/it_ch.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ja.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/kl.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/kl_gl.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ko.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ko_kr.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/kok.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/kok_in.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/kw.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/kw_gb.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/lt.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/lv.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/mk.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/mr.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/mr_in.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ms.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ms_my.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/mt.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/nb.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/nl.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/nl_be.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/nn.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/pl.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/pt.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/pt_br.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ro.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ru.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ru_ua.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/sh.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/sk.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/sl.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/sq.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/sr.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/sv.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/sw.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ta.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/ta_in.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/te.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/te_in.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/th.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/tr.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/uk.msg2
-rw-r--r--[-rwxr-xr-x]library/msgs/vi.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/zh.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/zh_cn.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/zh_hk.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/zh_sg.msg0
-rw-r--r--[-rwxr-xr-x]library/msgs/zh_tw.msg0
-rw-r--r--library/opt/optparse.tcl476
-rw-r--r--library/opt/pkgIndex.tcl2
-rw-r--r--library/package.tcl338
-rw-r--r--library/parray.tcl4
-rw-r--r--library/platform/pkgIndex.tcl2
-rw-r--r--library/platform/platform.tcl177
-rw-r--r--library/platform/shell.tcl9
-rwxr-xr-xlibrary/reg/pkgIndex.tcl14
-rw-r--r--library/safe.tcl1794
-rw-r--r--library/tclIndex20
-rw-r--r--library/tcltest/pkgIndex.tcl2
-rw-r--r--library/tcltest/tcltest.tcl271
-rw-r--r--library/tm.tcl249
-rw-r--r--[-rwxr-xr-x]library/tzdata/Africa/Asmara0
-rw-r--r--library/tzdata/Africa/Cairo188
-rw-r--r--library/tzdata/Africa/Casablanca142
-rw-r--r--library/tzdata/Africa/Dar_es_Salaam4
-rw-r--r--library/tzdata/Africa/Gaborone3
-rw-r--r--library/tzdata/Africa/Juba5
-rw-r--r--library/tzdata/Africa/Kampala4
-rw-r--r--library/tzdata/Africa/Nairobi4
-rw-r--r--library/tzdata/Africa/Tripoli177
-rw-r--r--library/tzdata/Africa/Tunis182
-rw-r--r--library/tzdata/America/Anguilla7
-rw-r--r--library/tzdata/America/Araguaina3
-rw-r--r--library/tzdata/America/Argentina/Buenos_Aires181
-rw-r--r--library/tzdata/America/Argentina/Cordoba181
-rw-r--r--library/tzdata/America/Argentina/San_Luis6
-rw-r--r--library/tzdata/America/Argentina/Tucuman181
-rw-r--r--library/tzdata/America/Aruba8
-rw-r--r--library/tzdata/America/Asuncion360
-rw-r--r--[-rwxr-xr-x]library/tzdata/America/Atikokan2
-rw-r--r--library/tzdata/America/Bahia3
-rw-r--r--library/tzdata/America/Bahia_Banderas222
-rw-r--r--library/tzdata/America/Barbados6
-rw-r--r--[-rwxr-xr-x]library/tzdata/America/Blanc-Sablon2
-rw-r--r--library/tzdata/America/Bogota6
-rw-r--r--library/tzdata/America/Cayman4
-rw-r--r--library/tzdata/America/Costa_Rica6
-rw-r--r--library/tzdata/America/Creston8
-rw-r--r--library/tzdata/America/Curacao4
-rw-r--r--library/tzdata/America/Dawson_Creek2
-rw-r--r--library/tzdata/America/Dominica7
-rw-r--r--library/tzdata/America/Edmonton2
-rw-r--r--library/tzdata/America/Glace_Bay2
-rw-r--r--library/tzdata/America/Goose_Bay357
-rw-r--r--library/tzdata/America/Grand_Turk4
-rw-r--r--library/tzdata/America/Grenada7
-rw-r--r--library/tzdata/America/Guadeloupe7
-rw-r--r--library/tzdata/America/Halifax2
-rw-r--r--library/tzdata/America/Havana360
-rw-r--r--[-rwxr-xr-x]library/tzdata/America/Indiana/Petersburg0
-rw-r--r--[-rwxr-xr-x]library/tzdata/America/Indiana/Tell_City0
-rw-r--r--[-rwxr-xr-x]library/tzdata/America/Indiana/Vincennes0
-rw-r--r--[-rwxr-xr-x]library/tzdata/America/Indiana/Winamac0
-rw-r--r--library/tzdata/America/Jamaica6
-rw-r--r--library/tzdata/America/Juneau5
-rw-r--r--library/tzdata/America/Kralendijk5
-rw-r--r--library/tzdata/America/Lower_Princes5
-rw-r--r--library/tzdata/America/Marigot6
-rw-r--r--library/tzdata/America/Matamoros219
-rw-r--r--library/tzdata/America/Metlakatla43
-rw-r--r--[-rwxr-xr-x]library/tzdata/America/Moncton2
-rw-r--r--library/tzdata/America/Montreal2
-rw-r--r--library/tzdata/America/Montserrat7
-rw-r--r--library/tzdata/America/Nassau4
-rw-r--r--library/tzdata/America/Nipigon2
-rw-r--r--library/tzdata/America/North_Dakota/Beulah279
-rw-r--r--[-rwxr-xr-x]library/tzdata/America/North_Dakota/New_Salem0
-rw-r--r--library/tzdata/America/Ojinaga222
-rw-r--r--library/tzdata/America/Port-au-Prince176
-rw-r--r--library/tzdata/America/Rainy_River2
-rw-r--r--library/tzdata/America/Regina2
-rw-r--r--[-rwxr-xr-x]library/tzdata/America/Resolute186
-rw-r--r--library/tzdata/America/Santa_Isabel284
-rw-r--r--library/tzdata/America/Santiago358
-rw-r--r--library/tzdata/America/Sitka275
-rw-r--r--library/tzdata/America/St_Barthelemy6
-rw-r--r--library/tzdata/America/St_Johns357
-rw-r--r--library/tzdata/America/St_Kitts7
-rw-r--r--library/tzdata/America/St_Lucia8
-rw-r--r--library/tzdata/America/St_Thomas7
-rw-r--r--library/tzdata/America/St_Vincent8
-rw-r--r--library/tzdata/America/Swift_Current2
-rw-r--r--library/tzdata/America/Tijuana361
-rw-r--r--library/tzdata/America/Toronto2
-rw-r--r--library/tzdata/America/Tortola7
-rw-r--r--library/tzdata/America/Vancouver2
-rw-r--r--library/tzdata/America/Virgin6
-rw-r--r--library/tzdata/America/Winnipeg2
-rw-r--r--library/tzdata/Antarctica/Casey4
-rw-r--r--library/tzdata/Antarctica/Davis4
-rw-r--r--library/tzdata/Antarctica/Macquarie97
-rw-r--r--library/tzdata/Antarctica/Mawson1
-rw-r--r--library/tzdata/Antarctica/McMurdo258
-rw-r--r--library/tzdata/Antarctica/Palmer360
-rw-r--r--library/tzdata/Antarctica/South_Pole6
-rw-r--r--library/tzdata/Asia/Aden4
-rw-r--r--library/tzdata/Asia/Amman206
-rw-r--r--library/tzdata/Asia/Anadyr184
-rw-r--r--library/tzdata/Asia/Damascus360
-rw-r--r--library/tzdata/Asia/Dhaka3
-rw-r--r--library/tzdata/Asia/Dili2
-rw-r--r--library/tzdata/Asia/Gaza347
-rw-r--r--library/tzdata/Asia/Hebron277
-rw-r--r--library/tzdata/Asia/Hong_Kong17
-rw-r--r--library/tzdata/Asia/Irkutsk179
-rw-r--r--library/tzdata/Asia/Jakarta12
-rw-r--r--library/tzdata/Asia/Jayapura4
-rw-r--r--library/tzdata/Asia/Jerusalem198
-rw-r--r--library/tzdata/Asia/Kamchatka184
-rw-r--r--library/tzdata/Asia/Karachi2
-rw-r--r--library/tzdata/Asia/Kathmandu7
-rw-r--r--library/tzdata/Asia/Katmandu8
-rw-r--r--library/tzdata/Asia/Khandyga72
-rw-r--r--library/tzdata/Asia/Krasnoyarsk179
-rw-r--r--library/tzdata/Asia/Magadan179
-rw-r--r--library/tzdata/Asia/Makassar4
-rw-r--r--library/tzdata/Asia/Muscat4
-rw-r--r--library/tzdata/Asia/Novokuznetsk71
-rw-r--r--library/tzdata/Asia/Novosibirsk179
-rw-r--r--library/tzdata/Asia/Omsk179
-rw-r--r--library/tzdata/Asia/Pontianak12
-rw-r--r--library/tzdata/Asia/Rangoon4
-rw-r--r--library/tzdata/Asia/Sakhalin179
-rw-r--r--library/tzdata/Asia/Shanghai4
-rw-r--r--library/tzdata/Asia/Taipei4
-rw-r--r--library/tzdata/Asia/Ust-Nera70
-rw-r--r--library/tzdata/Asia/Vladivostok179
-rw-r--r--library/tzdata/Asia/Yakutsk179
-rw-r--r--library/tzdata/Asia/Yekaterinburg179
-rw-r--r--library/tzdata/Asia/Yerevan177
-rw-r--r--library/tzdata/Atlantic/Bermuda4
-rw-r--r--[-rwxr-xr-x]library/tzdata/Atlantic/Faroe0
-rw-r--r--library/tzdata/Atlantic/Stanley180
-rw-r--r--[-rwxr-xr-x]library/tzdata/Australia/Eucla0
-rw-r--r--library/tzdata/Europe/Busingen5
-rw-r--r--[-rwxr-xr-x]library/tzdata/Europe/Guernsey0
-rw-r--r--library/tzdata/Europe/Helsinki10
-rw-r--r--[-rwxr-xr-x]library/tzdata/Europe/Isle_of_Man0
-rw-r--r--library/tzdata/Europe/Istanbul3
-rw-r--r--[-rwxr-xr-x]library/tzdata/Europe/Jersey0
-rw-r--r--library/tzdata/Europe/Kaliningrad179
-rw-r--r--library/tzdata/Europe/Minsk179
-rw-r--r--library/tzdata/Europe/Moscow179
-rw-r--r--[-rwxr-xr-x]library/tzdata/Europe/Podgorica0
-rw-r--r--library/tzdata/Europe/Samara184
-rw-r--r--library/tzdata/Europe/Vaduz246
-rw-r--r--library/tzdata/Europe/Vienna4
-rw-r--r--[-rwxr-xr-x]library/tzdata/Europe/Volgograd179
-rw-r--r--library/tzdata/Europe/Zurich14
-rw-r--r--library/tzdata/Indian/Mauritius183
-rw-r--r--library/tzdata/Pacific/Apia180
-rw-r--r--library/tzdata/Pacific/Chuuk6
-rw-r--r--library/tzdata/Pacific/Easter358
-rw-r--r--library/tzdata/Pacific/Fakaofo3
-rw-r--r--library/tzdata/Pacific/Fiji185
-rw-r--r--library/tzdata/Pacific/Honolulu7
-rw-r--r--library/tzdata/Pacific/Johnston6
-rw-r--r--library/tzdata/Pacific/Pohnpei6
-rw-r--r--library/tzdata/Pacific/Ponape7
-rw-r--r--library/tzdata/Pacific/Truk7
-rw-r--r--library/tzdata/Pacific/Yap6
-rw-r--r--library/word.tcl16
302 files changed, 8695 insertions, 10023 deletions
diff --git a/library/auto.tcl b/library/auto.tcl
index 881e6b9..02edcc4 100644
--- a/library/auto.tcl
+++ b/library/auto.tcl
@@ -1,49 +1,48 @@
# auto.tcl --
#
-# utility procs formerly in init.tcl dealing with auto execution
-# of commands and can be auto loaded themselves.
-#
-# RCS: @(#) $Id: auto.tcl,v 1.28 2006/11/03 00:34:52 hobbs Exp $
+# utility procs formerly in init.tcl dealing with auto execution of commands
+# and can be auto loaded themselves.
#
# Copyright (c) 1991-1993 The Regents of the University of California.
# Copyright (c) 1994-1998 Sun Microsystems, Inc.
#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# auto_reset --
#
-# Destroy all cached information for auto-loading and auto-execution,
-# so that the information gets recomputed the next time it's needed.
-# Also delete any commands that are listed in the auto-load index.
+# Destroy all cached information for auto-loading and auto-execution, so that
+# the information gets recomputed the next time it's needed. Also delete any
+# commands that are listed in the auto-load index.
#
-# Arguments:
+# Arguments:
# None.
proc auto_reset {} {
- if {[array exists ::auto_index]} {
- foreach cmdName [array names ::auto_index] {
+ global auto_execs auto_index auto_path
+ if {[array exists auto_index]} {
+ foreach cmdName [array names auto_index] {
set fqcn [namespace which $cmdName]
- if {$fqcn eq ""} {continue}
+ if {$fqcn eq ""} {
+ continue
+ }
rename $fqcn {}
}
}
- unset -nocomplain ::auto_execs ::auto_index ::tcl::auto_oldpath
- if {[catch {llength $::auto_path}]} {
- set ::auto_path [list [info library]]
- } else {
- if {[info library] ni $::auto_path} {
- lappend ::auto_path [info library]
- }
+ unset -nocomplain auto_execs auto_index ::tcl::auto_oldpath
+ if {[catch {llength $auto_path}]} {
+ set auto_path [list [info library]]
+ } elseif {[info library] ni $auto_path} {
+ lappend auto_path [info library]
}
}
# tcl_findLibrary --
#
# This is a utility for extensions that searches for a library directory
-# using a canonical searching algorithm. A side effect is to source
-# the initialization script and set a global library variable.
+# using a canonical searching algorithm. A side effect is to source the
+# initialization script and set a global library variable.
#
# Arguments:
# basename Prefix of the directory name, (e.g., "tk")
@@ -55,7 +54,7 @@ proc auto_reset {} {
proc tcl_findLibrary {basename version patch initScript enVarName varName} {
upvar #0 $varName the_library
- global env
+ global auto_path env tcl_platform
set dirs {}
set errors {}
@@ -65,33 +64,30 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} {
if {[info exists the_library] && $the_library ne ""} {
lappend dirs $the_library
} else {
-
# Do the canonical search
- # 1. From an environment variable, if it exists.
- # Placing this first gives the end-user ultimate control
- # to work-around any bugs, or to customize.
+ # 1. From an environment variable, if it exists. Placing this first
+ # gives the end-user ultimate control to work-around any bugs, or
+ # to customize.
if {[info exists env($enVarName)]} {
lappend dirs $env($enVarName)
}
- # 2. In the package script directory registered within
- # the configuration of the package itself.
+ # 2. In the package script directory registered within the
+ # configuration of the package itself.
- if {[catch {
- ::${basename}::pkgconfig get scriptdir,runtime
- } value] == 0} {
- lappend dirs $value
+ catch {
+ lappend dirs [::${basename}::pkgconfig get scriptdir,runtime]
}
# 3. Relative to auto_path directories. This checks relative to the
# Tcl library as well as allowing loading of libraries added to the
# auto_path that is not relative to the core library or binary paths.
- foreach d $::auto_path {
+ foreach d $auto_path {
lappend dirs [file join $d $basename$version]
- if {$::tcl_platform(platform) eq "unix"
- && $::tcl_platform(os) eq "Darwin"} {
+ if {$tcl_platform(platform) eq "unix"
+ && $tcl_platform(os) eq "Darwin"} {
# 4. On MacOSX, check the Resources/Scripts subdir too
lappend dirs [file join $d $basename$version Resources Scripts]
}
@@ -102,8 +98,8 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} {
# ../../lib/foo1.0 (From bin/arch directory in install hierarchy)
# ../library (From unix directory in build hierarchy)
#
- # Remaining locations are out of date (when relevant, they ought
- # to be covered by the $::auto_path seach above) and disabled.
+ # Remaining locations are out of date (when relevant, they ought to be
+ # covered by the $::auto_path seach above) and disabled.
#
# ../../library (From unix/arch directory in build hierarchy)
# ../../foo1.0.1/library
@@ -126,17 +122,19 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} {
# uniquify $dirs in order
array set seen {}
foreach i $dirs {
- # Take note that the [file normalize] below has been noted to
- # cause difficulties for the freewrap utility. See Bug 1072136.
- # Until freewrap resolves the matter, one might work around the
- # problem by disabling that branch.
+ # Take note that the [file normalize] below has been noted to cause
+ # difficulties for the freewrap utility. See Bug 1072136. Until
+ # freewrap resolves the matter, one might work around the problem by
+ # disabling that branch.
if {[interp issafe]} {
set norm $i
} else {
set norm [file normalize $i]
}
- if {[info exists seen($norm)]} { continue }
- set seen($norm) ""
+ if {[info exists seen($norm)]} {
+ continue
+ }
+ set seen($norm) {}
lappend uniqdirs $i
}
set dirs $uniqdirs
@@ -144,16 +142,15 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} {
set the_library $i
set file [file join $i $initScript]
- # source everything when in a safe interpreter because
- # we have a source command, but no file exists command
+ # source everything when in a safe interpreter because we have a
+ # source command, but no file exists command
if {[interp issafe] || [file exists $file]} {
if {![catch {uplevel #0 [list source $file]} msg opts]} {
return
- } else {
- append errors "$file: $msg\n"
- append errors [dict get $opts -errorinfo]\n
}
+ append errors "$file: $msg\n"
+ append errors [dict get $opts -errorinfo]\n
}
}
unset -nocomplain the_library
@@ -168,28 +165,28 @@ proc tcl_findLibrary {basename version patch initScript enVarName varName} {
# ----------------------------------------------------------------------
# auto_mkindex
# ----------------------------------------------------------------------
-# The following procedures are used to generate the tclIndex file
-# from Tcl source files. They use a special safe interpreter to
-# parse Tcl source files, writing out index entries as "proc"
-# commands are encountered. This implementation won't work in a
-# safe interpreter, since a safe interpreter can't create the
-# special parser and mess with its commands.
+# The following procedures are used to generate the tclIndex file from Tcl
+# source files. They use a special safe interpreter to parse Tcl source
+# files, writing out index entries as "proc" commands are encountered. This
+# implementation won't work in a safe interpreter, since a safe interpreter
+# can't create the special parser and mess with its commands.
if {[interp issafe]} {
return ;# Stop sourcing the file here
}
# auto_mkindex --
-# Regenerate a tclIndex file from Tcl source files. Takes as argument
-# the name of the directory in which the tclIndex file is to be placed,
-# followed by any number of glob patterns to use in that directory to
-# locate all of the relevant files.
+# Regenerate a tclIndex file from Tcl source files. Takes as argument the
+# name of the directory in which the tclIndex file is to be placed, followed
+# by any number of glob patterns to use in that directory to locate all of the
+# relevant files.
#
-# Arguments:
+# Arguments:
# dir - Name of the directory in which to create an index.
-# args - Any number of additional arguments giving the
-# names of files within dir. If no additional
-# are given auto_mkindex will look for *.tcl.
+
+# args - Any number of additional arguments giving the names of files
+# within dir. If no additional are given auto_mkindex will look
+# for *.tcl.
proc auto_mkindex {dir args} {
if {[interp issafe]} {
@@ -198,7 +195,6 @@ proc auto_mkindex {dir args} {
set oldDir [pwd]
cd $dir
- set dir [pwd]
append index "# Tcl autoload index file, version 2.0\n"
append index "# This file is generated by the \"auto_mkindex\" command\n"
@@ -207,18 +203,18 @@ proc auto_mkindex {dir args} {
append index "# sets an element in the auto_index array, where the\n"
append index "# element name is the name of a command and the value is\n"
append index "# a script that loads the command.\n\n"
- if {[llength $args] == 0} {
+ if {![llength $args]} {
set args *.tcl
}
auto_mkindex_parser::init
foreach file [glob -- {*}$args] {
- if {[catch {auto_mkindex_parser::mkindex $file} msg opts] == 0} {
- append index $msg
- } else {
- cd $oldDir
+ try {
+ append index [auto_mkindex_parser::mkindex $file]
+ } on error {msg opts} {
+ cd $oldDir
return -options $opts $msg
- }
+ }
}
auto_mkindex_parser::cleanup
@@ -228,8 +224,8 @@ proc auto_mkindex {dir args} {
cd $oldDir
}
-# Original version of auto_mkindex that just searches the source
-# code for "proc" at the beginning of the line.
+# Original version of auto_mkindex that just searches the source code for
+# "proc" at the beginning of the line.
proc auto_mkindex_old {dir args} {
set oldDir [pwd]
@@ -242,7 +238,7 @@ proc auto_mkindex_old {dir args} {
append index "# sets an element in the auto_index array, where the\n"
append index "# element name is the name of a command and the value is\n"
append index "# a script that loads the command.\n\n"
- if {[llength $args] == 0} {
+ if {![llength $args]} {
set args *.tcl
}
foreach file [glob -- {*}$args] {
@@ -280,9 +276,9 @@ proc auto_mkindex_old {dir args} {
}
# Create a safe interpreter that can be used to parse Tcl source files
-# generate a tclIndex file for autoloading. This interp contains
-# commands for things that need index entries. Each time a command
-# is executed, it writes an entry out to the index file.
+# generate a tclIndex file for autoloading. This interp contains commands for
+# things that need index entries. Each time a command is executed, it writes
+# an entry out to the index file.
namespace eval auto_mkindex_parser {
variable parser "" ;# parser used to build index
@@ -307,7 +303,14 @@ namespace eval auto_mkindex_parser {
$parser hide namespace
$parser hide eval
$parser hide puts
- $parser invokehidden namespace delete ::
+ foreach ns [$parser invokehidden namespace children ::] {
+ # MUST NOT DELETE "::tcl" OR BAD THINGS HAPPEN!
+ if {$ns eq "::tcl"} continue
+ $parser invokehidden namespace delete $ns
+ }
+ foreach cmd [$parser invokehidden info commands ::*] {
+ $parser invokehidden rename $cmd {}
+ }
$parser invokehidden proc unknown {args} {}
# We'll need access to the "namespace" command within the
@@ -334,12 +337,12 @@ namespace eval auto_mkindex_parser {
# auto_mkindex_parser::mkindex --
#
-# Used by the "auto_mkindex" command to create a "tclIndex" file for
-# the given Tcl source file. Executes the commands in the file, and
-# handles things like the "proc" command by adding an entry for the
-# index file. Returns a string that represents the index file.
+# Used by the "auto_mkindex" command to create a "tclIndex" file for the given
+# Tcl source file. Executes the commands in the file, and handles things like
+# the "proc" command by adding an entry for the index file. Returns a string
+# that represents the index file.
#
-# Arguments:
+# Arguments:
# file Name of Tcl source file to be indexed.
proc auto_mkindex_parser::mkindex {file} {
@@ -355,14 +358,13 @@ proc auto_mkindex_parser::mkindex {file} {
set contents [read $fid]
close $fid
- # There is one problem with sourcing files into the safe
- # interpreter: references like "$x" will fail since code is not
- # really being executed and variables do not really exist.
- # To avoid this, we replace all $ with \0 (literally, the null char)
- # later, when getting proc names we will have to reverse this replacement,
- # in case there were any $ in the proc name. This will cause a problem
- # if somebody actually tries to have a \0 in their proc name. Too bad
- # for them.
+ # There is one problem with sourcing files into the safe interpreter:
+ # references like "$x" will fail since code is not really being executed
+ # and variables do not really exist. To avoid this, we replace all $ with
+ # \0 (literally, the null char) later, when getting proc names we will
+ # have to reverse this replacement, in case there were any $ in the proc
+ # name. This will cause a problem if somebody actually tries to have a \0
+ # in their proc name. Too bad for them.
set contents [string map [list \$ \0] $contents]
set index ""
@@ -379,10 +381,10 @@ proc auto_mkindex_parser::mkindex {file} {
# auto_mkindex_parser::hook command
#
-# Registers a Tcl command to evaluate when initializing the
-# slave interpreter used by the mkindex parser.
-# The command is evaluated in the master interpreter, and can
-# use the variable auto_mkindex_parser::parser to get to the slave
+# Registers a Tcl command to evaluate when initializing the slave interpreter
+# used by the mkindex parser. The command is evaluated in the master
+# interpreter, and can use the variable auto_mkindex_parser::parser to get to
+# the slave
proc auto_mkindex_parser::hook {cmd} {
variable initCommands
@@ -392,30 +394,30 @@ proc auto_mkindex_parser::hook {cmd} {
# auto_mkindex_parser::slavehook command
#
-# Registers a Tcl command to evaluate when initializing the
-# slave interpreter used by the mkindex parser.
-# The command is evaluated in the slave interpreter.
+# Registers a Tcl command to evaluate when initializing the slave interpreter
+# used by the mkindex parser. The command is evaluated in the slave
+# interpreter.
proc auto_mkindex_parser::slavehook {cmd} {
variable initCommands
- # The $parser variable is defined to be the name of the
- # slave interpreter when this command is used later.
+ # The $parser variable is defined to be the name of the slave interpreter
+ # when this command is used later.
lappend initCommands "\$parser eval [list $cmd]"
}
# auto_mkindex_parser::command --
#
-# Registers a new command with the "auto_mkindex_parser" interpreter
-# that parses Tcl files. These commands are fake versions of things
-# like the "proc" command. When you execute them, they simply write
-# out an entry to a "tclIndex" file for auto-loading.
+# Registers a new command with the "auto_mkindex_parser" interpreter that
+# parses Tcl files. These commands are fake versions of things like the
+# "proc" command. When you execute them, they simply write out an entry to a
+# "tclIndex" file for auto-loading.
#
-# This procedure allows extensions to register their own commands
-# with the auto_mkindex facility. For example, a package like
-# [incr Tcl] might register a "class" command so that class definitions
-# could be added to a "tclIndex" file for auto-loading.
+# This procedure allows extensions to register their own commands with the
+# auto_mkindex facility. For example, a package like [incr Tcl] might
+# register a "class" command so that class definitions could be added to a
+# "tclIndex" file for auto-loading.
#
# Arguments:
# name Name of command recognized in Tcl files.
@@ -428,8 +430,8 @@ proc auto_mkindex_parser::command {name arglist body} {
# auto_mkindex_parser::commandInit --
#
-# This does the actual work set up by auto_mkindex_parser::command
-# This is called when the interpreter used by the parser is created.
+# This does the actual work set up by auto_mkindex_parser::command. This is
+# called when the interpreter used by the parser is created.
#
# Arguments:
# name Name of command recognized in Tcl files.
@@ -448,25 +450,23 @@ proc auto_mkindex_parser::commandInit {name arglist body} {
}
proc $fakeName $arglist $body
- # YUK! Tcl won't let us alias fully qualified command names,
- # so we can't handle names like "::itcl::class". Instead,
- # we have to build procs with the fully qualified names, and
- # have the procs point to the aliases.
+ # YUK! Tcl won't let us alias fully qualified command names, so we can't
+ # handle names like "::itcl::class". Instead, we have to build procs with
+ # the fully qualified names, and have the procs point to the aliases.
if {[string match *::* $name]} {
set exportCmd [list _%@namespace export [namespace tail $name]]
$parser eval [list _%@namespace eval $ns $exportCmd]
-
- # The following proc definition does not work if you
- # want to tolerate space or something else diabolical
- # in the procedure name, (i.e., space in $alias)
- # The following does not work:
+
+ # The following proc definition does not work if you want to tolerate
+ # space or something else diabolical in the procedure name, (i.e.,
+ # space in $alias). The following does not work:
# "_%@eval {$alias} \$args"
- # because $alias gets concat'ed to $args.
- # The following does not work because $cmd is somehow undefined
+ # because $alias gets concat'ed to $args. The following does not work
+ # because $cmd is somehow undefined
# "set cmd {$alias} \; _%@eval {\$cmd} \$args"
- # A gold star to someone that can make test
- # autoMkindex-3.3 work properly
+ # A gold star to someone that can make test autoMkindex-3.3 work
+ # properly
set alias [namespace tail $fakeName]
$parser invokehidden proc $name {args} "_%@eval {$alias} \$args"
@@ -478,15 +478,14 @@ proc auto_mkindex_parser::commandInit {name arglist body} {
}
# auto_mkindex_parser::fullname --
-# Used by commands like "proc" within the auto_mkindex parser.
-# Returns the qualified namespace name for the "name" argument.
-# If the "name" does not start with "::", elements are added from
-# the current namespace stack to produce a qualified name. Then,
-# the name is examined to see whether or not it should really be
-# qualified. If the name has more than the leading "::", it is
-# returned as a fully qualified name. Otherwise, it is returned
-# as a simple name. That way, the Tcl autoloader will recognize
-# it properly.
+#
+# Used by commands like "proc" within the auto_mkindex parser. Returns the
+# qualified namespace name for the "name" argument. If the "name" does not
+# start with "::", elements are added from the current namespace stack to
+# produce a qualified name. Then, the name is examined to see whether or not
+# it should really be qualified. If the name has more than the leading "::",
+# it is returned as a fully qualified name. Otherwise, it is returned as a
+# simple name. That way, the Tcl autoloader will recognize it properly.
#
# Arguments:
# name - Name that is being added to index.
@@ -509,44 +508,65 @@ proc auto_mkindex_parser::fullname {name} {
set name "::$name"
}
- # Earlier, mkindex replaced all $'s with \0. Now, we have to reverse
- # that replacement.
+ # Earlier, mkindex replaced all $'s with \0. Now, we have to reverse that
+ # replacement.
return [string map [list \0 \$] $name]
}
+# auto_mkindex_parser::indexEntry --
+#
+# Used by commands like "proc" within the auto_mkindex parser to add a
+# correctly-quoted entry to the index. This is shared code so it is done
+# *right*, in one place.
+#
+# Arguments:
+# name - Name that is being added to index.
+
+proc auto_mkindex_parser::indexEntry {name} {
+ variable index
+ variable scriptFile
+
+ # We convert all metacharacters to their backslashed form, and pre-split
+ # the file name that we know about (which will be a proper list, and so
+ # correctly quoted).
+
+ set name [string range [list \}[fullname $name]] 2 end]
+ set filenameParts [file split $scriptFile]
+
+ append index [format \
+ {set auto_index(%s) [list source [file join $dir %s]]%s} \
+ $name $filenameParts \n]
+ return
+}
+
if {[llength $::auto_mkindex_parser::initCommands]} {
return
}
-# Register all of the procedures for the auto_mkindex parser that
-# will build the "tclIndex" file.
+# Register all of the procedures for the auto_mkindex parser that will build
+# the "tclIndex" file.
# AUTO MKINDEX: proc name arglist body
# Adds an entry to the auto index list for the given procedure name.
auto_mkindex_parser::command proc {name args} {
- variable index
- variable scriptFile
- # Do some fancy reformatting on the "source" call to handle platform
- # differences with respect to pathnames. Use format just so that the
- # command is a little easier to read (otherwise it'd be full of
- # backslashed dollar signs, etc.
- append index [list set auto_index([fullname $name])] \
- [format { [list source [file join $dir %s]]} \
- [file split $scriptFile]] "\n"
+ indexEntry $name
}
-# Conditionally add support for Tcl byte code files. There are some
-# tricky details here. First, we need to get the tbcload library
-# initialized in the current interpreter. We cannot load tbcload into the
-# slave until we have done so because it needs access to the tcl_patchLevel
-# variable. Second, because the package index file may defer loading the
-# library until we invoke a command, we need to explicitly invoke auto_load
-# to force it to be loaded. This should be a noop if the package has
-# already been loaded
+# Conditionally add support for Tcl byte code files. There are some tricky
+# details here. First, we need to get the tbcload library initialized in the
+# current interpreter. We cannot load tbcload into the slave until we have
+# done so because it needs access to the tcl_patchLevel variable. Second,
+# because the package index file may defer loading the library until we invoke
+# a command, we need to explicitly invoke auto_load to force it to be loaded.
+# This should be a noop if the package has already been loaded
auto_mkindex_parser::hook {
- if {![catch {package require tbcload}]} {
+ try {
+ package require tbcload
+ } on error {} {
+ # OK, don't have it so do nothing
+ } on ok {} {
if {[namespace which -command tbcload::bcproc] eq ""} {
auto_load tbcload::bcproc
}
@@ -554,32 +574,24 @@ auto_mkindex_parser::hook {
# AUTO MKINDEX: tbcload::bcproc name arglist body
# Adds an entry to the auto index list for the given pre-compiled
- # procedure name.
+ # procedure name.
auto_mkindex_parser::commandInit tbcload::bcproc {name args} {
- variable index
- variable scriptFile
- # Do some nice reformatting of the "source" call, to get around
- # path differences on different platforms. We use the format
- # command just so that the code is a little easier to read.
- append index [list set auto_index([fullname $name])] \
- [format { [list source [file join $dir %s]]} \
- [file split $scriptFile]] "\n"
+ indexEntry $name
}
}
}
# AUTO MKINDEX: namespace eval name command ?arg arg...?
-# Adds the namespace name onto the context stack and evaluates the
-# associated body of commands.
+# Adds the namespace name onto the context stack and evaluates the associated
+# body of commands.
#
# AUTO MKINDEX: namespace import ?-force? pattern ?pattern...?
-# Performs the "import" action in the parser interpreter. This is
-# important for any commands contained in a namespace that affect
-# the index. For example, a script may say "itcl::class ...",
-# or it may import "itcl::*" and then say "class ...". This
-# procedure does the import operation, but keeps track of imported
-# patterns so we can remove the imports later.
+# Performs the "import" action in the parser interpreter. This is important
+# for any commands contained in a namespace that affect the index. For
+# example, a script may say "itcl::class ...", or it may import "itcl::*" and
+# then say "class ...". This procedure does the import operation, but keeps
+# track of imported patterns so we can remove the imports later.
auto_mkindex_parser::command namespace {op args} {
switch -- $op {
@@ -604,6 +616,35 @@ auto_mkindex_parser::command namespace {op args} {
}
catch {$parser eval "_%@namespace import $args"}
}
+ ensemble {
+ variable parser
+ variable contextStack
+ if {[lindex $args 0] eq "create"} {
+ set name ::[join [lreverse $contextStack] ::]
+ catch {
+ set name [dict get [lrange $args 1 end] -command]
+ if {![string match ::* $name]} {
+ set name ::[join [lreverse $contextStack] ::]$name
+ }
+ regsub -all ::+ $name :: name
+ }
+ # create artifical proc to force an entry in the tclIndex
+ $parser eval [list ::proc $name {} {}]
+ }
+ }
+ }
+}
+
+# AUTO MKINDEX: oo::class create name ?definition?
+# Adds an entry to the auto index list for the given class name.
+auto_mkindex_parser::command oo::class {op name {body ""}} {
+ if {$op eq "create"} {
+ indexEntry $name
+ }
+}
+auto_mkindex_parser::command class {op name {body ""}} {
+ if {$op eq "create"} {
+ indexEntry $name
}
}
diff --git a/library/clock.tcl b/library/clock.tcl
index 8a78c39..1e652b4 100644
--- a/library/clock.tcl
+++ b/library/clock.tcl
@@ -2,9 +2,9 @@
#
# clock.tcl --
#
-# This file implements the portions of the [clock] ensemble that
-# are coded in Tcl. Refer to the users' manual to see the description
-# of the [clock] command and its subcommands.
+# This file implements the portions of the [clock] ensemble that are
+# coded in Tcl. Refer to the users' manual to see the description of
+# the [clock] command and its subcommands.
#
#
#----------------------------------------------------------------------
@@ -13,12 +13,10 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: clock.tcl,v 1.47.2.5 2009/01/03 04:36:53 kennykb Exp $
-#
#----------------------------------------------------------------------
-# We must have message catalogs that support the root locale, and
-# we need access to the Registry on Windows systems.
+# We must have message catalogs that support the root locale, and we need
+# access to the Registry on Windows systems.
uplevel \#0 {
package require msgcat 1.4
@@ -29,9 +27,8 @@ uplevel \#0 {
}
}
-# Put the library directory into the namespace for the ensemble
-# so that the library code can find message catalogs and time zone
-# definition files.
+# Put the library directory into the namespace for the ensemble so that the
+# library code can find message catalogs and time zone definition files.
namespace eval ::tcl::clock \
[list variable LibDir [file dirname [info script]]]
@@ -42,10 +39,10 @@ namespace eval ::tcl::clock \
#
# Manipulate times.
#
-# The 'clock' command manipulates time. Refer to the user documentation
-# for the available subcommands and what they do.
+# The 'clock' command manipulates time. Refer to the user documentation for
+# the available subcommands and what they do.
#
-#----------------------------------------------------------------------
+#----------------------------------------------------------------------
namespace eval ::tcl::clock {
@@ -78,11 +75,11 @@ namespace eval ::tcl::clock {
# Side effects:
# Namespace variable in the 'clock' subsystem are initialized.
#
-# The '::tcl::clock::Initialize' procedure initializes the namespace
-# variables and root locale message catalog for the 'clock' subsystem.
-# It is broken into a procedure rather than simply evaluated as a script
-# so that it will be able to use local variables, avoiding the dangers
-# of 'creative writing' as in Bug 1185933.
+# The '::tcl::clock::Initialize' procedure initializes the namespace variables
+# and root locale message catalog for the 'clock' subsystem. It is broken
+# into a procedure rather than simply evaluated as a script so that it will be
+# able to use local variables, avoiding the dangers of 'creative writing' as
+# in Bug 1185933.
#
#----------------------------------------------------------------------
@@ -174,8 +171,8 @@ proc ::tcl::clock::Initialize {} {
::msgcat::mcset fr GREGORIAN_CHANGE_DATE 2299227
- # For Belgium, we follow Southern Netherlands; Liege Diocese
- # changed several weeks later.
+ # For Belgium, we follow Southern Netherlands; Liege Diocese changed
+ # several weeks later.
::msgcat::mcset fr_BE GREGORIAN_CHANGE_DATE 2299238
::msgcat::mcset nl_BE GREGORIAN_CHANGE_DATE 2299238
@@ -191,13 +188,13 @@ proc ::tcl::clock::Initialize {} {
# Germany, Norway, Denmark (Catholic Germany changed earlier)
::msgcat::mcset de_DE GREGORIAN_CHANGE_DATE 2342032
- ::msgcat::mcset nb GREGORIAN_CHANGE_DATE 2342032
+ ::msgcat::mcset nb GREGORIAN_CHANGE_DATE 2342032
::msgcat::mcset nn GREGORIAN_CHANGE_DATE 2342032
::msgcat::mcset no GREGORIAN_CHANGE_DATE 2342032
::msgcat::mcset da GREGORIAN_CHANGE_DATE 2342032
- # Holland (Brabant, Gelderland, Flanders, Friesland, etc. changed
- # at various times)
+ # Holland (Brabant, Gelderland, Flanders, Friesland, etc. changed at
+ # various times)
::msgcat::mcset nl GREGORIAN_CHANGE_DATE 2342165
@@ -219,23 +216,23 @@ proc ::tcl::clock::Initialize {} {
::msgcat::mcset ru GREGORIAN_CHANGE_DATE 2421639
- # Romania (Transylvania changed earler - perhaps de_RO should show
- # the earlier date?)
+ # Romania (Transylvania changed earler - perhaps de_RO should show the
+ # earlier date?)
::msgcat::mcset ro GREGORIAN_CHANGE_DATE 2422063
# Greece
::msgcat::mcset el GREGORIAN_CHANGE_DATE 2423480
-
+
#------------------------------------------------------------------
#
# CONSTANTS
#
#------------------------------------------------------------------
- # Paths at which binary time zone data for the Olson libraries
- # are known to reside on various operating systems
+ # Paths at which binary time zone data for the Olson libraries are known
+ # to reside on various operating systems
variable ZoneinfoPaths {}
foreach path {
@@ -284,10 +281,10 @@ proc ::tcl::clock::Initialize {} {
variable FEB_28 58
- # Translation table to map Windows TZI onto cities, so that
- # the Olson rules can apply. In some cases the mapping is ambiguous,
- # so it's wise to specify $::env(TCL_TZ) rather than simply depending
- # on the system time zone.
+ # Translation table to map Windows TZI onto cities, so that the Olson
+ # rules can apply. In some cases the mapping is ambiguous, so it's wise
+ # to specify $::env(TCL_TZ) rather than simply depending on the system
+ # time zone.
# The keys are long lists of values obtained from the time zone
# information in the Registry. In order, the list elements are:
@@ -298,10 +295,10 @@ proc ::tcl::clock::Initialize {} {
# DaylightDate.wYear DaylightDate.wMonth DaylightDate.wDayOfWeek
# DaylightDate.wDay DaylightDate.wHour DaylightDate.wMinute
# DaylightDate.wSecond DaylightDate.wMilliseconds
- # The values are the names of time zones where those rules apply.
- # There is considerable ambiguity in certain zones; an attempt has
- # been made to make a reasonable guess, but this table needs to be
- # taken with a grain of salt.
+ # The values are the names of time zones where those rules apply. There
+ # is considerable ambiguity in certain zones; an attempt has been made to
+ # make a reasonable guess, but this table needs to be taken with a grain
+ # of salt.
variable WinZoneInfo [dict create {*}{
{-43200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Kwajalein
@@ -327,7 +324,7 @@ proc ::tcl::clock::Initialize {} {
{-10800 0 3600 0 2 0 2 2 0 0 0 0 10 0 3 2 0 0 0} :America/Sao_Paulo
{-10800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Godthab
{-10800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Buenos_Aires
- {-10800 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Brasilia
+ {-10800 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Bahia
{-10800 0 3600 0 3 0 2 2 0 0 0 0 10 0 1 2 0 0 0} :America/Montevideo
{-7200 0 3600 0 9 0 5 2 0 0 0 0 3 0 5 2 0 0 0} :America/Noronha
{-3600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Atlantic/Azores
@@ -380,10 +377,10 @@ proc ::tcl::clock::Initialize {} {
{46800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Tongatapu
}]
- # Groups of fields that specify the date, priorities, and
- # code bursts that determine Julian Day Number given those groups.
- # The code in [clock scan] will choose the highest priority
- # (lowest numbered) set of fields that determines the date.
+ # Groups of fields that specify the date, priorities, and code bursts that
+ # determine Julian Day Number given those groups. The code in [clock
+ # scan] will choose the highest priority (lowest numbered) set of fields
+ # that determines the date.
variable DateParseActions {
@@ -487,8 +484,8 @@ proc ::tcl::clock::Initialize {} {
}
}
- # Groups of fields that specify time of day, priorities,
- # and code that processes them
+ # Groups of fields that specify time of day, priorities, and code that
+ # processes them
variable TimeParseActions {
@@ -654,16 +651,14 @@ proc ::tcl::clock::Initialize {} {
#
# clock format --
#
-# Formats a count of seconds since the Posix Epoch as a time
-# of day.
+# Formats a count of seconds since the Posix Epoch as a time of day.
#
-# The 'clock format' command formats times of day for output.
-# Refer to the user documentation to see what it does.
+# The 'clock format' command formats times of day for output. Refer to the
+# user documentation to see what it does.
#
#----------------------------------------------------------------------
proc ::tcl::clock::format { args } {
-
variable FormatProc
variable TZData
@@ -672,7 +667,7 @@ proc ::tcl::clock::format { args } {
set clockval [lindex $args 0]
# Get the data for time changes in the given zone
-
+
if {$timezone eq ""} {
set timezone [GetSystemTimeZone]
}
@@ -682,11 +677,11 @@ proc ::tcl::clock::format { args } {
return -options $opts $retval
}
}
-
- # Build a procedure to format the result. Cache the built procedure's
- # name in the 'FormatProc' array to avoid losing its internal
- # representation, which contains the name resolution.
-
+
+ # Build a procedure to format the result. Cache the built procedure's name
+ # in the 'FormatProc' array to avoid losing its internal representation,
+ # which contains the name resolution.
+
set procName formatproc'$format'$locale
set procName [namespace current]::[string map {: {\:} \\ {\\}} $procName]
if {[info exists FormatProc($procName)]} {
@@ -695,9 +690,8 @@ proc ::tcl::clock::format { args } {
set FormatProc($procName) \
[ParseClockFormatFormat $procName $format $locale]
}
-
- return [$procName $clockval $timezone]
+ return [$procName $clockval $timezone]
}
#----------------------------------------------------------------------
@@ -716,45 +710,31 @@ proc ::tcl::clock::format { args } {
#----------------------------------------------------------------------
proc ::tcl::clock::ParseClockFormatFormat {procName format locale} {
-
if {[namespace which $procName] ne {}} {
return $procName
}
# Map away the locale-dependent composite format groups
-
+
EnterLocale $locale oldLocale
# Change locale if a fresh locale has been given on the command line.
- set status [catch {
-
- ParseClockFormatFormat2 $format $locale $procName
-
- } result opts]
-
- # Restore the locale
-
- if { [info exists oldLocale] } {
- mclocale $oldLocale
- }
-
- # Return either the error or the proc name
+ try {
+ return [ParseClockFormatFormat2 $format $locale $procName]
+ } trap CLOCK {result opts} {
+ dict unset opts -errorinfo
+ return -options $opts $result
+ } finally {
+ # Restore the locale
- if { $status == 1 } {
- if { [lindex [dict get $opts -errorcode] 0] eq {clock} } {
- return -code error $result
- } else {
- return -options $opts $result
+ if { [info exists oldLocale] } {
+ mclocale $oldLocale
}
- } else {
- return $result
}
-
}
proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
-
set didLocaleEra 0
set didLocaleNumerals 0
set preFormatCode \
@@ -769,7 +749,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
set formatString {}
set substituents {}
set state {}
-
+
set format [LocalizeFormat $locale $format]
foreach char [split $format {}] {
@@ -796,7 +776,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
{ [lindex @DAYS_OF_WEEK_ABBREV@ \
[expr {[dict get $date dayOfWeek] \
% 7}]]}]
- }
+ }
A { # Day of week, spelt out.
append formatString %s
append substituents \
@@ -897,7 +877,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
k { # Hour (0-23), no leading zero
append formatString %2d
append substituents \
- { [expr { [dict get $date localSeconds]
+ { [expr { [dict get $date localSeconds]
/ 3600
% 24 }]}
}
@@ -918,7 +898,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
M { # Minute of the hour, leading zero
append formatString %02d
append substituents \
- { [expr { [dict get $date localSeconds]
+ { [expr { [dict get $date localSeconds]
/ 60
% 60 }]}
}
@@ -959,7 +939,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
{ [expr {(([dict get $date localSeconds]
% 86400) < 43200) ?
$am : $pm}]}
-
+
}
Q { # Hi, Jeff!
append formatString %s
@@ -969,11 +949,11 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
append formatString %s
append substituents { [dict get $date seconds]}
}
- S { # Second of the minute, with
+ S { # Second of the minute, with
# leading zero
append formatString %02d
append substituents \
- { [expr { [dict get $date localSeconds]
+ { [expr { [dict get $date localSeconds]
% 60 }]}
}
t { # A literal tab character
@@ -994,7 +974,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
}
incr dow
set UweekNumber \
- [expr { ( [dict get $date dayOfYear]
+ [expr { ( [dict get $date dayOfYear]
- $dow + 7 )
/ 7 }]
}
@@ -1017,7 +997,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
set WweekNumber \
[expr { ( [dict get $date dayOfYear]
- [dict get $date dayOfWeek]
- + 7 )
+ + 7 )
/ 7 }]
}
append formatString %02d
@@ -1086,7 +1066,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
percentO { # Character following %O
set state {}
switch -exact -- $char {
- d - e { # Day of the month in alternative
+ d - e { # Day of the month in alternative
# numerals
append formatString %s
append substituents \
@@ -1098,7 +1078,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
append formatString %s
append substituents \
{ [lindex $localeNumerals \
- [expr { [dict get $date localSeconds]
+ [expr { [dict get $date localSeconds]
/ 3600
% 24 }]]}
}
@@ -1124,7 +1104,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
append formatString %s
append substituents \
{ [lindex $localeNumerals \
- [expr { [dict get $date localSeconds]
+ [expr { [dict get $date localSeconds]
/ 60
% 60 }]]}
}
@@ -1133,7 +1113,7 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
append formatString %s
append substituents \
{ [lindex $localeNumerals \
- [expr { [dict get $date localSeconds]
+ [expr { [dict get $date localSeconds]
% 60 }]]}
}
u { # Day of the week (Monday=1,Sunday=7)
@@ -1164,9 +1144,9 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
}
}
}
-
+
# Clean up any improperly terminated groups
-
+
switch -exact -- $state {
percent {
append formatString %%
@@ -1193,16 +1173,14 @@ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
#
# clock scan --
#
-# Inputs a count of seconds since the Posix Epoch as a time
-# of day.
+# Inputs a count of seconds since the Posix Epoch as a time of day.
#
-# The 'clock format' command scans times of day on input.
-# Refer to the user documentation to see what it does.
+# The 'clock format' command scans times of day on input. Refer to the user
+# documentation to see what it does.
#
#----------------------------------------------------------------------
proc ::tcl::clock::scan { args } {
-
set format {}
# Check the count of args
@@ -1264,21 +1242,17 @@ proc ::tcl::clock::scan { args } {
"cannot use -gmt and -timezone in same call"
}
if { [catch { expr { wide($base) } } result] } {
- return -code error \
- "expected integer but got \"$base\""
+ return -code error "expected integer but got \"$base\""
}
- if { ![string is boolean $gmt] } {
- return -code error \
- "expected boolean value but got \"$gmt\""
- } else {
- if { $gmt } {
- set timezone :GMT
- }
+ if { ![string is boolean -strict $gmt] } {
+ return -code error "expected boolean value but got \"$gmt\""
+ } elseif { $gmt } {
+ set timezone :GMT
}
if { ![info exists saw(-format)] } {
- # Perhaps someday we'll localize the legacy code. Right now,
- # it's not localized.
+ # Perhaps someday we'll localize the legacy code. Right now, it's not
+ # localized.
if { [info exists saw(-locale)] } {
return -code error \
-errorcode [list CLOCK flagWithLegacyFormat] \
@@ -1292,31 +1266,23 @@ proc ::tcl::clock::scan { args } {
EnterLocale $locale oldLocale
- set status [catch {
-
+ try {
# Map away the locale-dependent composite format groups
set scanner [ParseClockScanFormat $format $locale]
- $scanner $string $base $timezone
+ return [$scanner $string $base $timezone]
+ } trap CLOCK {result opts} {
+ # Conceal location of generation of expected errors
- } result opts]
-
- # Restore the locale
-
- if { [info exists oldLocale] } {
- mclocale $oldLocale
- }
+ dict unset opts -errorinfo
+ return -options $opts $result
+ } finally {
+ # Restore the locale
- if { $status == 1 } {
- if { [lindex [dict get $opts -errorcode] 0] eq {clock} } {
- return -code error $result
- } else {
- return -options $opts $result
+ if { [info exists oldLocale] } {
+ mclocale $oldLocale
}
- } else {
- return $result
}
-
}
#----------------------------------------------------------------------
@@ -1332,52 +1298,50 @@ proc ::tcl::clock::scan { args } {
# locale - (Unused) Name of the locale where the time will be scanned.
#
# Results:
-# Returns the date and time extracted from the string in seconds
-# from the epoch
+# Returns the date and time extracted from the string in seconds from
+# the epoch
#
#----------------------------------------------------------------------
proc ::tcl::clock::FreeScan { string base timezone locale } {
-
variable TZData
# Get the data for time changes in the given zone
-
- if {[catch {SetupTimeZone $timezone} retval opts]} {
+
+ try {
+ SetupTimeZone $timezone
+ } on error {retval opts} {
dict unset opts -errorinfo
return -options $opts $retval
}
- # Extract year, month and day from the base time for the
- # parser to use as defaults
-
- set date [GetDateFields \
- $base \
- $TZData($timezone) \
- 2361222]
- dict set date secondOfDay [expr { [dict get $date localSeconds]
- % 86400 }]
+ # Extract year, month and day from the base time for the parser to use as
+ # defaults
- # Parse the date. The parser will return a list comprising
- # date, time, time zone, relative month/day/seconds, relative
- # weekday, ordinal month.
+ set date [GetDateFields $base $TZData($timezone) 2361222]
+ dict set date secondOfDay [expr {
+ [dict get $date localSeconds] % 86400
+ }]
- set status [catch {
- Oldscan $string \
- [dict get $date year] \
- [dict get $date month] \
- [dict get $date dayOfMonth]
- } result]
- if { $status != 0 } {
- return -code error "unable to convert date-time string \"$string\""
+ # Parse the date. The parser will return a list comprising date, time,
+ # time zone, relative month/day/seconds, relative weekday, ordinal month.
+
+ try {
+ set scanned [Oldscan $string \
+ [dict get $date year] \
+ [dict get $date month] \
+ [dict get $date dayOfMonth]]
+ lassign $scanned \
+ parseDate parseTime parseZone parseRel \
+ parseWeekday parseOrdinalMonth
+ } on error message {
+ return -code error \
+ "unable to convert date-time string \"$string\": $message"
}
- lassign $result parseDate parseTime parseZone parseRel \
- parseWeekday parseOrdinalMonth
-
- # If the caller supplied a date in the string, update the 'date' dict
- # with the value. If the caller didn't specify a time with the date,
- # default to midnight.
+ # If the caller supplied a date in the string, update the 'date' dict with
+ # the value. If the caller didn't specify a time with the date, default to
+ # midnight.
if { [llength $parseDate] > 0 } {
lassign $parseDate y m d
@@ -1397,12 +1361,12 @@ proc ::tcl::clock::FreeScan { string base timezone locale } {
}
}
- # If the caller supplied a time zone in the string, it comes back
- # as a two-element list; the first element is the number of minutes
- # east of Greenwich, and the second is a Daylight Saving Time
- # indicator ( 1 == yes, 0 == no, -1 == unknown ). We make it into
- # a time zone indicator of +-hhmm.
-
+ # If the caller supplied a time zone in the string, it comes back as a
+ # two-element list; the first element is the number of minutes east of
+ # Greenwich, and the second is a Daylight Saving Time indicator (1 == yes,
+ # 0 == no, -1 == unknown). We make it into a time zone indicator of
+ # +-hhmm.
+
if { [llength $parseZone] > 0 } {
lassign $parseZone minEast dstFlag
set timezone [FormatNumericTimeZone \
@@ -1416,18 +1380,19 @@ proc ::tcl::clock::FreeScan { string base timezone locale } {
set date [GetJulianDayFromEraYearMonthDay $date[set date {}] 2361222]
if { $parseTime ne {} } {
dict set date secondOfDay $parseTime
- } elseif { [llength $parseWeekday] != 0
- || [llength $parseOrdinalMonth] != 0
- || ( [llength $parseRel] != 0
+ } elseif { [llength $parseWeekday] != 0
+ || [llength $parseOrdinalMonth] != 0
+ || ( [llength $parseRel] != 0
&& ( [lindex $parseRel 0] != 0
|| [lindex $parseRel 1] != 0 ) ) } {
dict set date secondOfDay 0
}
- dict set date localSeconds \
- [expr { -210866803200
- + ( 86400 * wide([dict get $date julianDay]) )
- + [dict get $date secondOfDay] }]
+ dict set date localSeconds [expr {
+ -210866803200
+ + ( 86400 * wide([dict get $date julianDay]) )
+ + [dict get $date secondOfDay]
+ }]
dict set date tzName $timezone
set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) 2361222]
set seconds [dict get $date seconds]
@@ -1439,18 +1404,17 @@ proc ::tcl::clock::FreeScan { string base timezone locale } {
set seconds [add $seconds \
$relMonth months $relDay days $relSecond seconds \
-timezone $timezone -locale $locale]
- }
+ }
# Do relative weekday
-
- if { [llength $parseWeekday] > 0 } {
+ if { [llength $parseWeekday] > 0 } {
lassign $parseWeekday dayOrdinal dayOfWeek
set date2 [GetDateFields $seconds $TZData($timezone) 2361222]
dict set date2 era CE
- set jdwkday [WeekdayOnOrBefore $dayOfWeek \
- [expr { [dict get $date2 julianDay]
- + 6 }]]
+ set jdwkday [WeekdayOnOrBefore $dayOfWeek [expr {
+ [dict get $date2 julianDay] + 6
+ }]]
incr jdwkday [expr { 7 * $dayOrdinal }]
if { $dayOrdinal > 0 } {
incr jdwkday -7
@@ -1458,21 +1422,20 @@ proc ::tcl::clock::FreeScan { string base timezone locale } {
dict set date2 secondOfDay \
[expr { [dict get $date2 localSeconds] % 86400 }]
dict set date2 julianDay $jdwkday
- dict set date2 localSeconds \
- [expr { -210866803200
- + ( 86400 * wide([dict get $date2 julianDay]) )
- + [dict get $date secondOfDay] }]
+ dict set date2 localSeconds [expr {
+ -210866803200
+ + ( 86400 * wide([dict get $date2 julianDay]) )
+ + [dict get $date secondOfDay]
+ }]
dict set date2 tzName $timezone
set date2 [ConvertLocalToUTC $date2[set date2 {}] $TZData($timezone) \
2361222]
set seconds [dict get $date2 seconds]
-
}
# Do relative month
if { [llength $parseOrdinalMonth] > 0 } {
-
lassign $parseOrdinalMonth monthOrdinal monthNumber
if { $monthOrdinal > 0 } {
set monthDiff [expr { $monthNumber - [dict get $date month] }]
@@ -1489,7 +1452,6 @@ proc ::tcl::clock::FreeScan { string base timezone locale } {
}
set seconds [add $seconds $monthOrdinal years $monthDiff months \
-timezone $timezone -locale $locale]
-
}
return $seconds
@@ -1507,30 +1469,27 @@ proc ::tcl::clock::FreeScan { string base timezone locale } {
# locale - The current locale
#
# Results:
-# Constructs and returns a procedure that accepts the
-# string being scanned, the base time, and the time zone.
-# The procedure will either return the scanned time or
-# else throw an error that should be rethrown to the caller
-# of [clock scan]
+# Constructs and returns a procedure that accepts the string being
+# scanned, the base time, and the time zone. The procedure will either
+# return the scanned time or else throw an error that should be rethrown
+# to the caller of [clock scan]
#
# Side effects:
-# The given procedure is defined in the ::tcl::clock
-# namespace. Scan procedures are not deleted once installed.
-#
-# Why do we parse dates by defining a procedure to parse them?
-# The reason is that by doing so, we have one convenient place to
-# cache all the information: the regular expressions that match the
-# patterns (which will be compiled), the code that assembles the
-# date information, everything lands in one place. In this way,
-# when a given format is reused at run time, all the information
+# The given procedure is defined in the ::tcl::clock namespace. Scan
+# procedures are not deleted once installed.
+#
+# Why do we parse dates by defining a procedure to parse them? The reason is
+# that by doing so, we have one convenient place to cache all the information:
+# the regular expressions that match the patterns (which will be compiled),
+# the code that assembles the date information, everything lands in one place.
+# In this way, when a given format is reused at run time, all the information
# of how to apply it is available in a single place.
#
#----------------------------------------------------------------------
proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
-
- # Check whether the format has been parsed previously, and return
- # the existing recognizer if it has.
+ # Check whether the format has been parsed previously, and return the
+ # existing recognizer if it has.
set procName scanproc'$formatString'$locale
set procName [namespace current]::[string map {: {\:} \\ {\\}} $procName]
@@ -1574,8 +1533,8 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
append re {[[:space:]]+}
} else {
if { ! [string is alnum $c] } {
- append re \\
- }
+ append re "\\"
+ }
append re $c
}
}
@@ -1692,7 +1651,7 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
"::scan \$field" [incr captureCount] " %ld" \
"\]\n"
}
- m - N { # Month number
+ m - N { # Month number
append re \\s*(\\d\\d?)
dict set fieldSet month [incr fieldCount]
append postcode "dict set date month \[" \
@@ -1735,10 +1694,9 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
\] \n
}
s { # Seconds from Posix Epoch
- # This next case is insanely difficult,
- # because it's problematic to determine
- # whether the field is actually within
- # the range of a wide integer.
+ # This next case is insanely difficult, because it's
+ # problematic to determine whether the field is
+ # actually within the range of a wide integer.
append re {\s*([-+]?\d+)}
dict set fieldSet seconds [incr fieldCount]
append postcode {dict set date seconds } \[ \
@@ -1771,14 +1729,13 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
dict set date dayOfWeek $dow
}
}
- U { # Week of year. The
- # first Sunday of the year is the
- # first day of week 01. No scan rule
- # uses this group.
+ U { # Week of year. The first Sunday of
+ # the year is the first day of week
+ # 01. No scan rule uses this group.
append re \\s*\\d\\d?
}
V { # Week of ISO8601 year
-
+
append re \\s*(\\d\\d?)
dict set fieldSet iso8601Week [incr fieldCount]
append postcode "dict set date iso8601Week \[" \
@@ -1950,7 +1907,7 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
"day of week is greater than 7"
}
dict set date dayOfWeek $dow
- }
+ }
}
y {
lassign [LocaleNumeralMatcher $locale] regex lookup
@@ -1996,6 +1953,21 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
append procBody $postcode
append procBody [list set changeover [mc GREGORIAN_CHANGE_DATE]] \n
+ # Set up the time zone before doing anything with a default base date
+ # that might need a timezone to interpret it.
+
+ if { ![dict exists $fieldSet seconds]
+ && ![dict exists $fieldSet starDate] } {
+ if { [dict exists $fieldSet tzName] } {
+ append procBody {
+ set timeZone [dict get $date tzName]
+ }
+ }
+ append procBody {
+ ::tcl::clock::SetupTimeZone $timeZone
+ }
+ }
+
# Add code that gets Julian Day Number from the fields.
append procBody [MakeParseCodeFromFields $fieldSet $DateParseActions]
@@ -2004,34 +1976,29 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
append procBody [MakeParseCodeFromFields $fieldSet $TimeParseActions]
- # Assemble seconds, and convert local nominal time to UTC.
+ # Assemble seconds from the Julian day and second of the day.
+ # Convert to local time unless epoch seconds or stardate are
+ # being processed - they're always absolute
- if { ![dict exists $fieldSet seconds]
+ if { ![dict exists $fieldSet seconds]
&& ![dict exists $fieldSet starDate] } {
append procBody {
if { [dict get $date julianDay] > 5373484 } {
return -code error -errorcode [list CLOCK dateTooLarge] \
"requested date too large to represent"
}
- dict set date localSeconds \
- [expr { -210866803200
- + ( 86400 * wide([dict get $date julianDay]) )
- + [dict get $date secondOfDay] }]
+ dict set date localSeconds [expr {
+ -210866803200
+ + ( 86400 * wide([dict get $date julianDay]) )
+ + [dict get $date secondOfDay]
+ }]
}
- }
- if { ![dict exists $fieldSet seconds]
- && ![dict exists $fieldSet starDate] } {
- if { [dict exists $fieldSet tzName] } {
- append procBody {
- set timeZone [dict get $date tzName]
- }
- }
+ # Finally, convert the date to local time
+
append procBody {
- ::tcl::clock::SetupTimeZone $timeZone
set date [::tcl::clock::ConvertLocalToUTC $date[set date {}] \
- $TZData($timeZone) \
- $changeover]
+ $TZData($timeZone) $changeover]
}
}
@@ -2045,20 +2012,19 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
return $procName
}
-
+
#----------------------------------------------------------------------
#
# LocaleNumeralMatcher --
#
-# Composes a regexp that captures the numerals in the given
-# locale, and a dictionary to map them to conventional numerals.
+# Composes a regexp that captures the numerals in the given locale, and
+# a dictionary to map them to conventional numerals.
#
# Parameters:
# locale - Name of the current locale
#
# Results:
-# Returns a two-element list comprising the regexp and the
-# dictionary.
+# Returns a two-element list comprising the regexp and the dictionary.
#
# Side effects:
# Caches the result.
@@ -2066,7 +2032,6 @@ proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
#----------------------------------------------------------------------
proc ::tcl::clock::LocaleNumeralMatcher {l} {
-
variable LocaleNumeralCache
if { ![dict exists $LocaleNumeralCache $l] } {
@@ -2085,16 +2050,16 @@ proc ::tcl::clock::LocaleNumeralMatcher {l} {
}
return [dict get $LocaleNumeralCache $l]
}
-
+
#----------------------------------------------------------------------
#
# UniquePrefixRegexp --
#
-# Composes a regexp that performs unique-prefix matching. The
-# RE matches one of a supplied set of strings, or any unique
-# prefix thereof.
+# Composes a regexp that performs unique-prefix matching. The RE
+# matches one of a supplied set of strings, or any unique prefix
+# thereof.
#
# Parameters:
# data - List of alternating match-strings and values.
@@ -2102,10 +2067,10 @@ proc ::tcl::clock::LocaleNumeralMatcher {l} {
# distinct.
#
# Results:
-# Returns a two-element list. The first is a regexp that
-# matches any unique prefix of any of the strings. The second
-# is a dictionary whose keys are match values from the regexp
-# and whose values are the corresponding values from 'data'.
+# Returns a two-element list. The first is a regexp that matches any
+# unique prefix of any of the strings. The second is a dictionary whose
+# keys are match values from the regexp and whose values are the
+# corresponding values from 'data'.
#
# Side effects:
# None.
@@ -2113,11 +2078,10 @@ proc ::tcl::clock::LocaleNumeralMatcher {l} {
#----------------------------------------------------------------------
proc ::tcl::clock::UniquePrefixRegexp { data } {
-
- # The 'successors' dictionary will contain, for each string that
- # is a prefix of any key, all characters that may follow that
- # prefix. The 'prefixMapping' dictionary will have keys that
- # are prefixes of keys and values that correspond to the keys.
+ # The 'successors' dictionary will contain, for each string that is a
+ # prefix of any key, all characters that may follow that prefix. The
+ # 'prefixMapping' dictionary will have keys that are prefixes of keys and
+ # values that correspond to the keys.
set prefixMapping [dict create]
set successors [dict create {} {}]
@@ -2125,8 +2089,7 @@ proc ::tcl::clock::UniquePrefixRegexp { data } {
# Walk the key-value pairs
foreach { key value } $data {
-
- # Construct all prefixes of the key;
+ # Construct all prefixes of the key;
set prefix {}
foreach char [split $key {}] {
@@ -2144,8 +2107,8 @@ proc ::tcl::clock::UniquePrefixRegexp { data } {
}
}
- # Identify those prefixes that designate unique values, and
- # those that are the full keys
+ # Identify those prefixes that designate unique values, and those that are
+ # the full keys
set uniquePrefixMapping {}
dict for { key valueList } $prefixMapping {
@@ -2168,8 +2131,8 @@ proc ::tcl::clock::UniquePrefixRegexp { data } {
#
# MakeUniquePrefixRegexp --
#
-# Service procedure for 'UniquePrefixRegexp' that constructs
-# a regular expresison that matches the unique prefixes.
+# Service procedure for 'UniquePrefixRegexp' that constructs a regular
+# expresison that matches the unique prefixes.
#
# Parameters:
# successors - Dictionary whose keys are all prefixes
@@ -2181,18 +2144,17 @@ proc ::tcl::clock::UniquePrefixRegexp { data } {
# prefixString - Current prefix being processed.
#
# Results:
-# Returns a constructed regular expression that matches the set
-# of unique prefixes beginning with the 'prefixString'.
+# Returns a constructed regular expression that matches the set of
+# unique prefixes beginning with the 'prefixString'.
#
# Side effects:
# None.
#
#----------------------------------------------------------------------
-proc ::tcl::clock::MakeUniquePrefixRegexp { successors
+proc ::tcl::clock::MakeUniquePrefixRegexp { successors
uniquePrefixMapping
prefixString } {
-
# Get the characters that may follow the current prefix string
set schars [lsort -ascii [dict keys [dict get $successors $prefixString]]]
@@ -2200,13 +2162,15 @@ proc ::tcl::clock::MakeUniquePrefixRegexp { successors
return {}
}
- # If there is more than one successor character, or if the current
- # prefix is a unique prefix, surround the generated re with non-capturing
+ # If there is more than one successor character, or if the current prefix
+ # is a unique prefix, surround the generated re with non-capturing
# parentheses.
set re {}
- if { [dict exists $uniquePrefixMapping $prefixString]
- || [llength $schars] > 1 } {
+ if {
+ [dict exists $uniquePrefixMapping $prefixString]
+ || [llength $schars] > 1
+ } then {
append re "(?:"
}
@@ -2228,7 +2192,7 @@ proc ::tcl::clock::MakeUniquePrefixRegexp { successors
if { [dict exists $uniquePrefixMapping $prefixString] } {
append re ")?"
- } elseif { [llength $schars] > 1 } {
+ } elseif { [llength $schars] > 1 } {
append re ")"
}
@@ -2239,8 +2203,8 @@ proc ::tcl::clock::MakeUniquePrefixRegexp { successors
#
# MakeParseCodeFromFields --
#
-# Composes Tcl code to extract the Julian Day Number from a
-# dictionary containing date fields.
+# Composes Tcl code to extract the Julian Day Number from a dictionary
+# containing date fields.
#
# Parameters:
# dateFields -- Dictionary whose keys are fields of the date,
@@ -2251,8 +2215,8 @@ proc ::tcl::clock::MakeUniquePrefixRegexp { successors
# the list must be in ascending order by priority
#
# Results:
-# Returns a burst of code that extracts the day number from the
-# given date.
+# Returns a burst of code that extracts the day number from the given
+# date.
#
# Side effects:
# None.
@@ -2260,7 +2224,6 @@ proc ::tcl::clock::MakeUniquePrefixRegexp { successors
#----------------------------------------------------------------------
proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } {
-
set currPrio 999
set currFieldPos [list]
set currCodeBurst {
@@ -2268,16 +2231,15 @@ proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } {
}
foreach { fieldSet prio parseAction } $parseActions {
-
- # If we've found an answer that's better than any that follow,
- # quit now.
+ # If we've found an answer that's better than any that follow, quit
+ # now.
if { $prio > $currPrio } {
break
}
- # Accumulate the field positions that are used in the current
- # field grouping.
+ # Accumulate the field positions that are used in the current field
+ # grouping.
set fieldPos [list]
set ok true
@@ -2300,9 +2262,11 @@ proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } {
if { $prio == $currPrio } {
foreach currPos $currFieldPos newPos $fPos {
- if { ![string is integer $newPos]
- || ![string is integer $currPos]
- || $newPos > $currPos } {
+ if {
+ ![string is integer $newPos]
+ || ![string is integer $currPos]
+ || $newPos > $currPos
+ } then {
break
}
if { $newPos < $currPos } {
@@ -2320,11 +2284,9 @@ proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } {
set currPrio $prio
set currFieldPos $fPos
set currCodeBurst $parseAction
-
}
return $currCodeBurst
-
}
#----------------------------------------------------------------------
@@ -2342,14 +2304,13 @@ proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } {
# Returns the locale that was previously current.
#
# Side effects:
-# Does [mclocale]. If necessary, uses [mcload] to load the
-# designated locale's files, and tracks that it has done so
-# in the 'McLoaded' variable.
+# Does [mclocale]. If necessary, uses [mcload] to load the designated
+# locale's files, and tracks that it has done so in the 'McLoaded'
+# variable.
#
#----------------------------------------------------------------------
proc ::tcl::clock::EnterLocale { locale oldLocaleVar } {
-
upvar 1 $oldLocaleVar oldLocale
variable MsgDir
@@ -2357,27 +2318,24 @@ proc ::tcl::clock::EnterLocale { locale oldLocaleVar } {
set oldLocale [mclocale]
if { $locale eq {system} } {
-
if { $::tcl_platform(platform) ne {windows} } {
-
- # On a non-windows platform, the 'system' locale is
- # the same as the 'current' locale
+ # On a non-windows platform, the 'system' locale is the same as
+ # the 'current' locale
set locale current
} else {
-
- # On a windows platform, the 'system' locale is
- # adapted from the 'current' locale by applying the
- # date and time formats from the Control Panel.
- # First, load the 'current' locale if it's not yet loaded
+ # On a windows platform, the 'system' locale is adapted from the
+ # 'current' locale by applying the date and time formats from the
+ # Control Panel. First, load the 'current' locale if it's not yet
+ # loaded
if {![dict exists $McLoaded $oldLocale] } {
mcload $MsgDir
dict set McLoaded $oldLocale {}
}
- # Make a new locale string for the system locale, and
- # get the Control Panel information
+ # Make a new locale string for the system locale, and get the
+ # Control Panel information
set locale ${oldLocale}_windows
if { ![dict exists $McLoaded $locale] } {
@@ -2398,15 +2356,14 @@ proc ::tcl::clock::EnterLocale { locale oldLocaleVar } {
mcload $MsgDir
dict set McLoaded $locale {}
}
-
-}
+}
#----------------------------------------------------------------------
#
# LoadWindowsDateTimeFormats --
#
-# Load the date/time formats from the Control Panel in Windows
-# and convert them so that they're usable by Tcl.
+# Load the date/time formats from the Control Panel in Windows and
+# convert them so that they're usable by Tcl.
#
# Parameters:
# locale - Name of the locale in whose message catalog
@@ -2418,14 +2375,12 @@ proc ::tcl::clock::EnterLocale { locale oldLocaleVar } {
# Side effects:
# Updates the given message catalog with the locale strings.
#
-# Presumes that on entry, [mclocale] is set to the current locale,
-# so that default strings can be obtained if the Registry query
-# fails.
+# Presumes that on entry, [mclocale] is set to the current locale, so that
+# default strings can be obtained if the Registry query fails.
#
#----------------------------------------------------------------------
proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } {
-
# Bail out if we can't find the Registry
variable NoRegistry
@@ -2527,7 +2482,6 @@ proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } {
}
return
-
}
#----------------------------------------------------------------------
@@ -2542,8 +2496,8 @@ proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } {
# format -- Format supplied to [clock scan] or [clock format]
#
# Results:
-# Returns the string with locale-dependent composite format
-# groups substituted out.
+# Returns the string with locale-dependent composite format groups
+# substituted out.
#
# Side effects:
# None.
@@ -2551,7 +2505,6 @@ proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } {
#----------------------------------------------------------------------
proc ::tcl::clock::LocalizeFormat { locale format } {
-
variable McLoaded
if { [dict exists $McLoaded $locale FORMAT $format] } {
@@ -2559,24 +2512,27 @@ proc ::tcl::clock::LocalizeFormat { locale format } {
}
set inFormat $format
- # Handle locale-dependent format groups by mapping them out of
- # the input string. Note that the order of the [string map]
- # operations is significant because earlier formats can refer
- # to later ones; for example %c can refer to %X, which in turn
- # can refer to %T.
-
- set format [string map [list %c [mc DATE_TIME_FORMAT] \
- %Ec [mc LOCALE_DATE_TIME_FORMAT]] $format]
- set format [string map [list %x [mc DATE_FORMAT] \
- %Ex [mc LOCALE_DATE_FORMAT] \
- %X [mc TIME_FORMAT] \
- %EX [mc LOCALE_TIME_FORMAT]] $format]
- set format [string map [list %r [mc TIME_FORMAT_12] \
- %R [mc TIME_FORMAT_24] \
- %T [mc TIME_FORMAT_24_SECS]] $format]
- set format [string map [list %D %m/%d/%Y \
- %EY [mc LOCALE_YEAR_FORMAT]\
- %+ {%a %b %e %H:%M:%S %Z %Y}] $format]
+ # Handle locale-dependent format groups by mapping them out of the format
+ # string. Note that the order of the [string map] operations is
+ # significant because later formats can refer to later ones; for example
+ # %c can refer to %X, which in turn can refer to %T.
+
+ set list {
+ %% %%
+ %D %m/%d/%Y
+ %+ {%a %b %e %H:%M:%S %Z %Y}
+ }
+ lappend list %EY [string map $list [mc LOCALE_YEAR_FORMAT]]
+ lappend list %T [string map $list [mc TIME_FORMAT_24_SECS]]
+ lappend list %R [string map $list [mc TIME_FORMAT_24]]
+ lappend list %r [string map $list [mc TIME_FORMAT_12]]
+ lappend list %X [string map $list [mc TIME_FORMAT]]
+ lappend list %EX [string map $list [mc LOCALE_TIME_FORMAT]]
+ lappend list %x [string map $list [mc DATE_FORMAT]]
+ lappend list %Ex [string map $list [mc LOCALE_DATE_FORMAT]]
+ lappend list %c [string map $list [mc DATE_TIME_FORMAT]]
+ lappend list %Ec [string map $list [mc LOCALE_DATE_TIME_FORMAT]]
+ set format [string map $list $format]
dict set McLoaded $locale FORMAT $inFormat $format
return $format
@@ -2600,7 +2556,6 @@ proc ::tcl::clock::LocalizeFormat { locale format } {
#----------------------------------------------------------------------
proc ::tcl::clock::FormatNumericTimeZone { z } {
-
if { $z < 0 } {
set z [expr { - $z }]
set retval -
@@ -2615,7 +2570,6 @@ proc ::tcl::clock::FormatNumericTimeZone { z } {
append retval [::format %02d $z]
}
return $retval
-
}
#----------------------------------------------------------------------
@@ -2640,7 +2594,6 @@ proc ::tcl::clock::FormatNumericTimeZone { z } {
#----------------------------------------------------------------------
proc ::tcl::clock::FormatStarDate { date } {
-
variable Roddenberry
# Get day of year, zero based
@@ -2691,7 +2644,6 @@ proc ::tcl::clock::FormatStarDate { date } {
#----------------------------------------------------------------------
proc ::tcl::clock::ParseStarDate { year fractYear fractDay } {
-
variable Roddenberry
# Build a tentative date from year and fraction.
@@ -2707,8 +2659,8 @@ proc ::tcl::clock::ParseStarDate { year fractYear fractDay } {
set lp [IsGregorianLeapYear $date]
- # Reconvert the fractional year according to whether the given
- # year is a leap year
+ # Reconvert the fractional year according to whether the given year is a
+ # leap year
if { $lp } {
dict set date dayOfYear \
@@ -2721,10 +2673,11 @@ proc ::tcl::clock::ParseStarDate { year fractYear fractDay } {
dict unset date gregorian
set date [GetJulianDayFromGregorianEraYearDay $date[set date {}]]
- return [expr { 86400 * [dict get $date julianDay]
- - 210866803200
- + ( 86400 / 10 ) * $fractDay }]
-
+ return [expr {
+ 86400 * [dict get $date julianDay]
+ - 210866803200
+ + ( 86400 / 10 ) * $fractDay
+ }]
}
#----------------------------------------------------------------------
@@ -2737,8 +2690,8 @@ proc ::tcl::clock::ParseStarDate { year fractYear fractDay } {
# str - String containing a decimal wide integer
#
# Results:
-# Returns the string as a pure wide integer. Throws an error if
-# the string is misformatted or out of range.
+# Returns the string as a pure wide integer. Throws an error if the
+# string is misformatted or out of range.
#
#----------------------------------------------------------------------
@@ -2759,8 +2712,8 @@ proc ::tcl::clock::ScanWide { str } {
#
# InterpretTwoDigitYear --
#
-# Given a date that contains only the year of the century,
-# determines the target value of a two-digit year.
+# Given a date that contains only the year of the century, determines
+# the target value of a two-digit year.
#
# Parameters:
# date - Dictionary containing fields of the date.
@@ -2777,18 +2730,17 @@ proc ::tcl::clock::ScanWide { str } {
# Side effects:
# None.
#
-# The current rule for interpreting a two-digit year is that the year
-# shall be between 1937 and 2037, thus staying within the range of a
-# 32-bit signed value for time. This rule may change to a sliding
-# window in future versions, so the 'baseTime' parameter (which is
-# currently ignored) is provided in the procedure signature.
+# The current rule for interpreting a two-digit year is that the year shall be
+# between 1937 and 2037, thus staying within the range of a 32-bit signed
+# value for time. This rule may change to a sliding window in future
+# versions, so the 'baseTime' parameter (which is currently ignored) is
+# provided in the procedure signature.
#
#----------------------------------------------------------------------
-proc ::tcl::clock::InterpretTwoDigitYear { date baseTime
+proc ::tcl::clock::InterpretTwoDigitYear { date baseTime
{ twoDigitField yearOfCentury }
{ fourDigitField year } } {
-
set yr [dict get $date $twoDigitField]
if { $yr <= 37 } {
dict set date $fourDigitField [expr { $yr + 2000 }]
@@ -2796,7 +2748,6 @@ proc ::tcl::clock::InterpretTwoDigitYear { date baseTime
dict set date $fourDigitField [expr { $yr + 1900 }]
}
return $date
-
}
#----------------------------------------------------------------------
@@ -2822,7 +2773,6 @@ proc ::tcl::clock::InterpretTwoDigitYear { date baseTime
#----------------------------------------------------------------------
proc ::tcl::clock::AssignBaseYear { date baseTime timezone changeover } {
-
variable TZData
# Find the Julian Day Number corresponding to the base time, and
@@ -2836,7 +2786,6 @@ proc ::tcl::clock::AssignBaseYear { date baseTime timezone changeover } {
dict set date year [dict get $date2 year]
return $date
-
}
#----------------------------------------------------------------------
@@ -2863,7 +2812,6 @@ proc ::tcl::clock::AssignBaseYear { date baseTime timezone changeover } {
#----------------------------------------------------------------------
proc ::tcl::clock::AssignBaseIso8601Year {date baseTime timeZone changeover} {
-
variable TZData
# Find the Julian Day Number corresponding to the base time
@@ -2881,7 +2829,7 @@ proc ::tcl::clock::AssignBaseIso8601Year {date baseTime timeZone changeover} {
#
# AssignBaseMonth --
#
-# Places the number of the current year and month into a
+# Places the number of the current year and month into a
# dictionary.
#
# Parameters:
@@ -2900,7 +2848,6 @@ proc ::tcl::clock::AssignBaseIso8601Year {date baseTime timeZone changeover} {
#----------------------------------------------------------------------
proc ::tcl::clock::AssignBaseMonth {date baseTime timezone changeover} {
-
variable TZData
# Find the year and month corresponding to the base time
@@ -2910,7 +2857,6 @@ proc ::tcl::clock::AssignBaseMonth {date baseTime timezone changeover} {
dict set date year [dict get $date2 year]
dict set date month [dict get $date2 month]
return $date
-
}
#----------------------------------------------------------------------
@@ -2936,7 +2882,6 @@ proc ::tcl::clock::AssignBaseMonth {date baseTime timezone changeover} {
#----------------------------------------------------------------------
proc ::tcl::clock::AssignBaseWeek {date baseTime timeZone changeover} {
-
variable TZData
# Find the Julian Day Number corresponding to the base time
@@ -2973,7 +2918,6 @@ proc ::tcl::clock::AssignBaseWeek {date baseTime timeZone changeover} {
#----------------------------------------------------------------------
proc ::tcl::clock::AssignBaseJulianDay { date baseTime timeZone changeover } {
-
variable TZData
# Find the Julian Day Number corresponding to the base time
@@ -3003,7 +2947,6 @@ proc ::tcl::clock::AssignBaseJulianDay { date baseTime timeZone changeover } {
#----------------------------------------------------------------------
proc ::tcl::clock::InterpretHMSP { date } {
-
set hr [dict get $date hourAMPM]
if { $hr == 12 } {
set hr 0
@@ -3013,7 +2956,6 @@ proc ::tcl::clock::InterpretHMSP { date } {
}
dict set date hour $hr
return [InterpretHMS $date[set date {}]]
-
}
#----------------------------------------------------------------------
@@ -3036,11 +2978,11 @@ proc ::tcl::clock::InterpretHMSP { date } {
#----------------------------------------------------------------------
proc ::tcl::clock::InterpretHMS { date } {
-
- return [expr { ( [dict get $date hour] * 60
- + [dict get $date minute] ) * 60
- + [dict get $date second] }]
-
+ return [expr {
+ ( [dict get $date hour] * 60
+ + [dict get $date minute] ) * 60
+ + [dict get $date second]
+ }]
}
#----------------------------------------------------------------------
@@ -3063,7 +3005,6 @@ proc ::tcl::clock::InterpretHMS { date } {
#----------------------------------------------------------------------
proc ::tcl::clock::GetSystemTimeZone {} {
-
variable CachedSystemTimeZone
variable TimeZoneBad
@@ -3071,18 +3012,23 @@ proc ::tcl::clock::GetSystemTimeZone {} {
set timezone $result
} elseif {[set result [getenv TZ]] ne {}} {
set timezone $result
- } elseif { [info exists CachedSystemTimeZone] } {
- set timezone $CachedSystemTimeZone
- } elseif { $::tcl_platform(platform) eq {windows} } {
- set timezone [GuessWindowsTimeZone]
- } elseif { [file exists /etc/localtime]
- && ![catch {ReadZoneinfoFile \
- Tcl/Localtime /etc/localtime}] } {
- set timezone :Tcl/Localtime
- } else {
- set timezone :localtime
}
- set CachedSystemTimeZone $timezone
+ if {![info exists timezone]} {
+ # Cache the time zone only if it was detected by one of the
+ # expensive methods.
+ if { [info exists CachedSystemTimeZone] } {
+ set timezone $CachedSystemTimeZone
+ } elseif { $::tcl_platform(platform) eq {windows} } {
+ set timezone [GuessWindowsTimeZone]
+ } elseif { [file exists /etc/localtime]
+ && ![catch {ReadZoneinfoFile \
+ Tcl/Localtime /etc/localtime}] } {
+ set timezone :Tcl/Localtime
+ } else {
+ set timezone :localtime
+ }
+ set CachedSystemTimeZone $timezone
+ }
if { ![dict exists $TimeZoneBad $timezone] } {
dict set TimeZoneBad $timezone [catch {SetupTimeZone $timezone}]
}
@@ -3091,76 +3037,69 @@ proc ::tcl::clock::GetSystemTimeZone {} {
} else {
return $timezone
}
-
}
#----------------------------------------------------------------------
#
# ConvertLegacyTimeZone --
#
-# Given an alphanumeric time zone identifier and the system
-# time zone, convert the alphanumeric identifier to an
-# unambiguous time zone.
+# Given an alphanumeric time zone identifier and the system time zone,
+# convert the alphanumeric identifier to an unambiguous time zone.
#
# Parameters:
# tzname - Name of the time zone to convert
#
# Results:
-# Returns a time zone name corresponding to tzname, but
-# in an unambiguous form, generally +hhmm.
+# Returns a time zone name corresponding to tzname, but in an
+# unambiguous form, generally +hhmm.
#
-# This procedure is implemented primarily to allow the parsing of
-# RFC822 date/time strings. Processing a time zone name on input
-# is not recommended practice, because there is considerable room
-# for ambiguity; for instance, is BST Brazilian Standard Time, or
-# British Summer Time?
+# This procedure is implemented primarily to allow the parsing of RFC822
+# date/time strings. Processing a time zone name on input is not recommended
+# practice, because there is considerable room for ambiguity; for instance, is
+# BST Brazilian Standard Time, or British Summer Time?
#
#----------------------------------------------------------------------
proc ::tcl::clock::ConvertLegacyTimeZone { tzname } {
-
variable LegacyTimeZone
set tzname [string tolower $tzname]
if { ![dict exists $LegacyTimeZone $tzname] } {
return -code error -errorcode [list CLOCK badTZName $tzname] \
"time zone \"$tzname\" not found"
- } else {
- return [dict get $LegacyTimeZone $tzname]
}
-
+ return [dict get $LegacyTimeZone $tzname]
}
#----------------------------------------------------------------------
#
# SetupTimeZone --
#
-# Given the name or specification of a time zone, sets up
-# its in-memory data.
+# Given the name or specification of a time zone, sets up its in-memory
+# data.
#
# Parameters:
# tzname - Name of a time zone
#
# Results:
-# Unless the time zone is ':localtime', sets the TZData array
-# to contain the lookup table for local<->UTC conversion.
-# Returns an error if the time zone cannot be parsed.
+# Unless the time zone is ':localtime', sets the TZData array to contain
+# the lookup table for local<->UTC conversion. Returns an error if the
+# time zone cannot be parsed.
#
#----------------------------------------------------------------------
proc ::tcl::clock::SetupTimeZone { timezone } {
-
variable TZData
if {! [info exists TZData($timezone)] } {
variable MINWIDE
if { $timezone eq {:localtime} } {
-
# Nothing to do, we'll convert using the localtime function
- } elseif { [regexp {^([-+])(\d\d)(?::?(\d\d)(?::?(\d\d))?)?} $timezone \
- -> s hh mm ss] } {
-
+ } elseif {
+ [regexp {^([-+])(\d\d)(?::?(\d\d)(?::?(\d\d))?)?} $timezone \
+ -> s hh mm ss]
+ } then {
# Make a fixed offset
::scan $hh %d hh
@@ -3181,24 +3120,21 @@ proc ::tcl::clock::SetupTimeZone { timezone } {
set TZData($timezone) [list [list $MINWIDE $offset -1 $timezone]]
} elseif { [string index $timezone 0] eq {:} } {
-
# Convert using a time zone file
- if {
+ if {
[catch {
LoadTimeZoneFile [string range $timezone 1 end]
- }]
- && [catch {
+ }] && [catch {
LoadZoneinfoFile [string range $timezone 1 end]
}]
- } {
+ } then {
return -code error \
-errorcode [list CLOCK badTimeZone $timezone] \
"time zone \"$timezone\" not found"
}
-
+
} elseif { ![catch {ParsePosixTimeZone $timezone} tzfields] } {
-
# This looks like a POSIX time zone - try to process it
if { [catch {ProcessPosixTimeZone $tzfields} data opts] } {
@@ -3211,9 +3147,8 @@ proc ::tcl::clock::SetupTimeZone { timezone } {
}
} else {
-
- # We couldn't parse this as a POSIX time zone. Try
- # again with a time zone file - this time without a colon
+ # We couldn't parse this as a POSIX time zone. Try again with a
+ # time zone file - this time without a colon
if { [catch { LoadTimeZoneFile $timezone }]
&& [catch { LoadZoneinfoFile $timezone } - opts] } {
@@ -3237,25 +3172,22 @@ proc ::tcl::clock::SetupTimeZone { timezone } {
# None.
#
# Results:
-# Returns a time zone specifier that corresponds to the system
-# time zone information found in the Registry.
+# Returns a time zone specifier that corresponds to the system time zone
+# information found in the Registry.
#
# Bugs:
-# Fixed dates for DST change are unimplemented at present, because
-# no time zone information supplied with Windows actually uses
-# them!
+# Fixed dates for DST change are unimplemented at present, because no
+# time zone information supplied with Windows actually uses them!
#
-# On a Windows system where neither $env(TCL_TZ) nor $env(TZ) is
-# specified, GuessWindowsTimeZone looks in the Registry for the
-# system time zone information. It then attempts to find an entry
-# in WinZoneInfo for a time zone that uses the same rules. If
-# it finds one, it returns it; otherwise, it constructs a Posix-style
-# time zone string and returns that.
+# On a Windows system where neither $env(TCL_TZ) nor $env(TZ) is specified,
+# GuessWindowsTimeZone looks in the Registry for the system time zone
+# information. It then attempts to find an entry in WinZoneInfo for a time
+# zone that uses the same rules. If it finds one, it returns it; otherwise,
+# it constructs a Posix-style time zone string and returns that.
#
#----------------------------------------------------------------------
proc ::tcl::clock::GuessWindowsTimeZone {} {
-
variable WinZoneInfo
variable NoRegistry
variable TimeZoneBad
@@ -3286,16 +3218,14 @@ proc ::tcl::clock::GuessWindowsTimeZone {} {
lappend data $val
}
}] } {
-
# Missing values in the Registry - bail out
return :localtime
}
- # Make up a Posix time zone specifier if we can't find one.
- # Check here that the tzdata file exists, in case we're running
- # in an environment (e.g. starpack) where tzdata is incomplete.
- # (Bug 1237907)
+ # Make up a Posix time zone specifier if we can't find one. Check here
+ # that the tzdata file exists, in case we're running in an environment
+ # (e.g. starpack) where tzdata is incomplete. (Bug 1237907)
if { [dict exists $WinZoneInfo $data] } {
set tzname [dict get $WinZoneInfo $data]
@@ -3343,11 +3273,11 @@ proc ::tcl::clock::GuessWindowsTimeZone {} {
if { $dstYear == 0 } {
append tzname ,M $dstMonth . $dstDayOfMonth . $dstDayOfWeek
} else {
- # I have not been able to find any locale on which
- # Windows converts time zone on a fixed day of the year,
- # hence don't know how to interpret the fields.
- # If someone can inform me, I'd be glad to code it up.
- # For right now, we bail out in such a case.
+ # I have not been able to find any locale on which Windows
+ # converts time zone on a fixed day of the year, hence don't
+ # know how to interpret the fields. If someone can inform me,
+ # I'd be glad to code it up. For right now, we bail out in
+ # such a case.
return :localtime
}
append tzname / [::format %02d $dstHour] \
@@ -3356,11 +3286,11 @@ proc ::tcl::clock::GuessWindowsTimeZone {} {
if { $stdYear == 0 } {
append tzname ,M $stdMonth . $stdDayOfMonth . $stdDayOfWeek
} else {
- # I have not been able to find any locale on which
- # Windows converts time zone on a fixed day of the year,
- # hence don't know how to interpret the fields.
- # If someone can inform me, I'd be glad to code it up.
- # For right now, we bail out in such a case.
+ # I have not been able to find any locale on which Windows
+ # converts time zone on a fixed day of the year, hence don't
+ # know how to interpret the fields. If someone can inform me,
+ # I'd be glad to code it up. For right now, we bail out in
+ # such a case.
return :localtime
}
append tzname / [::format %02d $stdHour] \
@@ -3368,10 +3298,9 @@ proc ::tcl::clock::GuessWindowsTimeZone {} {
: [::format %02d $stdSecond]
}
dict set WinZoneInfo $data $tzname
- }
+ }
return [dict get $WinZoneInfo $data]
-
}
#----------------------------------------------------------------------
@@ -3400,18 +3329,18 @@ proc ::tcl::clock::LoadTimeZoneFile { fileName } {
return
}
- # Since an unsafe interp uses the [clock] command in the master,
- # this code is security sensitive. Make sure that the path name
- # cannot escape the given directory.
+ # Since an unsafe interp uses the [clock] command in the master, this code
+ # is security sensitive. Make sure that the path name cannot escape the
+ # given directory.
if { ![regexp {^[[.-.][:alpha:]_]+(?:/[[.-.][:alpha:]_]+)*$} $fileName] } {
return -code error \
-errorcode [list CLOCK badTimeZone $:fileName] \
"time zone \":$fileName\" not valid"
}
- if { [catch {
+ try {
source -encoding utf-8 [file join $DataDir $fileName]
- }] } {
+ } on error {} {
return -code error \
-errorcode [list CLOCK badTimeZone :$fileName] \
"time zone \":$fileName\" not found"
@@ -3429,8 +3358,8 @@ proc ::tcl::clock::LoadTimeZoneFile { fileName } {
# fileName - Relative path name of the file to load.
#
# Results:
-# Returns an empty result normally; returns an error if no
-# Olson file was found or the file was malformed in some way.
+# Returns an empty result normally; returns an error if no Olson file
+# was found or the file was malformed in some way.
#
# Side effects:
# TZData(:fileName) contains the time zone data
@@ -3438,12 +3367,11 @@ proc ::tcl::clock::LoadTimeZoneFile { fileName } {
#----------------------------------------------------------------------
proc ::tcl::clock::LoadZoneinfoFile { fileName } {
-
variable ZoneinfoPaths
- # Since an unsafe interp uses the [clock] command in the master,
- # this code is security sensitive. Make sure that the path name
- # cannot escape the given directory.
+ # Since an unsafe interp uses the [clock] command in the master, this code
+ # is security sensitive. Make sure that the path name cannot escape the
+ # given directory.
if { ![regexp {^[[.-.][:alpha:]_]+(?:/[[.-.][:alpha:]_]+)*$} $fileName] } {
return -code error \
@@ -3472,19 +3400,18 @@ proc ::tcl::clock::LoadZoneinfoFile { fileName } {
# fname - Absolute path name of the file.
#
# Results:
-# Returns an empty result normally; returns an error if no
-# Olson file was found or the file was malformed in some way.
+# Returns an empty result normally; returns an error if no Olson file
+# was found or the file was malformed in some way.
#
# Side effects:
# TZData(:fileName) contains the time zone data
#
#----------------------------------------------------------------------
-
proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
variable MINWIDE
variable TZData
- if { ![info exists fname] } {
+ if { ![file exists $fname] } {
return -code error "$fileName not found"
}
@@ -3499,8 +3426,8 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
set d [read $f]
close $f
- # The file begins with a magic number, sixteen reserved bytes,
- # and then six 4-byte integers giving counts of fileds in the file.
+ # The file begins with a magic number, sixteen reserved bytes, and then
+ # six 4-byte integers giving counts of fileds in the file.
binary scan $d a4a1x15IIIIII \
magic version nIsGMT nIsStd nLeap nTime nType nChar
@@ -3518,18 +3445,19 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
return -code error "$fileName contains leap seconds"
}
- # In a version 2 file, we use the second part of the file, which
- # contains 64-bit transition times.
+ # In a version 2 file, we use the second part of the file, which contains
+ # 64-bit transition times.
if {$version eq "2"} {
- set seek [expr {44
- + 5 * $nTime
- + 6 * $nType
- + 4 * $nLeap
- + $nIsStd
- + $nIsGMT
- + $nChar
- }]
+ set seek [expr {
+ 44
+ + 5 * $nTime
+ + 6 * $nType
+ + 4 * $nLeap
+ + $nIsStd
+ + $nIsGMT
+ + $nChar
+ }]
binary scan $d @${seek}a4a1x15IIIIII \
magic version nIsGMT nIsStd nLeap nTime nType nChar
if {$magic ne {TZif}} {
@@ -3553,9 +3481,9 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
}
set codes [linsert $codes 0 0]
- # Next come ${nType} time type descriptions, each of which has an
- # offset (seconds east of GMT), a DST indicator, and an index into
- # the abbreviation text.
+ # Next come ${nType} time type descriptions, each of which has an offset
+ # (seconds east of GMT), a DST indicator, and an index into the
+ # abbreviation text.
for { set i 0 } { $i < $nType } { incr i } {
binary scan $d @${seek}Icc gmtOff isDst abbrInd
@@ -3563,10 +3491,10 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
incr seek 6
}
- # Next come $nChar characters of time zone name abbreviations,
- # which are null-terminated.
- # We build them up into a dictionary indexed by character index,
- # because that's what's in the indices above.
+ # Next come $nChar characters of time zone name abbreviations, which are
+ # null-terminated.
+ # We build them up into a dictionary indexed by character index, because
+ # that's what's in the indices above.
binary scan $d @${seek}a${nChar} abbrs
incr seek ${nChar}
@@ -3574,8 +3502,10 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
set i 0
set abbrevs {}
foreach a $abbrList {
- dict set abbrevs $i $a
- incr i [expr { [string length $a] + 1 }]
+ for {set j 0} {$j <= [string length $a]} {incr j} {
+ dict set abbrevs $i [string range $a $j end]
+ incr i
+ }
}
# Package up a list of tuples, each of which contains transition time,
@@ -3594,8 +3524,8 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
}
# In a version 2 file, there is also a POSIX-style time zone description
- # at the very end of the file. To get to it, skip over
- # nLeap leap second values (8 bytes each),
+ # at the very end of the file. To get to it, skip over nLeap leap second
+ # values (8 bytes each),
# nIsStd standard/DST indicators and nIsGMT UTC/local indicators.
if {$version eq {2}} {
@@ -3628,8 +3558,8 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
# tz Time zone specifier to be interpreted
#
# Results:
-# Returns a dictionary whose values contain the various pieces of
-# the time zone specification.
+# Returns a dictionary whose values contain the various pieces of the
+# time zone specification.
#
# Side effects:
# None.
@@ -3640,7 +3570,7 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
# The following keys are present in the dictionary:
# stdName - Name of the time zone when Daylight Saving Time
# is not in effect.
-# stdSignum - Sign (+, -, or empty) of the offset from Greenwich
+# stdSignum - Sign (+, -, or empty) of the offset from Greenwich
# to the given (non-DST) time zone. + and the empty
# string denote zones west of Greenwich, - denotes east
# of Greenwich; this is contrary to the ISO convention
@@ -3685,14 +3615,13 @@ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
# endHours, endMinutes, endSeconds -
# Specify the end of DST in the same way that the start* fields
# specify the beginning of DST.
-#
-# This procedure serves only to break the time specifier into fields.
-# No attempt is made to canonicalize the fields or supply default values.
+#
+# This procedure serves only to break the time specifier into fields. No
+# attempt is made to canonicalize the fields or supply default values.
#
#----------------------------------------------------------------------
proc ::tcl::clock::ParsePosixTimeZone { tz } {
-
if {[regexp -expanded -nocase -- {
^
# 1 - Standard time zone name
@@ -3703,8 +3632,8 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } {
([[:digit:]]{1,2})
(?:
# 4 - Standard time zone offset, minutes
- : ([[:digit:]]{1,2})
- (?:
+ : ([[:digit:]]{1,2})
+ (?:
# 5 - Standard time zone offset, seconds
: ([[:digit:]]{1,2} )
)?
@@ -3720,8 +3649,8 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } {
([[:digit:]]{1,2})
(?:
# 9 - DST time zone offset, minutes
- : ([[:digit:]]{1,2})
- (?:
+ : ([[:digit:]]{1,2})
+ (?:
# 10 - DST time zone offset, seconds
: ([[:digit:]]{1,2})
)?
@@ -3734,8 +3663,8 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } {
( J ? ) ( [[:digit:]]+ )
| M
# 13 - Month number 14 - Week of month 15 - Day of week
- ( [[:digit:]] + )
- [.] ( [[:digit:]] + )
+ ( [[:digit:]] + )
+ [.] ( [[:digit:]] + )
[.] ( [[:digit:]] + )
)
(?:
@@ -3756,8 +3685,8 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } {
( J ? ) ( [[:digit:]]+ )
| M
# 21 - Month number 22 - Week of month 23 - Day of week
- ( [[:digit:]] + )
- [.] ( [[:digit:]] + )
+ ( [[:digit:]] + )
+ [.] ( [[:digit:]] + )
[.] ( [[:digit:]] + )
)
(?:
@@ -3784,27 +3713,21 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } {
x(endJ) x(endDayOfYear) \
x(endMonth) x(endWeekOfMonth) x(endDayOfWeek) \
x(endHours) x(endMinutes) x(endSeconds)] } {
-
# it's a good timezone
return [array get x]
-
- } else {
-
- return -code error\
- -errorcode [list CLOCK badTimeZone $tz] \
- "unable to parse time zone specification \"$tz\""
-
}
+ return -code error\
+ -errorcode [list CLOCK badTimeZone $tz] \
+ "unable to parse time zone specification \"$tz\""
}
#----------------------------------------------------------------------
#
# ProcessPosixTimeZone --
#
-# Handle a Posix time zone after it's been broken out into
-# fields.
+# Handle a Posix time zone after it's been broken out into fields.
#
# Parameters:
# z - Dictionary returned from 'ParsePosixTimeZone'
@@ -3818,7 +3741,6 @@ proc ::tcl::clock::ParsePosixTimeZone { tz } {
#----------------------------------------------------------------------
proc ::tcl::clock::ProcessPosixTimeZone { z } {
-
variable MINWIDE
variable TZData
@@ -3833,20 +3755,20 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } {
} else {
set stdSignum -1
}
- set stdHours [lindex [::scan [dict get $z stdHours] %d] 0]
+ set stdHours [lindex [::scan [dict get $z stdHours] %d] 0]
if { [dict get $z stdMinutes] ne {} } {
- set stdMinutes [lindex [::scan [dict get $z stdMinutes] %d] 0]
+ set stdMinutes [lindex [::scan [dict get $z stdMinutes] %d] 0]
} else {
set stdMinutes 0
}
if { [dict get $z stdSeconds] ne {} } {
- set stdSeconds [lindex [::scan [dict get $z stdSeconds] %d] 0]
+ set stdSeconds [lindex [::scan [dict get $z stdSeconds] %d] 0]
} else {
set stdSeconds 0
}
- set stdOffset [expr { ( ( $stdHours * 60 + $stdMinutes )
- * 60 + $stdSeconds )
- * $stdSignum }]
+ set stdOffset [expr {
+ (($stdHours * 60 + $stdMinutes) * 60 + $stdSeconds) * $stdSignum
+ }]
set data [list [list $MINWIDE $stdOffset 0 $stdName]]
# If there's no daylight zone, we're done
@@ -3869,27 +3791,34 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } {
if { [dict get $z dstHours] eq {} } {
set dstOffset [expr { 3600 + $stdOffset }]
} else {
- set dstHours [lindex [::scan [dict get $z dstHours] %d] 0]
+ set dstHours [lindex [::scan [dict get $z dstHours] %d] 0]
if { [dict get $z dstMinutes] ne {} } {
- set dstMinutes [lindex [::scan [dict get $z dstMinutes] %d] 0]
+ set dstMinutes [lindex [::scan [dict get $z dstMinutes] %d] 0]
} else {
set dstMinutes 0
}
if { [dict get $z dstSeconds] ne {} } {
- set dstSeconds [lindex [::scan [dict get $z dstSeconds] %d] 0]
+ set dstSeconds [lindex [::scan [dict get $z dstSeconds] %d] 0]
} else {
set dstSeconds 0
}
- set dstOffset [expr { ( ( $dstHours * 60 + $dstMinutes )
- * 60 + $dstSeconds )
- * $dstSignum }]
+ set dstOffset [expr {
+ (($dstHours*60 + $dstMinutes) * 60 + $dstSeconds) * $dstSignum
+ }]
}
# Fill in defaults for European or US DST rules
-
- if { [dict get $z startDayOfYear] eq {}
- && [dict get $z startMonth] eq {} } {
- if {($stdHours>=0) && ($stdHours<=12)} {
+ # US start time is the second Sunday in March
+ # EU start time is the last Sunday in March
+ # US end time is the first Sunday in November.
+ # EU end time is the last Sunday in October
+
+ if {
+ [dict get $z startDayOfYear] eq {}
+ && [dict get $z startMonth] eq {}
+ } then {
+ if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} {
+ # EU
dict set z startWeekOfMonth 5
if {$stdHours>2} {
dict set z startHours 2
@@ -3897,6 +3826,7 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } {
dict set z startHours [expr {$stdHours+1}]
}
} else {
+ # US
dict set z startWeekOfMonth 2
dict set z startHours 2
}
@@ -3905,9 +3835,12 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } {
dict set z startMinutes 0
dict set z startSeconds 0
}
- if { [dict get $z endDayOfYear] eq {}
- && [dict get $z endMonth] eq {} } {
- if {($stdHours>=0) && ($stdHours<=12)} {
+ if {
+ [dict get $z endDayOfYear] eq {}
+ && [dict get $z endMonth] eq {}
+ } then {
+ if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} {
+ # EU
dict set z endMonth 10
dict set z endWeekOfMonth 5
if {$stdHours>2} {
@@ -3916,6 +3849,7 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } {
dict set z endHours [expr {$stdHours+2}]
}
} else {
+ # US
dict set z endMonth 11
dict set z endWeekOfMonth 1
dict set z endHours 2
@@ -3927,7 +3861,7 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } {
# Put DST in effect in all years from 1916 to 2099.
- for { set y 1916 } { $y < 2099 } { incr y } {
+ for { set y 1916 } { $y < 2100 } { incr y } {
set startTime [DeterminePosixDSTTime $z start $y]
incr startTime [expr { - wide($stdOffset) }]
set endTime [DeterminePosixDSTTime $z end $y]
@@ -3944,15 +3878,14 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } {
}
return $data
-
-}
+}
#----------------------------------------------------------------------
#
# DeterminePosixDSTTime --
#
-# Determines the time that Daylight Saving Time starts or ends
-# from a Posix time zone specification.
+# Determines the time that Daylight Saving Time starts or ends from a
+# Posix time zone specification.
#
# Parameters:
# z - Time zone data returned from ParsePosixTimeZone.
@@ -3962,13 +3895,12 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } {
# y - The year for which the transition time is to be determined.
#
# Results:
-# Returns the transition time as a count of seconds from
-# the epoch. The time is relative to the wall clock, not UTC.
+# Returns the transition time as a count of seconds from the epoch. The
+# time is relative to the wall clock, not UTC.
#
#----------------------------------------------------------------------
proc ::tcl::clock::DeterminePosixDSTTime { z bound y } {
-
variable FEB_28
# Determine the start or end day of DST
@@ -3976,18 +3908,16 @@ proc ::tcl::clock::DeterminePosixDSTTime { z bound y } {
set date [dict create era CE year $y]
set doy [dict get $z ${bound}DayOfYear]
if { $doy ne {} } {
-
# Time was specified as a day of the year
if { [dict get $z ${bound}J] ne {}
- && [IsGregorianLeapYear $y]
+ && [IsGregorianLeapYear $y]
&& ( $doy > $FEB_28 ) } {
incr doy
}
dict set date dayOfYear $doy
set date [GetJulianDayFromEraYearDay $date[set date {}] 2361222]
} else {
-
# Time was specified as a day of the week within a month
dict set date month [dict get $z ${bound}Month]
@@ -4002,8 +3932,9 @@ proc ::tcl::clock::DeterminePosixDSTTime { z bound y } {
}
set jd [dict get $date julianDay]
- set seconds [expr { wide($jd) * wide(86400)
- - wide(210866803200) }]
+ set seconds [expr {
+ wide($jd) * wide(86400) - wide(210866803200)
+ }]
set h [dict get $z ${bound}Hours]
if { $h eq {} } {
@@ -4025,7 +3956,6 @@ proc ::tcl::clock::DeterminePosixDSTTime { z bound y } {
}
set tod [expr { ( $h * 60 + $m ) * 60 + $s }]
return [expr { $seconds + $tod }]
-
}
#----------------------------------------------------------------------
@@ -4043,26 +3973,26 @@ proc ::tcl::clock::DeterminePosixDSTTime { z bound y } {
# for the target locale.
#
# Results:
-# Returns the dictionary, augmented with the keys, 'localeEra'
-# and 'localeYear'.
+# Returns the dictionary, augmented with the keys, 'localeEra' and
+# 'localeYear'.
#
#----------------------------------------------------------------------
proc ::tcl::clock::GetLocaleEra { date etable } {
-
set index [BSearch $etable [dict get $date localSeconds]]
if { $index < 0} {
dict set date localeEra \
[::format %02d [expr { [dict get $date year] / 100 }]]
- dict set date localeYear \
- [expr { [dict get $date year] % 100 }]
+ dict set date localeYear [expr {
+ [dict get $date year] % 100
+ }]
} else {
dict set date localeEra [lindex $etable $index 1]
- dict set date localeYear [expr { [dict get $date year]
- - [lindex $etable $index 2] }]
+ dict set date localeYear [expr {
+ [dict get $date year] - [lindex $etable $index 2]
+ }]
}
return $date
-
}
#----------------------------------------------------------------------
@@ -4080,10 +4010,9 @@ proc ::tcl::clock::GetLocaleEra { date etable } {
# adopted in the current locale.
#
# Results:
-# Returns the given dictionary augmented with a 'julianDay' key
-# whose value is the desired Julian Day Number, and a 'gregorian'
-# key that specifies whether the calendar is Gregorian (1) or
-# Julian (0).
+# Returns the given dictionary augmented with a 'julianDay' key whose
+# value is the desired Julian Day Number, and a 'gregorian' key that
+# specifies whether the calendar is Gregorian (1) or Julian (0).
#
# Side effects:
# None.
@@ -4094,7 +4023,6 @@ proc ::tcl::clock::GetLocaleEra { date etable } {
#----------------------------------------------------------------------
proc ::tcl::clock::GetJulianDayFromEraYearDay {date changeover} {
-
# Get absolute year number from the civil year
switch -exact -- [dict get $date era] {
@@ -4110,21 +4038,25 @@ proc ::tcl::clock::GetJulianDayFromEraYearDay {date changeover} {
# Try the Gregorian calendar first.
dict set date gregorian 1
- set jd [expr { 1721425
- + [dict get $date dayOfYear]
- + ( 365 * $ym1 )
- + ( $ym1 / 4 )
- - ( $ym1 / 100 )
- + ( $ym1 / 400 ) }]
-
+ set jd [expr {
+ 1721425
+ + [dict get $date dayOfYear]
+ + ( 365 * $ym1 )
+ + ( $ym1 / 4 )
+ - ( $ym1 / 100 )
+ + ( $ym1 / 400 )
+ }]
+
# If the date is before the Gregorian change, use the Julian calendar.
if { $jd < $changeover } {
dict set date gregorian 0
- set jd [expr { 1721423
- + [dict get $date dayOfYear]
- + ( 365 * $ym1 )
- + ( $ym1 / 4 ) }]
+ set jd [expr {
+ 1721423
+ + [dict get $date dayOfYear]
+ + ( 365 * $ym1 )
+ + ( $ym1 / 4 )
+ }]
}
dict set date julianDay $jd
@@ -4135,8 +4067,8 @@ proc ::tcl::clock::GetJulianDayFromEraYearDay {date changeover} {
#
# GetJulianDayFromEraYearMonthWeekDay --
#
-# Determines the Julian Day number corresponding to the nth
-# given day-of-the-week in a given month.
+# Determines the Julian Day number corresponding to the nth given
+# day-of-the-week in a given month.
#
# Parameters:
# date - Dictionary containing the keys, 'era', 'year', 'month'
@@ -4155,10 +4087,9 @@ proc ::tcl::clock::GetJulianDayFromEraYearDay {date changeover} {
#----------------------------------------------------------------------
proc ::tcl::clock::GetJulianDayFromEraYearMonthWeekDay {date changeover} {
-
- # Come up with a reference day; either the zeroeth day of the
- # given month (dayOfWeekInMonth >= 0) or the seventh day of the
- # following month (dayOfWeekInMonth < 0)
+ # Come up with a reference day; either the zeroeth day of the given month
+ # (dayOfWeekInMonth >= 0) or the seventh day of the following month
+ # (dayOfWeekInMonth < 0)
set date2 $date
set week [dict get $date dayOfWeekInMonth]
@@ -4174,7 +4105,6 @@ proc ::tcl::clock::GetJulianDayFromEraYearMonthWeekDay {date changeover} {
[dict get $date2 julianDay]]
dict set date julianDay [expr { $wd0 + 7 * $week }]
return $date
-
}
#----------------------------------------------------------------------
@@ -4197,9 +4127,8 @@ proc ::tcl::clock::GetJulianDayFromEraYearMonthWeekDay {date changeover} {
#----------------------------------------------------------------------
proc ::tcl::clock::IsGregorianLeapYear { date } {
-
switch -exact -- [dict get $date era] {
- BCE {
+ BCE {
set year [expr { 1 - [dict get $date year]}]
}
CE {
@@ -4217,15 +4146,14 @@ proc ::tcl::clock::IsGregorianLeapYear { date } {
} else {
return 1
}
-
}
#----------------------------------------------------------------------
#
# WeekdayOnOrBefore --
#
-# Determine the nearest day of week (given by the 'weekday'
-# parameter, Sunday==0) on or before a given Julian Day.
+# Determine the nearest day of week (given by the 'weekday' parameter,
+# Sunday==0) on or before a given Julian Day.
#
# Parameters:
# weekday -- Day of the week
@@ -4240,18 +4168,16 @@ proc ::tcl::clock::IsGregorianLeapYear { date } {
#----------------------------------------------------------------------
proc ::tcl::clock::WeekdayOnOrBefore { weekday j } {
-
set k [expr { ( $weekday + 6 ) % 7 }]
return [expr { $j - ( $j - $k ) % 7 }]
-
}
#----------------------------------------------------------------------
#
# BSearch --
#
-# Service procedure that does binary search in several places
-# inside the 'clock' command.
+# Service procedure that does binary search in several places inside the
+# 'clock' command.
#
# Parameters:
# list - List of lists, sorted in ascending order by the
@@ -4259,8 +4185,8 @@ proc ::tcl::clock::WeekdayOnOrBefore { weekday j } {
# key - Value to search for
#
# Results:
-# Returns the index of the greatest element in $list that is less
-# than or equal to $key.
+# Returns the index of the greatest element in $list that is less than
+# or equal to $key.
#
# Side effects:
# None.
@@ -4268,7 +4194,6 @@ proc ::tcl::clock::WeekdayOnOrBefore { weekday j } {
#----------------------------------------------------------------------
proc ::tcl::clock::BSearch { list key } {
-
if {[llength $list] == 0} {
return -1
}
@@ -4280,13 +4205,12 @@ proc ::tcl::clock::BSearch { list key } {
set u [expr { [llength $list] - 1 }]
while { $l < $u } {
-
# At this point, we know that
# $k >= [lindex $list $l 0]
# Either $u == [llength $list] or else $k < [lindex $list $u+1 0]
# We find the midpoint of the interval {l,u} rounded UP, compare
- # against it, and set l or u to maintain the invariant. Note
- # that the interval shrinks at each step, guaranteeing convergence.
+ # against it, and set l or u to maintain the invariant. Note that the
+ # interval shrinks at each step, guaranteeing convergence.
set m [expr { ( $l + $u + 1 ) / 2 }]
if { $key >= [lindex $list $m 0] } {
@@ -4330,15 +4254,14 @@ proc ::tcl::clock::BSearch { list key } {
# order.
#
# Notes:
-# It is possible that adding a number of months or years will adjust
-# the day of the month as well. For instance, the time at
-# one month after 31 January is either 28 or 29 February, because
-# February has fewer than 31 days.
+# It is possible that adding a number of months or years will adjust the
+# day of the month as well. For instance, the time at one month after
+# 31 January is either 28 or 29 February, because February has fewer
+# than 31 days.
#
#----------------------------------------------------------------------
proc ::tcl::clock::add { clockval args } {
-
if { [llength $args] % 2 != 0 } {
set cmdName "clock add"
return -code error \
@@ -4357,15 +4280,10 @@ proc ::tcl::clock::add { clockval args } {
set timezone [GetSystemTimeZone]
foreach { a b } $args {
-
if { [string is integer -strict $a] } {
-
lappend offsets $a $b
-
} else {
-
switch -exact -- $a {
-
-g - -gm - -gmt {
set gmt $b
}
@@ -4377,8 +4295,7 @@ proc ::tcl::clock::add { clockval args } {
set timezone $b
}
default {
- return -code error \
- -errorcode [list CLOCK badSwitch $a] \
+ throw [list CLOCK badSwitch $a] \
"bad switch \"$a\",\
must be -gmt, -locale or -timezone"
}
@@ -4394,20 +4311,16 @@ proc ::tcl::clock::add { clockval args } {
"cannot use -gmt and -timezone in same call"
}
if { [catch { expr { wide($clockval) } } result] } {
- return -code error \
- "expected integer but got \"$clockval\""
+ return -code error "expected integer but got \"$clockval\""
}
- if { ![string is boolean $gmt] } {
- return -code error \
- "expected boolean value but got \"$gmt\""
- } else {
- if { $gmt } {
- set timezone :GMT
- }
+ if { ![string is boolean -strict $gmt] } {
+ return -code error "expected boolean value but got \"$gmt\""
+ } elseif { $gmt } {
+ set timezone :GMT
}
EnterLocale $locale oldLocale
-
+
set changeover [mc GREGORIAN_CHANGE_DATE]
if {[catch {SetupTimeZone $timezone} retval opts]} {
@@ -4415,29 +4328,25 @@ proc ::tcl::clock::add { clockval args } {
return -options $opts $retval
}
- set status [catch {
-
+ try {
foreach { quantity unit } $offsets {
-
switch -exact -- $unit {
-
years - year {
- set clockval \
- [AddMonths [expr { 12 * $quantity }] \
- $clockval $timezone $changeover]
+ set clockval [AddMonths [expr { 12 * $quantity }] \
+ $clockval $timezone $changeover]
}
months - month {
set clockval [AddMonths $quantity $clockval $timezone \
- $changeover]
+ $changeover]
}
weeks - week {
set clockval [AddDays [expr { 7 * $quantity }] \
- $clockval $timezone $changeover]
+ $clockval $timezone $changeover]
}
days - day {
set clockval [AddDays $quantity $clockval $timezone \
- $changeover]
+ $changeover]
}
hours - hour {
@@ -4451,31 +4360,24 @@ proc ::tcl::clock::add { clockval args } {
}
default {
- error "unknown unit \"$unit\", must be \
- years, months, weeks, days, hours, minutes or seconds" \
- "unknown unit \"$unit\", must be \
- years, months, weeks, days, hours, minutes or seconds" \
- [list CLOCK badUnit $unit]
+ throw [list CLOCK badUnit $unit] \
+ "unknown unit \"$unit\", must be \
+ years, months, weeks, days, hours, minutes or seconds"
}
}
}
- } result opts]
-
- # Restore the locale
-
- if { [info exists oldLocale] } {
- mclocale $oldLocale
- }
+ return $clockval
+ } trap CLOCK {result opts} {
+ # Conceal the innards of [clock] when it's an expected error
+ dict unset opts -errorinfo
+ return -options $opts $result
+ } finally {
+ # Restore the locale
- if { $status == 1 } {
- if { [lindex [dict get $opts -errorcode] 0] eq {CLOCK} } {
- dict unset opts -errorinfo
+ if { [info exists oldLocale] } {
+ mclocale $oldLocale
}
- return -options $opts $result
- } else {
- return $clockval
}
-
}
#----------------------------------------------------------------------
@@ -4500,7 +4402,6 @@ proc ::tcl::clock::add { clockval args } {
#----------------------------------------------------------------------
proc ::tcl::clock::AddMonths { months clockval timezone changeover } {
-
variable DaysInRomanMonthInCommonYear
variable DaysInRomanMonthInLeapYear
variable TZData
@@ -4508,8 +4409,9 @@ proc ::tcl::clock::AddMonths { months clockval timezone changeover } {
# Convert the time to year, month, day, and fraction of day.
set date [GetDateFields $clockval $TZData($timezone) $changeover]
- dict set date secondOfDay [expr { [dict get $date localSeconds]
- % 86400 }]
+ dict set date secondOfDay [expr {
+ [dict get $date localSeconds] % 86400
+ }]
dict set date tzName $timezone
# Add the requisite number of months
@@ -4538,23 +4440,23 @@ proc ::tcl::clock::AddMonths { months clockval timezone changeover } {
set date [GetJulianDayFromEraYearMonthDay \
$date[set date {}]\
$changeover]
- dict set date localSeconds \
- [expr { -210866803200
- + ( 86400 * wide([dict get $date julianDay]) )
- + [dict get $date secondOfDay] }]
+ dict set date localSeconds [expr {
+ -210866803200
+ + ( 86400 * wide([dict get $date julianDay]) )
+ + [dict get $date secondOfDay]
+ }]
set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) \
$changeover]
return [dict get $date seconds]
-
}
#----------------------------------------------------------------------
#
# AddDays --
#
-# Add a given number of days to a given clock value in a given
-# time zone.
+# Add a given number of days to a given clock value in a given time
+# zone.
#
# Parameters:
# days - Number of days to add (may be negative)
@@ -4564,8 +4466,7 @@ proc ::tcl::clock::AddMonths { months clockval timezone changeover } {
# in the target locale.
#
# Results:
-# Returns the new clock value as a number of seconds since
-# the epoch.
+# Returns the new clock value as a number of seconds since the epoch.
#
# Side effects:
# None.
@@ -4573,14 +4474,14 @@ proc ::tcl::clock::AddMonths { months clockval timezone changeover } {
#----------------------------------------------------------------------
proc ::tcl::clock::AddDays { days clockval timezone changeover } {
-
variable TZData
# Convert the time to Julian Day
set date [GetDateFields $clockval $TZData($timezone) $changeover]
- dict set date secondOfDay [expr { [dict get $date localSeconds]
- % 86400 }]
+ dict set date secondOfDay [expr {
+ [dict get $date localSeconds] % 86400
+ }]
dict set date tzName $timezone
# Add the requisite number of days
@@ -4589,23 +4490,23 @@ proc ::tcl::clock::AddDays { days clockval timezone changeover } {
# Reconvert to a number of seconds
- dict set date localSeconds \
- [expr { -210866803200
- + ( 86400 * wide([dict get $date julianDay]) )
- + [dict get $date secondOfDay] }]
+ dict set date localSeconds [expr {
+ -210866803200
+ + ( 86400 * wide([dict get $date julianDay]) )
+ + [dict get $date secondOfDay]
+ }]
set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) \
$changeover]
return [dict get $date seconds]
-
}
#----------------------------------------------------------------------
#
# mc --
#
-# Wrapper around ::msgcat::mc that caches the result according
-# to the locale.
+# Wrapper around ::msgcat::mc that caches the result according to the
+# locale.
#
# Parameters:
# Accepts the name of the message to retrieve.
@@ -4626,11 +4527,10 @@ proc ::tcl::clock::mc { name } {
set Locale [mclocale]
if { [dict exists $McLoaded $Locale $name] } {
return [dict get $McLoaded $Locale $name]
- } else {
- set val [::msgcat::mc $name]
- dict set McLoaded $Locale $name $val
- return $val
}
+ set val [::msgcat::mc $name]
+ dict set McLoaded $Locale $name $val
+ return $val
}
#----------------------------------------------------------------------
@@ -4651,7 +4551,6 @@ proc ::tcl::clock::mc { name } {
#----------------------------------------------------------------------
proc ::tcl::clock::ClearCaches {} {
-
variable FormatProc
variable LocaleNumeralCache
variable McLoaded
@@ -4671,5 +4570,4 @@ proc ::tcl::clock::ClearCaches {} {
catch {unset CachedSystemTimeZone}
set TimeZoneBad {}
InitTZData
-
}
diff --git a/library/dde/pkgIndex.tcl b/library/dde/pkgIndex.tcl
index 3125ada..4cf73d0 100644
--- a/library/dde/pkgIndex.tcl
+++ b/library/dde/pkgIndex.tcl
@@ -1,7 +1,7 @@
-if {![package vsatisfies [package provide Tcl] 8]} {return}
-if {[string compare $::tcl_platform(platform) windows]} {return}
-if {[info exists ::tcl_platform(debug)]} {
- package ifneeded dde 1.3.2 [list load [file join $dir tcldde13g.dll] dde]
+if {([info commands ::tcl::pkgconfig] eq "")
+ || ([info sharedlibextension] ne ".dll")} return
+if {[::tcl::pkgconfig get debug]} {
+ package ifneeded dde 1.4.0 [list load [file join $dir tcldde14g.dll] dde]
} else {
- package ifneeded dde 1.3.2 [list load [file join $dir tcldde13.dll] dde]
+ package ifneeded dde 1.4.0 [list load [file join $dir tcldde14.dll] dde]
}
diff --git a/library/encoding/tis-620.enc b/library/encoding/tis-620.enc
index c233be5..c233be5 100755..100644
--- a/library/encoding/tis-620.enc
+++ b/library/encoding/tis-620.enc
diff --git a/library/history.tcl b/library/history.tcl
index 3a3f16a..51d2404 100644
--- a/library/history.tcl
+++ b/library/history.tcl
@@ -2,22 +2,20 @@
#
# Implementation of the history command.
#
-# RCS: @(#) $Id: history.tcl,v 1.7 2005/07/23 04:12:49 dgp Exp $
-#
# Copyright (c) 1997 Sun Microsystems, Inc.
#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-
-# The tcl::history array holds the history list and
-# some additional bookkeeping variables.
+
+# The tcl::history array holds the history list and some additional
+# bookkeeping variables.
#
# nextid the index used for the next history list item.
# keep the max size of the history list
# oldest the index of the oldest item in the history.
-namespace eval tcl {
+namespace eval ::tcl {
variable history
if {![info exists history]} {
array set history {
@@ -26,163 +24,78 @@ namespace eval tcl {
oldest -20
}
}
-}
+ namespace ensemble create -command ::tcl::history -map {
+ add ::tcl::HistAdd
+ change ::tcl::HistChange
+ clear ::tcl::HistClear
+ event ::tcl::HistEvent
+ info ::tcl::HistInfo
+ keep ::tcl::HistKeep
+ nextid ::tcl::HistNextID
+ redo ::tcl::HistRedo
+ }
+}
+
# history --
#
# This is the main history command. See the man page for its interface.
-# This does argument checking and calls helper procedures in the
-# history namespace.
+# This does some argument checking and calls the helper ensemble in the
+# tcl namespace.
-proc history {args} {
- set len [llength $args]
- if {$len == 0} {
- return [tcl::HistInfo]
- }
- set key [lindex $args 0]
- set options "add, change, clear, event, info, keep, nextid, or redo"
- switch -glob -- $key {
- a* { # history add
+proc ::history {args} {
+ # If no command given, we're doing 'history info'. Can't be done with an
+ # ensemble unknown handler, as those don't fire when no subcommand is
+ # given at all.
- if {$len > 3} {
- return -code error "wrong # args: should be \"history add event ?exec?\""
- }
- if {![string match $key* add]} {
- return -code error "bad option \"$key\": must be $options"
- }
- if {$len == 3} {
- set arg [lindex $args 2]
- if {! ([string match e* $arg] && [string match $arg* exec])} {
- return -code error "bad argument \"$arg\": should be \"exec\""
- }
- }
- return [tcl::HistAdd [lindex $args 1] [lindex $args 2]]
- }
- ch* { # history change
-
- if {($len > 3) || ($len < 2)} {
- return -code error "wrong # args: should be \"history change newValue ?event?\""
- }
- if {![string match $key* change]} {
- return -code error "bad option \"$key\": must be $options"
- }
- if {$len == 2} {
- set event 0
- } else {
- set event [lindex $args 2]
- }
-
- return [tcl::HistChange [lindex $args 1] $event]
- }
- cl* { # history clear
-
- if {($len > 1)} {
- return -code error "wrong # args: should be \"history clear\""
- }
- if {![string match $key* clear]} {
- return -code error "bad option \"$key\": must be $options"
- }
- return [tcl::HistClear]
- }
- e* { # history event
-
- if {$len > 2} {
- return -code error "wrong # args: should be \"history event ?event?\""
- }
- if {![string match $key* event]} {
- return -code error "bad option \"$key\": must be $options"
- }
- if {$len == 1} {
- set event -1
- } else {
- set event [lindex $args 1]
- }
- return [tcl::HistEvent $event]
- }
- i* { # history info
-
- if {$len > 2} {
- return -code error "wrong # args: should be \"history info ?count?\""
- }
- if {![string match $key* info]} {
- return -code error "bad option \"$key\": must be $options"
- }
- return [tcl::HistInfo [lindex $args 1]]
- }
- k* { # history keep
-
- if {$len > 2} {
- return -code error "wrong # args: should be \"history keep ?count?\""
- }
- if {$len == 1} {
- return [tcl::HistKeep]
- } else {
- set limit [lindex $args 1]
- if {[catch {expr {~$limit}}] || ($limit < 0)} {
- return -code error "illegal keep count \"$limit\""
- }
- return [tcl::HistKeep $limit]
- }
- }
- n* { # history nextid
-
- if {$len > 1} {
- return -code error "wrong # args: should be \"history nextid\""
- }
- if {![string match $key* nextid]} {
- return -code error "bad option \"$key\": must be $options"
- }
- return [expr {$tcl::history(nextid) + 1}]
- }
- r* { # history redo
-
- if {$len > 2} {
- return -code error "wrong # args: should be \"history redo ?event?\""
- }
- if {![string match $key* redo]} {
- return -code error "bad option \"$key\": must be $options"
- }
- return [tcl::HistRedo [lindex $args 1]]
- }
- default {
- return -code error "bad option \"$key\": must be $options"
- }
+ if {![llength $args]} {
+ set args info
}
-}
+ # Tricky stuff needed to make stack and errors come out right!
+ tailcall apply {arglist {tailcall history {*}$arglist} ::tcl} $args
+}
+
# tcl::HistAdd --
#
# Add an item to the history, and optionally eval it at the global scope
#
# Parameters:
-# command the command to add
-# exec (optional) a substring of "exec" causes the
-# command to be evaled.
+# event the command to add
+# exec (optional) a substring of "exec" causes the command to
+# be evaled.
# Results:
# If executing, then the results of the command are returned
#
# Side Effects:
# Adds to the history list
- proc tcl::HistAdd {command {exec {}}} {
+proc ::tcl::HistAdd {event {exec {}}} {
variable history
+ if {
+ [prefix longest {exec {}} $exec] eq ""
+ && [llength [info level 0]] == 3
+ } then {
+ return -code error "bad argument \"$exec\": should be \"exec\""
+ }
+
# Do not add empty commands to the history
- if {[string trim $command] eq ""} {
+ if {[string trim $event] eq ""} {
return ""
}
- set i [incr history(nextid)]
- set history($i) $command
- set j [incr history(oldest)]
- unset -nocomplain history($j)
- if {[string match e* $exec]} {
- return [uplevel #0 $command]
- } else {
- return {}
+ # Maintain the history
+ set history([incr history(nextid)]) $event
+ unset -nocomplain history([incr history(oldest)])
+
+ # Only execute if 'exec' (or non-empty prefix of it) given
+ if {$exec eq ""} {
+ return ""
}
+ tailcall eval $event
}
-
+
# tcl::HistKeep --
#
# Set or query the limit on the length of the history list
@@ -196,20 +109,22 @@ proc history {args} {
# Side Effects:
# Updates history(keep) if a limit is specified
- proc tcl::HistKeep {{limit {}}} {
+proc ::tcl::HistKeep {{count {}}} {
variable history
- if {$limit eq ""} {
+ if {[llength [info level 0]] == 1} {
return $history(keep)
- } else {
- set oldold $history(oldest)
- set history(oldest) [expr {$history(nextid) - $limit}]
- for {} {$oldold <= $history(oldest)} {incr oldold} {
- unset -nocomplain history($oldold)
- }
- set history(keep) $limit
}
+ if {![string is integer -strict $count] || ($count < 0)} {
+ return -code error "illegal keep count \"$count\""
+ }
+ set oldold $history(oldest)
+ set history(oldest) [expr {$history(nextid) - $count}]
+ for {} {$oldold <= $history(oldest)} {incr oldold} {
+ unset -nocomplain history($oldold)
+ }
+ set history(keep) $count
}
-
+
# tcl::HistClear --
#
# Erase the history list
@@ -223,7 +138,7 @@ proc history {args} {
# Side Effects:
# Resets the history array, except for the keep limit
- proc tcl::HistClear {} {
+proc ::tcl::HistClear {} {
variable history
set keep $history(keep)
unset history
@@ -233,7 +148,7 @@ proc history {args} {
oldest -$keep \
]
}
-
+
# tcl::HistInfo --
#
# Return a pretty-printed version of the history list
@@ -244,14 +159,16 @@ proc history {args} {
# Results:
# A formatted history list
- proc tcl::HistInfo {{num {}}} {
+proc ::tcl::HistInfo {{count {}}} {
variable history
- if {$num eq ""} {
- set num [expr {$history(keep) + 1}]
+ if {[llength [info level 0]] == 1} {
+ set count [expr {$history(keep) + 1}]
+ } elseif {![string is integer -strict $count]} {
+ return -code error "bad integer \"$count\""
}
set result {}
set newline ""
- for {set i [expr {$history(nextid) - $num + 1}]} \
+ for {set i [expr {$history(nextid) - $count + 1}]} \
{$i <= $history(nextid)} {incr i} {
if {![info exists history($i)]} {
continue
@@ -262,11 +179,11 @@ proc history {args} {
}
return $result
}
-
+
# tcl::HistRedo --
#
-# Fetch the previous or specified event, execute it, and then
-# replace the current history item with that event.
+# Fetch the previous or specified event, execute it, and then replace
+# the current history item with that event.
#
# Parameters:
# event (optional) index of history item to redo. Defaults to -1,
@@ -278,20 +195,18 @@ proc history {args} {
# Side Effects:
# Replaces the current history list item with the one being redone.
- proc tcl::HistRedo {{event -1}} {
+proc ::tcl::HistRedo {{event -1}} {
variable history
- if {$event eq ""} {
- set event -1
- }
+
set i [HistIndex $event]
if {$i == $history(nextid)} {
return -code error "cannot redo the current event"
}
set cmd $history($i)
HistChange $cmd 0
- uplevel #0 $cmd
+ tailcall eval $cmd
}
-
+
# tcl::HistIndex --
#
# Map from an event specifier to an index in the history list.
@@ -301,22 +216,22 @@ proc history {args} {
# If this is a positive number, it is used directly.
# If it is a negative number, then it counts back to a previous
# event, where -1 is the most recent event.
-# A string can be matched, either by being the prefix of
-# a command or by matching a command with string match.
+# A string can be matched, either by being the prefix of a
+# command or by matching a command with string match.
#
# Results:
# The index into history, or an error if the index didn't match.
- proc tcl::HistIndex {event} {
+proc ::tcl::HistIndex {event} {
variable history
- if {[catch {expr {~$event}}]} {
+ if {![string is integer -strict $event]} {
for {set i [expr {$history(nextid)-1}]} {[info exists history($i)]} \
{incr i -1} {
if {[string match $event* $history($i)]} {
- return $i;
+ return $i
}
if {[string match $event $history($i)]} {
- return $i;
+ return $i
}
}
return -code error "no event matches \"$event\""
@@ -333,43 +248,64 @@ proc history {args} {
}
return $i
}
-
+
# tcl::HistEvent --
#
# Map from an event specifier to the value in the history list.
#
# Parameters:
-# event index of history item to redo. See index for a
-# description of possible event patterns.
+# event index of history item to redo. See index for a description of
+# possible event patterns.
#
# Results:
# The value from the history list.
- proc tcl::HistEvent {event} {
+proc ::tcl::HistEvent {{event -1}} {
variable history
set i [HistIndex $event]
- if {[info exists history($i)]} {
- return [string trimright $history($i) \ \n]
- } else {
- return "";
+ if {![info exists history($i)]} {
+ return ""
}
+ return [string trimright $history($i) \ \n]
}
-
+
# tcl::HistChange --
#
# Replace a value in the history list.
#
# Parameters:
-# cmd The new value to put into the history list.
-# event (optional) index of history item to redo. See index for a
-# description of possible event patterns. This defaults
-# to 0, which specifies the current event.
+# newValue The new value to put into the history list.
+# event (optional) index of history item to redo. See index for a
+# description of possible event patterns. This defaults to 0,
+# which specifies the current event.
#
# Side Effects:
# Changes the history list.
- proc tcl::HistChange {cmd {event 0}} {
+proc ::tcl::HistChange {newValue {event 0}} {
variable history
set i [HistIndex $event]
- set history($i) $cmd
+ set history($i) $newValue
}
+
+# tcl::HistNextID --
+#
+# Returns the number of the next history event.
+#
+# Parameters:
+# None.
+#
+# Side Effects:
+# None.
+
+proc ::tcl::HistNextID {} {
+ variable history
+ return [expr {$history(nextid) + 1}]
+}
+
+return
+
+# Local Variables:
+# mode: tcl
+# fill-column: 78
+# End:
diff --git a/library/http/http.tcl b/library/http/http.tcl
index 06829cd..a6b2bfd 100644
--- a/library/http/http.tcl
+++ b/library/http/http.tcl
@@ -1,19 +1,17 @@
# http.tcl --
#
# Client-side HTTP for GET, POST, and HEAD commands. These routines can
-# be used in untrusted code that uses the Safesock security policy. These
-# procedures use a callback interface to avoid using vwait, which is not
-# defined in the safe base.
+# be used in untrusted code that uses the Safesock security policy.
+# These procedures use a callback interface to avoid using vwait, which
+# is not defined in the safe base.
#
# See the file "license.terms" for information on usage and redistribution of
# this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: http.tcl,v 1.67.2.5 2008/10/23 23:34:32 patthoyts Exp $
-package require Tcl 8.4
-# Keep this in sync with pkgIndex.tcl and with the install directories
-# in Makefiles
-package provide http 2.7.2
+package require Tcl 8.6
+# Keep this in sync with pkgIndex.tcl and with the install directories in
+# Makefiles
+package provide http 2.8.8
namespace eval http {
# Allow resourcing to not clobber existing data
@@ -27,23 +25,29 @@ namespace eval http {
-proxyfilter http::ProxyRequired
-urlencoding utf-8
}
- set http(-useragent) "Tcl http client package [package provide http]"
+ # We need a useragent string of this style or various servers will refuse to
+ # send us compressed content even when we ask for it. This follows the
+ # de-facto layout of user-agent strings in current browsers.
+ set http(-useragent) "Mozilla/5.0\
+ ([string totitle $::tcl_platform(platform)]; U;\
+ $::tcl_platform(os) $::tcl_platform(osVersion))\
+ http/[package provide http] Tcl/[package provide Tcl]"
}
proc init {} {
# Set up the map for quoting chars. RFC3986 Section 2.3 say percent
- # encode all except: "... percent-encoded octets in the ranges of ALPHA
- # (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period (%2E),
- # underscore (%5F), or tilde (%7E) should not be created by URI
+ # encode all except: "... percent-encoded octets in the ranges of
+ # ALPHA (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period
+ # (%2E), underscore (%5F), or tilde (%7E) should not be created by URI
# producers ..."
for {set i 0} {$i <= 256} {incr i} {
set c [format %c $i]
if {![string match {[-._~a-zA-Z0-9]} $c]} {
- set map($c) %[format %.2x $i]
+ set map($c) %[format %.2X $i]
}
}
# These are handled specially
- set map(\n) %0d%0a
+ set map(\n) %0D%0A
variable formMap [array get map]
# Create a map for HTTP/1.1 open sockets
@@ -94,22 +98,22 @@ namespace eval http {
# Arguments:
# msg Message to output
#
-proc http::Log {args} {}
+if {[info command http::Log] eq {}} {proc http::Log {args} {}}
# http::register --
#
# See documentation for details.
#
# Arguments:
-# proto URL protocol prefix, e.g. https
-# port Default port for protocol
-# command Command to use to create socket
+# proto URL protocol prefix, e.g. https
+# port Default port for protocol
+# command Command to use to create socket
# Results:
# list of port and command that was registered.
proc http::register {proto port command} {
variable urlTypes
- set urlTypes($proto) [list $port $command]
+ set urlTypes([string tolower $proto]) [list $port $command]
}
# http::unregister --
@@ -117,17 +121,18 @@ proc http::register {proto port command} {
# Unregisters URL protocol handler
#
# Arguments:
-# proto URL protocol prefix, e.g. https
+# proto URL protocol prefix, e.g. https
# Results:
# list of port and command that was unregistered.
proc http::unregister {proto} {
variable urlTypes
- if {![info exists urlTypes($proto)]} {
+ set lower [string tolower $proto]
+ if {![info exists urlTypes($lower)]} {
return -code error "unsupported url type \"$proto\""
}
- set old $urlTypes($proto)
- unset urlTypes($proto)
+ set old $urlTypes($lower)
+ unset urlTypes($lower)
return $old
}
@@ -152,21 +157,19 @@ proc http::config {args} {
return $result
}
set options [string map {- ""} $options]
- set pat ^-([join $options |])$
+ set pat ^-(?:[join $options |])$
if {[llength $args] == 1} {
set flag [lindex $args 0]
- if {[regexp -- $pat $flag]} {
- return $http($flag)
- } else {
+ if {![regexp -- $pat $flag]} {
return -code error "Unknown option $flag, must be: $usage"
}
+ return $http($flag)
} else {
foreach {flag value} $args {
- if {[regexp -- $pat $flag]} {
- set http($flag) $value
- } else {
+ if {![regexp -- $pat $flag]} {
return -code error "Unknown option $flag, must be: $usage"
}
+ set http($flag) $value
}
}
}
@@ -179,14 +182,14 @@ proc http::config {args} {
# token Connection token.
# errormsg (optional) If set, forces status to error.
# skipCB (optional) If set, don't call the -command callback. This
-# is useful when geturl wants to throw an exception instead
-# of calling the callback. That way, the same error isn't
-# reported to two places.
+# is useful when geturl wants to throw an exception instead
+# of calling the callback. That way, the same error isn't
+# reported to two places.
#
# Side Effects:
# Closes the socket
-proc http::Finish { token {errormsg ""} {skipCB 0}} {
+proc http::Finish {token {errormsg ""} {skipCB 0}} {
variable $token
upvar 0 $token state
global errorInfo errorCode
@@ -194,30 +197,31 @@ proc http::Finish { token {errormsg ""} {skipCB 0}} {
set state(error) [list $errormsg $errorInfo $errorCode]
set state(status) "error"
}
- if {($state(status) eq "timeout") || ($state(status) eq "error")
- || ([info exists state(connection)] && ($state(connection) eq "close"))
+ if {
+ ($state(status) eq "timeout") || ($state(status) eq "error") ||
+ ([info exists state(connection)] && ($state(connection) eq "close"))
} {
CloseSocket $state(sock) $token
}
- if {[info exists state(after)]} { after cancel $state(after) }
- if {[info exists state(-command)] && !$skipCB} {
- if {[catch {eval $state(-command) {$token}} err]} {
- if {$errormsg eq ""} {
- set state(error) [list $err $errorInfo $errorCode]
- set state(status) error
- }
+ if {[info exists state(after)]} {
+ after cancel $state(after)
+ }
+ if {[info exists state(-command)] && !$skipCB
+ && ![info exists state(done-command-cb)]} {
+ set state(done-command-cb) yes
+ if {[catch {eval $state(-command) {$token}} err] && $errormsg eq ""} {
+ set state(error) [list $err $errorInfo $errorCode]
+ set state(status) error
}
- # Command callback may already have unset our state
- unset -nocomplain state(-command)
}
}
# http::CloseSocket -
#
-# Close a socket and remove it from the persistent sockets table.
-# If possible an http token is included here but when we are called
-# from a fileevent on remote closure we need to find the correct
-# entry - hence the second section.
+# Close a socket and remove it from the persistent sockets table. If
+# possible an http token is included here but when we are called from a
+# fileevent on remote closure we need to find the correct entry - hence
+# the second section.
proc ::http::CloseSocket {s {token {}}} {
variable socketmap
@@ -227,23 +231,27 @@ proc ::http::CloseSocket {s {token {}}} {
variable $token
upvar 0 $token state
if {[info exists state(socketinfo)]} {
- set conn_id $state(socketinfo)
+ set conn_id $state(socketinfo)
}
} else {
set map [array get socketmap]
set ndx [lsearch -exact $map $s]
if {$ndx != -1} {
- incr ndx -1
- set conn_id [lindex $map $ndx]
+ incr ndx -1
+ set conn_id [lindex $map $ndx]
}
}
if {$conn_id eq {} || ![info exists socketmap($conn_id)]} {
Log "Closing socket $s (no connection info)"
- if {[catch {close $s} err]} { Log "Error: $err" }
+ if {[catch {close $s} err]} {
+ Log "Error: $err"
+ }
} else {
if {[info exists socketmap($conn_id)]} {
Log "Closing connection $conn_id (sock $socketmap($conn_id))"
- if {[catch {close $socketmap($conn_id)} err]} { Log "Error: $err" }
+ if {[catch {close $socketmap($conn_id)} err]} {
+ Log "Error: $err"
+ }
unset socketmap($conn_id)
} else {
Log "Cannot close connection $conn_id - no socket in socket map"
@@ -262,7 +270,7 @@ proc ::http::CloseSocket {s {token {}}} {
# Side Effects:
# See Finish
-proc http::reset { token {why reset} } {
+proc http::reset {token {why reset}} {
variable $token
upvar 0 $token state
set state(status) $why
@@ -285,10 +293,10 @@ proc http::reset { token {why reset} } {
# args Option value pairs. Valid options include:
# -blocksize, -validate, -headers, -timeout
# Results:
-# Returns a token for this connection. This token is the name of an array
-# that the caller should unset to garbage collect the state.
+# Returns a token for this connection. This token is the name of an
+# array that the caller should unset to garbage collect the state.
-proc http::geturl { url args } {
+proc http::geturl {url args} {
variable http
variable urlTypes
variable defaultCharset
@@ -351,14 +359,17 @@ proc http::geturl { url args } {
}
set usage [join [lsort $options] ", "]
set options [string map {- ""} $options]
- set pat ^-([join $options |])$
+ set pat ^-(?:[join $options |])$
foreach {flag value} $args {
if {[regexp -- $pat $flag]} {
# Validate numbers
- if {[info exists type($flag)] &&
- ![string is $type($flag) -strict $value]} {
+ if {
+ [info exists type($flag)] &&
+ ![string is $type($flag) -strict $value]
+ } {
unset $token
- return -code error "Bad value for $flag ($value), must be $type($flag)"
+ return -code error \
+ "Bad value for $flag ($value), must be $type($flag)"
}
set state($flag) $value
} else {
@@ -384,20 +395,25 @@ proc http::geturl { url args } {
# First, before the colon, is the protocol scheme (e.g. http)
# Second, for HTTP-like protocols, is the authority
# The authority is preceded by // and lasts up to (but not including)
- # the following / and it identifies up to four parts, of which only one,
- # the host, is required (if an authority is present at all). All other
- # parts of the authority (user name, password, port number) are optional.
+ # the following / or ? and it identifies up to four parts, of which
+ # only one, the host, is required (if an authority is present at all).
+ # All other parts of the authority (user name, password, port number)
+ # are optional.
# Third is the resource name, which is split into two parts at a ?
# The first part (from the single "/" up to "?") is the path, and the
# second part (from that "?" up to "#") is the query. *HOWEVER*, we do
# not need to separate them; we send the whole lot to the server.
+ # Both, path and query are allowed to be missing, including their
+ # delimiting character.
# Fourth is the fragment identifier, which is everything after the first
# "#" in the URL. The fragment identifier MUST NOT be sent to the server
# and indeed, we don't bother to validate it (it could be an error to
# pass it in here, but it's cheap to strip).
#
# An example of a URL that has all the parts:
- # http://jschmoe:xyzzy@www.bogus.net:8000/foo/bar.tml?q=foo#changes
+ #
+ # http://jschmoe:xyzzy@www.bogus.net:8000/foo/bar.tml?q=foo#changes
+ #
# The "http" is the protocol, the user is "jschmoe", the password is
# "xyzzy", the host is "www.bogus.net", the port is "8000", the path is
# "/foo/bar.tml", the query is "q=foo", and the fragment is "changes".
@@ -405,12 +421,10 @@ proc http::geturl { url args } {
# Note that the RE actually combines the user and password parts, as
# recommended in RFC 3986. Indeed, that RFC states that putting passwords
# in URLs is a Really Bad Idea, something with which I would agree utterly.
- # Also note that we do not currently support IPv6 addresses.
#
# From a validation perspective, we need to ensure that the parts of the
- # URL that are going to the server are correctly encoded.
- # This is only done if $state(-strict) is true (inherited from
- # $::http::strict).
+ # URL that are going to the server are correctly encoded. This is only
+ # done if $state(-strict) is true (inherited from $::http::strict).
set URLmatcher {(?x) # this is _expanded_ syntax
^
@@ -421,10 +435,13 @@ proc http::geturl { url args } {
[^@/\#?]+ # <userinfo part of authority>
) @
)?
- ( [^/:\#?]+ ) # <host part of authority>
+ ( # <host part of authority>
+ [^/:\#?]+ | # host name or IPv4 address
+ \[ [^/\#?]+ \] # IPv6 address in square brackets
+ )
(?: : (\d+) )? # <port part of authority>
)?
- ( / [^\#?]* (?: \? [^\#?]* )?)? # <path> (including query)
+ ( [/\?] [^\#]*)? # <path> (including query)
(?: \# (.*) )? # <fragment>
$
}
@@ -435,6 +452,7 @@ proc http::geturl { url args } {
return -code error "Unsupported URL: $url"
}
# Phase two: validate
+ set host [string trim $host {[]}]; # strip square brackets from IPv6 address
if {$host eq ""} {
# Caller has to provide a host name; we do not have a "default host"
# that would enable us to handle relative URLs.
@@ -467,6 +485,12 @@ proc http::geturl { url args } {
}
}
if {$srvurl ne ""} {
+ # RFC 3986 allows empty paths (not even a /), but servers
+ # return 400 if the path in the HTTP request doesn't start
+ # with / , so add it here if needed.
+ if {[string index $srvurl 0] ne "/"} {
+ set srvurl /$srvurl
+ }
# Check for validity according to RFC 3986, Appendix A
set validityRE {(?xi)
^
@@ -481,7 +505,7 @@ proc http::geturl { url args } {
# Provide a better error message in this error case
if {[regexp {(?i)%(?![0-9a-f][0-9a-f])..} $srvurl bad]} {
return -code error \
- "Illegal encoding character usage \"$bad\" in URL path"
+ "Illegal encoding character usage \"$bad\" in URL path"
}
return -code error "Illegal characters in URL path"
}
@@ -491,12 +515,13 @@ proc http::geturl { url args } {
if {$proto eq ""} {
set proto http
}
- if {![info exists urlTypes($proto)]} {
+ set lower [string tolower $proto]
+ if {![info exists urlTypes($lower)]} {
unset $token
return -code error "Unsupported URL type \"$proto\""
}
- set defport [lindex $urlTypes($proto) 0]
- set defcmd [lindex $urlTypes($proto) 1]
+ set defport [lindex $urlTypes($lower) 0]
+ set defcmd [lindex $urlTypes($lower) 1]
if {$port eq ""} {
set port $defport
@@ -523,11 +548,10 @@ proc http::geturl { url args } {
# If a timeout is specified we set up the after event and arrange for an
# asynchronous socket connection.
- set sockopts [list]
+ set sockopts [list -async]
if {$state(-timeout) > 0} {
set state(after) [after $state(-timeout) \
[list http::reset $token timeout]]
- lappend sockopts -async
}
# If we are using the proxy, we must pass in the full URL that includes
@@ -565,15 +589,15 @@ proc http::geturl { url args } {
lappend sockopts -myaddr $state(-myaddr)
}
if {[catch {eval $defcmd $sockopts $targetAddr} sock]} {
- # something went wrong while trying to establish the
- # connection. Clean up after events and such, but DON'T call the
- # command callback (if available) because we're going to throw an
- # exception from here instead.
+ # something went wrong while trying to establish the connection.
+ # Clean up after events and such, but DON'T call the command
+ # callback (if available) because we're going to throw an
+ # exception from here instead.
set state(sock) $sock
- Finish $token "" 1
- cleanup $token
- return -code error $sock
+ Finish $token "" 1
+ cleanup $token
+ return -code error $sock
}
}
set state(sock) $sock
@@ -583,16 +607,21 @@ proc http::geturl { url args } {
set socketmap($state(socketinfo)) $sock
}
- # Wait for the connection to complete.
+ if {![info exists phost]} {
+ set phost ""
+ }
+ fileevent $sock writable [list http::Connect $token $proto $phost $srvurl]
- if {$state(-timeout) > 0} {
- fileevent $sock writable [list http::Connect $token]
+ # Wait for the connection to complete.
+ if {![info exists state(-command)]} {
+ # geturl does EVERYTHING asynchronously, so if the user
+ # calls it synchronously, we just do a wait here.
http::wait $token
if {![info exists state]} {
# If we timed out then Finish has been called and the users
- # command callback may have cleaned up the token. If so
- # we end up here with nothing left to do.
+ # command callback may have cleaned up the token. If so we end up
+ # here with nothing left to do.
return $token
} elseif {$state(status) eq "error"} {
# Something went wrong while trying to establish the connection.
@@ -602,13 +631,30 @@ proc http::geturl { url args } {
set err [lindex $state(error) 0]
cleanup $token
return -code error $err
- } elseif {$state(status) ne "connect"} {
- # Likely to be connection timeout
- return $token
}
- set state(status) ""
}
+ return $token
+}
+
+
+proc http::Connected { token proto phost srvurl} {
+ variable http
+ variable urlTypes
+
+ variable $token
+ upvar 0 $token state
+
+ # Set back the variables needed here
+ set sock $state(sock)
+ set isQueryChannel [info exists state(-querychannel)]
+ set isQuery [info exists state(-query)]
+ set host [lindex [split $state(socketinfo) :] 0]
+ set port [lindex [split $state(socketinfo) :] 1]
+
+ set lower [string tolower $proto]
+ set defport [lindex $urlTypes($lower) 0]
+
# Send data in cr-lf format, but accept any line terminators
fconfigure $sock -translation {auto crlf} -buffersize $state(-blocksize)
@@ -640,17 +686,21 @@ proc http::geturl { url args } {
if {[info exists state(-method)] && $state(-method) ne ""} {
set how $state(-method)
}
-
+ # We cannot handle chunked encodings with -handler, so force HTTP/1.0
+ # until we can manage this.
+ if {[info exists state(-handler)]} {
+ set state(-protocol) 1.0
+ }
if {[catch {
puts $sock "$how $srvurl HTTP/$state(-protocol)"
puts $sock "Accept: $http(-accept)"
array set hdrs $state(-headers)
if {[info exists hdrs(Host)]} {
- # Allow Host spoofing [Bug 928154]
+ # Allow Host spoofing. [Bug 928154]
puts $sock "Host: $hdrs(Host)"
} elseif {$port == $defport} {
- # Don't add port in this case, to handle broken servers.
- # [Bug #504508]
+ # Don't add port in this case, to handle broken servers. [Bug
+ # #504508]
puts $sock "Host: $host"
} else {
puts $sock "Host: $host:$port"
@@ -658,20 +708,26 @@ proc http::geturl { url args } {
unset hdrs
puts $sock "User-Agent: $http(-useragent)"
if {$state(-protocol) == 1.0 && $state(-keepalive)} {
- puts $sock "Connection: keep-alive"
+ puts $sock "Connection: keep-alive"
}
if {$state(-protocol) > 1.0 && !$state(-keepalive)} {
- puts $sock "Connection: close" ;# RFC2616 sec 8.1.2.1
+ puts $sock "Connection: close" ;# RFC2616 sec 8.1.2.1
}
if {[info exists phost] && ($phost ne "") && $state(-keepalive)} {
- puts $sock "Proxy-Connection: Keep-Alive"
+ puts $sock "Proxy-Connection: Keep-Alive"
}
set accept_encoding_seen 0
+ set content_type_seen 0
foreach {key value} $state(-headers) {
- if {[string equal -nocase $key "host"]} { continue }
- if {[string equal -nocase $key "accept-encoding"]} {
- set accept_encoding_seen 1
- }
+ if {[string equal -nocase $key "host"]} {
+ continue
+ }
+ if {[string equal -nocase $key "accept-encoding"]} {
+ set accept_encoding_seen 1
+ }
+ if {[string equal -nocase $key "content-type"]} {
+ set content_type_seen 1
+ }
set value [string map [list \n "" \r ""] $value]
set key [string trim $key]
if {[string equal -nocase $key "content-length"]} {
@@ -682,11 +738,8 @@ proc http::geturl { url args } {
puts $sock "$key: $value"
}
}
- # Soft zlib dependency check - no package require
- if {!$accept_encoding_seen && [llength [package provide zlib]]
- && !([info exists state(-channel)] || [info exists state(-handler)])
- } {
- puts $sock "Accept-Encoding: gzip, identity, *;q=0.1"
+ if {!$accept_encoding_seen && ![info exists state(-handler)]} {
+ puts $sock "Accept-Encoding: deflate,gzip,compress"
}
if {$isQueryChannel && $state(querylength) == 0} {
# Try to determine size of data in channel. If we cannot seek, the
@@ -707,16 +760,19 @@ proc http::geturl { url args } {
# It is possible to have both the read and write fileevents active at
# this point. The only scenario it seems to affect is a server that
# closes the connection without reading the POST data. (e.g., early
- # versions TclHttpd in various error cases). Depending on the platform,
- # the client may or may not be able to get the response from the server
- # because of the error it will get trying to write the post data.
- # Having both fileevents active changes the timing and the behavior,
- # but no two platforms (among Solaris, Linux, and NT) behave the same,
- # and none behave all that well in any case. Servers should always read
- # their POST data if they expect the client to read their response.
+ # versions TclHttpd in various error cases). Depending on the
+ # platform, the client may or may not be able to get the response from
+ # the server because of the error it will get trying to write the post
+ # data. Having both fileevents active changes the timing and the
+ # behavior, but no two platforms (among Solaris, Linux, and NT) behave
+ # the same, and none behave all that well in any case. Servers should
+ # always read their POST data if they expect the client to read their
+ # response.
if {$isQuery || $isQueryChannel} {
- puts $sock "Content-Type: $state(-type)"
+ if {!$content_type_seen} {
+ puts $sock "Content-Type: $state(-type)"
+ }
if {!$contDone} {
puts $sock "Content-Length: $state(querylength)"
}
@@ -729,35 +785,17 @@ proc http::geturl { url args } {
fileevent $sock readable [list http::Event $sock $token]
}
- if {! [info exists state(-command)]} {
- # geturl does EVERYTHING asynchronously, so if the user calls it
- # synchronously, we just do a wait here.
-
- wait $token
- if {$state(status) eq "error"} {
- # Something went wrong, so throw the exception, and the
- # enclosing catch will do cleanup.
- return -code error [lindex $state(error) 0]
- }
- }
} err]} {
# The socket probably was never connected, or the connection dropped
# later.
- # Clean up after events and such, but DON'T call the command callback
- # (if available) because we're going to throw an exception from here
- # instead.
-
# if state(status) is error, it means someone's already called Finish
# to do the above-described clean up.
if {$state(status) ne "error"} {
- Finish $token $err 1
+ Finish $token $err
}
- cleanup $token
- return -code error $err
}
- return $token
}
# Data access functions:
@@ -772,7 +810,9 @@ proc http::data {token} {
return $state(body)
}
proc http::status {token} {
- if {![info exists $token]} { return "error" }
+ if {![info exists $token]} {
+ return "error"
+ }
variable $token
upvar 0 $token state
return $state(status)
@@ -839,16 +879,18 @@ proc http::cleanup {token} {
# Sets the status of the connection, which unblocks
# the waiting geturl call
-proc http::Connect {token} {
+proc http::Connect {token proto phost srvurl} {
variable $token
upvar 0 $token state
- global errorInfo errorCode
- if {[eof $state(sock)] ||
- [string length [fconfigure $state(sock) -error]]} {
- Finish $token "connect failed [fconfigure $state(sock) -error]" 1
+ set err "due to unexpected EOF"
+ if {
+ [eof $state(sock)] ||
+ [set err [fconfigure $state(sock) -error]] ne ""
+ } {
+ Finish $token "connect failed $err"
} else {
- set state(status) connect
fileevent $state(sock) writable {}
+ ::http::Connected $token $proto $phost $srvurl
}
return
}
@@ -883,7 +925,6 @@ proc http::Write {token} {
incr state(queryoffset) $state(-queryblocksize)
if {$state(queryoffset) >= $state(querylength)} {
set state(queryoffset) $state(querylength)
- puts $sock ""
set done 1
}
} else {
@@ -934,8 +975,8 @@ proc http::Event {sock token} {
if {![info exists state]} {
Log "Event $sock with invalid token '$token' - remote close?"
- if {! [eof $sock]} {
- if {[string length [set d [read $sock]]] != 0} {
+ if {![eof $sock]} {
+ if {[set d [read $sock]] ne ""} {
Log "WARNING: additional data left on closed socket"
}
}
@@ -943,9 +984,10 @@ proc http::Event {sock token} {
return
}
if {$state(state) eq "connecting"} {
- set state(state) "header"
if {[catch {gets $sock state(http)} n]} {
return [Finish $token $n]
+ } elseif {$n >= 0} {
+ set state(state) "header"
}
} elseif {$state(state) eq "header"} {
if {[catch {gets $sock line} n]} {
@@ -953,7 +995,9 @@ proc http::Event {sock token} {
} elseif {$n == 0} {
# We have now read all headers
# We ignore HTTP/1.1 100 Continue returns. RFC2616 sec 8.2.3
- if {$state(http) == "" || [lindex $state(http) 1] == 100} { return }
+ if {$state(http) == "" || ([regexp {^\S+\s(\d+)} $state(http) {} x] && $x == 100)} {
+ return
+ }
set state(state) body
@@ -963,15 +1007,16 @@ proc http::Event {sock token} {
return
}
- # For non-chunked transfer we may have no body -- in this case we
- # may get no further file event if the connection doesn't close and
- # no more data is sent. We can tell and must finish up now - not
- # later.
- if {!(([info exists state(connection)]
- && ($state(connection) eq "close"))
- || [info exists state(transfer)])
- && $state(totalsize) == 0
- } then {
+ # For non-chunked transfer we may have no body - in this case we
+ # may get no further file event if the connection doesn't close
+ # and no more data is sent. We can tell and must finish up now -
+ # not later.
+ if {
+ !(([info exists state(connection)]
+ && ($state(connection) eq "close"))
+ || [info exists state(transfer)])
+ && ($state(totalsize) == 0)
+ } {
Log "body size is 0 and no events likely - complete."
Eof $token
return
@@ -980,22 +1025,22 @@ proc http::Event {sock token} {
# We have to use binary translation to count bytes properly.
fconfigure $sock -translation binary
- if {$state(-binary) || ![string match -nocase text* $state(type)]} {
+ if {
+ $state(-binary) || ![string match -nocase text* $state(type)]
+ } {
# Turn off conversions for non-text data
set state(binary) 1
}
- if {$state(binary) || [string match *gzip* $state(coding)]
- || [string match *compress* $state(coding)]} {
- if {[info exists state(-channel)]} {
+ if {[info exists state(-channel)]} {
+ if {$state(binary) || [llength [ContentEncoding $token]]} {
fconfigure $state(-channel) -translation binary
}
- }
- if {[info exists state(-channel)] &&
- ![info exists state(-handler)]} {
- # Initiate a sequence of background fcopies
- fileevent $sock readable {}
- CopyStart $sock $token
- return
+ if {![info exists state(-handler)]} {
+ # Initiate a sequence of background fcopies
+ fileevent $sock readable {}
+ CopyStart $sock $token
+ return
+ }
}
} elseif {$n > 0} {
# Process header lines
@@ -1004,8 +1049,14 @@ proc http::Event {sock token} {
content-type {
set state(type) [string trim [string tolower $value]]
# grab the optional charset information
- regexp -nocase {charset\s*=\s*(\S+?);?} \
- $state(type) -> state(charset)
+ if {[regexp -nocase \
+ {charset\s*=\s*\"((?:[^""]|\\\")*)\"} \
+ $state(type) -> cs]} {
+ set state(charset) [string map {{\"} \"} $cs]
+ } else {
+ regexp -nocase {charset\s*=\s*(\S+?);?} \
+ $state(type) -> state(charset)
+ }
}
content-length {
set state(totalsize) [string trim $value]
@@ -1041,8 +1092,10 @@ proc http::Event {sock token} {
Log "final chunk part"
Eof $token
}
- } elseif {[info exists state(transfer)]
- && $state(transfer) eq "chunked"} {
+ } elseif {
+ [info exists state(transfer)]
+ && $state(transfer) eq "chunked"
+ } {
set size 0
set chunk [getTextLine $sock]
set n [string length $chunk]
@@ -1079,8 +1132,10 @@ proc http::Event {sock token} {
incr state(currentsize) $n
}
# If Content-Length - check for end of data.
- if {($state(totalsize) > 0)
- && ($state(currentsize) >= $state(totalsize))} {
+ if {
+ ($state(totalsize) > 0)
+ && ($state(currentsize) >= $state(totalsize))
+ } {
Eof $token
}
}
@@ -1137,14 +1192,54 @@ proc http::getTextLine {sock} {
# Side Effects
# This closes the connection upon error
-proc http::CopyStart {sock token} {
- variable $token
+proc http::CopyStart {sock token {initial 1}} {
+ upvar #0 $token state
+ if {[info exists state(transfer)] && $state(transfer) eq "chunked"} {
+ foreach coding [ContentEncoding $token] {
+ lappend state(zlib) [zlib stream $coding]
+ }
+ make-transformation-chunked $sock [namespace code [list CopyChunk $token]]
+ } else {
+ if {$initial} {
+ foreach coding [ContentEncoding $token] {
+ zlib push $coding $sock
+ }
+ }
+ if {[catch {
+ fcopy $sock $state(-channel) -size $state(-blocksize) -command \
+ [list http::CopyDone $token]
+ } err]} {
+ Finish $token $err
+ }
+ }
+}
+
+proc http::CopyChunk {token chunk} {
upvar 0 $token state
- if {[catch {
- fcopy $sock $state(-channel) -size $state(-blocksize) -command \
- [list http::CopyDone $token]
- } err]} {
- Finish $token $err
+ if {[set count [string length $chunk]]} {
+ incr state(currentsize) $count
+ if {[info exists state(zlib)]} {
+ foreach stream $state(zlib) {
+ set chunk [$stream add $chunk]
+ }
+ }
+ puts -nonewline $state(-channel) $chunk
+ if {[info exists state(-progress)]} {
+ eval [linsert $state(-progress) end \
+ $token $state(totalsize) $state(currentsize)]
+ }
+ } else {
+ Log "CopyChunk Finish $token"
+ if {[info exists state(zlib)]} {
+ set excess ""
+ foreach stream $state(zlib) {
+ catch {set excess [$stream add -finalize $excess]}
+ }
+ puts -nonewline $state(-channel) $excess
+ foreach stream $state(zlib) { $stream close }
+ unset state(zlib)
+ }
+ Eof $token ;# FIX ME: pipelining.
}
}
@@ -1174,7 +1269,7 @@ proc http::CopyDone {token count {error {}}} {
} elseif {[catch {eof $sock} iseof] || $iseof} {
Eof $token
} else {
- CopyStart $sock $token
+ CopyStart $sock $token 0
}
}
@@ -1198,30 +1293,31 @@ proc http::Eof {token {force 0}} {
set state(status) ok
}
- if {($state(coding) eq "gzip") && [string length $state(body)] > 0} {
- if {[catch {
- set state(body) [Gunzip $state(body)]
- } err]} {
- return [Finish $token $err]
- }
- }
-
- if {!$state(binary)} {
+ if {[string length $state(body)] > 0} {
+ if {[catch {
+ foreach coding [ContentEncoding $token] {
+ set state(body) [zlib $coding $state(body)]
+ }
+ } err]} {
+ Log "error doing $coding '$state(body)'"
+ return [Finish $token $err]
+ }
- # If we are getting text, set the incoming channel's
- # encoding correctly. iso8859-1 is the RFC default, but
- # this could be any IANA charset. However, we only know
- # how to convert what we have encodings for.
+ if {!$state(binary)} {
+ # If we are getting text, set the incoming channel's encoding
+ # correctly. iso8859-1 is the RFC default, but this could be any IANA
+ # charset. However, we only know how to convert what we have
+ # encodings for.
- set enc [CharsetToEncoding $state(charset)]
- if {$enc ne "binary"} {
- set state(body) [encoding convertfrom $enc $state(body)]
- }
+ set enc [CharsetToEncoding $state(charset)]
+ if {$enc ne "binary"} {
+ set state(body) [encoding convertfrom $enc $state(body)]
+ }
- # Translate text line endings.
- set state(body) [string map {\r\n \n \r \n} $state(body)]
+ # Translate text line endings.
+ set state(body) [string map {\r\n \n \r \n} $state(body)]
+ }
}
-
Finish $token
}
@@ -1297,7 +1393,7 @@ proc http::mapReply {string} {
}
set converted [string map $formMap $string]
if {[string match "*\[\u0100-\uffff\]*" $converted]} {
- regexp {[\u0100-\uffff]} $converted badChar
+ regexp "\[\u0100-\uffff\]" $converted badChar
# Return this error message for maximum compatability... :^/
return -code error \
"can't read \"formMap($badChar)\": no such element in array"
@@ -1317,8 +1413,10 @@ proc http::mapReply {string} {
proc http::ProxyRequired {host} {
variable http
if {[info exists http(-proxyhost)] && [string length $http(-proxyhost)]} {
- if {![info exists http(-proxyport)] || \
- ![string length $http(-proxyport)]} {
+ if {
+ ![info exists http(-proxyport)] ||
+ ![string length $http(-proxyport)]
+ } {
set http(-proxyport) 8080
}
return [list $http(-proxyhost) $http(-proxyport)]
@@ -1327,33 +1425,33 @@ proc http::ProxyRequired {host} {
# http::CharsetToEncoding --
#
-# Tries to map a given IANA charset to a tcl encoding.
-# If no encoding can be found, returns binary.
+# Tries to map a given IANA charset to a tcl encoding. If no encoding
+# can be found, returns binary.
#
proc http::CharsetToEncoding {charset} {
variable encodings
set charset [string tolower $charset]
- if {[regexp {iso-?8859-([0-9]+)} $charset - num]} {
+ if {[regexp {iso-?8859-([0-9]+)} $charset -> num]} {
set encoding "iso8859-$num"
- } elseif {[regexp {iso-?2022-(jp|kr)} $charset - ext]} {
+ } elseif {[regexp {iso-?2022-(jp|kr)} $charset -> ext]} {
set encoding "iso2022-$ext"
- } elseif {[regexp {shift[-_]?js} $charset -]} {
+ } elseif {[regexp {shift[-_]?js} $charset]} {
set encoding "shiftjis"
- } elseif {[regexp {(windows|cp)-?([0-9]+)} $charset - - num]} {
+ } elseif {[regexp {(?:windows|cp)-?([0-9]+)} $charset -> num]} {
set encoding "cp$num"
} elseif {$charset eq "us-ascii"} {
set encoding "ascii"
- } elseif {[regexp {(iso-?)?lat(in)?-?([0-9]+)} $charset - - - num]} {
+ } elseif {[regexp {(?:iso-?)?lat(?:in)?-?([0-9]+)} $charset -> num]} {
switch -- $num {
5 {set encoding "iso8859-9"}
- 1 -
- 2 -
- 3 {set encoding "iso8859-$num"}
+ 1 - 2 - 3 {
+ set encoding "iso8859-$num"
+ }
}
} else {
- # other charset, like euc-xx, utf-8,... may directly maps to encoding
+ # other charset, like euc-xx, utf-8,... may directly map to encoding
set encoding $charset
}
set idx [lsearch -exact $encodings $encoding]
@@ -1364,58 +1462,57 @@ proc http::CharsetToEncoding {charset} {
}
}
-# http::Gunzip --
-#
-# Decompress data transmitted using the gzip transfer coding.
-#
-
-# FIX ME: redo using zlib sinflate
-proc http::Gunzip {data} {
- binary scan $data Scb5icc magic method flags time xfl os
- set pos 10
- if {$magic != 0x1f8b} {
- return -code error "invalid data: supplied data is not in gzip format"
- }
- if {$method != 8} {
- return -code error "invalid compression method"
- }
-
- foreach {f_text f_crc f_extra f_name f_comment} [split $flags ""] break
- set extra ""
- if { $f_extra } {
- binary scan $data @${pos}S xlen
- incr pos 2
- set extra [string range $data $pos $xlen]
- set pos [incr xlen]
- }
-
- set name ""
- if { $f_name } {
- set ndx [string first \0 $data $pos]
- set name [string range $data $pos $ndx]
- set pos [incr ndx]
- }
-
- set comment ""
- if { $f_comment } {
- set ndx [string first \0 $data $pos]
- set comment [string range $data $pos $ndx]
- set pos [incr ndx]
- }
-
- set fcrc ""
- if { $f_crc } {
- set fcrc [string range $data $pos [incr pos]]
- incr pos
+# Return the list of content-encoding transformations we need to do in order.
+proc http::ContentEncoding {token} {
+ upvar 0 $token state
+ set r {}
+ if {[info exists state(coding)]} {
+ foreach coding [split $state(coding) ,] {
+ switch -exact -- $coding {
+ deflate { lappend r inflate }
+ gzip - x-gzip { lappend r gunzip }
+ compress - x-compress { lappend r decompress }
+ identity {}
+ default {
+ return -code error "unsupported content-encoding \"$coding\""
+ }
+ }
+ }
}
+ return $r
+}
- binary scan [string range $data end-7 end] ii crc size
- set inflated [zlib inflate [string range $data $pos end-8]]
- set chk [zlib crc32 $inflated]
- if { ($crc & 0xffffffff) != ($chk & 0xffffffff)} {
- return -code error "invalid data: checksum mismatch $crc != $chk"
- }
- return $inflated
+proc http::make-transformation-chunked {chan command} {
+ set lambda {{chan command} {
+ set data ""
+ set size -1
+ yield
+ while {1} {
+ chan configure $chan -translation {crlf binary}
+ while {[gets $chan line] < 1} { yield }
+ chan configure $chan -translation {binary binary}
+ if {[scan $line %x size] != 1} { return -code error "invalid size: \"$line\"" }
+ set chunk ""
+ while {$size && ![chan eof $chan]} {
+ set part [chan read $chan $size]
+ incr size -[string length $part]
+ append chunk $part
+ }
+ if {[catch {
+ uplevel #0 [linsert $command end $chunk]
+ }]} {
+ http::Log "Error in callback: $::errorInfo"
+ }
+ if {[string length $chunk] == 0} {
+ # channel might have been closed in the callback
+ catch {chan event $chan readable {}}
+ return
+ }
+ }
+ }}
+ coroutine dechunk$chan ::apply $lambda $chan $command
+ chan event $chan readable [namespace origin dechunk$chan]
+ return
}
# Local variables:
diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl
index 6badcea..27ba795 100644
--- a/library/http/pkgIndex.tcl
+++ b/library/http/pkgIndex.tcl
@@ -1,4 +1,2 @@
-# Tcl package index file, version 1.1
-
-if {![package vsatisfies [package provide Tcl] 8.4]} {return}
-package ifneeded http 2.7.2 [list tclPkgSetup $dir http 2.7.2 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}]
+if {![package vsatisfies [package provide Tcl] 8.6]} {return}
+package ifneeded http 2.8.8 [list tclPkgSetup $dir http 2.8.8 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}]
diff --git a/library/http1.0/http.tcl b/library/http1.0/http.tcl
index 2c548bb..8329de4 100644
--- a/library/http1.0/http.tcl
+++ b/library/http1.0/http.tcl
@@ -5,8 +5,6 @@
# These procedures use a callback interface to avoid using vwait,
# which is not defined in the safe base.
#
-# RCS: @(#) $Id: http.tcl,v 1.4 2000/02/01 11:48:30 hobbs Exp $
-#
# See the http.n man page for documentation
package provide http 1.0
@@ -341,12 +339,12 @@ proc http_formatQuery {args} {
# 2 Convert every other character to an array lookup
# 3 Escape constructs that are "special" to the tcl parser
# 4 "subst" the result, doing all the array substitutions
-
+
proc httpMapReply {string} {
global httpFormMap
set alphanumeric a-zA-Z0-9
if {![info exists httpFormMap]} {
-
+
for {set i 1} {$i <= 256} {incr i} {
set c [format %c $i]
if {![string match \[$alphanumeric\] $c]} {
@@ -365,7 +363,7 @@ proc http_formatQuery {args} {
return [subst $string]
}
-# Default proxy filter.
+# Default proxy filter.
proc httpProxyRequired {host} {
global http
if {[info exists http(-proxyhost)] && [string length $http(-proxyhost)]} {
diff --git a/library/init.tcl b/library/init.tcl
index 6b92c58..f63eedf 100644
--- a/library/init.tcl
+++ b/library/init.tcl
@@ -3,8 +3,6 @@
# Default system startup file for Tcl-based applications. Defines
# "unknown" procedure and auto-load facilities.
#
-# RCS: @(#) $Id: init.tcl,v 1.104.2.11 2008/12/21 20:59:01 dgp Exp $
-#
# Copyright (c) 1991-1993 The Regents of the University of California.
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 Scriptics Corporation.
@@ -14,10 +12,11 @@
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
+# This test intentionally written in pre-7.5 Tcl
if {[info commands package] == ""} {
error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]"
}
-package require -exact Tcl 8.5.6
+package require -exact Tcl 8.6.1
# Compute the auto path to use in this interpreter.
# The values on the path come from several locations:
@@ -78,7 +77,7 @@ namespace eval tcl {
# TIP #255 min and max functions
namespace eval mathfunc {
proc min {args} {
- if {[llength $args] == 0} {
+ if {![llength $args]} {
return -code error \
"too few arguments to math function \"min\""
}
@@ -89,12 +88,12 @@ namespace eval tcl {
if {[catch {expr {double($arg)}} err]} {
return -code error $err
}
- if {$arg < $val} { set val $arg }
+ if {$arg < $val} {set val $arg}
}
return $val
}
proc max {args} {
- if {[llength $args] == 0} {
+ if {![llength $args]} {
return -code error \
"too few arguments to math function \"max\""
}
@@ -105,7 +104,7 @@ namespace eval tcl {
if {[catch {expr {double($arg)}} err]} {
return -code error $err
}
- if {$arg > $val} { set val $arg }
+ if {$arg > $val} {set val $arg}
}
return $val
}
@@ -118,9 +117,10 @@ namespace eval tcl {
if {(![interp issafe]) && ($tcl_platform(platform) eq "windows")} {
namespace eval tcl {
proc EnvTraceProc {lo n1 n2 op} {
- set x $::env($n2)
- set ::env($lo) $x
- set ::env([string toupper $lo]) $x
+ global env
+ set x $env($n2)
+ set env($lo) $x
+ set env([string toupper $lo]) $x
}
proc InitWinEnv {} {
global env tcl_platform
@@ -130,9 +130,9 @@ if {(![interp issafe]) && ($tcl_platform(platform) eq "windows")} {
switch -- $u {
COMSPEC -
PATH {
- if {![info exists env($u)]} {
- set env($u) $env($p)
- }
+ set temp $env($p)
+ unset env($p)
+ set env($u) $temp
trace add variable env($p) write \
[namespace code [list EnvTraceProc $p]]
trace add variable env($u) write \
@@ -142,11 +142,7 @@ if {(![interp issafe]) && ($tcl_platform(platform) eq "windows")} {
}
}
if {![info exists env(COMSPEC)]} {
- if {$tcl_platform(os) eq "Windows NT"} {
- set env(COMSPEC) cmd.exe
- } else {
- set env(COMSPEC) command.com
- }
+ set env(COMSPEC) cmd.exe
}
}
InitWinEnv
@@ -161,8 +157,8 @@ if {[interp issafe]} {
} else {
# Set up search for Tcl Modules (TIP #189).
# and setup platform specific unknown package handlers
- if {$::tcl_platform(os) eq "Darwin"
- && $::tcl_platform(platform) eq "unix"} {
+ if {$tcl_platform(os) eq "Darwin"
+ && $tcl_platform(platform) eq "unix"} {
package unknown {::tcl::tm::UnknownHandler \
{::tcl::MacOSXPkgUnknown ::tclPkgUnknown}}
} else {
@@ -179,9 +175,9 @@ if {[interp issafe]} {
-subcommands {
add clicks format microseconds milliseconds scan seconds
}]
-
+
# Auto-loading stubs for 'clock.tcl'
-
+
foreach cmd {add format scan} {
proc ::tcl::clock::$cmd args {
variable TclLibDir
@@ -218,11 +214,9 @@ if {[namespace which -command tclLog] eq ""} {
# exist in the interpreter. It takes the following steps to make the
# command available:
#
-# 1. See if the command has the form "namespace inscope ns cmd" and
-# if so, concatenate its arguments onto the end and evaluate it.
-# 2. See if the autoload facility can locate the command in a
+# 1. See if the autoload facility can locate the command in a
# Tcl script file. If so, load it and execute it.
-# 3. If the command was invoked interactively at top-level:
+# 2. If the command was invoked interactively at top-level:
# (a) see if the command exists as an executable UNIX program.
# If so, "exec" the command.
# (b) see if the command requests csh-like history substitution
@@ -237,37 +231,29 @@ if {[namespace which -command tclLog] eq ""} {
proc unknown args {
variable ::tcl::UnknownPending
- global auto_noexec auto_noload env tcl_interactive
-
- # If the command word has the form "namespace inscope ns cmd"
- # then concatenate its arguments onto the end and evaluate it.
+ global auto_noexec auto_noload env tcl_interactive errorInfo errorCode
- set cmd [lindex $args 0]
- if {[regexp "^:*namespace\[ \t\n\]+inscope" $cmd] && [llength $cmd] == 4} {
- #return -code error "You need an {*}"
- set arglist [lrange $args 1 end]
- set ret [catch {uplevel 1 ::$cmd $arglist} result opts]
- dict unset opts -errorinfo
- dict incr opts -level
- return -options $opts $result
+ if {[info exists errorInfo]} {
+ set savedErrorInfo $errorInfo
+ }
+ if {[info exists errorCode]} {
+ set savedErrorCode $errorCode
}
- catch {set savedErrorInfo $::errorInfo}
- catch {set savedErrorCode $::errorCode}
- set name $cmd
+ set name [lindex $args 0]
if {![info exists auto_noload]} {
#
# Make sure we're not trying to load the same proc twice.
#
if {[info exists UnknownPending($name)]} {
return -code error "self-referential recursion\
- in \"unknown\" for command \"$name\"";
+ in \"unknown\" for command \"$name\""
}
- set UnknownPending($name) pending;
+ set UnknownPending($name) pending
set ret [catch {
auto_load $name [uplevel 1 {::namespace current}]
} msg opts]
- unset UnknownPending($name);
+ unset UnknownPending($name)
if {$ret != 0} {
dict append opts -errorinfo "\n (autoloading \"$name\")"
return -options $opts $msg
@@ -282,19 +268,19 @@ proc unknown args {
unset -nocomplain ::errorCode
}
if {[info exists savedErrorInfo]} {
- set ::errorInfo $savedErrorInfo
+ set errorInfo $savedErrorInfo
} else {
- unset -nocomplain ::errorInfo
+ unset -nocomplain errorInfo
}
set code [catch {uplevel 1 $args} msg opts]
if {$code == 1} {
#
# Compute stack trace contribution from the [uplevel].
- # Note the dependence on how Tcl_AddErrorInfo, etc.
+ # Note the dependence on how Tcl_AddErrorInfo, etc.
# construct the stack trace.
#
- set errorInfo [dict get $opts -errorinfo]
- set errorCode [dict get $opts -errorcode]
+ set errInfo [dict get $opts -errorinfo]
+ set errCode [dict get $opts -errorcode]
set cinfo $args
if {[string bytelength $cinfo] > 150} {
set cinfo [string range $cinfo 0 150]
@@ -311,7 +297,7 @@ proc unknown args {
# and trim the extra contribution from the matching case
#
set expect "$msg\n while executing\n\"$cinfo"
- if {$errorInfo eq $expect} {
+ if {$errInfo eq $expect} {
#
# The stack has only the eval from the expanded command
# Do not generate any stack trace here.
@@ -326,18 +312,18 @@ proc unknown args {
#
set expect "\n invoked from within\n\"$cinfo"
set exlen [string length $expect]
- set eilen [string length $errorInfo]
+ set eilen [string length $errInfo]
set i [expr {$eilen - $exlen - 1}]
- set einfo [string range $errorInfo 0 $i]
+ set einfo [string range $errInfo 0 $i]
#
- # For now verify that $errorInfo consists of what we are about
+ # For now verify that $errInfo consists of what we are about
# to return plus what we expected to trim off.
#
- if {$errorInfo ne "$einfo$expect"} {
+ if {$errInfo ne "$einfo$expect"} {
error "Tcl bug: unexpected stack trace in \"unknown\"" {} \
- [list CORE UNKNOWN BADTRACE $einfo $expect $errorInfo]
+ [list CORE UNKNOWN BADTRACE $einfo $expect $errInfo]
}
- return -code error -errorcode $errorCode \
+ return -code error -errorcode $errCode \
-errorinfo $einfo $msg
} else {
dict incr opts -level
@@ -346,7 +332,7 @@ proc unknown args {
}
}
- if {([info level] == 1) && ([info script] eq "") \
+ if {([info level] == 1) && ([info script] eq "")
&& [info exists tcl_interactive] && $tcl_interactive} {
if {![info exists auto_noexec]} {
set new [auto_execok $name]
@@ -421,7 +407,7 @@ proc unknown args {
# library file to create the procedure. Returns 1 if it successfully
# loaded the procedure, 0 otherwise.
#
-# Arguments:
+# Arguments:
# cmd - Name of the command to find and load.
# namespace (optional) The namespace where the command is being used - must be
# a canonical namespace as returned [namespace current]
@@ -445,7 +431,7 @@ proc auto_load {cmd {namespace {}}} {
# info commands $name
# Unfortunately, if the name has glob-magic chars in it like *
# or [], it may not match. For our purposes here, a better
- # route is to use
+ # route is to use
# namespace which -command $name
if {[namespace which -command $name] ne ""} {
return 1
@@ -476,7 +462,7 @@ proc auto_load {cmd {namespace {}}} {
# of available commands. Returns 1 if the index is loaded, and 0 if
# the index is already loaded and up to date.
#
-# Arguments:
+# Arguments:
# None.
proc auto_load_index {} {
@@ -555,34 +541,34 @@ proc auto_qualify {cmd namespace} {
# Before each return case we give an example of which category it is
# with the following form :
- # ( inputCmd, inputNameSpace) -> output
+ # (inputCmd, inputNameSpace) -> output
if {[string match ::* $cmd]} {
if {$n > 1} {
- # ( ::foo::bar , * ) -> ::foo::bar
+ # (::foo::bar , *) -> ::foo::bar
return [list $cmd]
} else {
- # ( ::global , * ) -> global
+ # (::global , *) -> global
return [list [string range $cmd 2 end]]
}
}
-
+
# Potentially returning 2 elements to try :
# (if the current namespace is not the global one)
if {$n == 0} {
if {$namespace eq "::"} {
- # ( nocolons , :: ) -> nocolons
+ # (nocolons , ::) -> nocolons
return [list $cmd]
} else {
- # ( nocolons , ::sub ) -> ::sub::nocolons nocolons
+ # (nocolons , ::sub) -> ::sub::nocolons nocolons
return [list ${namespace}::$cmd $cmd]
}
} elseif {$namespace eq "::"} {
- # ( foo::bar , :: ) -> ::foo::bar
+ # (foo::bar , ::) -> ::foo::bar
return [list ::$cmd]
} else {
- # ( foo::bar , ::sub ) -> ::sub::foo::bar ::foo::bar
+ # (foo::bar , ::sub) -> ::sub::foo::bar ::foo::bar
return [list ${namespace}::$cmd ::$cmd]
}
}
@@ -624,13 +610,13 @@ proc auto_import {pattern} {
# auto_execok --
#
-# Returns string that indicates name of program to execute if
+# Returns string that indicates name of program to execute if
# name corresponds to a shell builtin or an executable in the
-# Windows search path, or "" otherwise. Builds an associative
-# array auto_execs that caches information about previous checks,
+# Windows search path, or "" otherwise. Builds an associative
+# array auto_execs that caches information about previous checks,
# for speed.
#
-# Arguments:
+# Arguments:
# name - Name of a command.
if {$tcl_platform(platform) eq "windows"} {
@@ -659,10 +645,10 @@ proc auto_execok name {
# Add an initial ; to have the {} extension check first.
set execExtensions [split ";$env(PATHEXT)" ";"]
} else {
- set execExtensions [list {} .com .exe .bat]
+ set execExtensions [list {} .com .exe .bat .cmd]
}
- if {$name in $shellBuiltins} {
+ if {[string tolower $name] in $shellBuiltins} {
# When this is command.com for some reason on Win2K, Tcl won't
# exec it unless the case is right, which this corrects. COMSPEC
# may not point to a real file, so do the check.
@@ -685,7 +671,7 @@ proc auto_execok name {
set path "[file dirname [info nameof]];.;"
if {[info exists env(WINDIR)]} {
- set windir $env(WINDIR)
+ set windir $env(WINDIR)
}
if {[info exists windir]} {
if {$tcl_platform(os) eq "Windows NT"} {
@@ -700,11 +686,14 @@ proc auto_execok name {
}
}
- foreach dir [split $path {;}] {
- # Skip already checked directories
- if {[info exists checked($dir)] || ($dir eq {})} { continue }
- set checked($dir) {}
- foreach ext $execExtensions {
+ foreach ext $execExtensions {
+ unset -nocomplain checked
+ foreach dir [split $path {;}] {
+ # Skip already checked directories
+ if {[info exists checked($dir)] || ($dir eq "")} {
+ continue
+ }
+ set checked($dir) {}
set file [file join $dir ${name}${ext}]
if {[file exists $file] && ![file isdirectory $file]} {
return [set auto_execs($name) [list $file]]
@@ -750,13 +739,13 @@ proc auto_execok name {
# This procedure is called by Tcl's core when attempts to call the
# filesystem's copydirectory function fail. The semantics of the call
# are that 'dest' does not yet exist, i.e. dest should become the exact
-# image of src. If dest does exist, we throw an error.
-#
+# image of src. If dest does exist, we throw an error.
+#
# Note that making changes to this procedure can change the results
# of running Tcl's tests.
#
-# Arguments:
-# action - "renaming" or "copying"
+# Arguments:
+# action - "renaming" or "copying"
# src - source directory
# dest - destination directory
proc tcl::CopyDirectory {action src dest} {
@@ -784,7 +773,7 @@ proc tcl::CopyDirectory {action src dest} {
# exists, then we should only call this function if -force
# is true, which means we just want to over-write. So,
# the following code is now commented out.
- #
+ #
# return -code error "error $action \"$src\" to\
# \"$dest\": file already exists"
} else {
@@ -796,7 +785,7 @@ proc tcl::CopyDirectory {action src dest} {
lappend existing {*}[glob -nocomplain -directory $dest \
-type hidden * .*]
foreach s $existing {
- if {([file tail $s] ne ".") && ([file tail $s] ne "..")} {
+ if {[file tail $s] ni {. ..}} {
return -code error "error $action \"$src\" to\
\"$dest\": file already exists"
}
@@ -804,7 +793,7 @@ proc tcl::CopyDirectory {action src dest} {
}
} else {
if {[string first $nsrc $ndest] != -1} {
- set srclen [expr {[llength [file split $nsrc]] -1}]
+ set srclen [expr {[llength [file split $nsrc]] - 1}]
set ndest [lindex [file split $ndest] $srclen]
if {$ndest eq [file tail $nsrc]} {
return -code error "error $action \"$src\" to\
@@ -817,15 +806,15 @@ proc tcl::CopyDirectory {action src dest} {
# Have to be careful to capture both visible and hidden files.
# We will also be more generous to the file system and not
# assume the hidden and non-hidden lists are non-overlapping.
- #
+ #
# On Unix 'hidden' files begin with '.'. On other platforms
# or filesystems hidden files may have other interpretations.
set filelist [concat [glob -nocomplain -directory $src *] \
[glob -nocomplain -directory $src -types hidden *]]
foreach s [lsort -unique $filelist] {
- if {([file tail $s] ne ".") && ([file tail $s] ne "..")} {
- file copy -force $s [file join $dest [file tail $s]]
+ if {[file tail $s] ni {. ..}} {
+ file copy -force -- $s [file join $dest [file tail $s]]
}
}
return
diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl
index ccf4054..cf3b9d7 100644
--- a/library/msgcat/msgcat.tcl
+++ b/library/msgcat/msgcat.tcl
@@ -9,17 +9,15 @@
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: msgcat.tcl,v 1.26 2006/11/03 00:34:52 hobbs Exp $
package require Tcl 8.5
# When the version number changes, be sure to update the pkgIndex.tcl file,
# and the installation directory in the Makefiles.
-package provide msgcat 1.4.2
+package provide msgcat 1.5.2
namespace eval msgcat {
namespace export mc mcload mclocale mcmax mcmset mcpreferences mcset \
- mcunknown
+ mcunknown mcflset mcflmset
# Records the current locale as passed to mclocale
variable Locale ""
@@ -27,6 +25,9 @@ namespace eval msgcat {
# Records the list of locales to search
variable Loclist {}
+ # Records the locale of the currently sourced message catalogue file
+ variable FileLocale
+
# Records the mapping between source strings and translated strings. The
# dict key is of the form "<locale> <namespace> <src>", where locale and
# namespace should be themselves dict values and the value is
@@ -34,7 +35,7 @@ namespace eval msgcat {
variable Msgs [dict create]
# Map of language codes used in Windows registry to those of ISO-639
- if { $::tcl_platform(platform) eq "windows" } {
+ if {[info sharedlibextension] eq ".dll"} {
variable WinRegToISO639 [dict create {*}{
01 ar 0401 ar_SA 0801 ar_IQ 0c01 ar_EG 1001 ar_LY 1401 ar_DZ
1801 ar_MA 1c01 ar_TN 2001 ar_OM 2401 ar_YE 2801 ar_SY
@@ -68,8 +69,8 @@ namespace eval msgcat {
15 pl 0415 pl_PL
16 pt 0416 pt_BR 0816 pt_PT
17 rm 0417 rm_CH
- 18 ro 0418 ro_RO
- 19 ru
+ 18 ro 0418 ro_RO 0818 ro_MO
+ 19 ru 0819 ru_MO
1a hr 041a hr_HR 081a sr_YU 0c1a sr_YU@cyrillic
1b sk 041b sk_SK
1c sq 041c sq_AL
@@ -94,6 +95,7 @@ namespace eval msgcat {
2f mk 042f mk_MK
30 bnt 0430 bnt_TZ
31 ts 0431 ts_ZA
+ 32 tn
33 ven 0433 ven_ZA
34 xh 0434 xh_ZA
35 zu 0435 zu_ZA
@@ -177,7 +179,7 @@ namespace eval msgcat {
# args Args to pass to the format command
#
# Results:
-# Returns the translated string. Propagates errors thrown by the
+# Returns the translated string. Propagates errors thrown by the
# format command.
proc msgcat::mc {src args} {
@@ -189,7 +191,7 @@ proc msgcat::mc {src args} {
variable Locale
set ns [uplevel 1 [list ::namespace current]]
-
+
while {$ns != ""} {
foreach loc $Loclist {
if {[dict exists $Msgs $loc $ns $src]} {
@@ -278,17 +280,30 @@ proc msgcat::mcpreferences {} {
# Returns the number of message catalogs that were loaded.
proc msgcat::mcload {langdir} {
+ variable FileLocale
+ # Save the file locale if we are recursively called
+ if {[info exists FileLocale]} {
+ set nestedFileLocale $FileLocale
+ }
set x 0
foreach p [mcpreferences] {
- if { $p eq {} } {
+ if {$p eq {}} {
set p ROOT
}
set langfile [file join $langdir $p.msg]
if {[file exists $langfile]} {
incr x
+ set FileLocale [string tolower [file tail [file rootname $langfile]]]
+ if {"root" eq $FileLocale} {
+ set FileLocale ""
+ }
uplevel 1 [list ::source -encoding utf-8 $langfile]
+ unset FileLocale
}
}
+ if {[info exists nestedFileLocale]} {
+ set FileLocale $nestedFileLocale
+ }
return $x
}
@@ -312,17 +327,39 @@ proc msgcat::mcset {locale src {dest ""}} {
}
set ns [uplevel 1 [list ::namespace current]]
-
+
set locale [string tolower $locale]
-
- # create nested dictionaries if they do not exist
- if {![dict exists $Msgs $locale]} {
- dict set Msgs $locale [dict create]
+
+ dict set Msgs $locale $ns $src $dest
+ return $dest
+}
+
+# msgcat::mcflset --
+#
+# Set the translation for a given string in the current file locale.
+#
+# Arguments:
+# src The source string.
+# dest (Optional) The translated string. If omitted,
+# the source string is used.
+#
+# Results:
+# Returns the new locale.
+
+proc msgcat::mcflset {src {dest ""}} {
+ variable FileLocale
+ variable Msgs
+
+ if {![info exists FileLocale]} {
+ return -code error \
+ "must only be used inside a message catalog loaded with ::msgcat::mcload"
}
- if {![dict exists $Msgs $locale $ns]} {
- dict set Msgs $locale $ns [dict create]
+ if {[llength [info level 0]] == 2} { ;# dest not specified
+ set dest $src
}
- dict set Msgs $locale $ns $src $dest
+
+ set ns [uplevel 1 [list ::namespace current]]
+ dict set Msgs $FileLocale $ns $src $dest
return $dest
}
@@ -337,7 +374,7 @@ proc msgcat::mcset {locale src {dest ""}} {
# Results:
# Returns the number of pairs processed
-proc msgcat::mcmset {locale pairs } {
+proc msgcat::mcmset {locale pairs} {
variable Msgs
set length [llength $pairs]
@@ -345,22 +382,46 @@ proc msgcat::mcmset {locale pairs } {
return -code error "bad translation list:\
should be \"[lindex [info level 0] 0] locale {src dest ...}\""
}
-
+
set locale [string tolower $locale]
set ns [uplevel 1 [list ::namespace current]]
- # create nested dictionaries if they do not exist
- if {![dict exists $Msgs $locale]} {
- dict set Msgs $locale [dict create]
- }
- if {![dict exists $Msgs $locale $ns]} {
- dict set Msgs $locale $ns [dict create]
- }
foreach {src dest} $pairs {
- dict set Msgs $locale $ns $src $dest
+ dict set Msgs $locale $ns $src $dest
}
- return $length
+ return [expr {$length / 2}]
+}
+
+# msgcat::mcflmset --
+#
+# Set the translation for multiple strings in the mc file locale.
+#
+# Arguments:
+# pairs One or more src/dest pairs (must be even length)
+#
+# Results:
+# Returns the number of pairs processed
+
+proc msgcat::mcflmset {pairs} {
+ variable FileLocale
+ variable Msgs
+
+ if {![info exists FileLocale]} {
+ return -code error \
+ "must only be used inside a message catalog loaded with ::msgcat::mcload"
+ }
+ set length [llength $pairs]
+ if {$length % 2} {
+ return -code error "bad translation list:\
+ should be \"[lindex [info level 0] 0] locale {src dest ...}\""
+ }
+
+ set ns [uplevel 1 [list ::namespace current]]
+ foreach {src dest} $pairs {
+ dict set Msgs $FileLocale $ns $src $dest
+ }
+ return [expr {$length / 2}]
}
# msgcat::mcunknown --
@@ -368,7 +429,7 @@ proc msgcat::mcmset {locale pairs } {
# This routine is called by msgcat::mc if a translation cannot
# be found for a string. This routine is intended to be replaced
# by an application specific routine for error reporting
-# purposes. The default behavior is to return the source string.
+# purposes. The default behavior is to return the source string.
# If additional args are specified, the format command will be used
# to work them into the traslated string.
#
@@ -390,7 +451,7 @@ proc msgcat::mcunknown {locale src args} {
# msgcat::mcmax --
#
-# Calculates the maximum length of the translated strings of the given
+# Calculates the maximum length of the translated strings of the given
# list.
#
# Arguments:
@@ -403,10 +464,10 @@ proc msgcat::mcmax {args} {
set max 0
foreach string $args {
set translated [uplevel 1 [list [namespace origin mc] $string]]
- set len [string length $translated]
- if {$len>$max} {
+ set len [string length $translated]
+ if {$len>$max} {
set max $len
- }
+ }
}
return $max
}
@@ -442,13 +503,15 @@ proc msgcat::ConvertLocale {value} {
# Initialize the default locale
proc msgcat::Init {} {
+ global env
+
#
# set default locale, try to get from environment
#
foreach varName {LC_ALL LC_MESSAGES LANG} {
- if {[info exists ::env($varName)] && ("" ne $::env($varName))} {
+ if {[info exists env($varName)] && ("" ne $env($varName))} {
if {![catch {
- mclocale [ConvertLocale $::env($varName)]
+ mclocale [ConvertLocale $env($varName)]
}]} {
return
}
@@ -457,8 +520,7 @@ proc msgcat::Init {} {
#
# On Darwin, fallback to current CFLocale identifier if available.
#
- if {$::tcl_platform(os) eq "Darwin" && $::tcl_platform(platform) eq "unix"
- && [info exists ::tcl::mac::locale] && $::tcl::mac::locale ne ""} {
+ if {[info exists ::tcl::mac::locale] && $::tcl::mac::locale ne ""} {
if {![catch {
mclocale [ConvertLocale $::tcl::mac::locale]
}]} {
@@ -466,21 +528,54 @@ proc msgcat::Init {} {
}
}
#
- # The rest of this routine is special processing for Windows;
- # all other platforms, get out now.
+ # The rest of this routine is special processing for Windows or
+ # Cygwin. All other platforms, get out now.
#
- if { $::tcl_platform(platform) ne "windows" } {
+ if {([info sharedlibextension] ne ".dll")
+ || [catch {package require registry}]} {
mclocale C
return
}
#
- # On Windows, try to set locale depending on registry settings,
- # or fall back on locale of "C".
+ # On Windows or Cygwin, try to set locale depending on registry
+ # settings, or fall back on locale of "C".
#
- set key {HKEY_CURRENT_USER\Control Panel\International}
- if {[catch {package require registry}] \
- || [catch {registry get $key "locale"} locale]} {
- mclocale C
+
+ # On Vista and later:
+ # HCU/Control Panel/Desktop : PreferredUILanguages is for language packs,
+ # HCU/Control Pannel/International : localName is the default locale.
+ #
+ # They contain the local string as RFC5646, composed of:
+ # [a-z]{2,3} : language
+ # -[a-z]{4} : script (optional, translated by table Latn->latin)
+ # -[a-z]{2}|[0-9]{3} : territory (optional, numerical region codes not used)
+ # (-.*)* : variant, extension, private use (optional, not used)
+ # Those are translated to local strings.
+ # Examples: de-CH -> de_ch, sr-Latn-CS -> sr_cs@latin, es-419 -> es
+ #
+ foreach key {{HKEY_CURRENT_USER\Control Panel\Desktop} {HKEY_CURRENT_USER\Control Panel\International}}\
+ value {PreferredUILanguages localeName} {
+ if {![catch {registry get $key $value} localeName]
+ && [regexp {^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}))?(?:-.+)?$}\
+ [string tolower $localeName] match locale script territory]} {
+ if {"" ne $territory} {
+ append locale _ $territory
+ }
+ set modifierDict [dict create latn latin cyrl cyrillic]
+ if {[dict exists $modifierDict $script]} {
+ append locale @ [dict get $modifierDict $script]
+ }
+ if {![catch {mclocale [ConvertLocale $locale]}]} {
+ return
+ }
+ }
+ }
+
+ # then check value locale which contains a numerical language ID
+ if {[catch {
+ set locale [registry get $key "locale"]
+ }]} {
+ mclocale C
return
}
#
@@ -496,7 +591,7 @@ proc msgcat::Init {} {
set locale [string tolower $locale]
while {[string length $locale]} {
if {![catch {
- mclocale [ConvertLocale [dict get $WinRegToISO639 $locale]]
+ mclocale [ConvertLocale [dict get $WinRegToISO639 $locale]]
}]} {
return
}
diff --git a/library/msgcat/pkgIndex.tcl b/library/msgcat/pkgIndex.tcl
index 5b6037c..5fabfe3 100644
--- a/library/msgcat/pkgIndex.tcl
+++ b/library/msgcat/pkgIndex.tcl
@@ -1,2 +1,2 @@
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
-package ifneeded msgcat 1.4.2 [list source [file join $dir msgcat.tcl]]
+package ifneeded msgcat 1.5.2 [list source [file join $dir msgcat.tcl]]
diff --git a/library/msgs/af.msg b/library/msgs/af.msg
index 0892615..0892615 100755..100644
--- a/library/msgs/af.msg
+++ b/library/msgs/af.msg
diff --git a/library/msgs/af_za.msg b/library/msgs/af_za.msg
index fef48ad..fef48ad 100755..100644
--- a/library/msgs/af_za.msg
+++ b/library/msgs/af_za.msg
diff --git a/library/msgs/ar.msg b/library/msgs/ar.msg
index 257157f..257157f 100755..100644
--- a/library/msgs/ar.msg
+++ b/library/msgs/ar.msg
diff --git a/library/msgs/ar_in.msg b/library/msgs/ar_in.msg
index 185e49c..185e49c 100755..100644
--- a/library/msgs/ar_in.msg
+++ b/library/msgs/ar_in.msg
diff --git a/library/msgs/ar_jo.msg b/library/msgs/ar_jo.msg
index 0f5e269..0f5e269 100755..100644
--- a/library/msgs/ar_jo.msg
+++ b/library/msgs/ar_jo.msg
diff --git a/library/msgs/ar_lb.msg b/library/msgs/ar_lb.msg
index e62acd3..e62acd3 100755..100644
--- a/library/msgs/ar_lb.msg
+++ b/library/msgs/ar_lb.msg
diff --git a/library/msgs/ar_sy.msg b/library/msgs/ar_sy.msg
index d5e1c87..d5e1c87 100755..100644
--- a/library/msgs/ar_sy.msg
+++ b/library/msgs/ar_sy.msg
diff --git a/library/msgs/be.msg b/library/msgs/be.msg
index 379a1d7..379a1d7 100755..100644
--- a/library/msgs/be.msg
+++ b/library/msgs/be.msg
diff --git a/library/msgs/bg.msg b/library/msgs/bg.msg
index ff17759..ff17759 100755..100644
--- a/library/msgs/bg.msg
+++ b/library/msgs/bg.msg
diff --git a/library/msgs/bn.msg b/library/msgs/bn.msg
index 664b9d8..664b9d8 100755..100644
--- a/library/msgs/bn.msg
+++ b/library/msgs/bn.msg
diff --git a/library/msgs/bn_in.msg b/library/msgs/bn_in.msg
index 28c000f..28c000f 100755..100644
--- a/library/msgs/bn_in.msg
+++ b/library/msgs/bn_in.msg
diff --git a/library/msgs/ca.msg b/library/msgs/ca.msg
index 36c9772..36c9772 100755..100644
--- a/library/msgs/ca.msg
+++ b/library/msgs/ca.msg
diff --git a/library/msgs/cs.msg b/library/msgs/cs.msg
index 8db8bdd..8db8bdd 100755..100644
--- a/library/msgs/cs.msg
+++ b/library/msgs/cs.msg
diff --git a/library/msgs/da.msg b/library/msgs/da.msg
index e4fec7f..e4fec7f 100755..100644
--- a/library/msgs/da.msg
+++ b/library/msgs/da.msg
diff --git a/library/msgs/de.msg b/library/msgs/de.msg
index 9eb3145..9eb3145 100755..100644
--- a/library/msgs/de.msg
+++ b/library/msgs/de.msg
diff --git a/library/msgs/de_at.msg b/library/msgs/de_at.msg
index 61bc266..61bc266 100755..100644
--- a/library/msgs/de_at.msg
+++ b/library/msgs/de_at.msg
diff --git a/library/msgs/de_be.msg b/library/msgs/de_be.msg
index 3614763..3614763 100755..100644
--- a/library/msgs/de_be.msg
+++ b/library/msgs/de_be.msg
diff --git a/library/msgs/el.msg b/library/msgs/el.msg
index ac19f62..ac19f62 100755..100644
--- a/library/msgs/el.msg
+++ b/library/msgs/el.msg
diff --git a/library/msgs/en_au.msg b/library/msgs/en_au.msg
index 7f9870c..7f9870c 100755..100644
--- a/library/msgs/en_au.msg
+++ b/library/msgs/en_au.msg
diff --git a/library/msgs/en_be.msg b/library/msgs/en_be.msg
index 5072986..5072986 100755..100644
--- a/library/msgs/en_be.msg
+++ b/library/msgs/en_be.msg
diff --git a/library/msgs/en_bw.msg b/library/msgs/en_bw.msg
index 8fd20c7..8fd20c7 100755..100644
--- a/library/msgs/en_bw.msg
+++ b/library/msgs/en_bw.msg
diff --git a/library/msgs/en_ca.msg b/library/msgs/en_ca.msg
index 278efe7..278efe7 100755..100644
--- a/library/msgs/en_ca.msg
+++ b/library/msgs/en_ca.msg
diff --git a/library/msgs/en_gb.msg b/library/msgs/en_gb.msg
index 5c61c43..5c61c43 100755..100644
--- a/library/msgs/en_gb.msg
+++ b/library/msgs/en_gb.msg
diff --git a/library/msgs/en_hk.msg b/library/msgs/en_hk.msg
index 8b33bc0..8b33bc0 100755..100644
--- a/library/msgs/en_hk.msg
+++ b/library/msgs/en_hk.msg
diff --git a/library/msgs/en_ie.msg b/library/msgs/en_ie.msg
index ba621cf..ba621cf 100755..100644
--- a/library/msgs/en_ie.msg
+++ b/library/msgs/en_ie.msg
diff --git a/library/msgs/en_in.msg b/library/msgs/en_in.msg
index a1f155d..a1f155d 100755..100644
--- a/library/msgs/en_in.msg
+++ b/library/msgs/en_in.msg
diff --git a/library/msgs/en_nz.msg b/library/msgs/en_nz.msg
index b419017..b419017 100755..100644
--- a/library/msgs/en_nz.msg
+++ b/library/msgs/en_nz.msg
diff --git a/library/msgs/en_ph.msg b/library/msgs/en_ph.msg
index 682666d..682666d 100755..100644
--- a/library/msgs/en_ph.msg
+++ b/library/msgs/en_ph.msg
diff --git a/library/msgs/en_sg.msg b/library/msgs/en_sg.msg
index 4dc5b1d..4dc5b1d 100755..100644
--- a/library/msgs/en_sg.msg
+++ b/library/msgs/en_sg.msg
diff --git a/library/msgs/en_za.msg b/library/msgs/en_za.msg
index fe43797..fe43797 100755..100644
--- a/library/msgs/en_za.msg
+++ b/library/msgs/en_za.msg
diff --git a/library/msgs/en_zw.msg b/library/msgs/en_zw.msg
index 2a5804f..2a5804f 100755..100644
--- a/library/msgs/en_zw.msg
+++ b/library/msgs/en_zw.msg
diff --git a/library/msgs/eo.msg b/library/msgs/eo.msg
index 1d2a24f..1d2a24f 100755..100644
--- a/library/msgs/eo.msg
+++ b/library/msgs/eo.msg
diff --git a/library/msgs/es.msg b/library/msgs/es.msg
index a24f0a1..a24f0a1 100755..100644
--- a/library/msgs/es.msg
+++ b/library/msgs/es.msg
diff --git a/library/msgs/es_ar.msg b/library/msgs/es_ar.msg
index 7d35027..7d35027 100755..100644
--- a/library/msgs/es_ar.msg
+++ b/library/msgs/es_ar.msg
diff --git a/library/msgs/es_bo.msg b/library/msgs/es_bo.msg
index 498ad0d..498ad0d 100755..100644
--- a/library/msgs/es_bo.msg
+++ b/library/msgs/es_bo.msg
diff --git a/library/msgs/es_cl.msg b/library/msgs/es_cl.msg
index 31d465c..31d465c 100755..100644
--- a/library/msgs/es_cl.msg
+++ b/library/msgs/es_cl.msg
diff --git a/library/msgs/es_co.msg b/library/msgs/es_co.msg
index 77e57f0..77e57f0 100755..100644
--- a/library/msgs/es_co.msg
+++ b/library/msgs/es_co.msg
diff --git a/library/msgs/es_cr.msg b/library/msgs/es_cr.msg
index 7a652fa..7a652fa 100755..100644
--- a/library/msgs/es_cr.msg
+++ b/library/msgs/es_cr.msg
diff --git a/library/msgs/es_do.msg b/library/msgs/es_do.msg
index 0e283da..0e283da 100755..100644
--- a/library/msgs/es_do.msg
+++ b/library/msgs/es_do.msg
diff --git a/library/msgs/es_ec.msg b/library/msgs/es_ec.msg
index 9e921e0..9e921e0 100755..100644
--- a/library/msgs/es_ec.msg
+++ b/library/msgs/es_ec.msg
diff --git a/library/msgs/es_gt.msg b/library/msgs/es_gt.msg
index ecd6faf..ecd6faf 100755..100644
--- a/library/msgs/es_gt.msg
+++ b/library/msgs/es_gt.msg
diff --git a/library/msgs/es_hn.msg b/library/msgs/es_hn.msg
index a758ca2..a758ca2 100755..100644
--- a/library/msgs/es_hn.msg
+++ b/library/msgs/es_hn.msg
diff --git a/library/msgs/es_mx.msg b/library/msgs/es_mx.msg
index 7cfb545..7cfb545 100755..100644
--- a/library/msgs/es_mx.msg
+++ b/library/msgs/es_mx.msg
diff --git a/library/msgs/es_ni.msg b/library/msgs/es_ni.msg
index 7c39495..7c39495 100755..100644
--- a/library/msgs/es_ni.msg
+++ b/library/msgs/es_ni.msg
diff --git a/library/msgs/es_pa.msg b/library/msgs/es_pa.msg
index cecacdc..cecacdc 100755..100644
--- a/library/msgs/es_pa.msg
+++ b/library/msgs/es_pa.msg
diff --git a/library/msgs/es_pe.msg b/library/msgs/es_pe.msg
index 9f90595..9f90595 100755..100644
--- a/library/msgs/es_pe.msg
+++ b/library/msgs/es_pe.msg
diff --git a/library/msgs/es_pr.msg b/library/msgs/es_pr.msg
index 8511b12..8511b12 100755..100644
--- a/library/msgs/es_pr.msg
+++ b/library/msgs/es_pr.msg
diff --git a/library/msgs/es_py.msg b/library/msgs/es_py.msg
index aa93d36..aa93d36 100755..100644
--- a/library/msgs/es_py.msg
+++ b/library/msgs/es_py.msg
diff --git a/library/msgs/es_sv.msg b/library/msgs/es_sv.msg
index fc7954d..fc7954d 100755..100644
--- a/library/msgs/es_sv.msg
+++ b/library/msgs/es_sv.msg
diff --git a/library/msgs/es_uy.msg b/library/msgs/es_uy.msg
index b33525c..b33525c 100755..100644
--- a/library/msgs/es_uy.msg
+++ b/library/msgs/es_uy.msg
diff --git a/library/msgs/es_ve.msg b/library/msgs/es_ve.msg
index 7c2a7b0..7c2a7b0 100755..100644
--- a/library/msgs/es_ve.msg
+++ b/library/msgs/es_ve.msg
diff --git a/library/msgs/et.msg b/library/msgs/et.msg
index 8d32e9e..8d32e9e 100755..100644
--- a/library/msgs/et.msg
+++ b/library/msgs/et.msg
diff --git a/library/msgs/eu.msg b/library/msgs/eu.msg
index cf708b6..cf708b6 100755..100644
--- a/library/msgs/eu.msg
+++ b/library/msgs/eu.msg
diff --git a/library/msgs/eu_es.msg b/library/msgs/eu_es.msg
index 2694418..2694418 100755..100644
--- a/library/msgs/eu_es.msg
+++ b/library/msgs/eu_es.msg
diff --git a/library/msgs/fa.msg b/library/msgs/fa.msg
index 89b2f90..89b2f90 100755..100644
--- a/library/msgs/fa.msg
+++ b/library/msgs/fa.msg
diff --git a/library/msgs/fa_in.msg b/library/msgs/fa_in.msg
index adc9e91..adc9e91 100755..100644
--- a/library/msgs/fa_in.msg
+++ b/library/msgs/fa_in.msg
diff --git a/library/msgs/fa_ir.msg b/library/msgs/fa_ir.msg
index 597ce9d..597ce9d 100755..100644
--- a/library/msgs/fa_ir.msg
+++ b/library/msgs/fa_ir.msg
diff --git a/library/msgs/fi.msg b/library/msgs/fi.msg
index acabba0..acabba0 100755..100644
--- a/library/msgs/fi.msg
+++ b/library/msgs/fi.msg
diff --git a/library/msgs/fo.msg b/library/msgs/fo.msg
index 4696e62..4696e62 100755..100644
--- a/library/msgs/fo.msg
+++ b/library/msgs/fo.msg
diff --git a/library/msgs/fo_fo.msg b/library/msgs/fo_fo.msg
index 2392b8e..2392b8e 100755..100644
--- a/library/msgs/fo_fo.msg
+++ b/library/msgs/fo_fo.msg
diff --git a/library/msgs/fr.msg b/library/msgs/fr.msg
index 55b19bf..55b19bf 100755..100644
--- a/library/msgs/fr.msg
+++ b/library/msgs/fr.msg
diff --git a/library/msgs/fr_be.msg b/library/msgs/fr_be.msg
index cdb13bd..cdb13bd 100755..100644
--- a/library/msgs/fr_be.msg
+++ b/library/msgs/fr_be.msg
diff --git a/library/msgs/fr_ca.msg b/library/msgs/fr_ca.msg
index 00ccfff..00ccfff 100755..100644
--- a/library/msgs/fr_ca.msg
+++ b/library/msgs/fr_ca.msg
diff --git a/library/msgs/fr_ch.msg b/library/msgs/fr_ch.msg
index 7e2bac7..7e2bac7 100755..100644
--- a/library/msgs/fr_ch.msg
+++ b/library/msgs/fr_ch.msg
diff --git a/library/msgs/ga.msg b/library/msgs/ga.msg
index 6edf13a..6edf13a 100755..100644
--- a/library/msgs/ga.msg
+++ b/library/msgs/ga.msg
diff --git a/library/msgs/ga_ie.msg b/library/msgs/ga_ie.msg
index b6acbbc..b6acbbc 100755..100644
--- a/library/msgs/ga_ie.msg
+++ b/library/msgs/ga_ie.msg
diff --git a/library/msgs/gl.msg b/library/msgs/gl.msg
index 4b869e8..4b869e8 100755..100644
--- a/library/msgs/gl.msg
+++ b/library/msgs/gl.msg
diff --git a/library/msgs/gl_es.msg b/library/msgs/gl_es.msg
index d4ed270..d4ed270 100755..100644
--- a/library/msgs/gl_es.msg
+++ b/library/msgs/gl_es.msg
diff --git a/library/msgs/gv.msg b/library/msgs/gv.msg
index 7d332ad..7d332ad 100755..100644
--- a/library/msgs/gv.msg
+++ b/library/msgs/gv.msg
diff --git a/library/msgs/gv_gb.msg b/library/msgs/gv_gb.msg
index 5e96e6f..5e96e6f 100755..100644
--- a/library/msgs/gv_gb.msg
+++ b/library/msgs/gv_gb.msg
diff --git a/library/msgs/he.msg b/library/msgs/he.msg
index 52a94e2..4fd921d 100755..100644
--- a/library/msgs/he.msg
+++ b/library/msgs/he.msg
@@ -44,8 +44,8 @@ namespace eval ::tcl::clock {
"\u05e0\u05d5\u05d1\u05de\u05d1\u05e8"\
"\u05d3\u05e6\u05de\u05d1\u05e8"\
""]
- ::msgcat::mcset he BCE "\u05dc\u05e1\u05d4"\u05e0"
- ::msgcat::mcset he CE "\u05dc\u05e4\u05e1\u05d4"\u05e0"
+ ::msgcat::mcset he BCE "\u05dc\u05e1\u05d4\u0022\u05e0"
+ ::msgcat::mcset he CE "\u05dc\u05e4\u05e1\u05d4\u0022\u05e0"
::msgcat::mcset he DATE_FORMAT "%d/%m/%Y"
::msgcat::mcset he TIME_FORMAT "%H:%M:%S"
::msgcat::mcset he DATE_TIME_FORMAT "%d/%m/%Y %H:%M:%S %z"
diff --git a/library/msgs/hi.msg b/library/msgs/hi.msg
index 50c9fb8..50c9fb8 100755..100644
--- a/library/msgs/hi.msg
+++ b/library/msgs/hi.msg
diff --git a/library/msgs/hi_in.msg b/library/msgs/hi_in.msg
index 239793f..239793f 100755..100644
--- a/library/msgs/hi_in.msg
+++ b/library/msgs/hi_in.msg
diff --git a/library/msgs/hr.msg b/library/msgs/hr.msg
index cec145b..cec145b 100755..100644
--- a/library/msgs/hr.msg
+++ b/library/msgs/hr.msg
diff --git a/library/msgs/hu.msg b/library/msgs/hu.msg
index e5e68d9..e5e68d9 100755..100644
--- a/library/msgs/hu.msg
+++ b/library/msgs/hu.msg
diff --git a/library/msgs/id.msg b/library/msgs/id.msg
index 17c6bb5..17c6bb5 100755..100644
--- a/library/msgs/id.msg
+++ b/library/msgs/id.msg
diff --git a/library/msgs/id_id.msg b/library/msgs/id_id.msg
index bb672c1..bb672c1 100755..100644
--- a/library/msgs/id_id.msg
+++ b/library/msgs/id_id.msg
diff --git a/library/msgs/is.msg b/library/msgs/is.msg
index adc2d2a..adc2d2a 100755..100644
--- a/library/msgs/is.msg
+++ b/library/msgs/is.msg
diff --git a/library/msgs/it.msg b/library/msgs/it.msg
index b641cde..b641cde 100755..100644
--- a/library/msgs/it.msg
+++ b/library/msgs/it.msg
diff --git a/library/msgs/it_ch.msg b/library/msgs/it_ch.msg
index b36ed36..b36ed36 100755..100644
--- a/library/msgs/it_ch.msg
+++ b/library/msgs/it_ch.msg
diff --git a/library/msgs/ja.msg b/library/msgs/ja.msg
index 2767665..2767665 100755..100644
--- a/library/msgs/ja.msg
+++ b/library/msgs/ja.msg
diff --git a/library/msgs/kl.msg b/library/msgs/kl.msg
index d877bfe..d877bfe 100755..100644
--- a/library/msgs/kl.msg
+++ b/library/msgs/kl.msg
diff --git a/library/msgs/kl_gl.msg b/library/msgs/kl_gl.msg
index 403aa10..403aa10 100755..100644
--- a/library/msgs/kl_gl.msg
+++ b/library/msgs/kl_gl.msg
diff --git a/library/msgs/ko.msg b/library/msgs/ko.msg
index 0cd17a1..0cd17a1 100755..100644
--- a/library/msgs/ko.msg
+++ b/library/msgs/ko.msg
diff --git a/library/msgs/ko_kr.msg b/library/msgs/ko_kr.msg
index ea5bbd7..ea5bbd7 100755..100644
--- a/library/msgs/ko_kr.msg
+++ b/library/msgs/ko_kr.msg
diff --git a/library/msgs/kok.msg b/library/msgs/kok.msg
index 0869f20..0869f20 100755..100644
--- a/library/msgs/kok.msg
+++ b/library/msgs/kok.msg
diff --git a/library/msgs/kok_in.msg b/library/msgs/kok_in.msg
index abcb1ff..abcb1ff 100755..100644
--- a/library/msgs/kok_in.msg
+++ b/library/msgs/kok_in.msg
diff --git a/library/msgs/kw.msg b/library/msgs/kw.msg
index aaf79b3..aaf79b3 100755..100644
--- a/library/msgs/kw.msg
+++ b/library/msgs/kw.msg
diff --git a/library/msgs/kw_gb.msg b/library/msgs/kw_gb.msg
index 2967680..2967680 100755..100644
--- a/library/msgs/kw_gb.msg
+++ b/library/msgs/kw_gb.msg
diff --git a/library/msgs/lt.msg b/library/msgs/lt.msg
index 27b0985..27b0985 100755..100644
--- a/library/msgs/lt.msg
+++ b/library/msgs/lt.msg
diff --git a/library/msgs/lv.msg b/library/msgs/lv.msg
index a037b15..a037b15 100755..100644
--- a/library/msgs/lv.msg
+++ b/library/msgs/lv.msg
diff --git a/library/msgs/mk.msg b/library/msgs/mk.msg
index 41cf60d..41cf60d 100755..100644
--- a/library/msgs/mk.msg
+++ b/library/msgs/mk.msg
diff --git a/library/msgs/mr.msg b/library/msgs/mr.msg
index cea427a..cea427a 100755..100644
--- a/library/msgs/mr.msg
+++ b/library/msgs/mr.msg
diff --git a/library/msgs/mr_in.msg b/library/msgs/mr_in.msg
index 1889da5..1889da5 100755..100644
--- a/library/msgs/mr_in.msg
+++ b/library/msgs/mr_in.msg
diff --git a/library/msgs/ms.msg b/library/msgs/ms.msg
index e954431..e954431 100755..100644
--- a/library/msgs/ms.msg
+++ b/library/msgs/ms.msg
diff --git a/library/msgs/ms_my.msg b/library/msgs/ms_my.msg
index c1f93d4..c1f93d4 100755..100644
--- a/library/msgs/ms_my.msg
+++ b/library/msgs/ms_my.msg
diff --git a/library/msgs/mt.msg b/library/msgs/mt.msg
index ddd5446..ddd5446 100755..100644
--- a/library/msgs/mt.msg
+++ b/library/msgs/mt.msg
diff --git a/library/msgs/nb.msg b/library/msgs/nb.msg
index 90d49a3..90d49a3 100755..100644
--- a/library/msgs/nb.msg
+++ b/library/msgs/nb.msg
diff --git a/library/msgs/nl.msg b/library/msgs/nl.msg
index 4c5c675..4c5c675 100755..100644
--- a/library/msgs/nl.msg
+++ b/library/msgs/nl.msg
diff --git a/library/msgs/nl_be.msg b/library/msgs/nl_be.msg
index 4b19670..4b19670 100755..100644
--- a/library/msgs/nl_be.msg
+++ b/library/msgs/nl_be.msg
diff --git a/library/msgs/nn.msg b/library/msgs/nn.msg
index bd61ac9..bd61ac9 100755..100644
--- a/library/msgs/nn.msg
+++ b/library/msgs/nn.msg
diff --git a/library/msgs/pl.msg b/library/msgs/pl.msg
index d206f4b..d206f4b 100755..100644
--- a/library/msgs/pl.msg
+++ b/library/msgs/pl.msg
diff --git a/library/msgs/pt.msg b/library/msgs/pt.msg
index 96fdb35..96fdb35 100755..100644
--- a/library/msgs/pt.msg
+++ b/library/msgs/pt.msg
diff --git a/library/msgs/pt_br.msg b/library/msgs/pt_br.msg
index 8684327..8684327 100755..100644
--- a/library/msgs/pt_br.msg
+++ b/library/msgs/pt_br.msg
diff --git a/library/msgs/ro.msg b/library/msgs/ro.msg
index bdd7c61..bdd7c61 100755..100644
--- a/library/msgs/ro.msg
+++ b/library/msgs/ro.msg
diff --git a/library/msgs/ru.msg b/library/msgs/ru.msg
index 65b075d..65b075d 100755..100644
--- a/library/msgs/ru.msg
+++ b/library/msgs/ru.msg
diff --git a/library/msgs/ru_ua.msg b/library/msgs/ru_ua.msg
index 6e1f8a8..6e1f8a8 100755..100644
--- a/library/msgs/ru_ua.msg
+++ b/library/msgs/ru_ua.msg
diff --git a/library/msgs/sh.msg b/library/msgs/sh.msg
index 6ee0fc7..6ee0fc7 100755..100644
--- a/library/msgs/sh.msg
+++ b/library/msgs/sh.msg
diff --git a/library/msgs/sk.msg b/library/msgs/sk.msg
index 9b2f0aa..9b2f0aa 100755..100644
--- a/library/msgs/sk.msg
+++ b/library/msgs/sk.msg
diff --git a/library/msgs/sl.msg b/library/msgs/sl.msg
index 42bc509..42bc509 100755..100644
--- a/library/msgs/sl.msg
+++ b/library/msgs/sl.msg
diff --git a/library/msgs/sq.msg b/library/msgs/sq.msg
index 8fb1fce..8fb1fce 100755..100644
--- a/library/msgs/sq.msg
+++ b/library/msgs/sq.msg
diff --git a/library/msgs/sr.msg b/library/msgs/sr.msg
index 7576668..7576668 100755..100644
--- a/library/msgs/sr.msg
+++ b/library/msgs/sr.msg
diff --git a/library/msgs/sv.msg b/library/msgs/sv.msg
index f7a67c6..f7a67c6 100755..100644
--- a/library/msgs/sv.msg
+++ b/library/msgs/sv.msg
diff --git a/library/msgs/sw.msg b/library/msgs/sw.msg
index b888b43..b888b43 100755..100644
--- a/library/msgs/sw.msg
+++ b/library/msgs/sw.msg
diff --git a/library/msgs/ta.msg b/library/msgs/ta.msg
index 4abb90c..4abb90c 100755..100644
--- a/library/msgs/ta.msg
+++ b/library/msgs/ta.msg
diff --git a/library/msgs/ta_in.msg b/library/msgs/ta_in.msg
index 24590ac..24590ac 100755..100644
--- a/library/msgs/ta_in.msg
+++ b/library/msgs/ta_in.msg
diff --git a/library/msgs/te.msg b/library/msgs/te.msg
index 6111473..6111473 100755..100644
--- a/library/msgs/te.msg
+++ b/library/msgs/te.msg
diff --git a/library/msgs/te_in.msg b/library/msgs/te_in.msg
index 61638b5..61638b5 100755..100644
--- a/library/msgs/te_in.msg
+++ b/library/msgs/te_in.msg
diff --git a/library/msgs/th.msg b/library/msgs/th.msg
index 7486c35..7486c35 100755..100644
--- a/library/msgs/th.msg
+++ b/library/msgs/th.msg
diff --git a/library/msgs/tr.msg b/library/msgs/tr.msg
index 7b2ecf9..7b2ecf9 100755..100644
--- a/library/msgs/tr.msg
+++ b/library/msgs/tr.msg
diff --git a/library/msgs/uk.msg b/library/msgs/uk.msg
index 3e24f86..7d4c64a 100755..100644
--- a/library/msgs/uk.msg
+++ b/library/msgs/uk.msg
@@ -33,7 +33,7 @@ namespace eval ::tcl::clock {
::msgcat::mcset uk MONTHS_FULL [list \
"\u0441\u0456\u0447\u043d\u044f"\
"\u043b\u044e\u0442\u043e\u0433\u043e"\
- "\u0431\u0435\u0440\u0435\u0436\u043d\u044f"\
+ "\u0431\u0435\u0440\u0435\u0437\u043d\u044f"\
"\u043a\u0432\u0456\u0442\u043d\u044f"\
"\u0442\u0440\u0430\u0432\u043d\u044f"\
"\u0447\u0435\u0440\u0432\u043d\u044f"\
diff --git a/library/msgs/vi.msg b/library/msgs/vi.msg
index c98b2a6..c98b2a6 100755..100644
--- a/library/msgs/vi.msg
+++ b/library/msgs/vi.msg
diff --git a/library/msgs/zh.msg b/library/msgs/zh.msg
index b799a32..b799a32 100755..100644
--- a/library/msgs/zh.msg
+++ b/library/msgs/zh.msg
diff --git a/library/msgs/zh_cn.msg b/library/msgs/zh_cn.msg
index d62ce77..d62ce77 100755..100644
--- a/library/msgs/zh_cn.msg
+++ b/library/msgs/zh_cn.msg
diff --git a/library/msgs/zh_hk.msg b/library/msgs/zh_hk.msg
index badb1dd..badb1dd 100755..100644
--- a/library/msgs/zh_hk.msg
+++ b/library/msgs/zh_hk.msg
diff --git a/library/msgs/zh_sg.msg b/library/msgs/zh_sg.msg
index a2f3e39..a2f3e39 100755..100644
--- a/library/msgs/zh_sg.msg
+++ b/library/msgs/zh_sg.msg
diff --git a/library/msgs/zh_tw.msg b/library/msgs/zh_tw.msg
index e0796b1..e0796b1 100755..100644
--- a/library/msgs/zh_tw.msg
+++ b/library/msgs/zh_tw.msg
diff --git a/library/opt/optparse.tcl b/library/opt/optparse.tcl
index 4622bde..fc77fa1 100644
--- a/library/opt/optparse.tcl
+++ b/library/opt/optparse.tcl
@@ -7,13 +7,11 @@
# of Tcl. It is NOT supported and you should not rely
# on it. If your code does rely on this package you
# may directly incorporate this code into your application.
-#
-# RCS: @(#) $Id: optparse.tcl,v 1.10 2003/09/10 20:27:30 dgp Exp $
package require Tcl 8.2
# When this version number changes, update the pkgIndex.tcl file
# and the install directory in the Makefiles.
-package provide opt 0.4.5
+package provide opt 0.4.6
namespace eval ::tcl {
@@ -35,7 +33,7 @@ namespace eval ::tcl {
# Every OptProc give usage information on "procname -help".
# Try "tcl::OptParseTest -help" and "tcl::OptParseTest -a" and
# then other arguments.
- #
+ #
# example of 'valid' call:
# ::tcl::OptParseTest save -4 -pr 23 -libsok SybTcl\
# -nostatics false ch1
@@ -71,10 +69,10 @@ namespace eval ::tcl {
################### No User serviceable part below ! ###############
# Array storing the parsed descriptions
- variable OptDesc;
- array set OptDesc {};
+ variable OptDesc
+ array set OptDesc {}
# Next potentially free key id (numeric)
- variable OptDescN 0;
+ variable OptDescN 0
# Inside algorithm/mechanism description:
# (not for the faint hearted ;-)
@@ -86,8 +84,8 @@ namespace eval ::tcl {
#
# The general structure of a "program" is
# notation (pseudo bnf like)
-# name :== definition defines "name" as being "definition"
-# { x y z } means list of x, y, and z
+# name :== definition defines "name" as being "definition"
+# { x y z } means list of x, y, and z
# x* means x repeated 0 or more time
# x+ means "x x*"
# x? means optionally x
@@ -112,7 +110,7 @@ namespace eval ::tcl {
#
# And for this application:
#
-# singleStep :== { instruction varname {hasBeenSet currentValue} type
+# singleStep :== { instruction varname {hasBeenSet currentValue} type
# typeArgs help }
# instruction :== "flags" | "value"
# type :== knowType | anyword
@@ -145,54 +143,54 @@ namespace eval ::tcl {
# generate a unused keyid if not given
#
proc ::tcl::OptKeyRegister {desc {key ""}} {
- variable OptDesc;
- variable OptDescN;
+ variable OptDesc
+ variable OptDescN
if {[string equal $key ""]} {
# in case a key given to us as a parameter was a number
while {[info exists OptDesc($OptDescN)]} {incr OptDescN}
- set key $OptDescN;
- incr OptDescN;
+ set key $OptDescN
+ incr OptDescN
}
# program counter
- set program [list [list "P" 1]];
+ set program [list [list "P" 1]]
# are we processing flags (which makes a single program step)
- set inflags 0;
+ set inflags 0
- set state {};
+ set state {}
# flag used to detect that we just have a single (flags set) subprogram.
- set empty 1;
+ set empty 1
foreach item $desc {
if {$state == "args"} {
# more items after 'args'...
- return -code error "'args' special argument must be the last one";
+ return -code error "'args' special argument must be the last one"
}
- set res [OptNormalizeOne $item];
- set state [lindex $res 0];
+ set res [OptNormalizeOne $item]
+ set state [lindex $res 0]
if {$inflags} {
if {$state == "flags"} {
# add to 'subprogram'
- lappend flagsprg $res;
+ lappend flagsprg $res
} else {
# put in the flags
# structure for flag programs items is a list of
# {subprgcounter {prg flag 1} {prg flag 2} {...}}
- lappend program $flagsprg;
+ lappend program $flagsprg
# put the other regular stuff
- lappend program $res;
- set inflags 0;
- set empty 0;
+ lappend program $res
+ set inflags 0
+ set empty 0
}
} else {
if {$state == "flags"} {
- set inflags 1;
+ set inflags 1
# sub program counter + first sub program
- set flagsprg [list [list "P" 1] $res];
+ set flagsprg [list [list "P" 1] $res]
} else {
- lappend program $res;
- set empty 0;
+ lappend program $res
+ set empty 0
}
}
}
@@ -200,32 +198,32 @@ proc ::tcl::OptKeyRegister {desc {key ""}} {
if {$empty} {
# We just have the subprogram, optimize and remove
# unneeded level:
- set program $flagsprg;
+ set program $flagsprg
} else {
- lappend program $flagsprg;
+ lappend program $flagsprg
}
}
- set OptDesc($key) $program;
+ set OptDesc($key) $program
- return $key;
+ return $key
}
#
# Free the storage for that given key
#
proc ::tcl::OptKeyDelete {key} {
- variable OptDesc;
- unset OptDesc($key);
+ variable OptDesc
+ unset OptDesc($key)
}
# Get the parsed description stored under the given key.
proc OptKeyGetDesc {descKey} {
- variable OptDesc;
+ variable OptDesc
if {![info exists OptDesc($descKey)]} {
- return -code error "Unknown option description key \"$descKey\"";
+ return -code error "Unknown option description key \"$descKey\""
}
- set OptDesc($descKey);
+ set OptDesc($descKey)
}
# Parse entry point for ppl who don't want to register with a key,
@@ -234,10 +232,10 @@ proc ::tcl::OptKeyDelete {key} {
# as it is way faster or simply OptProc which does it all)
# Assign a temporary key, call OptKeyParse and then free the storage
proc ::tcl::OptParse {desc arglist} {
- set tempkey [OptKeyRegister $desc];
- set ret [catch {uplevel 1 [list ::tcl::OptKeyParse $tempkey $arglist]} res];
- OptKeyDelete $tempkey;
- return -code $ret $res;
+ set tempkey [OptKeyRegister $desc]
+ set ret [catch {uplevel 1 [list ::tcl::OptKeyParse $tempkey $arglist]} res]
+ OptKeyDelete $tempkey
+ return -code $ret $res
}
# Helper function, replacement for proc that both
@@ -248,22 +246,22 @@ proc ::tcl::OptParse {desc arglist} {
# (the other will be sets to their default value)
# into local variable named "Args".
proc ::tcl::OptProc {name desc body} {
- set namespace [uplevel 1 [list ::namespace current]];
+ set namespace [uplevel 1 [list ::namespace current]]
if {[string match "::*" $name] || [string equal $namespace "::"]} {
# absolute name or global namespace, name is the key
- set key $name;
+ set key $name
} else {
# we are relative to some non top level namespace:
- set key "${namespace}::${name}";
+ set key "${namespace}::${name}"
}
- OptKeyRegister $desc $key;
- uplevel 1 [list ::proc $name args "set Args \[::tcl::OptKeyParse $key \$args\]\n$body"];
- return $key;
+ OptKeyRegister $desc $key
+ uplevel 1 [list ::proc $name args "set Args \[::tcl::OptKeyParse $key \$args\]\n$body"]
+ return $key
}
# Check that a argument has been given
# assumes that "OptProc" has been used as it will check in "Args" list
proc ::tcl::OptProcArgGiven {argname} {
- upvar Args alist;
+ upvar Args alist
expr {[lsearch $alist $argname] >=0}
}
@@ -272,7 +270,7 @@ proc ::tcl::OptProcArgGiven {argname} {
# Return the instruction word/list of a given step/(sub)program
proc OptInstr {lst} {
- lindex $lst 0;
+ lindex $lst 0
}
# Is a (sub) program or a plain instruction ?
proc OptIsPrg {lst} {
@@ -288,56 +286,56 @@ proc ::tcl::OptProcArgGiven {argname} {
}
# Current program counter (2nd word of first word)
proc OptSetPrgCounter {lstName newValue} {
- upvar $lstName lst;
- set lst [lreplace $lst 0 0 [concat "P" $newValue]];
+ upvar $lstName lst
+ set lst [lreplace $lst 0 0 [concat "P" $newValue]]
}
# returns a list of currently selected items.
proc OptSelection {lst} {
- set res {};
+ set res {}
foreach idx [lrange [lindex $lst 0] 1 end] {
- lappend res [Lget $lst $idx];
+ lappend res [Lget $lst $idx]
}
- return $res;
+ return $res
}
# Advance to next description
proc OptNextDesc {descName} {
- uplevel 1 [list Lvarincr $descName {0 1}];
+ uplevel 1 [list Lvarincr $descName {0 1}]
}
# Get the current description, eventually descend
proc OptCurDesc {descriptions} {
- lindex $descriptions [OptGetPrgCounter $descriptions];
+ lindex $descriptions [OptGetPrgCounter $descriptions]
}
# get the current description, eventually descend
# through sub programs as needed.
proc OptCurDescFinal {descriptions} {
- set item [OptCurDesc $descriptions];
+ set item [OptCurDesc $descriptions]
# Descend untill we get the actual item and not a sub program
while {[OptIsPrg $item]} {
- set item [OptCurDesc $item];
+ set item [OptCurDesc $item]
}
- return $item;
+ return $item
}
# Current final instruction adress
proc OptCurAddr {descriptions {start {}}} {
- set adress [OptGetPrgCounter $descriptions];
- lappend start $adress;
- set item [lindex $descriptions $adress];
+ set adress [OptGetPrgCounter $descriptions]
+ lappend start $adress
+ set item [lindex $descriptions $adress]
if {[OptIsPrg $item]} {
- return [OptCurAddr $item $start];
+ return [OptCurAddr $item $start]
} else {
- return $start;
+ return $start
}
}
# Set the value field of the current instruction
proc OptCurSetValue {descriptionsName value} {
upvar $descriptionsName descriptions
# get the current item full adress
- set adress [OptCurAddr $descriptions];
+ set adress [OptCurAddr $descriptions]
# use the 3th field of the item (see OptValue / OptNewInst)
lappend adress 2
- Lvarset descriptions $adress [list 1 $value];
+ Lvarset descriptions $adress [list 1 $value]
# ^hasBeenSet flag
}
@@ -345,10 +343,10 @@ proc ::tcl::OptProcArgGiven {argname} {
proc OptState {item} {
lindex $item 0
}
-
+
# current state
proc OptCurState {descriptions} {
- OptState [OptCurDesc $descriptions];
+ OptState [OptCurDesc $descriptions]
}
#######
@@ -356,11 +354,11 @@ proc ::tcl::OptProcArgGiven {argname} {
# Returns the argument that has to be processed now
proc OptCurrentArg {lst} {
- lindex $lst 0;
+ lindex $lst 0
}
# Advance to next argument
proc OptNextArg {argsName} {
- uplevel 1 [list Lvarpop1 $argsName];
+ uplevel 1 [list Lvarpop1 $argsName]
}
#######
@@ -372,49 +370,49 @@ proc ::tcl::OptProcArgGiven {argname} {
# eventually eat all the arguments.
proc OptDoAll {descriptionsName argumentsName} {
upvar $descriptionsName descriptions
- upvar $argumentsName arguments;
-# puts "entered DoAll";
+ upvar $argumentsName arguments
+# puts "entered DoAll"
# Nb: the places where "state" can be set are tricky to figure
# because DoOne sets the state to flagsValue and return -continue
# when needed...
- set state [OptCurState $descriptions];
+ set state [OptCurState $descriptions]
# We'll exit the loop in "OptDoOne" or when state is empty.
while 1 {
- set curitem [OptCurDesc $descriptions];
+ set curitem [OptCurDesc $descriptions]
# Do subprograms if needed, call ourselves on the sub branch
while {[OptIsPrg $curitem]} {
OptDoAll curitem arguments
-# puts "done DoAll sub";
- # Insert back the results in current tree;
+# puts "done DoAll sub"
+ # Insert back the results in current tree
Lvarset1nc descriptions [OptGetPrgCounter $descriptions]\
- $curitem;
- OptNextDesc descriptions;
- set curitem [OptCurDesc $descriptions];
- set state [OptCurState $descriptions];
+ $curitem
+ OptNextDesc descriptions
+ set curitem [OptCurDesc $descriptions]
+ set state [OptCurState $descriptions]
}
-# puts "state = \"$state\" - arguments=($arguments)";
+# puts "state = \"$state\" - arguments=($arguments)"
if {[Lempty $state]} {
# Nothing left to do, we are done in this branch:
- break;
+ break
}
# The following statement can make us terminate/continue
# as it use return -code {break, continue, return and error}
# codes
- OptDoOne descriptions state arguments;
+ OptDoOne descriptions state arguments
# If we are here, no special return code where issued,
# we'll step to next instruction :
-# puts "new state = \"$state\"";
- OptNextDesc descriptions;
- set state [OptCurState $descriptions];
+# puts "new state = \"$state\""
+ OptNextDesc descriptions
+ set state [OptCurState $descriptions]
}
}
# Process one step for the state machine,
# eventually consuming the current argument.
proc OptDoOne {descriptionsName stateName argumentsName} {
- upvar $argumentsName arguments;
- upvar $descriptionsName descriptions;
- upvar $stateName state;
+ upvar $argumentsName arguments
+ upvar $descriptionsName descriptions
+ upvar $stateName state
# the special state/instruction "args" eats all
# the remaining args (if any)
@@ -422,27 +420,27 @@ proc ::tcl::OptProcArgGiven {argname} {
if {![Lempty $arguments]} {
# If there is no additional arguments, leave the default value
# in.
- OptCurSetValue descriptions $arguments;
- set arguments {};
+ OptCurSetValue descriptions $arguments
+ set arguments {}
}
# puts "breaking out ('args' state: consuming every reminding args)"
- return -code break;
+ return -code break
}
if {[Lempty $arguments]} {
if {$state == "flags"} {
# no argument and no flags : we're done
-# puts "returning to previous (sub)prg (no more args)";
- return -code return;
+# puts "returning to previous (sub)prg (no more args)"
+ return -code return
} elseif {$state == "optValue"} {
set state next; # not used, for debug only
# go to next state
- return ;
+ return
} else {
- return -code error [OptMissingValue $descriptions];
+ return -code error [OptMissingValue $descriptions]
}
} else {
- set arg [OptCurrentArg $arguments];
+ set arg [OptCurrentArg $arguments]
}
switch $state {
@@ -452,62 +450,62 @@ proc ::tcl::OptProcArgGiven {argname} {
# Still a flag ?
if {![OptIsFlag $arg]} {
# don't consume the argument, return to previous prg
- return -code return;
+ return -code return
}
# consume the flag
- OptNextArg arguments;
+ OptNextArg arguments
if {[string equal "--" $arg]} {
# return from 'flags' state
- return -code return;
+ return -code return
}
- set hits [OptHits descriptions $arg];
+ set hits [OptHits descriptions $arg]
if {$hits > 1} {
return -code error [OptAmbigous $descriptions $arg]
} elseif {$hits == 0} {
return -code error [OptFlagUsage $descriptions $arg]
}
- set item [OptCurDesc $descriptions];
+ set item [OptCurDesc $descriptions]
if {[OptNeedValue $item]} {
# we need a value, next state is
- set state flagValue;
+ set state flagValue
} else {
- OptCurSetValue descriptions 1;
+ OptCurSetValue descriptions 1
}
# continue
- return -code continue;
+ return -code continue
}
flagValue -
value {
- set item [OptCurDesc $descriptions];
+ set item [OptCurDesc $descriptions]
# Test the values against their required type
if {[catch {OptCheckType $arg\
[OptType $item] [OptTypeArgs $item]} val]} {
return -code error [OptBadValue $item $arg $val]
}
# consume the value
- OptNextArg arguments;
+ OptNextArg arguments
# set the value
- OptCurSetValue descriptions $val;
+ OptCurSetValue descriptions $val
# go to next state
if {$state == "flagValue"} {
set state flags
- return -code continue;
+ return -code continue
} else {
set state next; # not used, for debug only
return ; # will go on next step
}
}
optValue {
- set item [OptCurDesc $descriptions];
+ set item [OptCurDesc $descriptions]
# Test the values against their required type
if {![catch {OptCheckType $arg\
[OptType $item] [OptTypeArgs $item]} val]} {
# right type, so :
# consume the value
- OptNextArg arguments;
+ OptNextArg arguments
# set the value
- OptCurSetValue descriptions $val;
+ OptCurSetValue descriptions $val
}
# go to next state
set state next; # not used, for debug only
@@ -518,39 +516,39 @@ proc ::tcl::OptProcArgGiven {argname} {
# state as been entered !
return -code error "Bug! unknown state in DoOne \"$state\"\
(prg counter [OptGetPrgCounter $descriptions]:\
- [OptCurDesc $descriptions])";
+ [OptCurDesc $descriptions])"
}
# Parse the options given the key to previously registered description
# and arguments list
proc ::tcl::OptKeyParse {descKey arglist} {
- set desc [OptKeyGetDesc $descKey];
+ set desc [OptKeyGetDesc $descKey]
# make sure -help always give usage
if {[string equal -nocase "-help" $arglist]} {
- return -code error [OptError "Usage information:" $desc 1];
+ return -code error [OptError "Usage information:" $desc 1]
}
- OptDoAll desc arglist;
+ OptDoAll desc arglist
if {![Lempty $arglist]} {
- return -code error [OptTooManyArgs $desc $arglist];
+ return -code error [OptTooManyArgs $desc $arglist]
}
-
+
# Analyse the result
# Walk through the tree:
- OptTreeVars $desc "#[expr {[info level]-1}]" ;
+ OptTreeVars $desc "#[expr {[info level]-1}]"
}
# determine string length for nice tabulated output
proc OptTreeVars {desc level {vnamesLst {}}} {
foreach item $desc {
- if {[OptIsCounter $item]} continue;
+ if {[OptIsCounter $item]} continue
if {[OptIsPrg $item]} {
- set vnamesLst [OptTreeVars $item $level $vnamesLst];
+ set vnamesLst [OptTreeVars $item $level $vnamesLst]
} else {
- set vname [OptVarName $item];
+ set vname [OptVarName $item]
upvar $level $vname var
if {[OptHasBeenSet $item]} {
# puts "adding $vname"
@@ -558,10 +556,10 @@ proc ::tcl::OptKeyParse {descKey arglist} {
# it is more usefull, for instance you can check that
# no flags at all was given with expr
# {![string match "*-*" $Args]}
- lappend vnamesLst [OptName $item];
- set var [OptValue $item];
+ lappend vnamesLst [OptName $item]
+ set var [OptValue $item]
} else {
- set var [OptDefaultValue $item];
+ set var [OptDefaultValue $item]
}
}
}
@@ -573,7 +571,7 @@ proc ::tcl::OptKeyParse {descKey arglist} {
# and emit an error if arg is not of the correct type
# otherwise returns the canonical value of that arg (ie 0/1 for booleans)
proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
-# puts "checking '$arg' against '$type' ($typeArgs)";
+# puts "checking '$arg' against '$type' ($typeArgs)"
# only types "any", "choice", and numbers can have leading "-"
@@ -582,7 +580,7 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
if {![string is integer -strict $arg]} {
error "not an integer"
}
- return $arg;
+ return $arg
}
float {
return [expr {double($arg)}]
@@ -593,7 +591,7 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
if {[llength $arg]==0 && [OptIsFlag $arg]} {
error "no values with leading -"
}
- return $arg;
+ return $arg
}
boolean {
if {![string is boolean -strict $arg]} {
@@ -606,10 +604,10 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
if {[lsearch -exact $typeArgs $arg] < 0} {
error "invalid choice"
}
- return $arg;
+ return $arg
}
any {
- return $arg;
+ return $arg
}
string -
default {
@@ -619,7 +617,7 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
return $arg
}
}
- return neverReached;
+ return neverReached
}
# internal utilities
@@ -627,34 +625,34 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
# returns the number of flags matching the given arg
# sets the (local) prg counter to the list of matches
proc OptHits {descName arg} {
- upvar $descName desc;
+ upvar $descName desc
set hits 0
set hitems {}
- set i 1;
+ set i 1
- set larg [string tolower $arg];
- set len [string length $larg];
- set last [expr {$len-1}];
+ set larg [string tolower $arg]
+ set len [string length $larg]
+ set last [expr {$len-1}]
foreach item [lrange $desc 1 end] {
set flag [OptName $item]
# lets try to match case insensitively
# (string length ought to be cheap)
- set lflag [string tolower $flag];
+ set lflag [string tolower $flag]
if {$len == [string length $lflag]} {
if {[string equal $larg $lflag]} {
# Exact match case
- OptSetPrgCounter desc $i;
- return 1;
+ OptSetPrgCounter desc $i
+ return 1
}
} elseif {[string equal $larg [string range $lflag 0 $last]]} {
- lappend hitems $i;
- incr hits;
+ lappend hitems $i
+ incr hits
}
- incr i;
+ incr i
}
if {$hits} {
- OptSetPrgCounter desc $hitems;
+ OptSetPrgCounter desc $hitems
}
return $hits
}
@@ -662,29 +660,29 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
# Extract fields from the list structure:
proc OptName {item} {
- lindex $item 1;
+ lindex $item 1
}
proc OptHasBeenSet {item} {
- Lget $item {2 0};
+ Lget $item {2 0}
}
proc OptValue {item} {
- Lget $item {2 1};
+ Lget $item {2 1}
}
proc OptIsFlag {name} {
- string match "-*" $name;
+ string match "-*" $name
}
proc OptIsOpt {name} {
- string match {\?*} $name;
+ string match {\?*} $name
}
proc OptVarName {item} {
- set name [OptName $item];
+ set name [OptName $item]
if {[OptIsFlag $name]} {
- return [string range $name 1 end];
+ return [string range $name 1 end]
} elseif {[OptIsOpt $name]} {
- return [string trim $name "?"];
+ return [string trim $name "?"]
} else {
- return $name;
+ return $name
}
}
proc OptType {item} {
@@ -721,13 +719,13 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
proc OptOptUsage {item {what ""}} {
return -code error "invalid description format$what: $item\n\
should be a list of {varname|-flagname ?-type? ?defaultvalue?\
- ?helpstring?}";
+ ?helpstring?}"
}
# Generate a canonical form single instruction
proc OptNewInst {state varname type typeArgs help} {
- list $state $varname [list 0 {}] $type $typeArgs $help;
+ list $state $varname [list 0 {}] $type $typeArgs $help
# ^ ^
# | |
# hasBeenSet=+ +=currentValue
@@ -735,18 +733,18 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
# Translate one item to canonical form
proc OptNormalizeOne {item} {
- set lg [Lassign $item varname arg1 arg2 arg3];
-# puts "called optnormalizeone '$item' v=($varname), lg=$lg";
- set isflag [OptIsFlag $varname];
- set isopt [OptIsOpt $varname];
+ set lg [Lassign $item varname arg1 arg2 arg3]
+# puts "called optnormalizeone '$item' v=($varname), lg=$lg"
+ set isflag [OptIsFlag $varname]
+ set isopt [OptIsOpt $varname]
if {$isflag} {
- set state "flags";
+ set state "flags"
} elseif {$isopt} {
- set state "optValue";
+ set state "optValue"
} elseif {![string equal $varname "args"]} {
- set state "value";
+ set state "value"
} else {
- set state "args";
+ set state "args"
}
# apply 'smart' 'fuzzy' logic to try to make
@@ -756,9 +754,9 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
switch $lg {
1 {
if {$isflag} {
- return [OptNewInst $state $varname boolflag false ""];
+ return [OptNewInst $state $varname boolflag false ""]
} else {
- return [OptNewInst $state $varname any "" ""];
+ return [OptNewInst $state $varname any "" ""]
}
}
2 {
@@ -778,20 +776,20 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
set help ""
set def $arg1
}
- return [OptNewInst $state $varname $type $def $help];
+ return [OptNewInst $state $varname $type $def $help]
}
3 {
# varname type value
# varname value comment
-
+
if {[regexp {^-(.+)$} $arg1 x type]} {
# flags/optValue as they are optional, need a "value",
# on the contrary, for a variable (non optional),
# default value is pointless, 'cept for choices :
if {$isflag || $isopt || ($type == "choice")} {
- return [OptNewInst $state $varname $type $arg2 ""];
+ return [OptNewInst $state $varname $type $arg2 ""]
} else {
- return [OptNewInst $state $varname $type "" $arg2];
+ return [OptNewInst $state $varname $type "" $arg2]
}
} else {
return [OptNewInst $state $varname\
@@ -800,13 +798,13 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
}
4 {
if {[regexp {^-(.+)$} $arg1 x type]} {
- return [OptNewInst $state $varname $type $arg2 $arg3];
+ return [OptNewInst $state $varname $type $arg2 $arg3]
} else {
- return -code error [OptOptUsage $item];
+ return -code error [OptOptUsage $item]
}
}
default {
- return -code error [OptOptUsage $item];
+ return -code error [OptOptUsage $item]
}
}
}
@@ -831,7 +829,7 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
OptError "ambigous option \"$arg\", choose from:" [OptSelection $desc]
}
proc OptFlagUsage {desc arg} {
- OptError "bad flag \"$arg\", must be one of" $desc;
+ OptError "bad flag \"$arg\", must be one of" $desc
}
proc OptTooManyArgs {desc arguments} {
OptError "too many arguments (unexpected argument(s): $arguments),\
@@ -840,45 +838,45 @@ proc ::tcl::OptCheckType {arg type {typeArgs ""}} {
}
proc OptParamType {item} {
if {[OptIsFlag $item]} {
- return "flag";
+ return "flag"
} else {
- return "parameter";
+ return "parameter"
}
}
proc OptBadValue {item arg {err {}}} {
-# puts "bad val err = \"$err\"";
+# puts "bad val err = \"$err\""
OptError "bad value \"$arg\" for [OptParamType $item]"\
[list $item]
}
proc OptMissingValue {descriptions} {
-# set item [OptCurDescFinal $descriptions];
- set item [OptCurDesc $descriptions];
+# set item [OptCurDescFinal $descriptions]
+ set item [OptCurDesc $descriptions]
OptError "no value given for [OptParamType $item] \"[OptName $item]\"\
(use -help for full usage) :"\
[list $item]
}
proc ::tcl::OptKeyError {prefix descKey {header 0}} {
- OptError $prefix [OptKeyGetDesc $descKey] $header;
+ OptError $prefix [OptKeyGetDesc $descKey] $header
}
# determine string length for nice tabulated output
proc OptLengths {desc nlName tlName dlName} {
- upvar $nlName nl;
- upvar $tlName tl;
- upvar $dlName dl;
+ upvar $nlName nl
+ upvar $tlName tl
+ upvar $dlName dl
foreach item $desc {
- if {[OptIsCounter $item]} continue;
+ if {[OptIsCounter $item]} continue
if {[OptIsPrg $item]} {
OptLengths $item nl tl dl
} else {
SetMax nl [string length [OptName $item]]
SetMax tl [string length [OptType $item]]
- set dv [OptTypeArgs $item];
+ set dv [OptTypeArgs $item]
if {[OptState $item] != "header"} {
- set dv "($dv)";
+ set dv "($dv)"
}
- set l [string length $dv];
+ set l [string length $dv]
# limit the space allocated to potentially big "choices"
if {([OptType $item] != "choice") || ($l<=12)} {
SetMax dl $l
@@ -892,22 +890,22 @@ proc ::tcl::OptKeyError {prefix descKey {header 0}} {
}
# output the tree
proc OptTree {desc nl tl dl} {
- set res "";
+ set res ""
foreach item $desc {
- if {[OptIsCounter $item]} continue;
+ if {[OptIsCounter $item]} continue
if {[OptIsPrg $item]} {
- append res [OptTree $item $nl $tl $dl];
+ append res [OptTree $item $nl $tl $dl]
} else {
- set dv [OptTypeArgs $item];
+ set dv [OptTypeArgs $item]
if {[OptState $item] != "header"} {
- set dv "($dv)";
+ set dv "($dv)"
}
- append res [format "\n %-*s %-*s %-*s %s" \
+ append res [string trimright [format "\n %-*s %-*s %-*s %s" \
$nl [OptName $item] $tl [OptType $item] \
- $dl $dv [OptHelp $item]]
+ $dl $dv [OptHelp $item]]]
}
}
- return $res;
+ return $res
}
# Give nice usage string
@@ -915,13 +913,13 @@ proc ::tcl::OptError {prefix desc {header 0}} {
# determine length
if {$header} {
# add faked instruction
- set h [list [OptNewInst header Var/FlagName Type Value Help]];
- lappend h [OptNewInst header ------------ ---- ----- ----];
- lappend h [OptNewInst header {( -help} "" "" {gives this help )}]
+ set h [list [OptNewInst header Var/FlagName Type Value Help]]
+ lappend h [OptNewInst header ------------ ---- ----- ----]
+ lappend h [OptNewInst header {(-help} "" "" {gives this help)}]
set desc [concat $h $desc]
}
OptLengths $desc nl tl dl
- # actually output
+ # actually output
return "$prefix[OptTree $desc $nl $tl $dl]"
}
@@ -945,105 +943,105 @@ proc ::tcl::Lempty {list} {
# Gets the value of one leaf of a lists tree
proc ::tcl::Lget {list indexLst} {
if {[llength $indexLst] <= 1} {
- return [lindex $list $indexLst];
+ return [lindex $list $indexLst]
}
- Lget [lindex $list [lindex $indexLst 0]] [lrange $indexLst 1 end];
+ Lget [lindex $list [lindex $indexLst 0]] [lrange $indexLst 1 end]
}
# Sets the value of one leaf of a lists tree
# (we use the version that does not create the elements because
# it would be even slower... needs to be written in C !)
# (nb: there is a non trivial recursive problem with indexes 0,
# which appear because there is no difference between a list
-# of 1 element and 1 element alone : [list "a"] == "a" while
+# of 1 element and 1 element alone : [list "a"] == "a" while
# it should be {a} and [listp a] should be 0 while [listp {a b}] would be 1
# and [listp "a b"] maybe 0. listp does not exist either...)
proc ::tcl::Lvarset {listName indexLst newValue} {
- upvar $listName list;
+ upvar $listName list
if {[llength $indexLst] <= 1} {
- Lvarset1nc list $indexLst $newValue;
+ Lvarset1nc list $indexLst $newValue
} else {
- set idx [lindex $indexLst 0];
- set targetList [lindex $list $idx];
+ set idx [lindex $indexLst 0]
+ set targetList [lindex $list $idx]
# reduce refcount on targetList (not really usefull now,
# could be with optimizing compiler)
-# Lvarset1 list $idx {};
+# Lvarset1 list $idx {}
# recursively replace in targetList
- Lvarset targetList [lrange $indexLst 1 end] $newValue;
+ Lvarset targetList [lrange $indexLst 1 end] $newValue
# put updated sub list back in the tree
- Lvarset1nc list $idx $targetList;
+ Lvarset1nc list $idx $targetList
}
}
# Set one cell to a value, eventually create all the needed elements
# (on level-1 of lists)
variable emptyList {}
proc ::tcl::Lvarset1 {listName index newValue} {
- upvar $listName list;
+ upvar $listName list
if {$index < 0} {return -code error "invalid negative index"}
- set lg [llength $list];
+ set lg [llength $list]
if {$index >= $lg} {
- variable emptyList;
+ variable emptyList
for {set i $lg} {$i<$index} {incr i} {
- lappend list $emptyList;
+ lappend list $emptyList
}
- lappend list $newValue;
+ lappend list $newValue
} else {
- set list [lreplace $list $index $index $newValue];
+ set list [lreplace $list $index $index $newValue]
}
}
# same as Lvarset1 but no bound checking / creation
proc ::tcl::Lvarset1nc {listName index newValue} {
- upvar $listName list;
- set list [lreplace $list $index $index $newValue];
+ upvar $listName list
+ set list [lreplace $list $index $index $newValue]
}
# Increments the value of one leaf of a lists tree
# (which must exists)
proc ::tcl::Lvarincr {listName indexLst {howMuch 1}} {
- upvar $listName list;
+ upvar $listName list
if {[llength $indexLst] <= 1} {
- Lvarincr1 list $indexLst $howMuch;
+ Lvarincr1 list $indexLst $howMuch
} else {
- set idx [lindex $indexLst 0];
- set targetList [lindex $list $idx];
+ set idx [lindex $indexLst 0]
+ set targetList [lindex $list $idx]
# reduce refcount on targetList
- Lvarset1nc list $idx {};
+ Lvarset1nc list $idx {}
# recursively replace in targetList
- Lvarincr targetList [lrange $indexLst 1 end] $howMuch;
+ Lvarincr targetList [lrange $indexLst 1 end] $howMuch
# put updated sub list back in the tree
- Lvarset1nc list $idx $targetList;
+ Lvarset1nc list $idx $targetList
}
}
# Increments the value of one cell of a list
proc ::tcl::Lvarincr1 {listName index {howMuch 1}} {
- upvar $listName list;
- set newValue [expr {[lindex $list $index]+$howMuch}];
- set list [lreplace $list $index $index $newValue];
- return $newValue;
+ upvar $listName list
+ set newValue [expr {[lindex $list $index]+$howMuch}]
+ set list [lreplace $list $index $index $newValue]
+ return $newValue
}
# Removes the first element of a list
# and returns the new list value
proc ::tcl::Lvarpop1 {listName} {
- upvar $listName list;
- set list [lrange $list 1 end];
+ upvar $listName list
+ set list [lrange $list 1 end]
}
# Same but returns the removed element
# (Like the tclX version)
proc ::tcl::Lvarpop {listName} {
- upvar $listName list;
- set el [lindex $list 0];
- set list [lrange $list 1 end];
- return $el;
+ upvar $listName list
+ set el [lindex $list 0]
+ set list [lrange $list 1 end]
+ return $el
}
# Assign list elements to variables and return the length of the list
proc ::tcl::Lassign {list args} {
# faster than direct blown foreach (which does not byte compile)
- set i 0;
- set lg [llength $list];
+ set i 0
+ set lg [llength $list]
foreach vname $args {
if {$i>=$lg} break
- uplevel 1 [list ::set $vname [lindex $list $i]];
- incr i;
+ uplevel 1 [list ::set $vname [lindex $list $i]]
+ incr i
}
- return $lg;
+ return $lg
}
# Misc utilities
diff --git a/library/opt/pkgIndex.tcl b/library/opt/pkgIndex.tcl
index c5d3635..107d4c6 100644
--- a/library/opt/pkgIndex.tcl
+++ b/library/opt/pkgIndex.tcl
@@ -9,4 +9,4 @@
# full path name of this file's directory.
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
-package ifneeded opt 0.4.5 [list source [file join $dir optparse.tcl]]
+package ifneeded opt 0.4.6 [list source [file join $dir optparse.tcl]]
diff --git a/library/package.tcl b/library/package.tcl
index 6aa8be5..52daa0e 100644
--- a/library/package.tcl
+++ b/library/package.tcl
@@ -3,8 +3,6 @@
# utility procs formerly in init.tcl which can be loaded on demand
# for package management.
#
-# RCS: @(#) $Id: package.tcl,v 1.35.4.1 2008/07/03 17:22:59 dgp Exp $
-#
# Copyright (c) 1991-1993 The Regents of the University of California.
# Copyright (c) 1994-1998 Sun Microsystems, Inc.
#
@@ -16,9 +14,9 @@ namespace eval tcl::Pkg {}
# ::tcl::Pkg::CompareExtension --
#
-# Used internally by pkg_mkIndex to compare the extension of a file to
-# a given extension. On Windows, it uses a case-insensitive comparison
-# because the file system can be file insensitive.
+# Used internally by pkg_mkIndex to compare the extension of a file to a given
+# extension. On Windows, it uses a case-insensitive comparison because the
+# file system can be file insensitive.
#
# Arguments:
# fileName name of a file whose extension is compared
@@ -29,7 +27,7 @@ namespace eval tcl::Pkg {}
# Results:
# Returns 1 if the extension matches, 0 otherwise
-proc tcl::Pkg::CompareExtension { fileName {ext {}} } {
+proc tcl::Pkg::CompareExtension {fileName {ext {}}} {
global tcl_platform
if {$ext eq ""} {set ext [info sharedlibextension]}
if {$tcl_platform(platform) eq "windows"} {
@@ -42,7 +40,7 @@ proc tcl::Pkg::CompareExtension { fileName {ext {}} } {
set currExt [file extension $root]
if {$currExt eq $ext} {
return 1
- }
+ }
# The current extension does not match; if it is not a numeric
# value, quit, as we are only looking to ignore version number
@@ -50,7 +48,7 @@ proc tcl::Pkg::CompareExtension { fileName {ext {}} } {
# tcl::Pkg::CompareExtension foo.so.bar .so
# which should not match.
- if { ![string is integer -strict [string range $currExt 1 end]] } {
+ if {![string is integer -strict [string range $currExt 1 end]]} {
return 0
}
set root [file rootname $root]
@@ -59,11 +57,10 @@ proc tcl::Pkg::CompareExtension { fileName {ext {}} } {
}
# pkg_mkIndex --
-# This procedure creates a package index in a given directory. The
-# package index consists of a "pkgIndex.tcl" file whose contents are
-# a Tcl script that sets up package information with "package require"
-# commands. The commands describe all of the packages defined by the
-# files given as arguments.
+# This procedure creates a package index in a given directory. The package
+# index consists of a "pkgIndex.tcl" file whose contents are a Tcl script that
+# sets up package information with "package require" commands. The commands
+# describe all of the packages defined by the files given as arguments.
#
# Arguments:
# -direct (optional) If this flag is present, the generated
@@ -84,7 +81,7 @@ proc tcl::Pkg::CompareExtension { fileName {ext {}} } {
# dir.
proc pkg_mkIndex {args} {
- set usage {"pkg_mkIndex ?-direct? ?-lazy? ?-load pattern? ?-verbose? ?--? dir ?pattern ...?"};
+ set usage {"pkg_mkIndex ?-direct? ?-lazy? ?-load pattern? ?-verbose? ?--? dir ?pattern ...?"}
set argCount [llength $args]
if {$argCount < 1} {
@@ -130,20 +127,21 @@ proc pkg_mkIndex {args} {
set dir [lindex $args $idx]
set patternList [lrange $args [expr {$idx + 1}] end]
- if {[llength $patternList] == 0} {
+ if {![llength $patternList]} {
set patternList [list "*.tcl" "*[info sharedlibextension]"]
}
- if {[catch {
- glob -directory $dir -tails -types {r f} -- {*}$patternList
- } fileList o]} {
- return -options $o $fileList
+ try {
+ set fileList [glob -directory $dir -tails -types {r f} -- \
+ {*}$patternList]
+ } on error {msg opt} {
+ return -options $opt $msg
}
foreach file $fileList {
# For each file, figure out what commands and packages it provides.
# To do this, create a child interpreter, load the file into the
- # interpreter, and get a list of the new commands and packages
- # that are defined.
+ # interpreter, and get a list of the new commands and packages that
+ # are defined.
if {$file eq "pkgIndex.tcl"} {
continue
@@ -165,20 +163,23 @@ proc pkg_mkIndex {args} {
}
}
foreach pkg [info loaded] {
- if {! [string match -nocase $loadPat [lindex $pkg 1]]} {
+ if {![string match -nocase $loadPat [lindex $pkg 1]]} {
continue
}
if {$doVerbose} {
tclLog "package [lindex $pkg 1] matches '$loadPat'"
}
- if {[catch {
+ try {
load [lindex $pkg 0] [lindex $pkg 1] $c
- } err]} {
+ } on error err {
+ if {$doVerbose} {
+ tclLog "warning: load [lindex $pkg 0]\
+ [lindex $pkg 1]\nfailed with: $err"
+ }
+ } on ok {} {
if {$doVerbose} {
- tclLog "warning: load [lindex $pkg 0] [lindex $pkg 1]\nfailed with: $err"
+ tclLog "loaded [lindex $pkg 0] [lindex $pkg 1]"
}
- } elseif {$doVerbose} {
- tclLog "loaded [lindex $pkg 0] [lindex $pkg 1]"
}
if {[lindex $pkg 1] eq "Tk"} {
# Withdraw . if Tk was loaded, to avoid showing a window.
@@ -187,21 +188,25 @@ proc pkg_mkIndex {args} {
}
$c eval {
- # Stub out the package command so packages can
- # require other packages.
+ # Stub out the package command so packages can require other
+ # packages.
rename package __package_orig
proc package {what args} {
switch -- $what {
- require { return ; # ignore transitive requires }
- default { __package_orig $what {*}$args }
+ require {
+ return; # Ignore transitive requires
+ }
+ default {
+ __package_orig $what {*}$args
+ }
}
}
proc tclPkgUnknown args {}
package unknown tclPkgUnknown
- # Stub out the unknown command so package can call
- # into each other during their initialilzation.
+ # Stub out the unknown command so package can call into each other
+ # during their initialilzation.
proc unknown {args} {}
@@ -209,9 +214,9 @@ proc pkg_mkIndex {args} {
proc auto_import {args} {}
- # reserve the ::tcl namespace for support procs
- # and temporary variables. This might make it awkward
- # to generate a pkgIndex.tcl file for the ::tcl namespace.
+ # reserve the ::tcl namespace for support procs and temporary
+ # variables. This might make it awkward to generate a
+ # pkgIndex.tcl file for the ::tcl namespace.
namespace eval ::tcl {
variable dir ;# Current directory being processed
@@ -232,22 +237,22 @@ proc pkg_mkIndex {args} {
$c eval [list set ::tcl::file $file]
$c eval [list set ::tcl::direct $direct]
- # Download needed procedures into the slave because we've
- # just deleted the unknown procedure. This doesn't handle
- # procedures with default arguments.
+ # Download needed procedures into the slave because we've just deleted
+ # the unknown procedure. This doesn't handle procedures with default
+ # arguments.
foreach p {::tcl::Pkg::CompareExtension} {
$c eval [list namespace eval [namespace qualifiers $p] {}]
$c eval [list proc $p [info args $p] [info body $p]]
}
- if {[catch {
+ try {
$c eval {
set ::tcl::debug "loading or sourcing"
- # we need to track command defined by each package even in
- # the -direct case, because they are needed internally by
- # the "partial pkgIndex.tcl" step above.
+ # we need to track command defined by each package even in the
+ # -direct case, because they are needed internally by the
+ # "partial pkgIndex.tcl" step above.
proc ::tcl::GetAllNamespaces {{root ::}} {
set list $root
@@ -269,18 +274,17 @@ proc pkg_mkIndex {args} {
}
set ::tcl::origCmds [info commands]
- # Try to load the file if it has the shared library
- # extension, otherwise source it. It's important not to
- # try to load files that aren't shared libraries, because
- # on some systems (like SunOS) the loader will abort the
- # whole application when it gets an error.
+ # Try to load the file if it has the shared library extension,
+ # otherwise source it. It's important not to try to load
+ # files that aren't shared libraries, because on some systems
+ # (like SunOS) the loader will abort the whole application
+ # when it gets an error.
if {[::tcl::Pkg::CompareExtension $::tcl::file [info sharedlibextension]]} {
- # The "file join ." command below is necessary.
- # Without it, if the file name has no \'s and we're
- # on UNIX, the load command will invoke the
- # LD_LIBRARY_PATH search mechanism, which could cause
- # the wrong file to be used.
+ # The "file join ." command below is necessary. Without
+ # it, if the file name has no \'s and we're on UNIX, the
+ # load command will invoke the LD_LIBRARY_PATH search
+ # mechanism, which could cause the wrong file to be used.
set ::tcl::debug loading
load [file join $::tcl::dir $::tcl::file]
@@ -291,22 +295,21 @@ proc pkg_mkIndex {args} {
set ::tcl::type source
}
- # As a performance optimization, if we are creating
- # direct load packages, don't bother figuring out the
- # set of commands created by the new packages. We
- # only need that list for setting up the autoloading
- # used in the non-direct case.
- if { !$::tcl::direct } {
+ # As a performance optimization, if we are creating direct
+ # load packages, don't bother figuring out the set of commands
+ # created by the new packages. We only need that list for
+ # setting up the autoloading used in the non-direct case.
+ if {!$::tcl::direct} {
# See what new namespaces appeared, and import commands
# from them. Only exported commands go into the index.
-
+
foreach ::tcl::x [::tcl::GetAllNamespaces] {
- if {! [info exists ::tcl::namespaces($::tcl::x)]} {
+ if {![info exists ::tcl::namespaces($::tcl::x)]} {
namespace import -force ${::tcl::x}::*
}
# Figure out what commands appeared
-
+
foreach ::tcl::x [info commands] {
set ::tcl::newCmds($::tcl::x) 1
}
@@ -315,18 +318,19 @@ proc pkg_mkIndex {args} {
}
foreach ::tcl::x [array names ::tcl::newCmds] {
# determine which namespace a command comes from
-
+
set ::tcl::abs [namespace origin $::tcl::x]
-
- # special case so that global names have no leading
- # ::, this is required by the unknown command
-
+
+ # special case so that global names have no
+ # leading ::, this is required by the unknown
+ # command
+
set ::tcl::abs \
[lindex [auto_qualify $::tcl::abs ::] 0]
-
+
if {$::tcl::x ne $::tcl::abs} {
# Name changed during qualification
-
+
set ::tcl::newCmds($::tcl::abs) 1
unset ::tcl::newCmds($::tcl::x)
}
@@ -334,8 +338,8 @@ proc pkg_mkIndex {args} {
}
}
- # Look through the packages that appeared, and if there is
- # a version provided, then record it
+ # Look through the packages that appeared, and if there is a
+ # version provided, then record it
foreach ::tcl::x [package names] {
if {[package provide $::tcl::x] ne ""
@@ -345,12 +349,12 @@ proc pkg_mkIndex {args} {
}
}
}
- } msg] == 1} {
+ } on error msg {
set what [$c eval set ::tcl::debug]
if {$doVerbose} {
tclLog "warning: error while $what $file: $msg"
}
- } else {
+ } on ok {} {
set what [$c eval set ::tcl::debug]
if {$doVerbose} {
tclLog "successful $what of $file"
@@ -359,7 +363,7 @@ proc pkg_mkIndex {args} {
set cmds [lsort [$c eval array names ::tcl::newCmds]]
set pkgs [$c eval set ::tcl::newPkgs]
if {$doVerbose} {
- if { !$direct } {
+ if {!$direct} {
tclLog "commands provided were $cmds"
}
tclLog "packages provided were $pkgs"
@@ -391,13 +395,11 @@ proc pkg_mkIndex {args} {
foreach pkg [lsort [array names files]] {
set cmd {}
- foreach {name version} $pkg {
- break
- }
+ lassign $pkg name version
lappend cmd ::tcl::Pkg::Create -name $name -version $version
- foreach spec $files($pkg) {
+ foreach spec [lsort -index 0 $files($pkg)] {
foreach {file type procs} $spec {
- if { $direct } {
+ if {$direct} {
set procs {}
}
lappend cmd "-$type" [list $file $procs]
@@ -412,11 +414,10 @@ proc pkg_mkIndex {args} {
}
# tclPkgSetup --
-# This is a utility procedure use by pkgIndex.tcl files. It is invoked
-# as part of a "package ifneeded" script. It calls "package provide"
-# to indicate that a package is available, then sets entries in the
-# auto_index array so that the package's files will be auto-loaded when
-# the commands are used.
+# This is a utility procedure use by pkgIndex.tcl files. It is invoked as
+# part of a "package ifneeded" script. It calls "package provide" to indicate
+# that a package is available, then sets entries in the auto_index array so
+# that the package's files will be auto-loaded when the commands are used.
#
# Arguments:
# dir - Directory containing all the files for this package.
@@ -441,18 +442,18 @@ proc tclPkgSetup {dir pkg version files} {
set auto_index($cmd) [list load [file join $dir $f] $pkg]
} else {
set auto_index($cmd) [list source [file join $dir $f]]
- }
+ }
}
}
}
# tclPkgUnknown --
-# This procedure provides the default for the "package unknown" function.
-# It is invoked when a package that's needed can't be found. It scans
-# the auto_path directories and their immediate children looking for
-# pkgIndex.tcl files and sources any such files that are found to setup
-# the package database. As it searches, it will recognize changes
-# to the auto_path and scan any new directories.
+# This procedure provides the default for the "package unknown" function. It
+# is invoked when a package that's needed can't be found. It scans the
+# auto_path directories and their immediate children looking for pkgIndex.tcl
+# files and sources any such files that are found to setup the package
+# database. As it searches, it will recognize changes to the auto_path and
+# scan any new directories.
#
# Arguments:
# name - Name of desired package. Not used.
@@ -465,12 +466,12 @@ proc tclPkgUnknown {name args} {
if {![info exists auto_path]} {
return
}
- # Cache the auto_path, because it may change while we run through
- # the first set of pkgIndex.tcl files
+ # Cache the auto_path, because it may change while we run through the
+ # first set of pkgIndex.tcl files
set old_path [set use_path $auto_path]
while {[llength $use_path]} {
set dir [lindex $use_path end]
-
+
# Make sure we only scan each directory one time.
if {[info exists tclSeenPath($dir)]} {
set use_path [lrange $use_path 0 end-1]
@@ -478,24 +479,22 @@ proc tclPkgUnknown {name args} {
}
set tclSeenPath($dir) 1
- # we can't use glob in safe interps, so enclose the following
- # in a catch statement, where we get the pkgIndex files out
- # of the subdirectories
+ # we can't use glob in safe interps, so enclose the following in a
+ # catch statement, where we get the pkgIndex files out of the
+ # subdirectories
catch {
foreach file [glob -directory $dir -join -nocomplain \
* pkgIndex.tcl] {
set dir [file dirname $file]
if {![info exists procdDirs($dir)]} {
- set code [catch {source $file} msg opt]
- if {$code == 1 &&
- [lindex [dict get $opt -errorcode] 0] eq "POSIX" &&
- [lindex [dict get $opt -errorcode] 1] eq "EACCES"} {
+ try {
+ source $file
+ } trap {POSIX EACCES} {} {
# $file was not readable; silently ignore
continue
- }
- if {$code} {
+ } on error msg {
tclLog "error reading package index file $file: $msg"
- } else {
+ } on ok {} {
set procdDirs($dir) 1
}
}
@@ -504,18 +503,16 @@ proc tclPkgUnknown {name args} {
set dir [lindex $use_path end]
if {![info exists procdDirs($dir)]} {
set file [file join $dir pkgIndex.tcl]
- # safe interps usually don't have "file exists",
+ # safe interps usually don't have "file exists",
if {([interp issafe] || [file exists $file])} {
- set code [catch {source $file} msg opt]
- if {$code == 1 &&
- [lindex [dict get $opt -errorcode] 0] eq "POSIX" &&
- [lindex [dict get $opt -errorcode] 1] eq "EACCES"} {
+ try {
+ source $file
+ } trap {POSIX EACCES} {} {
# $file was not readable; silently ignore
continue
- }
- if {$code} {
+ } on error msg {
tclLog "error reading package index file $file: $msg"
- } else {
+ } on ok {} {
set procdDirs($dir) 1
}
}
@@ -523,12 +520,11 @@ proc tclPkgUnknown {name args} {
set use_path [lrange $use_path 0 end-1]
- # Check whether any of the index scripts we [source]d above
- # set a new value for $::auto_path. If so, then find any
- # new directories on the $::auto_path, and lappend them to
- # the $use_path we are working from. This gives index scripts
- # the (arguably unwise) power to expand the index script search
- # path while the search is in progress.
+ # Check whether any of the index scripts we [source]d above set a new
+ # value for $::auto_path. If so, then find any new directories on the
+ # $::auto_path, and lappend them to the $use_path we are working from.
+ # This gives index scripts the (arguably unwise) power to expand the
+ # index script search path while the search is in progress.
set index 0
if {[llength $old_path] == [llength $auto_path]} {
foreach dir $auto_path old $old_path {
@@ -540,14 +536,13 @@ proc tclPkgUnknown {name args} {
}
}
- # $index now points to the first element of $auto_path that
- # has changed, or the beginning if $auto_path has changed length
- # Scan the new elements of $auto_path for directories to add to
- # $use_path. Don't add directories we've already seen, or ones
- # already on the $use_path.
+ # $index now points to the first element of $auto_path that has
+ # changed, or the beginning if $auto_path has changed length Scan the
+ # new elements of $auto_path for directories to add to $use_path.
+ # Don't add directories we've already seen, or ones already on the
+ # $use_path.
foreach dir [lrange $auto_path $index end] {
- if {![info exists tclSeenPath($dir)]
- && ([lsearch -exact $use_path $dir] == -1) } {
+ if {![info exists tclSeenPath($dir)] && ($dir ni $use_path)} {
lappend use_path $dir
}
}
@@ -556,9 +551,9 @@ proc tclPkgUnknown {name args} {
}
# tcl::MacOSXPkgUnknown --
-# This procedure extends the "package unknown" function for MacOSX.
-# It scans the Resources/Scripts directories of the immediate children
-# of the auto_path directories for pkgIndex files.
+# This procedure extends the "package unknown" function for MacOSX. It scans
+# the Resources/Scripts directories of the immediate children of the auto_path
+# directories for pkgIndex files.
#
# Arguments:
# original - original [package unknown] procedure
@@ -567,7 +562,6 @@ proc tclPkgUnknown {name args} {
# exact - Either "-exact" or omitted. Not used.
proc tcl::MacOSXPkgUnknown {original name args} {
-
# First do the cross-platform default search
uplevel 1 $original [linsert $args 0 $name]
@@ -577,8 +571,8 @@ proc tcl::MacOSXPkgUnknown {original name args} {
if {![info exists auto_path]} {
return
}
- # Cache the auto_path, because it may change while we run through
- # the first set of pkgIndex.tcl files
+ # Cache the auto_path, because it may change while we run through the
+ # first set of pkgIndex.tcl files
set old_path [set use_path $auto_path]
while {[llength $use_path]} {
set dir [lindex $use_path end]
@@ -595,28 +589,25 @@ proc tcl::MacOSXPkgUnknown {original name args} {
* Resources Scripts pkgIndex.tcl] {
set dir [file dirname $file]
if {![info exists procdDirs($dir)]} {
- set code [catch {source $file} msg opt]
- if {$code == 1 &&
- [lindex [dict get $opt -errorcode] 0] eq "POSIX" &&
- [lindex [dict get $opt -errorcode] 1] eq "EACCES"} {
+ try {
+ source $file
+ } trap {POSIX EACCES} {} {
# $file was not readable; silently ignore
continue
- }
- if {$code} {
+ } on error msg {
tclLog "error reading package index file $file: $msg"
- } else {
+ } on ok {} {
set procdDirs($dir) 1
}
}
}
set use_path [lrange $use_path 0 end-1]
- # Check whether any of the index scripts we [source]d above
- # set a new value for $::auto_path. If so, then find any
- # new directories on the $::auto_path, and lappend them to
- # the $use_path we are working from. This gives index scripts
- # the (arguably unwise) power to expand the index script search
- # path while the search is in progress.
+ # Check whether any of the index scripts we [source]d above set a new
+ # value for $::auto_path. If so, then find any new directories on the
+ # $::auto_path, and lappend them to the $use_path we are working from.
+ # This gives index scripts the (arguably unwise) power to expand the
+ # index script search path while the search is in progress.
set index 0
if {[llength $old_path] == [llength $auto_path]} {
foreach dir $auto_path old $old_path {
@@ -628,14 +619,13 @@ proc tcl::MacOSXPkgUnknown {original name args} {
}
}
- # $index now points to the first element of $auto_path that
- # has changed, or the beginning if $auto_path has changed length
- # Scan the new elements of $auto_path for directories to add to
- # $use_path. Don't add directories we've already seen, or ones
- # already on the $use_path.
+ # $index now points to the first element of $auto_path that has
+ # changed, or the beginning if $auto_path has changed length Scan the
+ # new elements of $auto_path for directories to add to $use_path.
+ # Don't add directories we've already seen, or ones already on the
+ # $use_path.
foreach dir [lrange $auto_path $index end] {
- if {![info exists tclSeenPath($dir)]
- && ([lsearch -exact $use_path $dir] == -1) } {
+ if {![info exists tclSeenPath($dir)] && ($dir ni $use_path)} {
lappend use_path $dir
}
}
@@ -659,12 +649,12 @@ proc tcl::MacOSXPkgUnknown {original name args} {
#
# Any number of -load and -source parameters may be
# specified, so long as there is at least one -load or
-# -source parameter. If the procs component of a
-# module specifier is left off, that module will be
-# set up for direct loading; otherwise, it will be
-# set up for lazy loading. If both -source and -load
-# are specified, the -load'ed files will be loaded
-# first, followed by the -source'd files.
+# -source parameter. If the procs component of a module
+# specifier is left off, that module will be set up for
+# direct loading; otherwise, it will be set up for lazy
+# loading. If both -source and -load are specified, the
+# -load'ed files will be loaded first, followed by the
+# -source'd files.
#
# Results:
# An appropriate "package ifneeded" statement for the package.
@@ -682,15 +672,12 @@ proc ::tcl::Pkg::Create {args} {
# process arguments
set len [llength $args]
- if { $len < 6 } {
+ if {$len < 6} {
error $err(wrongNumArgs)
}
-
+
# Initialize parameters
- set opts(-name) {}
- set opts(-version) {}
- set opts(-source) {}
- set opts(-load) {}
+ array set opts {-name {} -version {} -source {} -load {}}
# process parameters
for {set i 0} {$i < $len} {incr i} {
@@ -699,14 +686,14 @@ proc ::tcl::Pkg::Create {args} {
switch -glob -- $flag {
"-name" -
"-version" {
- if { $i >= $len } {
+ if {$i >= $len} {
error [format $err(valueMissing) $flag]
}
set opts($flag) [lindex $args $i]
}
"-source" -
"-load" {
- if { $i >= $len } {
+ if {$i >= $len} {
error [format $err(valueMissing) $flag]
}
lappend opts($flag) [lindex $args $i]
@@ -718,32 +705,27 @@ proc ::tcl::Pkg::Create {args} {
}
# Validate the parameters
- if { [llength $opts(-name)] == 0 } {
+ if {![llength $opts(-name)]} {
error [format $err(valueMissing) "-name"]
}
- if { [llength $opts(-version)] == 0 } {
+ if {![llength $opts(-version)]} {
error [format $err(valueMissing) "-version"]
}
-
- if { [llength $opts(-source)] == 0 && [llength $opts(-load)] == 0 } {
+
+ if {!([llength $opts(-source)] || [llength $opts(-load)])} {
error $err(noLoadOrSource)
}
# OK, now everything is good. Generate the package ifneeded statment.
set cmdline "package ifneeded $opts(-name) $opts(-version) "
-
+
set cmdList {}
set lazyFileList {}
# Handle -load and -source specs
foreach key {load source} {
foreach filespec $opts(-$key) {
- foreach {filename proclist} {{} {}} {
- break
- }
- foreach {filename proclist} $filespec {
- break
- }
+ lassign $filespec filename proclist
if { [llength $proclist] == 0 } {
set cmd "\[list $key \[file join \$dir [list $filename]\]\]"
@@ -754,7 +736,7 @@ proc ::tcl::Pkg::Create {args} {
}
}
- if { [llength $lazyFileList] > 0 } {
+ if {[llength $lazyFileList]} {
lappend cmdList "\[list tclPkgSetup \$dir $opts(-name)\
$opts(-version) [list $lazyFileList]\]"
}
@@ -762,4 +744,4 @@ proc ::tcl::Pkg::Create {args} {
return $cmdline
}
-interp alias {} ::pkg::create {} ::tcl::Pkg::Create
+interp alias {} ::pkg::create {} ::tcl::Pkg::Create
diff --git a/library/parray.tcl b/library/parray.tcl
index e331d4d..a9c2cb1 100644
--- a/library/parray.tcl
+++ b/library/parray.tcl
@@ -1,8 +1,6 @@
# parray:
# Print the contents of a global array on stdout.
#
-# RCS: @(#) $Id: parray.tcl,v 1.4 2005/06/03 10:02:23 dkf Exp $
-#
# Copyright (c) 1991-1993 The Regents of the University of California.
# Copyright (c) 1994 Sun Microsystems, Inc.
#
@@ -13,7 +11,7 @@
proc parray {a {pattern *}} {
upvar 1 $a array
if {![array exists array]} {
- error "\"$a\" isn't an array"
+ return -code error "\"$a\" isn't an array"
}
set maxl 0
set names [lsort [array names array $pattern]]
diff --git a/library/platform/pkgIndex.tcl b/library/platform/pkgIndex.tcl
index 27d596f..23a3408 100644
--- a/library/platform/pkgIndex.tcl
+++ b/library/platform/pkgIndex.tcl
@@ -1,3 +1,3 @@
-package ifneeded platform 1.0.3 [list source [file join $dir platform.tcl]]
+package ifneeded platform 1.0.12 [list source [file join $dir platform.tcl]]
package ifneeded platform::shell 1.1.4 [list source [file join $dir shell.tcl]]
diff --git a/library/platform/platform.tcl b/library/platform/platform.tcl
index 143cdc5..5698425 100644
--- a/library/platform/platform.tcl
+++ b/library/platform/platform.tcl
@@ -103,7 +103,12 @@ proc ::platform::generic {} {
}
sunos {
set plat solaris
- if {$cpu ne "ia64"} {
+ if {[string match "ix86" $cpu]} {
+ if {$tcl_platform(wordSize) == 8} {
+ set cpu x86_64
+ }
+ } elseif {![string match "ia64*" $cpu]} {
+ # sparc
if {$tcl_platform(wordSize) == 8} {
append cpu 64
}
@@ -111,6 +116,13 @@ proc ::platform::generic {} {
}
darwin {
set plat macosx
+ # Correctly identify the cpu when running as a 64bit
+ # process on a machine with a 32bit kernel
+ if {$cpu eq "ix86"} {
+ if {$tcl_platform(wordSize) == 8} {
+ set cpu x86_64
+ }
+ }
}
aix {
set cpu powerpc
@@ -120,7 +132,7 @@ proc ::platform::generic {} {
}
hp-ux {
set plat hpux
- if {$cpu ne "ia64"} {
+ if {![string match "ia64*" $cpu]} {
set cpu parisc
if {$tcl_platform(wordSize) == 8} {
append cpu 64
@@ -154,42 +166,73 @@ proc ::platform::identify {} {
append plat $text
return "${plat}-${cpu}"
}
+ macosx {
+ set major [lindex [split $tcl_platform(osVersion) .] 0]
+ if {$major > 8} {
+ incr major -4
+ append plat 10.$major
+ return "${plat}-${cpu}"
+ }
+ }
linux {
# Look for the libc*.so and determine its version
# (libc5/6, libc6 further glibc 2.X)
set v unknown
- if {[file exists /lib64] && [file isdirectory /lib64]} {
- set base /lib64
- } else {
- set base /lib
- }
-
- set libclist [lsort [glob -nocomplain -directory $base libc*]]
- if {[llength $libclist]} {
- set libc [lindex $libclist 0]
-
- # Try executing the library first. This should suceed
- # for a glibc library, and return the version
- # information.
+ # Determine in which directory to look. /lib, or /lib64.
+ # For that we use the tcl_platform(wordSize).
+ #
+ # We could use the 'cpu' info, per the equivalence below,
+ # that however would be restricted to intel. And this may
+ # be a arm, mips, etc. system. The wordsize is more
+ # fundamental.
+ #
+ # ix86 <=> (wordSize == 4) <=> 32 bit ==> /lib
+ # x86_64 <=> (wordSize == 8) <=> 64 bit ==> /lib64
+ #
+ # Do not look into /lib64 even if present, if the cpu
+ # doesn't fit.
- if {![catch {
- set vdata [lindex [split [exec $libc] \n] 0]
- }]} {
- regexp {([0-9]+(\.[0-9]+)*)} $vdata -> v
- foreach {major minor} [split $v .] break
- set v glibc${major}.${minor}
- } else {
- # We had trouble executing the library. We are now
- # inspecting its name to determine the version
- # number. This code by Larry McVoy.
+ # TODO: Determine the prefixes (i386, x86_64, ...) for
+ # other cpus. The path after the generic one is utterly
+ # specific to intel right now. Ok, on Ubuntu, possibly
+ # other Debian systems we may apparently be able to query
+ # the necessary CPU code. If we can't we simply use the
+ # hardwired fallback.
- if {[regexp -- {libc-([0-9]+)\.([0-9]+)} $libc -> major minor]} {
- set v glibc${major}.${minor}
+ switch -exact -- $tcl_platform(wordSize) {
+ 4 {
+ lappend bases /lib
+ if {[catch {
+ exec dpkg-architecture -qDEB_HOST_MULTIARCH
+ } res]} {
+ lappend bases /lib/i386-linux-gnu
+ } else {
+ # dpkg-arch returns the full tripled, not just cpu.
+ lappend bases /lib/$res
+ }
+ }
+ 8 {
+ lappend bases /lib64
+ if {[catch {
+ exec dpkg-architecture -qDEB_HOST_MULTIARCH
+ } res]} {
+ lappend bases /lib/x86_64-linux-gnu
+ } else {
+ # dpkg-arch returns the full tripled, not just cpu.
+ lappend bases /lib/$res
}
}
+ default {
+ return -code error "Bad wordSize $tcl_platform(wordSize), expected 4 or 8"
+ }
}
+
+ foreach base $bases {
+ if {[LibcVersion $base -> v]} break
+ }
+
append plat -$v
return "${plat}-${cpu}"
}
@@ -198,6 +241,38 @@ proc ::platform::identify {} {
return $id
}
+proc ::platform::LibcVersion {base _->_ vv} {
+ upvar 1 $vv v
+ set libclist [lsort [glob -nocomplain -directory $base libc*]]
+
+ if {![llength $libclist]} { return 0 }
+
+ set libc [lindex $libclist 0]
+
+ # Try executing the library first. This should suceed
+ # for a glibc library, and return the version
+ # information.
+
+ if {![catch {
+ set vdata [lindex [split [exec $libc] \n] 0]
+ }]} {
+ regexp {version ([0-9]+(\.[0-9]+)*)} $vdata -> v
+ foreach {major minor} [split $v .] break
+ set v glibc${major}.${minor}
+ return 1
+ } else {
+ # We had trouble executing the library. We are now
+ # inspecting its name to determine the version
+ # number. This code by Larry McVoy.
+
+ if {[regexp -- {libc-([0-9]+)\.([0-9]+)} $libc -> major minor]} {
+ set v glibc${major}.${minor}
+ return 1
+ }
+ }
+ return 0
+}
+
# -- platform::patterns
#
# Given an exact platform identifier, i.e. _not_ the generic
@@ -238,10 +313,52 @@ proc ::platform::patterns {id} {
}
}
}
- macosx-powerpc -
- macosx-ix86 {
+ macosx*-* {
+ # 10.5+
+ if {[regexp {macosx([^-]*)-(.*)} $id -> v cpu]} {
+
+ switch -exact -- $cpu {
+ ix86 -
+ x86_64 { set alt i386-x86_64 }
+ default { set alt {} }
+ }
+
+ if {$v ne ""} {
+ foreach {major minor} [split $v .] break
+
+ # Add 10.5 to 10.minor to patterns.
+ set res {}
+ for {set j $minor} {$j >= 5} {incr j -1} {
+ lappend res macosx${major}.${j}-${cpu}
+ lappend res macosx${major}.${j}-universal
+ if {$alt ne {}} {
+ lappend res macosx${major}.${j}-$alt
+ }
+ }
+
+ # Add unversioned patterns for 10.3/10.4 builds.
+ lappend res macosx-${cpu}
+ lappend res macosx-universal
+ if {$alt ne {}} {
+ lappend res macosx-$alt
+ }
+ } else {
+ lappend res macosx-universal
+ if {$alt ne {}} {
+ lappend res macosx-$alt
+ }
+ }
+ } else {
+ lappend res macosx-universal
+ }
+ }
+ macosx-powerpc {
lappend res macosx-universal
}
+ macosx-x86_64 -
+ macosx-ix86 {
+ lappend res macosx-universal macosx-i386-x86_64
+ }
}
lappend res tcl ; # Pure tcl packages are always compatible.
return $res
@@ -251,7 +368,7 @@ proc ::platform::patterns {id} {
# ### ### ### ######### ######### #########
## Ready
-package provide platform 1.0.3
+package provide platform 1.0.12
# ### ### ### ######### ######### #########
## Demo application
diff --git a/library/platform/shell.tcl b/library/platform/shell.tcl
index 407e639..d37cdcd 100644
--- a/library/platform/shell.tcl
+++ b/library/platform/shell.tcl
@@ -1,3 +1,4 @@
+
# -*- tcl -*-
# ### ### ### ######### ######### #########
## Overview
@@ -104,8 +105,10 @@ proc ::platform::shell::LOCATE {bv ov} {
# here. If the found package is wrapped we copy the code somewhere
# where the spawned shell will be able to read it.
- # Note: This code depends on the form of the 'provide' command
- # generated by tm.tcl. Keep them in sync. See Bug 2255235.
+ # This code is brittle, it needs has to adapt to whatever changes
+ # are made to the TM code, i.e. the provide statement generated by
+ # tm.tcl
+
set pl [package ifneeded platform [package require platform]]
set base [lindex $pl end]
@@ -184,7 +187,7 @@ proc ::platform::shell::TEMP {} {
}
}
}
- if {[string compare $channel ""]} {
+ if {$channel != ""} {
return -code error "Failed to open a temporary file: $channel"
} else {
return -code error "Failed to find an unused temporary file name"
diff --git a/library/reg/pkgIndex.tcl b/library/reg/pkgIndex.tcl
index d2ed72f..55af4b3 100755
--- a/library/reg/pkgIndex.tcl
+++ b/library/reg/pkgIndex.tcl
@@ -1,9 +1,9 @@
-if {![package vsatisfies [package provide Tcl] 8]} {return}
-if {[string compare $::tcl_platform(platform) windows]} {return}
-if {[info exists ::tcl_platform(debug)]} {
- package ifneeded registry 1.2.1 \
- [list load [file join $dir tclreg12g.dll] registry]
+if {([info commands ::tcl::pkgconfig] eq "")
+ || ([info sharedlibextension] ne ".dll")} return
+if {[::tcl::pkgconfig get debug]} {
+ package ifneeded registry 1.3.0 \
+ [list load [file join $dir tclreg13g.dll] registry]
} else {
- package ifneeded registry 1.2.1 \
- [list load [file join $dir tclreg12.dll] registry]
+ package ifneeded registry 1.3.0 \
+ [list load [file join $dir tclreg13.dll] registry]
}
diff --git a/library/safe.tcl b/library/safe.tcl
index 501a552..394aa97 100644
--- a/library/safe.tcl
+++ b/library/safe.tcl
@@ -4,1032 +4,1130 @@
# It implements a virtual path mecanism to hide the real pathnames from the
# slave. It runs in a master interpreter and sets up data structure and
# aliases that will be invoked when used from a slave interpreter.
-#
+#
# See the safe.n man page for details.
#
# Copyright (c) 1996-1997 Sun Microsystems, Inc.
#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: safe.tcl,v 1.16.4.1 2008/06/25 16:42:05 andreas_kupries Exp $
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# The implementation is based on namespaces. These naming conventions
-# are followed:
+# The implementation is based on namespaces. These naming conventions are
+# followed:
# Private procs starts with uppercase.
# Public procs are exported and starts with lowercase
#
# Needed utilities package
-package require opt 0.4.1;
+package require opt 0.4.1
# Create the safe namespace
namespace eval ::safe {
-
# Exported API:
namespace export interpCreate interpInit interpConfigure interpDelete \
- interpAddToAccessPath interpFindInAccessPath setLogCmd
-
- ####
- #
- # Setup the arguments parsing
- #
- ####
-
- # Make sure that our temporary variable is local to this
- # namespace. [Bug 981733]
- variable temp
-
- # Share the descriptions
- set temp [::tcl::OptKeyRegister {
- {-accessPath -list {} "access path for the slave"}
- {-noStatics "prevent loading of statically linked pkgs"}
- {-statics true "loading of statically linked pkgs"}
- {-nestedLoadOk "allow nested loading"}
- {-nested false "nested loading"}
- {-deleteHook -script {} "delete hook"}
- }]
-
- # create case (slave is optional)
- ::tcl::OptKeyRegister {
- {?slave? -name {} "name of the slave (optional)"}
- } ::safe::interpCreate
- # adding the flags sub programs to the command program
- # (relying on Opt's internal implementation details)
- lappend ::tcl::OptDesc(::safe::interpCreate) $::tcl::OptDesc($temp)
-
- # init and configure (slave is needed)
- ::tcl::OptKeyRegister {
- {slave -name {} "name of the slave"}
- } ::safe::interpIC
- # adding the flags sub programs to the command program
- # (relying on Opt's internal implementation details)
- lappend ::tcl::OptDesc(::safe::interpIC) $::tcl::OptDesc($temp)
- # temp not needed anymore
- ::tcl::OptKeyDelete $temp
-
+ interpAddToAccessPath interpFindInAccessPath setLogCmd
+}
- # Helper function to resolve the dual way of specifying staticsok
- # (either by -noStatics or -statics 0)
- proc InterpStatics {} {
- foreach v {Args statics noStatics} {
- upvar $v $v
- }
- set flag [::tcl::OptProcArgGiven -noStatics];
- if {$flag && (!$noStatics == !$statics)
- && ([::tcl::OptProcArgGiven -statics])} {
- return -code error\
- "conflicting values given for -statics and -noStatics"
- }
- if {$flag} {
- return [expr {!$noStatics}]
- } else {
- return $statics
- }
+# Helper function to resolve the dual way of specifying staticsok (either
+# by -noStatics or -statics 0)
+proc ::safe::InterpStatics {} {
+ foreach v {Args statics noStatics} {
+ upvar $v $v
+ }
+ set flag [::tcl::OptProcArgGiven -noStatics]
+ if {$flag && (!$noStatics == !$statics)
+ && ([::tcl::OptProcArgGiven -statics])} {
+ return -code error\
+ "conflicting values given for -statics and -noStatics"
}
+ if {$flag} {
+ return [expr {!$noStatics}]
+ } else {
+ return $statics
+ }
+}
- # Helper function to resolve the dual way of specifying nested loading
- # (either by -nestedLoadOk or -nested 1)
- proc InterpNested {} {
- foreach v {Args nested nestedLoadOk} {
- upvar $v $v
- }
- set flag [::tcl::OptProcArgGiven -nestedLoadOk];
- # note that the test here is the opposite of the "InterpStatics"
- # one (it is not -noNested... because of the wanted default value)
- if {$flag && (!$nestedLoadOk != !$nested)
- && ([::tcl::OptProcArgGiven -nested])} {
- return -code error\
- "conflicting values given for -nested and -nestedLoadOk"
- }
- if {$flag} {
- # another difference with "InterpStatics"
- return $nestedLoadOk
- } else {
- return $nested
- }
+# Helper function to resolve the dual way of specifying nested loading
+# (either by -nestedLoadOk or -nested 1)
+proc ::safe::InterpNested {} {
+ foreach v {Args nested nestedLoadOk} {
+ upvar $v $v
}
+ set flag [::tcl::OptProcArgGiven -nestedLoadOk]
+ # note that the test here is the opposite of the "InterpStatics" one
+ # (it is not -noNested... because of the wanted default value)
+ if {$flag && (!$nestedLoadOk != !$nested)
+ && ([::tcl::OptProcArgGiven -nested])} {
+ return -code error\
+ "conflicting values given for -nested and -nestedLoadOk"
+ }
+ if {$flag} {
+ # another difference with "InterpStatics"
+ return $nestedLoadOk
+ } else {
+ return $nested
+ }
+}
- ####
- #
- # API entry points that needs argument parsing :
- #
- ####
+####
+#
+# API entry points that needs argument parsing :
+#
+####
+# Interface/entry point function and front end for "Create"
+proc ::safe::interpCreate {args} {
+ set Args [::tcl::OptKeyParse ::safe::interpCreate $args]
+ InterpCreate $slave $accessPath \
+ [InterpStatics] [InterpNested] $deleteHook
+}
- # Interface/entry point function and front end for "Create"
- proc interpCreate {args} {
- set Args [::tcl::OptKeyParse ::safe::interpCreate $args]
- InterpCreate $slave $accessPath \
- [InterpStatics] [InterpNested] $deleteHook
+proc ::safe::interpInit {args} {
+ set Args [::tcl::OptKeyParse ::safe::interpIC $args]
+ if {![::interp exists $slave]} {
+ return -code error "\"$slave\" is not an interpreter"
}
+ InterpInit $slave $accessPath \
+ [InterpStatics] [InterpNested] $deleteHook
+}
- proc interpInit {args} {
- set Args [::tcl::OptKeyParse ::safe::interpIC $args]
- if {![::interp exists $slave]} {
- return -code error "\"$slave\" is not an interpreter"
- }
- InterpInit $slave $accessPath \
- [InterpStatics] [InterpNested] $deleteHook;
+# Check that the given slave is "one of us"
+proc ::safe::CheckInterp {slave} {
+ namespace upvar ::safe S$slave state
+ if {![info exists state] || ![::interp exists $slave]} {
+ return -code error \
+ "\"$slave\" is not an interpreter managed by ::safe::"
}
+}
- proc CheckInterp {slave} {
- if {![IsInterp $slave]} {
- return -code error \
- "\"$slave\" is not an interpreter managed by ::safe::"
+# Interface/entry point function and front end for "Configure". This code
+# is awfully pedestrian because it would need more coupling and support
+# between the way we store the configuration values in safe::interp's and
+# the Opt package. Obviously we would like an OptConfigure to avoid
+# duplicating all this code everywhere.
+# -> TODO (the app should share or access easily the program/value stored
+# by opt)
+
+# This is even more complicated by the boolean flags with no values that
+# we had the bad idea to support for the sake of user simplicity in
+# create/init but which makes life hard in configure...
+# So this will be hopefully written and some integrated with opt1.0
+# (hopefully for tcl8.1 ?)
+proc ::safe::interpConfigure {args} {
+ switch [llength $args] {
+ 1 {
+ # If we have exactly 1 argument the semantic is to return all
+ # the current configuration. We still call OptKeyParse though
+ # we know that "slave" is our given argument because it also
+ # checks for the "-help" option.
+ set Args [::tcl::OptKeyParse ::safe::interpIC $args]
+ CheckInterp $slave
+ namespace upvar ::safe S$slave state
+
+ return [join [list \
+ [list -accessPath $state(access_path)] \
+ [list -statics $state(staticsok)] \
+ [list -nested $state(nestedok)] \
+ [list -deleteHook $state(cleanupHook)]]]
}
- }
-
- # Interface/entry point function and front end for "Configure"
- # This code is awfully pedestrian because it would need
- # more coupling and support between the way we store the
- # configuration values in safe::interp's and the Opt package
- # Obviously we would like an OptConfigure
- # to avoid duplicating all this code everywhere. -> TODO
- # (the app should share or access easily the program/value
- # stored by opt)
- # This is even more complicated by the boolean flags with no values
- # that we had the bad idea to support for the sake of user simplicity
- # in create/init but which makes life hard in configure...
- # So this will be hopefully written and some integrated with opt1.0
- # (hopefully for tcl8.1 ?)
- proc interpConfigure {args} {
- switch [llength $args] {
- 1 {
- # If we have exactly 1 argument
- # the semantic is to return all the current configuration
- # We still call OptKeyParse though we know that "slave"
- # is our given argument because it also checks
- # for the "-help" option.
- set Args [::tcl::OptKeyParse ::safe::interpIC $args]
- CheckInterp $slave
- set res {}
- lappend res [list -accessPath [Set [PathListName $slave]]]
- lappend res [list -statics [Set [StaticsOkName $slave]]]
- lappend res [list -nested [Set [NestedOkName $slave]]]
- lappend res [list -deleteHook [Set [DeleteHookName $slave]]]
- join $res
+ 2 {
+ # If we have exactly 2 arguments the semantic is a "configure
+ # get"
+ lassign $args slave arg
+
+ # get the flag sub program (we 'know' about Opt's internal
+ # representation of data)
+ set desc [lindex [::tcl::OptKeyGetDesc ::safe::interpIC] 2]
+ set hits [::tcl::OptHits desc $arg]
+ if {$hits > 1} {
+ return -code error [::tcl::OptAmbigous $desc $arg]
+ } elseif {$hits == 0} {
+ return -code error [::tcl::OptFlagUsage $desc $arg]
}
- 2 {
- # If we have exactly 2 arguments
- # the semantic is a "configure get"
- ::tcl::Lassign $args slave arg
- # get the flag sub program (we 'know' about Opt's internal
- # representation of data)
- set desc [lindex [::tcl::OptKeyGetDesc ::safe::interpIC] 2]
- set hits [::tcl::OptHits desc $arg]
- if {$hits > 1} {
- return -code error [::tcl::OptAmbigous $desc $arg]
- } elseif {$hits == 0} {
- return -code error [::tcl::OptFlagUsage $desc $arg]
- }
- CheckInterp $slave
- set item [::tcl::OptCurDesc $desc]
- set name [::tcl::OptName $item]
- switch -exact -- $name {
- -accessPath {
- return [list -accessPath [Set [PathListName $slave]]]
- }
- -statics {
- return [list -statics [Set [StaticsOkName $slave]]]
- }
- -nested {
- return [list -nested [Set [NestedOkName $slave]]]
- }
- -deleteHook {
- return [list -deleteHook [Set [DeleteHookName $slave]]]
- }
- -noStatics {
- # it is most probably a set in fact
- # but we would need then to jump to the set part
- # and it is not *sure* that it is a set action
- # that the user want, so force it to use the
- # unambigous -statics ?value? instead:
- return -code error\
- "ambigous query (get or set -noStatics ?)\
- use -statics instead"
- }
- -nestedLoadOk {
- return -code error\
- "ambigous query (get or set -nestedLoadOk ?)\
- use -nested instead"
- }
- default {
- return -code error "unknown flag $name (bug)"
- }
+ CheckInterp $slave
+ namespace upvar ::safe S$slave state
+
+ set item [::tcl::OptCurDesc $desc]
+ set name [::tcl::OptName $item]
+ switch -exact -- $name {
+ -accessPath {
+ return [list -accessPath $state(access_path)]
}
- }
- default {
- # Otherwise we want to parse the arguments like init and create
- # did
- set Args [::tcl::OptKeyParse ::safe::interpIC $args]
- CheckInterp $slave
- # Get the current (and not the default) values of
- # whatever has not been given:
- if {![::tcl::OptProcArgGiven -accessPath]} {
- set doreset 1
- set accessPath [Set [PathListName $slave]]
- } else {
- set doreset 0
+ -statics {
+ return [list -statics $state(staticsok)]
}
- if {(![::tcl::OptProcArgGiven -statics]) \
- && (![::tcl::OptProcArgGiven -noStatics]) } {
- set statics [Set [StaticsOkName $slave]]
- } else {
- set statics [InterpStatics]
+ -nested {
+ return [list -nested $state(nestedok)]
}
- if {([::tcl::OptProcArgGiven -nested]) \
- || ([::tcl::OptProcArgGiven -nestedLoadOk]) } {
- set nested [InterpNested]
- } else {
- set nested [Set [NestedOkName $slave]]
+ -deleteHook {
+ return [list -deleteHook $state(cleanupHook)]
}
- if {![::tcl::OptProcArgGiven -deleteHook]} {
- set deleteHook [Set [DeleteHookName $slave]]
+ -noStatics {
+ # it is most probably a set in fact but we would need
+ # then to jump to the set part and it is not *sure*
+ # that it is a set action that the user want, so force
+ # it to use the unambigous -statics ?value? instead:
+ return -code error\
+ "ambigous query (get or set -noStatics ?)\
+ use -statics instead"
+ }
+ -nestedLoadOk {
+ return -code error\
+ "ambigous query (get or set -nestedLoadOk ?)\
+ use -nested instead"
}
- # we can now reconfigure :
- InterpSetConfig $slave $accessPath $statics $nested $deleteHook
- # auto_reset the slave (to completly synch the new access_path)
- if {$doreset} {
- if {[catch {::interp eval $slave {auto_reset}} msg]} {
- Log $slave "auto_reset failed: $msg"
- } else {
- Log $slave "successful auto_reset" NOTICE
- }
+ default {
+ return -code error "unknown flag $name (bug)"
+ }
+ }
+ }
+ default {
+ # Otherwise we want to parse the arguments like init and
+ # create did
+ set Args [::tcl::OptKeyParse ::safe::interpIC $args]
+ CheckInterp $slave
+ namespace upvar ::safe S$slave state
+
+ # Get the current (and not the default) values of whatever has
+ # not been given:
+ if {![::tcl::OptProcArgGiven -accessPath]} {
+ set doreset 1
+ set accessPath $state(access_path)
+ } else {
+ set doreset 0
+ }
+ if {
+ ![::tcl::OptProcArgGiven -statics]
+ && ![::tcl::OptProcArgGiven -noStatics]
+ } then {
+ set statics $state(staticsok)
+ } else {
+ set statics [InterpStatics]
+ }
+ if {
+ [::tcl::OptProcArgGiven -nested] ||
+ [::tcl::OptProcArgGiven -nestedLoadOk]
+ } then {
+ set nested [InterpNested]
+ } else {
+ set nested $state(nestedok)
+ }
+ if {![::tcl::OptProcArgGiven -deleteHook]} {
+ set deleteHook $state(cleanupHook)
+ }
+ # we can now reconfigure :
+ InterpSetConfig $slave $accessPath $statics $nested $deleteHook
+ # auto_reset the slave (to completly synch the new access_path)
+ if {$doreset} {
+ if {[catch {::interp eval $slave {auto_reset}} msg]} {
+ Log $slave "auto_reset failed: $msg"
+ } else {
+ Log $slave "successful auto_reset" NOTICE
}
}
}
}
+}
+####
+#
+# Functions that actually implements the exported APIs
+#
+####
- ####
- #
- # Functions that actually implements the exported APIs
- #
- ####
-
-
- #
- # safe::InterpCreate : doing the real job
- #
- # This procedure creates a safe slave and initializes it with the
- # safe base aliases.
- # NB: slave name must be simple alphanumeric string, no spaces,
- # no (), no {},... {because the state array is stored as part of the name}
- #
- # Returns the slave name.
- #
- # Optional Arguments :
- # + slave name : if empty, generated name will be used
- # + access_path: path list controlling where load/source can occur,
- # if empty: the master auto_path will be used.
- # + staticsok : flag, if 0 :no static package can be loaded (load {} Xxx)
- # if 1 :static packages are ok.
- # + nestedok: flag, if 0 :no loading to sub-sub interps (load xx xx sub)
- # if 1 : multiple levels are ok.
-
- # use the full name and no indent so auto_mkIndex can find us
- proc ::safe::InterpCreate {
- slave
- access_path
- staticsok
- nestedok
- deletehook
- } {
- # Create the slave.
- if {$slave ne ""} {
- ::interp create -safe $slave
- } else {
- # empty argument: generate slave name
- set slave [::interp create -safe]
- }
- Log $slave "Created" NOTICE
-
- # Initialize it. (returns slave name)
- InterpInit $slave $access_path $staticsok $nestedok $deletehook
+#
+# safe::InterpCreate : doing the real job
+#
+# This procedure creates a safe slave and initializes it with the safe
+# base aliases.
+# NB: slave name must be simple alphanumeric string, no spaces, no (), no
+# {},... {because the state array is stored as part of the name}
+#
+# Returns the slave name.
+#
+# Optional Arguments :
+# + slave name : if empty, generated name will be used
+# + access_path: path list controlling where load/source can occur,
+# if empty: the master auto_path will be used.
+# + staticsok : flag, if 0 :no static package can be loaded (load {} Xxx)
+# if 1 :static packages are ok.
+# + nestedok: flag, if 0 :no loading to sub-sub interps (load xx xx sub)
+# if 1 : multiple levels are ok.
+
+# use the full name and no indent so auto_mkIndex can find us
+proc ::safe::InterpCreate {
+ slave
+ access_path
+ staticsok
+ nestedok
+ deletehook
+ } {
+ # Create the slave.
+ if {$slave ne ""} {
+ ::interp create -safe $slave
+ } else {
+ # empty argument: generate slave name
+ set slave [::interp create -safe]
}
+ Log $slave "Created" NOTICE
+ # Initialize it. (returns slave name)
+ InterpInit $slave $access_path $staticsok $nestedok $deletehook
+}
- #
- # InterpSetConfig (was setAccessPath) :
- # Sets up slave virtual auto_path and corresponding structure
- # within the master. Also sets the tcl_library in the slave
- # to be the first directory in the path.
- # Nb: If you change the path after the slave has been initialized
- # you probably need to call "auto_reset" in the slave in order that it
- # gets the right auto_index() array values.
-
- proc ::safe::InterpSetConfig {slave access_path staticsok\
- nestedok deletehook} {
-
- # determine and store the access path if empty
- if {$access_path eq ""} {
- set access_path [uplevel \#0 set auto_path]
- # Make sure that tcl_library is in auto_path
- # and at the first position (needed by setAccessPath)
- set where [lsearch -exact $access_path [info library]]
- if {$where == -1} {
- # not found, add it.
- set access_path [concat [list [info library]] $access_path]
- Log $slave "tcl_library was not in auto_path,\
+#
+# InterpSetConfig (was setAccessPath) :
+# Sets up slave virtual auto_path and corresponding structure within
+# the master. Also sets the tcl_library in the slave to be the first
+# directory in the path.
+# NB: If you change the path after the slave has been initialized you
+# probably need to call "auto_reset" in the slave in order that it gets
+# the right auto_index() array values.
+
+proc ::safe::InterpSetConfig {slave access_path staticsok nestedok deletehook} {
+ global auto_path
+
+ # determine and store the access path if empty
+ if {$access_path eq ""} {
+ set access_path $auto_path
+
+ # Make sure that tcl_library is in auto_path and at the first
+ # position (needed by setAccessPath)
+ set where [lsearch -exact $access_path [info library]]
+ if {$where == -1} {
+ # not found, add it.
+ set access_path [linsert $access_path 0 [info library]]
+ Log $slave "tcl_library was not in auto_path,\
added it to slave's access_path" NOTICE
- } elseif {$where != 0} {
- # not first, move it first
- set access_path [concat [list [info library]]\
- [lreplace $access_path $where $where]]
- Log $slave "tcl_libray was not in first in auto_path,\
+ } elseif {$where != 0} {
+ # not first, move it first
+ set access_path [linsert \
+ [lreplace $access_path $where $where] \
+ 0 [info library]]
+ Log $slave "tcl_libray was not in first in auto_path,\
moved it to front of slave's access_path" NOTICE
-
- }
-
- # Add 1st level sub dirs (will searched by auto loading from tcl
- # code in the slave using glob and thus fail, so we add them
- # here so by default it works the same).
- set access_path [AddSubDirs $access_path]
}
- Log $slave "Setting accessPath=($access_path) staticsok=$staticsok\
+ # Add 1st level sub dirs (will searched by auto loading from tcl
+ # code in the slave using glob and thus fail, so we add them here
+ # so by default it works the same).
+ set access_path [AddSubDirs $access_path]
+ }
+
+ Log $slave "Setting accessPath=($access_path) staticsok=$staticsok\
nestedok=$nestedok deletehook=($deletehook)" NOTICE
- # clear old autopath if it existed
- set nname [PathNumberName $slave]
- if {[Exists $nname]} {
- set n [Set $nname]
- for {set i 0} {$i<$n} {incr i} {
- Unset [PathToken $i $slave]
- }
- }
+ namespace upvar ::safe S$slave state
+
+ # clear old autopath if it existed
+ # build new one
+ # Extend the access list with the paths used to look for Tcl Modules.
+ # We save the virtual form separately as well, as syncing it with the
+ # slave has to be defered until the necessary commands are present for
+ # setup.
+
+ set norm_access_path {}
+ set slave_access_path {}
+ set map_access_path {}
+ set remap_access_path {}
+ set slave_tm_path {}
+
+ set i 0
+ foreach dir $access_path {
+ set token [PathToken $i]
+ lappend slave_access_path $token
+ lappend map_access_path $token $dir
+ lappend remap_access_path $dir $token
+ lappend norm_access_path [file normalize $dir]
+ incr i
+ }
- # build new one
- set slave_auto_path {}
- set i 0
- foreach dir $access_path {
- Set [PathToken $i $slave] $dir
- lappend slave_auto_path "\$[PathToken $i]"
- incr i
- }
- # Extend the access list with the paths used to look for Tcl
- # Modules. We safe the virtual form separately as well, as
- # syncing it with the slave has to be defered until the
- # necessary commands are present for setup.
- foreach dir [::tcl::tm::list] {
- lappend access_path $dir
- Set [PathToken $i $slave] $dir
- lappend slave_auto_path "\$[PathToken $i]"
- lappend slave_tm_path "\$[PathToken $i]"
- incr i
- }
- Set [TmPathListName $slave] $slave_tm_path
- Set $nname $i
- Set [PathListName $slave] $access_path
- Set [VirtualPathListName $slave] $slave_auto_path
+ set morepaths [::tcl::tm::list]
+ while {[llength $morepaths]} {
+ set addpaths $morepaths
+ set morepaths {}
- Set [StaticsOkName $slave] $staticsok
- Set [NestedOkName $slave] $nestedok
- Set [DeleteHookName $slave] $deletehook
+ foreach dir $addpaths {
+ # Prevent the addition of dirs on the tm list to the
+ # result if they are already known.
+ if {[dict exists $remap_access_path $dir]} {
+ continue
+ }
- SyncAccessPath $slave
- }
+ set token [PathToken $i]
+ lappend access_path $dir
+ lappend slave_access_path $token
+ lappend map_access_path $token $dir
+ lappend remap_access_path $dir $token
+ lappend norm_access_path [file normalize $dir]
+ lappend slave_tm_path $token
+ incr i
- #
- #
- # FindInAccessPath:
- # Search for a real directory and returns its virtual Id
- # (including the "$")
-proc ::safe::interpFindInAccessPath {slave path} {
- set access_path [GetAccessPath $slave]
- set where [lsearch -exact $access_path $path]
- if {$where == -1} {
- return -code error "$path not found in access path $access_path"
+ # [Bug 2854929]
+ # Recursively find deeper paths which may contain
+ # modules. Required to handle modules with names like
+ # 'platform::shell', which translate into
+ # 'platform/shell-X.tm', i.e arbitrarily deep
+ # subdirectories.
+ lappend morepaths {*}[glob -nocomplain -directory $dir -type d *]
}
- return "\$[PathToken $where]"
}
- #
- # addToAccessPath:
- # add (if needed) a real directory to access path
- # and return its virtual token (including the "$").
-proc ::safe::interpAddToAccessPath {slave path} {
- # first check if the directory is already in there
- if {![catch {interpFindInAccessPath $slave $path} res]} {
- return $res
- }
- # new one, add it:
- set nname [PathNumberName $slave]
- set n [Set $nname]
- Set [PathToken $n $slave] $path
-
- set token "\$[PathToken $n]"
-
- Lappend [VirtualPathListName $slave] $token
- Lappend [PathListName $slave] $path
- Set $nname [expr {$n+1}]
+ set state(access_path) $access_path
+ set state(access_path,map) $map_access_path
+ set state(access_path,remap) $remap_access_path
+ set state(access_path,norm) $norm_access_path
+ set state(access_path,slave) $slave_access_path
+ set state(tm_path_slave) $slave_tm_path
+ set state(staticsok) $staticsok
+ set state(nestedok) $nestedok
+ set state(cleanupHook) $deletehook
+
+ SyncAccessPath $slave
+}
- SyncAccessPath $slave
+#
+#
+# FindInAccessPath:
+# Search for a real directory and returns its virtual Id (including the
+# "$")
+proc ::safe::interpFindInAccessPath {slave path} {
+ namespace upvar ::safe S$slave state
- return $token
+ if {![dict exists $state(access_path,remap) $path]} {
+ return -code error "$path not found in access path $access_path"
}
- # This procedure applies the initializations to an already existing
- # interpreter. It is useful when you want to install the safe base
- # aliases into a preexisting safe interpreter.
- proc ::safe::InterpInit {
- slave
- access_path
- staticsok
- nestedok
- deletehook
- } {
-
- # Configure will generate an access_path when access_path is
- # empty.
- InterpSetConfig $slave $access_path $staticsok $nestedok $deletehook
-
- # These aliases let the slave load files to define new commands
-
- # NB we need to add [namespace current], aliases are always
- # absolute paths.
- ::interp alias $slave source {} [namespace current]::AliasSource $slave
- ::interp alias $slave load {} [namespace current]::AliasLoad $slave
-
- # This alias lets the slave use the encoding names, convertfrom,
- # convertto, and system, but not "encoding system <name>" to set
- # the system encoding.
+ return [dict get $state(access_path,remap) $path]
+}
- ::interp alias $slave encoding {} [namespace current]::AliasEncoding \
- $slave
+#
+# addToAccessPath:
+# add (if needed) a real directory to access path and return its
+# virtual token (including the "$").
+proc ::safe::interpAddToAccessPath {slave path} {
+ # first check if the directory is already in there
+ # (inlined interpFindInAccessPath).
+ namespace upvar ::safe S$slave state
- # Handling Tcl Modules, we need a restricted form of Glob.
- ::interp alias $slave glob {} [namespace current]::AliasGlob \
- $slave
+ if {[dict exists $state(access_path,remap) $path]} {
+ return [dict get $state(access_path,remap) $path]
+ }
- # This alias lets the slave have access to a subset of the 'file'
- # command functionality.
+ # new one, add it:
+ set token [PathToken [llength $state(access_path)]]
- AliasSubset $slave file file dir.* join root.* ext.* tail \
- path.* split
+ lappend state(access_path) $path
+ lappend state(access_path,slave) $token
+ lappend state(access_path,map) $token $path
+ lappend state(access_path,remap) $path $token
+ lappend state(access_path,norm) [file normalize $path]
- # This alias interposes on the 'exit' command and cleanly terminates
- # the slave.
+ SyncAccessPath $slave
+ return $token
+}
- ::interp alias $slave exit {} [namespace current]::interpDelete $slave
+# This procedure applies the initializations to an already existing
+# interpreter. It is useful when you want to install the safe base aliases
+# into a preexisting safe interpreter.
+proc ::safe::InterpInit {
+ slave
+ access_path
+ staticsok
+ nestedok
+ deletehook
+ } {
+ # Configure will generate an access_path when access_path is empty.
+ InterpSetConfig $slave $access_path $staticsok $nestedok $deletehook
+
+ # NB we need to add [namespace current], aliases are always absolute
+ # paths.
+
+ # These aliases let the slave load files to define new commands
+ # This alias lets the slave use the encoding names, convertfrom,
+ # convertto, and system, but not "encoding system <name>" to set the
+ # system encoding.
+ # Handling Tcl Modules, we need a restricted form of Glob.
+ # This alias interposes on the 'exit' command and cleanly terminates
+ # the slave.
+
+ foreach {command alias} {
+ source AliasSource
+ load AliasLoad
+ encoding AliasEncoding
+ exit interpDelete
+ glob AliasGlob
+ } {
+ ::interp alias $slave $command {} [namespace current]::$alias $slave
+ }
- # The allowed slave variables already have been set
- # by Tcl_MakeSafe(3)
+ # This alias lets the slave have access to a subset of the 'file'
+ # command functionality.
+ ::interp expose $slave file
+ foreach subcommand {dirname extension rootname tail} {
+ ::interp alias $slave ::tcl::file::$subcommand {} \
+ ::safe::AliasFileSubcommand $slave $subcommand
+ }
+ foreach subcommand {
+ atime attributes copy delete executable exists isdirectory isfile
+ link lstat mtime mkdir nativename normalize owned readable readlink
+ rename size stat tempfile type volumes writable
+ } {
+ ::interp alias $slave ::tcl::file::$subcommand {} \
+ ::safe::BadSubcommand $slave file $subcommand
+ }
- # Source init.tcl and tm.tcl into the slave, to get auto_load
- # and other procedures defined:
+ # Subcommands of info
+ foreach {subcommand alias} {
+ nameofexecutable AliasExeName
+ } {
+ ::interp alias $slave ::tcl::info::$subcommand \
+ {} [namespace current]::$alias $slave
+ }
- if {[catch {::interp eval $slave \
- {source [file join $tcl_library init.tcl]}} msg]} {
- Log $slave "can't source init.tcl ($msg)"
- error "can't source init.tcl into slave $slave ($msg)"
- }
+ # The allowed slave variables already have been set by Tcl_MakeSafe(3)
- if {[catch {::interp eval $slave \
- {source [file join $tcl_library tm.tcl]}} msg]} {
- Log $slave "can't source tm.tcl ($msg)"
- error "can't source tm.tcl into slave $slave ($msg)"
- }
+ # Source init.tcl and tm.tcl into the slave, to get auto_load and
+ # other procedures defined:
- # Sync the paths used to search for Tcl modules. This can be
- # done only now, after tm.tcl was loaded.
- ::interp eval $slave [list ::tcl::tm::add {*}[Set [TmPathListName $slave]]]
+ if {[catch {::interp eval $slave {
+ source [file join $tcl_library init.tcl]
+ }} msg opt]} {
+ Log $slave "can't source init.tcl ($msg)"
+ return -options $opt "can't source init.tcl into slave $slave ($msg)"
+ }
- return $slave
+ if {[catch {::interp eval $slave {
+ source [file join $tcl_library tm.tcl]
+ }} msg opt]} {
+ Log $slave "can't source tm.tcl ($msg)"
+ return -options $opt "can't source tm.tcl into slave $slave ($msg)"
}
+ # Sync the paths used to search for Tcl modules. This can be done only
+ # now, after tm.tcl was loaded.
+ namespace upvar ::safe S$slave state
+ if {[llength $state(tm_path_slave)] > 0} {
+ ::interp eval $slave [list \
+ ::tcl::tm::add {*}[lreverse $state(tm_path_slave)]]
+ }
+ return $slave
+}
- # Add (only if needed, avoid duplicates) 1 level of
- # sub directories to an existing path list.
- # Also removes non directories from the returned list.
- proc AddSubDirs {pathList} {
- set res {}
- foreach dir $pathList {
- if {[file isdirectory $dir]} {
- # check that we don't have it yet as a children
- # of a previous dir
- if {[lsearch -exact $res $dir]<0} {
- lappend res $dir
- }
- foreach sub [glob -directory $dir -nocomplain *] {
- if {([file isdirectory $sub]) \
- && ([lsearch -exact $res $sub]<0) } {
- # new sub dir, add it !
- lappend res $sub
- }
+# Add (only if needed, avoid duplicates) 1 level of sub directories to an
+# existing path list. Also removes non directories from the returned
+# list.
+proc ::safe::AddSubDirs {pathList} {
+ set res {}
+ foreach dir $pathList {
+ if {[file isdirectory $dir]} {
+ # check that we don't have it yet as a children of a previous
+ # dir
+ if {$dir ni $res} {
+ lappend res $dir
+ }
+ foreach sub [glob -directory $dir -nocomplain *] {
+ if {[file isdirectory $sub] && ($sub ni $res)} {
+ # new sub dir, add it !
+ lappend res $sub
}
}
}
- return $res
}
+ return $res
+}
- # This procedure deletes a safe slave managed by Safe Tcl and
- # cleans up associated state:
+# This procedure deletes a safe slave managed by Safe Tcl and cleans up
+# associated state:
proc ::safe::interpDelete {slave} {
-
- Log $slave "About to delete" NOTICE
-
- # If the slave has a cleanup hook registered, call it.
- # check the existance because we might be called to delete an interp
- # which has not been registered with us at all
- set hookname [DeleteHookName $slave]
- if {[Exists $hookname]} {
- set hook [Set $hookname]
- if {![::tcl::Lempty $hook]} {
- # remove the hook now, otherwise if the hook
- # calls us somehow, we'll loop
- Unset $hookname
- if {[catch {{*}$hook $slave} err]} {
- Log $slave "Delete hook error ($err)"
- }
+ Log $slave "About to delete" NOTICE
+
+ namespace upvar ::safe S$slave state
+
+ # If the slave has a cleanup hook registered, call it. Check the
+ # existance because we might be called to delete an interp which has
+ # not been registered with us at all
+
+ if {[info exists state(cleanupHook)]} {
+ set hook $state(cleanupHook)
+ if {[llength $hook]} {
+ # remove the hook now, otherwise if the hook calls us somehow,
+ # we'll loop
+ unset state(cleanupHook)
+ try {
+ {*}$hook $slave
+ } on error err {
+ Log $slave "Delete hook error ($err)"
}
}
+ }
- # Discard the global array of state associated with the slave, and
- # delete the interpreter.
+ # Discard the global array of state associated with the slave, and
+ # delete the interpreter.
- set statename [InterpStateName $slave]
- if {[Exists $statename]} {
- Unset $statename
- }
-
- # if we have been called twice, the interp might have been deleted
- # already
- if {[::interp exists $slave]} {
- ::interp delete $slave
- Log $slave "Deleted" NOTICE
- }
+ if {[info exists state]} {
+ unset state
+ }
- return
+ # if we have been called twice, the interp might have been deleted
+ # already
+ if {[::interp exists $slave]} {
+ ::interp delete $slave
+ Log $slave "Deleted" NOTICE
}
- # Set (or get) the loging mecanism
+ return
+}
+
+# Set (or get) the logging mecanism
proc ::safe::setLogCmd {args} {
variable Log
- if {[llength $args] == 0} {
+ set la [llength $args]
+ if {$la == 0} {
return $Log
+ } elseif {$la == 1} {
+ set Log [lindex $args 0]
+ } else {
+ set Log $args
+ }
+
+ if {$Log eq ""} {
+ # Disable logging completely. Calls to it will be compiled out
+ # of all users.
+ proc ::safe::Log {args} {}
} else {
- if {[llength $args] == 1} {
- set Log [lindex $args 0]
- } else {
- set Log $args
+ # Activate logging, define proper command.
+
+ proc ::safe::Log {slave msg {type ERROR}} {
+ variable Log
+ {*}$Log "$type for slave $slave : $msg"
+ return
}
}
}
- # internal variable
- variable Log {}
+# ------------------- END OF PUBLIC METHODS ------------
- # ------------------- END OF PUBLIC METHODS ------------
+#
+# Sets the slave auto_path to the master recorded value. Also sets
+# tcl_library to the first token of the virtual path.
+#
+proc ::safe::SyncAccessPath {slave} {
+ namespace upvar ::safe S$slave state
+ set slave_access_path $state(access_path,slave)
+ ::interp eval $slave [list set auto_path $slave_access_path]
- #
- # sets the slave auto_path to the master recorded value.
- # also sets tcl_library to the first token of the virtual path.
- #
- proc SyncAccessPath {slave} {
- set slave_auto_path [Set [VirtualPathListName $slave]]
- ::interp eval $slave [list set auto_path $slave_auto_path]
- Log $slave "auto_path in $slave has been set to $slave_auto_path"\
- NOTICE
- ::interp eval $slave [list set tcl_library [lindex $slave_auto_path 0]]
- }
+ Log $slave "auto_path in $slave has been set to $slave_access_path"\
+ NOTICE
- # base name for storing all the slave states
- # the array variable name for slave foo is thus "Sfoo"
- # and for sub slave {foo bar} "Sfoo bar" (spaces are handled
- # ok everywhere (or should))
- # We add the S prefix to avoid that a slave interp called "Log"
- # would smash our "Log" variable.
- proc InterpStateName {slave} {
- return "S$slave"
- }
+ # This code assumes that info library is the first element in the
+ # list of auto_path's. See -> InterpSetConfig for the code which
+ # ensures this condition.
- # Check that the given slave is "one of us"
- proc IsInterp {slave} {
- expr {[Exists [InterpStateName $slave]] && [::interp exists $slave]}
- }
+ ::interp eval $slave [list \
+ set tcl_library [lindex $slave_access_path 0]]
+}
- # returns the virtual token for directory number N
- # if the slave argument is given,
- # it will return the corresponding master global variable name
- proc PathToken {n {slave ""}} {
- if {$slave ne ""} {
- return "[InterpStateName $slave](access_path,$n)"
- } else {
- # We need to have a ":" in the token string so
- # [file join] on the mac won't turn it into a relative
- # path.
- return "p(:$n:)"
- }
- }
- # returns the variable name of the complete path list
- proc PathListName {slave} {
- return "[InterpStateName $slave](access_path)"
- }
- # returns the variable name of the complete path list
- proc VirtualPathListName {slave} {
- return "[InterpStateName $slave](access_path_slave)"
- }
- # returns the variable name of the complete tm path list
- proc TmPathListName {slave} {
- return "[InterpStateName $slave](tm_path_slave)"
- }
- # returns the variable name of the number of items
- proc PathNumberName {slave} {
- return "[InterpStateName $slave](access_path,n)"
- }
- # returns the staticsok flag var name
- proc StaticsOkName {slave} {
- return "[InterpStateName $slave](staticsok)"
- }
- # returns the nestedok flag var name
- proc NestedOkName {slave} {
- return "[InterpStateName $slave](nestedok)"
- }
- # Run some code at the namespace toplevel
- proc Toplevel {args} {
- namespace eval [namespace current] $args
- }
- # set/get values
- proc Set {args} {
- Toplevel set {*}$args
- }
- # lappend on toplevel vars
- proc Lappend {args} {
- Toplevel lappend {*}$args
- }
- # unset a var/token (currently just an global level eval)
- proc Unset {args} {
- Toplevel unset {*}$args
- }
- # test existance
- proc Exists {varname} {
- Toplevel info exists $varname
- }
- # short cut for access path getting
- proc GetAccessPath {slave} {
- Set [PathListName $slave]
- }
- # short cut for statics ok flag getting
- proc StaticsOk {slave} {
- Set [StaticsOkName $slave]
- }
- # short cut for getting the multiples interps sub loading ok flag
- proc NestedOk {slave} {
- Set [NestedOkName $slave]
- }
- # interp deletion storing hook name
- proc DeleteHookName {slave} {
- return [InterpStateName $slave](cleanupHook)
- }
+# Returns the virtual token for directory number N.
+proc ::safe::PathToken {n} {
+ # We need to have a ":" in the token string so [file join] on the
+ # mac won't turn it into a relative path.
+ return "\$p(:$n:)" ;# Form tested by case 7.2
+}
- #
- # translate virtual path into real path
- #
- proc TranslatePath {slave path} {
- # somehow strip the namespaces 'functionality' out (the danger
- # is that we would strip valid macintosh "../" queries... :
- if {[string match "*::*" $path] || [string match "*..*" $path]} {
- error "invalid characters in path $path"
- }
- set n [expr {[Set [PathNumberName $slave]]-1}]
- for {} {$n>=0} {incr n -1} {
- # fill the token virtual names with their real value
- set [PathToken $n] [Set [PathToken $n $slave]]
- }
- # replaces the token by their value
- subst -nobackslashes -nocommands $path
+#
+# translate virtual path into real path
+#
+proc ::safe::TranslatePath {slave path} {
+ namespace upvar ::safe S$slave state
+
+ # somehow strip the namespaces 'functionality' out (the danger is that
+ # we would strip valid macintosh "../" queries... :
+ if {[string match "*::*" $path] || [string match "*..*" $path]} {
+ return -code error "invalid characters in path $path"
}
+ # Use a cached map instead of computed local vars and subst.
- # Log eventually log an error
- # to enable error logging, set Log to {puts stderr} for instance
- proc Log {slave msg {type ERROR}} {
- variable Log
- if {[info exists Log] && [llength $Log]} {
- {*}$Log "$type for slave $slave : $msg"
- }
+ return [string map $state(access_path,map) $path]
+}
+
+# file name control (limit access to files/resources that should be a
+# valid tcl source file)
+proc ::safe::CheckFileName {slave file} {
+ # This used to limit what can be sourced to ".tcl" and forbid files
+ # with more than 1 dot and longer than 14 chars, but I changed that
+ # for 8.4 as a safe interp has enough internal protection already to
+ # allow sourcing anything. - hobbs
+
+ if {![file exists $file]} {
+ # don't tell the file path
+ return -code error "no such file or directory"
}
+ if {![file readable $file]} {
+ # don't tell the file path
+ return -code error "not readable"
+ }
+}
- # file name control (limit access to files/ressources that should be
- # a valid tcl source file)
- proc CheckFileName {slave file} {
- # This used to limit what can be sourced to ".tcl" and forbid files
- # with more than 1 dot and longer than 14 chars, but I changed that
- # for 8.4 as a safe interp has enough internal protection already
- # to allow sourcing anything. - hobbs
+# AliasFileSubcommand handles selected subcommands of [file] in safe
+# interpreters that are *almost* safe. In particular, it just acts to
+# prevent discovery of what home directories exist.
- if {![file exists $file]} {
- # don't tell the file path
- error "no such file or directory"
- }
+proc ::safe::AliasFileSubcommand {slave subcommand name} {
+ if {[string match ~* $name]} {
+ set name ./$name
+ }
+ tailcall ::interp invokehidden $slave tcl:file:$subcommand $name
+}
- if {![file readable $file]} {
- # don't tell the file path
- error "not readable"
- }
+# AliasGlob is the target of the "glob" alias in safe interpreters.
+
+proc ::safe::AliasGlob {slave args} {
+ Log $slave "GLOB ! $args" NOTICE
+ set cmd {}
+ set at 0
+ array set got {
+ -directory 0
+ -nocomplain 0
+ -join 0
+ -tails 0
+ -- 0
}
- # AliasGlob is the target of the "glob" alias in safe interpreters.
+ if {$::tcl_platform(platform) eq "windows"} {
+ set dirPartRE {^(.*)[\\/]([^\\/]*)$}
+ } else {
+ set dirPartRE {^(.*)/([^/]*)$}
+ }
- proc AliasGlob {slave args} {
- Log $slave "GLOB ! $args" NOTICE
- set cmd {}
- set at 0
+ set dir {}
+ set virtualdir {}
- set dir {}
- set virtualdir {}
-
- while {$at < [llength $args]} {
- switch -glob -- [set opt [lindex $args $at]] {
- -nocomplain -
- -join { lappend cmd $opt ; incr at }
- -directory {
- lappend cmd $opt ; incr at
- set virtualdir [lindex $args $at]
-
- # get the real path from the virtual one.
- if {[catch {set dir [TranslatePath $slave $virtualdir]} msg]} {
- Log $slave $msg
- return -code error "permission denied"
- }
- # check that the path is in the access path of that slave
- if {[catch {DirInAccessPath $slave $dir} msg]} {
- Log $slave $msg
- return -code error "permission denied"
- }
- lappend cmd $dir ; incr at
- }
- pkgIndex.tcl {
- # Oops, this is globbing a subdirectory in regular
- # package search. That is not wanted. Abort,
- # handler does catch already (because glob was not
- # defined before). See package.tcl, lines 484ff in
- # tclPkgUnknown.
- error "unknown command glob"
- }
- -* {
- Log $slave "Safe base rejecting glob option '$opt'"
- error "Safe base rejecting glob option '$opt'"
- }
- default {
- lappend cmd $opt ; incr at
+ while {$at < [llength $args]} {
+ switch -glob -- [set opt [lindex $args $at]] {
+ -nocomplain - -- - -join - -tails {
+ lappend cmd $opt
+ set got($opt) 1
+ incr at
+ }
+ -types - -type {
+ lappend cmd -types [lindex $args [incr at]]
+ incr at
+ }
+ -directory {
+ if {$got($opt)} {
+ return -code error \
+ {"-directory" cannot be used with "-path"}
}
+ set got($opt) 1
+ set virtualdir [lindex $args [incr at]]
+ incr at
+ }
+ pkgIndex.tcl {
+ # Oops, this is globbing a subdirectory in regular package
+ # search. That is not wanted. Abort, handler does catch
+ # already (because glob was not defined before). See
+ # package.tcl, lines 484ff in tclPkgUnknown.
+ return -code error "unknown command glob"
+ }
+ -* {
+ Log $slave "Safe base rejecting glob option '$opt'"
+ return -code error "Safe base rejecting glob option '$opt'"
+ }
+ default {
+ break
}
}
+ if {$got(--)} break
+ }
- Log $slave "GLOB = $cmd" NOTICE
-
- if {[catch {::interp invokehidden $slave glob {*}$cmd} msg]} {
+ # Get the real path from the virtual one and check that the path is in the
+ # access path of that slave. Done after basic argument processing so that
+ # we know if -nocomplain is set.
+ if {$got(-directory)} {
+ try {
+ set dir [TranslatePath $slave $virtualdir]
+ DirInAccessPath $slave $dir
+ } on error msg {
Log $slave $msg
- return -code error "script error"
- }
-
- Log $slave "GLOB @ $msg" NOTICE
-
- # Translate path back to what the slave should see.
- set res {}
- foreach p $msg {
- regsub -- ^$dir $p $virtualdir p
- lappend res $p
+ if {$got(-nocomplain)} return
+ return -code error "permission denied"
}
+ lappend cmd -directory $dir
+ }
- Log $slave "GLOB @ $res" NOTICE
- return $res
+ # Apply the -join semantics ourselves
+ if {$got(-join)} {
+ set args [lreplace $args $at end [join [lrange $args $at end] "/"]]
}
- # AliasSource is the target of the "source" alias in safe interpreters.
-
- proc AliasSource {slave args} {
-
- set argc [llength $args]
- # Extended for handling of Tcl Modules to allow not only
- # "source filename", but "source -encoding E filename" as
- # well.
- if {[lindex $args 0] eq "-encoding"} {
- incr argc -2
- set encoding [lrange $args 0 1]
- set at 2
- } else {
- set at 0
- set encoding {}
+ # Process remaining pattern arguments
+ set firstPattern [llength $cmd]
+ foreach opt [lrange $args $at end] {
+ if {![regexp $dirPartRE $opt -> thedir thefile]} {
+ set thedir .
+ } elseif {[string match ~* $thedir]} {
+ set thedir ./$thedir
}
- if {$argc != 1} {
- set msg "wrong # args: should be \"source ?-encoding E? fileName\""
- Log $slave "$msg ($args)"
- return -code error $msg
+ if {$thedir eq "*" &&
+ ($thefile eq "pkgIndex.tcl" || $thefile eq "*.tm")} {
+ set mapped 0
+ foreach d [glob -directory [TranslatePath $slave $virtualdir] \
+ -types d -tails *] {
+ catch {
+ DirInAccessPath $slave \
+ [TranslatePath $slave [file join $virtualdir $d]]
+ lappend cmd [file join $d $thefile]
+ set mapped 1
+ }
+ }
+ if {$mapped} continue
}
- set file [lindex $args $at]
-
- # get the real path from the virtual one.
- if {[catch {set file [TranslatePath $slave $file]} msg]} {
+ try {
+ DirInAccessPath $slave [TranslatePath $slave \
+ [file join $virtualdir $thedir]]
+ } on error msg {
Log $slave $msg
+ if {$got(-nocomplain)} continue
return -code error "permission denied"
}
-
- # check that the path is in the access path of that slave
- if {[catch {FileInAccessPath $slave $file} msg]} {
- Log $slave $msg
- return -code error "permission denied"
+ lappend cmd $opt
+ }
+
+ Log $slave "GLOB = $cmd" NOTICE
+
+ if {$got(-nocomplain) && [llength $cmd] eq $firstPattern} {
+ return
+ }
+ try {
+ set entries [::interp invokehidden $slave glob {*}$cmd]
+ } on error msg {
+ Log $slave $msg
+ return -code error "script error"
+ }
+
+ Log $slave "GLOB < $entries" NOTICE
+
+ # Translate path back to what the slave should see.
+ set res {}
+ set l [string length $dir]
+ foreach p $entries {
+ if {[string equal -length $l $dir $p]} {
+ set p [string replace $p 0 [expr {$l-1}] $virtualdir]
}
+ lappend res $p
+ }
- # do the checks on the filename :
- if {[catch {CheckFileName $slave $file} msg]} {
- Log $slave "$file:$msg"
- return -code error $msg
+ Log $slave "GLOB > $res" NOTICE
+ return $res
+}
+
+# AliasSource is the target of the "source" alias in safe interpreters.
+
+proc ::safe::AliasSource {slave args} {
+ set argc [llength $args]
+ # Extended for handling of Tcl Modules to allow not only "source
+ # filename", but "source -encoding E filename" as well.
+ if {[lindex $args 0] eq "-encoding"} {
+ incr argc -2
+ set encoding [lindex $args 1]
+ set at 2
+ if {$encoding eq "identity"} {
+ Log $slave "attempt to use the identity encoding"
+ return -code error "permission denied"
}
+ } else {
+ set at 0
+ set encoding {}
+ }
+ if {$argc != 1} {
+ set msg "wrong # args: should be \"source ?-encoding E? fileName\""
+ Log $slave "$msg ($args)"
+ return -code error $msg
+ }
+ set file [lindex $args $at]
+
+ # get the real path from the virtual one.
+ if {[catch {
+ set realfile [TranslatePath $slave $file]
+ } msg]} {
+ Log $slave $msg
+ return -code error "permission denied"
+ }
+
+ # check that the path is in the access path of that slave
+ if {[catch {
+ FileInAccessPath $slave $realfile
+ } msg]} {
+ Log $slave $msg
+ return -code error "permission denied"
+ }
- # passed all the tests , lets source it:
- if {[catch {::interp invokehidden $slave source {*}$encoding $file} msg]} {
- Log $slave $msg
- return -code error "script error"
+ # do the checks on the filename :
+ if {[catch {
+ CheckFileName $slave $realfile
+ } msg]} {
+ Log $slave "$realfile:$msg"
+ return -code error $msg
+ }
+
+ # Passed all the tests, lets source it. Note that we do this all manually
+ # because we want to control [info script] in the slave so information
+ # doesn't leak so much. [Bug 2913625]
+ set old [::interp eval $slave {info script}]
+ set replacementMsg "script error"
+ set code [catch {
+ set f [open $realfile]
+ fconfigure $f -eofchar \032
+ if {$encoding ne ""} {
+ fconfigure $f -encoding $encoding
}
- return $msg
+ set contents [read $f]
+ close $f
+ ::interp eval $slave [list info script $file]
+ } msg opt]
+ if {$code == 0} {
+ set code [catch {::interp eval $slave $contents} msg opt]
+ set replacementMsg $msg
+ }
+ catch {interp eval $slave [list info script $old]}
+ # Note that all non-errors are fine result codes from [source], so we must
+ # take a little care to do it properly. [Bug 2923613]
+ if {$code == 1} {
+ Log $slave $msg
+ return -code error $replacementMsg
}
+ return -code $code -options $opt $msg
+}
- # AliasLoad is the target of the "load" alias in safe interpreters.
+# AliasLoad is the target of the "load" alias in safe interpreters.
- proc AliasLoad {slave file args} {
+proc ::safe::AliasLoad {slave file args} {
+ set argc [llength $args]
+ if {$argc > 2} {
+ set msg "load error: too many arguments"
+ Log $slave "$msg ($argc) {$file $args}"
+ return -code error $msg
+ }
- set argc [llength $args]
- if {$argc > 2} {
- set msg "load error: too many arguments"
- Log $slave "$msg ($argc) {$file $args}"
- return -code error $msg
- }
+ # package name (can be empty if file is not).
+ set package [lindex $args 0]
+
+ namespace upvar ::safe S$slave state
- # package name (can be empty if file is not).
- set package [lindex $args 0]
-
- # Determine where to load. load use a relative interp path
- # and {} means self, so we can directly and safely use passed arg.
- set target [lindex $args 1]
- if {$target ne ""} {
- # we will try to load into a sub sub interp
- # check that we want to authorize that.
- if {![NestedOk $slave]} {
- Log $slave "loading to a sub interp (nestedok)\
+ # Determine where to load. load use a relative interp path and {}
+ # means self, so we can directly and safely use passed arg.
+ set target [lindex $args 1]
+ if {$target ne ""} {
+ # we will try to load into a sub sub interp; check that we want to
+ # authorize that.
+ if {!$state(nestedok)} {
+ Log $slave "loading to a sub interp (nestedok)\
disabled (trying to load $package to $target)"
- return -code error "permission denied (nested load)"
- }
-
+ return -code error "permission denied (nested load)"
}
+ }
- # Determine what kind of load is requested
- if {$file eq ""} {
- # static package loading
- if {$package eq ""} {
- set msg "load error: empty filename and no package name"
- Log $slave $msg
- return -code error $msg
- }
- if {![StaticsOk $slave]} {
- Log $slave "static packages loading disabled\
+ # Determine what kind of load is requested
+ if {$file eq ""} {
+ # static package loading
+ if {$package eq ""} {
+ set msg "load error: empty filename and no package name"
+ Log $slave $msg
+ return -code error $msg
+ }
+ if {!$state(staticsok)} {
+ Log $slave "static packages loading disabled\
(trying to load $package to $target)"
- return -code error "permission denied (static package)"
- }
- } else {
- # file loading
-
- # get the real path from the virtual one.
- if {[catch {set file [TranslatePath $slave $file]} msg]} {
- Log $slave $msg
- return -code error "permission denied"
- }
-
- # check the translated path
- if {[catch {FileInAccessPath $slave $file} msg]} {
- Log $slave $msg
- return -code error "permission denied (path)"
- }
+ return -code error "permission denied (static package)"
}
+ } else {
+ # file loading
- if {[catch {::interp invokehidden\
- $slave load $file $package $target} msg]} {
+ # get the real path from the virtual one.
+ try {
+ set file [TranslatePath $slave $file]
+ } on error msg {
Log $slave $msg
- return -code error $msg
+ return -code error "permission denied"
}
- return $msg
+ # check the translated path
+ try {
+ FileInAccessPath $slave $file
+ } on error msg {
+ Log $slave $msg
+ return -code error "permission denied (path)"
+ }
}
- # FileInAccessPath raises an error if the file is not found in
- # the list of directories contained in the (master side recorded) slave's
- # access path.
+ try {
+ return [::interp invokehidden $slave load $file $package $target]
+ } on error msg {
+ Log $slave $msg
+ return -code error $msg
+ }
+}
- # the security here relies on "file dirname" answering the proper
- # result.... needs checking ?
- proc FileInAccessPath {slave file} {
+# FileInAccessPath raises an error if the file is not found in the list of
+# directories contained in the (master side recorded) slave's access path.
- set access_path [GetAccessPath $slave]
+# the security here relies on "file dirname" answering the proper
+# result... needs checking ?
+proc ::safe::FileInAccessPath {slave file} {
+ namespace upvar ::safe S$slave state
+ set access_path $state(access_path)
- if {[file isdirectory $file]} {
- error "\"$file\": is a directory"
- }
- set parent [file dirname $file]
+ if {[file isdirectory $file]} {
+ return -code error "\"$file\": is a directory"
+ }
+ set parent [file dirname $file]
- # Normalize paths for comparison since lsearch knows nothing of
- # potential pathname anomalies.
- set norm_parent [file normalize $parent]
- foreach path $access_path {
- lappend norm_access_path [file normalize $path]
- }
+ # Normalize paths for comparison since lsearch knows nothing of
+ # potential pathname anomalies.
+ set norm_parent [file normalize $parent]
- if {[lsearch -exact $norm_access_path $norm_parent] == -1} {
- error "\"$file\": not in access_path"
- }
+ namespace upvar ::safe S$slave state
+ if {$norm_parent ni $state(access_path,norm)} {
+ return -code error "\"$file\": not in access_path"
}
+}
- proc DirInAccessPath {slave dir} {
- set access_path [GetAccessPath $slave]
+proc ::safe::DirInAccessPath {slave dir} {
+ namespace upvar ::safe S$slave state
+ set access_path $state(access_path)
- if {[file isfile $dir]} {
- error "\"$dir\": is a file"
- }
+ if {[file isfile $dir]} {
+ return -code error "\"$dir\": is a file"
+ }
- # Normalize paths for comparison since lsearch knows nothing of
- # potential pathname anomalies.
- set norm_dir [file normalize $dir]
- foreach path $access_path {
- lappend norm_access_path [file normalize $path]
- }
+ # Normalize paths for comparison since lsearch knows nothing of
+ # potential pathname anomalies.
+ set norm_dir [file normalize $dir]
- if {[lsearch -exact $norm_access_path $norm_dir] == -1} {
- error "\"$dir\": not in access_path"
- }
+ namespace upvar ::safe S$slave state
+ if {$norm_dir ni $state(access_path,norm)} {
+ return -code error "\"$dir\": not in access_path"
}
+}
- # This procedure enables access from a safe interpreter to only a subset of
- # the subcommands of a command:
+# This procedure is used to report an attempt to use an unsafe member of an
+# ensemble command.
- proc Subset {slave command okpat args} {
- set subcommand [lindex $args 0]
- if {[regexp $okpat $subcommand]} {
- return [$command {*}$args]
+proc ::safe::BadSubcommand {slave command subcommand args} {
+ set msg "not allowed to invoke subcommand $subcommand of $command"
+ Log $slave $msg
+ return -code error -errorcode {TCL SAFE SUBCOMMAND} $msg
+}
+
+# AliasEncoding is the target of the "encoding" alias in safe interpreters.
+
+proc ::safe::AliasEncoding {slave option args} {
+ # Note that [encoding dirs] is not supported in safe slaves at all
+ set subcommands {convertfrom convertto names system}
+ try {
+ set option [tcl::prefix match -error [list -level 1 -errorcode \
+ [list TCL LOOKUP INDEX option $option]] $subcommands $option]
+ # Special case: [encoding system] ok, but [encoding system foo] not
+ if {$option eq "system" && [llength $args]} {
+ return -code error -errorcode {TCL WRONGARGS} \
+ "wrong # args: should be \"encoding system\""
}
- set msg "not allowed to invoke subcommand $subcommand of $command"
+ } on error {msg options} {
Log $slave $msg
- error $msg
+ return -options $options $msg
}
+ tailcall ::interp invokehidden $slave encoding $option {*}$args
+}
- # This procedure installs an alias in a slave that invokes "safesubset"
- # in the master to execute allowed subcommands. It precomputes the pattern
- # of allowed subcommands; you can use wildcards in the pattern if you wish
- # to allow subcommand abbreviation.
+# Various minor hiding of platform features. [Bug 2913625]
+
+proc ::safe::AliasExeName {slave} {
+ return ""
+}
+
+proc ::safe::Setup {} {
+ ####
#
- # Syntax is: AliasSubset slave alias target subcommand1 subcommand2...
+ # Setup the arguments parsing
+ #
+ ####
- proc AliasSubset {slave alias target args} {
- set pat ^(; set sep ""
- foreach sub $args {
- append pat $sep$sub
- set sep |
- }
- append pat )\$
- ::interp alias $slave $alias {}\
- [namespace current]::Subset $slave $target $pat
- }
+ # Share the descriptions
+ set temp [::tcl::OptKeyRegister {
+ {-accessPath -list {} "access path for the slave"}
+ {-noStatics "prevent loading of statically linked pkgs"}
+ {-statics true "loading of statically linked pkgs"}
+ {-nestedLoadOk "allow nested loading"}
+ {-nested false "nested loading"}
+ {-deleteHook -script {} "delete hook"}
+ }]
- # AliasEncoding is the target of the "encoding" alias in safe interpreters.
+ # create case (slave is optional)
+ ::tcl::OptKeyRegister {
+ {?slave? -name {} "name of the slave (optional)"}
+ } ::safe::interpCreate
- proc AliasEncoding {slave args} {
+ # adding the flags sub programs to the command program (relying on Opt's
+ # internal implementation details)
+ lappend ::tcl::OptDesc(::safe::interpCreate) $::tcl::OptDesc($temp)
- set argc [llength $args]
+ # init and configure (slave is needed)
+ ::tcl::OptKeyRegister {
+ {slave -name {} "name of the slave"}
+ } ::safe::interpIC
- set okpat "^(name.*|convert.*)\$"
- set subcommand [lindex $args 0]
+ # adding the flags sub programs to the command program (relying on Opt's
+ # internal implementation details)
+ lappend ::tcl::OptDesc(::safe::interpIC) $::tcl::OptDesc($temp)
- if {[regexp $okpat $subcommand]} {
- return [::interp invokehidden $slave encoding {*}$args]
- }
+ # temp not needed anymore
+ ::tcl::OptKeyDelete $temp
- if {[string first $subcommand system] == 0} {
- if {$argc == 1} {
- # passed all the tests , lets source it:
- if {[catch {::interp invokehidden \
- $slave encoding system} msg]} {
- Log $slave $msg
- return -code error "script error"
- }
- } else {
- set msg "wrong # args: should be \"encoding system\""
- Log $slave $msg
- error $msg
- }
- } else {
- set msg "wrong # args: should be \"encoding option ?arg ...?\""
- Log $slave $msg
- error $msg
- }
+ ####
+ #
+ # Default: No logging.
+ #
+ ####
- return $msg
- }
+ setLogCmd {}
+ # Log eventually.
+ # To enable error logging, set Log to {puts stderr} for instance,
+ # via setLogCmd.
+ return
}
+
+namespace eval ::safe {
+ # internal variables
+
+ # Log command, set via 'setLogCmd'. Logging is disabled when empty.
+ variable Log {}
+
+ # The package maintains a state array per slave interp under its
+ # control. The name of this array is S<interp-name>. This array is
+ # brought into scope where needed, using 'namespace upvar'. The S
+ # prefix is used to avoid that a slave interp called "Log" smashes
+ # the "Log" variable.
+ #
+ # The array's elements are:
+ #
+ # access_path : List of paths accessible to the slave.
+ # access_path,norm : Ditto, in normalized form.
+ # access_path,slave : Ditto, as the path tokens as seen by the slave.
+ # access_path,map : dict ( token -> path )
+ # access_path,remap : dict ( path -> token )
+ # tm_path_slave : List of TM root directories, as tokens seen by the slave.
+ # staticsok : Value of option -statics
+ # nestedok : Value of option -nested
+ # cleanupHook : Value of option -deleteHook
+}
+
+::safe::Setup
diff --git a/library/tclIndex b/library/tclIndex
index 010616f..26603c1 100644
--- a/library/tclIndex
+++ b/library/tclIndex
@@ -1,4 +1,5 @@
# Tcl autoload index file, version 2.0
+# -*- tcl -*-
# This file is generated by the "auto_mkindex" command
# and sourced to set up indexing information for one or
# more commands. Typically each line is a command that
@@ -48,29 +49,15 @@ set auto_index(::safe::AddSubDirs) [list source [file join $dir safe.tcl]]
set auto_index(::safe::interpDelete) [list source [file join $dir safe.tcl]]
set auto_index(::safe::setLogCmd) [list source [file join $dir safe.tcl]]
set auto_index(::safe::SyncAccessPath) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::InterpStateName) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::IsInterp) [list source [file join $dir safe.tcl]]
set auto_index(::safe::PathToken) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::PathListName) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::VirtualPathListName) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::PathNumberName) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::StaticsOkName) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::NestedOkName) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::Toplevel) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::Set) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::Lappend) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::Unset) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::Exists) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::GetAccessPath) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::StaticsOk) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::NestedOk) [list source [file join $dir safe.tcl]]
-set auto_index(::safe::DeleteHookName) [list source [file join $dir safe.tcl]]
set auto_index(::safe::TranslatePath) [list source [file join $dir safe.tcl]]
set auto_index(::safe::Log) [list source [file join $dir safe.tcl]]
set auto_index(::safe::CheckFileName) [list source [file join $dir safe.tcl]]
+set auto_index(::safe::AliasGlob) [list source [file join $dir safe.tcl]]
set auto_index(::safe::AliasSource) [list source [file join $dir safe.tcl]]
set auto_index(::safe::AliasLoad) [list source [file join $dir safe.tcl]]
set auto_index(::safe::FileInAccessPath) [list source [file join $dir safe.tcl]]
+set auto_index(::safe::DirInAccessPath) [list source [file join $dir safe.tcl]]
set auto_index(::safe::Subset) [list source [file join $dir safe.tcl]]
set auto_index(::safe::AliasSubset) [list source [file join $dir safe.tcl]]
set auto_index(::safe::AliasEncoding) [list source [file join $dir safe.tcl]]
@@ -82,6 +69,7 @@ set auto_index(tcl_startOfPreviousWord) [list source [file join $dir word.tcl]]
set auto_index(::tcl::tm::add) [list source [file join $dir tm.tcl]]
set auto_index(::tcl::tm::remove) [list source [file join $dir tm.tcl]]
set auto_index(::tcl::tm::list) [list source [file join $dir tm.tcl]]
+set auto_index(::tcl::tm::Defaults) [list source [file join $dir tm.tcl]]
set auto_index(::tcl::tm::UnknownHandler) [list source [file join $dir tm.tcl]]
set auto_index(::tcl::tm::roots) [list source [file join $dir tm.tcl]]
set auto_index(::tcl::tm::path) [list source [file join $dir tm.tcl]]
diff --git a/library/tcltest/pkgIndex.tcl b/library/tcltest/pkgIndex.tcl
index f062cde..c99ad2a 100644
--- a/library/tcltest/pkgIndex.tcl
+++ b/library/tcltest/pkgIndex.tcl
@@ -9,4 +9,4 @@
# full path name of this file's directory.
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
-package ifneeded tcltest 2.3.0 [list source [file join $dir tcltest.tcl]]
+package ifneeded tcltest 2.3.7 [list source [file join $dir tcltest.tcl]]
diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl
index d799eb0..4b94312 100644
--- a/library/tcltest/tcltest.tcl
+++ b/library/tcltest/tcltest.tcl
@@ -15,8 +15,6 @@
# Copyright (c) 2000 by Ajuba Solutions
# Contributions from Don Porter, NIST, 2002. (not subject to US copyright)
# All rights reserved.
-#
-# RCS: @(#) $Id: tcltest.tcl,v 1.103 2007/12/13 15:26:03 dgp Exp $
package require Tcl 8.5 ;# -verbose line uses [info frame]
namespace eval tcltest {
@@ -24,7 +22,7 @@ namespace eval tcltest {
# When the version number changes, be sure to update the pkgIndex.tcl file,
# and the install directory in the Makefiles. When the minor version
# changes (new feature) be sure to update the man page as well.
- variable Version 2.3.0
+ variable Version 2.3.7
# Compatibility support for dumb variables defined in tcltest 1
# Do not use these. Call [package provide Tcl] and [info patchlevel]
@@ -86,7 +84,7 @@ namespace eval tcltest {
# None.
#
proc normalizePath {pathVar} {
- upvar $pathVar path
+ upvar 1 $pathVar path
set oldpwd [pwd]
catch {cd $path}
set path [pwd]
@@ -249,15 +247,15 @@ namespace eval tcltest {
# Kept only for compatibility
Default constraintsSpecified {} AcceptList
- trace variable constraintsSpecified r {set ::tcltest::constraintsSpecified \
- [array names ::tcltest::testConstraints] ;# }
+ trace add variable constraintsSpecified read [namespace code {
+ set constraintsSpecified [array names testConstraints] ;#}]
# tests that use threads need to know which is the main thread
Default mainThread 1
variable mainThread
- if {[info commands thread::id] != {}} {
+ if {[info commands thread::id] ne {}} {
set mainThread [thread::id]
- } elseif {[info commands testthread] != {}} {
+ } elseif {[info commands testthread] ne {}} {
set mainThread [testthread id]
}
@@ -265,7 +263,7 @@ namespace eval tcltest {
# Tcl tests is the working directory. Whenever this value changes
# change to that directory.
variable workingDirectory
- trace variable workingDirectory w \
+ trace add variable workingDirectory write \
[namespace code {cd $workingDirectory ;#}]
Default workingDirectory [pwd] AcceptAbsolutePath
@@ -279,7 +277,7 @@ namespace eval tcltest {
# Set the location of the execuatble
Default tcltest [info nameofexecutable]
- trace variable tcltest w [namespace code {testConstraint stdio \
+ trace add variable tcltest write [namespace code {testConstraint stdio \
[eval [ConstraintInitializer stdio]] ;#}]
# save the platform information so it can be restored later
@@ -406,11 +404,11 @@ namespace eval tcltest {
# already there.
set outdir [normalizePath [file dirname \
[file join [pwd] $filename]]]
- if {[string equal $outdir [temporaryDirectory]]} {
+ if {$outdir eq [temporaryDirectory]} {
variable filesExisted
FillFilesExisted
set filename [file tail $filename]
- if {[lsearch -exact $filesExisted $filename] == -1} {
+ if {$filename ni $filesExisted} {
lappend filesExisted $filename
}
}
@@ -450,11 +448,11 @@ namespace eval tcltest {
# already there.
set outdir [normalizePath [file dirname \
[file join [pwd] $filename]]]
- if {[string equal $outdir [temporaryDirectory]]} {
+ if {$outdir eq [temporaryDirectory]} {
variable filesExisted
FillFilesExisted
set filename [file tail $filename]
- if {[lsearch -exact $filesExisted $filename] == -1} {
+ if {$filename ni $filesExisted} {
lappend filesExisted $filename
}
}
@@ -485,8 +483,10 @@ namespace eval tcltest {
variable Verify
variable Usage
variable OptionControlledVariables
+ variable DefaultValue
set Usage($option) $usage
set Verify($option) $verify
+ set DefaultValue($option) $value
if {[catch {$verify $value} msg]} {
return -code error $msg
} else {
@@ -534,7 +534,7 @@ namespace eval tcltest {
}
default {
# Exact match trumps ambiguity
- if {[lsearch -exact $match $option] >= 0} {
+ if {$option in $match} {
return $option
}
set values [join [lrange $match 0 end-1] ", "]
@@ -549,7 +549,8 @@ namespace eval tcltest {
variable OptionControlledVariables
foreach varName [concat $OptionControlledVariables Option] {
variable $varName
- trace variable $varName r [namespace code {ProcessCmdLineArgs ;#}]
+ trace add variable $varName read [namespace code {
+ ProcessCmdLineArgs ;#}]
}
}
@@ -557,11 +558,11 @@ namespace eval tcltest {
variable OptionControlledVariables
foreach varName [concat $OptionControlledVariables Option] {
variable $varName
- foreach pair [trace vinfo $varName] {
- foreach {op cmd} $pair break
- if {[string equal r $op]
- && [string match *ProcessCmdLineArgs* $cmd]} {
- trace vdelete $varName $op $cmd
+ foreach pair [trace info variable $varName] {
+ lassign $pair op cmd
+ if {($op eq "read") &&
+ [string match *ProcessCmdLineArgs* $cmd]} {
+ trace remove variable $varName $op $cmd
}
}
}
@@ -601,8 +602,10 @@ namespace eval tcltest {
}
}
proc configure args {
- RemoveAutoConfigureTraces
- set code [catch {eval Configure $args} msg]
+ if {[llength $args] > 1} {
+ RemoveAutoConfigureTraces
+ }
+ set code [catch {Configure {*}$args} msg]
return -code $code $msg
}
@@ -696,7 +699,7 @@ namespace eval tcltest {
Option -constraints {} {
Do not skip the listed constraints listed in -constraints.
} AcceptList
- trace variable Option(-constraints) w \
+ trace add variable Option(-constraints) write \
[namespace code {SetSelectedConstraints ;#}]
# Don't run only the "-constraint" specified tests by default
@@ -705,15 +708,15 @@ namespace eval tcltest {
variable testConstraints
if {!$Option(-limitconstraints)} {return}
foreach c [array names testConstraints] {
- if {[lsearch -exact $Option(-constraints) $c] == -1} {
+ if {$c ni $Option(-constraints)} {
testConstraint $c 0
}
}
}
- Option -limitconstraints false {
+ Option -limitconstraints 0 {
whether to run only tests with the constraints
} AcceptBoolean limitConstraints
- trace variable Option(-limitconstraints) w \
+ trace add variable Option(-limitconstraints) write \
[namespace code {ClearUnselectedConstraints ;#}]
# A test application has to know how to load the tested commands
@@ -734,7 +737,7 @@ namespace eval tcltest {
}
set directory [AcceptDirectory $directory]
if {![file writable $directory]} {
- if {[string equal [workingDirectory] $directory]} {
+ if {[workingDirectory] eq $directory} {
# Special exception: accept the default value
# even if the directory is not writable
return $directory
@@ -748,7 +751,7 @@ namespace eval tcltest {
Option -tmpdir [workingDirectory] {
Save temporary files in the specified directory.
} AcceptTemporaryDirectory temporaryDirectory
- trace variable Option(-tmpdir) w \
+ trace add variable Option(-tmpdir) write \
[namespace code {normalizePath Option(-tmpdir) ;#}]
# Tests should not rely on the current working directory.
@@ -757,17 +760,17 @@ namespace eval tcltest {
Option -testdir [workingDirectory] {
Search tests in the specified directory.
} AcceptDirectory testsDirectory
- trace variable Option(-testdir) w \
+ trace add variable Option(-testdir) write \
[namespace code {normalizePath Option(-testdir) ;#}]
proc AcceptLoadFile { file } {
- if {[string equal "" $file]} {return $file}
+ if {$file eq {}} {return $file}
set file [file join [temporaryDirectory] $file]
return [AcceptReadable $file]
}
proc ReadLoadScript {args} {
variable Option
- if {[string equal "" $Option(-loadfile)]} {return}
+ if {$Option(-loadfile) eq {}} {return}
set tmp [open $Option(-loadfile) r]
loadScript [read $tmp]
close $tmp
@@ -775,7 +778,7 @@ namespace eval tcltest {
Option -loadfile {} {
Read the script to load the tested commands from the specified file.
} AcceptLoadFile loadFile
- trace variable Option(-loadfile) w [namespace code ReadLoadScript]
+ trace add variable Option(-loadfile) write [namespace code ReadLoadScript]
proc AcceptOutFile { file } {
if {[string equal stderr $file]} {return $file}
@@ -787,16 +790,39 @@ namespace eval tcltest {
Option -outfile stdout {
Send output from test runs to the specified file.
} AcceptOutFile outputFile
- trace variable Option(-outfile) w \
+ trace add variable Option(-outfile) write \
[namespace code {outputChannel $Option(-outfile) ;#}]
# errors go to stderr by default
Option -errfile stderr {
Send errors from test runs to the specified file.
} AcceptOutFile errorFile
- trace variable Option(-errfile) w \
+ trace add variable Option(-errfile) write \
[namespace code {errorChannel $Option(-errfile) ;#}]
+ proc loadIntoSlaveInterpreter {slave args} {
+ variable Version
+ interp eval $slave [package ifneeded tcltest $Version]
+ interp eval $slave "tcltest::configure {*}{$args}"
+ interp alias $slave ::tcltest::ReportToMaster \
+ {} ::tcltest::ReportedFromSlave
+ }
+ proc ReportedFromSlave {total passed skipped failed because newfiles} {
+ variable numTests
+ variable skippedBecause
+ variable createdNewFiles
+ incr numTests(Total) $total
+ incr numTests(Passed) $passed
+ incr numTests(Skipped) $skipped
+ incr numTests(Failed) $failed
+ foreach {constraint count} $because {
+ incr skippedBecause($constraint) $count
+ }
+ foreach {testfile created} $newfiles {
+ lappend createdNewFiles($testfile) {*}$created
+ }
+ return
+ }
}
#####################################################################
@@ -852,7 +878,7 @@ proc tcltest::DebugPArray {level arrayvar} {
variable debug
if {$debug >= $level} {
- catch {upvar $arrayvar $arrayvar}
+ catch {upvar 1 $arrayvar $arrayvar}
parray $arrayvar
}
return
@@ -936,8 +962,7 @@ proc tcltest::testConstraint {constraint {value ""}} {
if {[catch {expr {$value && $value}} msg]} {
return -code error $msg
}
- if {[limitConstraints]
- && [lsearch -exact $Option(-constraints) $constraint] == -1} {
+ if {[limitConstraints] && ($constraint ni $Option(-constraints))} {
set value 0
}
set testConstraints($constraint) $value
@@ -961,11 +986,7 @@ proc tcltest::interpreter { {interp ""} } {
if {[llength [info level 0]] == 1} {
return $tcltest
}
- if {[string equal {} $interp]} {
- set tcltest {}
- } else {
- set tcltest $interp
- }
+ set tcltest $interp
}
#####################################################################
@@ -1030,7 +1051,7 @@ proc tcltest::PrintError {errorMsg} {
[expr {80 - $InitialMsgLen}]]]
puts [errorChannel] [string range $errorMsg 0 $beginningIndex]
- while {![string equal end $beginningIndex]} {
+ while {$beginningIndex ne "end"} {
puts -nonewline [errorChannel] \
[string repeat " " $InitialMsgLen]
if {($endingIndex - $beginningIndex)
@@ -1083,7 +1104,7 @@ proc tcltest::PrintError {errorMsg} {
proc tcltest::SafeFetch {n1 n2 op} {
variable testConstraints
DebugPuts 3 "entering SafeFetch $n1 $n2 $op"
- if {[string equal {} $n2]} {return}
+ if {$n2 eq {}} {return}
if {![info exists testConstraints($n2)]} {
if {[catch {testConstraint $n2 [eval [ConstraintInitializer $n2]]}]} {
testConstraint $n2 0
@@ -1228,9 +1249,8 @@ proc tcltest::DefineConstraintInitializers {} {
# are running as root on Unix.
ConstraintInitializer root {expr \
- {[string equal unix $::tcl_platform(platform)]
- && ([string equal root $::tcl_platform(user)]
- || [string equal "" $::tcl_platform(user)])}}
+ {($::tcl_platform(platform) eq "unix") &&
+ ($::tcl_platform(user) in {root {}})}}
ConstraintInitializer notRoot {expr {![testConstraint root]}}
# Set nonBlockFiles constraint: 1 means this platform supports
@@ -1238,7 +1258,7 @@ proc tcltest::DefineConstraintInitializers {} {
ConstraintInitializer nonBlockFiles {
set code [expr {[catch {set f [open defs r]}]
- || [catch {fconfigure $f -blocking off}]}]
+ || [catch {chan configure $f -blocking off}]}]
catch {close $f}
set code
}
@@ -1264,10 +1284,10 @@ proc tcltest::DefineConstraintInitializers {} {
ConstraintInitializer unixExecs {
set code 1
- if {[string equal macintosh $::tcl_platform(platform)]} {
+ if {$::tcl_platform(platform) eq "macintosh"} {
set code 0
}
- if {[string equal windows $::tcl_platform(platform)]} {
+ if {$::tcl_platform(platform) eq "windows"} {
if {[catch {
set file _tcl_test_remove_me.txt
makeFile {hello} $file
@@ -1361,7 +1381,7 @@ proc tcltest::Usage { {option ""} } {
set allOpts [concat -help [Configure]]
foreach opt $allOpts {
set foo [Usage $opt]
- foreach [list x type($opt) usage($opt)] $foo break
+ lassign $foo x type($opt) usage($opt)
set line($opt) " $opt $type($opt) "
set length($opt) [string length $line($opt)]
if {$length($opt) > $max} {set max $length($opt)}
@@ -1385,7 +1405,7 @@ proc tcltest::Usage { {option ""} } {
append msg $u
}
return $msg\n
- } elseif {[string equal -help $option]} {
+ } elseif {$option eq "-help"} {
return [list -help "" "Display this usage information."]
} else {
set type [lindex [info args $Verify($option)] 0]
@@ -1411,7 +1431,7 @@ proc tcltest::Usage { {option ""} } {
proc tcltest::ProcessFlags {flagArray} {
# Process -help first
- if {[lsearch -exact $flagArray {-help}] != -1} {
+ if {"-help" in $flagArray} {
PrintUsageInfo
exit 1
}
@@ -1420,14 +1440,14 @@ proc tcltest::ProcessFlags {flagArray} {
RemoveAutoConfigureTraces
} else {
set args $flagArray
- while {[llength $args]>1 && [catch {eval configure $args} msg]} {
+ while {[llength $args] > 1 && [catch {configure {*}$args} msg]} {
# Something went wrong parsing $args for tcltest options
# Check whether the problem is "unknown option"
if {[regexp {^unknown option (\S+):} $msg -> option]} {
# Could be this is an option the Hook knows about
set moreOptions [processCmdLineArgsAddFlagsHook]
- if {[lsearch -exact $moreOptions $option] == -1} {
+ if {$option ni $moreOptions} {
# Nope. Report the error, including additional options,
# but keep going
if {[llength $moreOptions]} {
@@ -1446,7 +1466,7 @@ proc tcltest::ProcessFlags {flagArray} {
# To recover, find that unknown option and remove up to it.
# then retry
- while {![string equal [lindex $args 0] $option]} {
+ while {[lindex $args 0] ne $option} {
set args [lrange $args 2 end]
}
set args [lrange $args 2 end]
@@ -1552,7 +1572,7 @@ proc tcltest::Replace::puts {args} {
}
2 {
# Either -nonewline or channelId has been specified
- if {[string equal -nonewline [lindex $args 0]]} {
+ if {[lindex $args 0] eq "-nonewline"} {
append outData [lindex $args end]
return
# return [Puts -nonewline [lindex $args end]]
@@ -1562,7 +1582,7 @@ proc tcltest::Replace::puts {args} {
}
}
3 {
- if {[string equal -nonewline [lindex $args 0]]} {
+ if {[lindex $args 0] eq "-nonewline"} {
# Both -nonewline and channelId are specified, unless
# it's an error. -nonewline is supposed to be argv[0].
set channel [lindex $args 1]
@@ -1572,12 +1592,10 @@ proc tcltest::Replace::puts {args} {
}
if {[info exists channel]} {
- if {[string equal $channel [[namespace parent]::outputChannel]]
- || [string equal $channel stdout]} {
+ if {$channel in [list [[namespace parent]::outputChannel] stdout]} {
append outData [lindex $args end]$newline
return
- } elseif {[string equal $channel [[namespace parent]::errorChannel]]
- || [string equal $channel stderr]} {
+ } elseif {$channel in [list [[namespace parent]::errorChannel] stderr]} {
append errData [lindex $args end]$newline
return
}
@@ -1585,7 +1603,7 @@ proc tcltest::Replace::puts {args} {
# If we haven't returned by now, we don't know how to handle the
# input. Let puts handle it.
- return [eval Puts $args]
+ return [Puts {*}$args]
}
# tcltest::Eval --
@@ -1746,7 +1764,7 @@ proc tcltest::SubstArguments {argList} {
set argList {}
}
- if {$token != {}} {
+ if {$token ne {}} {
# If we saw a word with quote before, then there is a
# multi-word token starting with that word. In this case,
# add the text and the current word to this token.
@@ -1853,10 +1871,7 @@ proc tcltest::test {name description args} {
# Pre-define everything to null except output and errorOutput. We
# determine whether or not to trap output based on whether or not
# these variables (output & errorOutput) are defined.
- foreach item {constraints setup cleanup body result returnCodes
- match} {
- set $item {}
- }
+ lassign {} constraints setup cleanup body result returnCodes match
# Set the default match mode
set match exact
@@ -1868,8 +1883,7 @@ proc tcltest::test {name description args} {
# The old test format can't have a 3rd argument (constraints or
# script) that starts with '-'.
- if {[string match -* [lindex $args 0]]
- || ([llength $args] <= 1)} {
+ if {[string match -* [lindex $args 0]] || ([llength $args] <= 1)} {
if {[llength $args] == 1} {
set list [SubstArguments [lindex $args 0]]
foreach {element value} $list {
@@ -1890,7 +1904,7 @@ proc tcltest::test {name description args} {
-match -output -errorOutput -constraints}
foreach flag [array names testAttributes] {
- if {[lsearch -exact $validFlags $flag] == -1} {
+ if {$flag ni $validFlags} {
incr testLevel -1
set sorted [lsort $validFlags]
set options [join [lrange $sorted 0 end-1] ", "]
@@ -1906,7 +1920,7 @@ proc tcltest::test {name description args} {
# Check the values supplied for -match
variable CustomMatch
- if {[lsearch [array names CustomMatch] $match] == -1} {
+ if {$match ni [array names CustomMatch]} {
incr testLevel -1
set sorted [lsort [array names CustomMatch]]
set values [join [lrange $sorted 0 end-1] ", "]
@@ -1970,7 +1984,7 @@ proc tcltest::test {name description args} {
} else {
set testResult [uplevel 1 [list [namespace origin Eval] $command 1]]
}
- foreach {actualAnswer returnCode} $testResult break
+ lassign $testResult actualAnswer returnCode
if {$returnCode == 1} {
set errorInfo(body) $::errorInfo
set errorCode(body) $::errorCode
@@ -2006,11 +2020,11 @@ proc tcltest::test {name description args} {
if {([preserveCore] > 1) && ($coreFailure)} {
append coreMsg "\nMoving file to:\
[file join [temporaryDirectory] core-$name]"
- catch {file rename -force \
+ catch {file rename -force -- \
[file join [workingDirectory] core] \
[file join [temporaryDirectory] core-$name]
} msg
- if {[string length $msg] > 0} {
+ if {$msg ne {}} {
append coreMsg "\nError:\
Problem renaming core file: $msg"
}
@@ -2020,7 +2034,7 @@ proc tcltest::test {name description args} {
# check if the return code matched the expected return code
set codeFailure 0
- if {!$setupFailure && [lsearch -exact $returnCodes $returnCode] == -1} {
+ if {!$setupFailure && ($returnCode ni $returnCodes)} {
set codeFailure 1
}
@@ -2099,12 +2113,12 @@ proc tcltest::test {name description args} {
set testFd [open $testFile r]
set testLine [expr {[lsearch -regexp \
[split [read $testFd] "\n"] \
- "^\[ \t\]*test [string map {. \\.} $name] "]+1}]
+ "^\[ \t\]*test [string map {. \\.} $name] "] + 1}]
close $testFd
}
}
if {[info exists testLine]} {
- puts [outputChannel] "$testFile:$testLine: test failed:\
+ puts [outputChannel] "$testFile:$testLine: error: test failed:\
$name [string trim $description]"
}
}
@@ -2144,7 +2158,7 @@ proc tcltest::test {name description args} {
puts [outputChannel] "---- Return code should have been\
one of: $returnCodes"
if {[IsVerbose error]} {
- if {[info exists errorInfo(body)] && ([lsearch $returnCodes 1]<0)} {
+ if {[info exists errorInfo(body)] && (1 ni $returnCodes)} {
puts [outputChannel] "---- errorInfo: $errorInfo(body)"
puts [outputChannel] "---- errorCode: $errorCode(body)"
}
@@ -2225,7 +2239,7 @@ proc tcltest::Skipped {name constraints} {
}
return 1
}
- if {[string equal {} $constraints]} {
+ if {$constraints eq {}} {
# If we're limited to the listed constraints and there aren't
# any listed, then we shouldn't run the test.
if {[limitConstraints]} {
@@ -2242,12 +2256,12 @@ proc tcltest::Skipped {name constraints} {
set doTest 0
if {[string match {*[$\[]*} $constraints] != 0} {
# full expression, e.g. {$foo > [info tclversion]}
- catch {set doTest [uplevel #0 expr $constraints]}
+ catch {set doTest [uplevel #0 [list expr $constraints]]}
} elseif {[regexp {[^.:_a-zA-Z0-9 \n\r\t]+} $constraints] != 0} {
# something like {a || b} should be turned into
# $testConstraints(a) || $testConstraints(b).
regsub -all {[.\w]+} $constraints {$testConstraints(&)} c
- catch {set doTest [eval expr $c]}
+ catch {set doTest [eval [list expr $c]]}
} elseif {![catch {llength $constraints}]} {
# just simple constraints such as {unixOnly fonts}.
set doTest 1
@@ -2356,6 +2370,14 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} {
FillFilesExisted
set testFileName [file tail [info script]]
+ # Hook to handle reporting to a parent interpreter
+ if {[llength [info commands [namespace current]::ReportToMaster]]} {
+ ReportToMaster $numTests(Total) $numTests(Passed) $numTests(Skipped) \
+ $numTests(Failed) [array get skippedBecause] \
+ [array get createdNewFiles]
+ set testSingleFile false
+ }
+
# Call the cleanup hook
cleanupTestsHook
@@ -2368,7 +2390,7 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} {
foreach file $filesMade {
if {[file exists $file]} {
DebugDo 1 {Warn "cleanupTests deleting $file..."}
- catch {file delete -force $file}
+ catch {file delete -force -- $file}
}
}
set currentFiles {}
@@ -2378,7 +2400,7 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} {
}
set newFiles {}
foreach file $currentFiles {
- if {[lsearch -exact $filesExisted $file] == -1} {
+ if {$file ni $filesExisted} {
lappend newFiles $file
}
}
@@ -2461,8 +2483,7 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} {
# then add current file to failFile list if any tests in this
# file failed
- if {$currentFailure \
- && ([lsearch -exact $failFiles $testFileName] == -1)} {
+ if {$currentFailure && ($testFileName ni $failFiles)} {
lappend failFiles $testFileName
}
set currentFailure false
@@ -2477,17 +2498,15 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} {
if {![info exists originalEnv($index)]} {
lappend newEnv $index
unset ::env($index)
- } else {
- if {$::env($index) != $originalEnv($index)} {
- lappend changedEnv $index
- set ::env($index) $originalEnv($index)
- }
}
}
foreach index [array names originalEnv] {
if {![info exists ::env($index)]} {
lappend removedEnv $index
set ::env($index) $originalEnv($index)
+ } elseif {$::env($index) ne $originalEnv($index)} {
+ lappend changedEnv $index
+ set ::env($index) $originalEnv($index)
}
}
if {[llength $newEnv] > 0} {
@@ -2522,11 +2541,11 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} {
puts [outputChannel] "produced core file! \
Moving file to: \
[file join [temporaryDirectory] core-$testFileName]"
- catch {file rename -force \
+ catch {file rename -force -- \
[file join [workingDirectory] core] \
[file join [temporaryDirectory] core-$testFileName]
} msg
- if {[string length $msg] > 0} {
+ if {$msg ne {}} {
PrintError "Problem renaming file: $msg"
}
} else {
@@ -2571,7 +2590,7 @@ proc tcltest::cleanupTests {{calledFromAllFile 0}} {
# None
# a lower case version is needed for compatibility with tcltest 1.0
-proc tcltest::getMatchingFiles args {eval GetMatchingFiles $args}
+proc tcltest::getMatchingFiles args {GetMatchingFiles {*}$args}
proc tcltest::GetMatchingFiles { args } {
if {[llength $args]} {
@@ -2604,7 +2623,7 @@ proc tcltest::GetMatchingFiles { args } {
# Add to result list all files in match list and not in skip list
foreach file $matchFileList {
- if {[lsearch -exact $skipFileList $file] == -1} {
+ if {$file ni $skipFileList} {
lappend matchingFiles $file
}
}
@@ -2651,7 +2670,7 @@ proc tcltest::GetMatchingDirectories {rootdir} {
foreach pattern [matchDirectories] {
foreach path [glob -directory $rootdir -types d -nocomplain -- \
$pattern] {
- if {[lsearch -exact $skipDirs $path] == -1} {
+ if {$path ni $skipDirs} {
set matchDirs [concat $matchDirs [GetMatchingDirectories $path]]
if {[file exists [file join $path all.tcl]]} {
lappend matchDirs $path
@@ -2687,6 +2706,7 @@ proc tcltest::runAllTests { {shell ""} } {
variable numTestFiles
variable numTests
variable failFiles
+ variable DefaultValue
FillFilesExisted
if {[llength [info level 0]] == 1} {
@@ -2703,7 +2723,7 @@ proc tcltest::runAllTests { {shell ""} } {
# [file system] first available in Tcl 8.4
if {![catch {file system [testsDirectory]} result]
- && ![string equal native [lindex $result 0]]} {
+ && ([lindex $result 0] ne "native")} {
# If we aren't running in the native filesystem, then we must
# run the tests in a single process (via 'source'), because
# trying to run then via a pipe will fail since the files don't
@@ -2750,8 +2770,13 @@ proc tcltest::runAllTests { {shell ""} } {
# needs to read and process output of children.
set childargv [list]
foreach opt [Configure] {
- if {[string equal $opt -outfile]} {continue}
- lappend childargv $opt [Configure $opt]
+ if {$opt eq "-outfile"} {continue}
+ set value [Configure $opt]
+ # Don't bother passing default configuration options
+ if {$value eq $DefaultValue($opt)} {
+ continue
+ }
+ lappend childargv $opt $value
}
set cmd [linsert $childargv 0 | $shell $file]
if {[catch {
@@ -2841,11 +2866,6 @@ proc tcltest::runAllTests { {shell ""} } {
# none.
proc tcltest::loadTestedCommands {} {
- variable l
- if {[string equal {} [loadScript]]} {
- return
- }
-
return [uplevel 1 [loadScript]]
}
@@ -2888,16 +2908,15 @@ proc tcltest::saveState {} {
proc tcltest::restoreState {} {
variable saveState
foreach p [uplevel 1 {::info procs}] {
- if {([lsearch [lindex $saveState 0] $p] < 0)
- && ![string equal [namespace current]::$p \
- [uplevel 1 [list ::namespace origin $p]]]} {
+ if {($p ni [lindex $saveState 0]) && ("[namespace current]::$p" ne
+ [uplevel 1 [list ::namespace origin $p]])} {
DebugPuts 2 "[lindex [info level 0] 0]: Removing proc $p"
uplevel 1 [list ::catch [list ::rename $p {}]]
}
}
foreach p [uplevel 1 {::info vars}] {
- if {[lsearch [lindex $saveState 1] $p] < 0} {
+ if {$p ni [lindex $saveState 1]} {
DebugPuts 2 "[lindex [info level 0] 0]:\
Removing variable $p"
uplevel 1 [list ::catch [list ::unset $p]]
@@ -2958,15 +2977,15 @@ proc tcltest::makeFile {contents name {directory ""}} {
putting ``$contents'' into $fullName"
set fd [open $fullName w]
- fconfigure $fd -translation lf
- if {[string equal [string index $contents end] \n]} {
+ chan configure $fd -translation lf
+ if {[string index $contents end] eq "\n"} {
puts -nonewline $fd $contents
} else {
puts $fd $contents
}
close $fd
- if {[lsearch -exact $filesMade $fullName] == -1} {
+ if {$fullName ni $filesMade} {
lappend filesMade $fullName
}
return $fullName
@@ -3006,7 +3025,7 @@ proc tcltest::removeFile {name {directory ""}} {
Warn "removeFile removing \"$fullName\":\n not a file"
}
}
- return [file delete $fullName]
+ return [file delete -- $fullName]
}
# tcltest::makeDirectory --
@@ -3036,7 +3055,7 @@ proc tcltest::makeDirectory {name {directory ""}} {
set fullName [file join $directory $name]
DebugPuts 3 "[lindex [info level 0] 0]: creating $fullName"
file mkdir $fullName
- if {[lsearch -exact $filesMade $fullName] == -1} {
+ if {$fullName ni $filesMade} {
lappend filesMade $fullName
}
return $fullName
@@ -3077,7 +3096,7 @@ proc tcltest::removeDirectory {name {directory ""}} {
Warn "removeDirectory removing \"$fullName\":\n not a directory"
}
}
- return [file delete -force $fullName]
+ return [file delete -force -- $fullName]
}
# tcltest::viewFile --
@@ -3174,7 +3193,7 @@ proc tcltest::LeakFiles {old} {
}
set leak {}
foreach p $new {
- if {[lsearch $old $p] < 0} {
+ if {$p ni $old} {
lappend leak $p
}
}
@@ -3245,7 +3264,7 @@ proc tcltest::RestoreLocale {} {
#
proc tcltest::threadReap {} {
- if {[info commands testthread] != {}} {
+ if {[info commands testthread] ne {}} {
# testthread built into tcltest
@@ -3265,7 +3284,7 @@ proc tcltest::threadReap {} {
}
testthread errorproc ThreadError
return [llength [testthread names]]
- } elseif {[info commands thread::id] != {}} {
+ } elseif {[info commands thread::id] ne {}} {
# Thread extension
@@ -3297,15 +3316,15 @@ namespace eval tcltest {
# Set up the constraints in the testConstraints array to be lazily
# initialized by a registered initializer, or by "false" if no
# initializer is registered.
- trace variable testConstraints r [namespace code SafeFetch]
+ trace add variable testConstraints read [namespace code SafeFetch]
# Only initialize constraints at package load time if an
# [initConstraintsHook] has been pre-defined. This is only
# for compatibility support. The modern way to add a custom
# test constraint is to just call the [testConstraint] command
# straight away, without all this "hook" nonsense.
- if {[string equal [namespace current] \
- [namespace qualifiers [namespace which initConstraintsHook]]]} {
+ if {[namespace current] eq
+ [namespace qualifiers [namespace which initConstraintsHook]]} {
InitConstraints
} else {
proc initConstraintsHook {} {}
@@ -3326,12 +3345,12 @@ namespace eval tcltest {
Tcl list: $msg"
return
}
- if {[llength $::env(TCLTEST_OPTIONS)] % 2} {
+ if {[llength $options] % 2} {
Warn "invalid TCLTEST_OPTIONS: \"$options\":\n should be\
-option value ?-option value ...?"
return
}
- if {[catch {eval Configure $::env(TCLTEST_OPTIONS)} msg]} {
+ if {[catch {Configure {*}$options} msg]} {
Warn "invalid TCLTEST_OPTIONS: \"$options\":\n $msg"
return
}
@@ -3342,15 +3361,15 @@ namespace eval tcltest {
proc LoadTimeCmdLineArgParsingRequired {} {
set required false
- if {[info exists ::argv] && [lsearch -exact $::argv -help] != -1} {
+ if {[info exists ::argv] && ("-help" in $::argv)} {
# The command line asks for -help, so give it (and exit)
# right now. ([configure] does not process -help)
set required true
}
foreach hook { PrintUsageInfoHook processCmdLineArgsHook
processCmdLineArgsAddFlagsHook } {
- if {[string equal [namespace current] [namespace qualifiers \
- [namespace which $hook]]]} {
+ if {[namespace current] eq
+ [namespace qualifiers [namespace which $hook]]} {
set required true
} else {
proc $hook args {}
diff --git a/library/tm.tcl b/library/tm.tcl
index c5db437..55efda6 100644
--- a/library/tm.tcl
+++ b/library/tm.tcl
@@ -1,48 +1,44 @@
# -*- tcl -*-
#
-# Searching for Tcl Modules. Defines a procedure, declares it as the
-# primary command for finding packages, however also uses the former
-# 'package unknown' command as a fallback.
+# Searching for Tcl Modules. Defines a procedure, declares it as the primary
+# command for finding packages, however also uses the former 'package unknown'
+# command as a fallback.
#
-# Locates all possible packages in a directory via a less restricted
-# glob. The targeted directory is derived from the name of the
-# requested package. I.e. the TM scan will look only at directories
-# which can contain the requested package. It will register all
-# packages it found in the directory so that future requests have a
-# higher chance of being fulfilled by the ifneeded database without
-# having to come to us again.
+# Locates all possible packages in a directory via a less restricted glob. The
+# targeted directory is derived from the name of the requested package, i.e.
+# the TM scan will look only at directories which can contain the requested
+# package. It will register all packages it found in the directory so that
+# future requests have a higher chance of being fulfilled by the ifneeded
+# database without having to come to us again.
#
-# We do not remember where we have been and simply rescan targeted
-# directories when invoked again. The reasoning is this:
+# We do not remember where we have been and simply rescan targeted directories
+# when invoked again. The reasoning is this:
#
-# - The only way we get back to the same directory is if someone is
-# trying to [package require] something that wasn't there on the
-# first scan.
+# - The only way we get back to the same directory is if someone is trying to
+# [package require] something that wasn't there on the first scan.
#
# Either
# 1) It is there now: If we rescan, you get it; if not you don't.
#
-# This covers the possibility that the application asked for a
-# package late, and the package was actually added to the
-# installation after the application was started. It shoukld
-# still be able to find it.
+# This covers the possibility that the application asked for a package
+# late, and the package was actually added to the installation after the
+# application was started. It shoukld still be able to find it.
#
-# 2) It still is not there: Either way, you don't get it, but the
-# rescan takes time. This is however an error case and we dont't
-# care that much about it
+# 2) It still is not there: Either way, you don't get it, but the rescan
+# takes time. This is however an error case and we dont't care that much
+# about it
#
-# 3) It was there the first time; but for some reason a "package
-# forget" has been run, and "package" doesn't know about it
-# anymore.
+# 3) It was there the first time; but for some reason a "package forget" has
+# been run, and "package" doesn't know about it anymore.
#
-# This can be an indication that the application wishes to reload
-# some functionality. And should work as well.
+# This can be an indication that the application wishes to reload some
+# functionality. And should work as well.
#
-# Note that this also strikes a balance between doing a glob targeting
-# a single package, and thus most likely requiring multiple globs of
-# the same directory when the application is asking for many packages,
-# and trying to glob for _everything_ in all subdirectories when
-# looking for a package, which comes with a heavy startup cost.
+# Note that this also strikes a balance between doing a glob targeting a
+# single package, and thus most likely requiring multiple globs of the same
+# directory when the application is asking for many packages, and trying to
+# glob for _everything_ in all subdirectories when looking for a package,
+# which comes with a heavy startup cost.
#
# We scan for regular packages only if no satisfying module was found.
@@ -58,7 +54,7 @@ namespace eval ::tcl::tm {
# Export the public API
namespace export path
- namespace ensemble create -command path -subcommand {add remove list}
+ namespace ensemble create -command path -subcommands {add remove list}
}
# ::tcl::tm::path implementations --
@@ -71,46 +67,43 @@ namespace eval ::tcl::tm {
# path with 'list'.
#
# Results
-# No result for subcommands 'add' and 'remove'. A list of paths
-# for 'list'.
+# No result for subcommands 'add' and 'remove'. A list of paths for
+# 'list'.
#
# Sideeffects
-# The subcommands 'add' and 'remove' manipulate the list of
-# paths to search for Tcl Modules. The subcommand 'list' has no
-# sideeffects.
+# The subcommands 'add' and 'remove' manipulate the list of paths to
+# search for Tcl Modules. The subcommand 'list' has no sideeffects.
-proc ::tcl::tm::add {path args} {
+proc ::tcl::tm::add {args} {
# PART OF THE ::tcl::tm::path ENSEMBLE
#
# The path is added at the head to the list of module paths.
#
- # The command enforces the restriction that no path may be an
- # ancestor directory of any other path on the list. If the new
- # path violates this restriction an error wil be raised.
+ # The command enforces the restriction that no path may be an ancestor
+ # directory of any other path on the list. If the new path violates this
+ # restriction an error wil be raised.
#
- # If the path is already present as is no error will be raised and
- # no action will be taken.
+ # If the path is already present as is no error will be raised and no
+ # action will be taken.
variable paths
- # We use a copy of the path as source during validation, and
- # extend it as well. Because we not only have to detect if the new
- # paths are bogus with respect to the existing paths, but also
- # between themselves. Otherwise we can still add bogus paths, by
- # specifying them in a single call. This makes the use of the new
- # paths simpler as well, a trivial assignment of the collected
- # paths to the official state var.
+ # We use a copy of the path as source during validation, and extend it as
+ # well. Because we not only have to detect if the new paths are bogus with
+ # respect to the existing paths, but also between themselves. Otherwise we
+ # can still add bogus paths, by specifying them in a single call. This
+ # makes the use of the new paths simpler as well, a trivial assignment of
+ # the collected paths to the official state var.
set newpaths $paths
- foreach p [linsert $args 0 $path] {
+ foreach p $args {
if {$p in $newpaths} {
# Ignore a path already on the list.
continue
}
- # Search for paths which are subdirectories of the new one. If
- # there are any then the new path violates the restriction
- # about ancestors.
+ # Search for paths which are subdirectories of the new one. If there
+ # are any then the new path violates the restriction about ancestors.
set pos [lsearch -glob $newpaths ${p}/*]
# Cannot use "in", we need the position for the message.
@@ -119,10 +112,9 @@ proc ::tcl::tm::add {path args} {
"$p is ancestor of existing module path [lindex $newpaths $pos]."
}
- # Now look for existing paths which are ancestors of the new
- # one. This reverse question forces us to loop over the
- # existing paths, as each element is the pattern, not the new
- # path :(
+ # Now look for existing paths which are ancestors of the new one. This
+ # reverse question forces us to loop over the existing paths, as each
+ # element is the pattern, not the new path :(
foreach ep $newpaths {
if {[string match ${ep}/* $p]} {
@@ -134,24 +126,23 @@ proc ::tcl::tm::add {path args} {
set newpaths [linsert $newpaths 0 $p]
}
- # The validation of the input is complete and successful, and
- # everything in newpaths is either an old path, or added. We can
- # now extend the official list of paths, a simple assignment is
- # sufficient.
+ # The validation of the input is complete and successful, and everything
+ # in newpaths is either an old path, or added. We can now extend the
+ # official list of paths, a simple assignment is sufficient.
set paths $newpaths
return
}
-proc ::tcl::tm::remove {path args} {
+proc ::tcl::tm::remove {args} {
# PART OF THE ::tcl::tm::path ENSEMBLE
#
- # Removes the path from the list of module paths. The command is
- # silently ignored if the path is not on the list.
+ # Removes the path from the list of module paths. The command is silently
+ # ignored if the path is not on the list.
variable paths
- foreach p [linsert $args 0 $path] {
+ foreach p $args {
set pos [lsearch -exact $paths $p]
if {$pos >= 0} {
set paths [lreplace $paths $pos $pos]
@@ -177,27 +168,26 @@ proc ::tcl::tm::list {} {
# empty string.
# exact - Either -exact or ommitted.
#
-# Name, version, and exact are used to determine
-# satisfaction. The original is called iff no satisfaction was
-# achieved. The name is also used to compute the directory to
-# target in the search.
+# Name, version, and exact are used to determine satisfaction. The
+# original is called iff no satisfaction was achieved. The name is also
+# used to compute the directory to target in the search.
#
# Results
# None.
#
# Sideeffects
-# May populate the package ifneeded database with additional
-# provide scripts.
+# May populate the package ifneeded database with additional provide
+# scripts.
proc ::tcl::tm::UnknownHandler {original name args} {
# Import the list of paths to search for packages in module form.
- # Import the pattern used to check package names in detail.
+ # Import the pattern used to check package names in detail.
variable paths
variable pkgpattern
- # Without paths to search we can do nothing. (Except falling back
- # to the regular search).
+ # Without paths to search we can do nothing. (Except falling back to the
+ # regular search).
if {[llength $paths]} {
set pkgpath [string map {:: /} $name]
@@ -206,11 +196,10 @@ proc ::tcl::tm::UnknownHandler {original name args} {
set pkgroot ""
}
- # We don't remember a copy of the paths while looping. Tcl
- # Modules are unable to change the list while we are searching
- # for them. This also simplifies the loop, as we cannot get
- # additional directories while iterating over the list. A
- # simple foreach is sufficient.
+ # We don't remember a copy of the paths while looping. Tcl Modules are
+ # unable to change the list while we are searching for them. This also
+ # simplifies the loop, as we cannot get additional directories while
+ # iterating over the list. A simple foreach is sufficient.
set satisfied 0
foreach path $paths {
@@ -223,12 +212,11 @@ proc ::tcl::tm::UnknownHandler {original name args} {
}
set strip [llength [file split $path]]
- # We can't use glob in safe interps, so enclose the following
- # in a catch statement, where we get the module files out
- # of the subdirectories. In other words, Tcl Modules are
- # not-functional in such an interpreter. This is the same
- # as for the command "tclPkgUnknown", i.e. the search for
- # regular packages.
+ # We can't use glob in safe interps, so enclose the following in a
+ # catch statement, where we get the module files out of the
+ # subdirectories. In other words, Tcl Modules are not-functional
+ # in such an interpreter. This is the same as for the command
+ # "tclPkgUnknown", i.e. the search for regular packages.
catch {
# We always look for _all_ possible modules in the current
@@ -238,50 +226,57 @@ proc ::tcl::tm::UnknownHandler {original name args} {
set pkgfilename [join [lrange [file split $file] $strip end] ::]
if {![regexp -- $pkgpattern $pkgfilename --> pkgname pkgversion]} {
- # Ignore everything not matching our pattern
- # for package names.
+ # Ignore everything not matching our pattern for
+ # package names.
continue
}
- if {[catch {package vcompare $pkgversion 0}]} {
- # Ignore everything where the version part is
- # not acceptable to "package vcompare".
+ try {
+ package vcompare $pkgversion 0
+ } on error {} {
+ # Ignore everything where the version part is not
+ # acceptable to "package vcompare".
continue
}
- # We have found a candidate, generate a "provide
- # script" for it, and remember it. Note that we
- # are using ::list to do this; locally [list]
- # means something else without the namespace
- # specifier.
-
- # NOTE. When making changes to the format of the
- # provide command generated below CHECK that the
- # 'LOCATE' procedure in core file
- # 'platform/shell.tcl' still understands it, or,
- # if not, update its implementation appropriately.
+ if {[package ifneeded $pkgname $pkgversion] ne {}} {
+ # There's already a provide script registered for
+ # this version of this package. Since all units of
+ # code claiming to be the same version of the same
+ # package ought to be identical, just stick with
+ # the one we already have.
+ continue
+ }
+
+ # We have found a candidate, generate a "provide script"
+ # for it, and remember it. Note that we are using ::list
+ # to do this; locally [list] means something else without
+ # the namespace specifier.
+
+ # NOTE. When making changes to the format of the provide
+ # command generated below CHECK that the 'LOCATE'
+ # procedure in core file 'platform/shell.tcl' still
+ # understands it, or, if not, update its implementation
+ # appropriately.
#
- # Right now LOCATE's implementation assumes that
- # the path of the package file is the last element
- # in the list.
+ # Right now LOCATE's implementation assumes that the path
+ # of the package file is the last element in the list.
package ifneeded $pkgname $pkgversion \
"[::list package provide $pkgname $pkgversion];[::list source -encoding utf-8 $file]"
- # We abort in this unknown handler only if we got
- # a satisfying candidate for the requested
- # package. Otherwise we still have to fallback to
- # the regular package search to complete the
- # processing.
+ # We abort in this unknown handler only if we got a
+ # satisfying candidate for the requested package.
+ # Otherwise we still have to fallback to the regular
+ # package search to complete the processing.
- if {
- ($pkgname eq $name) &&
- [package vsatisfies $pkgversion {*}$args]
- } then {
+ if {($pkgname eq $name)
+ && [package vsatisfies $pkgversion {*}$args]} {
set satisfied 1
- # We do not abort the loop, and keep adding
- # provide scripts for every candidate in the
- # directory, just remember to not fall back to
- # the regular search anymore.
+
+ # We do not abort the loop, and keep adding provide
+ # scripts for every candidate in the directory, just
+ # remember to not fall back to the regular search
+ # anymore.
}
}
}
@@ -292,8 +287,8 @@ proc ::tcl::tm::UnknownHandler {original name args} {
}
}
- # Fallback to previous command, if existing. See comment above
- # about ::list...
+ # Fallback to previous command, if existing. See comment above about
+ # ::list...
if {[llength $original]} {
uplevel 1 $original [::linsert $args 0 $name]
@@ -359,22 +354,22 @@ proc ::tcl::tm::Defaults {} {
# Calls 'path add' to paths to the list of module search paths.
proc ::tcl::tm::roots {paths} {
- foreach {major minor} [split [info tclversion] .] break
+ lassign [split [package present Tcl] .] major minor
foreach pa $paths {
set p [file join $pa tcl$major]
for {set n $minor} {$n >= 0} {incr n -1} {
set px [file join $p ${major}.${n}]
- if {![interp issafe]} { set px [file normalize $px] }
+ if {![interp issafe]} {set px [file normalize $px]}
path add $px
}
set px [file join $p site-tcl]
- if {![interp issafe]} { set px [file normalize $px] }
+ if {![interp issafe]} {set px [file normalize $px]}
path add $px
}
return
}
-# Initialization. Set up the default paths, then insert the new
-# handler into the chain.
+# Initialization. Set up the default paths, then insert the new handler into
+# the chain.
-if {![interp issafe]} { ::tcl::tm::Defaults }
+if {![interp issafe]} {::tcl::tm::Defaults}
diff --git a/library/tzdata/Africa/Asmara b/library/tzdata/Africa/Asmara
index 1f0f13e..1f0f13e 100755..100644
--- a/library/tzdata/Africa/Asmara
+++ b/library/tzdata/Africa/Asmara
diff --git a/library/tzdata/Africa/Cairo b/library/tzdata/Africa/Cairo
index d812a44..842b7b2 100644
--- a/library/tzdata/Africa/Cairo
+++ b/library/tzdata/Africa/Cairo
@@ -1,8 +1,8 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Africa/Cairo) {
- {-9223372036854775808 7500 0 LMT}
- {-2185409100 7200 0 EET}
+ {-9223372036854775808 7509 0 LMT}
+ {-2185409109 7200 0 EET}
{-929844000 10800 1 EEST}
{-923108400 7200 0 EET}
{-906170400 10800 1 EEST}
@@ -120,185 +120,9 @@ set TZData(:Africa/Cairo) {
{1209074400 10800 1 EEST}
{1219957200 7200 0 EET}
{1240524000 10800 1 EEST}
- {1251406800 7200 0 EET}
+ {1250802000 7200 0 EET}
{1272578400 10800 1 EEST}
- {1282856400 7200 0 EET}
- {1304028000 10800 1 EEST}
- {1314306000 7200 0 EET}
- {1335477600 10800 1 EEST}
- {1346360400 7200 0 EET}
- {1366927200 10800 1 EEST}
- {1377810000 7200 0 EET}
- {1398376800 10800 1 EEST}
- {1409259600 7200 0 EET}
- {1429826400 10800 1 EEST}
- {1440709200 7200 0 EET}
- {1461880800 10800 1 EEST}
- {1472158800 7200 0 EET}
- {1493330400 10800 1 EEST}
- {1504213200 7200 0 EET}
- {1524780000 10800 1 EEST}
- {1535662800 7200 0 EET}
- {1556229600 10800 1 EEST}
- {1567112400 7200 0 EET}
- {1587679200 10800 1 EEST}
- {1598562000 7200 0 EET}
- {1619733600 10800 1 EEST}
- {1630011600 7200 0 EET}
- {1651183200 10800 1 EEST}
- {1661461200 7200 0 EET}
- {1682632800 10800 1 EEST}
- {1693515600 7200 0 EET}
- {1714082400 10800 1 EEST}
- {1724965200 7200 0 EET}
- {1745532000 10800 1 EEST}
- {1756414800 7200 0 EET}
- {1776981600 10800 1 EEST}
- {1787864400 7200 0 EET}
- {1809036000 10800 1 EEST}
- {1819314000 7200 0 EET}
- {1840485600 10800 1 EEST}
- {1851368400 7200 0 EET}
- {1871935200 10800 1 EEST}
- {1882818000 7200 0 EET}
- {1903384800 10800 1 EEST}
- {1914267600 7200 0 EET}
- {1934834400 10800 1 EEST}
- {1945717200 7200 0 EET}
- {1966888800 10800 1 EEST}
- {1977166800 7200 0 EET}
- {1998338400 10800 1 EEST}
- {2008616400 7200 0 EET}
- {2029788000 10800 1 EEST}
- {2040670800 7200 0 EET}
- {2061237600 10800 1 EEST}
- {2072120400 7200 0 EET}
- {2092687200 10800 1 EEST}
- {2103570000 7200 0 EET}
- {2124136800 10800 1 EEST}
- {2135019600 7200 0 EET}
- {2156191200 10800 1 EEST}
- {2166469200 7200 0 EET}
- {2187640800 10800 1 EEST}
- {2197918800 7200 0 EET}
- {2219090400 10800 1 EEST}
- {2229973200 7200 0 EET}
- {2250540000 10800 1 EEST}
- {2261422800 7200 0 EET}
- {2281989600 10800 1 EEST}
- {2292872400 7200 0 EET}
- {2313439200 10800 1 EEST}
- {2324322000 7200 0 EET}
- {2345493600 10800 1 EEST}
- {2355771600 7200 0 EET}
- {2376943200 10800 1 EEST}
- {2387826000 7200 0 EET}
- {2408392800 10800 1 EEST}
- {2419275600 7200 0 EET}
- {2439842400 10800 1 EEST}
- {2450725200 7200 0 EET}
- {2471292000 10800 1 EEST}
- {2482174800 7200 0 EET}
- {2503346400 10800 1 EEST}
- {2513624400 7200 0 EET}
- {2534796000 10800 1 EEST}
- {2545074000 7200 0 EET}
- {2566245600 10800 1 EEST}
- {2577128400 7200 0 EET}
- {2597695200 10800 1 EEST}
- {2608578000 7200 0 EET}
- {2629144800 10800 1 EEST}
- {2640027600 7200 0 EET}
- {2660594400 10800 1 EEST}
- {2671477200 7200 0 EET}
- {2692648800 10800 1 EEST}
- {2702926800 7200 0 EET}
- {2724098400 10800 1 EEST}
- {2734981200 7200 0 EET}
- {2755548000 10800 1 EEST}
- {2766430800 7200 0 EET}
- {2786997600 10800 1 EEST}
- {2797880400 7200 0 EET}
- {2818447200 10800 1 EEST}
- {2829330000 7200 0 EET}
- {2850501600 10800 1 EEST}
- {2860779600 7200 0 EET}
- {2881951200 10800 1 EEST}
- {2892229200 7200 0 EET}
- {2913400800 10800 1 EEST}
- {2924283600 7200 0 EET}
- {2944850400 10800 1 EEST}
- {2955733200 7200 0 EET}
- {2976300000 10800 1 EEST}
- {2987182800 7200 0 EET}
- {3007749600 10800 1 EEST}
- {3018632400 7200 0 EET}
- {3039804000 10800 1 EEST}
- {3050082000 7200 0 EET}
- {3071253600 10800 1 EEST}
- {3081531600 7200 0 EET}
- {3102703200 10800 1 EEST}
- {3113586000 7200 0 EET}
- {3134152800 10800 1 EEST}
- {3145035600 7200 0 EET}
- {3165602400 10800 1 EEST}
- {3176485200 7200 0 EET}
- {3197052000 10800 1 EEST}
- {3207934800 7200 0 EET}
- {3229106400 10800 1 EEST}
- {3239384400 7200 0 EET}
- {3260556000 10800 1 EEST}
- {3271438800 7200 0 EET}
- {3292005600 10800 1 EEST}
- {3302888400 7200 0 EET}
- {3323455200 10800 1 EEST}
- {3334338000 7200 0 EET}
- {3354904800 10800 1 EEST}
- {3365787600 7200 0 EET}
- {3386959200 10800 1 EEST}
- {3397237200 7200 0 EET}
- {3418408800 10800 1 EEST}
- {3428686800 7200 0 EET}
- {3449858400 10800 1 EEST}
- {3460741200 7200 0 EET}
- {3481308000 10800 1 EEST}
- {3492190800 7200 0 EET}
- {3512757600 10800 1 EEST}
- {3523640400 7200 0 EET}
- {3544207200 10800 1 EEST}
- {3555090000 7200 0 EET}
- {3576261600 10800 1 EEST}
- {3586539600 7200 0 EET}
- {3607711200 10800 1 EEST}
- {3618594000 7200 0 EET}
- {3639160800 10800 1 EEST}
- {3650043600 7200 0 EET}
- {3670610400 10800 1 EEST}
- {3681493200 7200 0 EET}
- {3702060000 10800 1 EEST}
- {3712942800 7200 0 EET}
- {3734114400 10800 1 EEST}
- {3744392400 7200 0 EET}
- {3765564000 10800 1 EEST}
- {3775842000 7200 0 EET}
- {3797013600 10800 1 EEST}
- {3807896400 7200 0 EET}
- {3828463200 10800 1 EEST}
- {3839346000 7200 0 EET}
- {3859912800 10800 1 EEST}
- {3870795600 7200 0 EET}
- {3891362400 10800 1 EEST}
- {3902245200 7200 0 EET}
- {3923416800 10800 1 EEST}
- {3933694800 7200 0 EET}
- {3954866400 10800 1 EEST}
- {3965144400 7200 0 EET}
- {3986316000 10800 1 EEST}
- {3997198800 7200 0 EET}
- {4017765600 10800 1 EEST}
- {4028648400 7200 0 EET}
- {4049215200 10800 1 EEST}
- {4060098000 7200 0 EET}
- {4080664800 10800 1 EEST}
- {4091547600 7200 0 EET}
+ {1281474000 7200 0 EET}
+ {1284069600 10800 1 EEST}
+ {1285880400 7200 0 EET}
}
diff --git a/library/tzdata/Africa/Casablanca b/library/tzdata/Africa/Casablanca
index da64c44..dec2778 100644
--- a/library/tzdata/Africa/Casablanca
+++ b/library/tzdata/Africa/Casablanca
@@ -23,4 +23,146 @@ set TZData(:Africa/Casablanca) {
{504918000 0 0 WET}
{1212278400 3600 1 WEST}
{1220223600 0 0 WET}
+ {1243814400 3600 1 WEST}
+ {1250809200 0 0 WET}
+ {1272758400 3600 1 WEST}
+ {1281222000 0 0 WET}
+ {1301788800 3600 1 WEST}
+ {1312066800 0 0 WET}
+ {1335664800 3600 1 WEST}
+ {1342749600 0 0 WET}
+ {1345428000 3600 1 WEST}
+ {1348970400 0 0 WET}
+ {1367114400 3600 1 WEST}
+ {1373162400 0 0 WET}
+ {1376100000 3600 1 WEST}
+ {1382839200 0 0 WET}
+ {1396144800 3600 1 WEST}
+ {1404007200 0 0 WET}
+ {1406599200 3600 1 WEST}
+ {1414288800 0 0 WET}
+ {1427594400 3600 1 WEST}
+ {1434592800 0 0 WET}
+ {1437184800 3600 1 WEST}
+ {1445738400 0 0 WET}
+ {1459044000 3600 1 WEST}
+ {1465264800 0 0 WET}
+ {1467856800 3600 1 WEST}
+ {1477792800 0 0 WET}
+ {1490493600 3600 1 WEST}
+ {1495850400 0 0 WET}
+ {1498442400 3600 1 WEST}
+ {1509242400 0 0 WET}
+ {1521943200 3600 1 WEST}
+ {1526436000 0 0 WET}
+ {1529028000 3600 1 WEST}
+ {1540692000 0 0 WET}
+ {1553997600 3600 1 WEST}
+ {1557108000 0 0 WET}
+ {1559700000 3600 1 WEST}
+ {1572141600 0 0 WET}
+ {1585447200 3600 1 WEST}
+ {1587693600 0 0 WET}
+ {1590285600 3600 1 WEST}
+ {1603591200 0 0 WET}
+ {1616896800 3600 1 WEST}
+ {1618279200 0 0 WET}
+ {1620871200 3600 1 WEST}
+ {1635645600 0 0 WET}
+ {1648346400 3600 1 WEST}
+ {1648951200 0 0 WET}
+ {1651543200 3600 1 WEST}
+ {1667095200 0 0 WET}
+ {1682128800 3600 1 WEST}
+ {1698544800 0 0 WET}
+ {1712714400 3600 1 WEST}
+ {1729994400 0 0 WET}
+ {1743386400 3600 1 WEST}
+ {1761444000 0 0 WET}
+ {1774749600 3600 1 WEST}
+ {1792893600 0 0 WET}
+ {1806199200 3600 1 WEST}
+ {1824948000 0 0 WET}
+ {1837648800 3600 1 WEST}
+ {1856397600 0 0 WET}
+ {1869098400 3600 1 WEST}
+ {1887847200 0 0 WET}
+ {1901152800 3600 1 WEST}
+ {1919296800 0 0 WET}
+ {1932602400 3600 1 WEST}
+ {1950746400 0 0 WET}
+ {1964052000 3600 1 WEST}
+ {1982800800 0 0 WET}
+ {1995501600 3600 1 WEST}
+ {2014250400 0 0 WET}
+ {2026951200 3600 1 WEST}
+ {2045700000 0 0 WET}
+ {2058400800 3600 1 WEST}
+ {2077149600 0 0 WET}
+ {2090455200 3600 1 WEST}
+ {2108167200 0 0 WET}
+ {2121904800 3600 1 WEST}
+ {2138839200 0 0 WET}
+ {2153354400 3600 1 WEST}
+ {2184800400 3600 1 WEST}
+ {2216250000 3600 1 WEST}
+ {2248304400 3600 1 WEST}
+ {2279754000 3600 1 WEST}
+ {2311203600 3600 1 WEST}
+ {2342653200 3600 1 WEST}
+ {2374102800 3600 1 WEST}
+ {2405552400 3600 1 WEST}
+ {2437606800 3600 1 WEST}
+ {2469056400 3600 1 WEST}
+ {2500506000 3600 1 WEST}
+ {2531955600 3600 1 WEST}
+ {2563405200 3600 1 WEST}
+ {2595459600 3600 1 WEST}
+ {2626909200 3600 1 WEST}
+ {2658358800 3600 1 WEST}
+ {2689808400 3600 1 WEST}
+ {2721258000 3600 1 WEST}
+ {2752707600 3600 1 WEST}
+ {2784762000 3600 1 WEST}
+ {2816211600 3600 1 WEST}
+ {2847661200 3600 1 WEST}
+ {2879110800 3600 1 WEST}
+ {2910560400 3600 1 WEST}
+ {2942010000 3600 1 WEST}
+ {2974064400 3600 1 WEST}
+ {3005514000 3600 1 WEST}
+ {3036963600 3600 1 WEST}
+ {3068413200 3600 1 WEST}
+ {3099862800 3600 1 WEST}
+ {3131917200 3600 1 WEST}
+ {3163366800 3600 1 WEST}
+ {3194816400 3600 1 WEST}
+ {3226266000 3600 1 WEST}
+ {3257715600 3600 1 WEST}
+ {3289165200 3600 1 WEST}
+ {3321219600 3600 1 WEST}
+ {3352669200 3600 1 WEST}
+ {3384118800 3600 1 WEST}
+ {3415568400 3600 1 WEST}
+ {3447018000 3600 1 WEST}
+ {3479072400 3600 1 WEST}
+ {3510522000 3600 1 WEST}
+ {3541971600 3600 1 WEST}
+ {3573421200 3600 1 WEST}
+ {3604870800 3600 1 WEST}
+ {3636320400 3600 1 WEST}
+ {3668374800 3600 1 WEST}
+ {3699824400 3600 1 WEST}
+ {3731274000 3600 1 WEST}
+ {3762723600 3600 1 WEST}
+ {3794173200 3600 1 WEST}
+ {3825622800 3600 1 WEST}
+ {3857677200 3600 1 WEST}
+ {3889126800 3600 1 WEST}
+ {3920576400 3600 1 WEST}
+ {3952026000 3600 1 WEST}
+ {3983475600 3600 1 WEST}
+ {4015530000 3600 1 WEST}
+ {4046979600 3600 1 WEST}
+ {4078429200 3600 1 WEST}
}
diff --git a/library/tzdata/Africa/Dar_es_Salaam b/library/tzdata/Africa/Dar_es_Salaam
index e427b9c..98151ec 100644
--- a/library/tzdata/Africa/Dar_es_Salaam
+++ b/library/tzdata/Africa/Dar_es_Salaam
@@ -3,6 +3,6 @@
set TZData(:Africa/Dar_es_Salaam) {
{-9223372036854775808 9428 0 LMT}
{-1230777428 10800 0 EAT}
- {-694321200 9885 0 BEAUT}
- {-284006685 10800 0 EAT}
+ {-694321200 9900 0 BEAUT}
+ {-284006700 10800 0 EAT}
}
diff --git a/library/tzdata/Africa/Gaborone b/library/tzdata/Africa/Gaborone
index 7753ba0..bd38673 100644
--- a/library/tzdata/Africa/Gaborone
+++ b/library/tzdata/Africa/Gaborone
@@ -2,7 +2,8 @@
set TZData(:Africa/Gaborone) {
{-9223372036854775808 6220 0 LMT}
- {-2682294220 7200 0 CAT}
+ {-2682294220 5400 0 SAST}
+ {-2109288600 7200 0 CAT}
{-829526400 10800 1 CAST}
{-813805200 7200 0 CAT}
}
diff --git a/library/tzdata/Africa/Juba b/library/tzdata/Africa/Juba
new file mode 100644
index 0000000..40551f2
--- /dev/null
+++ b/library/tzdata/Africa/Juba
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Africa/Khartoum)]} {
+ LoadTimeZoneFile Africa/Khartoum
+}
+set TZData(:Africa/Juba) $TZData(:Africa/Khartoum)
diff --git a/library/tzdata/Africa/Kampala b/library/tzdata/Africa/Kampala
index ab3f085..4cc9be1 100644
--- a/library/tzdata/Africa/Kampala
+++ b/library/tzdata/Africa/Kampala
@@ -4,6 +4,6 @@ set TZData(:Africa/Kampala) {
{-9223372036854775808 7780 0 LMT}
{-1309745380 10800 0 EAT}
{-1262314800 9000 0 BEAT}
- {-694319400 9885 0 BEAUT}
- {-410237085 10800 0 EAT}
+ {-694319400 9900 0 BEAUT}
+ {-410237100 10800 0 EAT}
}
diff --git a/library/tzdata/Africa/Nairobi b/library/tzdata/Africa/Nairobi
index 99b0d70..6846069 100644
--- a/library/tzdata/Africa/Nairobi
+++ b/library/tzdata/Africa/Nairobi
@@ -4,6 +4,6 @@ set TZData(:Africa/Nairobi) {
{-9223372036854775808 8836 0 LMT}
{-1309746436 10800 0 EAT}
{-1262314800 9000 0 BEAT}
- {-946780200 9885 0 BEAUT}
- {-315629085 10800 0 EAT}
+ {-946780200 9900 0 BEAUT}
+ {-315629100 10800 0 EAT}
}
diff --git a/library/tzdata/Africa/Tripoli b/library/tzdata/Africa/Tripoli
index e993249..ac78218 100644
--- a/library/tzdata/Africa/Tripoli
+++ b/library/tzdata/Africa/Tripoli
@@ -27,5 +27,180 @@ set TZData(:Africa/Tripoli) {
{641775600 7200 0 EET}
{844034400 3600 0 CET}
{860108400 7200 1 CEST}
- {875916000 7200 0 EET}
+ {875919600 7200 0 EET}
+ {1352505600 3600 0 CET}
+ {1364515200 7200 1 CEST}
+ {1382659200 3600 0 CET}
+ {1395964800 7200 1 CEST}
+ {1414713600 3600 0 CET}
+ {1427414400 7200 1 CEST}
+ {1446163200 3600 0 CET}
+ {1458864000 7200 1 CEST}
+ {1477612800 3600 0 CET}
+ {1490918400 7200 1 CEST}
+ {1509062400 3600 0 CET}
+ {1522368000 7200 1 CEST}
+ {1540512000 3600 0 CET}
+ {1553817600 7200 1 CEST}
+ {1571961600 3600 0 CET}
+ {1585267200 7200 1 CEST}
+ {1604016000 3600 0 CET}
+ {1616716800 7200 1 CEST}
+ {1635465600 3600 0 CET}
+ {1648166400 7200 1 CEST}
+ {1666915200 3600 0 CET}
+ {1680220800 7200 1 CEST}
+ {1698364800 3600 0 CET}
+ {1711670400 7200 1 CEST}
+ {1729814400 3600 0 CET}
+ {1743120000 7200 1 CEST}
+ {1761868800 3600 0 CET}
+ {1774569600 7200 1 CEST}
+ {1793318400 3600 0 CET}
+ {1806019200 7200 1 CEST}
+ {1824768000 3600 0 CET}
+ {1838073600 7200 1 CEST}
+ {1856217600 3600 0 CET}
+ {1869523200 7200 1 CEST}
+ {1887667200 3600 0 CET}
+ {1900972800 7200 1 CEST}
+ {1919116800 3600 0 CET}
+ {1932422400 7200 1 CEST}
+ {1951171200 3600 0 CET}
+ {1963872000 7200 1 CEST}
+ {1982620800 3600 0 CET}
+ {1995321600 7200 1 CEST}
+ {2014070400 3600 0 CET}
+ {2027376000 7200 1 CEST}
+ {2045520000 3600 0 CET}
+ {2058825600 7200 1 CEST}
+ {2076969600 3600 0 CET}
+ {2090275200 7200 1 CEST}
+ {2109024000 3600 0 CET}
+ {2121724800 7200 1 CEST}
+ {2140473600 3600 0 CET}
+ {2153174400 7200 1 CEST}
+ {2171923200 3600 0 CET}
+ {2184624000 7200 1 CEST}
+ {2203372800 3600 0 CET}
+ {2216678400 7200 1 CEST}
+ {2234822400 3600 0 CET}
+ {2248128000 7200 1 CEST}
+ {2266272000 3600 0 CET}
+ {2279577600 7200 1 CEST}
+ {2298326400 3600 0 CET}
+ {2311027200 7200 1 CEST}
+ {2329776000 3600 0 CET}
+ {2342476800 7200 1 CEST}
+ {2361225600 3600 0 CET}
+ {2374531200 7200 1 CEST}
+ {2392675200 3600 0 CET}
+ {2405980800 7200 1 CEST}
+ {2424124800 3600 0 CET}
+ {2437430400 7200 1 CEST}
+ {2455574400 3600 0 CET}
+ {2468880000 7200 1 CEST}
+ {2487628800 3600 0 CET}
+ {2500329600 7200 1 CEST}
+ {2519078400 3600 0 CET}
+ {2531779200 7200 1 CEST}
+ {2550528000 3600 0 CET}
+ {2563833600 7200 1 CEST}
+ {2581977600 3600 0 CET}
+ {2595283200 7200 1 CEST}
+ {2613427200 3600 0 CET}
+ {2626732800 7200 1 CEST}
+ {2645481600 3600 0 CET}
+ {2658182400 7200 1 CEST}
+ {2676931200 3600 0 CET}
+ {2689632000 7200 1 CEST}
+ {2708380800 3600 0 CET}
+ {2721686400 7200 1 CEST}
+ {2739830400 3600 0 CET}
+ {2753136000 7200 1 CEST}
+ {2771280000 3600 0 CET}
+ {2784585600 7200 1 CEST}
+ {2802729600 3600 0 CET}
+ {2816035200 7200 1 CEST}
+ {2834784000 3600 0 CET}
+ {2847484800 7200 1 CEST}
+ {2866233600 3600 0 CET}
+ {2878934400 7200 1 CEST}
+ {2897683200 3600 0 CET}
+ {2910988800 7200 1 CEST}
+ {2929132800 3600 0 CET}
+ {2942438400 7200 1 CEST}
+ {2960582400 3600 0 CET}
+ {2973888000 7200 1 CEST}
+ {2992636800 3600 0 CET}
+ {3005337600 7200 1 CEST}
+ {3024086400 3600 0 CET}
+ {3036787200 7200 1 CEST}
+ {3055536000 3600 0 CET}
+ {3068236800 7200 1 CEST}
+ {3086985600 3600 0 CET}
+ {3100291200 7200 1 CEST}
+ {3118435200 3600 0 CET}
+ {3131740800 7200 1 CEST}
+ {3149884800 3600 0 CET}
+ {3163190400 7200 1 CEST}
+ {3181939200 3600 0 CET}
+ {3194640000 7200 1 CEST}
+ {3213388800 3600 0 CET}
+ {3226089600 7200 1 CEST}
+ {3244838400 3600 0 CET}
+ {3258144000 7200 1 CEST}
+ {3276288000 3600 0 CET}
+ {3289593600 7200 1 CEST}
+ {3307737600 3600 0 CET}
+ {3321043200 7200 1 CEST}
+ {3339187200 3600 0 CET}
+ {3352492800 7200 1 CEST}
+ {3371241600 3600 0 CET}
+ {3383942400 7200 1 CEST}
+ {3402691200 3600 0 CET}
+ {3415392000 7200 1 CEST}
+ {3434140800 3600 0 CET}
+ {3447446400 7200 1 CEST}
+ {3465590400 3600 0 CET}
+ {3478896000 7200 1 CEST}
+ {3497040000 3600 0 CET}
+ {3510345600 7200 1 CEST}
+ {3529094400 3600 0 CET}
+ {3541795200 7200 1 CEST}
+ {3560544000 3600 0 CET}
+ {3573244800 7200 1 CEST}
+ {3591993600 3600 0 CET}
+ {3605299200 7200 1 CEST}
+ {3623443200 3600 0 CET}
+ {3636748800 7200 1 CEST}
+ {3654892800 3600 0 CET}
+ {3668198400 7200 1 CEST}
+ {3686342400 3600 0 CET}
+ {3699648000 7200 1 CEST}
+ {3718396800 3600 0 CET}
+ {3731097600 7200 1 CEST}
+ {3749846400 3600 0 CET}
+ {3762547200 7200 1 CEST}
+ {3781296000 3600 0 CET}
+ {3794601600 7200 1 CEST}
+ {3812745600 3600 0 CET}
+ {3826051200 7200 1 CEST}
+ {3844195200 3600 0 CET}
+ {3857500800 7200 1 CEST}
+ {3876249600 3600 0 CET}
+ {3888950400 7200 1 CEST}
+ {3907699200 3600 0 CET}
+ {3920400000 7200 1 CEST}
+ {3939148800 3600 0 CET}
+ {3951849600 7200 1 CEST}
+ {3970598400 3600 0 CET}
+ {3983904000 7200 1 CEST}
+ {4002048000 3600 0 CET}
+ {4015353600 7200 1 CEST}
+ {4033497600 3600 0 CET}
+ {4046803200 7200 1 CEST}
+ {4065552000 3600 0 CET}
+ {4078252800 7200 1 CEST}
+ {4097001600 3600 0 CET}
}
diff --git a/library/tzdata/Africa/Tunis b/library/tzdata/Africa/Tunis
index 8fdb11b..0c1db4d 100644
--- a/library/tzdata/Africa/Tunis
+++ b/library/tzdata/Africa/Tunis
@@ -36,186 +36,4 @@ set TZData(:Africa/Tunis) {
{1193533200 3600 0 CET}
{1206838800 7200 1 CEST}
{1224982800 3600 0 CET}
- {1238288400 7200 1 CEST}
- {1256432400 3600 0 CET}
- {1269738000 7200 1 CEST}
- {1288486800 3600 0 CET}
- {1301187600 7200 1 CEST}
- {1319936400 3600 0 CET}
- {1332637200 7200 1 CEST}
- {1351386000 3600 0 CET}
- {1364691600 7200 1 CEST}
- {1382835600 3600 0 CET}
- {1396141200 7200 1 CEST}
- {1414285200 3600 0 CET}
- {1427590800 7200 1 CEST}
- {1445734800 3600 0 CET}
- {1459040400 7200 1 CEST}
- {1477789200 3600 0 CET}
- {1490490000 7200 1 CEST}
- {1509238800 3600 0 CET}
- {1521939600 7200 1 CEST}
- {1540688400 3600 0 CET}
- {1553994000 7200 1 CEST}
- {1572138000 3600 0 CET}
- {1585443600 7200 1 CEST}
- {1603587600 3600 0 CET}
- {1616893200 7200 1 CEST}
- {1635642000 3600 0 CET}
- {1648342800 7200 1 CEST}
- {1667091600 3600 0 CET}
- {1679792400 7200 1 CEST}
- {1698541200 3600 0 CET}
- {1711846800 7200 1 CEST}
- {1729990800 3600 0 CET}
- {1743296400 7200 1 CEST}
- {1761440400 3600 0 CET}
- {1774746000 7200 1 CEST}
- {1792890000 3600 0 CET}
- {1806195600 7200 1 CEST}
- {1824944400 3600 0 CET}
- {1837645200 7200 1 CEST}
- {1856394000 3600 0 CET}
- {1869094800 7200 1 CEST}
- {1887843600 3600 0 CET}
- {1901149200 7200 1 CEST}
- {1919293200 3600 0 CET}
- {1932598800 7200 1 CEST}
- {1950742800 3600 0 CET}
- {1964048400 7200 1 CEST}
- {1982797200 3600 0 CET}
- {1995498000 7200 1 CEST}
- {2014246800 3600 0 CET}
- {2026947600 7200 1 CEST}
- {2045696400 3600 0 CET}
- {2058397200 7200 1 CEST}
- {2077146000 3600 0 CET}
- {2090451600 7200 1 CEST}
- {2108595600 3600 0 CET}
- {2121901200 7200 1 CEST}
- {2140045200 3600 0 CET}
- {2153350800 7200 1 CEST}
- {2172099600 3600 0 CET}
- {2184800400 7200 1 CEST}
- {2203549200 3600 0 CET}
- {2216250000 7200 1 CEST}
- {2234998800 3600 0 CET}
- {2248304400 7200 1 CEST}
- {2266448400 3600 0 CET}
- {2279754000 7200 1 CEST}
- {2297898000 3600 0 CET}
- {2311203600 7200 1 CEST}
- {2329347600 3600 0 CET}
- {2342653200 7200 1 CEST}
- {2361402000 3600 0 CET}
- {2374102800 7200 1 CEST}
- {2392851600 3600 0 CET}
- {2405552400 7200 1 CEST}
- {2424301200 3600 0 CET}
- {2437606800 7200 1 CEST}
- {2455750800 3600 0 CET}
- {2469056400 7200 1 CEST}
- {2487200400 3600 0 CET}
- {2500506000 7200 1 CEST}
- {2519254800 3600 0 CET}
- {2531955600 7200 1 CEST}
- {2550704400 3600 0 CET}
- {2563405200 7200 1 CEST}
- {2582154000 3600 0 CET}
- {2595459600 7200 1 CEST}
- {2613603600 3600 0 CET}
- {2626909200 7200 1 CEST}
- {2645053200 3600 0 CET}
- {2658358800 7200 1 CEST}
- {2676502800 3600 0 CET}
- {2689808400 7200 1 CEST}
- {2708557200 3600 0 CET}
- {2721258000 7200 1 CEST}
- {2740006800 3600 0 CET}
- {2752707600 7200 1 CEST}
- {2771456400 3600 0 CET}
- {2784762000 7200 1 CEST}
- {2802906000 3600 0 CET}
- {2816211600 7200 1 CEST}
- {2834355600 3600 0 CET}
- {2847661200 7200 1 CEST}
- {2866410000 3600 0 CET}
- {2879110800 7200 1 CEST}
- {2897859600 3600 0 CET}
- {2910560400 7200 1 CEST}
- {2929309200 3600 0 CET}
- {2942010000 7200 1 CEST}
- {2960758800 3600 0 CET}
- {2974064400 7200 1 CEST}
- {2992208400 3600 0 CET}
- {3005514000 7200 1 CEST}
- {3023658000 3600 0 CET}
- {3036963600 7200 1 CEST}
- {3055712400 3600 0 CET}
- {3068413200 7200 1 CEST}
- {3087162000 3600 0 CET}
- {3099862800 7200 1 CEST}
- {3118611600 3600 0 CET}
- {3131917200 7200 1 CEST}
- {3150061200 3600 0 CET}
- {3163366800 7200 1 CEST}
- {3181510800 3600 0 CET}
- {3194816400 7200 1 CEST}
- {3212960400 3600 0 CET}
- {3226266000 7200 1 CEST}
- {3245014800 3600 0 CET}
- {3257715600 7200 1 CEST}
- {3276464400 3600 0 CET}
- {3289165200 7200 1 CEST}
- {3307914000 3600 0 CET}
- {3321219600 7200 1 CEST}
- {3339363600 3600 0 CET}
- {3352669200 7200 1 CEST}
- {3370813200 3600 0 CET}
- {3384118800 7200 1 CEST}
- {3402867600 3600 0 CET}
- {3415568400 7200 1 CEST}
- {3434317200 3600 0 CET}
- {3447018000 7200 1 CEST}
- {3465766800 3600 0 CET}
- {3479072400 7200 1 CEST}
- {3497216400 3600 0 CET}
- {3510522000 7200 1 CEST}
- {3528666000 3600 0 CET}
- {3541971600 7200 1 CEST}
- {3560115600 3600 0 CET}
- {3573421200 7200 1 CEST}
- {3592170000 3600 0 CET}
- {3604870800 7200 1 CEST}
- {3623619600 3600 0 CET}
- {3636320400 7200 1 CEST}
- {3655069200 3600 0 CET}
- {3668374800 7200 1 CEST}
- {3686518800 3600 0 CET}
- {3699824400 7200 1 CEST}
- {3717968400 3600 0 CET}
- {3731274000 7200 1 CEST}
- {3750022800 3600 0 CET}
- {3762723600 7200 1 CEST}
- {3781472400 3600 0 CET}
- {3794173200 7200 1 CEST}
- {3812922000 3600 0 CET}
- {3825622800 7200 1 CEST}
- {3844371600 3600 0 CET}
- {3857677200 7200 1 CEST}
- {3875821200 3600 0 CET}
- {3889126800 7200 1 CEST}
- {3907270800 3600 0 CET}
- {3920576400 7200 1 CEST}
- {3939325200 3600 0 CET}
- {3952026000 7200 1 CEST}
- {3970774800 3600 0 CET}
- {3983475600 7200 1 CEST}
- {4002224400 3600 0 CET}
- {4015530000 7200 1 CEST}
- {4033674000 3600 0 CET}
- {4046979600 7200 1 CEST}
- {4065123600 3600 0 CET}
- {4078429200 7200 1 CEST}
- {4096573200 3600 0 CET}
}
diff --git a/library/tzdata/America/Anguilla b/library/tzdata/America/Anguilla
index cfe7483..39a0d18 100644
--- a/library/tzdata/America/Anguilla
+++ b/library/tzdata/America/Anguilla
@@ -1,6 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/Anguilla) {
- {-9223372036854775808 -15136 0 LMT}
- {-1825098464 -14400 0 AST}
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
}
+set TZData(:America/Anguilla) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Araguaina b/library/tzdata/America/Araguaina
index 5073c56..e4a0d52 100644
--- a/library/tzdata/America/Araguaina
+++ b/library/tzdata/America/Araguaina
@@ -54,4 +54,7 @@ set TZData(:America/Araguaina) {
{1036292400 -7200 1 BRST}
{1045360800 -10800 0 BRT}
{1064368800 -10800 0 BRT}
+ {1350788400 -7200 0 BRST}
+ {1361066400 -10800 0 BRT}
+ {1378000800 -10800 0 BRT}
}
diff --git a/library/tzdata/America/Argentina/Buenos_Aires b/library/tzdata/America/Argentina/Buenos_Aires
index beccff3..73cc8e9 100644
--- a/library/tzdata/America/Argentina/Buenos_Aires
+++ b/library/tzdata/America/Argentina/Buenos_Aires
@@ -64,185 +64,4 @@ set TZData(:America/Argentina/Buenos_Aires) {
{1205632800 -10800 0 ART}
{1224385200 -7200 1 ARST}
{1237082400 -10800 0 ART}
- {1255834800 -7200 1 ARST}
- {1269136800 -10800 0 ART}
- {1287284400 -7200 1 ARST}
- {1300586400 -10800 0 ART}
- {1318734000 -7200 1 ARST}
- {1332036000 -10800 0 ART}
- {1350788400 -7200 1 ARST}
- {1363485600 -10800 0 ART}
- {1382238000 -7200 1 ARST}
- {1394935200 -10800 0 ART}
- {1413687600 -7200 1 ARST}
- {1426384800 -10800 0 ART}
- {1445137200 -7200 1 ARST}
- {1458439200 -10800 0 ART}
- {1476586800 -7200 1 ARST}
- {1489888800 -10800 0 ART}
- {1508036400 -7200 1 ARST}
- {1521338400 -10800 0 ART}
- {1540090800 -7200 1 ARST}
- {1552788000 -10800 0 ART}
- {1571540400 -7200 1 ARST}
- {1584237600 -10800 0 ART}
- {1602990000 -7200 1 ARST}
- {1616292000 -10800 0 ART}
- {1634439600 -7200 1 ARST}
- {1647741600 -10800 0 ART}
- {1665889200 -7200 1 ARST}
- {1679191200 -10800 0 ART}
- {1697338800 -7200 1 ARST}
- {1710640800 -10800 0 ART}
- {1729393200 -7200 1 ARST}
- {1742090400 -10800 0 ART}
- {1760842800 -7200 1 ARST}
- {1773540000 -10800 0 ART}
- {1792292400 -7200 1 ARST}
- {1805594400 -10800 0 ART}
- {1823742000 -7200 1 ARST}
- {1837044000 -10800 0 ART}
- {1855191600 -7200 1 ARST}
- {1868493600 -10800 0 ART}
- {1887246000 -7200 1 ARST}
- {1899943200 -10800 0 ART}
- {1918695600 -7200 1 ARST}
- {1931392800 -10800 0 ART}
- {1950145200 -7200 1 ARST}
- {1963447200 -10800 0 ART}
- {1981594800 -7200 1 ARST}
- {1994896800 -10800 0 ART}
- {2013044400 -7200 1 ARST}
- {2026346400 -10800 0 ART}
- {2044494000 -7200 1 ARST}
- {2057796000 -10800 0 ART}
- {2076548400 -7200 1 ARST}
- {2089245600 -10800 0 ART}
- {2107998000 -7200 1 ARST}
- {2120695200 -10800 0 ART}
- {2139447600 -7200 1 ARST}
- {2152749600 -10800 0 ART}
- {2170897200 -7200 1 ARST}
- {2184199200 -10800 0 ART}
- {2202346800 -7200 1 ARST}
- {2215648800 -10800 0 ART}
- {2234401200 -7200 1 ARST}
- {2247098400 -10800 0 ART}
- {2265850800 -7200 1 ARST}
- {2278548000 -10800 0 ART}
- {2297300400 -7200 1 ARST}
- {2309997600 -10800 0 ART}
- {2328750000 -7200 1 ARST}
- {2342052000 -10800 0 ART}
- {2360199600 -7200 1 ARST}
- {2373501600 -10800 0 ART}
- {2391649200 -7200 1 ARST}
- {2404951200 -10800 0 ART}
- {2423703600 -7200 1 ARST}
- {2436400800 -10800 0 ART}
- {2455153200 -7200 1 ARST}
- {2467850400 -10800 0 ART}
- {2486602800 -7200 1 ARST}
- {2499904800 -10800 0 ART}
- {2518052400 -7200 1 ARST}
- {2531354400 -10800 0 ART}
- {2549502000 -7200 1 ARST}
- {2562804000 -10800 0 ART}
- {2580951600 -7200 1 ARST}
- {2594253600 -10800 0 ART}
- {2613006000 -7200 1 ARST}
- {2625703200 -10800 0 ART}
- {2644455600 -7200 1 ARST}
- {2657152800 -10800 0 ART}
- {2675905200 -7200 1 ARST}
- {2689207200 -10800 0 ART}
- {2707354800 -7200 1 ARST}
- {2720656800 -10800 0 ART}
- {2738804400 -7200 1 ARST}
- {2752106400 -10800 0 ART}
- {2770858800 -7200 1 ARST}
- {2783556000 -10800 0 ART}
- {2802308400 -7200 1 ARST}
- {2815005600 -10800 0 ART}
- {2833758000 -7200 1 ARST}
- {2847060000 -10800 0 ART}
- {2865207600 -7200 1 ARST}
- {2878509600 -10800 0 ART}
- {2896657200 -7200 1 ARST}
- {2909959200 -10800 0 ART}
- {2928106800 -7200 1 ARST}
- {2941408800 -10800 0 ART}
- {2960161200 -7200 1 ARST}
- {2972858400 -10800 0 ART}
- {2991610800 -7200 1 ARST}
- {3004308000 -10800 0 ART}
- {3023060400 -7200 1 ARST}
- {3036362400 -10800 0 ART}
- {3054510000 -7200 1 ARST}
- {3067812000 -10800 0 ART}
- {3085959600 -7200 1 ARST}
- {3099261600 -10800 0 ART}
- {3118014000 -7200 1 ARST}
- {3130711200 -10800 0 ART}
- {3149463600 -7200 1 ARST}
- {3162160800 -10800 0 ART}
- {3180913200 -7200 1 ARST}
- {3193610400 -10800 0 ART}
- {3212362800 -7200 1 ARST}
- {3225664800 -10800 0 ART}
- {3243812400 -7200 1 ARST}
- {3257114400 -10800 0 ART}
- {3275262000 -7200 1 ARST}
- {3288564000 -10800 0 ART}
- {3307316400 -7200 1 ARST}
- {3320013600 -10800 0 ART}
- {3338766000 -7200 1 ARST}
- {3351463200 -10800 0 ART}
- {3370215600 -7200 1 ARST}
- {3383517600 -10800 0 ART}
- {3401665200 -7200 1 ARST}
- {3414967200 -10800 0 ART}
- {3433114800 -7200 1 ARST}
- {3446416800 -10800 0 ART}
- {3464564400 -7200 1 ARST}
- {3477866400 -10800 0 ART}
- {3496618800 -7200 1 ARST}
- {3509316000 -10800 0 ART}
- {3528068400 -7200 1 ARST}
- {3540765600 -10800 0 ART}
- {3559518000 -7200 1 ARST}
- {3572820000 -10800 0 ART}
- {3590967600 -7200 1 ARST}
- {3604269600 -10800 0 ART}
- {3622417200 -7200 1 ARST}
- {3635719200 -10800 0 ART}
- {3654471600 -7200 1 ARST}
- {3667168800 -10800 0 ART}
- {3685921200 -7200 1 ARST}
- {3698618400 -10800 0 ART}
- {3717370800 -7200 1 ARST}
- {3730672800 -10800 0 ART}
- {3748820400 -7200 1 ARST}
- {3762122400 -10800 0 ART}
- {3780270000 -7200 1 ARST}
- {3793572000 -10800 0 ART}
- {3811719600 -7200 1 ARST}
- {3825021600 -10800 0 ART}
- {3843774000 -7200 1 ARST}
- {3856471200 -10800 0 ART}
- {3875223600 -7200 1 ARST}
- {3887920800 -10800 0 ART}
- {3906673200 -7200 1 ARST}
- {3919975200 -10800 0 ART}
- {3938122800 -7200 1 ARST}
- {3951424800 -10800 0 ART}
- {3969572400 -7200 1 ARST}
- {3982874400 -10800 0 ART}
- {4001626800 -7200 1 ARST}
- {4014324000 -10800 0 ART}
- {4033076400 -7200 1 ARST}
- {4045773600 -10800 0 ART}
- {4064526000 -7200 1 ARST}
- {4077223200 -10800 0 ART}
- {4095975600 -7200 1 ARST}
}
diff --git a/library/tzdata/America/Argentina/Cordoba b/library/tzdata/America/Argentina/Cordoba
index 798ee86..b08539e 100644
--- a/library/tzdata/America/Argentina/Cordoba
+++ b/library/tzdata/America/Argentina/Cordoba
@@ -64,185 +64,4 @@ set TZData(:America/Argentina/Cordoba) {
{1205632800 -10800 0 ART}
{1224385200 -7200 1 ARST}
{1237082400 -10800 0 ART}
- {1255834800 -7200 1 ARST}
- {1269136800 -10800 0 ART}
- {1287284400 -7200 1 ARST}
- {1300586400 -10800 0 ART}
- {1318734000 -7200 1 ARST}
- {1332036000 -10800 0 ART}
- {1350788400 -7200 1 ARST}
- {1363485600 -10800 0 ART}
- {1382238000 -7200 1 ARST}
- {1394935200 -10800 0 ART}
- {1413687600 -7200 1 ARST}
- {1426384800 -10800 0 ART}
- {1445137200 -7200 1 ARST}
- {1458439200 -10800 0 ART}
- {1476586800 -7200 1 ARST}
- {1489888800 -10800 0 ART}
- {1508036400 -7200 1 ARST}
- {1521338400 -10800 0 ART}
- {1540090800 -7200 1 ARST}
- {1552788000 -10800 0 ART}
- {1571540400 -7200 1 ARST}
- {1584237600 -10800 0 ART}
- {1602990000 -7200 1 ARST}
- {1616292000 -10800 0 ART}
- {1634439600 -7200 1 ARST}
- {1647741600 -10800 0 ART}
- {1665889200 -7200 1 ARST}
- {1679191200 -10800 0 ART}
- {1697338800 -7200 1 ARST}
- {1710640800 -10800 0 ART}
- {1729393200 -7200 1 ARST}
- {1742090400 -10800 0 ART}
- {1760842800 -7200 1 ARST}
- {1773540000 -10800 0 ART}
- {1792292400 -7200 1 ARST}
- {1805594400 -10800 0 ART}
- {1823742000 -7200 1 ARST}
- {1837044000 -10800 0 ART}
- {1855191600 -7200 1 ARST}
- {1868493600 -10800 0 ART}
- {1887246000 -7200 1 ARST}
- {1899943200 -10800 0 ART}
- {1918695600 -7200 1 ARST}
- {1931392800 -10800 0 ART}
- {1950145200 -7200 1 ARST}
- {1963447200 -10800 0 ART}
- {1981594800 -7200 1 ARST}
- {1994896800 -10800 0 ART}
- {2013044400 -7200 1 ARST}
- {2026346400 -10800 0 ART}
- {2044494000 -7200 1 ARST}
- {2057796000 -10800 0 ART}
- {2076548400 -7200 1 ARST}
- {2089245600 -10800 0 ART}
- {2107998000 -7200 1 ARST}
- {2120695200 -10800 0 ART}
- {2139447600 -7200 1 ARST}
- {2152749600 -10800 0 ART}
- {2170897200 -7200 1 ARST}
- {2184199200 -10800 0 ART}
- {2202346800 -7200 1 ARST}
- {2215648800 -10800 0 ART}
- {2234401200 -7200 1 ARST}
- {2247098400 -10800 0 ART}
- {2265850800 -7200 1 ARST}
- {2278548000 -10800 0 ART}
- {2297300400 -7200 1 ARST}
- {2309997600 -10800 0 ART}
- {2328750000 -7200 1 ARST}
- {2342052000 -10800 0 ART}
- {2360199600 -7200 1 ARST}
- {2373501600 -10800 0 ART}
- {2391649200 -7200 1 ARST}
- {2404951200 -10800 0 ART}
- {2423703600 -7200 1 ARST}
- {2436400800 -10800 0 ART}
- {2455153200 -7200 1 ARST}
- {2467850400 -10800 0 ART}
- {2486602800 -7200 1 ARST}
- {2499904800 -10800 0 ART}
- {2518052400 -7200 1 ARST}
- {2531354400 -10800 0 ART}
- {2549502000 -7200 1 ARST}
- {2562804000 -10800 0 ART}
- {2580951600 -7200 1 ARST}
- {2594253600 -10800 0 ART}
- {2613006000 -7200 1 ARST}
- {2625703200 -10800 0 ART}
- {2644455600 -7200 1 ARST}
- {2657152800 -10800 0 ART}
- {2675905200 -7200 1 ARST}
- {2689207200 -10800 0 ART}
- {2707354800 -7200 1 ARST}
- {2720656800 -10800 0 ART}
- {2738804400 -7200 1 ARST}
- {2752106400 -10800 0 ART}
- {2770858800 -7200 1 ARST}
- {2783556000 -10800 0 ART}
- {2802308400 -7200 1 ARST}
- {2815005600 -10800 0 ART}
- {2833758000 -7200 1 ARST}
- {2847060000 -10800 0 ART}
- {2865207600 -7200 1 ARST}
- {2878509600 -10800 0 ART}
- {2896657200 -7200 1 ARST}
- {2909959200 -10800 0 ART}
- {2928106800 -7200 1 ARST}
- {2941408800 -10800 0 ART}
- {2960161200 -7200 1 ARST}
- {2972858400 -10800 0 ART}
- {2991610800 -7200 1 ARST}
- {3004308000 -10800 0 ART}
- {3023060400 -7200 1 ARST}
- {3036362400 -10800 0 ART}
- {3054510000 -7200 1 ARST}
- {3067812000 -10800 0 ART}
- {3085959600 -7200 1 ARST}
- {3099261600 -10800 0 ART}
- {3118014000 -7200 1 ARST}
- {3130711200 -10800 0 ART}
- {3149463600 -7200 1 ARST}
- {3162160800 -10800 0 ART}
- {3180913200 -7200 1 ARST}
- {3193610400 -10800 0 ART}
- {3212362800 -7200 1 ARST}
- {3225664800 -10800 0 ART}
- {3243812400 -7200 1 ARST}
- {3257114400 -10800 0 ART}
- {3275262000 -7200 1 ARST}
- {3288564000 -10800 0 ART}
- {3307316400 -7200 1 ARST}
- {3320013600 -10800 0 ART}
- {3338766000 -7200 1 ARST}
- {3351463200 -10800 0 ART}
- {3370215600 -7200 1 ARST}
- {3383517600 -10800 0 ART}
- {3401665200 -7200 1 ARST}
- {3414967200 -10800 0 ART}
- {3433114800 -7200 1 ARST}
- {3446416800 -10800 0 ART}
- {3464564400 -7200 1 ARST}
- {3477866400 -10800 0 ART}
- {3496618800 -7200 1 ARST}
- {3509316000 -10800 0 ART}
- {3528068400 -7200 1 ARST}
- {3540765600 -10800 0 ART}
- {3559518000 -7200 1 ARST}
- {3572820000 -10800 0 ART}
- {3590967600 -7200 1 ARST}
- {3604269600 -10800 0 ART}
- {3622417200 -7200 1 ARST}
- {3635719200 -10800 0 ART}
- {3654471600 -7200 1 ARST}
- {3667168800 -10800 0 ART}
- {3685921200 -7200 1 ARST}
- {3698618400 -10800 0 ART}
- {3717370800 -7200 1 ARST}
- {3730672800 -10800 0 ART}
- {3748820400 -7200 1 ARST}
- {3762122400 -10800 0 ART}
- {3780270000 -7200 1 ARST}
- {3793572000 -10800 0 ART}
- {3811719600 -7200 1 ARST}
- {3825021600 -10800 0 ART}
- {3843774000 -7200 1 ARST}
- {3856471200 -10800 0 ART}
- {3875223600 -7200 1 ARST}
- {3887920800 -10800 0 ART}
- {3906673200 -7200 1 ARST}
- {3919975200 -10800 0 ART}
- {3938122800 -7200 1 ARST}
- {3951424800 -10800 0 ART}
- {3969572400 -7200 1 ARST}
- {3982874400 -10800 0 ART}
- {4001626800 -7200 1 ARST}
- {4014324000 -10800 0 ART}
- {4033076400 -7200 1 ARST}
- {4045773600 -10800 0 ART}
- {4064526000 -7200 1 ARST}
- {4077223200 -10800 0 ART}
- {4095975600 -7200 1 ARST}
}
diff --git a/library/tzdata/America/Argentina/San_Luis b/library/tzdata/America/Argentina/San_Luis
index 60a7995..8ca55d7 100644
--- a/library/tzdata/America/Argentina/San_Luis
+++ b/library/tzdata/America/Argentina/San_Luis
@@ -60,5 +60,9 @@ set TZData(:America/Argentina/San_Luis) {
{1085972400 -14400 0 WART}
{1090728000 -10800 0 ART}
{1198983600 -7200 1 ARST}
- {1200880800 -10800 0 ART}
+ {1200880800 -10800 0 WART}
+ {1205031600 -14400 0 WART}
+ {1223784000 -10800 1 WARST}
+ {1236481200 -14400 0 WART}
+ {1255233600 -10800 0 ART}
}
diff --git a/library/tzdata/America/Argentina/Tucuman b/library/tzdata/America/Argentina/Tucuman
index 6d12cb6..3500986 100644
--- a/library/tzdata/America/Argentina/Tucuman
+++ b/library/tzdata/America/Argentina/Tucuman
@@ -66,185 +66,4 @@ set TZData(:America/Argentina/Tucuman) {
{1205632800 -10800 0 ART}
{1224385200 -7200 1 ARST}
{1237082400 -10800 0 ART}
- {1255834800 -7200 1 ARST}
- {1269136800 -10800 0 ART}
- {1287284400 -7200 1 ARST}
- {1300586400 -10800 0 ART}
- {1318734000 -7200 1 ARST}
- {1332036000 -10800 0 ART}
- {1350788400 -7200 1 ARST}
- {1363485600 -10800 0 ART}
- {1382238000 -7200 1 ARST}
- {1394935200 -10800 0 ART}
- {1413687600 -7200 1 ARST}
- {1426384800 -10800 0 ART}
- {1445137200 -7200 1 ARST}
- {1458439200 -10800 0 ART}
- {1476586800 -7200 1 ARST}
- {1489888800 -10800 0 ART}
- {1508036400 -7200 1 ARST}
- {1521338400 -10800 0 ART}
- {1540090800 -7200 1 ARST}
- {1552788000 -10800 0 ART}
- {1571540400 -7200 1 ARST}
- {1584237600 -10800 0 ART}
- {1602990000 -7200 1 ARST}
- {1616292000 -10800 0 ART}
- {1634439600 -7200 1 ARST}
- {1647741600 -10800 0 ART}
- {1665889200 -7200 1 ARST}
- {1679191200 -10800 0 ART}
- {1697338800 -7200 1 ARST}
- {1710640800 -10800 0 ART}
- {1729393200 -7200 1 ARST}
- {1742090400 -10800 0 ART}
- {1760842800 -7200 1 ARST}
- {1773540000 -10800 0 ART}
- {1792292400 -7200 1 ARST}
- {1805594400 -10800 0 ART}
- {1823742000 -7200 1 ARST}
- {1837044000 -10800 0 ART}
- {1855191600 -7200 1 ARST}
- {1868493600 -10800 0 ART}
- {1887246000 -7200 1 ARST}
- {1899943200 -10800 0 ART}
- {1918695600 -7200 1 ARST}
- {1931392800 -10800 0 ART}
- {1950145200 -7200 1 ARST}
- {1963447200 -10800 0 ART}
- {1981594800 -7200 1 ARST}
- {1994896800 -10800 0 ART}
- {2013044400 -7200 1 ARST}
- {2026346400 -10800 0 ART}
- {2044494000 -7200 1 ARST}
- {2057796000 -10800 0 ART}
- {2076548400 -7200 1 ARST}
- {2089245600 -10800 0 ART}
- {2107998000 -7200 1 ARST}
- {2120695200 -10800 0 ART}
- {2139447600 -7200 1 ARST}
- {2152749600 -10800 0 ART}
- {2170897200 -7200 1 ARST}
- {2184199200 -10800 0 ART}
- {2202346800 -7200 1 ARST}
- {2215648800 -10800 0 ART}
- {2234401200 -7200 1 ARST}
- {2247098400 -10800 0 ART}
- {2265850800 -7200 1 ARST}
- {2278548000 -10800 0 ART}
- {2297300400 -7200 1 ARST}
- {2309997600 -10800 0 ART}
- {2328750000 -7200 1 ARST}
- {2342052000 -10800 0 ART}
- {2360199600 -7200 1 ARST}
- {2373501600 -10800 0 ART}
- {2391649200 -7200 1 ARST}
- {2404951200 -10800 0 ART}
- {2423703600 -7200 1 ARST}
- {2436400800 -10800 0 ART}
- {2455153200 -7200 1 ARST}
- {2467850400 -10800 0 ART}
- {2486602800 -7200 1 ARST}
- {2499904800 -10800 0 ART}
- {2518052400 -7200 1 ARST}
- {2531354400 -10800 0 ART}
- {2549502000 -7200 1 ARST}
- {2562804000 -10800 0 ART}
- {2580951600 -7200 1 ARST}
- {2594253600 -10800 0 ART}
- {2613006000 -7200 1 ARST}
- {2625703200 -10800 0 ART}
- {2644455600 -7200 1 ARST}
- {2657152800 -10800 0 ART}
- {2675905200 -7200 1 ARST}
- {2689207200 -10800 0 ART}
- {2707354800 -7200 1 ARST}
- {2720656800 -10800 0 ART}
- {2738804400 -7200 1 ARST}
- {2752106400 -10800 0 ART}
- {2770858800 -7200 1 ARST}
- {2783556000 -10800 0 ART}
- {2802308400 -7200 1 ARST}
- {2815005600 -10800 0 ART}
- {2833758000 -7200 1 ARST}
- {2847060000 -10800 0 ART}
- {2865207600 -7200 1 ARST}
- {2878509600 -10800 0 ART}
- {2896657200 -7200 1 ARST}
- {2909959200 -10800 0 ART}
- {2928106800 -7200 1 ARST}
- {2941408800 -10800 0 ART}
- {2960161200 -7200 1 ARST}
- {2972858400 -10800 0 ART}
- {2991610800 -7200 1 ARST}
- {3004308000 -10800 0 ART}
- {3023060400 -7200 1 ARST}
- {3036362400 -10800 0 ART}
- {3054510000 -7200 1 ARST}
- {3067812000 -10800 0 ART}
- {3085959600 -7200 1 ARST}
- {3099261600 -10800 0 ART}
- {3118014000 -7200 1 ARST}
- {3130711200 -10800 0 ART}
- {3149463600 -7200 1 ARST}
- {3162160800 -10800 0 ART}
- {3180913200 -7200 1 ARST}
- {3193610400 -10800 0 ART}
- {3212362800 -7200 1 ARST}
- {3225664800 -10800 0 ART}
- {3243812400 -7200 1 ARST}
- {3257114400 -10800 0 ART}
- {3275262000 -7200 1 ARST}
- {3288564000 -10800 0 ART}
- {3307316400 -7200 1 ARST}
- {3320013600 -10800 0 ART}
- {3338766000 -7200 1 ARST}
- {3351463200 -10800 0 ART}
- {3370215600 -7200 1 ARST}
- {3383517600 -10800 0 ART}
- {3401665200 -7200 1 ARST}
- {3414967200 -10800 0 ART}
- {3433114800 -7200 1 ARST}
- {3446416800 -10800 0 ART}
- {3464564400 -7200 1 ARST}
- {3477866400 -10800 0 ART}
- {3496618800 -7200 1 ARST}
- {3509316000 -10800 0 ART}
- {3528068400 -7200 1 ARST}
- {3540765600 -10800 0 ART}
- {3559518000 -7200 1 ARST}
- {3572820000 -10800 0 ART}
- {3590967600 -7200 1 ARST}
- {3604269600 -10800 0 ART}
- {3622417200 -7200 1 ARST}
- {3635719200 -10800 0 ART}
- {3654471600 -7200 1 ARST}
- {3667168800 -10800 0 ART}
- {3685921200 -7200 1 ARST}
- {3698618400 -10800 0 ART}
- {3717370800 -7200 1 ARST}
- {3730672800 -10800 0 ART}
- {3748820400 -7200 1 ARST}
- {3762122400 -10800 0 ART}
- {3780270000 -7200 1 ARST}
- {3793572000 -10800 0 ART}
- {3811719600 -7200 1 ARST}
- {3825021600 -10800 0 ART}
- {3843774000 -7200 1 ARST}
- {3856471200 -10800 0 ART}
- {3875223600 -7200 1 ARST}
- {3887920800 -10800 0 ART}
- {3906673200 -7200 1 ARST}
- {3919975200 -10800 0 ART}
- {3938122800 -7200 1 ARST}
- {3951424800 -10800 0 ART}
- {3969572400 -7200 1 ARST}
- {3982874400 -10800 0 ART}
- {4001626800 -7200 1 ARST}
- {4014324000 -10800 0 ART}
- {4033076400 -7200 1 ARST}
- {4045773600 -10800 0 ART}
- {4064526000 -7200 1 ARST}
- {4077223200 -10800 0 ART}
- {4095975600 -7200 1 ARST}
}
diff --git a/library/tzdata/America/Aruba b/library/tzdata/America/Aruba
index 92f182d..e02d5fc 100644
--- a/library/tzdata/America/Aruba
+++ b/library/tzdata/America/Aruba
@@ -1,7 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/Aruba) {
- {-9223372036854775808 -16824 0 LMT}
- {-1826738376 -16200 0 ANT}
- {-157750200 -14400 0 AST}
+if {![info exists TZData(America/Curacao)]} {
+ LoadTimeZoneFile America/Curacao
}
+set TZData(:America/Aruba) $TZData(:America/Curacao)
diff --git a/library/tzdata/America/Asuncion b/library/tzdata/America/Asuncion
index fde228c..9ea30da 100644
--- a/library/tzdata/America/Asuncion
+++ b/library/tzdata/America/Asuncion
@@ -76,184 +76,184 @@ set TZData(:America/Asuncion) {
{1224388800 -10800 1 PYST}
{1236481200 -14400 0 PYT}
{1255838400 -10800 1 PYST}
- {1268535600 -14400 0 PYT}
- {1287288000 -10800 1 PYST}
- {1299985200 -14400 0 PYT}
- {1318737600 -10800 1 PYST}
- {1331434800 -14400 0 PYT}
- {1350792000 -10800 1 PYST}
- {1362884400 -14400 0 PYT}
- {1382241600 -10800 1 PYST}
- {1394334000 -14400 0 PYT}
- {1413691200 -10800 1 PYST}
- {1425783600 -14400 0 PYT}
- {1445140800 -10800 1 PYST}
- {1457838000 -14400 0 PYT}
- {1476590400 -10800 1 PYST}
- {1489287600 -14400 0 PYT}
- {1508040000 -10800 1 PYST}
- {1520737200 -14400 0 PYT}
- {1540094400 -10800 1 PYST}
- {1552186800 -14400 0 PYT}
- {1571544000 -10800 1 PYST}
- {1583636400 -14400 0 PYT}
- {1602993600 -10800 1 PYST}
- {1615690800 -14400 0 PYT}
- {1634443200 -10800 1 PYST}
- {1647140400 -14400 0 PYT}
- {1665892800 -10800 1 PYST}
- {1678590000 -14400 0 PYT}
- {1697342400 -10800 1 PYST}
- {1710039600 -14400 0 PYT}
- {1729396800 -10800 1 PYST}
- {1741489200 -14400 0 PYT}
- {1760846400 -10800 1 PYST}
- {1772938800 -14400 0 PYT}
- {1792296000 -10800 1 PYST}
- {1804993200 -14400 0 PYT}
- {1823745600 -10800 1 PYST}
- {1836442800 -14400 0 PYT}
- {1855195200 -10800 1 PYST}
- {1867892400 -14400 0 PYT}
- {1887249600 -10800 1 PYST}
- {1899342000 -14400 0 PYT}
- {1918699200 -10800 1 PYST}
- {1930791600 -14400 0 PYT}
- {1950148800 -10800 1 PYST}
- {1962846000 -14400 0 PYT}
- {1981598400 -10800 1 PYST}
- {1994295600 -14400 0 PYT}
- {2013048000 -10800 1 PYST}
- {2025745200 -14400 0 PYT}
- {2044497600 -10800 1 PYST}
- {2057194800 -14400 0 PYT}
- {2076552000 -10800 1 PYST}
- {2088644400 -14400 0 PYT}
- {2108001600 -10800 1 PYST}
- {2120094000 -14400 0 PYT}
- {2139451200 -10800 1 PYST}
- {2152148400 -14400 0 PYT}
- {2170900800 -10800 1 PYST}
- {2183598000 -14400 0 PYT}
- {2202350400 -10800 1 PYST}
- {2215047600 -14400 0 PYT}
- {2234404800 -10800 1 PYST}
- {2246497200 -14400 0 PYT}
- {2265854400 -10800 1 PYST}
- {2277946800 -14400 0 PYT}
- {2297304000 -10800 1 PYST}
- {2309396400 -14400 0 PYT}
- {2328753600 -10800 1 PYST}
- {2341450800 -14400 0 PYT}
- {2360203200 -10800 1 PYST}
- {2372900400 -14400 0 PYT}
- {2391652800 -10800 1 PYST}
- {2404350000 -14400 0 PYT}
- {2423707200 -10800 1 PYST}
- {2435799600 -14400 0 PYT}
- {2455156800 -10800 1 PYST}
- {2467249200 -14400 0 PYT}
- {2486606400 -10800 1 PYST}
- {2499303600 -14400 0 PYT}
- {2518056000 -10800 1 PYST}
- {2530753200 -14400 0 PYT}
- {2549505600 -10800 1 PYST}
- {2562202800 -14400 0 PYT}
- {2580955200 -10800 1 PYST}
- {2593652400 -14400 0 PYT}
- {2613009600 -10800 1 PYST}
- {2625102000 -14400 0 PYT}
- {2644459200 -10800 1 PYST}
- {2656551600 -14400 0 PYT}
- {2675908800 -10800 1 PYST}
- {2688606000 -14400 0 PYT}
- {2707358400 -10800 1 PYST}
- {2720055600 -14400 0 PYT}
- {2738808000 -10800 1 PYST}
- {2751505200 -14400 0 PYT}
- {2770862400 -10800 1 PYST}
- {2782954800 -14400 0 PYT}
- {2802312000 -10800 1 PYST}
- {2814404400 -14400 0 PYT}
- {2833761600 -10800 1 PYST}
- {2846458800 -14400 0 PYT}
- {2865211200 -10800 1 PYST}
- {2877908400 -14400 0 PYT}
- {2896660800 -10800 1 PYST}
- {2909358000 -14400 0 PYT}
- {2928110400 -10800 1 PYST}
- {2940807600 -14400 0 PYT}
- {2960164800 -10800 1 PYST}
- {2972257200 -14400 0 PYT}
- {2991614400 -10800 1 PYST}
- {3003706800 -14400 0 PYT}
- {3023064000 -10800 1 PYST}
- {3035761200 -14400 0 PYT}
- {3054513600 -10800 1 PYST}
- {3067210800 -14400 0 PYT}
- {3085963200 -10800 1 PYST}
- {3098660400 -14400 0 PYT}
- {3118017600 -10800 1 PYST}
- {3130110000 -14400 0 PYT}
- {3149467200 -10800 1 PYST}
- {3161559600 -14400 0 PYT}
- {3180916800 -10800 1 PYST}
- {3193009200 -14400 0 PYT}
- {3212366400 -10800 1 PYST}
- {3225063600 -14400 0 PYT}
- {3243816000 -10800 1 PYST}
- {3256513200 -14400 0 PYT}
- {3275265600 -10800 1 PYST}
- {3287962800 -14400 0 PYT}
- {3307320000 -10800 1 PYST}
- {3319412400 -14400 0 PYT}
- {3338769600 -10800 1 PYST}
- {3350862000 -14400 0 PYT}
- {3370219200 -10800 1 PYST}
- {3382916400 -14400 0 PYT}
- {3401668800 -10800 1 PYST}
- {3414366000 -14400 0 PYT}
- {3433118400 -10800 1 PYST}
- {3445815600 -14400 0 PYT}
- {3464568000 -10800 1 PYST}
- {3477265200 -14400 0 PYT}
- {3496622400 -10800 1 PYST}
- {3508714800 -14400 0 PYT}
- {3528072000 -10800 1 PYST}
- {3540164400 -14400 0 PYT}
- {3559521600 -10800 1 PYST}
- {3572218800 -14400 0 PYT}
- {3590971200 -10800 1 PYST}
- {3603668400 -14400 0 PYT}
- {3622420800 -10800 1 PYST}
- {3635118000 -14400 0 PYT}
- {3654475200 -10800 1 PYST}
- {3666567600 -14400 0 PYT}
- {3685924800 -10800 1 PYST}
- {3698017200 -14400 0 PYT}
- {3717374400 -10800 1 PYST}
- {3730071600 -14400 0 PYT}
- {3748824000 -10800 1 PYST}
- {3761521200 -14400 0 PYT}
- {3780273600 -10800 1 PYST}
- {3792970800 -14400 0 PYT}
- {3811723200 -10800 1 PYST}
- {3824420400 -14400 0 PYT}
- {3843777600 -10800 1 PYST}
- {3855870000 -14400 0 PYT}
- {3875227200 -10800 1 PYST}
- {3887319600 -14400 0 PYT}
- {3906676800 -10800 1 PYST}
- {3919374000 -14400 0 PYT}
- {3938126400 -10800 1 PYST}
- {3950823600 -14400 0 PYT}
- {3969576000 -10800 1 PYST}
- {3982273200 -14400 0 PYT}
- {4001630400 -10800 1 PYST}
- {4013722800 -14400 0 PYT}
- {4033080000 -10800 1 PYST}
- {4045172400 -14400 0 PYT}
- {4064529600 -10800 1 PYST}
- {4076622000 -14400 0 PYT}
- {4095979200 -10800 1 PYST}
+ {1270954800 -14400 0 PYT}
+ {1286078400 -10800 1 PYST}
+ {1302404400 -14400 0 PYT}
+ {1317528000 -10800 1 PYST}
+ {1333854000 -14400 0 PYT}
+ {1349582400 -10800 1 PYST}
+ {1364094000 -14400 0 PYT}
+ {1381032000 -10800 1 PYST}
+ {1395543600 -14400 0 PYT}
+ {1412481600 -10800 1 PYST}
+ {1426993200 -14400 0 PYT}
+ {1443931200 -10800 1 PYST}
+ {1459047600 -14400 0 PYT}
+ {1475380800 -10800 1 PYST}
+ {1490497200 -14400 0 PYT}
+ {1506830400 -10800 1 PYST}
+ {1521946800 -14400 0 PYT}
+ {1538884800 -10800 1 PYST}
+ {1553396400 -14400 0 PYT}
+ {1570334400 -10800 1 PYST}
+ {1584846000 -14400 0 PYT}
+ {1601784000 -10800 1 PYST}
+ {1616900400 -14400 0 PYT}
+ {1633233600 -10800 1 PYST}
+ {1648350000 -14400 0 PYT}
+ {1664683200 -10800 1 PYST}
+ {1679799600 -14400 0 PYT}
+ {1696132800 -10800 1 PYST}
+ {1711249200 -14400 0 PYT}
+ {1728187200 -10800 1 PYST}
+ {1742698800 -14400 0 PYT}
+ {1759636800 -10800 1 PYST}
+ {1774148400 -14400 0 PYT}
+ {1791086400 -10800 1 PYST}
+ {1806202800 -14400 0 PYT}
+ {1822536000 -10800 1 PYST}
+ {1837652400 -14400 0 PYT}
+ {1853985600 -10800 1 PYST}
+ {1869102000 -14400 0 PYT}
+ {1886040000 -10800 1 PYST}
+ {1900551600 -14400 0 PYT}
+ {1917489600 -10800 1 PYST}
+ {1932001200 -14400 0 PYT}
+ {1948939200 -10800 1 PYST}
+ {1964055600 -14400 0 PYT}
+ {1980388800 -10800 1 PYST}
+ {1995505200 -14400 0 PYT}
+ {2011838400 -10800 1 PYST}
+ {2026954800 -14400 0 PYT}
+ {2043288000 -10800 1 PYST}
+ {2058404400 -14400 0 PYT}
+ {2075342400 -10800 1 PYST}
+ {2089854000 -14400 0 PYT}
+ {2106792000 -10800 1 PYST}
+ {2121303600 -14400 0 PYT}
+ {2138241600 -10800 1 PYST}
+ {2153358000 -14400 0 PYT}
+ {2169691200 -10800 1 PYST}
+ {2184807600 -14400 0 PYT}
+ {2201140800 -10800 1 PYST}
+ {2216257200 -14400 0 PYT}
+ {2233195200 -10800 1 PYST}
+ {2247706800 -14400 0 PYT}
+ {2264644800 -10800 1 PYST}
+ {2279156400 -14400 0 PYT}
+ {2296094400 -10800 1 PYST}
+ {2310606000 -14400 0 PYT}
+ {2327544000 -10800 1 PYST}
+ {2342660400 -14400 0 PYT}
+ {2358993600 -10800 1 PYST}
+ {2374110000 -14400 0 PYT}
+ {2390443200 -10800 1 PYST}
+ {2405559600 -14400 0 PYT}
+ {2422497600 -10800 1 PYST}
+ {2437009200 -14400 0 PYT}
+ {2453947200 -10800 1 PYST}
+ {2468458800 -14400 0 PYT}
+ {2485396800 -10800 1 PYST}
+ {2500513200 -14400 0 PYT}
+ {2516846400 -10800 1 PYST}
+ {2531962800 -14400 0 PYT}
+ {2548296000 -10800 1 PYST}
+ {2563412400 -14400 0 PYT}
+ {2579745600 -10800 1 PYST}
+ {2594862000 -14400 0 PYT}
+ {2611800000 -10800 1 PYST}
+ {2626311600 -14400 0 PYT}
+ {2643249600 -10800 1 PYST}
+ {2657761200 -14400 0 PYT}
+ {2674699200 -10800 1 PYST}
+ {2689815600 -14400 0 PYT}
+ {2706148800 -10800 1 PYST}
+ {2721265200 -14400 0 PYT}
+ {2737598400 -10800 1 PYST}
+ {2752714800 -14400 0 PYT}
+ {2769652800 -10800 1 PYST}
+ {2784164400 -14400 0 PYT}
+ {2801102400 -10800 1 PYST}
+ {2815614000 -14400 0 PYT}
+ {2832552000 -10800 1 PYST}
+ {2847668400 -14400 0 PYT}
+ {2864001600 -10800 1 PYST}
+ {2879118000 -14400 0 PYT}
+ {2895451200 -10800 1 PYST}
+ {2910567600 -14400 0 PYT}
+ {2926900800 -10800 1 PYST}
+ {2942017200 -14400 0 PYT}
+ {2958955200 -10800 1 PYST}
+ {2973466800 -14400 0 PYT}
+ {2990404800 -10800 1 PYST}
+ {3004916400 -14400 0 PYT}
+ {3021854400 -10800 1 PYST}
+ {3036970800 -14400 0 PYT}
+ {3053304000 -10800 1 PYST}
+ {3068420400 -14400 0 PYT}
+ {3084753600 -10800 1 PYST}
+ {3099870000 -14400 0 PYT}
+ {3116808000 -10800 1 PYST}
+ {3131319600 -14400 0 PYT}
+ {3148257600 -10800 1 PYST}
+ {3162769200 -14400 0 PYT}
+ {3179707200 -10800 1 PYST}
+ {3194218800 -14400 0 PYT}
+ {3211156800 -10800 1 PYST}
+ {3226273200 -14400 0 PYT}
+ {3242606400 -10800 1 PYST}
+ {3257722800 -14400 0 PYT}
+ {3274056000 -10800 1 PYST}
+ {3289172400 -14400 0 PYT}
+ {3306110400 -10800 1 PYST}
+ {3320622000 -14400 0 PYT}
+ {3337560000 -10800 1 PYST}
+ {3352071600 -14400 0 PYT}
+ {3369009600 -10800 1 PYST}
+ {3384126000 -14400 0 PYT}
+ {3400459200 -10800 1 PYST}
+ {3415575600 -14400 0 PYT}
+ {3431908800 -10800 1 PYST}
+ {3447025200 -14400 0 PYT}
+ {3463358400 -10800 1 PYST}
+ {3478474800 -14400 0 PYT}
+ {3495412800 -10800 1 PYST}
+ {3509924400 -14400 0 PYT}
+ {3526862400 -10800 1 PYST}
+ {3541374000 -14400 0 PYT}
+ {3558312000 -10800 1 PYST}
+ {3573428400 -14400 0 PYT}
+ {3589761600 -10800 1 PYST}
+ {3604878000 -14400 0 PYT}
+ {3621211200 -10800 1 PYST}
+ {3636327600 -14400 0 PYT}
+ {3653265600 -10800 1 PYST}
+ {3667777200 -14400 0 PYT}
+ {3684715200 -10800 1 PYST}
+ {3699226800 -14400 0 PYT}
+ {3716164800 -10800 1 PYST}
+ {3731281200 -14400 0 PYT}
+ {3747614400 -10800 1 PYST}
+ {3762730800 -14400 0 PYT}
+ {3779064000 -10800 1 PYST}
+ {3794180400 -14400 0 PYT}
+ {3810513600 -10800 1 PYST}
+ {3825630000 -14400 0 PYT}
+ {3842568000 -10800 1 PYST}
+ {3857079600 -14400 0 PYT}
+ {3874017600 -10800 1 PYST}
+ {3888529200 -14400 0 PYT}
+ {3905467200 -10800 1 PYST}
+ {3920583600 -14400 0 PYT}
+ {3936916800 -10800 1 PYST}
+ {3952033200 -14400 0 PYT}
+ {3968366400 -10800 1 PYST}
+ {3983482800 -14400 0 PYT}
+ {4000420800 -10800 1 PYST}
+ {4014932400 -14400 0 PYT}
+ {4031870400 -10800 1 PYST}
+ {4046382000 -14400 0 PYT}
+ {4063320000 -10800 1 PYST}
+ {4077831600 -14400 0 PYT}
+ {4094769600 -10800 1 PYST}
}
diff --git a/library/tzdata/America/Atikokan b/library/tzdata/America/Atikokan
index ca0ac1c..e72b04f 100755..100644
--- a/library/tzdata/America/Atikokan
+++ b/library/tzdata/America/Atikokan
@@ -4,7 +4,7 @@ set TZData(:America/Atikokan) {
{-9223372036854775808 -21988 0 LMT}
{-2366733212 -21600 0 CST}
{-1632067200 -18000 1 CDT}
- {-1614790800 -21600 0 CST}
+ {-1615136400 -21600 0 CST}
{-923248800 -18000 1 CDT}
{-880214400 -18000 0 CWT}
{-769395600 -18000 1 CPT}
diff --git a/library/tzdata/America/Bahia b/library/tzdata/America/Bahia
index b10a939..ac67b71 100644
--- a/library/tzdata/America/Bahia
+++ b/library/tzdata/America/Bahia
@@ -62,4 +62,7 @@ set TZData(:America/Bahia) {
{1036292400 -7200 1 BRST}
{1045360800 -10800 0 BRT}
{1064368800 -10800 0 BRT}
+ {1318734000 -7200 0 BRST}
+ {1330221600 -10800 0 BRT}
+ {1350784800 -10800 0 BRT}
}
diff --git a/library/tzdata/America/Bahia_Banderas b/library/tzdata/America/Bahia_Banderas
new file mode 100644
index 0000000..8c40a0e
--- /dev/null
+++ b/library/tzdata/America/Bahia_Banderas
@@ -0,0 +1,222 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Bahia_Banderas) {
+ {-9223372036854775808 -25260 0 LMT}
+ {-1514739600 -25200 0 MST}
+ {-1343066400 -21600 0 CST}
+ {-1234807200 -25200 0 MST}
+ {-1220292000 -21600 0 CST}
+ {-1207159200 -25200 0 MST}
+ {-1191344400 -21600 0 CST}
+ {-873828000 -25200 0 MST}
+ {-661539600 -28800 0 PST}
+ {28800 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {989139600 -21600 1 MDT}
+ {1001836800 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1175418000 -21600 1 MDT}
+ {1193558400 -25200 0 MST}
+ {1207472400 -21600 1 MDT}
+ {1225008000 -25200 0 MST}
+ {1238922000 -21600 1 MDT}
+ {1256457600 -25200 0 MST}
+ {1270371600 -18000 0 CDT}
+ {1288508400 -21600 0 CST}
+ {1301817600 -18000 1 CDT}
+ {1319958000 -21600 0 CST}
+ {1333267200 -18000 1 CDT}
+ {1351407600 -21600 0 CST}
+ {1365321600 -18000 1 CDT}
+ {1382857200 -21600 0 CST}
+ {1396771200 -18000 1 CDT}
+ {1414306800 -21600 0 CST}
+ {1428220800 -18000 1 CDT}
+ {1445756400 -21600 0 CST}
+ {1459670400 -18000 1 CDT}
+ {1477810800 -21600 0 CST}
+ {1491120000 -18000 1 CDT}
+ {1509260400 -21600 0 CST}
+ {1522569600 -18000 1 CDT}
+ {1540710000 -21600 0 CST}
+ {1554624000 -18000 1 CDT}
+ {1572159600 -21600 0 CST}
+ {1586073600 -18000 1 CDT}
+ {1603609200 -21600 0 CST}
+ {1617523200 -18000 1 CDT}
+ {1635663600 -21600 0 CST}
+ {1648972800 -18000 1 CDT}
+ {1667113200 -21600 0 CST}
+ {1680422400 -18000 1 CDT}
+ {1698562800 -21600 0 CST}
+ {1712476800 -18000 1 CDT}
+ {1730012400 -21600 0 CST}
+ {1743926400 -18000 1 CDT}
+ {1761462000 -21600 0 CST}
+ {1775376000 -18000 1 CDT}
+ {1792911600 -21600 0 CST}
+ {1806825600 -18000 1 CDT}
+ {1824966000 -21600 0 CST}
+ {1838275200 -18000 1 CDT}
+ {1856415600 -21600 0 CST}
+ {1869724800 -18000 1 CDT}
+ {1887865200 -21600 0 CST}
+ {1901779200 -18000 1 CDT}
+ {1919314800 -21600 0 CST}
+ {1933228800 -18000 1 CDT}
+ {1950764400 -21600 0 CST}
+ {1964678400 -18000 1 CDT}
+ {1982818800 -21600 0 CST}
+ {1996128000 -18000 1 CDT}
+ {2014268400 -21600 0 CST}
+ {2027577600 -18000 1 CDT}
+ {2045718000 -21600 0 CST}
+ {2059027200 -18000 1 CDT}
+ {2077167600 -21600 0 CST}
+ {2091081600 -18000 1 CDT}
+ {2108617200 -21600 0 CST}
+ {2122531200 -18000 1 CDT}
+ {2140066800 -21600 0 CST}
+ {2153980800 -18000 1 CDT}
+ {2172121200 -21600 0 CST}
+ {2185430400 -18000 1 CDT}
+ {2203570800 -21600 0 CST}
+ {2216880000 -18000 1 CDT}
+ {2235020400 -21600 0 CST}
+ {2248934400 -18000 1 CDT}
+ {2266470000 -21600 0 CST}
+ {2280384000 -18000 1 CDT}
+ {2297919600 -21600 0 CST}
+ {2311833600 -18000 1 CDT}
+ {2329369200 -21600 0 CST}
+ {2343283200 -18000 1 CDT}
+ {2361423600 -21600 0 CST}
+ {2374732800 -18000 1 CDT}
+ {2392873200 -21600 0 CST}
+ {2406182400 -18000 1 CDT}
+ {2424322800 -21600 0 CST}
+ {2438236800 -18000 1 CDT}
+ {2455772400 -21600 0 CST}
+ {2469686400 -18000 1 CDT}
+ {2487222000 -21600 0 CST}
+ {2501136000 -18000 1 CDT}
+ {2519276400 -21600 0 CST}
+ {2532585600 -18000 1 CDT}
+ {2550726000 -21600 0 CST}
+ {2564035200 -18000 1 CDT}
+ {2582175600 -21600 0 CST}
+ {2596089600 -18000 1 CDT}
+ {2613625200 -21600 0 CST}
+ {2627539200 -18000 1 CDT}
+ {2645074800 -21600 0 CST}
+ {2658988800 -18000 1 CDT}
+ {2676524400 -21600 0 CST}
+ {2690438400 -18000 1 CDT}
+ {2708578800 -21600 0 CST}
+ {2721888000 -18000 1 CDT}
+ {2740028400 -21600 0 CST}
+ {2753337600 -18000 1 CDT}
+ {2771478000 -21600 0 CST}
+ {2785392000 -18000 1 CDT}
+ {2802927600 -21600 0 CST}
+ {2816841600 -18000 1 CDT}
+ {2834377200 -21600 0 CST}
+ {2848291200 -18000 1 CDT}
+ {2866431600 -21600 0 CST}
+ {2879740800 -18000 1 CDT}
+ {2897881200 -21600 0 CST}
+ {2911190400 -18000 1 CDT}
+ {2929330800 -21600 0 CST}
+ {2942640000 -18000 1 CDT}
+ {2960780400 -21600 0 CST}
+ {2974694400 -18000 1 CDT}
+ {2992230000 -21600 0 CST}
+ {3006144000 -18000 1 CDT}
+ {3023679600 -21600 0 CST}
+ {3037593600 -18000 1 CDT}
+ {3055734000 -21600 0 CST}
+ {3069043200 -18000 1 CDT}
+ {3087183600 -21600 0 CST}
+ {3100492800 -18000 1 CDT}
+ {3118633200 -21600 0 CST}
+ {3132547200 -18000 1 CDT}
+ {3150082800 -21600 0 CST}
+ {3163996800 -18000 1 CDT}
+ {3181532400 -21600 0 CST}
+ {3195446400 -18000 1 CDT}
+ {3212982000 -21600 0 CST}
+ {3226896000 -18000 1 CDT}
+ {3245036400 -21600 0 CST}
+ {3258345600 -18000 1 CDT}
+ {3276486000 -21600 0 CST}
+ {3289795200 -18000 1 CDT}
+ {3307935600 -21600 0 CST}
+ {3321849600 -18000 1 CDT}
+ {3339385200 -21600 0 CST}
+ {3353299200 -18000 1 CDT}
+ {3370834800 -21600 0 CST}
+ {3384748800 -18000 1 CDT}
+ {3402889200 -21600 0 CST}
+ {3416198400 -18000 1 CDT}
+ {3434338800 -21600 0 CST}
+ {3447648000 -18000 1 CDT}
+ {3465788400 -21600 0 CST}
+ {3479702400 -18000 1 CDT}
+ {3497238000 -21600 0 CST}
+ {3511152000 -18000 1 CDT}
+ {3528687600 -21600 0 CST}
+ {3542601600 -18000 1 CDT}
+ {3560137200 -21600 0 CST}
+ {3574051200 -18000 1 CDT}
+ {3592191600 -21600 0 CST}
+ {3605500800 -18000 1 CDT}
+ {3623641200 -21600 0 CST}
+ {3636950400 -18000 1 CDT}
+ {3655090800 -21600 0 CST}
+ {3669004800 -18000 1 CDT}
+ {3686540400 -21600 0 CST}
+ {3700454400 -18000 1 CDT}
+ {3717990000 -21600 0 CST}
+ {3731904000 -18000 1 CDT}
+ {3750044400 -21600 0 CST}
+ {3763353600 -18000 1 CDT}
+ {3781494000 -21600 0 CST}
+ {3794803200 -18000 1 CDT}
+ {3812943600 -21600 0 CST}
+ {3826252800 -18000 1 CDT}
+ {3844393200 -21600 0 CST}
+ {3858307200 -18000 1 CDT}
+ {3875842800 -21600 0 CST}
+ {3889756800 -18000 1 CDT}
+ {3907292400 -21600 0 CST}
+ {3921206400 -18000 1 CDT}
+ {3939346800 -21600 0 CST}
+ {3952656000 -18000 1 CDT}
+ {3970796400 -21600 0 CST}
+ {3984105600 -18000 1 CDT}
+ {4002246000 -21600 0 CST}
+ {4016160000 -18000 1 CDT}
+ {4033695600 -21600 0 CST}
+ {4047609600 -18000 1 CDT}
+ {4065145200 -21600 0 CST}
+ {4079059200 -18000 1 CDT}
+ {4096594800 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Barbados b/library/tzdata/America/Barbados
index 5c06408..ea17073 100644
--- a/library/tzdata/America/Barbados
+++ b/library/tzdata/America/Barbados
@@ -1,9 +1,9 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Barbados) {
- {-9223372036854775808 -14308 0 LMT}
- {-1451678492 -14308 0 BMT}
- {-1199217692 -14400 0 AST}
+ {-9223372036854775808 -14309 0 LMT}
+ {-1451678491 -14309 0 BMT}
+ {-1199217691 -14400 0 AST}
{234943200 -10800 1 ADT}
{244616400 -14400 0 AST}
{261554400 -10800 1 ADT}
diff --git a/library/tzdata/America/Blanc-Sablon b/library/tzdata/America/Blanc-Sablon
index 47f161a..d5485e8 100755..100644
--- a/library/tzdata/America/Blanc-Sablon
+++ b/library/tzdata/America/Blanc-Sablon
@@ -4,7 +4,7 @@ set TZData(:America/Blanc-Sablon) {
{-9223372036854775808 -13708 0 LMT}
{-2713896692 -14400 0 AST}
{-1632074400 -10800 1 ADT}
- {-1614798000 -14400 0 AST}
+ {-1615143600 -14400 0 AST}
{-880221600 -10800 1 AWT}
{-769395600 -10800 1 APT}
{-765399600 -14400 0 AST}
diff --git a/library/tzdata/America/Bogota b/library/tzdata/America/Bogota
index f727d17..b28abc1 100644
--- a/library/tzdata/America/Bogota
+++ b/library/tzdata/America/Bogota
@@ -1,9 +1,9 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Bogota) {
- {-9223372036854775808 -17780 0 LMT}
- {-2707671820 -17780 0 BMT}
- {-1739041420 -18000 0 COT}
+ {-9223372036854775808 -17776 0 LMT}
+ {-2707671824 -17776 0 BMT}
+ {-1739041424 -18000 0 COT}
{704869200 -14400 1 COST}
{733896000 -18000 0 COT}
}
diff --git a/library/tzdata/America/Cayman b/library/tzdata/America/Cayman
index ab5d12b..3e2e3cc 100644
--- a/library/tzdata/America/Cayman
+++ b/library/tzdata/America/Cayman
@@ -2,6 +2,6 @@
set TZData(:America/Cayman) {
{-9223372036854775808 -19532 0 LMT}
- {-2524502068 -18432 0 KMT}
- {-1827687168 -18000 0 EST}
+ {-2524502068 -18431 0 KMT}
+ {-1827687169 -18000 0 EST}
}
diff --git a/library/tzdata/America/Costa_Rica b/library/tzdata/America/Costa_Rica
index 04420a4..8fc9343 100644
--- a/library/tzdata/America/Costa_Rica
+++ b/library/tzdata/America/Costa_Rica
@@ -1,9 +1,9 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Costa_Rica) {
- {-9223372036854775808 -20180 0 LMT}
- {-2524501420 -20180 0 SJMT}
- {-1545071020 -21600 0 CST}
+ {-9223372036854775808 -20173 0 LMT}
+ {-2524501427 -20173 0 SJMT}
+ {-1545071027 -21600 0 CST}
{288770400 -18000 1 CDT}
{297234000 -21600 0 CST}
{320220000 -18000 1 CDT}
diff --git a/library/tzdata/America/Creston b/library/tzdata/America/Creston
new file mode 100644
index 0000000..30369a9
--- /dev/null
+++ b/library/tzdata/America/Creston
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Creston) {
+ {-9223372036854775808 -27964 0 LMT}
+ {-2713882436 -25200 0 MST}
+ {-1680454800 -28800 0 PST}
+ {-1627833600 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Curacao b/library/tzdata/America/Curacao
index 443a319..5189e9c 100644
--- a/library/tzdata/America/Curacao
+++ b/library/tzdata/America/Curacao
@@ -1,7 +1,7 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Curacao) {
- {-9223372036854775808 -16544 0 LMT}
- {-1826738656 -16200 0 ANT}
+ {-9223372036854775808 -16547 0 LMT}
+ {-1826738653 -16200 0 ANT}
{-157750200 -14400 0 AST}
}
diff --git a/library/tzdata/America/Dawson_Creek b/library/tzdata/America/Dawson_Creek
index 9f8c921..a0b5c44 100644
--- a/library/tzdata/America/Dawson_Creek
+++ b/library/tzdata/America/Dawson_Creek
@@ -4,7 +4,7 @@ set TZData(:America/Dawson_Creek) {
{-9223372036854775808 -28856 0 LMT}
{-2713881544 -28800 0 PST}
{-1632060000 -25200 1 PDT}
- {-1614783600 -28800 0 PST}
+ {-1615129200 -28800 0 PST}
{-880207200 -25200 1 PWT}
{-769395600 -25200 1 PPT}
{-765385200 -28800 0 PST}
diff --git a/library/tzdata/America/Dominica b/library/tzdata/America/Dominica
index 3503a65..b97cb0e 100644
--- a/library/tzdata/America/Dominica
+++ b/library/tzdata/America/Dominica
@@ -1,6 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/Dominica) {
- {-9223372036854775808 -14736 0 LMT}
- {-1846266804 -14400 0 AST}
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
}
+set TZData(:America/Dominica) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Edmonton b/library/tzdata/America/Edmonton
index c4252f8..1ed38be 100644
--- a/library/tzdata/America/Edmonton
+++ b/library/tzdata/America/Edmonton
@@ -4,7 +4,7 @@ set TZData(:America/Edmonton) {
{-9223372036854775808 -27232 0 LMT}
{-1998663968 -25200 0 MST}
{-1632063600 -21600 1 MDT}
- {-1614787200 -25200 0 MST}
+ {-1615132800 -25200 0 MST}
{-1600614000 -21600 1 MDT}
{-1596816000 -25200 0 MST}
{-1567954800 -21600 1 MDT}
diff --git a/library/tzdata/America/Glace_Bay b/library/tzdata/America/Glace_Bay
index 84b4822..8ee9eec 100644
--- a/library/tzdata/America/Glace_Bay
+++ b/library/tzdata/America/Glace_Bay
@@ -4,7 +4,7 @@ set TZData(:America/Glace_Bay) {
{-9223372036854775808 -14388 0 LMT}
{-2131646412 -14400 0 AST}
{-1632074400 -10800 1 ADT}
- {-1614798000 -14400 0 AST}
+ {-1615143600 -14400 0 AST}
{-880221600 -10800 1 AWT}
{-769395600 -10800 1 APT}
{-765399600 -14400 0 AST}
diff --git a/library/tzdata/America/Goose_Bay b/library/tzdata/America/Goose_Bay
index f93b612..7b7b3d8 100644
--- a/library/tzdata/America/Goose_Bay
+++ b/library/tzdata/America/Goose_Bay
@@ -5,7 +5,7 @@ set TZData(:America/Goose_Bay) {
{-2713895900 -12652 0 NST}
{-1640982548 -12652 0 NST}
{-1632076148 -9052 1 NDT}
- {-1614799748 -12652 0 NST}
+ {-1615145348 -12652 0 NST}
{-1609446548 -12652 0 NST}
{-1096921748 -12600 0 NST}
{-1072989000 -12600 0 NST}
@@ -157,181 +157,182 @@ set TZData(:America/Goose_Bay) {
{1268539260 -10800 1 ADT}
{1289098860 -14400 0 AST}
{1299988860 -10800 1 ADT}
- {1320548460 -14400 0 AST}
- {1331438460 -10800 1 ADT}
- {1351998060 -14400 0 AST}
- {1362888060 -10800 1 ADT}
- {1383447660 -14400 0 AST}
- {1394337660 -10800 1 ADT}
- {1414897260 -14400 0 AST}
- {1425787260 -10800 1 ADT}
- {1446346860 -14400 0 AST}
- {1457841660 -10800 1 ADT}
- {1478401260 -14400 0 AST}
- {1489291260 -10800 1 ADT}
- {1509850860 -14400 0 AST}
- {1520740860 -10800 1 ADT}
- {1541300460 -14400 0 AST}
- {1552190460 -10800 1 ADT}
- {1572750060 -14400 0 AST}
- {1583640060 -10800 1 ADT}
- {1604199660 -14400 0 AST}
- {1615694460 -10800 1 ADT}
- {1636254060 -14400 0 AST}
- {1647144060 -10800 1 ADT}
- {1667703660 -14400 0 AST}
- {1678593660 -10800 1 ADT}
- {1699153260 -14400 0 AST}
- {1710043260 -10800 1 ADT}
- {1730602860 -14400 0 AST}
- {1741492860 -10800 1 ADT}
- {1762052460 -14400 0 AST}
- {1772942460 -10800 1 ADT}
- {1793502060 -14400 0 AST}
- {1804996860 -10800 1 ADT}
- {1825556460 -14400 0 AST}
- {1836446460 -10800 1 ADT}
- {1857006060 -14400 0 AST}
- {1867896060 -10800 1 ADT}
- {1888455660 -14400 0 AST}
- {1899345660 -10800 1 ADT}
- {1919905260 -14400 0 AST}
- {1930795260 -10800 1 ADT}
- {1951354860 -14400 0 AST}
- {1962849660 -10800 1 ADT}
- {1983409260 -14400 0 AST}
- {1994299260 -10800 1 ADT}
- {2014858860 -14400 0 AST}
- {2025748860 -10800 1 ADT}
- {2046308460 -14400 0 AST}
- {2057198460 -10800 1 ADT}
- {2077758060 -14400 0 AST}
- {2088648060 -10800 1 ADT}
- {2109207660 -14400 0 AST}
- {2120097660 -10800 1 ADT}
- {2140657260 -14400 0 AST}
- {2152152060 -10800 1 ADT}
- {2172711660 -14400 0 AST}
- {2183601660 -10800 1 ADT}
- {2204161260 -14400 0 AST}
- {2215051260 -10800 1 ADT}
- {2235610860 -14400 0 AST}
- {2246500860 -10800 1 ADT}
- {2267060460 -14400 0 AST}
- {2277950460 -10800 1 ADT}
- {2298510060 -14400 0 AST}
- {2309400060 -10800 1 ADT}
- {2329959660 -14400 0 AST}
- {2341454460 -10800 1 ADT}
- {2362014060 -14400 0 AST}
- {2372904060 -10800 1 ADT}
- {2393463660 -14400 0 AST}
- {2404353660 -10800 1 ADT}
- {2424913260 -14400 0 AST}
- {2435803260 -10800 1 ADT}
- {2456362860 -14400 0 AST}
- {2467252860 -10800 1 ADT}
- {2487812460 -14400 0 AST}
- {2499307260 -10800 1 ADT}
- {2519866860 -14400 0 AST}
- {2530756860 -10800 1 ADT}
- {2551316460 -14400 0 AST}
- {2562206460 -10800 1 ADT}
- {2582766060 -14400 0 AST}
- {2593656060 -10800 1 ADT}
- {2614215660 -14400 0 AST}
- {2625105660 -10800 1 ADT}
- {2645665260 -14400 0 AST}
- {2656555260 -10800 1 ADT}
- {2677114860 -14400 0 AST}
- {2688609660 -10800 1 ADT}
- {2709169260 -14400 0 AST}
- {2720059260 -10800 1 ADT}
- {2740618860 -14400 0 AST}
- {2751508860 -10800 1 ADT}
- {2772068460 -14400 0 AST}
- {2782958460 -10800 1 ADT}
- {2803518060 -14400 0 AST}
- {2814408060 -10800 1 ADT}
- {2834967660 -14400 0 AST}
- {2846462460 -10800 1 ADT}
- {2867022060 -14400 0 AST}
- {2877912060 -10800 1 ADT}
- {2898471660 -14400 0 AST}
- {2909361660 -10800 1 ADT}
- {2929921260 -14400 0 AST}
- {2940811260 -10800 1 ADT}
- {2961370860 -14400 0 AST}
- {2972260860 -10800 1 ADT}
- {2992820460 -14400 0 AST}
- {3003710460 -10800 1 ADT}
- {3024270060 -14400 0 AST}
- {3035764860 -10800 1 ADT}
- {3056324460 -14400 0 AST}
- {3067214460 -10800 1 ADT}
- {3087774060 -14400 0 AST}
- {3098664060 -10800 1 ADT}
- {3119223660 -14400 0 AST}
- {3130113660 -10800 1 ADT}
- {3150673260 -14400 0 AST}
- {3161563260 -10800 1 ADT}
- {3182122860 -14400 0 AST}
- {3193012860 -10800 1 ADT}
- {3213572460 -14400 0 AST}
- {3225067260 -10800 1 ADT}
- {3245626860 -14400 0 AST}
- {3256516860 -10800 1 ADT}
- {3277076460 -14400 0 AST}
- {3287966460 -10800 1 ADT}
- {3308526060 -14400 0 AST}
- {3319416060 -10800 1 ADT}
- {3339975660 -14400 0 AST}
- {3350865660 -10800 1 ADT}
- {3371425260 -14400 0 AST}
- {3382920060 -10800 1 ADT}
- {3403479660 -14400 0 AST}
- {3414369660 -10800 1 ADT}
- {3434929260 -14400 0 AST}
- {3445819260 -10800 1 ADT}
- {3466378860 -14400 0 AST}
- {3477268860 -10800 1 ADT}
- {3497828460 -14400 0 AST}
- {3508718460 -10800 1 ADT}
- {3529278060 -14400 0 AST}
- {3540168060 -10800 1 ADT}
- {3560727660 -14400 0 AST}
- {3572222460 -10800 1 ADT}
- {3592782060 -14400 0 AST}
- {3603672060 -10800 1 ADT}
- {3624231660 -14400 0 AST}
- {3635121660 -10800 1 ADT}
- {3655681260 -14400 0 AST}
- {3666571260 -10800 1 ADT}
- {3687130860 -14400 0 AST}
- {3698020860 -10800 1 ADT}
- {3718580460 -14400 0 AST}
- {3730075260 -10800 1 ADT}
- {3750634860 -14400 0 AST}
- {3761524860 -10800 1 ADT}
- {3782084460 -14400 0 AST}
- {3792974460 -10800 1 ADT}
- {3813534060 -14400 0 AST}
- {3824424060 -10800 1 ADT}
- {3844983660 -14400 0 AST}
- {3855873660 -10800 1 ADT}
- {3876433260 -14400 0 AST}
- {3887323260 -10800 1 ADT}
- {3907882860 -14400 0 AST}
- {3919377660 -10800 1 ADT}
- {3939937260 -14400 0 AST}
- {3950827260 -10800 1 ADT}
- {3971386860 -14400 0 AST}
- {3982276860 -10800 1 ADT}
- {4002836460 -14400 0 AST}
- {4013726460 -10800 1 ADT}
- {4034286060 -14400 0 AST}
- {4045176060 -10800 1 ADT}
- {4065735660 -14400 0 AST}
- {4076625660 -10800 1 ADT}
- {4097185260 -14400 0 AST}
+ {1320116400 -10800 0 ADT}
+ {1320555600 -14400 0 AST}
+ {1331445600 -10800 1 ADT}
+ {1352005200 -14400 0 AST}
+ {1362895200 -10800 1 ADT}
+ {1383454800 -14400 0 AST}
+ {1394344800 -10800 1 ADT}
+ {1414904400 -14400 0 AST}
+ {1425794400 -10800 1 ADT}
+ {1446354000 -14400 0 AST}
+ {1457848800 -10800 1 ADT}
+ {1478408400 -14400 0 AST}
+ {1489298400 -10800 1 ADT}
+ {1509858000 -14400 0 AST}
+ {1520748000 -10800 1 ADT}
+ {1541307600 -14400 0 AST}
+ {1552197600 -10800 1 ADT}
+ {1572757200 -14400 0 AST}
+ {1583647200 -10800 1 ADT}
+ {1604206800 -14400 0 AST}
+ {1615701600 -10800 1 ADT}
+ {1636261200 -14400 0 AST}
+ {1647151200 -10800 1 ADT}
+ {1667710800 -14400 0 AST}
+ {1678600800 -10800 1 ADT}
+ {1699160400 -14400 0 AST}
+ {1710050400 -10800 1 ADT}
+ {1730610000 -14400 0 AST}
+ {1741500000 -10800 1 ADT}
+ {1762059600 -14400 0 AST}
+ {1772949600 -10800 1 ADT}
+ {1793509200 -14400 0 AST}
+ {1805004000 -10800 1 ADT}
+ {1825563600 -14400 0 AST}
+ {1836453600 -10800 1 ADT}
+ {1857013200 -14400 0 AST}
+ {1867903200 -10800 1 ADT}
+ {1888462800 -14400 0 AST}
+ {1899352800 -10800 1 ADT}
+ {1919912400 -14400 0 AST}
+ {1930802400 -10800 1 ADT}
+ {1951362000 -14400 0 AST}
+ {1962856800 -10800 1 ADT}
+ {1983416400 -14400 0 AST}
+ {1994306400 -10800 1 ADT}
+ {2014866000 -14400 0 AST}
+ {2025756000 -10800 1 ADT}
+ {2046315600 -14400 0 AST}
+ {2057205600 -10800 1 ADT}
+ {2077765200 -14400 0 AST}
+ {2088655200 -10800 1 ADT}
+ {2109214800 -14400 0 AST}
+ {2120104800 -10800 1 ADT}
+ {2140664400 -14400 0 AST}
+ {2152159200 -10800 1 ADT}
+ {2172718800 -14400 0 AST}
+ {2183608800 -10800 1 ADT}
+ {2204168400 -14400 0 AST}
+ {2215058400 -10800 1 ADT}
+ {2235618000 -14400 0 AST}
+ {2246508000 -10800 1 ADT}
+ {2267067600 -14400 0 AST}
+ {2277957600 -10800 1 ADT}
+ {2298517200 -14400 0 AST}
+ {2309407200 -10800 1 ADT}
+ {2329966800 -14400 0 AST}
+ {2341461600 -10800 1 ADT}
+ {2362021200 -14400 0 AST}
+ {2372911200 -10800 1 ADT}
+ {2393470800 -14400 0 AST}
+ {2404360800 -10800 1 ADT}
+ {2424920400 -14400 0 AST}
+ {2435810400 -10800 1 ADT}
+ {2456370000 -14400 0 AST}
+ {2467260000 -10800 1 ADT}
+ {2487819600 -14400 0 AST}
+ {2499314400 -10800 1 ADT}
+ {2519874000 -14400 0 AST}
+ {2530764000 -10800 1 ADT}
+ {2551323600 -14400 0 AST}
+ {2562213600 -10800 1 ADT}
+ {2582773200 -14400 0 AST}
+ {2593663200 -10800 1 ADT}
+ {2614222800 -14400 0 AST}
+ {2625112800 -10800 1 ADT}
+ {2645672400 -14400 0 AST}
+ {2656562400 -10800 1 ADT}
+ {2677122000 -14400 0 AST}
+ {2688616800 -10800 1 ADT}
+ {2709176400 -14400 0 AST}
+ {2720066400 -10800 1 ADT}
+ {2740626000 -14400 0 AST}
+ {2751516000 -10800 1 ADT}
+ {2772075600 -14400 0 AST}
+ {2782965600 -10800 1 ADT}
+ {2803525200 -14400 0 AST}
+ {2814415200 -10800 1 ADT}
+ {2834974800 -14400 0 AST}
+ {2846469600 -10800 1 ADT}
+ {2867029200 -14400 0 AST}
+ {2877919200 -10800 1 ADT}
+ {2898478800 -14400 0 AST}
+ {2909368800 -10800 1 ADT}
+ {2929928400 -14400 0 AST}
+ {2940818400 -10800 1 ADT}
+ {2961378000 -14400 0 AST}
+ {2972268000 -10800 1 ADT}
+ {2992827600 -14400 0 AST}
+ {3003717600 -10800 1 ADT}
+ {3024277200 -14400 0 AST}
+ {3035772000 -10800 1 ADT}
+ {3056331600 -14400 0 AST}
+ {3067221600 -10800 1 ADT}
+ {3087781200 -14400 0 AST}
+ {3098671200 -10800 1 ADT}
+ {3119230800 -14400 0 AST}
+ {3130120800 -10800 1 ADT}
+ {3150680400 -14400 0 AST}
+ {3161570400 -10800 1 ADT}
+ {3182130000 -14400 0 AST}
+ {3193020000 -10800 1 ADT}
+ {3213579600 -14400 0 AST}
+ {3225074400 -10800 1 ADT}
+ {3245634000 -14400 0 AST}
+ {3256524000 -10800 1 ADT}
+ {3277083600 -14400 0 AST}
+ {3287973600 -10800 1 ADT}
+ {3308533200 -14400 0 AST}
+ {3319423200 -10800 1 ADT}
+ {3339982800 -14400 0 AST}
+ {3350872800 -10800 1 ADT}
+ {3371432400 -14400 0 AST}
+ {3382927200 -10800 1 ADT}
+ {3403486800 -14400 0 AST}
+ {3414376800 -10800 1 ADT}
+ {3434936400 -14400 0 AST}
+ {3445826400 -10800 1 ADT}
+ {3466386000 -14400 0 AST}
+ {3477276000 -10800 1 ADT}
+ {3497835600 -14400 0 AST}
+ {3508725600 -10800 1 ADT}
+ {3529285200 -14400 0 AST}
+ {3540175200 -10800 1 ADT}
+ {3560734800 -14400 0 AST}
+ {3572229600 -10800 1 ADT}
+ {3592789200 -14400 0 AST}
+ {3603679200 -10800 1 ADT}
+ {3624238800 -14400 0 AST}
+ {3635128800 -10800 1 ADT}
+ {3655688400 -14400 0 AST}
+ {3666578400 -10800 1 ADT}
+ {3687138000 -14400 0 AST}
+ {3698028000 -10800 1 ADT}
+ {3718587600 -14400 0 AST}
+ {3730082400 -10800 1 ADT}
+ {3750642000 -14400 0 AST}
+ {3761532000 -10800 1 ADT}
+ {3782091600 -14400 0 AST}
+ {3792981600 -10800 1 ADT}
+ {3813541200 -14400 0 AST}
+ {3824431200 -10800 1 ADT}
+ {3844990800 -14400 0 AST}
+ {3855880800 -10800 1 ADT}
+ {3876440400 -14400 0 AST}
+ {3887330400 -10800 1 ADT}
+ {3907890000 -14400 0 AST}
+ {3919384800 -10800 1 ADT}
+ {3939944400 -14400 0 AST}
+ {3950834400 -10800 1 ADT}
+ {3971394000 -14400 0 AST}
+ {3982284000 -10800 1 ADT}
+ {4002843600 -14400 0 AST}
+ {4013733600 -10800 1 ADT}
+ {4034293200 -14400 0 AST}
+ {4045183200 -10800 1 ADT}
+ {4065742800 -14400 0 AST}
+ {4076632800 -10800 1 ADT}
+ {4097192400 -14400 0 AST}
}
diff --git a/library/tzdata/America/Grand_Turk b/library/tzdata/America/Grand_Turk
index a455dd5..6c8ea4a 100644
--- a/library/tzdata/America/Grand_Turk
+++ b/library/tzdata/America/Grand_Turk
@@ -2,8 +2,8 @@
set TZData(:America/Grand_Turk) {
{-9223372036854775808 -17072 0 LMT}
- {-2524504528 -18432 0 KMT}
- {-1827687168 -18000 0 EST}
+ {-2524504528 -18431 0 KMT}
+ {-1827687169 -18000 0 EST}
{294217200 -14400 1 EDT}
{309938400 -18000 0 EST}
{325666800 -14400 1 EDT}
diff --git a/library/tzdata/America/Grenada b/library/tzdata/America/Grenada
index 3c2919b..92300c3 100644
--- a/library/tzdata/America/Grenada
+++ b/library/tzdata/America/Grenada
@@ -1,6 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/Grenada) {
- {-9223372036854775808 -14820 0 LMT}
- {-1846266780 -14400 0 AST}
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
}
+set TZData(:America/Grenada) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Guadeloupe b/library/tzdata/America/Guadeloupe
index b1987ce..aba6bd7 100644
--- a/library/tzdata/America/Guadeloupe
+++ b/library/tzdata/America/Guadeloupe
@@ -1,6 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/Guadeloupe) {
- {-9223372036854775808 -14768 0 LMT}
- {-1848254032 -14400 0 AST}
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
}
+set TZData(:America/Guadeloupe) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Halifax b/library/tzdata/America/Halifax
index 76f016a..08e3754 100644
--- a/library/tzdata/America/Halifax
+++ b/library/tzdata/America/Halifax
@@ -7,7 +7,7 @@ set TZData(:America/Halifax) {
{-1680469200 -14400 0 AST}
{-1640980800 -14400 0 AST}
{-1632074400 -10800 1 ADT}
- {-1614798000 -14400 0 AST}
+ {-1615143600 -14400 0 AST}
{-1609444800 -14400 0 AST}
{-1566763200 -10800 1 ADT}
{-1557090000 -14400 0 AST}
diff --git a/library/tzdata/America/Havana b/library/tzdata/America/Havana
index fd66cb6..89cbc9a 100644
--- a/library/tzdata/America/Havana
+++ b/library/tzdata/America/Havana
@@ -95,193 +95,191 @@ set TZData(:America/Havana) {
{1049605200 -14400 1 CDT}
{1067144400 -18000 0 CST}
{1081054800 -14400 1 CDT}
- {1112504400 -14400 1 CDT}
- {1143954000 -14400 1 CDT}
{1162098000 -18000 0 CST}
{1173589200 -14400 1 CDT}
{1193547600 -18000 0 CST}
{1205643600 -14400 1 CDT}
{1224997200 -18000 0 CST}
- {1237093200 -14400 1 CDT}
+ {1236488400 -14400 1 CDT}
{1256446800 -18000 0 CST}
- {1269147600 -14400 1 CDT}
+ {1268542800 -14400 1 CDT}
{1288501200 -18000 0 CST}
{1300597200 -14400 1 CDT}
- {1319950800 -18000 0 CST}
- {1332046800 -14400 1 CDT}
- {1351400400 -18000 0 CST}
- {1363496400 -14400 1 CDT}
- {1382850000 -18000 0 CST}
- {1394946000 -14400 1 CDT}
- {1414299600 -18000 0 CST}
- {1426395600 -14400 1 CDT}
- {1445749200 -18000 0 CST}
- {1458450000 -14400 1 CDT}
- {1477803600 -18000 0 CST}
- {1489899600 -14400 1 CDT}
- {1509253200 -18000 0 CST}
- {1521349200 -14400 1 CDT}
- {1540702800 -18000 0 CST}
- {1552798800 -14400 1 CDT}
- {1572152400 -18000 0 CST}
- {1584248400 -14400 1 CDT}
- {1603602000 -18000 0 CST}
- {1616302800 -14400 1 CDT}
- {1635656400 -18000 0 CST}
- {1647752400 -14400 1 CDT}
- {1667106000 -18000 0 CST}
- {1679202000 -14400 1 CDT}
- {1698555600 -18000 0 CST}
- {1710651600 -14400 1 CDT}
- {1730005200 -18000 0 CST}
- {1742101200 -14400 1 CDT}
- {1761454800 -18000 0 CST}
- {1773550800 -14400 1 CDT}
- {1792904400 -18000 0 CST}
- {1805605200 -14400 1 CDT}
- {1824958800 -18000 0 CST}
- {1837054800 -14400 1 CDT}
- {1856408400 -18000 0 CST}
- {1868504400 -14400 1 CDT}
- {1887858000 -18000 0 CST}
- {1899954000 -14400 1 CDT}
- {1919307600 -18000 0 CST}
- {1931403600 -14400 1 CDT}
- {1950757200 -18000 0 CST}
- {1963458000 -14400 1 CDT}
- {1982811600 -18000 0 CST}
- {1994907600 -14400 1 CDT}
- {2014261200 -18000 0 CST}
- {2026357200 -14400 1 CDT}
- {2045710800 -18000 0 CST}
- {2057806800 -14400 1 CDT}
- {2077160400 -18000 0 CST}
- {2089256400 -14400 1 CDT}
- {2108610000 -18000 0 CST}
- {2120706000 -14400 1 CDT}
- {2140059600 -18000 0 CST}
- {2152760400 -14400 1 CDT}
- {2172114000 -18000 0 CST}
- {2184210000 -14400 1 CDT}
- {2203563600 -18000 0 CST}
- {2215659600 -14400 1 CDT}
- {2235013200 -18000 0 CST}
- {2247109200 -14400 1 CDT}
- {2266462800 -18000 0 CST}
- {2278558800 -14400 1 CDT}
- {2297912400 -18000 0 CST}
- {2310008400 -14400 1 CDT}
- {2329362000 -18000 0 CST}
- {2342062800 -14400 1 CDT}
- {2361416400 -18000 0 CST}
- {2373512400 -14400 1 CDT}
- {2392866000 -18000 0 CST}
- {2404962000 -14400 1 CDT}
- {2424315600 -18000 0 CST}
- {2436411600 -14400 1 CDT}
- {2455765200 -18000 0 CST}
- {2467861200 -14400 1 CDT}
- {2487214800 -18000 0 CST}
- {2499915600 -14400 1 CDT}
- {2519269200 -18000 0 CST}
- {2531365200 -14400 1 CDT}
- {2550718800 -18000 0 CST}
- {2562814800 -14400 1 CDT}
- {2582168400 -18000 0 CST}
- {2594264400 -14400 1 CDT}
- {2613618000 -18000 0 CST}
- {2625714000 -14400 1 CDT}
- {2645067600 -18000 0 CST}
- {2657163600 -14400 1 CDT}
- {2676517200 -18000 0 CST}
- {2689218000 -14400 1 CDT}
- {2708571600 -18000 0 CST}
- {2720667600 -14400 1 CDT}
- {2740021200 -18000 0 CST}
- {2752117200 -14400 1 CDT}
- {2771470800 -18000 0 CST}
- {2783566800 -14400 1 CDT}
- {2802920400 -18000 0 CST}
- {2815016400 -14400 1 CDT}
- {2834370000 -18000 0 CST}
- {2847070800 -14400 1 CDT}
- {2866424400 -18000 0 CST}
- {2878520400 -14400 1 CDT}
- {2897874000 -18000 0 CST}
- {2909970000 -14400 1 CDT}
- {2929323600 -18000 0 CST}
- {2941419600 -14400 1 CDT}
- {2960773200 -18000 0 CST}
- {2972869200 -14400 1 CDT}
- {2992222800 -18000 0 CST}
- {3004318800 -14400 1 CDT}
- {3023672400 -18000 0 CST}
- {3036373200 -14400 1 CDT}
- {3055726800 -18000 0 CST}
- {3067822800 -14400 1 CDT}
- {3087176400 -18000 0 CST}
- {3099272400 -14400 1 CDT}
- {3118626000 -18000 0 CST}
- {3130722000 -14400 1 CDT}
- {3150075600 -18000 0 CST}
- {3162171600 -14400 1 CDT}
- {3181525200 -18000 0 CST}
- {3193621200 -14400 1 CDT}
- {3212974800 -18000 0 CST}
- {3225675600 -14400 1 CDT}
- {3245029200 -18000 0 CST}
- {3257125200 -14400 1 CDT}
- {3276478800 -18000 0 CST}
- {3288574800 -14400 1 CDT}
- {3307928400 -18000 0 CST}
- {3320024400 -14400 1 CDT}
- {3339378000 -18000 0 CST}
- {3351474000 -14400 1 CDT}
- {3370827600 -18000 0 CST}
- {3383528400 -14400 1 CDT}
- {3402882000 -18000 0 CST}
- {3414978000 -14400 1 CDT}
- {3434331600 -18000 0 CST}
- {3446427600 -14400 1 CDT}
- {3465781200 -18000 0 CST}
- {3477877200 -14400 1 CDT}
- {3497230800 -18000 0 CST}
- {3509326800 -14400 1 CDT}
- {3528680400 -18000 0 CST}
- {3540776400 -14400 1 CDT}
- {3560130000 -18000 0 CST}
- {3572830800 -14400 1 CDT}
- {3592184400 -18000 0 CST}
- {3604280400 -14400 1 CDT}
- {3623634000 -18000 0 CST}
- {3635730000 -14400 1 CDT}
- {3655083600 -18000 0 CST}
- {3667179600 -14400 1 CDT}
- {3686533200 -18000 0 CST}
- {3698629200 -14400 1 CDT}
- {3717982800 -18000 0 CST}
- {3730683600 -14400 1 CDT}
- {3750037200 -18000 0 CST}
- {3762133200 -14400 1 CDT}
- {3781486800 -18000 0 CST}
- {3793582800 -14400 1 CDT}
- {3812936400 -18000 0 CST}
- {3825032400 -14400 1 CDT}
- {3844386000 -18000 0 CST}
- {3856482000 -14400 1 CDT}
- {3875835600 -18000 0 CST}
- {3887931600 -14400 1 CDT}
- {3907285200 -18000 0 CST}
- {3919986000 -14400 1 CDT}
- {3939339600 -18000 0 CST}
- {3951435600 -14400 1 CDT}
- {3970789200 -18000 0 CST}
- {3982885200 -14400 1 CDT}
- {4002238800 -18000 0 CST}
- {4014334800 -14400 1 CDT}
- {4033688400 -18000 0 CST}
- {4045784400 -14400 1 CDT}
- {4065138000 -18000 0 CST}
- {4077234000 -14400 1 CDT}
- {4096587600 -18000 0 CST}
+ {1321160400 -18000 0 CST}
+ {1333256400 -14400 1 CDT}
+ {1352005200 -18000 0 CST}
+ {1362891600 -14400 1 CDT}
+ {1383454800 -18000 0 CST}
+ {1394341200 -14400 1 CDT}
+ {1414904400 -18000 0 CST}
+ {1425790800 -14400 1 CDT}
+ {1446354000 -18000 0 CST}
+ {1457845200 -14400 1 CDT}
+ {1478408400 -18000 0 CST}
+ {1489294800 -14400 1 CDT}
+ {1509858000 -18000 0 CST}
+ {1520744400 -14400 1 CDT}
+ {1541307600 -18000 0 CST}
+ {1552194000 -14400 1 CDT}
+ {1572757200 -18000 0 CST}
+ {1583643600 -14400 1 CDT}
+ {1604206800 -18000 0 CST}
+ {1615698000 -14400 1 CDT}
+ {1636261200 -18000 0 CST}
+ {1647147600 -14400 1 CDT}
+ {1667710800 -18000 0 CST}
+ {1678597200 -14400 1 CDT}
+ {1699160400 -18000 0 CST}
+ {1710046800 -14400 1 CDT}
+ {1730610000 -18000 0 CST}
+ {1741496400 -14400 1 CDT}
+ {1762059600 -18000 0 CST}
+ {1772946000 -14400 1 CDT}
+ {1793509200 -18000 0 CST}
+ {1805000400 -14400 1 CDT}
+ {1825563600 -18000 0 CST}
+ {1836450000 -14400 1 CDT}
+ {1857013200 -18000 0 CST}
+ {1867899600 -14400 1 CDT}
+ {1888462800 -18000 0 CST}
+ {1899349200 -14400 1 CDT}
+ {1919912400 -18000 0 CST}
+ {1930798800 -14400 1 CDT}
+ {1951362000 -18000 0 CST}
+ {1962853200 -14400 1 CDT}
+ {1983416400 -18000 0 CST}
+ {1994302800 -14400 1 CDT}
+ {2014866000 -18000 0 CST}
+ {2025752400 -14400 1 CDT}
+ {2046315600 -18000 0 CST}
+ {2057202000 -14400 1 CDT}
+ {2077765200 -18000 0 CST}
+ {2088651600 -14400 1 CDT}
+ {2109214800 -18000 0 CST}
+ {2120101200 -14400 1 CDT}
+ {2140664400 -18000 0 CST}
+ {2152155600 -14400 1 CDT}
+ {2172718800 -18000 0 CST}
+ {2183605200 -14400 1 CDT}
+ {2204168400 -18000 0 CST}
+ {2215054800 -14400 1 CDT}
+ {2235618000 -18000 0 CST}
+ {2246504400 -14400 1 CDT}
+ {2267067600 -18000 0 CST}
+ {2277954000 -14400 1 CDT}
+ {2298517200 -18000 0 CST}
+ {2309403600 -14400 1 CDT}
+ {2329966800 -18000 0 CST}
+ {2341458000 -14400 1 CDT}
+ {2362021200 -18000 0 CST}
+ {2372907600 -14400 1 CDT}
+ {2393470800 -18000 0 CST}
+ {2404357200 -14400 1 CDT}
+ {2424920400 -18000 0 CST}
+ {2435806800 -14400 1 CDT}
+ {2456370000 -18000 0 CST}
+ {2467256400 -14400 1 CDT}
+ {2487819600 -18000 0 CST}
+ {2499310800 -14400 1 CDT}
+ {2519874000 -18000 0 CST}
+ {2530760400 -14400 1 CDT}
+ {2551323600 -18000 0 CST}
+ {2562210000 -14400 1 CDT}
+ {2582773200 -18000 0 CST}
+ {2593659600 -14400 1 CDT}
+ {2614222800 -18000 0 CST}
+ {2625109200 -14400 1 CDT}
+ {2645672400 -18000 0 CST}
+ {2656558800 -14400 1 CDT}
+ {2677122000 -18000 0 CST}
+ {2688613200 -14400 1 CDT}
+ {2709176400 -18000 0 CST}
+ {2720062800 -14400 1 CDT}
+ {2740626000 -18000 0 CST}
+ {2751512400 -14400 1 CDT}
+ {2772075600 -18000 0 CST}
+ {2782962000 -14400 1 CDT}
+ {2803525200 -18000 0 CST}
+ {2814411600 -14400 1 CDT}
+ {2834974800 -18000 0 CST}
+ {2846466000 -14400 1 CDT}
+ {2867029200 -18000 0 CST}
+ {2877915600 -14400 1 CDT}
+ {2898478800 -18000 0 CST}
+ {2909365200 -14400 1 CDT}
+ {2929928400 -18000 0 CST}
+ {2940814800 -14400 1 CDT}
+ {2961378000 -18000 0 CST}
+ {2972264400 -14400 1 CDT}
+ {2992827600 -18000 0 CST}
+ {3003714000 -14400 1 CDT}
+ {3024277200 -18000 0 CST}
+ {3035768400 -14400 1 CDT}
+ {3056331600 -18000 0 CST}
+ {3067218000 -14400 1 CDT}
+ {3087781200 -18000 0 CST}
+ {3098667600 -14400 1 CDT}
+ {3119230800 -18000 0 CST}
+ {3130117200 -14400 1 CDT}
+ {3150680400 -18000 0 CST}
+ {3161566800 -14400 1 CDT}
+ {3182130000 -18000 0 CST}
+ {3193016400 -14400 1 CDT}
+ {3213579600 -18000 0 CST}
+ {3225070800 -14400 1 CDT}
+ {3245634000 -18000 0 CST}
+ {3256520400 -14400 1 CDT}
+ {3277083600 -18000 0 CST}
+ {3287970000 -14400 1 CDT}
+ {3308533200 -18000 0 CST}
+ {3319419600 -14400 1 CDT}
+ {3339982800 -18000 0 CST}
+ {3350869200 -14400 1 CDT}
+ {3371432400 -18000 0 CST}
+ {3382923600 -14400 1 CDT}
+ {3403486800 -18000 0 CST}
+ {3414373200 -14400 1 CDT}
+ {3434936400 -18000 0 CST}
+ {3445822800 -14400 1 CDT}
+ {3466386000 -18000 0 CST}
+ {3477272400 -14400 1 CDT}
+ {3497835600 -18000 0 CST}
+ {3508722000 -14400 1 CDT}
+ {3529285200 -18000 0 CST}
+ {3540171600 -14400 1 CDT}
+ {3560734800 -18000 0 CST}
+ {3572226000 -14400 1 CDT}
+ {3592789200 -18000 0 CST}
+ {3603675600 -14400 1 CDT}
+ {3624238800 -18000 0 CST}
+ {3635125200 -14400 1 CDT}
+ {3655688400 -18000 0 CST}
+ {3666574800 -14400 1 CDT}
+ {3687138000 -18000 0 CST}
+ {3698024400 -14400 1 CDT}
+ {3718587600 -18000 0 CST}
+ {3730078800 -14400 1 CDT}
+ {3750642000 -18000 0 CST}
+ {3761528400 -14400 1 CDT}
+ {3782091600 -18000 0 CST}
+ {3792978000 -14400 1 CDT}
+ {3813541200 -18000 0 CST}
+ {3824427600 -14400 1 CDT}
+ {3844990800 -18000 0 CST}
+ {3855877200 -14400 1 CDT}
+ {3876440400 -18000 0 CST}
+ {3887326800 -14400 1 CDT}
+ {3907890000 -18000 0 CST}
+ {3919381200 -14400 1 CDT}
+ {3939944400 -18000 0 CST}
+ {3950830800 -14400 1 CDT}
+ {3971394000 -18000 0 CST}
+ {3982280400 -14400 1 CDT}
+ {4002843600 -18000 0 CST}
+ {4013730000 -14400 1 CDT}
+ {4034293200 -18000 0 CST}
+ {4045179600 -14400 1 CDT}
+ {4065742800 -18000 0 CST}
+ {4076629200 -14400 1 CDT}
+ {4097192400 -18000 0 CST}
}
diff --git a/library/tzdata/America/Indiana/Petersburg b/library/tzdata/America/Indiana/Petersburg
index 6992bfc..6992bfc 100755..100644
--- a/library/tzdata/America/Indiana/Petersburg
+++ b/library/tzdata/America/Indiana/Petersburg
diff --git a/library/tzdata/America/Indiana/Tell_City b/library/tzdata/America/Indiana/Tell_City
index 9eebcf7..9eebcf7 100755..100644
--- a/library/tzdata/America/Indiana/Tell_City
+++ b/library/tzdata/America/Indiana/Tell_City
diff --git a/library/tzdata/America/Indiana/Vincennes b/library/tzdata/America/Indiana/Vincennes
index 1af7fc9..1af7fc9 100755..100644
--- a/library/tzdata/America/Indiana/Vincennes
+++ b/library/tzdata/America/Indiana/Vincennes
diff --git a/library/tzdata/America/Indiana/Winamac b/library/tzdata/America/Indiana/Winamac
index fb6cd37..fb6cd37 100755..100644
--- a/library/tzdata/America/Indiana/Winamac
+++ b/library/tzdata/America/Indiana/Winamac
diff --git a/library/tzdata/America/Jamaica b/library/tzdata/America/Jamaica
index 393d90a8..682e47c 100644
--- a/library/tzdata/America/Jamaica
+++ b/library/tzdata/America/Jamaica
@@ -1,9 +1,9 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Jamaica) {
- {-9223372036854775808 -18432 0 LMT}
- {-2524503168 -18432 0 KMT}
- {-1827687168 -18000 0 EST}
+ {-9223372036854775808 -18431 0 LMT}
+ {-2524503169 -18431 0 KMT}
+ {-1827687169 -18000 0 EST}
{136364400 -14400 0 EDT}
{152085600 -18000 0 EST}
{162370800 -14400 1 EDT}
diff --git a/library/tzdata/America/Juneau b/library/tzdata/America/Juneau
index 88fe0ce..fead810 100644
--- a/library/tzdata/America/Juneau
+++ b/library/tzdata/America/Juneau
@@ -32,8 +32,9 @@ set TZData(:America/Juneau) {
{278499600 -28800 0 PST}
{294228000 -25200 1 PDT}
{309949200 -28800 0 PST}
- {325677600 -25200 1 PDT}
- {341398800 -28800 0 PST}
+ {325677600 -32400 0 YST}
+ {325681200 -28800 1 YDT}
+ {341406000 -28800 0 PST}
{357127200 -25200 1 PDT}
{372848400 -28800 0 PST}
{388576800 -25200 1 PDT}
diff --git a/library/tzdata/America/Kralendijk b/library/tzdata/America/Kralendijk
new file mode 100644
index 0000000..8b6db86
--- /dev/null
+++ b/library/tzdata/America/Kralendijk
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Curacao)]} {
+ LoadTimeZoneFile America/Curacao
+}
+set TZData(:America/Kralendijk) $TZData(:America/Curacao)
diff --git a/library/tzdata/America/Lower_Princes b/library/tzdata/America/Lower_Princes
new file mode 100644
index 0000000..94c9197
--- /dev/null
+++ b/library/tzdata/America/Lower_Princes
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Curacao)]} {
+ LoadTimeZoneFile America/Curacao
+}
+set TZData(:America/Lower_Princes) $TZData(:America/Curacao)
diff --git a/library/tzdata/America/Marigot b/library/tzdata/America/Marigot
index 9f3f8f6..c2b3873 100644
--- a/library/tzdata/America/Marigot
+++ b/library/tzdata/America/Marigot
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Guadeloupe)]} {
- LoadTimeZoneFile America/Guadeloupe
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
}
-set TZData(:America/Marigot) $TZData(:America/Guadeloupe)
+set TZData(:America/Marigot) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Matamoros b/library/tzdata/America/Matamoros
new file mode 100644
index 0000000..2b98652
--- /dev/null
+++ b/library/tzdata/America/Matamoros
@@ -0,0 +1,219 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Matamoros) {
+ {-9223372036854775808 -24000 0 LMT}
+ {-1514743200 -21600 0 CST}
+ {568015200 -21600 0 CST}
+ {576057600 -18000 1 CDT}
+ {594198000 -21600 0 CST}
+ {599637600 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {891763200 -18000 1 CDT}
+ {909298800 -21600 0 CST}
+ {923212800 -18000 1 CDT}
+ {941353200 -21600 0 CST}
+ {954662400 -18000 1 CDT}
+ {972802800 -21600 0 CST}
+ {989136000 -18000 1 CDT}
+ {1001833200 -21600 0 CST}
+ {1018166400 -18000 1 CDT}
+ {1035702000 -21600 0 CST}
+ {1049616000 -18000 1 CDT}
+ {1067151600 -21600 0 CST}
+ {1081065600 -18000 1 CDT}
+ {1099206000 -21600 0 CST}
+ {1112515200 -18000 1 CDT}
+ {1130655600 -21600 0 CST}
+ {1143964800 -18000 1 CDT}
+ {1162105200 -21600 0 CST}
+ {1175414400 -18000 1 CDT}
+ {1193554800 -21600 0 CST}
+ {1207468800 -18000 1 CDT}
+ {1225004400 -21600 0 CST}
+ {1238918400 -18000 1 CDT}
+ {1256454000 -21600 0 CST}
+ {1262325600 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/Metlakatla b/library/tzdata/America/Metlakatla
new file mode 100644
index 0000000..e8af1c0
--- /dev/null
+++ b/library/tzdata/America/Metlakatla
@@ -0,0 +1,43 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Metlakatla) {
+ {-9223372036854775808 54822 0 LMT}
+ {-3225366822 -31578 0 LMT}
+ {-2188955622 -28800 0 PST}
+ {-883584000 -28800 0 PST}
+ {-880207200 -25200 1 PWT}
+ {-769395600 -25200 1 PPT}
+ {-765385200 -28800 0 PST}
+ {-757353600 -28800 0 PST}
+ {-31507200 -28800 0 PST}
+ {-21477600 -25200 1 PDT}
+ {-5756400 -28800 0 PST}
+ {9972000 -25200 1 PDT}
+ {25693200 -28800 0 PST}
+ {41421600 -25200 1 PDT}
+ {57747600 -28800 0 PST}
+ {73476000 -25200 1 PDT}
+ {89197200 -28800 0 PST}
+ {104925600 -25200 1 PDT}
+ {120646800 -28800 0 PST}
+ {126698400 -25200 1 PDT}
+ {152096400 -28800 0 PST}
+ {162381600 -25200 1 PDT}
+ {183546000 -28800 0 PST}
+ {199274400 -25200 1 PDT}
+ {215600400 -28800 0 PST}
+ {230724000 -25200 1 PDT}
+ {247050000 -28800 0 PST}
+ {262778400 -25200 1 PDT}
+ {278499600 -28800 0 PST}
+ {294228000 -25200 1 PDT}
+ {309949200 -28800 0 PST}
+ {325677600 -25200 1 PDT}
+ {341398800 -28800 0 PST}
+ {357127200 -25200 1 PDT}
+ {372848400 -28800 0 PST}
+ {388576800 -25200 1 PDT}
+ {404902800 -28800 0 PST}
+ {420026400 -25200 1 PDT}
+ {436356000 -28800 0 MeST}
+}
diff --git a/library/tzdata/America/Moncton b/library/tzdata/America/Moncton
index 408e3a1..d286c88 100755..100644
--- a/library/tzdata/America/Moncton
+++ b/library/tzdata/America/Moncton
@@ -5,7 +5,7 @@ set TZData(:America/Moncton) {
{-2715882052 -18000 0 EST}
{-2131642800 -14400 0 AST}
{-1632074400 -10800 1 ADT}
- {-1614798000 -14400 0 AST}
+ {-1615143600 -14400 0 AST}
{-1167595200 -14400 0 AST}
{-1153681200 -10800 1 ADT}
{-1145822400 -14400 0 AST}
diff --git a/library/tzdata/America/Montreal b/library/tzdata/America/Montreal
index b9535eb..bebe7dc 100644
--- a/library/tzdata/America/Montreal
+++ b/library/tzdata/America/Montreal
@@ -7,7 +7,7 @@ set TZData(:America/Montreal) {
{-1662753600 -18000 0 EST}
{-1640977200 -18000 0 EST}
{-1632070800 -14400 1 EDT}
- {-1614794400 -18000 0 EST}
+ {-1615140000 -18000 0 EST}
{-1609441200 -18000 0 EST}
{-1601742600 -14400 1 EDT}
{-1583775000 -18000 0 EST}
diff --git a/library/tzdata/America/Montserrat b/library/tzdata/America/Montserrat
index 4d82766..0a656d3 100644
--- a/library/tzdata/America/Montserrat
+++ b/library/tzdata/America/Montserrat
@@ -1,6 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/Montserrat) {
- {-9223372036854775808 -14932 0 LMT}
- {-1846266608 -14400 0 AST}
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
}
+set TZData(:America/Montserrat) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Nassau b/library/tzdata/America/Nassau
index 06c5f06..1c35e93 100644
--- a/library/tzdata/America/Nassau
+++ b/library/tzdata/America/Nassau
@@ -1,8 +1,8 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:America/Nassau) {
- {-9223372036854775808 -18564 0 LMT}
- {-1825095036 -18000 0 EST}
+ {-9223372036854775808 -18570 0 LMT}
+ {-1825095030 -18000 0 EST}
{-179341200 -14400 1 EDT}
{-163620000 -18000 0 EST}
{-147891600 -14400 1 EDT}
diff --git a/library/tzdata/America/Nipigon b/library/tzdata/America/Nipigon
index e98bb8c..30690aa 100644
--- a/library/tzdata/America/Nipigon
+++ b/library/tzdata/America/Nipigon
@@ -4,7 +4,7 @@ set TZData(:America/Nipigon) {
{-9223372036854775808 -21184 0 LMT}
{-2366734016 -18000 0 EST}
{-1632070800 -14400 1 EDT}
- {-1614794400 -18000 0 EST}
+ {-1615140000 -18000 0 EST}
{-923252400 -14400 1 EDT}
{-880218000 -14400 0 EWT}
{-769395600 -14400 1 EPT}
diff --git a/library/tzdata/America/North_Dakota/Beulah b/library/tzdata/America/North_Dakota/Beulah
new file mode 100644
index 0000000..95407c6
--- /dev/null
+++ b/library/tzdata/America/North_Dakota/Beulah
@@ -0,0 +1,279 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/North_Dakota/Beulah) {
+ {-9223372036854775808 -24427 0 LMT}
+ {-2717643600 -25200 0 MST}
+ {-1633273200 -21600 1 MDT}
+ {-1615132800 -25200 0 MST}
+ {-1601823600 -21600 1 MDT}
+ {-1583683200 -25200 0 MST}
+ {-880210800 -21600 1 MWT}
+ {-769395600 -21600 1 MPT}
+ {-765388800 -25200 0 MST}
+ {-84380400 -21600 1 MDT}
+ {-68659200 -25200 0 MST}
+ {-52930800 -21600 1 MDT}
+ {-37209600 -25200 0 MST}
+ {-21481200 -21600 1 MDT}
+ {-5760000 -25200 0 MST}
+ {9968400 -21600 1 MDT}
+ {25689600 -25200 0 MST}
+ {41418000 -21600 1 MDT}
+ {57744000 -25200 0 MST}
+ {73472400 -21600 1 MDT}
+ {89193600 -25200 0 MST}
+ {104922000 -21600 1 MDT}
+ {120643200 -25200 0 MST}
+ {126694800 -21600 1 MDT}
+ {152092800 -25200 0 MST}
+ {162378000 -21600 1 MDT}
+ {183542400 -25200 0 MST}
+ {199270800 -21600 1 MDT}
+ {215596800 -25200 0 MST}
+ {230720400 -21600 1 MDT}
+ {247046400 -25200 0 MST}
+ {262774800 -21600 1 MDT}
+ {278496000 -25200 0 MST}
+ {294224400 -21600 1 MDT}
+ {309945600 -25200 0 MST}
+ {325674000 -21600 1 MDT}
+ {341395200 -25200 0 MST}
+ {357123600 -21600 1 MDT}
+ {372844800 -25200 0 MST}
+ {388573200 -21600 1 MDT}
+ {404899200 -25200 0 MST}
+ {420022800 -21600 1 MDT}
+ {436348800 -25200 0 MST}
+ {452077200 -21600 1 MDT}
+ {467798400 -25200 0 MST}
+ {483526800 -21600 1 MDT}
+ {499248000 -25200 0 MST}
+ {514976400 -21600 1 MDT}
+ {530697600 -25200 0 MST}
+ {544611600 -21600 1 MDT}
+ {562147200 -25200 0 MST}
+ {576061200 -21600 1 MDT}
+ {594201600 -25200 0 MST}
+ {607510800 -21600 1 MDT}
+ {625651200 -25200 0 MST}
+ {638960400 -21600 1 MDT}
+ {657100800 -25200 0 MST}
+ {671014800 -21600 1 MDT}
+ {688550400 -25200 0 MST}
+ {702464400 -21600 1 MDT}
+ {720000000 -25200 0 MST}
+ {733914000 -21600 1 MDT}
+ {752054400 -25200 0 MST}
+ {765363600 -21600 1 MDT}
+ {783504000 -25200 0 MST}
+ {796813200 -21600 1 MDT}
+ {814953600 -25200 0 MST}
+ {828867600 -21600 1 MDT}
+ {846403200 -25200 0 MST}
+ {860317200 -21600 1 MDT}
+ {877852800 -25200 0 MST}
+ {891766800 -21600 1 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {986115600 -21600 1 MDT}
+ {1004256000 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1173603600 -21600 1 MDT}
+ {1194163200 -25200 0 MST}
+ {1205053200 -21600 1 MDT}
+ {1225612800 -25200 0 MST}
+ {1236502800 -21600 1 MDT}
+ {1257062400 -25200 0 MST}
+ {1268557200 -21600 1 MDT}
+ {1289120400 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
+}
diff --git a/library/tzdata/America/North_Dakota/New_Salem b/library/tzdata/America/North_Dakota/New_Salem
index 5a9d229..5a9d229 100755..100644
--- a/library/tzdata/America/North_Dakota/New_Salem
+++ b/library/tzdata/America/North_Dakota/New_Salem
diff --git a/library/tzdata/America/Ojinaga b/library/tzdata/America/Ojinaga
new file mode 100644
index 0000000..1172708
--- /dev/null
+++ b/library/tzdata/America/Ojinaga
@@ -0,0 +1,222 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Ojinaga) {
+ {-9223372036854775808 -25060 0 LMT}
+ {-1514739600 -25200 0 MST}
+ {-1343066400 -21600 0 CST}
+ {-1234807200 -25200 0 MST}
+ {-1220292000 -21600 0 CST}
+ {-1207159200 -25200 0 MST}
+ {-1191344400 -21600 0 CST}
+ {820476000 -21600 0 CST}
+ {828864000 -18000 1 CDT}
+ {846399600 -21600 0 CST}
+ {860313600 -18000 1 CDT}
+ {877849200 -21600 0 CST}
+ {883634400 -21600 0 CST}
+ {891766800 -21600 0 MDT}
+ {909302400 -25200 0 MST}
+ {923216400 -21600 1 MDT}
+ {941356800 -25200 0 MST}
+ {954666000 -21600 1 MDT}
+ {972806400 -25200 0 MST}
+ {989139600 -21600 1 MDT}
+ {1001836800 -25200 0 MST}
+ {1018170000 -21600 1 MDT}
+ {1035705600 -25200 0 MST}
+ {1049619600 -21600 1 MDT}
+ {1067155200 -25200 0 MST}
+ {1081069200 -21600 1 MDT}
+ {1099209600 -25200 0 MST}
+ {1112518800 -21600 1 MDT}
+ {1130659200 -25200 0 MST}
+ {1143968400 -21600 1 MDT}
+ {1162108800 -25200 0 MST}
+ {1175418000 -21600 1 MDT}
+ {1193558400 -25200 0 MST}
+ {1207472400 -21600 1 MDT}
+ {1225008000 -25200 0 MST}
+ {1238922000 -21600 1 MDT}
+ {1256457600 -25200 0 MST}
+ {1262329200 -25200 0 MST}
+ {1268557200 -21600 1 MDT}
+ {1289116800 -25200 0 MST}
+ {1300006800 -21600 1 MDT}
+ {1320566400 -25200 0 MST}
+ {1331456400 -21600 1 MDT}
+ {1352016000 -25200 0 MST}
+ {1362906000 -21600 1 MDT}
+ {1383465600 -25200 0 MST}
+ {1394355600 -21600 1 MDT}
+ {1414915200 -25200 0 MST}
+ {1425805200 -21600 1 MDT}
+ {1446364800 -25200 0 MST}
+ {1457859600 -21600 1 MDT}
+ {1478419200 -25200 0 MST}
+ {1489309200 -21600 1 MDT}
+ {1509868800 -25200 0 MST}
+ {1520758800 -21600 1 MDT}
+ {1541318400 -25200 0 MST}
+ {1552208400 -21600 1 MDT}
+ {1572768000 -25200 0 MST}
+ {1583658000 -21600 1 MDT}
+ {1604217600 -25200 0 MST}
+ {1615712400 -21600 1 MDT}
+ {1636272000 -25200 0 MST}
+ {1647162000 -21600 1 MDT}
+ {1667721600 -25200 0 MST}
+ {1678611600 -21600 1 MDT}
+ {1699171200 -25200 0 MST}
+ {1710061200 -21600 1 MDT}
+ {1730620800 -25200 0 MST}
+ {1741510800 -21600 1 MDT}
+ {1762070400 -25200 0 MST}
+ {1772960400 -21600 1 MDT}
+ {1793520000 -25200 0 MST}
+ {1805014800 -21600 1 MDT}
+ {1825574400 -25200 0 MST}
+ {1836464400 -21600 1 MDT}
+ {1857024000 -25200 0 MST}
+ {1867914000 -21600 1 MDT}
+ {1888473600 -25200 0 MST}
+ {1899363600 -21600 1 MDT}
+ {1919923200 -25200 0 MST}
+ {1930813200 -21600 1 MDT}
+ {1951372800 -25200 0 MST}
+ {1962867600 -21600 1 MDT}
+ {1983427200 -25200 0 MST}
+ {1994317200 -21600 1 MDT}
+ {2014876800 -25200 0 MST}
+ {2025766800 -21600 1 MDT}
+ {2046326400 -25200 0 MST}
+ {2057216400 -21600 1 MDT}
+ {2077776000 -25200 0 MST}
+ {2088666000 -21600 1 MDT}
+ {2109225600 -25200 0 MST}
+ {2120115600 -21600 1 MDT}
+ {2140675200 -25200 0 MST}
+ {2152170000 -21600 1 MDT}
+ {2172729600 -25200 0 MST}
+ {2183619600 -21600 1 MDT}
+ {2204179200 -25200 0 MST}
+ {2215069200 -21600 1 MDT}
+ {2235628800 -25200 0 MST}
+ {2246518800 -21600 1 MDT}
+ {2267078400 -25200 0 MST}
+ {2277968400 -21600 1 MDT}
+ {2298528000 -25200 0 MST}
+ {2309418000 -21600 1 MDT}
+ {2329977600 -25200 0 MST}
+ {2341472400 -21600 1 MDT}
+ {2362032000 -25200 0 MST}
+ {2372922000 -21600 1 MDT}
+ {2393481600 -25200 0 MST}
+ {2404371600 -21600 1 MDT}
+ {2424931200 -25200 0 MST}
+ {2435821200 -21600 1 MDT}
+ {2456380800 -25200 0 MST}
+ {2467270800 -21600 1 MDT}
+ {2487830400 -25200 0 MST}
+ {2499325200 -21600 1 MDT}
+ {2519884800 -25200 0 MST}
+ {2530774800 -21600 1 MDT}
+ {2551334400 -25200 0 MST}
+ {2562224400 -21600 1 MDT}
+ {2582784000 -25200 0 MST}
+ {2593674000 -21600 1 MDT}
+ {2614233600 -25200 0 MST}
+ {2625123600 -21600 1 MDT}
+ {2645683200 -25200 0 MST}
+ {2656573200 -21600 1 MDT}
+ {2677132800 -25200 0 MST}
+ {2688627600 -21600 1 MDT}
+ {2709187200 -25200 0 MST}
+ {2720077200 -21600 1 MDT}
+ {2740636800 -25200 0 MST}
+ {2751526800 -21600 1 MDT}
+ {2772086400 -25200 0 MST}
+ {2782976400 -21600 1 MDT}
+ {2803536000 -25200 0 MST}
+ {2814426000 -21600 1 MDT}
+ {2834985600 -25200 0 MST}
+ {2846480400 -21600 1 MDT}
+ {2867040000 -25200 0 MST}
+ {2877930000 -21600 1 MDT}
+ {2898489600 -25200 0 MST}
+ {2909379600 -21600 1 MDT}
+ {2929939200 -25200 0 MST}
+ {2940829200 -21600 1 MDT}
+ {2961388800 -25200 0 MST}
+ {2972278800 -21600 1 MDT}
+ {2992838400 -25200 0 MST}
+ {3003728400 -21600 1 MDT}
+ {3024288000 -25200 0 MST}
+ {3035782800 -21600 1 MDT}
+ {3056342400 -25200 0 MST}
+ {3067232400 -21600 1 MDT}
+ {3087792000 -25200 0 MST}
+ {3098682000 -21600 1 MDT}
+ {3119241600 -25200 0 MST}
+ {3130131600 -21600 1 MDT}
+ {3150691200 -25200 0 MST}
+ {3161581200 -21600 1 MDT}
+ {3182140800 -25200 0 MST}
+ {3193030800 -21600 1 MDT}
+ {3213590400 -25200 0 MST}
+ {3225085200 -21600 1 MDT}
+ {3245644800 -25200 0 MST}
+ {3256534800 -21600 1 MDT}
+ {3277094400 -25200 0 MST}
+ {3287984400 -21600 1 MDT}
+ {3308544000 -25200 0 MST}
+ {3319434000 -21600 1 MDT}
+ {3339993600 -25200 0 MST}
+ {3350883600 -21600 1 MDT}
+ {3371443200 -25200 0 MST}
+ {3382938000 -21600 1 MDT}
+ {3403497600 -25200 0 MST}
+ {3414387600 -21600 1 MDT}
+ {3434947200 -25200 0 MST}
+ {3445837200 -21600 1 MDT}
+ {3466396800 -25200 0 MST}
+ {3477286800 -21600 1 MDT}
+ {3497846400 -25200 0 MST}
+ {3508736400 -21600 1 MDT}
+ {3529296000 -25200 0 MST}
+ {3540186000 -21600 1 MDT}
+ {3560745600 -25200 0 MST}
+ {3572240400 -21600 1 MDT}
+ {3592800000 -25200 0 MST}
+ {3603690000 -21600 1 MDT}
+ {3624249600 -25200 0 MST}
+ {3635139600 -21600 1 MDT}
+ {3655699200 -25200 0 MST}
+ {3666589200 -21600 1 MDT}
+ {3687148800 -25200 0 MST}
+ {3698038800 -21600 1 MDT}
+ {3718598400 -25200 0 MST}
+ {3730093200 -21600 1 MDT}
+ {3750652800 -25200 0 MST}
+ {3761542800 -21600 1 MDT}
+ {3782102400 -25200 0 MST}
+ {3792992400 -21600 1 MDT}
+ {3813552000 -25200 0 MST}
+ {3824442000 -21600 1 MDT}
+ {3845001600 -25200 0 MST}
+ {3855891600 -21600 1 MDT}
+ {3876451200 -25200 0 MST}
+ {3887341200 -21600 1 MDT}
+ {3907900800 -25200 0 MST}
+ {3919395600 -21600 1 MDT}
+ {3939955200 -25200 0 MST}
+ {3950845200 -21600 1 MDT}
+ {3971404800 -25200 0 MST}
+ {3982294800 -21600 1 MDT}
+ {4002854400 -25200 0 MST}
+ {4013744400 -21600 1 MDT}
+ {4034304000 -25200 0 MST}
+ {4045194000 -21600 1 MDT}
+ {4065753600 -25200 0 MST}
+ {4076643600 -21600 1 MDT}
+ {4097203200 -25200 0 MST}
+}
diff --git a/library/tzdata/America/Port-au-Prince b/library/tzdata/America/Port-au-Prince
index 04ee62c..f1d7fc4 100644
--- a/library/tzdata/America/Port-au-Prince
+++ b/library/tzdata/America/Port-au-Prince
@@ -38,4 +38,180 @@ set TZData(:America/Port-au-Prince) {
{1130644800 -18000 0 EST}
{1143954000 -14400 1 EDT}
{1162094400 -18000 0 EST}
+ {1331449200 -14400 1 EDT}
+ {1352008800 -18000 0 EST}
+ {1362898800 -14400 1 EDT}
+ {1383458400 -18000 0 EST}
+ {1394348400 -14400 1 EDT}
+ {1414908000 -18000 0 EST}
+ {1425798000 -14400 1 EDT}
+ {1446357600 -18000 0 EST}
+ {1457852400 -14400 1 EDT}
+ {1478412000 -18000 0 EST}
+ {1489302000 -14400 1 EDT}
+ {1509861600 -18000 0 EST}
+ {1520751600 -14400 1 EDT}
+ {1541311200 -18000 0 EST}
+ {1552201200 -14400 1 EDT}
+ {1572760800 -18000 0 EST}
+ {1583650800 -14400 1 EDT}
+ {1604210400 -18000 0 EST}
+ {1615705200 -14400 1 EDT}
+ {1636264800 -18000 0 EST}
+ {1647154800 -14400 1 EDT}
+ {1667714400 -18000 0 EST}
+ {1678604400 -14400 1 EDT}
+ {1699164000 -18000 0 EST}
+ {1710054000 -14400 1 EDT}
+ {1730613600 -18000 0 EST}
+ {1741503600 -14400 1 EDT}
+ {1762063200 -18000 0 EST}
+ {1772953200 -14400 1 EDT}
+ {1793512800 -18000 0 EST}
+ {1805007600 -14400 1 EDT}
+ {1825567200 -18000 0 EST}
+ {1836457200 -14400 1 EDT}
+ {1857016800 -18000 0 EST}
+ {1867906800 -14400 1 EDT}
+ {1888466400 -18000 0 EST}
+ {1899356400 -14400 1 EDT}
+ {1919916000 -18000 0 EST}
+ {1930806000 -14400 1 EDT}
+ {1951365600 -18000 0 EST}
+ {1962860400 -14400 1 EDT}
+ {1983420000 -18000 0 EST}
+ {1994310000 -14400 1 EDT}
+ {2014869600 -18000 0 EST}
+ {2025759600 -14400 1 EDT}
+ {2046319200 -18000 0 EST}
+ {2057209200 -14400 1 EDT}
+ {2077768800 -18000 0 EST}
+ {2088658800 -14400 1 EDT}
+ {2109218400 -18000 0 EST}
+ {2120108400 -14400 1 EDT}
+ {2140668000 -18000 0 EST}
+ {2152162800 -14400 1 EDT}
+ {2172722400 -18000 0 EST}
+ {2183612400 -14400 1 EDT}
+ {2204172000 -18000 0 EST}
+ {2215062000 -14400 1 EDT}
+ {2235621600 -18000 0 EST}
+ {2246511600 -14400 1 EDT}
+ {2267071200 -18000 0 EST}
+ {2277961200 -14400 1 EDT}
+ {2298520800 -18000 0 EST}
+ {2309410800 -14400 1 EDT}
+ {2329970400 -18000 0 EST}
+ {2341465200 -14400 1 EDT}
+ {2362024800 -18000 0 EST}
+ {2372914800 -14400 1 EDT}
+ {2393474400 -18000 0 EST}
+ {2404364400 -14400 1 EDT}
+ {2424924000 -18000 0 EST}
+ {2435814000 -14400 1 EDT}
+ {2456373600 -18000 0 EST}
+ {2467263600 -14400 1 EDT}
+ {2487823200 -18000 0 EST}
+ {2499318000 -14400 1 EDT}
+ {2519877600 -18000 0 EST}
+ {2530767600 -14400 1 EDT}
+ {2551327200 -18000 0 EST}
+ {2562217200 -14400 1 EDT}
+ {2582776800 -18000 0 EST}
+ {2593666800 -14400 1 EDT}
+ {2614226400 -18000 0 EST}
+ {2625116400 -14400 1 EDT}
+ {2645676000 -18000 0 EST}
+ {2656566000 -14400 1 EDT}
+ {2677125600 -18000 0 EST}
+ {2688620400 -14400 1 EDT}
+ {2709180000 -18000 0 EST}
+ {2720070000 -14400 1 EDT}
+ {2740629600 -18000 0 EST}
+ {2751519600 -14400 1 EDT}
+ {2772079200 -18000 0 EST}
+ {2782969200 -14400 1 EDT}
+ {2803528800 -18000 0 EST}
+ {2814418800 -14400 1 EDT}
+ {2834978400 -18000 0 EST}
+ {2846473200 -14400 1 EDT}
+ {2867032800 -18000 0 EST}
+ {2877922800 -14400 1 EDT}
+ {2898482400 -18000 0 EST}
+ {2909372400 -14400 1 EDT}
+ {2929932000 -18000 0 EST}
+ {2940822000 -14400 1 EDT}
+ {2961381600 -18000 0 EST}
+ {2972271600 -14400 1 EDT}
+ {2992831200 -18000 0 EST}
+ {3003721200 -14400 1 EDT}
+ {3024280800 -18000 0 EST}
+ {3035775600 -14400 1 EDT}
+ {3056335200 -18000 0 EST}
+ {3067225200 -14400 1 EDT}
+ {3087784800 -18000 0 EST}
+ {3098674800 -14400 1 EDT}
+ {3119234400 -18000 0 EST}
+ {3130124400 -14400 1 EDT}
+ {3150684000 -18000 0 EST}
+ {3161574000 -14400 1 EDT}
+ {3182133600 -18000 0 EST}
+ {3193023600 -14400 1 EDT}
+ {3213583200 -18000 0 EST}
+ {3225078000 -14400 1 EDT}
+ {3245637600 -18000 0 EST}
+ {3256527600 -14400 1 EDT}
+ {3277087200 -18000 0 EST}
+ {3287977200 -14400 1 EDT}
+ {3308536800 -18000 0 EST}
+ {3319426800 -14400 1 EDT}
+ {3339986400 -18000 0 EST}
+ {3350876400 -14400 1 EDT}
+ {3371436000 -18000 0 EST}
+ {3382930800 -14400 1 EDT}
+ {3403490400 -18000 0 EST}
+ {3414380400 -14400 1 EDT}
+ {3434940000 -18000 0 EST}
+ {3445830000 -14400 1 EDT}
+ {3466389600 -18000 0 EST}
+ {3477279600 -14400 1 EDT}
+ {3497839200 -18000 0 EST}
+ {3508729200 -14400 1 EDT}
+ {3529288800 -18000 0 EST}
+ {3540178800 -14400 1 EDT}
+ {3560738400 -18000 0 EST}
+ {3572233200 -14400 1 EDT}
+ {3592792800 -18000 0 EST}
+ {3603682800 -14400 1 EDT}
+ {3624242400 -18000 0 EST}
+ {3635132400 -14400 1 EDT}
+ {3655692000 -18000 0 EST}
+ {3666582000 -14400 1 EDT}
+ {3687141600 -18000 0 EST}
+ {3698031600 -14400 1 EDT}
+ {3718591200 -18000 0 EST}
+ {3730086000 -14400 1 EDT}
+ {3750645600 -18000 0 EST}
+ {3761535600 -14400 1 EDT}
+ {3782095200 -18000 0 EST}
+ {3792985200 -14400 1 EDT}
+ {3813544800 -18000 0 EST}
+ {3824434800 -14400 1 EDT}
+ {3844994400 -18000 0 EST}
+ {3855884400 -14400 1 EDT}
+ {3876444000 -18000 0 EST}
+ {3887334000 -14400 1 EDT}
+ {3907893600 -18000 0 EST}
+ {3919388400 -14400 1 EDT}
+ {3939948000 -18000 0 EST}
+ {3950838000 -14400 1 EDT}
+ {3971397600 -18000 0 EST}
+ {3982287600 -14400 1 EDT}
+ {4002847200 -18000 0 EST}
+ {4013737200 -14400 1 EDT}
+ {4034296800 -18000 0 EST}
+ {4045186800 -14400 1 EDT}
+ {4065746400 -18000 0 EST}
+ {4076636400 -14400 1 EDT}
+ {4097196000 -18000 0 EST}
}
diff --git a/library/tzdata/America/Rainy_River b/library/tzdata/America/Rainy_River
index 331bac6..a2b11aa 100644
--- a/library/tzdata/America/Rainy_River
+++ b/library/tzdata/America/Rainy_River
@@ -4,7 +4,7 @@ set TZData(:America/Rainy_River) {
{-9223372036854775808 -22696 0 LMT}
{-2366732504 -21600 0 CST}
{-1632067200 -18000 1 CDT}
- {-1614790800 -21600 0 CST}
+ {-1615136400 -21600 0 CST}
{-923248800 -18000 1 CDT}
{-880214400 -18000 0 CWT}
{-769395600 -18000 1 CPT}
diff --git a/library/tzdata/America/Regina b/library/tzdata/America/Regina
index 2030d75..e42b5be 100644
--- a/library/tzdata/America/Regina
+++ b/library/tzdata/America/Regina
@@ -4,7 +4,7 @@ set TZData(:America/Regina) {
{-9223372036854775808 -25116 0 LMT}
{-2030202084 -25200 0 MST}
{-1632063600 -21600 1 MDT}
- {-1614787200 -25200 0 MST}
+ {-1615132800 -25200 0 MST}
{-1251651600 -21600 1 MDT}
{-1238349600 -25200 0 MST}
{-1220202000 -21600 1 MDT}
diff --git a/library/tzdata/America/Resolute b/library/tzdata/America/Resolute
index d82a837..b4c0bab 100755..100644
--- a/library/tzdata/America/Resolute
+++ b/library/tzdata/America/Resolute
@@ -59,4 +59,190 @@ set TZData(:America/Resolute) {
{1130655600 -21600 0 CST}
{1143964800 -18000 1 CDT}
{1162108800 -18000 0 EST}
+ {1173600000 -18000 0 CDT}
+ {1194159600 -21600 0 CST}
+ {1205049600 -18000 1 CDT}
+ {1225609200 -21600 0 CST}
+ {1236499200 -18000 1 CDT}
+ {1257058800 -21600 0 CST}
+ {1268553600 -18000 1 CDT}
+ {1289113200 -21600 0 CST}
+ {1300003200 -18000 1 CDT}
+ {1320562800 -21600 0 CST}
+ {1331452800 -18000 1 CDT}
+ {1352012400 -21600 0 CST}
+ {1362902400 -18000 1 CDT}
+ {1383462000 -21600 0 CST}
+ {1394352000 -18000 1 CDT}
+ {1414911600 -21600 0 CST}
+ {1425801600 -18000 1 CDT}
+ {1446361200 -21600 0 CST}
+ {1457856000 -18000 1 CDT}
+ {1478415600 -21600 0 CST}
+ {1489305600 -18000 1 CDT}
+ {1509865200 -21600 0 CST}
+ {1520755200 -18000 1 CDT}
+ {1541314800 -21600 0 CST}
+ {1552204800 -18000 1 CDT}
+ {1572764400 -21600 0 CST}
+ {1583654400 -18000 1 CDT}
+ {1604214000 -21600 0 CST}
+ {1615708800 -18000 1 CDT}
+ {1636268400 -21600 0 CST}
+ {1647158400 -18000 1 CDT}
+ {1667718000 -21600 0 CST}
+ {1678608000 -18000 1 CDT}
+ {1699167600 -21600 0 CST}
+ {1710057600 -18000 1 CDT}
+ {1730617200 -21600 0 CST}
+ {1741507200 -18000 1 CDT}
+ {1762066800 -21600 0 CST}
+ {1772956800 -18000 1 CDT}
+ {1793516400 -21600 0 CST}
+ {1805011200 -18000 1 CDT}
+ {1825570800 -21600 0 CST}
+ {1836460800 -18000 1 CDT}
+ {1857020400 -21600 0 CST}
+ {1867910400 -18000 1 CDT}
+ {1888470000 -21600 0 CST}
+ {1899360000 -18000 1 CDT}
+ {1919919600 -21600 0 CST}
+ {1930809600 -18000 1 CDT}
+ {1951369200 -21600 0 CST}
+ {1962864000 -18000 1 CDT}
+ {1983423600 -21600 0 CST}
+ {1994313600 -18000 1 CDT}
+ {2014873200 -21600 0 CST}
+ {2025763200 -18000 1 CDT}
+ {2046322800 -21600 0 CST}
+ {2057212800 -18000 1 CDT}
+ {2077772400 -21600 0 CST}
+ {2088662400 -18000 1 CDT}
+ {2109222000 -21600 0 CST}
+ {2120112000 -18000 1 CDT}
+ {2140671600 -21600 0 CST}
+ {2152166400 -18000 1 CDT}
+ {2172726000 -21600 0 CST}
+ {2183616000 -18000 1 CDT}
+ {2204175600 -21600 0 CST}
+ {2215065600 -18000 1 CDT}
+ {2235625200 -21600 0 CST}
+ {2246515200 -18000 1 CDT}
+ {2267074800 -21600 0 CST}
+ {2277964800 -18000 1 CDT}
+ {2298524400 -21600 0 CST}
+ {2309414400 -18000 1 CDT}
+ {2329974000 -21600 0 CST}
+ {2341468800 -18000 1 CDT}
+ {2362028400 -21600 0 CST}
+ {2372918400 -18000 1 CDT}
+ {2393478000 -21600 0 CST}
+ {2404368000 -18000 1 CDT}
+ {2424927600 -21600 0 CST}
+ {2435817600 -18000 1 CDT}
+ {2456377200 -21600 0 CST}
+ {2467267200 -18000 1 CDT}
+ {2487826800 -21600 0 CST}
+ {2499321600 -18000 1 CDT}
+ {2519881200 -21600 0 CST}
+ {2530771200 -18000 1 CDT}
+ {2551330800 -21600 0 CST}
+ {2562220800 -18000 1 CDT}
+ {2582780400 -21600 0 CST}
+ {2593670400 -18000 1 CDT}
+ {2614230000 -21600 0 CST}
+ {2625120000 -18000 1 CDT}
+ {2645679600 -21600 0 CST}
+ {2656569600 -18000 1 CDT}
+ {2677129200 -21600 0 CST}
+ {2688624000 -18000 1 CDT}
+ {2709183600 -21600 0 CST}
+ {2720073600 -18000 1 CDT}
+ {2740633200 -21600 0 CST}
+ {2751523200 -18000 1 CDT}
+ {2772082800 -21600 0 CST}
+ {2782972800 -18000 1 CDT}
+ {2803532400 -21600 0 CST}
+ {2814422400 -18000 1 CDT}
+ {2834982000 -21600 0 CST}
+ {2846476800 -18000 1 CDT}
+ {2867036400 -21600 0 CST}
+ {2877926400 -18000 1 CDT}
+ {2898486000 -21600 0 CST}
+ {2909376000 -18000 1 CDT}
+ {2929935600 -21600 0 CST}
+ {2940825600 -18000 1 CDT}
+ {2961385200 -21600 0 CST}
+ {2972275200 -18000 1 CDT}
+ {2992834800 -21600 0 CST}
+ {3003724800 -18000 1 CDT}
+ {3024284400 -21600 0 CST}
+ {3035779200 -18000 1 CDT}
+ {3056338800 -21600 0 CST}
+ {3067228800 -18000 1 CDT}
+ {3087788400 -21600 0 CST}
+ {3098678400 -18000 1 CDT}
+ {3119238000 -21600 0 CST}
+ {3130128000 -18000 1 CDT}
+ {3150687600 -21600 0 CST}
+ {3161577600 -18000 1 CDT}
+ {3182137200 -21600 0 CST}
+ {3193027200 -18000 1 CDT}
+ {3213586800 -21600 0 CST}
+ {3225081600 -18000 1 CDT}
+ {3245641200 -21600 0 CST}
+ {3256531200 -18000 1 CDT}
+ {3277090800 -21600 0 CST}
+ {3287980800 -18000 1 CDT}
+ {3308540400 -21600 0 CST}
+ {3319430400 -18000 1 CDT}
+ {3339990000 -21600 0 CST}
+ {3350880000 -18000 1 CDT}
+ {3371439600 -21600 0 CST}
+ {3382934400 -18000 1 CDT}
+ {3403494000 -21600 0 CST}
+ {3414384000 -18000 1 CDT}
+ {3434943600 -21600 0 CST}
+ {3445833600 -18000 1 CDT}
+ {3466393200 -21600 0 CST}
+ {3477283200 -18000 1 CDT}
+ {3497842800 -21600 0 CST}
+ {3508732800 -18000 1 CDT}
+ {3529292400 -21600 0 CST}
+ {3540182400 -18000 1 CDT}
+ {3560742000 -21600 0 CST}
+ {3572236800 -18000 1 CDT}
+ {3592796400 -21600 0 CST}
+ {3603686400 -18000 1 CDT}
+ {3624246000 -21600 0 CST}
+ {3635136000 -18000 1 CDT}
+ {3655695600 -21600 0 CST}
+ {3666585600 -18000 1 CDT}
+ {3687145200 -21600 0 CST}
+ {3698035200 -18000 1 CDT}
+ {3718594800 -21600 0 CST}
+ {3730089600 -18000 1 CDT}
+ {3750649200 -21600 0 CST}
+ {3761539200 -18000 1 CDT}
+ {3782098800 -21600 0 CST}
+ {3792988800 -18000 1 CDT}
+ {3813548400 -21600 0 CST}
+ {3824438400 -18000 1 CDT}
+ {3844998000 -21600 0 CST}
+ {3855888000 -18000 1 CDT}
+ {3876447600 -21600 0 CST}
+ {3887337600 -18000 1 CDT}
+ {3907897200 -21600 0 CST}
+ {3919392000 -18000 1 CDT}
+ {3939951600 -21600 0 CST}
+ {3950841600 -18000 1 CDT}
+ {3971401200 -21600 0 CST}
+ {3982291200 -18000 1 CDT}
+ {4002850800 -21600 0 CST}
+ {4013740800 -18000 1 CDT}
+ {4034300400 -21600 0 CST}
+ {4045190400 -18000 1 CDT}
+ {4065750000 -21600 0 CST}
+ {4076640000 -18000 1 CDT}
+ {4097199600 -21600 0 CST}
}
diff --git a/library/tzdata/America/Santa_Isabel b/library/tzdata/America/Santa_Isabel
new file mode 100644
index 0000000..87cb5a8
--- /dev/null
+++ b/library/tzdata/America/Santa_Isabel
@@ -0,0 +1,284 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Santa_Isabel) {
+ {-9223372036854775808 -27568 0 LMT}
+ {-1514736000 -25200 0 MST}
+ {-1451667600 -28800 0 PST}
+ {-1343062800 -25200 0 MST}
+ {-1234803600 -28800 0 PST}
+ {-1222963200 -25200 1 PDT}
+ {-1207242000 -28800 0 PST}
+ {-873820800 -25200 1 PWT}
+ {-769395600 -25200 1 PPT}
+ {-761677200 -28800 0 PST}
+ {-686073600 -25200 1 PDT}
+ {-661539600 -28800 0 PST}
+ {-504892800 -28800 0 PST}
+ {-495036000 -25200 1 PDT}
+ {-481734000 -28800 0 PST}
+ {-463586400 -25200 1 PDT}
+ {-450284400 -28800 0 PST}
+ {-431532000 -25200 1 PDT}
+ {-418230000 -28800 0 PST}
+ {-400082400 -25200 1 PDT}
+ {-386780400 -28800 0 PST}
+ {-368632800 -25200 1 PDT}
+ {-355330800 -28800 0 PST}
+ {-337183200 -25200 1 PDT}
+ {-323881200 -28800 0 PST}
+ {-305733600 -25200 1 PDT}
+ {-292431600 -28800 0 PST}
+ {-283968000 -28800 0 PST}
+ {189331200 -28800 0 PST}
+ {199274400 -25200 1 PDT}
+ {215600400 -28800 0 PST}
+ {230724000 -25200 1 PDT}
+ {247050000 -28800 0 PST}
+ {262778400 -25200 1 PDT}
+ {278499600 -28800 0 PST}
+ {294228000 -25200 1 PDT}
+ {309949200 -28800 0 PST}
+ {325677600 -25200 1 PDT}
+ {341398800 -28800 0 PST}
+ {357127200 -25200 1 PDT}
+ {372848400 -28800 0 PST}
+ {388576800 -25200 1 PDT}
+ {404902800 -28800 0 PST}
+ {420026400 -25200 1 PDT}
+ {436352400 -28800 0 PST}
+ {452080800 -25200 1 PDT}
+ {467802000 -28800 0 PST}
+ {483530400 -25200 1 PDT}
+ {499251600 -28800 0 PST}
+ {514980000 -25200 1 PDT}
+ {530701200 -28800 0 PST}
+ {544615200 -25200 1 PDT}
+ {562150800 -28800 0 PST}
+ {576064800 -25200 1 PDT}
+ {594205200 -28800 0 PST}
+ {607514400 -25200 1 PDT}
+ {625654800 -28800 0 PST}
+ {638964000 -25200 1 PDT}
+ {657104400 -28800 0 PST}
+ {671018400 -25200 1 PDT}
+ {688554000 -28800 0 PST}
+ {702468000 -25200 1 PDT}
+ {720003600 -28800 0 PST}
+ {733917600 -25200 1 PDT}
+ {752058000 -28800 0 PST}
+ {765367200 -25200 1 PDT}
+ {783507600 -28800 0 PST}
+ {796816800 -25200 1 PDT}
+ {814957200 -28800 0 PST}
+ {820483200 -28800 0 PST}
+ {828871200 -25200 1 PDT}
+ {846406800 -28800 0 PST}
+ {860320800 -25200 1 PDT}
+ {877856400 -28800 0 PST}
+ {891770400 -25200 1 PDT}
+ {909306000 -28800 0 PST}
+ {923220000 -25200 1 PDT}
+ {941360400 -28800 0 PST}
+ {954669600 -25200 1 PDT}
+ {972810000 -28800 0 PST}
+ {978336000 -28800 0 PST}
+ {986119200 -25200 1 PDT}
+ {1004259600 -28800 0 PST}
+ {1014192000 -28800 0 PST}
+ {1018173600 -25200 1 PDT}
+ {1035709200 -28800 0 PST}
+ {1049623200 -25200 1 PDT}
+ {1067158800 -28800 0 PST}
+ {1081072800 -25200 1 PDT}
+ {1099213200 -28800 0 PST}
+ {1112522400 -25200 1 PDT}
+ {1130662800 -28800 0 PST}
+ {1143972000 -25200 1 PDT}
+ {1162112400 -28800 0 PST}
+ {1175421600 -25200 1 PDT}
+ {1193562000 -28800 0 PST}
+ {1207476000 -25200 1 PDT}
+ {1225011600 -28800 0 PST}
+ {1238925600 -25200 1 PDT}
+ {1256461200 -28800 0 PST}
+ {1270375200 -25200 1 PDT}
+ {1288515600 -28800 0 PST}
+ {1301824800 -25200 1 PDT}
+ {1319965200 -28800 0 PST}
+ {1333274400 -25200 1 PDT}
+ {1351414800 -28800 0 PST}
+ {1365328800 -25200 1 PDT}
+ {1382864400 -28800 0 PST}
+ {1396778400 -25200 1 PDT}
+ {1414314000 -28800 0 PST}
+ {1428228000 -25200 1 PDT}
+ {1445763600 -28800 0 PST}
+ {1459677600 -25200 1 PDT}
+ {1477818000 -28800 0 PST}
+ {1491127200 -25200 1 PDT}
+ {1509267600 -28800 0 PST}
+ {1522576800 -25200 1 PDT}
+ {1540717200 -28800 0 PST}
+ {1554631200 -25200 1 PDT}
+ {1572166800 -28800 0 PST}
+ {1586080800 -25200 1 PDT}
+ {1603616400 -28800 0 PST}
+ {1617530400 -25200 1 PDT}
+ {1635670800 -28800 0 PST}
+ {1648980000 -25200 1 PDT}
+ {1667120400 -28800 0 PST}
+ {1680429600 -25200 1 PDT}
+ {1698570000 -28800 0 PST}
+ {1712484000 -25200 1 PDT}
+ {1730019600 -28800 0 PST}
+ {1743933600 -25200 1 PDT}
+ {1761469200 -28800 0 PST}
+ {1775383200 -25200 1 PDT}
+ {1792918800 -28800 0 PST}
+ {1806832800 -25200 1 PDT}
+ {1824973200 -28800 0 PST}
+ {1838282400 -25200 1 PDT}
+ {1856422800 -28800 0 PST}
+ {1869732000 -25200 1 PDT}
+ {1887872400 -28800 0 PST}
+ {1901786400 -25200 1 PDT}
+ {1919322000 -28800 0 PST}
+ {1933236000 -25200 1 PDT}
+ {1950771600 -28800 0 PST}
+ {1964685600 -25200 1 PDT}
+ {1982826000 -28800 0 PST}
+ {1996135200 -25200 1 PDT}
+ {2014275600 -28800 0 PST}
+ {2027584800 -25200 1 PDT}
+ {2045725200 -28800 0 PST}
+ {2059034400 -25200 1 PDT}
+ {2077174800 -28800 0 PST}
+ {2091088800 -25200 1 PDT}
+ {2108624400 -28800 0 PST}
+ {2122538400 -25200 1 PDT}
+ {2140074000 -28800 0 PST}
+ {2153988000 -25200 1 PDT}
+ {2172128400 -28800 0 PST}
+ {2185437600 -25200 1 PDT}
+ {2203578000 -28800 0 PST}
+ {2216887200 -25200 1 PDT}
+ {2235027600 -28800 0 PST}
+ {2248941600 -25200 1 PDT}
+ {2266477200 -28800 0 PST}
+ {2280391200 -25200 1 PDT}
+ {2297926800 -28800 0 PST}
+ {2311840800 -25200 1 PDT}
+ {2329376400 -28800 0 PST}
+ {2343290400 -25200 1 PDT}
+ {2361430800 -28800 0 PST}
+ {2374740000 -25200 1 PDT}
+ {2392880400 -28800 0 PST}
+ {2406189600 -25200 1 PDT}
+ {2424330000 -28800 0 PST}
+ {2438244000 -25200 1 PDT}
+ {2455779600 -28800 0 PST}
+ {2469693600 -25200 1 PDT}
+ {2487229200 -28800 0 PST}
+ {2501143200 -25200 1 PDT}
+ {2519283600 -28800 0 PST}
+ {2532592800 -25200 1 PDT}
+ {2550733200 -28800 0 PST}
+ {2564042400 -25200 1 PDT}
+ {2582182800 -28800 0 PST}
+ {2596096800 -25200 1 PDT}
+ {2613632400 -28800 0 PST}
+ {2627546400 -25200 1 PDT}
+ {2645082000 -28800 0 PST}
+ {2658996000 -25200 1 PDT}
+ {2676531600 -28800 0 PST}
+ {2690445600 -25200 1 PDT}
+ {2708586000 -28800 0 PST}
+ {2721895200 -25200 1 PDT}
+ {2740035600 -28800 0 PST}
+ {2753344800 -25200 1 PDT}
+ {2771485200 -28800 0 PST}
+ {2785399200 -25200 1 PDT}
+ {2802934800 -28800 0 PST}
+ {2816848800 -25200 1 PDT}
+ {2834384400 -28800 0 PST}
+ {2848298400 -25200 1 PDT}
+ {2866438800 -28800 0 PST}
+ {2879748000 -25200 1 PDT}
+ {2897888400 -28800 0 PST}
+ {2911197600 -25200 1 PDT}
+ {2929338000 -28800 0 PST}
+ {2942647200 -25200 1 PDT}
+ {2960787600 -28800 0 PST}
+ {2974701600 -25200 1 PDT}
+ {2992237200 -28800 0 PST}
+ {3006151200 -25200 1 PDT}
+ {3023686800 -28800 0 PST}
+ {3037600800 -25200 1 PDT}
+ {3055741200 -28800 0 PST}
+ {3069050400 -25200 1 PDT}
+ {3087190800 -28800 0 PST}
+ {3100500000 -25200 1 PDT}
+ {3118640400 -28800 0 PST}
+ {3132554400 -25200 1 PDT}
+ {3150090000 -28800 0 PST}
+ {3164004000 -25200 1 PDT}
+ {3181539600 -28800 0 PST}
+ {3195453600 -25200 1 PDT}
+ {3212989200 -28800 0 PST}
+ {3226903200 -25200 1 PDT}
+ {3245043600 -28800 0 PST}
+ {3258352800 -25200 1 PDT}
+ {3276493200 -28800 0 PST}
+ {3289802400 -25200 1 PDT}
+ {3307942800 -28800 0 PST}
+ {3321856800 -25200 1 PDT}
+ {3339392400 -28800 0 PST}
+ {3353306400 -25200 1 PDT}
+ {3370842000 -28800 0 PST}
+ {3384756000 -25200 1 PDT}
+ {3402896400 -28800 0 PST}
+ {3416205600 -25200 1 PDT}
+ {3434346000 -28800 0 PST}
+ {3447655200 -25200 1 PDT}
+ {3465795600 -28800 0 PST}
+ {3479709600 -25200 1 PDT}
+ {3497245200 -28800 0 PST}
+ {3511159200 -25200 1 PDT}
+ {3528694800 -28800 0 PST}
+ {3542608800 -25200 1 PDT}
+ {3560144400 -28800 0 PST}
+ {3574058400 -25200 1 PDT}
+ {3592198800 -28800 0 PST}
+ {3605508000 -25200 1 PDT}
+ {3623648400 -28800 0 PST}
+ {3636957600 -25200 1 PDT}
+ {3655098000 -28800 0 PST}
+ {3669012000 -25200 1 PDT}
+ {3686547600 -28800 0 PST}
+ {3700461600 -25200 1 PDT}
+ {3717997200 -28800 0 PST}
+ {3731911200 -25200 1 PDT}
+ {3750051600 -28800 0 PST}
+ {3763360800 -25200 1 PDT}
+ {3781501200 -28800 0 PST}
+ {3794810400 -25200 1 PDT}
+ {3812950800 -28800 0 PST}
+ {3826260000 -25200 1 PDT}
+ {3844400400 -28800 0 PST}
+ {3858314400 -25200 1 PDT}
+ {3875850000 -28800 0 PST}
+ {3889764000 -25200 1 PDT}
+ {3907299600 -28800 0 PST}
+ {3921213600 -25200 1 PDT}
+ {3939354000 -28800 0 PST}
+ {3952663200 -25200 1 PDT}
+ {3970803600 -28800 0 PST}
+ {3984112800 -25200 1 PDT}
+ {4002253200 -28800 0 PST}
+ {4016167200 -25200 1 PDT}
+ {4033702800 -28800 0 PST}
+ {4047616800 -25200 1 PDT}
+ {4065152400 -28800 0 PST}
+ {4079066400 -25200 1 PDT}
+ {4096602000 -28800 0 PST}
+}
diff --git a/library/tzdata/America/Santiago b/library/tzdata/America/Santiago
index 9f1d358..44be9f8 100644
--- a/library/tzdata/America/Santiago
+++ b/library/tzdata/America/Santiago
@@ -108,184 +108,184 @@ set TZData(:America/Santiago) {
{1223784000 -10800 1 CLST}
{1237086000 -14400 0 CLT}
{1255233600 -10800 1 CLST}
- {1268535600 -14400 0 CLT}
+ {1270350000 -14400 0 CLT}
{1286683200 -10800 1 CLST}
- {1299985200 -14400 0 CLT}
- {1318132800 -10800 1 CLST}
- {1331434800 -14400 0 CLT}
- {1350187200 -10800 1 CLST}
- {1362884400 -14400 0 CLT}
- {1381636800 -10800 1 CLST}
- {1394334000 -14400 0 CLT}
- {1413086400 -10800 1 CLST}
- {1426388400 -14400 0 CLT}
- {1444536000 -10800 1 CLST}
- {1457838000 -14400 0 CLT}
- {1475985600 -10800 1 CLST}
- {1489287600 -14400 0 CLT}
- {1508040000 -10800 1 CLST}
- {1520737200 -14400 0 CLT}
- {1539489600 -10800 1 CLST}
- {1552186800 -14400 0 CLT}
- {1570939200 -10800 1 CLST}
- {1584241200 -14400 0 CLT}
- {1602388800 -10800 1 CLST}
- {1615690800 -14400 0 CLT}
- {1633838400 -10800 1 CLST}
- {1647140400 -14400 0 CLT}
- {1665288000 -10800 1 CLST}
- {1678590000 -14400 0 CLT}
- {1697342400 -10800 1 CLST}
- {1710039600 -14400 0 CLT}
- {1728792000 -10800 1 CLST}
- {1741489200 -14400 0 CLT}
- {1760241600 -10800 1 CLST}
- {1773543600 -14400 0 CLT}
- {1791691200 -10800 1 CLST}
- {1804993200 -14400 0 CLT}
- {1823140800 -10800 1 CLST}
- {1836442800 -14400 0 CLT}
- {1855195200 -10800 1 CLST}
- {1867892400 -14400 0 CLT}
- {1886644800 -10800 1 CLST}
- {1899342000 -14400 0 CLT}
- {1918094400 -10800 1 CLST}
- {1930791600 -14400 0 CLT}
- {1949544000 -10800 1 CLST}
- {1962846000 -14400 0 CLT}
- {1980993600 -10800 1 CLST}
- {1994295600 -14400 0 CLT}
- {2012443200 -10800 1 CLST}
- {2025745200 -14400 0 CLT}
- {2044497600 -10800 1 CLST}
- {2057194800 -14400 0 CLT}
- {2075947200 -10800 1 CLST}
- {2088644400 -14400 0 CLT}
- {2107396800 -10800 1 CLST}
- {2120698800 -14400 0 CLT}
- {2138846400 -10800 1 CLST}
- {2152148400 -14400 0 CLT}
- {2170296000 -10800 1 CLST}
- {2183598000 -14400 0 CLT}
- {2201745600 -10800 1 CLST}
- {2215047600 -14400 0 CLT}
- {2233800000 -10800 1 CLST}
- {2246497200 -14400 0 CLT}
- {2265249600 -10800 1 CLST}
- {2277946800 -14400 0 CLT}
- {2296699200 -10800 1 CLST}
- {2310001200 -14400 0 CLT}
- {2328148800 -10800 1 CLST}
- {2341450800 -14400 0 CLT}
- {2359598400 -10800 1 CLST}
- {2372900400 -14400 0 CLT}
- {2391652800 -10800 1 CLST}
- {2404350000 -14400 0 CLT}
- {2423102400 -10800 1 CLST}
- {2435799600 -14400 0 CLT}
- {2454552000 -10800 1 CLST}
- {2467854000 -14400 0 CLT}
- {2486001600 -10800 1 CLST}
- {2499303600 -14400 0 CLT}
- {2517451200 -10800 1 CLST}
- {2530753200 -14400 0 CLT}
- {2548900800 -10800 1 CLST}
- {2562202800 -14400 0 CLT}
- {2580955200 -10800 1 CLST}
- {2593652400 -14400 0 CLT}
- {2612404800 -10800 1 CLST}
- {2625102000 -14400 0 CLT}
- {2643854400 -10800 1 CLST}
- {2657156400 -14400 0 CLT}
- {2675304000 -10800 1 CLST}
- {2688606000 -14400 0 CLT}
- {2706753600 -10800 1 CLST}
- {2720055600 -14400 0 CLT}
- {2738808000 -10800 1 CLST}
- {2751505200 -14400 0 CLT}
- {2770257600 -10800 1 CLST}
- {2782954800 -14400 0 CLT}
- {2801707200 -10800 1 CLST}
- {2814404400 -14400 0 CLT}
- {2833156800 -10800 1 CLST}
- {2846458800 -14400 0 CLT}
- {2864606400 -10800 1 CLST}
- {2877908400 -14400 0 CLT}
- {2896056000 -10800 1 CLST}
- {2909358000 -14400 0 CLT}
- {2928110400 -10800 1 CLST}
- {2940807600 -14400 0 CLT}
- {2959560000 -10800 1 CLST}
- {2972257200 -14400 0 CLT}
- {2991009600 -10800 1 CLST}
- {3004311600 -14400 0 CLT}
- {3022459200 -10800 1 CLST}
- {3035761200 -14400 0 CLT}
- {3053908800 -10800 1 CLST}
- {3067210800 -14400 0 CLT}
- {3085358400 -10800 1 CLST}
- {3098660400 -14400 0 CLT}
- {3117412800 -10800 1 CLST}
- {3130110000 -14400 0 CLT}
- {3148862400 -10800 1 CLST}
- {3161559600 -14400 0 CLT}
- {3180312000 -10800 1 CLST}
- {3193614000 -14400 0 CLT}
- {3211761600 -10800 1 CLST}
- {3225063600 -14400 0 CLT}
- {3243211200 -10800 1 CLST}
- {3256513200 -14400 0 CLT}
- {3275265600 -10800 1 CLST}
- {3287962800 -14400 0 CLT}
- {3306715200 -10800 1 CLST}
- {3319412400 -14400 0 CLT}
- {3338164800 -10800 1 CLST}
- {3351466800 -14400 0 CLT}
- {3369614400 -10800 1 CLST}
- {3382916400 -14400 0 CLT}
- {3401064000 -10800 1 CLST}
- {3414366000 -14400 0 CLT}
- {3432513600 -10800 1 CLST}
- {3445815600 -14400 0 CLT}
- {3464568000 -10800 1 CLST}
- {3477265200 -14400 0 CLT}
- {3496017600 -10800 1 CLST}
- {3508714800 -14400 0 CLT}
- {3527467200 -10800 1 CLST}
- {3540769200 -14400 0 CLT}
- {3558916800 -10800 1 CLST}
- {3572218800 -14400 0 CLT}
- {3590366400 -10800 1 CLST}
- {3603668400 -14400 0 CLT}
- {3622420800 -10800 1 CLST}
- {3635118000 -14400 0 CLT}
- {3653870400 -10800 1 CLST}
- {3666567600 -14400 0 CLT}
- {3685320000 -10800 1 CLST}
- {3698017200 -14400 0 CLT}
- {3716769600 -10800 1 CLST}
- {3730071600 -14400 0 CLT}
- {3748219200 -10800 1 CLST}
- {3761521200 -14400 0 CLT}
- {3779668800 -10800 1 CLST}
- {3792970800 -14400 0 CLT}
- {3811723200 -10800 1 CLST}
- {3824420400 -14400 0 CLT}
- {3843172800 -10800 1 CLST}
- {3855870000 -14400 0 CLT}
- {3874622400 -10800 1 CLST}
- {3887924400 -14400 0 CLT}
- {3906072000 -10800 1 CLST}
- {3919374000 -14400 0 CLT}
- {3937521600 -10800 1 CLST}
- {3950823600 -14400 0 CLT}
- {3968971200 -10800 1 CLST}
- {3982273200 -14400 0 CLT}
- {4001025600 -10800 1 CLST}
- {4013722800 -14400 0 CLT}
- {4032475200 -10800 1 CLST}
- {4045172400 -14400 0 CLT}
- {4063924800 -10800 1 CLST}
- {4077226800 -14400 0 CLT}
- {4095374400 -10800 1 CLST}
+ {1304823600 -14400 0 CLT}
+ {1313899200 -10800 1 CLST}
+ {1335668400 -14400 0 CLT}
+ {1346558400 -10800 1 CLST}
+ {1367118000 -14400 0 CLT}
+ {1378612800 -10800 1 CLST}
+ {1398567600 -14400 0 CLT}
+ {1410062400 -10800 1 CLST}
+ {1430017200 -14400 0 CLT}
+ {1441512000 -10800 1 CLST}
+ {1461466800 -14400 0 CLT}
+ {1472961600 -10800 1 CLST}
+ {1492916400 -14400 0 CLT}
+ {1504411200 -10800 1 CLST}
+ {1524970800 -14400 0 CLT}
+ {1535860800 -10800 1 CLST}
+ {1556420400 -14400 0 CLT}
+ {1567915200 -10800 1 CLST}
+ {1587870000 -14400 0 CLT}
+ {1599364800 -10800 1 CLST}
+ {1619319600 -14400 0 CLT}
+ {1630814400 -10800 1 CLST}
+ {1650769200 -14400 0 CLT}
+ {1662264000 -10800 1 CLST}
+ {1682218800 -14400 0 CLT}
+ {1693713600 -10800 1 CLST}
+ {1714273200 -14400 0 CLT}
+ {1725768000 -10800 1 CLST}
+ {1745722800 -14400 0 CLT}
+ {1757217600 -10800 1 CLST}
+ {1777172400 -14400 0 CLT}
+ {1788667200 -10800 1 CLST}
+ {1808622000 -14400 0 CLT}
+ {1820116800 -10800 1 CLST}
+ {1840071600 -14400 0 CLT}
+ {1851566400 -10800 1 CLST}
+ {1872126000 -14400 0 CLT}
+ {1883016000 -10800 1 CLST}
+ {1903575600 -14400 0 CLT}
+ {1915070400 -10800 1 CLST}
+ {1935025200 -14400 0 CLT}
+ {1946520000 -10800 1 CLST}
+ {1966474800 -14400 0 CLT}
+ {1977969600 -10800 1 CLST}
+ {1997924400 -14400 0 CLT}
+ {2009419200 -10800 1 CLST}
+ {2029374000 -14400 0 CLT}
+ {2040868800 -10800 1 CLST}
+ {2061428400 -14400 0 CLT}
+ {2072318400 -10800 1 CLST}
+ {2092878000 -14400 0 CLT}
+ {2104372800 -10800 1 CLST}
+ {2124327600 -14400 0 CLT}
+ {2135822400 -10800 1 CLST}
+ {2155777200 -14400 0 CLT}
+ {2167272000 -10800 1 CLST}
+ {2187226800 -14400 0 CLT}
+ {2198721600 -10800 1 CLST}
+ {2219281200 -14400 0 CLT}
+ {2230171200 -10800 1 CLST}
+ {2250730800 -14400 0 CLT}
+ {2262225600 -10800 1 CLST}
+ {2282180400 -14400 0 CLT}
+ {2293675200 -10800 1 CLST}
+ {2313630000 -14400 0 CLT}
+ {2325124800 -10800 1 CLST}
+ {2345079600 -14400 0 CLT}
+ {2356574400 -10800 1 CLST}
+ {2376529200 -14400 0 CLT}
+ {2388024000 -10800 1 CLST}
+ {2408583600 -14400 0 CLT}
+ {2419473600 -10800 1 CLST}
+ {2440033200 -14400 0 CLT}
+ {2451528000 -10800 1 CLST}
+ {2471482800 -14400 0 CLT}
+ {2482977600 -10800 1 CLST}
+ {2502932400 -14400 0 CLT}
+ {2514427200 -10800 1 CLST}
+ {2534382000 -14400 0 CLT}
+ {2545876800 -10800 1 CLST}
+ {2565831600 -14400 0 CLT}
+ {2577326400 -10800 1 CLST}
+ {2597886000 -14400 0 CLT}
+ {2609380800 -10800 1 CLST}
+ {2629335600 -14400 0 CLT}
+ {2640830400 -10800 1 CLST}
+ {2660785200 -14400 0 CLT}
+ {2672280000 -10800 1 CLST}
+ {2692234800 -14400 0 CLT}
+ {2703729600 -10800 1 CLST}
+ {2723684400 -14400 0 CLT}
+ {2735179200 -10800 1 CLST}
+ {2755738800 -14400 0 CLT}
+ {2766628800 -10800 1 CLST}
+ {2787188400 -14400 0 CLT}
+ {2798683200 -10800 1 CLST}
+ {2818638000 -14400 0 CLT}
+ {2830132800 -10800 1 CLST}
+ {2850087600 -14400 0 CLT}
+ {2861582400 -10800 1 CLST}
+ {2881537200 -14400 0 CLT}
+ {2893032000 -10800 1 CLST}
+ {2912986800 -14400 0 CLT}
+ {2924481600 -10800 1 CLST}
+ {2945041200 -14400 0 CLT}
+ {2955931200 -10800 1 CLST}
+ {2976490800 -14400 0 CLT}
+ {2987985600 -10800 1 CLST}
+ {3007940400 -14400 0 CLT}
+ {3019435200 -10800 1 CLST}
+ {3039390000 -14400 0 CLT}
+ {3050884800 -10800 1 CLST}
+ {3070839600 -14400 0 CLT}
+ {3082334400 -10800 1 CLST}
+ {3102894000 -14400 0 CLT}
+ {3113784000 -10800 1 CLST}
+ {3134343600 -14400 0 CLT}
+ {3145838400 -10800 1 CLST}
+ {3165793200 -14400 0 CLT}
+ {3177288000 -10800 1 CLST}
+ {3197242800 -14400 0 CLT}
+ {3208737600 -10800 1 CLST}
+ {3228692400 -14400 0 CLT}
+ {3240187200 -10800 1 CLST}
+ {3260142000 -14400 0 CLT}
+ {3271636800 -10800 1 CLST}
+ {3292196400 -14400 0 CLT}
+ {3303086400 -10800 1 CLST}
+ {3323646000 -14400 0 CLT}
+ {3335140800 -10800 1 CLST}
+ {3355095600 -14400 0 CLT}
+ {3366590400 -10800 1 CLST}
+ {3386545200 -14400 0 CLT}
+ {3398040000 -10800 1 CLST}
+ {3417994800 -14400 0 CLT}
+ {3429489600 -10800 1 CLST}
+ {3449444400 -14400 0 CLT}
+ {3460939200 -10800 1 CLST}
+ {3481498800 -14400 0 CLT}
+ {3492993600 -10800 1 CLST}
+ {3512948400 -14400 0 CLT}
+ {3524443200 -10800 1 CLST}
+ {3544398000 -14400 0 CLT}
+ {3555892800 -10800 1 CLST}
+ {3575847600 -14400 0 CLT}
+ {3587342400 -10800 1 CLST}
+ {3607297200 -14400 0 CLT}
+ {3618792000 -10800 1 CLST}
+ {3639351600 -14400 0 CLT}
+ {3650241600 -10800 1 CLST}
+ {3670801200 -14400 0 CLT}
+ {3682296000 -10800 1 CLST}
+ {3702250800 -14400 0 CLT}
+ {3713745600 -10800 1 CLST}
+ {3733700400 -14400 0 CLT}
+ {3745195200 -10800 1 CLST}
+ {3765150000 -14400 0 CLT}
+ {3776644800 -10800 1 CLST}
+ {3796599600 -14400 0 CLT}
+ {3808094400 -10800 1 CLST}
+ {3828654000 -14400 0 CLT}
+ {3839544000 -10800 1 CLST}
+ {3860103600 -14400 0 CLT}
+ {3871598400 -10800 1 CLST}
+ {3891553200 -14400 0 CLT}
+ {3903048000 -10800 1 CLST}
+ {3923002800 -14400 0 CLT}
+ {3934497600 -10800 1 CLST}
+ {3954452400 -14400 0 CLT}
+ {3965947200 -10800 1 CLST}
+ {3986506800 -14400 0 CLT}
+ {3997396800 -10800 1 CLST}
+ {4017956400 -14400 0 CLT}
+ {4029451200 -10800 1 CLST}
+ {4049406000 -14400 0 CLT}
+ {4060900800 -10800 1 CLST}
+ {4080855600 -14400 0 CLT}
+ {4092350400 -10800 1 CLST}
}
diff --git a/library/tzdata/America/Sitka b/library/tzdata/America/Sitka
new file mode 100644
index 0000000..8c53d93
--- /dev/null
+++ b/library/tzdata/America/Sitka
@@ -0,0 +1,275 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Sitka) {
+ {-9223372036854775808 53927 0 LMT}
+ {-3225365927 -32473 0 LMT}
+ {-2188954727 -28800 0 PST}
+ {-883584000 -28800 0 PST}
+ {-880207200 -25200 1 PWT}
+ {-769395600 -25200 1 PPT}
+ {-765385200 -28800 0 PST}
+ {-757353600 -28800 0 PST}
+ {-31507200 -28800 0 PST}
+ {-21477600 -25200 1 PDT}
+ {-5756400 -28800 0 PST}
+ {9972000 -25200 1 PDT}
+ {25693200 -28800 0 PST}
+ {41421600 -25200 1 PDT}
+ {57747600 -28800 0 PST}
+ {73476000 -25200 1 PDT}
+ {89197200 -28800 0 PST}
+ {104925600 -25200 1 PDT}
+ {120646800 -28800 0 PST}
+ {126698400 -25200 1 PDT}
+ {152096400 -28800 0 PST}
+ {162381600 -25200 1 PDT}
+ {183546000 -28800 0 PST}
+ {199274400 -25200 1 PDT}
+ {215600400 -28800 0 PST}
+ {230724000 -25200 1 PDT}
+ {247050000 -28800 0 PST}
+ {262778400 -25200 1 PDT}
+ {278499600 -28800 0 PST}
+ {294228000 -25200 1 PDT}
+ {309949200 -28800 0 PST}
+ {325677600 -25200 1 PDT}
+ {341398800 -28800 0 PST}
+ {357127200 -25200 1 PDT}
+ {372848400 -28800 0 PST}
+ {388576800 -25200 1 PDT}
+ {404902800 -28800 0 PST}
+ {420026400 -25200 1 PDT}
+ {439030800 -32400 0 AKST}
+ {452084400 -28800 1 AKDT}
+ {467805600 -32400 0 AKST}
+ {483534000 -28800 1 AKDT}
+ {499255200 -32400 0 AKST}
+ {514983600 -28800 1 AKDT}
+ {530704800 -32400 0 AKST}
+ {544618800 -28800 1 AKDT}
+ {562154400 -32400 0 AKST}
+ {576068400 -28800 1 AKDT}
+ {594208800 -32400 0 AKST}
+ {607518000 -28800 1 AKDT}
+ {625658400 -32400 0 AKST}
+ {638967600 -28800 1 AKDT}
+ {657108000 -32400 0 AKST}
+ {671022000 -28800 1 AKDT}
+ {688557600 -32400 0 AKST}
+ {702471600 -28800 1 AKDT}
+ {720007200 -32400 0 AKST}
+ {733921200 -28800 1 AKDT}
+ {752061600 -32400 0 AKST}
+ {765370800 -28800 1 AKDT}
+ {783511200 -32400 0 AKST}
+ {796820400 -28800 1 AKDT}
+ {814960800 -32400 0 AKST}
+ {828874800 -28800 1 AKDT}
+ {846410400 -32400 0 AKST}
+ {860324400 -28800 1 AKDT}
+ {877860000 -32400 0 AKST}
+ {891774000 -28800 1 AKDT}
+ {909309600 -32400 0 AKST}
+ {923223600 -28800 1 AKDT}
+ {941364000 -32400 0 AKST}
+ {954673200 -28800 1 AKDT}
+ {972813600 -32400 0 AKST}
+ {986122800 -28800 1 AKDT}
+ {1004263200 -32400 0 AKST}
+ {1018177200 -28800 1 AKDT}
+ {1035712800 -32400 0 AKST}
+ {1049626800 -28800 1 AKDT}
+ {1067162400 -32400 0 AKST}
+ {1081076400 -28800 1 AKDT}
+ {1099216800 -32400 0 AKST}
+ {1112526000 -28800 1 AKDT}
+ {1130666400 -32400 0 AKST}
+ {1143975600 -28800 1 AKDT}
+ {1162116000 -32400 0 AKST}
+ {1173610800 -28800 1 AKDT}
+ {1194170400 -32400 0 AKST}
+ {1205060400 -28800 1 AKDT}
+ {1225620000 -32400 0 AKST}
+ {1236510000 -28800 1 AKDT}
+ {1257069600 -32400 0 AKST}
+ {1268564400 -28800 1 AKDT}
+ {1289124000 -32400 0 AKST}
+ {1300014000 -28800 1 AKDT}
+ {1320573600 -32400 0 AKST}
+ {1331463600 -28800 1 AKDT}
+ {1352023200 -32400 0 AKST}
+ {1362913200 -28800 1 AKDT}
+ {1383472800 -32400 0 AKST}
+ {1394362800 -28800 1 AKDT}
+ {1414922400 -32400 0 AKST}
+ {1425812400 -28800 1 AKDT}
+ {1446372000 -32400 0 AKST}
+ {1457866800 -28800 1 AKDT}
+ {1478426400 -32400 0 AKST}
+ {1489316400 -28800 1 AKDT}
+ {1509876000 -32400 0 AKST}
+ {1520766000 -28800 1 AKDT}
+ {1541325600 -32400 0 AKST}
+ {1552215600 -28800 1 AKDT}
+ {1572775200 -32400 0 AKST}
+ {1583665200 -28800 1 AKDT}
+ {1604224800 -32400 0 AKST}
+ {1615719600 -28800 1 AKDT}
+ {1636279200 -32400 0 AKST}
+ {1647169200 -28800 1 AKDT}
+ {1667728800 -32400 0 AKST}
+ {1678618800 -28800 1 AKDT}
+ {1699178400 -32400 0 AKST}
+ {1710068400 -28800 1 AKDT}
+ {1730628000 -32400 0 AKST}
+ {1741518000 -28800 1 AKDT}
+ {1762077600 -32400 0 AKST}
+ {1772967600 -28800 1 AKDT}
+ {1793527200 -32400 0 AKST}
+ {1805022000 -28800 1 AKDT}
+ {1825581600 -32400 0 AKST}
+ {1836471600 -28800 1 AKDT}
+ {1857031200 -32400 0 AKST}
+ {1867921200 -28800 1 AKDT}
+ {1888480800 -32400 0 AKST}
+ {1899370800 -28800 1 AKDT}
+ {1919930400 -32400 0 AKST}
+ {1930820400 -28800 1 AKDT}
+ {1951380000 -32400 0 AKST}
+ {1962874800 -28800 1 AKDT}
+ {1983434400 -32400 0 AKST}
+ {1994324400 -28800 1 AKDT}
+ {2014884000 -32400 0 AKST}
+ {2025774000 -28800 1 AKDT}
+ {2046333600 -32400 0 AKST}
+ {2057223600 -28800 1 AKDT}
+ {2077783200 -32400 0 AKST}
+ {2088673200 -28800 1 AKDT}
+ {2109232800 -32400 0 AKST}
+ {2120122800 -28800 1 AKDT}
+ {2140682400 -32400 0 AKST}
+ {2152177200 -28800 1 AKDT}
+ {2172736800 -32400 0 AKST}
+ {2183626800 -28800 1 AKDT}
+ {2204186400 -32400 0 AKST}
+ {2215076400 -28800 1 AKDT}
+ {2235636000 -32400 0 AKST}
+ {2246526000 -28800 1 AKDT}
+ {2267085600 -32400 0 AKST}
+ {2277975600 -28800 1 AKDT}
+ {2298535200 -32400 0 AKST}
+ {2309425200 -28800 1 AKDT}
+ {2329984800 -32400 0 AKST}
+ {2341479600 -28800 1 AKDT}
+ {2362039200 -32400 0 AKST}
+ {2372929200 -28800 1 AKDT}
+ {2393488800 -32400 0 AKST}
+ {2404378800 -28800 1 AKDT}
+ {2424938400 -32400 0 AKST}
+ {2435828400 -28800 1 AKDT}
+ {2456388000 -32400 0 AKST}
+ {2467278000 -28800 1 AKDT}
+ {2487837600 -32400 0 AKST}
+ {2499332400 -28800 1 AKDT}
+ {2519892000 -32400 0 AKST}
+ {2530782000 -28800 1 AKDT}
+ {2551341600 -32400 0 AKST}
+ {2562231600 -28800 1 AKDT}
+ {2582791200 -32400 0 AKST}
+ {2593681200 -28800 1 AKDT}
+ {2614240800 -32400 0 AKST}
+ {2625130800 -28800 1 AKDT}
+ {2645690400 -32400 0 AKST}
+ {2656580400 -28800 1 AKDT}
+ {2677140000 -32400 0 AKST}
+ {2688634800 -28800 1 AKDT}
+ {2709194400 -32400 0 AKST}
+ {2720084400 -28800 1 AKDT}
+ {2740644000 -32400 0 AKST}
+ {2751534000 -28800 1 AKDT}
+ {2772093600 -32400 0 AKST}
+ {2782983600 -28800 1 AKDT}
+ {2803543200 -32400 0 AKST}
+ {2814433200 -28800 1 AKDT}
+ {2834992800 -32400 0 AKST}
+ {2846487600 -28800 1 AKDT}
+ {2867047200 -32400 0 AKST}
+ {2877937200 -28800 1 AKDT}
+ {2898496800 -32400 0 AKST}
+ {2909386800 -28800 1 AKDT}
+ {2929946400 -32400 0 AKST}
+ {2940836400 -28800 1 AKDT}
+ {2961396000 -32400 0 AKST}
+ {2972286000 -28800 1 AKDT}
+ {2992845600 -32400 0 AKST}
+ {3003735600 -28800 1 AKDT}
+ {3024295200 -32400 0 AKST}
+ {3035790000 -28800 1 AKDT}
+ {3056349600 -32400 0 AKST}
+ {3067239600 -28800 1 AKDT}
+ {3087799200 -32400 0 AKST}
+ {3098689200 -28800 1 AKDT}
+ {3119248800 -32400 0 AKST}
+ {3130138800 -28800 1 AKDT}
+ {3150698400 -32400 0 AKST}
+ {3161588400 -28800 1 AKDT}
+ {3182148000 -32400 0 AKST}
+ {3193038000 -28800 1 AKDT}
+ {3213597600 -32400 0 AKST}
+ {3225092400 -28800 1 AKDT}
+ {3245652000 -32400 0 AKST}
+ {3256542000 -28800 1 AKDT}
+ {3277101600 -32400 0 AKST}
+ {3287991600 -28800 1 AKDT}
+ {3308551200 -32400 0 AKST}
+ {3319441200 -28800 1 AKDT}
+ {3340000800 -32400 0 AKST}
+ {3350890800 -28800 1 AKDT}
+ {3371450400 -32400 0 AKST}
+ {3382945200 -28800 1 AKDT}
+ {3403504800 -32400 0 AKST}
+ {3414394800 -28800 1 AKDT}
+ {3434954400 -32400 0 AKST}
+ {3445844400 -28800 1 AKDT}
+ {3466404000 -32400 0 AKST}
+ {3477294000 -28800 1 AKDT}
+ {3497853600 -32400 0 AKST}
+ {3508743600 -28800 1 AKDT}
+ {3529303200 -32400 0 AKST}
+ {3540193200 -28800 1 AKDT}
+ {3560752800 -32400 0 AKST}
+ {3572247600 -28800 1 AKDT}
+ {3592807200 -32400 0 AKST}
+ {3603697200 -28800 1 AKDT}
+ {3624256800 -32400 0 AKST}
+ {3635146800 -28800 1 AKDT}
+ {3655706400 -32400 0 AKST}
+ {3666596400 -28800 1 AKDT}
+ {3687156000 -32400 0 AKST}
+ {3698046000 -28800 1 AKDT}
+ {3718605600 -32400 0 AKST}
+ {3730100400 -28800 1 AKDT}
+ {3750660000 -32400 0 AKST}
+ {3761550000 -28800 1 AKDT}
+ {3782109600 -32400 0 AKST}
+ {3792999600 -28800 1 AKDT}
+ {3813559200 -32400 0 AKST}
+ {3824449200 -28800 1 AKDT}
+ {3845008800 -32400 0 AKST}
+ {3855898800 -28800 1 AKDT}
+ {3876458400 -32400 0 AKST}
+ {3887348400 -28800 1 AKDT}
+ {3907908000 -32400 0 AKST}
+ {3919402800 -28800 1 AKDT}
+ {3939962400 -32400 0 AKST}
+ {3950852400 -28800 1 AKDT}
+ {3971412000 -32400 0 AKST}
+ {3982302000 -28800 1 AKDT}
+ {4002861600 -32400 0 AKST}
+ {4013751600 -28800 1 AKDT}
+ {4034311200 -32400 0 AKST}
+ {4045201200 -28800 1 AKDT}
+ {4065760800 -32400 0 AKST}
+ {4076650800 -28800 1 AKDT}
+ {4097210400 -32400 0 AKST}
+}
diff --git a/library/tzdata/America/St_Barthelemy b/library/tzdata/America/St_Barthelemy
index 25c114a..46bc287 100644
--- a/library/tzdata/America/St_Barthelemy
+++ b/library/tzdata/America/St_Barthelemy
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Guadeloupe)]} {
- LoadTimeZoneFile America/Guadeloupe
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
}
-set TZData(:America/St_Barthelemy) $TZData(:America/Guadeloupe)
+set TZData(:America/St_Barthelemy) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/St_Johns b/library/tzdata/America/St_Johns
index 59f92bb..1492961 100644
--- a/library/tzdata/America/St_Johns
+++ b/library/tzdata/America/St_Johns
@@ -7,7 +7,7 @@ set TZData(:America/St_Johns) {
{-1650137348 -12652 0 NST}
{-1640982548 -12652 0 NST}
{-1632076148 -9052 1 NDT}
- {-1614799748 -12652 0 NST}
+ {-1615145348 -12652 0 NST}
{-1609446548 -12652 0 NST}
{-1598650148 -9052 1 NDT}
{-1590100148 -12652 0 NST}
@@ -191,181 +191,182 @@ set TZData(:America/St_Johns) {
{1268537460 -9000 1 NDT}
{1289097060 -12600 0 NST}
{1299987060 -9000 1 NDT}
- {1320546660 -12600 0 NST}
- {1331436660 -9000 1 NDT}
- {1351996260 -12600 0 NST}
- {1362886260 -9000 1 NDT}
- {1383445860 -12600 0 NST}
- {1394335860 -9000 1 NDT}
- {1414895460 -12600 0 NST}
- {1425785460 -9000 1 NDT}
- {1446345060 -12600 0 NST}
- {1457839860 -9000 1 NDT}
- {1478399460 -12600 0 NST}
- {1489289460 -9000 1 NDT}
- {1509849060 -12600 0 NST}
- {1520739060 -9000 1 NDT}
- {1541298660 -12600 0 NST}
- {1552188660 -9000 1 NDT}
- {1572748260 -12600 0 NST}
- {1583638260 -9000 1 NDT}
- {1604197860 -12600 0 NST}
- {1615692660 -9000 1 NDT}
- {1636252260 -12600 0 NST}
- {1647142260 -9000 1 NDT}
- {1667701860 -12600 0 NST}
- {1678591860 -9000 1 NDT}
- {1699151460 -12600 0 NST}
- {1710041460 -9000 1 NDT}
- {1730601060 -12600 0 NST}
- {1741491060 -9000 1 NDT}
- {1762050660 -12600 0 NST}
- {1772940660 -9000 1 NDT}
- {1793500260 -12600 0 NST}
- {1804995060 -9000 1 NDT}
- {1825554660 -12600 0 NST}
- {1836444660 -9000 1 NDT}
- {1857004260 -12600 0 NST}
- {1867894260 -9000 1 NDT}
- {1888453860 -12600 0 NST}
- {1899343860 -9000 1 NDT}
- {1919903460 -12600 0 NST}
- {1930793460 -9000 1 NDT}
- {1951353060 -12600 0 NST}
- {1962847860 -9000 1 NDT}
- {1983407460 -12600 0 NST}
- {1994297460 -9000 1 NDT}
- {2014857060 -12600 0 NST}
- {2025747060 -9000 1 NDT}
- {2046306660 -12600 0 NST}
- {2057196660 -9000 1 NDT}
- {2077756260 -12600 0 NST}
- {2088646260 -9000 1 NDT}
- {2109205860 -12600 0 NST}
- {2120095860 -9000 1 NDT}
- {2140655460 -12600 0 NST}
- {2152150260 -9000 1 NDT}
- {2172709860 -12600 0 NST}
- {2183599860 -9000 1 NDT}
- {2204159460 -12600 0 NST}
- {2215049460 -9000 1 NDT}
- {2235609060 -12600 0 NST}
- {2246499060 -9000 1 NDT}
- {2267058660 -12600 0 NST}
- {2277948660 -9000 1 NDT}
- {2298508260 -12600 0 NST}
- {2309398260 -9000 1 NDT}
- {2329957860 -12600 0 NST}
- {2341452660 -9000 1 NDT}
- {2362012260 -12600 0 NST}
- {2372902260 -9000 1 NDT}
- {2393461860 -12600 0 NST}
- {2404351860 -9000 1 NDT}
- {2424911460 -12600 0 NST}
- {2435801460 -9000 1 NDT}
- {2456361060 -12600 0 NST}
- {2467251060 -9000 1 NDT}
- {2487810660 -12600 0 NST}
- {2499305460 -9000 1 NDT}
- {2519865060 -12600 0 NST}
- {2530755060 -9000 1 NDT}
- {2551314660 -12600 0 NST}
- {2562204660 -9000 1 NDT}
- {2582764260 -12600 0 NST}
- {2593654260 -9000 1 NDT}
- {2614213860 -12600 0 NST}
- {2625103860 -9000 1 NDT}
- {2645663460 -12600 0 NST}
- {2656553460 -9000 1 NDT}
- {2677113060 -12600 0 NST}
- {2688607860 -9000 1 NDT}
- {2709167460 -12600 0 NST}
- {2720057460 -9000 1 NDT}
- {2740617060 -12600 0 NST}
- {2751507060 -9000 1 NDT}
- {2772066660 -12600 0 NST}
- {2782956660 -9000 1 NDT}
- {2803516260 -12600 0 NST}
- {2814406260 -9000 1 NDT}
- {2834965860 -12600 0 NST}
- {2846460660 -9000 1 NDT}
- {2867020260 -12600 0 NST}
- {2877910260 -9000 1 NDT}
- {2898469860 -12600 0 NST}
- {2909359860 -9000 1 NDT}
- {2929919460 -12600 0 NST}
- {2940809460 -9000 1 NDT}
- {2961369060 -12600 0 NST}
- {2972259060 -9000 1 NDT}
- {2992818660 -12600 0 NST}
- {3003708660 -9000 1 NDT}
- {3024268260 -12600 0 NST}
- {3035763060 -9000 1 NDT}
- {3056322660 -12600 0 NST}
- {3067212660 -9000 1 NDT}
- {3087772260 -12600 0 NST}
- {3098662260 -9000 1 NDT}
- {3119221860 -12600 0 NST}
- {3130111860 -9000 1 NDT}
- {3150671460 -12600 0 NST}
- {3161561460 -9000 1 NDT}
- {3182121060 -12600 0 NST}
- {3193011060 -9000 1 NDT}
- {3213570660 -12600 0 NST}
- {3225065460 -9000 1 NDT}
- {3245625060 -12600 0 NST}
- {3256515060 -9000 1 NDT}
- {3277074660 -12600 0 NST}
- {3287964660 -9000 1 NDT}
- {3308524260 -12600 0 NST}
- {3319414260 -9000 1 NDT}
- {3339973860 -12600 0 NST}
- {3350863860 -9000 1 NDT}
- {3371423460 -12600 0 NST}
- {3382918260 -9000 1 NDT}
- {3403477860 -12600 0 NST}
- {3414367860 -9000 1 NDT}
- {3434927460 -12600 0 NST}
- {3445817460 -9000 1 NDT}
- {3466377060 -12600 0 NST}
- {3477267060 -9000 1 NDT}
- {3497826660 -12600 0 NST}
- {3508716660 -9000 1 NDT}
- {3529276260 -12600 0 NST}
- {3540166260 -9000 1 NDT}
- {3560725860 -12600 0 NST}
- {3572220660 -9000 1 NDT}
- {3592780260 -12600 0 NST}
- {3603670260 -9000 1 NDT}
- {3624229860 -12600 0 NST}
- {3635119860 -9000 1 NDT}
- {3655679460 -12600 0 NST}
- {3666569460 -9000 1 NDT}
- {3687129060 -12600 0 NST}
- {3698019060 -9000 1 NDT}
- {3718578660 -12600 0 NST}
- {3730073460 -9000 1 NDT}
- {3750633060 -12600 0 NST}
- {3761523060 -9000 1 NDT}
- {3782082660 -12600 0 NST}
- {3792972660 -9000 1 NDT}
- {3813532260 -12600 0 NST}
- {3824422260 -9000 1 NDT}
- {3844981860 -12600 0 NST}
- {3855871860 -9000 1 NDT}
- {3876431460 -12600 0 NST}
- {3887321460 -9000 1 NDT}
- {3907881060 -12600 0 NST}
- {3919375860 -9000 1 NDT}
- {3939935460 -12600 0 NST}
- {3950825460 -9000 1 NDT}
- {3971385060 -12600 0 NST}
- {3982275060 -9000 1 NDT}
- {4002834660 -12600 0 NST}
- {4013724660 -9000 1 NDT}
- {4034284260 -12600 0 NST}
- {4045174260 -9000 1 NDT}
- {4065733860 -12600 0 NST}
- {4076623860 -9000 1 NDT}
- {4097183460 -12600 0 NST}
+ {1320114600 -9000 0 NDT}
+ {1320553800 -12600 0 NST}
+ {1331443800 -9000 1 NDT}
+ {1352003400 -12600 0 NST}
+ {1362893400 -9000 1 NDT}
+ {1383453000 -12600 0 NST}
+ {1394343000 -9000 1 NDT}
+ {1414902600 -12600 0 NST}
+ {1425792600 -9000 1 NDT}
+ {1446352200 -12600 0 NST}
+ {1457847000 -9000 1 NDT}
+ {1478406600 -12600 0 NST}
+ {1489296600 -9000 1 NDT}
+ {1509856200 -12600 0 NST}
+ {1520746200 -9000 1 NDT}
+ {1541305800 -12600 0 NST}
+ {1552195800 -9000 1 NDT}
+ {1572755400 -12600 0 NST}
+ {1583645400 -9000 1 NDT}
+ {1604205000 -12600 0 NST}
+ {1615699800 -9000 1 NDT}
+ {1636259400 -12600 0 NST}
+ {1647149400 -9000 1 NDT}
+ {1667709000 -12600 0 NST}
+ {1678599000 -9000 1 NDT}
+ {1699158600 -12600 0 NST}
+ {1710048600 -9000 1 NDT}
+ {1730608200 -12600 0 NST}
+ {1741498200 -9000 1 NDT}
+ {1762057800 -12600 0 NST}
+ {1772947800 -9000 1 NDT}
+ {1793507400 -12600 0 NST}
+ {1805002200 -9000 1 NDT}
+ {1825561800 -12600 0 NST}
+ {1836451800 -9000 1 NDT}
+ {1857011400 -12600 0 NST}
+ {1867901400 -9000 1 NDT}
+ {1888461000 -12600 0 NST}
+ {1899351000 -9000 1 NDT}
+ {1919910600 -12600 0 NST}
+ {1930800600 -9000 1 NDT}
+ {1951360200 -12600 0 NST}
+ {1962855000 -9000 1 NDT}
+ {1983414600 -12600 0 NST}
+ {1994304600 -9000 1 NDT}
+ {2014864200 -12600 0 NST}
+ {2025754200 -9000 1 NDT}
+ {2046313800 -12600 0 NST}
+ {2057203800 -9000 1 NDT}
+ {2077763400 -12600 0 NST}
+ {2088653400 -9000 1 NDT}
+ {2109213000 -12600 0 NST}
+ {2120103000 -9000 1 NDT}
+ {2140662600 -12600 0 NST}
+ {2152157400 -9000 1 NDT}
+ {2172717000 -12600 0 NST}
+ {2183607000 -9000 1 NDT}
+ {2204166600 -12600 0 NST}
+ {2215056600 -9000 1 NDT}
+ {2235616200 -12600 0 NST}
+ {2246506200 -9000 1 NDT}
+ {2267065800 -12600 0 NST}
+ {2277955800 -9000 1 NDT}
+ {2298515400 -12600 0 NST}
+ {2309405400 -9000 1 NDT}
+ {2329965000 -12600 0 NST}
+ {2341459800 -9000 1 NDT}
+ {2362019400 -12600 0 NST}
+ {2372909400 -9000 1 NDT}
+ {2393469000 -12600 0 NST}
+ {2404359000 -9000 1 NDT}
+ {2424918600 -12600 0 NST}
+ {2435808600 -9000 1 NDT}
+ {2456368200 -12600 0 NST}
+ {2467258200 -9000 1 NDT}
+ {2487817800 -12600 0 NST}
+ {2499312600 -9000 1 NDT}
+ {2519872200 -12600 0 NST}
+ {2530762200 -9000 1 NDT}
+ {2551321800 -12600 0 NST}
+ {2562211800 -9000 1 NDT}
+ {2582771400 -12600 0 NST}
+ {2593661400 -9000 1 NDT}
+ {2614221000 -12600 0 NST}
+ {2625111000 -9000 1 NDT}
+ {2645670600 -12600 0 NST}
+ {2656560600 -9000 1 NDT}
+ {2677120200 -12600 0 NST}
+ {2688615000 -9000 1 NDT}
+ {2709174600 -12600 0 NST}
+ {2720064600 -9000 1 NDT}
+ {2740624200 -12600 0 NST}
+ {2751514200 -9000 1 NDT}
+ {2772073800 -12600 0 NST}
+ {2782963800 -9000 1 NDT}
+ {2803523400 -12600 0 NST}
+ {2814413400 -9000 1 NDT}
+ {2834973000 -12600 0 NST}
+ {2846467800 -9000 1 NDT}
+ {2867027400 -12600 0 NST}
+ {2877917400 -9000 1 NDT}
+ {2898477000 -12600 0 NST}
+ {2909367000 -9000 1 NDT}
+ {2929926600 -12600 0 NST}
+ {2940816600 -9000 1 NDT}
+ {2961376200 -12600 0 NST}
+ {2972266200 -9000 1 NDT}
+ {2992825800 -12600 0 NST}
+ {3003715800 -9000 1 NDT}
+ {3024275400 -12600 0 NST}
+ {3035770200 -9000 1 NDT}
+ {3056329800 -12600 0 NST}
+ {3067219800 -9000 1 NDT}
+ {3087779400 -12600 0 NST}
+ {3098669400 -9000 1 NDT}
+ {3119229000 -12600 0 NST}
+ {3130119000 -9000 1 NDT}
+ {3150678600 -12600 0 NST}
+ {3161568600 -9000 1 NDT}
+ {3182128200 -12600 0 NST}
+ {3193018200 -9000 1 NDT}
+ {3213577800 -12600 0 NST}
+ {3225072600 -9000 1 NDT}
+ {3245632200 -12600 0 NST}
+ {3256522200 -9000 1 NDT}
+ {3277081800 -12600 0 NST}
+ {3287971800 -9000 1 NDT}
+ {3308531400 -12600 0 NST}
+ {3319421400 -9000 1 NDT}
+ {3339981000 -12600 0 NST}
+ {3350871000 -9000 1 NDT}
+ {3371430600 -12600 0 NST}
+ {3382925400 -9000 1 NDT}
+ {3403485000 -12600 0 NST}
+ {3414375000 -9000 1 NDT}
+ {3434934600 -12600 0 NST}
+ {3445824600 -9000 1 NDT}
+ {3466384200 -12600 0 NST}
+ {3477274200 -9000 1 NDT}
+ {3497833800 -12600 0 NST}
+ {3508723800 -9000 1 NDT}
+ {3529283400 -12600 0 NST}
+ {3540173400 -9000 1 NDT}
+ {3560733000 -12600 0 NST}
+ {3572227800 -9000 1 NDT}
+ {3592787400 -12600 0 NST}
+ {3603677400 -9000 1 NDT}
+ {3624237000 -12600 0 NST}
+ {3635127000 -9000 1 NDT}
+ {3655686600 -12600 0 NST}
+ {3666576600 -9000 1 NDT}
+ {3687136200 -12600 0 NST}
+ {3698026200 -9000 1 NDT}
+ {3718585800 -12600 0 NST}
+ {3730080600 -9000 1 NDT}
+ {3750640200 -12600 0 NST}
+ {3761530200 -9000 1 NDT}
+ {3782089800 -12600 0 NST}
+ {3792979800 -9000 1 NDT}
+ {3813539400 -12600 0 NST}
+ {3824429400 -9000 1 NDT}
+ {3844989000 -12600 0 NST}
+ {3855879000 -9000 1 NDT}
+ {3876438600 -12600 0 NST}
+ {3887328600 -9000 1 NDT}
+ {3907888200 -12600 0 NST}
+ {3919383000 -9000 1 NDT}
+ {3939942600 -12600 0 NST}
+ {3950832600 -9000 1 NDT}
+ {3971392200 -12600 0 NST}
+ {3982282200 -9000 1 NDT}
+ {4002841800 -12600 0 NST}
+ {4013731800 -9000 1 NDT}
+ {4034291400 -12600 0 NST}
+ {4045181400 -9000 1 NDT}
+ {4065741000 -12600 0 NST}
+ {4076631000 -9000 1 NDT}
+ {4097190600 -12600 0 NST}
}
diff --git a/library/tzdata/America/St_Kitts b/library/tzdata/America/St_Kitts
index bfd803b..6ad7f04 100644
--- a/library/tzdata/America/St_Kitts
+++ b/library/tzdata/America/St_Kitts
@@ -1,6 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/St_Kitts) {
- {-9223372036854775808 -15052 0 LMT}
- {-1825098548 -14400 0 AST}
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
}
+set TZData(:America/St_Kitts) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/St_Lucia b/library/tzdata/America/St_Lucia
index c2767dd..e479b31 100644
--- a/library/tzdata/America/St_Lucia
+++ b/library/tzdata/America/St_Lucia
@@ -1,7 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/St_Lucia) {
- {-9223372036854775808 -14640 0 LMT}
- {-2524506960 -14640 0 CMT}
- {-1830369360 -14400 0 AST}
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
}
+set TZData(:America/St_Lucia) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/St_Thomas b/library/tzdata/America/St_Thomas
index bf93595..24698b8 100644
--- a/library/tzdata/America/St_Thomas
+++ b/library/tzdata/America/St_Thomas
@@ -1,6 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/St_Thomas) {
- {-9223372036854775808 -15584 0 LMT}
- {-1846266016 -14400 0 AST}
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
}
+set TZData(:America/St_Thomas) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/St_Vincent b/library/tzdata/America/St_Vincent
index 3a884c7..e3b32fb 100644
--- a/library/tzdata/America/St_Vincent
+++ b/library/tzdata/America/St_Vincent
@@ -1,7 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/St_Vincent) {
- {-9223372036854775808 -14696 0 LMT}
- {-2524506904 -14696 0 KMT}
- {-1830369304 -14400 0 AST}
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
}
+set TZData(:America/St_Vincent) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Swift_Current b/library/tzdata/America/Swift_Current
index dc4aa37..ad07762 100644
--- a/library/tzdata/America/Swift_Current
+++ b/library/tzdata/America/Swift_Current
@@ -4,7 +4,7 @@ set TZData(:America/Swift_Current) {
{-9223372036854775808 -25880 0 LMT}
{-2030201320 -25200 0 MST}
{-1632063600 -21600 1 MDT}
- {-1614787200 -25200 0 MST}
+ {-1615132800 -25200 0 MST}
{-880210800 -21600 1 MWT}
{-769395600 -21600 1 MPT}
{-765388800 -25200 0 MST}
diff --git a/library/tzdata/America/Tijuana b/library/tzdata/America/Tijuana
index c191c3c..6118cde 100644
--- a/library/tzdata/America/Tijuana
+++ b/library/tzdata/America/Tijuana
@@ -101,184 +101,185 @@ set TZData(:America/Tijuana) {
{1225011600 -28800 0 PST}
{1238925600 -25200 1 PDT}
{1256461200 -28800 0 PST}
- {1270375200 -25200 1 PDT}
- {1288515600 -28800 0 PST}
- {1301824800 -25200 1 PDT}
- {1319965200 -28800 0 PST}
- {1333274400 -25200 1 PDT}
- {1351414800 -28800 0 PST}
- {1365328800 -25200 1 PDT}
- {1382864400 -28800 0 PST}
- {1396778400 -25200 1 PDT}
- {1414314000 -28800 0 PST}
- {1428228000 -25200 1 PDT}
- {1445763600 -28800 0 PST}
- {1459677600 -25200 1 PDT}
- {1477818000 -28800 0 PST}
- {1491127200 -25200 1 PDT}
- {1509267600 -28800 0 PST}
- {1522576800 -25200 1 PDT}
- {1540717200 -28800 0 PST}
- {1554631200 -25200 1 PDT}
- {1572166800 -28800 0 PST}
- {1586080800 -25200 1 PDT}
- {1603616400 -28800 0 PST}
- {1617530400 -25200 1 PDT}
- {1635670800 -28800 0 PST}
- {1648980000 -25200 1 PDT}
- {1667120400 -28800 0 PST}
- {1680429600 -25200 1 PDT}
- {1698570000 -28800 0 PST}
- {1712484000 -25200 1 PDT}
- {1730019600 -28800 0 PST}
- {1743933600 -25200 1 PDT}
- {1761469200 -28800 0 PST}
- {1775383200 -25200 1 PDT}
- {1792918800 -28800 0 PST}
- {1806832800 -25200 1 PDT}
- {1824973200 -28800 0 PST}
- {1838282400 -25200 1 PDT}
- {1856422800 -28800 0 PST}
- {1869732000 -25200 1 PDT}
- {1887872400 -28800 0 PST}
- {1901786400 -25200 1 PDT}
- {1919322000 -28800 0 PST}
- {1933236000 -25200 1 PDT}
- {1950771600 -28800 0 PST}
- {1964685600 -25200 1 PDT}
- {1982826000 -28800 0 PST}
- {1996135200 -25200 1 PDT}
- {2014275600 -28800 0 PST}
- {2027584800 -25200 1 PDT}
- {2045725200 -28800 0 PST}
- {2059034400 -25200 1 PDT}
- {2077174800 -28800 0 PST}
- {2091088800 -25200 1 PDT}
- {2108624400 -28800 0 PST}
- {2122538400 -25200 1 PDT}
- {2140074000 -28800 0 PST}
- {2153988000 -25200 1 PDT}
- {2172128400 -28800 0 PST}
- {2185437600 -25200 1 PDT}
- {2203578000 -28800 0 PST}
- {2216887200 -25200 1 PDT}
- {2235027600 -28800 0 PST}
- {2248941600 -25200 1 PDT}
- {2266477200 -28800 0 PST}
- {2280391200 -25200 1 PDT}
- {2297926800 -28800 0 PST}
- {2311840800 -25200 1 PDT}
- {2329376400 -28800 0 PST}
- {2343290400 -25200 1 PDT}
- {2361430800 -28800 0 PST}
- {2374740000 -25200 1 PDT}
- {2392880400 -28800 0 PST}
- {2406189600 -25200 1 PDT}
- {2424330000 -28800 0 PST}
- {2438244000 -25200 1 PDT}
- {2455779600 -28800 0 PST}
- {2469693600 -25200 1 PDT}
- {2487229200 -28800 0 PST}
- {2501143200 -25200 1 PDT}
- {2519283600 -28800 0 PST}
- {2532592800 -25200 1 PDT}
- {2550733200 -28800 0 PST}
- {2564042400 -25200 1 PDT}
- {2582182800 -28800 0 PST}
- {2596096800 -25200 1 PDT}
- {2613632400 -28800 0 PST}
- {2627546400 -25200 1 PDT}
- {2645082000 -28800 0 PST}
- {2658996000 -25200 1 PDT}
- {2676531600 -28800 0 PST}
- {2690445600 -25200 1 PDT}
- {2708586000 -28800 0 PST}
- {2721895200 -25200 1 PDT}
- {2740035600 -28800 0 PST}
- {2753344800 -25200 1 PDT}
- {2771485200 -28800 0 PST}
- {2785399200 -25200 1 PDT}
- {2802934800 -28800 0 PST}
- {2816848800 -25200 1 PDT}
- {2834384400 -28800 0 PST}
- {2848298400 -25200 1 PDT}
- {2866438800 -28800 0 PST}
- {2879748000 -25200 1 PDT}
- {2897888400 -28800 0 PST}
- {2911197600 -25200 1 PDT}
- {2929338000 -28800 0 PST}
- {2942647200 -25200 1 PDT}
- {2960787600 -28800 0 PST}
- {2974701600 -25200 1 PDT}
- {2992237200 -28800 0 PST}
- {3006151200 -25200 1 PDT}
- {3023686800 -28800 0 PST}
- {3037600800 -25200 1 PDT}
- {3055741200 -28800 0 PST}
- {3069050400 -25200 1 PDT}
- {3087190800 -28800 0 PST}
- {3100500000 -25200 1 PDT}
- {3118640400 -28800 0 PST}
- {3132554400 -25200 1 PDT}
- {3150090000 -28800 0 PST}
- {3164004000 -25200 1 PDT}
- {3181539600 -28800 0 PST}
- {3195453600 -25200 1 PDT}
- {3212989200 -28800 0 PST}
- {3226903200 -25200 1 PDT}
- {3245043600 -28800 0 PST}
- {3258352800 -25200 1 PDT}
- {3276493200 -28800 0 PST}
- {3289802400 -25200 1 PDT}
- {3307942800 -28800 0 PST}
- {3321856800 -25200 1 PDT}
- {3339392400 -28800 0 PST}
- {3353306400 -25200 1 PDT}
- {3370842000 -28800 0 PST}
- {3384756000 -25200 1 PDT}
- {3402896400 -28800 0 PST}
- {3416205600 -25200 1 PDT}
- {3434346000 -28800 0 PST}
- {3447655200 -25200 1 PDT}
- {3465795600 -28800 0 PST}
- {3479709600 -25200 1 PDT}
- {3497245200 -28800 0 PST}
- {3511159200 -25200 1 PDT}
- {3528694800 -28800 0 PST}
- {3542608800 -25200 1 PDT}
- {3560144400 -28800 0 PST}
- {3574058400 -25200 1 PDT}
- {3592198800 -28800 0 PST}
- {3605508000 -25200 1 PDT}
- {3623648400 -28800 0 PST}
- {3636957600 -25200 1 PDT}
- {3655098000 -28800 0 PST}
- {3669012000 -25200 1 PDT}
- {3686547600 -28800 0 PST}
- {3700461600 -25200 1 PDT}
- {3717997200 -28800 0 PST}
- {3731911200 -25200 1 PDT}
- {3750051600 -28800 0 PST}
- {3763360800 -25200 1 PDT}
- {3781501200 -28800 0 PST}
- {3794810400 -25200 1 PDT}
- {3812950800 -28800 0 PST}
- {3826260000 -25200 1 PDT}
- {3844400400 -28800 0 PST}
- {3858314400 -25200 1 PDT}
- {3875850000 -28800 0 PST}
- {3889764000 -25200 1 PDT}
- {3907299600 -28800 0 PST}
- {3921213600 -25200 1 PDT}
- {3939354000 -28800 0 PST}
- {3952663200 -25200 1 PDT}
- {3970803600 -28800 0 PST}
- {3984112800 -25200 1 PDT}
- {4002253200 -28800 0 PST}
- {4016167200 -25200 1 PDT}
- {4033702800 -28800 0 PST}
- {4047616800 -25200 1 PDT}
- {4065152400 -28800 0 PST}
- {4079066400 -25200 1 PDT}
- {4096602000 -28800 0 PST}
+ {1262332800 -28800 0 PST}
+ {1268560800 -25200 1 PDT}
+ {1289120400 -28800 0 PST}
+ {1300010400 -25200 1 PDT}
+ {1320570000 -28800 0 PST}
+ {1331460000 -25200 1 PDT}
+ {1352019600 -28800 0 PST}
+ {1362909600 -25200 1 PDT}
+ {1383469200 -28800 0 PST}
+ {1394359200 -25200 1 PDT}
+ {1414918800 -28800 0 PST}
+ {1425808800 -25200 1 PDT}
+ {1446368400 -28800 0 PST}
+ {1457863200 -25200 1 PDT}
+ {1478422800 -28800 0 PST}
+ {1489312800 -25200 1 PDT}
+ {1509872400 -28800 0 PST}
+ {1520762400 -25200 1 PDT}
+ {1541322000 -28800 0 PST}
+ {1552212000 -25200 1 PDT}
+ {1572771600 -28800 0 PST}
+ {1583661600 -25200 1 PDT}
+ {1604221200 -28800 0 PST}
+ {1615716000 -25200 1 PDT}
+ {1636275600 -28800 0 PST}
+ {1647165600 -25200 1 PDT}
+ {1667725200 -28800 0 PST}
+ {1678615200 -25200 1 PDT}
+ {1699174800 -28800 0 PST}
+ {1710064800 -25200 1 PDT}
+ {1730624400 -28800 0 PST}
+ {1741514400 -25200 1 PDT}
+ {1762074000 -28800 0 PST}
+ {1772964000 -25200 1 PDT}
+ {1793523600 -28800 0 PST}
+ {1805018400 -25200 1 PDT}
+ {1825578000 -28800 0 PST}
+ {1836468000 -25200 1 PDT}
+ {1857027600 -28800 0 PST}
+ {1867917600 -25200 1 PDT}
+ {1888477200 -28800 0 PST}
+ {1899367200 -25200 1 PDT}
+ {1919926800 -28800 0 PST}
+ {1930816800 -25200 1 PDT}
+ {1951376400 -28800 0 PST}
+ {1962871200 -25200 1 PDT}
+ {1983430800 -28800 0 PST}
+ {1994320800 -25200 1 PDT}
+ {2014880400 -28800 0 PST}
+ {2025770400 -25200 1 PDT}
+ {2046330000 -28800 0 PST}
+ {2057220000 -25200 1 PDT}
+ {2077779600 -28800 0 PST}
+ {2088669600 -25200 1 PDT}
+ {2109229200 -28800 0 PST}
+ {2120119200 -25200 1 PDT}
+ {2140678800 -28800 0 PST}
+ {2152173600 -25200 1 PDT}
+ {2172733200 -28800 0 PST}
+ {2183623200 -25200 1 PDT}
+ {2204182800 -28800 0 PST}
+ {2215072800 -25200 1 PDT}
+ {2235632400 -28800 0 PST}
+ {2246522400 -25200 1 PDT}
+ {2267082000 -28800 0 PST}
+ {2277972000 -25200 1 PDT}
+ {2298531600 -28800 0 PST}
+ {2309421600 -25200 1 PDT}
+ {2329981200 -28800 0 PST}
+ {2341476000 -25200 1 PDT}
+ {2362035600 -28800 0 PST}
+ {2372925600 -25200 1 PDT}
+ {2393485200 -28800 0 PST}
+ {2404375200 -25200 1 PDT}
+ {2424934800 -28800 0 PST}
+ {2435824800 -25200 1 PDT}
+ {2456384400 -28800 0 PST}
+ {2467274400 -25200 1 PDT}
+ {2487834000 -28800 0 PST}
+ {2499328800 -25200 1 PDT}
+ {2519888400 -28800 0 PST}
+ {2530778400 -25200 1 PDT}
+ {2551338000 -28800 0 PST}
+ {2562228000 -25200 1 PDT}
+ {2582787600 -28800 0 PST}
+ {2593677600 -25200 1 PDT}
+ {2614237200 -28800 0 PST}
+ {2625127200 -25200 1 PDT}
+ {2645686800 -28800 0 PST}
+ {2656576800 -25200 1 PDT}
+ {2677136400 -28800 0 PST}
+ {2688631200 -25200 1 PDT}
+ {2709190800 -28800 0 PST}
+ {2720080800 -25200 1 PDT}
+ {2740640400 -28800 0 PST}
+ {2751530400 -25200 1 PDT}
+ {2772090000 -28800 0 PST}
+ {2782980000 -25200 1 PDT}
+ {2803539600 -28800 0 PST}
+ {2814429600 -25200 1 PDT}
+ {2834989200 -28800 0 PST}
+ {2846484000 -25200 1 PDT}
+ {2867043600 -28800 0 PST}
+ {2877933600 -25200 1 PDT}
+ {2898493200 -28800 0 PST}
+ {2909383200 -25200 1 PDT}
+ {2929942800 -28800 0 PST}
+ {2940832800 -25200 1 PDT}
+ {2961392400 -28800 0 PST}
+ {2972282400 -25200 1 PDT}
+ {2992842000 -28800 0 PST}
+ {3003732000 -25200 1 PDT}
+ {3024291600 -28800 0 PST}
+ {3035786400 -25200 1 PDT}
+ {3056346000 -28800 0 PST}
+ {3067236000 -25200 1 PDT}
+ {3087795600 -28800 0 PST}
+ {3098685600 -25200 1 PDT}
+ {3119245200 -28800 0 PST}
+ {3130135200 -25200 1 PDT}
+ {3150694800 -28800 0 PST}
+ {3161584800 -25200 1 PDT}
+ {3182144400 -28800 0 PST}
+ {3193034400 -25200 1 PDT}
+ {3213594000 -28800 0 PST}
+ {3225088800 -25200 1 PDT}
+ {3245648400 -28800 0 PST}
+ {3256538400 -25200 1 PDT}
+ {3277098000 -28800 0 PST}
+ {3287988000 -25200 1 PDT}
+ {3308547600 -28800 0 PST}
+ {3319437600 -25200 1 PDT}
+ {3339997200 -28800 0 PST}
+ {3350887200 -25200 1 PDT}
+ {3371446800 -28800 0 PST}
+ {3382941600 -25200 1 PDT}
+ {3403501200 -28800 0 PST}
+ {3414391200 -25200 1 PDT}
+ {3434950800 -28800 0 PST}
+ {3445840800 -25200 1 PDT}
+ {3466400400 -28800 0 PST}
+ {3477290400 -25200 1 PDT}
+ {3497850000 -28800 0 PST}
+ {3508740000 -25200 1 PDT}
+ {3529299600 -28800 0 PST}
+ {3540189600 -25200 1 PDT}
+ {3560749200 -28800 0 PST}
+ {3572244000 -25200 1 PDT}
+ {3592803600 -28800 0 PST}
+ {3603693600 -25200 1 PDT}
+ {3624253200 -28800 0 PST}
+ {3635143200 -25200 1 PDT}
+ {3655702800 -28800 0 PST}
+ {3666592800 -25200 1 PDT}
+ {3687152400 -28800 0 PST}
+ {3698042400 -25200 1 PDT}
+ {3718602000 -28800 0 PST}
+ {3730096800 -25200 1 PDT}
+ {3750656400 -28800 0 PST}
+ {3761546400 -25200 1 PDT}
+ {3782106000 -28800 0 PST}
+ {3792996000 -25200 1 PDT}
+ {3813555600 -28800 0 PST}
+ {3824445600 -25200 1 PDT}
+ {3845005200 -28800 0 PST}
+ {3855895200 -25200 1 PDT}
+ {3876454800 -28800 0 PST}
+ {3887344800 -25200 1 PDT}
+ {3907904400 -28800 0 PST}
+ {3919399200 -25200 1 PDT}
+ {3939958800 -28800 0 PST}
+ {3950848800 -25200 1 PDT}
+ {3971408400 -28800 0 PST}
+ {3982298400 -25200 1 PDT}
+ {4002858000 -28800 0 PST}
+ {4013748000 -25200 1 PDT}
+ {4034307600 -28800 0 PST}
+ {4045197600 -25200 1 PDT}
+ {4065757200 -28800 0 PST}
+ {4076647200 -25200 1 PDT}
+ {4097206800 -28800 0 PST}
}
diff --git a/library/tzdata/America/Toronto b/library/tzdata/America/Toronto
index e4fc91a..09bf786 100644
--- a/library/tzdata/America/Toronto
+++ b/library/tzdata/America/Toronto
@@ -4,7 +4,7 @@ set TZData(:America/Toronto) {
{-9223372036854775808 -19052 0 LMT}
{-2366736148 -18000 0 EST}
{-1632070800 -14400 1 EDT}
- {-1614794400 -18000 0 EST}
+ {-1615140000 -18000 0 EST}
{-1609441200 -18000 0 EST}
{-1601753400 -14400 1 EDT}
{-1583697600 -18000 0 EST}
diff --git a/library/tzdata/America/Tortola b/library/tzdata/America/Tortola
index bf7f1fc..aa6f655 100644
--- a/library/tzdata/America/Tortola
+++ b/library/tzdata/America/Tortola
@@ -1,6 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/Tortola) {
- {-9223372036854775808 -15508 0 LMT}
- {-1846266092 -14400 0 AST}
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
}
+set TZData(:America/Tortola) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Vancouver b/library/tzdata/America/Vancouver
index b2e0415..aef639a 100644
--- a/library/tzdata/America/Vancouver
+++ b/library/tzdata/America/Vancouver
@@ -4,7 +4,7 @@ set TZData(:America/Vancouver) {
{-9223372036854775808 -29548 0 LMT}
{-2713880852 -28800 0 PST}
{-1632060000 -25200 1 PDT}
- {-1614783600 -28800 0 PST}
+ {-1615129200 -28800 0 PST}
{-880207200 -25200 1 PWT}
{-769395600 -25200 1 PPT}
{-765385200 -28800 0 PST}
diff --git a/library/tzdata/America/Virgin b/library/tzdata/America/Virgin
index 390d7c2..c267e5b 100644
--- a/library/tzdata/America/Virgin
+++ b/library/tzdata/America/Virgin
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/St_Thomas)]} {
- LoadTimeZoneFile America/St_Thomas
+if {![info exists TZData(America/Port_of_Spain)]} {
+ LoadTimeZoneFile America/Port_of_Spain
}
-set TZData(:America/Virgin) $TZData(:America/St_Thomas)
+set TZData(:America/Virgin) $TZData(:America/Port_of_Spain)
diff --git a/library/tzdata/America/Winnipeg b/library/tzdata/America/Winnipeg
index 7e6208a..e6efe47 100644
--- a/library/tzdata/America/Winnipeg
+++ b/library/tzdata/America/Winnipeg
@@ -6,7 +6,7 @@ set TZData(:America/Winnipeg) {
{-1694368800 -18000 1 CDT}
{-1681671600 -21600 0 CST}
{-1632067200 -18000 1 CDT}
- {-1614790800 -21600 0 CST}
+ {-1615136400 -21600 0 CST}
{-1029686400 -18000 1 CDT}
{-1018198800 -21600 0 CST}
{-880214400 -18000 1 CWT}
diff --git a/library/tzdata/Antarctica/Casey b/library/tzdata/Antarctica/Casey
index 6d383f3..cbe3e3c 100644
--- a/library/tzdata/Antarctica/Casey
+++ b/library/tzdata/Antarctica/Casey
@@ -3,4 +3,8 @@
set TZData(:Antarctica/Casey) {
{-9223372036854775808 0 0 zzz}
{-31536000 28800 0 WST}
+ {1255802400 39600 0 CAST}
+ {1267714800 28800 0 WST}
+ {1319738400 39600 0 CAST}
+ {1329843600 28800 0 WST}
}
diff --git a/library/tzdata/Antarctica/Davis b/library/tzdata/Antarctica/Davis
index f4b7282..2762d2f 100644
--- a/library/tzdata/Antarctica/Davis
+++ b/library/tzdata/Antarctica/Davis
@@ -5,4 +5,8 @@ set TZData(:Antarctica/Davis) {
{-409190400 25200 0 DAVT}
{-163062000 0 0 zzz}
{-28857600 25200 0 DAVT}
+ {1255806000 18000 0 DAVT}
+ {1268251200 25200 0 DAVT}
+ {1319742000 18000 0 DAVT}
+ {1329854400 25200 0 DAVT}
}
diff --git a/library/tzdata/Antarctica/Macquarie b/library/tzdata/Antarctica/Macquarie
new file mode 100644
index 0000000..bd5cf8a
--- /dev/null
+++ b/library/tzdata/Antarctica/Macquarie
@@ -0,0 +1,97 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Antarctica/Macquarie) {
+ {-9223372036854775808 0 0 zzz}
+ {-2214259200 36000 0 EST}
+ {-1680508800 39600 1 EST}
+ {-1669892400 39600 0 EST}
+ {-1665392400 36000 0 EST}
+ {-1601719200 0 0 zzz}
+ {-94730400 36000 0 EST}
+ {-71136000 39600 1 EST}
+ {-55411200 36000 0 EST}
+ {-37267200 39600 1 EST}
+ {-25776000 36000 0 EST}
+ {-5817600 39600 1 EST}
+ {5673600 36000 0 EST}
+ {25632000 39600 1 EST}
+ {37728000 36000 0 EST}
+ {57686400 39600 1 EST}
+ {67968000 36000 0 EST}
+ {89136000 39600 1 EST}
+ {100022400 36000 0 EST}
+ {120585600 39600 1 EST}
+ {131472000 36000 0 EST}
+ {152035200 39600 1 EST}
+ {162921600 36000 0 EST}
+ {183484800 39600 1 EST}
+ {194976000 36000 0 EST}
+ {215539200 39600 1 EST}
+ {226425600 36000 0 EST}
+ {246988800 39600 1 EST}
+ {257875200 36000 0 EST}
+ {278438400 39600 1 EST}
+ {289324800 36000 0 EST}
+ {309888000 39600 1 EST}
+ {320774400 36000 0 EST}
+ {341337600 39600 1 EST}
+ {352224000 36000 0 EST}
+ {372787200 39600 1 EST}
+ {386092800 36000 0 EST}
+ {404841600 39600 1 EST}
+ {417542400 36000 0 EST}
+ {436291200 39600 1 EST}
+ {447177600 36000 0 EST}
+ {467740800 39600 1 EST}
+ {478627200 36000 0 EST}
+ {499190400 39600 1 EST}
+ {510076800 36000 0 EST}
+ {530035200 39600 1 EST}
+ {542736000 36000 0 EST}
+ {562089600 39600 1 EST}
+ {574790400 36000 0 EST}
+ {594144000 39600 1 EST}
+ {606240000 36000 0 EST}
+ {625593600 39600 1 EST}
+ {637689600 36000 0 EST}
+ {657043200 39600 1 EST}
+ {670348800 36000 0 EST}
+ {686678400 39600 1 EST}
+ {701798400 36000 0 EST}
+ {718128000 39600 1 EST}
+ {733248000 36000 0 EST}
+ {749577600 39600 1 EST}
+ {764697600 36000 0 EST}
+ {781027200 39600 1 EST}
+ {796147200 36000 0 EST}
+ {812476800 39600 1 EST}
+ {828201600 36000 0 EST}
+ {844531200 39600 1 EST}
+ {859651200 36000 0 EST}
+ {875980800 39600 1 EST}
+ {891100800 36000 0 EST}
+ {907430400 39600 1 EST}
+ {922550400 36000 0 EST}
+ {938880000 39600 1 EST}
+ {954000000 36000 0 EST}
+ {967305600 39600 1 EST}
+ {985449600 36000 0 EST}
+ {1002384000 39600 1 EST}
+ {1017504000 36000 0 EST}
+ {1033833600 39600 1 EST}
+ {1048953600 36000 0 EST}
+ {1065283200 39600 1 EST}
+ {1080403200 36000 0 EST}
+ {1096732800 39600 1 EST}
+ {1111852800 36000 0 EST}
+ {1128182400 39600 1 EST}
+ {1143907200 36000 0 EST}
+ {1159632000 39600 1 EST}
+ {1174752000 36000 0 EST}
+ {1191686400 39600 1 EST}
+ {1207411200 36000 0 EST}
+ {1223136000 39600 1 EST}
+ {1238860800 36000 0 EST}
+ {1254585600 39600 1 EST}
+ {1270310400 39600 0 MIST}
+}
diff --git a/library/tzdata/Antarctica/Mawson b/library/tzdata/Antarctica/Mawson
index 1f0c3fe..ba03ba1 100644
--- a/library/tzdata/Antarctica/Mawson
+++ b/library/tzdata/Antarctica/Mawson
@@ -3,4 +3,5 @@
set TZData(:Antarctica/Mawson) {
{-9223372036854775808 0 0 zzz}
{-501206400 21600 0 MAWT}
+ {1255809600 18000 0 MAWT}
}
diff --git a/library/tzdata/Antarctica/McMurdo b/library/tzdata/Antarctica/McMurdo
index 670f7eb..3b29ba1 100644
--- a/library/tzdata/Antarctica/McMurdo
+++ b/library/tzdata/Antarctica/McMurdo
@@ -1,257 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:Antarctica/McMurdo) {
- {-9223372036854775808 0 0 zzz}
- {-441849600 43200 0 NZST}
- {152632800 46800 1 NZDT}
- {162309600 43200 0 NZST}
- {183477600 46800 1 NZDT}
- {194968800 43200 0 NZST}
- {215532000 46800 1 NZDT}
- {226418400 43200 0 NZST}
- {246981600 46800 1 NZDT}
- {257868000 43200 0 NZST}
- {278431200 46800 1 NZDT}
- {289317600 43200 0 NZST}
- {309880800 46800 1 NZDT}
- {320767200 43200 0 NZST}
- {341330400 46800 1 NZDT}
- {352216800 43200 0 NZST}
- {372780000 46800 1 NZDT}
- {384271200 43200 0 NZST}
- {404834400 46800 1 NZDT}
- {415720800 43200 0 NZST}
- {436284000 46800 1 NZDT}
- {447170400 43200 0 NZST}
- {467733600 46800 1 NZDT}
- {478620000 43200 0 NZST}
- {499183200 46800 1 NZDT}
- {510069600 43200 0 NZST}
- {530632800 46800 1 NZDT}
- {541519200 43200 0 NZST}
- {562082400 46800 1 NZDT}
- {573573600 43200 0 NZST}
- {594136800 46800 1 NZDT}
- {605023200 43200 0 NZST}
- {623772000 46800 1 NZDT}
- {637682400 43200 0 NZST}
- {655221600 46800 1 NZDT}
- {669132000 43200 0 NZST}
- {686671200 46800 1 NZDT}
- {700581600 43200 0 NZST}
- {718120800 46800 1 NZDT}
- {732636000 43200 0 NZST}
- {749570400 46800 1 NZDT}
- {764085600 43200 0 NZST}
- {781020000 46800 1 NZDT}
- {795535200 43200 0 NZST}
- {812469600 46800 1 NZDT}
- {826984800 43200 0 NZST}
- {844524000 46800 1 NZDT}
- {858434400 43200 0 NZST}
- {875973600 46800 1 NZDT}
- {889884000 43200 0 NZST}
- {907423200 46800 1 NZDT}
- {921938400 43200 0 NZST}
- {938872800 46800 1 NZDT}
- {953388000 43200 0 NZST}
- {970322400 46800 1 NZDT}
- {984837600 43200 0 NZST}
- {1002376800 46800 1 NZDT}
- {1016287200 43200 0 NZST}
- {1033826400 46800 1 NZDT}
- {1047736800 43200 0 NZST}
- {1065276000 46800 1 NZDT}
- {1079791200 43200 0 NZST}
- {1096725600 46800 1 NZDT}
- {1111240800 43200 0 NZST}
- {1128175200 46800 1 NZDT}
- {1142690400 43200 0 NZST}
- {1159624800 46800 1 NZDT}
- {1174140000 43200 0 NZST}
- {1191074400 46800 1 NZDT}
- {1207404000 43200 0 NZST}
- {1222524000 46800 1 NZDT}
- {1238853600 43200 0 NZST}
- {1253973600 46800 1 NZDT}
- {1270303200 43200 0 NZST}
- {1285423200 46800 1 NZDT}
- {1301752800 43200 0 NZST}
- {1316872800 46800 1 NZDT}
- {1333202400 43200 0 NZST}
- {1348927200 46800 1 NZDT}
- {1365256800 43200 0 NZST}
- {1380376800 46800 1 NZDT}
- {1396706400 43200 0 NZST}
- {1411826400 46800 1 NZDT}
- {1428156000 43200 0 NZST}
- {1443276000 46800 1 NZDT}
- {1459605600 43200 0 NZST}
- {1474725600 46800 1 NZDT}
- {1491055200 43200 0 NZST}
- {1506175200 46800 1 NZDT}
- {1522504800 43200 0 NZST}
- {1538229600 46800 1 NZDT}
- {1554559200 43200 0 NZST}
- {1569679200 46800 1 NZDT}
- {1586008800 43200 0 NZST}
- {1601128800 46800 1 NZDT}
- {1617458400 43200 0 NZST}
- {1632578400 46800 1 NZDT}
- {1648908000 43200 0 NZST}
- {1664028000 46800 1 NZDT}
- {1680357600 43200 0 NZST}
- {1695477600 46800 1 NZDT}
- {1712412000 43200 0 NZST}
- {1727532000 46800 1 NZDT}
- {1743861600 43200 0 NZST}
- {1758981600 46800 1 NZDT}
- {1775311200 43200 0 NZST}
- {1790431200 46800 1 NZDT}
- {1806760800 43200 0 NZST}
- {1821880800 46800 1 NZDT}
- {1838210400 43200 0 NZST}
- {1853330400 46800 1 NZDT}
- {1869660000 43200 0 NZST}
- {1885384800 46800 1 NZDT}
- {1901714400 43200 0 NZST}
- {1916834400 46800 1 NZDT}
- {1933164000 43200 0 NZST}
- {1948284000 46800 1 NZDT}
- {1964613600 43200 0 NZST}
- {1979733600 46800 1 NZDT}
- {1996063200 43200 0 NZST}
- {2011183200 46800 1 NZDT}
- {2027512800 43200 0 NZST}
- {2042632800 46800 1 NZDT}
- {2058962400 43200 0 NZST}
- {2074687200 46800 1 NZDT}
- {2091016800 43200 0 NZST}
- {2106136800 46800 1 NZDT}
- {2122466400 43200 0 NZST}
- {2137586400 46800 1 NZDT}
- {2153916000 43200 0 NZST}
- {2169036000 46800 1 NZDT}
- {2185365600 43200 0 NZST}
- {2200485600 46800 1 NZDT}
- {2216815200 43200 0 NZST}
- {2232540000 46800 1 NZDT}
- {2248869600 43200 0 NZST}
- {2263989600 46800 1 NZDT}
- {2280319200 43200 0 NZST}
- {2295439200 46800 1 NZDT}
- {2311768800 43200 0 NZST}
- {2326888800 46800 1 NZDT}
- {2343218400 43200 0 NZST}
- {2358338400 46800 1 NZDT}
- {2374668000 43200 0 NZST}
- {2389788000 46800 1 NZDT}
- {2406117600 43200 0 NZST}
- {2421842400 46800 1 NZDT}
- {2438172000 43200 0 NZST}
- {2453292000 46800 1 NZDT}
- {2469621600 43200 0 NZST}
- {2484741600 46800 1 NZDT}
- {2501071200 43200 0 NZST}
- {2516191200 46800 1 NZDT}
- {2532520800 43200 0 NZST}
- {2547640800 46800 1 NZDT}
- {2563970400 43200 0 NZST}
- {2579090400 46800 1 NZDT}
- {2596024800 43200 0 NZST}
- {2611144800 46800 1 NZDT}
- {2627474400 43200 0 NZST}
- {2642594400 46800 1 NZDT}
- {2658924000 43200 0 NZST}
- {2674044000 46800 1 NZDT}
- {2690373600 43200 0 NZST}
- {2705493600 46800 1 NZDT}
- {2721823200 43200 0 NZST}
- {2736943200 46800 1 NZDT}
- {2753272800 43200 0 NZST}
- {2768997600 46800 1 NZDT}
- {2785327200 43200 0 NZST}
- {2800447200 46800 1 NZDT}
- {2816776800 43200 0 NZST}
- {2831896800 46800 1 NZDT}
- {2848226400 43200 0 NZST}
- {2863346400 46800 1 NZDT}
- {2879676000 43200 0 NZST}
- {2894796000 46800 1 NZDT}
- {2911125600 43200 0 NZST}
- {2926245600 46800 1 NZDT}
- {2942575200 43200 0 NZST}
- {2958300000 46800 1 NZDT}
- {2974629600 43200 0 NZST}
- {2989749600 46800 1 NZDT}
- {3006079200 43200 0 NZST}
- {3021199200 46800 1 NZDT}
- {3037528800 43200 0 NZST}
- {3052648800 46800 1 NZDT}
- {3068978400 43200 0 NZST}
- {3084098400 46800 1 NZDT}
- {3100428000 43200 0 NZST}
- {3116152800 46800 1 NZDT}
- {3132482400 43200 0 NZST}
- {3147602400 46800 1 NZDT}
- {3163932000 43200 0 NZST}
- {3179052000 46800 1 NZDT}
- {3195381600 43200 0 NZST}
- {3210501600 46800 1 NZDT}
- {3226831200 43200 0 NZST}
- {3241951200 46800 1 NZDT}
- {3258280800 43200 0 NZST}
- {3273400800 46800 1 NZDT}
- {3289730400 43200 0 NZST}
- {3305455200 46800 1 NZDT}
- {3321784800 43200 0 NZST}
- {3336904800 46800 1 NZDT}
- {3353234400 43200 0 NZST}
- {3368354400 46800 1 NZDT}
- {3384684000 43200 0 NZST}
- {3399804000 46800 1 NZDT}
- {3416133600 43200 0 NZST}
- {3431253600 46800 1 NZDT}
- {3447583200 43200 0 NZST}
- {3462703200 46800 1 NZDT}
- {3479637600 43200 0 NZST}
- {3494757600 46800 1 NZDT}
- {3511087200 43200 0 NZST}
- {3526207200 46800 1 NZDT}
- {3542536800 43200 0 NZST}
- {3557656800 46800 1 NZDT}
- {3573986400 43200 0 NZST}
- {3589106400 46800 1 NZDT}
- {3605436000 43200 0 NZST}
- {3620556000 46800 1 NZDT}
- {3636885600 43200 0 NZST}
- {3652610400 46800 1 NZDT}
- {3668940000 43200 0 NZST}
- {3684060000 46800 1 NZDT}
- {3700389600 43200 0 NZST}
- {3715509600 46800 1 NZDT}
- {3731839200 43200 0 NZST}
- {3746959200 46800 1 NZDT}
- {3763288800 43200 0 NZST}
- {3778408800 46800 1 NZDT}
- {3794738400 43200 0 NZST}
- {3809858400 46800 1 NZDT}
- {3826188000 43200 0 NZST}
- {3841912800 46800 1 NZDT}
- {3858242400 43200 0 NZST}
- {3873362400 46800 1 NZDT}
- {3889692000 43200 0 NZST}
- {3904812000 46800 1 NZDT}
- {3921141600 43200 0 NZST}
- {3936261600 46800 1 NZDT}
- {3952591200 43200 0 NZST}
- {3967711200 46800 1 NZDT}
- {3984040800 43200 0 NZST}
- {3999765600 46800 1 NZDT}
- {4016095200 43200 0 NZST}
- {4031215200 46800 1 NZDT}
- {4047544800 43200 0 NZST}
- {4062664800 46800 1 NZDT}
- {4078994400 43200 0 NZST}
- {4094114400 46800 1 NZDT}
+if {![info exists TZData(Pacific/Auckland)]} {
+ LoadTimeZoneFile Pacific/Auckland
}
+set TZData(:Antarctica/McMurdo) $TZData(:Pacific/Auckland)
diff --git a/library/tzdata/Antarctica/Palmer b/library/tzdata/Antarctica/Palmer
index 1e24754..e87b171 100644
--- a/library/tzdata/Antarctica/Palmer
+++ b/library/tzdata/Antarctica/Palmer
@@ -67,188 +67,188 @@ set TZData(:Antarctica/Palmer) {
{1160884800 -10800 1 CLST}
{1173582000 -14400 0 CLT}
{1192334400 -10800 1 CLST}
- {1205031600 -14400 0 CLT}
+ {1206846000 -14400 0 CLT}
{1223784000 -10800 1 CLST}
{1237086000 -14400 0 CLT}
{1255233600 -10800 1 CLST}
- {1268535600 -14400 0 CLT}
+ {1270350000 -14400 0 CLT}
{1286683200 -10800 1 CLST}
- {1299985200 -14400 0 CLT}
- {1318132800 -10800 1 CLST}
- {1331434800 -14400 0 CLT}
- {1350187200 -10800 1 CLST}
- {1362884400 -14400 0 CLT}
- {1381636800 -10800 1 CLST}
- {1394334000 -14400 0 CLT}
- {1413086400 -10800 1 CLST}
- {1426388400 -14400 0 CLT}
- {1444536000 -10800 1 CLST}
- {1457838000 -14400 0 CLT}
- {1475985600 -10800 1 CLST}
- {1489287600 -14400 0 CLT}
- {1508040000 -10800 1 CLST}
- {1520737200 -14400 0 CLT}
- {1539489600 -10800 1 CLST}
- {1552186800 -14400 0 CLT}
- {1570939200 -10800 1 CLST}
- {1584241200 -14400 0 CLT}
- {1602388800 -10800 1 CLST}
- {1615690800 -14400 0 CLT}
- {1633838400 -10800 1 CLST}
- {1647140400 -14400 0 CLT}
- {1665288000 -10800 1 CLST}
- {1678590000 -14400 0 CLT}
- {1697342400 -10800 1 CLST}
- {1710039600 -14400 0 CLT}
- {1728792000 -10800 1 CLST}
- {1741489200 -14400 0 CLT}
- {1760241600 -10800 1 CLST}
- {1773543600 -14400 0 CLT}
- {1791691200 -10800 1 CLST}
- {1804993200 -14400 0 CLT}
- {1823140800 -10800 1 CLST}
- {1836442800 -14400 0 CLT}
- {1855195200 -10800 1 CLST}
- {1867892400 -14400 0 CLT}
- {1886644800 -10800 1 CLST}
- {1899342000 -14400 0 CLT}
- {1918094400 -10800 1 CLST}
- {1930791600 -14400 0 CLT}
- {1949544000 -10800 1 CLST}
- {1962846000 -14400 0 CLT}
- {1980993600 -10800 1 CLST}
- {1994295600 -14400 0 CLT}
- {2012443200 -10800 1 CLST}
- {2025745200 -14400 0 CLT}
- {2044497600 -10800 1 CLST}
- {2057194800 -14400 0 CLT}
- {2075947200 -10800 1 CLST}
- {2088644400 -14400 0 CLT}
- {2107396800 -10800 1 CLST}
- {2120698800 -14400 0 CLT}
- {2138846400 -10800 1 CLST}
- {2152148400 -14400 0 CLT}
- {2170296000 -10800 1 CLST}
- {2183598000 -14400 0 CLT}
- {2201745600 -10800 1 CLST}
- {2215047600 -14400 0 CLT}
- {2233800000 -10800 1 CLST}
- {2246497200 -14400 0 CLT}
- {2265249600 -10800 1 CLST}
- {2277946800 -14400 0 CLT}
- {2296699200 -10800 1 CLST}
- {2310001200 -14400 0 CLT}
- {2328148800 -10800 1 CLST}
- {2341450800 -14400 0 CLT}
- {2359598400 -10800 1 CLST}
- {2372900400 -14400 0 CLT}
- {2391652800 -10800 1 CLST}
- {2404350000 -14400 0 CLT}
- {2423102400 -10800 1 CLST}
- {2435799600 -14400 0 CLT}
- {2454552000 -10800 1 CLST}
- {2467854000 -14400 0 CLT}
- {2486001600 -10800 1 CLST}
- {2499303600 -14400 0 CLT}
- {2517451200 -10800 1 CLST}
- {2530753200 -14400 0 CLT}
- {2548900800 -10800 1 CLST}
- {2562202800 -14400 0 CLT}
- {2580955200 -10800 1 CLST}
- {2593652400 -14400 0 CLT}
- {2612404800 -10800 1 CLST}
- {2625102000 -14400 0 CLT}
- {2643854400 -10800 1 CLST}
- {2657156400 -14400 0 CLT}
- {2675304000 -10800 1 CLST}
- {2688606000 -14400 0 CLT}
- {2706753600 -10800 1 CLST}
- {2720055600 -14400 0 CLT}
- {2738808000 -10800 1 CLST}
- {2751505200 -14400 0 CLT}
- {2770257600 -10800 1 CLST}
- {2782954800 -14400 0 CLT}
- {2801707200 -10800 1 CLST}
- {2814404400 -14400 0 CLT}
- {2833156800 -10800 1 CLST}
- {2846458800 -14400 0 CLT}
- {2864606400 -10800 1 CLST}
- {2877908400 -14400 0 CLT}
- {2896056000 -10800 1 CLST}
- {2909358000 -14400 0 CLT}
- {2928110400 -10800 1 CLST}
- {2940807600 -14400 0 CLT}
- {2959560000 -10800 1 CLST}
- {2972257200 -14400 0 CLT}
- {2991009600 -10800 1 CLST}
- {3004311600 -14400 0 CLT}
- {3022459200 -10800 1 CLST}
- {3035761200 -14400 0 CLT}
- {3053908800 -10800 1 CLST}
- {3067210800 -14400 0 CLT}
- {3085358400 -10800 1 CLST}
- {3098660400 -14400 0 CLT}
- {3117412800 -10800 1 CLST}
- {3130110000 -14400 0 CLT}
- {3148862400 -10800 1 CLST}
- {3161559600 -14400 0 CLT}
- {3180312000 -10800 1 CLST}
- {3193614000 -14400 0 CLT}
- {3211761600 -10800 1 CLST}
- {3225063600 -14400 0 CLT}
- {3243211200 -10800 1 CLST}
- {3256513200 -14400 0 CLT}
- {3275265600 -10800 1 CLST}
- {3287962800 -14400 0 CLT}
- {3306715200 -10800 1 CLST}
- {3319412400 -14400 0 CLT}
- {3338164800 -10800 1 CLST}
- {3351466800 -14400 0 CLT}
- {3369614400 -10800 1 CLST}
- {3382916400 -14400 0 CLT}
- {3401064000 -10800 1 CLST}
- {3414366000 -14400 0 CLT}
- {3432513600 -10800 1 CLST}
- {3445815600 -14400 0 CLT}
- {3464568000 -10800 1 CLST}
- {3477265200 -14400 0 CLT}
- {3496017600 -10800 1 CLST}
- {3508714800 -14400 0 CLT}
- {3527467200 -10800 1 CLST}
- {3540769200 -14400 0 CLT}
- {3558916800 -10800 1 CLST}
- {3572218800 -14400 0 CLT}
- {3590366400 -10800 1 CLST}
- {3603668400 -14400 0 CLT}
- {3622420800 -10800 1 CLST}
- {3635118000 -14400 0 CLT}
- {3653870400 -10800 1 CLST}
- {3666567600 -14400 0 CLT}
- {3685320000 -10800 1 CLST}
- {3698017200 -14400 0 CLT}
- {3716769600 -10800 1 CLST}
- {3730071600 -14400 0 CLT}
- {3748219200 -10800 1 CLST}
- {3761521200 -14400 0 CLT}
- {3779668800 -10800 1 CLST}
- {3792970800 -14400 0 CLT}
- {3811723200 -10800 1 CLST}
- {3824420400 -14400 0 CLT}
- {3843172800 -10800 1 CLST}
- {3855870000 -14400 0 CLT}
- {3874622400 -10800 1 CLST}
- {3887924400 -14400 0 CLT}
- {3906072000 -10800 1 CLST}
- {3919374000 -14400 0 CLT}
- {3937521600 -10800 1 CLST}
- {3950823600 -14400 0 CLT}
- {3968971200 -10800 1 CLST}
- {3982273200 -14400 0 CLT}
- {4001025600 -10800 1 CLST}
- {4013722800 -14400 0 CLT}
- {4032475200 -10800 1 CLST}
- {4045172400 -14400 0 CLT}
- {4063924800 -10800 1 CLST}
- {4077226800 -14400 0 CLT}
- {4095374400 -10800 1 CLST}
+ {1304823600 -14400 0 CLT}
+ {1313899200 -10800 1 CLST}
+ {1335668400 -14400 0 CLT}
+ {1346558400 -10800 1 CLST}
+ {1367118000 -14400 0 CLT}
+ {1378612800 -10800 1 CLST}
+ {1398567600 -14400 0 CLT}
+ {1410062400 -10800 1 CLST}
+ {1430017200 -14400 0 CLT}
+ {1441512000 -10800 1 CLST}
+ {1461466800 -14400 0 CLT}
+ {1472961600 -10800 1 CLST}
+ {1492916400 -14400 0 CLT}
+ {1504411200 -10800 1 CLST}
+ {1524970800 -14400 0 CLT}
+ {1535860800 -10800 1 CLST}
+ {1556420400 -14400 0 CLT}
+ {1567915200 -10800 1 CLST}
+ {1587870000 -14400 0 CLT}
+ {1599364800 -10800 1 CLST}
+ {1619319600 -14400 0 CLT}
+ {1630814400 -10800 1 CLST}
+ {1650769200 -14400 0 CLT}
+ {1662264000 -10800 1 CLST}
+ {1682218800 -14400 0 CLT}
+ {1693713600 -10800 1 CLST}
+ {1714273200 -14400 0 CLT}
+ {1725768000 -10800 1 CLST}
+ {1745722800 -14400 0 CLT}
+ {1757217600 -10800 1 CLST}
+ {1777172400 -14400 0 CLT}
+ {1788667200 -10800 1 CLST}
+ {1808622000 -14400 0 CLT}
+ {1820116800 -10800 1 CLST}
+ {1840071600 -14400 0 CLT}
+ {1851566400 -10800 1 CLST}
+ {1872126000 -14400 0 CLT}
+ {1883016000 -10800 1 CLST}
+ {1903575600 -14400 0 CLT}
+ {1915070400 -10800 1 CLST}
+ {1935025200 -14400 0 CLT}
+ {1946520000 -10800 1 CLST}
+ {1966474800 -14400 0 CLT}
+ {1977969600 -10800 1 CLST}
+ {1997924400 -14400 0 CLT}
+ {2009419200 -10800 1 CLST}
+ {2029374000 -14400 0 CLT}
+ {2040868800 -10800 1 CLST}
+ {2061428400 -14400 0 CLT}
+ {2072318400 -10800 1 CLST}
+ {2092878000 -14400 0 CLT}
+ {2104372800 -10800 1 CLST}
+ {2124327600 -14400 0 CLT}
+ {2135822400 -10800 1 CLST}
+ {2155777200 -14400 0 CLT}
+ {2167272000 -10800 1 CLST}
+ {2187226800 -14400 0 CLT}
+ {2198721600 -10800 1 CLST}
+ {2219281200 -14400 0 CLT}
+ {2230171200 -10800 1 CLST}
+ {2250730800 -14400 0 CLT}
+ {2262225600 -10800 1 CLST}
+ {2282180400 -14400 0 CLT}
+ {2293675200 -10800 1 CLST}
+ {2313630000 -14400 0 CLT}
+ {2325124800 -10800 1 CLST}
+ {2345079600 -14400 0 CLT}
+ {2356574400 -10800 1 CLST}
+ {2376529200 -14400 0 CLT}
+ {2388024000 -10800 1 CLST}
+ {2408583600 -14400 0 CLT}
+ {2419473600 -10800 1 CLST}
+ {2440033200 -14400 0 CLT}
+ {2451528000 -10800 1 CLST}
+ {2471482800 -14400 0 CLT}
+ {2482977600 -10800 1 CLST}
+ {2502932400 -14400 0 CLT}
+ {2514427200 -10800 1 CLST}
+ {2534382000 -14400 0 CLT}
+ {2545876800 -10800 1 CLST}
+ {2565831600 -14400 0 CLT}
+ {2577326400 -10800 1 CLST}
+ {2597886000 -14400 0 CLT}
+ {2609380800 -10800 1 CLST}
+ {2629335600 -14400 0 CLT}
+ {2640830400 -10800 1 CLST}
+ {2660785200 -14400 0 CLT}
+ {2672280000 -10800 1 CLST}
+ {2692234800 -14400 0 CLT}
+ {2703729600 -10800 1 CLST}
+ {2723684400 -14400 0 CLT}
+ {2735179200 -10800 1 CLST}
+ {2755738800 -14400 0 CLT}
+ {2766628800 -10800 1 CLST}
+ {2787188400 -14400 0 CLT}
+ {2798683200 -10800 1 CLST}
+ {2818638000 -14400 0 CLT}
+ {2830132800 -10800 1 CLST}
+ {2850087600 -14400 0 CLT}
+ {2861582400 -10800 1 CLST}
+ {2881537200 -14400 0 CLT}
+ {2893032000 -10800 1 CLST}
+ {2912986800 -14400 0 CLT}
+ {2924481600 -10800 1 CLST}
+ {2945041200 -14400 0 CLT}
+ {2955931200 -10800 1 CLST}
+ {2976490800 -14400 0 CLT}
+ {2987985600 -10800 1 CLST}
+ {3007940400 -14400 0 CLT}
+ {3019435200 -10800 1 CLST}
+ {3039390000 -14400 0 CLT}
+ {3050884800 -10800 1 CLST}
+ {3070839600 -14400 0 CLT}
+ {3082334400 -10800 1 CLST}
+ {3102894000 -14400 0 CLT}
+ {3113784000 -10800 1 CLST}
+ {3134343600 -14400 0 CLT}
+ {3145838400 -10800 1 CLST}
+ {3165793200 -14400 0 CLT}
+ {3177288000 -10800 1 CLST}
+ {3197242800 -14400 0 CLT}
+ {3208737600 -10800 1 CLST}
+ {3228692400 -14400 0 CLT}
+ {3240187200 -10800 1 CLST}
+ {3260142000 -14400 0 CLT}
+ {3271636800 -10800 1 CLST}
+ {3292196400 -14400 0 CLT}
+ {3303086400 -10800 1 CLST}
+ {3323646000 -14400 0 CLT}
+ {3335140800 -10800 1 CLST}
+ {3355095600 -14400 0 CLT}
+ {3366590400 -10800 1 CLST}
+ {3386545200 -14400 0 CLT}
+ {3398040000 -10800 1 CLST}
+ {3417994800 -14400 0 CLT}
+ {3429489600 -10800 1 CLST}
+ {3449444400 -14400 0 CLT}
+ {3460939200 -10800 1 CLST}
+ {3481498800 -14400 0 CLT}
+ {3492993600 -10800 1 CLST}
+ {3512948400 -14400 0 CLT}
+ {3524443200 -10800 1 CLST}
+ {3544398000 -14400 0 CLT}
+ {3555892800 -10800 1 CLST}
+ {3575847600 -14400 0 CLT}
+ {3587342400 -10800 1 CLST}
+ {3607297200 -14400 0 CLT}
+ {3618792000 -10800 1 CLST}
+ {3639351600 -14400 0 CLT}
+ {3650241600 -10800 1 CLST}
+ {3670801200 -14400 0 CLT}
+ {3682296000 -10800 1 CLST}
+ {3702250800 -14400 0 CLT}
+ {3713745600 -10800 1 CLST}
+ {3733700400 -14400 0 CLT}
+ {3745195200 -10800 1 CLST}
+ {3765150000 -14400 0 CLT}
+ {3776644800 -10800 1 CLST}
+ {3796599600 -14400 0 CLT}
+ {3808094400 -10800 1 CLST}
+ {3828654000 -14400 0 CLT}
+ {3839544000 -10800 1 CLST}
+ {3860103600 -14400 0 CLT}
+ {3871598400 -10800 1 CLST}
+ {3891553200 -14400 0 CLT}
+ {3903048000 -10800 1 CLST}
+ {3923002800 -14400 0 CLT}
+ {3934497600 -10800 1 CLST}
+ {3954452400 -14400 0 CLT}
+ {3965947200 -10800 1 CLST}
+ {3986506800 -14400 0 CLT}
+ {3997396800 -10800 1 CLST}
+ {4017956400 -14400 0 CLT}
+ {4029451200 -10800 1 CLST}
+ {4049406000 -14400 0 CLT}
+ {4060900800 -10800 1 CLST}
+ {4080855600 -14400 0 CLT}
+ {4092350400 -10800 1 CLST}
}
diff --git a/library/tzdata/Antarctica/South_Pole b/library/tzdata/Antarctica/South_Pole
index 34d0db1..544bde4 100644
--- a/library/tzdata/Antarctica/South_Pole
+++ b/library/tzdata/Antarctica/South_Pole
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(Antarctica/McMurdo)]} {
- LoadTimeZoneFile Antarctica/McMurdo
+if {![info exists TZData(Pacific/Auckland)]} {
+ LoadTimeZoneFile Pacific/Auckland
}
-set TZData(:Antarctica/South_Pole) $TZData(:Antarctica/McMurdo)
+set TZData(:Antarctica/South_Pole) $TZData(:Pacific/Auckland)
diff --git a/library/tzdata/Asia/Aden b/library/tzdata/Asia/Aden
index e939235..399d9f0 100644
--- a/library/tzdata/Asia/Aden
+++ b/library/tzdata/Asia/Aden
@@ -1,6 +1,6 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Asia/Aden) {
- {-9223372036854775808 10848 0 LMT}
- {-631162848 10800 0 AST}
+ {-9223372036854775808 10794 0 LMT}
+ {-631162794 10800 0 AST}
}
diff --git a/library/tzdata/Asia/Amman b/library/tzdata/Asia/Amman
index 5b34dbd..d5e8616 100644
--- a/library/tzdata/Asia/Amman
+++ b/library/tzdata/Asia/Amman
@@ -44,205 +44,31 @@ set TZData(:Asia/Amman) {
{891554400 10800 1 EEST}
{906069600 7200 0 EET}
{930780000 10800 1 EEST}
- {938642400 7200 0 EET}
+ {938124000 7200 0 EET}
{954367200 10800 1 EEST}
- {970092000 7200 0 EET}
+ {970178400 7200 0 EET}
{985816800 10800 1 EEST}
- {1001541600 7200 0 EET}
- {1017266400 10800 1 EEST}
- {1032991200 7200 0 EET}
- {1048716000 10800 1 EEST}
+ {1001628000 7200 0 EET}
+ {1017352800 10800 1 EEST}
+ {1033077600 7200 0 EET}
+ {1048802400 10800 1 EEST}
{1066946400 7200 0 EET}
- {1080165600 10800 1 EEST}
+ {1080252000 10800 1 EEST}
{1097791200 7200 0 EET}
- {1112220000 10800 1 EEST}
+ {1112306400 10800 1 EEST}
{1128031200 7200 0 EET}
- {1143669600 10800 1 EEST}
+ {1143756000 10800 1 EEST}
{1161900000 7200 0 EET}
- {1175119200 10800 1 EEST}
+ {1175205600 10800 1 EEST}
{1193349600 7200 0 EET}
- {1206568800 10800 1 EEST}
+ {1206655200 10800 1 EEST}
{1225404000 7200 0 EET}
- {1238018400 10800 1 EEST}
+ {1238104800 10800 1 EEST}
{1256853600 7200 0 EET}
- {1269468000 10800 1 EEST}
+ {1269554400 10800 1 EEST}
{1288303200 7200 0 EET}
- {1301522400 10800 1 EEST}
+ {1301608800 10800 1 EEST}
{1319752800 7200 0 EET}
- {1332972000 10800 1 EEST}
- {1351202400 7200 0 EET}
- {1364421600 10800 1 EEST}
- {1382652000 7200 0 EET}
- {1395871200 10800 1 EEST}
- {1414706400 7200 0 EET}
- {1427320800 10800 1 EEST}
- {1446156000 7200 0 EET}
- {1459375200 10800 1 EEST}
- {1477605600 7200 0 EET}
- {1490824800 10800 1 EEST}
- {1509055200 7200 0 EET}
- {1522274400 10800 1 EEST}
- {1540504800 7200 0 EET}
- {1553724000 10800 1 EEST}
- {1571954400 7200 0 EET}
- {1585173600 10800 1 EEST}
- {1604008800 7200 0 EET}
- {1616623200 10800 1 EEST}
- {1635458400 7200 0 EET}
- {1648677600 10800 1 EEST}
- {1666908000 7200 0 EET}
- {1680127200 10800 1 EEST}
- {1698357600 7200 0 EET}
- {1711576800 10800 1 EEST}
- {1729807200 7200 0 EET}
- {1743026400 10800 1 EEST}
- {1761861600 7200 0 EET}
- {1774476000 10800 1 EEST}
- {1793311200 7200 0 EET}
- {1805925600 10800 1 EEST}
- {1824760800 7200 0 EET}
- {1837980000 10800 1 EEST}
- {1856210400 7200 0 EET}
- {1869429600 10800 1 EEST}
- {1887660000 7200 0 EET}
- {1900879200 10800 1 EEST}
- {1919109600 7200 0 EET}
- {1932328800 10800 1 EEST}
- {1951164000 7200 0 EET}
- {1963778400 10800 1 EEST}
- {1982613600 7200 0 EET}
- {1995832800 10800 1 EEST}
- {2014063200 7200 0 EET}
- {2027282400 10800 1 EEST}
- {2045512800 7200 0 EET}
- {2058732000 10800 1 EEST}
- {2076962400 7200 0 EET}
- {2090181600 10800 1 EEST}
- {2109016800 7200 0 EET}
- {2121631200 10800 1 EEST}
- {2140466400 7200 0 EET}
- {2153080800 10800 1 EEST}
- {2171916000 7200 0 EET}
- {2185135200 10800 1 EEST}
- {2203365600 7200 0 EET}
- {2216584800 10800 1 EEST}
- {2234815200 7200 0 EET}
- {2248034400 10800 1 EEST}
- {2266264800 7200 0 EET}
- {2279484000 10800 1 EEST}
- {2298319200 7200 0 EET}
- {2310933600 10800 1 EEST}
- {2329768800 7200 0 EET}
- {2342988000 10800 1 EEST}
- {2361218400 7200 0 EET}
- {2374437600 10800 1 EEST}
- {2392668000 7200 0 EET}
- {2405887200 10800 1 EEST}
- {2424117600 7200 0 EET}
- {2437336800 10800 1 EEST}
- {2455567200 7200 0 EET}
- {2468786400 10800 1 EEST}
- {2487621600 7200 0 EET}
- {2500236000 10800 1 EEST}
- {2519071200 7200 0 EET}
- {2532290400 10800 1 EEST}
- {2550520800 7200 0 EET}
- {2563740000 10800 1 EEST}
- {2581970400 7200 0 EET}
- {2595189600 10800 1 EEST}
- {2613420000 7200 0 EET}
- {2626639200 10800 1 EEST}
- {2645474400 7200 0 EET}
- {2658088800 10800 1 EEST}
- {2676924000 7200 0 EET}
- {2689538400 10800 1 EEST}
- {2708373600 7200 0 EET}
- {2721592800 10800 1 EEST}
- {2739823200 7200 0 EET}
- {2753042400 10800 1 EEST}
- {2771272800 7200 0 EET}
- {2784492000 10800 1 EEST}
- {2802722400 7200 0 EET}
- {2815941600 10800 1 EEST}
- {2834776800 7200 0 EET}
- {2847391200 10800 1 EEST}
- {2866226400 7200 0 EET}
- {2879445600 10800 1 EEST}
- {2897676000 7200 0 EET}
- {2910895200 10800 1 EEST}
- {2929125600 7200 0 EET}
- {2942344800 10800 1 EEST}
- {2960575200 7200 0 EET}
- {2973794400 10800 1 EEST}
- {2992629600 7200 0 EET}
- {3005244000 10800 1 EEST}
- {3024079200 7200 0 EET}
- {3036693600 10800 1 EEST}
- {3055528800 7200 0 EET}
- {3068748000 10800 1 EEST}
- {3086978400 7200 0 EET}
- {3100197600 10800 1 EEST}
- {3118428000 7200 0 EET}
- {3131647200 10800 1 EEST}
- {3149877600 7200 0 EET}
- {3163096800 10800 1 EEST}
- {3181932000 7200 0 EET}
- {3194546400 10800 1 EEST}
- {3213381600 7200 0 EET}
- {3226600800 10800 1 EEST}
- {3244831200 7200 0 EET}
- {3258050400 10800 1 EEST}
- {3276280800 7200 0 EET}
- {3289500000 10800 1 EEST}
- {3307730400 7200 0 EET}
- {3320949600 10800 1 EEST}
- {3339180000 7200 0 EET}
- {3352399200 10800 1 EEST}
- {3371234400 7200 0 EET}
- {3383848800 10800 1 EEST}
- {3402684000 7200 0 EET}
- {3415903200 10800 1 EEST}
- {3434133600 7200 0 EET}
- {3447352800 10800 1 EEST}
- {3465583200 7200 0 EET}
- {3478802400 10800 1 EEST}
- {3497032800 7200 0 EET}
- {3510252000 10800 1 EEST}
- {3529087200 7200 0 EET}
- {3541701600 10800 1 EEST}
- {3560536800 7200 0 EET}
- {3573151200 10800 1 EEST}
- {3591986400 7200 0 EET}
- {3605205600 10800 1 EEST}
- {3623436000 7200 0 EET}
- {3636655200 10800 1 EEST}
- {3654885600 7200 0 EET}
- {3668104800 10800 1 EEST}
- {3686335200 7200 0 EET}
- {3699554400 10800 1 EEST}
- {3718389600 7200 0 EET}
- {3731004000 10800 1 EEST}
- {3749839200 7200 0 EET}
- {3763058400 10800 1 EEST}
- {3781288800 7200 0 EET}
- {3794508000 10800 1 EEST}
- {3812738400 7200 0 EET}
- {3825957600 10800 1 EEST}
- {3844188000 7200 0 EET}
- {3857407200 10800 1 EEST}
- {3876242400 7200 0 EET}
- {3888856800 10800 1 EEST}
- {3907692000 7200 0 EET}
- {3920306400 10800 1 EEST}
- {3939141600 7200 0 EET}
- {3952360800 10800 1 EEST}
- {3970591200 7200 0 EET}
- {3983810400 10800 1 EEST}
- {4002040800 7200 0 EET}
- {4015260000 10800 1 EEST}
- {4033490400 7200 0 EET}
- {4046709600 10800 1 EEST}
- {4065544800 7200 0 EET}
- {4078159200 10800 1 EEST}
- {4096994400 7200 0 EET}
+ {1333058400 10800 1 EEST}
+ {1351202400 10800 0 AST}
}
diff --git a/library/tzdata/Asia/Anadyr b/library/tzdata/Asia/Anadyr
index c0e98a7..50ace50 100644
--- a/library/tzdata/Asia/Anadyr
+++ b/library/tzdata/Asia/Anadyr
@@ -65,184 +65,8 @@ set TZData(:Asia/Anadyr) {
{1224943200 43200 0 ANAT}
{1238248800 46800 1 ANAST}
{1256392800 43200 0 ANAT}
- {1269698400 46800 1 ANAST}
- {1288447200 43200 0 ANAT}
- {1301148000 46800 1 ANAST}
- {1319896800 43200 0 ANAT}
- {1332597600 46800 1 ANAST}
- {1351346400 43200 0 ANAT}
- {1364652000 46800 1 ANAST}
- {1382796000 43200 0 ANAT}
- {1396101600 46800 1 ANAST}
- {1414245600 43200 0 ANAT}
- {1427551200 46800 1 ANAST}
- {1445695200 43200 0 ANAT}
- {1459000800 46800 1 ANAST}
- {1477749600 43200 0 ANAT}
- {1490450400 46800 1 ANAST}
- {1509199200 43200 0 ANAT}
- {1521900000 46800 1 ANAST}
- {1540648800 43200 0 ANAT}
- {1553954400 46800 1 ANAST}
- {1572098400 43200 0 ANAT}
- {1585404000 46800 1 ANAST}
- {1603548000 43200 0 ANAT}
- {1616853600 46800 1 ANAST}
- {1635602400 43200 0 ANAT}
- {1648303200 46800 1 ANAST}
- {1667052000 43200 0 ANAT}
- {1679752800 46800 1 ANAST}
- {1698501600 43200 0 ANAT}
- {1711807200 46800 1 ANAST}
- {1729951200 43200 0 ANAT}
- {1743256800 46800 1 ANAST}
- {1761400800 43200 0 ANAT}
- {1774706400 46800 1 ANAST}
- {1792850400 43200 0 ANAT}
- {1806156000 46800 1 ANAST}
- {1824904800 43200 0 ANAT}
- {1837605600 46800 1 ANAST}
- {1856354400 43200 0 ANAT}
- {1869055200 46800 1 ANAST}
- {1887804000 43200 0 ANAT}
- {1901109600 46800 1 ANAST}
- {1919253600 43200 0 ANAT}
- {1932559200 46800 1 ANAST}
- {1950703200 43200 0 ANAT}
- {1964008800 46800 1 ANAST}
- {1982757600 43200 0 ANAT}
- {1995458400 46800 1 ANAST}
- {2014207200 43200 0 ANAT}
- {2026908000 46800 1 ANAST}
- {2045656800 43200 0 ANAT}
- {2058357600 46800 1 ANAST}
- {2077106400 43200 0 ANAT}
- {2090412000 46800 1 ANAST}
- {2108556000 43200 0 ANAT}
- {2121861600 46800 1 ANAST}
- {2140005600 43200 0 ANAT}
- {2153311200 46800 1 ANAST}
- {2172060000 43200 0 ANAT}
- {2184760800 46800 1 ANAST}
- {2203509600 43200 0 ANAT}
- {2216210400 46800 1 ANAST}
- {2234959200 43200 0 ANAT}
- {2248264800 46800 1 ANAST}
- {2266408800 43200 0 ANAT}
- {2279714400 46800 1 ANAST}
- {2297858400 43200 0 ANAT}
- {2311164000 46800 1 ANAST}
- {2329308000 43200 0 ANAT}
- {2342613600 46800 1 ANAST}
- {2361362400 43200 0 ANAT}
- {2374063200 46800 1 ANAST}
- {2392812000 43200 0 ANAT}
- {2405512800 46800 1 ANAST}
- {2424261600 43200 0 ANAT}
- {2437567200 46800 1 ANAST}
- {2455711200 43200 0 ANAT}
- {2469016800 46800 1 ANAST}
- {2487160800 43200 0 ANAT}
- {2500466400 46800 1 ANAST}
- {2519215200 43200 0 ANAT}
- {2531916000 46800 1 ANAST}
- {2550664800 43200 0 ANAT}
- {2563365600 46800 1 ANAST}
- {2582114400 43200 0 ANAT}
- {2595420000 46800 1 ANAST}
- {2613564000 43200 0 ANAT}
- {2626869600 46800 1 ANAST}
- {2645013600 43200 0 ANAT}
- {2658319200 46800 1 ANAST}
- {2676463200 43200 0 ANAT}
- {2689768800 46800 1 ANAST}
- {2708517600 43200 0 ANAT}
- {2721218400 46800 1 ANAST}
- {2739967200 43200 0 ANAT}
- {2752668000 46800 1 ANAST}
- {2771416800 43200 0 ANAT}
- {2784722400 46800 1 ANAST}
- {2802866400 43200 0 ANAT}
- {2816172000 46800 1 ANAST}
- {2834316000 43200 0 ANAT}
- {2847621600 46800 1 ANAST}
- {2866370400 43200 0 ANAT}
- {2879071200 46800 1 ANAST}
- {2897820000 43200 0 ANAT}
- {2910520800 46800 1 ANAST}
- {2929269600 43200 0 ANAT}
- {2941970400 46800 1 ANAST}
- {2960719200 43200 0 ANAT}
- {2974024800 46800 1 ANAST}
- {2992168800 43200 0 ANAT}
- {3005474400 46800 1 ANAST}
- {3023618400 43200 0 ANAT}
- {3036924000 46800 1 ANAST}
- {3055672800 43200 0 ANAT}
- {3068373600 46800 1 ANAST}
- {3087122400 43200 0 ANAT}
- {3099823200 46800 1 ANAST}
- {3118572000 43200 0 ANAT}
- {3131877600 46800 1 ANAST}
- {3150021600 43200 0 ANAT}
- {3163327200 46800 1 ANAST}
- {3181471200 43200 0 ANAT}
- {3194776800 46800 1 ANAST}
- {3212920800 43200 0 ANAT}
- {3226226400 46800 1 ANAST}
- {3244975200 43200 0 ANAT}
- {3257676000 46800 1 ANAST}
- {3276424800 43200 0 ANAT}
- {3289125600 46800 1 ANAST}
- {3307874400 43200 0 ANAT}
- {3321180000 46800 1 ANAST}
- {3339324000 43200 0 ANAT}
- {3352629600 46800 1 ANAST}
- {3370773600 43200 0 ANAT}
- {3384079200 46800 1 ANAST}
- {3402828000 43200 0 ANAT}
- {3415528800 46800 1 ANAST}
- {3434277600 43200 0 ANAT}
- {3446978400 46800 1 ANAST}
- {3465727200 43200 0 ANAT}
- {3479032800 46800 1 ANAST}
- {3497176800 43200 0 ANAT}
- {3510482400 46800 1 ANAST}
- {3528626400 43200 0 ANAT}
- {3541932000 46800 1 ANAST}
- {3560076000 43200 0 ANAT}
- {3573381600 46800 1 ANAST}
- {3592130400 43200 0 ANAT}
- {3604831200 46800 1 ANAST}
- {3623580000 43200 0 ANAT}
- {3636280800 46800 1 ANAST}
- {3655029600 43200 0 ANAT}
- {3668335200 46800 1 ANAST}
- {3686479200 43200 0 ANAT}
- {3699784800 46800 1 ANAST}
- {3717928800 43200 0 ANAT}
- {3731234400 46800 1 ANAST}
- {3749983200 43200 0 ANAT}
- {3762684000 46800 1 ANAST}
- {3781432800 43200 0 ANAT}
- {3794133600 46800 1 ANAST}
- {3812882400 43200 0 ANAT}
- {3825583200 46800 1 ANAST}
- {3844332000 43200 0 ANAT}
- {3857637600 46800 1 ANAST}
- {3875781600 43200 0 ANAT}
- {3889087200 46800 1 ANAST}
- {3907231200 43200 0 ANAT}
- {3920536800 46800 1 ANAST}
- {3939285600 43200 0 ANAT}
- {3951986400 46800 1 ANAST}
- {3970735200 43200 0 ANAT}
- {3983436000 46800 1 ANAST}
- {4002184800 43200 0 ANAT}
- {4015490400 46800 1 ANAST}
- {4033634400 43200 0 ANAT}
- {4046940000 46800 1 ANAST}
- {4065084000 43200 0 ANAT}
- {4078389600 46800 1 ANAST}
- {4096533600 43200 0 ANAT}
+ {1269698400 39600 0 ANAMMTT}
+ {1269702000 43200 1 ANAST}
+ {1288450800 39600 0 ANAT}
+ {1301151600 43200 0 ANAT}
}
diff --git a/library/tzdata/Asia/Damascus b/library/tzdata/Asia/Damascus
index 4cfeee7..fafef49 100644
--- a/library/tzdata/Asia/Damascus
+++ b/library/tzdata/Asia/Damascus
@@ -95,186 +95,186 @@ set TZData(:Asia/Damascus) {
{1193950800 7200 0 EET}
{1207260000 10800 1 EEST}
{1225486800 7200 0 EET}
- {1238709600 10800 1 EEST}
- {1257022800 7200 0 EET}
+ {1238104800 10800 1 EEST}
+ {1256850000 7200 0 EET}
{1270159200 10800 1 EEST}
- {1288558800 7200 0 EET}
+ {1288299600 7200 0 EET}
{1301608800 10800 1 EEST}
- {1320094800 7200 0 EET}
- {1333663200 10800 1 EEST}
- {1351717200 7200 0 EET}
- {1365112800 10800 1 EEST}
- {1383253200 7200 0 EET}
- {1396562400 10800 1 EEST}
- {1414789200 7200 0 EET}
- {1428012000 10800 1 EEST}
- {1446325200 7200 0 EET}
- {1459461600 10800 1 EEST}
- {1477947600 7200 0 EET}
- {1491516000 10800 1 EEST}
- {1509483600 7200 0 EET}
- {1522965600 10800 1 EEST}
- {1541019600 7200 0 EET}
- {1554415200 10800 1 EEST}
- {1572555600 7200 0 EET}
- {1585864800 10800 1 EEST}
- {1604178000 7200 0 EET}
- {1617314400 10800 1 EEST}
- {1635714000 7200 0 EET}
- {1648764000 10800 1 EEST}
- {1667250000 7200 0 EET}
- {1680818400 10800 1 EEST}
- {1698786000 7200 0 EET}
- {1712268000 10800 1 EEST}
- {1730408400 7200 0 EET}
- {1743717600 10800 1 EEST}
- {1761944400 7200 0 EET}
- {1775167200 10800 1 EEST}
- {1793480400 7200 0 EET}
- {1806616800 10800 1 EEST}
- {1825016400 7200 0 EET}
- {1838671200 10800 1 EEST}
- {1856638800 7200 0 EET}
- {1870120800 10800 1 EEST}
- {1888174800 7200 0 EET}
- {1901570400 10800 1 EEST}
- {1919710800 7200 0 EET}
- {1933020000 10800 1 EEST}
- {1951246800 7200 0 EET}
- {1964469600 10800 1 EEST}
- {1982869200 7200 0 EET}
- {1995919200 10800 1 EEST}
- {2014405200 7200 0 EET}
- {2027973600 10800 1 EEST}
- {2045941200 7200 0 EET}
- {2059423200 10800 1 EEST}
- {2077477200 7200 0 EET}
- {2090872800 10800 1 EEST}
- {2109099600 7200 0 EET}
- {2122322400 10800 1 EEST}
- {2140635600 7200 0 EET}
- {2153772000 10800 1 EEST}
- {2172171600 7200 0 EET}
- {2185221600 10800 1 EEST}
- {2203707600 7200 0 EET}
- {2217276000 10800 1 EEST}
- {2235330000 7200 0 EET}
- {2248725600 10800 1 EEST}
- {2266866000 7200 0 EET}
- {2280175200 10800 1 EEST}
- {2298402000 7200 0 EET}
- {2311624800 10800 1 EEST}
- {2329938000 7200 0 EET}
- {2343074400 10800 1 EEST}
- {2361560400 7200 0 EET}
- {2375128800 10800 1 EEST}
- {2393096400 7200 0 EET}
- {2406578400 10800 1 EEST}
- {2424632400 7200 0 EET}
- {2438028000 10800 1 EEST}
- {2456168400 7200 0 EET}
- {2469477600 10800 1 EEST}
- {2487790800 7200 0 EET}
- {2500927200 10800 1 EEST}
- {2519326800 7200 0 EET}
- {2532376800 10800 1 EEST}
- {2550862800 7200 0 EET}
- {2564431200 10800 1 EEST}
- {2582398800 7200 0 EET}
- {2595880800 10800 1 EEST}
- {2614021200 7200 0 EET}
- {2627330400 10800 1 EEST}
- {2645557200 7200 0 EET}
- {2658780000 10800 1 EEST}
- {2677093200 7200 0 EET}
- {2690229600 10800 1 EEST}
- {2708629200 7200 0 EET}
- {2722284000 10800 1 EEST}
- {2740251600 7200 0 EET}
- {2753733600 10800 1 EEST}
- {2771787600 7200 0 EET}
- {2785183200 10800 1 EEST}
- {2803323600 7200 0 EET}
- {2816632800 10800 1 EEST}
- {2834859600 7200 0 EET}
- {2848082400 10800 1 EEST}
- {2866482000 7200 0 EET}
- {2879532000 10800 1 EEST}
- {2898018000 7200 0 EET}
- {2911586400 10800 1 EEST}
- {2929554000 7200 0 EET}
- {2943036000 10800 1 EEST}
- {2961090000 7200 0 EET}
- {2974485600 10800 1 EEST}
- {2992712400 7200 0 EET}
- {3005935200 10800 1 EEST}
- {3024248400 7200 0 EET}
- {3037384800 10800 1 EEST}
- {3055784400 7200 0 EET}
- {3068834400 10800 1 EEST}
- {3087320400 7200 0 EET}
- {3100888800 10800 1 EEST}
- {3118942800 7200 0 EET}
- {3132338400 10800 1 EEST}
- {3150478800 7200 0 EET}
- {3163788000 10800 1 EEST}
- {3182014800 7200 0 EET}
- {3195237600 10800 1 EEST}
- {3213550800 7200 0 EET}
- {3226687200 10800 1 EEST}
- {3245173200 7200 0 EET}
- {3258741600 10800 1 EEST}
- {3276709200 7200 0 EET}
- {3290191200 10800 1 EEST}
- {3308245200 7200 0 EET}
- {3321640800 10800 1 EEST}
- {3339781200 7200 0 EET}
- {3353090400 10800 1 EEST}
- {3371403600 7200 0 EET}
- {3384540000 10800 1 EEST}
- {3402939600 7200 0 EET}
- {3415989600 10800 1 EEST}
- {3434475600 7200 0 EET}
- {3448044000 10800 1 EEST}
- {3466011600 7200 0 EET}
- {3479493600 10800 1 EEST}
- {3497634000 7200 0 EET}
- {3510943200 10800 1 EEST}
- {3529170000 7200 0 EET}
- {3542392800 10800 1 EEST}
- {3560706000 7200 0 EET}
- {3573842400 10800 1 EEST}
- {3592242000 7200 0 EET}
- {3605896800 10800 1 EEST}
- {3623864400 7200 0 EET}
- {3637346400 10800 1 EEST}
- {3655400400 7200 0 EET}
- {3668796000 10800 1 EEST}
- {3686936400 7200 0 EET}
- {3700245600 10800 1 EEST}
- {3718472400 7200 0 EET}
- {3731695200 10800 1 EEST}
- {3750094800 7200 0 EET}
- {3763144800 10800 1 EEST}
- {3781630800 7200 0 EET}
- {3795199200 10800 1 EEST}
- {3813166800 7200 0 EET}
- {3826648800 10800 1 EEST}
- {3844702800 7200 0 EET}
- {3858098400 10800 1 EEST}
- {3876325200 7200 0 EET}
- {3889548000 10800 1 EEST}
- {3907861200 7200 0 EET}
- {3920997600 10800 1 EEST}
- {3939397200 7200 0 EET}
- {3952447200 10800 1 EEST}
- {3970933200 7200 0 EET}
- {3984501600 10800 1 EEST}
- {4002555600 7200 0 EET}
- {4015951200 10800 1 EEST}
- {4034091600 7200 0 EET}
- {4047400800 10800 1 EEST}
- {4065627600 7200 0 EET}
- {4078850400 10800 1 EEST}
- {4097163600 7200 0 EET}
+ {1319749200 7200 0 EET}
+ {1333058400 10800 1 EEST}
+ {1351198800 7200 0 EET}
+ {1364508000 10800 1 EEST}
+ {1382648400 7200 0 EET}
+ {1395957600 10800 1 EEST}
+ {1414702800 7200 0 EET}
+ {1427407200 10800 1 EEST}
+ {1446152400 7200 0 EET}
+ {1458856800 10800 1 EEST}
+ {1477602000 7200 0 EET}
+ {1490911200 10800 1 EEST}
+ {1509051600 7200 0 EET}
+ {1522360800 10800 1 EEST}
+ {1540501200 7200 0 EET}
+ {1553810400 10800 1 EEST}
+ {1571950800 7200 0 EET}
+ {1585260000 10800 1 EEST}
+ {1604005200 7200 0 EET}
+ {1616709600 10800 1 EEST}
+ {1635454800 7200 0 EET}
+ {1648159200 10800 1 EEST}
+ {1666904400 7200 0 EET}
+ {1680213600 10800 1 EEST}
+ {1698354000 7200 0 EET}
+ {1711663200 10800 1 EEST}
+ {1729803600 7200 0 EET}
+ {1743112800 10800 1 EEST}
+ {1761858000 7200 0 EET}
+ {1774562400 10800 1 EEST}
+ {1793307600 7200 0 EET}
+ {1806012000 10800 1 EEST}
+ {1824757200 7200 0 EET}
+ {1838066400 10800 1 EEST}
+ {1856206800 7200 0 EET}
+ {1869516000 10800 1 EEST}
+ {1887656400 7200 0 EET}
+ {1900965600 10800 1 EEST}
+ {1919106000 7200 0 EET}
+ {1932415200 10800 1 EEST}
+ {1951160400 7200 0 EET}
+ {1963864800 10800 1 EEST}
+ {1982610000 7200 0 EET}
+ {1995314400 10800 1 EEST}
+ {2014059600 7200 0 EET}
+ {2027368800 10800 1 EEST}
+ {2045509200 7200 0 EET}
+ {2058818400 10800 1 EEST}
+ {2076958800 7200 0 EET}
+ {2090268000 10800 1 EEST}
+ {2109013200 7200 0 EET}
+ {2121717600 10800 1 EEST}
+ {2140462800 7200 0 EET}
+ {2153167200 10800 1 EEST}
+ {2171912400 7200 0 EET}
+ {2184616800 10800 1 EEST}
+ {2203362000 7200 0 EET}
+ {2216671200 10800 1 EEST}
+ {2234811600 7200 0 EET}
+ {2248120800 10800 1 EEST}
+ {2266261200 7200 0 EET}
+ {2279570400 10800 1 EEST}
+ {2298315600 7200 0 EET}
+ {2311020000 10800 1 EEST}
+ {2329765200 7200 0 EET}
+ {2342469600 10800 1 EEST}
+ {2361214800 7200 0 EET}
+ {2374524000 10800 1 EEST}
+ {2392664400 7200 0 EET}
+ {2405973600 10800 1 EEST}
+ {2424114000 7200 0 EET}
+ {2437423200 10800 1 EEST}
+ {2455563600 7200 0 EET}
+ {2468872800 10800 1 EEST}
+ {2487618000 7200 0 EET}
+ {2500322400 10800 1 EEST}
+ {2519067600 7200 0 EET}
+ {2531772000 10800 1 EEST}
+ {2550517200 7200 0 EET}
+ {2563826400 10800 1 EEST}
+ {2581966800 7200 0 EET}
+ {2595276000 10800 1 EEST}
+ {2613416400 7200 0 EET}
+ {2626725600 10800 1 EEST}
+ {2645470800 7200 0 EET}
+ {2658175200 10800 1 EEST}
+ {2676920400 7200 0 EET}
+ {2689624800 10800 1 EEST}
+ {2708370000 7200 0 EET}
+ {2721679200 10800 1 EEST}
+ {2739819600 7200 0 EET}
+ {2753128800 10800 1 EEST}
+ {2771269200 7200 0 EET}
+ {2784578400 10800 1 EEST}
+ {2802718800 7200 0 EET}
+ {2816028000 10800 1 EEST}
+ {2834773200 7200 0 EET}
+ {2847477600 10800 1 EEST}
+ {2866222800 7200 0 EET}
+ {2878927200 10800 1 EEST}
+ {2897672400 7200 0 EET}
+ {2910981600 10800 1 EEST}
+ {2929122000 7200 0 EET}
+ {2942431200 10800 1 EEST}
+ {2960571600 7200 0 EET}
+ {2973880800 10800 1 EEST}
+ {2992626000 7200 0 EET}
+ {3005330400 10800 1 EEST}
+ {3024075600 7200 0 EET}
+ {3036780000 10800 1 EEST}
+ {3055525200 7200 0 EET}
+ {3068229600 10800 1 EEST}
+ {3086974800 7200 0 EET}
+ {3100284000 10800 1 EEST}
+ {3118424400 7200 0 EET}
+ {3131733600 10800 1 EEST}
+ {3149874000 7200 0 EET}
+ {3163183200 10800 1 EEST}
+ {3181928400 7200 0 EET}
+ {3194632800 10800 1 EEST}
+ {3213378000 7200 0 EET}
+ {3226082400 10800 1 EEST}
+ {3244827600 7200 0 EET}
+ {3258136800 10800 1 EEST}
+ {3276277200 7200 0 EET}
+ {3289586400 10800 1 EEST}
+ {3307726800 7200 0 EET}
+ {3321036000 10800 1 EEST}
+ {3339176400 7200 0 EET}
+ {3352485600 10800 1 EEST}
+ {3371230800 7200 0 EET}
+ {3383935200 10800 1 EEST}
+ {3402680400 7200 0 EET}
+ {3415384800 10800 1 EEST}
+ {3434130000 7200 0 EET}
+ {3447439200 10800 1 EEST}
+ {3465579600 7200 0 EET}
+ {3478888800 10800 1 EEST}
+ {3497029200 7200 0 EET}
+ {3510338400 10800 1 EEST}
+ {3529083600 7200 0 EET}
+ {3541788000 10800 1 EEST}
+ {3560533200 7200 0 EET}
+ {3573237600 10800 1 EEST}
+ {3591982800 7200 0 EET}
+ {3605292000 10800 1 EEST}
+ {3623432400 7200 0 EET}
+ {3636741600 10800 1 EEST}
+ {3654882000 7200 0 EET}
+ {3668191200 10800 1 EEST}
+ {3686331600 7200 0 EET}
+ {3699640800 10800 1 EEST}
+ {3718386000 7200 0 EET}
+ {3731090400 10800 1 EEST}
+ {3749835600 7200 0 EET}
+ {3762540000 10800 1 EEST}
+ {3781285200 7200 0 EET}
+ {3794594400 10800 1 EEST}
+ {3812734800 7200 0 EET}
+ {3826044000 10800 1 EEST}
+ {3844184400 7200 0 EET}
+ {3857493600 10800 1 EEST}
+ {3876238800 7200 0 EET}
+ {3888943200 10800 1 EEST}
+ {3907688400 7200 0 EET}
+ {3920392800 10800 1 EEST}
+ {3939138000 7200 0 EET}
+ {3951842400 10800 1 EEST}
+ {3970587600 7200 0 EET}
+ {3983896800 10800 1 EEST}
+ {4002037200 7200 0 EET}
+ {4015346400 10800 1 EEST}
+ {4033486800 7200 0 EET}
+ {4046796000 10800 1 EEST}
+ {4065541200 7200 0 EET}
+ {4078245600 10800 1 EEST}
+ {4096990800 7200 0 EET}
}
diff --git a/library/tzdata/Asia/Dhaka b/library/tzdata/Asia/Dhaka
index 8eac24f..e0c270d 100644
--- a/library/tzdata/Asia/Dhaka
+++ b/library/tzdata/Asia/Dhaka
@@ -8,4 +8,7 @@ set TZData(:Asia/Dhaka) {
{-862637400 23400 0 BURT}
{-576138600 21600 0 DACT}
{38772000 21600 0 BDT}
+ {1230746400 21600 0 BDT}
+ {1245430800 25200 1 BDST}
+ {1262278740 21600 0 BDT}
}
diff --git a/library/tzdata/Asia/Dili b/library/tzdata/Asia/Dili
index 36910fd..f783557 100644
--- a/library/tzdata/Asia/Dili
+++ b/library/tzdata/Asia/Dili
@@ -5,6 +5,6 @@ set TZData(:Asia/Dili) {
{-1830414140 28800 0 TLT}
{-879152400 32400 0 JST}
{-766054800 32400 0 TLT}
- {199897200 28800 0 CIT}
+ {199897200 28800 0 WITA}
{969120000 32400 0 TLT}
}
diff --git a/library/tzdata/Asia/Gaza b/library/tzdata/Asia/Gaza
index 80f53c9..7d62a96 100644
--- a/library/tzdata/Asia/Gaza
+++ b/library/tzdata/Asia/Gaza
@@ -88,188 +88,191 @@ set TZData(:Asia/Gaza) {
{1158872400 7200 0 EET}
{1175378400 10800 1 EEST}
{1189638000 7200 0 EET}
- {1207000800 10800 1 EEST}
- {1219878000 7200 0 EET}
- {1238536800 10800 1 EEST}
- {1251327600 7200 0 EET}
- {1270072800 10800 1 EEST}
- {1282777200 7200 0 EET}
- {1301608800 10800 1 EEST}
- {1314226800 7200 0 EET}
- {1333231200 10800 1 EEST}
- {1346281200 7200 0 EET}
- {1364767200 10800 1 EEST}
- {1377730800 7200 0 EET}
- {1396303200 10800 1 EEST}
- {1409180400 7200 0 EET}
- {1427839200 10800 1 EEST}
- {1440630000 7200 0 EET}
+ {1206655200 10800 1 EEST}
+ {1219960800 7200 0 EET}
+ {1220220000 7200 0 EET}
+ {1238104800 10800 1 EEST}
+ {1252015200 7200 0 EET}
+ {1262296800 7200 0 EET}
+ {1269640860 10800 0 EEST}
+ {1281474000 7200 0 EET}
+ {1301608860 10800 1 EEST}
+ {1312149600 7200 0 EET}
+ {1325368800 7200 0 EET}
+ {1333058400 10800 1 EEST}
+ {1348178400 7200 0 EET}
+ {1364508000 10800 1 EEST}
+ {1380229200 7200 0 EET}
+ {1395957600 10800 1 EEST}
+ {1411678800 7200 0 EET}
+ {1427407200 10800 1 EEST}
+ {1443128400 7200 0 EET}
{1459461600 10800 1 EEST}
- {1472079600 7200 0 EET}
- {1490997600 10800 1 EEST}
- {1504134000 7200 0 EET}
- {1522533600 10800 1 EEST}
- {1535583600 7200 0 EET}
- {1554069600 10800 1 EEST}
- {1567033200 7200 0 EET}
- {1585692000 10800 1 EEST}
- {1598482800 7200 0 EET}
- {1617228000 10800 1 EEST}
- {1629932400 7200 0 EET}
+ {1474578000 7200 0 EET}
+ {1490911200 10800 1 EEST}
+ {1506027600 7200 0 EET}
+ {1522360800 10800 1 EEST}
+ {1537477200 7200 0 EET}
+ {1553810400 10800 1 EEST}
+ {1569531600 7200 0 EET}
+ {1585260000 10800 1 EEST}
+ {1600981200 7200 0 EET}
+ {1616709600 10800 1 EEST}
+ {1632430800 7200 0 EET}
{1648764000 10800 1 EEST}
- {1661382000 7200 0 EET}
- {1680300000 10800 1 EEST}
- {1693436400 7200 0 EET}
- {1711922400 10800 1 EEST}
- {1724886000 7200 0 EET}
- {1743458400 10800 1 EEST}
- {1756335600 7200 0 EET}
- {1774994400 10800 1 EEST}
- {1787785200 7200 0 EET}
- {1806530400 10800 1 EEST}
- {1819234800 7200 0 EET}
- {1838152800 10800 1 EEST}
- {1851289200 7200 0 EET}
- {1869688800 10800 1 EEST}
- {1882738800 7200 0 EET}
- {1901224800 10800 1 EEST}
- {1914188400 7200 0 EET}
- {1932760800 10800 1 EEST}
- {1945638000 7200 0 EET}
- {1964383200 10800 1 EEST}
- {1977087600 7200 0 EET}
+ {1663880400 7200 0 EET}
+ {1680213600 10800 1 EEST}
+ {1695330000 7200 0 EET}
+ {1711663200 10800 1 EEST}
+ {1727384400 7200 0 EET}
+ {1743112800 10800 1 EEST}
+ {1758834000 7200 0 EET}
+ {1774562400 10800 1 EEST}
+ {1790283600 7200 0 EET}
+ {1806012000 10800 1 EEST}
+ {1821733200 7200 0 EET}
+ {1838066400 10800 1 EEST}
+ {1853182800 7200 0 EET}
+ {1869516000 10800 1 EEST}
+ {1884632400 7200 0 EET}
+ {1900965600 10800 1 EEST}
+ {1916686800 7200 0 EET}
+ {1932415200 10800 1 EEST}
+ {1948136400 7200 0 EET}
+ {1963864800 10800 1 EEST}
+ {1979586000 7200 0 EET}
{1995919200 10800 1 EEST}
- {2008537200 7200 0 EET}
- {2027455200 10800 1 EEST}
- {2040591600 7200 0 EET}
- {2058991200 10800 1 EEST}
- {2072041200 7200 0 EET}
- {2090613600 10800 1 EEST}
- {2103490800 7200 0 EET}
- {2122149600 10800 1 EEST}
- {2134940400 7200 0 EET}
- {2153685600 10800 1 EEST}
- {2166390000 7200 0 EET}
+ {2011035600 7200 0 EET}
+ {2027368800 10800 1 EEST}
+ {2042485200 7200 0 EET}
+ {2058818400 10800 1 EEST}
+ {2073934800 7200 0 EET}
+ {2090268000 10800 1 EEST}
+ {2105989200 7200 0 EET}
+ {2121717600 10800 1 EEST}
+ {2137438800 7200 0 EET}
+ {2153167200 10800 1 EEST}
+ {2168888400 7200 0 EET}
{2185221600 10800 1 EEST}
- {2197839600 7200 0 EET}
- {2216844000 10800 1 EEST}
- {2229894000 7200 0 EET}
- {2248380000 10800 1 EEST}
- {2261343600 7200 0 EET}
- {2279916000 10800 1 EEST}
- {2292793200 7200 0 EET}
- {2311452000 10800 1 EEST}
- {2324242800 7200 0 EET}
+ {2200338000 7200 0 EET}
+ {2216671200 10800 1 EEST}
+ {2231787600 7200 0 EET}
+ {2248120800 10800 1 EEST}
+ {2263842000 7200 0 EET}
+ {2279570400 10800 1 EEST}
+ {2295291600 7200 0 EET}
+ {2311020000 10800 1 EEST}
+ {2326741200 7200 0 EET}
{2343074400 10800 1 EEST}
- {2355692400 7200 0 EET}
- {2374610400 10800 1 EEST}
- {2387746800 7200 0 EET}
- {2406146400 10800 1 EEST}
- {2419196400 7200 0 EET}
- {2437682400 10800 1 EEST}
- {2450646000 7200 0 EET}
- {2469304800 10800 1 EEST}
- {2482095600 7200 0 EET}
- {2500840800 10800 1 EEST}
- {2513545200 7200 0 EET}
+ {2358190800 7200 0 EET}
+ {2374524000 10800 1 EEST}
+ {2389640400 7200 0 EET}
+ {2405973600 10800 1 EEST}
+ {2421090000 7200 0 EET}
+ {2437423200 10800 1 EEST}
+ {2453144400 7200 0 EET}
+ {2468872800 10800 1 EEST}
+ {2484594000 7200 0 EET}
+ {2500322400 10800 1 EEST}
+ {2516043600 7200 0 EET}
{2532376800 10800 1 EEST}
- {2544994800 7200 0 EET}
- {2563912800 10800 1 EEST}
- {2577049200 7200 0 EET}
- {2595535200 10800 1 EEST}
- {2608498800 7200 0 EET}
- {2627071200 10800 1 EEST}
- {2639948400 7200 0 EET}
- {2658607200 10800 1 EEST}
- {2671398000 7200 0 EET}
- {2690143200 10800 1 EEST}
- {2702847600 7200 0 EET}
- {2721765600 10800 1 EEST}
- {2734902000 7200 0 EET}
- {2753301600 10800 1 EEST}
- {2766351600 7200 0 EET}
- {2784837600 10800 1 EEST}
- {2797801200 7200 0 EET}
- {2816373600 10800 1 EEST}
- {2829250800 7200 0 EET}
- {2847996000 10800 1 EEST}
- {2860700400 7200 0 EET}
+ {2547493200 7200 0 EET}
+ {2563826400 10800 1 EEST}
+ {2578942800 7200 0 EET}
+ {2595276000 10800 1 EEST}
+ {2610997200 7200 0 EET}
+ {2626725600 10800 1 EEST}
+ {2642446800 7200 0 EET}
+ {2658175200 10800 1 EEST}
+ {2673896400 7200 0 EET}
+ {2689624800 10800 1 EEST}
+ {2705346000 7200 0 EET}
+ {2721679200 10800 1 EEST}
+ {2736795600 7200 0 EET}
+ {2753128800 10800 1 EEST}
+ {2768245200 7200 0 EET}
+ {2784578400 10800 1 EEST}
+ {2800299600 7200 0 EET}
+ {2816028000 10800 1 EEST}
+ {2831749200 7200 0 EET}
+ {2847477600 10800 1 EEST}
+ {2863198800 7200 0 EET}
{2879532000 10800 1 EEST}
- {2892150000 7200 0 EET}
- {2911068000 10800 1 EEST}
- {2924204400 7200 0 EET}
- {2942604000 10800 1 EEST}
- {2955654000 7200 0 EET}
- {2974226400 10800 1 EEST}
- {2987103600 7200 0 EET}
- {3005762400 10800 1 EEST}
- {3018553200 7200 0 EET}
- {3037298400 10800 1 EEST}
- {3050002800 7200 0 EET}
+ {2894648400 7200 0 EET}
+ {2910981600 10800 1 EEST}
+ {2926098000 7200 0 EET}
+ {2942431200 10800 1 EEST}
+ {2957547600 7200 0 EET}
+ {2973880800 10800 1 EEST}
+ {2989602000 7200 0 EET}
+ {3005330400 10800 1 EEST}
+ {3021051600 7200 0 EET}
+ {3036780000 10800 1 EEST}
+ {3052501200 7200 0 EET}
{3068834400 10800 1 EEST}
- {3081452400 7200 0 EET}
- {3100456800 10800 1 EEST}
- {3113506800 7200 0 EET}
- {3131992800 10800 1 EEST}
- {3144956400 7200 0 EET}
- {3163528800 10800 1 EEST}
- {3176406000 7200 0 EET}
- {3195064800 10800 1 EEST}
- {3207855600 7200 0 EET}
+ {3083950800 7200 0 EET}
+ {3100284000 10800 1 EEST}
+ {3115400400 7200 0 EET}
+ {3131733600 10800 1 EEST}
+ {3147454800 7200 0 EET}
+ {3163183200 10800 1 EEST}
+ {3178904400 7200 0 EET}
+ {3194632800 10800 1 EEST}
+ {3210354000 7200 0 EET}
{3226687200 10800 1 EEST}
- {3239305200 7200 0 EET}
- {3258223200 10800 1 EEST}
- {3271359600 7200 0 EET}
- {3289759200 10800 1 EEST}
- {3302809200 7200 0 EET}
- {3321295200 10800 1 EEST}
- {3334258800 7200 0 EET}
- {3352917600 10800 1 EEST}
- {3365708400 7200 0 EET}
- {3384453600 10800 1 EEST}
- {3397158000 7200 0 EET}
+ {3241803600 7200 0 EET}
+ {3258136800 10800 1 EEST}
+ {3273253200 7200 0 EET}
+ {3289586400 10800 1 EEST}
+ {3304702800 7200 0 EET}
+ {3321036000 10800 1 EEST}
+ {3336757200 7200 0 EET}
+ {3352485600 10800 1 EEST}
+ {3368206800 7200 0 EET}
+ {3383935200 10800 1 EEST}
+ {3399656400 7200 0 EET}
{3415989600 10800 1 EEST}
- {3428607600 7200 0 EET}
- {3447525600 10800 1 EEST}
- {3460662000 7200 0 EET}
- {3479148000 10800 1 EEST}
- {3492111600 7200 0 EET}
- {3510684000 10800 1 EEST}
- {3523561200 7200 0 EET}
- {3542220000 10800 1 EEST}
- {3555010800 7200 0 EET}
- {3573756000 10800 1 EEST}
- {3586460400 7200 0 EET}
- {3605378400 10800 1 EEST}
- {3618514800 7200 0 EET}
- {3636914400 10800 1 EEST}
- {3649964400 7200 0 EET}
- {3668450400 10800 1 EEST}
- {3681414000 7200 0 EET}
- {3699986400 10800 1 EEST}
- {3712863600 7200 0 EET}
- {3731608800 10800 1 EEST}
- {3744313200 7200 0 EET}
+ {3431106000 7200 0 EET}
+ {3447439200 10800 1 EEST}
+ {3462555600 7200 0 EET}
+ {3478888800 10800 1 EEST}
+ {3494610000 7200 0 EET}
+ {3510338400 10800 1 EEST}
+ {3526059600 7200 0 EET}
+ {3541788000 10800 1 EEST}
+ {3557509200 7200 0 EET}
+ {3573237600 10800 1 EEST}
+ {3588958800 7200 0 EET}
+ {3605292000 10800 1 EEST}
+ {3620408400 7200 0 EET}
+ {3636741600 10800 1 EEST}
+ {3651858000 7200 0 EET}
+ {3668191200 10800 1 EEST}
+ {3683912400 7200 0 EET}
+ {3699640800 10800 1 EEST}
+ {3715362000 7200 0 EET}
+ {3731090400 10800 1 EEST}
+ {3746811600 7200 0 EET}
{3763144800 10800 1 EEST}
- {3775762800 7200 0 EET}
- {3794680800 10800 1 EEST}
- {3807817200 7200 0 EET}
- {3826216800 10800 1 EEST}
- {3839266800 7200 0 EET}
- {3857839200 10800 1 EEST}
- {3870716400 7200 0 EET}
- {3889375200 10800 1 EEST}
- {3902166000 7200 0 EET}
- {3920911200 10800 1 EEST}
- {3933615600 7200 0 EET}
+ {3778261200 7200 0 EET}
+ {3794594400 10800 1 EEST}
+ {3809710800 7200 0 EET}
+ {3826044000 10800 1 EEST}
+ {3841160400 7200 0 EET}
+ {3857493600 10800 1 EEST}
+ {3873214800 7200 0 EET}
+ {3888943200 10800 1 EEST}
+ {3904664400 7200 0 EET}
+ {3920392800 10800 1 EEST}
+ {3936114000 7200 0 EET}
{3952447200 10800 1 EEST}
- {3965065200 7200 0 EET}
- {3984069600 10800 1 EEST}
- {3997119600 7200 0 EET}
- {4015605600 10800 1 EEST}
- {4028569200 7200 0 EET}
- {4047141600 10800 1 EEST}
- {4060018800 7200 0 EET}
- {4078677600 10800 1 EEST}
- {4091468400 7200 0 EET}
+ {3967563600 7200 0 EET}
+ {3983896800 10800 1 EEST}
+ {3999013200 7200 0 EET}
+ {4015346400 10800 1 EEST}
+ {4031067600 7200 0 EET}
+ {4046796000 10800 1 EEST}
+ {4062517200 7200 0 EET}
+ {4078245600 10800 1 EEST}
+ {4093966800 7200 0 EET}
}
diff --git a/library/tzdata/Asia/Hebron b/library/tzdata/Asia/Hebron
new file mode 100644
index 0000000..1333d5a
--- /dev/null
+++ b/library/tzdata/Asia/Hebron
@@ -0,0 +1,277 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Hebron) {
+ {-9223372036854775808 8423 0 LMT}
+ {-2185410023 7200 0 EET}
+ {-933645600 10800 1 EET}
+ {-857358000 7200 0 EET}
+ {-844300800 10800 1 EET}
+ {-825822000 7200 0 EET}
+ {-812685600 10800 1 EET}
+ {-794199600 7200 0 EET}
+ {-779853600 10800 1 EET}
+ {-762656400 7200 0 EET}
+ {-748310400 10800 1 EET}
+ {-731127600 7200 0 EET}
+ {-682653600 7200 0 EET}
+ {-399088800 10800 1 EEST}
+ {-386650800 7200 0 EET}
+ {-368330400 10800 1 EEST}
+ {-355114800 7200 0 EET}
+ {-336790800 10800 1 EEST}
+ {-323654400 7200 0 EET}
+ {-305168400 10800 1 EEST}
+ {-292032000 7200 0 EET}
+ {-273632400 10800 1 EEST}
+ {-260496000 7200 0 EET}
+ {-242096400 10800 1 EEST}
+ {-228960000 7200 0 EET}
+ {-210560400 10800 1 EEST}
+ {-197424000 7200 0 EET}
+ {-178938000 10800 1 EEST}
+ {-165801600 7200 0 EET}
+ {-147402000 10800 1 EEST}
+ {-134265600 7200 0 EET}
+ {-115866000 10800 1 EEST}
+ {-102643200 7200 0 EET}
+ {-84330000 10800 1 EEST}
+ {-81313200 10800 0 IST}
+ {142376400 10800 1 IDT}
+ {150843600 7200 0 IST}
+ {167176800 10800 1 IDT}
+ {178664400 7200 0 IST}
+ {482277600 10800 1 IDT}
+ {495579600 7200 0 IST}
+ {516751200 10800 1 IDT}
+ {526424400 7200 0 IST}
+ {545436000 10800 1 IDT}
+ {558478800 7200 0 IST}
+ {576540000 10800 1 IDT}
+ {589237200 7200 0 IST}
+ {609890400 10800 1 IDT}
+ {620773200 7200 0 IST}
+ {638316000 10800 1 IDT}
+ {651618000 7200 0 IST}
+ {669765600 10800 1 IDT}
+ {683672400 7200 0 IST}
+ {701820000 10800 1 IDT}
+ {715726800 7200 0 IST}
+ {733701600 10800 1 IDT}
+ {747176400 7200 0 IST}
+ {765151200 10800 1 IDT}
+ {778021200 7200 0 IST}
+ {796600800 10800 1 IDT}
+ {810075600 7200 0 IST}
+ {820447200 7200 0 EET}
+ {828655200 10800 1 EEST}
+ {843170400 7200 0 EET}
+ {860104800 10800 1 EEST}
+ {874620000 7200 0 EET}
+ {891554400 10800 1 EEST}
+ {906069600 7200 0 EET}
+ {915141600 7200 0 EET}
+ {924213600 10800 1 EEST}
+ {939934800 7200 0 EET}
+ {956268000 10800 1 EEST}
+ {971989200 7200 0 EET}
+ {987717600 10800 1 EEST}
+ {1003438800 7200 0 EET}
+ {1019167200 10800 1 EEST}
+ {1034888400 7200 0 EET}
+ {1050616800 10800 1 EEST}
+ {1066338000 7200 0 EET}
+ {1082066400 10800 1 EEST}
+ {1096581600 7200 0 EET}
+ {1113516000 10800 1 EEST}
+ {1128380400 7200 0 EET}
+ {1143842400 10800 1 EEST}
+ {1158872400 7200 0 EET}
+ {1175378400 10800 1 EEST}
+ {1189638000 7200 0 EET}
+ {1206655200 10800 1 EEST}
+ {1220216400 7200 0 EET}
+ {1238104800 10800 1 EEST}
+ {1252015200 7200 0 EET}
+ {1269554400 10800 1 EEST}
+ {1281474000 7200 0 EET}
+ {1301608860 10800 1 EEST}
+ {1312146000 7200 0 EET}
+ {1314655200 10800 1 EEST}
+ {1317330000 7200 0 EET}
+ {1333058400 10800 1 EEST}
+ {1348178400 7200 0 EET}
+ {1364508000 10800 1 EEST}
+ {1380229200 7200 0 EET}
+ {1395957600 10800 1 EEST}
+ {1411678800 7200 0 EET}
+ {1427407200 10800 1 EEST}
+ {1443128400 7200 0 EET}
+ {1459461600 10800 1 EEST}
+ {1474578000 7200 0 EET}
+ {1490911200 10800 1 EEST}
+ {1506027600 7200 0 EET}
+ {1522360800 10800 1 EEST}
+ {1537477200 7200 0 EET}
+ {1553810400 10800 1 EEST}
+ {1569531600 7200 0 EET}
+ {1585260000 10800 1 EEST}
+ {1600981200 7200 0 EET}
+ {1616709600 10800 1 EEST}
+ {1632430800 7200 0 EET}
+ {1648764000 10800 1 EEST}
+ {1663880400 7200 0 EET}
+ {1680213600 10800 1 EEST}
+ {1695330000 7200 0 EET}
+ {1711663200 10800 1 EEST}
+ {1727384400 7200 0 EET}
+ {1743112800 10800 1 EEST}
+ {1758834000 7200 0 EET}
+ {1774562400 10800 1 EEST}
+ {1790283600 7200 0 EET}
+ {1806012000 10800 1 EEST}
+ {1821733200 7200 0 EET}
+ {1838066400 10800 1 EEST}
+ {1853182800 7200 0 EET}
+ {1869516000 10800 1 EEST}
+ {1884632400 7200 0 EET}
+ {1900965600 10800 1 EEST}
+ {1916686800 7200 0 EET}
+ {1932415200 10800 1 EEST}
+ {1948136400 7200 0 EET}
+ {1963864800 10800 1 EEST}
+ {1979586000 7200 0 EET}
+ {1995919200 10800 1 EEST}
+ {2011035600 7200 0 EET}
+ {2027368800 10800 1 EEST}
+ {2042485200 7200 0 EET}
+ {2058818400 10800 1 EEST}
+ {2073934800 7200 0 EET}
+ {2090268000 10800 1 EEST}
+ {2105989200 7200 0 EET}
+ {2121717600 10800 1 EEST}
+ {2137438800 7200 0 EET}
+ {2153167200 10800 1 EEST}
+ {2168888400 7200 0 EET}
+ {2185221600 10800 1 EEST}
+ {2200338000 7200 0 EET}
+ {2216671200 10800 1 EEST}
+ {2231787600 7200 0 EET}
+ {2248120800 10800 1 EEST}
+ {2263842000 7200 0 EET}
+ {2279570400 10800 1 EEST}
+ {2295291600 7200 0 EET}
+ {2311020000 10800 1 EEST}
+ {2326741200 7200 0 EET}
+ {2343074400 10800 1 EEST}
+ {2358190800 7200 0 EET}
+ {2374524000 10800 1 EEST}
+ {2389640400 7200 0 EET}
+ {2405973600 10800 1 EEST}
+ {2421090000 7200 0 EET}
+ {2437423200 10800 1 EEST}
+ {2453144400 7200 0 EET}
+ {2468872800 10800 1 EEST}
+ {2484594000 7200 0 EET}
+ {2500322400 10800 1 EEST}
+ {2516043600 7200 0 EET}
+ {2532376800 10800 1 EEST}
+ {2547493200 7200 0 EET}
+ {2563826400 10800 1 EEST}
+ {2578942800 7200 0 EET}
+ {2595276000 10800 1 EEST}
+ {2610997200 7200 0 EET}
+ {2626725600 10800 1 EEST}
+ {2642446800 7200 0 EET}
+ {2658175200 10800 1 EEST}
+ {2673896400 7200 0 EET}
+ {2689624800 10800 1 EEST}
+ {2705346000 7200 0 EET}
+ {2721679200 10800 1 EEST}
+ {2736795600 7200 0 EET}
+ {2753128800 10800 1 EEST}
+ {2768245200 7200 0 EET}
+ {2784578400 10800 1 EEST}
+ {2800299600 7200 0 EET}
+ {2816028000 10800 1 EEST}
+ {2831749200 7200 0 EET}
+ {2847477600 10800 1 EEST}
+ {2863198800 7200 0 EET}
+ {2879532000 10800 1 EEST}
+ {2894648400 7200 0 EET}
+ {2910981600 10800 1 EEST}
+ {2926098000 7200 0 EET}
+ {2942431200 10800 1 EEST}
+ {2957547600 7200 0 EET}
+ {2973880800 10800 1 EEST}
+ {2989602000 7200 0 EET}
+ {3005330400 10800 1 EEST}
+ {3021051600 7200 0 EET}
+ {3036780000 10800 1 EEST}
+ {3052501200 7200 0 EET}
+ {3068834400 10800 1 EEST}
+ {3083950800 7200 0 EET}
+ {3100284000 10800 1 EEST}
+ {3115400400 7200 0 EET}
+ {3131733600 10800 1 EEST}
+ {3147454800 7200 0 EET}
+ {3163183200 10800 1 EEST}
+ {3178904400 7200 0 EET}
+ {3194632800 10800 1 EEST}
+ {3210354000 7200 0 EET}
+ {3226687200 10800 1 EEST}
+ {3241803600 7200 0 EET}
+ {3258136800 10800 1 EEST}
+ {3273253200 7200 0 EET}
+ {3289586400 10800 1 EEST}
+ {3304702800 7200 0 EET}
+ {3321036000 10800 1 EEST}
+ {3336757200 7200 0 EET}
+ {3352485600 10800 1 EEST}
+ {3368206800 7200 0 EET}
+ {3383935200 10800 1 EEST}
+ {3399656400 7200 0 EET}
+ {3415989600 10800 1 EEST}
+ {3431106000 7200 0 EET}
+ {3447439200 10800 1 EEST}
+ {3462555600 7200 0 EET}
+ {3478888800 10800 1 EEST}
+ {3494610000 7200 0 EET}
+ {3510338400 10800 1 EEST}
+ {3526059600 7200 0 EET}
+ {3541788000 10800 1 EEST}
+ {3557509200 7200 0 EET}
+ {3573237600 10800 1 EEST}
+ {3588958800 7200 0 EET}
+ {3605292000 10800 1 EEST}
+ {3620408400 7200 0 EET}
+ {3636741600 10800 1 EEST}
+ {3651858000 7200 0 EET}
+ {3668191200 10800 1 EEST}
+ {3683912400 7200 0 EET}
+ {3699640800 10800 1 EEST}
+ {3715362000 7200 0 EET}
+ {3731090400 10800 1 EEST}
+ {3746811600 7200 0 EET}
+ {3763144800 10800 1 EEST}
+ {3778261200 7200 0 EET}
+ {3794594400 10800 1 EEST}
+ {3809710800 7200 0 EET}
+ {3826044000 10800 1 EEST}
+ {3841160400 7200 0 EET}
+ {3857493600 10800 1 EEST}
+ {3873214800 7200 0 EET}
+ {3888943200 10800 1 EEST}
+ {3904664400 7200 0 EET}
+ {3920392800 10800 1 EEST}
+ {3936114000 7200 0 EET}
+ {3952447200 10800 1 EEST}
+ {3967563600 7200 0 EET}
+ {3983896800 10800 1 EEST}
+ {3999013200 7200 0 EET}
+ {4015346400 10800 1 EEST}
+ {4031067600 7200 0 EET}
+ {4046796000 10800 1 EEST}
+ {4062517200 7200 0 EET}
+ {4078245600 10800 1 EEST}
+ {4093966800 7200 0 EET}
+}
diff --git a/library/tzdata/Asia/Hong_Kong b/library/tzdata/Asia/Hong_Kong
index 88d8091..fcf98a6 100644
--- a/library/tzdata/Asia/Hong_Kong
+++ b/library/tzdata/Asia/Hong_Kong
@@ -1,8 +1,12 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Asia/Hong_Kong) {
- {-9223372036854775808 27396 0 LMT}
- {-2056692996 28800 0 HKT}
+ {-9223372036854775808 27402 0 LMT}
+ {-2056693002 28800 0 HKT}
+ {-907389000 32400 1 HKST}
+ {-891667800 28800 0 HKT}
+ {-884246400 32400 0 JST}
+ {-766746000 28800 0 HKT}
{-747981000 32400 1 HKST}
{-728544600 28800 0 HKT}
{-717049800 32400 1 HKST}
@@ -16,7 +20,7 @@ set TZData(:Asia/Hong_Kong) {
{-591856200 32400 1 HKST}
{-573715800 28800 0 HKT}
{-559801800 32400 1 HKST}
- {-542266200 28800 0 HKT}
+ {-542352600 28800 0 HKT}
{-528352200 32400 1 HKST}
{-510211800 28800 0 HKT}
{-498112200 32400 1 HKST}
@@ -59,16 +63,13 @@ set TZData(:Asia/Hong_Kong) {
{88540200 28800 0 HKT}
{104268600 32400 1 HKST}
{119989800 28800 0 HKT}
- {135718200 32400 1 HKST}
+ {126041400 32400 1 HKST}
+ {135714600 32400 1 HKST}
{151439400 28800 0 HKT}
{167167800 32400 1 HKST}
{182889000 28800 0 HKT}
{198617400 32400 1 HKST}
{214338600 28800 0 HKT}
- {230067000 32400 1 HKST}
- {245788200 28800 0 HKT}
{295385400 32400 1 HKST}
{309292200 28800 0 HKT}
- {326835000 32400 1 HKST}
- {340741800 28800 0 HKT}
}
diff --git a/library/tzdata/Asia/Irkutsk b/library/tzdata/Asia/Irkutsk
index 771ebc9..bca1dcc 100644
--- a/library/tzdata/Asia/Irkutsk
+++ b/library/tzdata/Asia/Irkutsk
@@ -67,182 +67,5 @@ set TZData(:Asia/Irkutsk) {
{1256407200 28800 0 IRKT}
{1269712800 32400 1 IRKST}
{1288461600 28800 0 IRKT}
- {1301162400 32400 1 IRKST}
- {1319911200 28800 0 IRKT}
- {1332612000 32400 1 IRKST}
- {1351360800 28800 0 IRKT}
- {1364666400 32400 1 IRKST}
- {1382810400 28800 0 IRKT}
- {1396116000 32400 1 IRKST}
- {1414260000 28800 0 IRKT}
- {1427565600 32400 1 IRKST}
- {1445709600 28800 0 IRKT}
- {1459015200 32400 1 IRKST}
- {1477764000 28800 0 IRKT}
- {1490464800 32400 1 IRKST}
- {1509213600 28800 0 IRKT}
- {1521914400 32400 1 IRKST}
- {1540663200 28800 0 IRKT}
- {1553968800 32400 1 IRKST}
- {1572112800 28800 0 IRKT}
- {1585418400 32400 1 IRKST}
- {1603562400 28800 0 IRKT}
- {1616868000 32400 1 IRKST}
- {1635616800 28800 0 IRKT}
- {1648317600 32400 1 IRKST}
- {1667066400 28800 0 IRKT}
- {1679767200 32400 1 IRKST}
- {1698516000 28800 0 IRKT}
- {1711821600 32400 1 IRKST}
- {1729965600 28800 0 IRKT}
- {1743271200 32400 1 IRKST}
- {1761415200 28800 0 IRKT}
- {1774720800 32400 1 IRKST}
- {1792864800 28800 0 IRKT}
- {1806170400 32400 1 IRKST}
- {1824919200 28800 0 IRKT}
- {1837620000 32400 1 IRKST}
- {1856368800 28800 0 IRKT}
- {1869069600 32400 1 IRKST}
- {1887818400 28800 0 IRKT}
- {1901124000 32400 1 IRKST}
- {1919268000 28800 0 IRKT}
- {1932573600 32400 1 IRKST}
- {1950717600 28800 0 IRKT}
- {1964023200 32400 1 IRKST}
- {1982772000 28800 0 IRKT}
- {1995472800 32400 1 IRKST}
- {2014221600 28800 0 IRKT}
- {2026922400 32400 1 IRKST}
- {2045671200 28800 0 IRKT}
- {2058372000 32400 1 IRKST}
- {2077120800 28800 0 IRKT}
- {2090426400 32400 1 IRKST}
- {2108570400 28800 0 IRKT}
- {2121876000 32400 1 IRKST}
- {2140020000 28800 0 IRKT}
- {2153325600 32400 1 IRKST}
- {2172074400 28800 0 IRKT}
- {2184775200 32400 1 IRKST}
- {2203524000 28800 0 IRKT}
- {2216224800 32400 1 IRKST}
- {2234973600 28800 0 IRKT}
- {2248279200 32400 1 IRKST}
- {2266423200 28800 0 IRKT}
- {2279728800 32400 1 IRKST}
- {2297872800 28800 0 IRKT}
- {2311178400 32400 1 IRKST}
- {2329322400 28800 0 IRKT}
- {2342628000 32400 1 IRKST}
- {2361376800 28800 0 IRKT}
- {2374077600 32400 1 IRKST}
- {2392826400 28800 0 IRKT}
- {2405527200 32400 1 IRKST}
- {2424276000 28800 0 IRKT}
- {2437581600 32400 1 IRKST}
- {2455725600 28800 0 IRKT}
- {2469031200 32400 1 IRKST}
- {2487175200 28800 0 IRKT}
- {2500480800 32400 1 IRKST}
- {2519229600 28800 0 IRKT}
- {2531930400 32400 1 IRKST}
- {2550679200 28800 0 IRKT}
- {2563380000 32400 1 IRKST}
- {2582128800 28800 0 IRKT}
- {2595434400 32400 1 IRKST}
- {2613578400 28800 0 IRKT}
- {2626884000 32400 1 IRKST}
- {2645028000 28800 0 IRKT}
- {2658333600 32400 1 IRKST}
- {2676477600 28800 0 IRKT}
- {2689783200 32400 1 IRKST}
- {2708532000 28800 0 IRKT}
- {2721232800 32400 1 IRKST}
- {2739981600 28800 0 IRKT}
- {2752682400 32400 1 IRKST}
- {2771431200 28800 0 IRKT}
- {2784736800 32400 1 IRKST}
- {2802880800 28800 0 IRKT}
- {2816186400 32400 1 IRKST}
- {2834330400 28800 0 IRKT}
- {2847636000 32400 1 IRKST}
- {2866384800 28800 0 IRKT}
- {2879085600 32400 1 IRKST}
- {2897834400 28800 0 IRKT}
- {2910535200 32400 1 IRKST}
- {2929284000 28800 0 IRKT}
- {2941984800 32400 1 IRKST}
- {2960733600 28800 0 IRKT}
- {2974039200 32400 1 IRKST}
- {2992183200 28800 0 IRKT}
- {3005488800 32400 1 IRKST}
- {3023632800 28800 0 IRKT}
- {3036938400 32400 1 IRKST}
- {3055687200 28800 0 IRKT}
- {3068388000 32400 1 IRKST}
- {3087136800 28800 0 IRKT}
- {3099837600 32400 1 IRKST}
- {3118586400 28800 0 IRKT}
- {3131892000 32400 1 IRKST}
- {3150036000 28800 0 IRKT}
- {3163341600 32400 1 IRKST}
- {3181485600 28800 0 IRKT}
- {3194791200 32400 1 IRKST}
- {3212935200 28800 0 IRKT}
- {3226240800 32400 1 IRKST}
- {3244989600 28800 0 IRKT}
- {3257690400 32400 1 IRKST}
- {3276439200 28800 0 IRKT}
- {3289140000 32400 1 IRKST}
- {3307888800 28800 0 IRKT}
- {3321194400 32400 1 IRKST}
- {3339338400 28800 0 IRKT}
- {3352644000 32400 1 IRKST}
- {3370788000 28800 0 IRKT}
- {3384093600 32400 1 IRKST}
- {3402842400 28800 0 IRKT}
- {3415543200 32400 1 IRKST}
- {3434292000 28800 0 IRKT}
- {3446992800 32400 1 IRKST}
- {3465741600 28800 0 IRKT}
- {3479047200 32400 1 IRKST}
- {3497191200 28800 0 IRKT}
- {3510496800 32400 1 IRKST}
- {3528640800 28800 0 IRKT}
- {3541946400 32400 1 IRKST}
- {3560090400 28800 0 IRKT}
- {3573396000 32400 1 IRKST}
- {3592144800 28800 0 IRKT}
- {3604845600 32400 1 IRKST}
- {3623594400 28800 0 IRKT}
- {3636295200 32400 1 IRKST}
- {3655044000 28800 0 IRKT}
- {3668349600 32400 1 IRKST}
- {3686493600 28800 0 IRKT}
- {3699799200 32400 1 IRKST}
- {3717943200 28800 0 IRKT}
- {3731248800 32400 1 IRKST}
- {3749997600 28800 0 IRKT}
- {3762698400 32400 1 IRKST}
- {3781447200 28800 0 IRKT}
- {3794148000 32400 1 IRKST}
- {3812896800 28800 0 IRKT}
- {3825597600 32400 1 IRKST}
- {3844346400 28800 0 IRKT}
- {3857652000 32400 1 IRKST}
- {3875796000 28800 0 IRKT}
- {3889101600 32400 1 IRKST}
- {3907245600 28800 0 IRKT}
- {3920551200 32400 1 IRKST}
- {3939300000 28800 0 IRKT}
- {3952000800 32400 1 IRKST}
- {3970749600 28800 0 IRKT}
- {3983450400 32400 1 IRKST}
- {4002199200 28800 0 IRKT}
- {4015504800 32400 1 IRKST}
- {4033648800 28800 0 IRKT}
- {4046954400 32400 1 IRKST}
- {4065098400 28800 0 IRKT}
- {4078404000 32400 1 IRKST}
- {4096548000 28800 0 IRKT}
+ {1301162400 32400 0 IRKT}
}
diff --git a/library/tzdata/Asia/Jakarta b/library/tzdata/Asia/Jakarta
index 27033e8..75cd659 100644
--- a/library/tzdata/Asia/Jakarta
+++ b/library/tzdata/Asia/Jakarta
@@ -2,12 +2,12 @@
set TZData(:Asia/Jakarta) {
{-9223372036854775808 25632 0 LMT}
- {-3231299232 25632 0 JMT}
+ {-3231299232 25632 0 BMT}
{-1451719200 26400 0 JAVT}
- {-1172906400 27000 0 WIT}
+ {-1172906400 27000 0 WIB}
{-876641400 32400 0 JST}
- {-766054800 27000 0 WIT}
- {-683883000 28800 0 WIT}
- {-620812800 27000 0 WIT}
- {-189415800 25200 0 WIT}
+ {-766054800 27000 0 WIB}
+ {-683883000 28800 0 WIB}
+ {-620812800 27000 0 WIB}
+ {-189415800 25200 0 WIB}
}
diff --git a/library/tzdata/Asia/Jayapura b/library/tzdata/Asia/Jayapura
index 893da8b..a71228f 100644
--- a/library/tzdata/Asia/Jayapura
+++ b/library/tzdata/Asia/Jayapura
@@ -2,7 +2,7 @@
set TZData(:Asia/Jayapura) {
{-9223372036854775808 33768 0 LMT}
- {-1172913768 32400 0 EIT}
+ {-1172913768 32400 0 WIT}
{-799491600 34200 0 CST}
- {-189423000 32400 0 EIT}
+ {-189423000 32400 0 WIT}
}
diff --git a/library/tzdata/Asia/Jerusalem b/library/tzdata/Asia/Jerusalem
index 48e213d..7662680 100644
--- a/library/tzdata/Asia/Jerusalem
+++ b/library/tzdata/Asia/Jerusalem
@@ -1,8 +1,8 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Asia/Jerusalem) {
- {-9223372036854775808 8456 0 LMT}
- {-2840149256 8440 0 JMT}
+ {-9223372036854775808 8454 0 LMT}
+ {-2840149254 8440 0 JMT}
{-1641003640 7200 0 IST}
{-933645600 10800 1 IDT}
{-857358000 7200 0 IST}
@@ -96,53 +96,177 @@ set TZData(:Asia/Jerusalem) {
{1333065600 10800 1 IDT}
{1348354800 7200 0 IST}
{1364515200 10800 1 IDT}
- {1378594800 7200 0 IST}
+ {1382828400 7200 0 IST}
{1395964800 10800 1 IDT}
- {1411858800 7200 0 IST}
+ {1414278000 7200 0 IST}
{1427414400 10800 1 IDT}
- {1442703600 7200 0 IST}
- {1459468800 10800 1 IDT}
- {1475967600 7200 0 IST}
- {1490918400 10800 1 IDT}
- {1506207600 7200 0 IST}
- {1522368000 10800 1 IDT}
- {1537052400 7200 0 IST}
+ {1445727600 7200 0 IST}
+ {1458864000 10800 1 IDT}
+ {1477782000 7200 0 IST}
+ {1490313600 10800 1 IDT}
+ {1509231600 7200 0 IST}
+ {1521763200 10800 1 IDT}
+ {1540681200 7200 0 IST}
{1553817600 10800 1 IDT}
- {1570316400 7200 0 IST}
+ {1572130800 7200 0 IST}
{1585267200 10800 1 IDT}
- {1601161200 7200 0 IST}
+ {1603580400 7200 0 IST}
{1616716800 10800 1 IDT}
- {1631401200 7200 0 IST}
- {1648771200 10800 1 IDT}
- {1664665200 7200 0 IST}
- {1680220800 10800 1 IDT}
- {1695510000 7200 0 IST}
+ {1635634800 7200 0 IST}
+ {1648166400 10800 1 IDT}
+ {1667084400 7200 0 IST}
+ {1679616000 10800 1 IDT}
+ {1698534000 7200 0 IST}
{1711670400 10800 1 IDT}
- {1728169200 7200 0 IST}
+ {1729983600 7200 0 IST}
{1743120000 10800 1 IDT}
- {1759014000 7200 0 IST}
+ {1761433200 7200 0 IST}
{1774569600 10800 1 IDT}
- {1789858800 7200 0 IST}
+ {1792882800 7200 0 IST}
{1806019200 10800 1 IDT}
- {1823122800 7200 0 IST}
- {1838073600 10800 1 IDT}
- {1853362800 7200 0 IST}
- {1869523200 10800 1 IDT}
- {1884207600 7200 0 IST}
+ {1824937200 7200 0 IST}
+ {1837468800 10800 1 IDT}
+ {1856386800 7200 0 IST}
+ {1868918400 10800 1 IDT}
+ {1887836400 7200 0 IST}
{1900972800 10800 1 IDT}
- {1917471600 7200 0 IST}
+ {1919286000 7200 0 IST}
{1932422400 10800 1 IDT}
- {1947711600 7200 0 IST}
+ {1950735600 7200 0 IST}
{1963872000 10800 1 IDT}
- {1978556400 7200 0 IST}
- {1995926400 10800 1 IDT}
- {2011820400 7200 0 IST}
- {2027376000 10800 1 IDT}
- {2042060400 7200 0 IST}
- {2058825600 10800 1 IDT}
- {2075324400 7200 0 IST}
+ {1982790000 7200 0 IST}
+ {1995321600 10800 1 IDT}
+ {2014239600 7200 0 IST}
+ {2026771200 10800 1 IDT}
+ {2045689200 7200 0 IST}
+ {2058220800 10800 1 IDT}
+ {2077138800 7200 0 IST}
{2090275200 10800 1 IDT}
- {2106169200 7200 0 IST}
+ {2108588400 7200 0 IST}
{2121724800 10800 1 IDT}
- {2136409200 7200 0 IST}
+ {2140038000 7200 0 IST}
+ {2153174400 10800 1 IDT}
+ {2172092400 7200 0 IST}
+ {2184624000 10800 1 IDT}
+ {2203542000 7200 0 IST}
+ {2216073600 10800 1 IDT}
+ {2234991600 7200 0 IST}
+ {2248128000 10800 1 IDT}
+ {2266441200 7200 0 IST}
+ {2279577600 10800 1 IDT}
+ {2297890800 7200 0 IST}
+ {2311027200 10800 1 IDT}
+ {2329340400 7200 0 IST}
+ {2342476800 10800 1 IDT}
+ {2361394800 7200 0 IST}
+ {2373926400 10800 1 IDT}
+ {2392844400 7200 0 IST}
+ {2405376000 10800 1 IDT}
+ {2424294000 7200 0 IST}
+ {2437430400 10800 1 IDT}
+ {2455743600 7200 0 IST}
+ {2468880000 10800 1 IDT}
+ {2487193200 7200 0 IST}
+ {2500329600 10800 1 IDT}
+ {2519247600 7200 0 IST}
+ {2531779200 10800 1 IDT}
+ {2550697200 7200 0 IST}
+ {2563228800 10800 1 IDT}
+ {2582146800 7200 0 IST}
+ {2595283200 10800 1 IDT}
+ {2613596400 7200 0 IST}
+ {2626732800 10800 1 IDT}
+ {2645046000 7200 0 IST}
+ {2658182400 10800 1 IDT}
+ {2676495600 7200 0 IST}
+ {2689632000 10800 1 IDT}
+ {2708550000 7200 0 IST}
+ {2721081600 10800 1 IDT}
+ {2739999600 7200 0 IST}
+ {2752531200 10800 1 IDT}
+ {2771449200 7200 0 IST}
+ {2784585600 10800 1 IDT}
+ {2802898800 7200 0 IST}
+ {2816035200 10800 1 IDT}
+ {2834348400 7200 0 IST}
+ {2847484800 10800 1 IDT}
+ {2866402800 7200 0 IST}
+ {2878934400 10800 1 IDT}
+ {2897852400 7200 0 IST}
+ {2910384000 10800 1 IDT}
+ {2929302000 7200 0 IST}
+ {2941833600 10800 1 IDT}
+ {2960751600 7200 0 IST}
+ {2973888000 10800 1 IDT}
+ {2992201200 7200 0 IST}
+ {3005337600 10800 1 IDT}
+ {3023650800 7200 0 IST}
+ {3036787200 10800 1 IDT}
+ {3055705200 7200 0 IST}
+ {3068236800 10800 1 IDT}
+ {3087154800 7200 0 IST}
+ {3099686400 10800 1 IDT}
+ {3118604400 7200 0 IST}
+ {3131740800 10800 1 IDT}
+ {3150054000 7200 0 IST}
+ {3163190400 10800 1 IDT}
+ {3181503600 7200 0 IST}
+ {3194640000 10800 1 IDT}
+ {3212953200 7200 0 IST}
+ {3226089600 10800 1 IDT}
+ {3245007600 7200 0 IST}
+ {3257539200 10800 1 IDT}
+ {3276457200 7200 0 IST}
+ {3288988800 10800 1 IDT}
+ {3307906800 7200 0 IST}
+ {3321043200 10800 1 IDT}
+ {3339356400 7200 0 IST}
+ {3352492800 10800 1 IDT}
+ {3370806000 7200 0 IST}
+ {3383942400 10800 1 IDT}
+ {3402860400 7200 0 IST}
+ {3415392000 10800 1 IDT}
+ {3434310000 7200 0 IST}
+ {3446841600 10800 1 IDT}
+ {3465759600 7200 0 IST}
+ {3478896000 10800 1 IDT}
+ {3497209200 7200 0 IST}
+ {3510345600 10800 1 IDT}
+ {3528658800 7200 0 IST}
+ {3541795200 10800 1 IDT}
+ {3560108400 7200 0 IST}
+ {3573244800 10800 1 IDT}
+ {3592162800 7200 0 IST}
+ {3604694400 10800 1 IDT}
+ {3623612400 7200 0 IST}
+ {3636144000 10800 1 IDT}
+ {3655062000 7200 0 IST}
+ {3668198400 10800 1 IDT}
+ {3686511600 7200 0 IST}
+ {3699648000 10800 1 IDT}
+ {3717961200 7200 0 IST}
+ {3731097600 10800 1 IDT}
+ {3750015600 7200 0 IST}
+ {3762547200 10800 1 IDT}
+ {3781465200 7200 0 IST}
+ {3793996800 10800 1 IDT}
+ {3812914800 7200 0 IST}
+ {3825446400 10800 1 IDT}
+ {3844364400 7200 0 IST}
+ {3857500800 10800 1 IDT}
+ {3875814000 7200 0 IST}
+ {3888950400 10800 1 IDT}
+ {3907263600 7200 0 IST}
+ {3920400000 10800 1 IDT}
+ {3939318000 7200 0 IST}
+ {3951849600 10800 1 IDT}
+ {3970767600 7200 0 IST}
+ {3983299200 10800 1 IDT}
+ {4002217200 7200 0 IST}
+ {4015353600 10800 1 IDT}
+ {4033666800 7200 0 IST}
+ {4046803200 10800 1 IDT}
+ {4065116400 7200 0 IST}
+ {4078252800 10800 1 IDT}
+ {4096566000 7200 0 IST}
}
diff --git a/library/tzdata/Asia/Kamchatka b/library/tzdata/Asia/Kamchatka
index a390701..82abcfa 100644
--- a/library/tzdata/Asia/Kamchatka
+++ b/library/tzdata/Asia/Kamchatka
@@ -64,184 +64,8 @@ set TZData(:Asia/Kamchatka) {
{1224943200 43200 0 PETT}
{1238248800 46800 1 PETST}
{1256392800 43200 0 PETT}
- {1269698400 46800 1 PETST}
- {1288447200 43200 0 PETT}
- {1301148000 46800 1 PETST}
- {1319896800 43200 0 PETT}
- {1332597600 46800 1 PETST}
- {1351346400 43200 0 PETT}
- {1364652000 46800 1 PETST}
- {1382796000 43200 0 PETT}
- {1396101600 46800 1 PETST}
- {1414245600 43200 0 PETT}
- {1427551200 46800 1 PETST}
- {1445695200 43200 0 PETT}
- {1459000800 46800 1 PETST}
- {1477749600 43200 0 PETT}
- {1490450400 46800 1 PETST}
- {1509199200 43200 0 PETT}
- {1521900000 46800 1 PETST}
- {1540648800 43200 0 PETT}
- {1553954400 46800 1 PETST}
- {1572098400 43200 0 PETT}
- {1585404000 46800 1 PETST}
- {1603548000 43200 0 PETT}
- {1616853600 46800 1 PETST}
- {1635602400 43200 0 PETT}
- {1648303200 46800 1 PETST}
- {1667052000 43200 0 PETT}
- {1679752800 46800 1 PETST}
- {1698501600 43200 0 PETT}
- {1711807200 46800 1 PETST}
- {1729951200 43200 0 PETT}
- {1743256800 46800 1 PETST}
- {1761400800 43200 0 PETT}
- {1774706400 46800 1 PETST}
- {1792850400 43200 0 PETT}
- {1806156000 46800 1 PETST}
- {1824904800 43200 0 PETT}
- {1837605600 46800 1 PETST}
- {1856354400 43200 0 PETT}
- {1869055200 46800 1 PETST}
- {1887804000 43200 0 PETT}
- {1901109600 46800 1 PETST}
- {1919253600 43200 0 PETT}
- {1932559200 46800 1 PETST}
- {1950703200 43200 0 PETT}
- {1964008800 46800 1 PETST}
- {1982757600 43200 0 PETT}
- {1995458400 46800 1 PETST}
- {2014207200 43200 0 PETT}
- {2026908000 46800 1 PETST}
- {2045656800 43200 0 PETT}
- {2058357600 46800 1 PETST}
- {2077106400 43200 0 PETT}
- {2090412000 46800 1 PETST}
- {2108556000 43200 0 PETT}
- {2121861600 46800 1 PETST}
- {2140005600 43200 0 PETT}
- {2153311200 46800 1 PETST}
- {2172060000 43200 0 PETT}
- {2184760800 46800 1 PETST}
- {2203509600 43200 0 PETT}
- {2216210400 46800 1 PETST}
- {2234959200 43200 0 PETT}
- {2248264800 46800 1 PETST}
- {2266408800 43200 0 PETT}
- {2279714400 46800 1 PETST}
- {2297858400 43200 0 PETT}
- {2311164000 46800 1 PETST}
- {2329308000 43200 0 PETT}
- {2342613600 46800 1 PETST}
- {2361362400 43200 0 PETT}
- {2374063200 46800 1 PETST}
- {2392812000 43200 0 PETT}
- {2405512800 46800 1 PETST}
- {2424261600 43200 0 PETT}
- {2437567200 46800 1 PETST}
- {2455711200 43200 0 PETT}
- {2469016800 46800 1 PETST}
- {2487160800 43200 0 PETT}
- {2500466400 46800 1 PETST}
- {2519215200 43200 0 PETT}
- {2531916000 46800 1 PETST}
- {2550664800 43200 0 PETT}
- {2563365600 46800 1 PETST}
- {2582114400 43200 0 PETT}
- {2595420000 46800 1 PETST}
- {2613564000 43200 0 PETT}
- {2626869600 46800 1 PETST}
- {2645013600 43200 0 PETT}
- {2658319200 46800 1 PETST}
- {2676463200 43200 0 PETT}
- {2689768800 46800 1 PETST}
- {2708517600 43200 0 PETT}
- {2721218400 46800 1 PETST}
- {2739967200 43200 0 PETT}
- {2752668000 46800 1 PETST}
- {2771416800 43200 0 PETT}
- {2784722400 46800 1 PETST}
- {2802866400 43200 0 PETT}
- {2816172000 46800 1 PETST}
- {2834316000 43200 0 PETT}
- {2847621600 46800 1 PETST}
- {2866370400 43200 0 PETT}
- {2879071200 46800 1 PETST}
- {2897820000 43200 0 PETT}
- {2910520800 46800 1 PETST}
- {2929269600 43200 0 PETT}
- {2941970400 46800 1 PETST}
- {2960719200 43200 0 PETT}
- {2974024800 46800 1 PETST}
- {2992168800 43200 0 PETT}
- {3005474400 46800 1 PETST}
- {3023618400 43200 0 PETT}
- {3036924000 46800 1 PETST}
- {3055672800 43200 0 PETT}
- {3068373600 46800 1 PETST}
- {3087122400 43200 0 PETT}
- {3099823200 46800 1 PETST}
- {3118572000 43200 0 PETT}
- {3131877600 46800 1 PETST}
- {3150021600 43200 0 PETT}
- {3163327200 46800 1 PETST}
- {3181471200 43200 0 PETT}
- {3194776800 46800 1 PETST}
- {3212920800 43200 0 PETT}
- {3226226400 46800 1 PETST}
- {3244975200 43200 0 PETT}
- {3257676000 46800 1 PETST}
- {3276424800 43200 0 PETT}
- {3289125600 46800 1 PETST}
- {3307874400 43200 0 PETT}
- {3321180000 46800 1 PETST}
- {3339324000 43200 0 PETT}
- {3352629600 46800 1 PETST}
- {3370773600 43200 0 PETT}
- {3384079200 46800 1 PETST}
- {3402828000 43200 0 PETT}
- {3415528800 46800 1 PETST}
- {3434277600 43200 0 PETT}
- {3446978400 46800 1 PETST}
- {3465727200 43200 0 PETT}
- {3479032800 46800 1 PETST}
- {3497176800 43200 0 PETT}
- {3510482400 46800 1 PETST}
- {3528626400 43200 0 PETT}
- {3541932000 46800 1 PETST}
- {3560076000 43200 0 PETT}
- {3573381600 46800 1 PETST}
- {3592130400 43200 0 PETT}
- {3604831200 46800 1 PETST}
- {3623580000 43200 0 PETT}
- {3636280800 46800 1 PETST}
- {3655029600 43200 0 PETT}
- {3668335200 46800 1 PETST}
- {3686479200 43200 0 PETT}
- {3699784800 46800 1 PETST}
- {3717928800 43200 0 PETT}
- {3731234400 46800 1 PETST}
- {3749983200 43200 0 PETT}
- {3762684000 46800 1 PETST}
- {3781432800 43200 0 PETT}
- {3794133600 46800 1 PETST}
- {3812882400 43200 0 PETT}
- {3825583200 46800 1 PETST}
- {3844332000 43200 0 PETT}
- {3857637600 46800 1 PETST}
- {3875781600 43200 0 PETT}
- {3889087200 46800 1 PETST}
- {3907231200 43200 0 PETT}
- {3920536800 46800 1 PETST}
- {3939285600 43200 0 PETT}
- {3951986400 46800 1 PETST}
- {3970735200 43200 0 PETT}
- {3983436000 46800 1 PETST}
- {4002184800 43200 0 PETT}
- {4015490400 46800 1 PETST}
- {4033634400 43200 0 PETT}
- {4046940000 46800 1 PETST}
- {4065084000 43200 0 PETT}
- {4078389600 46800 1 PETST}
- {4096533600 43200 0 PETT}
+ {1269698400 39600 0 PETMMTT}
+ {1269702000 43200 1 PETST}
+ {1288450800 39600 0 PETT}
+ {1301151600 43200 0 PETT}
}
diff --git a/library/tzdata/Asia/Karachi b/library/tzdata/Asia/Karachi
index 9db002c..3faa31e 100644
--- a/library/tzdata/Asia/Karachi
+++ b/library/tzdata/Asia/Karachi
@@ -11,4 +11,6 @@ set TZData(:Asia/Karachi) {
{1033840860 18000 0 PKT}
{1212260400 21600 1 PKST}
{1225476000 18000 0 PKT}
+ {1239735600 21600 1 PKST}
+ {1257012000 18000 0 PKT}
}
diff --git a/library/tzdata/Asia/Kathmandu b/library/tzdata/Asia/Kathmandu
new file mode 100644
index 0000000..dbec1f0
--- /dev/null
+++ b/library/tzdata/Asia/Kathmandu
@@ -0,0 +1,7 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Kathmandu) {
+ {-9223372036854775808 20476 0 LMT}
+ {-1577943676 19800 0 IST}
+ {504901800 20700 0 NPT}
+}
diff --git a/library/tzdata/Asia/Katmandu b/library/tzdata/Asia/Katmandu
index 12f7662..2d6d060 100644
--- a/library/tzdata/Asia/Katmandu
+++ b/library/tzdata/Asia/Katmandu
@@ -1,7 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:Asia/Katmandu) {
- {-9223372036854775808 20476 0 LMT}
- {-1577943676 19800 0 IST}
- {504901800 20700 0 NPT}
+if {![info exists TZData(Asia/Kathmandu)]} {
+ LoadTimeZoneFile Asia/Kathmandu
}
+set TZData(:Asia/Katmandu) $TZData(:Asia/Kathmandu)
diff --git a/library/tzdata/Asia/Khandyga b/library/tzdata/Asia/Khandyga
new file mode 100644
index 0000000..2464b9f
--- /dev/null
+++ b/library/tzdata/Asia/Khandyga
@@ -0,0 +1,72 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Khandyga) {
+ {-9223372036854775808 32533 0 LMT}
+ {-1579424533 28800 0 YAKT}
+ {-1247558400 32400 0 YAKMMTT}
+ {354898800 36000 1 YAKST}
+ {370706400 32400 0 YAKT}
+ {386434800 36000 1 YAKST}
+ {402242400 32400 0 YAKT}
+ {417970800 36000 1 YAKST}
+ {433778400 32400 0 YAKT}
+ {449593200 36000 1 YAKST}
+ {465325200 32400 0 YAKT}
+ {481050000 36000 1 YAKST}
+ {496774800 32400 0 YAKT}
+ {512499600 36000 1 YAKST}
+ {528224400 32400 0 YAKT}
+ {543949200 36000 1 YAKST}
+ {559674000 32400 0 YAKT}
+ {575398800 36000 1 YAKST}
+ {591123600 32400 0 YAKT}
+ {606848400 36000 1 YAKST}
+ {622573200 32400 0 YAKT}
+ {638298000 36000 1 YAKST}
+ {654627600 32400 0 YAKT}
+ {670352400 28800 0 YAKMMTT}
+ {670356000 32400 1 YAKST}
+ {686080800 28800 0 YAKT}
+ {695757600 32400 0 YAKMMTT}
+ {701791200 36000 1 YAKST}
+ {717512400 32400 0 YAKT}
+ {733251600 36000 1 YAKST}
+ {748976400 32400 0 YAKT}
+ {764701200 36000 1 YAKST}
+ {780426000 32400 0 YAKT}
+ {796150800 36000 1 YAKST}
+ {811875600 32400 0 YAKT}
+ {828205200 36000 1 YAKST}
+ {846349200 32400 0 YAKT}
+ {859654800 36000 1 YAKST}
+ {877798800 32400 0 YAKT}
+ {891104400 36000 1 YAKST}
+ {909248400 32400 0 YAKT}
+ {922554000 36000 1 YAKST}
+ {941302800 32400 0 YAKT}
+ {954003600 36000 1 YAKST}
+ {972752400 32400 0 YAKT}
+ {985453200 36000 1 YAKST}
+ {1004202000 32400 0 YAKT}
+ {1017507600 36000 1 YAKST}
+ {1035651600 32400 0 YAKT}
+ {1048957200 36000 1 YAKST}
+ {1067101200 32400 0 YAKT}
+ {1072882800 36000 0 VLAMMTT}
+ {1080403200 39600 1 VLAST}
+ {1099152000 36000 0 VLAT}
+ {1111852800 39600 1 VLAST}
+ {1130601600 36000 0 VLAT}
+ {1143302400 39600 1 VLAST}
+ {1162051200 36000 0 VLAT}
+ {1174752000 39600 1 VLAST}
+ {1193500800 36000 0 VLAT}
+ {1206806400 39600 1 VLAST}
+ {1224950400 36000 0 VLAT}
+ {1238256000 39600 1 VLAST}
+ {1256400000 36000 0 VLAT}
+ {1269705600 39600 1 VLAST}
+ {1288454400 36000 0 VLAT}
+ {1301155200 39600 0 VLAT}
+ {1315832400 36000 0 YAKT}
+}
diff --git a/library/tzdata/Asia/Krasnoyarsk b/library/tzdata/Asia/Krasnoyarsk
index 24046fe..13dfeb5 100644
--- a/library/tzdata/Asia/Krasnoyarsk
+++ b/library/tzdata/Asia/Krasnoyarsk
@@ -66,182 +66,5 @@ set TZData(:Asia/Krasnoyarsk) {
{1256410800 25200 0 KRAT}
{1269716400 28800 1 KRAST}
{1288465200 25200 0 KRAT}
- {1301166000 28800 1 KRAST}
- {1319914800 25200 0 KRAT}
- {1332615600 28800 1 KRAST}
- {1351364400 25200 0 KRAT}
- {1364670000 28800 1 KRAST}
- {1382814000 25200 0 KRAT}
- {1396119600 28800 1 KRAST}
- {1414263600 25200 0 KRAT}
- {1427569200 28800 1 KRAST}
- {1445713200 25200 0 KRAT}
- {1459018800 28800 1 KRAST}
- {1477767600 25200 0 KRAT}
- {1490468400 28800 1 KRAST}
- {1509217200 25200 0 KRAT}
- {1521918000 28800 1 KRAST}
- {1540666800 25200 0 KRAT}
- {1553972400 28800 1 KRAST}
- {1572116400 25200 0 KRAT}
- {1585422000 28800 1 KRAST}
- {1603566000 25200 0 KRAT}
- {1616871600 28800 1 KRAST}
- {1635620400 25200 0 KRAT}
- {1648321200 28800 1 KRAST}
- {1667070000 25200 0 KRAT}
- {1679770800 28800 1 KRAST}
- {1698519600 25200 0 KRAT}
- {1711825200 28800 1 KRAST}
- {1729969200 25200 0 KRAT}
- {1743274800 28800 1 KRAST}
- {1761418800 25200 0 KRAT}
- {1774724400 28800 1 KRAST}
- {1792868400 25200 0 KRAT}
- {1806174000 28800 1 KRAST}
- {1824922800 25200 0 KRAT}
- {1837623600 28800 1 KRAST}
- {1856372400 25200 0 KRAT}
- {1869073200 28800 1 KRAST}
- {1887822000 25200 0 KRAT}
- {1901127600 28800 1 KRAST}
- {1919271600 25200 0 KRAT}
- {1932577200 28800 1 KRAST}
- {1950721200 25200 0 KRAT}
- {1964026800 28800 1 KRAST}
- {1982775600 25200 0 KRAT}
- {1995476400 28800 1 KRAST}
- {2014225200 25200 0 KRAT}
- {2026926000 28800 1 KRAST}
- {2045674800 25200 0 KRAT}
- {2058375600 28800 1 KRAST}
- {2077124400 25200 0 KRAT}
- {2090430000 28800 1 KRAST}
- {2108574000 25200 0 KRAT}
- {2121879600 28800 1 KRAST}
- {2140023600 25200 0 KRAT}
- {2153329200 28800 1 KRAST}
- {2172078000 25200 0 KRAT}
- {2184778800 28800 1 KRAST}
- {2203527600 25200 0 KRAT}
- {2216228400 28800 1 KRAST}
- {2234977200 25200 0 KRAT}
- {2248282800 28800 1 KRAST}
- {2266426800 25200 0 KRAT}
- {2279732400 28800 1 KRAST}
- {2297876400 25200 0 KRAT}
- {2311182000 28800 1 KRAST}
- {2329326000 25200 0 KRAT}
- {2342631600 28800 1 KRAST}
- {2361380400 25200 0 KRAT}
- {2374081200 28800 1 KRAST}
- {2392830000 25200 0 KRAT}
- {2405530800 28800 1 KRAST}
- {2424279600 25200 0 KRAT}
- {2437585200 28800 1 KRAST}
- {2455729200 25200 0 KRAT}
- {2469034800 28800 1 KRAST}
- {2487178800 25200 0 KRAT}
- {2500484400 28800 1 KRAST}
- {2519233200 25200 0 KRAT}
- {2531934000 28800 1 KRAST}
- {2550682800 25200 0 KRAT}
- {2563383600 28800 1 KRAST}
- {2582132400 25200 0 KRAT}
- {2595438000 28800 1 KRAST}
- {2613582000 25200 0 KRAT}
- {2626887600 28800 1 KRAST}
- {2645031600 25200 0 KRAT}
- {2658337200 28800 1 KRAST}
- {2676481200 25200 0 KRAT}
- {2689786800 28800 1 KRAST}
- {2708535600 25200 0 KRAT}
- {2721236400 28800 1 KRAST}
- {2739985200 25200 0 KRAT}
- {2752686000 28800 1 KRAST}
- {2771434800 25200 0 KRAT}
- {2784740400 28800 1 KRAST}
- {2802884400 25200 0 KRAT}
- {2816190000 28800 1 KRAST}
- {2834334000 25200 0 KRAT}
- {2847639600 28800 1 KRAST}
- {2866388400 25200 0 KRAT}
- {2879089200 28800 1 KRAST}
- {2897838000 25200 0 KRAT}
- {2910538800 28800 1 KRAST}
- {2929287600 25200 0 KRAT}
- {2941988400 28800 1 KRAST}
- {2960737200 25200 0 KRAT}
- {2974042800 28800 1 KRAST}
- {2992186800 25200 0 KRAT}
- {3005492400 28800 1 KRAST}
- {3023636400 25200 0 KRAT}
- {3036942000 28800 1 KRAST}
- {3055690800 25200 0 KRAT}
- {3068391600 28800 1 KRAST}
- {3087140400 25200 0 KRAT}
- {3099841200 28800 1 KRAST}
- {3118590000 25200 0 KRAT}
- {3131895600 28800 1 KRAST}
- {3150039600 25200 0 KRAT}
- {3163345200 28800 1 KRAST}
- {3181489200 25200 0 KRAT}
- {3194794800 28800 1 KRAST}
- {3212938800 25200 0 KRAT}
- {3226244400 28800 1 KRAST}
- {3244993200 25200 0 KRAT}
- {3257694000 28800 1 KRAST}
- {3276442800 25200 0 KRAT}
- {3289143600 28800 1 KRAST}
- {3307892400 25200 0 KRAT}
- {3321198000 28800 1 KRAST}
- {3339342000 25200 0 KRAT}
- {3352647600 28800 1 KRAST}
- {3370791600 25200 0 KRAT}
- {3384097200 28800 1 KRAST}
- {3402846000 25200 0 KRAT}
- {3415546800 28800 1 KRAST}
- {3434295600 25200 0 KRAT}
- {3446996400 28800 1 KRAST}
- {3465745200 25200 0 KRAT}
- {3479050800 28800 1 KRAST}
- {3497194800 25200 0 KRAT}
- {3510500400 28800 1 KRAST}
- {3528644400 25200 0 KRAT}
- {3541950000 28800 1 KRAST}
- {3560094000 25200 0 KRAT}
- {3573399600 28800 1 KRAST}
- {3592148400 25200 0 KRAT}
- {3604849200 28800 1 KRAST}
- {3623598000 25200 0 KRAT}
- {3636298800 28800 1 KRAST}
- {3655047600 25200 0 KRAT}
- {3668353200 28800 1 KRAST}
- {3686497200 25200 0 KRAT}
- {3699802800 28800 1 KRAST}
- {3717946800 25200 0 KRAT}
- {3731252400 28800 1 KRAST}
- {3750001200 25200 0 KRAT}
- {3762702000 28800 1 KRAST}
- {3781450800 25200 0 KRAT}
- {3794151600 28800 1 KRAST}
- {3812900400 25200 0 KRAT}
- {3825601200 28800 1 KRAST}
- {3844350000 25200 0 KRAT}
- {3857655600 28800 1 KRAST}
- {3875799600 25200 0 KRAT}
- {3889105200 28800 1 KRAST}
- {3907249200 25200 0 KRAT}
- {3920554800 28800 1 KRAST}
- {3939303600 25200 0 KRAT}
- {3952004400 28800 1 KRAST}
- {3970753200 25200 0 KRAT}
- {3983454000 28800 1 KRAST}
- {4002202800 25200 0 KRAT}
- {4015508400 28800 1 KRAST}
- {4033652400 25200 0 KRAT}
- {4046958000 28800 1 KRAST}
- {4065102000 25200 0 KRAT}
- {4078407600 28800 1 KRAST}
- {4096551600 25200 0 KRAT}
+ {1301166000 28800 0 KRAT}
}
diff --git a/library/tzdata/Asia/Magadan b/library/tzdata/Asia/Magadan
index 28e1f2f..62e01c5 100644
--- a/library/tzdata/Asia/Magadan
+++ b/library/tzdata/Asia/Magadan
@@ -66,182 +66,5 @@ set TZData(:Asia/Magadan) {
{1256396400 39600 0 MAGT}
{1269702000 43200 1 MAGST}
{1288450800 39600 0 MAGT}
- {1301151600 43200 1 MAGST}
- {1319900400 39600 0 MAGT}
- {1332601200 43200 1 MAGST}
- {1351350000 39600 0 MAGT}
- {1364655600 43200 1 MAGST}
- {1382799600 39600 0 MAGT}
- {1396105200 43200 1 MAGST}
- {1414249200 39600 0 MAGT}
- {1427554800 43200 1 MAGST}
- {1445698800 39600 0 MAGT}
- {1459004400 43200 1 MAGST}
- {1477753200 39600 0 MAGT}
- {1490454000 43200 1 MAGST}
- {1509202800 39600 0 MAGT}
- {1521903600 43200 1 MAGST}
- {1540652400 39600 0 MAGT}
- {1553958000 43200 1 MAGST}
- {1572102000 39600 0 MAGT}
- {1585407600 43200 1 MAGST}
- {1603551600 39600 0 MAGT}
- {1616857200 43200 1 MAGST}
- {1635606000 39600 0 MAGT}
- {1648306800 43200 1 MAGST}
- {1667055600 39600 0 MAGT}
- {1679756400 43200 1 MAGST}
- {1698505200 39600 0 MAGT}
- {1711810800 43200 1 MAGST}
- {1729954800 39600 0 MAGT}
- {1743260400 43200 1 MAGST}
- {1761404400 39600 0 MAGT}
- {1774710000 43200 1 MAGST}
- {1792854000 39600 0 MAGT}
- {1806159600 43200 1 MAGST}
- {1824908400 39600 0 MAGT}
- {1837609200 43200 1 MAGST}
- {1856358000 39600 0 MAGT}
- {1869058800 43200 1 MAGST}
- {1887807600 39600 0 MAGT}
- {1901113200 43200 1 MAGST}
- {1919257200 39600 0 MAGT}
- {1932562800 43200 1 MAGST}
- {1950706800 39600 0 MAGT}
- {1964012400 43200 1 MAGST}
- {1982761200 39600 0 MAGT}
- {1995462000 43200 1 MAGST}
- {2014210800 39600 0 MAGT}
- {2026911600 43200 1 MAGST}
- {2045660400 39600 0 MAGT}
- {2058361200 43200 1 MAGST}
- {2077110000 39600 0 MAGT}
- {2090415600 43200 1 MAGST}
- {2108559600 39600 0 MAGT}
- {2121865200 43200 1 MAGST}
- {2140009200 39600 0 MAGT}
- {2153314800 43200 1 MAGST}
- {2172063600 39600 0 MAGT}
- {2184764400 43200 1 MAGST}
- {2203513200 39600 0 MAGT}
- {2216214000 43200 1 MAGST}
- {2234962800 39600 0 MAGT}
- {2248268400 43200 1 MAGST}
- {2266412400 39600 0 MAGT}
- {2279718000 43200 1 MAGST}
- {2297862000 39600 0 MAGT}
- {2311167600 43200 1 MAGST}
- {2329311600 39600 0 MAGT}
- {2342617200 43200 1 MAGST}
- {2361366000 39600 0 MAGT}
- {2374066800 43200 1 MAGST}
- {2392815600 39600 0 MAGT}
- {2405516400 43200 1 MAGST}
- {2424265200 39600 0 MAGT}
- {2437570800 43200 1 MAGST}
- {2455714800 39600 0 MAGT}
- {2469020400 43200 1 MAGST}
- {2487164400 39600 0 MAGT}
- {2500470000 43200 1 MAGST}
- {2519218800 39600 0 MAGT}
- {2531919600 43200 1 MAGST}
- {2550668400 39600 0 MAGT}
- {2563369200 43200 1 MAGST}
- {2582118000 39600 0 MAGT}
- {2595423600 43200 1 MAGST}
- {2613567600 39600 0 MAGT}
- {2626873200 43200 1 MAGST}
- {2645017200 39600 0 MAGT}
- {2658322800 43200 1 MAGST}
- {2676466800 39600 0 MAGT}
- {2689772400 43200 1 MAGST}
- {2708521200 39600 0 MAGT}
- {2721222000 43200 1 MAGST}
- {2739970800 39600 0 MAGT}
- {2752671600 43200 1 MAGST}
- {2771420400 39600 0 MAGT}
- {2784726000 43200 1 MAGST}
- {2802870000 39600 0 MAGT}
- {2816175600 43200 1 MAGST}
- {2834319600 39600 0 MAGT}
- {2847625200 43200 1 MAGST}
- {2866374000 39600 0 MAGT}
- {2879074800 43200 1 MAGST}
- {2897823600 39600 0 MAGT}
- {2910524400 43200 1 MAGST}
- {2929273200 39600 0 MAGT}
- {2941974000 43200 1 MAGST}
- {2960722800 39600 0 MAGT}
- {2974028400 43200 1 MAGST}
- {2992172400 39600 0 MAGT}
- {3005478000 43200 1 MAGST}
- {3023622000 39600 0 MAGT}
- {3036927600 43200 1 MAGST}
- {3055676400 39600 0 MAGT}
- {3068377200 43200 1 MAGST}
- {3087126000 39600 0 MAGT}
- {3099826800 43200 1 MAGST}
- {3118575600 39600 0 MAGT}
- {3131881200 43200 1 MAGST}
- {3150025200 39600 0 MAGT}
- {3163330800 43200 1 MAGST}
- {3181474800 39600 0 MAGT}
- {3194780400 43200 1 MAGST}
- {3212924400 39600 0 MAGT}
- {3226230000 43200 1 MAGST}
- {3244978800 39600 0 MAGT}
- {3257679600 43200 1 MAGST}
- {3276428400 39600 0 MAGT}
- {3289129200 43200 1 MAGST}
- {3307878000 39600 0 MAGT}
- {3321183600 43200 1 MAGST}
- {3339327600 39600 0 MAGT}
- {3352633200 43200 1 MAGST}
- {3370777200 39600 0 MAGT}
- {3384082800 43200 1 MAGST}
- {3402831600 39600 0 MAGT}
- {3415532400 43200 1 MAGST}
- {3434281200 39600 0 MAGT}
- {3446982000 43200 1 MAGST}
- {3465730800 39600 0 MAGT}
- {3479036400 43200 1 MAGST}
- {3497180400 39600 0 MAGT}
- {3510486000 43200 1 MAGST}
- {3528630000 39600 0 MAGT}
- {3541935600 43200 1 MAGST}
- {3560079600 39600 0 MAGT}
- {3573385200 43200 1 MAGST}
- {3592134000 39600 0 MAGT}
- {3604834800 43200 1 MAGST}
- {3623583600 39600 0 MAGT}
- {3636284400 43200 1 MAGST}
- {3655033200 39600 0 MAGT}
- {3668338800 43200 1 MAGST}
- {3686482800 39600 0 MAGT}
- {3699788400 43200 1 MAGST}
- {3717932400 39600 0 MAGT}
- {3731238000 43200 1 MAGST}
- {3749986800 39600 0 MAGT}
- {3762687600 43200 1 MAGST}
- {3781436400 39600 0 MAGT}
- {3794137200 43200 1 MAGST}
- {3812886000 39600 0 MAGT}
- {3825586800 43200 1 MAGST}
- {3844335600 39600 0 MAGT}
- {3857641200 43200 1 MAGST}
- {3875785200 39600 0 MAGT}
- {3889090800 43200 1 MAGST}
- {3907234800 39600 0 MAGT}
- {3920540400 43200 1 MAGST}
- {3939289200 39600 0 MAGT}
- {3951990000 43200 1 MAGST}
- {3970738800 39600 0 MAGT}
- {3983439600 43200 1 MAGST}
- {4002188400 39600 0 MAGT}
- {4015494000 43200 1 MAGST}
- {4033638000 39600 0 MAGT}
- {4046943600 43200 1 MAGST}
- {4065087600 39600 0 MAGT}
- {4078393200 43200 1 MAGST}
- {4096537200 39600 0 MAGT}
+ {1301151600 43200 0 MAGT}
}
diff --git a/library/tzdata/Asia/Makassar b/library/tzdata/Asia/Makassar
index aa604b4..be947f3 100644
--- a/library/tzdata/Asia/Makassar
+++ b/library/tzdata/Asia/Makassar
@@ -3,7 +3,7 @@
set TZData(:Asia/Makassar) {
{-9223372036854775808 28656 0 LMT}
{-1577951856 28656 0 MMT}
- {-1172908656 28800 0 CIT}
+ {-1172908656 28800 0 WITA}
{-880272000 32400 0 JST}
- {-766054800 28800 0 CIT}
+ {-766054800 28800 0 WITA}
}
diff --git a/library/tzdata/Asia/Muscat b/library/tzdata/Asia/Muscat
index 21b5873..a69b880 100644
--- a/library/tzdata/Asia/Muscat
+++ b/library/tzdata/Asia/Muscat
@@ -1,6 +1,6 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Asia/Muscat) {
- {-9223372036854775808 14060 0 LMT}
- {-1577937260 14400 0 GST}
+ {-9223372036854775808 14064 0 LMT}
+ {-1577937264 14400 0 GST}
}
diff --git a/library/tzdata/Asia/Novokuznetsk b/library/tzdata/Asia/Novokuznetsk
new file mode 100644
index 0000000..9cd45c0
--- /dev/null
+++ b/library/tzdata/Asia/Novokuznetsk
@@ -0,0 +1,71 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Novokuznetsk) {
+ {-9223372036854775808 20928 0 NMT}
+ {-1577512128 21600 0 KRAT}
+ {-1247551200 25200 0 KRAMMTT}
+ {354906000 28800 1 KRAST}
+ {370713600 25200 0 KRAT}
+ {386442000 28800 1 KRAST}
+ {402249600 25200 0 KRAT}
+ {417978000 28800 1 KRAST}
+ {433785600 25200 0 KRAT}
+ {449600400 28800 1 KRAST}
+ {465332400 25200 0 KRAT}
+ {481057200 28800 1 KRAST}
+ {496782000 25200 0 KRAT}
+ {512506800 28800 1 KRAST}
+ {528231600 25200 0 KRAT}
+ {543956400 28800 1 KRAST}
+ {559681200 25200 0 KRAT}
+ {575406000 28800 1 KRAST}
+ {591130800 25200 0 KRAT}
+ {606855600 28800 1 KRAST}
+ {622580400 25200 0 KRAT}
+ {638305200 28800 1 KRAST}
+ {654634800 25200 0 KRAT}
+ {670359600 21600 0 KRAMMTT}
+ {670363200 25200 1 KRAST}
+ {686088000 21600 0 KRAT}
+ {695764800 25200 0 KRAMMTT}
+ {701798400 28800 1 KRAST}
+ {717519600 25200 0 KRAT}
+ {733258800 28800 1 KRAST}
+ {748983600 25200 0 KRAT}
+ {764708400 28800 1 KRAST}
+ {780433200 25200 0 KRAT}
+ {796158000 28800 1 KRAST}
+ {811882800 25200 0 KRAT}
+ {828212400 28800 1 KRAST}
+ {846356400 25200 0 KRAT}
+ {859662000 28800 1 KRAST}
+ {877806000 25200 0 KRAT}
+ {891111600 28800 1 KRAST}
+ {909255600 25200 0 KRAT}
+ {922561200 28800 1 KRAST}
+ {941310000 25200 0 KRAT}
+ {954010800 28800 1 KRAST}
+ {972759600 25200 0 KRAT}
+ {985460400 28800 1 KRAST}
+ {1004209200 25200 0 KRAT}
+ {1017514800 28800 1 KRAST}
+ {1035658800 25200 0 KRAT}
+ {1048964400 28800 1 KRAST}
+ {1067108400 25200 0 KRAT}
+ {1080414000 28800 1 KRAST}
+ {1099162800 25200 0 KRAT}
+ {1111863600 28800 1 KRAST}
+ {1130612400 25200 0 KRAT}
+ {1143313200 28800 1 KRAST}
+ {1162062000 25200 0 KRAT}
+ {1174762800 28800 1 KRAST}
+ {1193511600 25200 0 KRAT}
+ {1206817200 28800 1 KRAST}
+ {1224961200 25200 0 KRAT}
+ {1238266800 28800 1 KRAST}
+ {1256410800 25200 0 KRAT}
+ {1269716400 21600 0 NOVMMTT}
+ {1269720000 25200 1 NOVST}
+ {1288468800 21600 0 NOVT}
+ {1301169600 25200 0 NOVT}
+}
diff --git a/library/tzdata/Asia/Novosibirsk b/library/tzdata/Asia/Novosibirsk
index 0b35658..5032eec 100644
--- a/library/tzdata/Asia/Novosibirsk
+++ b/library/tzdata/Asia/Novosibirsk
@@ -67,182 +67,5 @@ set TZData(:Asia/Novosibirsk) {
{1256414400 21600 0 NOVT}
{1269720000 25200 1 NOVST}
{1288468800 21600 0 NOVT}
- {1301169600 25200 1 NOVST}
- {1319918400 21600 0 NOVT}
- {1332619200 25200 1 NOVST}
- {1351368000 21600 0 NOVT}
- {1364673600 25200 1 NOVST}
- {1382817600 21600 0 NOVT}
- {1396123200 25200 1 NOVST}
- {1414267200 21600 0 NOVT}
- {1427572800 25200 1 NOVST}
- {1445716800 21600 0 NOVT}
- {1459022400 25200 1 NOVST}
- {1477771200 21600 0 NOVT}
- {1490472000 25200 1 NOVST}
- {1509220800 21600 0 NOVT}
- {1521921600 25200 1 NOVST}
- {1540670400 21600 0 NOVT}
- {1553976000 25200 1 NOVST}
- {1572120000 21600 0 NOVT}
- {1585425600 25200 1 NOVST}
- {1603569600 21600 0 NOVT}
- {1616875200 25200 1 NOVST}
- {1635624000 21600 0 NOVT}
- {1648324800 25200 1 NOVST}
- {1667073600 21600 0 NOVT}
- {1679774400 25200 1 NOVST}
- {1698523200 21600 0 NOVT}
- {1711828800 25200 1 NOVST}
- {1729972800 21600 0 NOVT}
- {1743278400 25200 1 NOVST}
- {1761422400 21600 0 NOVT}
- {1774728000 25200 1 NOVST}
- {1792872000 21600 0 NOVT}
- {1806177600 25200 1 NOVST}
- {1824926400 21600 0 NOVT}
- {1837627200 25200 1 NOVST}
- {1856376000 21600 0 NOVT}
- {1869076800 25200 1 NOVST}
- {1887825600 21600 0 NOVT}
- {1901131200 25200 1 NOVST}
- {1919275200 21600 0 NOVT}
- {1932580800 25200 1 NOVST}
- {1950724800 21600 0 NOVT}
- {1964030400 25200 1 NOVST}
- {1982779200 21600 0 NOVT}
- {1995480000 25200 1 NOVST}
- {2014228800 21600 0 NOVT}
- {2026929600 25200 1 NOVST}
- {2045678400 21600 0 NOVT}
- {2058379200 25200 1 NOVST}
- {2077128000 21600 0 NOVT}
- {2090433600 25200 1 NOVST}
- {2108577600 21600 0 NOVT}
- {2121883200 25200 1 NOVST}
- {2140027200 21600 0 NOVT}
- {2153332800 25200 1 NOVST}
- {2172081600 21600 0 NOVT}
- {2184782400 25200 1 NOVST}
- {2203531200 21600 0 NOVT}
- {2216232000 25200 1 NOVST}
- {2234980800 21600 0 NOVT}
- {2248286400 25200 1 NOVST}
- {2266430400 21600 0 NOVT}
- {2279736000 25200 1 NOVST}
- {2297880000 21600 0 NOVT}
- {2311185600 25200 1 NOVST}
- {2329329600 21600 0 NOVT}
- {2342635200 25200 1 NOVST}
- {2361384000 21600 0 NOVT}
- {2374084800 25200 1 NOVST}
- {2392833600 21600 0 NOVT}
- {2405534400 25200 1 NOVST}
- {2424283200 21600 0 NOVT}
- {2437588800 25200 1 NOVST}
- {2455732800 21600 0 NOVT}
- {2469038400 25200 1 NOVST}
- {2487182400 21600 0 NOVT}
- {2500488000 25200 1 NOVST}
- {2519236800 21600 0 NOVT}
- {2531937600 25200 1 NOVST}
- {2550686400 21600 0 NOVT}
- {2563387200 25200 1 NOVST}
- {2582136000 21600 0 NOVT}
- {2595441600 25200 1 NOVST}
- {2613585600 21600 0 NOVT}
- {2626891200 25200 1 NOVST}
- {2645035200 21600 0 NOVT}
- {2658340800 25200 1 NOVST}
- {2676484800 21600 0 NOVT}
- {2689790400 25200 1 NOVST}
- {2708539200 21600 0 NOVT}
- {2721240000 25200 1 NOVST}
- {2739988800 21600 0 NOVT}
- {2752689600 25200 1 NOVST}
- {2771438400 21600 0 NOVT}
- {2784744000 25200 1 NOVST}
- {2802888000 21600 0 NOVT}
- {2816193600 25200 1 NOVST}
- {2834337600 21600 0 NOVT}
- {2847643200 25200 1 NOVST}
- {2866392000 21600 0 NOVT}
- {2879092800 25200 1 NOVST}
- {2897841600 21600 0 NOVT}
- {2910542400 25200 1 NOVST}
- {2929291200 21600 0 NOVT}
- {2941992000 25200 1 NOVST}
- {2960740800 21600 0 NOVT}
- {2974046400 25200 1 NOVST}
- {2992190400 21600 0 NOVT}
- {3005496000 25200 1 NOVST}
- {3023640000 21600 0 NOVT}
- {3036945600 25200 1 NOVST}
- {3055694400 21600 0 NOVT}
- {3068395200 25200 1 NOVST}
- {3087144000 21600 0 NOVT}
- {3099844800 25200 1 NOVST}
- {3118593600 21600 0 NOVT}
- {3131899200 25200 1 NOVST}
- {3150043200 21600 0 NOVT}
- {3163348800 25200 1 NOVST}
- {3181492800 21600 0 NOVT}
- {3194798400 25200 1 NOVST}
- {3212942400 21600 0 NOVT}
- {3226248000 25200 1 NOVST}
- {3244996800 21600 0 NOVT}
- {3257697600 25200 1 NOVST}
- {3276446400 21600 0 NOVT}
- {3289147200 25200 1 NOVST}
- {3307896000 21600 0 NOVT}
- {3321201600 25200 1 NOVST}
- {3339345600 21600 0 NOVT}
- {3352651200 25200 1 NOVST}
- {3370795200 21600 0 NOVT}
- {3384100800 25200 1 NOVST}
- {3402849600 21600 0 NOVT}
- {3415550400 25200 1 NOVST}
- {3434299200 21600 0 NOVT}
- {3447000000 25200 1 NOVST}
- {3465748800 21600 0 NOVT}
- {3479054400 25200 1 NOVST}
- {3497198400 21600 0 NOVT}
- {3510504000 25200 1 NOVST}
- {3528648000 21600 0 NOVT}
- {3541953600 25200 1 NOVST}
- {3560097600 21600 0 NOVT}
- {3573403200 25200 1 NOVST}
- {3592152000 21600 0 NOVT}
- {3604852800 25200 1 NOVST}
- {3623601600 21600 0 NOVT}
- {3636302400 25200 1 NOVST}
- {3655051200 21600 0 NOVT}
- {3668356800 25200 1 NOVST}
- {3686500800 21600 0 NOVT}
- {3699806400 25200 1 NOVST}
- {3717950400 21600 0 NOVT}
- {3731256000 25200 1 NOVST}
- {3750004800 21600 0 NOVT}
- {3762705600 25200 1 NOVST}
- {3781454400 21600 0 NOVT}
- {3794155200 25200 1 NOVST}
- {3812904000 21600 0 NOVT}
- {3825604800 25200 1 NOVST}
- {3844353600 21600 0 NOVT}
- {3857659200 25200 1 NOVST}
- {3875803200 21600 0 NOVT}
- {3889108800 25200 1 NOVST}
- {3907252800 21600 0 NOVT}
- {3920558400 25200 1 NOVST}
- {3939307200 21600 0 NOVT}
- {3952008000 25200 1 NOVST}
- {3970756800 21600 0 NOVT}
- {3983457600 25200 1 NOVST}
- {4002206400 21600 0 NOVT}
- {4015512000 25200 1 NOVST}
- {4033656000 21600 0 NOVT}
- {4046961600 25200 1 NOVST}
- {4065105600 21600 0 NOVT}
- {4078411200 25200 1 NOVST}
- {4096555200 21600 0 NOVT}
+ {1301169600 25200 0 NOVT}
}
diff --git a/library/tzdata/Asia/Omsk b/library/tzdata/Asia/Omsk
index 21db9c9..ca90d2e 100644
--- a/library/tzdata/Asia/Omsk
+++ b/library/tzdata/Asia/Omsk
@@ -66,182 +66,5 @@ set TZData(:Asia/Omsk) {
{1256414400 21600 0 OMST}
{1269720000 25200 1 OMSST}
{1288468800 21600 0 OMST}
- {1301169600 25200 1 OMSST}
- {1319918400 21600 0 OMST}
- {1332619200 25200 1 OMSST}
- {1351368000 21600 0 OMST}
- {1364673600 25200 1 OMSST}
- {1382817600 21600 0 OMST}
- {1396123200 25200 1 OMSST}
- {1414267200 21600 0 OMST}
- {1427572800 25200 1 OMSST}
- {1445716800 21600 0 OMST}
- {1459022400 25200 1 OMSST}
- {1477771200 21600 0 OMST}
- {1490472000 25200 1 OMSST}
- {1509220800 21600 0 OMST}
- {1521921600 25200 1 OMSST}
- {1540670400 21600 0 OMST}
- {1553976000 25200 1 OMSST}
- {1572120000 21600 0 OMST}
- {1585425600 25200 1 OMSST}
- {1603569600 21600 0 OMST}
- {1616875200 25200 1 OMSST}
- {1635624000 21600 0 OMST}
- {1648324800 25200 1 OMSST}
- {1667073600 21600 0 OMST}
- {1679774400 25200 1 OMSST}
- {1698523200 21600 0 OMST}
- {1711828800 25200 1 OMSST}
- {1729972800 21600 0 OMST}
- {1743278400 25200 1 OMSST}
- {1761422400 21600 0 OMST}
- {1774728000 25200 1 OMSST}
- {1792872000 21600 0 OMST}
- {1806177600 25200 1 OMSST}
- {1824926400 21600 0 OMST}
- {1837627200 25200 1 OMSST}
- {1856376000 21600 0 OMST}
- {1869076800 25200 1 OMSST}
- {1887825600 21600 0 OMST}
- {1901131200 25200 1 OMSST}
- {1919275200 21600 0 OMST}
- {1932580800 25200 1 OMSST}
- {1950724800 21600 0 OMST}
- {1964030400 25200 1 OMSST}
- {1982779200 21600 0 OMST}
- {1995480000 25200 1 OMSST}
- {2014228800 21600 0 OMST}
- {2026929600 25200 1 OMSST}
- {2045678400 21600 0 OMST}
- {2058379200 25200 1 OMSST}
- {2077128000 21600 0 OMST}
- {2090433600 25200 1 OMSST}
- {2108577600 21600 0 OMST}
- {2121883200 25200 1 OMSST}
- {2140027200 21600 0 OMST}
- {2153332800 25200 1 OMSST}
- {2172081600 21600 0 OMST}
- {2184782400 25200 1 OMSST}
- {2203531200 21600 0 OMST}
- {2216232000 25200 1 OMSST}
- {2234980800 21600 0 OMST}
- {2248286400 25200 1 OMSST}
- {2266430400 21600 0 OMST}
- {2279736000 25200 1 OMSST}
- {2297880000 21600 0 OMST}
- {2311185600 25200 1 OMSST}
- {2329329600 21600 0 OMST}
- {2342635200 25200 1 OMSST}
- {2361384000 21600 0 OMST}
- {2374084800 25200 1 OMSST}
- {2392833600 21600 0 OMST}
- {2405534400 25200 1 OMSST}
- {2424283200 21600 0 OMST}
- {2437588800 25200 1 OMSST}
- {2455732800 21600 0 OMST}
- {2469038400 25200 1 OMSST}
- {2487182400 21600 0 OMST}
- {2500488000 25200 1 OMSST}
- {2519236800 21600 0 OMST}
- {2531937600 25200 1 OMSST}
- {2550686400 21600 0 OMST}
- {2563387200 25200 1 OMSST}
- {2582136000 21600 0 OMST}
- {2595441600 25200 1 OMSST}
- {2613585600 21600 0 OMST}
- {2626891200 25200 1 OMSST}
- {2645035200 21600 0 OMST}
- {2658340800 25200 1 OMSST}
- {2676484800 21600 0 OMST}
- {2689790400 25200 1 OMSST}
- {2708539200 21600 0 OMST}
- {2721240000 25200 1 OMSST}
- {2739988800 21600 0 OMST}
- {2752689600 25200 1 OMSST}
- {2771438400 21600 0 OMST}
- {2784744000 25200 1 OMSST}
- {2802888000 21600 0 OMST}
- {2816193600 25200 1 OMSST}
- {2834337600 21600 0 OMST}
- {2847643200 25200 1 OMSST}
- {2866392000 21600 0 OMST}
- {2879092800 25200 1 OMSST}
- {2897841600 21600 0 OMST}
- {2910542400 25200 1 OMSST}
- {2929291200 21600 0 OMST}
- {2941992000 25200 1 OMSST}
- {2960740800 21600 0 OMST}
- {2974046400 25200 1 OMSST}
- {2992190400 21600 0 OMST}
- {3005496000 25200 1 OMSST}
- {3023640000 21600 0 OMST}
- {3036945600 25200 1 OMSST}
- {3055694400 21600 0 OMST}
- {3068395200 25200 1 OMSST}
- {3087144000 21600 0 OMST}
- {3099844800 25200 1 OMSST}
- {3118593600 21600 0 OMST}
- {3131899200 25200 1 OMSST}
- {3150043200 21600 0 OMST}
- {3163348800 25200 1 OMSST}
- {3181492800 21600 0 OMST}
- {3194798400 25200 1 OMSST}
- {3212942400 21600 0 OMST}
- {3226248000 25200 1 OMSST}
- {3244996800 21600 0 OMST}
- {3257697600 25200 1 OMSST}
- {3276446400 21600 0 OMST}
- {3289147200 25200 1 OMSST}
- {3307896000 21600 0 OMST}
- {3321201600 25200 1 OMSST}
- {3339345600 21600 0 OMST}
- {3352651200 25200 1 OMSST}
- {3370795200 21600 0 OMST}
- {3384100800 25200 1 OMSST}
- {3402849600 21600 0 OMST}
- {3415550400 25200 1 OMSST}
- {3434299200 21600 0 OMST}
- {3447000000 25200 1 OMSST}
- {3465748800 21600 0 OMST}
- {3479054400 25200 1 OMSST}
- {3497198400 21600 0 OMST}
- {3510504000 25200 1 OMSST}
- {3528648000 21600 0 OMST}
- {3541953600 25200 1 OMSST}
- {3560097600 21600 0 OMST}
- {3573403200 25200 1 OMSST}
- {3592152000 21600 0 OMST}
- {3604852800 25200 1 OMSST}
- {3623601600 21600 0 OMST}
- {3636302400 25200 1 OMSST}
- {3655051200 21600 0 OMST}
- {3668356800 25200 1 OMSST}
- {3686500800 21600 0 OMST}
- {3699806400 25200 1 OMSST}
- {3717950400 21600 0 OMST}
- {3731256000 25200 1 OMSST}
- {3750004800 21600 0 OMST}
- {3762705600 25200 1 OMSST}
- {3781454400 21600 0 OMST}
- {3794155200 25200 1 OMSST}
- {3812904000 21600 0 OMST}
- {3825604800 25200 1 OMSST}
- {3844353600 21600 0 OMST}
- {3857659200 25200 1 OMSST}
- {3875803200 21600 0 OMST}
- {3889108800 25200 1 OMSST}
- {3907252800 21600 0 OMST}
- {3920558400 25200 1 OMSST}
- {3939307200 21600 0 OMST}
- {3952008000 25200 1 OMSST}
- {3970756800 21600 0 OMST}
- {3983457600 25200 1 OMSST}
- {4002206400 21600 0 OMST}
- {4015512000 25200 1 OMSST}
- {4033656000 21600 0 OMST}
- {4046961600 25200 1 OMSST}
- {4065105600 21600 0 OMST}
- {4078411200 25200 1 OMSST}
- {4096555200 21600 0 OMST}
+ {1301169600 25200 0 OMST}
}
diff --git a/library/tzdata/Asia/Pontianak b/library/tzdata/Asia/Pontianak
index f3567dd..728b552 100644
--- a/library/tzdata/Asia/Pontianak
+++ b/library/tzdata/Asia/Pontianak
@@ -3,11 +3,11 @@
set TZData(:Asia/Pontianak) {
{-9223372036854775808 26240 0 LMT}
{-1946186240 26240 0 PMT}
- {-1172906240 27000 0 WIT}
+ {-1172906240 27000 0 WIB}
{-881220600 32400 0 JST}
- {-766054800 27000 0 WIT}
- {-683883000 28800 0 WIT}
- {-620812800 27000 0 WIT}
- {-189415800 28800 0 CIT}
- {567964800 25200 0 WIT}
+ {-766054800 27000 0 WIB}
+ {-683883000 28800 0 WIB}
+ {-620812800 27000 0 WIB}
+ {-189415800 28800 0 WITA}
+ {567964800 25200 0 WIB}
}
diff --git a/library/tzdata/Asia/Rangoon b/library/tzdata/Asia/Rangoon
index 2b8c4fa..4f3ac02 100644
--- a/library/tzdata/Asia/Rangoon
+++ b/library/tzdata/Asia/Rangoon
@@ -2,8 +2,8 @@
set TZData(:Asia/Rangoon) {
{-9223372036854775808 23080 0 LMT}
- {-2840163880 23076 0 RMT}
- {-1577946276 23400 0 BURT}
+ {-2840163880 23080 0 RMT}
+ {-1577946280 23400 0 BURT}
{-873268200 32400 0 JST}
{-778410000 23400 0 MMT}
}
diff --git a/library/tzdata/Asia/Sakhalin b/library/tzdata/Asia/Sakhalin
index 31395ab..0b29e82 100644
--- a/library/tzdata/Asia/Sakhalin
+++ b/library/tzdata/Asia/Sakhalin
@@ -68,182 +68,5 @@ set TZData(:Asia/Sakhalin) {
{1256400000 36000 0 SAKT}
{1269705600 39600 1 SAKST}
{1288454400 36000 0 SAKT}
- {1301155200 39600 1 SAKST}
- {1319904000 36000 0 SAKT}
- {1332604800 39600 1 SAKST}
- {1351353600 36000 0 SAKT}
- {1364659200 39600 1 SAKST}
- {1382803200 36000 0 SAKT}
- {1396108800 39600 1 SAKST}
- {1414252800 36000 0 SAKT}
- {1427558400 39600 1 SAKST}
- {1445702400 36000 0 SAKT}
- {1459008000 39600 1 SAKST}
- {1477756800 36000 0 SAKT}
- {1490457600 39600 1 SAKST}
- {1509206400 36000 0 SAKT}
- {1521907200 39600 1 SAKST}
- {1540656000 36000 0 SAKT}
- {1553961600 39600 1 SAKST}
- {1572105600 36000 0 SAKT}
- {1585411200 39600 1 SAKST}
- {1603555200 36000 0 SAKT}
- {1616860800 39600 1 SAKST}
- {1635609600 36000 0 SAKT}
- {1648310400 39600 1 SAKST}
- {1667059200 36000 0 SAKT}
- {1679760000 39600 1 SAKST}
- {1698508800 36000 0 SAKT}
- {1711814400 39600 1 SAKST}
- {1729958400 36000 0 SAKT}
- {1743264000 39600 1 SAKST}
- {1761408000 36000 0 SAKT}
- {1774713600 39600 1 SAKST}
- {1792857600 36000 0 SAKT}
- {1806163200 39600 1 SAKST}
- {1824912000 36000 0 SAKT}
- {1837612800 39600 1 SAKST}
- {1856361600 36000 0 SAKT}
- {1869062400 39600 1 SAKST}
- {1887811200 36000 0 SAKT}
- {1901116800 39600 1 SAKST}
- {1919260800 36000 0 SAKT}
- {1932566400 39600 1 SAKST}
- {1950710400 36000 0 SAKT}
- {1964016000 39600 1 SAKST}
- {1982764800 36000 0 SAKT}
- {1995465600 39600 1 SAKST}
- {2014214400 36000 0 SAKT}
- {2026915200 39600 1 SAKST}
- {2045664000 36000 0 SAKT}
- {2058364800 39600 1 SAKST}
- {2077113600 36000 0 SAKT}
- {2090419200 39600 1 SAKST}
- {2108563200 36000 0 SAKT}
- {2121868800 39600 1 SAKST}
- {2140012800 36000 0 SAKT}
- {2153318400 39600 1 SAKST}
- {2172067200 36000 0 SAKT}
- {2184768000 39600 1 SAKST}
- {2203516800 36000 0 SAKT}
- {2216217600 39600 1 SAKST}
- {2234966400 36000 0 SAKT}
- {2248272000 39600 1 SAKST}
- {2266416000 36000 0 SAKT}
- {2279721600 39600 1 SAKST}
- {2297865600 36000 0 SAKT}
- {2311171200 39600 1 SAKST}
- {2329315200 36000 0 SAKT}
- {2342620800 39600 1 SAKST}
- {2361369600 36000 0 SAKT}
- {2374070400 39600 1 SAKST}
- {2392819200 36000 0 SAKT}
- {2405520000 39600 1 SAKST}
- {2424268800 36000 0 SAKT}
- {2437574400 39600 1 SAKST}
- {2455718400 36000 0 SAKT}
- {2469024000 39600 1 SAKST}
- {2487168000 36000 0 SAKT}
- {2500473600 39600 1 SAKST}
- {2519222400 36000 0 SAKT}
- {2531923200 39600 1 SAKST}
- {2550672000 36000 0 SAKT}
- {2563372800 39600 1 SAKST}
- {2582121600 36000 0 SAKT}
- {2595427200 39600 1 SAKST}
- {2613571200 36000 0 SAKT}
- {2626876800 39600 1 SAKST}
- {2645020800 36000 0 SAKT}
- {2658326400 39600 1 SAKST}
- {2676470400 36000 0 SAKT}
- {2689776000 39600 1 SAKST}
- {2708524800 36000 0 SAKT}
- {2721225600 39600 1 SAKST}
- {2739974400 36000 0 SAKT}
- {2752675200 39600 1 SAKST}
- {2771424000 36000 0 SAKT}
- {2784729600 39600 1 SAKST}
- {2802873600 36000 0 SAKT}
- {2816179200 39600 1 SAKST}
- {2834323200 36000 0 SAKT}
- {2847628800 39600 1 SAKST}
- {2866377600 36000 0 SAKT}
- {2879078400 39600 1 SAKST}
- {2897827200 36000 0 SAKT}
- {2910528000 39600 1 SAKST}
- {2929276800 36000 0 SAKT}
- {2941977600 39600 1 SAKST}
- {2960726400 36000 0 SAKT}
- {2974032000 39600 1 SAKST}
- {2992176000 36000 0 SAKT}
- {3005481600 39600 1 SAKST}
- {3023625600 36000 0 SAKT}
- {3036931200 39600 1 SAKST}
- {3055680000 36000 0 SAKT}
- {3068380800 39600 1 SAKST}
- {3087129600 36000 0 SAKT}
- {3099830400 39600 1 SAKST}
- {3118579200 36000 0 SAKT}
- {3131884800 39600 1 SAKST}
- {3150028800 36000 0 SAKT}
- {3163334400 39600 1 SAKST}
- {3181478400 36000 0 SAKT}
- {3194784000 39600 1 SAKST}
- {3212928000 36000 0 SAKT}
- {3226233600 39600 1 SAKST}
- {3244982400 36000 0 SAKT}
- {3257683200 39600 1 SAKST}
- {3276432000 36000 0 SAKT}
- {3289132800 39600 1 SAKST}
- {3307881600 36000 0 SAKT}
- {3321187200 39600 1 SAKST}
- {3339331200 36000 0 SAKT}
- {3352636800 39600 1 SAKST}
- {3370780800 36000 0 SAKT}
- {3384086400 39600 1 SAKST}
- {3402835200 36000 0 SAKT}
- {3415536000 39600 1 SAKST}
- {3434284800 36000 0 SAKT}
- {3446985600 39600 1 SAKST}
- {3465734400 36000 0 SAKT}
- {3479040000 39600 1 SAKST}
- {3497184000 36000 0 SAKT}
- {3510489600 39600 1 SAKST}
- {3528633600 36000 0 SAKT}
- {3541939200 39600 1 SAKST}
- {3560083200 36000 0 SAKT}
- {3573388800 39600 1 SAKST}
- {3592137600 36000 0 SAKT}
- {3604838400 39600 1 SAKST}
- {3623587200 36000 0 SAKT}
- {3636288000 39600 1 SAKST}
- {3655036800 36000 0 SAKT}
- {3668342400 39600 1 SAKST}
- {3686486400 36000 0 SAKT}
- {3699792000 39600 1 SAKST}
- {3717936000 36000 0 SAKT}
- {3731241600 39600 1 SAKST}
- {3749990400 36000 0 SAKT}
- {3762691200 39600 1 SAKST}
- {3781440000 36000 0 SAKT}
- {3794140800 39600 1 SAKST}
- {3812889600 36000 0 SAKT}
- {3825590400 39600 1 SAKST}
- {3844339200 36000 0 SAKT}
- {3857644800 39600 1 SAKST}
- {3875788800 36000 0 SAKT}
- {3889094400 39600 1 SAKST}
- {3907238400 36000 0 SAKT}
- {3920544000 39600 1 SAKST}
- {3939292800 36000 0 SAKT}
- {3951993600 39600 1 SAKST}
- {3970742400 36000 0 SAKT}
- {3983443200 39600 1 SAKST}
- {4002192000 36000 0 SAKT}
- {4015497600 39600 1 SAKST}
- {4033641600 36000 0 SAKT}
- {4046947200 39600 1 SAKST}
- {4065091200 36000 0 SAKT}
- {4078396800 39600 1 SAKST}
- {4096540800 36000 0 SAKT}
+ {1301155200 39600 0 SAKT}
}
diff --git a/library/tzdata/Asia/Shanghai b/library/tzdata/Asia/Shanghai
index aa7dc58..4b3cc3b 100644
--- a/library/tzdata/Asia/Shanghai
+++ b/library/tzdata/Asia/Shanghai
@@ -1,8 +1,8 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Asia/Shanghai) {
- {-9223372036854775808 29152 0 LMT}
- {-1325491552 28800 0 CST}
+ {-9223372036854775808 29157 0 LMT}
+ {-1325491557 28800 0 CST}
{-933494400 32400 1 CDT}
{-923130000 28800 0 CST}
{-908784000 32400 1 CDT}
diff --git a/library/tzdata/Asia/Taipei b/library/tzdata/Asia/Taipei
index 6366b34..a3c7ecf 100644
--- a/library/tzdata/Asia/Taipei
+++ b/library/tzdata/Asia/Taipei
@@ -41,6 +41,6 @@ set TZData(:Asia/Taipei) {
{149785200 28800 0 CST}
{165513600 32400 1 CDT}
{181321200 28800 0 CST}
- {331142400 32400 1 CDT}
- {339087600 28800 0 CST}
+ {299520000 32400 1 CDT}
+ {307465200 28800 0 CST}
}
diff --git a/library/tzdata/Asia/Ust-Nera b/library/tzdata/Asia/Ust-Nera
new file mode 100644
index 0000000..c8de7a5
--- /dev/null
+++ b/library/tzdata/Asia/Ust-Nera
@@ -0,0 +1,70 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Asia/Ust-Nera) {
+ {-9223372036854775808 34374 0 LMT}
+ {-1579426374 28800 0 YAKT}
+ {354898800 43200 0 MAGST}
+ {370699200 39600 0 MAGT}
+ {386427600 43200 1 MAGST}
+ {402235200 39600 0 MAGT}
+ {417963600 43200 1 MAGST}
+ {433771200 39600 0 MAGT}
+ {449586000 43200 1 MAGST}
+ {465318000 39600 0 MAGT}
+ {481042800 43200 1 MAGST}
+ {496767600 39600 0 MAGT}
+ {512492400 43200 1 MAGST}
+ {528217200 39600 0 MAGT}
+ {543942000 43200 1 MAGST}
+ {559666800 39600 0 MAGT}
+ {575391600 43200 1 MAGST}
+ {591116400 39600 0 MAGT}
+ {606841200 43200 1 MAGST}
+ {622566000 39600 0 MAGT}
+ {638290800 43200 1 MAGST}
+ {654620400 39600 0 MAGT}
+ {670345200 36000 0 MAGMMTT}
+ {670348800 39600 1 MAGST}
+ {686073600 36000 0 MAGT}
+ {695750400 39600 0 MAGMMTT}
+ {701784000 43200 1 MAGST}
+ {717505200 39600 0 MAGT}
+ {733244400 43200 1 MAGST}
+ {748969200 39600 0 MAGT}
+ {764694000 43200 1 MAGST}
+ {780418800 39600 0 MAGT}
+ {796143600 43200 1 MAGST}
+ {811868400 39600 0 MAGT}
+ {828198000 43200 1 MAGST}
+ {846342000 39600 0 MAGT}
+ {859647600 43200 1 MAGST}
+ {877791600 39600 0 MAGT}
+ {891097200 43200 1 MAGST}
+ {909241200 39600 0 MAGT}
+ {922546800 43200 1 MAGST}
+ {941295600 39600 0 MAGT}
+ {953996400 43200 1 MAGST}
+ {972745200 39600 0 MAGT}
+ {985446000 43200 1 MAGST}
+ {1004194800 39600 0 MAGT}
+ {1017500400 43200 1 MAGST}
+ {1035644400 39600 0 MAGT}
+ {1048950000 43200 1 MAGST}
+ {1067094000 39600 0 MAGT}
+ {1080399600 43200 1 MAGST}
+ {1099148400 39600 0 MAGT}
+ {1111849200 43200 1 MAGST}
+ {1130598000 39600 0 MAGT}
+ {1143298800 43200 1 MAGST}
+ {1162047600 39600 0 MAGT}
+ {1174748400 43200 1 MAGST}
+ {1193497200 39600 0 MAGT}
+ {1206802800 43200 1 MAGST}
+ {1224946800 39600 0 MAGT}
+ {1238252400 43200 1 MAGST}
+ {1256396400 39600 0 MAGT}
+ {1269702000 43200 1 MAGST}
+ {1288450800 39600 0 MAGT}
+ {1301151600 43200 0 MAGT}
+ {1315828800 39600 0 VLAT}
+}
diff --git a/library/tzdata/Asia/Vladivostok b/library/tzdata/Asia/Vladivostok
index 29e8f62..54101a5 100644
--- a/library/tzdata/Asia/Vladivostok
+++ b/library/tzdata/Asia/Vladivostok
@@ -66,182 +66,5 @@ set TZData(:Asia/Vladivostok) {
{1256400000 36000 0 VLAT}
{1269705600 39600 1 VLAST}
{1288454400 36000 0 VLAT}
- {1301155200 39600 1 VLAST}
- {1319904000 36000 0 VLAT}
- {1332604800 39600 1 VLAST}
- {1351353600 36000 0 VLAT}
- {1364659200 39600 1 VLAST}
- {1382803200 36000 0 VLAT}
- {1396108800 39600 1 VLAST}
- {1414252800 36000 0 VLAT}
- {1427558400 39600 1 VLAST}
- {1445702400 36000 0 VLAT}
- {1459008000 39600 1 VLAST}
- {1477756800 36000 0 VLAT}
- {1490457600 39600 1 VLAST}
- {1509206400 36000 0 VLAT}
- {1521907200 39600 1 VLAST}
- {1540656000 36000 0 VLAT}
- {1553961600 39600 1 VLAST}
- {1572105600 36000 0 VLAT}
- {1585411200 39600 1 VLAST}
- {1603555200 36000 0 VLAT}
- {1616860800 39600 1 VLAST}
- {1635609600 36000 0 VLAT}
- {1648310400 39600 1 VLAST}
- {1667059200 36000 0 VLAT}
- {1679760000 39600 1 VLAST}
- {1698508800 36000 0 VLAT}
- {1711814400 39600 1 VLAST}
- {1729958400 36000 0 VLAT}
- {1743264000 39600 1 VLAST}
- {1761408000 36000 0 VLAT}
- {1774713600 39600 1 VLAST}
- {1792857600 36000 0 VLAT}
- {1806163200 39600 1 VLAST}
- {1824912000 36000 0 VLAT}
- {1837612800 39600 1 VLAST}
- {1856361600 36000 0 VLAT}
- {1869062400 39600 1 VLAST}
- {1887811200 36000 0 VLAT}
- {1901116800 39600 1 VLAST}
- {1919260800 36000 0 VLAT}
- {1932566400 39600 1 VLAST}
- {1950710400 36000 0 VLAT}
- {1964016000 39600 1 VLAST}
- {1982764800 36000 0 VLAT}
- {1995465600 39600 1 VLAST}
- {2014214400 36000 0 VLAT}
- {2026915200 39600 1 VLAST}
- {2045664000 36000 0 VLAT}
- {2058364800 39600 1 VLAST}
- {2077113600 36000 0 VLAT}
- {2090419200 39600 1 VLAST}
- {2108563200 36000 0 VLAT}
- {2121868800 39600 1 VLAST}
- {2140012800 36000 0 VLAT}
- {2153318400 39600 1 VLAST}
- {2172067200 36000 0 VLAT}
- {2184768000 39600 1 VLAST}
- {2203516800 36000 0 VLAT}
- {2216217600 39600 1 VLAST}
- {2234966400 36000 0 VLAT}
- {2248272000 39600 1 VLAST}
- {2266416000 36000 0 VLAT}
- {2279721600 39600 1 VLAST}
- {2297865600 36000 0 VLAT}
- {2311171200 39600 1 VLAST}
- {2329315200 36000 0 VLAT}
- {2342620800 39600 1 VLAST}
- {2361369600 36000 0 VLAT}
- {2374070400 39600 1 VLAST}
- {2392819200 36000 0 VLAT}
- {2405520000 39600 1 VLAST}
- {2424268800 36000 0 VLAT}
- {2437574400 39600 1 VLAST}
- {2455718400 36000 0 VLAT}
- {2469024000 39600 1 VLAST}
- {2487168000 36000 0 VLAT}
- {2500473600 39600 1 VLAST}
- {2519222400 36000 0 VLAT}
- {2531923200 39600 1 VLAST}
- {2550672000 36000 0 VLAT}
- {2563372800 39600 1 VLAST}
- {2582121600 36000 0 VLAT}
- {2595427200 39600 1 VLAST}
- {2613571200 36000 0 VLAT}
- {2626876800 39600 1 VLAST}
- {2645020800 36000 0 VLAT}
- {2658326400 39600 1 VLAST}
- {2676470400 36000 0 VLAT}
- {2689776000 39600 1 VLAST}
- {2708524800 36000 0 VLAT}
- {2721225600 39600 1 VLAST}
- {2739974400 36000 0 VLAT}
- {2752675200 39600 1 VLAST}
- {2771424000 36000 0 VLAT}
- {2784729600 39600 1 VLAST}
- {2802873600 36000 0 VLAT}
- {2816179200 39600 1 VLAST}
- {2834323200 36000 0 VLAT}
- {2847628800 39600 1 VLAST}
- {2866377600 36000 0 VLAT}
- {2879078400 39600 1 VLAST}
- {2897827200 36000 0 VLAT}
- {2910528000 39600 1 VLAST}
- {2929276800 36000 0 VLAT}
- {2941977600 39600 1 VLAST}
- {2960726400 36000 0 VLAT}
- {2974032000 39600 1 VLAST}
- {2992176000 36000 0 VLAT}
- {3005481600 39600 1 VLAST}
- {3023625600 36000 0 VLAT}
- {3036931200 39600 1 VLAST}
- {3055680000 36000 0 VLAT}
- {3068380800 39600 1 VLAST}
- {3087129600 36000 0 VLAT}
- {3099830400 39600 1 VLAST}
- {3118579200 36000 0 VLAT}
- {3131884800 39600 1 VLAST}
- {3150028800 36000 0 VLAT}
- {3163334400 39600 1 VLAST}
- {3181478400 36000 0 VLAT}
- {3194784000 39600 1 VLAST}
- {3212928000 36000 0 VLAT}
- {3226233600 39600 1 VLAST}
- {3244982400 36000 0 VLAT}
- {3257683200 39600 1 VLAST}
- {3276432000 36000 0 VLAT}
- {3289132800 39600 1 VLAST}
- {3307881600 36000 0 VLAT}
- {3321187200 39600 1 VLAST}
- {3339331200 36000 0 VLAT}
- {3352636800 39600 1 VLAST}
- {3370780800 36000 0 VLAT}
- {3384086400 39600 1 VLAST}
- {3402835200 36000 0 VLAT}
- {3415536000 39600 1 VLAST}
- {3434284800 36000 0 VLAT}
- {3446985600 39600 1 VLAST}
- {3465734400 36000 0 VLAT}
- {3479040000 39600 1 VLAST}
- {3497184000 36000 0 VLAT}
- {3510489600 39600 1 VLAST}
- {3528633600 36000 0 VLAT}
- {3541939200 39600 1 VLAST}
- {3560083200 36000 0 VLAT}
- {3573388800 39600 1 VLAST}
- {3592137600 36000 0 VLAT}
- {3604838400 39600 1 VLAST}
- {3623587200 36000 0 VLAT}
- {3636288000 39600 1 VLAST}
- {3655036800 36000 0 VLAT}
- {3668342400 39600 1 VLAST}
- {3686486400 36000 0 VLAT}
- {3699792000 39600 1 VLAST}
- {3717936000 36000 0 VLAT}
- {3731241600 39600 1 VLAST}
- {3749990400 36000 0 VLAT}
- {3762691200 39600 1 VLAST}
- {3781440000 36000 0 VLAT}
- {3794140800 39600 1 VLAST}
- {3812889600 36000 0 VLAT}
- {3825590400 39600 1 VLAST}
- {3844339200 36000 0 VLAT}
- {3857644800 39600 1 VLAST}
- {3875788800 36000 0 VLAT}
- {3889094400 39600 1 VLAST}
- {3907238400 36000 0 VLAT}
- {3920544000 39600 1 VLAST}
- {3939292800 36000 0 VLAT}
- {3951993600 39600 1 VLAST}
- {3970742400 36000 0 VLAT}
- {3983443200 39600 1 VLAST}
- {4002192000 36000 0 VLAT}
- {4015497600 39600 1 VLAST}
- {4033641600 36000 0 VLAT}
- {4046947200 39600 1 VLAST}
- {4065091200 36000 0 VLAT}
- {4078396800 39600 1 VLAST}
- {4096540800 36000 0 VLAT}
+ {1301155200 39600 0 VLAT}
}
diff --git a/library/tzdata/Asia/Yakutsk b/library/tzdata/Asia/Yakutsk
index acf5d7d..5c32cc9 100644
--- a/library/tzdata/Asia/Yakutsk
+++ b/library/tzdata/Asia/Yakutsk
@@ -66,182 +66,5 @@ set TZData(:Asia/Yakutsk) {
{1256403600 32400 0 YAKT}
{1269709200 36000 1 YAKST}
{1288458000 32400 0 YAKT}
- {1301158800 36000 1 YAKST}
- {1319907600 32400 0 YAKT}
- {1332608400 36000 1 YAKST}
- {1351357200 32400 0 YAKT}
- {1364662800 36000 1 YAKST}
- {1382806800 32400 0 YAKT}
- {1396112400 36000 1 YAKST}
- {1414256400 32400 0 YAKT}
- {1427562000 36000 1 YAKST}
- {1445706000 32400 0 YAKT}
- {1459011600 36000 1 YAKST}
- {1477760400 32400 0 YAKT}
- {1490461200 36000 1 YAKST}
- {1509210000 32400 0 YAKT}
- {1521910800 36000 1 YAKST}
- {1540659600 32400 0 YAKT}
- {1553965200 36000 1 YAKST}
- {1572109200 32400 0 YAKT}
- {1585414800 36000 1 YAKST}
- {1603558800 32400 0 YAKT}
- {1616864400 36000 1 YAKST}
- {1635613200 32400 0 YAKT}
- {1648314000 36000 1 YAKST}
- {1667062800 32400 0 YAKT}
- {1679763600 36000 1 YAKST}
- {1698512400 32400 0 YAKT}
- {1711818000 36000 1 YAKST}
- {1729962000 32400 0 YAKT}
- {1743267600 36000 1 YAKST}
- {1761411600 32400 0 YAKT}
- {1774717200 36000 1 YAKST}
- {1792861200 32400 0 YAKT}
- {1806166800 36000 1 YAKST}
- {1824915600 32400 0 YAKT}
- {1837616400 36000 1 YAKST}
- {1856365200 32400 0 YAKT}
- {1869066000 36000 1 YAKST}
- {1887814800 32400 0 YAKT}
- {1901120400 36000 1 YAKST}
- {1919264400 32400 0 YAKT}
- {1932570000 36000 1 YAKST}
- {1950714000 32400 0 YAKT}
- {1964019600 36000 1 YAKST}
- {1982768400 32400 0 YAKT}
- {1995469200 36000 1 YAKST}
- {2014218000 32400 0 YAKT}
- {2026918800 36000 1 YAKST}
- {2045667600 32400 0 YAKT}
- {2058368400 36000 1 YAKST}
- {2077117200 32400 0 YAKT}
- {2090422800 36000 1 YAKST}
- {2108566800 32400 0 YAKT}
- {2121872400 36000 1 YAKST}
- {2140016400 32400 0 YAKT}
- {2153322000 36000 1 YAKST}
- {2172070800 32400 0 YAKT}
- {2184771600 36000 1 YAKST}
- {2203520400 32400 0 YAKT}
- {2216221200 36000 1 YAKST}
- {2234970000 32400 0 YAKT}
- {2248275600 36000 1 YAKST}
- {2266419600 32400 0 YAKT}
- {2279725200 36000 1 YAKST}
- {2297869200 32400 0 YAKT}
- {2311174800 36000 1 YAKST}
- {2329318800 32400 0 YAKT}
- {2342624400 36000 1 YAKST}
- {2361373200 32400 0 YAKT}
- {2374074000 36000 1 YAKST}
- {2392822800 32400 0 YAKT}
- {2405523600 36000 1 YAKST}
- {2424272400 32400 0 YAKT}
- {2437578000 36000 1 YAKST}
- {2455722000 32400 0 YAKT}
- {2469027600 36000 1 YAKST}
- {2487171600 32400 0 YAKT}
- {2500477200 36000 1 YAKST}
- {2519226000 32400 0 YAKT}
- {2531926800 36000 1 YAKST}
- {2550675600 32400 0 YAKT}
- {2563376400 36000 1 YAKST}
- {2582125200 32400 0 YAKT}
- {2595430800 36000 1 YAKST}
- {2613574800 32400 0 YAKT}
- {2626880400 36000 1 YAKST}
- {2645024400 32400 0 YAKT}
- {2658330000 36000 1 YAKST}
- {2676474000 32400 0 YAKT}
- {2689779600 36000 1 YAKST}
- {2708528400 32400 0 YAKT}
- {2721229200 36000 1 YAKST}
- {2739978000 32400 0 YAKT}
- {2752678800 36000 1 YAKST}
- {2771427600 32400 0 YAKT}
- {2784733200 36000 1 YAKST}
- {2802877200 32400 0 YAKT}
- {2816182800 36000 1 YAKST}
- {2834326800 32400 0 YAKT}
- {2847632400 36000 1 YAKST}
- {2866381200 32400 0 YAKT}
- {2879082000 36000 1 YAKST}
- {2897830800 32400 0 YAKT}
- {2910531600 36000 1 YAKST}
- {2929280400 32400 0 YAKT}
- {2941981200 36000 1 YAKST}
- {2960730000 32400 0 YAKT}
- {2974035600 36000 1 YAKST}
- {2992179600 32400 0 YAKT}
- {3005485200 36000 1 YAKST}
- {3023629200 32400 0 YAKT}
- {3036934800 36000 1 YAKST}
- {3055683600 32400 0 YAKT}
- {3068384400 36000 1 YAKST}
- {3087133200 32400 0 YAKT}
- {3099834000 36000 1 YAKST}
- {3118582800 32400 0 YAKT}
- {3131888400 36000 1 YAKST}
- {3150032400 32400 0 YAKT}
- {3163338000 36000 1 YAKST}
- {3181482000 32400 0 YAKT}
- {3194787600 36000 1 YAKST}
- {3212931600 32400 0 YAKT}
- {3226237200 36000 1 YAKST}
- {3244986000 32400 0 YAKT}
- {3257686800 36000 1 YAKST}
- {3276435600 32400 0 YAKT}
- {3289136400 36000 1 YAKST}
- {3307885200 32400 0 YAKT}
- {3321190800 36000 1 YAKST}
- {3339334800 32400 0 YAKT}
- {3352640400 36000 1 YAKST}
- {3370784400 32400 0 YAKT}
- {3384090000 36000 1 YAKST}
- {3402838800 32400 0 YAKT}
- {3415539600 36000 1 YAKST}
- {3434288400 32400 0 YAKT}
- {3446989200 36000 1 YAKST}
- {3465738000 32400 0 YAKT}
- {3479043600 36000 1 YAKST}
- {3497187600 32400 0 YAKT}
- {3510493200 36000 1 YAKST}
- {3528637200 32400 0 YAKT}
- {3541942800 36000 1 YAKST}
- {3560086800 32400 0 YAKT}
- {3573392400 36000 1 YAKST}
- {3592141200 32400 0 YAKT}
- {3604842000 36000 1 YAKST}
- {3623590800 32400 0 YAKT}
- {3636291600 36000 1 YAKST}
- {3655040400 32400 0 YAKT}
- {3668346000 36000 1 YAKST}
- {3686490000 32400 0 YAKT}
- {3699795600 36000 1 YAKST}
- {3717939600 32400 0 YAKT}
- {3731245200 36000 1 YAKST}
- {3749994000 32400 0 YAKT}
- {3762694800 36000 1 YAKST}
- {3781443600 32400 0 YAKT}
- {3794144400 36000 1 YAKST}
- {3812893200 32400 0 YAKT}
- {3825594000 36000 1 YAKST}
- {3844342800 32400 0 YAKT}
- {3857648400 36000 1 YAKST}
- {3875792400 32400 0 YAKT}
- {3889098000 36000 1 YAKST}
- {3907242000 32400 0 YAKT}
- {3920547600 36000 1 YAKST}
- {3939296400 32400 0 YAKT}
- {3951997200 36000 1 YAKST}
- {3970746000 32400 0 YAKT}
- {3983446800 36000 1 YAKST}
- {4002195600 32400 0 YAKT}
- {4015501200 36000 1 YAKST}
- {4033645200 32400 0 YAKT}
- {4046950800 36000 1 YAKST}
- {4065094800 32400 0 YAKT}
- {4078400400 36000 1 YAKST}
- {4096544400 32400 0 YAKT}
+ {1301158800 36000 0 YAKT}
}
diff --git a/library/tzdata/Asia/Yekaterinburg b/library/tzdata/Asia/Yekaterinburg
index 980f903..2045496 100644
--- a/library/tzdata/Asia/Yekaterinburg
+++ b/library/tzdata/Asia/Yekaterinburg
@@ -66,182 +66,5 @@ set TZData(:Asia/Yekaterinburg) {
{1256418000 18000 0 YEKT}
{1269723600 21600 1 YEKST}
{1288472400 18000 0 YEKT}
- {1301173200 21600 1 YEKST}
- {1319922000 18000 0 YEKT}
- {1332622800 21600 1 YEKST}
- {1351371600 18000 0 YEKT}
- {1364677200 21600 1 YEKST}
- {1382821200 18000 0 YEKT}
- {1396126800 21600 1 YEKST}
- {1414270800 18000 0 YEKT}
- {1427576400 21600 1 YEKST}
- {1445720400 18000 0 YEKT}
- {1459026000 21600 1 YEKST}
- {1477774800 18000 0 YEKT}
- {1490475600 21600 1 YEKST}
- {1509224400 18000 0 YEKT}
- {1521925200 21600 1 YEKST}
- {1540674000 18000 0 YEKT}
- {1553979600 21600 1 YEKST}
- {1572123600 18000 0 YEKT}
- {1585429200 21600 1 YEKST}
- {1603573200 18000 0 YEKT}
- {1616878800 21600 1 YEKST}
- {1635627600 18000 0 YEKT}
- {1648328400 21600 1 YEKST}
- {1667077200 18000 0 YEKT}
- {1679778000 21600 1 YEKST}
- {1698526800 18000 0 YEKT}
- {1711832400 21600 1 YEKST}
- {1729976400 18000 0 YEKT}
- {1743282000 21600 1 YEKST}
- {1761426000 18000 0 YEKT}
- {1774731600 21600 1 YEKST}
- {1792875600 18000 0 YEKT}
- {1806181200 21600 1 YEKST}
- {1824930000 18000 0 YEKT}
- {1837630800 21600 1 YEKST}
- {1856379600 18000 0 YEKT}
- {1869080400 21600 1 YEKST}
- {1887829200 18000 0 YEKT}
- {1901134800 21600 1 YEKST}
- {1919278800 18000 0 YEKT}
- {1932584400 21600 1 YEKST}
- {1950728400 18000 0 YEKT}
- {1964034000 21600 1 YEKST}
- {1982782800 18000 0 YEKT}
- {1995483600 21600 1 YEKST}
- {2014232400 18000 0 YEKT}
- {2026933200 21600 1 YEKST}
- {2045682000 18000 0 YEKT}
- {2058382800 21600 1 YEKST}
- {2077131600 18000 0 YEKT}
- {2090437200 21600 1 YEKST}
- {2108581200 18000 0 YEKT}
- {2121886800 21600 1 YEKST}
- {2140030800 18000 0 YEKT}
- {2153336400 21600 1 YEKST}
- {2172085200 18000 0 YEKT}
- {2184786000 21600 1 YEKST}
- {2203534800 18000 0 YEKT}
- {2216235600 21600 1 YEKST}
- {2234984400 18000 0 YEKT}
- {2248290000 21600 1 YEKST}
- {2266434000 18000 0 YEKT}
- {2279739600 21600 1 YEKST}
- {2297883600 18000 0 YEKT}
- {2311189200 21600 1 YEKST}
- {2329333200 18000 0 YEKT}
- {2342638800 21600 1 YEKST}
- {2361387600 18000 0 YEKT}
- {2374088400 21600 1 YEKST}
- {2392837200 18000 0 YEKT}
- {2405538000 21600 1 YEKST}
- {2424286800 18000 0 YEKT}
- {2437592400 21600 1 YEKST}
- {2455736400 18000 0 YEKT}
- {2469042000 21600 1 YEKST}
- {2487186000 18000 0 YEKT}
- {2500491600 21600 1 YEKST}
- {2519240400 18000 0 YEKT}
- {2531941200 21600 1 YEKST}
- {2550690000 18000 0 YEKT}
- {2563390800 21600 1 YEKST}
- {2582139600 18000 0 YEKT}
- {2595445200 21600 1 YEKST}
- {2613589200 18000 0 YEKT}
- {2626894800 21600 1 YEKST}
- {2645038800 18000 0 YEKT}
- {2658344400 21600 1 YEKST}
- {2676488400 18000 0 YEKT}
- {2689794000 21600 1 YEKST}
- {2708542800 18000 0 YEKT}
- {2721243600 21600 1 YEKST}
- {2739992400 18000 0 YEKT}
- {2752693200 21600 1 YEKST}
- {2771442000 18000 0 YEKT}
- {2784747600 21600 1 YEKST}
- {2802891600 18000 0 YEKT}
- {2816197200 21600 1 YEKST}
- {2834341200 18000 0 YEKT}
- {2847646800 21600 1 YEKST}
- {2866395600 18000 0 YEKT}
- {2879096400 21600 1 YEKST}
- {2897845200 18000 0 YEKT}
- {2910546000 21600 1 YEKST}
- {2929294800 18000 0 YEKT}
- {2941995600 21600 1 YEKST}
- {2960744400 18000 0 YEKT}
- {2974050000 21600 1 YEKST}
- {2992194000 18000 0 YEKT}
- {3005499600 21600 1 YEKST}
- {3023643600 18000 0 YEKT}
- {3036949200 21600 1 YEKST}
- {3055698000 18000 0 YEKT}
- {3068398800 21600 1 YEKST}
- {3087147600 18000 0 YEKT}
- {3099848400 21600 1 YEKST}
- {3118597200 18000 0 YEKT}
- {3131902800 21600 1 YEKST}
- {3150046800 18000 0 YEKT}
- {3163352400 21600 1 YEKST}
- {3181496400 18000 0 YEKT}
- {3194802000 21600 1 YEKST}
- {3212946000 18000 0 YEKT}
- {3226251600 21600 1 YEKST}
- {3245000400 18000 0 YEKT}
- {3257701200 21600 1 YEKST}
- {3276450000 18000 0 YEKT}
- {3289150800 21600 1 YEKST}
- {3307899600 18000 0 YEKT}
- {3321205200 21600 1 YEKST}
- {3339349200 18000 0 YEKT}
- {3352654800 21600 1 YEKST}
- {3370798800 18000 0 YEKT}
- {3384104400 21600 1 YEKST}
- {3402853200 18000 0 YEKT}
- {3415554000 21600 1 YEKST}
- {3434302800 18000 0 YEKT}
- {3447003600 21600 1 YEKST}
- {3465752400 18000 0 YEKT}
- {3479058000 21600 1 YEKST}
- {3497202000 18000 0 YEKT}
- {3510507600 21600 1 YEKST}
- {3528651600 18000 0 YEKT}
- {3541957200 21600 1 YEKST}
- {3560101200 18000 0 YEKT}
- {3573406800 21600 1 YEKST}
- {3592155600 18000 0 YEKT}
- {3604856400 21600 1 YEKST}
- {3623605200 18000 0 YEKT}
- {3636306000 21600 1 YEKST}
- {3655054800 18000 0 YEKT}
- {3668360400 21600 1 YEKST}
- {3686504400 18000 0 YEKT}
- {3699810000 21600 1 YEKST}
- {3717954000 18000 0 YEKT}
- {3731259600 21600 1 YEKST}
- {3750008400 18000 0 YEKT}
- {3762709200 21600 1 YEKST}
- {3781458000 18000 0 YEKT}
- {3794158800 21600 1 YEKST}
- {3812907600 18000 0 YEKT}
- {3825608400 21600 1 YEKST}
- {3844357200 18000 0 YEKT}
- {3857662800 21600 1 YEKST}
- {3875806800 18000 0 YEKT}
- {3889112400 21600 1 YEKST}
- {3907256400 18000 0 YEKT}
- {3920562000 21600 1 YEKST}
- {3939310800 18000 0 YEKT}
- {3952011600 21600 1 YEKST}
- {3970760400 18000 0 YEKT}
- {3983461200 21600 1 YEKST}
- {4002210000 18000 0 YEKT}
- {4015515600 21600 1 YEKST}
- {4033659600 18000 0 YEKT}
- {4046965200 21600 1 YEKST}
- {4065109200 18000 0 YEKT}
- {4078414800 21600 1 YEKST}
- {4096558800 18000 0 YEKT}
+ {1301173200 21600 0 YEKT}
}
diff --git a/library/tzdata/Asia/Yerevan b/library/tzdata/Asia/Yerevan
index cd70b4f..22008ef 100644
--- a/library/tzdata/Asia/Yerevan
+++ b/library/tzdata/Asia/Yerevan
@@ -66,180 +66,5 @@ set TZData(:Asia/Yerevan) {
{1288476000 14400 0 AMT}
{1301176800 18000 1 AMST}
{1319925600 14400 0 AMT}
- {1332626400 18000 1 AMST}
- {1351375200 14400 0 AMT}
- {1364680800 18000 1 AMST}
- {1382824800 14400 0 AMT}
- {1396130400 18000 1 AMST}
- {1414274400 14400 0 AMT}
- {1427580000 18000 1 AMST}
- {1445724000 14400 0 AMT}
- {1459029600 18000 1 AMST}
- {1477778400 14400 0 AMT}
- {1490479200 18000 1 AMST}
- {1509228000 14400 0 AMT}
- {1521928800 18000 1 AMST}
- {1540677600 14400 0 AMT}
- {1553983200 18000 1 AMST}
- {1572127200 14400 0 AMT}
- {1585432800 18000 1 AMST}
- {1603576800 14400 0 AMT}
- {1616882400 18000 1 AMST}
- {1635631200 14400 0 AMT}
- {1648332000 18000 1 AMST}
- {1667080800 14400 0 AMT}
- {1679781600 18000 1 AMST}
- {1698530400 14400 0 AMT}
- {1711836000 18000 1 AMST}
- {1729980000 14400 0 AMT}
- {1743285600 18000 1 AMST}
- {1761429600 14400 0 AMT}
- {1774735200 18000 1 AMST}
- {1792879200 14400 0 AMT}
- {1806184800 18000 1 AMST}
- {1824933600 14400 0 AMT}
- {1837634400 18000 1 AMST}
- {1856383200 14400 0 AMT}
- {1869084000 18000 1 AMST}
- {1887832800 14400 0 AMT}
- {1901138400 18000 1 AMST}
- {1919282400 14400 0 AMT}
- {1932588000 18000 1 AMST}
- {1950732000 14400 0 AMT}
- {1964037600 18000 1 AMST}
- {1982786400 14400 0 AMT}
- {1995487200 18000 1 AMST}
- {2014236000 14400 0 AMT}
- {2026936800 18000 1 AMST}
- {2045685600 14400 0 AMT}
- {2058386400 18000 1 AMST}
- {2077135200 14400 0 AMT}
- {2090440800 18000 1 AMST}
- {2108584800 14400 0 AMT}
- {2121890400 18000 1 AMST}
- {2140034400 14400 0 AMT}
- {2153340000 18000 1 AMST}
- {2172088800 14400 0 AMT}
- {2184789600 18000 1 AMST}
- {2203538400 14400 0 AMT}
- {2216239200 18000 1 AMST}
- {2234988000 14400 0 AMT}
- {2248293600 18000 1 AMST}
- {2266437600 14400 0 AMT}
- {2279743200 18000 1 AMST}
- {2297887200 14400 0 AMT}
- {2311192800 18000 1 AMST}
- {2329336800 14400 0 AMT}
- {2342642400 18000 1 AMST}
- {2361391200 14400 0 AMT}
- {2374092000 18000 1 AMST}
- {2392840800 14400 0 AMT}
- {2405541600 18000 1 AMST}
- {2424290400 14400 0 AMT}
- {2437596000 18000 1 AMST}
- {2455740000 14400 0 AMT}
- {2469045600 18000 1 AMST}
- {2487189600 14400 0 AMT}
- {2500495200 18000 1 AMST}
- {2519244000 14400 0 AMT}
- {2531944800 18000 1 AMST}
- {2550693600 14400 0 AMT}
- {2563394400 18000 1 AMST}
- {2582143200 14400 0 AMT}
- {2595448800 18000 1 AMST}
- {2613592800 14400 0 AMT}
- {2626898400 18000 1 AMST}
- {2645042400 14400 0 AMT}
- {2658348000 18000 1 AMST}
- {2676492000 14400 0 AMT}
- {2689797600 18000 1 AMST}
- {2708546400 14400 0 AMT}
- {2721247200 18000 1 AMST}
- {2739996000 14400 0 AMT}
- {2752696800 18000 1 AMST}
- {2771445600 14400 0 AMT}
- {2784751200 18000 1 AMST}
- {2802895200 14400 0 AMT}
- {2816200800 18000 1 AMST}
- {2834344800 14400 0 AMT}
- {2847650400 18000 1 AMST}
- {2866399200 14400 0 AMT}
- {2879100000 18000 1 AMST}
- {2897848800 14400 0 AMT}
- {2910549600 18000 1 AMST}
- {2929298400 14400 0 AMT}
- {2941999200 18000 1 AMST}
- {2960748000 14400 0 AMT}
- {2974053600 18000 1 AMST}
- {2992197600 14400 0 AMT}
- {3005503200 18000 1 AMST}
- {3023647200 14400 0 AMT}
- {3036952800 18000 1 AMST}
- {3055701600 14400 0 AMT}
- {3068402400 18000 1 AMST}
- {3087151200 14400 0 AMT}
- {3099852000 18000 1 AMST}
- {3118600800 14400 0 AMT}
- {3131906400 18000 1 AMST}
- {3150050400 14400 0 AMT}
- {3163356000 18000 1 AMST}
- {3181500000 14400 0 AMT}
- {3194805600 18000 1 AMST}
- {3212949600 14400 0 AMT}
- {3226255200 18000 1 AMST}
- {3245004000 14400 0 AMT}
- {3257704800 18000 1 AMST}
- {3276453600 14400 0 AMT}
- {3289154400 18000 1 AMST}
- {3307903200 14400 0 AMT}
- {3321208800 18000 1 AMST}
- {3339352800 14400 0 AMT}
- {3352658400 18000 1 AMST}
- {3370802400 14400 0 AMT}
- {3384108000 18000 1 AMST}
- {3402856800 14400 0 AMT}
- {3415557600 18000 1 AMST}
- {3434306400 14400 0 AMT}
- {3447007200 18000 1 AMST}
- {3465756000 14400 0 AMT}
- {3479061600 18000 1 AMST}
- {3497205600 14400 0 AMT}
- {3510511200 18000 1 AMST}
- {3528655200 14400 0 AMT}
- {3541960800 18000 1 AMST}
- {3560104800 14400 0 AMT}
- {3573410400 18000 1 AMST}
- {3592159200 14400 0 AMT}
- {3604860000 18000 1 AMST}
- {3623608800 14400 0 AMT}
- {3636309600 18000 1 AMST}
- {3655058400 14400 0 AMT}
- {3668364000 18000 1 AMST}
- {3686508000 14400 0 AMT}
- {3699813600 18000 1 AMST}
- {3717957600 14400 0 AMT}
- {3731263200 18000 1 AMST}
- {3750012000 14400 0 AMT}
- {3762712800 18000 1 AMST}
- {3781461600 14400 0 AMT}
- {3794162400 18000 1 AMST}
- {3812911200 14400 0 AMT}
- {3825612000 18000 1 AMST}
- {3844360800 14400 0 AMT}
- {3857666400 18000 1 AMST}
- {3875810400 14400 0 AMT}
- {3889116000 18000 1 AMST}
- {3907260000 14400 0 AMT}
- {3920565600 18000 1 AMST}
- {3939314400 14400 0 AMT}
- {3952015200 18000 1 AMST}
- {3970764000 14400 0 AMT}
- {3983464800 18000 1 AMST}
- {4002213600 14400 0 AMT}
- {4015519200 18000 1 AMST}
- {4033663200 14400 0 AMT}
- {4046968800 18000 1 AMST}
- {4065112800 14400 0 AMT}
- {4078418400 18000 1 AMST}
- {4096562400 14400 0 AMT}
+ {1332626400 14400 0 AMT}
}
diff --git a/library/tzdata/Atlantic/Bermuda b/library/tzdata/Atlantic/Bermuda
index e8b165a..2d4d983 100644
--- a/library/tzdata/Atlantic/Bermuda
+++ b/library/tzdata/Atlantic/Bermuda
@@ -1,8 +1,8 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Atlantic/Bermuda) {
- {-9223372036854775808 -15544 0 LMT}
- {-1262281256 -14400 0 AST}
+ {-9223372036854775808 -15558 0 LMT}
+ {-1262281242 -14400 0 AST}
{136360800 -10800 0 ADT}
{152082000 -14400 0 AST}
{167810400 -10800 1 ADT}
diff --git a/library/tzdata/Atlantic/Faroe b/library/tzdata/Atlantic/Faroe
index d2c314a..d2c314a 100755..100644
--- a/library/tzdata/Atlantic/Faroe
+++ b/library/tzdata/Atlantic/Faroe
diff --git a/library/tzdata/Atlantic/Stanley b/library/tzdata/Atlantic/Stanley
index 70dc402..c287238 100644
--- a/library/tzdata/Atlantic/Stanley
+++ b/library/tzdata/Atlantic/Stanley
@@ -71,183 +71,5 @@ set TZData(:Atlantic/Stanley) {
{1240117200 -14400 0 FKT}
{1252216800 -10800 1 FKST}
{1271566800 -14400 0 FKT}
- {1283666400 -10800 1 FKST}
- {1303016400 -14400 0 FKT}
- {1315116000 -10800 1 FKST}
- {1334466000 -14400 0 FKT}
- {1346565600 -10800 1 FKST}
- {1366520400 -14400 0 FKT}
- {1378015200 -10800 1 FKST}
- {1397970000 -14400 0 FKT}
- {1410069600 -10800 1 FKST}
- {1429419600 -14400 0 FKT}
- {1441519200 -10800 1 FKST}
- {1460869200 -14400 0 FKT}
- {1472968800 -10800 1 FKST}
- {1492318800 -14400 0 FKT}
- {1504418400 -10800 1 FKST}
- {1523768400 -14400 0 FKT}
- {1535868000 -10800 1 FKST}
- {1555822800 -14400 0 FKT}
- {1567317600 -10800 1 FKST}
- {1587272400 -14400 0 FKT}
- {1599372000 -10800 1 FKST}
- {1618722000 -14400 0 FKT}
- {1630821600 -10800 1 FKST}
- {1650171600 -14400 0 FKT}
- {1662271200 -10800 1 FKST}
- {1681621200 -14400 0 FKT}
- {1693720800 -10800 1 FKST}
- {1713675600 -14400 0 FKT}
- {1725170400 -10800 1 FKST}
- {1745125200 -14400 0 FKT}
- {1757224800 -10800 1 FKST}
- {1776574800 -14400 0 FKT}
- {1788674400 -10800 1 FKST}
- {1808024400 -14400 0 FKT}
- {1820124000 -10800 1 FKST}
- {1839474000 -14400 0 FKT}
- {1851573600 -10800 1 FKST}
- {1870923600 -14400 0 FKT}
- {1883023200 -10800 1 FKST}
- {1902978000 -14400 0 FKT}
- {1914472800 -10800 1 FKST}
- {1934427600 -14400 0 FKT}
- {1946527200 -10800 1 FKST}
- {1965877200 -14400 0 FKT}
- {1977976800 -10800 1 FKST}
- {1997326800 -14400 0 FKT}
- {2009426400 -10800 1 FKST}
- {2028776400 -14400 0 FKT}
- {2040876000 -10800 1 FKST}
- {2060226000 -14400 0 FKT}
- {2072325600 -10800 1 FKST}
- {2092280400 -14400 0 FKT}
- {2104380000 -10800 1 FKST}
- {2123730000 -14400 0 FKT}
- {2135829600 -10800 1 FKST}
- {2155179600 -14400 0 FKT}
- {2167279200 -10800 1 FKST}
- {2186629200 -14400 0 FKT}
- {2198728800 -10800 1 FKST}
- {2218078800 -14400 0 FKT}
- {2230178400 -10800 1 FKST}
- {2250133200 -14400 0 FKT}
- {2261628000 -10800 1 FKST}
- {2281582800 -14400 0 FKT}
- {2293682400 -10800 1 FKST}
- {2313032400 -14400 0 FKT}
- {2325132000 -10800 1 FKST}
- {2344482000 -14400 0 FKT}
- {2356581600 -10800 1 FKST}
- {2375931600 -14400 0 FKT}
- {2388031200 -10800 1 FKST}
- {2407381200 -14400 0 FKT}
- {2419480800 -10800 1 FKST}
- {2439435600 -14400 0 FKT}
- {2450930400 -10800 1 FKST}
- {2470885200 -14400 0 FKT}
- {2482984800 -10800 1 FKST}
- {2502334800 -14400 0 FKT}
- {2514434400 -10800 1 FKST}
- {2533784400 -14400 0 FKT}
- {2545884000 -10800 1 FKST}
- {2565234000 -14400 0 FKT}
- {2577333600 -10800 1 FKST}
- {2597288400 -14400 0 FKT}
- {2608783200 -10800 1 FKST}
- {2628738000 -14400 0 FKT}
- {2640837600 -10800 1 FKST}
- {2660187600 -14400 0 FKT}
- {2672287200 -10800 1 FKST}
- {2691637200 -14400 0 FKT}
- {2703736800 -10800 1 FKST}
- {2723086800 -14400 0 FKT}
- {2735186400 -10800 1 FKST}
- {2754536400 -14400 0 FKT}
- {2766636000 -10800 1 FKST}
- {2786590800 -14400 0 FKT}
- {2798085600 -10800 1 FKST}
- {2818040400 -14400 0 FKT}
- {2830140000 -10800 1 FKST}
- {2849490000 -14400 0 FKT}
- {2861589600 -10800 1 FKST}
- {2880939600 -14400 0 FKT}
- {2893039200 -10800 1 FKST}
- {2912389200 -14400 0 FKT}
- {2924488800 -10800 1 FKST}
- {2943838800 -14400 0 FKT}
- {2955938400 -10800 1 FKST}
- {2975893200 -14400 0 FKT}
- {2987992800 -10800 1 FKST}
- {3007342800 -14400 0 FKT}
- {3019442400 -10800 1 FKST}
- {3038792400 -14400 0 FKT}
- {3050892000 -10800 1 FKST}
- {3070242000 -14400 0 FKT}
- {3082341600 -10800 1 FKST}
- {3101691600 -14400 0 FKT}
- {3113791200 -10800 1 FKST}
- {3133746000 -14400 0 FKT}
- {3145240800 -10800 1 FKST}
- {3165195600 -14400 0 FKT}
- {3177295200 -10800 1 FKST}
- {3196645200 -14400 0 FKT}
- {3208744800 -10800 1 FKST}
- {3228094800 -14400 0 FKT}
- {3240194400 -10800 1 FKST}
- {3259544400 -14400 0 FKT}
- {3271644000 -10800 1 FKST}
- {3290994000 -14400 0 FKT}
- {3303093600 -10800 1 FKST}
- {3323048400 -14400 0 FKT}
- {3334543200 -10800 1 FKST}
- {3354498000 -14400 0 FKT}
- {3366597600 -10800 1 FKST}
- {3385947600 -14400 0 FKT}
- {3398047200 -10800 1 FKST}
- {3417397200 -14400 0 FKT}
- {3429496800 -10800 1 FKST}
- {3448846800 -14400 0 FKT}
- {3460946400 -10800 1 FKST}
- {3480901200 -14400 0 FKT}
- {3492396000 -10800 1 FKST}
- {3512350800 -14400 0 FKT}
- {3524450400 -10800 1 FKST}
- {3543800400 -14400 0 FKT}
- {3555900000 -10800 1 FKST}
- {3575250000 -14400 0 FKT}
- {3587349600 -10800 1 FKST}
- {3606699600 -14400 0 FKT}
- {3618799200 -10800 1 FKST}
- {3638149200 -14400 0 FKT}
- {3650248800 -10800 1 FKST}
- {3670203600 -14400 0 FKT}
- {3681698400 -10800 1 FKST}
- {3701653200 -14400 0 FKT}
- {3713752800 -10800 1 FKST}
- {3733102800 -14400 0 FKT}
- {3745202400 -10800 1 FKST}
- {3764552400 -14400 0 FKT}
- {3776652000 -10800 1 FKST}
- {3796002000 -14400 0 FKT}
- {3808101600 -10800 1 FKST}
- {3827451600 -14400 0 FKT}
- {3839551200 -10800 1 FKST}
- {3859506000 -14400 0 FKT}
- {3871605600 -10800 1 FKST}
- {3890955600 -14400 0 FKT}
- {3903055200 -10800 1 FKST}
- {3922405200 -14400 0 FKT}
- {3934504800 -10800 1 FKST}
- {3953854800 -14400 0 FKT}
- {3965954400 -10800 1 FKST}
- {3985304400 -14400 0 FKT}
- {3997404000 -10800 1 FKST}
- {4017358800 -14400 0 FKT}
- {4028853600 -10800 1 FKST}
- {4048808400 -14400 0 FKT}
- {4060908000 -10800 1 FKST}
- {4080258000 -14400 0 FKT}
- {4092357600 -10800 1 FKST}
+ {1283662800 -10800 0 FKST}
}
diff --git a/library/tzdata/Australia/Eucla b/library/tzdata/Australia/Eucla
index 0f8ed4d..0f8ed4d 100755..100644
--- a/library/tzdata/Australia/Eucla
+++ b/library/tzdata/Australia/Eucla
diff --git a/library/tzdata/Europe/Busingen b/library/tzdata/Europe/Busingen
new file mode 100644
index 0000000..62abc29
--- /dev/null
+++ b/library/tzdata/Europe/Busingen
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(Europe/Zurich)]} {
+ LoadTimeZoneFile Europe/Zurich
+}
+set TZData(:Europe/Busingen) $TZData(:Europe/Zurich)
diff --git a/library/tzdata/Europe/Guernsey b/library/tzdata/Europe/Guernsey
index 4372c64..4372c64 100755..100644
--- a/library/tzdata/Europe/Guernsey
+++ b/library/tzdata/Europe/Guernsey
diff --git a/library/tzdata/Europe/Helsinki b/library/tzdata/Europe/Helsinki
index 04bd991..3abf790 100644
--- a/library/tzdata/Europe/Helsinki
+++ b/library/tzdata/Europe/Helsinki
@@ -6,11 +6,11 @@ set TZData(:Europe/Helsinki) {
{-1535938792 7200 0 EET}
{-875671200 10800 1 EEST}
{-859863600 7200 0 EET}
- {354672000 7200 0 EET}
- {354675600 10800 1 EEST}
- {370400400 7200 0 EET}
- {386125200 10800 1 EEST}
- {401850000 7200 0 EET}
+ {354672000 10800 1 EEST}
+ {370396800 7200 0 EET}
+ {386121600 10800 1 EEST}
+ {401846400 7200 0 EET}
+ {410220000 7200 0 EET}
{417574800 10800 1 EEST}
{433299600 7200 0 EET}
{449024400 10800 1 EEST}
diff --git a/library/tzdata/Europe/Isle_of_Man b/library/tzdata/Europe/Isle_of_Man
index 870ac45..870ac45 100755..100644
--- a/library/tzdata/Europe/Isle_of_Man
+++ b/library/tzdata/Europe/Isle_of_Man
diff --git a/library/tzdata/Europe/Istanbul b/library/tzdata/Europe/Istanbul
index 06b2f88..7737d75 100644
--- a/library/tzdata/Europe/Istanbul
+++ b/library/tzdata/Europe/Istanbul
@@ -122,7 +122,8 @@ set TZData(:Europe/Istanbul) {
{1256432400 7200 0 EET}
{1269738000 10800 1 EEST}
{1288486800 7200 0 EET}
- {1301187600 10800 1 EEST}
+ {1301187600 7200 0 EET}
+ {1301274000 10800 0 EEST}
{1319936400 7200 0 EET}
{1332637200 10800 1 EEST}
{1351386000 7200 0 EET}
diff --git a/library/tzdata/Europe/Jersey b/library/tzdata/Europe/Jersey
index e4da512..e4da512 100755..100644
--- a/library/tzdata/Europe/Jersey
+++ b/library/tzdata/Europe/Jersey
diff --git a/library/tzdata/Europe/Kaliningrad b/library/tzdata/Europe/Kaliningrad
index 94ebb12..d5be459 100644
--- a/library/tzdata/Europe/Kaliningrad
+++ b/library/tzdata/Europe/Kaliningrad
@@ -80,182 +80,5 @@ set TZData(:Europe/Kaliningrad) {
{1256428800 7200 0 EET}
{1269734400 10800 1 EEST}
{1288483200 7200 0 EET}
- {1301184000 10800 1 EEST}
- {1319932800 7200 0 EET}
- {1332633600 10800 1 EEST}
- {1351382400 7200 0 EET}
- {1364688000 10800 1 EEST}
- {1382832000 7200 0 EET}
- {1396137600 10800 1 EEST}
- {1414281600 7200 0 EET}
- {1427587200 10800 1 EEST}
- {1445731200 7200 0 EET}
- {1459036800 10800 1 EEST}
- {1477785600 7200 0 EET}
- {1490486400 10800 1 EEST}
- {1509235200 7200 0 EET}
- {1521936000 10800 1 EEST}
- {1540684800 7200 0 EET}
- {1553990400 10800 1 EEST}
- {1572134400 7200 0 EET}
- {1585440000 10800 1 EEST}
- {1603584000 7200 0 EET}
- {1616889600 10800 1 EEST}
- {1635638400 7200 0 EET}
- {1648339200 10800 1 EEST}
- {1667088000 7200 0 EET}
- {1679788800 10800 1 EEST}
- {1698537600 7200 0 EET}
- {1711843200 10800 1 EEST}
- {1729987200 7200 0 EET}
- {1743292800 10800 1 EEST}
- {1761436800 7200 0 EET}
- {1774742400 10800 1 EEST}
- {1792886400 7200 0 EET}
- {1806192000 10800 1 EEST}
- {1824940800 7200 0 EET}
- {1837641600 10800 1 EEST}
- {1856390400 7200 0 EET}
- {1869091200 10800 1 EEST}
- {1887840000 7200 0 EET}
- {1901145600 10800 1 EEST}
- {1919289600 7200 0 EET}
- {1932595200 10800 1 EEST}
- {1950739200 7200 0 EET}
- {1964044800 10800 1 EEST}
- {1982793600 7200 0 EET}
- {1995494400 10800 1 EEST}
- {2014243200 7200 0 EET}
- {2026944000 10800 1 EEST}
- {2045692800 7200 0 EET}
- {2058393600 10800 1 EEST}
- {2077142400 7200 0 EET}
- {2090448000 10800 1 EEST}
- {2108592000 7200 0 EET}
- {2121897600 10800 1 EEST}
- {2140041600 7200 0 EET}
- {2153347200 10800 1 EEST}
- {2172096000 7200 0 EET}
- {2184796800 10800 1 EEST}
- {2203545600 7200 0 EET}
- {2216246400 10800 1 EEST}
- {2234995200 7200 0 EET}
- {2248300800 10800 1 EEST}
- {2266444800 7200 0 EET}
- {2279750400 10800 1 EEST}
- {2297894400 7200 0 EET}
- {2311200000 10800 1 EEST}
- {2329344000 7200 0 EET}
- {2342649600 10800 1 EEST}
- {2361398400 7200 0 EET}
- {2374099200 10800 1 EEST}
- {2392848000 7200 0 EET}
- {2405548800 10800 1 EEST}
- {2424297600 7200 0 EET}
- {2437603200 10800 1 EEST}
- {2455747200 7200 0 EET}
- {2469052800 10800 1 EEST}
- {2487196800 7200 0 EET}
- {2500502400 10800 1 EEST}
- {2519251200 7200 0 EET}
- {2531952000 10800 1 EEST}
- {2550700800 7200 0 EET}
- {2563401600 10800 1 EEST}
- {2582150400 7200 0 EET}
- {2595456000 10800 1 EEST}
- {2613600000 7200 0 EET}
- {2626905600 10800 1 EEST}
- {2645049600 7200 0 EET}
- {2658355200 10800 1 EEST}
- {2676499200 7200 0 EET}
- {2689804800 10800 1 EEST}
- {2708553600 7200 0 EET}
- {2721254400 10800 1 EEST}
- {2740003200 7200 0 EET}
- {2752704000 10800 1 EEST}
- {2771452800 7200 0 EET}
- {2784758400 10800 1 EEST}
- {2802902400 7200 0 EET}
- {2816208000 10800 1 EEST}
- {2834352000 7200 0 EET}
- {2847657600 10800 1 EEST}
- {2866406400 7200 0 EET}
- {2879107200 10800 1 EEST}
- {2897856000 7200 0 EET}
- {2910556800 10800 1 EEST}
- {2929305600 7200 0 EET}
- {2942006400 10800 1 EEST}
- {2960755200 7200 0 EET}
- {2974060800 10800 1 EEST}
- {2992204800 7200 0 EET}
- {3005510400 10800 1 EEST}
- {3023654400 7200 0 EET}
- {3036960000 10800 1 EEST}
- {3055708800 7200 0 EET}
- {3068409600 10800 1 EEST}
- {3087158400 7200 0 EET}
- {3099859200 10800 1 EEST}
- {3118608000 7200 0 EET}
- {3131913600 10800 1 EEST}
- {3150057600 7200 0 EET}
- {3163363200 10800 1 EEST}
- {3181507200 7200 0 EET}
- {3194812800 10800 1 EEST}
- {3212956800 7200 0 EET}
- {3226262400 10800 1 EEST}
- {3245011200 7200 0 EET}
- {3257712000 10800 1 EEST}
- {3276460800 7200 0 EET}
- {3289161600 10800 1 EEST}
- {3307910400 7200 0 EET}
- {3321216000 10800 1 EEST}
- {3339360000 7200 0 EET}
- {3352665600 10800 1 EEST}
- {3370809600 7200 0 EET}
- {3384115200 10800 1 EEST}
- {3402864000 7200 0 EET}
- {3415564800 10800 1 EEST}
- {3434313600 7200 0 EET}
- {3447014400 10800 1 EEST}
- {3465763200 7200 0 EET}
- {3479068800 10800 1 EEST}
- {3497212800 7200 0 EET}
- {3510518400 10800 1 EEST}
- {3528662400 7200 0 EET}
- {3541968000 10800 1 EEST}
- {3560112000 7200 0 EET}
- {3573417600 10800 1 EEST}
- {3592166400 7200 0 EET}
- {3604867200 10800 1 EEST}
- {3623616000 7200 0 EET}
- {3636316800 10800 1 EEST}
- {3655065600 7200 0 EET}
- {3668371200 10800 1 EEST}
- {3686515200 7200 0 EET}
- {3699820800 10800 1 EEST}
- {3717964800 7200 0 EET}
- {3731270400 10800 1 EEST}
- {3750019200 7200 0 EET}
- {3762720000 10800 1 EEST}
- {3781468800 7200 0 EET}
- {3794169600 10800 1 EEST}
- {3812918400 7200 0 EET}
- {3825619200 10800 1 EEST}
- {3844368000 7200 0 EET}
- {3857673600 10800 1 EEST}
- {3875817600 7200 0 EET}
- {3889123200 10800 1 EEST}
- {3907267200 7200 0 EET}
- {3920572800 10800 1 EEST}
- {3939321600 7200 0 EET}
- {3952022400 10800 1 EEST}
- {3970771200 7200 0 EET}
- {3983472000 10800 1 EEST}
- {4002220800 7200 0 EET}
- {4015526400 10800 1 EEST}
- {4033670400 7200 0 EET}
- {4046976000 10800 1 EEST}
- {4065120000 7200 0 EET}
- {4078425600 10800 1 EEST}
- {4096569600 7200 0 EET}
+ {1301184000 10800 0 FET}
}
diff --git a/library/tzdata/Europe/Minsk b/library/tzdata/Europe/Minsk
index d7d9434..1adcff8 100644
--- a/library/tzdata/Europe/Minsk
+++ b/library/tzdata/Europe/Minsk
@@ -70,182 +70,5 @@ set TZData(:Europe/Minsk) {
{1256428800 7200 0 EET}
{1269734400 10800 1 EEST}
{1288483200 7200 0 EET}
- {1301184000 10800 1 EEST}
- {1319932800 7200 0 EET}
- {1332633600 10800 1 EEST}
- {1351382400 7200 0 EET}
- {1364688000 10800 1 EEST}
- {1382832000 7200 0 EET}
- {1396137600 10800 1 EEST}
- {1414281600 7200 0 EET}
- {1427587200 10800 1 EEST}
- {1445731200 7200 0 EET}
- {1459036800 10800 1 EEST}
- {1477785600 7200 0 EET}
- {1490486400 10800 1 EEST}
- {1509235200 7200 0 EET}
- {1521936000 10800 1 EEST}
- {1540684800 7200 0 EET}
- {1553990400 10800 1 EEST}
- {1572134400 7200 0 EET}
- {1585440000 10800 1 EEST}
- {1603584000 7200 0 EET}
- {1616889600 10800 1 EEST}
- {1635638400 7200 0 EET}
- {1648339200 10800 1 EEST}
- {1667088000 7200 0 EET}
- {1679788800 10800 1 EEST}
- {1698537600 7200 0 EET}
- {1711843200 10800 1 EEST}
- {1729987200 7200 0 EET}
- {1743292800 10800 1 EEST}
- {1761436800 7200 0 EET}
- {1774742400 10800 1 EEST}
- {1792886400 7200 0 EET}
- {1806192000 10800 1 EEST}
- {1824940800 7200 0 EET}
- {1837641600 10800 1 EEST}
- {1856390400 7200 0 EET}
- {1869091200 10800 1 EEST}
- {1887840000 7200 0 EET}
- {1901145600 10800 1 EEST}
- {1919289600 7200 0 EET}
- {1932595200 10800 1 EEST}
- {1950739200 7200 0 EET}
- {1964044800 10800 1 EEST}
- {1982793600 7200 0 EET}
- {1995494400 10800 1 EEST}
- {2014243200 7200 0 EET}
- {2026944000 10800 1 EEST}
- {2045692800 7200 0 EET}
- {2058393600 10800 1 EEST}
- {2077142400 7200 0 EET}
- {2090448000 10800 1 EEST}
- {2108592000 7200 0 EET}
- {2121897600 10800 1 EEST}
- {2140041600 7200 0 EET}
- {2153347200 10800 1 EEST}
- {2172096000 7200 0 EET}
- {2184796800 10800 1 EEST}
- {2203545600 7200 0 EET}
- {2216246400 10800 1 EEST}
- {2234995200 7200 0 EET}
- {2248300800 10800 1 EEST}
- {2266444800 7200 0 EET}
- {2279750400 10800 1 EEST}
- {2297894400 7200 0 EET}
- {2311200000 10800 1 EEST}
- {2329344000 7200 0 EET}
- {2342649600 10800 1 EEST}
- {2361398400 7200 0 EET}
- {2374099200 10800 1 EEST}
- {2392848000 7200 0 EET}
- {2405548800 10800 1 EEST}
- {2424297600 7200 0 EET}
- {2437603200 10800 1 EEST}
- {2455747200 7200 0 EET}
- {2469052800 10800 1 EEST}
- {2487196800 7200 0 EET}
- {2500502400 10800 1 EEST}
- {2519251200 7200 0 EET}
- {2531952000 10800 1 EEST}
- {2550700800 7200 0 EET}
- {2563401600 10800 1 EEST}
- {2582150400 7200 0 EET}
- {2595456000 10800 1 EEST}
- {2613600000 7200 0 EET}
- {2626905600 10800 1 EEST}
- {2645049600 7200 0 EET}
- {2658355200 10800 1 EEST}
- {2676499200 7200 0 EET}
- {2689804800 10800 1 EEST}
- {2708553600 7200 0 EET}
- {2721254400 10800 1 EEST}
- {2740003200 7200 0 EET}
- {2752704000 10800 1 EEST}
- {2771452800 7200 0 EET}
- {2784758400 10800 1 EEST}
- {2802902400 7200 0 EET}
- {2816208000 10800 1 EEST}
- {2834352000 7200 0 EET}
- {2847657600 10800 1 EEST}
- {2866406400 7200 0 EET}
- {2879107200 10800 1 EEST}
- {2897856000 7200 0 EET}
- {2910556800 10800 1 EEST}
- {2929305600 7200 0 EET}
- {2942006400 10800 1 EEST}
- {2960755200 7200 0 EET}
- {2974060800 10800 1 EEST}
- {2992204800 7200 0 EET}
- {3005510400 10800 1 EEST}
- {3023654400 7200 0 EET}
- {3036960000 10800 1 EEST}
- {3055708800 7200 0 EET}
- {3068409600 10800 1 EEST}
- {3087158400 7200 0 EET}
- {3099859200 10800 1 EEST}
- {3118608000 7200 0 EET}
- {3131913600 10800 1 EEST}
- {3150057600 7200 0 EET}
- {3163363200 10800 1 EEST}
- {3181507200 7200 0 EET}
- {3194812800 10800 1 EEST}
- {3212956800 7200 0 EET}
- {3226262400 10800 1 EEST}
- {3245011200 7200 0 EET}
- {3257712000 10800 1 EEST}
- {3276460800 7200 0 EET}
- {3289161600 10800 1 EEST}
- {3307910400 7200 0 EET}
- {3321216000 10800 1 EEST}
- {3339360000 7200 0 EET}
- {3352665600 10800 1 EEST}
- {3370809600 7200 0 EET}
- {3384115200 10800 1 EEST}
- {3402864000 7200 0 EET}
- {3415564800 10800 1 EEST}
- {3434313600 7200 0 EET}
- {3447014400 10800 1 EEST}
- {3465763200 7200 0 EET}
- {3479068800 10800 1 EEST}
- {3497212800 7200 0 EET}
- {3510518400 10800 1 EEST}
- {3528662400 7200 0 EET}
- {3541968000 10800 1 EEST}
- {3560112000 7200 0 EET}
- {3573417600 10800 1 EEST}
- {3592166400 7200 0 EET}
- {3604867200 10800 1 EEST}
- {3623616000 7200 0 EET}
- {3636316800 10800 1 EEST}
- {3655065600 7200 0 EET}
- {3668371200 10800 1 EEST}
- {3686515200 7200 0 EET}
- {3699820800 10800 1 EEST}
- {3717964800 7200 0 EET}
- {3731270400 10800 1 EEST}
- {3750019200 7200 0 EET}
- {3762720000 10800 1 EEST}
- {3781468800 7200 0 EET}
- {3794169600 10800 1 EEST}
- {3812918400 7200 0 EET}
- {3825619200 10800 1 EEST}
- {3844368000 7200 0 EET}
- {3857673600 10800 1 EEST}
- {3875817600 7200 0 EET}
- {3889123200 10800 1 EEST}
- {3907267200 7200 0 EET}
- {3920572800 10800 1 EEST}
- {3939321600 7200 0 EET}
- {3952022400 10800 1 EEST}
- {3970771200 7200 0 EET}
- {3983472000 10800 1 EEST}
- {4002220800 7200 0 EET}
- {4015526400 10800 1 EEST}
- {4033670400 7200 0 EET}
- {4046976000 10800 1 EEST}
- {4065120000 7200 0 EET}
- {4078425600 10800 1 EEST}
- {4096569600 7200 0 EET}
+ {1301184000 10800 0 FET}
}
diff --git a/library/tzdata/Europe/Moscow b/library/tzdata/Europe/Moscow
index 9acbd2c..8f40741 100644
--- a/library/tzdata/Europe/Moscow
+++ b/library/tzdata/Europe/Moscow
@@ -79,182 +79,5 @@ set TZData(:Europe/Moscow) {
{1256425200 10800 0 MSK}
{1269730800 14400 1 MSD}
{1288479600 10800 0 MSK}
- {1301180400 14400 1 MSD}
- {1319929200 10800 0 MSK}
- {1332630000 14400 1 MSD}
- {1351378800 10800 0 MSK}
- {1364684400 14400 1 MSD}
- {1382828400 10800 0 MSK}
- {1396134000 14400 1 MSD}
- {1414278000 10800 0 MSK}
- {1427583600 14400 1 MSD}
- {1445727600 10800 0 MSK}
- {1459033200 14400 1 MSD}
- {1477782000 10800 0 MSK}
- {1490482800 14400 1 MSD}
- {1509231600 10800 0 MSK}
- {1521932400 14400 1 MSD}
- {1540681200 10800 0 MSK}
- {1553986800 14400 1 MSD}
- {1572130800 10800 0 MSK}
- {1585436400 14400 1 MSD}
- {1603580400 10800 0 MSK}
- {1616886000 14400 1 MSD}
- {1635634800 10800 0 MSK}
- {1648335600 14400 1 MSD}
- {1667084400 10800 0 MSK}
- {1679785200 14400 1 MSD}
- {1698534000 10800 0 MSK}
- {1711839600 14400 1 MSD}
- {1729983600 10800 0 MSK}
- {1743289200 14400 1 MSD}
- {1761433200 10800 0 MSK}
- {1774738800 14400 1 MSD}
- {1792882800 10800 0 MSK}
- {1806188400 14400 1 MSD}
- {1824937200 10800 0 MSK}
- {1837638000 14400 1 MSD}
- {1856386800 10800 0 MSK}
- {1869087600 14400 1 MSD}
- {1887836400 10800 0 MSK}
- {1901142000 14400 1 MSD}
- {1919286000 10800 0 MSK}
- {1932591600 14400 1 MSD}
- {1950735600 10800 0 MSK}
- {1964041200 14400 1 MSD}
- {1982790000 10800 0 MSK}
- {1995490800 14400 1 MSD}
- {2014239600 10800 0 MSK}
- {2026940400 14400 1 MSD}
- {2045689200 10800 0 MSK}
- {2058390000 14400 1 MSD}
- {2077138800 10800 0 MSK}
- {2090444400 14400 1 MSD}
- {2108588400 10800 0 MSK}
- {2121894000 14400 1 MSD}
- {2140038000 10800 0 MSK}
- {2153343600 14400 1 MSD}
- {2172092400 10800 0 MSK}
- {2184793200 14400 1 MSD}
- {2203542000 10800 0 MSK}
- {2216242800 14400 1 MSD}
- {2234991600 10800 0 MSK}
- {2248297200 14400 1 MSD}
- {2266441200 10800 0 MSK}
- {2279746800 14400 1 MSD}
- {2297890800 10800 0 MSK}
- {2311196400 14400 1 MSD}
- {2329340400 10800 0 MSK}
- {2342646000 14400 1 MSD}
- {2361394800 10800 0 MSK}
- {2374095600 14400 1 MSD}
- {2392844400 10800 0 MSK}
- {2405545200 14400 1 MSD}
- {2424294000 10800 0 MSK}
- {2437599600 14400 1 MSD}
- {2455743600 10800 0 MSK}
- {2469049200 14400 1 MSD}
- {2487193200 10800 0 MSK}
- {2500498800 14400 1 MSD}
- {2519247600 10800 0 MSK}
- {2531948400 14400 1 MSD}
- {2550697200 10800 0 MSK}
- {2563398000 14400 1 MSD}
- {2582146800 10800 0 MSK}
- {2595452400 14400 1 MSD}
- {2613596400 10800 0 MSK}
- {2626902000 14400 1 MSD}
- {2645046000 10800 0 MSK}
- {2658351600 14400 1 MSD}
- {2676495600 10800 0 MSK}
- {2689801200 14400 1 MSD}
- {2708550000 10800 0 MSK}
- {2721250800 14400 1 MSD}
- {2739999600 10800 0 MSK}
- {2752700400 14400 1 MSD}
- {2771449200 10800 0 MSK}
- {2784754800 14400 1 MSD}
- {2802898800 10800 0 MSK}
- {2816204400 14400 1 MSD}
- {2834348400 10800 0 MSK}
- {2847654000 14400 1 MSD}
- {2866402800 10800 0 MSK}
- {2879103600 14400 1 MSD}
- {2897852400 10800 0 MSK}
- {2910553200 14400 1 MSD}
- {2929302000 10800 0 MSK}
- {2942002800 14400 1 MSD}
- {2960751600 10800 0 MSK}
- {2974057200 14400 1 MSD}
- {2992201200 10800 0 MSK}
- {3005506800 14400 1 MSD}
- {3023650800 10800 0 MSK}
- {3036956400 14400 1 MSD}
- {3055705200 10800 0 MSK}
- {3068406000 14400 1 MSD}
- {3087154800 10800 0 MSK}
- {3099855600 14400 1 MSD}
- {3118604400 10800 0 MSK}
- {3131910000 14400 1 MSD}
- {3150054000 10800 0 MSK}
- {3163359600 14400 1 MSD}
- {3181503600 10800 0 MSK}
- {3194809200 14400 1 MSD}
- {3212953200 10800 0 MSK}
- {3226258800 14400 1 MSD}
- {3245007600 10800 0 MSK}
- {3257708400 14400 1 MSD}
- {3276457200 10800 0 MSK}
- {3289158000 14400 1 MSD}
- {3307906800 10800 0 MSK}
- {3321212400 14400 1 MSD}
- {3339356400 10800 0 MSK}
- {3352662000 14400 1 MSD}
- {3370806000 10800 0 MSK}
- {3384111600 14400 1 MSD}
- {3402860400 10800 0 MSK}
- {3415561200 14400 1 MSD}
- {3434310000 10800 0 MSK}
- {3447010800 14400 1 MSD}
- {3465759600 10800 0 MSK}
- {3479065200 14400 1 MSD}
- {3497209200 10800 0 MSK}
- {3510514800 14400 1 MSD}
- {3528658800 10800 0 MSK}
- {3541964400 14400 1 MSD}
- {3560108400 10800 0 MSK}
- {3573414000 14400 1 MSD}
- {3592162800 10800 0 MSK}
- {3604863600 14400 1 MSD}
- {3623612400 10800 0 MSK}
- {3636313200 14400 1 MSD}
- {3655062000 10800 0 MSK}
- {3668367600 14400 1 MSD}
- {3686511600 10800 0 MSK}
- {3699817200 14400 1 MSD}
- {3717961200 10800 0 MSK}
- {3731266800 14400 1 MSD}
- {3750015600 10800 0 MSK}
- {3762716400 14400 1 MSD}
- {3781465200 10800 0 MSK}
- {3794166000 14400 1 MSD}
- {3812914800 10800 0 MSK}
- {3825615600 14400 1 MSD}
- {3844364400 10800 0 MSK}
- {3857670000 14400 1 MSD}
- {3875814000 10800 0 MSK}
- {3889119600 14400 1 MSD}
- {3907263600 10800 0 MSK}
- {3920569200 14400 1 MSD}
- {3939318000 10800 0 MSK}
- {3952018800 14400 1 MSD}
- {3970767600 10800 0 MSK}
- {3983468400 14400 1 MSD}
- {4002217200 10800 0 MSK}
- {4015522800 14400 1 MSD}
- {4033666800 10800 0 MSK}
- {4046972400 14400 1 MSD}
- {4065116400 10800 0 MSK}
- {4078422000 14400 1 MSD}
- {4096566000 10800 0 MSK}
+ {1301180400 14400 0 MSK}
}
diff --git a/library/tzdata/Europe/Podgorica b/library/tzdata/Europe/Podgorica
index f4f9066..f4f9066 100755..100644
--- a/library/tzdata/Europe/Podgorica
+++ b/library/tzdata/Europe/Podgorica
diff --git a/library/tzdata/Europe/Samara b/library/tzdata/Europe/Samara
index 47e57e4..f2ac911 100644
--- a/library/tzdata/Europe/Samara
+++ b/library/tzdata/Europe/Samara
@@ -66,184 +66,8 @@ set TZData(:Europe/Samara) {
{1224972000 14400 0 SAMT}
{1238277600 18000 1 SAMST}
{1256421600 14400 0 SAMT}
- {1269727200 18000 1 SAMST}
- {1288476000 14400 0 SAMT}
- {1301176800 18000 1 SAMST}
- {1319925600 14400 0 SAMT}
- {1332626400 18000 1 SAMST}
- {1351375200 14400 0 SAMT}
- {1364680800 18000 1 SAMST}
- {1382824800 14400 0 SAMT}
- {1396130400 18000 1 SAMST}
- {1414274400 14400 0 SAMT}
- {1427580000 18000 1 SAMST}
- {1445724000 14400 0 SAMT}
- {1459029600 18000 1 SAMST}
- {1477778400 14400 0 SAMT}
- {1490479200 18000 1 SAMST}
- {1509228000 14400 0 SAMT}
- {1521928800 18000 1 SAMST}
- {1540677600 14400 0 SAMT}
- {1553983200 18000 1 SAMST}
- {1572127200 14400 0 SAMT}
- {1585432800 18000 1 SAMST}
- {1603576800 14400 0 SAMT}
- {1616882400 18000 1 SAMST}
- {1635631200 14400 0 SAMT}
- {1648332000 18000 1 SAMST}
- {1667080800 14400 0 SAMT}
- {1679781600 18000 1 SAMST}
- {1698530400 14400 0 SAMT}
- {1711836000 18000 1 SAMST}
- {1729980000 14400 0 SAMT}
- {1743285600 18000 1 SAMST}
- {1761429600 14400 0 SAMT}
- {1774735200 18000 1 SAMST}
- {1792879200 14400 0 SAMT}
- {1806184800 18000 1 SAMST}
- {1824933600 14400 0 SAMT}
- {1837634400 18000 1 SAMST}
- {1856383200 14400 0 SAMT}
- {1869084000 18000 1 SAMST}
- {1887832800 14400 0 SAMT}
- {1901138400 18000 1 SAMST}
- {1919282400 14400 0 SAMT}
- {1932588000 18000 1 SAMST}
- {1950732000 14400 0 SAMT}
- {1964037600 18000 1 SAMST}
- {1982786400 14400 0 SAMT}
- {1995487200 18000 1 SAMST}
- {2014236000 14400 0 SAMT}
- {2026936800 18000 1 SAMST}
- {2045685600 14400 0 SAMT}
- {2058386400 18000 1 SAMST}
- {2077135200 14400 0 SAMT}
- {2090440800 18000 1 SAMST}
- {2108584800 14400 0 SAMT}
- {2121890400 18000 1 SAMST}
- {2140034400 14400 0 SAMT}
- {2153340000 18000 1 SAMST}
- {2172088800 14400 0 SAMT}
- {2184789600 18000 1 SAMST}
- {2203538400 14400 0 SAMT}
- {2216239200 18000 1 SAMST}
- {2234988000 14400 0 SAMT}
- {2248293600 18000 1 SAMST}
- {2266437600 14400 0 SAMT}
- {2279743200 18000 1 SAMST}
- {2297887200 14400 0 SAMT}
- {2311192800 18000 1 SAMST}
- {2329336800 14400 0 SAMT}
- {2342642400 18000 1 SAMST}
- {2361391200 14400 0 SAMT}
- {2374092000 18000 1 SAMST}
- {2392840800 14400 0 SAMT}
- {2405541600 18000 1 SAMST}
- {2424290400 14400 0 SAMT}
- {2437596000 18000 1 SAMST}
- {2455740000 14400 0 SAMT}
- {2469045600 18000 1 SAMST}
- {2487189600 14400 0 SAMT}
- {2500495200 18000 1 SAMST}
- {2519244000 14400 0 SAMT}
- {2531944800 18000 1 SAMST}
- {2550693600 14400 0 SAMT}
- {2563394400 18000 1 SAMST}
- {2582143200 14400 0 SAMT}
- {2595448800 18000 1 SAMST}
- {2613592800 14400 0 SAMT}
- {2626898400 18000 1 SAMST}
- {2645042400 14400 0 SAMT}
- {2658348000 18000 1 SAMST}
- {2676492000 14400 0 SAMT}
- {2689797600 18000 1 SAMST}
- {2708546400 14400 0 SAMT}
- {2721247200 18000 1 SAMST}
- {2739996000 14400 0 SAMT}
- {2752696800 18000 1 SAMST}
- {2771445600 14400 0 SAMT}
- {2784751200 18000 1 SAMST}
- {2802895200 14400 0 SAMT}
- {2816200800 18000 1 SAMST}
- {2834344800 14400 0 SAMT}
- {2847650400 18000 1 SAMST}
- {2866399200 14400 0 SAMT}
- {2879100000 18000 1 SAMST}
- {2897848800 14400 0 SAMT}
- {2910549600 18000 1 SAMST}
- {2929298400 14400 0 SAMT}
- {2941999200 18000 1 SAMST}
- {2960748000 14400 0 SAMT}
- {2974053600 18000 1 SAMST}
- {2992197600 14400 0 SAMT}
- {3005503200 18000 1 SAMST}
- {3023647200 14400 0 SAMT}
- {3036952800 18000 1 SAMST}
- {3055701600 14400 0 SAMT}
- {3068402400 18000 1 SAMST}
- {3087151200 14400 0 SAMT}
- {3099852000 18000 1 SAMST}
- {3118600800 14400 0 SAMT}
- {3131906400 18000 1 SAMST}
- {3150050400 14400 0 SAMT}
- {3163356000 18000 1 SAMST}
- {3181500000 14400 0 SAMT}
- {3194805600 18000 1 SAMST}
- {3212949600 14400 0 SAMT}
- {3226255200 18000 1 SAMST}
- {3245004000 14400 0 SAMT}
- {3257704800 18000 1 SAMST}
- {3276453600 14400 0 SAMT}
- {3289154400 18000 1 SAMST}
- {3307903200 14400 0 SAMT}
- {3321208800 18000 1 SAMST}
- {3339352800 14400 0 SAMT}
- {3352658400 18000 1 SAMST}
- {3370802400 14400 0 SAMT}
- {3384108000 18000 1 SAMST}
- {3402856800 14400 0 SAMT}
- {3415557600 18000 1 SAMST}
- {3434306400 14400 0 SAMT}
- {3447007200 18000 1 SAMST}
- {3465756000 14400 0 SAMT}
- {3479061600 18000 1 SAMST}
- {3497205600 14400 0 SAMT}
- {3510511200 18000 1 SAMST}
- {3528655200 14400 0 SAMT}
- {3541960800 18000 1 SAMST}
- {3560104800 14400 0 SAMT}
- {3573410400 18000 1 SAMST}
- {3592159200 14400 0 SAMT}
- {3604860000 18000 1 SAMST}
- {3623608800 14400 0 SAMT}
- {3636309600 18000 1 SAMST}
- {3655058400 14400 0 SAMT}
- {3668364000 18000 1 SAMST}
- {3686508000 14400 0 SAMT}
- {3699813600 18000 1 SAMST}
- {3717957600 14400 0 SAMT}
- {3731263200 18000 1 SAMST}
- {3750012000 14400 0 SAMT}
- {3762712800 18000 1 SAMST}
- {3781461600 14400 0 SAMT}
- {3794162400 18000 1 SAMST}
- {3812911200 14400 0 SAMT}
- {3825612000 18000 1 SAMST}
- {3844360800 14400 0 SAMT}
- {3857666400 18000 1 SAMST}
- {3875810400 14400 0 SAMT}
- {3889116000 18000 1 SAMST}
- {3907260000 14400 0 SAMT}
- {3920565600 18000 1 SAMST}
- {3939314400 14400 0 SAMT}
- {3952015200 18000 1 SAMST}
- {3970764000 14400 0 SAMT}
- {3983464800 18000 1 SAMST}
- {4002213600 14400 0 SAMT}
- {4015519200 18000 1 SAMST}
- {4033663200 14400 0 SAMT}
- {4046968800 18000 1 SAMST}
- {4065112800 14400 0 SAMT}
- {4078418400 18000 1 SAMST}
- {4096562400 14400 0 SAMT}
+ {1269727200 10800 0 SAMMMTT}
+ {1269730800 14400 1 SAMST}
+ {1288479600 10800 0 SAMT}
+ {1301180400 14400 0 SAMT}
}
diff --git a/library/tzdata/Europe/Vaduz b/library/tzdata/Europe/Vaduz
index 3118331..095e018 100644
--- a/library/tzdata/Europe/Vaduz
+++ b/library/tzdata/Europe/Vaduz
@@ -1,245 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:Europe/Vaduz) {
- {-9223372036854775808 2284 0 LMT}
- {-2385247084 3600 0 CET}
- {347151600 3600 0 CET}
- {354675600 7200 1 CEST}
- {370400400 3600 0 CET}
- {386125200 7200 1 CEST}
- {401850000 3600 0 CET}
- {417574800 7200 1 CEST}
- {433299600 3600 0 CET}
- {449024400 7200 1 CEST}
- {465354000 3600 0 CET}
- {481078800 7200 1 CEST}
- {496803600 3600 0 CET}
- {512528400 7200 1 CEST}
- {528253200 3600 0 CET}
- {543978000 7200 1 CEST}
- {559702800 3600 0 CET}
- {575427600 7200 1 CEST}
- {591152400 3600 0 CET}
- {606877200 7200 1 CEST}
- {622602000 3600 0 CET}
- {638326800 7200 1 CEST}
- {654656400 3600 0 CET}
- {670381200 7200 1 CEST}
- {686106000 3600 0 CET}
- {701830800 7200 1 CEST}
- {717555600 3600 0 CET}
- {733280400 7200 1 CEST}
- {749005200 3600 0 CET}
- {764730000 7200 1 CEST}
- {780454800 3600 0 CET}
- {796179600 7200 1 CEST}
- {811904400 3600 0 CET}
- {828234000 7200 1 CEST}
- {846378000 3600 0 CET}
- {859683600 7200 1 CEST}
- {877827600 3600 0 CET}
- {891133200 7200 1 CEST}
- {909277200 3600 0 CET}
- {922582800 7200 1 CEST}
- {941331600 3600 0 CET}
- {954032400 7200 1 CEST}
- {972781200 3600 0 CET}
- {985482000 7200 1 CEST}
- {1004230800 3600 0 CET}
- {1017536400 7200 1 CEST}
- {1035680400 3600 0 CET}
- {1048986000 7200 1 CEST}
- {1067130000 3600 0 CET}
- {1080435600 7200 1 CEST}
- {1099184400 3600 0 CET}
- {1111885200 7200 1 CEST}
- {1130634000 3600 0 CET}
- {1143334800 7200 1 CEST}
- {1162083600 3600 0 CET}
- {1174784400 7200 1 CEST}
- {1193533200 3600 0 CET}
- {1206838800 7200 1 CEST}
- {1224982800 3600 0 CET}
- {1238288400 7200 1 CEST}
- {1256432400 3600 0 CET}
- {1269738000 7200 1 CEST}
- {1288486800 3600 0 CET}
- {1301187600 7200 1 CEST}
- {1319936400 3600 0 CET}
- {1332637200 7200 1 CEST}
- {1351386000 3600 0 CET}
- {1364691600 7200 1 CEST}
- {1382835600 3600 0 CET}
- {1396141200 7200 1 CEST}
- {1414285200 3600 0 CET}
- {1427590800 7200 1 CEST}
- {1445734800 3600 0 CET}
- {1459040400 7200 1 CEST}
- {1477789200 3600 0 CET}
- {1490490000 7200 1 CEST}
- {1509238800 3600 0 CET}
- {1521939600 7200 1 CEST}
- {1540688400 3600 0 CET}
- {1553994000 7200 1 CEST}
- {1572138000 3600 0 CET}
- {1585443600 7200 1 CEST}
- {1603587600 3600 0 CET}
- {1616893200 7200 1 CEST}
- {1635642000 3600 0 CET}
- {1648342800 7200 1 CEST}
- {1667091600 3600 0 CET}
- {1679792400 7200 1 CEST}
- {1698541200 3600 0 CET}
- {1711846800 7200 1 CEST}
- {1729990800 3600 0 CET}
- {1743296400 7200 1 CEST}
- {1761440400 3600 0 CET}
- {1774746000 7200 1 CEST}
- {1792890000 3600 0 CET}
- {1806195600 7200 1 CEST}
- {1824944400 3600 0 CET}
- {1837645200 7200 1 CEST}
- {1856394000 3600 0 CET}
- {1869094800 7200 1 CEST}
- {1887843600 3600 0 CET}
- {1901149200 7200 1 CEST}
- {1919293200 3600 0 CET}
- {1932598800 7200 1 CEST}
- {1950742800 3600 0 CET}
- {1964048400 7200 1 CEST}
- {1982797200 3600 0 CET}
- {1995498000 7200 1 CEST}
- {2014246800 3600 0 CET}
- {2026947600 7200 1 CEST}
- {2045696400 3600 0 CET}
- {2058397200 7200 1 CEST}
- {2077146000 3600 0 CET}
- {2090451600 7200 1 CEST}
- {2108595600 3600 0 CET}
- {2121901200 7200 1 CEST}
- {2140045200 3600 0 CET}
- {2153350800 7200 1 CEST}
- {2172099600 3600 0 CET}
- {2184800400 7200 1 CEST}
- {2203549200 3600 0 CET}
- {2216250000 7200 1 CEST}
- {2234998800 3600 0 CET}
- {2248304400 7200 1 CEST}
- {2266448400 3600 0 CET}
- {2279754000 7200 1 CEST}
- {2297898000 3600 0 CET}
- {2311203600 7200 1 CEST}
- {2329347600 3600 0 CET}
- {2342653200 7200 1 CEST}
- {2361402000 3600 0 CET}
- {2374102800 7200 1 CEST}
- {2392851600 3600 0 CET}
- {2405552400 7200 1 CEST}
- {2424301200 3600 0 CET}
- {2437606800 7200 1 CEST}
- {2455750800 3600 0 CET}
- {2469056400 7200 1 CEST}
- {2487200400 3600 0 CET}
- {2500506000 7200 1 CEST}
- {2519254800 3600 0 CET}
- {2531955600 7200 1 CEST}
- {2550704400 3600 0 CET}
- {2563405200 7200 1 CEST}
- {2582154000 3600 0 CET}
- {2595459600 7200 1 CEST}
- {2613603600 3600 0 CET}
- {2626909200 7200 1 CEST}
- {2645053200 3600 0 CET}
- {2658358800 7200 1 CEST}
- {2676502800 3600 0 CET}
- {2689808400 7200 1 CEST}
- {2708557200 3600 0 CET}
- {2721258000 7200 1 CEST}
- {2740006800 3600 0 CET}
- {2752707600 7200 1 CEST}
- {2771456400 3600 0 CET}
- {2784762000 7200 1 CEST}
- {2802906000 3600 0 CET}
- {2816211600 7200 1 CEST}
- {2834355600 3600 0 CET}
- {2847661200 7200 1 CEST}
- {2866410000 3600 0 CET}
- {2879110800 7200 1 CEST}
- {2897859600 3600 0 CET}
- {2910560400 7200 1 CEST}
- {2929309200 3600 0 CET}
- {2942010000 7200 1 CEST}
- {2960758800 3600 0 CET}
- {2974064400 7200 1 CEST}
- {2992208400 3600 0 CET}
- {3005514000 7200 1 CEST}
- {3023658000 3600 0 CET}
- {3036963600 7200 1 CEST}
- {3055712400 3600 0 CET}
- {3068413200 7200 1 CEST}
- {3087162000 3600 0 CET}
- {3099862800 7200 1 CEST}
- {3118611600 3600 0 CET}
- {3131917200 7200 1 CEST}
- {3150061200 3600 0 CET}
- {3163366800 7200 1 CEST}
- {3181510800 3600 0 CET}
- {3194816400 7200 1 CEST}
- {3212960400 3600 0 CET}
- {3226266000 7200 1 CEST}
- {3245014800 3600 0 CET}
- {3257715600 7200 1 CEST}
- {3276464400 3600 0 CET}
- {3289165200 7200 1 CEST}
- {3307914000 3600 0 CET}
- {3321219600 7200 1 CEST}
- {3339363600 3600 0 CET}
- {3352669200 7200 1 CEST}
- {3370813200 3600 0 CET}
- {3384118800 7200 1 CEST}
- {3402867600 3600 0 CET}
- {3415568400 7200 1 CEST}
- {3434317200 3600 0 CET}
- {3447018000 7200 1 CEST}
- {3465766800 3600 0 CET}
- {3479072400 7200 1 CEST}
- {3497216400 3600 0 CET}
- {3510522000 7200 1 CEST}
- {3528666000 3600 0 CET}
- {3541971600 7200 1 CEST}
- {3560115600 3600 0 CET}
- {3573421200 7200 1 CEST}
- {3592170000 3600 0 CET}
- {3604870800 7200 1 CEST}
- {3623619600 3600 0 CET}
- {3636320400 7200 1 CEST}
- {3655069200 3600 0 CET}
- {3668374800 7200 1 CEST}
- {3686518800 3600 0 CET}
- {3699824400 7200 1 CEST}
- {3717968400 3600 0 CET}
- {3731274000 7200 1 CEST}
- {3750022800 3600 0 CET}
- {3762723600 7200 1 CEST}
- {3781472400 3600 0 CET}
- {3794173200 7200 1 CEST}
- {3812922000 3600 0 CET}
- {3825622800 7200 1 CEST}
- {3844371600 3600 0 CET}
- {3857677200 7200 1 CEST}
- {3875821200 3600 0 CET}
- {3889126800 7200 1 CEST}
- {3907270800 3600 0 CET}
- {3920576400 7200 1 CEST}
- {3939325200 3600 0 CET}
- {3952026000 7200 1 CEST}
- {3970774800 3600 0 CET}
- {3983475600 7200 1 CEST}
- {4002224400 3600 0 CET}
- {4015530000 7200 1 CEST}
- {4033674000 3600 0 CET}
- {4046979600 7200 1 CEST}
- {4065123600 3600 0 CET}
- {4078429200 7200 1 CEST}
- {4096573200 3600 0 CET}
+if {![info exists TZData(Europe/Zurich)]} {
+ LoadTimeZoneFile Europe/Zurich
}
+set TZData(:Europe/Vaduz) $TZData(:Europe/Zurich)
diff --git a/library/tzdata/Europe/Vienna b/library/tzdata/Europe/Vienna
index 41d744d..95283eb 100644
--- a/library/tzdata/Europe/Vienna
+++ b/library/tzdata/Europe/Vienna
@@ -1,8 +1,8 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Europe/Vienna) {
- {-9223372036854775808 3920 0 LMT}
- {-2422055120 3600 0 CET}
+ {-9223372036854775808 3921 0 LMT}
+ {-2422055121 3600 0 CET}
{-1693706400 7200 1 CEST}
{-1680483600 3600 0 CET}
{-1663455600 7200 1 CEST}
diff --git a/library/tzdata/Europe/Volgograd b/library/tzdata/Europe/Volgograd
index 49cf1e5..c3f148f 100755..100644
--- a/library/tzdata/Europe/Volgograd
+++ b/library/tzdata/Europe/Volgograd
@@ -66,182 +66,5 @@ set TZData(:Europe/Volgograd) {
{1256425200 10800 0 VOLT}
{1269730800 14400 1 VOLST}
{1288479600 10800 0 VOLT}
- {1301180400 14400 1 VOLST}
- {1319929200 10800 0 VOLT}
- {1332630000 14400 1 VOLST}
- {1351378800 10800 0 VOLT}
- {1364684400 14400 1 VOLST}
- {1382828400 10800 0 VOLT}
- {1396134000 14400 1 VOLST}
- {1414278000 10800 0 VOLT}
- {1427583600 14400 1 VOLST}
- {1445727600 10800 0 VOLT}
- {1459033200 14400 1 VOLST}
- {1477782000 10800 0 VOLT}
- {1490482800 14400 1 VOLST}
- {1509231600 10800 0 VOLT}
- {1521932400 14400 1 VOLST}
- {1540681200 10800 0 VOLT}
- {1553986800 14400 1 VOLST}
- {1572130800 10800 0 VOLT}
- {1585436400 14400 1 VOLST}
- {1603580400 10800 0 VOLT}
- {1616886000 14400 1 VOLST}
- {1635634800 10800 0 VOLT}
- {1648335600 14400 1 VOLST}
- {1667084400 10800 0 VOLT}
- {1679785200 14400 1 VOLST}
- {1698534000 10800 0 VOLT}
- {1711839600 14400 1 VOLST}
- {1729983600 10800 0 VOLT}
- {1743289200 14400 1 VOLST}
- {1761433200 10800 0 VOLT}
- {1774738800 14400 1 VOLST}
- {1792882800 10800 0 VOLT}
- {1806188400 14400 1 VOLST}
- {1824937200 10800 0 VOLT}
- {1837638000 14400 1 VOLST}
- {1856386800 10800 0 VOLT}
- {1869087600 14400 1 VOLST}
- {1887836400 10800 0 VOLT}
- {1901142000 14400 1 VOLST}
- {1919286000 10800 0 VOLT}
- {1932591600 14400 1 VOLST}
- {1950735600 10800 0 VOLT}
- {1964041200 14400 1 VOLST}
- {1982790000 10800 0 VOLT}
- {1995490800 14400 1 VOLST}
- {2014239600 10800 0 VOLT}
- {2026940400 14400 1 VOLST}
- {2045689200 10800 0 VOLT}
- {2058390000 14400 1 VOLST}
- {2077138800 10800 0 VOLT}
- {2090444400 14400 1 VOLST}
- {2108588400 10800 0 VOLT}
- {2121894000 14400 1 VOLST}
- {2140038000 10800 0 VOLT}
- {2153343600 14400 1 VOLST}
- {2172092400 10800 0 VOLT}
- {2184793200 14400 1 VOLST}
- {2203542000 10800 0 VOLT}
- {2216242800 14400 1 VOLST}
- {2234991600 10800 0 VOLT}
- {2248297200 14400 1 VOLST}
- {2266441200 10800 0 VOLT}
- {2279746800 14400 1 VOLST}
- {2297890800 10800 0 VOLT}
- {2311196400 14400 1 VOLST}
- {2329340400 10800 0 VOLT}
- {2342646000 14400 1 VOLST}
- {2361394800 10800 0 VOLT}
- {2374095600 14400 1 VOLST}
- {2392844400 10800 0 VOLT}
- {2405545200 14400 1 VOLST}
- {2424294000 10800 0 VOLT}
- {2437599600 14400 1 VOLST}
- {2455743600 10800 0 VOLT}
- {2469049200 14400 1 VOLST}
- {2487193200 10800 0 VOLT}
- {2500498800 14400 1 VOLST}
- {2519247600 10800 0 VOLT}
- {2531948400 14400 1 VOLST}
- {2550697200 10800 0 VOLT}
- {2563398000 14400 1 VOLST}
- {2582146800 10800 0 VOLT}
- {2595452400 14400 1 VOLST}
- {2613596400 10800 0 VOLT}
- {2626902000 14400 1 VOLST}
- {2645046000 10800 0 VOLT}
- {2658351600 14400 1 VOLST}
- {2676495600 10800 0 VOLT}
- {2689801200 14400 1 VOLST}
- {2708550000 10800 0 VOLT}
- {2721250800 14400 1 VOLST}
- {2739999600 10800 0 VOLT}
- {2752700400 14400 1 VOLST}
- {2771449200 10800 0 VOLT}
- {2784754800 14400 1 VOLST}
- {2802898800 10800 0 VOLT}
- {2816204400 14400 1 VOLST}
- {2834348400 10800 0 VOLT}
- {2847654000 14400 1 VOLST}
- {2866402800 10800 0 VOLT}
- {2879103600 14400 1 VOLST}
- {2897852400 10800 0 VOLT}
- {2910553200 14400 1 VOLST}
- {2929302000 10800 0 VOLT}
- {2942002800 14400 1 VOLST}
- {2960751600 10800 0 VOLT}
- {2974057200 14400 1 VOLST}
- {2992201200 10800 0 VOLT}
- {3005506800 14400 1 VOLST}
- {3023650800 10800 0 VOLT}
- {3036956400 14400 1 VOLST}
- {3055705200 10800 0 VOLT}
- {3068406000 14400 1 VOLST}
- {3087154800 10800 0 VOLT}
- {3099855600 14400 1 VOLST}
- {3118604400 10800 0 VOLT}
- {3131910000 14400 1 VOLST}
- {3150054000 10800 0 VOLT}
- {3163359600 14400 1 VOLST}
- {3181503600 10800 0 VOLT}
- {3194809200 14400 1 VOLST}
- {3212953200 10800 0 VOLT}
- {3226258800 14400 1 VOLST}
- {3245007600 10800 0 VOLT}
- {3257708400 14400 1 VOLST}
- {3276457200 10800 0 VOLT}
- {3289158000 14400 1 VOLST}
- {3307906800 10800 0 VOLT}
- {3321212400 14400 1 VOLST}
- {3339356400 10800 0 VOLT}
- {3352662000 14400 1 VOLST}
- {3370806000 10800 0 VOLT}
- {3384111600 14400 1 VOLST}
- {3402860400 10800 0 VOLT}
- {3415561200 14400 1 VOLST}
- {3434310000 10800 0 VOLT}
- {3447010800 14400 1 VOLST}
- {3465759600 10800 0 VOLT}
- {3479065200 14400 1 VOLST}
- {3497209200 10800 0 VOLT}
- {3510514800 14400 1 VOLST}
- {3528658800 10800 0 VOLT}
- {3541964400 14400 1 VOLST}
- {3560108400 10800 0 VOLT}
- {3573414000 14400 1 VOLST}
- {3592162800 10800 0 VOLT}
- {3604863600 14400 1 VOLST}
- {3623612400 10800 0 VOLT}
- {3636313200 14400 1 VOLST}
- {3655062000 10800 0 VOLT}
- {3668367600 14400 1 VOLST}
- {3686511600 10800 0 VOLT}
- {3699817200 14400 1 VOLST}
- {3717961200 10800 0 VOLT}
- {3731266800 14400 1 VOLST}
- {3750015600 10800 0 VOLT}
- {3762716400 14400 1 VOLST}
- {3781465200 10800 0 VOLT}
- {3794166000 14400 1 VOLST}
- {3812914800 10800 0 VOLT}
- {3825615600 14400 1 VOLST}
- {3844364400 10800 0 VOLT}
- {3857670000 14400 1 VOLST}
- {3875814000 10800 0 VOLT}
- {3889119600 14400 1 VOLST}
- {3907263600 10800 0 VOLT}
- {3920569200 14400 1 VOLST}
- {3939318000 10800 0 VOLT}
- {3952018800 14400 1 VOLST}
- {3970767600 10800 0 VOLT}
- {3983468400 14400 1 VOLST}
- {4002217200 10800 0 VOLT}
- {4015522800 14400 1 VOLST}
- {4033666800 10800 0 VOLT}
- {4046972400 14400 1 VOLST}
- {4065116400 10800 0 VOLT}
- {4078422000 14400 1 VOLST}
- {4096566000 10800 0 VOLT}
+ {1301180400 14400 0 VOLT}
}
diff --git a/library/tzdata/Europe/Zurich b/library/tzdata/Europe/Zurich
index b6b44d1..87a20db 100644
--- a/library/tzdata/Europe/Zurich
+++ b/library/tzdata/Europe/Zurich
@@ -2,14 +2,12 @@
set TZData(:Europe/Zurich) {
{-9223372036854775808 2048 0 LMT}
- {-3827954048 1784 0 BMT}
- {-2385246584 3600 0 CET}
- {-920336400 7200 1 CEST}
- {-915242400 3600 0 CET}
- {-904518000 7200 1 CEST}
- {-891223200 3600 0 CET}
- {-873068400 7200 1 CEST}
- {-859773600 3600 0 CET}
+ {-3675198848 1786 0 BMT}
+ {-2385246586 3600 0 CET}
+ {-904435200 7200 1 CEST}
+ {-891129600 3600 0 CET}
+ {-872985600 7200 1 CEST}
+ {-859680000 3600 0 CET}
{347151600 3600 0 CET}
{354675600 7200 1 CEST}
{370400400 3600 0 CET}
diff --git a/library/tzdata/Indian/Mauritius b/library/tzdata/Indian/Mauritius
index 69fe8fe..a9c07eb 100644
--- a/library/tzdata/Indian/Mauritius
+++ b/library/tzdata/Indian/Mauritius
@@ -6,186 +6,5 @@ set TZData(:Indian/Mauritius) {
{403041600 18000 1 MUST}
{417034800 14400 0 MUT}
{1224972000 18000 1 MUST}
- {1238277600 14400 0 MUT}
- {1256421600 18000 1 MUST}
- {1269727200 14400 0 MUT}
- {1288476000 18000 1 MUST}
- {1301176800 14400 0 MUT}
- {1319925600 18000 1 MUST}
- {1332626400 14400 0 MUT}
- {1351375200 18000 1 MUST}
- {1364680800 14400 0 MUT}
- {1382824800 18000 1 MUST}
- {1396130400 14400 0 MUT}
- {1414274400 18000 1 MUST}
- {1427580000 14400 0 MUT}
- {1445724000 18000 1 MUST}
- {1459029600 14400 0 MUT}
- {1477778400 18000 1 MUST}
- {1490479200 14400 0 MUT}
- {1509228000 18000 1 MUST}
- {1521928800 14400 0 MUT}
- {1540677600 18000 1 MUST}
- {1553983200 14400 0 MUT}
- {1572127200 18000 1 MUST}
- {1585432800 14400 0 MUT}
- {1603576800 18000 1 MUST}
- {1616882400 14400 0 MUT}
- {1635631200 18000 1 MUST}
- {1648332000 14400 0 MUT}
- {1667080800 18000 1 MUST}
- {1679781600 14400 0 MUT}
- {1698530400 18000 1 MUST}
- {1711836000 14400 0 MUT}
- {1729980000 18000 1 MUST}
- {1743285600 14400 0 MUT}
- {1761429600 18000 1 MUST}
- {1774735200 14400 0 MUT}
- {1792879200 18000 1 MUST}
- {1806184800 14400 0 MUT}
- {1824933600 18000 1 MUST}
- {1837634400 14400 0 MUT}
- {1856383200 18000 1 MUST}
- {1869084000 14400 0 MUT}
- {1887832800 18000 1 MUST}
- {1901138400 14400 0 MUT}
- {1919282400 18000 1 MUST}
- {1932588000 14400 0 MUT}
- {1950732000 18000 1 MUST}
- {1964037600 14400 0 MUT}
- {1982786400 18000 1 MUST}
- {1995487200 14400 0 MUT}
- {2014236000 18000 1 MUST}
- {2026936800 14400 0 MUT}
- {2045685600 18000 1 MUST}
- {2058386400 14400 0 MUT}
- {2077135200 18000 1 MUST}
- {2090440800 14400 0 MUT}
- {2108584800 18000 1 MUST}
- {2121890400 14400 0 MUT}
- {2140034400 18000 1 MUST}
- {2153340000 14400 0 MUT}
- {2172088800 18000 1 MUST}
- {2184789600 14400 0 MUT}
- {2203538400 18000 1 MUST}
- {2216239200 14400 0 MUT}
- {2234988000 18000 1 MUST}
- {2248293600 14400 0 MUT}
- {2266437600 18000 1 MUST}
- {2279743200 14400 0 MUT}
- {2297887200 18000 1 MUST}
- {2311192800 14400 0 MUT}
- {2329336800 18000 1 MUST}
- {2342642400 14400 0 MUT}
- {2361391200 18000 1 MUST}
- {2374092000 14400 0 MUT}
- {2392840800 18000 1 MUST}
- {2405541600 14400 0 MUT}
- {2424290400 18000 1 MUST}
- {2437596000 14400 0 MUT}
- {2455740000 18000 1 MUST}
- {2469045600 14400 0 MUT}
- {2487189600 18000 1 MUST}
- {2500495200 14400 0 MUT}
- {2519244000 18000 1 MUST}
- {2531944800 14400 0 MUT}
- {2550693600 18000 1 MUST}
- {2563394400 14400 0 MUT}
- {2582143200 18000 1 MUST}
- {2595448800 14400 0 MUT}
- {2613592800 18000 1 MUST}
- {2626898400 14400 0 MUT}
- {2645042400 18000 1 MUST}
- {2658348000 14400 0 MUT}
- {2676492000 18000 1 MUST}
- {2689797600 14400 0 MUT}
- {2708546400 18000 1 MUST}
- {2721247200 14400 0 MUT}
- {2739996000 18000 1 MUST}
- {2752696800 14400 0 MUT}
- {2771445600 18000 1 MUST}
- {2784751200 14400 0 MUT}
- {2802895200 18000 1 MUST}
- {2816200800 14400 0 MUT}
- {2834344800 18000 1 MUST}
- {2847650400 14400 0 MUT}
- {2866399200 18000 1 MUST}
- {2879100000 14400 0 MUT}
- {2897848800 18000 1 MUST}
- {2910549600 14400 0 MUT}
- {2929298400 18000 1 MUST}
- {2941999200 14400 0 MUT}
- {2960748000 18000 1 MUST}
- {2974053600 14400 0 MUT}
- {2992197600 18000 1 MUST}
- {3005503200 14400 0 MUT}
- {3023647200 18000 1 MUST}
- {3036952800 14400 0 MUT}
- {3055701600 18000 1 MUST}
- {3068402400 14400 0 MUT}
- {3087151200 18000 1 MUST}
- {3099852000 14400 0 MUT}
- {3118600800 18000 1 MUST}
- {3131906400 14400 0 MUT}
- {3150050400 18000 1 MUST}
- {3163356000 14400 0 MUT}
- {3181500000 18000 1 MUST}
- {3194805600 14400 0 MUT}
- {3212949600 18000 1 MUST}
- {3226255200 14400 0 MUT}
- {3245004000 18000 1 MUST}
- {3257704800 14400 0 MUT}
- {3276453600 18000 1 MUST}
- {3289154400 14400 0 MUT}
- {3307903200 18000 1 MUST}
- {3321208800 14400 0 MUT}
- {3339352800 18000 1 MUST}
- {3352658400 14400 0 MUT}
- {3370802400 18000 1 MUST}
- {3384108000 14400 0 MUT}
- {3402856800 18000 1 MUST}
- {3415557600 14400 0 MUT}
- {3434306400 18000 1 MUST}
- {3447007200 14400 0 MUT}
- {3465756000 18000 1 MUST}
- {3479061600 14400 0 MUT}
- {3497205600 18000 1 MUST}
- {3510511200 14400 0 MUT}
- {3528655200 18000 1 MUST}
- {3541960800 14400 0 MUT}
- {3560104800 18000 1 MUST}
- {3573410400 14400 0 MUT}
- {3592159200 18000 1 MUST}
- {3604860000 14400 0 MUT}
- {3623608800 18000 1 MUST}
- {3636309600 14400 0 MUT}
- {3655058400 18000 1 MUST}
- {3668364000 14400 0 MUT}
- {3686508000 18000 1 MUST}
- {3699813600 14400 0 MUT}
- {3717957600 18000 1 MUST}
- {3731263200 14400 0 MUT}
- {3750012000 18000 1 MUST}
- {3762712800 14400 0 MUT}
- {3781461600 18000 1 MUST}
- {3794162400 14400 0 MUT}
- {3812911200 18000 1 MUST}
- {3825612000 14400 0 MUT}
- {3844360800 18000 1 MUST}
- {3857666400 14400 0 MUT}
- {3875810400 18000 1 MUST}
- {3889116000 14400 0 MUT}
- {3907260000 18000 1 MUST}
- {3920565600 14400 0 MUT}
- {3939314400 18000 1 MUST}
- {3952015200 14400 0 MUT}
- {3970764000 18000 1 MUST}
- {3983464800 14400 0 MUT}
- {4002213600 18000 1 MUST}
- {4015519200 14400 0 MUT}
- {4033663200 18000 1 MUST}
- {4046968800 14400 0 MUT}
- {4065112800 18000 1 MUST}
- {4078418400 14400 0 MUT}
- {4096562400 18000 1 MUST}
+ {1238274000 14400 0 MUT}
}
diff --git a/library/tzdata/Pacific/Apia b/library/tzdata/Pacific/Apia
index 5d34ed1..e6f33ad 100644
--- a/library/tzdata/Pacific/Apia
+++ b/library/tzdata/Pacific/Apia
@@ -5,4 +5,184 @@ set TZData(:Pacific/Apia) {
{-2855737984 -41216 0 LMT}
{-1861878784 -41400 0 SAMT}
{-631110600 -39600 0 WST}
+ {1285498800 -36000 1 WSDT}
+ {1301752800 -39600 0 WST}
+ {1316872800 -36000 1 WSDT}
+ {1325239200 50400 1 WSDT}
+ {1333202400 46800 0 WST}
+ {1348927200 50400 1 WSDT}
+ {1365256800 46800 0 WST}
+ {1380376800 50400 1 WSDT}
+ {1396706400 46800 0 WST}
+ {1411826400 50400 1 WSDT}
+ {1428156000 46800 0 WST}
+ {1443276000 50400 1 WSDT}
+ {1459605600 46800 0 WST}
+ {1474725600 50400 1 WSDT}
+ {1491055200 46800 0 WST}
+ {1506175200 50400 1 WSDT}
+ {1522504800 46800 0 WST}
+ {1538229600 50400 1 WSDT}
+ {1554559200 46800 0 WST}
+ {1569679200 50400 1 WSDT}
+ {1586008800 46800 0 WST}
+ {1601128800 50400 1 WSDT}
+ {1617458400 46800 0 WST}
+ {1632578400 50400 1 WSDT}
+ {1648908000 46800 0 WST}
+ {1664028000 50400 1 WSDT}
+ {1680357600 46800 0 WST}
+ {1695477600 50400 1 WSDT}
+ {1712412000 46800 0 WST}
+ {1727532000 50400 1 WSDT}
+ {1743861600 46800 0 WST}
+ {1758981600 50400 1 WSDT}
+ {1775311200 46800 0 WST}
+ {1790431200 50400 1 WSDT}
+ {1806760800 46800 0 WST}
+ {1821880800 50400 1 WSDT}
+ {1838210400 46800 0 WST}
+ {1853330400 50400 1 WSDT}
+ {1869660000 46800 0 WST}
+ {1885384800 50400 1 WSDT}
+ {1901714400 46800 0 WST}
+ {1916834400 50400 1 WSDT}
+ {1933164000 46800 0 WST}
+ {1948284000 50400 1 WSDT}
+ {1964613600 46800 0 WST}
+ {1979733600 50400 1 WSDT}
+ {1996063200 46800 0 WST}
+ {2011183200 50400 1 WSDT}
+ {2027512800 46800 0 WST}
+ {2042632800 50400 1 WSDT}
+ {2058962400 46800 0 WST}
+ {2074687200 50400 1 WSDT}
+ {2091016800 46800 0 WST}
+ {2106136800 50400 1 WSDT}
+ {2122466400 46800 0 WST}
+ {2137586400 50400 1 WSDT}
+ {2153916000 46800 0 WST}
+ {2169036000 50400 1 WSDT}
+ {2185365600 46800 0 WST}
+ {2200485600 50400 1 WSDT}
+ {2216815200 46800 0 WST}
+ {2232540000 50400 1 WSDT}
+ {2248869600 46800 0 WST}
+ {2263989600 50400 1 WSDT}
+ {2280319200 46800 0 WST}
+ {2295439200 50400 1 WSDT}
+ {2311768800 46800 0 WST}
+ {2326888800 50400 1 WSDT}
+ {2343218400 46800 0 WST}
+ {2358338400 50400 1 WSDT}
+ {2374668000 46800 0 WST}
+ {2389788000 50400 1 WSDT}
+ {2406117600 46800 0 WST}
+ {2421842400 50400 1 WSDT}
+ {2438172000 46800 0 WST}
+ {2453292000 50400 1 WSDT}
+ {2469621600 46800 0 WST}
+ {2484741600 50400 1 WSDT}
+ {2501071200 46800 0 WST}
+ {2516191200 50400 1 WSDT}
+ {2532520800 46800 0 WST}
+ {2547640800 50400 1 WSDT}
+ {2563970400 46800 0 WST}
+ {2579090400 50400 1 WSDT}
+ {2596024800 46800 0 WST}
+ {2611144800 50400 1 WSDT}
+ {2627474400 46800 0 WST}
+ {2642594400 50400 1 WSDT}
+ {2658924000 46800 0 WST}
+ {2674044000 50400 1 WSDT}
+ {2690373600 46800 0 WST}
+ {2705493600 50400 1 WSDT}
+ {2721823200 46800 0 WST}
+ {2736943200 50400 1 WSDT}
+ {2753272800 46800 0 WST}
+ {2768997600 50400 1 WSDT}
+ {2785327200 46800 0 WST}
+ {2800447200 50400 1 WSDT}
+ {2816776800 46800 0 WST}
+ {2831896800 50400 1 WSDT}
+ {2848226400 46800 0 WST}
+ {2863346400 50400 1 WSDT}
+ {2879676000 46800 0 WST}
+ {2894796000 50400 1 WSDT}
+ {2911125600 46800 0 WST}
+ {2926245600 50400 1 WSDT}
+ {2942575200 46800 0 WST}
+ {2958300000 50400 1 WSDT}
+ {2974629600 46800 0 WST}
+ {2989749600 50400 1 WSDT}
+ {3006079200 46800 0 WST}
+ {3021199200 50400 1 WSDT}
+ {3037528800 46800 0 WST}
+ {3052648800 50400 1 WSDT}
+ {3068978400 46800 0 WST}
+ {3084098400 50400 1 WSDT}
+ {3100428000 46800 0 WST}
+ {3116152800 50400 1 WSDT}
+ {3132482400 46800 0 WST}
+ {3147602400 50400 1 WSDT}
+ {3163932000 46800 0 WST}
+ {3179052000 50400 1 WSDT}
+ {3195381600 46800 0 WST}
+ {3210501600 50400 1 WSDT}
+ {3226831200 46800 0 WST}
+ {3241951200 50400 1 WSDT}
+ {3258280800 46800 0 WST}
+ {3273400800 50400 1 WSDT}
+ {3289730400 46800 0 WST}
+ {3305455200 50400 1 WSDT}
+ {3321784800 46800 0 WST}
+ {3336904800 50400 1 WSDT}
+ {3353234400 46800 0 WST}
+ {3368354400 50400 1 WSDT}
+ {3384684000 46800 0 WST}
+ {3399804000 50400 1 WSDT}
+ {3416133600 46800 0 WST}
+ {3431253600 50400 1 WSDT}
+ {3447583200 46800 0 WST}
+ {3462703200 50400 1 WSDT}
+ {3479637600 46800 0 WST}
+ {3494757600 50400 1 WSDT}
+ {3511087200 46800 0 WST}
+ {3526207200 50400 1 WSDT}
+ {3542536800 46800 0 WST}
+ {3557656800 50400 1 WSDT}
+ {3573986400 46800 0 WST}
+ {3589106400 50400 1 WSDT}
+ {3605436000 46800 0 WST}
+ {3620556000 50400 1 WSDT}
+ {3636885600 46800 0 WST}
+ {3652610400 50400 1 WSDT}
+ {3668940000 46800 0 WST}
+ {3684060000 50400 1 WSDT}
+ {3700389600 46800 0 WST}
+ {3715509600 50400 1 WSDT}
+ {3731839200 46800 0 WST}
+ {3746959200 50400 1 WSDT}
+ {3763288800 46800 0 WST}
+ {3778408800 50400 1 WSDT}
+ {3794738400 46800 0 WST}
+ {3809858400 50400 1 WSDT}
+ {3826188000 46800 0 WST}
+ {3841912800 50400 1 WSDT}
+ {3858242400 46800 0 WST}
+ {3873362400 50400 1 WSDT}
+ {3889692000 46800 0 WST}
+ {3904812000 50400 1 WSDT}
+ {3921141600 46800 0 WST}
+ {3936261600 50400 1 WSDT}
+ {3952591200 46800 0 WST}
+ {3967711200 50400 1 WSDT}
+ {3984040800 46800 0 WST}
+ {3999765600 50400 1 WSDT}
+ {4016095200 46800 0 WST}
+ {4031215200 50400 1 WSDT}
+ {4047544800 46800 0 WST}
+ {4062664800 50400 1 WSDT}
+ {4078994400 46800 0 WST}
+ {4094114400 50400 1 WSDT}
}
diff --git a/library/tzdata/Pacific/Chuuk b/library/tzdata/Pacific/Chuuk
new file mode 100644
index 0000000..70b14b2
--- /dev/null
+++ b/library/tzdata/Pacific/Chuuk
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Chuuk) {
+ {-9223372036854775808 36428 0 LMT}
+ {-2177489228 36000 0 CHUT}
+}
diff --git a/library/tzdata/Pacific/Easter b/library/tzdata/Pacific/Easter
index ac00f5e..000c6d1 100644
--- a/library/tzdata/Pacific/Easter
+++ b/library/tzdata/Pacific/Easter
@@ -92,184 +92,184 @@ set TZData(:Pacific/Easter) {
{1223784000 -18000 1 EASST}
{1237086000 -21600 0 EAST}
{1255233600 -18000 1 EASST}
- {1268535600 -21600 0 EAST}
+ {1270350000 -21600 0 EAST}
{1286683200 -18000 1 EASST}
- {1299985200 -21600 0 EAST}
- {1318132800 -18000 1 EASST}
- {1331434800 -21600 0 EAST}
- {1350187200 -18000 1 EASST}
- {1362884400 -21600 0 EAST}
- {1381636800 -18000 1 EASST}
- {1394334000 -21600 0 EAST}
- {1413086400 -18000 1 EASST}
- {1426388400 -21600 0 EAST}
- {1444536000 -18000 1 EASST}
- {1457838000 -21600 0 EAST}
- {1475985600 -18000 1 EASST}
- {1489287600 -21600 0 EAST}
- {1508040000 -18000 1 EASST}
- {1520737200 -21600 0 EAST}
- {1539489600 -18000 1 EASST}
- {1552186800 -21600 0 EAST}
- {1570939200 -18000 1 EASST}
- {1584241200 -21600 0 EAST}
- {1602388800 -18000 1 EASST}
- {1615690800 -21600 0 EAST}
- {1633838400 -18000 1 EASST}
- {1647140400 -21600 0 EAST}
- {1665288000 -18000 1 EASST}
- {1678590000 -21600 0 EAST}
- {1697342400 -18000 1 EASST}
- {1710039600 -21600 0 EAST}
- {1728792000 -18000 1 EASST}
- {1741489200 -21600 0 EAST}
- {1760241600 -18000 1 EASST}
- {1773543600 -21600 0 EAST}
- {1791691200 -18000 1 EASST}
- {1804993200 -21600 0 EAST}
- {1823140800 -18000 1 EASST}
- {1836442800 -21600 0 EAST}
- {1855195200 -18000 1 EASST}
- {1867892400 -21600 0 EAST}
- {1886644800 -18000 1 EASST}
- {1899342000 -21600 0 EAST}
- {1918094400 -18000 1 EASST}
- {1930791600 -21600 0 EAST}
- {1949544000 -18000 1 EASST}
- {1962846000 -21600 0 EAST}
- {1980993600 -18000 1 EASST}
- {1994295600 -21600 0 EAST}
- {2012443200 -18000 1 EASST}
- {2025745200 -21600 0 EAST}
- {2044497600 -18000 1 EASST}
- {2057194800 -21600 0 EAST}
- {2075947200 -18000 1 EASST}
- {2088644400 -21600 0 EAST}
- {2107396800 -18000 1 EASST}
- {2120698800 -21600 0 EAST}
- {2138846400 -18000 1 EASST}
- {2152148400 -21600 0 EAST}
- {2170296000 -18000 1 EASST}
- {2183598000 -21600 0 EAST}
- {2201745600 -18000 1 EASST}
- {2215047600 -21600 0 EAST}
- {2233800000 -18000 1 EASST}
- {2246497200 -21600 0 EAST}
- {2265249600 -18000 1 EASST}
- {2277946800 -21600 0 EAST}
- {2296699200 -18000 1 EASST}
- {2310001200 -21600 0 EAST}
- {2328148800 -18000 1 EASST}
- {2341450800 -21600 0 EAST}
- {2359598400 -18000 1 EASST}
- {2372900400 -21600 0 EAST}
- {2391652800 -18000 1 EASST}
- {2404350000 -21600 0 EAST}
- {2423102400 -18000 1 EASST}
- {2435799600 -21600 0 EAST}
- {2454552000 -18000 1 EASST}
- {2467854000 -21600 0 EAST}
- {2486001600 -18000 1 EASST}
- {2499303600 -21600 0 EAST}
- {2517451200 -18000 1 EASST}
- {2530753200 -21600 0 EAST}
- {2548900800 -18000 1 EASST}
- {2562202800 -21600 0 EAST}
- {2580955200 -18000 1 EASST}
- {2593652400 -21600 0 EAST}
- {2612404800 -18000 1 EASST}
- {2625102000 -21600 0 EAST}
- {2643854400 -18000 1 EASST}
- {2657156400 -21600 0 EAST}
- {2675304000 -18000 1 EASST}
- {2688606000 -21600 0 EAST}
- {2706753600 -18000 1 EASST}
- {2720055600 -21600 0 EAST}
- {2738808000 -18000 1 EASST}
- {2751505200 -21600 0 EAST}
- {2770257600 -18000 1 EASST}
- {2782954800 -21600 0 EAST}
- {2801707200 -18000 1 EASST}
- {2814404400 -21600 0 EAST}
- {2833156800 -18000 1 EASST}
- {2846458800 -21600 0 EAST}
- {2864606400 -18000 1 EASST}
- {2877908400 -21600 0 EAST}
- {2896056000 -18000 1 EASST}
- {2909358000 -21600 0 EAST}
- {2928110400 -18000 1 EASST}
- {2940807600 -21600 0 EAST}
- {2959560000 -18000 1 EASST}
- {2972257200 -21600 0 EAST}
- {2991009600 -18000 1 EASST}
- {3004311600 -21600 0 EAST}
- {3022459200 -18000 1 EASST}
- {3035761200 -21600 0 EAST}
- {3053908800 -18000 1 EASST}
- {3067210800 -21600 0 EAST}
- {3085358400 -18000 1 EASST}
- {3098660400 -21600 0 EAST}
- {3117412800 -18000 1 EASST}
- {3130110000 -21600 0 EAST}
- {3148862400 -18000 1 EASST}
- {3161559600 -21600 0 EAST}
- {3180312000 -18000 1 EASST}
- {3193614000 -21600 0 EAST}
- {3211761600 -18000 1 EASST}
- {3225063600 -21600 0 EAST}
- {3243211200 -18000 1 EASST}
- {3256513200 -21600 0 EAST}
- {3275265600 -18000 1 EASST}
- {3287962800 -21600 0 EAST}
- {3306715200 -18000 1 EASST}
- {3319412400 -21600 0 EAST}
- {3338164800 -18000 1 EASST}
- {3351466800 -21600 0 EAST}
- {3369614400 -18000 1 EASST}
- {3382916400 -21600 0 EAST}
- {3401064000 -18000 1 EASST}
- {3414366000 -21600 0 EAST}
- {3432513600 -18000 1 EASST}
- {3445815600 -21600 0 EAST}
- {3464568000 -18000 1 EASST}
- {3477265200 -21600 0 EAST}
- {3496017600 -18000 1 EASST}
- {3508714800 -21600 0 EAST}
- {3527467200 -18000 1 EASST}
- {3540769200 -21600 0 EAST}
- {3558916800 -18000 1 EASST}
- {3572218800 -21600 0 EAST}
- {3590366400 -18000 1 EASST}
- {3603668400 -21600 0 EAST}
- {3622420800 -18000 1 EASST}
- {3635118000 -21600 0 EAST}
- {3653870400 -18000 1 EASST}
- {3666567600 -21600 0 EAST}
- {3685320000 -18000 1 EASST}
- {3698017200 -21600 0 EAST}
- {3716769600 -18000 1 EASST}
- {3730071600 -21600 0 EAST}
- {3748219200 -18000 1 EASST}
- {3761521200 -21600 0 EAST}
- {3779668800 -18000 1 EASST}
- {3792970800 -21600 0 EAST}
- {3811723200 -18000 1 EASST}
- {3824420400 -21600 0 EAST}
- {3843172800 -18000 1 EASST}
- {3855870000 -21600 0 EAST}
- {3874622400 -18000 1 EASST}
- {3887924400 -21600 0 EAST}
- {3906072000 -18000 1 EASST}
- {3919374000 -21600 0 EAST}
- {3937521600 -18000 1 EASST}
- {3950823600 -21600 0 EAST}
- {3968971200 -18000 1 EASST}
- {3982273200 -21600 0 EAST}
- {4001025600 -18000 1 EASST}
- {4013722800 -21600 0 EAST}
- {4032475200 -18000 1 EASST}
- {4045172400 -21600 0 EAST}
- {4063924800 -18000 1 EASST}
- {4077226800 -21600 0 EAST}
- {4095374400 -18000 1 EASST}
+ {1304823600 -21600 0 EAST}
+ {1313899200 -18000 1 EASST}
+ {1335668400 -21600 0 EAST}
+ {1346558400 -18000 1 EASST}
+ {1367118000 -21600 0 EAST}
+ {1378612800 -18000 1 EASST}
+ {1398567600 -21600 0 EAST}
+ {1410062400 -18000 1 EASST}
+ {1430017200 -21600 0 EAST}
+ {1441512000 -18000 1 EASST}
+ {1461466800 -21600 0 EAST}
+ {1472961600 -18000 1 EASST}
+ {1492916400 -21600 0 EAST}
+ {1504411200 -18000 1 EASST}
+ {1524970800 -21600 0 EAST}
+ {1535860800 -18000 1 EASST}
+ {1556420400 -21600 0 EAST}
+ {1567915200 -18000 1 EASST}
+ {1587870000 -21600 0 EAST}
+ {1599364800 -18000 1 EASST}
+ {1619319600 -21600 0 EAST}
+ {1630814400 -18000 1 EASST}
+ {1650769200 -21600 0 EAST}
+ {1662264000 -18000 1 EASST}
+ {1682218800 -21600 0 EAST}
+ {1693713600 -18000 1 EASST}
+ {1714273200 -21600 0 EAST}
+ {1725768000 -18000 1 EASST}
+ {1745722800 -21600 0 EAST}
+ {1757217600 -18000 1 EASST}
+ {1777172400 -21600 0 EAST}
+ {1788667200 -18000 1 EASST}
+ {1808622000 -21600 0 EAST}
+ {1820116800 -18000 1 EASST}
+ {1840071600 -21600 0 EAST}
+ {1851566400 -18000 1 EASST}
+ {1872126000 -21600 0 EAST}
+ {1883016000 -18000 1 EASST}
+ {1903575600 -21600 0 EAST}
+ {1915070400 -18000 1 EASST}
+ {1935025200 -21600 0 EAST}
+ {1946520000 -18000 1 EASST}
+ {1966474800 -21600 0 EAST}
+ {1977969600 -18000 1 EASST}
+ {1997924400 -21600 0 EAST}
+ {2009419200 -18000 1 EASST}
+ {2029374000 -21600 0 EAST}
+ {2040868800 -18000 1 EASST}
+ {2061428400 -21600 0 EAST}
+ {2072318400 -18000 1 EASST}
+ {2092878000 -21600 0 EAST}
+ {2104372800 -18000 1 EASST}
+ {2124327600 -21600 0 EAST}
+ {2135822400 -18000 1 EASST}
+ {2155777200 -21600 0 EAST}
+ {2167272000 -18000 1 EASST}
+ {2187226800 -21600 0 EAST}
+ {2198721600 -18000 1 EASST}
+ {2219281200 -21600 0 EAST}
+ {2230171200 -18000 1 EASST}
+ {2250730800 -21600 0 EAST}
+ {2262225600 -18000 1 EASST}
+ {2282180400 -21600 0 EAST}
+ {2293675200 -18000 1 EASST}
+ {2313630000 -21600 0 EAST}
+ {2325124800 -18000 1 EASST}
+ {2345079600 -21600 0 EAST}
+ {2356574400 -18000 1 EASST}
+ {2376529200 -21600 0 EAST}
+ {2388024000 -18000 1 EASST}
+ {2408583600 -21600 0 EAST}
+ {2419473600 -18000 1 EASST}
+ {2440033200 -21600 0 EAST}
+ {2451528000 -18000 1 EASST}
+ {2471482800 -21600 0 EAST}
+ {2482977600 -18000 1 EASST}
+ {2502932400 -21600 0 EAST}
+ {2514427200 -18000 1 EASST}
+ {2534382000 -21600 0 EAST}
+ {2545876800 -18000 1 EASST}
+ {2565831600 -21600 0 EAST}
+ {2577326400 -18000 1 EASST}
+ {2597886000 -21600 0 EAST}
+ {2609380800 -18000 1 EASST}
+ {2629335600 -21600 0 EAST}
+ {2640830400 -18000 1 EASST}
+ {2660785200 -21600 0 EAST}
+ {2672280000 -18000 1 EASST}
+ {2692234800 -21600 0 EAST}
+ {2703729600 -18000 1 EASST}
+ {2723684400 -21600 0 EAST}
+ {2735179200 -18000 1 EASST}
+ {2755738800 -21600 0 EAST}
+ {2766628800 -18000 1 EASST}
+ {2787188400 -21600 0 EAST}
+ {2798683200 -18000 1 EASST}
+ {2818638000 -21600 0 EAST}
+ {2830132800 -18000 1 EASST}
+ {2850087600 -21600 0 EAST}
+ {2861582400 -18000 1 EASST}
+ {2881537200 -21600 0 EAST}
+ {2893032000 -18000 1 EASST}
+ {2912986800 -21600 0 EAST}
+ {2924481600 -18000 1 EASST}
+ {2945041200 -21600 0 EAST}
+ {2955931200 -18000 1 EASST}
+ {2976490800 -21600 0 EAST}
+ {2987985600 -18000 1 EASST}
+ {3007940400 -21600 0 EAST}
+ {3019435200 -18000 1 EASST}
+ {3039390000 -21600 0 EAST}
+ {3050884800 -18000 1 EASST}
+ {3070839600 -21600 0 EAST}
+ {3082334400 -18000 1 EASST}
+ {3102894000 -21600 0 EAST}
+ {3113784000 -18000 1 EASST}
+ {3134343600 -21600 0 EAST}
+ {3145838400 -18000 1 EASST}
+ {3165793200 -21600 0 EAST}
+ {3177288000 -18000 1 EASST}
+ {3197242800 -21600 0 EAST}
+ {3208737600 -18000 1 EASST}
+ {3228692400 -21600 0 EAST}
+ {3240187200 -18000 1 EASST}
+ {3260142000 -21600 0 EAST}
+ {3271636800 -18000 1 EASST}
+ {3292196400 -21600 0 EAST}
+ {3303086400 -18000 1 EASST}
+ {3323646000 -21600 0 EAST}
+ {3335140800 -18000 1 EASST}
+ {3355095600 -21600 0 EAST}
+ {3366590400 -18000 1 EASST}
+ {3386545200 -21600 0 EAST}
+ {3398040000 -18000 1 EASST}
+ {3417994800 -21600 0 EAST}
+ {3429489600 -18000 1 EASST}
+ {3449444400 -21600 0 EAST}
+ {3460939200 -18000 1 EASST}
+ {3481498800 -21600 0 EAST}
+ {3492993600 -18000 1 EASST}
+ {3512948400 -21600 0 EAST}
+ {3524443200 -18000 1 EASST}
+ {3544398000 -21600 0 EAST}
+ {3555892800 -18000 1 EASST}
+ {3575847600 -21600 0 EAST}
+ {3587342400 -18000 1 EASST}
+ {3607297200 -21600 0 EAST}
+ {3618792000 -18000 1 EASST}
+ {3639351600 -21600 0 EAST}
+ {3650241600 -18000 1 EASST}
+ {3670801200 -21600 0 EAST}
+ {3682296000 -18000 1 EASST}
+ {3702250800 -21600 0 EAST}
+ {3713745600 -18000 1 EASST}
+ {3733700400 -21600 0 EAST}
+ {3745195200 -18000 1 EASST}
+ {3765150000 -21600 0 EAST}
+ {3776644800 -18000 1 EASST}
+ {3796599600 -21600 0 EAST}
+ {3808094400 -18000 1 EASST}
+ {3828654000 -21600 0 EAST}
+ {3839544000 -18000 1 EASST}
+ {3860103600 -21600 0 EAST}
+ {3871598400 -18000 1 EASST}
+ {3891553200 -21600 0 EAST}
+ {3903048000 -18000 1 EASST}
+ {3923002800 -21600 0 EAST}
+ {3934497600 -18000 1 EASST}
+ {3954452400 -21600 0 EAST}
+ {3965947200 -18000 1 EASST}
+ {3986506800 -21600 0 EAST}
+ {3997396800 -18000 1 EASST}
+ {4017956400 -21600 0 EAST}
+ {4029451200 -18000 1 EASST}
+ {4049406000 -21600 0 EAST}
+ {4060900800 -18000 1 EASST}
+ {4080855600 -21600 0 EAST}
+ {4092350400 -18000 1 EASST}
}
diff --git a/library/tzdata/Pacific/Fakaofo b/library/tzdata/Pacific/Fakaofo
index 7420639..6ec98eb 100644
--- a/library/tzdata/Pacific/Fakaofo
+++ b/library/tzdata/Pacific/Fakaofo
@@ -2,5 +2,6 @@
set TZData(:Pacific/Fakaofo) {
{-9223372036854775808 -41096 0 LMT}
- {-2177411704 -36000 0 TKT}
+ {-2177411704 -39600 0 TKT}
+ {1325242800 46800 0 TKT}
}
diff --git a/library/tzdata/Pacific/Fiji b/library/tzdata/Pacific/Fiji
index 2194d59..454ee87 100644
--- a/library/tzdata/Pacific/Fiji
+++ b/library/tzdata/Pacific/Fiji
@@ -1,10 +1,191 @@
# created by tools/tclZIC.tcl - do not edit
set TZData(:Pacific/Fiji) {
- {-9223372036854775808 42820 0 LMT}
- {-1709985220 43200 0 FJT}
+ {-9223372036854775808 42944 0 LMT}
+ {-1709985344 43200 0 FJT}
{909842400 46800 1 FJST}
{920124000 43200 0 FJT}
{941896800 46800 1 FJST}
{951573600 43200 0 FJT}
+ {1259416800 46800 1 FJST}
+ {1269698400 43200 0 FJT}
+ {1287842400 46800 1 FJST}
+ {1299333600 43200 0 FJT}
+ {1319292000 46800 1 FJST}
+ {1327154400 43200 0 FJT}
+ {1350741600 46800 1 FJST}
+ {1358604000 43200 0 FJT}
+ {1382796000 46800 1 FJST}
+ {1390053600 43200 0 FJT}
+ {1414245600 46800 1 FJST}
+ {1421503200 43200 0 FJT}
+ {1445695200 46800 1 FJST}
+ {1453557600 43200 0 FJT}
+ {1477144800 46800 1 FJST}
+ {1485007200 43200 0 FJT}
+ {1508594400 46800 1 FJST}
+ {1516456800 43200 0 FJT}
+ {1540044000 46800 1 FJST}
+ {1547906400 43200 0 FJT}
+ {1572098400 46800 1 FJST}
+ {1579356000 43200 0 FJT}
+ {1603548000 46800 1 FJST}
+ {1611410400 43200 0 FJT}
+ {1634997600 46800 1 FJST}
+ {1642860000 43200 0 FJT}
+ {1666447200 46800 1 FJST}
+ {1674309600 43200 0 FJT}
+ {1697896800 46800 1 FJST}
+ {1705759200 43200 0 FJT}
+ {1729951200 46800 1 FJST}
+ {1737208800 43200 0 FJT}
+ {1761400800 46800 1 FJST}
+ {1768658400 43200 0 FJT}
+ {1792850400 46800 1 FJST}
+ {1800712800 43200 0 FJT}
+ {1824300000 46800 1 FJST}
+ {1832162400 43200 0 FJT}
+ {1855749600 46800 1 FJST}
+ {1863612000 43200 0 FJT}
+ {1887199200 46800 1 FJST}
+ {1895061600 43200 0 FJT}
+ {1919253600 46800 1 FJST}
+ {1926511200 43200 0 FJT}
+ {1950703200 46800 1 FJST}
+ {1957960800 43200 0 FJT}
+ {1982152800 46800 1 FJST}
+ {1990015200 43200 0 FJT}
+ {2013602400 46800 1 FJST}
+ {2021464800 43200 0 FJT}
+ {2045052000 46800 1 FJST}
+ {2052914400 43200 0 FJT}
+ {2076501600 46800 1 FJST}
+ {2084364000 43200 0 FJT}
+ {2108556000 46800 1 FJST}
+ {2115813600 43200 0 FJT}
+ {2140005600 46800 1 FJST}
+ {2147868000 43200 0 FJT}
+ {2171455200 46800 1 FJST}
+ {2179317600 43200 0 FJT}
+ {2202904800 46800 1 FJST}
+ {2210767200 43200 0 FJT}
+ {2234354400 46800 1 FJST}
+ {2242216800 43200 0 FJT}
+ {2266408800 46800 1 FJST}
+ {2273666400 43200 0 FJT}
+ {2297858400 46800 1 FJST}
+ {2305116000 43200 0 FJT}
+ {2329308000 46800 1 FJST}
+ {2337170400 43200 0 FJT}
+ {2360757600 46800 1 FJST}
+ {2368620000 43200 0 FJT}
+ {2392207200 46800 1 FJST}
+ {2400069600 43200 0 FJT}
+ {2423656800 46800 1 FJST}
+ {2431519200 43200 0 FJT}
+ {2455711200 46800 1 FJST}
+ {2462968800 43200 0 FJT}
+ {2487160800 46800 1 FJST}
+ {2495023200 43200 0 FJT}
+ {2518610400 46800 1 FJST}
+ {2526472800 43200 0 FJT}
+ {2550060000 46800 1 FJST}
+ {2557922400 43200 0 FJT}
+ {2581509600 46800 1 FJST}
+ {2589372000 43200 0 FJT}
+ {2613564000 46800 1 FJST}
+ {2620821600 43200 0 FJT}
+ {2645013600 46800 1 FJST}
+ {2652271200 43200 0 FJT}
+ {2676463200 46800 1 FJST}
+ {2684325600 43200 0 FJT}
+ {2707912800 46800 1 FJST}
+ {2715775200 43200 0 FJT}
+ {2739362400 46800 1 FJST}
+ {2747224800 43200 0 FJT}
+ {2770812000 46800 1 FJST}
+ {2778674400 43200 0 FJT}
+ {2802866400 46800 1 FJST}
+ {2810124000 43200 0 FJT}
+ {2834316000 46800 1 FJST}
+ {2841573600 43200 0 FJT}
+ {2865765600 46800 1 FJST}
+ {2873628000 43200 0 FJT}
+ {2897215200 46800 1 FJST}
+ {2905077600 43200 0 FJT}
+ {2928664800 46800 1 FJST}
+ {2936527200 43200 0 FJT}
+ {2960114400 46800 1 FJST}
+ {2967976800 43200 0 FJT}
+ {2992168800 46800 1 FJST}
+ {2999426400 43200 0 FJT}
+ {3023618400 46800 1 FJST}
+ {3031480800 43200 0 FJT}
+ {3055068000 46800 1 FJST}
+ {3062930400 43200 0 FJT}
+ {3086517600 46800 1 FJST}
+ {3094380000 43200 0 FJT}
+ {3117967200 46800 1 FJST}
+ {3125829600 43200 0 FJT}
+ {3150021600 46800 1 FJST}
+ {3157279200 43200 0 FJT}
+ {3181471200 46800 1 FJST}
+ {3188728800 43200 0 FJT}
+ {3212920800 46800 1 FJST}
+ {3220783200 43200 0 FJT}
+ {3244370400 46800 1 FJST}
+ {3252232800 43200 0 FJT}
+ {3275820000 46800 1 FJST}
+ {3283682400 43200 0 FJT}
+ {3307269600 46800 1 FJST}
+ {3315132000 43200 0 FJT}
+ {3339324000 46800 1 FJST}
+ {3346581600 43200 0 FJT}
+ {3370773600 46800 1 FJST}
+ {3378636000 43200 0 FJT}
+ {3402223200 46800 1 FJST}
+ {3410085600 43200 0 FJT}
+ {3433672800 46800 1 FJST}
+ {3441535200 43200 0 FJT}
+ {3465122400 46800 1 FJST}
+ {3472984800 43200 0 FJT}
+ {3497176800 46800 1 FJST}
+ {3504434400 43200 0 FJT}
+ {3528626400 46800 1 FJST}
+ {3535884000 43200 0 FJT}
+ {3560076000 46800 1 FJST}
+ {3567938400 43200 0 FJT}
+ {3591525600 46800 1 FJST}
+ {3599388000 43200 0 FJT}
+ {3622975200 46800 1 FJST}
+ {3630837600 43200 0 FJT}
+ {3654424800 46800 1 FJST}
+ {3662287200 43200 0 FJT}
+ {3686479200 46800 1 FJST}
+ {3693736800 43200 0 FJT}
+ {3717928800 46800 1 FJST}
+ {3725186400 43200 0 FJT}
+ {3749378400 46800 1 FJST}
+ {3757240800 43200 0 FJT}
+ {3780828000 46800 1 FJST}
+ {3788690400 43200 0 FJT}
+ {3812277600 46800 1 FJST}
+ {3820140000 43200 0 FJT}
+ {3843727200 46800 1 FJST}
+ {3851589600 43200 0 FJT}
+ {3875781600 46800 1 FJST}
+ {3883039200 43200 0 FJT}
+ {3907231200 46800 1 FJST}
+ {3915093600 43200 0 FJT}
+ {3938680800 46800 1 FJST}
+ {3946543200 43200 0 FJT}
+ {3970130400 46800 1 FJST}
+ {3977992800 43200 0 FJT}
+ {4001580000 46800 1 FJST}
+ {4009442400 43200 0 FJT}
+ {4033634400 46800 1 FJST}
+ {4040892000 43200 0 FJT}
+ {4065084000 46800 1 FJST}
+ {4072341600 43200 0 FJT}
+ {4096533600 46800 1 FJST}
}
diff --git a/library/tzdata/Pacific/Honolulu b/library/tzdata/Pacific/Honolulu
index f441a02..5e70598 100644
--- a/library/tzdata/Pacific/Honolulu
+++ b/library/tzdata/Pacific/Honolulu
@@ -2,11 +2,10 @@
set TZData(:Pacific/Honolulu) {
{-9223372036854775808 -37886 0 LMT}
- {-2208907714 -37800 0 HST}
+ {-2334101314 -37800 0 HST}
{-1157283000 -34200 1 HDT}
- {-1155472200 -34200 0 HST}
- {-880201800 -34200 1 HWT}
- {-769395600 -34200 1 HPT}
+ {-1155436200 -37800 0 HST}
+ {-880198200 -34200 1 HDT}
{-765376200 -37800 0 HST}
{-712150200 -36000 0 HST}
}
diff --git a/library/tzdata/Pacific/Johnston b/library/tzdata/Pacific/Johnston
index 7f9fee4..21ab39a 100644
--- a/library/tzdata/Pacific/Johnston
+++ b/library/tzdata/Pacific/Johnston
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:Pacific/Johnston) {
- {-9223372036854775808 -36000 0 HST}
+if {![info exists TZData(Pacific/Honolulu)]} {
+ LoadTimeZoneFile Pacific/Honolulu
}
+set TZData(:Pacific/Johnston) $TZData(:Pacific/Honolulu)
diff --git a/library/tzdata/Pacific/Pohnpei b/library/tzdata/Pacific/Pohnpei
new file mode 100644
index 0000000..58978da
--- /dev/null
+++ b/library/tzdata/Pacific/Pohnpei
@@ -0,0 +1,6 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Pohnpei) {
+ {-9223372036854775808 37972 0 LMT}
+ {-2177490772 39600 0 PONT}
+}
diff --git a/library/tzdata/Pacific/Ponape b/library/tzdata/Pacific/Ponape
index 092b0a9..89644f7 100644
--- a/library/tzdata/Pacific/Ponape
+++ b/library/tzdata/Pacific/Ponape
@@ -1,6 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:Pacific/Ponape) {
- {-9223372036854775808 37972 0 LMT}
- {-2177490772 39600 0 PONT}
+if {![info exists TZData(Pacific/Pohnpei)]} {
+ LoadTimeZoneFile Pacific/Pohnpei
}
+set TZData(:Pacific/Ponape) $TZData(:Pacific/Pohnpei)
diff --git a/library/tzdata/Pacific/Truk b/library/tzdata/Pacific/Truk
index c152198..c9b1894 100644
--- a/library/tzdata/Pacific/Truk
+++ b/library/tzdata/Pacific/Truk
@@ -1,6 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-
-set TZData(:Pacific/Truk) {
- {-9223372036854775808 36428 0 LMT}
- {-2177489228 36000 0 TRUT}
+if {![info exists TZData(Pacific/Chuuk)]} {
+ LoadTimeZoneFile Pacific/Chuuk
}
+set TZData(:Pacific/Truk) $TZData(:Pacific/Chuuk)
diff --git a/library/tzdata/Pacific/Yap b/library/tzdata/Pacific/Yap
index a97a195..4931030 100644
--- a/library/tzdata/Pacific/Yap
+++ b/library/tzdata/Pacific/Yap
@@ -1,5 +1,5 @@
# created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(Pacific/Truk)]} {
- LoadTimeZoneFile Pacific/Truk
+if {![info exists TZData(Pacific/Chuuk)]} {
+ LoadTimeZoneFile Pacific/Chuuk
}
-set TZData(:Pacific/Yap) $TZData(:Pacific/Truk)
+set TZData(:Pacific/Yap) $TZData(:Pacific/Chuuk)
diff --git a/library/word.tcl b/library/word.tcl
index b8f7f7d..b8f34a5 100644
--- a/library/word.tcl
+++ b/library/word.tcl
@@ -7,10 +7,8 @@
# Copyright (c) 1996 by Sun Microsystems, Inc.
# Copyright (c) 1998 by Scritpics Corporation.
#
-# See the file "license.terms" for information on usage and redistribution of
-# this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: word.tcl,v 1.10 2007/12/13 15:26:03 dgp Exp $
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# The following variables are used to determine which characters are
# interpreted as white space.
@@ -69,7 +67,7 @@ namespace eval ::tcl {
proc tcl_wordBreakAfter {str start} {
variable ::tcl::WordBreakRE
set result {-1 -1}
- regexp -indices -start $start $WordBreakRE(after) $str result
+ regexp -indices -start $start -- $WordBreakRE(after) $str result
return [lindex $result 1]
}
@@ -87,7 +85,7 @@ proc tcl_wordBreakAfter {str start} {
proc tcl_wordBreakBefore {str start} {
variable ::tcl::WordBreakRE
set result {-1 -1}
- regexp -indices $WordBreakRE(before) [string range $str 0 $start] result
+ regexp -indices -- $WordBreakRE(before) [string range $str 0 $start] result
return [lindex $result 1]
}
@@ -106,7 +104,7 @@ proc tcl_wordBreakBefore {str start} {
proc tcl_endOfWord {str start} {
variable ::tcl::WordBreakRE
set result {-1 -1}
- regexp -indices -start $start $WordBreakRE(end) $str result
+ regexp -indices -start $start -- $WordBreakRE(end) $str result
return [lindex $result 1]
}
@@ -124,7 +122,7 @@ proc tcl_endOfWord {str start} {
proc tcl_startOfNextWord {str start} {
variable ::tcl::WordBreakRE
set result {-1 -1}
- regexp -indices -start $start $WordBreakRE(next) $str result
+ regexp -indices -start $start -- $WordBreakRE(next) $str result
return [lindex $result 1]
}
@@ -140,7 +138,7 @@ proc tcl_startOfNextWord {str start} {
proc tcl_startOfPreviousWord {str start} {
variable ::tcl::WordBreakRE
set word {-1 -1}
- regexp -indices $WordBreakRE(previous) [string range $str 0 $start-1] \
+ regexp -indices -- $WordBreakRE(previous) [string range $str 0 $start-1] \
result word
return [lindex $word 0]
}