Unbreak with new cups
PR: ports/188451 Obtained from: https://rt.cpan.org/Public/Bug/Display.html?id=78583 With hat: portmgr
This commit is contained in:
parent
01a428af4e
commit
d1dc06cf91
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=351638
2 changed files with 167 additions and 1 deletions
|
@ -12,7 +12,8 @@ MAINTAINER= vg@FreeBSD.org
|
|||
COMMENT= Interface to the CUPS API
|
||||
|
||||
BUILD_DEPENDS= cups-config:${PORTSDIR}/print/cups-client
|
||||
LIB_DEPENDS= libcupsimage.so:${PORTSDIR}/print/cups-image
|
||||
LIB_DEPENDS= libcupsimage.so:${PORTSDIR}/print/cups-image \
|
||||
libcupsfilters.so:${PORTSDIR}/print/cups-filters
|
||||
|
||||
USES= perl5
|
||||
USE_PERL5= configure
|
||||
|
|
165
print/p5-Net-CUPS/files/patch-CUPS.xs
Normal file
165
print/p5-Net-CUPS/files/patch-CUPS.xs
Normal file
|
@ -0,0 +1,165 @@
|
|||
Patch obtained from: https://rt.cpan.org/Public/Bug/Display.html?id=78583
|
||||
|
||||
--- ./CUPS.xs.orig 2009-07-30 13:42:59.000000000 +0000
|
||||
+++ ./CUPS.xs 2014-04-20 19:18:15.000000000 +0000
|
||||
@@ -5,9 +5,17 @@
|
||||
#include "ppport.h"
|
||||
|
||||
#include <cups/cups.h>
|
||||
+#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5)
|
||||
+#define HAVE_CUPS_1_6 1
|
||||
+#endif
|
||||
+
|
||||
/*#include <cups/backend.h>*/
|
||||
#include <cups/http.h>
|
||||
-#include <cups/image.h>
|
||||
+#ifdef HAVE_CUPS_1_6
|
||||
+ #include <cupsfilters/image.h>
|
||||
+#else
|
||||
+ #include <cups/image.h>
|
||||
+#endif
|
||||
#include <cups/ipp.h>
|
||||
#include <cups/ppd.h>
|
||||
#include <cups/file.h>
|
||||
@@ -19,6 +27,17 @@
|
||||
#include "const-c.inc"
|
||||
#include "packer.c"
|
||||
|
||||
+#ifndef HAVE_CUPS_1_6
|
||||
+#define ippGetGroupTag(attr) attr->group_tag
|
||||
+#define ippGetName(attr) attr->name
|
||||
+#define ippGetValueTag(attr) attr->value_tag
|
||||
+#define ippGetInteger(attr, element) attr->values[element].integer
|
||||
+#define ippGetString(attr, element, language) attr->values[element].string.text
|
||||
+#define ippGetStatusCode(ipp) ipp->request.status.status_code
|
||||
+#define ippFirstAttribute(ipp) ipp->current = ipp->attrs
|
||||
+#define ippNextAttribute(ipp) ipp->current = ipp->current->next
|
||||
+#endif
|
||||
+
|
||||
static SV *password_cb = (SV*) NULL;
|
||||
|
||||
const char *
|
||||
@@ -200,7 +219,7 @@
|
||||
if (response != NULL) {
|
||||
attr = ippFindAttribute(response, "ppd-make", IPP_TAG_TEXT);
|
||||
rv = sv_newmortal();
|
||||
- sv_setpv(rv, attr->values[0].string.text);
|
||||
+ sv_setpv(rv, ippGetString(attr, 0, NULL));
|
||||
XPUSHs(rv);
|
||||
count++;
|
||||
|
||||
@@ -211,7 +230,7 @@
|
||||
}
|
||||
|
||||
rv = sv_newmortal();
|
||||
- sv_setpv(rv, attr->values[0].string.text);
|
||||
+ sv_setpv(rv, ippGetString(attr, 0, NULL));
|
||||
XPUSHs(rv);
|
||||
count++;
|
||||
}
|
||||
@@ -252,7 +271,7 @@
|
||||
"ppd-make-and-model",
|
||||
IPP_TAG_TEXT);
|
||||
rv = sv_newmortal();
|
||||
- sv_setpv(rv, attr->values[0].string.text);
|
||||
+ sv_setpv(rv, ippGetString(attr, 0, NULL));
|
||||
XPUSHs(rv);
|
||||
count++;
|
||||
while (attr != NULL) {
|
||||
@@ -263,7 +282,7 @@
|
||||
break;
|
||||
}
|
||||
rv = sv_newmortal();
|
||||
- sv_setpv(rv, attr->values[0].string.text);
|
||||
+ sv_setpv(rv, ippGetString(attr, 0, NULL));
|
||||
XPUSHs(rv);
|
||||
count++;
|
||||
}
|
||||
@@ -356,14 +375,14 @@
|
||||
if (response != NULL) {
|
||||
attr = ippFindAttribute(response, "ppd-name", IPP_TAG_NAME );
|
||||
while ((attr != NULL) && (i < 1)) {
|
||||
- tmpppd = attr->values[0].string.text;
|
||||
+ tmpppd = ippGetString(attr, 0, NULL);
|
||||
attr = ippFindNextAttribute(response,
|
||||
"ppd-make",
|
||||
IPP_TAG_TEXT);
|
||||
attr = ippFindNextAttribute(response,
|
||||
"ppd-make-and-model",
|
||||
IPP_TAG_TEXT);
|
||||
- if (strcmp(attr->values[0].string.text, ppdfilename) == 0 ) {
|
||||
+ if (strcmp(ippGetString(attr, 0, NULL), ppdfilename) == 0 ) {
|
||||
/* return tmpppd; */
|
||||
strcpy(test, tmpppd);
|
||||
break;
|
||||
@@ -410,12 +429,12 @@
|
||||
attr = ippFindNextAttribute(response, "printer-name", IPP_TAG_NAME);
|
||||
|
||||
while (attr != NULL) {
|
||||
- if (strcmp(attr->values[0].string.text, device) == 0) {
|
||||
+ if (strcmp(ippGetString(attr, 0, NULL), device) == 0) {
|
||||
attr = ippFindNextAttribute( response,
|
||||
attribute,
|
||||
attribute_type);
|
||||
rv = sv_newmortal();
|
||||
- sv_setpv( rv, attr->values[0].string.text);
|
||||
+ sv_setpv( rv, ippGetString(attr, 0, NULL));
|
||||
XPUSHs( rv );
|
||||
break;
|
||||
}
|
||||
@@ -858,15 +877,15 @@
|
||||
SV* rv = NULL;
|
||||
int count = 0;
|
||||
ipp_attribute_t* attr = NULL;
|
||||
- for (attr = ipp->attrs; attr != NULL; attr = attr->next)
|
||||
+ for (attr = ippFirstAttribute(ipp); attr != NULL; attr = ippNextAttribute(ipp))
|
||||
{
|
||||
- while (attr != NULL && attr->group_tag != IPP_TAG_JOB)
|
||||
- attr = attr->next;
|
||||
+ while (attr != NULL && ippGetGroupTag(attr) != IPP_TAG_JOB)
|
||||
+ attr = ippNextAttribute(ipp);
|
||||
|
||||
if (attr == NULL)
|
||||
break;
|
||||
rv = sv_newmortal();
|
||||
- sv_setpv( rv, attr->name );
|
||||
+ sv_setpv( rv, ippGetName(attr) );
|
||||
XPUSHs( rv );
|
||||
count++;
|
||||
}
|
||||
@@ -880,27 +899,27 @@
|
||||
SV* rv = NULL;
|
||||
int count = 0;
|
||||
ipp_attribute_t* attr = NULL;
|
||||
- for (attr = ipp->attrs; attr != NULL; attr = attr->next)
|
||||
+ for (attr = ippFirstAttribute(ipp); attr != NULL; attr = ippNextAttribute(ipp))
|
||||
{
|
||||
- while (attr != NULL && attr->group_tag != IPP_TAG_JOB)
|
||||
- attr = attr->next;
|
||||
+ while (attr != NULL && ippGetGroupTag(attr) != IPP_TAG_JOB)
|
||||
+ attr = ippNextAttribute(ipp);
|
||||
|
||||
if (attr == NULL)
|
||||
break;
|
||||
|
||||
- if( !strcmp( attr->name, name ) )
|
||||
+ if( !strcmp( ippGetName(attr), name ) )
|
||||
{
|
||||
rv = sv_newmortal();
|
||||
- if( ( attr->value_tag == IPP_TAG_INTEGER ) ||
|
||||
- ( attr->value_tag == IPP_TAG_ENUM ) )
|
||||
+ if( ( ippGetValueTag(attr) == IPP_TAG_INTEGER ) ||
|
||||
+ ( ippGetValueTag(attr) == IPP_TAG_ENUM ) )
|
||||
{
|
||||
/* We have a number with any luck ... */
|
||||
- sv_setiv( rv, attr->values[0].integer );
|
||||
+ sv_setiv( rv, ippGetInteger(attr, 0) );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We have a string ... maybe ... try to set it. */
|
||||
- sv_setpv( rv, attr->values[0].string.text );
|
||||
+ sv_setpv( rv, ippGetString(attr, 0, NULL) );
|
||||
}
|
||||
|
||||
XPUSHs( rv );
|
Loading…
Reference in a new issue