Get rid of W->A calls : help me help ?

James Hawkins truiken at gmail.com
Wed Aug 25 12:30:33 CDT 2004


Hey Joris, I would be glad to write a howto for your and possibly
others.  I will get started on that soon.

On 25 Aug 2004 11:43:57 -0400, Vincent Béron
<vberon at mecano.gme.usherb.ca> wrote:
> Le mer 25/08/2004 à 11:27, Joris Huizer a écrit :
> [snip]
> > Hi James,
> >
> > Yeah I would like that, thanks for suggesting :)
> > I'll try and do a search on unicode functions and stuff but -- well, you
> > have seen more of wine specific details ...
> >
> > Also, I think it'd be smart to put something like that online (like..
> > linking from the janitorial page to that one?)
> > By the way... Is there some kind of overview of what parts is already
> > being worked on; we don't want to do double work right ;)
> 
> Already done work is grayed-out or simply removed from the janitorial
> page.
> 
> Also take note (François? Any perl hacker?) that the method used to find
> the cross-calls (winapi_check) is not 100% proof. There are some valid C
> statements which contain a cross-call which are not found. Look at
> dlls/lzexpand/lzexpand_main.c GetExpandedNameW:
> 
> INT WINAPI GetExpandedNameW( LPWSTR in, LPWSTR out )
> {
>     INT ret;
>     DWORD len = WideCharToMultiByte( CP_ACP, 0, in, -1, NULL, 0, NULL,
> NULL );
>     char *xin = HeapAlloc( GetProcessHeap(), 0, len );
>     char *xout = HeapAlloc( GetProcessHeap(), 0, len+3 );
>     WideCharToMultiByte( CP_ACP, 0, in, -1, xin, len, NULL, NULL );
>     if ((ret = GetExpandedNameA( xin, xout )) > 0)
>         MultiByteToWideChar( CP_ACP, 0, xout, -1, out, strlenW(in)+4 );
>     HeapFree( GetProcessHeap(), 0, xin );
>     HeapFree( GetProcessHeap(), 0, xout );
>     return ret;
> }
> 
> The A call is between parenthesis and winapi_check can't find it.
> winapi_check would need to be modified to find those, as I'm sure that's
> not the only one in the whole tree.
> 
> Vincent
> 
> 


-- 
James Hawkins




More information about the wine-devel mailing list