build: zoneinfo2lua.pl: rework script to accommodate split tzdata.lua and tzoffset...
authorJo-Philipp Wich <jow@openwrt.org>
Sun, 2 Jan 2011 17:52:06 +0000 (17:52 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sun, 2 Jan 2011 17:52:06 +0000 (17:52 +0000)
build/zoneinfo2lua.pl

index 2e24c9541671ff15d4d46322caa26f09989fff6c..722711a97c8356cf0fd9305c36151f8a15074dbf 100755 (executable)
@@ -6,12 +6,12 @@
 use strict;
 
 my %TZ;
-my $tzdir = $ARGV[0] || "/usr/share/zoneinfo";
 
-chdir($tzdir) || die "chdir($tzdir): $!\n";
+my $tzdin  = $ARGV[0] || "/usr/share/zoneinfo";
+my $tzdout = $ARGV[1] || "./libs/sys/luasrc/sys/zoneinfo";
 
 local $/ = "\012";
-open( ZTAB, "< ./zone.tab" ) || die "Unable to open zone.tab: $!";
+open( ZTAB, "< $tzdin/zone.tab" ) || die "open($tzdin/zone.tab): $!";
 
 while( ! eof ZTAB ) {
        chomp( my $line = readline ZTAB );
@@ -21,7 +21,7 @@ while( ! eof ZTAB ) {
 
        printf STDERR "%-40s", $zone;
 
-       if( open ZONE, "< ./$zone" ) {
+       if( open ZONE, "< $tzdin/$zone" ) {
                seek ZONE, -2, 2;
 
                while( tell(ZONE) > 0 ) {
@@ -40,14 +40,17 @@ while( ! eof ZTAB ) {
        }
        else
        {
-               print STDERR "Unable to open $zone: $!\n";
+               print STDERR "open($tzdin/$zone): $!\n";
        }
 }
 
 close ZTAB;
 
 
-print <<HEAD;
+open(O, "> $tzdout/tzdata.lua") || die "open($tzdout/tzdata.lua): $!\n";
+
+print STDERR "Writing time zones to $tzdout/tzdata.lua ... ";
+print O <<HEAD;
 --[[
 LuCI - Autogenerated Zoneinfo Module
 
@@ -59,17 +62,37 @@ You may obtain a copy of the License at
 
 ]]--
 
-module "luci.sys.zoneinfo"
+module "luci.sys.zoneinfo.tzdata"
 
 TZ = {
 HEAD
 
 foreach my $zone ( sort keys %TZ ) {
-       printf "\t{ '%s', '%s' },\n", $zone, $TZ{$zone}
+       printf "\t{ '%s', '%s' },\n", $zone, $TZ{$zone}
 }
 
-print <<HEAD;
-}
+print O "}\n";
+close O;
+
+print STDERR "done\n";
+
+
+open (O, "> $tzdout/tzoffset.lua") || die "open($tzdout/tzoffset.lua): $!\n";
+
+print STDERR "Writing time offsets to $tzdout/tzoffset.lua ... ";
+print O <<HEAD;
+--[[
+LuCI - Autogenerated Zoneinfo Module
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+]]--
+
+module "luci.sys.zoneinfo.tzoffset"
 
 OFFSET = {
 HEAD
@@ -103,8 +126,8 @@ foreach my $tz ( sort keys %TZ ) {
                        $offset  = $s * $h * 60 * 60;
                        $offset += $s * $m * 60;
 
-                       printf("\t%-5s = %6d,\t-- %s\n",
-                               lc($std), $offset, $std);
+                       printf O "\t%-5s = %6d,\t-- %s\n",
+                               lc($std), $offset, $std;
 
                        $seen{$std} = 1;
 
@@ -122,15 +145,15 @@ foreach my $tz ( sort keys %TZ ) {
                                        $offset += 60 * 60;
                                }
 
-                               printf("\t%-5s = %6d,\t-- %s\n",
-                                       lc($dst), $offset, $dst);
+                               printf O "\t%-5s = %6d,\t-- %s\n",
+                                       lc($dst), $offset, $dst;
        
                                $seen{$dst} = 1;
                        }
                }
                else {
-                       printf("\t%-5s = %6d,\t-- %s\n",
-                               lc($std), $offset, $std);
+                       printf O "\t%-5s = %6d,\t-- %s\n",
+                               lc($std), $offset, $std;
 
                        $seen{$std} = 1;
                }
@@ -138,4 +161,7 @@ foreach my $tz ( sort keys %TZ ) {
        }
 }
 
-print "}\n";
+print O "}\n";
+close O;
+
+print STDERR "done\n";