generate_banner FLAG Generate banner for forwarded
jobs
hl FLAG Banner (header) Last
of=Banner
and File Separator Filter
sb FLAG Short banner (default FALSE)
sh FLAG Suppress header (banners) (default
FALSE)
Banner printing is one of the more complicated
configuration options of LPRng.
This is due mainly to historical evolution of the software,
as well as a lack of a well defined standard for filter
responsibilities. In the original BSD print spoolers, the
philosophy was that banner printing should be delegated to
the filters, as they were the most aware of the capabilities
of the printers. This required an out of
band method to convey banner printing information to the
filter, and resulted in a complicated interface. The original
interface was:
The filter doing banner printing was invoked as a
special :of filter, or passed a
special flag.
The print spooling software would send a special single line of information telling
it what the banner information should be. Note that this
line was never documented except for the source code, and
was inconsistent from version to version. Also, there was
no indication of what to do with additional lines, if
any.
The filter would generate the banner, discard the
line, and then pass other lines to the output device.
Adding to the confusion, the original print spoolers had a
:sh (suppress header or banner)
flag, which was supposed to suppress banner printing. It did
this by having the print spooler not generate the magic
banner information line.
A more sophisticated banner printing system would allow
the print spooler software to generate the banner, and would
then have the :of filter act as a
pass through. Thus, we need configure the :of filter NOT to use the first line as banner
printing information, and to pass through all information to
the device.
Complicating this whole mess is the ld (leader option) and tr (trailer option) which is a string sent to
the output device (:of filter) when
the device (filter) is initialized or terminated. This can
sometimes be interpreted as the banner line, leading to
unexpected results.
Sequence of Operations:
If the sh (suppress header)
flag is true, no banner is printed, and the actions in
this section are skipped. No banner
information line is generated for the :of filter, and no banner printing program
is invoked. If there is an :of
filter and it is expecting such a line and you have ld or tr
information then you may get unexpected results
(actually, catastrophic failure is a better term, but I
digress).
If the hl (header last) flag
is true the banner is printed at the end of the job and
the actions in this section are done at the end of the
job.
If the user does not want banner pages she can use the
lpr -h option. This will cause
the lpr program to delete the
L (banner name) line in the
control file. If there is no L
line in the control file and ab
(always print a banner) is false (the default), then no
banner is printed and the other actions in this section
are skipped. If ab is true and
the L line is missing then the
N (user login name) is used; if
it is missing as well, then ANONYMOUS is used for the
user name.
If a banner printing program is specified by bp, bs, or
be options, then LPRng will invoke the program to
generate a banner and then send the generated banner to
the printer via the :of filter.
The banner printing program will be invoked using the
standard filter command line flags (see Filter Command Line Options and
Environment Variables for details), with is STDIN attached to /dev/null and
STDOUT attached to a file to
hold the output banner.
If no banner printing program is specified and the sb (short banner) option is TRUE
(default is true), then the bl=... (banner line) option value is
expanded and sent to the of_fd
(:of filter or device. The
default bl value is: bl=$-'C:$-'n Job: $-'J Date: $-'t. Using
our example, this will get translated to:
If no banner printing program is specified and we have
sb@ (no short banner) then we
skip banner generation, i.e. - we do not send a banner generation line to the
output (:of filter).
If the queue is a normal forwarding queue, then the
generate_banner option will
invoke the bp, bs or be program
as appropriate to create a banner page file which is then
made the first (default) or last (hl flag or be=...
present) file in a job. This option has no effect in
other types of queues. See the translate_format
option as well.