info/toc: New; generated machine-readable table of contents

Next commit will put it to use.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2014-01-05 16:34:12 +01:00
parent 8a94f2a8ae
commit 0a702949db
2 changed files with 17 additions and 4 deletions

View file

@ -321,15 +321,15 @@ $(libs) $(empth_lib):
# Info formatting
# mksubj.pl reads $(tsrc) and writes $(tsubj). The naive rule
# $(ttop) $(tsubj): $(tsrc)
# mksubj.pl reads $(tsrc) and writes $(tsubj). A naive rule
# $(tsubj): $(tsrc)
# COMMAND
# runs COMMAND once for each target. That's because multiple targets
# in an explicit rule is just a shorthand for one rule per target,
# each with the same prerequisites and commands. Use a stamp file.
$(tsubj): info/stamp-subj ;
$(tsubj) info/toc: info/stamp-subj ;
info/stamp-subj: info/mksubj.pl $(tsrc)
$(call quiet-command,perl $(srcdir)/info/mksubj.pl $(subjects) $(filter %.t, $^),GEN '$(tsubj)')
$(call quiet-command,perl $(srcdir)/info/mksubj.pl $(subjects) $(filter %.t, $^),GEN '$(tsubj) info/toc')
>$@
$(ttop): info/mktop.pl info/subjects.mk

View file

@ -77,6 +77,8 @@ for (keys %Subjects) {
update_subj($_);
}
write_toc();
sub fn2topic {
my ($fn) = @_;
$fn =~ s,.*/([^/]*)\.t$,$1,;
@ -249,6 +251,17 @@ sub same_contents {
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);
close TOC;
}
# Print an integrity error message and exit with code 1
sub error {
my ($error) = @_;