From: deraadt Date: Thu, 23 Apr 2015 05:26:33 +0000 (+0000) Subject: KNF and other style adjustments to make this more scrutible. X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=f0dc9fba1d4acef94eb24f0208cb8741e14c0e94;p=openbsd KNF and other style adjustments to make this more scrutible. reviewed by millert --- diff --git a/usr.sbin/zdump/zdump.c b/usr.sbin/zdump/zdump.c index 081300df532..20261861858 100644 --- a/usr.sbin/zdump/zdump.c +++ b/usr.sbin/zdump/zdump.c @@ -1,4 +1,4 @@ -/* $OpenBSD: zdump.c,v 1.9 2015/02/10 22:44:29 deraadt Exp $ */ +/* $OpenBSD: zdump.c,v 1.10 2015/04/23 05:26:33 deraadt Exp $ */ /* ** This file is in the public domain, so clarified as of ** 2009-05-17 by Arthur David Olson. @@ -10,64 +10,34 @@ ** You can use this code to help in verifying other implementations. */ -#include /* for isalpha et al. */ -#include /* for FLT_MAX and DBL_MAX */ -#include /* for stdout, stderr, perror */ -#include /* for strlcpy */ -#include /* for exit, malloc, atoi */ -#include /* for struct tm */ +#include +#include +#include +#include +#include +#include -#ifndef ZDUMP_LO_YEAR #define ZDUMP_LO_YEAR (-500) -#endif /* !defined ZDUMP_LO_YEAR */ - -#ifndef ZDUMP_HI_YEAR #define ZDUMP_HI_YEAR 2500 -#endif /* !defined ZDUMP_HI_YEAR */ -#ifndef MAX_STRING_LENGTH #define MAX_STRING_LENGTH 1024 -#endif /* !defined MAX_STRING_LENGTH */ -#ifndef TRUE #define TRUE 1 -#endif /* !defined TRUE */ - -#ifndef FALSE #define FALSE 0 -#endif /* !defined FALSE */ -#ifndef SECSPERMIN #define SECSPERMIN 60 -#endif /* !defined SECSPERMIN */ - -#ifndef MINSPERHOUR #define MINSPERHOUR 60 -#endif /* !defined MINSPERHOUR */ - -#ifndef SECSPERHOUR #define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) -#endif /* !defined SECSPERHOUR */ - -#ifndef HOURSPERDAY #define HOURSPERDAY 24 -#endif /* !defined HOURSPERDAY */ - -#ifndef EPOCH_YEAR #define EPOCH_YEAR 1970 -#endif /* !defined EPOCH_YEAR */ - -#ifndef TM_YEAR_BASE #define TM_YEAR_BASE 1900 -#endif /* !defined TM_YEAR_BASE */ - -#ifndef DAYSPERNYEAR #define DAYSPERNYEAR 365 -#endif /* !defined DAYSPERNYEAR */ -#ifndef isleap +#define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY) +#define SECSPERNYEAR (SECSPERDAY * DAYSPERNYEAR) +#define SECSPERLYEAR (SECSPERNYEAR + SECSPERDAY) + #define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) -#endif /* !defined isleap */ #ifndef isleap_sum /* @@ -76,83 +46,31 @@ #define isleap_sum(a, b) isleap((a) % 400 + (b) % 400) #endif /* !defined isleap_sum */ -#define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY) -#define SECSPERNYEAR (SECSPERDAY * DAYSPERNYEAR) -#define SECSPERLYEAR (SECSPERNYEAR + SECSPERDAY) - -#define _(msgid) msgid - -#ifndef TZ_DOMAIN -#define TZ_DOMAIN "tz" -#endif /* !defined TZ_DOMAIN */ - -extern char ** environ; -extern int getopt(int argc, char * const argv[], - const char * options); -extern char * optarg; -extern int optind; -extern char * tzname[2]; - -static time_t absolute_min_time; -static time_t absolute_max_time; -static size_t longest; -static char * progname; -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 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); - -#ifndef TYPECHECK -#define my_localtime localtime -#else /* !defined TYPECHECK */ -static struct tm * -my_localtime(tp) -time_t * tp; -{ - struct tm * tmp; - - tmp = localtime(tp); - if (tp != NULL && tmp != NULL) { - struct tm tm; - time_t t; - - tm = *tmp; - t = mktime(&tm); - if (t - *tp >= 1 || *tp - t >= 1) { - fflush(stdout); - fprintf(stderr, "\n%s: ", progname); - fprintf(stderr, tformat(), *tp); - fprintf(stderr, " ->"); - fprintf(stderr, " year=%d", tmp->tm_year); - fprintf(stderr, " mon=%d", tmp->tm_mon); - fprintf(stderr, " mday=%d", tmp->tm_mday); - fprintf(stderr, " hour=%d", tmp->tm_hour); - fprintf(stderr, " min=%d", tmp->tm_min); - fprintf(stderr, " sec=%d", tmp->tm_sec); - fprintf(stderr, " isdst=%d", tmp->tm_isdst); - fprintf(stderr, " -> "); - fprintf(stderr, tformat(), t); - fprintf(stderr, "\n"); - } - } - return tmp; -} -#endif /* !defined TYPECHECK */ +extern char **environ; +extern char *tzname[2]; +extern char *__progname; + +time_t absolute_min_time; +time_t absolute_max_time; +size_t longest; +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 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 void usage(void); static void -abbrok(abbrp, zone) -const char * const abbrp; -const char * const zone; +abbrok(const char * const abbrp, const char * const zone) { - const char * cp; - char * wp; + const char *cp; + char *wp; if (warned) return; @@ -161,85 +79,79 @@ const char * const zone; while (isascii((unsigned char) *cp) && isalpha((unsigned char) *cp)) ++cp; if (cp - abbrp == 0) - wp = _("lacks alphabetic at start"); + wp = "lacks alphabetic at start"; else if (cp - abbrp < 3) - wp = _("has fewer than 3 alphabetics"); + wp = "has fewer than 3 alphabetics"; else if (cp - abbrp > 6) - wp = _("has more than 6 alphabetics"); + wp = "has more than 6 alphabetics"; if (wp == NULL && (*cp == '+' || *cp == '-')) { ++cp; if (isascii((unsigned char) *cp) && - isdigit((unsigned char) *cp)) - if (*cp++ == '1' && *cp >= '0' && *cp <= '4') - ++cp; + isdigit((unsigned char) *cp)) + if (*cp++ == '1' && *cp >= '0' && *cp <= '4') + ++cp; if (*cp != '\0') - wp = _("differs from POSIX standard"); + wp = "differs from POSIX standard"; } if (wp == NULL) return; fflush(stdout); - fprintf(stderr, _("%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"), - progname, zone, abbrp, wp); + fprintf(stderr, "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n", + __progname, zone, abbrp, wp); warned = TRUE; } static void usage(void) { - fprintf(stderr, _("usage: %s [-v] [-c [loyear,]hiyear] zonename ...\n"), progname); + fprintf(stderr, "usage: %s [-v] [-c [loyear,]hiyear] zonename ...\n", + __progname); exit(EXIT_FAILURE); } int -main(argc, argv) -int argc; -char * argv[]; +main(int argc, char *argv[]) { - int i; - int c; - int vflag; - char * cutarg; + int i, c, vflag = 0; + char *cutarg = NULL; long cutloyear = ZDUMP_LO_YEAR; long cuthiyear = ZDUMP_HI_YEAR; - time_t cutlotime; - time_t cuthitime; - char ** fakeenv; - time_t now; - time_t t; - time_t newt; - struct tm tm; - struct tm newtm; - struct tm * tmp; - struct tm * newtmp; - - cutlotime = 0; - cuthitime = 0; - progname = argv[0]; - vflag = 0; - cutarg = NULL; - while ((c = getopt(argc, argv, "c:v")) == 'c' || c == 'v') - if (c == 'v') + time_t cutlotime = 0, cuthitime = 0; + time_t now, t, newt; + struct tm tm, newtm, *tmp, *newtmp; + char **fakeenv; + + while ((c = getopt(argc, argv, "c:v")) == 'c' || c == 'v') { + switch (c) { + case 'v': vflag = 1; - else cutarg = optarg; - if ((c != EOF && c != -1) || - (optind == argc - 1 && strcmp(argv[optind], "=") == 0)) { + break; + case 'c': + cutarg = optarg; + break; + default: usage(); + break; + } + } + if (c != -1 || + (optind == argc - 1 && strcmp(argv[optind], "=") == 0)) { + usage(); } if (vflag) { if (cutarg != NULL) { - long lo; - long hi; + long lo, hi; char dummy; if (sscanf(cutarg, "%ld%c", &hi, &dummy) == 1) { cuthiyear = hi; } else if (sscanf(cutarg, "%ld,%ld%c", - &lo, &hi, &dummy) == 2) { - cutloyear = lo; - cuthiyear = hi; + &lo, &hi, &dummy) == 2) { + cutloyear = lo; + cuthiyear = hi; } else { - fprintf(stderr, _("%s: wild -c argument %s\n"), - progname, cutarg); + fprintf(stderr, "%s: wild -c argument %s\n", + __progname, cutarg); exit(EXIT_FAILURE); } } @@ -252,17 +164,17 @@ char * argv[]; for (i = optind; i < argc; ++i) if (strlen(argv[i]) > longest) longest = strlen(argv[i]); + { - int from; - int to; + int from, to; for (i = 0; environ[i] != NULL; ++i) continue; fakeenv = reallocarray(NULL, i + 2, sizeof *fakeenv); if (fakeenv == NULL || - (fakeenv[0] = malloc(longest + 4)) == NULL) { - perror(progname); - exit(EXIT_FAILURE); + (fakeenv[0] = malloc(longest + 4)) == NULL) { + perror(__progname); + exit(EXIT_FAILURE); } to = 0; strlcpy(fakeenv[to++], "TZ=", longest + 4); @@ -273,7 +185,7 @@ char * argv[]; environ = fakeenv; } for (i = optind; i < argc; ++i) { - static char buf[MAX_STRING_LENGTH]; + char buf[MAX_STRING_LENGTH]; strlcpy(&fakeenv[0][3], argv[i], longest + 1); if (!vflag) { @@ -287,7 +199,7 @@ char * argv[]; show(argv[i], t, TRUE); if (t < cutlotime) t = cutlotime; - tmp = my_localtime(&t); + tmp = localtime(&t); if (tmp != NULL) { tm = *tmp; strlcpy(buf, abbr(&tm), sizeof buf); @@ -300,16 +212,15 @@ char * argv[]; 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)) { - newt = hunt(argv[i], t, newt); - newtmp = localtime(&newt); - if (newtmp != NULL) { - newtm = *newtmp; - strlcpy(buf, abbr(&newtm), - sizeof buf); - } + (delta(&newtm, &tm) != (newt - t) || + newtm.tm_isdst != tm.tm_isdst || + strcmp(abbr(&newtm), buf) != 0)) { + newt = hunt(argv[i], t, newt); + newtmp = localtime(&newt); + if (newtmp != NULL) { + newtm = *newtmp; + strlcpy(buf, abbr(&newtm), sizeof buf); + } } t = newt; tm = newtm; @@ -322,8 +233,8 @@ char * argv[]; show(argv[i], t, TRUE); } if (fflush(stdout) || ferror(stdout)) { - fprintf(stderr, "%s: ", progname); - perror(_("Error writing to standard output")); + fprintf(stderr, "%s: ", __progname); + perror("Error writing to standard output"); exit(EXIT_FAILURE); } return 0; @@ -332,11 +243,7 @@ char * argv[]; static void setabsolutes(void) { - /* - ** time_t is signed. Assume overflow wraps around. - */ - time_t t = 0; - time_t t1 = 1; + time_t t = 0, t1 = 1; while (t < t1) { t = t1; @@ -351,15 +258,11 @@ setabsolutes(void) } static time_t -yeartot(y) -const long y; +yeartot(const long y) { - long myy; - long seconds; - time_t t; + long myy = EPOCH_YEAR, seconds; + time_t t = 0; - myy = EPOCH_YEAR; - t = 0; while (myy != y) { if (myy < y) { seconds = isleap(myy) ? SECSPERLYEAR : SECSPERNYEAR; @@ -387,13 +290,11 @@ hunt(char *name, time_t lot, time_t hit) { time_t t; long diff; - struct tm lotm; - struct tm * lotmp; - struct tm tm; - struct tm * tmp; + struct tm lotm, *lotmp; + struct tm tm, *tmp; char loab[MAX_STRING_LENGTH]; - lotmp = my_localtime(&lot); + lotmp = localtime(&lot); if (lotmp != NULL) { lotm = *lotmp; strlcpy(loab, abbr(&lotm), sizeof loab); @@ -408,17 +309,18 @@ hunt(char *name, time_t lot, time_t hit) ++t; else if (t >= hit) --t; - tmp = my_localtime(&t); + tmp = localtime(&t); if (tmp != NULL) tm = *tmp; if ((lotmp == NULL || tmp == NULL) ? (lotmp == tmp) : - (delta(&tm, &lotm) == (t - lot) && - tm.tm_isdst == lotm.tm_isdst && - strcmp(abbr(&tm), loab) == 0)) { - lot = t; - lotm = tm; - lotmp = tmp; - } else hit = t; + (delta(&tm, &lotm) == (t - lot) && + tm.tm_isdst == lotm.tm_isdst && + strcmp(abbr(&tm), loab) == 0)) { + lot = t; + lotm = tm; + lotmp = tmp; + } else + hit = t; } show(name, lot, TRUE); show(name, hit, TRUE); @@ -430,9 +332,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) { long result; int tmy; @@ -455,7 +355,7 @@ struct tm * oldp; static void show(char *zone, time_t t, int v) { - struct tm * tmp; + struct tm *tmp; printf("%-*s ", (int) longest, zone); if (v) { @@ -468,7 +368,7 @@ show(char *zone, time_t t, int v) } printf(" = "); } - tmp = my_localtime(&t); + tmp = localtime(&t); dumptime(tmp); if (tmp != NULL) { if (*abbr(tmp) != '\0') @@ -486,10 +386,9 @@ show(char *zone, time_t t, int v) } static char * -abbr(tmp) -struct tm * tmp; +abbr(struct tm *tmp) { - char * result; + char *result; static char nada; if (tmp->tm_isdst != 0 && tmp->tm_isdst != 1) @@ -510,20 +409,17 @@ tformat(void) } static void -dumptime(timeptr) -const struct tm * timeptr; +dumptime(const struct tm *timeptr) { - static const char wday_name[][3] = { + static const char wday_name[][3] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; - static const char mon_name[][3] = { + static const char mon_name[][3] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; - const char * wn; - const char * mn; - int lead; - int trail; + const char *wn, *mn; + int lead, trail; if (timeptr == NULL) { printf("NULL"); @@ -535,17 +431,19 @@ const struct tm * timeptr; ** with other (perhaps experimental) versions, paranoia is in order. */ if (timeptr->tm_wday < 0 || timeptr->tm_wday >= - (int) (sizeof wday_name / sizeof wday_name[0])) - wn = "???"; - else wn = wday_name[timeptr->tm_wday]; + (int) (sizeof wday_name / sizeof wday_name[0])) + wn = "???"; + else + wn = wday_name[timeptr->tm_wday]; if (timeptr->tm_mon < 0 || timeptr->tm_mon >= - (int) (sizeof mon_name / sizeof mon_name[0])) - mn = "???"; - else mn = mon_name[timeptr->tm_mon]; + (int) (sizeof mon_name / sizeof mon_name[0])) + mn = "???"; + else + mn = mon_name[timeptr->tm_mon]; printf("%.3s %.3s%3d %.2d:%.2d:%.2d ", - wn, mn, - timeptr->tm_mday, timeptr->tm_hour, - timeptr->tm_min, timeptr->tm_sec); + wn, mn, + timeptr->tm_mday, timeptr->tm_hour, + timeptr->tm_min, timeptr->tm_sec); #define DIVISOR 10 trail = timeptr->tm_year % DIVISOR + TM_YEAR_BASE % DIVISOR; lead = timeptr->tm_year / DIVISOR + TM_YEAR_BASE / DIVISOR + diff --git a/usr.sbin/zic/zic.c b/usr.sbin/zic/zic.c index 5cbb67784dc..08e0ed626f6 100644 --- a/usr.sbin/zic/zic.c +++ b/usr.sbin/zic/zic.c @@ -1,16 +1,34 @@ -/* $OpenBSD: zic.c,v 1.19 2015/03/13 17:23:37 deraadt Exp $ */ +/* $OpenBSD: zic.c,v 1.20 2015/04/23 05:26:33 deraadt Exp $ */ /* ** This file is in the public domain, so clarified as of ** 2006-07-17 by Arthur David Olson. */ +#include +#include #include #include #include +#include +#include #include +#include +#include +#include +#include +#include +#include #include "tzfile.h" -#include "private.h" + +#define TRUE 1 +#define FALSE 0 + +#define TYPE_SIGNED(type) (((type) -1) < 0) + +#define YEARSPERREPEAT 400 /* years before a Gregorian repeat */ + +#define GRANDPARENTED "Local time zone must be set--see zic manual page" #define ZIC_VERSION '2' @@ -28,13 +46,13 @@ typedef int_fast64_t zic_t; #define end(cp, n) (memchr((cp), '\0', (n))) struct rule { - const char * r_filename; + const char *r_filename; int r_linenum; - const char * r_name; + const char *r_name; int r_loyear; /* for example, 1986 */ int r_hiyear; /* for example, 1986 */ - const char * r_yrtype; + const char *r_yrtype; int r_lowasnum; int r_hiwasnum; @@ -50,7 +68,7 @@ struct rule { int r_todisgmt; /* above is GMT if TRUE */ /* or local time if FALSE */ long r_stdoff; /* offset from standard time */ - const char * r_abbrvar; /* variable part of abbreviation */ + const char *r_abbrvar; /* variable part of abbreviation */ int r_todo; /* a rule to do (used in outzone) */ zic_t r_temp; /* used in outzone */ @@ -65,17 +83,17 @@ struct rule { #define DC_DOWLEQ 2 /* 1..31 */ /* 0..6 (Sun..Sat) */ struct zone { - const char * z_filename; + const char *z_filename; int z_linenum; - const char * z_name; + const char *z_name; long z_gmtoff; - const char * z_rule; - const char * z_format; + const char *z_rule; + const char *z_format; long z_stdoff; - struct rule * z_rules; + struct rule *z_rules; int z_nrules; struct rule z_untilrule; @@ -83,60 +101,59 @@ struct zone { }; static void addtt(zic_t starttime, int type); -static int addtype(long gmtoff, const char * abbr, int isdst, - int ttisstd, int ttisgmt); +static int addtype(long gmtoff, const char *abbr, int isdst, + int ttisstd, int ttisgmt); static void leapadd(zic_t t, int positive, int rolling, int count); static void adjleap(void); static void associate(void); -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, size_t size, 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 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, size_t size, 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); -static void infile(const char * filename); -static void inleap(char ** fields, int nfields); -static void inlink(char ** fields, int nfields); -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 void error(const char *message); +static char **getfields(char *buf); +static long gethms(const char *string, const char *errstrng, int signable); +static void infile(const char *filename); +static void inleap(char **fields, int nfields); +static void inlink(char **fields, int nfields); +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 mkdirs(char * filename); -static void newabbr(const char * abbr); +static int itsabbr(const char *abbr, const char *word); +static int itsdir(const char *name); +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, size_t size, long offset); -static int stringrule(char * result, size_t size, const struct rule * rp, - long dstoff, long gmtoff); -static void stringzone(char * result, size_t size, - const struct zone * zp, int ntzones); +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, size_t size, long offset); +static int stringrule(char *result, size_t size, const struct rule *rp, + long dstoff, long gmtoff); +static void stringzone(char *result, size_t size, + const struct zone *zp, int ntzones); static void setboundaries(void); static zic_t tadd(zic_t t1, long t2); static void usage(void); -static void writezone(const char * name, const char * string); -static int yearistype(int year, const char * type); +static void writezone(const char *name, const char *string); +static int yearistype(int year, const char *type); + +extern char *__progname; static int charcnt; static int errors; -static const char * filename; +static const char *filename; static int leapcnt; static int leapseen; static int leapminyear; @@ -149,9 +166,8 @@ static int max_year; static zic_t min_time; static int min_year; static int noise; -static const char * rfilename; +static const char *rfilename; static int rlinenum; -static const char * progname; static int timecnt; static int typecnt; @@ -236,29 +252,28 @@ static int typecnt; #define YR_MAXIMUM 1 #define YR_ONLY 2 -static struct rule * rules; +static struct rule *rules; static int nrules; /* number of rules */ -static struct zone * zones; +static struct zone *zones; static int nzones; /* number of zones */ struct link { - const char * l_filename; + const char *l_filename; int l_linenum; - const char * l_from; - const char * l_to; + const char *l_from; + const char *l_to; }; -static struct link * links; +static struct link *links; static int nlinks; struct lookup { - const char * l_word; + const char *l_word; const int l_value; }; -static struct lookup const * byword(const char * string, - const struct lookup * lp); +static struct lookup const *byword(const char *string, const struct lookup *lp); static struct lookup const line_codes[] = { { "Rule", LC_RULE }, @@ -338,6 +353,7 @@ static struct attype { zic_t at; unsigned char type; } attypes[TZ_MAX_TIMES]; + static long gmtoffs[TZ_MAX_TYPES]; static char isdsts[TZ_MAX_TYPES]; static unsigned char abbrinds[TZ_MAX_TYPES]; @@ -355,9 +371,8 @@ static char roll[TZ_MAX_LEAPS]; static void * memcheck(void *ptr) { - if (ptr == NULL) { + if (ptr == NULL) err(1, "Memory exhausted"); - } return ptr; } @@ -405,10 +420,10 @@ error(const char *string) ** zic ... 2>&1 | error -t "*" -v ** on BSD systems. */ - fprintf(stderr, _("\"%s\", line %d: %s"), + fprintf(stderr, "\"%s\", line %d: %s", filename, linenum, string); if (rfilename != NULL) - fprintf(stderr, _(" (rule from \"%s\", line %d)"), + fprintf(stderr, " (rule from \"%s\", line %d)", rfilename, rlinenum); fprintf(stderr, "\n"); ++errors; @@ -417,9 +432,9 @@ error(const char *string) static void warning(const char *string) { - char * cp; + char *cp; - cp = ecpyalloc(_("warning: ")); + cp = ecpyalloc("warning: "); cp = ecatalloc(cp, string); error(cp); free(cp); @@ -430,12 +445,9 @@ warning(const char *string) static const char * scheck(const char *string, const char *format) { - char * fbuf; - const char * fp; - char * tp; + const char *fp, *result; + char *fbuf, *tp, dummy; int c; - const char * result; - char dummy; result = ""; if (string == NULL || format == NULL) @@ -460,8 +472,9 @@ scheck(const char *string, const char *format) if (*fp == 'l' || *fp == 'h') *tp++ = *fp++; else if (*fp == '[') - do *tp++ = *fp++; - while (*fp != '\0' && *fp != ']'); + do { + *tp++ = *fp++; + } while (*fp != '\0' && *fp != ']'); if ((*tp++ = *fp++) == '\0') break; } @@ -477,26 +490,25 @@ scheck(const char *string, const char *format) static void usage(void) { - fprintf(stderr, _("usage: %s [-v] [-d directory] [-L leapsecondfilename] [-l timezone]\n\t[-p timezone] [-y command] [filename ...]\n"), - progname); + fprintf(stderr, + "usage: %s [-v] [-d directory] [-L leapsecondfilename] [-l timezone]\n" + "\t\t[-p timezone] [-y command] [filename ...]\n", + __progname); exit(EXIT_FAILURE); } -static const char * psxrules; -static const char * lcltime; -static const char * directory; -static const char * leapsec; -static const char * yitcommand; +static const char *psxrules; +static const char *lcltime; +static const char *directory; +static const char *leapsec; +static const char *yitcommand; int main(int argc, char **argv) { - int i; - int j; - int c; + int i, j, c; umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH)); - progname = argv[0]; while ((c = getopt(argc, argv, "d:l:p:L:vy:")) != -1) switch (c) { default: @@ -504,37 +516,32 @@ main(int argc, char **argv) case 'd': if (directory == NULL) directory = optarg; - else { + else errx(1, "More than one -d option specified"); - } break; case 'l': if (lcltime == NULL) lcltime = optarg; - else { + else errx(1, "More than one -l option specified"); - } break; case 'p': if (psxrules == NULL) psxrules = optarg; - else { + else errx(1, "More than one -p option specified"); - } break; case 'y': if (yitcommand == NULL) yitcommand = optarg; - else { + else errx(1, "More than one -y option specified"); - } break; case 'L': if (leapsec == NULL) leapsec = optarg; - else { + else errx(1, "More than one -L option specified"); - } break; case 'v': noise = TRUE; @@ -577,7 +584,7 @@ main(int argc, char **argv) for (j = 0; j < nlinks; ++j) if (strcmp(links[i].l_to, links[j].l_from) == 0) - warning(_("link to link")); + warning("link to link"); } if (lcltime != NULL) { eat("command line", 1); @@ -593,8 +600,7 @@ main(int argc, char **argv) static void dolink(const char *fromfield, const char *tofield) { - char * fromname; - char * toname; + char *fromname, *toname; if (fromfield[0] == '/') fromname = ecpyalloc(fromfield); @@ -625,9 +631,8 @@ dolink(const char *fromfield, const char *tofield) result = link(fromname, toname); if (result != 0 && errno == EXDEV) result = symlink(fromname, toname); - if (result != 0) { + if (result != 0) err(1, "Can't link from %s to %s", fromname, toname); - } } free(fromname); free(toname); @@ -649,7 +654,7 @@ setboundaries(void) static int itsdir(const char *name) { - char * myname; + char *myname; int accres; myname = ecpyalloc(name); @@ -677,10 +682,9 @@ rcomp(const void *cp1, const void *cp2) static void associate(void) { - struct zone * zp; - struct rule * rp; - int base, out; - int i, j; + struct zone *zp; + struct rule *rp; + int base, out, i, j; if (nrules != 0) { qsort(rules, nrules, sizeof *rules, rcomp); @@ -692,9 +696,9 @@ associate(void) rules[i + 1].r_filename) == 0) continue; eat(rules[i].r_filename, rules[i].r_linenum); - warning(_("same rule name in multiple files")); + warning("same rule name in multiple files"); eat(rules[i + 1].r_filename, rules[i + 1].r_linenum); - warning(_("same rule name in multiple files")); + warning("same rule name in multiple files"); for (j = i + 2; j < nrules; ++j) { if (strcmp(rules[i].r_name, rules[j].r_name) != 0) @@ -735,14 +739,14 @@ associate(void) ** Maybe we have a local standard time offset. */ eat(zp->z_filename, zp->z_linenum); - zp->z_stdoff = gethms(zp->z_rule, _("unruly zone"), + 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. */ if (strchr(zp->z_format, '%') != 0) - error(_("%s in ruleless zone")); + error("%s in ruleless zone"); } } if (errors) @@ -752,21 +756,17 @@ associate(void) static void infile(const char *name) { - FILE * fp; - char ** fields; - char * cp; - const struct lookup * lp; - int nfields; - int wantcont; - int num; - char buf[BUFSIZ]; + FILE *fp; + char **fields, *cp; + const struct lookup *lp; + int nfields, wantcont, num; + char buf[BUFSIZ]; if (strcmp(name, "-") == 0) { - name = _("standard input"); + name = "standard input"; fp = stdin; - } else if ((fp = fopen(name, "r")) == NULL) { + } else if ((fp = fopen(name, "r")) == NULL) err(1, "Can't open %s", name); - } wantcont = FALSE; for (num = 1; ; ++num) { eat(name, num); @@ -774,7 +774,7 @@ infile(const char *name) break; cp = strchr(buf, '\n'); if (cp == NULL) { - error(_("line too long")); + error("line too long"); exit(EXIT_FAILURE); } *cp = '\0'; @@ -794,7 +794,7 @@ infile(const char *name) } else { lp = byword(fields[0], line_codes); if (lp == NULL) - error(_("input line of unknown type")); + error("input line of unknown type"); else switch ((int) (lp->l_value)) { case LC_RULE: inrule(fields, nfields); @@ -810,8 +810,8 @@ infile(const char *name) case LC_LEAP: if (name != leapsec) fprintf(stderr, - _("%s: Leap line in non leap seconds file %s\n"), - progname, name); + "%s: Leap line in non leap seconds file %s\n", + __progname, name); /* no exit? */ else inleap(fields, nfields); @@ -823,14 +823,12 @@ infile(const char *name) } free(fields); } - if (ferror(fp)) { + if (ferror(fp)) errx(1, "Error reading %s", filename); - } - if (fp != stdin && fclose(fp)) { + if (fp != stdin && fclose(fp)) err(1, "Error closing %s", filename); - } if (wantcont) - error(_("expected continuation line not found")); + error("expected continuation line not found"); } /* @@ -854,28 +852,29 @@ gethms(const char *string, const char *errstring, int signable) else if (*string == '-') { sign = -1; ++string; - } else sign = 1; + } else + sign = 1; if (sscanf(string, scheck(string, "%ld"), &hh) == 1) mm = ss = 0; else if (sscanf(string, scheck(string, "%ld:%d"), &hh, &mm) == 2) ss = 0; else if (sscanf(string, scheck(string, "%ld:%d:%d"), - &hh, &mm, &ss) != 3) { - error(errstring); - return 0; + &hh, &mm, &ss) != 3) { + error(errstring); + return 0; } if (hh < 0 || - mm < 0 || mm >= MINSPERHOUR || - ss < 0 || ss > SECSPERMIN) { - error(errstring); - return 0; + mm < 0 || mm >= MINSPERHOUR || + ss < 0 || ss > SECSPERMIN) { + error(errstring); + return 0; } if (LONG_MAX / SECSPERHOUR < hh) { - error(_("time overflow")); + error("time overflow"); return 0; } return oadd(eitol(sign) * hh * eitol(SECSPERHOUR), - eitol(sign) * (eitol(mm) * eitol(SECSPERMIN) + eitol(ss))); + eitol(sign) * (eitol(mm) * eitol(SECSPERMIN) + eitol(ss))); } static void @@ -884,16 +883,16 @@ inrule(char **fields, int nfields) static struct rule r; if (nfields != RULE_FIELDS) { - error(_("wrong number of fields on Rule line")); + error("wrong number of fields on Rule line"); return; } if (*fields[RF_NAME] == '\0') { - error(_("nameless rule")); + error("nameless rule"); return; } r.r_filename = filename; r.r_linenum = linenum; - r.r_stdoff = gethms(fields[RF_STDOFF], _("invalid saved time"), TRUE); + r.r_stdoff = gethms(fields[RF_STDOFF], "invalid saved time", TRUE); rulesub(&r, fields[RF_LOYEAR], fields[RF_HIYEAR], fields[RF_COMMAND], fields[RF_MONTH], fields[RF_DAY], fields[RF_TOD]); r.r_name = ecpyalloc(fields[RF_NAME]); @@ -908,42 +907,44 @@ static int inzone(char **fields, int nfields) { int i; - static char * buf; + static char *buf; size_t len; if (nfields < ZONE_MINFIELDS || nfields > ZONE_MAXFIELDS) { - error(_("wrong number of fields on Zone line")); + error("wrong number of fields on Zone line"); return FALSE; } if (strcmp(fields[ZF_NAME], TZDEFAULT) == 0 && lcltime != NULL) { len = 132 + strlen(TZDEFAULT); buf = erealloc(buf, len); - snprintf(buf, len, _("\"Zone %s\" line and -l option are mutually exclusive"), - TZDEFAULT); + snprintf(buf, len, + "\"Zone %s\" line and -l option are mutually exclusive", + TZDEFAULT); error(buf); return FALSE; } if (strcmp(fields[ZF_NAME], TZDEFRULES) == 0 && psxrules != NULL) { len = 132 + strlen(TZDEFRULES); buf = erealloc(buf, len); - snprintf(buf, len, _("\"Zone %s\" line and -p option are mutually exclusive"), - TZDEFRULES); + snprintf(buf, len, + "\"Zone %s\" line and -p option are mutually exclusive", + TZDEFRULES); error(buf); return FALSE; } for (i = 0; i < nzones; ++i) if (zones[i].z_name != NULL && - strcmp(zones[i].z_name, fields[ZF_NAME]) == 0) { - len = 132 + strlen(fields[ZF_NAME]) + - strlen(zones[i].z_filename); - buf = erealloc(buf, len); - snprintf(buf, len, - _("duplicate zone name %s (file \"%s\", line %d)"), - fields[ZF_NAME], - zones[i].z_filename, - zones[i].z_linenum); - error(buf); - return FALSE; + strcmp(zones[i].z_name, fields[ZF_NAME]) == 0) { + len = 132 + strlen(fields[ZF_NAME]) + + strlen(zones[i].z_filename); + buf = erealloc(buf, len); + snprintf(buf, len, + "duplicate zone name %s (file \"%s\", line %d)", + fields[ZF_NAME], + zones[i].z_filename, + zones[i].z_linenum); + error(buf); + return FALSE; } return inzsub(fields, nfields, FALSE); } @@ -952,7 +953,7 @@ static int inzcont(char **fields, int nfields) { if (nfields < ZONEC_MINFIELDS || nfields > ZONEC_MAXFIELDS) { - error(_("wrong number of fields on Zone continuation line")); + error("wrong number of fields on Zone continuation line"); return FALSE; } return inzsub(fields, nfields, TRUE); @@ -961,7 +962,7 @@ inzcont(char **fields, int nfields) static int inzsub(char **fields, int nfields, int iscont) { - char * cp; + char *cp; static struct zone z; int i_gmtoff, i_rule, i_format; int i_untilyear, i_untilmonth; @@ -989,10 +990,10 @@ inzsub(char **fields, int nfields, int iscont) } z.z_filename = filename; z.z_linenum = linenum; - z.z_gmtoff = gethms(fields[i_gmtoff], _("invalid UTC offset"), TRUE); + z.z_gmtoff = gethms(fields[i_gmtoff], "invalid UTC offset", TRUE); if ((cp = strchr(fields[i_format], '%')) != 0) { if (*++cp != 's' || strchr(cp, '%') != 0) { - error(_("invalid abbreviation format")); + error("invalid abbreviation format"); return FALSE; } } @@ -1015,13 +1016,13 @@ inzsub(char **fields, int nfields, int iscont) z.z_untiltime = rpytime(&z.z_untilrule, z.z_untilrule.r_loyear); if (iscont && nzones > 0 && - z.z_untiltime > min_time && - z.z_untiltime < max_time && - 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; + z.z_untiltime > min_time && + z.z_untiltime < max_time && + 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; } } zones = ereallocarray(zones, nzones + 1, sizeof *zones); @@ -1036,15 +1037,15 @@ inzsub(char **fields, int nfields, int iscont) static void inleap(char **fields, int nfields) { - const char * cp; - const struct lookup * lp; + const char *cp; + const struct lookup *lp; int i, j; - int year, month, day; - long dayoff, tod; - zic_t t; + int year, month, day; + long dayoff, tod; + zic_t t; if (nfields != LEAP_FIELDS) { - error(_("wrong number of fields on Leap line")); + error("wrong number of fields on Leap line"); return; } dayoff = 0; @@ -1053,7 +1054,7 @@ inleap(char **fields, int nfields) /* ** Leapin' Lizards! */ - error(_("invalid leaping year")); + error("invalid leaping year"); return; } if (!leapseen || leapmaxyear < year) @@ -1073,7 +1074,7 @@ inleap(char **fields, int nfields) dayoff = oadd(dayoff, eitol(i)); } if ((lp = byword(fields[LP_MONTH], mon_names)) == NULL) { - error(_("invalid month name")); + error("invalid month name"); return; } month = lp->l_value; @@ -1085,25 +1086,25 @@ inleap(char **fields, int nfields) } cp = fields[LP_DAY]; if (sscanf(cp, scheck(cp, "%d"), &day) != 1 || - day <= 0 || day > len_months[isleap(year)][month]) { - error(_("invalid day of month")); - return; + day <= 0 || day > len_months[isleap(year)][month]) { + error("invalid day of month"); + return; } dayoff = oadd(dayoff, eitol(day - 1)); if (dayoff < 0 && !TYPE_SIGNED(zic_t)) { - error(_("time before zero")); + error("time before zero"); return; } if (dayoff < min_time / SECSPERDAY) { - error(_("time too small")); + error("time too small"); return; } if (dayoff > max_time / SECSPERDAY) { - error(_("time too large")); + error("time too large"); return; } t = (zic_t) dayoff * SECSPERDAY; - tod = gethms(fields[LP_TIME], _("invalid time of day"), FALSE); + tod = gethms(fields[LP_TIME], "invalid time of day", FALSE); cp = fields[LP_CORR]; { int positive; @@ -1122,11 +1123,11 @@ inleap(char **fields, int nfields) positive = TRUE; count = 2; } else { - error(_("illegal CORRECTION field on Leap line")); + error("illegal CORRECTION field on Leap line"); return; } if ((lp = byword(fields[LP_ROLL], leap_types)) == NULL) { - error(_( "illegal Rolling/Stationary field on Leap line")); + error("illegal Rolling/Stationary field on Leap line"); return; } leapadd(tadd(t, tod), positive, lp->l_value, count); @@ -1139,15 +1140,15 @@ inlink(char **fields, int nfields) struct link l; if (nfields != LINK_FIELDS) { - error(_("wrong number of fields on Link line")); + error("wrong number of fields on Link line"); return; } if (*fields[LF_FROM] == '\0') { - error(_("blank FROM field on Link line")); + error("blank FROM field on Link line"); return; } if (*fields[LF_TO] == '\0') { - error(_("blank TO field on Link line")); + error("blank TO field on Link line"); return; } l.l_filename = filename; @@ -1159,22 +1160,17 @@ inlink(char **fields, int nfields) } static void -rulesub(rp, loyearp, hiyearp, typep, monthp, dayp, timep) -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(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) { - const struct lookup * lp; - const char * cp; - char * dp; - char * ep; + const struct lookup *lp; + const char *cp; + char *dp, *ep; if ((lp = byword(monthp, mon_names)) == NULL) { - error(_("invalid month name")); + error("invalid month name"); return; } rp->r_month = lp->l_value; @@ -1184,26 +1180,26 @@ const char * const timep; if (*dp != '\0') { ep = dp + strlen(dp) - 1; switch (tolower((unsigned char)*ep)) { - case 's': /* Standard */ - rp->r_todisstd = TRUE; - rp->r_todisgmt = FALSE; - *ep = '\0'; - break; - case 'w': /* Wall */ - rp->r_todisstd = FALSE; - rp->r_todisgmt = FALSE; - *ep = '\0'; - break; - case 'g': /* Greenwich */ - case 'u': /* Universal */ - case 'z': /* Zulu */ - rp->r_todisstd = TRUE; - rp->r_todisgmt = TRUE; - *ep = '\0'; - break; + case 's': /* Standard */ + rp->r_todisstd = TRUE; + rp->r_todisgmt = FALSE; + *ep = '\0'; + break; + case 'w': /* Wall */ + rp->r_todisstd = FALSE; + rp->r_todisgmt = FALSE; + *ep = '\0'; + break; + case 'g': /* Greenwich */ + case 'u': /* Universal */ + case 'z': /* Zulu */ + rp->r_todisstd = TRUE; + rp->r_todisgmt = TRUE; + *ep = '\0'; + break; } } - rp->r_tod = gethms(dp, _("invalid time of day"), FALSE); + rp->r_tod = gethms(dp, "invalid time of day", FALSE); free(dp); /* ** Year work. @@ -1221,7 +1217,7 @@ const char * const timep; default: /* "cannot happen" */ errx(1, "panic: Invalid l_value %d", lp->l_value); } else if (sscanf(cp, scheck(cp, "%d"), &rp->r_loyear) != 1) { - error(_("invalid starting year")); + error("invalid starting year"); return; } cp = hiyearp; @@ -1240,18 +1236,18 @@ const char * const timep; default: /* "cannot happen" */ errx(1, "panic: Invalid l_value %d", lp->l_value); } else if (sscanf(cp, scheck(cp, "%d"), &rp->r_hiyear) != 1) { - error(_("invalid ending year")); + error("invalid ending year"); return; } if (rp->r_loyear > rp->r_hiyear) { - error(_("starting year greater than ending year")); + error("starting year greater than ending year"); return; } if (*typep == '\0') rp->r_yrtype = NULL; else { if (rp->r_loyear == rp->r_hiyear) { - error(_("typed single year")); + error("typed single year"); return; } rp->r_yrtype = ecpyalloc(typep); @@ -1281,23 +1277,23 @@ const char * const timep; if (rp->r_dycode != DC_DOM) { *ep++ = 0; if (*ep++ != '=') { - error(_("invalid day of month")); + error("invalid day of month"); free(dp); return; } if ((lp = byword(dp, wday_names)) == NULL) { - error(_("invalid weekday name")); + error("invalid weekday name"); free(dp); return; } rp->r_wday = lp->l_value; } if (sscanf(ep, scheck(ep, "%d"), &rp->r_dayofmonth) != 1 || - rp->r_dayofmonth <= 0 || - (rp->r_dayofmonth > len_months[1][rp->r_month])) { - error(_("invalid day of month")); - free(dp); - return; + rp->r_dayofmonth <= 0 || + (rp->r_dayofmonth > len_months[1][rp->r_month])) { + error("invalid day of month"); + free(dp); + return; } } free(dp); @@ -1359,17 +1355,17 @@ is32(zic_t x) static void writezone(const char *name, const char *string) { - FILE * fp; + FILE *fp; int i, j; int leapcnt32, leapi32; int timecnt32, timei32; int pass; - static char * fullname; + static char *fullname; static const struct tzhead tzh0; - static struct tzhead tzh; - zic_t ats[TZ_MAX_TIMES]; - unsigned char types[TZ_MAX_TIMES]; - size_t len; + static struct tzhead tzh; + zic_t ats[TZ_MAX_TIMES]; + unsigned char types[TZ_MAX_TIMES]; + size_t len; /* ** Sort. @@ -1392,16 +1388,15 @@ writezone(const char *name, const char *string) ++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; + 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) - attypes[toi++] = attypes[fromi]; + attypes[toi - 1].type != attypes[fromi].type) + attypes[toi++] = attypes[fromi]; } timecnt = toi; } @@ -1448,26 +1443,24 @@ writezone(const char *name, const char *string) /* ** Remove old file, if any, to snap links. */ - if (!itsdir(fullname) && remove(fullname) != 0 && errno != ENOENT) { + if (!itsdir(fullname) && remove(fullname) != 0 && errno != ENOENT) err(1, "Can't remove %s", fullname); - } if ((fp = fopen(fullname, "wb")) == NULL) { if (mkdirs(fullname) != 0) exit(EXIT_FAILURE); - if ((fp = fopen(fullname, "wb")) == NULL) { + if ((fp = fopen(fullname, "wb")) == NULL) err(1, "Can't create %s", fullname); - } } for (pass = 1; pass <= 2; ++pass) { int thistimei, thistimecnt; int thisleapi, thisleapcnt; int thistimelim, thisleaplim; - int writetype[TZ_MAX_TIMES]; - int typemap[TZ_MAX_TYPES]; + int writetype[TZ_MAX_TIMES]; + int typemap[TZ_MAX_TYPES]; int thistypecnt; - char thischars[TZ_MAX_CHARS]; - char thischarcnt; - int indmap[TZ_MAX_CHARS]; + char thischars[TZ_MAX_CHARS]; + char thischarcnt; + int indmap[TZ_MAX_CHARS]; if (pass == 1) { thistimei = timei32; @@ -1517,34 +1510,34 @@ writezone(const char *name, const char *string) for (i = thistimei; i < thistimelim; ++i) if (isdsts[types[i]]) mrudst = types[i]; - else mrustd = types[i]; + else + mrustd = types[i]; for (i = 0; i < typecnt; ++i) if (writetype[i]) { if (isdsts[i]) hidst = i; - else histd = i; + else + histd = i; } if (hidst >= 0 && mrudst >= 0 && hidst != mrudst && - gmtoffs[hidst] != gmtoffs[mrudst]) { - isdsts[mrudst] = -1; - type = addtype(gmtoffs[mrudst], - &chars[abbrinds[mrudst]], - TRUE, - ttisstds[mrudst], - ttisgmts[mrudst]); - isdsts[mrudst] = TRUE; - writetype[type] = TRUE; + gmtoffs[hidst] != gmtoffs[mrudst]) { + isdsts[mrudst] = -1; + type = addtype(gmtoffs[mrudst], + &chars[abbrinds[mrudst]], + TRUE, ttisstds[mrudst], + ttisgmts[mrudst]); + isdsts[mrudst] = TRUE; + writetype[type] = TRUE; } if (histd >= 0 && mrustd >= 0 && histd != mrustd && - gmtoffs[histd] != gmtoffs[mrustd]) { - isdsts[mrustd] = -1; - type = addtype(gmtoffs[mrustd], - &chars[abbrinds[mrustd]], - FALSE, - ttisstds[mrustd], - ttisgmts[mrustd]); - isdsts[mrustd] = FALSE; - writetype[type] = TRUE; + gmtoffs[histd] != gmtoffs[mrustd]) { + isdsts[mrustd] = -1; + type = addtype(gmtoffs[mrustd], + &chars[abbrinds[mrustd]], + FALSE, ttisstds[mrustd], + ttisgmts[mrustd]); + isdsts[mrustd] = FALSE; + writetype[type] = TRUE; } } #endif /* !defined LEAVE_SOME_PRE_2011_SYSTEMS_IN_THE_LURCH */ @@ -1555,7 +1548,7 @@ writezone(const char *name, const char *string) indmap[i] = -1; thischarcnt = 0; for (i = 0; i < typecnt; ++i) { - char * thisabbr; + char *thisabbr; if (!writetype[i]) continue; @@ -1567,7 +1560,7 @@ writezone(const char *name, const char *string) break; if (j == thischarcnt) { strlcpy(&thischars[(int) thischarcnt], - thisabbr, sizeof(thischars) - thischarcnt); + thisabbr, sizeof(thischars) - thischarcnt); thischarcnt += strlen(thisabbr) + 1; } indmap[abbrinds[i]] = j; @@ -1595,7 +1588,8 @@ writezone(const char *name, const char *string) for (i = thistimei; i < thistimelim; ++i) if (pass == 1) puttzcode((long) ats[i], fp); - else puttzcode64(ats[i], fp); + else + puttzcode64(ats[i], fp); for (i = thistimei; i < thistimelim; ++i) { unsigned char uc; @@ -1606,7 +1600,7 @@ writezone(const char *name, const char *string) if (writetype[i]) { puttzcode(gmtoffs[i], fp); putc(isdsts[i], fp); - putc((unsigned char) indmap[abbrinds[i]], fp); + putc((unsigned char)indmap[abbrinds[i]], fp); } if (thischarcnt != 0) fwrite(thischars, sizeof thischars[0], thischarcnt, fp); @@ -1624,15 +1618,17 @@ writezone(const char *name, const char *string) } else { j = 1; while (j < timecnt && - trans[i] >= ats[j]) - ++j; + trans[i] >= ats[j]) + ++j; j = types[j - 1]; } todo = tadd(trans[i], -gmtoffs[j]); - } else todo = trans[i]; + } else + todo = trans[i]; if (pass == 1) puttzcode((long) todo, fp); - else puttzcode64(todo, fp); + else + puttzcode64(todo, fp); puttzcode(corr[i], fp); } for (i = 0; i < typecnt; ++i) @@ -1643,23 +1639,23 @@ writezone(const char *name, const char *string) putc(ttisgmts[i], fp); } fprintf(fp, "\n%s\n", string); - if (ferror(fp) || fclose(fp)) { + if (ferror(fp) || fclose(fp)) errx(1, "Error writing %s", fullname); - } } static void -doabbr(char *abbr, size_t size, const char *format, const char *letters, int isdst, int doquotes) +doabbr(char *abbr, size_t size, const char *format, const char *letters, + int isdst, int doquotes) { - char * cp; - char * slashp; + char *cp, *slashp; int len; slashp = strchr(format, '/'); if (slashp == NULL) { if (letters == NULL) strlcpy(abbr, format, size); - else snprintf(abbr, size, format, letters); + else + snprintf(abbr, size, format, letters); } else if (isdst) { strlcpy(abbr, slashp + 1, size); } else { @@ -1695,10 +1691,8 @@ updateminmax(int x) static int stringoffset(char *result, size_t size, long offset) { - int hours; - int minutes; - int seconds; - char * ep; + int hours, minutes, seconds; + char *ep; result[0] = '\0'; if (offset < 0) { @@ -1731,7 +1725,7 @@ static int stringrule(char *result, size_t size, const struct rule *rp, long dstoff, long gmtoff) { long tod; - char * ep; + char *ep; ep = end(result, size); size -= ep - result; @@ -1760,7 +1754,8 @@ stringrule(char *result, size_t size, const struct rule *rp, long dstoff, long g return -1; week = rp->r_dayofmonth / DAYSPERWEEK; } - } else return -1; /* "cannot happen" */ + } else + return -1; /* "cannot happen" */ snprintf(result, size, "M%d.%d.%d", rp->r_month + 1, week, rp->r_wday); } @@ -1785,13 +1780,11 @@ stringrule(char *result, size_t size, const struct rule *rp, long dstoff, long g static void stringzone(char *result, size_t size, const struct zone *zpfirst, int zonecount) { - const struct zone * zp; - struct rule * rp; - struct rule * stdrp; - struct rule * dstrp; + const struct zone *zp; + struct rule *rp, *stdrp, *dstrp; int i; - const char * abbrvar; - char * ep; + const char *abbrvar; + char *ep; result[0] = '\0'; zp = zpfirst + zonecount - 1; @@ -1805,11 +1798,13 @@ stringzone(char *result, size_t size, const struct zone *zpfirst, int zonecount) if (rp->r_stdoff == 0) { if (stdrp == NULL) stdrp = rp; - else return; + else + return; } else { if (dstrp == NULL) dstrp = rp; - else return; + else + return; } } if (stdrp == NULL && dstrp == NULL) { @@ -1870,23 +1865,14 @@ stringzone(char *result, size_t size, const struct zone *zpfirst, int zonecount) static void outzone(const struct zone *zpfirst, int zonecount) { - const struct zone * zp; - struct rule * rp; - int i, j; - int usestart, useuntil; - zic_t starttime, untiltime; - long gmtoff; - long stdoff; - int year; - long startoff; - int startttisstd; - int startttisgmt; - int type; - char * startbuf; - char * ab; - char * envvar; - int max_abbr_len; - int max_envvar_len; + const struct zone *zp; + struct rule *rp; + int i, j, usestart, useuntil, type; + zic_t starttime = 0, untiltime = 0; + long gmtoff, stdoff, startoff; + int year, startttisstd = FALSE, startttisgmt = FALSE; + char *startbuf, *ab, *envvar; + int max_abbr_len, max_envvar_len; int prodstic; /* all rules are min to max */ max_abbr_len = 2 + max_format_len + max_abbrvar_len; @@ -1894,8 +1880,6 @@ outzone(const struct zone *zpfirst, int zonecount) startbuf = emalloc(max_abbr_len + 1); ab = emalloc(max_abbr_len + 1); envvar = emalloc(max_envvar_len + 1); - untiltime = 0; - starttime = 0; /* ** Now. . .finally. . .generate some useful data! */ @@ -1907,8 +1891,6 @@ outzone(const struct zone *zpfirst, int zonecount) ** Thanks to Earl Chew ** for noting the need to unconditionally initialize startttisstd. */ - startttisstd = FALSE; - startttisgmt = FALSE; min_year = max_year = EPOCH_YEAR; if (leapseen) { updateminmax(leapminyear); @@ -1935,7 +1917,7 @@ outzone(const struct zone *zpfirst, int zonecount) if (noise && envvar[0] == '\0') { char * wp; - wp = ecpyalloc(_("no POSIX environment variable for zone")); + wp = ecpyalloc("no POSIX environment variable for zone"); wp = ecatalloc(wp, " "); wp = ecatalloc(wp, zpfirst->z_name); warning(wp); @@ -1944,10 +1926,12 @@ outzone(const struct zone *zpfirst, int zonecount) if (envvar[0] == '\0') { if (min_year >= INT_MIN + YEARSPERREPEAT) min_year -= YEARSPERREPEAT; - else min_year = INT_MIN; + else + min_year = INT_MIN; if (max_year <= INT_MAX - YEARSPERREPEAT) max_year += YEARSPERREPEAT; - else max_year = INT_MAX; + else + max_year = INT_MAX; /* ** Regardless of any of the above, ** for a "proDSTic" zone which specifies that its rules @@ -2005,17 +1989,16 @@ outzone(const struct zone *zpfirst, int zonecount) eats(zp->z_filename, zp->z_linenum, rp->r_filename, rp->r_linenum); rp->r_todo = year >= rp->r_loyear && - year <= rp->r_hiyear && - yearistype(year, rp->r_yrtype); + year <= rp->r_hiyear && + yearistype(year, rp->r_yrtype); if (rp->r_todo) rp->r_temp = rpytime(rp, year); } for ( ; ; ) { int k; - zic_t jtime, ktime; + zic_t jtime, ktime = 0; long offset; - ktime = 0; if (useuntil) { /* ** Turn untiltime into UTC @@ -2066,53 +2049,50 @@ outzone(const struct zone *zpfirst, int zonecount) if (usestart) { if (ktime < starttime) { startoff = oadd(zp->z_gmtoff, - stdoff); + stdoff); doabbr(startbuf, - max_abbr_len + 1, - zp->z_format, - rp->r_abbrvar, - rp->r_stdoff != 0, - FALSE); + max_abbr_len + 1, + zp->z_format, + rp->r_abbrvar, + rp->r_stdoff != 0, + FALSE); continue; } if (*startbuf == '\0' && - startoff == oadd(zp->z_gmtoff, - stdoff)) { - doabbr(startbuf, - max_abbr_len + 1, - zp->z_format, - rp->r_abbrvar, - rp->r_stdoff != - 0, - FALSE); + startoff == oadd(zp->z_gmtoff, + stdoff)) { + doabbr(startbuf, + max_abbr_len + 1, + zp->z_format, + rp->r_abbrvar, + rp->r_stdoff != 0, + FALSE); } } eats(zp->z_filename, zp->z_linenum, - rp->r_filename, rp->r_linenum); + rp->r_filename, rp->r_linenum); doabbr(ab, max_abbr_len + 1, zp->z_format, - rp->r_abbrvar, - rp->r_stdoff != 0, FALSE); + rp->r_abbrvar, rp->r_stdoff != 0, FALSE); offset = oadd(zp->z_gmtoff, rp->r_stdoff); type = addtype(offset, ab, rp->r_stdoff != 0, - rp->r_todisstd, rp->r_todisgmt); + rp->r_todisstd, rp->r_todisgmt); addtt(ktime, type); } } if (usestart) { if (*startbuf == '\0' && - zp->z_format != NULL && - strchr(zp->z_format, '%') == NULL && - strchr(zp->z_format, '/') == NULL) - strlcpy(startbuf, zp->z_format, - max_abbr_len + 1); + zp->z_format != NULL && + strchr(zp->z_format, '%') == NULL && + strchr(zp->z_format, '/') == NULL) + strlcpy(startbuf, zp->z_format, max_abbr_len + 1); eat(zp->z_filename, zp->z_linenum); if (*startbuf == '\0') - error(_("can't determine time zone abbreviation to use just after until time")); - else addtt(starttime, - addtype(startoff, startbuf, - startoff != zp->z_gmtoff, - startttisstd, - startttisgmt)); + error("can't determine time zone abbreviation to use just after until time"); + else + addtt(starttime, + addtype(startoff, startbuf, + startoff != zp->z_gmtoff, + startttisstd, startttisgmt)); } /* ** Now we may get to set starttime for the next zone line. @@ -2134,14 +2114,12 @@ outzone(const struct zone *zpfirst, int zonecount) } static void -addtt(starttime, type) -const zic_t starttime; -int type; +addtt(const zic_t starttime, int type) { size_t len; if (starttime <= min_time || - (timecnt == 1 && attypes[0].at < min_time)) { + (timecnt == 1 && attypes[0].at < min_time)) { gmtoffs[0] = gmtoffs[type]; isdsts[0] = isdsts[type]; ttisstds[0] = ttisstds[type]; @@ -2157,7 +2135,7 @@ int type; type = 0; } if (timecnt >= TZ_MAX_TIMES) { - error(_("too many transitions?!")); + error("too many transitions?!"); exit(EXIT_FAILURE); } attypes[timecnt].at = starttime; @@ -2171,15 +2149,15 @@ addtype(long gmtoff, const char *abbr, int isdst, int ttisstd, int ttisgmt) int i, j; if (isdst != TRUE && isdst != FALSE) { - error(_("internal error - addtype called with bad isdst")); + error("internal error - addtype called with bad isdst"); exit(EXIT_FAILURE); } if (ttisstd != TRUE && ttisstd != FALSE) { - error(_("internal error - addtype called with bad ttisstd")); + error("internal error - addtype called with bad ttisstd"); exit(EXIT_FAILURE); } if (ttisgmt != TRUE && ttisgmt != FALSE) { - error(_("internal error - addtype called with bad ttisgmt")); + error("internal error - addtype called with bad ttisgmt"); exit(EXIT_FAILURE); } /* @@ -2188,21 +2166,21 @@ addtype(long gmtoff, const char *abbr, int isdst, int ttisstd, int ttisgmt) */ for (i = 0; i < typecnt; ++i) { if (gmtoff == gmtoffs[i] && isdst == isdsts[i] && - strcmp(abbr, &chars[abbrinds[i]]) == 0 && - ttisstd == ttisstds[i] && - ttisgmt == ttisgmts[i]) - return i; + strcmp(abbr, &chars[abbrinds[i]]) == 0 && + ttisstd == ttisstds[i] && + ttisgmt == ttisgmts[i]) + return i; } /* ** There isn't one; add a new one, unless there are already too ** many. */ if (typecnt >= TZ_MAX_TYPES) { - error(_("too many local time types")); + error("too many local time types"); exit(EXIT_FAILURE); } if (! (-1L - 2147483647L <= gmtoff && gmtoff <= 2147483647L)) { - error(_("UTC offset out of range")); + error("UTC offset out of range"); exit(EXIT_FAILURE); } gmtoffs[i] = gmtoff; @@ -2226,13 +2204,13 @@ leapadd(zic_t t, int positive, int rolling, int count) int i, j; if (leapcnt + (positive ? count : 1) > TZ_MAX_LEAPS) { - error(_("too many leap seconds")); + error("too many leap seconds"); exit(EXIT_FAILURE); } for (i = 0; i < leapcnt; ++i) if (t <= trans[i]) { if (t == trans[i]) { - error(_("repeated leap second moment")); + error("repeated leap second moment"); exit(EXIT_FAILURE); } break; @@ -2268,7 +2246,7 @@ adjleap(void) static int yearistype(int year, const char *type) { - static char * buf; + static char *buf; int result; size_t len; @@ -2278,13 +2256,14 @@ yearistype(int year, const char *type) buf = erealloc(buf, len); snprintf(buf, len, "%s %d %s", yitcommand, year, type); result = system(buf); - if (WIFEXITED(result)) switch (WEXITSTATUS(result)) { + if (WIFEXITED(result)) + switch (WEXITSTATUS(result)) { case 0: return TRUE; case 1: return FALSE; - } - error(_("Wild result from command execution")); + } + error("Wild result from command execution"); errx(1, "command was '%s', result was %d", buf, result); } @@ -2309,8 +2288,8 @@ itsabbr(const char *sabbr, const char *sword) static const struct lookup * byword(const char *word, const struct lookup *table) { - const struct lookup * foundlp; - const struct lookup * lp; + const struct lookup *foundlp; + const struct lookup *lp; if (word == NULL || table == NULL) return NULL; @@ -2337,8 +2316,8 @@ byword(const char *word, const struct lookup *table) static char ** getfields(char *cp) { - char * dp; - char ** array; + char *dp; + char **array; int nsubs; if (cp == NULL) @@ -2346,25 +2325,28 @@ getfields(char *cp) array = ereallocarray(NULL, strlen(cp) + 1, sizeof *array); nsubs = 0; for ( ; ; ) { - while (isascii((unsigned char) *cp) && - isspace((unsigned char) *cp)) - ++cp; + while (isascii((unsigned char)*cp) && + isspace((unsigned char)*cp)) + ++cp; if (*cp == '\0' || *cp == '#') break; array[nsubs++] = dp = cp; do { - if ((*dp = *cp++) != '"') + if ((*dp = *cp++) != '"') { ++dp; - else while ((*dp = *cp++) != '"') - if (*dp != '\0') - ++dp; - else { - error(_( "Odd number of quotation marks")); - exit(EXIT_FAILURE); + } else { + while ((*dp = *cp++) != '"') { + if (*dp != '\0') + ++dp; + else { + error("Odd number of quotation marks"); + exit(EXIT_FAILURE); + } } + } } while (*cp != '\0' && *cp != '#' && - (!isascii((unsigned char)*cp) || !isspace((unsigned char) *cp))); - if (isascii((unsigned char) *cp) && isspace((unsigned char) *cp)) + (!isascii((unsigned char)*cp) || !isspace((unsigned char)*cp))); + if (isascii((unsigned char)*cp) && isspace((unsigned char)*cp)) ++cp; *dp = '\0'; } @@ -2375,11 +2357,10 @@ getfields(char *cp) static long oadd(long t1, long t2) { - long t; + long t = t1 + t2; - t = t1 + t2; if ((t2 > 0 && t <= t1) || (t2 < 0 && t >= t1)) { - error(_("time overflow")); + error("time overflow"); exit(EXIT_FAILURE); } return t; @@ -2396,7 +2377,7 @@ tadd(zic_t t1, long t2) return min_time; t = t1 + t2; if ((t2 > 0 && t <= t1) || (t2 < 0 && t >= t1)) { - error(_("time overflow")); + error("time overflow"); exit(EXIT_FAILURE); } return t; @@ -2406,7 +2387,6 @@ tadd(zic_t t1, long t2) ** Given a rule, and a year, compute the date - in seconds since January 1, ** 1970, 00:00 LOCAL time - in that year that the rule refers to. */ - static zic_t rpytime(const struct rule *rp, int wantedy) { @@ -2441,7 +2421,7 @@ rpytime(const struct rule *rp, int wantedy) if (rp->r_dycode == DC_DOWLEQ) --i; else { - error(_("use of 2/29 in non leap-year")); + error("use of 2/29 in non leap-year"); exit(EXIT_FAILURE); } } @@ -2498,25 +2478,24 @@ newabbr(const char *string) */ cp = string; wp = NULL; - while (isascii((unsigned char) *cp) && - isalpha((unsigned char) *cp)) - ++cp; + while (isascii((unsigned char)*cp) && + isalpha((unsigned char)*cp)) + ++cp; if (cp - string == 0) -wp = _("time zone abbreviation lacks alphabetic at start"); + wp = "time zone abbreviation lacks alphabetic at start"; if (noise && cp - string > 3) -wp = _("time zone abbreviation has more than 3 alphabetics"); + wp = "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"); + wp = "time zone abbreviation has too many alphabetics"; if (wp == NULL && (*cp == '+' || *cp == '-')) { ++cp; - if (isascii((unsigned char) *cp) && - isdigit((unsigned char) *cp)) - if (*cp++ == '1' && - *cp >= '0' && *cp <= '4') - ++cp; + if (isascii((unsigned char)*cp) && + isdigit((unsigned char)*cp)) + if (*cp++ == '1' && *cp >= '0' && *cp <= '4') + ++cp; } if (*cp != '\0') - wp = _("time zone abbreviation differs from POSIX standard"); + wp = "time zone abbreviation differs from POSIX standard"; if (wp != NULL) { wp = ecpyalloc(wp); wp = ecatalloc(wp, " ("); @@ -2528,7 +2507,7 @@ wp = _("time zone abbreviation has too many alphabetics"); } i = strlen(string) + 1; if (charcnt + i > TZ_MAX_CHARS) { - error(_("too many, or too long, time zone abbreviations")); + error("too many, or too long, time zone abbreviations"); exit(EXIT_FAILURE); } strlcpy(&chars[charcnt], string, sizeof(chars) - charcnt); @@ -2558,8 +2537,8 @@ mkdirs(char *argname) if (errno != EEXIST || !itsdir(name)) { fprintf(stderr, - _("%s: Can't create directory %s: %s\n"), - progname, name, e); + "%s: Can't create directory %s: %s\n", + __progname, name, e); free(name); return -1; } @@ -2574,11 +2553,9 @@ mkdirs(char *argname) static long eitol(int i) { - long l; + long l = i; - l = i; - if ((i < 0 && l >= 0) || (i == 0 && l != 0) || (i > 0 && l <= 0)) { + if ((i < 0 && l >= 0) || (i == 0 && l != 0) || (i > 0 && l <= 0)) errx(1, "%d did not sign extend correctly", i); - } return l; }