#!/usr/bin/perl
#
# Empire - A multi-player, client/server Internet based war game.
-# Copyright (C) 1986-2013, Dave Pare, Jeff Bailey, Thomas Ruschak,
+# Copyright (C) 1986-2021, Dave Pare, Jeff Bailey, Thomas Ruschak,
# Ken Stevens, Steve McClure, Markus Armbruster
#
# Empire is free software: you can redistribute it and/or modify
#
# Known contributors to this file:
# Ken Stevens (when it was still info.pl)
-# Markus Armbruster, 2006-2013
+# Markus Armbruster, 2006-2016
#
# Usage: mksubj.pl SUBJECT... INFO-FILE...
#
my @Levels = qw/Basic Expert Obsolete/;
-# $Subjects{SUBJECT} is a reference to an an anonymous array
+# $Subjects{SUBJECT} is a reference to an anonymous array
# containing SUBJECT's topics
my %Subjects;
update_subj($_);
}
+write_toc();
+
sub fn2topic {
my ($fn) = @_;
$fn =~ s,.*/([^/]*)\.t$,$1,;
if (/^\.SA "([^\"]*)"/) {
parse_see_also($topic, $1);
} else {
- error("Incorrect .SA Syntax. Syntax should be '.SA \"item1, item2\"'");
- }
-
- while (<F>) {
- error("Multiple .SA requests. Each file may contain at most one.") if /^\.SA/;
+ error("Incorrect .SA argument, expecting '.SA \"item1, item2\"'");
}
} else {
error(".SA request is missing");
}
+ if (<F>) {
+ error(".SA request must be the last line");
+ }
+
$lines{$topic} = $.;
close F;
}
}
$out .= ".s1\n"
. ".in 0\n"
- . "For info on a particular subject, type \"info <subject>\" where <subject> is\n"
- . "one of the subjects listed above.\n";
- $out .= "Subjects marked by * are the most important and should be read by new players.\n"
+ . "For info on a particular topic, type \"info <topic>\" where <topic> is\n"
+ . "one of the topics listed above.\n";
+ $out .= "Topics marked by * are the most important and should be read by new players.\n"
if $any_basic;
- $out .= "Subjects marked by + are obsolete.\n"
+ $out .= "Topics marked by + are obsolete.\n"
if $any_obsolete;
- $out .= "Unusually long subjects are marked with a !.\n"
+ $out .= "Topics with unusually long info are marked with a !.\n"
if $any_long;
return if (same_contents($fname, $out));
return $contents eq $old;
}
+sub write_toc {
+ my @toc;
+ for (keys %chapter) {
+ push @toc, "$chapter{$_} $_";
+ }
+ open(TOC, ">info/toc")
+ or die "Can't open info/toc for writing: $!";
+ print TOC join("\n", sort @toc);
+ print TOC "\n";
+ close TOC;
+}
+
# Print an integrity error message and exit with code 1
sub error {
my ($error) = @_;