John Layt johnlayt at
Sat Nov 3 15:26:12 GMT 2007

On Thursday 01 November 2007, Alex Merry wrote:
> Sorted.  Attached are the replacement fileprinter.* files, and the
> okular diff.
> The problem was that "-P" and the printer name need to be seperate
> arguments (they are split up by bash).  All the option-creating methods
> now return QStringLists.  Which is why I suggested printing the
> QStringList arguments, because the echo command doesn't show the
> boundaries between arguments.
> Additionally, I've removed the shell-quoting bits as there is no shell
> doing any interpreting.  I've also removed a bunch of explicit QString
> constructors where they are not needed (QString(const char *) is an
> implicit constructor).  And I've changed all the "foo != QString()"
> tests to "! foo.isEmpty()", which is more efficient.
> Alex

Brilliant!  Working perfectly here too.  I should have read the QProcess docs 
more carefully :-)

I've now added the CUPS auto-detect code taken from KDEPrint, but I have some 
issues with it.  The CUPS/IPP service detection fails with 
QAbstractSocket::ConnectionRefusedError, but that's not fatal as just 
detecting the config file should be good enough for our purposes.  If there's 
nothing obviously wrong in the code I'll just leave that check out.

The bigger problem is that even if CUPS is installed, there's no guarantee 
that the CUPS version of lpr is installed, and thus that it's safe to pass 
through the CUPS specific options using -o.  I've looked at how various 
distros package things and (no surprise) there is no consistant way we can 
tell if it is installed or not via checking a file exists, and no way I can 
see to query lpr itself as to its origins.  Instead, I've put a fallback in 
place, if CUPS is detected but the lpr returns an error code, blindly try 
again but without the CUPS options.

I'll get the last few margins kinks worked out today and we should be good to 




-------------- next part --------------
A non-text attachment was scrubbed...
Name: fileprinter.cpp
Type: text/x-c++src
Size: 13177 bytes
Desc: not available
URL: <>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fileprinter.h
Type: text/x-c++hdr
Size: 6381 bytes
Desc: not available
URL: <>

More information about the kde-core-devel mailing list