From de16f98b44fe6e1cff7de637413bd537611e41e2 Mon Sep 17 00:00:00 2001 From: Henning Geinitz Date: Fri, 26 Oct 2001 21:24:49 +0000 Subject: [PATCH] Fixed vendor/device detection for Linux versions >= 2.4.13. Henning Meier-Geinitz --- sanei/sanei_usb.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/sanei/sanei_usb.c b/sanei/sanei_usb.c index e2a82d8b7..6ae849e2b 100644 --- a/sanei/sanei_usb.c +++ b/sanei/sanei_usb.c @@ -114,22 +114,31 @@ sanei_usb_get_vendor_product (SANE_Int fd, SANE_Word * vendor, SANE_Word vendorID, productID; #if defined (__linux__) -#define IOCTL_SCANNER_VENDOR _IOR('u', 0xa0, int) -#define IOCTL_SCANNER_PRODUCT _IOR('u', 0xa1, int) +#define IOCTL_SCANNER_VENDOR _IOR('U', 0x20, int) +#define IOCTL_SCANNER_PRODUCT _IOR('U', 0x21, int) + /* Older (unofficial) IOCTL numbers for Linux < v2.4.13 */ +#define IOCTL_SCANNER_VENDOR_OLD _IOR('u', 0xa0, int) +#define IOCTL_SCANNER_PRODUCT_OLD _IOR('u', 0xa1, int) /* read the vendor and product IDs via the IOCTLs */ if (ioctl (fd, IOCTL_SCANNER_VENDOR , &vendorID) == -1) { - DBG (3, "sanei_usb_get_vendor_product: ioctl (vendor) of fd %d failed: " - "%s\n", fd, strerror (errno)); - /* just set the vendor ID to 0 */ - vendorID = 0; + if (ioctl (fd, IOCTL_SCANNER_VENDOR_OLD , &vendorID) == -1) + { + DBG (3, "sanei_usb_get_vendor_product: ioctl (vendor) of fd %d " + "failed: %s\n", fd, strerror (errno)); + /* just set the vendor ID to 0 */ + vendorID = 0; + } } if (ioctl (fd, IOCTL_SCANNER_PRODUCT , &productID) == -1) { - DBG (3, "sanei_usb_get_vendor_product: ioctl (product) of ds %d failed: " - "%s\n", fd, strerror (errno)); - /* just set the product ID to 0 */ - productID = 0; + if (ioctl (fd, IOCTL_SCANNER_PRODUCT_OLD , &productID) == -1) + { + DBG (3, "sanei_usb_get_vendor_product: ioctl (product) of ds %d " + "failed: %s\n", fd, strerror (errno)); + /* just set the product ID to 0 */ + productID = 0; + } } if (vendor) *vendor = vendorID;