aboutsummaryrefslogtreecommitdiff
path: root/x11/kdelibs3/files/patch-cups-1.2.x-sockets
diff options
context:
space:
mode:
Diffstat (limited to 'x11/kdelibs3/files/patch-cups-1.2.x-sockets')
-rw-r--r--x11/kdelibs3/files/patch-cups-1.2.x-sockets441
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/"))