aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2015-03-01 22:45:29 +0200
committerSergey Poznyakoff <gray@gnu.org>2015-03-01 22:45:29 +0200
commit9d4acadce4451683643b72606881d8a5d498c0f1 (patch)
tree6fcc2e6268a4ba4e5aea3566cfac309663752adf /doc
parent1d1ce1410bbee2729e9eee147fd6f6fd7e5f54bd (diff)
downloadvmod-dbrw-9d4acadce4451683643b72606881d8a5d498c0f1.tar.gz
vmod-dbrw-9d4acadce4451683643b72606881d8a5d498c0f1.tar.bz2
Switch to Texinfo 5.0
* doc/Config: Rewrite. * doc/Makefile.am: Use Makeinfo 5 instead of texi2htm * doc/gendocs_template: Ps is not built * imprimatur: Upgrade.
Diffstat (limited to 'doc')
-rw-r--r--doc/Config405
-rw-r--r--doc/Makefile.am11
-rwxr-xr-xdoc/gendocs.sh490
-rw-r--r--doc/gendocs_template8
4 files changed, 600 insertions, 314 deletions
diff --git a/doc/Config b/doc/Config
index 39536fa..7fecce7 100644
--- a/doc/Config
+++ b/doc/Config
@@ -1,5 +1,5 @@
-# Texi2html configuration for Vmod-dbrw documentation. -*- perl -*-
-# Copyright (C) 2012-2014 Sergey Poznyakoff
+# Texi2any configuration for vmod-dbrw documentation. -*- perl -*-
+# Copyright (C) 2012-2014, 2015 Sergey Poznyakoff
#
# Vmod-dbrw is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -13,30 +13,27 @@
#
# You should have received a copy of the GNU General Public License
# along with Vmod-dbrw. If not, see <http://www.gnu.org/licenses/>.
+use strict;
-$top_html_dir="/software/vmod-dbrw";
-$graphics_dir="$top_html_dir/graphics";
-
-## texi2html configuration
-
+my $top_html_dir="/software/vmod-dbrw";
+my $graphics_dir="$top_html_dir/graphics";
+
# Show TOC in place of the @contents directive.
-$INLINE_CONTENTS = 1;
+set_from_init_file('INLINE_CONTENTS', 1);
# Do not show Texinfo menus.
-$SHOW_MENU = 0;
+set_from_init_file('SHOW_MENU', 0);
# Inhibit output of CSS lines in page headers.
-$CSS_LINES='';
-# Print footnotes at the end of each file (if the document is split).
-$SEPARATED_FOOTNOTES = 0;
+set_from_init_file('CSS_LINES', '');
-$BODYTEXT = "";
+set_from_init_file('BODYTEXT', "");
-$EXTRA_HEAD="\
- <link rev=\"made\" href=\"mailto:gray@gnu.org.ua\">\
+set_from_init_file('EXTRA_HEAD', "\
+ <link rev=\"made\" href=\"mailto:gray\@gnu.org.ua\">\
<link rel=\"stylesheet\" type=\"text/css\" href=\"${top_html_dir}/gray.css\">\
<link rel=\"stylesheet\" type=\"text/css\" href=\"${top_html_dir}/texi.css\">\
- <link rel=\"icon\" type=\"image/png\" href=\"/graphics/gnu-head-icon.png\">";
+ <link rel=\"icon\" type=\"image/png\" href=\"/graphics/gnu-head-icon.png\">");
-$AFTER_BODY_OPEN=qq{
+set_from_init_file('AFTER_BODY_OPEN', qq{
<div id="content">
<div id="header">
<!--#include virtual="${top_html_dir}/inc/header.html" -->
@@ -46,323 +43,125 @@ $AFTER_BODY_OPEN=qq{
<li><a class="active" href="${top_html_dir}/manual.html">Documentation</a></li>
</ul>
</div> <!-- header -->
-};
-
-$PRE_BODY_CLOSE="Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.";
-
-$format_map{'multitable'}='table class="multitable"';
+});
-$SMALL_RULE = '';
-$DEFAULT_RULE = '';
-$MIDDLE_RULE = '';
-# This is output at the end of a section.
-$BIG_RULE = '';
-
-# Use navigation icons
-$ICONS = 1;
-%ACTIVE_ICONS =
- (
- 'Top', "$graphics_dir/top.png",
- 'Contents', "$graphics_dir/ctx.png",
- 'Overview', '',
- 'Index', "$graphics_dir/idx.png",
- 'This', '',
- 'Back', "$graphics_dir/left.png",
- 'FastBack', "$graphics_dir/bwd.png",
- 'Prev', "",
- 'Up', "$graphics_dir/up.png",
- 'Next', "$graphics_dir/right.png",
- 'NodeUp', "$graphics_dir/left.png",
- 'NodeNext', "$graphics_dir/up.png",
- 'NodePrev', "$graphics_dir/right.png",
- 'Following', "$graphics_dir/right.png",
- 'Forward', "$graphics_dir/right.png",
- 'FastForward', "$graphics_dir/fwd.png",
- 'About' , '',
- 'First', '',
- 'Last', '',
- ' ', ''
- );
+sub gray_end_file($)
+{
+ my $self = shift;
+ my $program_text = '';
+ if ($self->get_conf('PROGRAM_NAME_IN_FOOTER')) {
+ my $program_string = &{$self->{'format_program_string'}}($self);
+ $program_text = "<p>
+ $program_string
+</p>";
+ }
+ my $pre_body_close = $self->get_conf('PRE_BODY_CLOSE');
+ $pre_body_close = '' if (!defined($pre_body_close));
+ return "</div>
+<div class=\"copyright\">
+$program_text
+
+$pre_body_close
+</div>
+</div>
+</body>
+</html>
+";
+}
-@SECTION_BUTTONS =
- (
- \&gray_document_title,
- \&gray_sec_ref,
- 'Back', 'Forward',
- \&gray_chap_ref, 'FastBack', 'Up', 'FastForward',
- \&gray_doc_ref,
- 'Contents', 'Index',
- ' ','About',
- );
+texinfo_register_formatting_function('end_file', \&gray_end_file);
-@SECTION_FOOTER_BUTTONS = @SECTION_BUTTONS;
-@NODE_FOOTER_BUTTONS = @SECTION_BUTTONS;
+set_from_init_file('PRE_BODY_CLOSE',
+ 'Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.');
-# buttons for misc stuff
-@MISC_BUTTONS = (
- \&gray_document_title,
- 'Contents',
- 'Index',
- ' ',
- 'About'
- );
+# Print generating program name at the bottom of a page.
+set_from_init_file('PROGRAM_NAME_IN_FOOTER',1);
+# Disable horizontal bars
+set_from_init_file('DEFAULT_RULE', '');
+set_from_init_file('BIG_RULE', '');
-$print_section = \&gray_print_section;
-$print_navigation = \&gray_print_navigation;
-$print_head_navigation = \&gray_print_head_navigation;
-$print_foot_navigation = \&gray_print_foot_navigation;
-$print_About = \&gray_print_About;
-$cell = \&gray_multitable_cell;
-$print_page_foot = \&gray_print_page_foot;
+# Turn off footer buttons in section split
+set_from_init_file('SECTION_FOOTER_BUTTONS', undef);
+#set_from_init_file('SECTION_BUTTONS', undef);
+# Turn off navigation bars at the bottom of each section in chapter split mode
+set_from_init_file('HEADERS', undef)
+ if (get_conf('SPLIT') and (get_conf('SPLIT') eq 'chapter'));
+# Use navigation icons
-sub gray_multitable_cell($$)
-{
- my $text = shift;
- my $row_macro = shift;
+set_from_init_file('ICONS', 1);
- $text =~ s/<p>//;
- $text =~ s/<\/p>//;
- if ($row_macro eq 'headitem')
+set_from_init_file('ACTIVE_ICONS',
{
- return '<th>' . $text . '</th>';
- }
- return '<td>' . $text . '</td>';
-}
-
-sub gray_print_About
-{
- return &$print_misc(@_) if (!($SPLIT eq '') or $SECTION_NAVIGATION);
-}
+ 'Top' => "$graphics_dir/top.png",
+ 'Contents' => "$graphics_dir/ctx.png",
+ 'Overview' => '',
+ 'Index' => "$graphics_dir/idx.png",
+ 'This' => '',
+ 'Back' => "$graphics_dir/left.png",
+ 'FastBack' => "$graphics_dir/bwd.png",
+ 'Prev' => "",
+ 'Up' => "$graphics_dir/up.png",
+ 'Next' => "$graphics_dir/right.png",
+ 'NodeUp' => "$graphics_dir/left.png",
+ 'NodeNext' => "$graphics_dir/up.png",
+ 'NodePrev' => "$graphics_dir/right.png",
+ 'Following' => "$graphics_dir/right.png",
+ 'Forward' => "$graphics_dir/right.png",
+ 'FastForward' => "$graphics_dir/fwd.png",
+ 'About' => '',
+ 'First' => '',
+ 'Last' => '',
+ ' ' => ''
+ });
sub gray_split_status()
{
- if ($SPLIT eq '') {
+ my $split = get_conf('SPLIT');
+ if ($split eq '') {
return '';
- } elsif ($SPLIT eq 'node') {
+ } elsif ($split eq 'node') {
return ' <span class="splitstatus">(split by node)</span>';
- } elsif ($SPLIT eq 'section') {
+ } elsif ($split eq 'section') {
return ' <span class="splitstatus">(split by section)</span>';
- } elsif ($SPLIT eq 'chapter') {
+ } elsif ($split eq 'chapter') {
return ' <span class="splitstatus">(split by chapter)</span>';
}
}
sub gray_document_title($$)
{
- my $fh = shift;
- my $vertical = shift;
+ my $self = shift;
+ my $direction = shift;
my $status = gray_split_status();
- print $fh qq{<td class="title">} . $Texi2HTML::THISDOC{title} . $status . ":</td>\n";
-}
-sub gray_node_ref($$)
-{
- my $fh = shift;
- my $vertical = shift;
- print $fh qq{<span class="navtext">Node:</span>};
+ return q{<span class="title">} . $self->{title_string} . '</span>' .$status . q{<span class="title">:</span>};
}
sub gray_sec_ref($$)
{
- my $fh = shift;
- my $vertical = shift;
- print $fh qq{<span class="navtext">Section:</span>};
+ return q{<span class="navtext">Section:</span>};
}
sub gray_chap_ref($$)
{
- my $fh = shift;
- my $vertical = shift;
- print $fh qq{<span class="navtext">Chapter:</span>};
-}
-
-sub gray_doc_ref($$)
-{
- my $fh = shift;
- my $vertical = shift;
- print $fh qq{<span class="navtext">Doc:</span>};
-}
-
-sub gray_print_navigation
-{
- my $fh = shift;
- my $buttons = shift;
- my $vertical = shift;
- my $spacing = 1;
- my $class="nav";
-
- print $fh qq{<table class="nav">\n};
-
- print $fh "<tr>" unless $vertical;
- for my $button (@$buttons)
- {
- if ($button =~ /^\@class=(.*)/) {
- $class = "$class $1";
- next;
- }
- print $fh "<tr>\n" if $vertical;
- print $fh qq{<td class="$class">};
-
- if (ref($button) eq 'CODE')
- {
- &$button($fh, $vertical);
- }
- elsif (ref($button) eq 'SCALAR')
- {
- print $fh "$$button" if defined($$button);
- }
- elsif (ref($button) eq 'ARRAY')
- {
- my $text = $button->[1];
- my $button_href = $button->[0];
- # verify that $button_href is simple text and text is a reference
- if (defined($button_href) and !ref($button_href)
- and defined($text) and (ref($text) eq 'SCALAR') and defined($$text))
- { # use given text
- if ($Texi2HTML::HREF{$button_href})
- {
- print $fh "" .
- &$anchor('',
- $Texi2HTML::HREF{$button_href},
- $$text
- )
- ;
- }
- else
- {
- print $fh $$text;
- }
- }
- }
- elsif ($button eq ' ')
- { # handle space button
- print $fh
- ($ICONS && $ACTIVE_ICONS{' '}) ?
- &$button_icon_img($BUTTONS_NAME{$button}, $ACTIVE_ICONS{' '}) :
- $NAVIGATION_TEXT{' '};
- #next;
- }
- elsif ($Texi2HTML::HREF{$button})
- { # button is active
- my $btitle = $BUTTONS_GOTO{$button} ?
- 'title="' . $BUTTONS_GOTO{$button} . '"' : '';
- if ($ICONS && $ACTIVE_ICONS{$button})
- { # use icon
- print $fh '' .
- &$anchor('',
- $Texi2HTML::HREF{$button},
- &$button_icon_img($BUTTONS_NAME{$button},
- $ACTIVE_ICONS{$button},
- $Texi2HTML::SIMPLE_TEXT{$button}),
- $btitle
- );
- }
- else
- { # use text
- print $fh
- '' .
- &$anchor('',
- $Texi2HTML::HREF{$button},
- $NAVIGATION_TEXT{$button},
- $btitle
- );
- }
- }
- else { # button is passive
- print $fh '<span class="passive">' .
- ($ICONS && $PASSIVE_ICONS{$button} ?
- &$button_icon_img($BUTTONS_NAME{$button},
- $PASSIVE_ICONS{$button},
- $Texi2HTML::SIMPLE_TEXT{$button}) :
-
- $NAVIGATION_TEXT{$button}) . '</span>';
- }
- print $fh "</td>\n";
- print $fh "</tr>\n" if $vertical;
- $class = "nav";
- }
- print $fh "</tr>" unless $vertical;
- print $fh "</table>\n";
-}
-
-sub gray_print_head_navigation($$)
-{
- my $fh = shift;
- my $buttons = shift;
-
- return if ($SPLIT eq '');
- if ($VERTICAL_HEAD_NAVIGATION)
- {
- print $fh <<EOT;
-<table class='nav'>
-<tr>
-<td>
-EOT
- }
- main::print_lines($fh, $Texi2HTML::THIS_HEADER);
- &$print_navigation($fh, $buttons, $VERTICAL_HEAD_NAVIGATION);
- if ($VERTICAL_HEAD_NAVIGATION)
- {
- print $fh <<EOT;
-</td>
-<td>
-EOT
- }
+ return q{<span class="navtext">Chapter:</span>};
}
-sub gray_print_foot_navigation
-{
- my $fh = shift;
- return if ($SPLIT eq '');
- if ($VERTICAL_HEAD_NAVIGATION)
- {
- print $fh <<EOT;
-</td>
-</tr>
-</table>
-EOT
- }
-}
-
-sub gray_print_page_foot($)
-{
- my $fh = shift;
- my $program_string = program_string();
- print $fh <<EOT;
-<div id="copyright">
-$program_string
-EOT
- if (defined($PRE_BODY_CLOSE) && $PRE_BODY_CLOSE) {
- print $fh "<p>$PRE_BODY_CLOSE</p>";
- }
- print $fh <<EOT;
-</div>
-</div> <!-- content -->
-</body>
-</html>
-EOT
-}
-
-sub gray_print_section
-{
- my $fh = shift;
- my $first_in_page = shift;
- my $previous_is_top = shift;
- my $buttons = \@SECTION_BUTTONS;
-
- if ($first_in_page) {
- &$print_head_navigation($fh, $buttons)
- } else {
- main::print_lines($fh, $Texi2HTML::THIS_HEADER);
- }
- my $nw = main::print_lines($fh);
- if (defined $SPLIT
- and ($SPLIT eq 'node')) {
- &$print_foot_navigation($fh);
- print $fh "$SMALL_RULE\n";
- &$print_navigation($fh, \@NODE_FOOTER_BUTTONS) if (!defined($WORDS_IN_PAGE) or (defined ($nw)
- and $nw >= $WORDS_IN_PAGE));
- }
-}
+my @gray_buttons = (\&gray_document_title, ' ',
+ \&gray_sec_ref, 'Back', 'Forward', ' ',
+ \&gray_chap_ref,
+ 'FastBack', ' ', 'Up', ' ', 'FastForward', ' ',
+ 'Contents', 'Index' );
+
+set_from_init_file('SECTION_BUTTONS', \@gray_buttons);
+set_from_init_file('CHAPTER_BUTTONS', \@gray_buttons);
+set_from_init_file('NODE_FOOTER_BUTTONS', \@gray_buttons);
+set_from_init_file('MISC_BUTTONS',
+ [\&gray_document_title,
+ 'Contents',
+ 'Index',
+ ' ',
+ 'About'
+ ]);
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 5c07db9..cf51a2f 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,5 +1,5 @@
# This file is part of vmod-dbrw
-# Copyright (C) 2013-2014 Sergey Poznyakoff
+# Copyright (C) 2013-2015 Sergey Poznyakoff
#
# Vmod-dbrw is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,14 +18,14 @@ dist_man_MANS = vmod-dbrw.3 vmod_dbrw.3
info_TEXINFOS=vmod-dbrw.texi
vmod_dbrw_TEXINFOS=fdl.texi
-EXTRA_DIST = gendocs_template
+EXTRA_DIST = gendocs_template gendocs.sh
clean-local:
rm -rf manual
-GENDOCS=gendocs.sh
+GENDOCS=$(srcdir)/gendocs.sh
-TEXI2DVI=texi2dvi -t '@set $(RENDITION)' -E
+TEXI2DVI=texi2dvi -t '@set $(RENDITION)'
# Make sure you set TEXINPUTS.
# TEXINPUTS=/usr/share/texmf/pdftex/plain/misc/ is ok for most distributions
@@ -34,8 +34,7 @@ manual:
TEXINPUTS=$(srcdir):$(top_srcdir)/build-aux:$(TEXINPUTS) \
MAKEINFO="$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS)" \
TEXI2DVI="$(TEXI2DVI) -t @finalout" \
- TEXI2HTML="texi2html $(AM_MAKEINFOFLAGS)" \
- $(GENDOCS) --texi2html $(PACKAGE) '$(PACKAGE_NAME) manual'
+ $(GENDOCS) --no-copy-images $(PACKAGE) '$(PACKAGE_NAME) manual'
manual.tar.bz2: manual
diff --git a/doc/gendocs.sh b/doc/gendocs.sh
new file mode 100755
index 0000000..8ac3a06
--- /dev/null
+++ b/doc/gendocs.sh
@@ -0,0 +1,490 @@
+#!/bin/sh -e
+# gendocs.sh -- generate a GNU manual in many formats. This script is
+# mentioned in maintain.texi. See the help message below for usage details.
+
+scriptversion=2015-02-28.17
+
+# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
+# Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# Original author: Mohit Agarwal.
+# Send bug reports and any other correspondence to bug-texinfo@gnu.org.
+#
+# The latest version of this script, and the companion template, is
+# available from Texinfo CVS:
+# http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs.sh
+# http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs_template
+#
+# An up-to-date copy is also maintained in Gnulib (gnu.org/software/gnulib).
+
+# TODO:
+# - image importation was only implemented for HTML generated by
+# makeinfo. But it should be simple enough to adjust.
+# - images are not imported in the source tarball. All the needed
+# formats (PDF, PNG, etc.) should be included.
+
+prog=`basename "$0"`
+srcdir=`pwd`
+
+scripturl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs.sh"
+templateurl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs_template"
+
+: ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="}
+: ${MAKEINFO="makeinfo"}
+: ${TEXI2DVI="texi2dvi -t @finalout"}
+: ${DOCBOOK2HTML="docbook2html"}
+: ${DOCBOOK2PDF="docbook2pdf"}
+: ${DOCBOOK2TXT="docbook2txt"}
+: ${GENDOCS_TEMPLATE_DIR="."}
+: ${PERL='perl'}
+: ${TEXI2HTML="texi2html"}
+unset CDPATH
+unset use_texi2html
+
+version="gendocs.sh $scriptversion
+
+Copyright 2013 Free Software Foundation, Inc.
+There is NO warranty. You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING."
+
+usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE
+
+Generate output in various formats from PACKAGE.texinfo (or .texi or
+.txi) source. See the GNU Maintainers document for a more extensive
+discussion:
+ http://www.gnu.org/prep/maintain_toc.html
+
+Options:
+ --email ADR use ADR as contact in generated web pages; always give this.
+
+ -s SRCFILE read Texinfo from SRCFILE, instead of PACKAGE.{texinfo|texi|txi}
+ -o OUTDIR write files into OUTDIR, instead of manual/.
+ -I DIR append DIR to the Texinfo search path.
+ --common ARG pass ARG in all invocations.
+ --html ARG pass ARG to makeinfo or texi2html for HTML targets.
+ --info ARG pass ARG to makeinfo for Info, instead of --no-split.
+ --no-ascii skip generating the plain text output.
+ --no-copy-images
+ don't try to copy images referenced by img HTML tags,
+ --source ARG include ARG in tar archive of sources.
+ --split HOW make split HTML by node, section, chapter; default node.
+
+ --texi2html use texi2html to make HTML target, with all split versions.
+ --docbook convert through DocBook too (xml, txt, html, pdf).
+
+ --help display this help and exit successfully.
+ --version display version information and exit successfully.
+
+Simple example: $prog --email bug-gnu-emacs@gnu.org emacs \"GNU Emacs Manual\"
+
+Typical sequence:
+ cd PACKAGESOURCE/doc
+ wget \"$scripturl\"
+ wget \"$templateurl\"
+ $prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\"
+
+Output will be in a new subdirectory \"manual\" (by default;
+use -o OUTDIR to override). Move all the new files into your web CVS
+tree, as explained in the Web Pages node of maintain.texi.
+
+Please use the --email ADDRESS option so your own bug-reporting
+address will be used in the generated HTML pages.
+
+MANUAL-TITLE is included as part of the HTML <title> of the overall
+manual/index.html file. It should include the name of the package being
+documented. manual/index.html is created by substitution from the file
+$GENDOCS_TEMPLATE_DIR/gendocs_template. (Feel free to modify the
+generic template for your own purposes.)
+
+If you have several manuals, you'll need to run this script several
+times with different MANUAL values, specifying a different output
+directory with -o each time. Then write (by hand) an overall index.html
+with links to them all.
+
+If a manual's Texinfo sources are spread across several directories,
+first copy or symlink all Texinfo sources into a single directory.
+(Part of the script's work is to make a tar.gz of the sources.)
+
+As implied above, by default monolithic Info files are generated.
+If you want split Info, or other Info options, use --info to override.
+
+You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML,
+and PERL to control the programs that get executed, and
+GENDOCS_TEMPLATE_DIR to control where the gendocs_template file is
+looked for. With --docbook, the environment variables DOCBOOK2HTML,
+DOCBOOK2PDF, and DOCBOOK2TXT are also consulted.
+
+By default, makeinfo and texi2dvi are run in the default (English)
+locale, since that's the language of most Texinfo manuals. If you
+happen to have a non-English manual and non-English web site, see the
+SETLANG setting in the source.
+
+Email bug reports or enhancement requests to bug-texinfo@gnu.org.
+"
+
+MANUAL_TITLE=
+PACKAGE=
+EMAIL=webmasters@gnu.org # please override with --email
+commonarg= # passed to all makeinfo/texi2html invcations.
+dirargs= # passed to all tools (-I dir).
+dirs= # -I's directories.
+htmlarg=
+infoarg=--no-split
+generate_ascii=true
+outdir=manual
+source_extra=
+split=default
+srcfile=
+no_copy_images=
+
+while test $# -gt 0; do
+ case $1 in
+ -s) shift; srcfile=$1;;
+ -o) shift; outdir=$1;;
+ -I) shift; dirargs="$dirargs -I '$1'"; dirs="$dirs $1";;
+ --common) shift; commonarg=$1;;
+ --docbook) docbook=yes;;
+ --email) shift; EMAIL=$1;;
+ --html) shift; htmlarg=$1;;
+ --info) shift; infoarg=$1;;
+ --no-ascii) generate_ascii=false;;
+ --source) shift; source_extra=$1;;
+ --split) shift; split=$1;;
+ --texi2html) use_texi2html=1;;
+ --no-copy-images) no_copy_images=1;;
+ --help) echo "$usage"; exit 0;;
+ --version) echo "$version"; exit 0;;
+ -*)
+ echo "$0: Unknown option \`$1'." >&2
+ echo "$0: Try \`--help' for more information." >&2
+ exit 1;;
+ *)
+ if test -z "$PACKAGE"; then
+ PACKAGE=$1
+ elif test -z "$MANUAL_TITLE"; then
+ MANUAL_TITLE=$1
+ else
+ echo "$0: extra non-option argument \`$1'." >&2
+ exit 1
+ fi;;
+ esac
+ shift
+done
+
+# makeinfo uses the dirargs, but texi2dvi doesn't.
+commonarg=" $dirargs $commonarg"
+
+# For most of the following, the base name is just $PACKAGE
+base=$PACKAGE
+
+if test -n "$srcfile"; then
+ # but here, we use the basename of $srcfile
+ base=`basename "$srcfile"`
+ case $base in
+ *.txi|*.texi|*.texinfo) base=`echo "$base"|sed 's/\.[texinfo]*$//'`;;
+ esac
+ PACKAGE=$base
+elif test -s "$srcdir/$PACKAGE.texinfo"; then
+ srcfile=$srcdir/$PACKAGE.texinfo
+elif test -s "$srcdir/$PACKAGE.texi"; then
+ srcfile=$srcdir/$PACKAGE.texi
+elif test -s "$srcdir/$PACKAGE.txi"; then
+ srcfile=$srcdir/$PACKAGE.txi
+else
+ echo "$0: cannot find .texinfo or .texi or .txi for $PACKAGE in $srcdir." >&2
+ exit 1
+fi
+
+if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then
+ echo "$0: cannot read $GENDOCS_TEMPLATE_DIR/gendocs_template." >&2
+ echo "$0: it is available from $templateurl." >&2
+ exit 1
+fi
+
+# Function to return size of $1 in something resembling kilobytes.
+calcsize()
+{
+ size=`ls -ksl $1 | awk '{print $1}'`
+ echo $size
+}
+
+# copy_images OUTDIR HTML-FILE...
+# -------------------------------
+# Copy all the images needed by the HTML-FILEs into OUTDIR. Look
+# for them in the -I directories.
+copy_images()
+{
+ test -n "$no_copy_images" && return
+ local odir
+ odir=$1
+ shift
+ $PERL -n -e "
+BEGIN {
+ \$me = '$prog';
+ \$odir = '$odir';
+ @dirs = qw($dirs);
+}
+" -e '
+/<img src="(.*?)"/g && ++$need{$1};
+
+END {
+ #print "$me: @{[keys %need]}\n"; # for debugging, show images found.
+ FILE: for my $f (keys %need) {
+ for my $d (@dirs) {
+ if (-f "$d/$f") {
+ use File::Basename;
+ my $dest = dirname ("$odir/$f");
+ #
+ use File::Path;
+ -d $dest || mkpath ($dest)
+ || die "$me: cannot mkdir $dest: $!\n";
+ #
+ use File::Copy;
+ copy ("$d/$f", $dest)
+ || die "$me: cannot copy $d/$f to $dest: $!\n";
+ next FILE;
+ }
+ }
+ die "$me: $ARGV: cannot find image $f\n";
+ }
+}
+' -- "$@" || exit 1
+}
+
+case $outdir in
+ /*) abs_outdir=$outdir;;
+ *) abs_outdir=$srcdir/$outdir;;
+esac
+
+echo "Making output for $srcfile"
+echo " in `pwd`"
+mkdir -p "$outdir/"
+
+cmd="$SETLANG $MAKEINFO -o $PACKAGE.info $commonarg $infoarg \"$srcfile\""
+echo "Generating info... ($cmd)"
+rm -f $PACKAGE.info* # get rid of any strays
+eval "$cmd"
+tar czf "$outdir/$PACKAGE.info.tar.gz" $PACKAGE.info*
+ls -l "$outdir/$PACKAGE.info.tar.gz"
+info_tgz_size=`calcsize "$outdir/$PACKAGE.info.tar.gz"`
+# do not mv the info files, there's no point in having them available
+# separately on the web.
+
+cmd="$SETLANG $TEXI2DVI $dirargs \"$srcfile\""
+printf "\nGenerating dvi... ($cmd)\n"
+eval "$cmd"
+# compress/finish dvi:
+gzip -f -9 $PACKAGE.dvi
+dvi_gz_size=`calcsize $PACKAGE.dvi.gz`
+mv $PACKAGE.dvi.gz "$outdir/"
+ls -l "$outdir/$PACKAGE.dvi.gz"
+
+cmd="$SETLANG $TEXI2DVI --pdf $dirargs \"$srcfile\""
+printf "\nGenerating pdf... ($cmd)\n"
+eval "$cmd"
+pdf_size=`calcsize $PACKAGE.pdf`
+mv $PACKAGE.pdf "$outdir/"
+ls -l "$outdir/$PACKAGE.pdf"
+
+if $generate_ascii; then
+ opt="-o $PACKAGE.txt --no-split --no-headers $commonarg"
+ cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
+ printf "\nGenerating ascii... ($cmd)\n"
+ eval "$cmd"
+ ascii_size=`calcsize $PACKAGE.txt`
+ gzip -f -9 -c $PACKAGE.txt >"$outdir/$PACKAGE.txt.gz"
+ ascii_gz_size=`calcsize "$outdir/$PACKAGE.txt.gz"`
+ mv $PACKAGE.txt "$outdir/"
+ ls -l "$outdir/$PACKAGE.txt" "$outdir/$PACKAGE.txt.gz"
+fi
+
+# Split HTML at level $2 using program $1. Used for texi2html.
+html_split()
+{
+ opt="--split=$2 --node-files $commonarg $htmlarg"
+ cmd="$SETLANG $1 --output $PACKAGE.html $opt \"$srcfile\""
+ printf "\nGenerating html by $2... ($cmd)\n"
+ eval "$cmd"
+ split_html_dir=$PACKAGE.html
+ (
+ cd ${split_html_dir} || exit 1
+ if test ! -e index.html; then
+ if test -f ${PACKAGE}.html; then
+ ln -sf ${PACKAGE}.html index.html
+ else
+ echo >&2 "$0: ${split_html_dir}/${PACKAGE}.html does not exist"
+ fi
+ fi
+ tar -czf "$abs_outdir/${PACKAGE}.html_$2.tar.gz" -- *.html
+ )
+ eval html_$2_tgz_size=`calcsize "$outdir/${PACKAGE}.html_$2.tar.gz"`
+ rm -f "$outdir"/html_$2/*.html
+ mkdir -p "$outdir/html_$2/"
+ mv ${split_html_dir}/*.html "$outdir/html_$2/"
+ rmdir ${split_html_dir}
+}
+
+if test -z "$use_texi2html"; then
+ opt="--no-split --html -o $PACKAGE.html $commonarg $htmlarg"
+ cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
+ printf "\nGenerating monolithic html... ($cmd)\n"
+ rm -rf $PACKAGE.html # in case a directory is left over
+ eval "$cmd"
+ html_mono_size=`calcsize $PACKAGE.html`
+ gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz"
+ html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"`
+ copy_images "$outdir/" $PACKAGE.html
+ mv $PACKAGE.html "$outdir/"
+ ls -l "$outdir/$PACKAGE.html" "$outdir/$PACKAGE.html.gz"
+
+ version=`makeinfo --version|sed -n '1s/.* \([0-9][0-9]*\)\.[0-9.]*/\1/p'`
+ case $version in
+ [0-9]*) ;;
+ *) version=4;;
+ esac
+ # Before Texinfo 5.0, makeinfo did not accept a --split=HOW option,
+ # it just always split by node. So if we're splitting by node anyway,
+ # leave it out.
+ if test $version -lt 5 -o "x$split" != xdefault; then
+ split_arg=--split=$split
+ opt="--html -o $PACKAGE.html $split_arg $commonarg $htmlarg"
+ cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
+ printf "\nGenerating html by $split... ($cmd)\n"
+ eval "$cmd"
+ split_html_dir=$PACKAGE.html
+ copy_images $split_html_dir/ $split_html_dir/*.html
+ (
+ cd $split_html_dir || exit 1
+ tar -czf "$abs_outdir/$PACKAGE.html_$split.tar.gz" -- *
+ )
+ eval \
+ html_${split}_tgz_size=`calcsize "$outdir/$PACKAGE.html_$split.tar.gz"`
+ rm -rf "$outdir/html_$split/"
+ mv $split_html_dir "$outdir/html_$split/"
+ du -s "$outdir/html_$split/"
+ ls -l "$outdir/$PACKAGE.html_$split.tar.gz"
+ CONDS="/%%IF *HTML_SECTION%%/,/%%ENDIF *HTML_SECTION%%/d;\
+ /%%IF *HTML_CHAPTER%%/,/%%ENDIF *HTML_CHAPTER%%/d"
+ else
+ html_split "$MAKEINFO --html" node
+ html_split "$MAKEINFO --html" chapter
+ html_split "$MAKEINFO --html" section
+ # should take account of --split here.
+ CONDS="/%%ENDIF.*%%/d;/%%IF *HTML_SECTION%%/d;/%%IF *HTML_CHAPTER%%/d"
+ fi
+else # use texi2html:
+ opt="--output $PACKAGE.html $commonarg $htmlarg"
+ cmd="$SETLANG $TEXI2HTML $opt \"$srcfile\""
+ printf "\nGenerating monolithic html with texi2html... ($cmd)\n"
+ rm -rf $PACKAGE.html # in case a directory is left over
+ eval "$cmd"
+ html_mono_size=`calcsize $PACKAGE.html`
+ gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz"
+ html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"`
+ mv $PACKAGE.html "$outdir/"
+
+ html_split "$TEXI2HTML" node
+ html_split "$TEXI2HTML" chapter
+ html_split "$TEXI2HTML" section
+ CONDS="/%%ENDIF.*%%/d;/%%IF *HTML_SECTION%%/d;/%%IF *HTML_CHAPTER%%/d"
+fi
+
+printf "\nMaking .tar.gz for sources...\n"
+d=`dirname $srcfile`
+(
+ cd "$d"
+ srcfiles=`ls -d *.texinfo *.texi *.txi *.eps $source_extra 2>/dev/null` || true
+ tar czfh "$abs_outdir/$PACKAGE.texi.tar.gz" $srcfiles
+ ls -l "$abs_outdir/$PACKAGE.texi.tar.gz"
+)
+texi_tgz_size=`calcsize "$outdir/$PACKAGE.texi.tar.gz"`
+
+if test -n "$docbook"; then
+ opt="-o - --docbook $commonarg"
+ cmd="$SETLANG $MAKEINFO $opt \"$srcfile\" >${srcdir}/$PACKAGE-db.xml"
+ printf "\nGenerating docbook XML... ($cmd)\n"
+ eval "$cmd"
+ docbook_xml_size=`calcsize $PACKAGE-db.xml`
+ gzip -f -9 -c $PACKAGE-db.xml >"$outdir/$PACKAGE-db.xml.gz"
+ docbook_xml_gz_size=`calcsize "$outdir/$PACKAGE-db.xml.gz"`
+ mv $PACKAGE-db.xml "$outdir/"
+
+ split_html_db_dir=html_node_db
+ opt="$commonarg -o $split_html_db_dir"
+ cmd="$DOCBOOK2HTML $opt \"${outdir}/$PACKAGE-db.xml\""
+ printf "\nGenerating docbook HTML... ($cmd)\n"
+ eval "$cmd"
+ (
+ cd ${split_html_db_dir} || exit 1
+ tar -czf "$abs_outdir/${PACKAGE}.html_node_db.tar.gz" -- *.html
+ )
+ html_node_db_tgz_size=`calcsize "$outdir/${PACKAGE}.html_node_db.tar.gz"`
+ rm -f "$outdir"/html_node_db/*.html
+ mkdir -p "$outdir/html_node_db"
+ mv ${split_html_db_dir}/*.html "$outdir/html_node_db/"
+ rmdir ${split_html_db_dir}
+
+ cmd="$DOCBOOK2TXT \"${outdir}/$PACKAGE-db.xml\""
+ printf "\nGenerating docbook ASCII... ($cmd)\n"
+ eval "$cmd"
+ docbook_ascii_size=`calcsize $PACKAGE-db.txt`
+ mv $PACKAGE-db.txt "$outdir/"
+
+ cmd="$DOCBOOK2PDF \"${outdir}/$PACKAGE-db.xml\""
+ printf "\nGenerating docbook PDF... ($cmd)\n"
+ eval "$cmd"
+ docbook_pdf_size=`calcsize $PACKAGE-db.pdf`
+ mv $PACKAGE-db.pdf "$outdir/"
+fi
+
+printf "\nMaking index file...\n"
+
+curdate=`$SETLANG date '+%B %d, %Y'`
+sed \
+ -e "s!%%TITLE%%!$MANUAL_TITLE!g" \
+ -e "s!%%EMAIL%%!$EMAIL!g" \
+ -e "s!%%PACKAGE%%!$PACKAGE!g" \
+ -e "s!%%DATE%%!$curdate!g" \
+ -e "s!%%HTML_MONO_SIZE%%!$html_mono_size!g" \
+ -e "s!%%HTML_MONO_GZ_SIZE%%!$html_mono_gz_size!g" \
+ -e "s!%%HTML_NODE_TGZ_SIZE%%!$html_node_tgz_size!g" \
+ -e "s!%%HTML_SECTION_TGZ_SIZE%%!$html_section_tgz_size!g" \
+ -e "s!%%HTML_CHAPTER_TGZ_SIZE%%!$html_chapter_tgz_size!g" \
+ -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \
+ -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \
+ -e "s!%%PDF_SIZE%%!$pdf_size!g" \
+ -e "s!%%ASCII_SIZE%%!$ascii_size!g" \
+ -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \
+ -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \
+ -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \
+ -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \
+ -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \
+ -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \
+ -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \
+ -e "s,%%SCRIPTURL%%,$scripturl,g" \
+ -e "s!%%SCRIPTNAME%%!$prog!g" \
+ -e "$CONDS" \
+$GENDOCS_TEMPLATE_DIR/gendocs_template >"$outdir/index.html"
+
+echo "Done, see $outdir/ subdirectory for new files."
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/doc/gendocs_template b/doc/gendocs_template
index a359b11..459a9d3 100644
--- a/doc/gendocs_template
+++ b/doc/gendocs_template
@@ -1,7 +1,7 @@
<!-- -*- html -*- -->
<!--#include virtual="inc/pagehdr.html" -->
<div id="header">
-<!--#include virtual="inc/header.html" -->
+<!--#include virtual="inc/header.html" -->
<ul class='tabs'>
<li><a href="%%PACKAGE%%.html">Main</a></li>
<li><a href="download.html">Downloads</a></li>
@@ -13,7 +13,7 @@
<p>The manual for <b>%%PACKAGE%%</b> is available in the following formats:</p>
<ul>
- <li><a href="manual/%%PACKAGE%%.html">HTML
+ <li><a href="manual/%%PACKAGE%%.html">HTML
(%%HTML_MONO_SIZE%%K bytes)</a> - entirely on one web page.</li>
<li><a href="manual/html_node/index.html">HTML</a> - with one web page per
node.</li>
@@ -26,7 +26,7 @@
chapter.</li>
%%ENDIF HTML_CHAPTER%%
<li><a href="manual/%%PACKAGE%%.html.gz">HTML compressed
- (%%HTML_MONO_GZ_SIZE%%K gzipped characters)</a> - entirely on
+ (%%HTML_MONO_GZ_SIZE%%K gzipped characters)</a> - entirely on
one web page.</li>
<li><a href="manual/%%PACKAGE%%.html_node.tar.gz">HTML compressed
(%%HTML_NODE_TGZ_SIZE%%K gzipped tar file)</a> -
@@ -49,8 +49,6 @@
(%%ASCII_GZ_SIZE%%K gzipped characters)</a>.</li>
<li><a href="manual/%%PACKAGE%%.dvi.gz">TeX dvi file
(%%DVI_GZ_SIZE%%K characters gzipped)</a>.</li>
- <li><a href="manual/%%PACKAGE%%.ps.gz">PostScript file