Andy Heninger | 19 Sep 00:06 2014
Picon

[tz] Thread Safety Notes

I've been looking over the thread safe additions to localtime.c, and have a few comments.

1. Use of C's 'volatile' declaration is not sufficient to implement fully thread-safe double-checked locking. The complications are confusing and subtle. Here is a paper that goes into the question in depth: http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf

The bottom line is that doing it right needs memory barrier operations - a read acquire and write release or equivalent for the flag variable being tested. Volatile does not guarantee these. C11 has the necessary functions, but is not yet widely available. [ http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf ]  Compilers mostly have non-standard extensions available that will do the job, often modeled after those in gcc.

2. The function gmtcheck() needs to recheck the gmt_is_set flag after acquiring the lock. As it stands, multiple threads could replicate the initialization, overwriting a previously set gmtptr in the process. This is unrelated to the volatile question.

3.  The volatile variable lcl_is_set is referenced while not holding the lock in only one place, in localtime_r(). And from there the function localtime_tzset() is unconditionally called, which unconditionally acquires the lock.  With minor refactoring, all access to lcl_is_set could be from code that is holding the lock, which would allow lcl_is_set to be an ordinary variable with no special thread safety considerations.

If it were up to me, I would probably remove use of the double-checked idiom, and rely on solely lock(). Slightly slower, but simple, portable and safe. The alternative is to #define some compiler-dependent atomic operations.

  Thanks,

   -- Andy Heninger
"" | 15 Sep 06:40 2014
Picon

[tz] Europe/London Sat Oct 26 23:00:00 1968 UT

Looks like isdst should be 1 on

    Europe/London  Sat Oct 26 23:00:00 1968

and

    Europe/London  Sun Oct 31 01:59:59 1971


zdump -v -c 1968,1973 Europe/London
Europe/London  -9223372036854775808 = NULL
Europe/London  -9223372036854689408 = NULL
Europe/London  Sun Feb 18 01:59:59 1968 UT = Sun Feb 18 01:59:59 1968 GMT isdst=0 gmtoff=0
Europe/London  Sun Feb 18 02:00:00 1968 UT = Sun Feb 18 03:00:00 1968 BST isdst=1 gmtoff=3600
Europe/London  Sat Oct 26 22:59:59 1968 UT = Sat Oct 26 23:59:59 1968 BST isdst=1 gmtoff=3600
Europe/London  Sat Oct 26 23:00:00 1968 UT = Sun Oct 27 00:00:00 1968 BST isdst=0 gmtoff=3600
Europe/London  Sun Oct 31 01:59:59 1971 UT = Sun Oct 31 02:59:59 1971 BST isdst=0 gmtoff=3600
Europe/London  Sun Oct 31 02:00:00 1971 UT = Sun Oct 31 02:00:00 1971 GMT isdst=0 gmtoff=0
Europe/London  Sun Mar 19 01:59:59 1972 UT = Sun Mar 19 01:59:59 1972 GMT isdst=0 gmtoff=0
Europe/London  Sun Mar 19 02:00:00 1972 UT = Sun Mar 19 03:00:00 1972 BST isdst=1 gmtoff=3600
Europe/London  Sun Oct 29 01:59:59 1972 UT = Sun Oct 29 02:59:59 1972 BST isdst=1 gmtoff=3600
Europe/London  Sun Oct 29 02:00:00 1972 UT = Sun Oct 29 02:00:00 1972 GMT isdst=0 gmtoff=0
Europe/London  9223372036854689407 = NULL
Europe/London  9223372036854775807 = NULL



Tim Parenti | 11 Sep 07:25 2014

Re: [tz] Typo in africa timezone file


On 11 September 2014 00:45, "" <lord.buddha <at> gmail.com> wrote:
To me the instant 2015-05-13 24:00 actually means 2015-05-14 00:00....  

This is correct, and this is how zic interprets it.
 
Currently we have just Africa/Cairo and Asia/Dhaka using 24:00 as a transition time.

There are a few others; namely, America/Montreal, Asia/Amman, Asia/Gaza, Asia/Hebron, and Europe/Helsinki.
 
Should not these be updated to avoid 24:00 and the ambiguity that arises.
 
On the contrary, 24:00 is meant to be quite unambiguous.  We can't stop governments from ambiguously declaring that rules start "at midnight" without specifying which one.  But we can be clear, when representing those rules, about which midnight we understand to be the correct one to use.

In some cases, that's simpler to express with 00:00; in others, with 24:00.  Africa/Cairo's main (non-Ramadan) rules for the near future are most succinctly expressed with one of each:

Rule    Egypt   2014    max -   Sep lastThu 24:00   0   -
Rule    Egypt   2015    2019    -   Apr lastFri  0:00s  1:00    S

Anyway, the use of 24:00 _seems_ to have broken the JodaTime library.

That may be, but if so, it's been broken for five years.
http://mm.icann.org/pipermail/tz/2014-June/020964.html

--
Tim Parenti
Peddi, Radhika (Radhika | 9 Sep 14:16 2014

[tz] Regarding Russian Time zone change

Hi,

 

I have taken latest tzdata tar and replaced Europe time zone in my joda. However I didn’t find any  changes in October 26 UTC Off string. Can you please  tell me whether the changes are included in tzdata or not?

Thanks & Regards,

Radhika Peddi|Avaya India Pvt. Ltd.|
Wing 'A', Level -5, Tower-11, Cybercity, Magarpatta City, Hadapsar | Pune, 411028|India

Voice +91 20 4101 8311| Email: rpeddi <at> avaya.com

[Please consider the environment before printing this email]|7    Switch off POWER | Save Water |q RECYCLE |P  PRESERVE trees |

 

 

Paul Eggert | 7 Sep 04:25 2014

[tz] [PROPOSED PATCH] * Makefile (check_sorted): Further improve quality of checks.

* NEWS: Document this.
* zone1970.tab: Sort country codes better.
---
 Makefile     | 13 +++++++++----
 NEWS         |  4 ++++
 zone1970.tab |  2 +-
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 86682ce..7bdd642 100644
--- a/Makefile
+++ b/Makefile
 <at>  <at>  -487,12 +487,17  <at>  <at>  check_white_space: $(ENCHILADA)
 		! grep -n '[[:space:]]$$' $(ENCHILADA)
 		! grep -n "$$(printf '[\f\r\v]\n')" $(ENCHILADA)

-check_sorted: backward backzone iso3166.tab zone1970.tab
-		$(AWK) '/^Link/ {print $$3}' backward | LC_ALL=C sort -c
-		$(AWK) '/^Zone/ {print $$2}' backzone | LC_ALL=C sort -c
-		$(AWK) '/^[^#]/ {print}' iso3166.tab | LC_ALL=C sort -c
+CHECK_CC_LIST = { n = split($$1,a,/,/); for (i=2; i<=n; i++) print a[1], a[i]; }
+
+check_sorted: backward backzone iso3166.tab zone.tab zone1970.tab
+		$(AWK) '/^Link/ {print $$3}' backward | LC_ALL=C sort -cu
+		$(AWK) '/^Zone/ {print $$2}' backzone | LC_ALL=C sort -cu
+		$(AWK) '/^[^#]/ {print $$1}' iso3166.tab | LC_ALL=C sort -cu
+		$(AWK) '/^[^#]/ {print $$1}' zone.tab | LC_ALL=C sort -c
 		$(AWK) '/^[^#]/ {print substr($$0, 1, 2)}' zone1970.tab | \
 		  LC_ALL=C sort -c
+		$(AWK) '/^[^#]/ $(CHECK_CC_LIST)' zone1970.tab | \
+		  LC_ALL=C sort -cu

 check_tables:	checktab.awk $(PRIMARY_YDATA) $(ZONETABLES)
 		for tab in $(ZONETABLES); do \
diff --git a/NEWS b/NEWS
index 0f3c809..3134648 100644
--- a/NEWS
+++ b/NEWS
 <at>  <at>  -23,6 +23,10  <at>  <at>  Unreleased, experimental changes
     An access to uninitalized data has been fixed.
     (Thanks to Jörg Richter for reporting the problem.)

+  Changes affecting build procedure
+
+    'make check' now checks better for properly-sorted data.
+
   Changes affecting documentation and commentary

     zdump -c's treatment of years is now documented to use the
diff --git a/zone1970.tab b/zone1970.tab
index 03c50d8..f0e38f1 100644
--- a/zone1970.tab
+++ b/zone1970.tab
 <at>  <at>  -323,7 +323,7  <at>  <at>  TM	+3757+05823	Asia/Ashgabat
 TN	+3648+01011	Africa/Tunis
 TO	-2110-17510	Pacific/Tongatapu
 TR	+4101+02858	Europe/Istanbul
-TT,AG,AI,BL,DM,GD,GP,MF,LC,KN,MS,VC,VG,VI	+1039-06131	America/Port_of_Spain
+TT,AG,AI,BL,DM,GD,GP,KN,LC,MF,MS,VC,VG,VI	+1039-06131	America/Port_of_Spain
 TV	-0831+17913	Pacific/Funafuti
 TW	+2503+12130	Asia/Taipei
 UA	+5026+03031	Europe/Kiev	most locations
--

-- 
1.9.1

Paul Eggert | 7 Sep 03:43 2014

[tz] [PROPOSED PATCH 1/2] * Makefile (check_sorted): Fix typo in recent change.

---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 8e0a6d7..86682ce 100644
--- a/Makefile
+++ b/Makefile
 <at>  <at>  -491,7 +491,7  <at>  <at>  check_sorted: backward backzone iso3166.tab zone1970.tab
 		$(AWK) '/^Link/ {print $$3}' backward | LC_ALL=C sort -c
 		$(AWK) '/^Zone/ {print $$2}' backzone | LC_ALL=C sort -c
 		$(AWK) '/^[^#]/ {print}' iso3166.tab | LC_ALL=C sort -c
-		$(AWK) '/^[^#]/ {print substr($0, 1, 2)}' zone1970.tab | \
+		$(AWK) '/^[^#]/ {print substr($$0, 1, 2)}' zone1970.tab | \
 		  LC_ALL=C sort -c

 check_tables:	checktab.awk $(PRIMARY_YDATA) $(ZONETABLES)
--

-- 
1.9.1

Tim Parenti | 7 Sep 00:54 2014

[tz] zdump bug in Asia/Singapore

While sorting out some issues for tzdist, I noticed a bug in zdump, which is still present in 2014g.

Running zdump on Asia/Singapore for both 1981 and 1982 together produces the expected transition from UTC+7:30 to UTC+8 at the boundary between those years:

$ ./zdump.exe -vc 1981,1983 Asia/Singapore
Asia/Singapore  -9223372036854775808 = NULL
Asia/Singapore  -9223372036854689408 = NULL
Asia/Singapore  Thu Dec 31 16:29:59 1981 UT = Thu Dec 31 23:59:59 1981 SGT isdst=0
Asia/Singapore  Thu Dec 31 16:30:00 1981 UT = Fri Jan  1 00:30:00 1982 SGT isdst=0
Asia/Singapore  9223372036854689407 = NULL
Asia/Singapore  9223372036854775807 = NULL


However, running it on 1981 and 1982 individually does not:

$ ./zdump.exe -vc 1981,1982 Asia/Singapore
Asia/Singapore  -9223372036854775808 = NULL
Asia/Singapore  -9223372036854689408 = NULL
Asia/Singapore  9223372036854689407 = NULL
Asia/Singapore  9223372036854775807 = NULL

$ ./zdump.exe -vc 1982,1983 Asia/Singapore
Asia/Singapore  -9223372036854775808 = NULL
Asia/Singapore  -9223372036854689408 = NULL
Asia/Singapore  9223372036854689407 = NULL
Asia/Singapore  9223372036854775807 = NULL


Initially, I thought this might have to do with the fact that the transition is specified as a Zone continuation line rather than as a Rule, since zdump properly handled my extended edge-case examples to Jon Skeet a while back:
http://mm.icann.org/pipermail/tz/2014-July/021162.html

zdump also properly handles Asia/Dhaka's DST transition at the end of 2009, but fails in some other similar cases.

So it looks like it's more to do with the transition taking place too close to the year boundary.  Part of the problem may be the transition happening in different years, UTC and local, but that doesn't seem to be all that's going on.

Attached are some test cases to run against various versions of Singapore with 1981,1982 and 1982,1983; and various versions of Dhaka with 2009,2010 and 2010,2011.  All of these should work, but most currently don't.  (The ones that do are marked.)
-- Tim Parenti
# The real Asia/Singapore zone.
#
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Singapore	6:55:25 -	LMT	1901 Jan  1
			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
			7:00	-	MALT	1933 Jan  1 # Malaya Time
			7:00	0:20	MALST	1936 Jan  1
			7:20	-	MALT	1941 Sep  1
			7:30	-	MALT	1942 Feb 16
			9:00	-	JST	1945 Sep 12
			7:30	-	MALT	1965 Aug  9 # independence
			7:30	-	SGT	1982 Jan  1 # Singapore Time
			8:00	-	SGT

# Some test cases for zdump.
# Each of these should result in a transition in either 1981 or 1982.
# That is, a transition should appear either with
#   zdump -vc 1981,1982 ZONE_NAME
# or with
#   zdump -vc 1982,1983 ZONE_NAME
#
Zone	Test/Singapore/Unspecified	7:30	-	SGT	1982 Jan  1
			8:00	-	SGT

Zone	Test/Singapore/2359utc	7:30	-	SGT	1981 Dec 31 23:59u
			8:00	-	SGT
Zone	Test/Singapore/2400utc	7:30	-	SGT	1981 Dec 31 24:00u
			8:00	-	SGT
Zone	Test/Singapore/0000utc	7:30	-	SGT	1982 Jan  1  0:00u
			8:00	-	SGT
Zone	Test/Singapore/0001utc	7:30	-	SGT	1982 Jan  1  0:01u	# Works
			8:00	-	SGT

Zone	Test/Singapore/2359wall	7:30	-	SGT	1981 Dec 31 23:59
			8:00	-	SGT
Zone	Test/Singapore/2400wall	7:30	-	SGT	1981 Dec 31 24:00
			8:00	-	SGT
Zone	Test/Singapore/0000wall	7:30	-	SGT	1982 Jan  1  0:00
			8:00	-	SGT
Zone	Test/Singapore/0001wall	7:30	-	SGT	1982 Jan  1  0:01
			8:00	-	SGT

Zone	Test/Singapore/2359wall_as_utc	7:30	-	SGT	1981 Dec 31 16:29u
			8:00	-	SGT
Zone	Test/Singapore/0000wall_as_utc	7:30	-	SGT	1981 Dec 31 16:30u
			8:00	-	SGT
Zone	Test/Singapore/0001wall_as_utc	7:30	-	SGT	1981 Dec 31 16:31u
			8:00	-	SGT

Zone	Test/Singapore/Something_Else	7:30	-	SGT	1981 Dec 31 19:45u
			8:00	-	SGT

################################################################################

# The real Asia/Dhaka zone.
#
# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	Dhaka	2009	only	-	Jun	19	23:00	1:00	S
Rule	Dhaka	2009	only	-	Dec	31	24:00	0	-
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Dhaka	6:01:40 -	LMT	1890
			5:53:20	-	HMT	1941 Oct    # Howrah Mean Time?
			6:30	-	BURT	1942 May 15 # Burma Time
			5:30	-	IST	1942 Sep
			6:30	-	BURT	1951 Sep 30
			6:00	-	DACT	1971 Mar 26 # Dacca Time
			6:00	-	BDT	2009
			6:00	Dhaka	BD%sT

# Some test cases for zdump.
# Each of these should result in a transition in either 2009 or 2010.
# That is, a Dec 2009 or Jan 2010 transition should appear either with
#   zdump -vc 2009,2010 ZONE_NAME
# or with
#   zdump -vc 2010,2011 ZONE_NAME
#
# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	2359utc	2009	only	-	Jun	19	23:00u	1:00	S
Rule	2359utc	2009	only	-	Dec	31	23:59u	0	-
Zone	Test/Dhaka/2359utc	6:00	2359utc	BD%sT
Rule	2400utc	2009	only	-	Jun	19	23:00u	1:00	S
Rule	2400utc	2009	only	-	Dec	31	24:00u	0	-
Zone	Test/Dhaka/2400utc	6:00	2400utc	BD%sT
Rule	0000utc	2009	only	-	Jun	19	23:00u	1:00	S
Rule	0000utc	2010	only	-	Jan	 1	 0:00u	0	-
Zone	Test/Dhaka/0000utc	6:00	0000utc	BD%sT
Rule	0001utc	2009	only	-	Jun	19	23:00u	1:00	S
Rule	0001utc	2010	only	-	Jan	 1	 0:01u	0	-
Zone	Test/Dhaka/0001utc	6:00	0001utc	BD%sT	# Works

Rule	2359wall	2009	only	-	Jun	19	23:00	1:00	S
Rule	2359wall	2009	only	-	Dec	31	23:59	0	-
Zone	Test/Dhaka/2359wall	6:00	2359wall	BD%sT	# Works
Rule	2400wall	2009	only	-	Jun	19	23:00	1:00	S
Rule	2400wall	2009	only	-	Dec	31	24:00	0	-
Zone	Test/Dhaka/2400wall	6:00	2400wall	BD%sT	# Works
Rule	0000wall	2009	only	-	Jun	19	23:00	1:00	S
Rule	0000wall	2010	only	-	Jan	 1	 0:00	0	-
Zone	Test/Dhaka/0000wall	6:00	0000wall	BD%sT	# Works
Rule	0001wall	2009	only	-	Jun	19	23:00	1:00	S
Rule	0001wall	2010	only	-	Jan	 1	 0:01	0	-
Zone	Test/Dhaka/0001wall	6:00	0001wall	BD%sT

Rule	2359wall_as_utc	2009	only	-	Jun	19	17:00u	1:00	S
Rule	2359wall_as_utc	2009	only	-	Dec	31	16:59u	0	-
Zone	Test/Dhaka/2359wall_as_utc	6:00	2359wall_as_utc	BD%sT	# Works
Rule	0000wall_as_utc	2009	only	-	Jun	19	17:00u	1:00	S
Rule	0000wall_as_utc	2009	only	-	Dec	31	17:00u	0	-
Zone	Test/Dhaka/0000wall_as_utc	6:00	0000wall_as_utc	BD%sT	# Works
Rule	0001wall_as_utc	2009	only	-	Jun	19	17:00u	1:00	S
Rule	0001wall_as_utc	2009	only	-	Dec	31	17:01u	0	-
Zone	Test/Dhaka/0001wall_as_utc	6:00	0001wall_as_utc	BD%sT

Rule	Something_Else	2009	only	-	Jun	19	17:00u	1:00	S
Rule	Something_Else	2009	only	-	Dec	31	19:45u	0	-
Zone	Test/Dhaka/Something_Else	6:00	Something_Else	BD%sT

Paul Eggert | 7 Sep 00:13 2014

[tz] [PROPOSED PATCH 1/2] Move out-of-scope UTC+2 African zones to 'backzone'.

* africa (Africa/Blantyre, Africa/Bujumbura, Africa/Gaborone)
(Africa/Harare, Africa/Kigali, Africa/Lubumbashi, Africa/Lusaka):
Change these from zones to links to Africa/Maputo.
(Africa/Maseru, Africa/Mbabane):
Change these from zones to links to Africa/Johannesburg.
* backzone: Move the old data here.
* checktab.awk (tztab): Remove special cases for these zones.
* NEWS: Document the above.
---
 NEWS         |  8 ++++++++
 africa       | 55 ++++++++++++++++++-------------------------------------
 backzone     | 50 +++++++++++++++++++++++++++++++++++++++++++++++---
 checktab.awk |  9 ---------
 4 files changed, 73 insertions(+), 49 deletions(-)

diff --git a/NEWS b/NEWS
index 0327005..91ce1e7 100644
--- a/NEWS
+++ b/NEWS
 <at>  <at>  -7,6 +7,14  <at>  <at>  Unreleased, experimental changes
     Shanks says Asia/Novokuznetsk switched from LMT (not "NMT") on 1924-05-01,
     not 1920-01-06.  The old entry was based on a misinterpretation of Shanks.

+    Some more zones have been turned into links, when they differed
+    from existing zones only for older time stamps.  As usual,
+    these changes affect UTC offsets in pre-1970 time stamps only.
+    Their old contents have been moved to the 'backzone' file.
+    The affected zones are: Africa/Blantyre, Africa/Bujumbura,
+    Africa/Gaborone, Africa/Harare, Africa/Kigali, Africa/Lubumbashi,
+    Africa/Lusaka, Africa/Maseru, and Africa/Mbabane.
+
   Changes affecting code

     An access to uninitalized data has been fixed.
diff --git a/africa b/africa
index 10354b0..b17c62b 100644
--- a/africa
+++ b/africa
 <at>  <at>  -110,23 +110,13  <at>  <at>  Zone	Africa/Algiers	0:12:12 -	LMT	1891 Mar 15  0:01
 # See Africa/Lagos.

 # Botswana
-# From Paul Eggert (2013-02-21):
-# Milne says they were regulated by the Cape Town Signal in 1899;
-# assume they switched to 2:00 when Cape Town did.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Gaborone	1:43:40 -	LMT	1885
-			1:30	-	SAST	1903 Mar
-			2:00	-	CAT	1943 Sep 19  2:00
-			2:00	1:00	CAST	1944 Mar 19  2:00
-			2:00	-	CAT
+# See Africa/Maputo.

 # Burkina Faso
 # See Africa/Abidjan.

 # Burundi
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Bujumbura	1:57:28	-	LMT	1890
-			2:00	-	CAT
+# See Africa/Maputo.

 # Cameroon
 # See Africa/Lagos.
 <at>  <at>  -161,10 +151,7  <at>  <at>  Zone	Indian/Comoro	2:53:04 -	LMT	1911 Jul # Moroni, Gran Comoro
 			3:00	-	EAT

 # Democratic Republic of the Congo
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Lubumbashi	1:49:52 -	LMT	1897 Nov 9
-			2:00	-	CAT
-# The above is for the eastern part; see Africa/Lagos for the western part.
+# See Africa/Lagos for the western part and Africa/Maputo for the eastern.

 # Republic of the Congo
 # See Africa/Lagos.
 <at>  <at>  -466,11 +453,7  <at>  <at>  Zone	Africa/Nairobi	2:27:16	-	LMT	1928 Jul
 			3:00	-	EAT

 # Lesotho
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Maseru	1:50:00 -	LMT	1903 Mar
-			2:00	-	SAST	1943 Sep 19  2:00
-			2:00	1:00	SAST	1944 Mar 19  2:00
-			2:00	-	SAST
+# See Africa/Johannesburg.

 # Liberia
 # From Paul Eggert (2006-03-22):
 <at>  <at>  -552,9 +535,7  <at>  <at>  Zone Indian/Antananarivo 3:10:04 -	LMT	1911 Jul
 			3:00	-	EAT

 # Malawi
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Blantyre	2:20:00 -	LMT	1903 Mar
-			2:00	-	CAT
+# See Africa/Maputo.

 # Mali
 # Mauritania
 <at>  <at>  -964,6 +945,13  <at>  <at>  Zone Africa/El_Aaiun	-0:52:48 -	LMT	1934 Jan # El Aaiún
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Africa/Maputo	2:10:20 -	LMT	1903 Mar
 			2:00	-	CAT
+Link Africa/Maputo Africa/Blantyre	# Malawi
+Link Africa/Maputo Africa/Bujumbura	# Burundi
+Link Africa/Maputo Africa/Gaborone	# Botswana
+Link Africa/Maputo Africa/Harare	# Zimbabwe
+Link Africa/Maputo Africa/Kigali	# Rwanda
+Link Africa/Maputo Africa/Lubumbashi	# E Dem. Rep. of Congo
+Link Africa/Maputo Africa/Lusaka	# Zambia

 # Namibia
 # The 1994-04-03 transition is from Shanks & Pottenger.
 <at>  <at>  -1031,9 +1019,7  <at>  <at>  Zone	Indian/Reunion	3:41:52 -	LMT	1911 Jun # Saint-Denis
 # Tromelin - inhabited until at least 1958

 # Rwanda
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Kigali	2:00:16 -	LMT	1935 Jun
-			2:00	-	CAT
+# See Africa/Maputo.

 # St Helena
 # See Africa/Abidjan.
 <at>  <at>  -1077,6 +1063,9  <at>  <at>  Rule	SA	1943	1944	-	Mar	Sun>=15	2:00	0	-
 Zone Africa/Johannesburg 1:52:00 -	LMT	1892 Feb 8
 			1:30	-	SAST	1903 Mar
 			2:00	SA	SAST
+Link Africa/Johannesburg Africa/Maseru	   # Lesotho
+Link Africa/Johannesburg Africa/Mbabane    # Swaziland
+#
 # Marion and Prince Edward Is
 # scientific station since 1947
 # no information
 <at>  <at>  -1104,9 +1093,7  <at>  <at>  Zone	Africa/Khartoum	2:10:08 -	LMT	1931
 Link Africa/Khartoum Africa/Juba

 # Swaziland
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Mbabane	2:04:24 -	LMT	1903 Mar
-			2:00	-	SAST
+# See Africa/Johannesburg.

 # Tanzania
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 <at>  <at>  -1227,11 +1214,5  <at>  <at>  Zone	Africa/Kampala	2:09:40 -	LMT	1928 Jul
 			3:00	-	EAT

 # Zambia
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Lusaka	1:53:08 -	LMT	1903 Mar
-			2:00	-	CAT
-
 # Zimbabwe
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Harare	2:04:12 -	LMT	1903 Mar
-			2:00	-	CAT
+# See Africa/Maputo.
diff --git a/backzone b/backzone
index d9183cd..d63afab 100644
--- a/backzone
+++ b/backzone
 <at>  <at>  -57,10 +57,18  <at>  <at>  Zone	Africa/Banjul	-1:06:36 -	LMT	1912
 			-1:00	-	WAT	1964
 			 0:00	-	GMT

+# Malawi
+Zone	Africa/Blantyre	2:20:00 -	LMT	1903 Mar
+			2:00	-	CAT
+
 # Republic of the Congo
 Zone Africa/Brazzaville	1:01:08 -	LMT	1912
 			1:00	-	WAT

+# Burundi
+Zone Africa/Bujumbura	1:57:28	-	LMT	1890
+			2:00	-	CAT
+
 # Guinea
 Zone	Africa/Conakry	-0:54:52 -	LMT	1912
 			 0:00	-	GMT	1934 Feb 26
 <at>  <at>  -92,11 +100,29  <at>  <at>  Zone	Africa/Freetown	-0:53:00 -	LMT	1882
 			-1:00	SL	%s	1957
 			 0:00	SL	%s

+# Botswana
+# From Paul Eggert (2013-02-21):
+# Milne says they were regulated by the Cape Town Signal in 1899;
+# assume they switched to 2:00 when Cape Town did.
+Zone	Africa/Gaborone	1:43:40 -	LMT	1885
+			1:30	-	SAST	1903 Mar
+			2:00	-	CAT	1943 Sep 19  2:00
+			2:00	1:00	CAST	1944 Mar 19  2:00
+			2:00	-	CAT
+
+# Zimbabwe
+Zone	Africa/Harare	2:04:12 -	LMT	1903 Mar
+			2:00	-	CAT
+
 # South Sudan
 Zone	Africa/Juba	2:06:24 -	LMT	1931
 			2:00	Sudan	CA%sT	2000 Jan 15 12:00
 			3:00	-	EAT

+# Rwanda
+Zone	Africa/Kigali	2:00:16 -	LMT	1935 Jun
+			2:00	-	CAT
+
 # Democratic Republic of the Congo (west)
 Zone Africa/Kinshasa	1:01:12 -	LMT	1897 Nov  9
 			1:00	-	WAT
 <at>  <at>  -105,6 +131,10  <at>  <at>  Zone Africa/Kinshasa	1:01:12 -	LMT	1897 Nov  9
 Zone Africa/Libreville	0:37:48 -	LMT	1912
 			1:00	-	WAT

+# Togo
+Zone	Africa/Lome	0:04:52 -	LMT	1893
+			0:00	-	GMT
+
 # Angola
 #
 # Shanks gives 1911-05-26 for the transition to WAT,
 <at>  <at>  -116,9 +146,13  <at>  <at>  Zone	Africa/Luanda	0:52:56	-	LMT	1892
 			0:52:04	-	AOT	1912 Jan  1 # Angola Time
 			1:00	-	WAT

-# Togo
-Zone	Africa/Lome	0:04:52 -	LMT	1893
-			0:00	-	GMT
+# Democratic Republic of the Congo (east)
+Zone Africa/Lubumbashi	1:49:52 -	LMT	1897 Nov 9
+			2:00	-	CAT
+
+# Zambia
+Zone	Africa/Lusaka	1:53:08 -	LMT	1903 Mar
+			2:00	-	CAT

 # Equatorial Guinea
 #
 <at>  <at>  -131,6 +165,16  <at>  <at>  Zone	Africa/Malabo	0:35:08 -	LMT	1912
 			0:00	-	GMT	1963 Dec 15
 			1:00	-	WAT

+# Lesotho
+Zone	Africa/Maseru	1:50:00 -	LMT	1903 Mar
+			2:00	-	SAST	1943 Sep 19  2:00
+			2:00	1:00	SAST	1944 Mar 19  2:00
+			2:00	-	SAST
+
+# Swaziland
+Zone	Africa/Mbabane	2:04:24 -	LMT	1903 Mar
+			2:00	-	SAST
+
 # Niger
 Zone	Africa/Niamey	 0:08:28 -	LMT	1912
 			-1:00	-	WAT	1934 Feb 26
diff --git a/checktab.awk b/checktab.awk
index 0f113f4..84c49ff 100644
--- a/checktab.awk
+++ b/checktab.awk
 <at>  <at>  -17,18 +17,9  <at>  <at>  BEGIN {
 	if (zone_table == "zone1970.tab") {
 	  tztab["Africa/Addis_Ababa"] = 1
 	  tztab["Africa/Asmara"] = 1
-	  tztab["Africa/Blantyre"] = 1
-	  tztab["Africa/Bujumbura"] = 1
 	  tztab["Africa/Dar_es_Salaam"] = 1
 	  tztab["Africa/Djibouti"] = 1
-	  tztab["Africa/Gaborone"] = 1
-	  tztab["Africa/Harare"] = 1
 	  tztab["Africa/Kampala"] = 1
-	  tztab["Africa/Kigali"] = 1
-	  tztab["Africa/Lubumbashi"] = 1
-	  tztab["Africa/Lusaka"] = 1
-	  tztab["Africa/Maseru"] = 1
-	  tztab["Africa/Mbabane"] = 1
 	  tztab["Africa/Mogadishu"] = 1
 	  tztab["America/Antigua"] = 1
 	  tztab["America/Cayman"] = 1
--

-- 
1.9.1

Richter, Jörg | 5 Sep 16:51 2014
Picon

[tz] valgrind errors loading UTC

When loading ‚UTC‘ the function tzload seems to use an uninitialized value here:
 
localtime.c:574:
  for (i = 0; i < sp->typecnt; ++i)
    if (sp->types[i] == 0)             // <- sp->types[0] is uninitialized (sp->typecnt is 1)
      break;
 
It might be a user error on my side. But I am unable to spot it.
Note that the UTC file was generated with an older version.
 
This is with tzcode2014g
 
- Jörg
 
 
Paul Eggert | 6 Sep 04:20 2014

[tz] [PROPOSED PATCH] * europe (Asia/Novokuznetsk), NEWS: Fix misreading of Shanks.

---
 NEWS   | 8 ++++++++
 europe | 2 +-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/NEWS b/NEWS
index 8ddd091..50b5852 100644
--- a/NEWS
+++ b/NEWS
 <at>  <at>  -1,5 +1,13  <at>  <at> 
 News for the tz database

+Unreleased, experimental changes
+
+  Changes affecting past time stamps
+
+    Shanks says Asia/Novokuznetsk switched from LMT (not "NMT") on 1924-05-01,
+    not 1920-01-06.  The old entry was based on a misinterpretation of Shanks.
+
+
 Release 2014g - 2014-08-28 12:31:23 -0700

   Changes affecting future time stamps
diff --git a/europe b/europe
index 0130552..067acb6 100644
--- a/europe
+++ b/europe
 <at>  <at>  -2501,7 +2501,7  <at>  <at>  Zone Asia/Novosibirsk	 5:31:40 -	LMT	1919 Dec 14  6:00
 # The Kemerovo region will remain at UTC+7 through the 2014-10-26 change, thus
 # realigning itself with KRAT.

-Zone Asia/Novokuznetsk	 5:48:48 -	NMT	1920 Jan  6
+Zone Asia/Novokuznetsk	 5:48:48 -	LMT	1924 May  1
 			 6:00	-	KRAT	1930 Jun 21 # Krasnoyarsk Time
 			 7:00	Russia	KRA%sT	1991 Mar 31  2:00s
 			 6:00	Russia	KRA%sT	1992 Jan 19  2:00s
--

-- 
1.9.1

Paul Eggert | 4 Sep 20:14 2014

Re: [tz] [tz-announce] 2014g release of tz code and data available

kzimmermann <at> ups.com wrote:
> Does this mean that Turks and Caicos will NOT BE OBSERVING DayLight Savings time anymore?

Yes, starting in November according to 2014g.  See its 'northamerica' 
file, which cites the following for why they won't change the clocks in 
November:

http://tcweeklynews.com/daylight-savings-time-to-be-maintained-p5353-127.htm

2014g models this as a change from Eastern Daylight Time (EDT, UTC-4) to 
Atlantic Standard Time (AST, UTC-4) on November 2.  That is, the clocks 
won't change in November, but the alphabetic time zone abbreviation 
will.  Admittedly this disagrees with the headline of that news article 
(which implies they will use DST year-round), but the longstanding 
convention of the tz database is to model "perpetual DST" as standard 
time. and since the time stamps will be correct nobody will much care 
about the distinction.

> What will the time zone name be for the Turks and Caicos....currently I have America/Grand Turk? Will this change?

No.  All you should need is an updated (2014g or later) database.


Gmane