This release of LPRng has had a set of changes that were pending
incorporated into it.
The most obvious to administrators is the control file (cfX...) is
no longer present in the spool queue. All of the control file
information is duplicated in the 'hold file' (hfX...). This file
not only contains the control information, but also many other
option settings. The control file contents are still generated and
passed to the incoming_control_filter and control_filter programs;
this functionality is still retained. However, the
incoming_control_filter program can now modify values in the 'hold
file'. This allows the job priority, class, hold actions, etc.,
to be modified in a much easier manner. You should still use the
exit codes to set immediate actions such as 'toss this job (JFAIL)',
etc. The hold file contents are also passed to filters as the HF
environment variable value.
Another change is the discard_large_jobs option (default TRUE).
If an incoming job exceeds the maximum size limits then it is
accepted, but the contents are tossed to /dev/null as they are
received. As a side effect, this action is recorded in the spool
queue status so you can check to see what happened to the job.
Finally, the 'move' action (lpc move from_queue jobid new_queue)
has been heavily modified to perform an (almost) immedate 'move'
action by copying jobs from one spool queue to another, if they
are on the same host. If they are not, then the queue server
will transfer the job first before finishing any other actions.
This change fits in with the notion that a 'move' operation is
an administrators desperate effort to rescue a job that is stuck
behind another job. You do not want to stop the printing of the
job currently in progess, but you need to get the stuck job
printed.
Version LPRng-3.8.25 - Wed Jan 7 04:46:12 PST 2004
MAJOR CHANGE in internals:
The legacy 'control file' has been removed from the spool
queue as all of the information is duplicated in the hold
file. The various LPRng documents will be updated to reflect
this. Users who access the control file information external
to LPRng should be warned that this is not a good idea due
to file locking, etc.
MAJOR CHANGE in 'move' operation:
The 'lpc move' is now 'nonblocking'. If you request
a job to be moved, the LPD server will start a process to
(almost) immediately move the job. Until this job is moved,
no other job processing for the queue will be done.
If the move is to a local queue on the same host, then the
job will be copied via a file copy. This action is identical
to the action for sending a job to a 'load balance' queue,
with the difference that the job is immediately marked as done
rather than after the load balance queue has printed it.
Note: if you enter a non-existent remote queue, then the
LPD subserver process trying to move the job will/may sit
in an endless loop trying to move the job.
Added: discard_large_jobs option
discard_large_jobs - if this option is set, large jobs are
accepted and then discarded.
Fixed: Priority and Class
For incoming jobs, the first letter of the C (class) field
in the control file is used to set the priority.
This action is modified by the:
# ignore requested user priority
ignore_requested_user_priority=0
# do not set priority from class name
break_classname_priority_link=0
If not present or the break_classname_priority_link,
the default priority value is used to set the priority.
(C=) and class (class=) values in the control file.
This deals with several lpd print clients that appear to
to assign random control file names and do not have a
C field in the control file. Not to mention users
who try to manipulate queue priorities.
Modified: incoming_control_filter action
This filter is applied to the incoming job control file.
and is used to modify the actions of the LPD server.
options. The output can be in the form:
Xoption X (no option)
Xoption
...
blank line
key=value
key=value
The Xoption is equivalent to X=option. The key=value
set of options is separated from the first by a blank line.
If an option is not specified, it is not modified. The
X (no option) or X= (no option) form will remove the
option from the control file. It is dangerous to try to
modify the A (identifier) option unless the user has intimate
knowledge of the LPRng lpd server operation.
Modified: filter environment variables
Filters are now invoked with the HF environment variable
set to the hold file contents. This assists with the
incoming_control_filter and control_filter actions.
Fixed:
The 'Remove_done_jobs' code now removes done and error jobs.
This makes the 'done_jobs' and 'done_jobs_max_age' actions
symmetrical.
Documented: added more details to the -D flags.
debug flag