Thread (1 message) 1 message, 1 author, 2016-06-15

Re: [install info (using perl) 1/2] Add support for an info version of the user manual

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:28
Subsystem: documentation, the rest · Maintainers: Jonathan Corbet, Linus Torvalds

Possibly related (same subject, not in this thread)

Junio C Hamano [off-list ref] writes:
quoted
This part worries me.
Aside from possible portability issue of multi-line script,
there is another slight problem I am not sure if it is worth
fixing.  If you do not have docbook2x-texi installed, nobody
notices that resulting $*.texi was a garbage and an almost empty
git.info is generated.
How about doing something like this instead?

---

 Documentation/Makefile      |   13 ++++---------
 Documentation/fix-texi.perl |   15 +++++++++++++++
 2 files changed, 19 insertions(+), 9 deletions(-)
 create mode 100755 Documentation/fix-texi.perl
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 56d12aa..8c33729 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -154,16 +154,11 @@ user-manual.html: user-manual.xml
 	xsltproc $(XSLTOPTS) -o $@ $(XSLT) $<
 
 git.info: user-manual.xml
-	$(RM) $@ $*.texi
-	$(DOCBOOK2X_TEXI) user-manual.xml --to-stdout | \
-	perl -ne 'if (/^\@setfilename/) {$$_="\@setfilename git.info\
-"} elsif (/^\@direntry/) {print "\@dircategory Development\
-\@direntry\
-* Git: (git).           A fast distributed revision control system\
-\@end direntry\
-"} print unless (/^\@direntry/ .. /^\@end direntry/)' > $*.texi
+	$(RM) $@ $*.texi $*.texi+
+	$(DOCBOOK2X_TEXI) user-manual.xml --to-stdout >$*.texi+
+	perl fix-texi.perl <$*.texi+ >$*.texi
 	$(MAKEINFO) --no-split $*.texi
-	$(RM) $*.texi
+	$(RM) $*.texi $*.texi+
 
 howto-index.txt: howto-index.sh $(wildcard howto/*.txt)
 	$(RM) $@+ $@
diff --git a/Documentation/fix-texi.perl b/Documentation/fix-texi.perl
new file mode 100755
index 0000000..ff7d78f
--- /dev/null
+++ b/Documentation/fix-texi.perl
@@ -0,0 +1,15 @@
+#!/usr/bin/perl -w
+
+while (<>) {
+	if (/^\@setfilename/) {
+		$_ = "\@setfilename git.info\n";
+	} elsif (/^\@direntry/) {
+		print '@dircategory Development
+@direntry
+* Git: (git).           A fast distributed revision control system
+@end direntry
+';	}
+	unless (/^\@direntry/../^\@end direntry/) {
+		print;
+	}
+}
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help