Hello. I got the following mail that contains some information about warnings/errors that may break compatablity with some platforms. Please would every backend author read this mail and take care about the listed problems.
Best regards Oliver ---------- Forwarded Message ---------- Subject: Re: Two small `sane' questions Date: Wed, 26 Mar 2003 16:08:00 -0500 (EST) From: der Mouse <[email protected]> To: Oliver Rauch <[email protected]> Okay, my rebuild is done. Here are the warnings I got. - A lot of "unused parameter" warnings. I saw some SANE code that does "var=3Dvar;" to quell such warnings, so presumably at least some people care. - Twelve "unused variable" warnings. - 18 "defined but not used" warnings. I haven't investigated to see which ones are probably errors and which ones just indicate slight carelessness with #ifdefs and the like. - 13 warnings which indicate carelessness with `const': two "assignment discards `const' from pointer target type" and 11 "passing arg 1 of `free' discards `const' from pointer target type". How serious SANE considers these depends on how serious it is about doing real const poisoning; since the gcc instructions don't say to use -Wwrite-strings, presumably it's not really all that serious. - 30 "comparison between signed and unsigned". I consider these total noise, to the point where I use -Wno-sign-compare. - Implicit declaration of two functions in getopt.c, getpid and strncmp. These are ignorable on SPARC, where the calling conventions involved are such that the defaults work. On an architecture with more widely varying calling conventions they could become important. - 133 "int format, long int arg" messages. These will matter on architectures where long and int are not the same size, like alpha or sparc64. (I suspect the successful build on NetBSD/alpha despite these is because they are the last format argument, and the alpha is little-endian. On a big-endian platform like sparc64, I would expect incorrect results to ensue.) - Various other format/argument type mismatches: =09"canon630u-common.c", line 305: warning: unsigned int format, long uns= igned int arg (arg 3) "canon630u-common.c", line 331: warning: unsigned int format, long unsigned int arg (arg 3) "epson.c", line 908: warning: unsi= gned int format, long unsigned int arg (arg 3) "epson.c", line 837: warning: unsigned int format, size_t arg (arg 3) "canon630u-common.c", line 239: warning: unsigned int format, size_t arg (arg 4) "canon630u-common.c", l= ine 261: warning: unsigned int format, size_t arg (arg 4) - One "missing initializer". - One call to mktemp(), which actually is broken anyway, since the return value test is reversed. (backend/bh.c line 1865.) This and the following open() should be collapsed into a call to mkstemp() to avoid the race between testing for nonexistence of the file and opening it - though I note the open uses O_EXCL, so losing the race merely produces an unnecessary error rather than a serious bug. - Two "passing arg N of `...' from incompatible pointer type", both in the same call: =09"coolscan.c", line 2641: warning: passing arg 2 of `RGBIfix16' from incompatible pointer type "coolscan.c", line 2641: warning: passing arg = 3 of `RGBIfix16' from incompatible pointer type - Two dangling elses: =09"agfafocus.c", line 781: warning: suggest explicit braces to avoid amb= iguous `else' "getopt.c", line 596: warning: suggest explicit braces to avoid ambiguous `else' If SANE is interested, I can try to clean these up and send in patches for them. (Since it works for me, I'm not inclined to bother unless there's a reasonable chance SANE would actually pick up the patches.) /~\ The ASCII=09=09=09=09der Mouse \ / Ribbon Campaign X Against HTML=09 [email protected] / \ Email!=09 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B ------------------------------------------------------- --=20 http://www.xsane.org http://www.mostang.com/sane http://www.rauch-domain.de mailto:[email protected]
