Options used:
Xf=Format Filter
sf FLAG Suppress Form Feed Separators
if=Default F Format Filter
pr=pr formatting program
send_job_rw_timeout=print job read/write timeout
send_query_rw_timeout=status query operation read/write timeout
sf FLAG Suppress form feed between job files
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. 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.