From: Brad King Date: Wed, 11 Nov 2009 14:19:40 +0000 (-0500) Subject: Provide SetFilePointerEx for VS 6 X-Git-Tag: v2.8.0~179 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5092d2474addd3ca6ffa3b97e3059c712604e6c5;p=thirdparty%2Flibarchive.git Provide SetFilePointerEx for VS 6 Visual Studio 6 does not provide SetFilePointerEx in its Windows API. We implement it in terms of SetFilePointer for that compiler. SVN-Revision: 1636 --- diff --git a/libarchive/archive_windows.c b/libarchive/archive_windows.c index 176f2c6e5..2970c4961 100644 --- a/libarchive/archive_windows.c +++ b/libarchive/archive_windows.c @@ -60,6 +60,24 @@ #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;