]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Fix Windows NT API usage in VS 6
authorBrad King <brad.king@kitware.com>
Wed, 11 Jan 2012 13:15:25 +0000 (08:15 -0500)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Sun, 11 Mar 2012 05:06:10 +0000 (14:06 +0900)
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

CMakeLists.txt
libarchive/archive_windows.h

index 69b7100d20f70a9253487818e25b0fd3c119bd27..a513a720ad540cc8078890fb6d788d41fef8968d 100644 (file)
@@ -97,8 +97,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)
 
 #
index 523f8553d56eeee618f563f3c03e1097c84667b5..f351f120d8620fc60efac2d9ef162330adba3693 100644 (file)
@@ -265,4 +265,22 @@ extern struct archive_entry *__la_win_entry_in_posix_pathseparator(
     struct archive_entry *);
 
 
+#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 */