Below are proposed minor cleanups for the time zone code. 1. There's a change to the declarations of the "scheck" function to avoid a lint gripe. 2. Preprocessor directives of the form #if WHATEVER - 0 have been changed to the form #if WHATEVER under the assumption that we're working with ANSI standard compilers. 3. The underscored variants of definitions of constants such as SECSPERDAY have been eliminated, in line with a long-standing comment in the code. 4. And the bulk of the changes are cleanups to white space and line lengths. --ado diff -r -c old/Makefile new/Makefile *** old/Makefile Mon Jan 31 09:21:22 2005 --- new/Makefile Mon Jan 31 14:06:12 2005 *************** *** 1,4 **** ! # @(#)Makefile 7.106 # Change the line below for your time zone (after finding the zone you want in # the time zone files, or adding it to a time zone file). --- 1,4 ---- ! # @(#)Makefile 7.107 # Change the line below for your time zone (after finding the zone you want in # the time zone files, or adding it to a time zone file). *************** *** 398,404 **** tar cf - $(DOCS) $(SOURCES) $(MISC) *.[1-8].txt | gzip -9 > tzcode.tar.gz tar cf - $(DATA) | gzip -9 > tzdata.tar.gz ! typecheck: make clean for i in "long long" unsigned double; \ do \ --- 398,404 ---- tar cf - $(DOCS) $(SOURCES) $(MISC) *.[1-8].txt | gzip -9 > tzcode.tar.gz tar cf - $(DATA) | gzip -9 > tzdata.tar.gz ! typecheck: make clean for i in "long long" unsigned double; \ do \ diff -r -c old/asctime.c new/asctime.c *** old/asctime.c Mon Jan 31 09:20:46 2005 --- new/asctime.c Mon Jan 31 14:06:49 2005 *************** *** 11,17 **** #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)asctime.c 7.30"; #endif /* !defined NOID */ #endif /* !defined lint */ --- 11,17 ---- #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)asctime.c 7.31"; #endif /* !defined NOID */ #endif /* !defined lint */ *************** *** 98,104 **** /* ** We avoid using snprintf since it's not available on all systems. */ ! (void) sprintf(result, ((strlen(year) <= 4) ? ASCTIME_FMT : ASCTIME_FMT_B), wn, mn, timeptr->tm_mday, timeptr->tm_hour, --- 98,104 ---- /* ** We avoid using snprintf since it's not available on all systems. */ ! (void) sprintf(result, ((strlen(year) <= 4) ? ASCTIME_FMT : ASCTIME_FMT_B), wn, mn, timeptr->tm_mday, timeptr->tm_hour, diff -r -c old/asia new/asia *** old/asia Mon Jan 17 18:36:16 2005 --- new/asia Mon Jan 31 14:06:50 2005 *************** *** 1,4 **** ! # @(#)asia 7.78 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to --- 1,4 ---- ! # @(#)asia 7.79 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to *************** *** 337,343 **** # President Eduard Shevardnadze decreed Wednesday. # # From the BBC via Joseph S. Myers (2004-06-27): ! # # Georgia moved closer to Western Europe on Sunday... The former Soviet # republic has changed its time zone back to that of Moscow. As a result it # is now just four hours ahead of Greenwich Mean Time, rather than five hours --- 337,343 ---- # President Eduard Shevardnadze decreed Wednesday. # # From the BBC via Joseph S. Myers (2004-06-27): ! # # Georgia moved closer to Western Europe on Sunday... The former Soviet # republic has changed its time zone back to that of Moscow. As a result it # is now just four hours ahead of Greenwich Mean Time, rather than five hours diff -r -c old/date.c new/date.c *** old/date.c Mon Jan 31 09:20:47 2005 --- new/date.c Mon Jan 31 14:06:49 2005 *************** *** 1,6 **** #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)date.c 7.40"; /* ** Modified from the UCB version with the SCCS ID appearing below. */ --- 1,6 ---- #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)date.c 7.41"; /* ** Modified from the UCB version with the SCCS ID appearing below. */ *************** *** 664,670 **** cp = value; switch (dotp - cp) { default: ! wildinput(_("time"), value, _("main part is wrong length")); case 12: if (!dousg) { cent = ATOI2(cp); --- 664,671 ---- cp = value; switch (dotp - cp) { default: ! wildinput(_("time"), value, ! _("main part is wrong length")); case 12: if (!dousg) { cent = ATOI2(cp); diff -r -c old/difftime.c new/difftime.c *** old/difftime.c Mon Jan 31 09:20:47 2005 --- new/difftime.c Mon Jan 31 14:06:49 2005 *************** *** 5,11 **** #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)difftime.c 7.17"; #endif /* !defined NOID */ #endif /* !defined lint */ --- 5,11 ---- #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)difftime.c 7.18"; #endif /* !defined NOID */ #endif /* !defined lint */ *************** *** 57,63 **** /* ** Stay calm...decent optimizers will eliminate the complexity below. */ ! if (time1 >= 0 /* && time0 < 0 */) return (unsigned long) time1 + (unsigned long) (-(time0 + 1)) + 1; return -(double) ((unsigned long) time0 + --- 57,63 ---- /* ** Stay calm...decent optimizers will eliminate the complexity below. */ ! if (time1 >= 0 /* && time0 < 0 */) return (unsigned long) time1 + (unsigned long) (-(time0 + 1)) + 1; return -(double) ((unsigned long) time0 + diff -r -c old/leapseconds new/leapseconds *** old/leapseconds Mon Jan 17 18:36:18 2005 --- new/leapseconds Mon Jan 31 14:06:50 2005 *************** *** 1,4 **** ! # @(#)leapseconds 7.18 # Allowance for leapseconds added to each timezone file. --- 1,4 ---- ! # @(#)leapseconds 7.19 # Allowance for leapseconds added to each timezone file. *************** *** 44,52 **** Leap 1997 Jun 30 23:59:60 + S Leap 1998 Dec 31 23:59:60 + S ! # INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS) # SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE ! # # SERVICE DE LA ROTATION TERRESTRE # OBSERVATOIRE DE PARIS # 61, Av. de l'Observatoire 75014 PARIS (France) --- 44,52 ---- Leap 1997 Jun 30 23:59:60 + S Leap 1998 Dec 31 23:59:60 + S ! # INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS) # SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE ! # # SERVICE DE LA ROTATION TERRESTRE # OBSERVATOIRE DE PARIS # 61, Av. de l'Observatoire 75014 PARIS (France) *************** *** 53,80 **** # Tel. : 33 (0) 1 40 51 22 26 # FAX : 33 (0) 1 40 51 22 91 # Internet : services.iers@obspm.fr ! # ! # Paris, 21 July 2004 ! # ! # ! # Bulletin C 28 ! # ! # To authorities responsible ! # for the measurement and ! # distribution of time ! # ! # INFORMATION ON UTC - TAI ! # # NO positive leap second will be introduced at the end of December 2004. # The difference between UTC and the International Atomic Time TAI is: ! # ! # from 1999 January 1, 0h UTC, until further notice : UTC-TAI = -32 s ! # # Leap seconds can be introduced in UTC at the end of the months of December # or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every # six months, either to announce a time step in UTC, or to confirm that there # will be no time step at the next possible date. ! # ! # Daniel GAMBIS ! # Director ! # Earth Orientation Center of IERS --- 53,80 ---- # Tel. : 33 (0) 1 40 51 22 26 # FAX : 33 (0) 1 40 51 22 91 # Internet : services.iers@obspm.fr ! # ! # Paris, 21 July 2004 ! # ! # ! # Bulletin C 28 ! # ! # To authorities responsible ! # for the measurement and ! # distribution of time ! # ! # INFORMATION ON UTC - TAI ! # # NO positive leap second will be introduced at the end of December 2004. # The difference between UTC and the International Atomic Time TAI is: ! # ! # from 1999 January 1, 0h UTC, until further notice : UTC-TAI = -32 s ! # # Leap seconds can be introduced in UTC at the end of the months of December # or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every # six months, either to announce a time step in UTC, or to confirm that there # will be no time step at the next possible date. ! # ! # Daniel GAMBIS ! # Director ! # Earth Orientation Center of IERS diff -r -c old/localtime.c new/localtime.c *** old/localtime.c Mon Jan 31 09:20:46 2005 --- new/localtime.c Mon Jan 31 14:09:31 2005 *************** *** 5,11 **** #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)localtime.c 7.90"; #endif /* !defined NOID */ #endif /* !defined lint */ --- 5,11 ---- #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)localtime.c 7.91"; #endif /* !defined NOID */ #endif /* !defined lint */ *************** *** 47,55 **** ** 5. They might reference tm.TM_ZONE after calling offtime. ** What's best to do in the above cases is open to debate; ** for now, we just set things up so that in any of the five cases ! ** WILDABBR is used. Another possibility: initialize tzname[0] to the ** string "tzname[0] used before set", and similarly for the other cases. ! ** And another: initialize tzname[0] to "ERA", with an explanation in the ** manual page of what this "time zone abbreviation" means (doing this so ** that tzname[0] has the "normal" length of three characters). */ --- 47,55 ---- ** 5. They might reference tm.TM_ZONE after calling offtime. ** What's best to do in the above cases is open to debate; ** for now, we just set things up so that in any of the five cases ! ** WILDABBR is used. Another possibility: initialize tzname[0] to the ** string "tzname[0] used before set", and similarly for the other cases. ! ** And another: initialize tzname[0] to "ERA", with an explanation in the ** manual page of what this "time zone abbreviation" means (doing this so ** that tzname[0] has the "normal" length of three characters). */ *************** *** 453,459 **** /* ** Given a pointer into a time zone string, scan until a character that is not ! ** a valid character in a zone name is found. Return a pointer to that ** character. */ --- 453,459 ---- /* ** Given a pointer into a time zone string, scan until a character that is not ! ** a valid character in a zone name is found. Return a pointer to that ** character. */ *************** *** 534,540 **** *secsp += num * SECSPERMIN; if (*strp == ':') { ++strp; ! /* `SECSPERMIN' allows for leap seconds. */ strp = getnum(strp, &num, 0, SECSPERMIN); if (strp == NULL) return NULL; --- 534,540 ---- *secsp += num * SECSPERMIN; if (*strp == ':') { ++strp; ! /* `SECSPERMIN' allows for leap seconds. */ strp = getnum(strp, &num, 0, SECSPERMIN); if (strp == NULL) return NULL; *************** *** 573,579 **** /* ** Given a pointer into a time zone string, extract a rule in the form ! ** date[/time]. See POSIX section 8 for the format of "date" and "time". ** If a valid rule is not found, return NULL. ** Otherwise, return a pointer to the first character not part of the rule. */ --- 573,579 ---- /* ** Given a pointer into a time zone string, extract a rule in the form ! ** date[/time]. See POSIX section 8 for the format of "date" and "time". ** If a valid rule is not found, return NULL. ** Otherwise, return a pointer to the first character not part of the rule. */ *************** *** 692,698 **** dow += DAYSPERWEEK; /* ! ** "dow" is the day-of-week of the first day of the month. Get ** the day-of-month (zero-origin) of the first "dow" day of the ** month. */ --- 692,698 ---- dow += DAYSPERWEEK; /* ! ** "dow" is the day-of-week of the first day of the month. Get ** the day-of-month (zero-origin) of the first "dow" day of the ** month. */ *************** *** 715,721 **** /* ** "value" is the Epoch-relative time of 00:00:00 UTC on the day in ! ** question. To get the Epoch-relative time of the specified local ** time on that day, add the transition time and the current offset ** from UTC. */ --- 715,721 ---- /* ** "value" is the Epoch-relative time of 00:00:00 UTC on the day in ! ** question. To get the Epoch-relative time of the specified local ** time on that day, add the transition time and the current offset ** from UTC. */ *************** *** 1022,1028 **** /* ** The easy way to behave "as if no library function calls" localtime ** is to not call it--so we drop its guts into "localsub", which can be ! ** freely called. (And no, the PANS doesn't require the above behavior-- ** but it *is* desirable.) ** ** The unused offset argument is for the benefit of mktime variants. --- 1022,1028 ---- /* ** The easy way to behave "as if no library function calls" localtime ** is to not call it--so we drop its guts into "localsub", which can be ! ** freely called. (And no, the PANS doesn't require the above behavior-- ** but it *is* desirable.) ** ** The unused offset argument is for the benefit of mktime variants. *************** *** 1178,1184 **** leaps_thru_end_of(y) register const int y; { ! return (y >= 0) ? (y / 4 - y / 100 + y / 400) : -(leaps_thru_end_of(-(y + 1)) + 1); } --- 1178,1184 ---- leaps_thru_end_of(y) register const int y; { ! return (y >= 0) ? (y / 4 - y / 100 + y / 400) : -(leaps_thru_end_of(-(y + 1)) + 1); } *************** *** 1302,1308 **** tmp->tm_min = (int) (rem / SECSPERMIN); /* ** A positive leap second requires a special ! ** representation. This uses "... ??:59:60" et seq. */ tmp->tm_sec = (int) (rem % SECSPERMIN) + hit; ip = mon_lengths[isleap(y)]; --- 1302,1308 ---- tmp->tm_min = (int) (rem / SECSPERMIN); /* ** A positive leap second requires a special ! ** representation. This uses "... ??:59:60" et seq. */ tmp->tm_sec = (int) (rem % SECSPERMIN) + hit; ip = mon_lengths[isleap(y)]; *************** *** 1323,1329 **** /* ** Section 4.12.3.2 of X3.159-1989 requires that ** The ctime function converts the calendar time pointed to by timer ! ** to local time in the form of a string. It is equivalent to ** asctime(localtime(timer)) */ return asctime(localtime(timep)); --- 1323,1329 ---- /* ** Section 4.12.3.2 of X3.159-1989 requires that ** The ctime function converts the calendar time pointed to by timer ! ** to local time in the form of a string. It is equivalent to ** asctime(localtime(timer)) */ return asctime(localtime(timep)); *************** *** 1344,1350 **** ** The "best" way to do mktime I think is based on an idea of Bob ** Kridle's (so its said...) from a long time ago. ** [kridle@xinet.com as of 1996-01-16.] ! ** It does a binary search of the time_t space. Since time_t's are ** just 32 bits, its a max of 32 iterations (even at 64 bits it ** would still be very reasonable). */ --- 1344,1350 ---- ** The "best" way to do mktime I think is based on an idea of Bob ** Kridle's (so its said...) from a long time ago. ** [kridle@xinet.com as of 1996-01-16.] ! ** It does a binary search of the time_t space. Since time_t's are ** just 32 bits, its a max of 32 iterations (even at 64 bits it ** would still be very reasonable). */ *************** *** 1494,1500 **** return WRONG; yourtm.tm_year = y; if (yourtm.tm_year != y) ! return WRONG; if (yourtm.tm_sec >= 0 && yourtm.tm_sec < SECSPERMIN) saved_seconds = 0; else if (y + TM_YEAR_BASE < EPOCH_YEAR) { --- 1494,1500 ---- return WRONG; yourtm.tm_year = y; if (yourtm.tm_year != y) ! return WRONG; if (yourtm.tm_sec >= 0 && yourtm.tm_sec < SECSPERMIN) saved_seconds = 0; else if (y + TM_YEAR_BASE < EPOCH_YEAR) { *************** *** 1813,1819 **** tzset(); /* ** For a positive leap second hit, the result ! ** is not unique. For a negative leap second ** hit, the corresponding time doesn't exist, ** so we return an adjacent second. */ --- 1813,1819 ---- tzset(); /* ** For a positive leap second hit, the result ! ** is not unique. For a negative leap second ** hit, the corresponding time doesn't exist, ** so we return an adjacent second. */ diff -r -c old/newstrftime.3 new/newstrftime.3 *** old/newstrftime.3 Mon Jan 31 09:20:46 2005 --- new/newstrftime.3 Mon Jan 31 14:06:49 2005 *************** *** 151,163 **** is replaced by a newline. .TP %p ! is replaced by the locale's equivalent of either AM or PM. .TP %R is replaced by the time in the format %H:%M. .TP %r ! is replaced by the locale's representation of 12-hour clock time using AM/PM notation. .TP %S --- 151,163 ---- is replaced by a newline. .TP %p ! is replaced by the locale's equivalent of either AM or PM. .TP %R is replaced by the time in the format %H:%M. .TP %r ! is replaced by the locale's representation of 12-hour clock time using AM/PM notation. .TP %S *************** *** 227,230 **** newtzset(3), time(2), tzfile(5) ! .\" @(#)newstrftime.3 7.14 --- 227,230 ---- newtzset(3), time(2), tzfile(5) ! .\" @(#)newstrftime.3 7.15 diff -r -c old/northamerica new/northamerica *** old/northamerica Mon Jan 17 18:36:17 2005 --- new/northamerica Mon Jan 31 14:06:50 2005 *************** *** 1,4 **** ! # @(#)northamerica 7.71 # also includes Central America and the Caribbean # This data is by no means authoritative; if you think you know better, --- 1,4 ---- ! # @(#)northamerica 7.72 # also includes Central America and the Caribbean # This data is by no means authoritative; if you think you know better, *************** *** 445,451 **** # Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power, # Teton, Twin Falls, Valley, Washington counties) and eastern Oregon # switched four weeks late in 1974. ! # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:00 -8:00 US P%sT 1923 May 13 2:00 --- 445,451 ---- # Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power, # Teton, Twin Falls, Valley, Washington counties) and eastern Oregon # switched four weeks late in 1974. ! # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:00 -8:00 US P%sT 1923 May 13 2:00 diff -r -c old/private.h new/private.h *** old/private.h Mon Jan 31 09:19:08 2005 --- new/private.h Mon Jan 31 14:06:49 2005 *************** *** 91,103 **** #include "time.h" #include "stdlib.h" ! #if HAVE_GETTEXT - 0 #include "libintl.h" ! #endif /* HAVE_GETTEXT - 0 */ ! #if HAVE_SYS_WAIT_H - 0 #include <sys/wait.h> /* for WIFEXITED and WEXITSTATUS */ ! #endif /* HAVE_SYS_WAIT_H - 0 */ #ifndef WIFEXITED #define WIFEXITED(status) (((status) & 0xff) == 0) --- 91,103 ---- #include "time.h" #include "stdlib.h" ! #if HAVE_GETTEXT #include "libintl.h" ! #endif /* HAVE_GETTEXT */ ! #if HAVE_SYS_WAIT_H #include <sys/wait.h> /* for WIFEXITED and WEXITSTATUS */ ! #endif /* HAVE_SYS_WAIT_H */ #ifndef WIFEXITED #define WIFEXITED(status) (((status) & 0xff) == 0) *************** *** 106,116 **** #define WEXITSTATUS(status) (((status) >> 8) & 0xff) #endif /* !defined WEXITSTATUS */ ! #if HAVE_UNISTD_H - 0 #include "unistd.h" /* for F_OK and R_OK */ ! #endif /* HAVE_UNISTD_H - 0 */ ! #if !(HAVE_UNISTD_H - 0) #ifndef F_OK #define F_OK 0 #endif /* !defined F_OK */ --- 106,116 ---- #define WEXITSTATUS(status) (((status) >> 8) & 0xff) #endif /* !defined WEXITSTATUS */ ! #if HAVE_UNISTD_H #include "unistd.h" /* for F_OK and R_OK */ ! #endif /* HAVE_UNISTD_H */ ! #if !HAVE_UNISTD_H #ifndef F_OK #define F_OK 0 #endif /* !defined F_OK */ *************** *** 117,125 **** #ifndef R_OK #define R_OK 4 #endif /* !defined R_OK */ ! #endif /* !(HAVE_UNISTD_H - 0) */ ! /* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */ #define is_digit(c) ((unsigned)(c) - '0' <= 9) /* --- 117,125 ---- #ifndef R_OK #define R_OK 4 #endif /* !defined R_OK */ ! #endif /* !HAVE_UNISTD_H */ ! /* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */ #define is_digit(c) ((unsigned)(c) - '0' <= 9) /* *************** *** 216,222 **** void * irealloc P((void * pointer, int size)); void icfree P((char * pointer)); void ifree P((char * pointer)); ! char * scheck P((const char *string, const char *format)); /* ** Finally, some convenience items. --- 216,222 ---- void * irealloc P((void * pointer, int size)); void icfree P((char * pointer)); void ifree P((char * pointer)); ! char * scheck P((const char *string, char *format)); /* ** Finally, some convenience items. *************** *** 255,261 **** ** add one more for a minus sign if the type is signed. */ #define INT_STRLEN_MAXIMUM(type) \ ! ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + 1 + TYPE_SIGNED(type)) #endif /* !defined INT_STRLEN_MAXIMUM */ /* --- 255,262 ---- ** add one more for a minus sign if the type is signed. */ #define INT_STRLEN_MAXIMUM(type) \ ! ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \ ! 1 + TYPE_SIGNED(type)) #endif /* !defined INT_STRLEN_MAXIMUM */ /* *************** *** 289,299 **** */ #ifndef _ ! #if HAVE_GETTEXT - 0 #define _(msgid) gettext(msgid) ! #else /* !(HAVE_GETTEXT - 0) */ #define _(msgid) msgid ! #endif /* !(HAVE_GETTEXT - 0) */ #endif /* !defined _ */ #ifndef TZ_DOMAIN --- 290,300 ---- */ #ifndef _ ! #if HAVE_GETTEXT #define _(msgid) gettext(msgid) ! #else /* !HAVE_GETTEXT */ #define _(msgid) msgid ! #endif /* !HAVE_GETTEXT */ #endif /* !defined _ */ #ifndef TZ_DOMAIN diff -r -c old/scheck.c new/scheck.c *** old/scheck.c Mon Jan 31 09:20:47 2005 --- new/scheck.c Mon Jan 31 14:06:49 2005 *************** *** 1,6 **** #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)scheck.c 8.15"; #endif /* !defined lint */ #endif /* !defined NOID */ --- 1,6 ---- #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)scheck.c 8.16"; #endif /* !defined lint */ #endif /* !defined NOID */ *************** *** 11,17 **** char * scheck(string, format) const char * const string; ! const char * const format; { register char * fbuf; register const char * fp; --- 11,17 ---- char * scheck(string, format) const char * const string; ! char * const format; { register char * fbuf; register const char * fp; diff -r -c old/southamerica new/southamerica *** old/southamerica Mon Jan 17 18:36:17 2005 --- new/southamerica Mon Jan 31 14:06:50 2005 *************** *** 1,4 **** ! # @(#)southamerica 7.57 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to --- 1,4 ---- ! # @(#)southamerica 7.58 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to *************** *** 964,970 **** # # <a href="news:xrGmb.39935$gA1.13896113@news4.srv.hcvlny.cv.net"> # From Evelyn C. Leeper via Mark Brader (2003-10-26):</a> ! # When we were in Peru in 1985-1986, they apparently switched over # sometime between December 29 and January 3 while we were on the Amazon. # # From Paul Eggert (2003-11-02): --- 964,970 ---- # # <a href="news:xrGmb.39935$gA1.13896113@news4.srv.hcvlny.cv.net"> # From Evelyn C. Leeper via Mark Brader (2003-10-26):</a> ! # When we were in Peru in 1985-1986, they apparently switched over # sometime between December 29 and January 3 while we were on the Amazon. # # From Paul Eggert (2003-11-02): diff -r -c old/strftime.c new/strftime.c *** old/strftime.c Mon Jan 31 09:20:47 2005 --- new/strftime.c Mon Jan 31 14:06:50 2005 *************** *** 1,6 **** #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)strftime.c 7.74"; /* ** Based on the UCB version with the ID appearing below. ** This is ANSIish only when "multibyte character == plain character". --- 1,6 ---- #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)strftime.c 7.75"; /* ** Based on the UCB version with the ID appearing below. ** This is ANSIish only when "multibyte character == plain character". *************** *** 19,25 **** ** duplicated in all such forms and that any documentation, ** advertising materials, and other materials related to such ** distribution and use acknowledge that the software was developed ! ** by the University of California, Berkeley. The name of the ** University may not be used to endorse or promote products derived ** from this software without specific prior written permission. ** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR --- 19,25 ---- ** duplicated in all such forms and that any documentation, ** advertising materials, and other materials related to such ** distribution and use acknowledge that the software was developed ! ** by the University of California, Berkeley. The name of the ** University may not be used to endorse or promote products derived ** from this software without specific prior written permission. ** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR *************** *** 91,97 **** ** C99 requires this format. ** Previously this code used "%D %X", but we now conform to C99. ** Note that ! ** "%a %b %d %H:%M:%S %Y" ** is used by Solaris 2.3. */ "%a %b %e %T %Y", --- 91,97 ---- ** C99 requires this format. ** Previously this code used "%D %X", but we now conform to C99. ** Note that ! ** "%a %b %d %H:%M:%S %Y" ** is used by Solaris 2.3. */ "%a %b %e %T %Y", *************** *** 108,114 **** static char * _add P((const char *, char *, const char *)); static char * _conv P((int, const char *, char *, const char *)); ! static char * _fmt P((const char *, const struct tm *, char *, const char *, int *)); static char * _yconv P((int, int, int, int, char *, const char *)); extern char * tzname[]; --- 108,115 ---- static char * _add P((const char *, char *, const char *)); static char * _conv P((int, const char *, char *, const char *)); ! static char * _fmt P((const char *, const struct tm *, char *, const char *, ! int *)); static char * _yconv P((int, int, int, int, char *, const char *)); extern char * tzname[]; *************** *** 264,270 **** ** t->tm_hour % 12 : 12, 2, ' '); ** ...and has been changed to the below to ** match SunOS 4.1.1 and Arnold Robbins' ! ** strftime version 3.0. That is, "%k" and ** "%l" have been swapped. ** (ado, 1993-05-24) */ --- 265,271 ---- ** t->tm_hour % 12 : 12, 2, ' '); ** ...and has been changed to the below to ** match SunOS 4.1.1 and Arnold Robbins' ! ** strftime version 3.0. That is, "%k" and ** "%l" have been swapped. ** (ado, 1993-05-24) */ *************** *** 284,290 **** ** _conv(t->tm_hour, 2, ' '); ** ...and has been changed to the below to ** match SunOS 4.1.1 and Arnold Robbin's ! ** strftime version 3.0. That is, "%k" and ** "%l" have been swapped. ** (ado, 1993-05-24) */ --- 285,291 ---- ** _conv(t->tm_hour, 2, ' '); ** ...and has been changed to the below to ** match SunOS 4.1.1 and Arnold Robbin's ! ** strftime version 3.0. That is, "%k" and ** "%l" have been swapped. ** (ado, 1993-05-24) */ *************** *** 359,365 **** case 'G': /* ISO 8601 year (four digits) */ case 'g': /* ISO 8601 year (two digits) */ /* ! ** From Arnold Robbins' strftime version 3.0: "the week number of the ** year (the first Monday as the first day of week 1) as a decimal number ** (01-53)." ** (ado, 1993-05-24) --- 360,366 ---- case 'G': /* ISO 8601 year (four digits) */ case 'g': /* ISO 8601 year (two digits) */ /* ! ** From Arnold Robbins' strftime version 3.0: "the week number of the ** year (the first Monday as the first day of week 1) as a decimal number ** (01-53)." ** (ado, 1993-05-24) *************** *** 372,378 **** ** might also contain days from the previous year and the week before week ** 01 of a year is the last week (52 or 53) of the previous year even if ** it contains days from the new year. A week starts with Monday (day 1) ! ** and ends with Sunday (day 7). For example, the first week of the year ** 1997 lasts from 1996-12-30 to 1997-01-05..." ** (ado, 1996-01-02) */ --- 373,379 ---- ** might also contain days from the previous year and the week before week ** 01 of a year is the last week (52 or 53) of the previous year even if ** it contains days from the new year. A week starts with Monday (day 1) ! ** and ends with Sunday (day 7). For example, the first week of the year ** 1997 lasts from 1996-12-30 to 1997-01-05..." ** (ado, 1996-01-02) */ *************** *** 512,523 **** /* ** C99 says that the UTC offset must ** be computed by looking only at ! ** tm_isdst. This requirement is ** incorrect, since it means the code ** must rely on magic (in this case ** altzone and timezone), and the ** magic might not have the correct ! ** offset. Doing things correctly is ** tricky and requires disobeying C99; ** see GNU C strftime for details. ** For now, punt and conform to the --- 513,524 ---- /* ** C99 says that the UTC offset must ** be computed by looking only at ! ** tm_isdst. This requirement is ** incorrect, since it means the code ** must rely on magic (in this case ** altzone and timezone), and the ** magic might not have the correct ! ** offset. Doing things correctly is ** tricky and requires disobeying C99; ** see GNU C strftime for details. ** For now, punt and conform to the *************** *** 559,565 **** case '%': /* ** X311J/88-090 (4.12.3.5): if conversion char is ! ** undefined, behavior is undefined. Print out the ** character itself as printf(3) also does. */ default: --- 560,566 ---- case '%': /* ** X311J/88-090 (4.12.3.5): if conversion char is ! ** undefined, behavior is undefined. Print out the ** character itself as printf(3) also does. */ default: *************** *** 682,688 **** ** Slurp the locale file into the cache. */ namesize = strlen(name) + 1; ! if (sizeof filename < ((sizeof locale_home) + namesize + (sizeof lc_time))) goto no_locale; oldsun = 0; --- 683,689 ---- ** Slurp the locale file into the cache. */ namesize = strlen(name) + 1; ! if (sizeof filename < ((sizeof locale_home) + namesize + (sizeof lc_time))) goto no_locale; oldsun = 0; *************** *** 705,711 **** goto bad_locale; bufsize = namesize + st.st_size; locale_buf = NULL; ! lbuf = (lbuf == NULL) ? malloc(bufsize) : realloc(lbuf, bufsize); if (lbuf == NULL) goto bad_locale; (void) strcpy(lbuf, name); --- 706,712 ---- goto bad_locale; bufsize = namesize + st.st_size; locale_buf = NULL; ! lbuf = (lbuf == NULL) ? malloc(bufsize) : realloc(lbuf, bufsize); if (lbuf == NULL) goto bad_locale; (void) strcpy(lbuf, name); diff -r -c old/tz-art.htm new/tz-art.htm *** old/tz-art.htm Mon Jan 31 09:20:48 2005 --- new/tz-art.htm Mon Jan 31 14:06:50 2005 *************** *** 1,5 **** <?xml version="1.0" encoding="US-ASCII"?> ! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> --- 1,5 ---- <?xml version="1.0" encoding="US-ASCII"?> ! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> *************** *** 10,16 **** <body> <h1>Time and the Arts</h1> <address> ! @(#)tz-art.htm 7.53 </address> <p> Please send corrections to this web page to the --- 10,16 ---- <body> <h1>Time and the Arts</h1> <address> ! @(#)tz-art.htm 7.54 </address> <p> Please send corrections to this web page to the diff -r -c old/tzfile.h new/tzfile.h *** old/tzfile.h Mon Jan 31 09:19:08 2005 --- new/tzfile.h Mon Jan 31 14:06:49 2005 *************** *** 21,27 **** #ifndef lint #ifndef NOID ! static char tzfilehid[] = "@(#)tzfile.h 7.16"; #endif /* !defined NOID */ #endif /* !defined lint */ --- 21,27 ---- #ifndef lint #ifndef NOID ! static char tzfilehid[] = "@(#)tzfile.h 7.17"; #endif /* !defined NOID */ #endif /* !defined lint */ *************** *** 48,54 **** #define TZ_MAGIC "TZif" struct tzhead { ! char tzh_magic[4]; /* TZ_MAGIC */ char tzh_reserved[16]; /* reserved for future use */ char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */ char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ --- 48,54 ---- #define TZ_MAGIC "TZif" struct tzhead { ! char tzh_magic[4]; /* TZ_MAGIC */ char tzh_reserved[16]; /* reserved for future use */ char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */ char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ *************** *** 172,197 **** #define isleap_sum(a, b) isleap((a) % 400 + (b) % 400) - #ifndef USG - - /* - ** Use of the underscored variants may cause problems if you move your code to - ** certain System-V-based systems; for maximum portability, use the - ** underscore-free variants. The underscored variants are provided for - ** backward compatibility only; they may disappear from future versions of - ** this file. - */ - - #define SECS_PER_MIN SECSPERMIN - #define MINS_PER_HOUR MINSPERHOUR - #define HOURS_PER_DAY HOURSPERDAY - #define DAYS_PER_WEEK DAYSPERWEEK - #define DAYS_PER_NYEAR DAYSPERNYEAR - #define DAYS_PER_LYEAR DAYSPERLYEAR - #define SECS_PER_HOUR SECSPERHOUR - #define SECS_PER_DAY SECSPERDAY - #define MONS_PER_YEAR MONSPERYEAR - - #endif /* !defined USG */ - #endif /* !defined TZFILE_H */ --- 172,175 ---- diff -r -c old/workman.sh new/workman.sh *** old/workman.sh Mon Jan 31 09:20:49 2005 --- new/workman.sh Mon Jan 31 14:06:50 2005 *************** *** 1,6 **** #! /bin/sh ! # @(#)workman.sh 1.7 # Tell groff not to emit SGR escape sequences (ANSI color escapes). GROFF_NO_SGR=1 --- 1,6 ---- #! /bin/sh ! # @(#)workman.sh 1.8 # Tell groff not to emit SGR escape sequences (ANSI color escapes). GROFF_NO_SGR=1 *************** *** 26,29 **** print "$_\n"; $didprint = 1; } ! ' --- 26,29 ---- print "$_\n"; $didprint = 1; } ! ' diff -r -c old/yearistype.sh new/yearistype.sh *** old/yearistype.sh Mon Jan 17 18:36:18 2005 --- new/yearistype.sh Mon Jan 31 14:06:50 2005 *************** *** 1,6 **** #! /bin/sh ! : '@(#)yearistype.sh 7.7' case $#-$1 in 2-|2-0*|2-*[!0-9]*) --- 1,6 ---- #! /bin/sh ! : '@(#)yearistype.sh 7.8' case $#-$1 in 2-|2-0*|2-*[!0-9]*) *************** *** 9,15 **** esac case $#-$2 in ! 2-even) case $1 in *[24680]) exit 0 ;; *) exit 1 ;; --- 9,15 ---- esac case $#-$2 in ! 2-even) case $1 in *[24680]) exit 0 ;; *) exit 1 ;; *************** *** 19,25 **** *[02468][048]|*[13579][26]) exit 1 ;; *) exit 0 ;; esac ;; ! 2-odd) case $1 in *[13579]) exit 0 ;; *) exit 1 ;; --- 19,25 ---- *[02468][048]|*[13579][26]) exit 1 ;; *) exit 0 ;; esac ;; ! 2-odd) case $1 in *[13579]) exit 0 ;; *) exit 1 ;; *************** *** 29,35 **** *[02468][048]|*[13579][26]) exit 0 ;; *) exit 1 ;; esac ;; ! 2-*) echo "$0: wild type - $2" >&2 ;; esac --- 29,35 ---- *[02468][048]|*[13579][26]) exit 0 ;; *) exit 1 ;; esac ;; ! 2-*) echo "$0: wild type - $2" >&2 ;; esac diff -r -c old/zdump.c new/zdump.c *** old/zdump.c Mon Jan 31 09:20:47 2005 --- new/zdump.c Mon Jan 31 14:20:42 2005 *************** *** 1,4 **** ! static char elsieid[] = "@(#)zdump.c 7.61"; /* ** This code has been made independent of the rest of the time --- 1,4 ---- ! static char elsieid[] = "@(#)zdump.c 7.63"; /* ** This code has been made independent of the rest of the time *************** *** 215,221 **** INITIALIZE(cutlotime); INITIALIZE(cuthitime); #if HAVE_GETTEXT ! (void) setlocale(LC_MESSAGES, ""); #ifdef TZ_DOMAINDIR (void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR); #endif /* defined TEXTDOMAINDIR */ --- 215,221 ---- INITIALIZE(cutlotime); INITIALIZE(cuthitime); #if HAVE_GETTEXT ! (void) setlocale(LC_ALL, ""); #ifdef TZ_DOMAINDIR (void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR); #endif /* defined TEXTDOMAINDIR */ *************** *** 318,324 **** newtmp = localtime(&newt); if (newtmp != NULL) newtm = *newtmp; ! if ((tmp == NULL || newtmp == NULL) ? (tmp != newtmp) : (delta(&newtm, &tm) != (newt - t) || newtm.tm_isdst != tm.tm_isdst || strcmp(abbr(&newtm), buf) != 0)) { --- 318,324 ---- newtmp = localtime(&newt); if (newtmp != NULL) newtm = *newtmp; ! if ((tmp == NULL || newtmp == NULL) ? (tmp != newtmp) : (delta(&newtm, &tm) != (newt - t) || newtm.tm_isdst != tm.tm_isdst || strcmp(abbr(&newtm), buf) != 0)) { diff -r -c old/zic.c new/zic.c *** old/zic.c Mon Jan 31 09:20:47 2005 --- new/zic.c Mon Jan 31 14:20:42 2005 *************** *** 1,4 **** ! static char elsieid[] = "@(#)zic.c 7.120"; /* ** Regardless of the type of time_t, we do our work using this type. --- 1,4 ---- ! static char elsieid[] = "@(#)zic.c 7.122"; /* ** Regardless of the type of time_t, we do our work using this type. *************** *** 21,27 **** /* ** On some ancient hosts, predicates like `isspace(C)' are defined ! ** only if isascii(C) || C == EOF. Modern hosts obey the C Standard, ** which says they are defined only if C == ((unsigned char) C) || C == EOF. ** Neither the C Standard nor Posix require that `isascii' exist. ** For portability, we check both ancient and modern requirements. --- 21,27 ---- /* ** On some ancient hosts, predicates like `isspace(C)' are defined ! ** only if isascii(C) || C == EOF. Modern hosts obey the C Standard, ** which says they are defined only if C == ((unsigned char) C) || C == EOF. ** Neither the C Standard nor Posix require that `isascii' exist. ** For portability, we check both ancient and modern requirements. *************** *** 138,146 **** static void writezone P((const char * name)); static int yearistype P((int year, const char * type)); ! #if !(HAVE_STRERROR - 0) static char * strerror P((int)); ! #endif /* !(HAVE_STRERROR - 0) */ static int charcnt; static int errors; --- 138,146 ---- static void writezone P((const char * name)); static int yearistype P((int year, const char * type)); ! #if !HAVE_STRERROR static char * strerror P((int)); ! #endif /* !HAVE_STRERROR */ static int charcnt; static int errors; *************** *** 380,386 **** ** Error handling. */ ! #if !(HAVE_STRERROR - 0) static char * strerror(errnum) int errnum; --- 380,386 ---- ** Error handling. */ ! #if !HAVE_STRERROR static char * strerror(errnum) int errnum; *************** *** 391,397 **** return (errnum > 0 && errnum <= sys_nerr) ? sys_errlist[errnum] : _("Unknown system error"); } ! #endif /* !(HAVE_STRERROR - 0) */ static void eats(name, num, rname, rnum) --- 391,397 ---- return (errnum > 0 && errnum <= sys_nerr) ? sys_errlist[errnum] : _("Unknown system error"); } ! #endif /* !HAVE_STRERROR */ static void eats(name, num, rname, rnum) *************** *** 448,454 **** static void usage P((void)) { ! (void) fprintf(stderr, _("%s: usage is %s [ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"), progname, progname); (void) exit(EXIT_FAILURE); } --- 448,456 ---- static void usage P((void)) { ! (void) fprintf(stderr, _("%s: usage is %s \ ! [ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\ ! \t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"), progname, progname); (void) exit(EXIT_FAILURE); } *************** *** 472,484 **** #ifdef unix (void) umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH)); #endif /* defined unix */ ! #if HAVE_GETTEXT - 0 ! (void) setlocale(LC_MESSAGES, ""); #ifdef TZ_DOMAINDIR (void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR); #endif /* defined TEXTDOMAINDIR */ (void) textdomain(TZ_DOMAIN); ! #endif /* HAVE_GETTEXT - 0 */ progname = argv[0]; for (i = 1; i < argc; ++i) if (strcmp(argv[i], "--version") == 0) { --- 474,486 ---- #ifdef unix (void) umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH)); #endif /* defined unix */ ! #if HAVE_GETTEXT ! (void) setlocale(LC_ALL, ""); #ifdef TZ_DOMAINDIR (void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR); #endif /* defined TEXTDOMAINDIR */ (void) textdomain(TZ_DOMAIN); ! #endif /* HAVE_GETTEXT */ progname = argv[0]; for (i = 1; i < argc; ++i) if (strcmp(argv[i], "--version") == 0) { *************** *** 631,652 **** (void) exit(EXIT_FAILURE); result = link(fromname, toname); ! #if (HAVE_SYMLINK - 0) if (result != 0 && ! access(fromname, F_OK) == 0 && ! !itsdir(fromname)) { ! const char *s = tofile; ! register char * symlinkcontents = NULL; ! while ((s = strchr(s+1, '/')) != NULL) ! symlinkcontents = ecatalloc(symlinkcontents, "../"); ! symlinkcontents = ecatalloc(symlinkcontents, fromfile); ! result = symlink(symlinkcontents, toname); ! if (result == 0) warning(_("hard link failed, symbolic link used")); ! ifree(symlinkcontents); } ! #endif if (result != 0) { const char *e = strerror(errno); --- 633,659 ---- (void) exit(EXIT_FAILURE); result = link(fromname, toname); ! #if HAVE_SYMLINK if (result != 0 && ! access(fromname, F_OK) == 0 && ! !itsdir(fromname)) { ! const char *s = tofile; ! register char * symlinkcontents = NULL; ! while ((s = strchr(s+1, '/')) != NULL) ! symlinkcontents = ! ecatalloc(symlinkcontents, ! "../"); ! symlinkcontents = ! ecatalloc(symlinkcontents, ! fromfile); ! result = symlink(symlinkcontents, ! toname); ! if (result == 0) warning(_("hard link failed, symbolic link used")); ! ifree(symlinkcontents); } ! #endif /* HAVE_SYMLINK */ if (result != 0) { const char *e = strerror(errno); *************** *** 804,810 **** */ eat(zp->z_filename, zp->z_linenum); zp->z_stdoff = gethms(zp->z_rule, _("unruly zone"), ! TRUE); /* ** Note, though, that if there's no rule, ** a '%s' in the format is a bad thing. --- 811,817 ---- */ eat(zp->z_filename, zp->z_linenum); zp->z_stdoff = gethms(zp->z_rule, _("unruly zone"), ! TRUE); /* ** Note, though, that if there's no rule, ** a '%s' in the format is a bad thing. *************** *** 1107,1113 **** zones[nzones - 1].z_untiltime > min_time && zones[nzones - 1].z_untiltime < max_time && zones[nzones - 1].z_untiltime >= z.z_untiltime) { ! error(_("Zone continuation line end time is not after end time of previous line")); return FALSE; } } --- 1114,1122 ---- zones[nzones - 1].z_untiltime > min_time && zones[nzones - 1].z_untiltime < max_time && zones[nzones - 1].z_untiltime >= z.z_untiltime) { ! error(_( ! "Zone continuation line end time is not after end time of previous line" ! )); return FALSE; } } *************** *** 1140,1150 **** dayoff = 0; cp = fields[LP_YEAR]; if (sscanf(cp, scheck(cp, "%d"), &year) != 1) { ! /* ! * Leapin' Lizards! ! */ ! error(_("invalid leaping year")); ! return; } j = EPOCH_YEAR; while (j != year) { --- 1149,1159 ---- dayoff = 0; cp = fields[LP_YEAR]; if (sscanf(cp, scheck(cp, "%d"), &year) != 1) { ! /* ! ** Leapin' Lizards! ! */ ! error(_("invalid leaping year")); ! return; } j = EPOCH_YEAR; while (j != year) { *************** *** 1211,1217 **** return; } if ((lp = byword(fields[LP_ROLL], leap_types)) == NULL) { ! error(_("illegal Rolling/Stationary field on Leap line")); return; } leapadd(tadd(t, tod), positive, lp->l_value, count); --- 1220,1228 ---- return; } if ((lp = byword(fields[LP_ROLL], leap_types)) == NULL) { ! error(_( ! "illegal Rolling/Stationary field on Leap line" ! )); return; } leapadd(tadd(t, tod), positive, lp->l_value, count); *************** *** 1473,1486 **** while (fromi < timecnt && attypes[fromi].type == 0) ++fromi; /* handled by default rule */ for ( ; fromi < timecnt; ++fromi) { ! if (toi != 0 ! && ((attypes[fromi].at ! + gmtoffs[attypes[toi - 1].type]) ! <= (attypes[toi - 1].at ! + gmtoffs[toi == 1 ? 0 ! : attypes[toi - 2].type]))) { ! attypes[toi - 1].type = attypes[fromi].type; ! continue; } if (toi == 0 || attypes[toi - 1].type != attypes[fromi].type) --- 1484,1496 ---- while (fromi < timecnt && attypes[fromi].type == 0) ++fromi; /* handled by default rule */ for ( ; fromi < timecnt; ++fromi) { ! if (toi != 0 && ((attypes[fromi].at + ! gmtoffs[attypes[toi - 1].type]) <= ! (attypes[toi - 1].at + gmtoffs[toi == 1 ? 0 ! : attypes[toi - 2].type]))) { ! attypes[toi - 1].type = ! attypes[fromi].type; ! continue; } if (toi == 0 || attypes[toi - 1].type != attypes[fromi].type) *************** *** 1526,1532 **** convert(eitol(typecnt), tzh.tzh_typecnt); convert(eitol(charcnt), tzh.tzh_charcnt); (void) strncpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic); ! #define DO(field) (void) fwrite((void *) tzh.field, (size_t) sizeof tzh.field, (size_t) 1, fp) DO(tzh_magic); DO(tzh_reserved); DO(tzh_ttisgmtcnt); --- 1536,1543 ---- convert(eitol(typecnt), tzh.tzh_typecnt); convert(eitol(charcnt), tzh.tzh_charcnt); (void) strncpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic); ! #define DO(field) (void) fwrite((void *) tzh.field, \ ! (size_t) sizeof tzh.field, (size_t) 1, fp) DO(tzh_magic); DO(tzh_reserved); DO(tzh_ttisgmtcnt); *************** *** 1745,1756 **** continue; } if (*startbuf == '\0' && ! startoff == oadd(zp->z_gmtoff, ! stdoff)) { ! doabbr(startbuf, zp->z_format, ! rp->r_abbrvar, ! rp->r_stdoff != 0); ! } } eats(zp->z_filename, zp->z_linenum, rp->r_filename, rp->r_linenum); --- 1756,1768 ---- continue; } if (*startbuf == '\0' && ! startoff == oadd(zp->z_gmtoff, ! stdoff)) ! doabbr(startbuf, ! zp->z_format, ! rp->r_abbrvar, ! rp->r_stdoff != ! 0); } eats(zp->z_filename, zp->z_linenum, rp->r_filename, rp->r_linenum); *************** *** 2041,2047 **** else while ((*dp = *cp++) != '"') if (*dp != '\0') ++dp; ! else error(_("Odd number of quotation marks")); } while (*cp != '\0' && *cp != '#' && (!isascii(*cp) || !isspace((unsigned char) *cp))); if (isascii(*cp) && isspace((unsigned char) *cp)) --- 2053,2061 ---- else while ((*dp = *cp++) != '"') if (*dp != '\0') ++dp; ! else error(_( ! "Odd number of quotation marks" ! )); } while (*cp != '\0' && *cp != '#' && (!isascii(*cp) || !isspace((unsigned char) *cp))); if (isascii(*cp) && isspace((unsigned char) *cp)) *************** *** 2162,2168 **** } if (i < 0 || i >= len_months[isleap(y)][m]) { if (noise) ! warning(_("rule goes past start/end of month--will not work with pre-2004 versions of zic")); } } if (dayoff < 0 && !TYPE_SIGNED(zic_t)) --- 2176,2183 ---- } if (i < 0 || i >= len_months[isleap(y)][m]) { if (noise) ! warning(_("rule goes past start/end of month--\ ! will not work with pre-2004 versions of zic")); } } if (dayoff < 0 && !TYPE_SIGNED(zic_t))