186d7f5d3SJohn Marino#!/bin/sh 286d7f5d3SJohn Marino# 386d7f5d3SJohn Marino# hpdf - Print DVI data on HP/PCL printer 486d7f5d3SJohn Marino# Installed in /usr/local/libexec/hpdf 586d7f5d3SJohn Marino 686d7f5d3SJohn MarinoPATH=/usr/local/bin:$PATH; export PATH 786d7f5d3SJohn Marino 886d7f5d3SJohn Marino# 986d7f5d3SJohn Marino# Define a function to clean up our temporary files. These exist 1086d7f5d3SJohn Marino# in the current directory, which will be the spooling directory 1186d7f5d3SJohn Marino# for the printer. 1286d7f5d3SJohn Marino# 1386d7f5d3SJohn Marinocleanup() { 1486d7f5d3SJohn Marino rm -f hpdf$$.dvi 1586d7f5d3SJohn Marino} 1686d7f5d3SJohn Marino 1786d7f5d3SJohn Marino# 1886d7f5d3SJohn Marino# Define a function to handle fatal errors: print the given message 1986d7f5d3SJohn Marino# and exit 2. Exiting with 2 tells LPD to do not try to reprint the 2086d7f5d3SJohn Marino# job. 2186d7f5d3SJohn Marino# 2286d7f5d3SJohn Marinofatal() { 2386d7f5d3SJohn Marino echo "$@" 1>&2 2486d7f5d3SJohn Marino cleanup 2586d7f5d3SJohn Marino exit 2 2686d7f5d3SJohn Marino} 2786d7f5d3SJohn Marino 2886d7f5d3SJohn Marino# 2986d7f5d3SJohn Marino# If user removes the job, LPD will send SIGINT, so trap SIGINT 3086d7f5d3SJohn Marino# (and a few other signals) to clean up after ourselves. 3186d7f5d3SJohn Marino# 3286d7f5d3SJohn Marinotrap cleanup 1 2 15 3386d7f5d3SJohn Marino 3486d7f5d3SJohn Marino# 3586d7f5d3SJohn Marino# Make sure we are not colliding with any existing files. 3686d7f5d3SJohn Marino# 3786d7f5d3SJohn Marinocleanup 3886d7f5d3SJohn Marino 3986d7f5d3SJohn Marino# 4086d7f5d3SJohn Marino# Link the DVI input file to standard input (the file to print). 4186d7f5d3SJohn Marino# 4286d7f5d3SJohn Marinoln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0" 4386d7f5d3SJohn Marino 4486d7f5d3SJohn Marino# 4586d7f5d3SJohn Marino# Make LF = CR+LF 4686d7f5d3SJohn Marino# 4786d7f5d3SJohn Marinoprintf "\033&k2G" || fatal "Cannot initialize printer" 4886d7f5d3SJohn Marino 4986d7f5d3SJohn Marino# 5086d7f5d3SJohn Marino# Convert and print. Return value from dvilj2p does not seem to be 5186d7f5d3SJohn Marino# reliable, so we ignore it. 5286d7f5d3SJohn Marino# 5386d7f5d3SJohn Marinodvilj2p -M1 -q -e- dfhp$$.dvi 5486d7f5d3SJohn Marino 5586d7f5d3SJohn Marino# 5686d7f5d3SJohn Marino# Clean up and exit 5786d7f5d3SJohn Marino# 5886d7f5d3SJohn Marinocleanup 5986d7f5d3SJohn Marinoexit 0 60