diff options
author | Brad King <brad.king@kitware.com> | 2011-12-22 19:01:34 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2011-12-23 21:04:58 (GMT) |
commit | e2dc5561bbb440d2563c438261571e11e12c8c22 (patch) | |
tree | 6589ce41d2b0601fe8d28f26377d039d5695d920 /Utilities/cmlibarchive | |
parent | 297d9f20326ac87d637189df1ba3bf3b7db4d0b1 (diff) | |
download | CMake-e2dc5561bbb440d2563c438261571e11e12c8c22.zip CMake-e2dc5561bbb440d2563c438261571e11e12c8c22.tar.gz CMake-e2dc5561bbb440d2563c438261571e11e12c8c22.tar.bz2 |
libarchive: Fix Windows NT API usage in VS 6
VS 6 warns verbosely when WINVER >= 0x0500. Avoid defining WINVER and
_WIN32_WINNT to higher than 0x0400 on VS 6. Provide missing API
declarations in archive_windows.h when we do not get them from
<windows.h>. Provide GetVolumePathNameW because VS 6 does not declare
it regardless of the API version.
Diffstat (limited to 'Utilities/cmlibarchive')
-rw-r--r-- | Utilities/cmlibarchive/CMakeLists.txt | 8 | ||||
-rw-r--r-- | Utilities/cmlibarchive/libarchive/archive_windows.h | 18 |
2 files changed, 24 insertions, 2 deletions
diff --git a/Utilities/cmlibarchive/CMakeLists.txt b/Utilities/cmlibarchive/CMakeLists.txt index 760547a..a79c3a9 100644 --- a/Utilities/cmlibarchive/CMakeLists.txt +++ b/Utilities/cmlibarchive/CMakeLists.txt @@ -60,8 +60,12 @@ OPTION(ENABLE_ACL "Enable ACL support" ON) OPTION(ENABLE_ICONV "Enable iconv support" ON) IF(WIN32) - SET(_WIN32_WINNT 0x0500 CACHE INTERNAL "Setting _WIN32_WINNT to 0x0500 for Windows 2000 APIs") - SET(WINVER 0x0500 CACHE INTERNAL "Setting WINVER to 0x0500 for Windows 2000 APIs") + IF(MSVC60) + SET(WINVER 0x0400) + ELSE() + SET(WINVER 0x0500) + ENDIF() + SET(_WIN32_WINNT ${WINVER}) ENDIF(WIN32) # diff --git a/Utilities/cmlibarchive/libarchive/archive_windows.h b/Utilities/cmlibarchive/libarchive/archive_windows.h index 006ad03..6bf89c2 100644 --- a/Utilities/cmlibarchive/libarchive/archive_windows.h +++ b/Utilities/cmlibarchive/libarchive/archive_windows.h @@ -276,4 +276,22 @@ typedef int mbstate_t; size_t wcrtomb(char *, wchar_t, mbstate_t *); #endif +#if defined(_MSC_VER) && _MSC_VER < 1300 +WINBASEAPI BOOL WINAPI GetVolumePathNameW( + LPCWSTR lpszFileName, + LPWSTR lpszVolumePathName, + DWORD cchBufferLength + ); +# if _WIN32_WINNT < 0x0500 /* windows.h not providing 0x500 API */ +typedef struct _FILE_ALLOCATED_RANGE_BUFFER { + LARGE_INTEGER FileOffset; + LARGE_INTEGER Length; +} FILE_ALLOCATED_RANGE_BUFFER, *PFILE_ALLOCATED_RANGE_BUFFER; +# define FSCTL_SET_SPARSE \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_WRITE_DATA) +# define FSCTL_QUERY_ALLOCATED_RANGES \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51, METHOD_NEITHER, FILE_READ_DATA) +# endif +#endif + #endif /* LIBARCHIVE_ARCHIVE_WINDOWS_H_INCLUDED */ |