diff --git a/package/kde/kdelibs/kde-3.5.5-cups-.1.2.x-empty-printer-list.patch b/package/kde/kdelibs/kde-3.5.5-cups-.1.2.x-empty-printer-list.patch new file mode 100644 index 000000000..61bc72893 --- /dev/null +++ b/package/kde/kdelibs/kde-3.5.5-cups-.1.2.x-empty-printer-list.patch @@ -0,0 +1,38 @@ +This is a hotfix for KDE 3.5.5 with CUPS 1.2.x. + +Copied from http://bugs.kde.org/show_bug.cgi?id=115891: +Empty printer list fix patch 2006-11-01 18:06:33 + +--- kde.orig/kdeprint/cups/ipprequest.cpp ++++ kde.patched/kdeprint/cups/ipprequest.cpp +@@ -329,6 +329,10 @@ + dumpRequest(request_, true); + } + ++ /* No printers found */ ++ if ( request_ && request_->request.status.status_code == 0x406 ) ++ return true; ++ + if (!request_ || request_->state == IPP_ERROR || (request_->request.status.status_code & 0x0F00)) + return false; + +--- kde.orig/kdeprint/cups/kmcupsmanager.cpp ++++ kde.patched/kdeprint/cups/kmcupsmanager.cpp +@@ -61,7 +61,7 @@ + #define ppdi18n(s) i18n(QString::fromLocal8Bit(s).utf8()) + + void extractMaticData(QString& buf, const QString& filename); +-QString printerURI(KMPrinter *p, bool useExistingURI = false); ++QString printerURI(KMPrinter *p, bool useExistingURI); + QString downloadDriver(KMPrinter *p); + + static int trials = 5; +@@ -218,7 +218,7 @@ + QString uri; + + req.setOperation(state); +- uri = printerURI(p); ++ uri = printerURI(p, true); + req.addURI(IPP_TAG_OPERATION,"printer-uri",uri); + if (req.doRequest("/admin/")) + return true; diff --git a/package/kde/kdelibs/kde-3.5.5-cups-.1.2.x-unix-socket-support.patch b/package/kde/kdelibs/kde-3.5.5-cups-.1.2.x-unix-socket-support.patch new file mode 100644 index 000000000..74a47b6c9 --- /dev/null +++ b/package/kde/kdelibs/kde-3.5.5-cups-.1.2.x-unix-socket-support.patch @@ -0,0 +1,220 @@ +This is a hotfix for KDE 3.5.5 with CUPS 1.2.x. + +Copied from http://bugs.kde.org/show_bug.cgi?id=115891: +Rework & unify IPP URI generation. Support UNIX socket properly patch 2006-11-01 18:09:53 + +--- kdelibs-3.5.5a.dfsg.1.orig/kdeprint/cups/cupsinfos.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ kdelibs-3.5.5a.dfsg.1/kdeprint/cups/cupsinfos.cpp 2006-10-26 21:29:07.000000000 +0300 +@@ -21,6 +21,7 @@ + #include "kmfactory.h" + #include "kmtimer.h" + #include "messagewindow.h" ++#include "ipprequest.h" + + #include + #include +@@ -76,6 +77,11 @@ + return host_; + } + ++QString CupsInfos::ippAssembleURI(const QString& resource) const ++{ ++ return IppRequest::assembleURI(host(), port(), resource); ++} ++ + void CupsInfos::setHost(const QString& s) + { + host_ = s; +--- kdelibs-3.5.5a.dfsg.1.orig/kdeprint/cups/cupsinfos.h 2006-10-26 19:31:11.000000000 +0300 ++++ kdelibs-3.5.5a.dfsg.1/kdeprint/cups/cupsinfos.h 2006-10-26 21:26:26.000000000 +0300 +@@ -34,6 +34,7 @@ + const QString& host() const; + QString hostaddr() const; + int port() const; ++ QString ippAssembleURI(const QString& resource) const; + const QString& login() const; + const QString& password() const; + const QString& realLogin() const; +--- kdelibs-3.5.5a.dfsg.1.orig/kdeprint/cups/ipprequest.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ kdelibs-3.5.5a.dfsg.1/kdeprint/cups/ipprequest.cpp 2006-10-26 21:33:09.000000000 +0300 +@@ -529,4 +529,48 @@ + attr = attr->next; + } + #endif ++ ++ + } ++ ++ ++QString IppRequest::assembleURI(const QString& host, int port, const QString& resource) ++{ ++ const char* hostname; ++ ++ // Replace UNIX socket address with "localhost". ipp URI specification ++ // does not allow UNIX socket addresses in the host portion ++ if (host[0] == '/' || host.isEmpty()) { ++ hostname = "localhost"; ++ port = 0; ++ } else { ++ hostname = host.local8Bit(); ++ } ++ ++ if (port < 0) ++ return QString::null; ++ ++#if CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR >= 2 ++ QCString uri(HTTP_MAX_URI); ++ ++ // Use URI assembling function provided by CUPS ++ if (httpAssembleURI(HTTP_URI_CODING_ALL, uri.data(), uri.size(), ++ "ipp", NULL, hostname, port, resource.local8Bit()) == HTTP_URI_OK) ++ return QString(uri); ++ else ++ return QString::null; ++ ++#else ++ // Use our own URI assembling function ++ if (port > 0) ++ return QString("ipp://%1:%2%3") ++ .arg(hostname) ++ .arg(port) ++ .arg(KURL::encode_string(resource)); ++ else ++ return QString("ipp://%1%2") ++ .arg(hostname) ++ .arg(KURL::encode_string(resource)); ++#endif ++} ++ +--- kdelibs-3.5.5a.dfsg.1.orig/kdeprint/cups/ipprequest.h 2006-10-26 19:31:11.000000000 +0300 ++++ kdelibs-3.5.5a.dfsg.1/kdeprint/cups/ipprequest.h 2006-10-26 21:24:41.000000000 +0300 +@@ -86,6 +86,9 @@ + // debug function + void dump(int state); + ++ // URI assembling function [static] ++ static QString assembleURI(const QString& host, int port, const QString& resource); ++ + protected: + void addString_p(int group, int type, const QString& name, const QString& value); + void addStringList_p(int group, int type, const QString& name, const QStringList& values); +--- kdelibs-3.5.5a.dfsg.1.orig/kdeprint/cups/kmcupsjobmanager.cpp 2006-10-26 21:45:23.000000000 +0300 ++++ kdelibs-3.5.5a.dfsg.1/kdeprint/cups/kmcupsjobmanager.cpp 2006-10-27 01:33:12.000000000 +0300 +@@ -92,7 +92,7 @@ + case KMJob::Move: + if (argstr.isEmpty()) return false; + req.setOperation(CUPS_MOVE_JOB); +- uri = QString::fromLatin1("ipp://%1:%2/printers/%3").arg(CupsInfos::self()->host()).arg(CupsInfos::self()->port()).arg(argstr); ++ uri = CupsInfos::self()->ippAssembleURI(QString("/printers/%1").arg(argstr)); + req.addURI(IPP_TAG_OPERATION, "job-printer-uri", uri); + break; + default: +@@ -109,7 +109,6 @@ + bool KMCupsJobManager::listJobs(const QString& prname, KMJobManager::JobType type, int limit) + { + IppRequest req; +- QString uri("ipp://%1:%2/%3/%4"); + QStringList keys; + CupsInfos *infos = CupsInfos::self(); + +@@ -143,7 +142,8 @@ + */ + } + else +- req.addURI(IPP_TAG_OPERATION, "printer-uri", uri.arg(infos->host()).arg(infos->port()).arg(((mp&&mp->isClass())?"classes":"printers")).arg(prname)); ++ req.addURI(IPP_TAG_OPERATION, "printer-uri", ++ infos->ippAssembleURI(QString("/%1/%2").arg(((mp&&mp->isClass())?"classes":"printers")).arg(prname))); + + // other attributes + req.addKeyword(IPP_TAG_OPERATION, "requested-attributes", keys); +--- kdelibs-3.5.5a.dfsg.1.orig/kdeprint/cups/kmcupsmanager.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ kdelibs-3.5.5a.dfsg.1/kdeprint/cups/kmcupsmanager.cpp 2006-10-26 21:31:12.000000000 +0300 +@@ -138,7 +138,7 @@ + req.setOperation(CUPS_ADD_CLASS); + QStringList members = p->members(), uris; + QString s; +- s = QString::fromLocal8Bit("ipp://%1/printers/").arg(CupsInfos::self()->hostaddr()); ++ s = CupsInfos::self()->ippAssembleURI("/printers/"); + for (QStringList::ConstIterator it=members.begin(); it!=members.end(); ++it) + uris.append(s+(*it)); + req.addURI(IPP_TAG_PRINTER,"member-uris",uris); +@@ -1024,7 +1024,7 @@ + if (use && !p->uri().isEmpty()) + uri = p->uri().prettyURL(); + else +- uri = QString("ipp://%1/%3/%2").arg(CupsInfos::self()->hostaddr()).arg(p->printerName()).arg((p->isClass(false) ? "classes" : "printers")); ++ uri = CupsInfos::self()->ippAssembleURI(QString("/%2/%1").arg(p->printerName()).arg((p->isClass(false) ? "classes" : "printers"))); + return uri; + } + +--- kdelibs-3.5.5a.dfsg.1.orig/kdeprint/cups/kmcupsuimanager.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ kdelibs-3.5.5a.dfsg.1/kdeprint/cups/kmcupsuimanager.cpp 2006-10-26 21:34:02.000000000 +0300 +@@ -135,7 +135,7 @@ + QString uri; + + req.setOperation(CUPS_GET_DEVICES); +- uri = QString::fromLocal8Bit("ipp://%1/printers/").arg(CupsInfos::self()->hostaddr()); ++ uri = CupsInfos::self()->ippAssembleURI("/printers/"); + req.addURI(IPP_TAG_OPERATION,"printer-uri",uri); + + if (req.doRequest("/")) +--- kdelibs-3.5.5a.dfsg.1.orig/kdeprint/cups/kmwfax.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ kdelibs-3.5.5a.dfsg.1/kdeprint/cups/kmwfax.cpp 2006-10-26 21:34:54.000000000 +0300 +@@ -48,7 +48,7 @@ + // initialize + IppRequest req; + req.setOperation(CUPS_GET_DEVICES); +- QString uri = QString::fromLatin1("ipp://%1:%2/printers/").arg(CupsInfos::self()->host()).arg(CupsInfos::self()->port()); ++ QString uri = CupsInfos::self()->ippAssembleURI("/printers/"); + req.addURI(IPP_TAG_OPERATION,"printer-uri",uri); + if (req.doRequest("/")) + { +--- kdelibs-3.5.5a.dfsg.1.orig/kdeprint/cups/kmwippprinter.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ kdelibs-3.5.5a.dfsg.1/kdeprint/cups/kmwippprinter.cpp 2006-10-26 21:41:20.000000000 +0300 +@@ -157,7 +157,7 @@ + req.setOperation(IPP_GET_PRINTER_ATTRIBUTES); + req.setHost(item->text(1)); + req.setPort(item->text(2).toInt()); +- uri = QString::fromLatin1("ipp://%1:%2/ipp").arg(item->text(1)).arg(item->text(2)); ++ uri = IppRequest::assembleURI(item->text(1), item->text(2).toInt(), "/ipp"); + req.addURI(IPP_TAG_OPERATION,"printer-uri",uri); + keys.append("printer-name"); + keys.append("printer-state"); +@@ -176,7 +176,7 @@ + if (req.uri("printer-uri-supported",value)) + { + if (value[0] == '/') +- value.prepend(QString::fromLatin1("ipp://%1:%2").arg(item->text(1)).arg(item->text(2))); ++ value = IppRequest::assembleURI(item->text(1), item->text(2).toInt(), value); + m_uri->setText(value); + } + if (req.text("printer-make-and-model",value) && !value.isEmpty()) txt.append(i18n("Model: %1
").arg(value)); +@@ -203,7 +203,7 @@ + void KMWIppPrinter::slotIppReport() + { + IppRequest req; +- QString uri("ipp://%1:%2/ipp"); ++ QString uri; + QListViewItem *item = m_list->currentItem(); + + if (item) +@@ -211,7 +211,7 @@ + req.setOperation(IPP_GET_PRINTER_ATTRIBUTES); + req.setHost(item->text(1)); + req.setPort(item->text(2).toInt()); +- uri = uri.arg(item->text(1)).arg(item->text(2)); ++ uri = IppRequest::assembleURI(item->text(1), item->text(2).toInt(), "/ipp"); + req.addURI(IPP_TAG_OPERATION, "printer-uri", uri); + if (req.doRequest("/ipp/")) + { +--- kdelibs-3.5.5a.dfsg.1.orig/kdeprint/cups/kmwippselect.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ kdelibs-3.5.5a.dfsg.1/kdeprint/cups/kmwippselect.cpp 2006-10-26 21:32:34.000000000 +0300 +@@ -75,7 +75,7 @@ + IppRequest req; + QString uri; + req.setOperation(CUPS_GET_PRINTERS); +- uri = QString::fromLatin1("ipp://%1:%2/printers/").arg(url.host()).arg(url.port()); ++ uri = IppRequest::assembleURI(url.host(), url.port(), "/printers/"); + req.addURI(IPP_TAG_OPERATION,"printer-uri",uri); + req.addKeyword(IPP_TAG_OPERATION,"requested-attributes",QString::fromLatin1("printer-name")); + if (req.doRequest("/printers/"))