[sane-devel] hs2p backend
jazz_johnson at verizon.net
jazz_johnson at verizon.net
Mon Nov 19 19:38:08 UTC 2007
On Monday 19 November 2007, m. allan noah wrote:
> On Nov 18, 2007 11:08 PM, <jazz_johnson at verizon.net> wrote:
> > On Saturday 17 November 2007, m. allan noah wrote:
> > As you can see, there's still one unused parameter in sense_handler(...,
> > void *arg) definition and there's a bunch of hs2p scsi commands for which
> > I wrote functions but have not used in the main hs2p backend. I also
> > defined some structs for hs2p compression types which I've also not used.
> ok, lets start by saying that lots of other sane backends produce
> warnings, and i am probably running a newer version of gcc than you,
> so it's not a requirement that we remove all of them. it's just a pet
> peev of mine.
That's OK. I'm obviously a novice at programming.
I'm running the following gcc:
# gcc -v
Using built-in specs.
Configured with: /var/tmp/portage/sys-devel/gcc-4.1.1-r3/work/gcc-4.1.1/configure
--disable-altivec --enable-nls --without-included-gettext
--with-system-zlib --disable-checking --disable-werror
--disable-multilib --disable-libmudflap --disable-libssp --disable-libgcj
--enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 4.1.1 (Gentoo 4.1.1-r3)
> 1. if you put a little 'arg = arg;' line in the function, gcc will
> shutup about the param.
> 2. if you wrap the unused functions in #if 0/#endif, you can keep them
> for later.
> i've applied your patch, but most of the issues remain. see the attached
Is the log which you attached the compile log which resulted after the latest patch?
Or is it the old compile log?
I ask because the warnings about unused variables 'i', 't', and 'left'
and unsupported '%lf' are fixed in my code and the patch which I attached.
diff -r -N -u sane-backends-hs2p sane-backends-hs2p-new | gzip -c - > h2p_patch.new
Did the patch not work?
Did I need to rename these directories as
#mv sane-backends sane-backends-cvs
#mv sane-backends-hs2p-new sane-backends
#mv sane-backends-hs2p sane-backends-hs2p.old
#diff -r -N -u sane-backends-hs2p.old sane-backends |gzip -c - >hs2p_patch.new
> the errors break down into a couple classes:
> 1. iso C90 or 99 errors, like using new printf formats or extra
> semicolons, or mixing your variable declarations with code. these are
> the most important to correct, as they will prevent sane from building
> on other platforms.
> make sure your debug statements are after your variable declarations,
> use %ld, etc.
'%lf' warnings were fixed.
> 2. assigning non-const to a const pointer.
> change max_string_size to take SANE_String_Const, and remove most of the
But will max_string_size( SANE_String_Const)
compile without warnings when called with strings of type SANE_String ?
Or must I have a separate routine to handle strings of type SANE_String ?
If I have a string of type SANE_String_Const and try to assign its value dynamically I'll get a compile error.
> 3. unused vars and functions
All unused vars were fixed except for the declaration in sense_handler(..., (void *)arg)
I'll set arg=arg to quiet the compiler.
I'll comment out the unused routines with #if 0/#endif
> 4. calling 'sizeof' on a void type. if you know what type it will be, cast
> 5. trash the warning of the function pointer.
in sane_exit() there's a call to free some allocated strings
which needs to be cast on x86 or I get an error. I'll try
casting to (char *) and see if that's OK with both x86 and x86_64:
for (dev = first_dev; dev; dev = next)
next = dev->next;
free ((void *) dev->sane.name);
free ((void *) dev->sane.model);
> 6. some functions return SANE_Int, but the caller crams the output
> into SANE_Status. Convert to the latter.
This was fixed.
I fixed get/set_endorser_control and get/set_white_balance to return
SANE_Status instead of scanner value, and to pass the scanner value
by reference instead.
> 7. sometimes you send the fd into do_cancel, other times the struct?
This was fixed too.
More information about the sane-devel