--Boundary-00=_QG79Amgqh1DttHj Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline
Hi list, I found that SuSE patches the SANE sources that way, that the package will use the resource manager library to open SCSI AND USB devices. I'd like to include this patch (see below), are the any objections? For more information about the resource manager, see: http://www.lst.de/~okir/resmgr Ciao, Gerhard --Boundary-00=_QG79Amgqh1DttHj Content-Type: text/x-diff; charset="iso-8859-15"; name="sane-backends-1.0.14-resmgr.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="sane-backends-1.0.14-resmgr.patch" --- configure.in 2004-04-30 20:31:46.000000000 +0200 +++ configure.in 2004-05-15 02:03:59.874035704 +0200 @@ -113,6 +113,16 @@ AC_CHECK_HEADERS([asm/io.h],,,[#include <sys/types.h>]) SANE_CHECK_MISSING_HEADERS +AC_CHECK_HEADER(resmgr.h,[ + AC_CHECK_LIB( + resmgr, + rsm_open_device,[ + AC_DEFINE(HAVE_RESMGR,1,[define if you have the resmgr library"]) + LIBS="$LIBS -lresmgr" + ] + ) +]) + dnl *********************************************************************** dnl Checks for types and structures dnl *********************************************************************** --- sanei/sanei_scsi.c 2004-03-29 19:50:24.000000000 +0200 +++ sanei/sanei_scsi.c 2004-05-15 01:53:56.155814824 +0200 @@ -80,6 +80,10 @@ #define MACOSX_INTERFACE 17 #define WIN32_INTERFACE 18 +#ifdef HAVE_RESMGR +# include <resmgr.h> +#endif + #if defined (HAVE_SCSI_SG_H) # define USE LINUX_INTERFACE # include <scsi/sg.h> @@ -770,13 +774,17 @@ static SANE_Status get_max_buffer_size (const char *file) { - int fd; + int fd = -1; int buffersize = SCSIBUFFERSIZE, i; size_t len; char *cc, *cc1, buf[32]; +#ifdef HAVE_RESMGR + fd = rsm_open_device(file, O_RDWR); +#endif - fd = open (file, O_RDWR); + if (fd == -1) + fd = open (file, O_RDWR); if (fd > 0) { @@ -1216,7 +1224,13 @@ } #endif /* defined(SGIOCSTL) || (USE == SOLARIS_INTERFACE) */ - fd = open (dev, O_RDWR | O_EXCL + fd = -1; +#ifdef HAVE_RESMGR + fd = rsm_open_device(dev, O_RDWR | O_EXCL | O_NONBLOCK); +#endif + + if (fd == -1) + fd = open (dev, O_RDWR | O_EXCL #if USE == LINUX_INTERFACE | O_NONBLOCK #endif @@ -2456,7 +2470,12 @@ dnp->base + guess_devnum); else snprintf (name, name_len, "%s%d", dnp->prefix, guess_devnum); - dev_fd = open (name, O_RDWR | O_NONBLOCK); + dev_fd = -1; +#ifdef HAVE_RESMGR + dev_fd = rsm_open_device (name, O_RDWR | O_NONBLOCK); +#endif + if (dev_fd == -1) + dev_fd = open (name, O_RDWR | O_NONBLOCK); if (dev_fd >= 0) { lx_sg_dev_base = k; --- sanei/sanei_usb.c 2004-02-04 21:24:10.000000000 +0100 +++ sanei/sanei_usb.c 2004-05-15 02:01:35.133039680 +0200 @@ -55,6 +55,9 @@ #include <stdio.h> #include <dirent.h> +#ifdef HAVE_RESMGR +#include <resmgr.h> +#endif #ifdef HAVE_LIBUSB #include <usb.h> #endif /* HAVE_LIBUSB */ @@ -268,7 +271,12 @@ if (strlen (dir_name) + strlen (dir_entry->d_name) + 1 > sizeof (devname)) continue; sprintf (devname, "%s%s", dir_name, dir_entry->d_name); - fd = open (devname, O_RDWR); + fd = -1; +#ifdef HAVE_RESMGR + fd = rsm_open_device (devname, O_RDWR); +#endif + if (fd == -1) + fd = open (devname, O_RDWR); if (fd < 0) { DBG (5, "sanei_usb_init: couldn't open %s: %s\n", devname, @@ -700,7 +708,12 @@ { long int flag; /* Using kernel scanner driver */ - devices[devcount].fd = open (devname, O_RDWR); + devices[devcount].fd = -1; +#ifdef HAVE_RESMGR + devices[devcount].fd = rsm_open_device (devname, O_RDWR); +#endif + if (devices[devcount].fd == -1) + devices[devcount].fd = open (devname, O_RDWR); if (devices[devcount].fd < 0) { SANE_Status status = SANE_STATUS_INVAL; --Boundary-00=_QG79Amgqh1DttHj--
