
On Fri, Nov 07, 2008 at 03:34:59PM +0100, Jim Meyering wrote:
"Richard W.M. Jones" <rjones@redhat.com> wrote:
On an unrelated point, probably any usage of __MINGW32__ is suspect, eg:
s/any/any *other*/ ?
I'm pretty sure "any", in this case too.
#else /* __MINGW32__ */
Our MinGW cross-compiler defines the symbol 'WIN32', and so do all compilers on Windows itself[1][2].
Therefore it's better to use #ifdef WIN32 ... #endif for any code that is specific to the Win32 API.
The __MINGW32__ symbol has a place for code which is specific to the MinGW version of GCC, eg. if it had a bug that we needed to work around.
In the case of lstat, that use of __MINGW32__ is deliberate, since the guarded code is needed only on mingw, and not on cygwin. So using WIN32 there would be wrong.
Cygwin isn't like other Windows compilers -- it exposes a Unix/POSIX API (not Win32 which is a completely different API, even though some of the calls happen to look superficially similar). Cygwin doesn't define WIN32 symbol[1], so using WIN32 here should be OK. Anyway, I don't think anyone is using Cygwin to compile libvirt. The licensing issues alone mean that it'd be unacceptable to most of our users. Rich. [1] Well, that's not entirely true: if you use Cygwin and then include <windows.h>, you do get WIN32 symbol defined, because by doing this you've got both POSIX _and_ Win32 APIs available. WIN32 tells you that the Win32 API is available, not that POSIX is unavailable. -- Richard Jones, Emerging Technologies, Red Hat http://et.redhat.com/~rjones virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into Xen guests. http://et.redhat.com/~rjones/virt-p2v