/usr/bin/dvihp is in texlive-binaries 2017.20170613.44572-8build1.
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 | #!/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=`mktemp -d` \
|| { echo "cannot create directory \`$tmpdir'."; exit 1; }
trap '
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
|