Specifications

4-149
Printer, Plotter, and Spooler Subsystem Programming
system naming conventions. A reasonable action is to create a file just for the purpose of
being the target of file queues. For example, the root user can issue the command touch
/dev/lxx to create a file named lxx in the /dev directory.
After you provide the name of a file in the /dev directory, choose a queue name for each
input data stream supported by the printer type you selected earlier. In this example,
suppose the name asc was chosen for an ASCII queue. An entry like the following would
appear in /etc/qconfig:
asc:
device = lxx
lxx:
file = /dev/lxx
header = never
trailer = never
access = both
backend = /usr/lib/lpd/piobe
Any print job submitted to the spooler queue asc is processed by the pipeline set up by
piobe. The processed data stream is written to /dev/lxx. This is not what you want to
happen. Because the goal is to have ts_print write the output to port 11 on the terminal
server, there should in fact not even be a file associated with this queue. To this end, edit
the new stanza pair in /etc/qconfig and change the value of the file parameter to FALSE,
like this:
asc:
device = lxx
lxx:
file = FALSE
header = never
trailer = never
access = both
backend = /usr/lib/lpd/piobe
If you use this queue in this state, you do not see anything written to a file or printed
anywhere, except maybe for error messages. When the qdaemon sets the backend, piobe,
into execution, it passes piobe an open file descriptor based on the value of the file
parameter in /etc/qconfig. When that value is set to FALSE, the file descriptor is not
passed. The eventual recipient and user of the file descriptor is whatever program is pointed
to by the mo attribute. The default program pointed to by the mo attribute is pioout and,
when jobs are put on the queue when it is in this state, pioout will not have a valid value for
stdout, and the processed job will simply vanish.
At this point, you can use lsvirprt to select the asc virtual printer definition for modification (
Viewing, Formatting, or Modifying Virtual Printer Definitions on page 4-136). A prompt
similiar to the following displays:
To LIST attributes, enter AttributeName1 ... (* for all attributes)
To CHANGE an attribute value, enter AttributeName=NewValue
To FORMAT and EDIT an attribute value, enter AttributeName~v
To EDIT the attribute file, enter ~v
To terminate, press Enter:
Assuming the ts_print program was installed in /usr/bin, enter the following at the
prompt:
mo=/usr/bin/ts_print –A 9.19.129.101 –P 11
Jobs submitted to the asc queue will now be processed as if they were local jobs but, when
the end of the pipeline is reached, the ts_print program will deliver the output data
stream to port 11 on the terminal server instead of pioout delivering it to a device driver.
In general, the mo attribute in the virtual printer definition for a queue with piobe as the
backend can be redefined to deliver a processed data stream to any file or device the user
chooses, provided the you can write the code to do it.