build: zoneinfo2lua.pl: rework script to accommodate split tzdata.lua and tzoffset.lua libs

This commit is contained in:
Jo-Philipp Wich 2011-01-02 17:52:06 +00:00
parent c8bac06623
commit 9fd0276848

View file

@ -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";