In the default configuration, psf supports two kludges. The first causes psf to check its name for the letter `m'. If this letter is found and accounting is turned on, psf calls pap twice, once to get an initial page count and to print the job, and another time to get a final page count. This is a work-around for bugs in a variety of PAP implementions that cause printers to never properly close the PAP output file. A notable example is any printer by Hewlett-Packard.
The second kludge causes psf to examine its name for the letter `w'. If this letter is found and accounting is turned on, psf calls pap with the -w flag. This flag causes pap to wait until the printer's status contains the string `idle'. Once this string is found, the job is printed as normal. This kludge is a work-around for printers, notably Hewlett-Packard's LaserJet IV, which will report a page count while a previous jobs is still printing.
The sample printcap entry below invokes psf to print text files, PostScript files, troff's C/A/T output, and TeX's DVI output, to an AppleTalk connected LaserWriter Plus. Since the LaserWriter Plus stacks pages in descending order, we reverse the pages and print the burst page last.
laser|lp|LaserWriter Plus on AppleTalk:\ :sd=/var/spool/lpd/laser:\ :lp=/var/spool/lpd/laser/null:\ :lf=/var/log/lpd-errs:pw#80:hl:\ :of=/usr/lib/netatalk/ofpap:\ :if=/usr/lib/netatalk/ifpaprev:\ :tf=/usr/lib/netatalk/tfpaprev:\ :df=/usr/lib/netatalk/dfpaprev:
Note that if the host in question spools to more than one AppleTalk printer, /dev/null should not be used for the lp capability. Instead, a null device should be created with mknod for each printer, as has been done above.
Finally, there is a file in the spool directory, /var/spool/lpd/laser, called .paprc, which pap reads for the AppleTalk name of the printer.
psorder(1), printcap(5), lpd(1), mknod(1), pap(1).