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;