]> git.pond.sub.org Git - empserver/blobdiff - info/findsubj.pl
License upgrade to GPL version 3 or later
[empserver] / info / findsubj.pl
index be2a8be221b5f9d56cd65d46d632db807cb9eaba..39a5584ba9d20f455ac09db2454d001f1336737a 100644 (file)
@@ -1,44 +1,46 @@
 #!/usr/bin/perl
 #
-#  Empire - A multi-player, client/server Internet based war game.
-#  Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
-#                           Ken Stevens, Steve McClure
+#   Empire - A multi-player, client/server Internet based war game.
+#   Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak,
+#                 Ken Stevens, Steve McClure, Markus Armbruster
 #
-#  This program is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2 of the License, or
-#  (at your option) any later version.
+#   Empire is free software: you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation, either version 3 of the License, or
+#   (at your option) any later version.
 #
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
 #
-#  You should have received a copy of the GNU General Public License
-#  along with this program; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#   You should have received a copy of the GNU General Public License
+#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
-#  ---
+#   ---
 #
-#  See files README, COPYING and CREDITS in the root of the source
-#  tree for related information and legal notices.  It is expected
-#  that future projects/authors will amend these files as needed.
+#   See files README, COPYING and CREDITS in the root of the source
+#   tree for related information and legal notices.  It is expected
+#   that future projects/authors will amend these files as needed.
 #
-#  ---
+#   ---
 #
-#  findsubj.pl: Find info subjects, update subjects.mk
-# 
-#  Known contributors to this file:
-#     Ken Stevens (when it was still info.pl)
-#     Markus Armbruster, 2006
+#   findsubj.pl: Find info subjects, update subjects.mk
+#  
+#   Known contributors to this file:
+#      Ken Stevens (when it was still info.pl)
+#      Markus Armbruster, 2006-2008
 #
 
+# Usage: findsubj.pl INFO-FILE...
 # Run it at the root of the build tree.  This updates the make include
 # file subjects.mk, which guides the remaking of info index files.
 #
 #       --- Global variables ---
 # @Subjects       Existing subjects
 # $filename       The name of the current info file
+# $filename{TOPIC}
+#                 TOPIC's info file name
 # $chapter{TOPIC} TOPIC's chapter (first arg to .TH)
 # $see_also{TOPIC}
 #                 TOPIC's SEE ALSO items (.SA argument)
@@ -61,19 +63,15 @@ use warnings;
 
 use Errno qw(ENOENT);
 
-our (%chapter, %see_also, %sanr);
+our (%filename, %chapter, %see_also, %sanr);
 our ($filename, %subjfil);
 
 # Get known subjects
 our @Subjects = split(' ', read_make_var("subjects", "subjects.mk", ""));
-# Get source directory
-my $srcdir = read_make_var("srcdir", "GNUmakefile");
-# Get info sources
-my @tsrc = grep(/\.t$/, split(' ' , read_make_var("src", "sources.mk")));
 
 # Parse the .t files
-for my $t (@tsrc) {
-    parse_file("$srcdir/$t");
+for my $f (@ARGV) {
+    parse_file("$f");
 }
 
 # Create %subjfil from %see_also
@@ -101,6 +99,7 @@ for my $t (keys %subjfil) {
 # Update subjects.mk
 open(F, ">subjects.mk")
     or die "Can't open subjects.mk for writing: $!";
+print F "# DO NOT EDIT THIS FILE.  It was automatically generated by findsubj.pl\n";
 print F "subjects := " . join(' ', @Subjects) . "\n";
 for my $t (@Subjects) {
     print F "info/$t.t:$subjfil{$t}\n";
@@ -137,7 +136,8 @@ sub parse_file {
 
     $topic = $filename;
     $topic =~ s,.*/([^/]*)\.t$,$1,;
-    
+    $filename{$topic} = $filename;
+
     open(F, "<$filename")
        or die "Can't open $filename: $!";
   
@@ -178,7 +178,7 @@ sub parse_see_also {
     my $found;                # found a subject?
 
     $wanted = undef if $wanted eq 'Concept' or $wanted eq 'Command';
-    $filename = "$srcdir/$topic";
+    $filename = $filename{$topic};
 
     for (@see_also) {
        if (!exists $see_also{$_}) { # is this entry a subject?