[sane-devel] DLL backend doesn't work on 680x0 machines

Henning Meier-Geinitz henning@meier-geinitz.de
Sun, 13 Apr 2003 15:25:53 +0200


--E39vaYmALEf/7YXx
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi,

On Sat, Apr 12, 2003 at 08:09:22PM -0500, Dave Huang wrote:
> On Sat, Apr 12, 2003 at 01:51:11PM +0200, Henning Meier-Geinitz wrote:
> > But this is with "./configure --enable-warnings", the default setting
> > in the CVS version of SANE.
> 
> Ah, okay... I used --enable-warnings and see the warnings now :)
> It's complaining about the casts not having a full prototype for the
> function arguments. Changing
>   status = (*(SANE_Status(*)())be->op[OP_INIT]) (&version, auth_callback);
> to
>   status = (*(SANE_Status(*)(SANE_Int *, SANE_Auth_Callback))be->op[OP_INIT]) (&version, auth_callback);
> 
> fixes the warning. However, it's messy and hard to read :) David 
> Stevenson's suggestion to use typedefs is a good one... so what about 
> the following patch?

I think that one is ok. Thanks. I'll do some more testing on different
platforms but I don't expect problems.

> Also, a question about sane_open()... its second argument is declared as
> SANE_Handle * in the backends, but the dll backend is passing &handle,
> which is a SANE_Handle **.

You are right. You've found a very old bug. It hasn't caused trouble
because a pointer to a pointer is still a pointer but anyway, the fix
is simple:

Use
  SANE_Handle handle;
instead of
  SANE_Handle *handle;

in sane_open().

I have fixed some more warnings that happen with static linking.

Could you please try on your 68k system if compiling with ./configure
--disable-shared also works? I'll attach the complete dll backend
because there have been some other (minor) changes.

I've applied the code to CVS now.

Bye,
  Henning

--E39vaYmALEf/7YXx
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="dll.c.gz"
Content-Transfer-Encoding: base64

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

--E39vaYmALEf/7YXx--