]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Provide SetFilePointerEx for VS 6
authorBrad King <brad.king@kitware.com>
Wed, 11 Nov 2009 14:19:40 +0000 (09:19 -0500)
committerBrad King <brad.king@kitware.com>
Wed, 11 Nov 2009 14:19:40 +0000 (09:19 -0500)
Visual Studio 6 does not provide SetFilePointerEx in its Windows API.
We implement it in terms of SetFilePointer for that compiler.

SVN-Revision: 1636

libarchive/archive_windows.c

index 176f2c6e56c90badd71dcf3b0243172f58fa71c1..2970c49618d1a93e4d65a049f91bc6538b62be82 100644 (file)
 
 #define EPOC_TIME ARCHIVE_LITERAL_ULL(116444736000000000)
 
+#if defined(_MSC_VER) && _MSC_VER < 1300
+/* VS 6 does not provide SetFilePointerEx, so define it here.  */
+static BOOL SetFilePointerEx(HANDLE hFile,
+                             LARGE_INTEGER liDistanceToMove,
+                             PLARGE_INTEGER lpNewFilePointer,
+                             DWORD dwMoveMethod)
+{
+       LARGE_INTEGER li;
+       li.QuadPart = liDistanceToMove.QuadPart;
+       li.LowPart = SetFilePointer(
+           hFile, li.LowPart, &li.HighPart, dwMoveMethod);
+       if(lpNewFilePointer) {
+               lpNewFilePointer->QuadPart = li.QuadPart;
+       }
+       return li.LowPart != -1 || GetLastError() == NO_ERROR;
+}
+#endif
+
 struct ustat {
        int64_t         st_atime;
        uint32_t        st_atime_nsec;