A ``printer interface script''
is a program that the print service uses to manage the
printer each time it prints a file.
The interface script initializes the printer,
takes advantage of its particular capabilities,
prints the file, and reports any errors.
The printer interface scripts are associated with the printer model
and are located in /usr/spool/lp/model.
For example, the printer interface script for a PostScript® printer
is called /usr/spool/lp/model/postscript.
You can also create your own interface scripts or customize
existing ones to suit your needs.
See
``Creating printer interface scripts''.
Interface scripts:
initialize the printer port
(the connection between the computer and the printer).
The standard interface script uses
stty(C)
to initialize the printer port.
initialize the physical printer
(restore the printer to a normal state in case a previously printed
file has left it in an unusual state),
setting the character pitch, line pitch, page size,
and character set requested by the user.
The standard interface script uses
lp.set(ADM)to initialize the printer.
print banner page (or pages), if required.
print the requested files.
The standard interface script calls the
lp.cat(ADM)printer filter to print the files.
report any errors to the print service.
The standard interface script uses
lp.tell(ADM)to send descriptions of printer faults to the print service;
the print service forwards that information as an alert to the
print administrator.
The interface script does not open the printer port;
the print service opens the printer port
(or calls a dialup printer if that is how the printer is connected).
The print service gives the printer port connection to the interface script
as standard output and sets the printer to be the controlling terminal
for the interface script.
If the port experiences a hangup,
a SIGHUP signal is sent to the interface script.
Many of the interface scripts provide special options
that the user can specify with the -o option to
lp(C).
(Read the appropriate interface file for this information.)
For example, the PostScript interface script
includes the options listed in
Table 4-5.
Table 4-5 PostScript options
---------------------------------------------------
Option Description
---------------------------------------------------
land prints text in landscape mode
land2 prints text in two-page landscape mode
port prints text in portrait mode
raw prints a PostScript file*
_________________
* Use the raw option for PostScript files only;
the PostScript interface script converts text
files to PostScript automatically if you do not
specify raw.
The print service runs the interface script to send
the print job to the printer:
/usr/spool/lp/admins/lp/interfaces/printer id user title copies options file1 file2 ...
Arguments to the interface script are:
printer
The name of the interface script (the same as the printer name).
id
Request-ID returned by lp.
user
Login name of user who made the request.
title
Optional title specified by the user.
copies
Number of copies requested by the user.
options
List of blank-separated options, specified by the user
(using lp -o)
or by the print service (from default values specified by the
administrator with lpadmin).
See
lp(C)
for the list of options recognized by the standard interface.
file
Full pathname of a file to be printed.
When the interface script is invoked,
standard input comes from /dev/null,
standard output is directed to the printer port,
and standard error output is directed to a file that will
be displayed to the user who submitted the print request.
The print service passes additional printer configuration information
to the interface script as shell variables:
TERM=printer-type
Specifies the printer type.
The value is used as a key for getting printer capability
information from the extended terminfo database.
FILTER='pipeline'
Specifies the filter to use to send the request content
to the printer; the filter is given control of the printer.
CHARSET=character-set
Specifies the character set to use when printing the content of a print request.
The standard interface script extracts the control sequences
needed to select the character set from the terminfo database.