<i18n dev> Using system tzdata

Iris Garcia iag at ribbit.SFBay.Sun.COM
Wed Aug 8 17:08:16 PDT 2007


Hi, Keith.

The timezone information files are owned by the i18n team
(i18n-dev at openjdk.java.net).  They should be able to provide you with
guidance.

Thanks,
iris

> Date: Wed, 08 Aug 2007 12:40:08 -0700
> From: Keith Seitz <keiths at redhat.com>
> Subject: Using system tzdata
> 
> Hi,
> 
> The JRE contains pre-compiled timezone information files. As an OS
> vendor, Red Hat would prefer not to respin or repackage the JRE every
> time tzdata changes somewhere in the world.
> 
> In order to facilitate this, we're in the process of modifying our
> tzdata package to include pre-compiled zoneinfo files for use with JREs.
> I have created a patch to the openjdk JRE that would optionally use
> these files instead of the pre-packaged ones in the JRE.
> 
> We would really like to solicit advice/comments about how to get
> something like this accepted upstream so that other distros can use this.
>
> Keith
> 
> 
> --- openjdk/hotspot/src/os/linux/vm/os_linux.cpp.keiths	2007-08-01 10:21:19.000000000 -0700
> +++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	2007-08-01 10:21:36.000000000 -0700
> @@ -376,6 +376,10 @@
>      }
>    }
>  
> +  // Use the system zoneinfo files, if present
> +  SystemProperty* sp = Arguments::system_properties();
> +  Arguments::PropertyList_add (&sp,
> +			       "java.zoneinfo.dir", "/usr/share/zoneinfo/java");
>  #undef malloc
>  #undef getenv
>  #undef EXTENSIONS_DIR
> --- openjdk/j2se/src/share/classes/sun/util/calendar/ZoneInfoFile.java.keiths	2007-08-01 12:31:03.000000000 -0700
> +++ openjdk/j2se/src/share/classes/sun/util/calendar/ZoneInfoFile.java	2007-08-01 12:29:44.000000000 -0700
> @@ -1021,10 +1021,18 @@
>  	byte[] buffer = null;
>  
>  	try {
> -	    String homeDir = (String) AccessController.doPrivileged(
> +	    String zi_dir = (String) AccessController.doPrivileged(
> +			        new sun.security.action.GetPropertyAction("java.zoneinfo.dir"));
> +	    File dir = null;
> +	    if (zi_dir != null)
> +	      dir = new File(zi_dir);
> +	    if (dir == null || !dir.exists() || !dir.isDirectory()) {
> +	      String homeDir = (String) AccessController.doPrivileged(
>  				new sun.security.action.GetPropertyAction("java.home"));
> -	    final String fname = homeDir + File.separator + "lib" + File.separator
> -				 + "zi" + File.separator + fileName;
> +	      zi_dir = homeDir + File.separator + "lib" + File.separator
> +		+ "zi";
> +	    }
> +	    final String fname =  zi_dir + File.separator + fileName;
>  	    buffer = (byte[]) AccessController.doPrivileged(new PrivilegedExceptionAction() {
>  		public Object run() throws IOException {
>  		    File file = new File(fname);



More information about the i18n-dev mailing list