chiark / gitweb /
support data/news/name-map
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 27 Jun 2010 19:40:47 +0000 (20:40 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 27 Jun 2010 19:40:47 +0000 (20:40 +0100)
cgi

diff --git a/cgi b/cgi
index 79f2b11cfe0802ecb059c185a697828c59a76f3f..4495a872791b77675c6dd3c9cf996738f8c6eef7 100755 (executable)
--- a/cgi
+++ b/cgi
@@ -140,7 +140,29 @@ foreach my $src (<$R/df/df-*.rrd>) {
           ]);
 }
 
-foreach my $src (<$SELF/data/news/*.rrd>) {
+our %news_name_map;
+
+if (!open NM, '<', "$SELF/data/news/name-map") {
+    die unless $!==&ENOENT;
+} else {
+    while (<NM>) {
+       s/^\s*//; s/\s+$//;
+       next unless m/^[^\#]/;
+       m/^(\S+)\s+(in|out|\*)\s+(\S+)$/ or die;
+       if ($2 eq '*') {
+           $news_name_map{$1,$_}= $3 foreach qw(in out);
+       } else {
+           $news_name_map{$1,$2}= $3;
+       }
+    }
+}
+
+sub news_name_sortkey {
+    return join '.', reverse split /\./, $_[0];
+}
+
+foreach my $src (sort { news_name_sortkey($a) cmp news_name_sortkey($b) }
+                <$SELF/data/news/*.rrd>) {
     my $site= $src;
     $site =~ s,\.rrd$,, or next;
     $site =~ s,.*/,,;
@@ -148,6 +170,9 @@ foreach my $src (<$SELF/data/news/*.rrd>) {
     my $inout= $1;
     $site =~ s/^([-.0-9a-z]+)_//;
     my $us= $1; # all very well but we ignore it
+    my $newsite= $news_name_map{$site,$inout};
+    next if $newsite eq '-';
+    $site= $newsite if defined $newsite;
     graph_of_group("News", $site, $inout,
          {
                Slower => 1,