From 0f7f87bb3edce61705636ab503f6c1b28557c13c Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Sun, 1 Mar 2015 20:50:32 +0000 Subject: 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. --- doc/Config | 405 +++++++++++------------------------------- doc/Makefile.am | 8 +- doc/gdbm.texinfo | 6 +- doc/gendocs.sh | 490 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/gendocs_template | 10 +- src/bucket.c | 2 +- src/findkey.c | 3 +- 7 files changed, 606 insertions(+), 318 deletions(-) create mode 100755 doc/gendocs.sh diff --git a/doc/Config b/doc/Config index 1038868..babb84c 100644 --- a/doc/Config +++ b/doc/Config @@ -1,5 +1,5 @@ -# Texi2html configuration for Gdbm documentation. -*- perl -*- -# Copyright (C) 2011 Sergey Poznyakoff +# Texi2any configuration for gdbm documentation. -*- perl -*- +# Copyright (C) 2011, 2015 Sergey Poznyakoff # # Gdbm is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,353 +13,152 @@ # # You should have received a copy of the GNU General Public License # along with Gdbm. If not, see . +use strict; -$top_html_dir="/software/gdbm"; -$graphics_dir="$top_html_dir/graphics"; - -## texi2html configuration - +my $top_html_dir="/software/gdbm"; +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="\ - \ +set_from_init_file('EXTRA_HEAD', "\ + \ \ \ - "; + "); -$AFTER_BODY_OPEN=qq{ +set_from_init_file('AFTER_BODY_OPEN', qq{ -}; - -$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 = "

+ $program_string +

"; + } + my $pre_body_close = $self->get_conf('PRE_BODY_CLOSE'); + $pre_body_close = '' if (!defined($pre_body_close)); + return " +
+$program_text + +$pre_body_close +
+ + + +"; +} -@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/

//; - $text =~ s/<\/p>//; - if ($row_macro eq 'headitem') +set_from_init_file('ACTIVE_ICONS', { - return '' . $text . ''; - } - return '' . $text . ''; -} - -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 ' (split by node)'; - } elsif ($SPLIT eq 'section') { + } elsif ($split eq 'section') { return ' (split by section)'; - } elsif ($SPLIT eq 'chapter') { + } elsif ($split eq 'chapter') { return ' (split by chapter)'; } } sub gray_document_title($$) { - my $fh = shift; - my $vertical = shift; + my $self = shift; + my $direction = shift; my $status = gray_split_status(); - print $fh qq{} . $Texi2HTML::THISDOC{title} . $status . ":\n"; -} -sub gray_node_ref($$) -{ - my $fh = shift; - my $vertical = shift; - print $fh qq{Node:}; + return q{} . $self->{title_string} . '' .$status . q{:}; } sub gray_sec_ref($$) { - my $fh = shift; - my $vertical = shift; - print $fh qq{Section:}; + return q{Section:}; } sub gray_chap_ref($$) { - my $fh = shift; - my $vertical = shift; - print $fh qq{Chapter:}; -} - -sub gray_doc_ref($$) -{ - my $fh = shift; - my $vertical = shift; - print $fh qq{Doc:}; -} - -sub gray_print_navigation -{ - my $fh = shift; - my $buttons = shift; - my $vertical = shift; - my $spacing = 1; - my $class="nav"; - - print $fh qq{\n}; - - print $fh "" unless $vertical; - for my $button (@$buttons) - { - if ($button =~ /^\@class=(.*)/) { - $class = "$class $1"; - next; - } - print $fh "\n" if $vertical; - print $fh qq{\n"; - print $fh "\n" if $vertical; - $class = "nav"; - } - print $fh "" unless $vertical; - print $fh "\n"; -} - -sub gray_print_head_navigation($$) -{ - my $fh = shift; - my $buttons = shift; - - return if ($SPLIT eq ''); - if ($VERTICAL_HEAD_NAVIGATION) - { - print $fh < - - -EOT - } - main::print_lines($fh, $Texi2HTML::THIS_HEADER); - &$print_navigation($fh, $buttons, $VERTICAL_HEAD_NAVIGATION); - if ($VERTICAL_HEAD_NAVIGATION) - { - print $fh < - -EOT - } + return q{Chapter:}; } -sub gray_print_foot_navigation -{ - my $fh = shift; - return if ($SPLIT eq ''); - if ($VERTICAL_HEAD_NAVIGATION) - { - print $fh < - - -EOT - } -} - -sub gray_print_page_foot($) -{ - my $fh = shift; - my $program_string = program_string(); - print $fh < -$program_string -EOT - if (defined($PRE_BODY_CLOSE) && $PRE_BODY_CLOSE) { - print $fh "

$PRE_BODY_CLOSE

"; - } - print $fh < - - - -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 2513f99..8773b75 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,5 +1,5 @@ # This file is part of GDBM. -*- Makefile -*- -# Copyright (C) 2007, 2011, 2014 Free Software Foundation, Inc. +# Copyright (C) 2007, 2011, 2014, 2015 Free Software Foundation, Inc. # # GDBM is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -22,9 +22,9 @@ gdbm_TEXINFOS=\ dist_man_MANS = gdbm.3 gdbm_dump.1 gdbm_load.1 gdbmtool.1 -GENDOCS=gendocs.sh +GENDOCS=$(srcdir)/gendocs.sh -TEXI2DVI=texi2dvi -E +TEXI2DVI=texi2dvi -t '@set $(RENDITION)' # Make sure you set TEXINPUTS. # TEXINPUTS=/usr/share/texmf/pdftex/plain/misc/ is ok for most distributions @@ -33,7 +33,7 @@ manual: TEXINPUTS=$(srcdir):$(top_srcdir)/build-aux:$(TEXINPUTS) \ MAKEINFO="$(MAKEINFO) $(MAKEINFOFLAGS)" \ TEXI2DVI="$(TEXI2DVI) -t @finalout" \ - $(GENDOCS) --texi2html $(PACKAGE) '$(PACKAGE_NAME) manual' + $(GENDOCS) --no-copy-images $(PACKAGE) '$(PACKAGE_NAME) manual' # Checking check-tabs: diff --git a/doc/gdbm.texinfo b/doc/gdbm.texinfo index 201f01c..02b9946 100644 --- a/doc/gdbm.texinfo +++ b/doc/gdbm.texinfo @@ -722,11 +722,11 @@ output file, replacing it if it already exists. @item mode The permissions to use when creating the output file. -See @ifhtml -@uref{http://www.manpagez.com/man/2/open}, +@ifhtml +See @uref{http://www.manpagez.com/man/2/open}, @end ifhtml @ifnothtml -@ref{open,,open a file,open(2), open(2) man page}, +See @ref{open,,open a file,open(2), open(2) man page}, @end ifnothtml for a detailed discussion. @end table 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 . +# +# 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 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 e192d11..7ef414b 100644 --- a/doc/gendocs_template +++ b/doc/gendocs_template @@ -1,6 +1,6 @@ <!-- -*- html -*- --> -<!--#include virtual="inc/pagehdr.html" --> -<!--#include virtual="inc/header.html" --> +<!--#include virtual="inc/pagehdr.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> @@ -11,7 +11,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> @@ -24,7 +24,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> - @@ -47,8 +47,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 - (%%PS_GZ_SIZE%%K characters gzipped)</a>.</li> <li><a href="manual/%%PACKAGE%%.pdf">PDF file (%%PDF_SIZE%%K characters)</a>.</li> <li><a href="manual/%%PACKAGE%%.texi.tar.gz">Texinfo source diff --git a/src/bucket.c b/src/bucket.c index 8bc33f1..c9a951c 100644 --- a/src/bucket.c +++ b/src/bucket.c @@ -46,7 +46,7 @@ _gdbm_new_bucket (GDBM_FILE dbf, hash_bucket *bucket, int bits) /* Find a bucket for DBF that is pointed to by the bucket directory from location DIR_INDEX. The bucket cache is first checked to see if it is already in memory. If not, a bucket may be tossed to read the new - bucket. In any case, the requested bucket is make the "current" bucket + bucket. In any case, the requested bucket becomes the "current" bucket and dbf->bucket points to the correct bucket. */ void diff --git a/src/findkey.c b/src/findkey.c index c2a0653..08e8ebc 100644 --- a/src/findkey.c +++ b/src/findkey.c @@ -75,7 +75,8 @@ _gdbm_read_entry (GDBM_FILE dbf, int elem_loc) return value is the location in the current hash bucket of the KEY's entry. If it is found, a pointer to the data and the key are returned in DPTR. If it is not found, the value -1 is returned. Since find - key computes the hash value of key, that value */ + key computes the hash value of key, that value is returned in + NEW_HASH_VAL. */ int _gdbm_findkey (GDBM_FILE dbf, datum key, char **dptr, int *new_hash_val) { -- cgit v1.2.1