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. Target: i686-pc-linux-gnu Configured with: /var/tmp/portage/sys-devel/gcc-4.1.1-r3/work/gcc-4.1.1/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.1 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-multilib --disable-libmudflap --disable-libssp --disable-libgcj --enable-languages=c,c++,fortran --enable-shared --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 > log. 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.
I used 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. > > fixes: > 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. > > fixes: > change max_string_size to take SANE_String_Const, and remove most of the > casts. 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 > it. > > 5. trash the warning of the function pointer. OK 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); free (dev); } > > 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. > > allan