summaryrefslogtreecommitdiffhomepage
path: root/build/zoneinfo2lua.pl
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2011-01-02 17:52:06 +0000
committerJo-Philipp Wich <jow@openwrt.org>2011-01-02 17:52:06 +0000
commit9fd0276848ae1294a2d5984de887ce6c59d674d2 (patch)
tree75570c27a39964cbe06bdad97a0046f26f80f038 /build/zoneinfo2lua.pl
parentc8bac066234103a6fd87c4d32f08fd1622be5ba3 (diff)
build: zoneinfo2lua.pl: rework script to accommodate split tzdata.lua and tzoffset.lua libs
Diffstat (limited to 'build/zoneinfo2lua.pl')
-rwxr-xr-xbuild/zoneinfo2lua.pl60
1 files changed, 43 insertions, 17 deletions
diff --git a/build/zoneinfo2lua.pl b/build/zoneinfo2lua.pl
index 2e24c9541..722711a97 100755
--- a/build/zoneinfo2lua.pl
+++ b/build/zoneinfo2lua.pl
@@ -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 O "\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";