From: Brad King Date: Wed, 11 Jan 2012 13:15:25 +0000 (-0500) Subject: Fix Windows NT API usage in VS 6 X-Git-Tag: v3.0.4~42 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6a616be86fd14aa84608d81077d0f3b30d0fd152;p=thirdparty%2Flibarchive.git 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 . Provide GetVolumePathNameW because VS 6 does not declare it regardless of the API version. SVN-Revision: 4129 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 69b7100d2..a513a720a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) # diff --git a/libarchive/archive_windows.h b/libarchive/archive_windows.h index 523f8553d..f351f120d 100644 --- a/libarchive/archive_windows.h +++ b/libarchive/archive_windows.h @@ -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 */