[tz] core dumps on AIX7.1 and HPUX11.31 and tzcode 2017B.

Paul Eggert eggert at cs.ucla.edu
Fri Jun 9 02:09:24 UTC 2017


Thanks for reporting that. I reproduced a core dump on AIX 7.1 and fixed 
it by installing the attached patches into the development version on 
GitHub. I don't have ready access to an HP-UX machine; perhaps you can 
test the fix there.
-------------- next part --------------
From d9fb67caf95bb2c68cd1e5ac3e400da3e194b49c Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert at cs.ucla.edu>
Date: Thu, 8 Jun 2017 19:01:58 -0700
Subject: [PATCH 1/2] Port to AIX 7.1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Our localtime etc. functions did not interoperate well with the
system strftime functions on AIX 7.1, presumably due to warring
tzset implementations.  So, use our strftime function too.
Problem reported by Kees Dekker in:
http://mm.icann.org/pipermail/tz/2017-June/025105.html
Also, port ‘make check’ to systems that lack a UTF-8 locale
or that have it under a name that differs from that of GNU/Linux.
Also, port ‘make check’ to systems that lack nsgmls.
* Makefile (UTF8_LOCALE): New macro.
(VALIDATE): Mention that it can be ':'.
(TZDOBJS): Add strftime.o.
(check_character_set): Use UTF8_LOCALE, after testing it.
* private.h (strftime, strftime_l) [TZ_TIME_T]:
Define these to private names, too.
---
 Makefile  | 16 +++++++++++++---
 private.h |  6 ++++++
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index e6d497d..05b40bb 100644
--- a/Makefile
+++ b/Makefile
@@ -117,6 +117,11 @@ BACKWARD=	backward pacificnew
 
 PACKRATDATA=
 
+# The name of a locale using the UTF-8 encoding, used during self-tests.
+# The tests are skipped if the name does not appear to work on this system.
+
+UTF8_LOCALE=	en_US.utf8
+
 # Since "." may not be in PATH...
 
 YEARISTYPE=	./yearistype
@@ -331,6 +336,7 @@ SGML_CATALOG_FILES= \
 # The name, arguments and environment of a program to validate your web pages.
 # See <http://openjade.sourceforge.net/doc/> for a validator, and
 # <https://validator.w3.org/source/> for a validation library.
+# Set VALIDATE=':' if you do not have such a program.
 VALIDATE = nsgmls
 VALIDATE_FLAGS = -s -B -wall -wno-unused-param
 VALIDATE_ENV = \
@@ -397,7 +403,7 @@ AR=		ar
 RANLIB=		:
 
 TZCOBJS=	zic.o
-TZDOBJS=	zdump.o localtime.o asctime.o
+TZDOBJS=	zdump.o localtime.o asctime.o strftime.o
 DATEOBJS=	date.o localtime.o strftime.o asctime.o
 LIBSRCS=	localtime.c asctime.c difftime.c
 LIBOBJS=	localtime.o asctime.o difftime.o
@@ -615,7 +621,10 @@ check:		check_character_set check_white_space check_links check_sorted \
 		  check_tables check_web check_zishrink check_tzs
 
 check_character_set: $(ENCHILADA)
-		LC_ALL=en_US.utf8 && export LC_ALL && \
+	test ! '$(UTF8_LOCALE)' || \
+	! printf 'A\304\200B\n' | \
+	  LC_ALL='$(UTF8_LOCALE)' grep -q '^A.B$$' >/dev/null 2>&1 || { \
+		LC_ALL='$(UTF8_LOCALE)' && export LC_ALL && \
 		sharp='#' && \
 		! grep -Env $(SAFE_LINE) $(MANS) date.1 $(MANTXTS) \
 			$(MISC) $(SOURCES) $(WEB_PAGES) \
@@ -623,7 +632,8 @@ check_character_set: $(ENCHILADA)
 			version tzdata.zi && \
 		! grep -Env $(SAFE_SHARP_LINE) $(TDATA) backzone \
 			leapseconds yearistype.sh zone.tab && \
-		! grep -Env $(OK_LINE) $(ENCHILADA)
+		! grep -Env $(OK_LINE) $(ENCHILADA); \
+	}
 
 check_white_space: $(ENCHILADA)
 		patfmt=' \t|[\f\r\v]' && pat=`printf "$$patfmt\\n"` && \
diff --git a/private.h b/private.h
index ad9fcb9..0e8cfda 100644
--- a/private.h
+++ b/private.h
@@ -393,6 +393,8 @@ typedef time_tz tz_time_t;
 # define posix2time tz_posix2time
 # undef  posix2time_z
 # define posix2time_z tz_posix2time_z
+# undef  strftime
+# define strftime tz_strftime
 # undef  time
 # define time tz_time
 # undef  time2posix
@@ -415,6 +417,10 @@ typedef time_tz tz_time_t;
 # define tzset tz_tzset
 # undef  tzsetwall
 # define tzsetwall tz_tzsetwall
+# if HAVE_STRFTIME_L
+#  undef  strftime_l
+#  define strftime_l tz_strftime_l
+# endif
 # if HAVE_TZNAME
 #  undef  tzname
 #  define tzname tz_tzname
-- 
2.9.4
-------------- next part --------------
From 688b1bf80c0c7160fa6fb12beb3b936f3747d033 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert at cs.ucla.edu>
Date: Thu, 8 Jun 2017 19:06:38 -0700
Subject: [PATCH 2/2] * NEWS: Mention previous change.

---
 NEWS | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/NEWS b/NEWS
index 44135ae..75911d4 100644
--- a/NEWS
+++ b/NEWS
@@ -28,6 +28,13 @@ Unreleased, experimental changes
     like 'US/Pacific' that are defined in the 'backward' and
     'pacificnew' files.
 
+    'make check' now works on systems that lack a UTF-8 locale,
+    or that lack the nsgmls program.  Set UTF8_LOCALE to configure
+    the name of a UTF-8 locale, if you have one.
+
+    The build procedure for zdump now works on AIX 7.1.
+    (Problem reported by Kees Dekker.)
+
   Changes to code
 
     zic and the reference runtime now reject multiple leap seconds
-- 
2.9.4


More information about the tz mailing list