branch Attitude Adjustment packages
[12.09/packages.git] / utils / sane-backends / patches / 001-upstream-keep-usb-device.patch
1 From 5ea227caeacd504b64eef301e83fa63e0a25b3f7 Mon Sep 17 00:00:00 2001
2 From: Alex Belkin <abc@telekom.ru>
3 Date: Tue, 8 Mar 2011 17:57:19 +0300
4 Subject: [PATCH] keep usb device by default (correct for bug introduced by tcp sub-backend
5
6 ---
7  backend/xerox_mfp.c |   27 +++++++++++----------------
8  1 files changed, 11 insertions(+), 16 deletions(-)
9
10 --- a/backend/xerox_mfp.c
11 +++ b/backend/xerox_mfp.c
12 @@ -37,10 +37,10 @@
13  static const SANE_Device **devlist = NULL;     /* sane_get_devices array */
14  static struct device *devices_head = NULL;     /* sane_get_devices list */
15  
16 -transport available_transports[] = {
17 +enum { TRANSPORT_USB, TRANSPORT_TCP, TRANSPORTS_MAX };
18 +transport available_transports[TRANSPORTS_MAX] = {
19      { "usb", usb_dev_request, usb_dev_open, usb_dev_close, usb_configure_device },
20      { "tcp", tcp_dev_request, tcp_dev_open, tcp_dev_close, tcp_configure_device },
21 -    { 0 }
22  };
23  
24  static int resolv_state(int state)
25 @@ -824,7 +824,13 @@ free_devices (void)
26    devices_head = NULL;
27  }
28  
29 -/* SANE API ignores return code of this callback */
30 +static transport *tr_from_devname(SANE_String_Const devname)
31 +{
32 +  if (strncmp("tcp", devname, 3) == 0)
33 +    return &available_transports[TRANSPORT_TCP];
34 +  return &available_transports[TRANSPORT_USB];
35 +}
36 +
37  static SANE_Status
38  list_one_device (SANE_String_Const devname)
39  {
40 @@ -839,12 +845,7 @@ list_one_device (SANE_String_Const devna
41        return SANE_STATUS_GOOD;
42    }
43  
44 -  for (tr = available_transports; tr->ttype; tr++) {
45 -    if (!strncmp (devname, tr->ttype, strlen(tr->ttype)))
46 -      break;
47 -  }
48 -  if (!tr->ttype)
49 -    return SANE_STATUS_INVAL;
50 +  tr = tr_from_devname(devname);
51  
52    dev = calloc (1, sizeof (struct device));
53    if (dev == NULL)
54 @@ -878,13 +879,7 @@ list_one_device (SANE_String_Const devna
55  static SANE_Status
56  list_conf_devices (UNUSED (SANEI_Config * config), const char *devname)
57  {
58 -    transport *tr;
59 -
60 -    for (tr = available_transports; tr->ttype; tr++) {
61 -       if (!strncmp (devname, tr->ttype, strlen(tr->ttype)))
62 -           return tr->configure_device(devname, list_one_device);
63 -    }
64 -    return     SANE_STATUS_INVAL;
65 +  return tr_from_devname(devname)->configure_device(devname, list_one_device);
66  }
67  
68  SANE_Status