[please keep me in the CC line for replies, as I am not subscribed to
this list]
Since upgrading one of our servers that handles a number of print queues
to Red Hat 7.3, I started getting complaints about jobs not getting
removed from the print queues -- they would get printed, then their
status would change to paused in the print queue dialog on the Windows
machines. This also meant that the printer icon in the system tray
didn't disapear, which a number of users used to check when their job
had finished printing.
This problem occurs because the version of LPRng (3.8.9) that ships with
RH7.3 lists the last few finished jobs in the output of lpq with their
rank listed as "done". The output looks something like this:
Printer: hp5100@blinky (dest auto@hp5100)
Queue: no printable jobs in queue
Server: no server active
Status: job 'james@blinky+708' saved at 16:06:16.677
Rank Owner/ID Class Job Files Size Time
done carole@blinky+580 A 580 smbprn.007629.i16aS5 99120
10:34:44
done james@blinky+708 A 708 smbprn.000024.rW1nDr 72089
16:06:16
JetDirect lpd: no jobs queued on the port Auto
I wrote a simple patch to solve this problem. If it encounters a print
job with its rank set to "done", it sets the status field to LPQ_PRINTED
(which seems like the most appropriate status). This seems to solve the
problem for us -- the completed jobs don't show up paused, and the
printer icon in the system tray disapears when the job completes.
It would be useful to get this patch included in future 2.2 releases.
James Henstridge.
--
Email: [EMAIL PROTECTED] | Linux.conf.au 2003 Call for Papers out
WWW: http://www.daa.com.au/~james/ | http://conf.linux.org.au/cfp.html
--- samba-2.2.5/source/printing/lpq_parse.c.lprng-lpq Mon Jul 8 13:59:03 2002
+++ samba-2.2.5/source/printing/lpq_parse.c Mon Jul 8 14:00:10 2002
@@ -257,6 +257,8 @@
if (strequal(tokarr[LPRNG_RANKTOK],"active")) {
buf->status = LPQ_PRINTING;
+ } else if (strequal(tokarr[LPRNG_RANKTOK],"done")) {
+ buf->status = LPQ_PRINTED;
} else if (isdigit((int)*tokarr[LPRNG_RANKTOK])) {
buf->status = LPQ_QUEUED;
} else {