packages/utils/hplip/patches/020-remove_cups_dep_on_scan.patch
Rosen Penev da62d7b7a0
hplip: move back to compiling with libusb
Some change in base broke compilation with libusb and this package.
From looking at it more carefully, it turns out that the libusb patch
needs to be updated so that host paths are not used.

libusb-compat also depends on libusb, which increases the overall
installed size.

Refreshed patches with make package/hplip/refresh .

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-11-29 14:43:43 -08:00

170 lines
4.9 KiB
Diff

--- a/Makefile.am
+++ b/Makefile.am
@@ -71,7 +71,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
--- a/scan/sane/hpaio.c
+++ b/scan/sane/hpaio.c
@@ -34,9 +34,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <cups/cups.h>
#include "hpmud.h"
-#include "avahiDiscovery.h"
#include "hp_ipp.h"
#include "soap.h"
#include "soapht.h"
@@ -146,98 +144,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;
@@ -290,7 +196,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;
@@ -305,39 +210,6 @@ static int DevDiscovery(int localOnly)
total += AddDevice(uri);
}
//memset(message, 0, sizeof(message));
- /* 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 = avahi_probe_nw_scanners();
- if( (avahi_probe_nw_scanners() == AVAHI_STATUS_OK) && (aUriBuf != NULL) )
- {
- token = strtok(aUriBuf, ";");
- while (token)
- {
- total += AddDevice(token);
- token = strtok(NULL, ";");
- }
- free(aUriBuf);
- aUriBuf = NULL;
- }
-#endif
- if(!total)
- {
- SendScanEvent("hpaio:/net/HP_Scan_Devices?ip=1.1.1.1", EVENT_ERROR_NO_PROBED_DEVICES_FOUND);
- }
- }
-
bugout:
return total;
}