diff options
author | Luiz Angelo Daros de Luca <luizluca@gmail.com> | 2015-08-21 15:59:21 -0300 |
---|---|---|
committer | Luiz Angelo Daros de Luca <luizluca@gmail.com> | 2018-06-28 02:09:50 -0300 |
commit | e5d3422df7e0058dfc26695ba7b1e02a6ea2b84a (patch) | |
tree | 2916574328c16dc3c99e517d6ef0cf7b15d6e153 /utils/hplip/patches | |
parent | b218acac6257da8c393bf2ea35de38ce791a9497 (diff) |
hplip: import from oldpackage and update to 3.18.6
hplip was split into subpackages:
* hplip-common: generic files
* hplip-sane: sane backend
- patched to remove cups deps used only for network scanners
* hplip-cups: cups driver (currently disabled)
Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
Diffstat (limited to 'utils/hplip/patches')
-rw-r--r-- | utils/hplip/patches/010-libusb_fix.patch | 13 | ||||
-rw-r--r-- | utils/hplip/patches/020-remove_cups_dep_on_scan.patch | 163 | ||||
-rw-r--r-- | utils/hplip/patches/030-replace_unsafe_memcpy_with_memmove.patch | 15 | ||||
-rw-r--r-- | utils/hplip/patches/040-fix_bool.patch | 31 |
4 files changed, 222 insertions, 0 deletions
diff --git a/utils/hplip/patches/010-libusb_fix.patch b/utils/hplip/patches/010-libusb_fix.patch new file mode 100644 index 000000000..004513935 --- /dev/null +++ b/utils/hplip/patches/010-libusb_fix.patch @@ -0,0 +1,13 @@ +--- a/configure.in ++++ b/configure.in +@@ -595,6 +595,10 @@ if test "$class_driver" = "no" && test " + else + AC_CHECK_LIB([usb-1.0], [libusb_init], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libusb 1.0 support], 2)]) + AC_CHECK_HEADERS(libusb-1.0/libusb.h, ,[AC_MSG_ERROR([cannot find libusb-1.0-devel support], 11)]) ++ PKG_CHECK_MODULES(LIBUSB_1_0, [ libusb-1.0 >= 1.0.0 ], have_libusb_1_0=yes, have_libusb_1_0=no) ++ if test "$have_libusb_1_0" = "yes"; then ++ CFLAGS="$CFLAGS $LIBUSB_1_0_CFLAGS" ++ fi + fi + fi + diff --git a/utils/hplip/patches/020-remove_cups_dep_on_scan.patch b/utils/hplip/patches/020-remove_cups_dep_on_scan.patch new file mode 100644 index 000000000..bbeb0dc63 --- /dev/null +++ b/utils/hplip/patches/020-remove_cups_dep_on_scan.patch @@ -0,0 +1,163 @@ +--- a/scan/sane/hpaio.c ++++ b/scan/sane/hpaio.c +@@ -34,7 +34,6 @@ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> +-#include <cups/cups.h> + #include "hpmud.h" + #include "hpip.h" + #include "hp_ipp.h" +@@ -144,98 +143,6 @@ static int GetUriLine(char *buf, char *u + return i; + } + +-static int AddCupsList(char *uri, char ***printer) +-{ +- int i, stat=1; +- +- /* Look for hp network URIs only. */ +- if (strncasecmp(uri, "hp:/net/", 8) !=0) +- goto bugout; +- +- if (*printer == NULL) +- { +- /* Allocate array of string pointers. */ +- *printer = malloc(sizeof(char *) * MAX_DEVICE); +- memset(*printer, 0, sizeof(char *) * MAX_DEVICE); +- } +- +- /* Ignor duplicates (ie: printer queues using the same device). */ +- for (i=0; (*printer)[i] != NULL && i<MAX_DEVICE; i++) +- { +- if (strcmp((*printer)[i], uri) == 0) +- goto bugout; +- } +- +- /* Find empty slot in array of pointers. */ +- for (i=0; i<MAX_DEVICE; i++) +- { +- if ((*printer)[i] == NULL) +- { +- (*printer)[i] = strdup(uri); +- break; +- } +- } +- +- stat = 0; +- +-bugout: +- +- return stat; +-} +- +- +-static int GetCupsPrinters(char ***printer) +-{ +- http_t *http=NULL; /* HTTP object */ +- ipp_t *request=NULL; /* IPP request object */ +- ipp_t *response=NULL; /* IPP response object */ +- ipp_attribute_t *attr; /* Current IPP attribute */ +- int cnt=0; +- +- /* Connect to the HTTP server */ +- if ((http = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption())) == NULL) +- goto bugout; +- +- /* Assemble the IPP request */ +- request = ippNew(); +- +- 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"); +- ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", NULL, "device-uri"); +- +- /* Send the request and get a response. */ +- if ((response = cupsDoRequest(http, request, "/")) == NULL) +- goto bugout; +- +- for (attr = ippFirstAttribute ( response ); attr != NULL; attr = ippNextAttribute( response )) +- { +- /* Skip leading attributes until we hit a printer. */ +- while (attr != NULL && ippGetGroupTag( attr ) != IPP_TAG_PRINTER) +- attr = ippNextAttribute( response ); +- +- if (attr == NULL) +- break; +- +- while (attr != NULL && ippGetGroupTag( attr ) == IPP_TAG_PRINTER) +- { +- if (strcmp(ippGetName( attr ), "device-uri") == 0 && ippGetValueTag( attr ) == IPP_TAG_URI && AddCupsList(ippGetString( attr, 0, NULL ), printer) == 0) +- cnt++; +- attr = ippNextAttribute( response ); +- } +- +- if (attr == NULL) +- break; +- } +- +- ippDelete(response); +- +- bugout: +- return cnt; +-} +- + static int AddDevice(char *uri) + { + struct hpmud_model_attributes ma; +@@ -264,7 +171,6 @@ static int DevDiscovery(int localOnly) + char uri[HPMUD_LINE_SIZE]; + char *tail = message; + int i, scan_type, cnt=0, total=0, bytes_read; +- char **cups_printer=NULL; /* list of printers */ + char* token = NULL; + enum HPMUD_RESULT stat; + +@@ -279,34 +185,6 @@ static int DevDiscovery(int localOnly) + total += AddDevice(uri); + } + +- /* Look for Network Scan devices if localonly flag if FALSE. */ +- if (!localOnly) +- { +- /* Look for all-in-one scan devices for which print queue created */ +- cnt = GetCupsPrinters(&cups_printer); +- for (i=0; i<cnt; i++) +- { +- total += AddDevice(cups_printer[i]); +- free(cups_printer[i]); +- } +- if (cups_printer) +- free(cups_printer); +-#ifdef HAVE_LIBNETSNMP +- /* Discover NW scanners using Bonjour*/ +- bytes_read = mdns_probe_nw_scanners(message, sizeof(message), &cnt); +- token = strtok(message, ";"); +- while (token) +- { +- total += AddDevice(token); +- token = strtok(NULL, ";"); +- } +-#endif +- if(!total) +- { +- SendScanEvent("hpaio:/net/HP_Scan_Devices?ip=1.1.1.1", EVENT_ERROR_NO_PROBED_DEVICES_FOUND); +- } +- } +- + bugout: + return total; + } +--- a/Makefile.am ++++ b/Makefile.am +@@ -67,7 +67,7 @@ else + libsane_hpaio_la_LDFLAGS = -version-info 1:0:0 + endif + # The following is a interlibrary dependency that must be compiled first. +-libsane_hpaio_la_LIBADD = libhpip.la libhpmud.la libhpipp.la $(DBUS_LIBS) -lcups -ldl ++libsane_hpaio_la_LIBADD = libhpip.la libhpmud.la libhpipp.la $(DBUS_LIBS) -ldl + #libsane_hpaio_la_CFLAGS = -DWITH_NONAMESPACES -DSOAP_DEBUG + libsane_hpaio_la_CFLAGS = $(DBUS_CFLAGS) -Iprotocol + diff --git a/utils/hplip/patches/030-replace_unsafe_memcpy_with_memmove.patch b/utils/hplip/patches/030-replace_unsafe_memcpy_with_memmove.patch new file mode 100644 index 000000000..2babb2b67 --- /dev/null +++ b/utils/hplip/patches/030-replace_unsafe_memcpy_with_memmove.patch @@ -0,0 +1,15 @@ +https://bugs.launchpad.net/hplip/+bug/1672256 + +memcpy should never be used with overlapping memory regions + +--- a/io/hpmud/musb.c ++++ b/io/hpmud/musb.c +@@ -775,7 +775,7 @@ static int device_id(int fd, unsigned ch + len = size-1; /* leave byte for zero termination */ + if (len > 2) + len -= 2; +- memcpy(buffer, buffer+2, len); /* remove length */ ++ memmove(buffer, buffer+2, len); /* remove length */ + buffer[len]=0; + DBG("read actual device_id successfully fd=%d len=%d\n", fd, len); + diff --git a/utils/hplip/patches/040-fix_bool.patch b/utils/hplip/patches/040-fix_bool.patch new file mode 100644 index 000000000..2f43429f3 --- /dev/null +++ b/utils/hplip/patches/040-fix_bool.patch @@ -0,0 +1,31 @@ +https://bugs.launchpad.net/hplip/+bug/1778626 + +--- a/prnt/hpcups/genPCLm.cpp ++++ b/prnt/hpcups/genPCLm.cpp +@@ -171,7 +171,7 @@ Defines + #define rgb_2_gray(r,g,b) (ubyte)(0.299*(double)r+0.587*(double)g+0.114*(double)b) + + // Note: this is required for debugging +-boolean writeOutputFile(int numBytes, ubyte *ptr, char *user_name); ++bool writeOutputFile(int numBytes, ubyte *ptr, char *user_name); + + /* + ********************************************* Helper Routines ************************** +@@ -343,7 +343,7 @@ bool PCLmGenerator::addKids(sint32 kidOb + return(true); + } + +-boolean writeOutputFile(int numBytes, ubyte *ptr, char *user_name) ++bool writeOutputFile(int numBytes, ubyte *ptr, char *user_name) + { + FILE *outputFile; + char outFileName[MAX_FILE_PATH_LEN]; +@@ -1074,7 +1074,7 @@ void PCLmGenerator::writePDFGrammarPage( + * Limitations: + * - + *****************************************************************************************/ +-boolean prepImageForBacksideDuplex(ubyte *imagePtr, sint32 imageHeight, sint32 imageWidth, sint32 numComponents) ++bool prepImageForBacksideDuplex(ubyte *imagePtr, sint32 imageHeight, sint32 imageWidth, sint32 numComponents) + { + sint32 numBytes=imageHeight*imageWidth*numComponents; + ubyte *head, *tail, t0, t1, t2; |