Alessandro- Can you take a look? allan
On Sun, Jan 3, 2010 at 7:39 PM, Chris Bagwell <chris at cnpbagwell.com> wrote: > There was a typo in first part of Rainer's email.? Later on it shows its > still not working.... although its safe fix I should probably submit. > > I've now been able to reproduce the issue with --help not working with the > epson2 backend. The problem occurs when we reach driver specific help and so > may be specific to epson2.? The all_options doesn't seem to contain the > --help option and probably anything from basic_options[] array. > > Since basic_options[] (which includes --help) is copied to all_options[] > after filling in backend options, I suspect something returned by epson2 > backend is causing a NULL to be placed in middle and causing getopt_long() > to stop processing early.? I couldn't find anything obvious like missing > options inits from browsing the code.? I guess it will need to be brute > forced debugged to find where the NULL is coming from. > > Chris > > On Sun, Jan 3, 2010 at 5:06 PM, m. allan noah <kitno455 at gmail.com> wrote: >> >> good call chris- you want to submit a fix? >> >> allan >> >> On Sun, Jan 3, 2010 at 4:14 PM, Rainer Dorsch <rdorsch at web.de> wrote: >> > Hi Chris, >> > >> > Am Sonntag, 3. Januar 2010 schrieb Chris Bagwell: >> >> On Sun, Jan 3, 2010 at 7:01 AM, Rainer Dorsch <rdorsch at web.de> wrote: >> >> > For the long options issue: >> >> > I rebuild git sane on another machine (also Debian stable aka Debian >> >> > 5.0) >> >> > and >> >> > the long options error is still there. Even --help has problems. >> >> > Which >> >> > library is sane using to process the command line options? Does >> >> > Debian >> >> > stable >> >> > maybe ship with a different version than your system? >> >> >> >> After running configure, can you look at the file >> >> include/sane/config.h? >> >> Check if HAVE_GETOPT_H and HAVE_GETOPT_LONG are defined. ? On debian, I >> >> would expect them to be defined. ?In that case, it uses standard libc >> >> version of getopt. >> > >> > As you expected, it is there: >> > >> > rd at blackbox:~/SW.nobackup/sane-backends$ grep HAVE_GETOPT >> > include/sane/config.h >> > #define HAVE_GETOPT_H 1 >> > #define HAVE_GETOPT_LONG 1 >> > rd at blackbox:~/SW.nobackup/sane-backends$ >> > >> >> I do see one suspicious line in lib/getopt.c and lib/getopt1.c. ?They >> >> do a >> >> #include <config.h> instead of #include "../include/sane/config.h" and >> >> so >> >> in certain cases it may be including the wrong config.h file. ?In that >> >> case, it would mistakenly compile a conflicting version of >> >> getopt_long() >> >> (which can explain the problem your seeing). >> > >> > Hmm...that does solve the problem: >> > >> > I did this modification >> > >> > rd at blackbox:~/SW.nobackup/sane-backends$ git diff >> > diff --git a/lib/getopt.c b/lib/getopt.c >> > index 9dabb82..b8715e3 100644 >> > --- a/lib/getopt.c >> > +++ b/lib/getopt.c >> > @@ -20,7 +20,7 @@ >> > ? ?License along with the GNU C Library; if not, write to the Free >> > ? ?Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA >> > ? ?02111-1307 USA. ?*/ >> > -# include <config.h> >> > +# include "../include/sane/config.h" >> > ?#if !defined(HAVE_GETOPT_H) || !defined(HAVE_GETOPT_LONG) >> > ?^L >> > ?/* This tells Alpha OSF/1 not to define a getopt prototype in >> > <stdio.h>. >> > diff --git a/lib/getopt1.c b/lib/getopt1.c >> > index 5ace00a..082998c 100644 >> > --- a/lib/getopt1.c >> > +++ b/lib/getopt1.c >> > @@ -17,7 +17,7 @@ >> > ? ?License along with the GNU C Library; if not, write to the Free >> > ? ?Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA >> > ? ?02111-1307 USA. ?*/ >> > -#include <config.h> >> > +#include "../include/sane/config.h" >> > ?#if !defined(HAVE_GETOPT_H) || !defined(HAVE_GETOPT_LONG) >> > ?^L >> > ?#ifdef HAVE_CONFIG_H >> > rd at blackbox:~/SW.nobackup/sane-backends$ >> > >> > recompiled, set the paths again >> > >> > rd at blackbox:~/SW.nobackup/sane-backends$ export |grep PATH >> > declare -x LD_LIBRARY_PATH="/opt/sane-backends-091230/lib" >> > declare -x >> > >> > PATH="/opt/sane-backends-091230/bin:/usr/local/bin:/usr/bin:/bin:/usr/games" >> > rd at blackbox:~/SW.nobackup/sane-backends$ >> > >> > and --help is still not recognized >> > >> > rd at blackbox:~/SW.nobackup/sane-backends$ which scanimage >> > /opt/sane-backends-091230/bin/scanimage >> > rd at blackbox:~/SW.nobackup/sane-backends$ >> > >> > and --help is still not recogniced >> > >> > rd at blackbox:~/SW.nobackup/sane-backends$ scanimage --help >> > Usage: scanimage [OPTION]... >> > >> > Start image acquisition on a scanner device and write image data to >> > standard output. >> > >> > Parameters are separated by a blank from single-character options (e.g. >> > -d epson) and by a "=" from multi-character options >> > (e.g. --device-name=epson). >> > -d, --device-name=DEVICE ? use a given scanner device (e.g. >> > hp:/dev/scanner) >> > ? ?--format=pnm|tiff ? ? ?file format of output file >> > -i, --icc-profile=PROFILE ?include this ICC profile into TIFF file >> > -L, --list-devices ? ? ? ? show available scanner devices >> > -f, --formatted-device-list=FORMAT similar to -L, but the FORMAT of the >> > output >> > ? ? ? ? ? ? ? ? ? ? ? ? ? can be specified: %d (device name), %v >> > (vendor), >> > ? ? ? ? ? ? ? ? ? ? ? ? ? %m (model), %t (type), %i (index number), and >> > ? ? ? ? ? ? ? ? ? ? ? ? ? %n (newline) >> > -b, --batch[=FORMAT] ? ? ? working in batch mode, FORMAT is `out%d.pnm' >> > or >> > ? ? ? ? ? ? ? ? ? ? ? ? ? `out%d.tif' by default depending on --format >> > ? ?--batch-start=# ? ? ? ?page number to start naming files with >> > ? ?--batch-count=# ? ? ? ?how many pages to scan in batch mode >> > ? ?--batch-increment=# ? ?increase page number in filename by # >> > ? ?--batch-double ? ? ? ? increment page number by two, same as >> > ? ? ? ? ? ? ? ? ? ? ? ? ? --batch-increment=2 >> > ? ?--batch-prompt ? ? ? ? ask for pressing a key before scanning a page >> > ? ?--accept-md5-only ? ? ?only accept authorization requests using md5 >> > -p, --progress ? ? ? ? ? ? print progress messages >> > -n, --dont-scan ? ? ? ? ? ?only set options, don't actually scan >> > -T, --test ? ? ? ? ? ? ? ? test backend thoroughly >> > -h, --help ? ? ? ? ? ? ? ? display this help message and exit >> > -v, --verbose ? ? ? ? ? ? ?give even more status messages >> > -B, --buffer-size=# ? ? ? ?change input buffer size (in kB, default 32) >> > -V, --version ? ? ? ? ? ? ?print version information >> > scanimage: unrecognized option `--help' >> > rd at blackbox:~/SW.nobackup/sane-backends$ >> > >> > Thanks, >> > Rainer >> > >> > >> > -- >> > Rainer Dorsch >> > L?rchenstr. 6 >> > D-72135 Dettenhausen >> > 07157-734133 >> > email: rdorsch at web.de >> > jabber: rdorsch at jabber.org >> > GPG Fingerprint: 5966 C54C 2B3C 42CC 1F4F ?8F59 E3A8 C538 7519 141E >> > Full GPG key: http://pgp.mit.edu/ >> > >> > -- >> > sane-devel mailing list: sane-devel at lists.alioth.debian.org >> > http://lists.alioth.debian.org/mailman/listinfo/sane-devel >> > Unsubscribe: Send mail with subject "unsubscribe your_password" >> > ? ? ? ? ? ? to sane-devel-request at lists.alioth.debian.org >> > >> >> >> >> -- >> "The truth is an offense, but not a sin" > > -- "The truth is an offense, but not a sin"
