LPRng-HOWTO: 15 Oct 2001 (For LPRng-3.7.9)
Prev | Chapter 15. Job Processing | Next

# 15.6. Printing Job Files

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.

1. 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.

2. The control file line for the job is examined, and the first letter of the data file specification is used as the format.

3. 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.

4. 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.

5. 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).

6. 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.

7. 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

8. If the filter exit status was JSUCC (0), or no error indicated, then processing will continue otherwise the job termination takes (see Abnormal Termination ).

9. If the `:of` filter is present, then it is reactivated with a `kill -CONT` signal.

10. The the `sf` (suppress FF print file separators ) is turned off a form feed is sent between each file of a job.

Prev | Home | Next
Printing Banners | Up | Printing Banner At End of Job