diff options
| author | Dan McDonald <danmcd@omniti.com> | 2016-04-08 11:27:24 -0400 |
|---|---|---|
| committer | Dan McDonald <danmcd@omniti.com> | 2016-04-11 16:23:15 -0400 |
| commit | 67e157eca677c3d1b1c5d1049d9fc53c2e05033c (patch) | |
| tree | 8b80931d6df47447829f2f788271f42eea4b142e /usr/src/cmd/zic | |
| parent | 237b1f3178a3c47b25420fdd5ba0a1694c18c11a (diff) | |
| download | illumos-joyent-67e157eca677c3d1b1c5d1049d9fc53c2e05033c.tar.gz | |
6869 Update zdump to better-handle POSIX timezones
Reviewed by: Jason King <jason.brian.king@gmail.com>
Reviewed by: Igor Kozhukhov <ikozhukhov@gmail.com>
Approved by: Robert Mustacchi <rm@joyent.com>
Diffstat (limited to 'usr/src/cmd/zic')
| -rw-r--r-- | usr/src/cmd/zic/zic.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/usr/src/cmd/zic/zic.c b/usr/src/cmd/zic/zic.c index 63f4722787..382be7d222 100644 --- a/usr/src/cmd/zic/zic.c +++ b/usr/src/cmd/zic/zic.c @@ -2,9 +2,8 @@ * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" -static char elsieid[] = "@(#)zic.c 7.128.1"; +static char elsieid[] = "@(#)zic.c 7.128.1"; /* * #define LEAPSECOND_SUPPORT @@ -2230,8 +2229,7 @@ register const int wantedy; } static void -newabbr(string) -const char * const string; +newabbr(const char * const string) { register int i; @@ -2239,30 +2237,25 @@ const char * const string; 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)) + while (isalpha(*cp) || ('0' <= *cp && *cp <= '9') || + *cp == '-' || *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 " + } + if (noise && cp - string < 3) + wp = gettext(("time zone abbreviation has less than 3 " "alphabetics")); - if (cp - string > ZIC_MAX_ABBR_LEN_WO_WARN) + if (wp == NULL && cp - string > ZIC_MAX_ABBR_LEN_WO_WARN) wp = gettext(("time zone abbreviation has too many " - "alphabetics")); + "characters")); if (wp == NULL && (*cp == '+' || *cp == '-')) { ++cp; if (isascii(*cp) && isdigit(*cp)) if (*cp++ == '1' && *cp >= '0' && *cp <= '4') ++cp; } - if (*cp != '\0') + if (wp == NULL && *cp != '\0') wp = gettext("time zone abbreviation differs from " "POSIX standard"); if (wp != NULL) { |
