2.9BSD/usr/src/ucb/lpr/man/ulf.8

.TH ULF 8
.UC
.SH NAME
ulf \- universal lineprinter filter
.SH SYNOPSIS
.B ``invokename'' username
.SH DESCRIPTION
Output is sent through
.I ulf
before it is allowed to hit the lineprinter.

.I Ulf
filters out control characters, and buffers up lines for devices like
diablos.  Accounting records are written in /usr/adm/lpacct by
.I ulf
at the time of completion of each job.
.PP
.I Ulf
checks to see what name it has been called by so that it will know
what entry to look up in /etc/printcap.  The account name of the
user that was responsible
for this invocation of
.I ulf
is passed as its one and only argument.
This argument is needed to determine who to bill the pages to.
.I Ulf
supports diablos and dumb (LA180, LA120) ``lineprinters''
.PP
.I Ulf
uses a ``line_structure'' that is a linked list of arrays to
hold enough characters for one physical line on the lineprinter.  The
first array contains the characters of the line, and all subsequent arrays
hold overprinting characters.  Blanks are left as zero's, so that they
don't have to be printed, just move the printhead whatever way is easiest.
.SH AUTHOR
Cliff Matthews, University of New Mexico
.SH FILES
/etc/printcap
.SH DIAGNOSTICS
Are sent to wherever /etc/printcap specifies with the lf field.
I like to see them go to /dev/null, because they tend to be generated in
large quantities, and can fill up a filesystem very quickly.  If the software
doesn't work, the errors should be dumped to disk and examined.  After the
source of the trouble has been fixed, it is advisable to have the errors
routed back to /dev/null.
.SH SEE ALSO
lpr(1), printcap(5), lpd(8)