Sequence of Operations: for each job in listed in the
control file, the following operations are done in turn.
If there is an :of filter
present, the suspend string \031\001 is written to of_fd and the no
further action is taken until the of filter is
suspended.
The control file line for the job is examined, and the
first letter of the data file specification is used as
the format.
If the format is p, the job
is first processed by the program specified by the pr program, and the program output
used as the print file.
If the format is f, l, or p
then the :if filter is used,
otherwise the keyword Xf is
used. Note that certain formats such as p, a, l, may not be used as formats.
The filter program is started with an appropriate set
of command line options (see Filter Command Line Options and
Environment Variables ), and with its STDOUT attached to the printing device
(io_fd), STDERR to a pipe
which results in the output being written to the status
file, and file descriptor 3 to the accounting file or
program. If debugging is enabled, then the STDERR output is also written to the
error log file (lf).
When doing a read/write operation to a device or
remote system, a timeout can be specified. When doing a
print or job transfer operation, the send_job_rw_timeout value is used. When
doing a status or query operation, the send_query_rw_timeout value is used. If a
write or write operation does not complete within the
specified timeout seconds, then we have an error
condition and job processing or the query operation is
terminated with JFAIL status. If the timeout value is 0,
then no timeout is done.
lpd will then wait for the filter to
exit. The following exit codes are used by lpd:
Key Value Meaning
JSUCC 0 Successful
JFAIL 1, 32 Failed - retry later
JABORT 2, 33 Abort - terminate queue processing
JREMOVE 3, 34 Failed - remove job
(Unused) 4, 35
(Unused) 5, 36
JHOLD 6, 37 Hold this job - reprint later
JNOSPOOL 7, 38 No spooling to this queue
JNOPRINT 8, 39 No printing from this queue
JSIGNAL 9, 40 Killed by unrecognized signal
JFAILNORETRY 10, 41 Failed, no retry
Other Abort - terminate queue processing
If the filter exit status was JSUCC (0), or no error
indicated, then processing will continue otherwise the
job termination takes (see Abnormal Termination ).
If the :of filter is present,
then it is reactivated with a kill
-CONT signal.
The the sf (suppress FF print
file separators ) is turned off a form feed is sent
between each file of a job.