#!/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-2014, Dave Pare, Jeff Bailey, Thomas Ruschak,
# Ken Stevens, Steve McClure, Markus Armbruster
#
# Empire is free software: you can redistribute it and/or modify
use strict;
use warnings;
-use File::stat;
# The chapters, in order
my @Chapters = qw/Introduction Concept Command Server/;
# $filename{TOPIC} is TOPIC's file name
my %filename;
-# $long{TOPIC} is true when TOPIC's page is "long"
-my %long;
+# $lines{TOPIC} is the number of lines in $filename{TOPIC}
+my %lines;
# $chapter{TOPIC} is TOPIC's chapter (first arg to .TH)
my %chapter;
# $desc{TOPIC} is a one line description of TOPIC (second arg to .NA)
}
# Parse an info file
-# Set $filename, $long{TOPIC}, $chapter{TOPIC}, $desc{TOPIC},
+# Set $filename, $lines{TOPIC}, $chapter{TOPIC}, $desc{TOPIC},
# $level{TOPIC}.
# Update %Subjects.
sub parse_file {
($filename) = @_;
my $topic = fn2topic($filename);
- my $st;
-
- $st = stat $filename
- or die "Can't stat $filename: $!";
- $long{$topic} = $st->size > 9999;
open(F, "<$filename")
or die "Can't open $filename: $!";
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;
}
$flags .= "+";
$any_obsolete = 1;
}
- if ($long{$topic}) {
+ if ($lines{$topic} > 300) {
+ # TODO use formatted line count
$flags .= "!";
$any_long = 1;
}
}
$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));