1#
2# CDDL HEADER START
3#
4# The contents of this file are subject to the terms of the
5# Common Development and Distribution License, Version 1.0 only
6# (the "License").  You may not use this file except in compliance
7# with the License.
8#
9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10# or http://www.opensolaris.org/os/licensing.
11# See the License for the specific language governing permissions
12# and limitations under the License.
13#
14# When distributing Covered Code, include this CDDL HEADER in each
15# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16# If applicable, add the following below this CDDL HEADER, with the
17# fields enclosed by brackets "[]" replaced with your own identifying
18# information: Portions Copyright [yyyy] [name of copyright owner]
19#
20# CDDL HEADER END
21#
22#ident	"%Z%%M%	%I%	%E% SMI"	/* SVr4.0 1.2	*/
23Source code in this directory is for the program that can be used to send files
24to printers that understand PostScript.
25
26I've added code that lets you split the program into separate read and write
27processes (the -R2 option), supports an interactive mode (-i option), suppresses
28status queries while the files are being transmitted to the printer (-q option),
29and runs in a mode that can help if flow control doesn't appear to be working
30properly (-S option). All the options are described in the man page. In addition
31The parsing of lines returned by the printer has been improved and should do a
32decent job with anything that comes its way.
33
34By default the program runs much like the original version - a single process with
35status queries sent every block or two. It's not how to get the best performance,
36but using a single read/write process may be important if you're running lots of
37printers under a single userid. Four things can help improve performance, and all
38can be set by command line options:
39
40 1: Use separate read and write processes. The -R2 option gets it or if you want
41    it as the default initialize splitme (near line 132 in postio.c) to TRUE before
42    compiling postio.
43
44 2: Use a large input buffer. The default size is 2048 bytes, but it can be set
45    to whatever you want on the command line using the -B option. If you want a
46    larger default buffer change the definition of BLOCKSIZE (near line 204 in
47    postio.h) before you compile postio.
48
49 3: Quiet mode prevents the transmission of status requests (ie. ^Ts) while files
50    are being sent to the printer. You can turn off the status query stuff with
51    the -q option or if you want it as the default initialize quiet (near line 122
52    in postio.c) to TRUE before compiling the program.
53
54 4: Avoid using the -S option. It's real slow and I thought some about leaving it
55    out, but it's needed at a few sites. Seems to help most with printers connected
56    to UTS systems using DACUs and Datakit PVCs.
57
58One possible strategy would be to have the spooler run postio as a single process
59on all small printers (eg. LaserWriters or PS-800s) and use two processes on faster
60printers like the DataProducts 2665 or QMS PS-2400.
61
62A typical command line might look something like,
63
64    postio -l /dev/tty?? -b 9600 -L log file1 file2 file3
65
66where /dev/tty?? is the line that's connected to the printer, 9600 (or B9600) is
67the baud rate, and log is a file used to record printer status. You should always
68use the -l option to select the printer line, and if you don't choose a log file
69everything coming back from the printer goes to stderr. The following command line
70accomplishes the same thing, but runs postio as separate read and write processes,
71
72    postio -R2 -l/dev/tty?? -b9600 -Llog file1 file2 file3
73
74Check the man page for more examples.
75
76