Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 320218 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]
hplip-3.12.6-ipp_accessors.patch
hplip-3.12.6-ipp_accessors.patch (text/plain), 12.54 KB, created by
Chris Slycord
on 2012-08-03 21:32:59 UTC
(
hide
)
Description:
hplip-3.12.6-ipp_accessors.patch
Filename:
MIME Type:
Creator:
Chris Slycord
Created:
2012-08-03 21:32:59 UTC
Size:
12.54 KB
patch
obsolete
>diff -up hplip-3.12.6/prnt/cupsext/cupsext.c.ipp_accessors hplip-3.12.6/prnt/cupsext/cupsext.c >--- hplip-3.12.6/prnt/cupsext/cupsext.c.ipp_accessors 2012-06-18 12:41:19.000000000 +0200 >+++ hplip-3.12.6/prnt/cupsext/cupsext.c 2012-07-19 17:11:47.606524137 +0200 >@@ -87,6 +87,46 @@ typedef int Py_ssize_t; > #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 @@ PyObject * getPrinters( PyObject * self, > 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 @@ PyObject * getPrinters( PyObject * self, > 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 @@ PyObject * getPrinters( PyObject * self, > 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 @@ PyObject * addPrinter( PyObject * self, > 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 @@ PyObject * addPrinter( PyObject * self, > } > else > { >- status = response->request.status.status_code; >+ status = ippGetStatusCode( response ); > //ippDelete( response ); > r = 1; > } >@@ -631,8 +671,8 @@ PyObject * delPrinter( PyObject * self, > */ > 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 @@ PyObject * delPrinter( PyObject * self, > */ > 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 @@ PyObject * setDefaultPrinter( PyObject * > > 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 @@ PyObject * setDefaultPrinter( PyObject * > > 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 @@ PyObject * controlPrinter( PyObject * se > > 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 @@ PyObject * controlPrinter( PyObject * se > > 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 @@ abort: > if ( response != NULL ) > ippDelete( response ); > >- return Py_BuildValue( "i", r );; >+ return Py_BuildValue( "i", r ); > } > > >@@ -1116,8 +1156,8 @@ PyObject * getPPDList( PyObject * self, > > 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 @@ PyObject * getPPDList( PyObject * self, > 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); > } > } >
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 Raw
Actions:
View
Attachments on
bug 428672
:
319730
|
319732
|
320218
|
320220
|
320222
|
320244
|
320246
|
320262