Annotation of OpenXM/misc/texi2dvi, Revision 1.1
1.1 ! takayama 1: #! /bin/sh
! 2: # texi2dvi --- produce DVI (or PDF) files from Texinfo (or LaTeX) sources.
! 3: # $Id: texi2dvi,v 0.43 1999/09/28 19:36:53 karl Exp $
! 4: #
! 5: # Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
! 6: #
! 7: # This program is free software; you can redistribute it and/or modify
! 8: # it under the terms of the GNU General Public License as published by
! 9: # the Free Software Foundation; either version 2, or (at your option)
! 10: # any later version.
! 11: #
! 12: # This program is distributed in the hope that it will be useful,
! 13: # but WITHOUT ANY WARRANTY; without even the implied warranty of
! 14: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 15: # GNU General Public License for more details.
! 16: #
! 17: # You should have received a copy of the GNU General Public License
! 18: # along with this program; if not, you can either send email to this
! 19: # program's maintainer or write to: The Free Software Foundation,
! 20: # Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
! 21: #
! 22: # Original author: Noah Friedman <friedman@gnu.org>.
! 23: #
! 24: # Please send bug reports, etc. to bug-texinfo@gnu.org.
! 25: # If possible, please send a copy of the output of the script called with
! 26: # the `--debug' option when making a bug report.
! 27:
! 28: # This string is expanded by rcs automatically when this file is checked out.
! 29: rcs_revision='$Revision: 0.43 $'
! 30: rcs_version=`set - $rcs_revision; echo $2`
! 31: program=`echo $0 | sed -e 's!.*/!!'`
! 32: version="texi2dvi (GNU Texinfo 4.0) $rcs_version
! 33:
! 34: Copyright (C) 1999 Free Software Foundation, Inc.
! 35: There is NO warranty. You may redistribute this software
! 36: under the terms of the GNU General Public License.
! 37: For more information about these matters, see the files named COPYING."
! 38:
! 39: usage="Usage: $program [OPTION]... FILE...
! 40:
! 41: Run each Texinfo or LaTeX FILE through TeX in turn until all
! 42: cross-references are resolved, building all indices. The directory
! 43: containing each FILE is searched for included files. The suffix of FILE
! 44: is used to determine its language (LaTeX or Texinfo).
! 45:
! 46: Makeinfo is used to perform Texinfo macro expansion before running TeX
! 47: when needed.
! 48:
! 49: Options:
! 50: -@ Use @input instead of \input; for preloaded Texinfo.
! 51: -b, --batch No interaction.
! 52: -c, --clean Remove all auxiliary files.
! 53: -D, --debug Turn on shell debugging (set -x).
! 54: -e, --expand Force macro expansion using makeinfo.
! 55: -I DIR Search DIR for Texinfo files.
! 56: -h, --help Display this help and exit successfully.
! 57: -l, --language=LANG Specify the LANG of FILE: LaTeX or Texinfo.
! 58: -p, --pdf Use pdftex or pdflatex for processing.
! 59: -q, --quiet No output unless errors (implies --batch).
! 60: -s, --silent Same as --quiet.
! 61: -t, --texinfo=CMD Insert CMD after @setfilename in copy of input file.
! 62: Multiple values accumulate.
! 63: -v, --version Display version information and exit successfully.
! 64: -V, --verbose Report on what is done.
! 65:
! 66: The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO,
! 67: TEX (or PDFTEX), and TEXINDEX environment variables are used to run
! 68: those commands, if they are set.
! 69:
! 70: Email bug reports to <bug-texinfo@gnu.org>,
! 71: general questions and discussion to <help-texinfo@gnu.org>."
! 72:
! 73: # Initialize variables for option overriding and otherwise.
! 74: # Don't use `unset' since old bourne shells don't have this command.
! 75: # Instead, assign them an empty value.
! 76: escape='\'
! 77: batch=false # eval for batch mode
! 78: clean=
! 79: debug=
! 80: expand= # t for expansion via makeinfo
! 81: oformat=dvi
! 82: set_language=
! 83: miincludes= # makeinfo include path
! 84: textra=
! 85: tmpdir=${TMPDIR:-/tmp}/t2d$$ # avoid collisions on 8.3 filesystems.
! 86: txincludes= # TEXINPUTS extensions
! 87: txiprereq=19990129 # minimum texinfo.tex version to have macro expansion
! 88: quiet= # by default let the tools' message be displayed
! 89: verbose=false # echo for verbose mode
! 90:
! 91: orig_pwd=`pwd`
! 92:
! 93: # Systems which define $COMSPEC or $ComSpec use semicolons to separate
! 94: # directories in TEXINPUTS.
! 95: if test -n "$COMSPEC$ComSpec"; then
! 96: path_sep=";"
! 97: else
! 98: path_sep=":"
! 99: fi
! 100:
! 101: # Save this so we can construct a new TEXINPUTS path for each file.
! 102: TEXINPUTS_orig="$TEXINPUTS"
! 103: # Unfortunately makeindex does not read TEXINPUTS.
! 104: INDEXSTYLE_orig="$INDEXSTYLE"
! 105: export TEXINPUTS INDEXSTYLE
! 106:
! 107: # Push a token among the arguments that will be used to notice when we
! 108: # ended options/arguments parsing.
! 109: # Use "set dummy ...; shift" rather than 'set - ..." because on
! 110: # Solaris set - turns off set -x (but keeps set -e).
! 111: # Use ${1+"$@"} rather than "$@" because Digital Unix and Ultrix 4.3
! 112: # still expand "$@" to a single argument (the empty string) rather
! 113: # than nothing at all.
! 114: arg_sep="$$--$$"
! 115: set dummy ${1+"$@"} "$arg_sep"; shift
! 116:
! 117: #
! 118: # Parse command line arguments.
! 119: while test x"$1" != x"$arg_sep"; do
! 120:
! 121: # Handle --option=value by splitting apart and putting back on argv.
! 122: case "$1" in
! 123: --*=*)
! 124: opt=`echo "$1" | sed -e 's/=.*//'`
! 125: val=`echo "$1" | sed -e 's/[^=]*=//'`
! 126: shift
! 127: set dummy "$opt" "$val" ${1+"$@"}; shift
! 128: ;;
! 129: esac
! 130:
! 131: # This recognizes --quark as --quiet. So what.
! 132: case "$1" in
! 133: -@ ) escape=@;;
! 134: # Silently and without documentation accept -b and --b[atch] as synonyms.
! 135: -b | --b*) batch=eval;;
! 136: -q | -s | --q* | --s*) quiet=t; batch=eval;;
! 137: -c | --c*) clean=t;;
! 138: -D | --d*) debug=t;;
! 139: -e | --e*) expand=t;;
! 140: -h | --h*) echo "$usage"; exit 0;;
! 141: -I | --I*)
! 142: shift
! 143: miincludes="$miincludes -I $1"
! 144: txincludes="$txincludes$path_sep$1"
! 145: ;;
! 146: -l | --l*) shift; set_language=$1;;
! 147: -p | --p*) oformat=pdf;;
! 148: -t | --t*) shift; textra="$textra\\
! 149: $1";;
! 150: -v | --vers*) echo "$version"; exit 0;;
! 151: -V | --verb*) verbose=echo;;
! 152: --) # What remains are not options.
! 153: shift
! 154: while test x"$1" != x"$arg_sep"; do
! 155: set dummy ${1+"$@"} "$1"; shift
! 156: shift
! 157: done
! 158: break;;
! 159: -*)
! 160: echo "$0: Unknown or ambiguous option \`$1'." >&2
! 161: echo "$0: Try \`--help' for more information." >&2
! 162: exit 1;;
! 163: *) set dummy ${1+"$@"} "$1"; shift;;
! 164: esac
! 165: shift
! 166: done
! 167: # Pop the token
! 168: shift
! 169:
! 170: # Interpret remaining command line args as filenames.
! 171: if test $# = 0; then
! 172: echo "$0: Missing file arguments." >&2
! 173: echo "$0: Try \`--help' for more information." >&2
! 174: exit 2
! 175: fi
! 176:
! 177: # Prepare the temporary directory. Remove it at exit, unless debugging.
! 178: if test -z "$debug"; then
! 179: trap "cd / && rm -rf $tmpdir" 0 1 2 15
! 180: fi
! 181:
! 182: # Create the temporary directory with strict rights
! 183: (umask 077 && mkdir $tmpdir) || exit 1
! 184:
! 185: # Prepare the tools we might need. This may be extra work in some
! 186: # cases, but improves the readibility of the script.
! 187: utildir=$tmpdir/utils
! 188: mkdir $utildir || exit 1
! 189:
! 190: # A sed script that preprocesses Texinfo sources in order to keep the
! 191: # iftex sections only. We want to remove non TeX sections, and
! 192: # comment (with `@c texi2dvi') TeX sections so that makeinfo does not
! 193: # try to parse them. Nevertheless, while commenting TeX sections,
! 194: # don't comment @macro/@end macro so that makeinfo does propagate
! 195: # them. Unfortunately makeinfo --iftex --no-ifhtml --no-ifinfo
! 196: # doesn't work well enough (yet) to use that, so work around with sed.
! 197: comment_iftex_sed=$utildir/comment.sed
! 198: cat <<EOF >$comment_iftex_sed
! 199: /^@tex/,/^@end tex/{
! 200: s/^/@c texi2dvi/
! 201: }
! 202: /^@iftex/,/^@end iftex/{
! 203: s/^/@c texi2dvi/
! 204: /^@c texi2dvi@macro/,/^@c texi2dvi@end macro/{
! 205: s/^@c texi2dvi//
! 206: }
! 207: }
! 208: /^@html/,/^@end html/d
! 209: /^@ifhtml/,/^@end ifhtml/d
! 210: /^@ifnottex/,/^@end ifnottex/d
! 211: /^@ifinfo/,/^@end ifinfo/{
! 212: /^@node/p
! 213: /^@menu/,/^@end menu/p
! 214: d
! 215: }
! 216: EOF
! 217: # Uncommenting is simple: Remove any leading `@c texi2dvi'.
! 218: uncomment_iftex_sed=$utildir/uncomment.sed
! 219: cat <<EOF >$uncomment_iftex_sed
! 220: s/^@c texi2dvi//
! 221: EOF
! 222:
! 223: # A shell script that computes the list of xref files.
! 224: # Takes the filename (without extension) of which we look for xref
! 225: # files as argument. The index files must be reported last.
! 226: get_xref_files=$utildir/get_xref.sh
! 227: cat <<\EOF >$get_xref_files
! 228: #! /bin/sh
! 229:
! 230: # Get list of xref files (indexes, tables and lists).
! 231: # Find all files having root filename with a two-letter extension,
! 232: # saves the ones that are really Texinfo-related files. .?o? catches
! 233: # LaTeX tables and lists.
! 234: for this_file in "$1".?o? "$1".aux "$1".?? "$1".idx; do
! 235: # If file is empty, skip it.
! 236: test -s "$this_file" || continue
! 237: # If the file is not suitable to be an index or xref file, don't
! 238: # process it. The file can't be if its first character is not a
! 239: # backslash or single quote.
! 240: first_character=`sed -n '1s/^\(.\).*$/\1/p;q' $this_file`
! 241: if test "x$first_character" = "x\\" \
! 242: || test "x$first_character" = "x'"; then
! 243: xref_files="$xref_files ./$this_file"
! 244: fi
! 245: done
! 246: echo "$xref_files"
! 247: EOF
! 248: chmod 500 $get_xref_files
! 249:
! 250: # File descriptor usage:
! 251: # 0 standard input
! 252: # 1 standard output (--verbose messages)
! 253: # 2 standard error
! 254: # 3 some systems may open it to /dev/tty
! 255: # 4 used on the Kubota Titan
! 256: # 5 tools output (turned off by --quiet)
! 257:
! 258: # Tools' output. If quiet, discard, else redirect to the message flow.
! 259: if test "$quiet" = t; then
! 260: exec 5>/dev/null
! 261: else
! 262: exec 5>&1
! 263: fi
! 264:
! 265: # Enable tracing
! 266: test "$debug" = t && set -x
! 267:
! 268: #
! 269: # TeXify files.
! 270:
! 271: for command_line_filename in ${1+"$@"}; do
! 272: $verbose "Processing $command_line_filename ..."
! 273:
! 274: # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex),
! 275: # prepend `./' in order to avoid that the tools take it as an option.
! 276: echo "$command_line_filename" | egrep '^(/|[A-z]:/)' >/dev/null \
! 277: || command_line_filename="./$command_line_filename"
! 278:
! 279: # See if the file exists. If it doesn't we're in trouble since, even
! 280: # though the user may be able to reenter a valid filename at the tex
! 281: # prompt (assuming they're attending the terminal), this script won't
! 282: # be able to find the right xref files and so forth.
! 283: if test ! -r "$command_line_filename"; then
! 284: echo "$0: Could not read $command_line_filename, skipping." >&2
! 285: continue
! 286: fi
! 287:
! 288: # Get the name of the current directory. We want the full path
! 289: # because in clean mode we are in tmp, in which case a relative
! 290: # path has no meaning.
! 291: filename_dir=`echo $command_line_filename | sed 's!/[^/]*$!!;s!^$!.!'`
! 292: filename_dir=`cd "$filename_dir" >/dev/null && pwd`
! 293:
! 294: # Strip directory part but leave extension.
! 295: filename_ext=`basename "$command_line_filename"`
! 296: # Strip extension.
! 297: filename_noext=`echo "$filename_ext" | sed 's/\.[^.]*$//'`
! 298: ext=`echo "$filename_ext" | sed 's/^.*\.//'`
! 299:
! 300: # _src. Use same basename since we want to generate aux files with
! 301: # the same basename as the manual. If --expand, then output the
! 302: # macro-expanded file to here, else copy the original file.
! 303: tmpdir_src=$tmpdir/src
! 304: filename_src=$tmpdir_src/$filename_noext.$ext
! 305:
! 306: # _xtr. The file with the user's extra commands.
! 307: tmpdir_xtr=$tmpdir/xtr
! 308: filename_xtr=$tmpdir_xtr/$filename_noext.$ext
! 309:
! 310: # _bak. Copies of the previous xref files (another round is run if
! 311: # they differ from the new one).
! 312: tmpdir_bak=$tmpdir/bak
! 313:
! 314: # Make all those directories and give up if we can't succeed.
! 315: mkdir $tmpdir_src $tmpdir_xtr $tmpdir_bak || exit 1
! 316:
! 317: # Source file might include additional sources. Put `.' and
! 318: # directory where source file(s) reside in TEXINPUTS before anything
! 319: # else. `.' goes first to ensure that any old .aux, .cps,
! 320: # etc. files in ${directory} don't get used in preference to fresher
! 321: # files in `.'. Include orig_pwd in case we are in clean mode, where
! 322: # we've cd'd to a temp directory.
! 323: common=".$path_sep$orig_pwd$path_sep$filename_dir$path_sep$txincludes$path_sep"
! 324: TEXINPUTS="$common$TEXINPUTS_orig"
! 325: INDEXSTYLE="$common$INDEXSTYLE_orig"
! 326:
! 327: # If the user explicitly specified the language, use that.
! 328: # Otherwise, if the first line is \input texinfo, assume it's texinfo.
! 329: # Otherwise, guess from the file extension.
! 330: if test -n "$set_language"; then
! 331: language=$set_language
! 332: elif sed 1q "$command_line_filename" | fgrep 'input texinfo' >/dev/null; then
! 333: language=texinfo
! 334: else
! 335: language=
! 336: fi
! 337:
! 338: # Get the type of the file (latex or texinfo) from the given language
! 339: # we just guessed, or from the file extension if not set yet.
! 340: case ${language:-$filename_ext} in
! 341: [lL]a[tT]e[xX] | *.ltx | *.tex)
! 342: # Assume a LaTeX file. LaTeX needs bibtex and uses latex for
! 343: # compilation. No makeinfo.
! 344: bibtex=${BIBTEX:-jbibtex}
! 345: makeinfo= # no point in running makeinfo on latex source.
! 346: texindex=${MAKEINDEX:-mendex}
! 347: if test $oformat = dvi; then
! 348: tex=${LATEX:-platex}
! 349: else
! 350: tex=${PDFLATEX:-pdflatex}
! 351: fi
! 352: ;;
! 353:
! 354: *)
! 355: # Assume a Texinfo file. Texinfo files need makeinfo, texindex and tex.
! 356: bibtex=
! 357: texindex=${TEXINDEX:-jtexindex}
! 358: if test $oformat = dvi; then
! 359: tex=${TEX:-ptex}
! 360: else
! 361: tex=${PDFTEX:-pdftex}
! 362: fi
! 363: # Unless required by the user, makeinfo expansion is wanted only
! 364: # if texinfo.tex is too old.
! 365: if test "$expand" = t; then
! 366: makeinfo=${MAKEINFO:-jmakeinfo}
! 367: else
! 368: # Check if texinfo.tex performs macro expansion by looking for
! 369: # its version. The version is a date of the form YEAR-MO-DA.
! 370: # We don't need to use [0-9] to match the digits since anyway
! 371: # the comparison with $txiprereq, a number, will fail with non
! 372: # digits.
! 373: txiversion_tex=txiversion.tex
! 374: echo '\input texinfo.tex @bye' >$tmpdir/$txiversion_tex
! 375: # Run in the tmpdir to avoid leaving files.
! 376: eval `cd $tmpdir >/dev/null \
! 377: && $tex $txiversion_tex 2>/dev/null \
! 378: | sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p'`
! 379: $verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..."
! 380: if test "$txiprereq" -le "$txiversion" >/dev/null 2>&1; then
! 381: makeinfo=
! 382: else
! 383: makeinfo=${MAKEINFO:-jmakeinfo}
! 384: fi
! 385: # As long as we had to run TeX, offer the user this convenience
! 386: if test "$txiformat" = Texinfo; then
! 387: escape=@
! 388: fi
! 389: fi
! 390: ;;
! 391: esac
! 392:
! 393: # Expand macro commands in the original source file using Makeinfo.
! 394: # Always use `end' footnote style, since the `separate' style
! 395: # generates different output (arguably this is a bug in -E).
! 396: # Discard main info output, the user asked to run TeX, not makeinfo.
! 397: if test -n "$makeinfo"; then
! 398: $verbose "Macro-expanding $command_line_filename to $filename_src ..."
! 399: sed -f $comment_iftex_sed "$command_line_filename" \
! 400: | $makeinfo --footnote-style=end -I "$filename_dir" $miincludes \
! 401: -o /dev/null --macro-expand=- \
! 402: | sed -f $uncomment_iftex_sed >"$filename_src"
! 403: filename_input=$filename_src
! 404: fi
! 405:
! 406: # If makeinfo failed (or was not even run), use the original file as input.
! 407: if test $? -ne 0 \
! 408: || test ! -r "$filename_src"; then
! 409: $verbose "Reverting to $command_line_filename ..."
! 410: filename_input=$filename_dir/$filename_ext
! 411: fi
! 412:
! 413: # Used most commonly for @finalout, @smallbook, etc.
! 414: if test -n "$textra"; then
! 415: $verbose "Inserting extra commands: $textra"
! 416: sed '/^@setfilename/a\
! 417: '"$textra" "$filename_input" >$filename_xtr
! 418: filename_input=$filename_xtr
! 419: fi
! 420:
! 421: # If clean mode was specified, then move to the temporary directory.
! 422: if test "$clean" = t; then
! 423: $verbose "cd $tmpdir_src"
! 424: cd "$tmpdir_src" || exit 1
! 425: fi
! 426:
! 427: while :; do # will break out of loop below
! 428: orig_xref_files=`$get_xref_files "$filename_noext"`
! 429:
! 430: # Save copies of originals for later comparison.
! 431: if test -n "$orig_xref_files"; then
! 432: $verbose "Backing up xref files: `echo $orig_xref_files | sed 's|\./||g'`"
! 433: cp $orig_xref_files $tmpdir_bak
! 434: fi
! 435:
! 436: # Run bibtex on current file.
! 437: # - If its input (AUX) exists.
! 438: # - If AUX contains both `\bibdata' and `\bibstyle'.
! 439: # - If some citations are missing (LOG contains `Citation').
! 440: # or the LOG complains of a missing .bbl
! 441: #
! 442: # We run bibtex first, because I can see reasons for the indexes
! 443: # to change after bibtex is run, but I see no reason for the
! 444: # converse.
! 445: #
! 446: # Don't try to be too smart. Running bibtex only if the bbl file
! 447: # exists and is older than the LaTeX file is wrong, since the
! 448: # document might include files that have changed. Because there
! 449: # can be several AUX (if there are \include's), but a single LOG,
! 450: # looking for missing citations in LOG is easier, though we take
! 451: # the risk to match false messages.
! 452: if test -n "$bibtex" \
! 453: && test -r "$filename_noext.aux" \
! 454: && test -r "$filename_noext.log" \
! 455: && (grep '^\\bibdata[{]' "$filename_noext.aux" \
! 456: && grep '^\\bibstyle[{]' "$filename_noext.aux" \
! 457: && (grep 'Warning:.*Citation.*undefined' "$filename_noext.log" \
! 458: || grep 'No file .*\.bbl\.' "$filename_noext.log")) \
! 459: >/dev/null 2>&1; \
! 460: then
! 461: $verbose "Running $bibtex $filename_noext ..."
! 462: if $bibtex "$filename_noext" >&5; then :; else
! 463: echo "$0: $bibtex exited with bad status, quitting." >&2
! 464: exit 1
! 465: fi
! 466: fi
! 467:
! 468: # What we'll run texindex on -- exclude non-index files.
! 469: # Since we know index files are last, it is correct to remove everything
! 470: # before .aux and .?o?.
! 471: index_files=`echo "$orig_xref_files" \
! 472: | sed "s!.*\.aux!!g;
! 473: s!./$filename_noext\..o.!!g;
! 474: s/^[ ]*//;s/[ ]*$//"`
! 475: # Run texindex (or makeindex) on current index files. If they
! 476: # already exist, and after running TeX a first time the index
! 477: # files don't change, then there's no reason to run TeX again.
! 478: # But we won't know that if the index files are out of date or
! 479: # nonexistent.
! 480: if test -n "$texindex" && test -n "$index_files"; then
! 481: $verbose "Running $texindex $index_files ..."
! 482: if $texindex $index_files 2>&5 1>&2; then :; else
! 483: echo "$0: $texindex exited with bad status, quitting." >&2
! 484: exit 1
! 485: fi
! 486: fi
! 487:
! 488: # Finally, run TeX.
! 489: # Prevent $ESCAPE from being interpreted by the shell if it happens
! 490: # to be `/'.
! 491: $batch tex_args="\\${escape}nonstopmode\ \\${escape}input"
! 492: $verbose "Running $cmd ..."
! 493: cmd="$tex $tex_args $filename_input"
! 494: if $cmd >&5; then :; else
! 495: echo "$0: $tex exited with bad status, quitting." >&2
! 496: echo "$0: see $filename_noext.log for errors." >&2
! 497: test "$clean" = t \
! 498: && cp "$filename_noext.log" "$orig_pwd"
! 499: exit 1
! 500: fi
! 501:
! 502:
! 503: # Decide if looping again is needed.
! 504: finished=t
! 505:
! 506: # LaTeX (and the package changebar) report in the LOG file if it
! 507: # should be rerun. This is needed for files included from
! 508: # subdirs, since texi2dvi does not try to compare xref files in
! 509: # subdirs. Performing xref files test is still good since LaTeX
! 510: # does not report changes in xref files.
! 511: if fgrep "Rerun to get" "$filename_noext.log" >/dev/null 2>&1; then
! 512: finished=
! 513: fi
! 514:
! 515: # Check if xref files changed.
! 516: new_xref_files=`$get_xref_files "$filename_noext"`
! 517: $verbose "Original xref files = `echo $orig_xref_files | sed 's|\./||g'`"
! 518: $verbose "New xref files = `echo $new_xref_files | sed 's|\./||g'`"
! 519:
! 520: # If old and new lists don't at least have the same file list,
! 521: # then one file or another has definitely changed.
! 522: test "x$orig_xref_files" != "x$new_xref_files" && finished=
! 523:
! 524: # File list is the same. We must compare each file until we find
! 525: # a difference.
! 526: if test -n "$finished"; then
! 527: for this_file in $new_xref_files; do
! 528: $verbose "Comparing xref file `echo $this_file | sed 's|\./||g'` ..."
! 529: # cmp -s returns nonzero exit status if files differ.
! 530: if cmp -s "$this_file" "$tmpdir_bak/$this_file"; then :; else
! 531: # We only need to keep comparing until we find one that
! 532: # differs, because we'll have to run texindex & tex again no
! 533: # matter how many more there might be.
! 534: finished=
! 535: $verbose "xref file `echo $this_file | sed 's|\./||g'` differed ..."
! 536: test "$debug" = t && diff -c "$tmpdir_bak/$this_file" "$this_file"
! 537: break
! 538: fi
! 539: done
! 540: fi
! 541:
! 542: # If finished, exit the loop, else rerun the loop.
! 543: test -n "$finished" && break
! 544: done
! 545:
! 546: # If we were in clean mode, compilation was in a tmp directory.
! 547: # Copy the DVI (or PDF) file into the directory where the compilation
! 548: # has been done. (The temp dir is about to get removed anyway.)
! 549: # We also return to the original directory so that
! 550: # - the next file is processed in correct conditions
! 551: # - the temporary file can be removed
! 552: if test -n "$clean"; then
! 553: $verbose "Copying $oformat file from `pwd` to $orig_pwd"
! 554: cp -p "./$filename_noext.$oformat" "$orig_pwd"
! 555: cd / # in case $orig_pwd is on a different drive (for DOS)
! 556: cd $orig_pwd || exit 1
! 557: fi
! 558:
! 559: # Remove temporary files.
! 560: if test "x$debug" = "x"; then
! 561: $verbose "Removing $tmpdir_src $tmpdir_xtr $tmpdir_bak ..."
! 562: cd /
! 563: rm -rf $tmpdir_src $tmpdir_xtr $tmpdir_bak
! 564: fi
! 565: done
! 566:
! 567: $verbose "$0 done."
! 568: exit 0 # exit successfully, not however we ended the loop.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>