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>
170 lines
4.9 KiB
Diff
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;
|
|
}
|