[sane-devel] tstbackend

James A. Littlefield jal@alum.mit.edu
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 
"check(ERR,(fd>=0),...."

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!
Jim