#include <config.h>
-/* The GetLongPathNameA function declaration in
- * <winbase.h> under MinGW or Cygwin is protected
- * by the WINVER macro which is defined in <windef.h>
- *
- * SHGFP_TYPE_CURRENT is defined in <shlobj.h> for __W32API_VERSION >= 3.2
- * where it is protected by _WIN32_IE.
- * It is missing in earlier versions of the MinGW w32api headers.
- */
-#if defined(__MINGW32__) || defined(__CYGWIN__) || defined(__CYGWIN32__)
-# include <w32api.h>
-# define WINVER 0x0500
-# define _WIN32_IE 0x0500
-#endif
-
#include "support/os.h"
#include "support/os_win32.h"
#include "support/lstrings.h"
#include <direct.h> // _getdrive
#include <shlobj.h> // SHGetFolderPath
-// Needed by older versions of MinGW.
-#if defined (__W32API_MAJOR_VERSION) && \
- defined (__W32API_MINOR_VERSION) && \
- (__W32API_MAJOR_VERSION < 3 || \
- __W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION < 2)
-# define SHGFP_TYPE_CURRENT 0
+// Must define SHGFP_TYPE_CURRENT for older versions of MinGW.
+#if defined(__MINGW32__) || defined(__CYGWIN__) || defined(__CYGWIN32__)
+# include <w32api.h>
+# if __W32API_MAJOR_VERSION < 3 || \
+ __W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION < 2
+# define SHGFP_TYPE_CURRENT 0
+# endif
#endif
using std::endl;
#endif
/* The GetLongPathNameA function declaration in
- * winbase.h under MinGW or Cygwin is protected
- * by the WINVER macro which is defined in windef.h
+ * <winbase.h> is protected by the WINVER macro which is
+ * defined to a default value in <windef.h> under MinGW and Cygwin.
*
- * We need to #include this file to make available the
- * DWORD, HMODULE et al. typedefs, so check WINVER now.
+ * SHGFP_TYPE_CURRENT is defined in <shlobj.h> for __W32API_VERSION >= 3.2
+ * where it is protected by _WIN32_IE, also defined to a default value
+ * in <windef.h> under MinGW and Cygwin.
+ * It is missing in earlier versions of the MinGW w32api headers.
+ *
+ * We need to #include <windef.h> now to make available the
+ * DWORD, HMODULE et al. typedefs, so first define WINVER, _WIN32_IE.
*
* Note: __CYGWIN__ can be defined here if building in _WIN32 mode.
*/
#if defined(__MINGW32__) || defined(__CYGWIN__) || defined(__CYGWIN32__)
-# if !defined(WINVER) || WINVER < 0x0500
+# if defined(WINVER) && WINVER < 0x0500
# error WINVER must be >= 0x0500
# endif
+# define WINVER 0x0500
+# define _WIN32_IE 0x0500
#endif
#include <windef.h>