diff options
author | root <root@rshg054.dnsready.net> | 2011-10-06 23:14:37 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2011-10-06 23:14:37 +0000 |
commit | 5442e9b8f357932ed5d6cb46e90fcbf6f453469f (patch) | |
tree | e2393e2f381e2e539810e51c34e56c8f687c153c /extra/sane/xerox_mfp_fix_usb_devices.patch | |
parent | 068f1f30c0bba25b6b88cefbe982a72535fa1951 (diff) |
Thu Oct 6 23:14:37 UTC 2011
Diffstat (limited to 'extra/sane/xerox_mfp_fix_usb_devices.patch')
-rw-r--r-- | extra/sane/xerox_mfp_fix_usb_devices.patch | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/extra/sane/xerox_mfp_fix_usb_devices.patch b/extra/sane/xerox_mfp_fix_usb_devices.patch new file mode 100644 index 000000000..5ed29b974 --- /dev/null +++ b/extra/sane/xerox_mfp_fix_usb_devices.patch @@ -0,0 +1,67 @@ +commit 5ea227caeacd504b64eef301e83fa63e0a25b3f7 +Author: Alex Belkin <abc@telekom.ru> +Date: Tue Mar 8 17:57:19 2011 +0300 + + keep usb device by default (correct for bug introduced by tcp sub-backend + +diff --git a/backend/xerox_mfp.c b/backend/xerox_mfp.c +index e08b50f..d4672a7 100644 +--- a/backend/xerox_mfp.c ++++ b/backend/xerox_mfp.c +@@ -37,10 +37,10 @@ + static const SANE_Device **devlist = NULL; /* sane_get_devices array */ + static struct device *devices_head = NULL; /* sane_get_devices list */ + +-transport available_transports[] = { ++enum { TRANSPORT_USB, TRANSPORT_TCP, TRANSPORTS_MAX }; ++transport available_transports[TRANSPORTS_MAX] = { + { "usb", usb_dev_request, usb_dev_open, usb_dev_close, usb_configure_device }, + { "tcp", tcp_dev_request, tcp_dev_open, tcp_dev_close, tcp_configure_device }, +- { 0 } + }; + + static int resolv_state(int state) +@@ -824,7 +824,13 @@ free_devices (void) + devices_head = NULL; + } + +-/* SANE API ignores return code of this callback */ ++static transport *tr_from_devname(SANE_String_Const devname) ++{ ++ if (strncmp("tcp", devname, 3) == 0) ++ return &available_transports[TRANSPORT_TCP]; ++ return &available_transports[TRANSPORT_USB]; ++} ++ + static SANE_Status + list_one_device (SANE_String_Const devname) + { +@@ -839,12 +845,7 @@ list_one_device (SANE_String_Const devname) + return SANE_STATUS_GOOD; + } + +- for (tr = available_transports; tr->ttype; tr++) { +- if (!strncmp (devname, tr->ttype, strlen(tr->ttype))) +- break; +- } +- if (!tr->ttype) +- return SANE_STATUS_INVAL; ++ tr = tr_from_devname(devname); + + dev = calloc (1, sizeof (struct device)); + if (dev == NULL) +@@ -878,13 +879,7 @@ list_one_device (SANE_String_Const devname) + static SANE_Status + list_conf_devices (UNUSED (SANEI_Config * config), const char *devname) + { +- transport *tr; +- +- for (tr = available_transports; tr->ttype; tr++) { +- if (!strncmp (devname, tr->ttype, strlen(tr->ttype))) +- return tr->configure_device(devname, list_one_device); +- } +- return SANE_STATUS_INVAL; ++ return tr_from_devname(devname)->configure_device(devname, list_one_device); + } + + SANE_Status |