Handle hostnames with upper-case letters
[webmin.git] / mailboxes / makelang.pl
1 #!/usr/local/bin/perl
2
3 @ARGV == 1 || die "usage: makelang.pl <language>";
4
5 $usermin = "/usr/local/useradmin/mailbox/ulang";
6 $mailboxes = "/usr/local/webadmin/mailboxes/lang";
7 $sendmail = "/usr/local/webadmin/sendmail/lang";
8
9 &read_file("$mailboxes/en", \%emailboxes, \@eorder);
10 &read_file("$sendmail/en", \%esendmail);
11 &read_file("$usermin/en", \%eusermin);
12
13 &read_file("$mailboxes/$ARGV[0]", \%fmailboxes);
14 &read_file("$sendmail/$ARGV[0]", \%fsendmail);
15 &read_file("$usermin/$ARGV[0]", \%fusermin);
16
17 foreach $k (@eorder) {
18         if ($emailboxes{$k} eq $esendmail{$k} &&
19             $fsendmail{$k} &&
20             $fsendmail{$k} ne $esendmail{$k}) {
21                 print "$k=$fsendmail{$k}\n";
22                 }
23         elsif ($emailboxes{$k} eq $eusermin{$k} &&
24                $fusermin{$k} &&
25                $fusermin{$k} ne $eusermin{$k}) {
26                 print "$k=$fusermin{$k}\n";
27                 }
28         }
29
30 # read_file(file, &assoc, [&order], [lowercase])
31 # Fill an associative array with name=value pairs from a file
32 sub read_file
33 {
34 local $_;
35 open(ARFILE, $_[0]) || return 0;
36 while(<ARFILE>) {
37         chomp;
38         local $hash = index($_, "#");
39         local $eq = index($_, "=");
40         if ($hash != 0 && $eq >= 0) {
41                 local $n = substr($_, 0, $eq);
42                 local $v = substr($_, $eq+1);
43                 $_[1]->{$_[3] ? lc($n) : $n} = $v;
44                 push(@{$_[2]}, $n) if ($_[2]);
45                 }
46         }
47 close(ARFILE);
48 if (defined($main::read_file_cache{$_[0]})) {
49         %{$main::read_file_cache{$_[0]}} = %{$_[1]};
50         }
51 return 1;
52 }
53
54