diff options
Diffstat (limited to 'x11/kdelibs3/files/patch-cups-1.2.x-sockets')
-rw-r--r-- | x11/kdelibs3/files/patch-cups-1.2.x-sockets | 441 |
1 files changed, 219 insertions, 222 deletions
diff --git a/x11/kdelibs3/files/patch-cups-1.2.x-sockets b/x11/kdelibs3/files/patch-cups-1.2.x-sockets index be679ae693e6..ae126ad441f6 100644 --- a/x11/kdelibs3/files/patch-cups-1.2.x-sockets +++ b/x11/kdelibs3/files/patch-cups-1.2.x-sockets @@ -1,251 +1,248 @@ ---- kdeprint/cups/Makefile.in Tue Sep 26 17:18:13 2006 -+++ kdeprint/cups/Makefile.in Tue Sep 26 17:19:12 2006 -@@ -110,7 +110,7 @@ - make_driver_db_cups_DEPENDENCIES = ../libdriverparse.a \ - $(top_builddir)/kdecore/libkdefakes.la $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) --DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -I$(top_builddir)/dcop -I$(top_builddir)/kdecore -I$(top_builddir)/kio/kssl -I$(top_builddir)/kjs -+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -I$(top_builddir)/dcop -I$(top_builddir)/kdecore -I$(top_builddir)/kdecore/network -I$(top_builddir)/kio/kssl -I$(top_builddir)/kjs - depcomp = $(SHELL) $(top_srcdir)/admin/depcomp - am__depfiles_maybe = depfiles - COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ---- kdeprint/cups/cupsinfos.cpp 2005/09/29 09:47:40 465272 -+++ kdeprint/cups/cupsinfos.cpp 2006/09/20 15:33:24 586778 -@@ -69,6 +69,13 @@ - { +--- kdeprint/cups/ipprequest.cpp ++++ 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; + +--- kdeprint/cups/kmcupsmanager.cpp ++++ 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; +--- kdeprint/cups/cupsinfos.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ 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 <kio/passdlg.h> + #include <kio/authinfo.h> +@@ -76,6 +77,11 @@ + return host_; } -+QString CupsInfos::hostaddr() const ++QString CupsInfos::ippAssembleURI(const QString& resource) const +{ -+ if (host_[0] != '/') -+ return host_ + ":" + port_; -+ return host_; ++ return IppRequest::assembleURI(host(), port(), resource); +} + void CupsInfos::setHost(const QString& s) { host_ = s; ---- kdeprint/cups/kmcupsmanager.cpp 2005/11/28 03:56:46 483752 -+++ kdeprint/cups/kmcupsmanager.cpp 2006/09/20 15:38:41 586782 -@@ -45,12 +45,14 @@ - #include <klocale.h> - #include <kconfig.h> - #include <kstandarddirs.h> -+#include <ksocketbase.h> - #include <klibloader.h> - #include <kmessagebox.h> - #include <kaction.h> - #include <kdialogbase.h> - #include <kextendedsocket.h> - #include <kprocess.h> -+#include <kbufferedsocket.h> - #include <kfilterdev.h> - #include <cups/cups.h> - #include <cups/ppd.h> -@@ -88,7 +90,7 @@ - - KMCupsManager::~KMCupsManager() - { -- //delete m_socket; -+ delete m_socket; +--- kdeprint/cups/cupsinfos.h 2006-10-26 19:31:11.000000000 +0300 ++++ 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; +--- kdeprint/cups/ipprequest.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ 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 ++} ++ +--- kdeprint/cups/ipprequest.h 2006-10-26 19:31:11.000000000 +0300 ++++ 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); +--- kdeprint/cups/kmcupsjobmanager.cpp 2006-10-26 21:45:23.000000000 +0300 ++++ 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(); - QString KMCupsManager::driverDbCreationProgram() -@@ -135,7 +137,8 @@ - { +@@ -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); +--- kdeprint/cups/kmcupsmanager.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ 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 = QString::fromLocal8Bit("ipp://%1:%2/printers/").arg(CupsInfos::self()->host()).arg(CupsInfos::self()->port()); -+ QString s; -+ s = QString::fromLocal8Bit("ipp://%1/printers/").arg(CupsInfos::self()->hostaddr()); + 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); -@@ -907,25 +910,23 @@ - - QString KMCupsManager::stateInformation() - { -- return QString("%1: %2:%3") -+ return QString("%1: %2") - .arg(i18n("Server")) -- .arg(CupsInfos::self()->host()) -- .arg(CupsInfos::self()->port()); -+ .arg(CupsInfos::self()->hostaddr()); - } - - void KMCupsManager::checkUpdatePossibleInternal() - { - kdDebug(500) << "Checking for update possible" << endl; - delete m_socket; -- /*m_socket = new KExtendedSocket( CupsInfos::self()->host(), CupsInfos::self()->port() ); -- connect( m_socket, SIGNAL( connectionSuccess() ), SLOT( slotConnectionSuccess() ) ); -- connect( m_socket, SIGNAL( connectionFailed( int ) ), SLOT( slotConnectionFailed( int ) ) ); -- m_socket->setTimeout( 1 );*/ -- m_socket = new QSocket( this ); -- connect( m_socket, SIGNAL( connected() ), SLOT( slotConnectionSuccess() ) ); -- connect( m_socket, SIGNAL( error( int ) ), SLOT( slotConnectionFailed( int ) ) ); -- trials = 5; -- QTimer::singleShot( 1, this, SLOT( slotAsyncConnect() ) ); -+ m_socket = new KNetwork::KBufferedSocket; -+ m_socket->setTimeout( 1 ); -+ connect( m_socket, SIGNAL( connected(const KResolverEntry&) ), -+ SLOT( slotConnectionSuccess() ) ); -+ connect( m_socket, SIGNAL( gotError( int ) ), SLOT( slotConnectionFailed( int ) ) ); -+ -+ trials = 5; -+ QTimer::singleShot( 1, this, SLOT( slotAsyncConnect() ) ); - } - - void KMCupsManager::slotConnectionSuccess() -@@ -959,7 +960,10 @@ - { - kdDebug(500) << "Starting async connect" << endl; - //m_socket->startAsyncConnect(); -- m_socket->connectToHost( CupsInfos::self()->host(), CupsInfos::self()->port() ); -+ if (CupsInfos::self()->host().startsWith("/")) -+ m_socket->connect( QString(), CupsInfos::self()->host()); -+ else -+ m_socket->connectToHost( CupsInfos::self()->host(), CupsInfos::self()->port() ); - } - - void KMCupsManager::slotConnectionFailed( int errcode ) -@@ -975,9 +979,25 @@ - return; - } - -- setErrorMsg( i18n( "Connection to CUPS server failed. Check that the CUPS server is correctly installed and running. " -- "Error: %1." ).arg( errcode == QSocket::ErrConnectionRefused ? i18n( "connection refused" ) : i18n( "host not found" ) ) ); -- setUpdatePossible( false ); -+ QString einfo; -+ -+ switch (errcode) { -+ case KNetwork::KSocketBase::ConnectionRefused: -+ case KNetwork::KSocketBase::ConnectionTimedOut: -+ einfo = i18n("connection refused") + QString(" (%1)").arg(errcode); -+ break; -+ case KNetwork::KSocketBase::LookupFailure: -+ einfo = i18n("host not found") + QString(" (%1)").arg(errcode); -+ break; -+ case KNetwork::KSocketBase::WouldBlock: -+ default: -+ einfo = i18n("read failed (%1)").arg(errcode); -+ break; -+ } -+ -+ setErrorMsg( i18n( "Connection to CUPS server failed. Check that the CUPS server is correctly installed and running. " -+ "Error: %2: %1." ).arg( einfo, CupsInfos::self()->host())); -+ setUpdatePossible( false ); - } - - void KMCupsManager::hostPingSlot() { -@@ -1014,7 +1034,7 @@ +@@ -1024,7 +1024,7 @@ if (use && !p->uri().isEmpty()) uri = p->uri().prettyURL(); else -- uri = QString("ipp://%1:%2/%4/%3").arg(CupsInfos::self()->host()).arg(CupsInfos::self()->port()).arg(p->printerName()).arg((p->isClass(false) ? "classes" : "printers")); -+ uri = QString("ipp://%1/%3/%2").arg(CupsInfos::self()->hostaddr()).arg(p->printerName()).arg((p->isClass(false) ? "classes" : "printers")); +- 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; } ---- kdeprint/cups/kmcupsuimanager.cpp 2005/09/29 09:47:40 465272 -+++ kdeprint/cups/kmcupsuimanager.cpp 2006/09/20 15:38:41 586782 +--- kdeprint/cups/kmcupsuimanager.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ 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:%2/printers/").arg(CupsInfos::self()->host()).arg(CupsInfos::self()->port()); -+ uri = QString::fromLocal8Bit("ipp://%1/printers/").arg(CupsInfos::self()->hostaddr()); +- 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("/")) ---- kdeprint/cups/cupsinfos.h 2005/09/29 09:47:40 465272 -+++ kdeprint/cups/cupsinfos.h 2006/09/20 15:33:24 586778 -@@ -32,6 +32,7 @@ - ~CupsInfos(); - - const QString& host() const; -+ QString hostaddr() const; - int port() const; - const QString& login() const; - const QString& password() const; ---- kdeprint/cups/kmcupsmanager.h 2005/09/29 09:47:40 465272 -+++ kdeprint/cups/kmcupsmanager.h 2006/09/20 15:38:41 586782 -@@ -25,7 +25,10 @@ - class IppRequest; - class KLibrary; - class KExtendedSocket; --class QSocket; -+ -+namespace KNetwork { -+ class KStreamSocket; -+} - - class KMCupsManager : public KMManager - { -@@ -95,7 +98,7 @@ - private: - KLibrary *m_cupsdconf; - KMPrinter *m_currentprinter; -- QSocket *m_socket; -+ KNetwork::KStreamSocket *m_socket; - bool m_hostSuccess; - bool m_lookupDone; - }; ---- kdeprint/cups/cupsdconf2/cups-util.c 2005/11/30 19:59:17 484443 -+++ kdeprint/cups/cupsdconf2/cups-util.c 2006/09/20 15:22:50 586776 -@@ -14,7 +14,7 @@ - static int cups_local_auth(http_t *http); - - const char * /* O - Filename for PPD file */ --cupsGetConf() -+cupsGetConf(void) +--- kdeprint/cups/kmwfax.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ 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("/")) + { +--- kdeprint/cups/kmwippprinter.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ 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("<b>Model</b>: %1<br>").arg(value)); +@@ -203,7 +203,7 @@ + void KMWIppPrinter::slotIppReport() { - int fd; /* PPD file */ - int bytes; /* Number of bytes read */ -@@ -142,7 +142,11 @@ - */ - - snprintf(plain, sizeof(plain), "%s:%s", cupsUser(), pwdstring); -- httpEncode64(encode, plain); -+#if CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR >= 2 -+ httpEncode64_2(encode, sizeof(encode), plain, sizeof(plain)); -+#else -+ httpEncode64(encode, plain); -+#endif - snprintf(authstring, sizeof(authstring), "Basic %s", encode); - } - else -@@ -364,7 +368,11 @@ - */ - - snprintf(plain, sizeof(plain), "%s:%s", cupsUser(), pwdstring); -- httpEncode64(encode, plain); -+#if CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR >= 2 -+ httpEncode64_2(encode, sizeof(encode), plain, sizeof(plain)); -+#else -+ httpEncode64(encode, plain); -+#endif - snprintf(authstring, sizeof(authstring), "Basic %s", encode); - } - else -@@ -443,8 +451,7 @@ - the struct has changed in newer versions - PiggZ (adam@piggz.co.uk) - */ - #if CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR >= 2 -- if (ntohl(*(int*)&http->_hostaddr.sin_addr) != 0x7f000001 && -- strcasecmp(http->hostname, "localhost") != 0) -+ if (!httpAddrLocalhost(http)) - #else - if (ntohl(*(int*)&http->hostaddr.sin_addr) != 0x7f000001 && - strcasecmp(http->hostname, "localhost") != 0) ---- kdeprint/cups/cupsdconf2/cups-util.h 2005/09/29 09:47:40 465272 -+++ kdeprint/cups/cupsdconf2/cups-util.h 2006/09/20 15:22:50 586776 -@@ -20,7 +20,7 @@ - #ifndef CUPS_UTIL_H - #define CUPS_UTIL_H - --const char* cupsGetConf(); -+const char* cupsGetConf(void); - int cupsPutConf(const char *filename); - - #endif + 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/")) + { +--- kdeprint/cups/kmwippselect.cpp 2006-10-26 19:31:11.000000000 +0300 ++++ 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/")) |