kopia lustrzana https://gitlab.com/sane-project/backends
Use O_NONBLOCK when opening an sg device under Linux. Return
SANE_STATUS_DEVICE_BUSY if EBUSY. Check for buffer==0 for OS/2. Henning Meier-Geinitz <henning@meier-geinitz.de>DEVEL_2_0_BRANCH-1
rodzic
2cbddc816e
commit
00e8ac71fd
|
@ -1110,13 +1110,19 @@ sanei_scsi_open (const char *dev, int *fdp,
|
||||||
}
|
}
|
||||||
#endif /* defined(SGIOCSTL) || (USE == SOLARIS_INTERFACE) */
|
#endif /* defined(SGIOCSTL) || (USE == SOLARIS_INTERFACE) */
|
||||||
|
|
||||||
fd = open (dev, O_RDWR | O_EXCL);
|
fd = open (dev, O_RDWR | O_EXCL
|
||||||
|
#if USE == LINUX_INTERFACE
|
||||||
|
| O_NONBLOCK
|
||||||
|
#endif
|
||||||
|
);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
{
|
{
|
||||||
SANE_Status status = SANE_STATUS_INVAL;
|
SANE_Status status = SANE_STATUS_INVAL;
|
||||||
|
|
||||||
if (errno == EACCES)
|
if (errno == EACCES)
|
||||||
status = SANE_STATUS_ACCESS_DENIED;
|
status = SANE_STATUS_ACCESS_DENIED;
|
||||||
|
else if (errno == EBUSY)
|
||||||
|
status = SANE_STATUS_DEVICE_BUSY;
|
||||||
|
|
||||||
DBG (1, "sanei_scsi_open: open of `%s' failed: %s\n",
|
DBG (1, "sanei_scsi_open: open of `%s' failed: %s\n",
|
||||||
dev, strerror (errno));
|
dev, strerror (errno));
|
||||||
|
@ -3576,6 +3582,12 @@ sanei_scsi_cmd2 (int fd,
|
||||||
SRB srb; /* SCSI Request Block */
|
SRB srb; /* SCSI Request Block */
|
||||||
/* xxx obsolete size_t cdb_size;
|
/* xxx obsolete size_t cdb_size;
|
||||||
*/
|
*/
|
||||||
|
if (aspi_buf == NULL) /* avoid SIGSEGV in memcpy() when calling
|
||||||
|
sanei_scsi_cmd2() while aspi-driver is closed */
|
||||||
|
{
|
||||||
|
DBG (1, "sanei_scsi_cmd: Error no device (aspi_buf == NULL)\n");
|
||||||
|
return SANE_STATUS_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
memset ((char *) &srb, 0, sizeof (srb)); /* Okay, I'm paranoid. */
|
memset ((char *) &srb, 0, sizeof (srb)); /* Okay, I'm paranoid. */
|
||||||
/* xxx obsolete cdb_size = CDB_SIZE (*(u_char *) src);*/ /* Size of command block. */
|
/* xxx obsolete cdb_size = CDB_SIZE (*(u_char *) src);*/ /* Size of command block. */
|
||||||
|
|
Ładowanie…
Reference in New Issue