From 9598f5141ea75ffa72a3c7c85639c6f296020ef1 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 20 Oct 2012 01:22:20 -0700 Subject: Sat Oct 20 01:22:19 PDT 2012 --- staging/kdelibs3/kdelibs3-cups16.patch | 724 +++++++++++++++++++++++++++++++++ 1 file changed, 724 insertions(+) create mode 100644 staging/kdelibs3/kdelibs3-cups16.patch (limited to 'staging/kdelibs3/kdelibs3-cups16.patch') diff --git a/staging/kdelibs3/kdelibs3-cups16.patch b/staging/kdelibs3/kdelibs3-cups16.patch new file mode 100644 index 000000000..6736d49d3 --- /dev/null +++ b/staging/kdelibs3/kdelibs3-cups16.patch @@ -0,0 +1,724 @@ +diff -Naur kdelibs-3.5.10-orig/kdeprint/cups/cupsdconf2/cupsdconf.cpp kdelibs-3.5.10/kdeprint/cups/cupsdconf2/cupsdconf.cpp +--- kdelibs-3.5.10-orig/kdeprint/cups/cupsdconf2/cupsdconf.cpp 2012-10-06 14:49:37.521406729 -0400 ++++ kdelibs-3.5.10/kdeprint/cups/cupsdconf2/cupsdconf.cpp 2012-10-06 15:08:17.460612585 -0400 +@@ -629,26 +629,26 @@ + cups_lang_t* lang = cupsLangDefault(); + ippAddString(request_, IPP_TAG_OPERATION, IPP_TAG_CHARSET, "attributes-charset", NULL, cupsLangEncoding(lang)); + ippAddString(request_, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, "attributes-natural-language", NULL, lang->language); +- request_->request.op.operation_id = CUPS_GET_PRINTERS; ++ ippSetOperation(request_, CUPS_GET_PRINTERS); + request_ = cupsDoRequest(http_, request_, "/printers/"); + if (request_) + { + QString name; + int type(0); +- ipp_attribute_t *attr = request_->attrs; ++ ipp_attribute_t *attr = ippFirstAttribute(request_); + while (attr) + { + // check new printer (keep only local non-implicit printers) +- if (!attr->name) ++ if (!ippGetName(attr)) + { + if (!(type & CUPS_PRINTER_REMOTE) && !(type & CUPS_PRINTER_IMPLICIT) && !name.isEmpty()) + resources_.append(new CupsResource("/printers/"+name)); + name = ""; + type = 0; + } +- else if (strcmp(attr->name, "printer-name") == 0) name = attr->values[0].string.text; +- else if (strcmp(attr->name, "printer-type") == 0) type = attr->values[0].integer; +- attr = attr->next; ++ else if (strcmp(ippGetName(attr), "printer-name") == 0) name = ippGetString(attr, 0, NULL); ++ else if (strcmp(ippGetName(attr), "printer-type") == 0) type = ippGetInteger(attr, 0); ++ attr = ippNextAttribute(request_); + } + if (!(type & CUPS_PRINTER_REMOTE) && !(type & CUPS_PRINTER_IMPLICIT) && !name.isEmpty()) + resources_.append(new CupsResource("/printers/"+name)); +@@ -658,26 +658,26 @@ + request_ = ippNew(); + ippAddString(request_, IPP_TAG_OPERATION, IPP_TAG_CHARSET, "attributes-charset", NULL, cupsLangEncoding(lang)); + ippAddString(request_, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, "attributes-natural-language", NULL, lang->language); +- request_->request.op.operation_id = CUPS_GET_CLASSES; ++ ippSetOperation(request_, CUPS_GET_CLASSES); + request_ = cupsDoRequest(http_, request_, "/classes/"); + if (request_) + { + QString name; + int type(0); +- ipp_attribute_t *attr = request_->attrs; ++ ipp_attribute_t *attr = ippFirstAttribute(request_); + while (attr) + { + // check new class (keep only local classes) +- if (!attr->name) ++ if (!ippGetName(attr)) + { + if (!(type & CUPS_PRINTER_REMOTE) && !name.isEmpty()) + resources_.append(new CupsResource("/classes/"+name)); + name = ""; + type = 0; + } +- else if (strcmp(attr->name, "printer-name") == 0) name = attr->values[0].string.text; +- else if (strcmp(attr->name, "printer-type") == 0) type = attr->values[0].integer; +- attr = attr->next; ++ else if (strcmp(ippGetName(attr), "printer-name") == 0) name = ippGetString(attr, 0, NULL); ++ else if (strcmp(ippGetName(attr), "printer-type") == 0) type = ippGetInteger(attr, 0); ++ attr = ippNextAttribute(request_); + } + if (!(type & CUPS_PRINTER_REMOTE) && !name.isEmpty()) + resources_.append(new CupsResource("/classes/"+name)); +diff -Naur kdelibs-3.5.10-orig/kdeprint/cups/ipprequest.cpp kdelibs-3.5.10/kdeprint/cups/ipprequest.cpp +--- kdelibs-3.5.10-orig/kdeprint/cups/ipprequest.cpp 2012-10-06 14:49:37.521406729 -0400 ++++ kdelibs-3.5.10/kdeprint/cups/ipprequest.cpp 2012-10-06 15:12:00.919127451 -0400 +@@ -51,32 +51,34 @@ + kdDebug(500) << "Null request" << endl; + return; + } +- kdDebug(500) << "State = 0x" << QString::number(req->state, 16) << endl; +- kdDebug(500) << "ID = 0x" << QString::number(req->request.status.request_id, 16) << endl; ++ kdDebug(500) << "State = 0x" << QString::number(ippGetState(req), 16) << endl; ++ kdDebug(500) << "ID = 0x" << QString::number(ippGetRequestId(req), 16) << endl; + if (answer) + { +- kdDebug(500) << "Status = 0x" << QString::number(req->request.status.status_code, 16) << endl; +- kdDebug(500) << "Status message = " << ippErrorString(req->request.status.status_code) << endl; ++ kdDebug(500) << "Status = 0x" << QString::number(ippGetStatusCode(req), 16) << endl; ++ kdDebug(500) << "Status message = " << ippErrorString(ippGetStatusCode(req)) << endl; + } + else +- kdDebug(500) << "Operation = 0x" << QString::number(req->request.op.operation_id, 16) << endl; +- kdDebug(500) << "Version = " << (int)(req->request.status.version[0]) << "." << (int)(req->request.status.version[1]) << endl; ++ kdDebug(500) << "Operation = 0x" << QString::number(ippGetOperation(req), 16) << endl; ++ int minorVersion; ++ int majorVersion = ippGetVersion(req, &minorVersion); ++ kdDebug(500) << "Version = " << (int)(majorVersion) << "." << (int)(minorVersion) << endl; + kdDebug(500) << endl; + +- ipp_attribute_t *attr = req->attrs; ++ ipp_attribute_t *attr = ippFirstAttribute(req); + while (attr) + { +- QString s = QString::fromLatin1("%1 (0x%2) = ").arg(attr->name).arg(attr->value_tag, 0, 16); +- for (int i=0;inum_values;i++) ++ QString s = QString::fromLatin1("%1 (0x%2) = ").arg(ippGetName(attr)).arg(ippGetValueTag(attr), 0, 16); ++ for (int i=0;ivalue_tag) ++ switch (ippGetValueTag(attr)) + { + case IPP_TAG_INTEGER: + case IPP_TAG_ENUM: +- s += ("0x"+QString::number(attr->values[i].integer, 16)); ++ s += ("0x"+QString::number(ippGetInteger(attr, i), 16)); + break; + case IPP_TAG_BOOLEAN: +- s += (attr->values[i].boolean ? "true" : "false"); ++ s += (ippGetBoolean(attr, i) ? "true" : "false"); + break; + case IPP_TAG_STRING: + case IPP_TAG_TEXT: +@@ -88,16 +90,16 @@ + case IPP_TAG_TEXTLANG: + case IPP_TAG_CHARSET: + case IPP_TAG_LANGUAGE: +- s += attr->values[i].string.text; ++ s += ippGetString(attr, i, NULL); + break; + default: + break; + } +- if (i != (attr->num_values-1)) ++ if (i != (ippGetCount(attr)-1)) + s += ", "; + } + kdDebug(500) << s << endl; +- attr = attr->next; ++ attr = ippNextAttribute(req); + } + } + +@@ -177,7 +179,7 @@ + ipp_attribute_t *attr = ippAddStrings(request_,(ipp_tag_t)group,(ipp_tag_t)type,name.latin1(),(int)(values.count()),NULL,NULL); + int i(0); + for (QStringList::ConstIterator it=values.begin(); it != values.end(); ++it, i++) +- attr->values[i].string.text = strdup((*it).local8Bit()); ++ ippSetString(request_, &attr, i, strdup((*it).local8Bit())); + } + } + +@@ -193,7 +195,7 @@ + ipp_attribute_t *attr = ippAddIntegers(request_,(ipp_tag_t)group,(ipp_tag_t)type,name.latin1(),(int)(values.count()),NULL); + int i(0); + for (QValueList::ConstIterator it=values.begin(); it != values.end(); ++it, i++) +- attr->values[i].integer = *it; ++ ippSetInteger(request_, &attr, i, *it); + } + } + +@@ -209,19 +211,19 @@ + ipp_attribute_t *attr = ippAddBooleans(request_,(ipp_tag_t)group,name.latin1(),(int)(values.count()),NULL); + int i(0); + for (QValueList::ConstIterator it=values.begin(); it != values.end(); ++it, i++) +- attr->values[i].boolean = (char)(*it); ++ ippSetBoolean(request_, &attr, i, (char)(*it)); + } + } + + void IppRequest::setOperation(int op) + { +- request_->request.op.operation_id = (ipp_op_t)op; +- request_->request.op.request_id = 1; // 0 is not RFC-compliant, should be at least 1 ++ ippSetOperation(request_, (ipp_op_t)op); ++ ippSetRequestId(request_, 1); // 0 is not RFC-compliant, should be at least 1 + } + + int IppRequest::status() + { +- return (request_ ? request_->request.status.status_code : (connect_ ? cupsLastError() : -2)); ++ return (request_ ? ippGetStatusCode(request_) : (connect_ ? cupsLastError() : -2)); + } + + QString IppRequest::statusMessage() +@@ -248,7 +250,7 @@ + ipp_attribute_t *attr = ippFindAttribute(request_, name.latin1(), (ipp_tag_t)type); + if (attr) + { +- value = attr->values[0].integer; ++ value = ippGetInteger(attr, 0); + return true; + } + else return false; +@@ -260,7 +262,7 @@ + ipp_attribute_t *attr = ippFindAttribute(request_, name.latin1(), (ipp_tag_t)type); + if (attr) + { +- value = QString::fromLocal8Bit(attr->values[0].string.text); ++ value = QString::fromLocal8Bit(ippGetString(attr, 0, NULL)); + return true; + } + else return false; +@@ -273,8 +275,8 @@ + values.clear(); + if (attr) + { +- for (int i=0;inum_values;i++) +- values.append(QString::fromLocal8Bit(attr->values[i].string.text)); ++ for (int i=0;ivalues[0].boolean; ++ value = (bool)ippGetBoolean(attr, 0); + return true; + } + else return false; +@@ -338,10 +340,10 @@ + } + + /* No printers found */ +- if ( request_ && request_->request.status.status_code == 0x406 ) ++ if ( request_ && ippGetStatusCode(request_) == 0x406 ) + return true; + +- if (!request_ || request_->state == IPP_ERROR || (request_->request.status.status_code & 0x0F00)) ++ if (!request_ || ippGetState(request_) == IPP_ERROR || (ippGetStatusCode(request_) & 0x0F00)) + return false; + + +@@ -356,36 +358,36 @@ + output << "" << i18n("Attribute") << "" << endl; + output << "" << i18n("Values") << "" << endl; + // go to the first attribute of the specified group +- ipp_attribute_t *attr = request_->attrs; +- while (attr && attr->group_tag != group) +- attr = attr->next; ++ ipp_attribute_t *attr = ippFirstAttribute(request_); ++ while (attr && ippGetGroupTag(attr) != group) ++ attr = ippNextAttribute(request_); + // print each attribute +- ipp_uchar_t *d; +- QCString dateStr; +- QDateTime dt; +- bool bg(false); +- while (attr && attr->group_tag == group) ++ const ipp_uchar_t *d; ++ QCString dateStr; ++ QDateTime dt; ++ bool bg(false); ++ while (attr && ippGetGroupTag(attr) == group) + { +- output << " \n " << attr->name << "\n " << endl; ++ output << " \n " << ippGetName(attr) << "\n " << endl; + bg = !bg; +- for (int i=0; inum_values; i++) ++ for (int i=0; ivalue_tag) ++ switch (ippGetValueTag(attr)) + { + case IPP_TAG_INTEGER: +- if (attr->name && strstr(attr->name, "time")) ++ if (ippGetName(attr) && strstr(ippGetName(attr), "time")) + { +- dt.setTime_t((unsigned int)(attr->values[i].integer)); ++ dt.setTime_t((unsigned int)(ippGetInteger(attr, i))); + output << dt.toString(); + } + else +- output << attr->values[i].integer; ++ output << ippGetInteger(attr, i); + break; + case IPP_TAG_ENUM: +- output << "0x" << hex << attr->values[i].integer << dec; ++ output << "0x" << hex << ippGetInteger(attr, i) << dec; + break; + case IPP_TAG_BOOLEAN: +- output << (attr->values[i].boolean ? i18n("True") : i18n("False")); ++ output << (ippGetBoolean(attr, i) ? i18n("True") : i18n("False")); + break; + case IPP_TAG_STRING: + case IPP_TAG_TEXTLANG: +@@ -397,18 +399,25 @@ + case IPP_TAG_CHARSET: + case IPP_TAG_LANGUAGE: + case IPP_TAG_MIMETYPE: +- output << attr->values[i].string.text; ++ output << ippGetString(attr, i, NULL); + break; + case IPP_TAG_RESOLUTION: +- output << "( " << attr->values[i].resolution.xres +- << ", " << attr->values[i].resolution.yres << " )"; ++ int xres; ++ int yres; ++ ipp_res_t units; ++ xres = ippGetResolution(attr, i, &yres, &units); ++ output << "( " << xres ++ << ", " << yres << " )"; + break; + case IPP_TAG_RANGE: +- output << "[ " << (attr->values[i].range.lower > 0 ? attr->values[i].range.lower : 1) +- << ", " << (attr->values[i].range.upper > 0 ? attr->values[i].range.upper : 65535) << " ]"; ++ int lowervalue; ++ int uppervalue; ++ lowervalue = ippGetRange(attr, i, &uppervalue); ++ output << "[ " << (lowervalue > 0 ? lowervalue : 1) ++ << ", " << (uppervalue > 0 ? uppervalue : 65535) << " ]"; + break; + case IPP_TAG_DATE: +- d = attr->values[i].date; ++ d = ippGetDate(attr, i); + dateStr.sprintf("%.4d-%.2d-%.2d, %.2d:%.2d:%.2d %c%.2d%.2d", + d[0]*256+d[1], d[2], d[3], + d[4], d[5], d[6], +@@ -418,11 +427,11 @@ + default: + continue; + } +- if (i < attr->num_values-1) ++ if (i < ippGetCount(attr)-1) + output << "
"; + } + output << "\n " << endl; +- attr = attr->next; ++ attr = ippNextAttribute(request_); + } + // end table + output << "" << endl; +@@ -438,31 +447,34 @@ + ipp_attribute_t *attr = first(); + while (attr) + { +- if (group != -1 && attr->group_tag != group) ++ if (group != -1 && ippGetGroupTag(attr) != group) + { +- attr = attr->next; ++ attr = ippNextAttribute(request_); + continue; + } + QString value; +- for (int i=0; inum_values; i++) ++ for (int i=0; ivalue_tag) ++ switch (ippGetValueTag(attr)) + { + case IPP_TAG_INTEGER: + case IPP_TAG_ENUM: +- value.append(QString::number(attr->values[i].integer)).append(","); ++ value.append(QString::number(ippGetInteger(attr, i))).append(","); + break; + case IPP_TAG_BOOLEAN: +- value.append((attr->values[i].boolean ? "true" : "false")).append(","); ++ value.append((ippGetBoolean(attr, i) ? "true" : "false")).append(","); + break; + case IPP_TAG_RANGE: +- if (attr->values[i].range.lower > 0) +- value.append(QString::number(attr->values[i].range.lower)); +- if (attr->values[i].range.lower != attr->values[i].range.upper) ++ int lowervalue; ++ int uppervalue; ++ lowervalue = ippGetRange(attr, i, &uppervalue); ++ if (lowervalue > 0) ++ value.append(QString::number(lowervalue)); ++ if (lowervalue != uppervalue) + { + value.append("-"); +- if (attr->values[i].range.upper > 0) +- value.append(QString::number(attr->values[i].range.upper)); ++ if (uppervalue > 0) ++ value.append(QString::number(uppervalue)); + } + value.append(","); + break; +@@ -476,7 +488,7 @@ + case IPP_TAG_TEXTLANG: + case IPP_TAG_CHARSET: + case IPP_TAG_LANGUAGE: +- value.append(QString::fromLocal8Bit(attr->values[i].string.text)).append(","); ++ value.append(QString::fromLocal8Bit(ippGetString(attr, i, NULL))).append(","); + break; + default: + break; +@@ -484,8 +496,8 @@ + } + if (!value.isEmpty()) + value.truncate(value.length()-1); +- opts[QString::fromLocal8Bit(attr->name)] = value; +- attr = attr->next; ++ opts[QString::fromLocal8Bit(ippGetName(attr))] = value; ++ attr = ippNextAttribute(request_); + } + } + return opts; +@@ -542,3 +554,7 @@ + } + #endif + } ++ ++ ++ipp_attribute_t* IppRequest::first() ++{ return (request_ ? ippFirstAttribute(request_) : NULL); } +diff -Naur kdelibs-3.5.10-orig/kdeprint/cups/ipprequest.h kdelibs-3.5.10/kdeprint/cups/ipprequest.h +--- kdelibs-3.5.10-orig/kdeprint/cups/ipprequest.h 2012-10-06 14:49:37.521406729 -0400 ++++ kdelibs-3.5.10/kdeprint/cups/ipprequest.h 2012-10-06 15:06:05.581489574 -0400 +@@ -72,7 +72,7 @@ + bool keyword(const QString& name, QStringList& value); + bool mime(const QString& name, QString& value); + ipp_attribute_t* first(); +- ipp_attribute_t* last(); ++ ipp_t* request(); + QMap toMap(int group = -1); + void setMap(const QMap& opts); + +@@ -178,12 +178,6 @@ + inline bool IppRequest::doRequest(const QString& res) + { return doFileRequest(res); } + +-inline ipp_attribute_t* IppRequest::first() +-{ return (request_ ? request_->attrs : NULL); } +- +-inline ipp_attribute_t* IppRequest::last() +-{ return (request_ ? request_->last : NULL); } +- + inline void IppRequest::setHost(const QString& host) + { host_ = host; } + +@@ -193,4 +187,7 @@ + inline void IppRequest::dump(int state) + { dump_ = state; } + ++inline ipp_t* IppRequest::request() ++{ return request_; } ++ + #endif +diff -Naur kdelibs-3.5.10-orig/kdeprint/cups/kmcupsjobmanager.cpp kdelibs-3.5.10/kdeprint/cups/kmcupsjobmanager.cpp +--- kdelibs-3.5.10-orig/kdeprint/cups/kmcupsjobmanager.cpp 2012-10-06 14:49:37.521406729 -0400 ++++ kdelibs-3.5.10/kdeprint/cups/kmcupsjobmanager.cpp 2012-10-06 15:13:31.451859386 -0400 +@@ -36,6 +36,8 @@ + #include + #include + ++#include "config.h" ++ + KMCupsJobManager::KMCupsJobManager(QObject *parent, const char *name, const QStringList & /*args*/) + : KMJobManager(parent,name) + { +@@ -166,17 +168,18 @@ + void KMCupsJobManager::parseListAnswer(IppRequest& req, KMPrinter *pr) + { + ipp_attribute_t *attr = req.first(); ++ ipp_attribute_t *nextAttr; + KMJob *job = new KMJob(); + QString uri; + while (attr) + { +- QString name(attr->name); +- if (name == "job-id") job->setId(attr->values[0].integer); +- else if (name == "job-uri") job->setUri(QString::fromLocal8Bit(attr->values[0].string.text)); +- else if (name == "job-name") job->setName(QString::fromLocal8Bit(attr->values[0].string.text)); ++ QString name(ippGetName(attr)); ++ if (name == "job-id") job->setId(ippGetInteger(attr, 0)); ++ else if (name == "job-uri") job->setUri(QString::fromLocal8Bit(ippGetString(attr, 0, NULL))); ++ else if (name == "job-name") job->setName(QString::fromLocal8Bit(ippGetString(attr, 0, NULL))); + else if (name == "job-state") + { +- switch (attr->values[0].integer) ++ switch (ippGetInteger(attr, 0)) + { + case IPP_JOB_PENDING: + job->setState(KMJob::Queued); +@@ -204,29 +207,30 @@ + break; + } + } +- else if (name == "job-k-octets") job->setSize(attr->values[0].integer); +- else if (name == "job-originating-user-name") job->setOwner(QString::fromLocal8Bit(attr->values[0].string.text)); +- else if (name == "job-k-octets-completed") job->setProcessedSize(attr->values[0].integer); +- else if (name == "job-media-sheets") job->setPages(attr->values[0].integer); +- else if (name == "job-media-sheets-completed") job->setProcessedPages(attr->values[0].integer); ++ else if (name == "job-k-octets") job->setSize(ippGetInteger(attr, 0)); ++ else if (name == "job-originating-user-name") job->setOwner(QString::fromLocal8Bit(ippGetString(attr, 0, NULL))); ++ else if (name == "job-k-octets-completed") job->setProcessedSize(ippGetInteger(attr, 0)); ++ else if (name == "job-media-sheets") job->setPages(ippGetInteger(attr, 0)); ++ else if (name == "job-media-sheets-completed") job->setProcessedPages(ippGetInteger(attr, 0)); + else if (name == "job-printer-uri" && !pr->isRemote()) + { +- QString str(attr->values[0].string.text); ++ QString str(ippGetString(attr, 0, NULL)); + int p = str.findRev('/'); + if (p != -1) + job->setPrinter(str.mid(p+1)); + } + else if (name == "job-priority") + { +- job->setAttribute(0, QString::fromLatin1("%1").arg(attr->values[0].integer, 3)); ++ job->setAttribute(0, QString::fromLatin1("%1").arg(ippGetInteger(attr, 0), 3)); + } + else if (name == "job-billing") + { + job->setAttributeCount(2); +- job->setAttribute(1, QString::fromLocal8Bit(attr->values[0].string.text)); ++ job->setAttribute(1, QString::fromLocal8Bit(ippGetString(attr, 0, NULL))); + } + +- if (name.isEmpty() || attr == req.last()) ++ nextAttr = ippNextAttribute(req.request()); ++ if (name.isEmpty() || (!nextAttr)) + { + if (job->printer().isEmpty()) + job->setPrinter(pr->printerName()); +@@ -234,8 +238,7 @@ + addJob(job); // don't use job after this call !!! + job = new KMJob(); + } +- +- attr = attr->next; ++ attr = nextAttr; + } + delete job; + } +diff -Naur kdelibs-3.5.10-orig/kdeprint/cups/kmcupsmanager.cpp kdelibs-3.5.10/kdeprint/cups/kmcupsmanager.cpp +--- kdelibs-3.5.10-orig/kdeprint/cups/kmcupsmanager.cpp 2012-10-06 14:49:37.521406729 -0400 ++++ kdelibs-3.5.10/kdeprint/cups/kmcupsmanager.cpp 2012-10-06 15:14:22.311521604 -0400 +@@ -476,19 +476,20 @@ + void KMCupsManager::processRequest(IppRequest* req) + { + ipp_attribute_t *attr = req->first(); ++ ipp_attribute_t *nextAttr; + KMPrinter *printer = new KMPrinter(); + while (attr) + { +- QString attrname(attr->name); ++ QString attrname(ippGetName(attr)); + if (attrname == "printer-name") + { +- QString value = QString::fromLocal8Bit(attr->values[0].string.text); ++ QString value = QString::fromLocal8Bit(ippGetString(attr, 0, NULL)); + printer->setName(value); + printer->setPrinterName(value); + } + else if (attrname == "printer-type") + { +- int value = attr->values[0].integer; ++ int value = ippGetInteger(attr, 0); + printer->setType(0); + printer->addType(((value & CUPS_PRINTER_CLASS) || (value & CUPS_PRINTER_IMPLICIT) ? KMPrinter::Class : KMPrinter::Printer)); + if ((value & CUPS_PRINTER_REMOTE)) printer->addType(KMPrinter::Remote); +@@ -499,7 +500,7 @@ + } + else if (attrname == "printer-state") + { +- switch (attr->values[0].integer) ++ switch (ippGetInteger(attr, 0)) + { + case IPP_PRINTER_IDLE: printer->setState(KMPrinter::Idle); break; + case IPP_PRINTER_PROCESSING: printer->setState(KMPrinter::Processing); break; +@@ -508,22 +509,24 @@ + } + else if (attrname == "printer-uri-supported") + { +- printer->setUri(KURL(attr->values[0].string.text)); ++ printer->setUri(KURL(ippGetString(attr, 0, NULL))); + } + else if (attrname == "printer-location") + { +- printer->setLocation(QString::fromLocal8Bit(attr->values[0].string.text)); ++ printer->setLocation(QString::fromLocal8Bit(ippGetString(attr, 0, NULL))); + } + else if (attrname == "printer-is-accepting-jobs") + { +- printer->setAcceptJobs(attr->values[0].boolean); ++ printer->setAcceptJobs(ippGetBoolean(attr, 0)); + } +- if (attrname.isEmpty() || attr == req->last()) ++ ++ nextAttr = ippNextAttribute(req->request()); ++ if (attrname.isEmpty() || (!nextAttr)) + { + addPrinter(printer); + printer = new KMPrinter(); + } +- attr = attr->next; ++ attr = nextAttr; + } + delete printer; + } +@@ -817,6 +820,7 @@ + { + QStringList list; + IppRequest req; ++ ipp_attribute_t *nextAttr; + req.setOperation(CUPS_GET_DEVICES); + if (req.doRequest("/")) + { +@@ -824,12 +828,13 @@ + ipp_attribute_t *attr = req.first(); + while (attr) + { +- QString attrname(attr->name); +- if (attrname == "device-info") desc = attr->values[0].string.text; +- else if (attrname == "device-make-and-model") printer = attr->values[0].string.text; +- else if (attrname == "device-uri") uri = attr->values[0].string.text; +- else if ( attrname == "device-class" ) cl = attr->values[ 0 ].string.text; +- if (attrname.isEmpty() || attr == req.last()) ++ QString attrname(ippGetName(attr)); ++ if (attrname == "device-info") desc = ippGetString(attr, 0, NULL); ++ else if (attrname == "device-make-and-model") printer = ippGetString(attr, 0, NULL); ++ else if (attrname == "device-uri") uri = ippGetString(attr, 0, NULL); ++ else if ( attrname == "device-class" ) cl = ippGetString(attr, 0, NULL); ++ nextAttr = ippNextAttribute(req.request()); ++ if (attrname.isEmpty() || (!nextAttr)) + { + if (!uri.isEmpty()) + { +@@ -838,7 +843,7 @@ + } + uri = desc = printer = cl = QString::null; + } +- attr = attr->next; ++ attr = nextAttr; + } + } + return list; +diff -Naur kdelibs-3.5.10-orig/kdeprint/cups/kmcupsuimanager.cpp kdelibs-3.5.10/kdeprint/cups/kmcupsuimanager.cpp +--- kdelibs-3.5.10-orig/kdeprint/cups/kmcupsuimanager.cpp 2012-10-06 14:49:37.521406729 -0400 ++++ kdelibs-3.5.10/kdeprint/cups/kmcupsuimanager.cpp 2012-10-06 15:14:55.177970017 -0400 +@@ -60,6 +60,8 @@ + #include + #include + ++#include "config.h" ++ + KMCupsUiManager::KMCupsUiManager(QObject *parent, const char *name, const QStringList & /*args*/) + : KMUiManager(parent,name) + { +@@ -143,22 +145,22 @@ + ipp_attribute_t *attr = req.first(); + while (attr) + { +- if (attr->name && strcmp(attr->name,"device-uri") == 0) ++ if (ippGetName(attr) && strcmp(ippGetName(attr),"device-uri") == 0) + { +- if (strncmp(attr->values[0].string.text,"socket",6) == 0) backend->enableBackend(KMWizard::TCP,true); +- else if (strncmp(attr->values[0].string.text,"parallel",8) == 0) backend->enableBackend(KMWizard::Local,true); +- else if (strncmp(attr->values[0].string.text,"serial",6) == 0) backend->enableBackend(KMWizard::Local,true); +- else if (strncmp(attr->values[0].string.text,"smb",3) == 0) backend->enableBackend(KMWizard::SMB,true); +- else if (strncmp(attr->values[0].string.text,"lpd",3) == 0) backend->enableBackend(KMWizard::LPD,true); +- else if (strncmp(attr->values[0].string.text,"usb",3) == 0) backend->enableBackend(KMWizard::Local,true); +- else if (strncmp(attr->values[0].string.text,"http",4) == 0 || strncmp(attr->values[0].string.text,"ipp",3) == 0) ++ if (strncmp(ippGetString(attr, 0, NULL),"socket",6) == 0) backend->enableBackend(KMWizard::TCP,true); ++ else if (strncmp(ippGetString(attr, 0, NULL),"parallel",8) == 0) backend->enableBackend(KMWizard::Local,true); ++ else if (strncmp(ippGetString(attr, 0, NULL),"serial",6) == 0) backend->enableBackend(KMWizard::Local,true); ++ else if (strncmp(ippGetString(attr, 0, NULL),"smb",3) == 0) backend->enableBackend(KMWizard::SMB,true); ++ else if (strncmp(ippGetString(attr, 0, NULL),"lpd",3) == 0) backend->enableBackend(KMWizard::LPD,true); ++ else if (strncmp(ippGetString(attr, 0, NULL),"usb",3) == 0) backend->enableBackend(KMWizard::Local,true); ++ else if (strncmp(ippGetString(attr, 0, NULL),"http",4) == 0 || strncmp(ippGetString(attr, 0, NULL),"ipp",3) == 0) + { + backend->enableBackend(KMWizard::IPP,true); + backend->enableBackend(KMWizard::Custom+1,true); + } +- else if (strncmp(attr->values[0].string.text,"fax",3) == 0) backend->enableBackend(KMWizard::Custom+2,true); ++ else if (strncmp(ippGetString(attr, 0, NULL),"fax",3) == 0) backend->enableBackend(KMWizard::Custom+2,true); + } +- attr = attr->next; ++ attr = ippNextAttribute(req.request()); + } + backend->enableBackend(KMWizard::Class, true); + backend->enableBackend(KMWizard::Custom+5, true); +diff -Naur kdelibs-3.5.10-orig/kdeprint/cups/kmwfax.cpp kdelibs-3.5.10/kdeprint/cups/kmwfax.cpp +--- kdelibs-3.5.10-orig/kdeprint/cups/kmwfax.cpp 2012-10-06 14:49:37.521406729 -0400 ++++ kdelibs-3.5.10/kdeprint/cups/kmwfax.cpp 2012-10-06 15:15:28.044418449 -0400 +@@ -30,6 +30,8 @@ + #include + #include + ++#include "config.h" ++ + KMWFax::KMWFax(QWidget *parent, const char *name) + : KMWizardPage(parent,name) + { +@@ -55,11 +57,11 @@ + ipp_attribute_t *attr = req.first(); + while (attr) + { +- if (attr->name && strcmp(attr->name,"device-uri") == 0 && strncmp(attr->values[0].string.text,"fax",3) == 0) ++ if (ippGetName(attr) && strcmp(ippGetName(attr),"device-uri") == 0 && strncmp(ippGetString(attr, 0, NULL),"fax",3) == 0) + { +- m_list->insertItem(SmallIcon("blockdevice"),QString::fromLatin1(attr->values[0].string.text)); ++ m_list->insertItem(SmallIcon("blockdevice"),QString::fromLatin1(ippGetString(attr, 0, NULL))); + } +- attr = attr->next; ++ attr = ippNextAttribute(req.request()); + } + } + } +diff -Naur kdelibs-3.5.10-orig/kdeprint/cups/kmwippselect.cpp kdelibs-3.5.10/kdeprint/cups/kmwippselect.cpp +--- kdelibs-3.5.10-orig/kdeprint/cups/kmwippselect.cpp 2012-10-06 14:49:37.521406729 -0400 ++++ kdelibs-3.5.10/kdeprint/cups/kmwippselect.cpp 2012-10-06 15:15:56.867560417 -0400 +@@ -29,6 +29,8 @@ + #include + #include + ++#include "config.h" ++ + KMWIppSelect::KMWIppSelect(QWidget *parent, const char *name) + : KMWizardPage(parent,name) + { +@@ -83,9 +85,9 @@ + ipp_attribute_t *attr = req.first(); + while (attr) + { +- if (attr->name && strcmp(attr->name,"printer-name") == 0) +- m_list->insertItem(SmallIcon("kdeprint_printer"),QString::fromLatin1(attr->values[0].string.text)); +- attr = attr->next; ++ if (ippGetName(attr) && strcmp(ippGetName(attr),"printer-name") == 0) ++ m_list->insertItem(SmallIcon("kdeprint_printer"),QString::fromLatin1(ippGetString(attr, 0, NULL))); ++ attr = ippNextAttribute(req.request()); + } + m_list->sort(); + } -- cgit v1.2.3-54-g00ecf