wok rev 14624
Up: hplip to 3.12.11.
author | Christopher Rogers <slaxemulator@gmail.com> |
---|---|
date | Sat Jun 01 10:21:01 2013 +0000 (2013-06-01) |
parents | c1685ec71d84 |
children | 1bf5511f099e |
files | hplip/receipt hplip/stuff/cups-1.6-buildfix.diff hplip/stuff/hplip-cups-1.5.0-compatibility.patch |
line diff
1.1 --- a/hplip/receipt Sat Jun 01 10:16:08 2013 +0000 1.2 +++ b/hplip/receipt Sat Jun 01 10:21:01 2013 +0000 1.3 @@ -1,18 +1,18 @@ 1.4 # SliTaz package receipt. 1.5 1.6 PACKAGE="hplip" 1.7 -VERSION="3.12.2" 1.8 +VERSION="3.12.11" 1.9 CATEGORY="system-tools" 1.10 SHORT_DESC="Drivers for HP DeskJet, OfficeJet, Photosmart, Business Inkjet and some LaserJet" 1.11 MAINTAINER="jozee@slitaz.org" 1.12 DEPENDS="ghostscript python cups dbus-python libusb jpeg tiff sane-backends \ 1.13 -libgphoto2 libexif gcc-lib-base libtool libv4l" 1.14 -BUILD_DEPENDS="ghostscript-dev dbus-python-dev sane-backends-dev sane-backends \ 1.15 -libexif-dev libgphoto2-dev libgphoto2 pkg-config libusb-dev jpeg-dev cups-dev \ 1.16 -dbus-dev tiff-dev python python-dev dbus-python libtool" 1.17 +libgphoto2 libexif gcc-lib-base libtool libv4l net-snmp PyQt-x11-gpl" 1.18 +BUILD_DEPENDS="ghostscript-dev dbus-python-dev sane-backends-dev \ 1.19 +sane-backends libexif-dev libgphoto2-dev Qt4-dev libgphoto2 pkg-config libusb-dev \ 1.20 +jpeg-dev cups-dev dbus-dev tiff-dev python python-dev dbus-python net-snmp-dev" 1.21 TARBALL="$PACKAGE-$VERSION.tar.gz" 1.22 WEB_SITE="http://hplipopensource.com" 1.23 -WGET_URL="http://downloads.sourceforge.net/sourceforge/hplip/$TARBALL" 1.24 +WGET_URL="$SF_MIRROR/$PACKAGE/$TARBALL" 1.25 TAGS="printer driver printing" 1.26 BUGS="Unable to delete hplip.desktop from $fs. Using hack in post_install." 1.27 1.28 @@ -20,18 +20,18 @@ 1.29 compile_rules() 1.30 { 1.31 cd $src 1.32 + 1.33 + # fix build with cups 1.6 - FC hplip-ipp-accessors.patch 1.34 + patch -Np1 -i $stuff/cups-1.6-buildfix.diff 1.35 + 1.36 ./configure \ 1.37 --prefix=/usr \ 1.38 --sysconfdir=/etc \ 1.39 - --disable-network-build \ 1.40 --disable-doc-build \ 1.41 - --disable-gui-build \ 1.42 - --disable-fax-build \ 1.43 - --disable-qt3 \ 1.44 - --enable-pp-build \ 1.45 + --enable-qt4 \ 1.46 $CONFIGURE_ARGS && 1.47 make && 1.48 - make DESTDIR=$PWD/_pkg install 1.49 + make DESTDIR=$DESTDIR install 1.50 } 1.51 1.52 # Rules to gen a SliTaz package suitable for Tazpkg. 1.53 @@ -39,21 +39,23 @@ 1.54 { 1.55 mkdir -p $fs/etc $fs/usr/lib $fs/usr/share 1.56 1.57 - cp -a $_pkg/etc $fs 1.58 - cp -a $_pkg/usr/bin $fs/usr 1.59 - cp -a $_pkg/usr/lib/cups $fs/usr/lib 1.60 - cp -a $_pkg/usr/lib/python* $fs/usr/lib 1.61 - cp -a $_pkg/usr/lib/sane $fs/usr/lib 1.62 - cp -a $_pkg/usr/lib/*so* $fs/usr/lib 1.63 - cp -a $_pkg/usr/share/cups \ 1.64 - $_pkg/usr/share/hal \ 1.65 - $_pkg/usr/share/hplip \ 1.66 - $_pkg/usr/share/ppd \ 1.67 + cp -a $install/etc $fs 1.68 + cp -a $install/usr/bin $fs/usr 1.69 + cp -a $install/usr/lib/cups $fs/usr/lib 1.70 + cp -a $install/usr/lib/python* $fs/usr/lib 1.71 + cp -a $install/usr/lib/sane $fs/usr/lib 1.72 + cp -a $install/usr/lib/*so* $fs/usr/lib 1.73 + cp -a $install/usr/share/cups \ 1.74 + $install/usr/share/hplip \ 1.75 + $install/usr/share/ppd \ 1.76 $fs/usr/share 1.77 1.78 # compress non-zipped ppd files 1.79 find $fs/usr/share/ppd/HP -name "*.ppd" -exec gzip -n9 {} \; 1.80 - 1.81 + 1.82 + # make sure hp-toolbox exist 1.83 + ln -sf ../share/hplip/toolbox.py $fs/usr/bin/hp-toolbox 1.84 + 1.85 # remove autostart of hp-daemon 1.86 rm -rf $fs/etc/sane.d 1.87 1.88 @@ -63,8 +65,5 @@ 1.89 1.90 post_install() 1.91 { 1.92 - # remove the desktop file 1.93 - rm $fs/usr/share/applications/hplip.desktop 1.94 - 1.95 tazpkg reconfigure udev --root=$1 1.96 }
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/hplip/stuff/cups-1.6-buildfix.diff Sat Jun 01 10:21:01 2013 +0000 2.3 @@ -0,0 +1,392 @@ 2.4 +diff -up hplip-3.12.6/prnt/cupsext/cupsext.c.ipp_accessors hplip-3.12.6/prnt/cupsext/cupsext.c 2.5 +--- hplip-3.12.6/prnt/cupsext/cupsext.c.ipp_accessors 2012-06-18 12:41:19.000000000 +0200 2.6 ++++ hplip-3.12.6/prnt/cupsext/cupsext.c 2012-07-19 17:11:47.606524137 +0200 2.7 +@@ -87,6 +87,46 @@ typedef int Py_ssize_t; 2.8 + #define PY_SSIZE_T_MIN INT_MIN 2.9 + #endif 2.10 + 2.11 ++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5) 2.12 ++#define HAVE_CUPS_1_6 1 2.13 ++#endif 2.14 ++ 2.15 ++#ifndef HAVE_CUPS_1_6 2.16 ++#define ippGetCount(attr) attr->num_values 2.17 ++#define ippGetGroupTag(attr) attr->group_tag 2.18 ++#define ippGetValueTag(attr) attr->value_tag 2.19 ++#define ippGetName(attr) attr->name 2.20 ++#define ippGetBoolean(attr, element) attr->values[element].boolean 2.21 ++#define ippGetInteger(attr, element) attr->values[element].integer 2.22 ++#define ippGetStatusCode(ipp) ipp->request.status.status_code 2.23 ++#define ippGetString(attr, element, language) attr->values[element].string.text 2.24 ++ 2.25 ++static ipp_attribute_t * ippFirstAttribute( ipp_t *ipp ) 2.26 ++{ 2.27 ++ if (!ipp) 2.28 ++ return (NULL); 2.29 ++ return (ipp->current = ipp->attrs); 2.30 ++} 2.31 ++ 2.32 ++static ipp_attribute_t * ippNextAttribute( ipp_t *ipp ) 2.33 ++{ 2.34 ++ if (!ipp || !ipp->current) 2.35 ++ return (NULL); 2.36 ++ return (ipp->current = ipp->current->next); 2.37 ++} 2.38 ++ 2.39 ++static int ippSetOperation( ipp_t *ipp, ipp_op_t op ) 2.40 ++{ 2.41 ++ ipp->request.op.operation_id = op; 2.42 ++ return (1); 2.43 ++} 2.44 ++ 2.45 ++static int ippSetRequestId( ipp_t *ipp, int request_id ) 2.46 ++{ 2.47 ++ ipp->request.any.request_id = request_id; 2.48 ++ return (1); 2.49 ++} 2.50 ++#endif 2.51 + 2.52 + int g_num_options = 0; 2.53 + cups_option_t * g_options; 2.54 +@@ -333,8 +373,8 @@ PyObject * getPrinters( PyObject * self, 2.55 + request = ippNew(); 2.56 + language = cupsLangDefault(); 2.57 + 2.58 +- request->request.op.operation_id = CUPS_GET_PRINTERS; 2.59 +- request->request.any.request_id = 1; 2.60 ++ ippSetOperation( request, CUPS_GET_PRINTERS ); 2.61 ++ ippSetRequestId ( request, 1); 2.62 + 2.63 + ippAddString( request, IPP_TAG_OPERATION, IPP_TAG_CHARSET, 2.64 + "attributes-charset", NULL, cupsLangEncoding( language ) ); 2.65 +@@ -378,10 +418,10 @@ PyObject * getPrinters( PyObject * self, 2.66 + ipp_pstate_t state; 2.67 + int i = 0; 2.68 + 2.69 +- for ( attr = response->attrs; attr != NULL; attr = attr->next ) 2.70 ++ for ( attr = ippFirstAttribute( response ); attr != NULL; attr = ippNextAttribute( response ) ) 2.71 + { 2.72 +- while ( attr != NULL && attr->group_tag != IPP_TAG_PRINTER ) 2.73 +- attr = attr->next; 2.74 ++ while ( attr != NULL && ippGetGroupTag( attr ) != IPP_TAG_PRINTER ) 2.75 ++ attr = ippNextAttribute( response ); 2.76 + 2.77 + if ( attr == NULL ) 2.78 + break; 2.79 +@@ -390,41 +430,41 @@ PyObject * getPrinters( PyObject * self, 2.80 + state = IPP_PRINTER_IDLE; 2.81 + accepting = 0; 2.82 + 2.83 +- while ( attr != NULL && attr->group_tag == IPP_TAG_PRINTER ) 2.84 ++ while ( attr != NULL && ippGetGroupTag( attr ) == IPP_TAG_PRINTER ) 2.85 + { 2.86 +- if ( strcmp( attr->name, "printer-name" ) == 0 && 2.87 +- attr->value_tag == IPP_TAG_NAME ) 2.88 +- name = attr->values[ 0 ].string.text; 2.89 +- 2.90 +- else if ( strcmp( attr->name, "device-uri" ) == 0 && 2.91 +- attr->value_tag == IPP_TAG_URI ) 2.92 +- device_uri = attr->values[ 0 ].string.text; 2.93 +- 2.94 +- else if ( strcmp( attr->name, "printer-uri-supported" ) == 0 && 2.95 +- attr->value_tag == IPP_TAG_URI ) 2.96 +- printer_uri = attr->values[ 0 ].string.text; 2.97 +- 2.98 +- else if ( strcmp( attr->name, "printer-info" ) == 0 && 2.99 +- attr->value_tag == IPP_TAG_TEXT ) 2.100 +- info = attr->values[ 0 ].string.text; 2.101 +- 2.102 +- else if ( strcmp( attr->name, "printer-location" ) == 0 && 2.103 +- attr->value_tag == IPP_TAG_TEXT ) 2.104 +- location = attr->values[ 0 ].string.text; 2.105 +- 2.106 +- else if ( strcmp( attr->name, "printer-make-and-model" ) == 0 && 2.107 +- attr->value_tag == IPP_TAG_TEXT ) 2.108 +- make_model = attr->values[ 0 ].string.text; 2.109 +- 2.110 +- else if ( strcmp( attr->name, "printer-state" ) == 0 && 2.111 +- attr->value_tag == IPP_TAG_ENUM ) 2.112 +- state = ( ipp_pstate_t ) attr->values[ 0 ].integer; 2.113 +- 2.114 +- else if (!strcmp(attr->name, "printer-is-accepting-jobs") && 2.115 +- attr->value_tag == IPP_TAG_BOOLEAN) 2.116 +- accepting = attr->values[ 0 ].boolean; 2.117 ++ if ( strcmp( ippGetName( attr ), "printer-name" ) == 0 && 2.118 ++ ippGetValueTag( attr ) == IPP_TAG_NAME ) 2.119 ++ name = ippGetString( attr, 0, NULL ); 2.120 ++ 2.121 ++ else if ( strcmp( ippGetName( attr ), "device-uri" ) == 0 && 2.122 ++ ippGetValueTag( attr ) == IPP_TAG_URI ) 2.123 ++ device_uri = ippGetString( attr, 0, NULL ); 2.124 ++ 2.125 ++ else if ( strcmp( ippGetName( attr ), "printer-uri-supported" ) == 0 && 2.126 ++ ippGetValueTag( attr ) == IPP_TAG_URI ) 2.127 ++ printer_uri = ippGetString( attr, 0, NULL ); 2.128 ++ 2.129 ++ else if ( strcmp( ippGetName( attr ), "printer-info" ) == 0 && 2.130 ++ ippGetValueTag( attr ) == IPP_TAG_TEXT ) 2.131 ++ info = ippGetString( attr, 0, NULL ); 2.132 ++ 2.133 ++ else if ( strcmp( ippGetName( attr ), "printer-location" ) == 0 && 2.134 ++ ippGetValueTag( attr ) == IPP_TAG_TEXT ) 2.135 ++ location = ippGetString( attr, 0, NULL ); 2.136 ++ 2.137 ++ else if ( strcmp( ippGetName( attr ), "printer-make-and-model" ) == 0 && 2.138 ++ ippGetValueTag( attr ) == IPP_TAG_TEXT ) 2.139 ++ make_model = ippGetString( attr, 0, NULL ); 2.140 ++ 2.141 ++ else if ( strcmp( ippGetName( attr ), "printer-state" ) == 0 && 2.142 ++ ippGetValueTag( attr ) == IPP_TAG_ENUM ) 2.143 ++ state = ( ipp_pstate_t ) ippGetInteger( attr, 0 ); 2.144 ++ 2.145 ++ else if (!strcmp(ippGetName( attr ), "printer-is-accepting-jobs") && 2.146 ++ ippGetValueTag( attr ) == IPP_TAG_BOOLEAN) 2.147 ++ accepting = ippGetBoolean( attr, 0 ); 2.148 + 2.149 +- attr = attr->next; 2.150 ++ attr = ippNextAttribute( response ); 2.151 + } 2.152 + 2.153 + if ( device_uri == NULL ) 2.154 +@@ -522,8 +562,8 @@ PyObject * addPrinter( PyObject * self, 2.155 + request = ippNew(); 2.156 + language = cupsLangDefault(); 2.157 + 2.158 +- request->request.op.operation_id = CUPS_ADD_PRINTER; 2.159 +- request->request.any.request_id = 1; 2.160 ++ ippSetOperation( request, CUPS_ADD_PRINTER ); 2.161 ++ ippSetRequestId ( request, 1 ); 2.162 + 2.163 + ippAddString( request, IPP_TAG_OPERATION, IPP_TAG_CHARSET, 2.164 + "attributes-charset", NULL, cupsLangEncoding( language ) ); 2.165 +@@ -568,7 +608,7 @@ PyObject * addPrinter( PyObject * self, 2.166 + } 2.167 + else 2.168 + { 2.169 +- status = response->request.status.status_code; 2.170 ++ status = ippGetStatusCode( response ); 2.171 + //ippDelete( response ); 2.172 + r = 1; 2.173 + } 2.174 +@@ -631,8 +671,8 @@ PyObject * delPrinter( PyObject * self, 2.175 + */ 2.176 + request = ippNew(); 2.177 + 2.178 +- request->request.op.operation_id = CUPS_DELETE_PRINTER; 2.179 +- request->request.op.request_id = 1; 2.180 ++ ippSetOperation( request, CUPS_DELETE_PRINTER ); 2.181 ++ ippSetRequestId ( request, 1 ); 2.182 + 2.183 + language = cupsLangDefault(); 2.184 + 2.185 +@@ -650,7 +690,7 @@ PyObject * delPrinter( PyObject * self, 2.186 + */ 2.187 + response = cupsDoRequest( http, request, "/admin/" ); 2.188 + 2.189 +- if ( ( response != NULL ) && ( response->request.status.status_code <= IPP_OK_CONFLICT ) ) 2.190 ++ if ( ( response != NULL ) && ( ippGetStatusCode( response ) <= IPP_OK_CONFLICT ) ) 2.191 + { 2.192 + r = 1; 2.193 + } 2.194 +@@ -721,8 +761,8 @@ PyObject * setDefaultPrinter( PyObject * 2.195 + 2.196 + request = ippNew(); 2.197 + 2.198 +- request->request.op.operation_id = CUPS_SET_DEFAULT; 2.199 +- request->request.op.request_id = 1; 2.200 ++ ippSetOperation( request, CUPS_SET_DEFAULT ); 2.201 ++ ippSetRequestId ( request, 1 ); 2.202 + 2.203 + language = cupsLangDefault(); 2.204 + 2.205 +@@ -743,7 +783,7 @@ PyObject * setDefaultPrinter( PyObject * 2.206 + 2.207 + response = cupsDoRequest( http, request, "/admin/" ); 2.208 + 2.209 +- if ( ( response != NULL ) && ( response->request.status.status_code <= IPP_OK_CONFLICT ) ) 2.210 ++ if ( ( response != NULL ) && ( ippGetStatusCode( response ) <= IPP_OK_CONFLICT ) ) 2.211 + { 2.212 + r = 1; 2.213 + } 2.214 +@@ -797,8 +837,8 @@ PyObject * controlPrinter( PyObject * se 2.215 + 2.216 + request = ippNew(); 2.217 + 2.218 +- request->request.op.operation_id = op; 2.219 +- request->request.op.request_id = 1; 2.220 ++ ippSetOperation( request, op ); 2.221 ++ ippSetRequestId ( request, 1 ); 2.222 + 2.223 + language = cupsLangDefault(); 2.224 + 2.225 +@@ -822,7 +862,7 @@ PyObject * controlPrinter( PyObject * se 2.226 + 2.227 + response = cupsDoRequest(http, request, "/admin/"); 2.228 + 2.229 +- if (( response != NULL ) && (response->request.status.status_code <= IPP_OK_CONFLICT)) 2.230 ++ if (( response != NULL ) && (ippGetStatusCode( response ) <= IPP_OK_CONFLICT)) 2.231 + { 2.232 + r = 1; 2.233 + } 2.234 +@@ -837,7 +877,7 @@ abort: 2.235 + if ( response != NULL ) 2.236 + ippDelete( response ); 2.237 + 2.238 +- return Py_BuildValue( "i", r );; 2.239 ++ return Py_BuildValue( "i", r ); 2.240 + } 2.241 + 2.242 + 2.243 +@@ -1116,8 +1156,8 @@ PyObject * getPPDList( PyObject * self, 2.244 + 2.245 + request = ippNew(); 2.246 + 2.247 +- request->request.op.operation_id = CUPS_GET_PPDS; 2.248 +- request->request.op.request_id = 1; 2.249 ++ ippSetOperation( request, CUPS_GET_PPDS ); 2.250 ++ ippSetRequestId ( request, 1 ); 2.251 + 2.252 + language = cupsLangDefault(); 2.253 + 2.254 +@@ -1143,43 +1183,43 @@ PyObject * getPPDList( PyObject * self, 2.255 + if ((response = cupsDoRequest(http, request, "/")) != NULL) 2.256 + { 2.257 + 2.258 +- for (attr = response->attrs; attr; attr = attr->next) 2.259 ++ for (attr = ippFirstAttribute( response ); attr; attr = ippNextAttribute( response )) 2.260 + { 2.261 + PyObject *dict; 2.262 + char *ppdname = NULL; 2.263 + 2.264 +- while (attr && attr->group_tag != IPP_TAG_PRINTER) 2.265 +- attr = attr->next; 2.266 ++ while (attr && ippGetGroupTag( attr ) != IPP_TAG_PRINTER) 2.267 ++ attr = ippNextAttribute( response ); 2.268 + 2.269 + if (!attr) 2.270 + break; 2.271 + 2.272 + dict = PyDict_New (); 2.273 + 2.274 +- for (; attr && attr->group_tag == IPP_TAG_PRINTER; attr = attr->next) 2.275 ++ for (; attr && ippGetGroupTag( attr ) == IPP_TAG_PRINTER; attr = ippNextAttribute( response )) 2.276 + { 2.277 + PyObject *val = NULL; 2.278 + 2.279 +- if (!strcmp (attr->name, "ppd-name") && attr->value_tag == IPP_TAG_NAME) 2.280 ++ if (!strcmp (ippGetName( attr ), "ppd-name") && ippGetValueTag( attr ) == IPP_TAG_NAME) 2.281 + { 2.282 +- ppdname = attr->values[0].string.text; 2.283 ++ ppdname = ippGetString( attr, 0, NULL ); 2.284 + 2.285 + //sprintf( buf, "print '%s'", ppdname); 2.286 + //PyRun_SimpleString( buf ); 2.287 + } 2.288 + 2.289 +- else if (attr->value_tag == IPP_TAG_TEXT || attr->value_tag == IPP_TAG_NAME || attr->value_tag == IPP_TAG_KEYWORD) 2.290 +- //else if ((!strcmp (attr->name, "ppd-natural-language") && attr->value_tag == IPP_TAG_LANGUAGE) || 2.291 +- // (!strcmp (attr->name, "ppd-make-and-model") && attr->value_tag == IPP_TAG_TEXT) || 2.292 +- // (!strcmp (attr->name, "ppd-make") && attr->value_tag == IPP_TAG_TEXT) || 2.293 +- // (!strcmp (attr->name, "ppd-device-id") && attr->value_tag == IPP_TAG_TEXT)) 2.294 ++ else if (ippGetValueTag( attr ) == IPP_TAG_TEXT || ippGetValueTag( attr ) == IPP_TAG_NAME || ippGetValueTag( attr ) == IPP_TAG_KEYWORD) 2.295 ++ //else if ((!strcmp (ippGetName( attr ), "ppd-natural-language") && ippGetValueTag( attr ) == IPP_TAG_LANGUAGE) || 2.296 ++ // (!strcmp (ippGetName( attr ), "ppd-make-and-model") && ippGetValueTag( attr ) == IPP_TAG_TEXT) || 2.297 ++ // (!strcmp (ippGetName( attr ), "ppd-make") && ippGetValueTag( attr ) == IPP_TAG_TEXT) || 2.298 ++ // (!strcmp (ippGetName( attr ), "ppd-device-id") && ippGetValueTag( attr ) == IPP_TAG_TEXT)) 2.299 + { 2.300 +- val = PyObj_from_UTF8(attr->values[0].string.text); 2.301 ++ val = PyObj_from_UTF8(ippGetString( attr, 0, NULL )); 2.302 + } 2.303 + 2.304 + if (val) 2.305 + { 2.306 +- PyDict_SetItemString (dict, attr->name, val); 2.307 ++ PyDict_SetItemString (dict, ippGetName( attr ), val); 2.308 + Py_DECREF (val); 2.309 + } 2.310 + } 2.311 +diff -up hplip-3.12.6/scan/sane/hpaio.c.ipp_accessors hplip-3.12.6/scan/sane/hpaio.c 2.312 +--- hplip-3.12.6/scan/sane/hpaio.c.ipp_accessors 2012-06-18 12:42:51.000000000 +0200 2.313 ++++ hplip-3.12.6/scan/sane/hpaio.c 2012-07-19 17:12:34.557848760 +0200 2.314 +@@ -47,6 +47,43 @@ 2.315 + #define DEBUG_DECLARE_ONLY 2.316 + #include "sanei_debug.h" 2.317 + 2.318 ++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5) 2.319 ++#define HAVE_CUPS_1_6 1 2.320 ++#endif 2.321 ++ 2.322 ++#ifndef HAVE_CUPS_1_6 2.323 ++#define ippGetGroupTag(attr) attr->group_tag 2.324 ++#define ippGetValueTag(attr) attr->value_tag 2.325 ++#define ippGetName(attr) attr->name 2.326 ++#define ippGetString(attr, element, language) attr->values[element].string.text 2.327 ++ 2.328 ++static ipp_attribute_t * ippFirstAttribute( ipp_t *ipp ) 2.329 ++{ 2.330 ++ if (!ipp) 2.331 ++ return (NULL); 2.332 ++ return (ipp->current = ipp->attrs); 2.333 ++} 2.334 ++ 2.335 ++static ipp_attribute_t * ippNextAttribute( ipp_t *ipp ) 2.336 ++{ 2.337 ++ if (!ipp || !ipp->current) 2.338 ++ return (NULL); 2.339 ++ return (ipp->current = ipp->current->next); 2.340 ++} 2.341 ++ 2.342 ++static int ippSetOperation( ipp_t *ipp, ipp_op_t op ) 2.343 ++{ 2.344 ++ ipp->request.op.operation_id = op; 2.345 ++ return (1); 2.346 ++} 2.347 ++ 2.348 ++static int ippSetRequestId( ipp_t *ipp, int request_id ) 2.349 ++{ 2.350 ++ ipp->request.any.request_id = request_id; 2.351 ++ return (1); 2.352 ++} 2.353 ++#endif 2.354 ++ 2.355 + static SANE_Device **DeviceList = NULL; 2.356 + 2.357 + static int AddDeviceList(char *uri, char *model, SANE_Device ***pd) 2.358 +@@ -186,8 +223,8 @@ static int GetCupsPrinters(char ***print 2.359 + /* Assemble the IPP request */ 2.360 + request = ippNew(); 2.361 + 2.362 +- request->request.op.operation_id = CUPS_GET_PRINTERS; 2.363 +- request->request.any.request_id = 1; 2.364 ++ ippSetOperation( request, CUPS_GET_PRINTERS ); 2.365 ++ ippSetRequestId( request, 1 ); 2.366 + 2.367 + ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET, "attributes-charset", NULL, "utf-8"); 2.368 + ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, "attributes-natural-language", NULL, "en"); 2.369 +@@ -197,20 +234,20 @@ static int GetCupsPrinters(char ***print 2.370 + if ((response = cupsDoRequest(http, request, "/")) == NULL) 2.371 + goto bugout; 2.372 + 2.373 +- for (attr = response->attrs; attr != NULL; attr = attr->next) 2.374 ++ for (attr = ippFirstAttribute ( response ); attr != NULL; attr = ippNextAttribute( response )) 2.375 + { 2.376 + /* Skip leading attributes until we hit a printer. */ 2.377 +- while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER) 2.378 +- attr = attr->next; 2.379 ++ while (attr != NULL && ippGetGroupTag( attr ) != IPP_TAG_PRINTER) 2.380 ++ attr = ippNextAttribute( response ); 2.381 + 2.382 + if (attr == NULL) 2.383 + break; 2.384 + 2.385 +- while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER) 2.386 ++ while (attr != NULL && ippGetGroupTag( attr ) == IPP_TAG_PRINTER) 2.387 + { 2.388 +- if (strcmp(attr->name, "device-uri") == 0 && attr->value_tag == IPP_TAG_URI && AddCupsList(attr->values[0].string.text, printer) == 0) 2.389 ++ if (strcmp(ippGetName( attr ), "device-uri") == 0 && ippGetValueTag( attr ) == IPP_TAG_URI && AddCupsList(ippGetString( attr, 0, NULL ), printer) == 0) 2.390 + cnt++; 2.391 +- attr = attr->next; 2.392 ++ attr = ippNextAttribute( response ); 2.393 + } 2.394 + 2.395 + if (attr == NULL)
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/hplip/stuff/hplip-cups-1.5.0-compatibility.patch Sat Jun 01 10:21:01 2013 +0000 3.3 @@ -0,0 +1,9 @@ 3.4 +--- hplip-3.11.7~/prnt/hpps/hppsfilter.c 2011-07-24 18:58:05.000000000 +0000 3.5 ++++ hplip-3.11.7/prnt/hpps/hppsfilter.c 2011-08-09 20:51:54.150214165 +0000 3.6 +@@ -38,6 +38,7 @@ 3.7 + #include <unistd.h> 3.8 + #include <fcntl.h> 3.9 + #include <cups/cups.h> 3.10 ++#include <cups/ppd.h> 3.11 + #include <sys/types.h> 3.12 + #include <sys/stat.h>