summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2012-01-11 08:15:25 -0500
committerBrad King <brad.king@kitware.com>2012-01-11 08:15:25 -0500
commit6989e4384028a438906546d82a0868fc709e92b7 (patch)
tree3be7fbe47a6eb3ccb16ad3b043bcc6ea84dc2b9a
parent0889d99f1131199a293bcd0be0206982ee3a8a54 (diff)
downloadlibarchive-6989e4384028a438906546d82a0868fc709e92b7.tar.gz
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. SVN-Revision: 4129
-rw-r--r--CMakeLists.txt8
-rw-r--r--libarchive/archive_windows.h18
2 files changed, 24 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a675f4d8..207d72f0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -74,8 +74,12 @@ IF(ENABLE_TEST)
ENDIF(ENABLE_TEST)
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/libarchive/archive_windows.h b/libarchive/archive_windows.h
index 033d620d..31288c12 100644
--- a/libarchive/archive_windows.h
+++ b/libarchive/archive_windows.h
@@ -275,4 +275,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 */