diff options
-rwxr-xr-x | build/zoneinfo2lua.pl | 60 |
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"; |