Merge from vendor branch GROFF:
[dragonfly.git] / share / examples / printing / hpdf
1 #!/bin/sh
2 #
3 #  hpdf - Print DVI data on HP/PCL printer
4 #  Installed in /usr/local/libexec/hpdf
5
6 PATH=/usr/local/bin:$PATH; export PATH
7
8 #
9 #  Define a function to clean up our temporary files.  These exist
10 #  in the current directory, which will be the spooling directory
11 #  for the printer.
12 #
13 cleanup() {
14    rm -f hpdf$$.dvi
15 }
16
17 #
18 #  Define a function to handle fatal errors: print the given message
19 #  and exit 2.  Exiting with 2 tells LPD to do not try to reprint the
20 #  job.
21 #
22 fatal() {
23     echo "$@" 1>&2
24     cleanup
25     exit 2
26 }
27
28 #
29 #  If user removes the job, LPD will send SIGINT, so trap SIGINT
30 #  (and a few other signals) to clean up after ourselves.
31 #
32 trap cleanup 1 2 15 
33
34 #
35 #  Make sure we are not colliding with any existing files.
36 #
37 cleanup
38
39 #
40 #  Link the DVI input file to standard input (the file to print).
41 #
42 ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
43
44 #
45 #  Make LF = CR+LF
46 #
47 printf "\033&k2G" || fatal "Cannot initialize printer"
48
49
50 #  Convert and print.  Return value from dvilj2p does not seem to be
51 #  reliable, so we ignore it.
52 #
53 dvilj2p -M1 -q -e- dfhp$$.dvi
54
55 #
56 #  Clean up and exit
57 #
58 cleanup
59 exit 0