From 3752b5717bc7f809e84a67685cf3918980814193 Mon Sep 17 00:00:00 2001 From: Stuart Bishop Date: Fri, 19 Oct 2012 17:47:18 +0700 Subject: Import 2012g datafiles from IANA --- elsie.nci.nih.gov/src/Makefile | 28 ++- elsie.nci.nih.gov/src/asctime.c | 7 +- elsie.nci.nih.gov/src/asia | 6 +- elsie.nci.nih.gov/src/australasia | 21 +- elsie.nci.nih.gov/src/date.c | 66 +++---- elsie.nci.nih.gov/src/difftime.c | 4 +- elsie.nci.nih.gov/src/ialloc.c | 56 +----- elsie.nci.nih.gov/src/localtime.c | 201 +++++++------------ elsie.nci.nih.gov/src/private.h | 11 +- elsie.nci.nih.gov/src/scheck.c | 10 +- elsie.nci.nih.gov/src/strftime.c | 40 ++-- elsie.nci.nih.gov/src/zdump.c | 47 ++--- elsie.nci.nih.gov/src/zic.c | 399 +++++++++++++------------------------- 13 files changed, 313 insertions(+), 583 deletions(-) diff --git a/elsie.nci.nih.gov/src/Makefile b/elsie.nci.nih.gov/src/Makefile index cfcd46d..ffd1cf0 100644 --- a/elsie.nci.nih.gov/src/Makefile +++ b/elsie.nci.nih.gov/src/Makefile @@ -3,7 +3,7 @@ # 2009-05-17 by Arthur David Olson. # Version numbers of the code and data distributions. -VERSION = 2012f +VERSION= 2012g # 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). @@ -118,10 +118,18 @@ LDLIBS= # -DZIC_MAX_ABBR_LEN_WO_WARN=3 # (or some other number) to set the maximum time zone abbreviation length # that zic will accept without a warning (the default is 6) -GCC_DEBUG_FLAGS = -Dlint -g -O3 -fno-common \ - -Wall -Wcast-qual -Wconversion -Wmissing-prototypes \ - -Wnested-externs -Wpointer-arith -Wshadow \ - -Wtraditional # -Wstrict-prototypes -Wwrite-strings +GCC_DEBUG_FLAGS = -Dlint -g3 -O3 -fno-common -fstrict-aliasing \ + -Wall -Wextra \ + -Wbad-function-cast -Wcast-align -Wcast-qual \ + -Wformat=2 -Winit-self \ + -Wmissing-declarations -Wmissing-noreturn -Wmissing-prototypes \ + -Wnested-externs \ + -Wno-format-nonliteral -Wno-sign-compare -Wno-sign-conversion \ + -Wno-type-limits \ + -Wno-unused-parameter -Woverlength-strings -Wpointer-arith \ + -Wshadow -Wstrict-prototypes -Wsuggest-attribute=const \ + -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wtrampolines \ + -Wwrite-strings # # If you want to use System V compatibility code, add # -DUSG_COMPAT @@ -274,7 +282,8 @@ NEWUCBSRCS= date.c strftime.c SOURCES= $(HEADERS) $(LIBSRCS) $(NONLIBSRCS) $(NEWUCBSRCS) tzselect.ksh MANS= newctime.3 newstrftime.3 newtzset.3 time2posix.3 \ tzfile.5 tzselect.8 zic.8 zdump.8 -DOCS= README Theory $(MANS) date.1 Makefile +COMMON= Makefile +DOCS= README Theory $(MANS) date.1 PRIMARY_YDATA= africa antarctica asia australasia \ europe northamerica southamerica YDATA= $(PRIMARY_YDATA) pacificnew etcetera backward @@ -287,7 +296,7 @@ WEB_PAGES= tz-art.htm tz-link.htm MISC= usno1988 usno1989 usno1989a usno1995 usno1997 usno1998 \ $(WEB_PAGES) checktab.awk workman.sh \ zoneinfo2tdf.pl -ENCHILADA= $(DOCS) $(SOURCES) $(DATA) $(MISC) +ENCHILADA= $(COMMON) $(DOCS) $(SOURCES) $(DATA) $(MISC) # And for the benefit of csh users on systems that assume the user # shell should be used to handle commands in Makefiles. . . @@ -435,10 +444,11 @@ public: $(ENCHILADA) set-timestamps done $(AWK) -f checktab.awk $(PRIMARY_YDATA) LC_ALL=C && export LC_ALL && \ - tar $(TARFLAGS) -cf - $(DOCS) $(SOURCES) $(MISC) *.[1-8].txt | \ + tar $(TARFLAGS) -cf - \ + $(COMMON) $(DOCS) $(SOURCES) $(MISC) *.[1-8].txt | \ gzip $(GZIPFLAGS) > tzcode$(VERSION).tar.gz LC_ALL=C && export LC_ALL && \ - tar $(TARFLAGS) -cf - $(DATA) | \ + tar $(TARFLAGS) -cf - $(COMMON) $(DATA) | \ gzip $(GZIPFLAGS) > tzdata$(VERSION).tar.gz typecheck: diff --git a/elsie.nci.nih.gov/src/asctime.c b/elsie.nci.nih.gov/src/asctime.c index 3d3f6b9..152b0db 100644 --- a/elsie.nci.nih.gov/src/asctime.c +++ b/elsie.nci.nih.gov/src/asctime.c @@ -69,9 +69,7 @@ static char buf_asctime[MAX_ASCTIME_BUF_SIZE]; */ char * -asctime_r(timeptr, buf) -register const struct tm * timeptr; -char * buf; +asctime_r(register const struct tm *timeptr, char *buf) { static const char wday_name[][3] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" @@ -128,8 +126,7 @@ char * buf; */ char * -asctime(timeptr) -register const struct tm * timeptr; +asctime(register const struct tm *timeptr) { return asctime_r(timeptr, buf_asctime); } diff --git a/elsie.nci.nih.gov/src/asia b/elsie.nci.nih.gov/src/asia index a02e109..8e896fc 100644 --- a/elsie.nci.nih.gov/src/asia +++ b/elsie.nci.nih.gov/src/asia @@ -2293,6 +2293,8 @@ Rule Palestine 2010 only - Aug 11 0:00 0 - # From Arthur David Olson (2011-09-20): # 2011 transitions per http://www.timeanddate.com as of 2011-09-20. +# From Paul Eggert (2012-10-12): +# 2012 transitions per http://www.timeanddate.com as of 2012-10-12. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Gaza 2:17:52 - LMT 1900 Oct @@ -2303,7 +2305,7 @@ Zone Asia/Gaza 2:17:52 - LMT 1900 Oct 2:00 Palestine EE%sT 2011 Apr 2 12:01 2:00 1:00 EEST 2011 Aug 1 2:00 - EET 2012 Mar 30 - 2:00 1:00 EEST 2012 Sep 28 + 2:00 1:00 EEST 2012 Sep 21 1:00 2:00 - EET Zone Asia/Hebron 2:20:23 - LMT 1900 Oct @@ -2318,7 +2320,7 @@ Zone Asia/Hebron 2:20:23 - LMT 1900 Oct 2:00 - EET 2011 Aug 30 2:00 1:00 EEST 2011 Sep 30 3:00 2:00 - EET 2012 Mar 30 - 2:00 1:00 EEST 2012 Sep 28 3:00 + 2:00 1:00 EEST 2012 Sep 21 1:00 2:00 - EET # Paracel Is diff --git a/elsie.nci.nih.gov/src/australasia b/elsie.nci.nih.gov/src/australasia index eb24117..74d476e 100644 --- a/elsie.nci.nih.gov/src/australasia +++ b/elsie.nci.nih.gov/src/australasia @@ -628,6 +628,23 @@ Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5 # Although Samoa has used Daylight Saving Time in the 2010-2011 and 2011-2012 # seasons, there is not yet any indication that this trend will continue on # a regular basis. For now, we have explicitly listed the transitions below. +# +# From Nicky (2012-09-10): +# Daylight Saving Time commences on Sunday 30th September 2012 and +# ends on Sunday 7th of April 2013. +# +# Please find link below for more information. +# http://www.mcil.gov.ws/mcil_publications.html +# +# That publication also includes dates for Summer of 2013/4 as well +# which give the impression of a pattern in selecting dates for the +# future, so for now, we will guess this will continue. + +# Western Samoa +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule WS 2012 max - Sep lastSun 3:00 1 D +Rule WS 2012 max - Apr Sun>=1 4:00 0 - +# Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5 -11:26:56 - LMT 1911 -11:30 - SAMT 1950 # Samoa Time @@ -635,8 +652,8 @@ Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5 -11:00 1:00 WSDT 2011 Apr 2 4:00 -11:00 - WST 2011 Sep 24 3:00 -11:00 1:00 WSDT 2011 Dec 30 - 13:00 1:00 WSDT 2012 Apr 1 4:00 - 13:00 - WST + 13:00 1:00 WSDT 2012 Apr Sun>=1 4:00 + 13:00 WS WS%sT # Solomon Is # excludes Bougainville, for which see Papua New Guinea diff --git a/elsie.nci.nih.gov/src/date.c b/elsie.nci.nih.gov/src/date.c index 5a2346e..b9578e1 100644 --- a/elsie.nci.nih.gov/src/date.c +++ b/elsie.nci.nih.gov/src/date.c @@ -83,9 +83,7 @@ static void wildinput(const char *, const char *, const char *); int -main(argc, argv) -const int argc; -char * argv[]; +main(const int argc, char *argv[]) { register const char * format; register const char * value; @@ -246,11 +244,11 @@ _("date: error: multiple values in command line\n")); tv.tv_sec = (int) adjust; tv.tv_usec = (int) ((adjust - tv.tv_sec) * 1000000L); - if (adjtime(&tv, (struct timeval *) NULL) != 0) + if (adjtime(&tv, NULL) != 0) oops("adjtime"); #endif /* HAVE_ADJTIME */ #if !HAVE_ADJTIME - reset((time_t) (now + adjust), nflag); + reset(now + adjust, nflag); #endif /* !HAVE_ADJTIME */ /* ** Sun silently ignores everything else; we follow suit. @@ -262,13 +260,13 @@ _("date: error: multiple values in command line\n")); struct timezone tz; if (!dflag || !tflag) - if (gettimeofday((struct timeval *) NULL, &tz) != 0) + if (gettimeofday(NULL, &tz) != 0) oops("gettimeofday"); if (dflag) tz.tz_dsttime = dsttime; if (tflag) tz.tz_minuteswest = minuteswest; - if (settimeofday((struct timeval *) NULL, &tz) != 0) + if (settimeofday(NULL, &tz) != 0) oops("settimeofday"); #endif /* HAVE_SETTIMEOFDAY == 2 */ #if HAVE_SETTIMEOFDAY != 2 @@ -314,7 +312,7 @@ dogmt(void) for (n = 0; environ[n] != NULL; ++n) continue; - fakeenv = (char **) malloc((size_t) (n + 2) * sizeof *fakeenv); + fakeenv = malloc((n + 2) * sizeof *fakeenv); if (fakeenv == NULL) { (void) perror(_("Memory exhausted")); errensure(); @@ -445,9 +443,7 @@ extern int logwtmp(); /*ARGSUSED*/ #endif /* !defined TSP_SETDATE */ static void -reset(newt, nflag) -const time_t newt; -const int nflag; +reset(const time_t newt, const int nflag) { register const char * username; static struct timeval tv; /* static so tv_usec is 0 */ @@ -467,7 +463,7 @@ const int nflag; ** "old" entry is always written, for compatibility. */ logwtmp("|", TIME_NAME, ""); - if (settimeofday(&tv, (struct timezone *) NULL) == 0) { + if (settimeofday(&tv, NULL) == 0) { logwtmp("{", TIME_NAME, ""); /* } */ syslog(LOG_AUTH | LOG_NOTICE, _("date set by %s"), username); @@ -478,10 +474,8 @@ const int nflag; #endif /* !defined OLD_TIME */ static void -wildinput(item, value, reason) -const char * const item; -const char * const value; -const char * const reason; +wildinput(const char *const item, const char *const value, + const char *const reason) { (void) fprintf(stderr, _("date: error: bad command line %s \"%s\", %s\n"), @@ -497,8 +491,7 @@ errensure(void) } static const char * -nondigit(cp) -register const char * cp; +nondigit(register const char *cp) { while (is_digit(*cp)) ++cp; @@ -515,8 +508,7 @@ usage(void) } static void -oops(string) -const char * const string; +oops(const char *const string) { int e = errno; @@ -524,12 +516,11 @@ const char * const string; errno = e; (void) perror(string); errensure(); - display((char *) NULL); + display(NULL); } static void -display(format) -const char * const format; +display(const char *const format) { struct tm tm; time_t now; @@ -553,10 +544,7 @@ extern size_t strftime(); #define INCR 1024 static void -timeout(fp, format, tmp) -FILE * const fp; -const char * const format; -const struct tm * const tmp; +timeout(FILE *const fp, const char *const format, const struct tm *const tmp) { char * cp; size_t result; @@ -565,7 +553,7 @@ const struct tm * const tmp; if (*format == '\0') return; size = INCR; - cp = malloc((size_t) size); + cp = malloc(size); for ( ; ; ) { if (cp == NULL) { (void) fprintf(stderr, @@ -578,16 +566,15 @@ const struct tm * const tmp; if (result != 0 || cp[0] == '\0') break; size += INCR; - cp = realloc(cp, (size_t) size); + cp = realloc(cp, size); } (void) fwrite(cp, 1, result, fp); free(cp); } static int -sametm(atmp, btmp) -register const struct tm * const atmp; -register const struct tm * const btmp; +sametm(register const struct tm *const atmp, + register const struct tm *const btmp) { return atmp->tm_year == btmp->tm_year && atmp->tm_mon == btmp->tm_mon && @@ -813,8 +800,7 @@ iffy(const time_t thist, const time_t thatt, * notifies the master that a correction is needed. * Returns 1 on success, 0 on failure. */ -netsettime(ntv) - struct timeval ntv; +netsettime(struct timeval ntv) { int s, length, port, timed_ack, found, err; long waittime; @@ -833,7 +819,7 @@ netsettime(ntv) } dest.sin_port = sp->s_port; dest.sin_family = AF_INET; - dest.sin_addr.s_addr = htonl((u_long)INADDR_ANY); + dest.sin_addr.s_addr = htonl(INADDR_ANY); s = socket(AF_INET, SOCK_DGRAM, 0); if (s < 0) { if (errno != EPROTONOSUPPORT) @@ -843,7 +829,7 @@ netsettime(ntv) bzero((char *)&sin, sizeof (sin)); sin.sin_family = AF_INET; for (port = IPPORT_RESERVED - 1; port > IPPORT_RESERVED / 2; port--) { - sin.sin_port = htons((u_short)port); + sin.sin_port = htons(port); if (bind(s, (struct sockaddr *)&sin, sizeof (sin)) >= 0) break; if (errno != EADDRINUSE) { @@ -863,9 +849,9 @@ netsettime(ntv) goto bad; } (void) strncpy(msg.tsp_name, hostname, sizeof (hostname)); - msg.tsp_seq = htons((u_short)0); - msg.tsp_time.tv_sec = htonl((u_long)ntv.tv_sec); - msg.tsp_time.tv_usec = htonl((u_long)ntv.tv_usec); + msg.tsp_seq = htons(0); + msg.tsp_time.tv_sec = htonl(ntv.tv_sec); + msg.tsp_time.tv_usec = htonl(ntv.tv_usec); length = sizeof (struct sockaddr_in); if (connect(s, &dest, length) < 0) { perror("date: connect"); @@ -883,7 +869,7 @@ loop: tout.tv_usec = 0; FD_ZERO(&ready); FD_SET(s, &ready); - found = select(FD_SETSIZE, &ready, (fd_set *)0, (fd_set *)0, &tout); + found = select(FD_SETSIZE, &ready, 0, 0, &tout); length = sizeof err; if (getsockopt(s, SOL_SOCKET, SO_ERROR, (char *)&err, &length) == 0 && err) { diff --git a/elsie.nci.nih.gov/src/difftime.c b/elsie.nci.nih.gov/src/difftime.c index 59e3351..c8c85b3 100644 --- a/elsie.nci.nih.gov/src/difftime.c +++ b/elsie.nci.nih.gov/src/difftime.c @@ -8,9 +8,7 @@ #include "private.h" /* for time_t, TYPE_INTEGRAL, and TYPE_SIGNED */ double -difftime(time1, time0) -const time_t time1; -const time_t time0; +difftime(const time_t time1, const time_t time0) { /* ** If (sizeof (double) > sizeof (time_t)) simply convert and subtract diff --git a/elsie.nci.nih.gov/src/ialloc.c b/elsie.nci.nih.gov/src/ialloc.c index 0268cf4..b6f0188 100644 --- a/elsie.nci.nih.gov/src/ialloc.c +++ b/elsie.nci.nih.gov/src/ialloc.c @@ -7,39 +7,8 @@ #include "private.h" -#define nonzero(n) (((n) == 0) ? 1 : (n)) - -char * -imalloc(n) -const int n; -{ - return malloc((size_t) nonzero(n)); -} - -char * -icalloc(nelem, elsize) -int nelem; -int elsize; -{ - if (nelem == 0 || elsize == 0) - nelem = elsize = 1; - return calloc((size_t) nelem, (size_t) elsize); -} - -void * -irealloc(pointer, size) -void * const pointer; -const int size; -{ - if (pointer == NULL) - return imalloc(size); - return realloc((void *) pointer, (size_t) nonzero(size)); -} - char * -icatalloc(old, new) -char * const old; -const char * const new; +icatalloc(char *const old, const char *const new) { register char * result; register int oldsize, newsize; @@ -50,31 +19,14 @@ const char * const new; else if (newsize == 0) return old; else oldsize = strlen(old); - if ((result = irealloc(old, oldsize + newsize + 1)) != NULL) + if ((result = realloc(old, oldsize + newsize + 1)) != NULL) if (new != NULL) (void) strcpy(result + oldsize, new); return result; } char * -icpyalloc(string) -const char * const string; -{ - return icatalloc((char *) NULL, string); -} - -void -ifree(p) -char * const p; -{ - if (p != NULL) - (void) free(p); -} - -void -icfree(p) -char * const p; +icpyalloc(const char *const string) { - if (p != NULL) - (void) free(p); + return icatalloc(NULL, string); } diff --git a/elsie.nci.nih.gov/src/localtime.c b/elsie.nci.nih.gov/src/localtime.c index 93ef8a8..e074c54 100644 --- a/elsie.nci.nih.gov/src/localtime.c +++ b/elsie.nci.nih.gov/src/localtime.c @@ -133,8 +133,9 @@ struct rule { static long detzcode(const char * codep); static time_t detzcode64(const char * codep); static int differ_by_repeat(time_t t1, time_t t0); -static const char * getzname(const char * strp); -static const char * getqzname(const char * strp, const int delim); +static const char * getzname(const char * strp) ATTRIBUTE_PURE; +static const char * getqzname(const char * strp, const int delim) + ATTRIBUTE_PURE; static const char * getnum(const char * strp, int * nump, int min, int max); static const char * getsecs(const char * strp, long * secsp); @@ -146,7 +147,7 @@ static struct tm * gmtsub(const time_t * timep, long offset, static struct tm * localsub(const time_t * timep, long offset, struct tm * tmp); static int increment_overflow(int * number, int delta); -static int leaps_thru_end_of(int y); +static int leaps_thru_end_of(int y) ATTRIBUTE_PURE; static int long_increment_overflow(long * number, int delta); static int long_normalize_overflow(long * tensptr, int * unitsptr, int base); @@ -170,7 +171,8 @@ static struct tm * timesub(const time_t * timep, long offset, static int tmcomp(const struct tm * atmp, const struct tm * btmp); static time_t transtime(time_t janfirst, int year, - const struct rule * rulep, long offset); + const struct rule * rulep, long offset) + ATTRIBUTE_PURE; static int typesequiv(const struct state * sp, int a, int b); static int tzload(const char * name, struct state * sp, int doextend); @@ -222,8 +224,7 @@ time_t altzone = 0; #endif /* defined ALTZONE */ static long -detzcode(codep) -const char * const codep; +detzcode(const char *const codep) { register long result; register int i; @@ -235,8 +236,7 @@ const char * const codep; } static time_t -detzcode64(codep) -const char * const codep; +detzcode64(const char *const codep) { register time_t result; register int i; @@ -310,9 +310,7 @@ settzname(void) } static int -differ_by_repeat(t1, t0) -const time_t t1; -const time_t t0; +differ_by_repeat(const time_t t1, const time_t t0) { if (TYPE_INTEGRAL(time_t) && TYPE_BIT(time_t) - TYPE_SIGNED(time_t) < SECSPERREPEAT_BITS) @@ -321,10 +319,8 @@ const time_t t0; } static int -tzload(name, sp, doextend) -register const char * name; -register struct state * const sp; -register const int doextend; +tzload(register const char *name, register struct state *const sp, + register const int doextend) { register const char * p; register int i; @@ -571,21 +567,18 @@ register const int doextend; } } #ifdef ALL_STATE - (void) free((void *) up); + free(up); #endif /* defined ALL_STATE */ return 0; oops: #ifdef ALL_STATE - (void) free((void *) up); + free(up); #endif /* defined ALL_STATE */ return -1; } static int -typesequiv(sp, a, b) -const struct state * const sp; -const int a; -const int b; +typesequiv(const struct state *const sp, const int a, const int b) { register int result; @@ -622,8 +615,7 @@ static const int year_lengths[2] = { */ static const char * -getzname(strp) -register const char * strp; +getzname(register const char *strp) { register char c; @@ -660,11 +652,7 @@ getqzname(register const char *strp, const int delim) */ static const char * -getnum(strp, nump, min, max) -register const char * strp; -int * const nump; -const int min; -const int max; +getnum(register const char *strp, int *const nump, const int min, const int max) { register char c; register int num; @@ -693,9 +681,7 @@ const int max; */ static const char * -getsecs(strp, secsp) -register const char * strp; -long * const secsp; +getsecs(register const char *strp, long *const secsp) { int num; @@ -735,9 +721,7 @@ long * const secsp; */ static const char * -getoffset(strp, offsetp) -register const char * strp; -long * const offsetp; +getoffset(register const char *strp, long *const offsetp) { register int neg = 0; @@ -762,9 +746,7 @@ long * const offsetp; */ static const char * -getrule(strp, rulep) -const char * strp; -register struct rule * const rulep; +getrule(const char *strp, register struct rule *const rulep) { if (*strp == 'J') { /* @@ -816,11 +798,8 @@ register struct rule * const rulep; */ static time_t -transtime(janfirst, year, rulep, offset) -const time_t janfirst; -const int year; -register const struct rule * const rulep; -const long offset; +transtime(const time_t janfirst, const int year, + register const struct rule *const rulep, const long offset) { register int leapyear; register time_t value; @@ -911,10 +890,8 @@ const long offset; */ static int -tzparse(name, sp, lastditch) -const char * name; -register struct state * const sp; -const int lastditch; +tzparse(const char *name, register struct state *const sp, + const int lastditch) { const char * stdname; const char * dstname; @@ -1149,8 +1126,7 @@ const int lastditch; } static void -gmtload(sp) -struct state * const sp; +gmtload(struct state *const sp) { if (tzload(gmt, sp, TRUE) != 0) (void) tzparse(gmt, sp, TRUE); @@ -1172,14 +1148,14 @@ tzsetwall(void) #ifdef ALL_STATE if (lclptr == NULL) { - lclptr = (struct state *) calloc(1, sizeof *lclptr); + lclptr = calloc(1, sizeof *lclptr); if (lclptr == NULL) { settzname(); /* all we can do */ return; } } #endif /* defined ALL_STATE */ - if (tzload((char *) NULL, lclptr, TRUE) != 0) + if (tzload(NULL, lclptr, TRUE) != 0) gmtload(lclptr); settzname(); } @@ -1203,7 +1179,7 @@ tzset(void) #ifdef ALL_STATE if (lclptr == NULL) { - lclptr = (struct state *) calloc(1, sizeof *lclptr); + lclptr = calloc(1, sizeof *lclptr); if (lclptr == NULL) { settzname(); /* all we can do */ return; @@ -1238,10 +1214,7 @@ tzset(void) /*ARGSUSED*/ static struct tm * -localsub(timep, offset, tmp) -const time_t * const timep; -const long offset; -struct tm * const tmp; +localsub(const time_t *const timep, const long offset, struct tm *const tmp) { register struct state * sp; register const struct ttinfo * ttisp; @@ -1330,8 +1303,7 @@ struct tm * const tmp; } struct tm * -localtime(timep) -const time_t * const timep; +localtime(const time_t *const timep) { tzset(); return localsub(timep, 0L, &tm); @@ -1342,9 +1314,7 @@ const time_t * const timep; */ struct tm * -localtime_r(timep, tmp) -const time_t * const timep; -struct tm * tmp; +localtime_r(const time_t *const timep, struct tm *tmp) { return localsub(timep, 0L, tmp); } @@ -1354,17 +1324,14 @@ struct tm * tmp; */ static struct tm * -gmtsub(timep, offset, tmp) -const time_t * const timep; -const long offset; -struct tm * const tmp; +gmtsub(const time_t *const timep, const long offset, struct tm *const tmp) { register struct tm * result; if (!gmt_is_set) { gmt_is_set = TRUE; #ifdef ALL_STATE - gmtptr = (struct state *) calloc(1, sizeof *gmtptr); + gmtptr = calloc(1, sizeof *gmtptr); if (gmtptr != NULL) #endif /* defined ALL_STATE */ gmtload(gmtptr); @@ -1393,8 +1360,7 @@ struct tm * const tmp; } struct tm * -gmtime(timep) -const time_t * const timep; +gmtime(const time_t *const timep) { return gmtsub(timep, 0L, &tm); } @@ -1404,9 +1370,7 @@ const time_t * const timep; */ struct tm * -gmtime_r(timep, tmp) -const time_t * const timep; -struct tm * tmp; +gmtime_r(const time_t *const timep, struct tm *tmp) { return gmtsub(timep, 0L, tmp); } @@ -1414,9 +1378,7 @@ struct tm * tmp; #ifdef STD_INSPIRED struct tm * -offtime(timep, offset) -const time_t * const timep; -const long offset; +offtime(const time_t *const timep, const long offset) { return gmtsub(timep, offset, &tm); } @@ -1429,19 +1391,16 @@ const long offset; */ static int -leaps_thru_end_of(y) -register const int y; +leaps_thru_end_of(register const int y) { return (y >= 0) ? (y / 4 - y / 100 + y / 400) : -(leaps_thru_end_of(-(y + 1)) + 1); } static struct tm * -timesub(timep, offset, sp, tmp) -const time_t * const timep; -const long offset; -register const struct state * const sp; -register struct tm * const tmp; +timesub(const time_t *const timep, const long offset, + register const struct state *const sp, + register struct tm *const tmp) { register const struct lsinfo * lp; register time_t tdays; @@ -1571,8 +1530,7 @@ register struct tm * const tmp; } char * -ctime(timep) -const time_t * const timep; +ctime(const time_t *const timep) { /* ** Section 4.12.3.2 of X3.159-1989 requires that @@ -1584,9 +1542,7 @@ const time_t * const timep; } char * -ctime_r(timep, buf) -const time_t * const timep; -char * buf; +ctime_r(const time_t *const timep, char *buf) { struct tm mytm; @@ -1611,9 +1567,7 @@ char * buf; */ static int -increment_overflow(ip, j) -int * const ip; -int j; +increment_overflow(int *const ip, int j) { register int const i = *ip; @@ -1630,9 +1584,7 @@ int j; } static int -long_increment_overflow(lp, m) -long * const lp; -int const m; +long_increment_overflow(long *const lp, int const m) { register long const l = *lp; @@ -1643,10 +1595,7 @@ int const m; } static int -normalize_overflow(tensptr, unitsptr, base) -int * const tensptr; -int * const unitsptr; -const int base; +normalize_overflow(int *const tensptr, int *const unitsptr, const int base) { register int tensdelta; @@ -1658,10 +1607,7 @@ const int base; } static int -long_normalize_overflow(tensptr, unitsptr, base) -long * const tensptr; -int * const unitsptr; -const int base; +long_normalize_overflow(long *const tensptr, int *const unitsptr, const int base) { register int tensdelta; @@ -1673,9 +1619,8 @@ const int base; } static int -tmcomp(atmp, btmp) -register const struct tm * const atmp; -register const struct tm * const btmp; +tmcomp(register const struct tm *const atmp, + register const struct tm *const btmp) { register int result; @@ -1689,12 +1634,11 @@ register const struct tm * const btmp; } static time_t -time2sub(tmp, funcp, offset, okayp, do_norm_secs) -struct tm * const tmp; -struct tm * (* const funcp)(const time_t*, long, struct tm*); -const long offset; -int * const okayp; -const int do_norm_secs; +time2sub(struct tm *const tmp, + struct tm *(*const funcp)(const time_t *, long, struct tm *), + const long offset, + int *const okayp, + const int do_norm_secs) { register const struct state * sp; register int dir; @@ -1873,11 +1817,10 @@ label: } static time_t -time2(tmp, funcp, offset, okayp) -struct tm * const tmp; -struct tm * (* const funcp)(const time_t*, long, struct tm*); -const long offset; -int * const okayp; +time2(struct tm * const tmp, + struct tm * (*const funcp)(const time_t *, long, struct tm *), + const long offset, + int *const okayp) { time_t t; @@ -1891,10 +1834,9 @@ int * const okayp; } static time_t -time1(tmp, funcp, offset) -struct tm * const tmp; -struct tm * (* const funcp)(const time_t *, long, struct tm *); -const long offset; +time1(struct tm *const tmp, + struct tm *(*const funcp) (const time_t *, long, struct tm *), + const long offset) { register time_t t; register const struct state * sp; @@ -1968,8 +1910,7 @@ const long offset; } time_t -mktime(tmp) -struct tm * const tmp; +mktime(struct tm *const tmp) { tzset(); return time1(tmp, localsub, 0L); @@ -1978,8 +1919,7 @@ struct tm * const tmp; #ifdef STD_INSPIRED time_t -timelocal(tmp) -struct tm * const tmp; +timelocal(struct tm *const tmp) { if (tmp != NULL) tmp->tm_isdst = -1; /* in case it wasn't initialized */ @@ -1987,8 +1927,7 @@ struct tm * const tmp; } time_t -timegm(tmp) -struct tm * const tmp; +timegm(struct tm *const tmp) { if (tmp != NULL) tmp->tm_isdst = 0; @@ -1996,9 +1935,7 @@ struct tm * const tmp; } time_t -timeoff(tmp, offset) -struct tm * const tmp; -const long offset; +timeoff(struct tm *const tmp, const long offset) { if (tmp != NULL) tmp->tm_isdst = 0; @@ -2015,8 +1952,7 @@ const long offset; */ long -gtime(tmp) -struct tm * const tmp; +gtime(struct tm *const tmp) { const time_t t = mktime(tmp); @@ -2042,8 +1978,7 @@ struct tm * const tmp; */ static long -leapcorr(timep) -time_t * timep; +leapcorr(time_t *timep) { register struct state * sp; register struct lsinfo * lp; @@ -2060,16 +1995,14 @@ time_t * timep; } time_t -time2posix(t) -time_t t; +time2posix(time_t t) { tzset(); return t - leapcorr(&t); } time_t -posix2time(t) -time_t t; +posix2time(time_t t) { time_t x; time_t y; diff --git a/elsie.nci.nih.gov/src/private.h b/elsie.nci.nih.gov/src/private.h index f0e2e6d..1d1d391 100644 --- a/elsie.nci.nih.gov/src/private.h +++ b/elsie.nci.nih.gov/src/private.h @@ -144,6 +144,12 @@ typedef long int_fast64_t; #define INT32_MIN (-1 - INT32_MAX) #endif /* !defined INT32_MIN */ +#if 2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__) +# define ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define ATTRIBUTE_PURE /* empty */ +#endif + /* ** Workarounds for compilers/systems. */ @@ -162,13 +168,8 @@ extern char * asctime_r(struct tm const *, char *); ** Private function declarations. */ -char * icalloc(int nelem, int elsize); char * icatalloc(char * old, const char * new); char * icpyalloc(const char * string); -char * imalloc(int n); -void * irealloc(void * pointer, int size); -void icfree(char * pointer); -void ifree(char * pointer); const char * scheck(const char * string, const char * format); /* diff --git a/elsie.nci.nih.gov/src/scheck.c b/elsie.nci.nih.gov/src/scheck.c index 8e7737f..ed60980 100644 --- a/elsie.nci.nih.gov/src/scheck.c +++ b/elsie.nci.nih.gov/src/scheck.c @@ -8,9 +8,7 @@ #include "private.h" const char * -scheck(string, format) -const char * const string; -const char * const format; +scheck(const char *const string, const char *const format) { register char * fbuf; register const char * fp; @@ -22,7 +20,7 @@ const char * const format; result = ""; if (string == NULL || format == NULL) return result; - fbuf = imalloc((int) (2 * strlen(format) + 4)); + fbuf = malloc(2 * strlen(format) + 4); if (fbuf == NULL) return result; fp = format; @@ -51,7 +49,7 @@ const char * const format; *tp++ = 'c'; *tp = '\0'; if (sscanf(string, fbuf, &dummy) != 1) - result = (char *) format; - ifree(fbuf); + result = format; + free(fbuf); return result; } diff --git a/elsie.nci.nih.gov/src/strftime.c b/elsie.nci.nih.gov/src/strftime.c index e8c8b82..4950f74 100644 --- a/elsie.nci.nih.gov/src/strftime.c +++ b/elsie.nci.nih.gov/src/strftime.c @@ -114,11 +114,8 @@ extern char * tzname[]; #define IN_ALL 3 size_t -strftime(s, maxsize, format, t) -char * const s; -const size_t maxsize; -const char * const format; -const struct tm * const t; +strftime(char * const s, const size_t maxsize, const char *const format, + const struct tm *const t) { char * p; int warn; @@ -152,12 +149,8 @@ const struct tm * const t; } static char * -_fmt(format, t, pt, ptlim, warnp) -const char * format; -const struct tm * const t; -char * pt; -const char * const ptlim; -int * warnp; +_fmt(const char *format, const struct tm *const t, char * pt, + const char *const ptlim, int *warnp) { for ( ; *format; ++format) { if (*format == '%') { @@ -565,11 +558,8 @@ label: } static char * -_conv(n, format, pt, ptlim) -const int n; -const char * const format; -char * const pt; -const char * const ptlim; +_conv(const int n, const char *const format, char *const pt, + const char *const ptlim) { char buf[INT_STRLEN_MAXIMUM(int) + 1]; @@ -578,10 +568,7 @@ const char * const ptlim; } static char * -_add(str, pt, ptlim) -const char * str; -char * pt; -const char * const ptlim; +_add(const char *str, char *pt, const char *const ptlim) { while (pt < ptlim && (*pt = *str++) != '\0') ++pt; @@ -597,13 +584,8 @@ const char * const ptlim; */ static char * -_yconv(a, b, convert_top, convert_yy, pt, ptlim) -const int a; -const int b; -const int convert_top; -const int convert_yy; -char * pt; -const char * const ptlim; +_yconv(const int a, const int b, const int convert_top, const int convert_yy, + char *pt, const char *const ptlim) { register int lead; register int trail; @@ -654,7 +636,7 @@ _loc(void) */ if (localebuf.mon[0]) return &localebuf; - name = setlocale(LC_TIME, (char *) NULL); + name = setlocale(LC_TIME, NULL); if (name == NULL || *name == '\0') goto no_locale; /* @@ -702,7 +684,7 @@ _loc(void) (void) strcpy(lbuf, name); p = lbuf + namesize; plim = p + st.st_size; - if (read(fd, p, (size_t) st.st_size) != st.st_size) + if (read(fd, p, st.st_size) != st.st_size) goto bad_lbuf; if (close(fd) != 0) goto bad_lbuf; diff --git a/elsie.nci.nih.gov/src/zdump.c b/elsie.nci.nih.gov/src/zdump.c index 7b96a4f..6caa7a2 100644 --- a/elsie.nci.nih.gov/src/zdump.c +++ b/elsie.nci.nih.gov/src/zdump.c @@ -119,6 +119,12 @@ #endif /* !defined GNUC_or_lint */ #endif /* !defined INITIALIZE */ +#if 2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__) +# define ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define ATTRIBUTE_PURE /* empty */ +#endif + /* ** For the benefit of GNU folk... ** `_(MSGID)' uses the current locale's message library string for MSGID. @@ -152,20 +158,19 @@ static int warned; static char * abbr(struct tm * tmp); static void abbrok(const char * abbrp, const char * zone); -static long delta(struct tm * newp, struct tm * oldp); +static long delta(struct tm * newp, struct tm * oldp) ATTRIBUTE_PURE; static void dumptime(const struct tm * tmp); static time_t hunt(char * name, time_t lot, time_t hit); static void setabsolutes(void); static void show(char * zone, time_t t, int v); static const char * tformat(void); -static time_t yeartot(long y); +static time_t yeartot(long y) ATTRIBUTE_PURE; #ifndef TYPECHECK #define my_localtime localtime #else /* !defined TYPECHECK */ static struct tm * -my_localtime(tp) -time_t * tp; +my_localtime(time_t *tp) { register struct tm * tmp; @@ -198,12 +203,10 @@ time_t * tp; #endif /* !defined TYPECHECK */ static void -abbrok(abbrp, zone) -const char * const abbrp; -const char * const zone; +abbrok(const char *const abbrp, const char *const zone) { register const char * cp; - register char * wp; + register const char * wp; if (warned) return; @@ -236,9 +239,7 @@ const char * const zone; } static void -usage(stream, status) -FILE * const stream; -const int status; +usage(FILE * const stream, const int status) { (void) fprintf(stream, _("%s: usage is %s [ --version ] [ --help ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n\ @@ -249,9 +250,7 @@ Report bugs to tz@elsie.nci.nih.gov.\n"), } int -main(argc, argv) -int argc; -char * argv[]; +main(int argc, char *argv[]) { register int i; register int c; @@ -330,10 +329,9 @@ char * argv[]; for (i = 0; environ[i] != NULL; ++i) continue; - fakeenv = (char **) malloc((size_t) ((i + 2) * - sizeof *fakeenv)); - if (fakeenv == NULL || - (fakeenv[0] = (char *) malloc(longest + 4)) == NULL) { + fakeenv = malloc((i + 2) * sizeof *fakeenv); + if (fakeenv == NULL + || (fakeenv[0] = malloc(longest + 4)) == NULL) { (void) perror(progname); exit(EXIT_FAILURE); } @@ -451,8 +449,7 @@ _("%s: use of -v on system with floating time_t other than float or double\n"), } static time_t -yeartot(y) -const long y; +yeartot(const long y) { register long myy; register long seconds; @@ -530,9 +527,7 @@ hunt(char *name, time_t lot, time_t hit) */ static long -delta(newp, oldp) -struct tm * newp; -struct tm * oldp; +delta(struct tm * newp, struct tm *oldp) { register long result; register int tmy; @@ -586,8 +581,7 @@ show(char *zone, time_t t, int v) } static char * -abbr(tmp) -struct tm * tmp; +abbr(struct tm *tmp) { register char * result; static char nada; @@ -626,8 +620,7 @@ tformat(void) } static void -dumptime(timeptr) -register const struct tm * timeptr; +dumptime(register const struct tm *timeptr) { static const char wday_name[][3] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" diff --git a/elsie.nci.nih.gov/src/zic.c b/elsie.nci.nih.gov/src/zic.c index 4ae31a2..64af1b2 100644 --- a/elsie.nci.nih.gov/src/zic.c +++ b/elsie.nci.nih.gov/src/zic.c @@ -110,17 +110,8 @@ static int addtype(long gmtoff, const char * abbr, int isdst, static void leapadd(zic_t t, int positive, int rolling, int count); static void adjleap(void); static void associate(void); -static int ciequal(const char * ap, const char * bp); -static void convert(long val, char * buf); -static void convert64(zic_t val, char * buf); static void dolink(const char * fromfield, const char * tofield); -static void doabbr(char * abbr, const char * format, - const char * letters, int isdst, int doquotes); -static void eat(const char * name, int num); -static void eats(const char * name, int num, - const char * rname, int rnum); static long eitol(int i); -static void error(const char * message); static char ** getfields(char * buf); static long gethms(const char * string, const char * errstrng, int signable); @@ -131,32 +122,18 @@ static void inrule(char ** fields, int nfields); static int inzcont(char ** fields, int nfields); static int inzone(char ** fields, int nfields); static int inzsub(char ** fields, int nfields, int iscont); -static int is32(zic_t x); -static int itsabbr(const char * abbr, const char * word); static int itsdir(const char * name); static int lowerit(int c); -static char * memcheck(char * tocheck); static int mkdirs(char * filename); static void newabbr(const char * abbr); static long oadd(long t1, long t2); static void outzone(const struct zone * zp, int ntzones); -static void puttzcode(long code, FILE * fp); -static void puttzcode64(zic_t code, FILE * fp); -static int rcomp(const void * leftp, const void * rightp); static zic_t rpytime(const struct rule * rp, int wantedy); static void rulesub(struct rule * rp, const char * loyearp, const char * hiyearp, const char * typep, const char * monthp, const char * dayp, const char * timep); -static int stringoffset(char * result, long offset); -static int stringrule(char * result, const struct rule * rp, - long dstoff, long gmtoff); -static void stringzone(char * result, - const struct zone * zp, int ntzones); -static void setboundaries(void); static zic_t tadd(zic_t t1, long t2); -static void usage(FILE *stream, int status); -static void writezone(const char * name, const char * string); static int yearistype(int year, const char * type); static int charcnt; @@ -169,9 +146,7 @@ static int leapmaxyear; static int linenum; static int max_abbrvar_len; static int max_format_len; -static zic_t max_time; static int max_year; -static zic_t min_time; static int min_year; static int noise; static const char * rfilename; @@ -377,9 +352,8 @@ static char roll[TZ_MAX_LEAPS]; ** Memory allocation. */ -static char * -memcheck(ptr) -char * const ptr; +static ATTRIBUTE_PURE void * +memcheck(void *const ptr) { if (ptr == NULL) { const char *e = strerror(errno); @@ -391,8 +365,8 @@ char * const ptr; return ptr; } -#define emalloc(size) memcheck(imalloc(size)) -#define erealloc(ptr, size) memcheck(irealloc((ptr), (size))) +#define emalloc(size) memcheck(malloc(size)) +#define erealloc(ptr, size) memcheck(realloc(ptr, size)) #define ecpyalloc(ptr) memcheck(icpyalloc(ptr)) #define ecatalloc(oldp, newp) memcheck(icatalloc((oldp), (newp))) @@ -401,11 +375,8 @@ char * const ptr; */ static void -eats(name, num, rname, rnum) -const char * const name; -const int num; -const char * const rname; -const int rnum; +eats(const char *const name, const int num, const char *const rname, + const int rnum) { filename = name; linenum = num; @@ -414,16 +385,13 @@ const int rnum; } static void -eat(name, num) -const char * const name; -const int num; +eat(const char *const name, const int num) { - eats(name, num, (char *) NULL, -1); + eats(name, num, NULL, -1); } static void -error(string) -const char * const string; +error(const char *const string) { /* ** Match the format of "cc" to allow sh users to @@ -440,15 +408,14 @@ const char * const string; } static void -warning(string) -const char * const string; +warning(const char *const string) { char * cp; cp = ecpyalloc(_("warning: ")); cp = ecatalloc(cp, string); error(cp); - ifree(cp); + free(cp); --errors; } @@ -471,9 +438,7 @@ static const char * leapsec; static const char * yitcommand; int -main(argc, argv) -int argc; -char * argv[]; +main(int argc, char **argv) { register int i; register int j; @@ -570,8 +535,6 @@ _("%s: More than one -L option specified\n"), if (yitcommand == NULL) yitcommand = "yearistype"; - setboundaries(); - if (optind < argc && leapsec != NULL) { infile(leapsec); adjleap(); @@ -614,9 +577,7 @@ _("%s: More than one -L option specified\n"), } static void -dolink(fromfield, tofield) -const char * const fromfield; -const char * const tofield; +dolink(const char *const fromfield, const char *const tofield) { register char * fromname; register char * toname; @@ -666,7 +627,7 @@ const char * const tofield; toname); if (result == 0) warning(_("hard link failed, symbolic link used")); - ifree(symlinkcontents); + free(symlinkcontents); } #endif /* HAVE_SYMLINK */ if (result != 0) { @@ -678,26 +639,17 @@ warning(_("hard link failed, symbolic link used")); exit(EXIT_FAILURE); } } - ifree(fromname); - ifree(toname); + free(fromname); + free(toname); } #define TIME_T_BITS_IN_FILE 64 -static void -setboundaries(void) -{ - register int i; - - min_time = -1; - for (i = 0; i < TIME_T_BITS_IN_FILE - 1; ++i) - min_time *= 2; - max_time = -(min_time + 1); -} +static const zic_t min_time = (zic_t) -1 << (TIME_T_BITS_IN_FILE - 1); +static const zic_t max_time = -1 - ((zic_t) -1 << (TIME_T_BITS_IN_FILE - 1)); static int -itsdir(name) -const char * const name; +itsdir(const char *const name) { register char * myname; register int accres; @@ -705,7 +657,7 @@ const char * const name; myname = ecpyalloc(name); myname = ecatalloc(myname, "/."); accres = access(myname, F_OK); - ifree(myname); + free(myname); return accres == 0; } @@ -718,9 +670,7 @@ const char * const name; */ static int -rcomp(cp1, cp2) -const void * cp1; -const void * cp2; +rcomp(const void *cp1, const void *cp2) { return strcmp(((const struct rule *) cp1)->r_name, ((const struct rule *) cp2)->r_name); @@ -735,8 +685,7 @@ associate(void) register int i, j; if (nrules != 0) { - (void) qsort((void *) rules, (size_t) nrules, - (size_t) sizeof *rules, rcomp); + (void) qsort(rules, nrules, sizeof *rules, rcomp); for (i = 0; i < nrules - 1; ++i) { if (strcmp(rules[i].r_name, rules[i + 1].r_name) != 0) @@ -803,8 +752,7 @@ associate(void) } static void -infile(name) -const char * name; +infile(const char *name) { register FILE * fp; register char ** fields; @@ -828,7 +776,7 @@ const char * name; wantcont = FALSE; for (num = 1; ; ++num) { eat(name, num); - if (fgets(buf, (int) sizeof buf, fp) != buf) + if (fgets(buf, sizeof buf, fp) != buf) break; cp = strchr(buf, '\n'); if (cp == NULL) { @@ -880,7 +828,7 @@ _("%s: panic: Invalid l_value %d\n"), exit(EXIT_FAILURE); } } - ifree((char *) fields); + free(fields); } if (ferror(fp)) { (void) fprintf(stderr, _("%s: Error reading %s\n"), @@ -907,10 +855,7 @@ _("%s: panic: Invalid l_value %d\n"), */ static long -gethms(string, errstring, signable) -const char * string; -const char * const errstring; -const int signable; +gethms(const char *string, const char *const errstring, const int signable) { long hh; int mm, ss, sign; @@ -952,9 +897,7 @@ warning(_("values over 24 hours not handled by pre-2007 versions of zic")); } static void -inrule(fields, nfields) -register char ** const fields; -const int nfields; +inrule(register char **const fields, const int nfields) { static struct rule r; @@ -975,15 +918,12 @@ const int nfields; r.r_abbrvar = ecpyalloc(fields[RF_ABBRVAR]); if (max_abbrvar_len < strlen(r.r_abbrvar)) max_abbrvar_len = strlen(r.r_abbrvar); - rules = (struct rule *) (void *) erealloc((char *) rules, - (int) ((nrules + 1) * sizeof *rules)); + rules = erealloc(rules, (nrules + 1) * sizeof *rules); rules[nrules++] = r; } static int -inzone(fields, nfields) -register char ** const fields; -const int nfields; +inzone(register char **const fields, const int nfields) { register int i; static char * buf; @@ -993,7 +933,7 @@ const int nfields; return FALSE; } if (strcmp(fields[ZF_NAME], TZDEFAULT) == 0 && lcltime != NULL) { - buf = erealloc(buf, (int) (132 + strlen(TZDEFAULT))); + buf = erealloc(buf, 132 + strlen(TZDEFAULT)); (void) sprintf(buf, _("\"Zone %s\" line and -l option are mutually exclusive"), TZDEFAULT); @@ -1001,7 +941,7 @@ _("\"Zone %s\" line and -l option are mutually exclusive"), return FALSE; } if (strcmp(fields[ZF_NAME], TZDEFRULES) == 0 && psxrules != NULL) { - buf = erealloc(buf, (int) (132 + strlen(TZDEFRULES))); + buf = erealloc(buf, 132 + strlen(TZDEFRULES)); (void) sprintf(buf, _("\"Zone %s\" line and -p option are mutually exclusive"), TZDEFRULES); @@ -1011,9 +951,9 @@ _("\"Zone %s\" line and -p option are mutually exclusive"), for (i = 0; i < nzones; ++i) if (zones[i].z_name != NULL && strcmp(zones[i].z_name, fields[ZF_NAME]) == 0) { - buf = erealloc(buf, (int) (132 + - strlen(fields[ZF_NAME]) + - strlen(zones[i].z_filename))); + buf = erealloc(buf, + (132 + strlen(fields[ZF_NAME]) + + strlen(zones[i].z_filename))); (void) sprintf(buf, _("duplicate zone name %s (file \"%s\", line %d)"), fields[ZF_NAME], @@ -1026,9 +966,7 @@ _("duplicate zone name %s (file \"%s\", line %d)"), } static int -inzcont(fields, nfields) -register char ** const fields; -const int nfields; +inzcont(register char **const fields, const int nfields) { if (nfields < ZONEC_MINFIELDS || nfields > ZONEC_MAXFIELDS) { error(_("wrong number of fields on Zone continuation line")); @@ -1038,10 +976,7 @@ const int nfields; } static int -inzsub(fields, nfields, iscont) -register char ** const fields; -const int nfields; -const int iscont; +inzsub(register char **const fields, const int nfields, const int iscont) { register char * cp; static struct zone z; @@ -1108,8 +1043,7 @@ const int iscont; return FALSE; } } - zones = (struct zone *) (void *) erealloc((char *) zones, - (int) ((nzones + 1) * sizeof *zones)); + zones = erealloc(zones, (nzones + 1) * sizeof *zones); zones[nzones++] = z; /* ** If there was an UNTIL field on this line, @@ -1119,9 +1053,7 @@ const int iscont; } static void -inleap(fields, nfields) -register char ** const fields; -const int nfields; +inleap(register char ** const fields, const int nfields) { register const char * cp; register const struct lookup * lp; @@ -1223,9 +1155,7 @@ const int nfields; } static void -inlink(fields, nfields) -register char ** const fields; -const int nfields; +inlink(register char **const fields, const int nfields) { struct link l; @@ -1245,20 +1175,18 @@ const int nfields; l.l_linenum = linenum; l.l_from = ecpyalloc(fields[LF_FROM]); l.l_to = ecpyalloc(fields[LF_TO]); - links = (struct link *) (void *) erealloc((char *) links, - (int) ((nlinks + 1) * sizeof *links)); + links = erealloc(links, (nlinks + 1) * sizeof *links); links[nlinks++] = l; } static void -rulesub(rp, loyearp, hiyearp, typep, monthp, dayp, timep) -register struct rule * const rp; -const char * const loyearp; -const char * const hiyearp; -const char * const typep; -const char * const monthp; -const char * const dayp; -const char * const timep; +rulesub(register struct rule *const rp, + const char *const loyearp, + const char *const hiyearp, + const char *const typep, + const char *const monthp, + const char *const dayp, + const char *const timep) { register const struct lookup * lp; register const char * cp; @@ -1296,7 +1224,7 @@ const char * const timep; } } rp->r_tod = gethms(dp, _("invalid time of day"), FALSE); - ifree(dp); + free(dp); /* ** Year work. */ @@ -1380,12 +1308,12 @@ const char * const timep; *ep++ = 0; if (*ep++ != '=') { error(_("invalid day of month")); - ifree(dp); + free(dp); return; } if ((lp = byword(dp, wday_names)) == NULL) { error(_("invalid weekday name")); - ifree(dp); + free(dp); return; } rp->r_wday = lp->l_value; @@ -1394,63 +1322,55 @@ const char * const timep; rp->r_dayofmonth <= 0 || (rp->r_dayofmonth > len_months[1][rp->r_month])) { error(_("invalid day of month")); - ifree(dp); + free(dp); return; } } - ifree(dp); + free(dp); } static void -convert(val, buf) -const long val; -char * const buf; +convert(const long val, char *const buf) { register int i; register int shift; + unsigned char *const b = (unsigned char *) buf; for (i = 0, shift = 24; i < 4; ++i, shift -= 8) - buf[i] = val >> shift; + b[i] = val >> shift; } static void -convert64(val, buf) -const zic_t val; -char * const buf; +convert64(const zic_t val, char *const buf) { register int i; register int shift; + unsigned char *const b = (unsigned char *) buf; for (i = 0, shift = 56; i < 8; ++i, shift -= 8) - buf[i] = val >> shift; + b[i] = val >> shift; } static void -puttzcode(val, fp) -const long val; -FILE * const fp; +puttzcode(const long val, FILE *const fp) { char buf[4]; convert(val, buf); - (void) fwrite((void *) buf, (size_t) sizeof buf, (size_t) 1, fp); + (void) fwrite(buf, sizeof buf, 1, fp); } static void -puttzcode64(val, fp) -const zic_t val; -FILE * const fp; +puttzcode64(const zic_t val, FILE *const fp) { char buf[8]; convert64(val, buf); - (void) fwrite((void *) buf, (size_t) sizeof buf, (size_t) 1, fp); + (void) fwrite(buf, sizeof buf, 1, fp); } static int -atcomp(avp, bvp) -const void * avp; -const void * bvp; +atcomp(const void *avp, const void *bvp) { const zic_t a = ((const struct attype *) avp)->at; const zic_t b = ((const struct attype *) bvp)->at; @@ -1459,16 +1379,13 @@ const void * bvp; } static int -is32(x) -const zic_t x; +is32(const zic_t x) { return INT32_MIN <= x && x <= INT32_MAX; } static void -writezone(name, string) -const char * const name; -const char * const string; +writezone(const char *const name, const char *const string) { register FILE * fp; register int i, j; @@ -1485,8 +1402,7 @@ const char * const string; ** Sort. */ if (timecnt > 1) - (void) qsort((void *) attypes, (size_t) timecnt, - (size_t) sizeof *attypes, atcomp); + (void) qsort(attypes, timecnt, sizeof *attypes, atcomp); /* ** Optimize. */ @@ -1554,7 +1470,7 @@ const char * const string; ++leapi32; } fullname = erealloc(fullname, - (int) (strlen(directory) + 1 + strlen(name) + 1)); + strlen(directory) + 1 + strlen(name) + 1); (void) sprintf(fullname, "%s/%s", directory, name); /* ** Remove old file, if any, to snap links. @@ -1691,8 +1607,7 @@ const char * const string; } indmap[abbrinds[i]] = j; } -#define DO(field) (void) fwrite((void *) tzh.field, \ - (size_t) sizeof tzh.field, (size_t) 1, fp) +#define DO(field) ((void) fwrite(tzh.field, sizeof tzh.field, 1, fp)) tzh = tzh0; (void) strncpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic); tzh.tzh_version[0] = ZIC_VERSION; @@ -1720,10 +1635,7 @@ const char * const string; unsigned char uc; uc = typemap[types[i]]; - (void) fwrite((void *) &uc, - (size_t) sizeof uc, - (size_t) 1, - fp); + (void) fwrite(&uc, sizeof uc, 1, fp); } for (i = 0; i < typecnt; ++i) if (writetype[i]) { @@ -1732,9 +1644,8 @@ const char * const string; (void) putc((unsigned char) indmap[abbrinds[i]], fp); } if (thischarcnt != 0) - (void) fwrite((void *) thischars, - (size_t) sizeof thischars[0], - (size_t) thischarcnt, fp); + (void) fwrite(thischars, sizeof thischars[0], + thischarcnt, fp); for (i = thisleapi; i < thisleaplim; ++i) { register zic_t todo; @@ -1756,7 +1667,7 @@ const char * const string; todo = tadd(trans[i], -gmtoffs[j]); } else todo = trans[i]; if (pass == 1) - puttzcode((long) todo, fp); + puttzcode(todo, fp); else puttzcode64(todo, fp); puttzcode(corr[i], fp); } @@ -1776,12 +1687,8 @@ const char * const string; } static void -doabbr(abbr, format, letters, isdst, doquotes) -char * const abbr; -const char * const format; -const char * const letters; -const int isdst; -const int doquotes; +doabbr(char *const abbr, const char *const format, const char *const letters, + const int isdst, const int doquotes) { register char * cp; register char * slashp; @@ -1796,8 +1703,7 @@ const int doquotes; (void) strcpy(abbr, slashp + 1); } else { if (slashp > format) - (void) strncpy(abbr, format, - (unsigned) (slashp - format)); + (void) strncpy(abbr, format, slashp - format); abbr[slashp - format] = '\0'; } if (!doquotes) @@ -1817,8 +1723,7 @@ const int doquotes; } static void -updateminmax(x) -const int x; +updateminmax(const int x) { if (min_year > x) min_year = x; @@ -1827,9 +1732,7 @@ const int x; } static int -stringoffset(result, offset) -char * result; -long offset; +stringoffset(char *result, long offset) { register int hours; register int minutes; @@ -1859,11 +1762,8 @@ long offset; } static int -stringrule(result, rp, dstoff, gmtoff) -char * result; -const struct rule * const rp; -const long dstoff; -const long gmtoff; +stringrule(char *result, const struct rule *const rp, const long dstoff, + const long gmtoff) { register long tod; @@ -1914,10 +1814,7 @@ const long gmtoff; } static void -stringzone(result, zpfirst, zonecount) -char * result; -const struct zone * const zpfirst; -const int zonecount; +stringzone(char *result, const struct zone *const zpfirst, const int zonecount) { register const struct zone * zp; register struct rule * rp; @@ -1997,9 +1894,7 @@ const int zonecount; } static void -outzone(zpfirst, zonecount) -const struct zone * const zpfirst; -const int zonecount; +outzone(const struct zone * const zpfirst, const int zonecount) { register const struct zone * zp; register struct rule * rp; @@ -2070,7 +1965,7 @@ wp = ecpyalloc(_("no POSIX environment variable for zone")); wp = ecatalloc(wp, " "); wp = ecatalloc(wp, zpfirst->z_name); warning(wp); - ifree(wp); + free(wp); } if (envvar[0] == '\0') { if (min_year >= INT_MIN + YEARSPERREPEAT) @@ -2115,7 +2010,7 @@ wp = ecpyalloc(_("no POSIX environment variable for zone")); if (zp->z_nrules == 0) { stdoff = zp->z_stdoff; doabbr(startbuf, zp->z_format, - (char *) NULL, stdoff != 0, FALSE); + NULL, stdoff != 0, FALSE); type = addtype(oadd(zp->z_gmtoff, stdoff), startbuf, stdoff != 0, startttisstd, startttisgmt); @@ -2254,15 +2149,13 @@ error(_("can't determine time zone abbreviation to use just after until time")); } } writezone(zpfirst->z_name, envvar); - ifree(startbuf); - ifree(ab); - ifree(envvar); + free(startbuf); + free(ab); + free(envvar); } static void -addtt(starttime, type) -const zic_t starttime; -int type; +addtt(const zic_t starttime, int type) { if (starttime <= min_time || (timecnt == 1 && attypes[0].at < min_time)) { @@ -2288,12 +2181,8 @@ int type; } static int -addtype(gmtoff, abbr, isdst, ttisstd, ttisgmt) -const long gmtoff; -const char * const abbr; -const int isdst; -const int ttisstd; -const int ttisgmt; +addtype(const long gmtoff, const char *const abbr, const int isdst, + const int ttisstd, const int ttisgmt) { register int i, j; @@ -2348,11 +2237,7 @@ const int ttisgmt; } static void -leapadd(t, positive, rolling, count) -const zic_t t; -const int positive; -const int rolling; -int count; +leapadd(const zic_t t, const int positive, const int rolling, int count) { register int i, j; @@ -2397,16 +2282,14 @@ adjleap(void) } static int -yearistype(year, type) -const int year; -const char * const type; +yearistype(const int year, const char *const type) { static char * buf; int result; if (type == NULL || *type == '\0') return TRUE; - buf = erealloc(buf, (int) (132 + strlen(yitcommand) + strlen(type))); + buf = erealloc(buf, 132 + strlen(yitcommand) + strlen(type)); (void) sprintf(buf, "%s %d %s", yitcommand, year, type); result = system(buf); if (WIFEXITED(result)) switch (WEXITSTATUS(result)) { @@ -2423,17 +2306,15 @@ const char * const type; } static int -lowerit(a) -int a; +lowerit(int a) { a = (unsigned char) a; return (isascii(a) && isupper(a)) ? tolower(a) : a; } -static int -ciequal(ap, bp) /* case-insensitive equality */ -register const char * ap; -register const char * bp; +/* case-insensitive equality */ +static ATTRIBUTE_PURE int +ciequal(register const char *ap, register const char *bp) { while (lowerit(*ap) == lowerit(*bp++)) if (*ap++ == '\0') @@ -2441,10 +2322,8 @@ register const char * bp; return FALSE; } -static int -itsabbr(abbr, word) -register const char * abbr; -register const char * word; +static ATTRIBUTE_PURE int +itsabbr(register const char *abbr, register const char *word) { if (lowerit(*abbr) != lowerit(*word)) return FALSE; @@ -2457,10 +2336,9 @@ register const char * word; return TRUE; } -static const struct lookup * -byword(word, table) -register const char * const word; -register const struct lookup * const table; +static ATTRIBUTE_PURE const struct lookup * +byword(register const char *const word, + register const struct lookup *const table) { register const struct lookup * foundlp; register const struct lookup * lp; @@ -2487,8 +2365,7 @@ register const struct lookup * const table; } static char ** -getfields(cp) -register char * cp; +getfields(register char *cp) { register char * dp; register char ** array; @@ -2496,8 +2373,7 @@ register char * cp; if (cp == NULL) return NULL; - array = (char **) (void *) - emalloc((int) ((strlen(cp) + 1) * sizeof *array)); + array = emalloc((strlen(cp) + 1) * sizeof *array); nsubs = 0; for ( ; ; ) { while (isascii((unsigned char) *cp) && @@ -2528,38 +2404,28 @@ register char * cp; return array; } -static long -oadd(t1, t2) -const long t1; -const long t2; +static ATTRIBUTE_PURE long +oadd(const long t1, const long t2) { - register long t; - - t = t1 + t2; - if ((t2 > 0 && t <= t1) || (t2 < 0 && t >= t1)) { + if (t1 < 0 ? t2 < LONG_MIN - t1 : LONG_MAX - t1 < t2) { error(_("time overflow")); exit(EXIT_FAILURE); } - return t; + return t1 + t2; } -static zic_t -tadd(t1, t2) -const zic_t t1; -const long t2; +static ATTRIBUTE_PURE zic_t +tadd(const zic_t t1, const long t2) { - register zic_t t; - if (t1 == max_time && t2 > 0) return max_time; if (t1 == min_time && t2 < 0) return min_time; - t = t1 + t2; - if ((t2 > 0 && t <= t1) || (t2 < 0 && t >= t1)) { + if (t1 < 0 ? t2 < min_time - t1 : max_time - t1 < t2) { error(_("time overflow")); exit(EXIT_FAILURE); } - return t; + return t1 + t2; } /* @@ -2568,9 +2434,7 @@ const long t2; */ static zic_t -rpytime(rp, wantedy) -register const struct rule * const rp; -register const int wantedy; +rpytime(register const struct rule *const rp, register const int wantedy) { register int y, m, i; register long dayoff; /* with a nod to Margaret O. */ @@ -2626,12 +2490,12 @@ register const int wantedy; } while (wday != eitol(rp->r_wday)) if (rp->r_dycode == DC_DOWGEQ) { - dayoff = oadd(dayoff, (long) 1); + dayoff = oadd(dayoff, 1); if (++wday >= LDAYSPERWEEK) wday = 0; ++i; } else { - dayoff = oadd(dayoff, (long) -1); + dayoff = oadd(dayoff, -1); if (--wday < 0) wday = LDAYSPERWEEK - 1; --i; @@ -2651,31 +2515,30 @@ will not work with pre-2004 versions of zic")); } static void -newabbr(string) -const char * const string; +newabbr(const char *const string) { register int i; if (strcmp(string, GRANDPARENTED) != 0) { register const char * cp; - register char * wp; + const char * mp; /* ** Want one to ZIC_MAX_ABBR_LEN_WO_WARN alphabetics ** optionally followed by a + or - and a number from 1 to 14. */ cp = string; - wp = NULL; + mp = NULL; while (isascii((unsigned char) *cp) && isalpha((unsigned char) *cp)) ++cp; if (cp - string == 0) -wp = _("time zone abbreviation lacks alphabetic at start"); +mp = _("time zone abbreviation lacks alphabetic at start"); if (noise && cp - string > 3) -wp = _("time zone abbreviation has more than 3 alphabetics"); +mp = _("time zone abbreviation has more than 3 alphabetics"); if (cp - string > ZIC_MAX_ABBR_LEN_WO_WARN) -wp = _("time zone abbreviation has too many alphabetics"); - if (wp == NULL && (*cp == '+' || *cp == '-')) { +mp = _("time zone abbreviation has too many alphabetics"); + if (mp == NULL && (*cp == '+' || *cp == '-')) { ++cp; if (isascii((unsigned char) *cp) && isdigit((unsigned char) *cp)) @@ -2684,14 +2547,14 @@ wp = _("time zone abbreviation has too many alphabetics"); ++cp; } if (*cp != '\0') -wp = _("time zone abbreviation differs from POSIX standard"); - if (wp != NULL) { - wp = ecpyalloc(wp); +mp = _("time zone abbreviation differs from POSIX standard"); + if (mp != NULL) { + char *wp = ecpyalloc(mp); wp = ecatalloc(wp, " ("); wp = ecatalloc(wp, string); wp = ecatalloc(wp, ")"); warning(wp); - ifree(wp); + free(wp); } } i = strlen(string) + 1; @@ -2704,8 +2567,7 @@ wp = _("time zone abbreviation differs from POSIX standard"); } static int -mkdirs(argname) -char * argname; +mkdirs(char *argname) { register char * name; register char * cp; @@ -2739,20 +2601,19 @@ char * argname; (void) fprintf(stderr, _("%s: Can't create directory %s: %s\n"), progname, name, e); - ifree(name); + free(name); return -1; } } } *cp = '/'; } - ifree(name); + free(name); return 0; } -static long -eitol(i) -const int i; +static ATTRIBUTE_PURE long +eitol(const int i) { long l; -- cgit v1.2.1