> No, I don't need tchar.h in 'unixcalls.c'. I only needed it > for 'winefile.c'. The problem is, if I add 'include/msvcrt' > to the include path, it is added to both files at the same time.
I see. What about adding a separate rule to Makefile.in just for unixcalls.c and omit that file from C_SRC? That way you can control again which parameters will be passed to gcc. As unixcalls.c is not a "traditional" windows source file, but a bridge to the Unix system, I think that approach should be OK. > But the biggest problem I forgot about before is wsprintf(). Wine's > wsprintf() implementation only handles 64 bit integer formats ("%Ld", > "%Lx") when using msvcrt. So I will have to use LoadLibrary() and > GetProcAddress() to call vswprintf() for this string formats. According to MSDN, wsprintf() does not handle INT64 et all. So Wine is correct when it does not either. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/w inui/windowsuserinterface/resources/strings/stringreference/stringfuncti ons/wsprintf.asp So dynamically linking to msvcrt seems to be the only possible solution. > I thought it is not allowed to use the "-fshort-wchar" option > in Wine because not all compilers support it? If it is - > using which macro should one add it to Makefile.in? Anyways - > I don't need it, because there are no more literal wide > string character constants. You are right, it is NOT allowed in Wine code since it's not portable between compilers. There WCHAR[] is the right choice. However it is for Winelib applications (at least the docs suggest it). As Winefile is on one hand a Winelib application but on the other part of the official Wine distribution, I recommend to use WCHAR[] when you need Unicode string literals - that's the safe side. ;-) > CharUpperW() ... > What a hack! ;-) There are many Windows API functions that use a similar pattern. For example the resource loading functions like LoadIcon() do the same, i.e. they interpret the given resource name as WORD if HIWORD(pszResource) is 0 or as string otherwise. That's what MAKEINTRESOURCE() is all about. I call it the C way of "function overloading". ;-) Regards Ralf