/usr/bin/dvihp is in texlive-binaries 2013.20130729.30972-2build3.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | #!/bin/sh
# $Id: dvihp,v 1.3 1996/12/03 19:53:56 karl Exp karl $
# Run dvicopy, then dvilj[k]. Originally written by Karl Berry.
# Public domain.
# Try to accept arguments a la dvips, from Thomas Esser.
: ${DVILJ=dvilj4} # the dvilj variant to run
: ${SPOOL=lpr} # used to print an LJ file
: ${TMPDIR=${TEMP-${TMP-/tmp}}} # for the dvicopy output
tmpdir="${TMPDIR}"/dvihp$$
(umask 077; mkdir "$tmpdir") \
|| { echo "cannot create directory \`$tmpdir'."; exit 1; }
trap '
cd "${TMPDIR}"
test -d "$tmpdir" && { rm -f "$tmpdir"/*; rmdir "$tmpdir"; }
exit 0
' 0 1 2 3 6 7 13 15
rcs_revision='$Revision: 1.3 $'
version=`set - $rcs_revision; echo $2`
usage="Usage: `basename $0` [OPTIONS] [DVIFILE[.dvi]].
Translate the given DVIFILE to Hewlett-Packard PCL by calling dvicopy
and then \$DVILJ (dvilj4 by default).
In the absence of other options, pipe the PCL to \$SPOOL (lpr by default).
Options are recognized from dvips where possible:
-A print odd pages
-B print even pages
-d # set debug bits to # (see documentation)
-D # set resolution to #
-f run as filter
-l # don't print pages after #
-m manual feed
-n # print # pages
-O #,# set/change paper offset to #,# mm
-o s output to s instead of spooling
-p # don't print pages before #
-Ps pass directly to lpr
-v verbose operation
-x # set magnification to #
Other options are passed to the dvilj program.
Email bug reports to tex-k@tug.org."
if test $# -eq 0; then
echo "`basename $0`: Missing argument(s)." >&2
echo "Try \``basename $0` --help' for more information." >&2
exit 0
fi
unset infile opt output
output_opt=-e
verbose=false
while test $# -gt 0; do
case "$1" in
-help|--help) echo "$usage"; exit 0;;
-version|--version)
echo "`basename $0` (Dviljk 2.6) $version"
echo "There is NO warranty. This script is public domain."
exit 0;;
-A) opt="$opt -D1";; # -A => -D1 (odd pages)
-B) opt="$opt -D2";; # -B -> -D2 (even pages)
-d) shift; opt="$opt --D$1";; # -d => --D (debug)
-d*) opt="$opt `echo $1 | sed s/d/-D/`";;
-D) shift; opt="$opt -R$1";; # -D => -R (resolution)
-f) infile=; output=-;; # -f (run as filter)
-l) shift; opt="$opt -t$1";; # -l => -t (ending page)
-l*) opt="$opt `echo $1 | sed s/l/t/`";;
-m) opt="$opt -A";; # -m => -A (manual feed)
-n) shift; opt="$opt -p$1";; # -n => -p (page count)
-n*) opt="$opt `echo $1 | sed s/^-n/-p/`";;
-o) if test $# -eq 1; then # -o (output file)
# No remaining args, output to foo.lj.
output=`basename $infile .dvi`.lj
else shift; output="$1"; fi;;
-o*) output="`echo $1 | sed 's/^-o//'`";;
-O) shift; x=`echo $1 | sed 's/,.*//'` # -O => -x, -y (page offsets)
y=`echo $1 | sed 's/.*,//'`; opt="$opt -x$x -y$y";;
-O*) temp="`echo $1 | sed 's/^-O//'`"
x=`echo $temp | sed 's/,.*//'`
y=`echo $temp | sed 's/.*,//'`;
opt="$opt -x$x -y$y";;
-p) shift; opt="$opt -f$1";; # -p => -f (starting page)
-p*) opt="$opt `echo $1 | sed s/p/f/`";;
-P) shift; output=; spool_opt="-P$1";; # -Pprinter
-P*) output=; spool_opt="$1";;
-v) verbose=true; opt="$opt -v";;
-x) shift; opt="$opt -m$1";; # -x => -m (magnification)
-x*) opt="$opt `echo $1 | sed s/x/m/`";;
--) shift; infile="$1"; break;; # -- => end of options
-*) opt="$opt $1";; # pass other options through
*) infile="$1";;
esac
shift
done
# Make sure the filenames are unique on MS-DOS
vfless_dvi="$tmpdir"/dvi$$.vf
# Expand VF references.
# If $infile is null, this will read standard input.
# dvilj can't read from a pipe, so always write to a file.
$verbose && echo "Running dvicopy $infile >$vfless_dvi" >&2
if dvicopy $infile >"$vfless_dvi"; then :; else
echo "$0: dvicopy $infile failed." >&2
exit 1
fi
$verbose && ls -l "$vfless_dvi" >&2
if test -z "$output"; then
output=- # output to stdout
# Doing this pipe means the true exit status might get lost, but it
# seems worth it to avoid the temporary file. (Bad enough to have one.)
maybe_spool_cmd="| $SPOOL $spool_opt"
else
maybe_spool_cmd=
fi
# Translate DVI to LJ.
cmd="$DVILJ $opt $output_opt$output \"$vfless_dvi\" $maybe_spool_cmd"
$verbose && echo "Running $cmd" >&2
if eval $cmd; then :; else
echo "$0: $DVILJ failed." >&2
exit 2
fi
|