105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#!/bin/sh -e 205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# gendocs.sh -- generate a GNU manual in many formats. This script is 305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# mentioned in maintain.texi. See the help message below for usage details. 405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 505436638acc7c010349a69c3395f1a57c642dc62Ying Wangscriptversion=2012-10-27.11 605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Free Software Foundation, Inc. 905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# 1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# This program is free software: you can redistribute it and/or modify 1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# it under the terms of the GNU General Public License as published by 1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# the Free Software Foundation; either version 3 of the License, or 1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# (at your option) any later version. 1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# 1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# This program is distributed in the hope that it will be useful, 1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# but WITHOUT ANY WARRANTY; without even the implied warranty of 1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# GNU General Public License for more details. 1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# 2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# You should have received a copy of the GNU General Public License 2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# along with this program. If not, see <http://www.gnu.org/licenses/>. 2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# 2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Original author: Mohit Agarwal. 2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Send bug reports and any other correspondence to bug-texinfo@gnu.org. 2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# 2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# The latest version of this script, and the companion template, is 2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# available from Texinfo CVS: 2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs.sh 2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs_template 3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# 3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# An up-to-date copy is also maintained in Gnulib (gnu.org/software/gnulib). 3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# TODO: 3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# - image importation was only implemented for HTML generated by 3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# makeinfo. But it should be simple enough to adjust. 3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# - images are not imported in the source tarball. All the needed 3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# formats (PDF, PNG, etc.) should be included. 3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 3905436638acc7c010349a69c3395f1a57c642dc62Ying Wangprog=`basename "$0"` 4005436638acc7c010349a69c3395f1a57c642dc62Ying Wangsrcdir=`pwd` 4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 4205436638acc7c010349a69c3395f1a57c642dc62Ying Wangscripturl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs.sh" 4305436638acc7c010349a69c3395f1a57c642dc62Ying Wangtemplateurl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs_template" 4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang: ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="} 4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang: ${MAKEINFO="makeinfo"} 4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang: ${TEXI2DVI="texi2dvi -t @finalout"} 4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang: ${DOCBOOK2HTML="docbook2html"} 4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang: ${DOCBOOK2PDF="docbook2pdf"} 5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang: ${DOCBOOK2TXT="docbook2txt"} 5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang: ${GENDOCS_TEMPLATE_DIR="."} 5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang: ${PERL='perl'} 5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang: ${TEXI2HTML="texi2html"} 5405436638acc7c010349a69c3395f1a57c642dc62Ying Wangunset CDPATH 5505436638acc7c010349a69c3395f1a57c642dc62Ying Wangunset use_texi2html 5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 5705436638acc7c010349a69c3395f1a57c642dc62Ying Wangversion="gendocs.sh $scriptversion 5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 5905436638acc7c010349a69c3395f1a57c642dc62Ying WangCopyright 2012 Free Software Foundation, Inc. 6005436638acc7c010349a69c3395f1a57c642dc62Ying WangThere is NO warranty. You may redistribute this software 6105436638acc7c010349a69c3395f1a57c642dc62Ying Wangunder the terms of the GNU General Public License. 6205436638acc7c010349a69c3395f1a57c642dc62Ying WangFor more information about these matters, see the files named COPYING." 6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 6405436638acc7c010349a69c3395f1a57c642dc62Ying Wangusage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE 6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 6605436638acc7c010349a69c3395f1a57c642dc62Ying WangGenerate output in various formats from PACKAGE.texinfo (or .texi or 6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang.txi) source. See the GNU Maintainers document for a more extensive 6805436638acc7c010349a69c3395f1a57c642dc62Ying Wangdiscussion: 6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang http://www.gnu.org/prep/maintain_toc.html 7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 7105436638acc7c010349a69c3395f1a57c642dc62Ying WangOptions: 7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang -s SRCFILE read Texinfo from SRCFILE, instead of PACKAGE.{texinfo|texi|txi} 7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang -o OUTDIR write files into OUTDIR, instead of manual/. 7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang -I DIR append DIR to the Texinfo search path. 7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang --email ADR use ADR as contact in generated web pages. 7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang --docbook convert through DocBook too (xml, txt, html, pdf). 7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang --html ARG pass indicated ARG to makeinfo or texi2html for HTML targets. 7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang --info ARG pass indicated ARG to makeinfo for Info, instead of --no-split. 7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang --texi2html use texi2html to generate HTML targets. 8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang --help display this help and exit successfully. 8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang --version display version information and exit successfully. 8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 8305436638acc7c010349a69c3395f1a57c642dc62Ying WangSimple example: $prog --email bug-gnu-emacs@gnu.org emacs \"GNU Emacs Manual\" 8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 8505436638acc7c010349a69c3395f1a57c642dc62Ying WangTypical sequence: 8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang cd PACKAGESOURCE/doc 8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang wget \"$scripturl\" 8805436638acc7c010349a69c3395f1a57c642dc62Ying Wang wget \"$templateurl\" 8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang $prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\" 9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 9105436638acc7c010349a69c3395f1a57c642dc62Ying WangOutput will be in a new subdirectory \"manual\" (by default; 9205436638acc7c010349a69c3395f1a57c642dc62Ying Wanguse -o OUTDIR to override). Move all the new files into your web CVS 9305436638acc7c010349a69c3395f1a57c642dc62Ying Wangtree, as explained in the Web Pages node of maintain.texi. 9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 9505436638acc7c010349a69c3395f1a57c642dc62Ying WangPlease do use the --email ADDRESS option to specify your bug-reporting 9605436638acc7c010349a69c3395f1a57c642dc62Ying Wangaddress in the generated HTML pages. 9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 9805436638acc7c010349a69c3395f1a57c642dc62Ying WangMANUAL-TITLE is included as part of the HTML <title> of the overall 9905436638acc7c010349a69c3395f1a57c642dc62Ying Wangmanual/index.html file. It should include the name of the package being 10005436638acc7c010349a69c3395f1a57c642dc62Ying Wangdocumented. manual/index.html is created by substitution from the file 10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang$GENDOCS_TEMPLATE_DIR/gendocs_template. (Feel free to modify the 10205436638acc7c010349a69c3395f1a57c642dc62Ying Wanggeneric template for your own purposes.) 10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 10405436638acc7c010349a69c3395f1a57c642dc62Ying WangIf you have several manuals, you'll need to run this script several 10505436638acc7c010349a69c3395f1a57c642dc62Ying Wangtimes with different MANUAL values, specifying a different output 10605436638acc7c010349a69c3395f1a57c642dc62Ying Wangdirectory with -o each time. Then write (by hand) an overall index.html 10705436638acc7c010349a69c3395f1a57c642dc62Ying Wangwith links to them all. 10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 10905436638acc7c010349a69c3395f1a57c642dc62Ying WangIf a manual's Texinfo sources are spread across several directories, 11005436638acc7c010349a69c3395f1a57c642dc62Ying Wangfirst copy or symlink all Texinfo sources into a single directory. 11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang(Part of the script's work is to make a tar.gz of the sources.) 11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 11305436638acc7c010349a69c3395f1a57c642dc62Ying WangAs implied above, by default monolithic Info files are generated. 11405436638acc7c010349a69c3395f1a57c642dc62Ying WangIf you want split Info, or other Info options, use --info to override. 11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 11605436638acc7c010349a69c3395f1a57c642dc62Ying WangYou can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML, 11705436638acc7c010349a69c3395f1a57c642dc62Ying Wangand PERL to control the programs that get executed, and 11805436638acc7c010349a69c3395f1a57c642dc62Ying WangGENDOCS_TEMPLATE_DIR to control where the gendocs_template file is 11905436638acc7c010349a69c3395f1a57c642dc62Ying Wanglooked for. With --docbook, the environment variables DOCBOOK2HTML, 12005436638acc7c010349a69c3395f1a57c642dc62Ying WangDOCBOOK2PDF, and DOCBOOK2TXT are also respected. 12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 12205436638acc7c010349a69c3395f1a57c642dc62Ying WangBy default, makeinfo and texi2dvi are run in the default (English) 12305436638acc7c010349a69c3395f1a57c642dc62Ying Wanglocale, since that's the language of most Texinfo manuals. If you 12405436638acc7c010349a69c3395f1a57c642dc62Ying Wanghappen to have a non-English manual and non-English web site, see the 12505436638acc7c010349a69c3395f1a57c642dc62Ying WangSETLANG setting in the source. 12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 12705436638acc7c010349a69c3395f1a57c642dc62Ying WangEmail bug reports or enhancement requests to bug-texinfo@gnu.org. 12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang" 12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 13005436638acc7c010349a69c3395f1a57c642dc62Ying WangMANUAL_TITLE= 13105436638acc7c010349a69c3395f1a57c642dc62Ying WangPACKAGE= 13205436638acc7c010349a69c3395f1a57c642dc62Ying WangEMAIL=webmasters@gnu.org # please override with --email 13305436638acc7c010349a69c3395f1a57c642dc62Ying Wangcommonarg= # Options passed to all the tools (-I dir). 13405436638acc7c010349a69c3395f1a57c642dc62Ying Wangdirs= # -I's directories. 13505436638acc7c010349a69c3395f1a57c642dc62Ying Wanghtmlarg= 13605436638acc7c010349a69c3395f1a57c642dc62Ying Wanginfoarg=--no-split 13705436638acc7c010349a69c3395f1a57c642dc62Ying Wangoutdir=manual 13805436638acc7c010349a69c3395f1a57c642dc62Ying Wangsrcfile= 13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 14005436638acc7c010349a69c3395f1a57c642dc62Ying Wangwhile test $# -gt 0; do 14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang case $1 in 14205436638acc7c010349a69c3395f1a57c642dc62Ying Wang --email) shift; EMAIL=$1;; 14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang --help) echo "$usage"; exit 0;; 14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang --version) echo "$version"; exit 0;; 14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang -s) shift; srcfile=$1;; 14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang -o) shift; outdir=$1;; 14705436638acc7c010349a69c3395f1a57c642dc62Ying Wang -I) shift; commonarg="$commonarg -I '$1'"; dirs="$dirs $1";; 14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang --docbook) docbook=yes;; 14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang --html) shift; htmlarg=$1;; 15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang --info) shift; infoarg=$1;; 15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang --texi2html) use_texi2html=1;; 15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang -*) 15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "$0: Unknown option \`$1'." >&2 15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "$0: Try \`--help' for more information." >&2 15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang exit 1;; 15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang *) 15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if test -z "$PACKAGE"; then 15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang PACKAGE=$1 15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang elif test -z "$MANUAL_TITLE"; then 16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang MANUAL_TITLE=$1 16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "$0: extra non-option argument \`$1'." >&2 16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang exit 1 16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang fi;; 16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang esac 16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang shift 16705436638acc7c010349a69c3395f1a57c642dc62Ying Wangdone 16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# For most of the following, the base name is just $PACKAGE 17005436638acc7c010349a69c3395f1a57c642dc62Ying Wangbase=$PACKAGE 17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 17205436638acc7c010349a69c3395f1a57c642dc62Ying Wangif test -n "$srcfile"; then 17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang # but here, we use the basename of $srcfile 17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang base=`basename "$srcfile"` 17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang case $base in 17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang *.txi|*.texi|*.texinfo) base=`echo "$base"|sed 's/\.[texinfo]*$//'`;; 17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang esac 17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang PACKAGE=$base 17905436638acc7c010349a69c3395f1a57c642dc62Ying Wangelif test -s "$srcdir/$PACKAGE.texinfo"; then 18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang srcfile=$srcdir/$PACKAGE.texinfo 18105436638acc7c010349a69c3395f1a57c642dc62Ying Wangelif test -s "$srcdir/$PACKAGE.texi"; then 18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang srcfile=$srcdir/$PACKAGE.texi 18305436638acc7c010349a69c3395f1a57c642dc62Ying Wangelif test -s "$srcdir/$PACKAGE.txi"; then 18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang srcfile=$srcdir/$PACKAGE.txi 18505436638acc7c010349a69c3395f1a57c642dc62Ying Wangelse 18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "$0: cannot find .texinfo or .texi or .txi for $PACKAGE in $srcdir." >&2 18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang exit 1 18805436638acc7c010349a69c3395f1a57c642dc62Ying Wangfi 18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 19005436638acc7c010349a69c3395f1a57c642dc62Ying Wangif test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then 19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "$0: cannot read $GENDOCS_TEMPLATE_DIR/gendocs_template." >&2 19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "$0: it is available from $templateurl." >&2 19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang exit 1 19405436638acc7c010349a69c3395f1a57c642dc62Ying Wangfi 19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Function to return size of $1 in something resembling kilobytes. 19705436638acc7c010349a69c3395f1a57c642dc62Ying Wangcalcsize() 19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang{ 19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang size=`ls -ksl $1 | awk '{print $1}'` 20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo $size 20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang} 20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# copy_images OUTDIR HTML-FILE... 20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ------------------------------- 20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Copy all the images needed by the HTML-FILEs into OUTDIR. Look 20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# for them in the -I directories. 20705436638acc7c010349a69c3395f1a57c642dc62Ying Wangcopy_images() 20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang{ 20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang local odir 21005436638acc7c010349a69c3395f1a57c642dc62Ying Wang odir=$1 21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang shift 21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang $PERL -n -e " 21305436638acc7c010349a69c3395f1a57c642dc62Ying WangBEGIN { 21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang \$me = '$prog'; 21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang \$odir = '$odir'; 21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang @dirs = qw($dirs); 21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang} 21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang" -e ' 21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/<img src="(.*?)"/g && ++$need{$1}; 22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 22105436638acc7c010349a69c3395f1a57c642dc62Ying WangEND { 22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang #print "$me: @{[keys %need]}\n"; # for debugging, show images found. 22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang FILE: for my $f (keys %need) { 22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang for my $d (@dirs) { 22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (-f "$d/$f") { 22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang use File::Basename; 22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang my $dest = dirname ("$odir/$f"); 22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang # 22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang use File::Path; 23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang -d $dest || mkpath ($dest) 23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang || die "$me: cannot mkdir $dest: $!\n"; 23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang # 23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang use File::Copy; 23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang copy ("$d/$f", $dest) 23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang || die "$me: cannot copy $d/$f to $dest: $!\n"; 23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang next FILE; 23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang die "$me: $ARGV: cannot find image $f\n"; 24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang} 24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang' -- "$@" || exit 1 24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang} 24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 24505436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase $outdir in 24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang /*) abs_outdir=$outdir;; 24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang *) abs_outdir=$srcdir/$outdir;; 24805436638acc7c010349a69c3395f1a57c642dc62Ying Wangesac 24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 25005436638acc7c010349a69c3395f1a57c642dc62Ying Wangecho "Generating output formats for $srcfile" 25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 25205436638acc7c010349a69c3395f1a57c642dc62Ying Wangcmd="$SETLANG $MAKEINFO -o $PACKAGE.info $commonarg $infoarg \"$srcfile\"" 25305436638acc7c010349a69c3395f1a57c642dc62Ying Wangecho "Generating info file(s)... ($cmd)" 25405436638acc7c010349a69c3395f1a57c642dc62Ying Wangeval "$cmd" 25505436638acc7c010349a69c3395f1a57c642dc62Ying Wangmkdir -p "$outdir/" 25605436638acc7c010349a69c3395f1a57c642dc62Ying Wangtar czf "$outdir/$PACKAGE.info.tar.gz" $PACKAGE.info* 25705436638acc7c010349a69c3395f1a57c642dc62Ying Wanginfo_tgz_size=`calcsize "$outdir/$PACKAGE.info.tar.gz"` 25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# do not mv the info files, there's no point in having them available 25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# separately on the web. 26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 26105436638acc7c010349a69c3395f1a57c642dc62Ying Wangcmd="$SETLANG $TEXI2DVI $commonarg \"$srcfile\"" 26205436638acc7c010349a69c3395f1a57c642dc62Ying Wangecho "Generating dvi ... ($cmd)" 26305436638acc7c010349a69c3395f1a57c642dc62Ying Wangeval "$cmd" 26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# compress/finish dvi: 26605436638acc7c010349a69c3395f1a57c642dc62Ying Wanggzip -f -9 $PACKAGE.dvi 26705436638acc7c010349a69c3395f1a57c642dc62Ying Wangdvi_gz_size=`calcsize $PACKAGE.dvi.gz` 26805436638acc7c010349a69c3395f1a57c642dc62Ying Wangmv $PACKAGE.dvi.gz "$outdir/" 26905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 27005436638acc7c010349a69c3395f1a57c642dc62Ying Wangcmd="$SETLANG $TEXI2DVI --pdf $commonarg \"$srcfile\"" 27105436638acc7c010349a69c3395f1a57c642dc62Ying Wangecho "Generating pdf ... ($cmd)" 27205436638acc7c010349a69c3395f1a57c642dc62Ying Wangeval "$cmd" 27305436638acc7c010349a69c3395f1a57c642dc62Ying Wangpdf_size=`calcsize $PACKAGE.pdf` 27405436638acc7c010349a69c3395f1a57c642dc62Ying Wangmv $PACKAGE.pdf "$outdir/" 27505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 27605436638acc7c010349a69c3395f1a57c642dc62Ying Wangopt="-o $PACKAGE.txt --no-split --no-headers $commonarg" 27705436638acc7c010349a69c3395f1a57c642dc62Ying Wangcmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" 27805436638acc7c010349a69c3395f1a57c642dc62Ying Wangecho "Generating ASCII... ($cmd)" 27905436638acc7c010349a69c3395f1a57c642dc62Ying Wangeval "$cmd" 28005436638acc7c010349a69c3395f1a57c642dc62Ying Wangascii_size=`calcsize $PACKAGE.txt` 28105436638acc7c010349a69c3395f1a57c642dc62Ying Wanggzip -f -9 -c $PACKAGE.txt >"$outdir/$PACKAGE.txt.gz" 28205436638acc7c010349a69c3395f1a57c642dc62Ying Wangascii_gz_size=`calcsize "$outdir/$PACKAGE.txt.gz"` 28305436638acc7c010349a69c3395f1a57c642dc62Ying Wangmv $PACKAGE.txt "$outdir/" 28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 28505436638acc7c010349a69c3395f1a57c642dc62Ying Wanghtml_split() 28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{ 28705436638acc7c010349a69c3395f1a57c642dc62Ying Wang opt="--split=$1 $commonarg $htmlarg --node-files" 28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\"" 28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "Generating html by $1... ($cmd)" 29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang eval "$cmd" 29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang split_html_dir=$PACKAGE.html 29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang ( 29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang cd ${split_html_dir} || exit 1 29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang ln -sf ${PACKAGE}.html index.html 29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang tar -czf "$abs_outdir/${PACKAGE}.html_$1.tar.gz" -- *.html 29605436638acc7c010349a69c3395f1a57c642dc62Ying Wang ) 29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang eval html_$1_tgz_size=`calcsize "$outdir/${PACKAGE}.html_$1.tar.gz"` 29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang rm -f "$outdir"/html_$1/*.html 29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang mkdir -p "$outdir/html_$1/" 30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang mv ${split_html_dir}/*.html "$outdir/html_$1/" 30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang rmdir ${split_html_dir} 30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang} 30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 30405436638acc7c010349a69c3395f1a57c642dc62Ying Wangif test -z "$use_texi2html"; then 30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang opt="--no-split --html -o $PACKAGE.html $commonarg $htmlarg" 30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" 30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "Generating monolithic html... ($cmd)" 30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang rm -rf $PACKAGE.html # in case a directory is left over 30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang eval "$cmd" 31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang html_mono_size=`calcsize $PACKAGE.html` 31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz" 31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"` 31305436638acc7c010349a69c3395f1a57c642dc62Ying Wang copy_images "$outdir/" $PACKAGE.html 31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang mv $PACKAGE.html "$outdir/" 31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang opt="--html -o $PACKAGE.html $commonarg $htmlarg" 31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" 31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "Generating html by node... ($cmd)" 31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang eval "$cmd" 32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang split_html_dir=$PACKAGE.html 32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang copy_images $split_html_dir/ $split_html_dir/*.html 32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang ( 32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang cd $split_html_dir || exit 1 32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang tar -czf "$abs_outdir/$PACKAGE.html_node.tar.gz" -- * 32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang ) 32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang html_node_tgz_size=`calcsize "$outdir/$PACKAGE.html_node.tar.gz"` 32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang rm -rf "$outdir/html_node/" 32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang mv $split_html_dir "$outdir/html_node/" 32905436638acc7c010349a69c3395f1a57c642dc62Ying Wangelse 33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang opt="--output $PACKAGE.html $commonarg $htmlarg" 33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang cmd="$SETLANG $TEXI2HTML $opt \"$srcfile\"" 33205436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "Generating monolithic html... ($cmd)" 33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang rm -rf $PACKAGE.html # in case a directory is left over 33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang eval "$cmd" 33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang html_mono_size=`calcsize $PACKAGE.html` 33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz" 33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"` 33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang mv $PACKAGE.html "$outdir/" 33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang html_split node 34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang html_split chapter 34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang html_split section 34305436638acc7c010349a69c3395f1a57c642dc62Ying Wangfi 34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 34505436638acc7c010349a69c3395f1a57c642dc62Ying Wangecho Making .tar.gz for sources... 34605436638acc7c010349a69c3395f1a57c642dc62Ying Wangd=`dirname $srcfile` 34705436638acc7c010349a69c3395f1a57c642dc62Ying Wang( 34805436638acc7c010349a69c3395f1a57c642dc62Ying Wang cd "$d" 34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang srcfiles=`ls *.texinfo *.texi *.txi *.eps 2>/dev/null` || true 35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang tar cvzfh "$abs_outdir/$PACKAGE.texi.tar.gz" $srcfiles 35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang) 35205436638acc7c010349a69c3395f1a57c642dc62Ying Wangtexi_tgz_size=`calcsize "$outdir/$PACKAGE.texi.tar.gz"` 35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 35405436638acc7c010349a69c3395f1a57c642dc62Ying Wangif test -n "$docbook"; then 35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang opt="-o - --docbook $commonarg" 35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang cmd="$SETLANG $MAKEINFO $opt \"$srcfile\" >${srcdir}/$PACKAGE-db.xml" 35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "Generating docbook XML... ($cmd)" 35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang eval "$cmd" 35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang docbook_xml_size=`calcsize $PACKAGE-db.xml` 36005436638acc7c010349a69c3395f1a57c642dc62Ying Wang gzip -f -9 -c $PACKAGE-db.xml >"$outdir/$PACKAGE-db.xml.gz" 36105436638acc7c010349a69c3395f1a57c642dc62Ying Wang docbook_xml_gz_size=`calcsize "$outdir/$PACKAGE-db.xml.gz"` 36205436638acc7c010349a69c3395f1a57c642dc62Ying Wang mv $PACKAGE-db.xml "$outdir/" 36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang split_html_db_dir=html_node_db 36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang opt="$commonarg -o $split_html_db_dir" 36605436638acc7c010349a69c3395f1a57c642dc62Ying Wang cmd="$DOCBOOK2HTML $opt \"${outdir}/$PACKAGE-db.xml\"" 36705436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "Generating docbook HTML... ($cmd)" 36805436638acc7c010349a69c3395f1a57c642dc62Ying Wang eval "$cmd" 36905436638acc7c010349a69c3395f1a57c642dc62Ying Wang ( 37005436638acc7c010349a69c3395f1a57c642dc62Ying Wang cd ${split_html_db_dir} || exit 1 37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang tar -czf "$abs_outdir/${PACKAGE}.html_node_db.tar.gz" -- *.html 37205436638acc7c010349a69c3395f1a57c642dc62Ying Wang ) 37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang html_node_db_tgz_size=`calcsize "$outdir/${PACKAGE}.html_node_db.tar.gz"` 37405436638acc7c010349a69c3395f1a57c642dc62Ying Wang rm -f "$outdir"/html_node_db/*.html 37505436638acc7c010349a69c3395f1a57c642dc62Ying Wang mkdir -p "$outdir/html_node_db" 37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang mv ${split_html_db_dir}/*.html "$outdir/html_node_db/" 37705436638acc7c010349a69c3395f1a57c642dc62Ying Wang rmdir ${split_html_db_dir} 37805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 37905436638acc7c010349a69c3395f1a57c642dc62Ying Wang cmd="$DOCBOOK2TXT \"${outdir}/$PACKAGE-db.xml\"" 38005436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "Generating docbook ASCII... ($cmd)" 38105436638acc7c010349a69c3395f1a57c642dc62Ying Wang eval "$cmd" 38205436638acc7c010349a69c3395f1a57c642dc62Ying Wang docbook_ascii_size=`calcsize $PACKAGE-db.txt` 38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang mv $PACKAGE-db.txt "$outdir/" 38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang cmd="$DOCBOOK2PDF \"${outdir}/$PACKAGE-db.xml\"" 38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang echo "Generating docbook PDF... ($cmd)" 38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang eval "$cmd" 38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang docbook_pdf_size=`calcsize $PACKAGE-db.pdf` 38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang mv $PACKAGE-db.pdf "$outdir/" 39005436638acc7c010349a69c3395f1a57c642dc62Ying Wangfi 39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 39205436638acc7c010349a69c3395f1a57c642dc62Ying Wangecho "Writing index file..." 39305436638acc7c010349a69c3395f1a57c642dc62Ying Wangif test -z "$use_texi2html"; then 39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang CONDS="/%%IF *HTML_SECTION%%/,/%%ENDIF *HTML_SECTION%%/d;\ 39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /%%IF *HTML_CHAPTER%%/,/%%ENDIF *HTML_CHAPTER%%/d" 39605436638acc7c010349a69c3395f1a57c642dc62Ying Wangelse 39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang CONDS="/%%ENDIF.*%%/d;/%%IF *HTML_SECTION%%/d;/%%IF *HTML_CHAPTER%%/d" 39805436638acc7c010349a69c3395f1a57c642dc62Ying Wangfi 39905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 40005436638acc7c010349a69c3395f1a57c642dc62Ying Wangcurdate=`$SETLANG date '+%B %d, %Y'` 40105436638acc7c010349a69c3395f1a57c642dc62Ying Wangsed \ 40205436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%TITLE%%!$MANUAL_TITLE!g" \ 40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%EMAIL%%!$EMAIL!g" \ 40405436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%PACKAGE%%!$PACKAGE!g" \ 40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%DATE%%!$curdate!g" \ 40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%HTML_MONO_SIZE%%!$html_mono_size!g" \ 40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%HTML_MONO_GZ_SIZE%%!$html_mono_gz_size!g" \ 40805436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%HTML_NODE_TGZ_SIZE%%!$html_node_tgz_size!g" \ 40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%HTML_SECTION_TGZ_SIZE%%!$html_section_tgz_size!g" \ 41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%HTML_CHAPTER_TGZ_SIZE%%!$html_chapter_tgz_size!g" \ 41105436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \ 41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \ 41305436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%PDF_SIZE%%!$pdf_size!g" \ 41405436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%ASCII_SIZE%%!$ascii_size!g" \ 41505436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \ 41605436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \ 41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \ 41805436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \ 41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \ 42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \ 42105436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \ 42205436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s,%%SCRIPTURL%%,$scripturl,g" \ 42305436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "s!%%SCRIPTNAME%%!$prog!g" \ 42405436638acc7c010349a69c3395f1a57c642dc62Ying Wang -e "$CONDS" \ 42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang$GENDOCS_TEMPLATE_DIR/gendocs_template >"$outdir/index.html" 42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 42705436638acc7c010349a69c3395f1a57c642dc62Ying Wangecho "Done, see $outdir/ subdirectory for new files." 42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 42905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Local variables: 43005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# eval: (add-hook 'write-file-hooks 'time-stamp) 43105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# time-stamp-start: "scriptversion=" 43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# time-stamp-format: "%:y-%02m-%02d.%02H" 43305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# time-stamp-end: "$" 43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# End: 435