Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 320244 Details for
Bug 428672
net-print/hplip-3.12.6 compilation error - "dereferencing pointer to incomplete type" (prnt/cupsext/cupsext.c)
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Reworked patch
hplip-3.12.6-ipp_accessors.patch (text/plain), 14.88 KB, created by
Daniel Pielmeier
on 2012-08-04 07:31:02 UTC
(
hide
)
Description:
Reworked patch
Filename:
MIME Type:
Creator:
Daniel Pielmeier
Created:
2012-08-04 07:31:02 UTC
Size:
14.88 KB
patch
obsolete
>diff -Naur hplip-3.12.6_old/prnt/cupsext/cupsext.c hplip-3.12.6/prnt/cupsext/cupsext.c >--- hplip-3.12.6_old/prnt/cupsext/cupsext.c 2012-08-04 09:18:18.388330038 +0200 >+++ hplip-3.12.6/prnt/cupsext/cupsext.c 2012-08-04 09:18:27.855181327 +0200 >@@ -87,6 +87,46 @@ > #define PY_SSIZE_T_MIN INT_MIN > #endif > >+#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5) >+#define HAVE_CUPS_1_6 1 >+#endif >+ >+#ifndef HAVE_CUPS_1_6 >+#define ippGetCount(attr) attr->num_values >+#define ippGetGroupTag(attr) attr->group_tag >+#define ippGetValueTag(attr) attr->value_tag >+#define ippGetName(attr) attr->name >+#define ippGetBoolean(attr, element) attr->values[element].boolean >+#define ippGetInteger(attr, element) attr->values[element].integer >+#define ippGetStatusCode(ipp) ipp->request.status.status_code >+#define ippGetString(attr, element, language) attr->values[element].string.text >+ >+static ipp_attribute_t * ippFirstAttribute( ipp_t *ipp ) >+{ >+ if (!ipp) >+ return (NULL); >+ return (ipp->current = ipp->attrs); >+} >+ >+static ipp_attribute_t * ippNextAttribute( ipp_t *ipp ) >+{ >+ if (!ipp || !ipp->current) >+ return (NULL); >+ return (ipp->current = ipp->current->next); >+} >+ >+static int ippSetOperation( ipp_t *ipp, ipp_op_t op ) >+{ >+ ipp->request.op.operation_id = op; >+ return (1); >+} >+ >+static int ippSetRequestId( ipp_t *ipp, int request_id ) >+{ >+ ipp->request.any.request_id = request_id; >+ return (1); >+} >+#endif > > int g_num_options = 0; > cups_option_t * g_options; >@@ -333,8 +373,8 @@ > request = ippNew(); > language = cupsLangDefault(); > >- request->request.op.operation_id = CUPS_GET_PRINTERS; >- request->request.any.request_id = 1; >+ ippSetOperation( request, CUPS_GET_PRINTERS ); >+ ippSetRequestId ( request, 1); > > ippAddString( request, IPP_TAG_OPERATION, IPP_TAG_CHARSET, > "attributes-charset", NULL, cupsLangEncoding( language ) ); >@@ -378,10 +418,10 @@ > ipp_pstate_t state; > int i = 0; > >- for ( attr = response->attrs; attr != NULL; attr = attr->next ) >+ for ( attr = ippFirstAttribute( response ); attr != NULL; attr = ippNextAttribute( response ) ) > { >- while ( attr != NULL && attr->group_tag != IPP_TAG_PRINTER ) >- attr = attr->next; >+ while ( attr != NULL && ippGetGroupTag( attr ) != IPP_TAG_PRINTER ) >+ attr = ippNextAttribute( response ); > > if ( attr == NULL ) > break; >@@ -390,41 +430,41 @@ > state = IPP_PRINTER_IDLE; > accepting = 0; > >- while ( attr != NULL && attr->group_tag == IPP_TAG_PRINTER ) >+ while ( attr != NULL && ippGetGroupTag( attr ) == IPP_TAG_PRINTER ) > { >- if ( strcmp( attr->name, "printer-name" ) == 0 && >- attr->value_tag == IPP_TAG_NAME ) >- name = attr->values[ 0 ].string.text; >- >- else if ( strcmp( attr->name, "device-uri" ) == 0 && >- attr->value_tag == IPP_TAG_URI ) >- device_uri = attr->values[ 0 ].string.text; >- >- else if ( strcmp( attr->name, "printer-uri-supported" ) == 0 && >- attr->value_tag == IPP_TAG_URI ) >- printer_uri = attr->values[ 0 ].string.text; >- >- else if ( strcmp( attr->name, "printer-info" ) == 0 && >- attr->value_tag == IPP_TAG_TEXT ) >- info = attr->values[ 0 ].string.text; >- >- else if ( strcmp( attr->name, "printer-location" ) == 0 && >- attr->value_tag == IPP_TAG_TEXT ) >- location = attr->values[ 0 ].string.text; >- >- else if ( strcmp( attr->name, "printer-make-and-model" ) == 0 && >- attr->value_tag == IPP_TAG_TEXT ) >- make_model = attr->values[ 0 ].string.text; >- >- else if ( strcmp( attr->name, "printer-state" ) == 0 && >- attr->value_tag == IPP_TAG_ENUM ) >- state = ( ipp_pstate_t ) attr->values[ 0 ].integer; >- >- else if (!strcmp(attr->name, "printer-is-accepting-jobs") && >- attr->value_tag == IPP_TAG_BOOLEAN) >- accepting = attr->values[ 0 ].boolean; >+ if ( strcmp( ippGetName( attr ), "printer-name" ) == 0 && >+ ippGetValueTag( attr ) == IPP_TAG_NAME ) >+ name = ippGetString( attr, 0, NULL ); >+ >+ else if ( strcmp( ippGetName( attr ), "device-uri" ) == 0 && >+ ippGetValueTag( attr ) == IPP_TAG_URI ) >+ device_uri = ippGetString( attr, 0, NULL ); >+ >+ else if ( strcmp( ippGetName( attr ), "printer-uri-supported" ) == 0 && >+ ippGetValueTag( attr ) == IPP_TAG_URI ) >+ printer_uri = ippGetString( attr, 0, NULL ); >+ >+ else if ( strcmp( ippGetName( attr ), "printer-info" ) == 0 && >+ ippGetValueTag( attr ) == IPP_TAG_TEXT ) >+ info = ippGetString( attr, 0, NULL ); >+ >+ else if ( strcmp( ippGetName( attr ), "printer-location" ) == 0 && >+ ippGetValueTag( attr ) == IPP_TAG_TEXT ) >+ location = ippGetString( attr, 0, NULL ); >+ >+ else if ( strcmp( ippGetName( attr ), "printer-make-and-model" ) == 0 && >+ ippGetValueTag( attr ) == IPP_TAG_TEXT ) >+ make_model = ippGetString( attr, 0, NULL ); >+ >+ else if ( strcmp( ippGetName( attr ), "printer-state" ) == 0 && >+ ippGetValueTag( attr ) == IPP_TAG_ENUM ) >+ state = ( ipp_pstate_t ) ippGetInteger( attr, 0 ); >+ >+ else if (!strcmp(ippGetName( attr ), "printer-is-accepting-jobs") && >+ ippGetValueTag( attr ) == IPP_TAG_BOOLEAN) >+ accepting = ippGetBoolean( attr, 0 ); > >- attr = attr->next; >+ attr = ippNextAttribute( response ); > } > > if ( device_uri == NULL ) >@@ -522,8 +562,8 @@ > request = ippNew(); > language = cupsLangDefault(); > >- request->request.op.operation_id = CUPS_ADD_PRINTER; >- request->request.any.request_id = 1; >+ ippSetOperation( request, CUPS_ADD_PRINTER ); >+ ippSetRequestId ( request, 1 ); > > ippAddString( request, IPP_TAG_OPERATION, IPP_TAG_CHARSET, > "attributes-charset", NULL, cupsLangEncoding( language ) ); >@@ -568,7 +608,7 @@ > } > else > { >- status = response->request.status.status_code; >+ status = ippGetStatusCode( response ); > //ippDelete( response ); > r = 1; > } >@@ -631,8 +671,8 @@ > */ > request = ippNew(); > >- request->request.op.operation_id = CUPS_DELETE_PRINTER; >- request->request.op.request_id = 1; >+ ippSetOperation( request, CUPS_DELETE_PRINTER ); >+ ippSetRequestId ( request, 1 ); > > language = cupsLangDefault(); > >@@ -650,7 +690,7 @@ > */ > response = cupsDoRequest( http, request, "/admin/" ); > >- if ( ( response != NULL ) && ( response->request.status.status_code <= IPP_OK_CONFLICT ) ) >+ if ( ( response != NULL ) && ( ippGetStatusCode( response ) <= IPP_OK_CONFLICT ) ) > { > r = 1; > } >@@ -721,8 +761,8 @@ > > request = ippNew(); > >- request->request.op.operation_id = CUPS_SET_DEFAULT; >- request->request.op.request_id = 1; >+ ippSetOperation( request, CUPS_SET_DEFAULT ); >+ ippSetRequestId ( request, 1 ); > > language = cupsLangDefault(); > >@@ -743,7 +783,7 @@ > > response = cupsDoRequest( http, request, "/admin/" ); > >- if ( ( response != NULL ) && ( response->request.status.status_code <= IPP_OK_CONFLICT ) ) >+ if ( ( response != NULL ) && ( ippGetStatusCode( response ) <= IPP_OK_CONFLICT ) ) > { > r = 1; > } >@@ -797,8 +837,8 @@ > > request = ippNew(); > >- request->request.op.operation_id = op; >- request->request.op.request_id = 1; >+ ippSetOperation( request, op ); >+ ippSetRequestId ( request, 1 ); > > language = cupsLangDefault(); > >@@ -822,7 +862,7 @@ > > response = cupsDoRequest(http, request, "/admin/"); > >- if (( response != NULL ) && (response->request.status.status_code <= IPP_OK_CONFLICT)) >+ if (( response != NULL ) && (ippGetStatusCode( response ) <= IPP_OK_CONFLICT)) > { > r = 1; > } >@@ -837,7 +877,7 @@ > if ( response != NULL ) > ippDelete( response ); > >- return Py_BuildValue( "i", r );; >+ return Py_BuildValue( "i", r ); > } > > >@@ -1116,8 +1156,8 @@ > > request = ippNew(); > >- request->request.op.operation_id = CUPS_GET_PPDS; >- request->request.op.request_id = 1; >+ ippSetOperation( request, CUPS_GET_PPDS ); >+ ippSetRequestId ( request, 1 ); > > language = cupsLangDefault(); > >@@ -1143,43 +1183,43 @@ > if ((response = cupsDoRequest(http, request, "/")) != NULL) > { > >- for (attr = response->attrs; attr; attr = attr->next) >+ for (attr = ippFirstAttribute( response ); attr; attr = ippNextAttribute( response )) > { > PyObject *dict; > char *ppdname = NULL; > >- while (attr && attr->group_tag != IPP_TAG_PRINTER) >- attr = attr->next; >+ while (attr && ippGetGroupTag( attr ) != IPP_TAG_PRINTER) >+ attr = ippNextAttribute( response ); > > if (!attr) > break; > > dict = PyDict_New (); > >- for (; attr && attr->group_tag == IPP_TAG_PRINTER; attr = attr->next) >+ for (; attr && ippGetGroupTag( attr ) == IPP_TAG_PRINTER; attr = ippNextAttribute( response )) > { > PyObject *val = NULL; > >- if (!strcmp (attr->name, "ppd-name") && attr->value_tag == IPP_TAG_NAME) >+ if (!strcmp (ippGetName( attr ), "ppd-name") && ippGetValueTag( attr ) == IPP_TAG_NAME) > { >- ppdname = attr->values[0].string.text; >+ ppdname = ippGetString( attr, 0, NULL ); > > //sprintf( buf, "print '%s'", ppdname); > //PyRun_SimpleString( buf ); > } > >- else if (attr->value_tag == IPP_TAG_TEXT || attr->value_tag == IPP_TAG_NAME || attr->value_tag == IPP_TAG_KEYWORD) >- //else if ((!strcmp (attr->name, "ppd-natural-language") && attr->value_tag == IPP_TAG_LANGUAGE) || >- // (!strcmp (attr->name, "ppd-make-and-model") && attr->value_tag == IPP_TAG_TEXT) || >- // (!strcmp (attr->name, "ppd-make") && attr->value_tag == IPP_TAG_TEXT) || >- // (!strcmp (attr->name, "ppd-device-id") && attr->value_tag == IPP_TAG_TEXT)) >+ else if (ippGetValueTag( attr ) == IPP_TAG_TEXT || ippGetValueTag( attr ) == IPP_TAG_NAME || ippGetValueTag( attr ) == IPP_TAG_KEYWORD) >+ //else if ((!strcmp (ippGetName( attr ), "ppd-natural-language") && ippGetValueTag( attr ) == IPP_TAG_LANGUAGE) || >+ // (!strcmp (ippGetName( attr ), "ppd-make-and-model") && ippGetValueTag( attr ) == IPP_TAG_TEXT) || >+ // (!strcmp (ippGetName( attr ), "ppd-make") && ippGetValueTag( attr ) == IPP_TAG_TEXT) || >+ // (!strcmp (ippGetName( attr ), "ppd-device-id") && ippGetValueTag( attr ) == IPP_TAG_TEXT)) > { >- val = PyObj_from_UTF8(attr->values[0].string.text); >+ val = PyObj_from_UTF8(ippGetString( attr, 0, NULL )); > } > > if (val) > { >- PyDict_SetItemString (dict, attr->name, val); >+ PyDict_SetItemString (dict, ippGetName( attr ), val); > Py_DECREF (val); > } > } >diff -Naur hplip-3.12.6_old/scan/sane/hpaio.c hplip-3.12.6/scan/sane/hpaio.c >--- hplip-3.12.6_old/scan/sane/hpaio.c 2012-08-04 09:18:21.458389913 +0200 >+++ hplip-3.12.6/scan/sane/hpaio.c 2012-08-04 09:18:27.875181720 +0200 >@@ -47,6 +47,43 @@ > #define DEBUG_DECLARE_ONLY > #include "sanei_debug.h" > >+#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5) >+#define HAVE_CUPS_1_6 1 >+#endif >+ >+#ifndef HAVE_CUPS_1_6 >+#define ippGetGroupTag(attr) attr->group_tag >+#define ippGetValueTag(attr) attr->value_tag >+#define ippGetName(attr) attr->name >+#define ippGetString(attr, element, language) attr->values[element].string.text >+ >+static ipp_attribute_t * ippFirstAttribute( ipp_t *ipp ) >+{ >+ if (!ipp) >+ return (NULL); >+ return (ipp->current = ipp->attrs); >+} >+ >+static ipp_attribute_t * ippNextAttribute( ipp_t *ipp ) >+{ >+ if (!ipp || !ipp->current) >+ return (NULL); >+ return (ipp->current = ipp->current->next); >+} >+ >+static int ippSetOperation( ipp_t *ipp, ipp_op_t op ) >+{ >+ ipp->request.op.operation_id = op; >+ return (1); >+} >+ >+static int ippSetRequestId( ipp_t *ipp, int request_id ) >+{ >+ ipp->request.any.request_id = request_id; >+ return (1); >+} >+#endif >+ > static SANE_Device **DeviceList = NULL; > > static int AddDeviceList(char *uri, char *model, SANE_Device ***pd) >@@ -186,8 +223,8 @@ > /* Assemble the IPP request */ > request = ippNew(); > >- request->request.op.operation_id = CUPS_GET_PRINTERS; >- request->request.any.request_id = 1; >+ ippSetOperation( request, CUPS_GET_PRINTERS ); >+ ippSetRequestId( request, 1 ); > > ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET, "attributes-charset", NULL, "utf-8"); > ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, "attributes-natural-language", NULL, "en"); >@@ -197,20 +234,20 @@ > if ((response = cupsDoRequest(http, request, "/")) == NULL) > goto bugout; > >- for (attr = response->attrs; attr != NULL; attr = attr->next) >+ for (attr = ippFirstAttribute ( response ); attr != NULL; attr = ippNextAttribute( response )) > { > /* Skip leading attributes until we hit a printer. */ >- while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER) >- attr = attr->next; >+ while (attr != NULL && ippGetGroupTag( attr ) != IPP_TAG_PRINTER) >+ attr = ippNextAttribute( response ); > > if (attr == NULL) > break; > >- while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER) >+ while (attr != NULL && ippGetGroupTag( attr ) == IPP_TAG_PRINTER) > { >- if (strcmp(attr->name, "device-uri") == 0 && attr->value_tag == IPP_TAG_URI && AddCupsList(attr->values[0].string.text, printer) == 0) >+ if (strcmp(ippGetName( attr ), "device-uri") == 0 && ippGetValueTag( attr ) == IPP_TAG_URI && AddCupsList(ippGetString( attr, 0, NULL ), printer) == 0) > cnt++; >- attr = attr->next; >+ attr = ippNextAttribute( response ); > } > > if (attr == NULL)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 428672
:
319730
|
319732
|
320218
|
320220
|
320222
| 320244 |
320246
|
320262