mirror of
https://github.com/novatiq/packages.git
synced 2026-04-30 15:38:40 +01:00
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>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user