wok-current diff sane-backends/stuff/xerox_mfp_fix_usb_devices.patch @ rev 13237

Move from undigest: phpsysinfo
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Aug 14 13:39:12 2012 +0200 (2012-08-14)
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/sane-backends/stuff/xerox_mfp_fix_usb_devices.patch	Tue Aug 14 13:39:12 2012 +0200
     1.3 @@ -0,0 +1,67 @@
     1.4 +commit 5ea227caeacd504b64eef301e83fa63e0a25b3f7
     1.5 +Author: Alex Belkin <abc@telekom.ru>
     1.6 +Date:   Tue Mar 8 17:57:19 2011 +0300
     1.7 +
     1.8 +    keep usb device by default (correct for bug introduced by tcp sub-backend
     1.9 +
    1.10 +diff --git a/backend/xerox_mfp.c b/backend/xerox_mfp.c
    1.11 +index e08b50f..d4672a7 100644
    1.12 +--- a/backend/xerox_mfp.c
    1.13 ++++ b/backend/xerox_mfp.c
    1.14 +@@ -37,10 +37,10 @@
    1.15 + static const SANE_Device **devlist = NULL;	/* sane_get_devices array */
    1.16 + static struct device *devices_head = NULL;	/* sane_get_devices list */
    1.17 +
    1.18 +-transport available_transports[] = {
    1.19 ++enum { TRANSPORT_USB, TRANSPORT_TCP, TRANSPORTS_MAX };
    1.20 ++transport available_transports[TRANSPORTS_MAX] = {
    1.21 +     { "usb", usb_dev_request, usb_dev_open, usb_dev_close, usb_configure_device },
    1.22 +     { "tcp", tcp_dev_request, tcp_dev_open, tcp_dev_close, tcp_configure_device },
    1.23 +-    { 0 }
    1.24 + };
    1.25 +
    1.26 + static int resolv_state(int state)
    1.27 +@@ -824,7 +824,13 @@ free_devices (void)
    1.28 +   devices_head = NULL;
    1.29 + }
    1.30 +
    1.31 +-/* SANE API ignores return code of this callback */
    1.32 ++static transport *tr_from_devname(SANE_String_Const devname)
    1.33 ++{
    1.34 ++  if (strncmp("tcp", devname, 3) == 0)
    1.35 ++    return &available_transports[TRANSPORT_TCP];
    1.36 ++  return &available_transports[TRANSPORT_USB];
    1.37 ++}
    1.38 ++
    1.39 + static SANE_Status
    1.40 + list_one_device (SANE_String_Const devname)
    1.41 + {
    1.42 +@@ -839,12 +845,7 @@ list_one_device (SANE_String_Const devname)
    1.43 +       return SANE_STATUS_GOOD;
    1.44 +   }
    1.45 +
    1.46 +-  for (tr = available_transports; tr->ttype; tr++) {
    1.47 +-    if (!strncmp (devname, tr->ttype, strlen(tr->ttype)))
    1.48 +-      break;
    1.49 +-  }
    1.50 +-  if (!tr->ttype)
    1.51 +-    return SANE_STATUS_INVAL;
    1.52 ++  tr = tr_from_devname(devname);
    1.53 +
    1.54 +   dev = calloc (1, sizeof (struct device));
    1.55 +   if (dev == NULL)
    1.56 +@@ -878,13 +879,7 @@ list_one_device (SANE_String_Const devname)
    1.57 + static SANE_Status
    1.58 + list_conf_devices (UNUSED (SANEI_Config * config), const char *devname)
    1.59 + {
    1.60 +-    transport *tr;
    1.61 +-
    1.62 +-    for (tr = available_transports; tr->ttype; tr++) {
    1.63 +-	if (!strncmp (devname, tr->ttype, strlen(tr->ttype)))
    1.64 +-	    return tr->configure_device(devname, list_one_device);
    1.65 +-    }
    1.66 +-    return	SANE_STATUS_INVAL;
    1.67 ++  return tr_from_devname(devname)->configure_device(devname, list_one_device);
    1.68 + }
    1.69 +
    1.70 + SANE_Status