Original author wasn't sure about this command's real meaning.
While it returns ok status upon running, following scans fail
during parameters negotiation making scanner communication
desynchronised.
Don't use finish scan on e-STUDIO devices, it seems that only
request error status suffices to confirm successful scan and
makes further scans possible.
bool, true and false are keywords in the standard C23 - the sm3600
backend defines them on its own, which is forbidden with the new
standard.
The patch adds ifdef guards for the affected typedef - the old code
will be used for older standards, C23 will define TBool as bool.
The Xerox Book Scanner 4167 is a rebadged Avision FB6080E with modified USB IDs. It works perfectly with the existing support in the avision backend for the Avision FB6080E.
There is very little information about this model available online. From what I could find, it seems this model was distributed as a component, along with a pre-configured PC running Scannx software, of the Xerox BookCentre S7141 turn-key institutional book scanning system.
Avoid waking up every 500ms in standalone mode to reap any terminated
child processes if pidfds are available. This benefits Linux users with
kernel version 5.3 and glibc 2.36 or later.
Introduces a linked list of fds combining listening sockets and pidfds
and creates a poll set from this list as required.
Child process tracking is now generalised so that the Avahi service is
handled in the same way as client connection processes.
The loop to close and remove the child process descriptors erroneously
expected a live next pointer before handling a node in the list,
resulting in the last node never being processed.
These signals were only being caught when daemonised but should also be
handled with the non-daemonised standalone server otherwise child
processes like the Avahi service can remain after the main process
is terminated.
Apply gamma correction to image in find_origin and find_margin
to allow correct detection with cold lamp.
Also find 4 consecutive white pixels (instead of one) in find_margin.
Make 100dpi scanning (and preview) really work.
Register 0x7a is x-divider, setting it to 2 divides the 200dpi horizontal
resolution to 100dpi.
So the amount of data is halved but the scanning area and shading data must
be set as when scanning at 200dpi.
There is an bidirectional Unicode character <202d> in the comment.
The character looks like a typo, because it does not look fitting
there, so IMHO it can be removed.
Checking tools like rpminspect are wary of Unicode characters in the
code after CVE regarding bidirectional Unicode characters from several
years ago, and character <202d> is for left-to-right override in
Unicode, so tools report them as an issue.