James A. Littlefield
Thu, 12 Aug 2004 07:12:34 -0400
Thanks for getting me pointed to build18 of the tstbackend. This
version has helped to find another bug inthe DS3000 backend. Now
DS3000 backend passes level 0,1,2 testing w/o errors but when running
with level 3 I still see some errors which seem like bugs in the
tstbackend. These are...
1. There is a check on the descriptor returned by sane_get_select_fd()
which always fails even when my backend has returned a valid small
integer file descriptor. The check is implemented like
"check(ERR,(fd <0), ......". I think it should be
2. In the scanning tests tstbackend starts a scan and then toggles
the state of the io_mode eventually leaving the fd in non-blocking
mode. It then attempts to do a 1 byte read. Due to being very slow
scanner, my DS3000 backend has no data ready on the first call to
sane_read() and therefore returns SANE_STATUS_GOOD and sets the length
to 0 as suggested by the SANE API doc. tstbackend thinks this is an
error and aborts the rest of the scan. I would expect that either
tstbackend should use the descriptor in blocking mode or should accept
return value of SANE_STATUS_GOOD with a returned length of 0 bytes?
Thanks for any advice!