How should backends handle multi-file jobs?

Jeremy Parrish jeremyp at rrish.org
Fri Feb 16 17:03:02 PST 2007


> Jeremy Parrish wrote:
> >> Jeremy Parrish wrote:
> >>> Hi,
> >>>
> >>> Forgive me if this has been asked before. I could not find a definitive answer in my searching.
> >>>
> >>> How are backends supposed to deal with milti-file jobs? It appears that if a job has more than one file, the data file is named with a "-001", "-002", etc. suffix (i.e. d000001-001 instead of just d000001). It appears that the backend only gets "invoked" for the "-001" file. So, I'm guessing that it is the backend's job to look for the "-002" etc. files on its own... Is this correct, or is something wrong here?
> >> That is not correct.
> >>
> >> Backends only handle a single file, or read one or more files worth
> >> of data from stdin.  Your backend should either read the file in
> >> argv[6] or read from stdin.
> >>
> >> There is a pending bug in CUPS 1.2 (that will not be fixed until 1.3)
> >> for *raw* printing of multiple files.  Basically, when printing raw
> >> (or with no driver), you'll only get the first file in a job printed.
> >
> > Ok, good. That is how I _thought_ it should work in the first place. I am indeed using a raw queue, so that's the source of my problem. I need to grab a plain text stream in the backend and do fun things to it.
> >
> > Know of better workaround than doing what I described in the backend until 1.3 is readily available for production?
>
> Use a simple passthru interface script for your queue, e.g.:
>
>      lpadmin -p printer -i passthru.sh
>
> where "passthru.sh" is something simple like:
>
>      #!/bin/sh
>      copies=$4
>      while test $copies -gt 0; do
>          cat $6
>          copies=`expr $copies - 1`
>      done

Awesome. I had no idea such a thing existed.

Thank you kindly.

-Jeremy




More information about the cups mailing list