[tz] [PROPOSED PATCH 2/2] tzalloc should scrub abbreviations, compatibly with tzset.
Paul Eggert
eggert at cs.ucla.edu
Tue Nov 11 23:02:33 UTC 2014
* localtime.c (settzname): Move scrubbing into ...
(scrub_abbrs): ... this new function.
(zoneinit): Use it here, rather than in settzname.
* NEWS: Document this.
---
NEWS | 9 +++++++++
localtime.c | 11 +++++++++--
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/NEWS b/NEWS
index 98b6e8c..a2ef695 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,14 @@
News for the tz database
+Unreleased, experimental changes
+
+ Changes affecting code
+
+ tzalloc now scrubs time zone abbreviations compatibly with the way
+ that tzset always has, by replacing invalid bytes with '_' and by
+ shortening too-long abbreviations.
+
+
Release 2014j - 2014-11-10 17:37:11 -0800
Changes affecting current and future time stamps
diff --git a/localtime.c b/localtime.c
index 5551707..f44390a 100644
--- a/localtime.c
+++ b/localtime.c
@@ -284,8 +284,13 @@ settzname(void)
daylight = 1;
#endif /* defined USG_COMPAT */
}
+}
+
+static void
+scrub_abbrs(struct state *sp)
+{
+ int i;
/*
- ** Finally, scrub the abbreviations.
** First, replace bogus characters.
*/
for (i = 0; i < sp->charcnt; ++i)
@@ -1209,7 +1214,9 @@ zoneinit(struct state *sp, char const *name)
} else {
int err = tzload(name, sp, true);
if (err != 0 && name && name[0] != ':' && tzparse(name, sp, false))
- return 0;
+ err = 0;
+ if (err == 0)
+ scrub_abbrs(sp);
return err;
}
}
--
2.1.0
More information about the tz
mailing list