| OLD | NEW | 
|---|
| 1 /* iowin32.c -- IO base function header for compress/uncompress .zip | 1 /* iowin32.c -- IO base function header for compress/uncompress .zip | 
| 2      Version 1.1, February 14h, 2010 | 2      Version 1.1, February 14h, 2010 | 
| 3      part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.htm
     l ) | 3      part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.htm
     l ) | 
| 4 | 4 | 
| 5          Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.
     com/zLibDll/minizip.html ) | 5          Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.
     com/zLibDll/minizip.html ) | 
| 6 | 6 | 
| 7          Modifications for Zip64 support | 7          Modifications for Zip64 support | 
| 8          Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) | 8          Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) | 
| 9 | 9 | 
| 10      For more info read MiniZip_info.txt | 10      For more info read MiniZip_info.txt | 
| 11 | 11 | 
| 12 */ | 12 */ | 
| 13 | 13 | 
| 14 #include <stdlib.h> | 14 #include <stdlib.h> | 
| 15 | 15 | 
| 16 #include "zlib.h" | 16 #include "zlib.h" | 
| 17 #include "ioapi.h" | 17 #include "ioapi.h" | 
| 18 #include "iowin32.h" | 18 #include "iowin32.h" | 
| 19 | 19 | 
| 20 #ifndef INVALID_HANDLE_VALUE | 20 #ifndef INVALID_HANDLE_VALUE | 
| 21 #define INVALID_HANDLE_VALUE (0xFFFFFFFF) | 21 #define INVALID_HANDLE_VALUE (0xFFFFFFFF) | 
| 22 #endif | 22 #endif | 
| 23 | 23 | 
| 24 #ifndef INVALID_SET_FILE_POINTER | 24 #ifndef INVALID_SET_FILE_POINTER | 
| 25 #define INVALID_SET_FILE_POINTER ((DWORD)-1) | 25 #define INVALID_SET_FILE_POINTER ((DWORD)-1) | 
| 26 #endif | 26 #endif | 
| 27 | 27 | 
|  | 28 | 
|  | 29 #if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API))) | 
|  | 30 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | 
|  | 31 #define IOWIN32_USING_WINRT_API 1 | 
|  | 32 #endif | 
|  | 33 #endif | 
|  | 34 | 
| 28 voidpf  ZCALLBACK win32_open_file_func  OF((voidpf opaque, const char* filename,
      int mode)); | 35 voidpf  ZCALLBACK win32_open_file_func  OF((voidpf opaque, const char* filename,
      int mode)); | 
| 29 uLong   ZCALLBACK win32_read_file_func  OF((voidpf opaque, voidpf stream, void* 
     buf, uLong size)); | 36 uLong   ZCALLBACK win32_read_file_func  OF((voidpf opaque, voidpf stream, void* 
     buf, uLong size)); | 
| 30 uLong   ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const 
     void* buf, uLong size)); | 37 uLong   ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const 
     void* buf, uLong size)); | 
| 31 ZPOS64_T ZCALLBACK win32_tell64_file_func  OF((voidpf opaque, voidpf stream)); | 38 ZPOS64_T ZCALLBACK win32_tell64_file_func  OF((voidpf opaque, voidpf stream)); | 
| 32 long    ZCALLBACK win32_seek64_file_func  OF((voidpf opaque, voidpf stream, ZPOS
     64_T offset, int origin)); | 39 long    ZCALLBACK win32_seek64_file_func  OF((voidpf opaque, voidpf stream, ZPOS
     64_T offset, int origin)); | 
| 33 int     ZCALLBACK win32_close_file_func OF((voidpf opaque, voidpf stream)); | 40 int     ZCALLBACK win32_close_file_func OF((voidpf opaque, voidpf stream)); | 
| 34 int     ZCALLBACK win32_error_file_func OF((voidpf opaque, voidpf stream)); | 41 int     ZCALLBACK win32_error_file_func OF((voidpf opaque, voidpf stream)); | 
| 35 | 42 | 
| 36 typedef struct | 43 typedef struct | 
| 37 { | 44 { | 
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 86 } | 93 } | 
| 87 | 94 | 
| 88 voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int 
     mode) | 95 voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int 
     mode) | 
| 89 { | 96 { | 
| 90     const char* mode_fopen = NULL; | 97     const char* mode_fopen = NULL; | 
| 91     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
      ; | 98     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
      ; | 
| 92     HANDLE hFile = NULL; | 99     HANDLE hFile = NULL; | 
| 93 | 100 | 
| 94     win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
     areMode,&dwFlagsAndAttributes); | 101     win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
     areMode,&dwFlagsAndAttributes); | 
| 95 | 102 | 
|  | 103 #ifdef IOWIN32_USING_WINRT_API | 
|  | 104 #ifdef UNICODE | 
|  | 105     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 
|  | 106         hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwC
     reationDisposition, NULL); | 
|  | 107 #else | 
|  | 108     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 
|  | 109     { | 
|  | 110         WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; | 
|  | 111         MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME
     _MAX + 0x200); | 
|  | 112         hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationD
     isposition, NULL); | 
|  | 113     } | 
|  | 114 #endif | 
|  | 115 #else | 
| 96     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 116     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 
| 97         hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL
     , dwCreationDisposition, dwFlagsAndAttributes, NULL); | 117         hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL
     , dwCreationDisposition, dwFlagsAndAttributes, NULL); | 
|  | 118 #endif | 
| 98 | 119 | 
| 99     return win32_build_iowin(hFile); | 120     return win32_build_iowin(hFile); | 
| 100 } | 121 } | 
| 101 | 122 | 
| 102 | 123 | 
| 103 voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int
      mode) | 124 voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int
      mode) | 
| 104 { | 125 { | 
| 105     const char* mode_fopen = NULL; | 126     const char* mode_fopen = NULL; | 
| 106     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
      ; | 127     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
      ; | 
| 107     HANDLE hFile = NULL; | 128     HANDLE hFile = NULL; | 
| 108 | 129 | 
| 109     win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
     areMode,&dwFlagsAndAttributes); | 130     win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
     areMode,&dwFlagsAndAttributes); | 
| 110 | 131 | 
|  | 132 #ifdef IOWIN32_USING_WINRT_API | 
|  | 133     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 
|  | 134     { | 
|  | 135         WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; | 
|  | 136         MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME
     _MAX + 0x200); | 
|  | 137         hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationD
     isposition, NULL); | 
|  | 138     } | 
|  | 139 #else | 
| 111     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 140     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 
| 112         hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL
     , dwCreationDisposition, dwFlagsAndAttributes, NULL); | 141         hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL
     , dwCreationDisposition, dwFlagsAndAttributes, NULL); | 
|  | 142 #endif | 
| 113 | 143 | 
| 114     return win32_build_iowin(hFile); | 144     return win32_build_iowin(hFile); | 
| 115 } | 145 } | 
| 116 | 146 | 
| 117 | 147 | 
| 118 voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int
      mode) | 148 voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int
      mode) | 
| 119 { | 149 { | 
| 120     const char* mode_fopen = NULL; | 150     const char* mode_fopen = NULL; | 
| 121     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
      ; | 151     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
      ; | 
| 122     HANDLE hFile = NULL; | 152     HANDLE hFile = NULL; | 
| 123 | 153 | 
| 124     win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
     areMode,&dwFlagsAndAttributes); | 154     win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
     areMode,&dwFlagsAndAttributes); | 
| 125 | 155 | 
|  | 156 #ifdef IOWIN32_USING_WINRT_API | 
|  | 157     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 
|  | 158         hFile = CreateFile2((LPCWSTR)filename, dwDesiredAccess, dwShareMode, dwC
     reationDisposition,NULL); | 
|  | 159 #else | 
| 126     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 160     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 
| 127         hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NUL
     L, dwCreationDisposition, dwFlagsAndAttributes, NULL); | 161         hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NUL
     L, dwCreationDisposition, dwFlagsAndAttributes, NULL); | 
|  | 162 #endif | 
| 128 | 163 | 
| 129     return win32_build_iowin(hFile); | 164     return win32_build_iowin(hFile); | 
| 130 } | 165 } | 
| 131 | 166 | 
| 132 | 167 | 
| 133 voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mo
     de) | 168 voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mo
     de) | 
| 134 { | 169 { | 
| 135     const char* mode_fopen = NULL; | 170     const char* mode_fopen = NULL; | 
| 136     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
      ; | 171     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
      ; | 
| 137     HANDLE hFile = NULL; | 172     HANDLE hFile = NULL; | 
| 138 | 173 | 
| 139     win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
     areMode,&dwFlagsAndAttributes); | 174     win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
     areMode,&dwFlagsAndAttributes); | 
| 140 | 175 | 
|  | 176 #ifdef IOWIN32_USING_WINRT_API | 
|  | 177 #ifdef UNICODE | 
|  | 178     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 
|  | 179         hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwC
     reationDisposition, NULL); | 
|  | 180 #else | 
|  | 181     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 
|  | 182     { | 
|  | 183         WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; | 
|  | 184         MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME
     _MAX + 0x200); | 
|  | 185         hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationD
     isposition, NULL); | 
|  | 186     } | 
|  | 187 #endif | 
|  | 188 #else | 
| 141     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 189     if ((filename!=NULL) && (dwDesiredAccess != 0)) | 
| 142         hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL
     , dwCreationDisposition, dwFlagsAndAttributes, NULL); | 190         hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL
     , dwCreationDisposition, dwFlagsAndAttributes, NULL); | 
|  | 191 #endif | 
| 143 | 192 | 
| 144     return win32_build_iowin(hFile); | 193     return win32_build_iowin(hFile); | 
| 145 } | 194 } | 
| 146 | 195 | 
| 147 | 196 | 
| 148 uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uL
     ong size) | 197 uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uL
     ong size) | 
| 149 { | 198 { | 
| 150     uLong ret=0; | 199     uLong ret=0; | 
| 151     HANDLE hFile = NULL; | 200     HANDLE hFile = NULL; | 
| 152     if (stream!=NULL) | 201     if (stream!=NULL) | 
| (...skipping 28 matching lines...) Expand all  Loading... | 
| 181             DWORD dwErr = GetLastError(); | 230             DWORD dwErr = GetLastError(); | 
| 182             if (dwErr == ERROR_HANDLE_EOF) | 231             if (dwErr == ERROR_HANDLE_EOF) | 
| 183                 dwErr = 0; | 232                 dwErr = 0; | 
| 184             ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 233             ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 
| 185         } | 234         } | 
| 186     } | 235     } | 
| 187 | 236 | 
| 188     return ret; | 237     return ret; | 
| 189 } | 238 } | 
| 190 | 239 | 
|  | 240 static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *n
     ewPos,  DWORD dwMoveMethod) | 
|  | 241 { | 
|  | 242 #ifdef IOWIN32_USING_WINRT_API | 
|  | 243     return SetFilePointerEx(hFile, pos, newPos, dwMoveMethod); | 
|  | 244 #else | 
|  | 245     LONG lHigh = pos.HighPart; | 
|  | 246     DWORD dwNewPos = SetFilePointer(hFile, pos.LowPart, &lHigh, FILE_CURRENT); | 
|  | 247     BOOL fOk = TRUE; | 
|  | 248     if (dwNewPos == 0xFFFFFFFF) | 
|  | 249         if (GetLastError() != NO_ERROR) | 
|  | 250             fOk = FALSE; | 
|  | 251     if ((newPos != NULL) && (fOk)) | 
|  | 252     { | 
|  | 253         newPos->LowPart = dwNewPos; | 
|  | 254         newPos->HighPart = lHigh; | 
|  | 255     } | 
|  | 256     return fOk; | 
|  | 257 #endif | 
|  | 258 } | 
|  | 259 | 
| 191 long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream) | 260 long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream) | 
| 192 { | 261 { | 
| 193     long ret=-1; | 262     long ret=-1; | 
| 194     HANDLE hFile = NULL; | 263     HANDLE hFile = NULL; | 
| 195     if (stream!=NULL) | 264     if (stream!=NULL) | 
| 196         hFile = ((WIN32FILE_IOWIN*)stream) -> hf; | 265         hFile = ((WIN32FILE_IOWIN*)stream) -> hf; | 
| 197     if (hFile != NULL) | 266     if (hFile != NULL) | 
| 198     { | 267     { | 
| 199         DWORD dwSet = SetFilePointer(hFile, 0, NULL, FILE_CURRENT); | 268         LARGE_INTEGER pos; | 
| 200         if (dwSet == INVALID_SET_FILE_POINTER) | 269         pos.QuadPart = 0; | 
|  | 270 | 
|  | 271         if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT)) | 
| 201         { | 272         { | 
| 202             DWORD dwErr = GetLastError(); | 273             DWORD dwErr = GetLastError(); | 
| 203             ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 274             ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 
| 204             ret = -1; | 275             ret = -1; | 
| 205         } | 276         } | 
| 206         else | 277         else | 
| 207             ret=(long)dwSet; | 278             ret=(long)pos.LowPart; | 
| 208     } | 279     } | 
| 209     return ret; | 280     return ret; | 
| 210 } | 281 } | 
| 211 | 282 | 
| 212 ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream) | 283 ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream) | 
| 213 { | 284 { | 
| 214     ZPOS64_T ret= (ZPOS64_T)-1; | 285     ZPOS64_T ret= (ZPOS64_T)-1; | 
| 215     HANDLE hFile = NULL; | 286     HANDLE hFile = NULL; | 
| 216     if (stream!=NULL) | 287     if (stream!=NULL) | 
| 217         hFile = ((WIN32FILE_IOWIN*)stream)->hf; | 288         hFile = ((WIN32FILE_IOWIN*)stream)->hf; | 
| 218 | 289 | 
| 219     if (hFile) | 290     if (hFile) | 
| 220     { | 291     { | 
| 221         LARGE_INTEGER li; | 292         LARGE_INTEGER pos; | 
| 222         li.QuadPart = 0; | 293         pos.QuadPart = 0; | 
| 223         li.u.LowPart = SetFilePointer(hFile, li.u.LowPart, &li.u.HighPart, FILE_
     CURRENT); | 294 | 
| 224         if ( (li.LowPart == 0xFFFFFFFF) && (GetLastError() != NO_ERROR)) | 295         if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT)) | 
| 225         { | 296         { | 
| 226             DWORD dwErr = GetLastError(); | 297             DWORD dwErr = GetLastError(); | 
| 227             ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 298             ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 
| 228             ret = (ZPOS64_T)-1; | 299             ret = (ZPOS64_T)-1; | 
| 229         } | 300         } | 
| 230         else | 301         else | 
| 231             ret=li.QuadPart; | 302             ret=pos.QuadPart; | 
| 232     } | 303     } | 
| 233     return ret; | 304     return ret; | 
| 234 } | 305 } | 
| 235 | 306 | 
| 236 | 307 | 
| 237 long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,in
     t origin) | 308 long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,in
     t origin) | 
| 238 { | 309 { | 
| 239     DWORD dwMoveMethod=0xFFFFFFFF; | 310     DWORD dwMoveMethod=0xFFFFFFFF; | 
| 240     HANDLE hFile = NULL; | 311     HANDLE hFile = NULL; | 
| 241 | 312 | 
| 242     long ret=-1; | 313     long ret=-1; | 
| 243     if (stream!=NULL) | 314     if (stream!=NULL) | 
| 244         hFile = ((WIN32FILE_IOWIN*)stream) -> hf; | 315         hFile = ((WIN32FILE_IOWIN*)stream) -> hf; | 
| 245     switch (origin) | 316     switch (origin) | 
| 246     { | 317     { | 
| 247     case ZLIB_FILEFUNC_SEEK_CUR : | 318     case ZLIB_FILEFUNC_SEEK_CUR : | 
| 248         dwMoveMethod = FILE_CURRENT; | 319         dwMoveMethod = FILE_CURRENT; | 
| 249         break; | 320         break; | 
| 250     case ZLIB_FILEFUNC_SEEK_END : | 321     case ZLIB_FILEFUNC_SEEK_END : | 
| 251         dwMoveMethod = FILE_END; | 322         dwMoveMethod = FILE_END; | 
| 252         break; | 323         break; | 
| 253     case ZLIB_FILEFUNC_SEEK_SET : | 324     case ZLIB_FILEFUNC_SEEK_SET : | 
| 254         dwMoveMethod = FILE_BEGIN; | 325         dwMoveMethod = FILE_BEGIN; | 
| 255         break; | 326         break; | 
| 256     default: return -1; | 327     default: return -1; | 
| 257     } | 328     } | 
| 258 | 329 | 
| 259     if (hFile != NULL) | 330     if (hFile != NULL) | 
| 260     { | 331     { | 
| 261         DWORD dwSet = SetFilePointer(hFile, offset, NULL, dwMoveMethod); | 332         LARGE_INTEGER pos; | 
| 262         if (dwSet == INVALID_SET_FILE_POINTER) | 333         pos.QuadPart = offset; | 
|  | 334         if (!MySetFilePointerEx(hFile, pos, NULL, dwMoveMethod)) | 
| 263         { | 335         { | 
| 264             DWORD dwErr = GetLastError(); | 336             DWORD dwErr = GetLastError(); | 
| 265             ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 337             ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 
| 266             ret = -1; | 338             ret = -1; | 
| 267         } | 339         } | 
| 268         else | 340         else | 
| 269             ret=0; | 341             ret=0; | 
| 270     } | 342     } | 
| 271     return ret; | 343     return ret; | 
| 272 } | 344 } | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 289             dwMoveMethod = FILE_END; | 361             dwMoveMethod = FILE_END; | 
| 290             break; | 362             break; | 
| 291         case ZLIB_FILEFUNC_SEEK_SET : | 363         case ZLIB_FILEFUNC_SEEK_SET : | 
| 292             dwMoveMethod = FILE_BEGIN; | 364             dwMoveMethod = FILE_BEGIN; | 
| 293             break; | 365             break; | 
| 294         default: return -1; | 366         default: return -1; | 
| 295     } | 367     } | 
| 296 | 368 | 
| 297     if (hFile) | 369     if (hFile) | 
| 298     { | 370     { | 
| 299         LARGE_INTEGER* li = (LARGE_INTEGER*)&offset; | 371         LARGE_INTEGER pos; | 
| 300         DWORD dwSet = SetFilePointer(hFile, li->u.LowPart, &li->u.HighPart, dwMo
     veMethod); | 372         pos.QuadPart = offset; | 
| 301         if (dwSet == INVALID_SET_FILE_POINTER) | 373         if (!MySetFilePointerEx(hFile, pos, NULL, FILE_CURRENT)) | 
| 302         { | 374         { | 
| 303             DWORD dwErr = GetLastError(); | 375             DWORD dwErr = GetLastError(); | 
| 304             ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 376             ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 
| 305             ret = -1; | 377             ret = -1; | 
| 306         } | 378         } | 
| 307         else | 379         else | 
| 308             ret=0; | 380             ret=0; | 
| 309     } | 381     } | 
| 310     return ret; | 382     return ret; | 
| 311 } | 383 } | 
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 380 { | 452 { | 
| 381     pzlib_filefunc_def->zopen64_file = win32_open64_file_funcW; | 453     pzlib_filefunc_def->zopen64_file = win32_open64_file_funcW; | 
| 382     pzlib_filefunc_def->zread_file = win32_read_file_func; | 454     pzlib_filefunc_def->zread_file = win32_read_file_func; | 
| 383     pzlib_filefunc_def->zwrite_file = win32_write_file_func; | 455     pzlib_filefunc_def->zwrite_file = win32_write_file_func; | 
| 384     pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; | 456     pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; | 
| 385     pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; | 457     pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; | 
| 386     pzlib_filefunc_def->zclose_file = win32_close_file_func; | 458     pzlib_filefunc_def->zclose_file = win32_close_file_func; | 
| 387     pzlib_filefunc_def->zerror_file = win32_error_file_func; | 459     pzlib_filefunc_def->zerror_file = win32_error_file_func; | 
| 388     pzlib_filefunc_def->opaque = NULL; | 460     pzlib_filefunc_def->opaque = NULL; | 
| 389 } | 461 } | 
| OLD | NEW | 
|---|