/hg/icedtea6: RH995488: Java thinks that the default timezone is...

andrew at icedtea.classpath.org andrew at icedtea.classpath.org
Thu Sep 5 11:36:47 PDT 2013


changeset 0dbdbf696a34 in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=0dbdbf696a34
author: Andrew John Hughes <gnu.andrew at redhat.com>
date: Thu Sep 05 19:36:32 2013 +0100

	RH995488: Java thinks that the default timezone is Busingen instead of Zurich

	2013-09-05  Andrew John Hughes  <gnu.andrew at redhat.com>

		* Makefile.am:
		(ICEDTEA_PATCHES): Add new patch.
		* patches/rh995488-rhel_tz_fix.patch:
		Use /etc/sysconfig/clock on RHEL & clones
		so that they don't search /usr/share/zoneinfo.
		* NEWS: Mention patch.


diffstat:

 ChangeLog                          |   9 ++++
 Makefile.am                        |   3 +-
 NEWS                               |   1 +
 patches/rh995488-rhel_tz_fix.patch |  77 ++++++++++++++++++++++++++++++++++++++
 4 files changed, 89 insertions(+), 1 deletions(-)

diffs (121 lines):

diff -r 782a87f782f3 -r 0dbdbf696a34 ChangeLog
--- a/ChangeLog	Mon Sep 02 20:59:15 2013 +0100
+++ b/ChangeLog	Thu Sep 05 19:36:32 2013 +0100
@@ -1,3 +1,12 @@
+2013-09-05  Andrew John Hughes  <gnu.andrew at redhat.com>
+
+	* Makefile.am:
+	(ICEDTEA_PATCHES): Add new patch.
+	* patches/rh995488-rhel_tz_fix.patch:
+	Use /etc/sysconfig/clock on RHEL & clones
+	so that they don't search /usr/share/zoneinfo.
+	* NEWS: Mention patch.
+
 2013-09-02  Andrew John Hughes  <gnu.andrew at redhat.com>
 
 	* Makefile.am:
diff -r 782a87f782f3 -r 0dbdbf696a34 Makefile.am
--- a/Makefile.am	Mon Sep 02 20:59:15 2013 +0100
+++ b/Makefile.am	Thu Sep 05 19:36:32 2013 +0100
@@ -760,7 +760,8 @@
 	patches/openjdk/6980281-majorver_for_solaris.patch \
 	patches/openjdk/7000225-bad_tabs.patch \
 	patches/openjdk/7038711-fix_no-clobber_usage.patch \
-	patches/disable-cc-incompatible-sanity-checks.patch
+	patches/disable-cc-incompatible-sanity-checks.patch \
+	patches/rh995488-rhel_tz_fix.patch
 
 if WITH_ALT_HSBUILD
 ICEDTEA_PATCHES += \
diff -r 782a87f782f3 -r 0dbdbf696a34 NEWS
--- a/NEWS	Mon Sep 02 20:59:15 2013 +0100
+++ b/NEWS	Thu Sep 05 19:36:32 2013 +0100
@@ -46,6 +46,7 @@
   - RH902004: very bad performance with E-Porto Add-In für OpenOffice Writer installed (hs23 only)
   - RH991170: java does not use correct kerberos credential cache
   - PR1535: Allow use of system Kerberos to obtain cache location
+  - RH995488: Java thinks that the default timezone is Busingen instead of Zurich
 * JamVM
   - JSR 335: Lambda Expressions
   - JEP 171: Implement fence methods in sun.misc.Unsafe
diff -r 782a87f782f3 -r 0dbdbf696a34 patches/rh995488-rhel_tz_fix.patch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/rh995488-rhel_tz_fix.patch	Thu Sep 05 19:36:32 2013 +0100
@@ -0,0 +1,77 @@
+diff --git a/src/solaris/native/java/util/TimeZone_md.c b/src/solaris/native/java/util/TimeZone_md.c
+--- openjdk/jdk/src/solaris/native/java/util/TimeZone_md.c
++++ openjdk/jdk/src/solaris/native/java/util/TimeZone_md.c
+@@ -52,6 +52,8 @@
+ #ifdef __linux__
+ 
+ static const char *ETC_TIMEZONE_FILE = "/etc/timezone";
++static const char *REDHAT_RELEASE_FILE = "/etc/redhat-release";
++static const char *SYSCONFIG_CLOCK_FILE = "/etc/sysconfig/clock";
+ static const char *ZONEINFO_DIR = "/usr/share/zoneinfo";
+ static const char *DEFAULT_ZONEINFO_FILE = "/etc/localtime";
+ 
+@@ -225,6 +227,64 @@
+     }
+ 
+     /*
++     * Next, try the ZONE entry in /etc/sysconfig/clock.
++     */
++    if ((fp = fopen(REDHAT_RELEASE_FILE, "r")) != NULL) {
++	char id[7];
++
++	/* Avoid this file on Fedora as may be buggy; RH489586 */
++	if (fgets(id, sizeof (id), fp) != NULL && 
++	  strncmp(id, "Fedora", 6) != 0) {
++	    (void) fclose(fp);
++	    if ((fp = fopen(SYSCONFIG_CLOCK_FILE, "r")) != NULL) {
++		char line[256];
++		
++		while (fgets(line, sizeof(line), fp) != NULL) {
++		    char *p = line;
++		    char *s;
++		    
++		    SKIP_SPACE(p);
++		    if (*p != 'Z') {
++			continue;
++		    }
++		    if (strncmp(p, "ZONE=\"", 6) == 0) {
++			p += 6;
++		    } else {
++			/*
++			 * In case we need to parse it token by token.
++			 */
++			if (strncmp(p, "ZONE", 4) != 0) {
++			    continue;
++			}
++			p += 4;
++			SKIP_SPACE(p);
++			if (*p++ != '=') {
++			    break;
++			}
++			SKIP_SPACE(p);
++			if (*p++ != '"') {
++			    break;
++			}
++		    }
++		    for (s = p; *s && *s != '"'; s++)
++			;
++		    if (*s != '"') {
++			/* this ZONE entry is broken. */
++			break;
++		    }
++		    *s = '\0';
++		    tz = strdup(p);
++		    break; 
++		}
++		(void) fclose(fp);
++		if (tz != NULL) {
++		    return tz;
++		}
++	    }
++	}
++    }
++
++    /*
+      * Next, try /etc/localtime to find the zone ID.
+      */
+     if (lstat(DEFAULT_ZONEINFO_FILE, &statbuf) == -1) {



More information about the distro-pkg-dev mailing list