Print this page
XXXX Update zdump to better-handle POSIX timezones
*** 2228,2263 ****
t = (zic_t)dayoff * SECSPERDAY;
return (tadd(t, rp->r_tod));
}
static void
! newabbr(string)
! const char * const string;
{
register int i;
if (strcmp(string, GRANDPARENTED) != 0) {
register const char *cp;
register char *wp;
- /*
- * 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;
! while (isascii(*cp) && isalpha(*cp))
++cp;
! if (cp - string == 0)
! wp = gettext(("time zone abbreviation lacks "
! "alphabetic at start"));
! if (noise && cp - string > 3)
! wp = gettext(("time zone abbreviation has more than 3 "
"alphabetics"));
if (cp - string > ZIC_MAX_ABBR_LEN_WO_WARN)
wp = gettext(("time zone abbreviation has too many "
! "alphabetics"));
if (wp == NULL && (*cp == '+' || *cp == '-')) {
++cp;
if (isascii(*cp) && isdigit(*cp))
if (*cp++ == '1' && *cp >= '0' && *cp <= '4')
++cp;
--- 2228,2257 ----
t = (zic_t)dayoff * SECSPERDAY;
return (tadd(t, rp->r_tod));
}
static void
! newabbr(const char * const string)
{
register int i;
if (strcmp(string, GRANDPARENTED) != 0) {
register const char *cp;
register char *wp;
cp = string;
wp = NULL;
! while (isalpha(*cp) || ('0' <= *cp && *cp <= '9') ||
! *cp == '-' || *cp == '+') {
++cp;
! }
! if (noise && cp - string < 3)
! wp = gettext(("time zone abbreviation has less than 3 "
"alphabetics"));
if (cp - string > ZIC_MAX_ABBR_LEN_WO_WARN)
wp = gettext(("time zone abbreviation has too many "
! "characters"));
if (wp == NULL && (*cp == '+' || *cp == '-')) {
++cp;
if (isascii(*cp) && isdigit(*cp))
if (*cp++ == '1' && *cp >= '0' && *cp <= '4')
++cp;