]> git.pond.sub.org Git - empserver/commitdiff
info/toc: New; generated machine-readable table of contents
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 5 Jan 2014 15:34:12 +0000 (16:34 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Mon, 6 Jan 2014 19:50:06 +0000 (20:50 +0100)
Next commit will put it to use.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
Make.mk
info/mksubj.pl

diff --git a/Make.mk b/Make.mk
index bfe62cb6a03605b72a577c1a7e6888a3af4d7337..2fb4bbbbb00224850e0c408120e8a3ed30944e21 100644 (file)
--- a/Make.mk
+++ b/Make.mk
@@ -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
index 614b035b9a958b06ddfbb5e4524aebba764e9d8e..2681463db3d8d1ea89d492c051ed586df3e0b996 100644 (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) = @_;