forked from Mirrors/freeswitch
timezones.conf.xml generator
This commit is contained in:
parent
b3c02a547e
commit
d56a0fb198
|
@ -0,0 +1,87 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use Getopt::Long;
|
||||
|
||||
my $base = "/usr/share/zoneinfo";
|
||||
my $output = "timezones.conf.xml";
|
||||
my $debug;
|
||||
my $help;
|
||||
|
||||
my %zones = ();
|
||||
my %name_to_file = ();
|
||||
|
||||
my $res = GetOptions(
|
||||
"base=s" => \$base,
|
||||
"debug+" => \$debug,
|
||||
"help" => \$help,
|
||||
"output" => \$output
|
||||
);
|
||||
if ( !$res || $help ) {
|
||||
print "$0 [--base=/usr/share/zoneinfo] [--output=timezones.conf] [--debug] [--help]\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
opendir( my $top, $base );
|
||||
while ( my $file = readdir($top) ) {
|
||||
next if ( $file eq "." || $file eq "." );
|
||||
|
||||
if ( -f "$base/$file" ) {
|
||||
$debug && print "Found $base/$file\n";
|
||||
$name_to_file{$file} = "$base/$file";
|
||||
}
|
||||
elsif ( -d "$base/$file" ) {
|
||||
opendir( my $sdir, "$base/$file" );
|
||||
while ( my $subfile = readdir($sdir) ) {
|
||||
next if ( $subfile eq "." || $subfile eq "." );
|
||||
if ( -f "$base/$file/$subfile" ) {
|
||||
$debug && print "Found $base/$file/$subfile...\n";
|
||||
$name_to_file{"$file/$subfile"} = "$base/$file/$subfile";
|
||||
}
|
||||
}
|
||||
closedir($sdir);
|
||||
}
|
||||
}
|
||||
closedir($top);
|
||||
|
||||
foreach my $name ( sort( keys(%name_to_file) ) ) {
|
||||
my $file = $name_to_file{$name};
|
||||
$debug && print "Processing $file...\n";
|
||||
|
||||
open( my $in, "<$file" );
|
||||
my $data = join( "", <$in> );
|
||||
close($in);
|
||||
|
||||
if ( $data !~ /^TZif2/o ) {
|
||||
$debug && print "Skipped $file\n";
|
||||
next;
|
||||
}
|
||||
|
||||
my $tmp = $data;
|
||||
$tmp =~ s/\n$//s;
|
||||
$tmp =~ s/.*\n//sgmo;
|
||||
|
||||
$zones{$name} = $tmp;
|
||||
}
|
||||
|
||||
open( my $out, ">$output" );
|
||||
print $out "<configuration name=\"timezones.conf\" description=\"Timezones\">\n";
|
||||
print $out " " x 4, "<timezones>\n";
|
||||
|
||||
my $lastprefix = "";
|
||||
foreach my $zone ( sort( keys(%zones) ) ) {
|
||||
my $str = $zones{$zone};
|
||||
next if ( !$str );
|
||||
|
||||
my $newprefix = $zone;
|
||||
$newprefix =~ s|/.*||go;
|
||||
if ( $newprefix ne $lastprefix && $lastprefix ne "" ) {
|
||||
print $out "\n";
|
||||
}
|
||||
$lastprefix = $newprefix;
|
||||
|
||||
print $out "\t<zone name=\"$zone\" value=\"$str\" />\n";
|
||||
}
|
||||
print $out " " x 4, "</timezones>\n";
|
||||
print $out "</configuration>\n";
|
||||
close($out);
|
Loading…
Reference in New Issue