unchanged binary output
Below are changes to "zic.c" and "europe" that should arrange for all but one of the 64-bit zic output files to have first parts that are bit-for-bit identical (except for TZif/TZif2 differences) to files produced by the old 32-bit compiler. The only exception is America/Juneau; the 64-bit compiler notices that Yukon Daylight Time (YDT) was never actually used in Juneau and optimizes out some information. The files should, however, be identical from a functional standpoint. --ado ------- zic.c ------- *** /tmp/geta5518 Sat Apr 1 14:29:54 2006 --- /tmp/getb5518 Sat Apr 1 14:29:54 2006 *************** *** 1,4 **** ! static char elsieid[] = "@(#)zic.c 8.3"; #include "private.h" #include "locale.h" --- 1,4 ---- ! static char elsieid[] = "@(#)zic.c 8.4"; #include "private.h" #include "locale.h" *************** *** 1630,1643 **** indmap[i] = -1; thischarcnt = 0; for (i = 0; i < typecnt; ++i) { if (!writetype[i]) continue; if (indmap[abbrinds[i]] >= 0) continue; ! indmap[abbrinds[i]] = thischarcnt; ! (void) strcpy(&thischars[thischarcnt], ! &chars[abbrinds[i]]); ! thischarcnt += strlen(&chars[abbrinds[i]]) + 1; } #define DO(field) (void) fwrite((void *) tzh.field, \ (size_t) sizeof tzh.field, (size_t) 1, fp) --- 1630,1652 ---- indmap[i] = -1; thischarcnt = 0; for (i = 0; i < typecnt; ++i) { + register int j; + register char * thisabbr; + if (!writetype[i]) continue; if (indmap[abbrinds[i]] >= 0) continue; ! thisabbr = &chars[abbrinds[i]]; ! for (j = 0; j < thischarcnt; ++j) ! if (strcmp(&thischars[j], thisabbr) == 0) ! break; ! if (j == thischarcnt) { ! (void) strcpy(&thischars[thischarcnt], ! thisabbr); ! thischarcnt += strlen(thisabbr) + 1; ! } ! indmap[abbrinds[i]] = j; } #define DO(field) (void) fwrite((void *) tzh.field, \ (size_t) sizeof tzh.field, (size_t) 1, fp) ------- europe ------- *** /tmp/geta5536 Sat Apr 1 14:29:55 2006 --- /tmp/getb5536 Sat Apr 1 14:29:55 2006 *************** *** 1,4 **** ! # @(#)europe 8.1 # <pre> # This data is by no means authoritative; if you think you know better, --- 1,4 ---- ! # @(#)europe 8.2 # <pre> # This data is by no means authoritative; if you think you know better, *************** *** 418,424 **** # See EU for rules starting in 1996. # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone Europe/London -0:01:15 - LMT 1847 Dec 1 0:00 GB-Eire %s 1968 Oct 27 1:00 - BST 1971 Oct 31 2:00u 0:00 GB-Eire %s 1996 --- 418,424 ---- # See EU for rules starting in 1996. # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone Europe/London -0:01:15 - LMT 1847 Dec 1 0:00s 0:00 GB-Eire %s 1968 Oct 27 1:00 - BST 1971 Oct 31 2:00u 0:00 GB-Eire %s 1996 *************** *** 1121,1127 **** # Gibraltar # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2 0:00 GB-Eire %s 1957 Apr 14 2:00 1:00 - CET 1982 1:00 EU CE%sT --- 1121,1127 ---- # Gibraltar # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2 0:00s 0:00 GB-Eire %s 1957 Apr 14 2:00 1:00 - CET 1982 1:00 EU CE%sT *************** *** 1325,1331 **** Rule Italy 1979 only - Sep 30 0:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Rome 0:49:56 - LMT 1866 Sep 22 ! 0:49:56 - RMT 1893 Nov # Rome Mean Time 1:00 Italy CE%sT 1942 Nov 2 2:00s 1:00 C-Eur CE%sT 1944 Jul 1:00 Italy CE%sT 1980 --- 1325,1331 ---- Rule Italy 1979 only - Sep 30 0:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Rome 0:49:56 - LMT 1866 Sep 22 ! 0:49:56 - RMT 1893 Nov 1 0:00s # Rome Mean 1:00 Italy CE%sT 1942 Nov 2 2:00s 1:00 C-Eur CE%sT 1944 Jul 1:00 Italy CE%sT 1980 *************** *** 1514,1520 **** Rule Malta 1975 1980 - Sep Sun>=15 2:00 0 - Rule Malta 1980 only - Mar 31 2:00 1:00 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 # Valletta 1:00 Italy CE%sT 1942 Nov 2 2:00s 1:00 C-Eur CE%sT 1945 Apr 2 2:00s 1:00 Italy CE%sT 1973 Mar 31 --- 1514,1520 ---- Rule Malta 1975 1980 - Sep Sun>=15 2:00 0 - Rule Malta 1980 only - Mar 31 2:00 1:00 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 0:00s # Valletta 1:00 Italy CE%sT 1942 Nov 2 2:00s 1:00 C-Eur CE%sT 1945 Apr 2 2:00s 1:00 Italy CE%sT 1973 Mar 31 *************** *** 2149,2155 **** Rule SpainAfrica 1978 only - Jun 1 0:00 1:00 S Rule SpainAfrica 1978 only - Aug 4 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone Europe/Madrid -0:14:44 - LMT 1901 0:00 Spain WE%sT 1946 Sep 30 1:00 Spain CE%sT 1979 1:00 EU CE%sT --- 2149,2155 ---- Rule SpainAfrica 1978 only - Jun 1 0:00 1:00 S Rule SpainAfrica 1978 only - Aug 4 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone Europe/Madrid -0:14:44 - LMT 1901 Jan 1 0:00s 0:00 Spain WE%sT 1946 Sep 30 1:00 Spain CE%sT 1979 1:00 EU CE%sT
participants (1)
-
Arthur David Olson