[LON-CAPA-cvs] cvs: loncom(version_2_8_X) /localize lonlocal.pm

raeburn raeburn@source.lon-capa.org
Fri, 12 Feb 2010 14:20:41 -0000


raeburn		Fri Feb 12 14:20:41 2010 EDT

  Modified files:              (Branch: version_2_8_X)
    /loncom/localize	lonlocal.pm 
  Log:
  - Backport 1.59 (part).
  
  
Index: loncom/localize/lonlocal.pm
diff -u loncom/localize/lonlocal.pm:1.50.2.2 loncom/localize/lonlocal.pm:1.50.2.3
--- loncom/localize/lonlocal.pm:1.50.2.2	Mon Jan  5 16:55:04 2009
+++ loncom/localize/lonlocal.pm	Fri Feb 12 14:20:41 2010
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Localization routines
 #
-# $Id: lonlocal.pm,v 1.50.2.2 2009/01/05 16:55:04 raeburn Exp $
+# $Id: lonlocal.pm,v 1.50.2.3 2010/02/12 14:20:41 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -397,6 +397,15 @@
 
     my $dt = DateTime->from_epoch(epoch => $thistime)
                      ->set_time_zone(&gettimezone($timezone));
+
+    # TimeZone tries to determine the 'local' timezone from $ENV{TZ} if this
+    # fails it searches through various system files. Under certain
+    # circumstances this is an extremly expensive operation.
+    # So after the first run we store the timezone in $ENV{TZ} to significantly
+    # speed up future lookups.
+    $ENV{TZ} = $dt->time_zone()->name()
+        if (! $ENV{TZ} && gettimezone($timezone) eq 'local');
+
     if ((&current_language=~/^en/) || (!$lh)) {
 
 	return $dt->strftime("%a %b %e %I:%M:%S %P %Y (%Z)");