Job NOT being filtered

Stefan Adams stefan at borgia.com
Wed May 23 10:24:59 PDT 2007


> > > > Stefan Adams wrote:
> > > > >>Stefan Adams wrote:
> > > > >>
> > > > >>>It's possible to filter a job of text sent from the command line, right?
> > > > >>>
> > > > >>>Like this:
> > > > >>>
> > > > >>># echo hi | lpr
> > > > >>>
> > > > >>># cat /etc/cups/*.{types,convs}
> > > > >>>text/hi         printable(0,1024) + string(0,hi)
> > > > >>>text/hi              application/vnd.cups-postscript    3       skeleton
> > > > >>>
> > > > >>># ls -l /usr/lib/cups/filter/skeleton
> > > > >>>-rwxr-xr-x  1 root root 3522 May 22 20:01 /usr/lib/cups/filter/skeleton*
> > > > >>>
> > > > >>># cat /usr/lib/cups/filter/skeleton
> > > > >>>#!/usr/bin/perl
> > > > >>>$|=1;
> > > > >>>open TMP, ">/tmp/skeleton.tmp";
> > > > >>>print TMP qx{date};
> > > > >>>close TMP;
> > > > >>>exit 0;
> > > > >>>[...]
> > > > >>
> > > > >>What springs to my eyes at the first glance is that your
> > > > >>filter does not follow the filter calling conventions.
> > > > >
> > > > >
> > > > > Filter calling conventions?  Please explain?
> > > > >
> > > > > I've removed out every piece possible to make this as simple as possible.  I've started with Andreas Bohne-Lang's Cups Filter/Backend NOP and could not get it to work.  I've tried and tried again and have reduced it all to the most simple stuff I can think of.  At this point, I don't even care if it prints, the problem is that the filter is not being executed at all.
> > > > >
> > > > > I've even tried in my .convs file:
> > > > >
> > > > > */*     application/vnd.cups-postscript    3       skeleton
> > > > >
> > > > > But skeleton will not get run!
> > > > >
> > > > >
> > > > >>Helge
> > > > >>
> > > > >>
> > > > >>--
> > > >
> > > > A CUPS compatible filter needs to accept the following command line
> > > > options (in this order):
> > > > 	job-id		(an integer)
> > > > 	username
> > > > 	job-title
> > > > 	number-of-copies (an integer)
> > > > 	job-options	(a string containing the options separated by white space)
> > > > 	file-to-print	(this is optional, if not provieded, the filter needs
> > > > 			to read from STDIN).
> > > > The filter's output *MUST* go to STDOUT.
> > >
> > > But the filter would still be called, even if it didn't behave properly.  That's why the only commands I have in there are to open a file and stamp the date -- which has NEVER happened as a reult of printing.  Even tho I don't send the output to STDOUT, the filter should still be called and the date stamped to a tmp file.
> > >
> > > Or am I fully mistaken?
> > >
> > > > And, when introducing a new filter, you need to restart CUPS
> > > > (or at least issue a kill -HUP pidof(cupsd) to force a
> > > > reload).
> > >
> > > /etc/init.d/cups restart EVERY time.
> > >
> > > > For further details, see the documentation (which came with your
> > > > distribution, or read the documentation at www.cup.org)
> > >
> > > Read the docs online, read the CUPS book published by SAMS, read thru forums, read the install instructions for every filter I could find...  They all say the same thing: in a nutshell, do what I did above.  But under no circumstance is the filter being called.  Even when using Andreas' Log and Quota script out of the box, it still never got executed.
> > >
> > > I was running CUPS 1.1.23 and have since upgraded to CUPS 1.2.11 with no different results.
> > >
> >
> > Hi Stefan.
> >
> > I've duplicated your effort and found that it ran skeleton as you have
> > coded it:
> >
> >
> > # grep -i skeleton error_log
> > d [23/May/2007:10:47:10 -0500] start_job: filter="/opt/TWWfsw/cups124/lib/filter
> > /skeleton"
> > d [23/May/2007:10:47:10 -0500] cupsdStartProcess("/opt/TWWfsw/cups124/lib/filter
> > /skeleton", 0x8fc9930, 0xbfe542a0, -1, -1, 11)
> > I [23/May/2007:10:47:10 -0500] Started filter /opt/TWWfsw/cups124/lib/filter/ske
> > leton (PID 24738) for job 36.
> > D [23/May/2007:10:47:10 -0500] PID 24738 (/opt/TWWfsw/cups124/lib/filter/skeleto
> > n) exited with no errors.
> >
> > # cat /tmp/skeleton.tmp
> > Wed May 23 10:47:10 CDT 2007
> >
> > # grep "text/hi" mime*
> > mime.convs:text/hi                 application/vnd.cups-postscript 3       skele
> > ton
> > mime.types:text/hi               printable(0,1024) + string(0,hi)
> >
> >
> > # cat skeleton
> > #!/usr/bin/perl
> > $|=1;
> > open TMP, ">/tmp/skeleton.tmp";
> > print TMP qx{date};
> > close TMP;
> > exit 0;
> >
> >
> > The only difference between your CUPS install and mine is that I'm
> > currently running CUPS 1.2.4. Sorry, I couldn't be of anymore help.
> >
> > Good luck.
> >
> > Angle
>
> No luck.  :(
>
> I pulled down cups-1.2.11-source.bz2 and installed it fresh after first removing ALL cups-related RPMs from my Mandriva build.
>
> Does anything need to be configured in cupsd.conf or printers.conf to allow the use of filters?  Again, I did exactly what Angle did above and the skeleton filter is NOT be touched; no entries in error_log.

Also, error_log shows this upon cups restart:

d [23/May/2007:12:23:06 -0500] cupsdReadConfiguration: filter text/hi to application/vnd.cups-postscript 3 skeleton

So clearly it is picking up on the fact that I have a filter enabled, it just won't do it!




More information about the cups mailing list