[net.bugs.4bsd] New, debugged, anti-stat, and

padpowell@wateng.UUCP (PAD Powell [Admin]) (05/30/84)

After much effort, Patrick Powell and Sanjay Radia are announcing a
new, debugged, and "passes with no lint errors" version of the 4.2
Line Printer Spooler.  It is almost compatible with the old version,
in that there are some minor modifications to the /etc/printcap that
have to be made.  In addition, a much better set of output filters
and filter writting tools are available.  If you want the new version,
send $65, a copy of your ATT Unix License (first page and signature
page is sufficient),  and a copy of your 4.2 license (again first page
and signature) and we will send you a copy of the updated documentation,
and the new source.  For various reasons, we regret that we cannot
distribute this in net.sources.

Patrick Powell			Sanjay Radia
VLSI Research Group		M.F.C.F.
	University of Waterloo, Waterloo, Ont. Canada N2L 3G1
Phone- (519) 885-1211 X3381






1.  Changes and Modifications

     The original 4.2BSD Line Printer Spooler as distributed
to  the  University  of Waterloo was extensively modified by
Patrick Powell.  The main purpose of the  modifications  was
to  attempt  to make the behaviour of the software more uni-
form and flexible.  The modifications fall into the  follow-
ing major categories.

1.1.  Bugs

     Several minor, but annoying bugs were  eliminated.   In
this process, LINT was run, and literally hundreds of errors
reported by LINT were eliminated.   This  also  uncovered  a
couple of other bugs.

1.2.  Printcap Extensions

     Also, the fx (format check) string allows a site to  do
checking  to  see  if formats are allowed on a printer. This
can be specially useful for remote printers  by  restricting
certain certain formats.

1.3.  Prefilters

     This allows a local site to preprocess all the files at
the  local  site,  and produce a single spool file for later
use.  This is handy when using a remote printer.

     As a special case, the -p option of  LPR  can  be  pro-
cessed at the local site.  This is useful if the remote site
does not support formatting.

1.4.  Filter Parameters

     The filter parameters have  been  rationalized  into  a
single  set.   All  options  now have the form making life a
little easier  for  the  filter  writer.   Also,  additional
paramters  (  -Jjobname  -Cclass  -Fformat  -ZadditionalPar-
metersFromLpr ) are passed to the if output filter.

1.5.  LPQ Information

     The time a job has started has been added to the status
information.  This is rather useful to know.

1.6.  Filter Timeouts

     A timeout facility has  been  added  to  some  filters.
This  helps when attempting to find out if a device has gone
off line, is out of paper, etc.

1.7.  Special Queue Handling

     The qh (queue handler) entry in the printcap now allows
specification of a handler to be invoked for every job taken
from the queue.  This is nice for systems which wish to  use
the  spooler facilities for handling jobs, but not for doing
the actual data transfer.

1.8.  Accounting

     Accounting information was reformatted, to  make  it  a
little  easier  for  other  programs like awk and sort to be
used.

1.9.  Remote Access

     The ra string variable has been added  to  the  termcap
entries,  to  allow  additional  remote  access information.
When  being  accessed  by  a  remote  machine,   first   the
/etc/host.equiv  file  will be checked, and then the list of
machines defined by the ra string.

1.10.  Remote Job Removal

     There is a minor botch in the naming  conventions  used
for  spool files, and networking host names.  A spool direc-
tory file has a name of the form
     <c|d><seq><host>
For example, cfA000watmath would be a control file generated
on  the  host  watmath.  When a job is spooled remotely, the
file names are preserved across systems.

     LPRM is used to remove jobs from a queue, and  does  so
by sending a message of the form
     ^Eprinter person [users ...] [jobs ...]\n
In the original version of the lpd, the networking  function
was  used  to  determine  the origin of the message.  Unfor-
tunately, the host name returned depended upon  the  network
and  routing used to deliver the message, and was not unique
to  a  system.   The  person  field  was  modified   to   be
host:person,  and  the lpd used the transmitted host name as
the origin of the message.