| 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 #ifdef _WIN32_WINNT | |
| 30 #undef _WIN32_WINNT | |
| 31 #define _WIN32_WINNT 0x601 | |
| 32 #endif | |
| 33 | |
| 34 #if _WIN32_WINNT >= _WIN32_WINNT_WIN8 | |
| 35 #if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API))) | |
| 36 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | |
| 37 #define IOWIN32_USING_WINRT_API 1 | |
| 38 #endif | |
| 39 #endif | |
| 40 #endif | |
| 41 | |
| 42 voidpf ZCALLBACK win32_open_file_func OF((voidpf opaque, const char* filename,
int mode)); | 28 voidpf ZCALLBACK win32_open_file_func OF((voidpf opaque, const char* filename,
int mode)); |
| 43 uLong ZCALLBACK win32_read_file_func OF((voidpf opaque, voidpf stream, void*
buf, uLong size)); | 29 uLong ZCALLBACK win32_read_file_func OF((voidpf opaque, voidpf stream, void*
buf, uLong size)); |
| 44 uLong ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const
void* buf, uLong size)); | 30 uLong ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const
void* buf, uLong size)); |
| 45 ZPOS64_T ZCALLBACK win32_tell64_file_func OF((voidpf opaque, voidpf stream)); | 31 ZPOS64_T ZCALLBACK win32_tell64_file_func OF((voidpf opaque, voidpf stream)); |
| 46 long ZCALLBACK win32_seek64_file_func OF((voidpf opaque, voidpf stream, ZPOS
64_T offset, int origin)); | 32 long ZCALLBACK win32_seek64_file_func OF((voidpf opaque, voidpf stream, ZPOS
64_T offset, int origin)); |
| 47 int ZCALLBACK win32_close_file_func OF((voidpf opaque, voidpf stream)); | 33 int ZCALLBACK win32_close_file_func OF((voidpf opaque, voidpf stream)); |
| 48 int ZCALLBACK win32_error_file_func OF((voidpf opaque, voidpf stream)); | 34 int ZCALLBACK win32_error_file_func OF((voidpf opaque, voidpf stream)); |
| 49 | 35 |
| 50 typedef struct | 36 typedef struct |
| 51 { | 37 { |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 } | 86 } |
| 101 | 87 |
| 102 voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int
mode) | 88 voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int
mode) |
| 103 { | 89 { |
| 104 const char* mode_fopen = NULL; | 90 const char* mode_fopen = NULL; |
| 105 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
; | 91 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
; |
| 106 HANDLE hFile = NULL; | 92 HANDLE hFile = NULL; |
| 107 | 93 |
| 108 win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
areMode,&dwFlagsAndAttributes); | 94 win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
areMode,&dwFlagsAndAttributes); |
| 109 | 95 |
| 110 #ifdef IOWIN32_USING_WINRT_API | |
| 111 #ifdef UNICODE | |
| 112 if ((filename!=NULL) && (dwDesiredAccess != 0)) | |
| 113 hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwC
reationDisposition, NULL); | |
| 114 #else | |
| 115 if ((filename!=NULL) && (dwDesiredAccess != 0)) | |
| 116 { | |
| 117 WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; | |
| 118 MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME
_MAX + 0x200); | |
| 119 hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationD
isposition, NULL); | |
| 120 } | |
| 121 #endif | |
| 122 #else | |
| 123 if ((filename!=NULL) && (dwDesiredAccess != 0)) | 96 if ((filename!=NULL) && (dwDesiredAccess != 0)) |
| 124 hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL
, dwCreationDisposition, dwFlagsAndAttributes, NULL); | 97 hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL
, dwCreationDisposition, dwFlagsAndAttributes, NULL); |
| 125 #endif | |
| 126 | 98 |
| 127 return win32_build_iowin(hFile); | 99 return win32_build_iowin(hFile); |
| 128 } | 100 } |
| 129 | 101 |
| 130 | 102 |
| 131 voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int
mode) | 103 voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int
mode) |
| 132 { | 104 { |
| 133 const char* mode_fopen = NULL; | 105 const char* mode_fopen = NULL; |
| 134 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
; | 106 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
; |
| 135 HANDLE hFile = NULL; | 107 HANDLE hFile = NULL; |
| 136 | 108 |
| 137 win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
areMode,&dwFlagsAndAttributes); | 109 win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
areMode,&dwFlagsAndAttributes); |
| 138 | 110 |
| 139 #ifdef IOWIN32_USING_WINRT_API | |
| 140 if ((filename!=NULL) && (dwDesiredAccess != 0)) | |
| 141 { | |
| 142 WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; | |
| 143 MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME
_MAX + 0x200); | |
| 144 hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationD
isposition, NULL); | |
| 145 } | |
| 146 #else | |
| 147 if ((filename!=NULL) && (dwDesiredAccess != 0)) | 111 if ((filename!=NULL) && (dwDesiredAccess != 0)) |
| 148 hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL
, dwCreationDisposition, dwFlagsAndAttributes, NULL); | 112 hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL
, dwCreationDisposition, dwFlagsAndAttributes, NULL); |
| 149 #endif | |
| 150 | 113 |
| 151 return win32_build_iowin(hFile); | 114 return win32_build_iowin(hFile); |
| 152 } | 115 } |
| 153 | 116 |
| 154 | 117 |
| 155 voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int
mode) | 118 voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int
mode) |
| 156 { | 119 { |
| 157 const char* mode_fopen = NULL; | 120 const char* mode_fopen = NULL; |
| 158 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
; | 121 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
; |
| 159 HANDLE hFile = NULL; | 122 HANDLE hFile = NULL; |
| 160 | 123 |
| 161 win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
areMode,&dwFlagsAndAttributes); | 124 win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
areMode,&dwFlagsAndAttributes); |
| 162 | 125 |
| 163 #ifdef IOWIN32_USING_WINRT_API | |
| 164 if ((filename!=NULL) && (dwDesiredAccess != 0)) | |
| 165 hFile = CreateFile2((LPCWSTR)filename, dwDesiredAccess, dwShareMode, dwC
reationDisposition,NULL); | |
| 166 #else | |
| 167 if ((filename!=NULL) && (dwDesiredAccess != 0)) | 126 if ((filename!=NULL) && (dwDesiredAccess != 0)) |
| 168 hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NUL
L, dwCreationDisposition, dwFlagsAndAttributes, NULL); | 127 hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NUL
L, dwCreationDisposition, dwFlagsAndAttributes, NULL); |
| 169 #endif | |
| 170 | 128 |
| 171 return win32_build_iowin(hFile); | 129 return win32_build_iowin(hFile); |
| 172 } | 130 } |
| 173 | 131 |
| 174 | 132 |
| 175 voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mo
de) | 133 voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mo
de) |
| 176 { | 134 { |
| 177 const char* mode_fopen = NULL; | 135 const char* mode_fopen = NULL; |
| 178 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
; | 136 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes
; |
| 179 HANDLE hFile = NULL; | 137 HANDLE hFile = NULL; |
| 180 | 138 |
| 181 win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
areMode,&dwFlagsAndAttributes); | 139 win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwSh
areMode,&dwFlagsAndAttributes); |
| 182 | 140 |
| 183 #ifdef IOWIN32_USING_WINRT_API | |
| 184 #ifdef UNICODE | |
| 185 if ((filename!=NULL) && (dwDesiredAccess != 0)) | |
| 186 hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwC
reationDisposition, NULL); | |
| 187 #else | |
| 188 if ((filename!=NULL) && (dwDesiredAccess != 0)) | |
| 189 { | |
| 190 WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; | |
| 191 MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME
_MAX + 0x200); | |
| 192 hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationD
isposition, NULL); | |
| 193 } | |
| 194 #endif | |
| 195 #else | |
| 196 if ((filename!=NULL) && (dwDesiredAccess != 0)) | 141 if ((filename!=NULL) && (dwDesiredAccess != 0)) |
| 197 hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL
, dwCreationDisposition, dwFlagsAndAttributes, NULL); | 142 hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL
, dwCreationDisposition, dwFlagsAndAttributes, NULL); |
| 198 #endif | |
| 199 | 143 |
| 200 return win32_build_iowin(hFile); | 144 return win32_build_iowin(hFile); |
| 201 } | 145 } |
| 202 | 146 |
| 203 | 147 |
| 204 uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uL
ong size) | 148 uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uL
ong size) |
| 205 { | 149 { |
| 206 uLong ret=0; | 150 uLong ret=0; |
| 207 HANDLE hFile = NULL; | 151 HANDLE hFile = NULL; |
| 208 if (stream!=NULL) | 152 if (stream!=NULL) |
| (...skipping 28 matching lines...) Expand all Loading... |
| 237 DWORD dwErr = GetLastError(); | 181 DWORD dwErr = GetLastError(); |
| 238 if (dwErr == ERROR_HANDLE_EOF) | 182 if (dwErr == ERROR_HANDLE_EOF) |
| 239 dwErr = 0; | 183 dwErr = 0; |
| 240 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 184 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; |
| 241 } | 185 } |
| 242 } | 186 } |
| 243 | 187 |
| 244 return ret; | 188 return ret; |
| 245 } | 189 } |
| 246 | 190 |
| 247 static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *n
ewPos, DWORD dwMoveMethod) | |
| 248 { | |
| 249 #ifdef IOWIN32_USING_WINRT_API | |
| 250 return SetFilePointerEx(hFile, pos, newPos, dwMoveMethod); | |
| 251 #else | |
| 252 LONG lHigh = pos.HighPart; | |
| 253 DWORD dwNewPos = SetFilePointer(hFile, pos.LowPart, &lHigh, dwMoveMethod); | |
| 254 BOOL fOk = TRUE; | |
| 255 if (dwNewPos == 0xFFFFFFFF) | |
| 256 if (GetLastError() != NO_ERROR) | |
| 257 fOk = FALSE; | |
| 258 if ((newPos != NULL) && (fOk)) | |
| 259 { | |
| 260 newPos->LowPart = dwNewPos; | |
| 261 newPos->HighPart = lHigh; | |
| 262 } | |
| 263 return fOk; | |
| 264 #endif | |
| 265 } | |
| 266 | |
| 267 long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream) | 191 long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream) |
| 268 { | 192 { |
| 269 long ret=-1; | 193 long ret=-1; |
| 270 HANDLE hFile = NULL; | 194 HANDLE hFile = NULL; |
| 271 if (stream!=NULL) | 195 if (stream!=NULL) |
| 272 hFile = ((WIN32FILE_IOWIN*)stream) -> hf; | 196 hFile = ((WIN32FILE_IOWIN*)stream) -> hf; |
| 273 if (hFile != NULL) | 197 if (hFile != NULL) |
| 274 { | 198 { |
| 275 LARGE_INTEGER pos; | 199 DWORD dwSet = SetFilePointer(hFile, 0, NULL, FILE_CURRENT); |
| 276 pos.QuadPart = 0; | 200 if (dwSet == INVALID_SET_FILE_POINTER) |
| 277 | |
| 278 if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT)) | |
| 279 { | 201 { |
| 280 DWORD dwErr = GetLastError(); | 202 DWORD dwErr = GetLastError(); |
| 281 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 203 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; |
| 282 ret = -1; | 204 ret = -1; |
| 283 } | 205 } |
| 284 else | 206 else |
| 285 ret=(long)pos.LowPart; | 207 ret=(long)dwSet; |
| 286 } | 208 } |
| 287 return ret; | 209 return ret; |
| 288 } | 210 } |
| 289 | 211 |
| 290 ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream) | 212 ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream) |
| 291 { | 213 { |
| 292 ZPOS64_T ret= (ZPOS64_T)-1; | 214 ZPOS64_T ret= (ZPOS64_T)-1; |
| 293 HANDLE hFile = NULL; | 215 HANDLE hFile = NULL; |
| 294 if (stream!=NULL) | 216 if (stream!=NULL) |
| 295 hFile = ((WIN32FILE_IOWIN*)stream)->hf; | 217 hFile = ((WIN32FILE_IOWIN*)stream)->hf; |
| 296 | 218 |
| 297 if (hFile) | 219 if (hFile) |
| 298 { | 220 { |
| 299 LARGE_INTEGER pos; | 221 LARGE_INTEGER li; |
| 300 pos.QuadPart = 0; | 222 li.QuadPart = 0; |
| 301 | 223 li.u.LowPart = SetFilePointer(hFile, li.u.LowPart, &li.u.HighPart, FILE_
CURRENT); |
| 302 if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT)) | 224 if ( (li.LowPart == 0xFFFFFFFF) && (GetLastError() != NO_ERROR)) |
| 303 { | 225 { |
| 304 DWORD dwErr = GetLastError(); | 226 DWORD dwErr = GetLastError(); |
| 305 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 227 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; |
| 306 ret = (ZPOS64_T)-1; | 228 ret = (ZPOS64_T)-1; |
| 307 } | 229 } |
| 308 else | 230 else |
| 309 ret=pos.QuadPart; | 231 ret=li.QuadPart; |
| 310 } | 232 } |
| 311 return ret; | 233 return ret; |
| 312 } | 234 } |
| 313 | 235 |
| 314 | 236 |
| 315 long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,in
t origin) | 237 long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,in
t origin) |
| 316 { | 238 { |
| 317 DWORD dwMoveMethod=0xFFFFFFFF; | 239 DWORD dwMoveMethod=0xFFFFFFFF; |
| 318 HANDLE hFile = NULL; | 240 HANDLE hFile = NULL; |
| 319 | 241 |
| 320 long ret=-1; | 242 long ret=-1; |
| 321 if (stream!=NULL) | 243 if (stream!=NULL) |
| 322 hFile = ((WIN32FILE_IOWIN*)stream) -> hf; | 244 hFile = ((WIN32FILE_IOWIN*)stream) -> hf; |
| 323 switch (origin) | 245 switch (origin) |
| 324 { | 246 { |
| 325 case ZLIB_FILEFUNC_SEEK_CUR : | 247 case ZLIB_FILEFUNC_SEEK_CUR : |
| 326 dwMoveMethod = FILE_CURRENT; | 248 dwMoveMethod = FILE_CURRENT; |
| 327 break; | 249 break; |
| 328 case ZLIB_FILEFUNC_SEEK_END : | 250 case ZLIB_FILEFUNC_SEEK_END : |
| 329 dwMoveMethod = FILE_END; | 251 dwMoveMethod = FILE_END; |
| 330 break; | 252 break; |
| 331 case ZLIB_FILEFUNC_SEEK_SET : | 253 case ZLIB_FILEFUNC_SEEK_SET : |
| 332 dwMoveMethod = FILE_BEGIN; | 254 dwMoveMethod = FILE_BEGIN; |
| 333 break; | 255 break; |
| 334 default: return -1; | 256 default: return -1; |
| 335 } | 257 } |
| 336 | 258 |
| 337 if (hFile != NULL) | 259 if (hFile != NULL) |
| 338 { | 260 { |
| 339 LARGE_INTEGER pos; | 261 DWORD dwSet = SetFilePointer(hFile, offset, NULL, dwMoveMethod); |
| 340 pos.QuadPart = offset; | 262 if (dwSet == INVALID_SET_FILE_POINTER) |
| 341 if (!MySetFilePointerEx(hFile, pos, NULL, dwMoveMethod)) | |
| 342 { | 263 { |
| 343 DWORD dwErr = GetLastError(); | 264 DWORD dwErr = GetLastError(); |
| 344 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 265 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; |
| 345 ret = -1; | 266 ret = -1; |
| 346 } | 267 } |
| 347 else | 268 else |
| 348 ret=0; | 269 ret=0; |
| 349 } | 270 } |
| 350 return ret; | 271 return ret; |
| 351 } | 272 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 368 dwMoveMethod = FILE_END; | 289 dwMoveMethod = FILE_END; |
| 369 break; | 290 break; |
| 370 case ZLIB_FILEFUNC_SEEK_SET : | 291 case ZLIB_FILEFUNC_SEEK_SET : |
| 371 dwMoveMethod = FILE_BEGIN; | 292 dwMoveMethod = FILE_BEGIN; |
| 372 break; | 293 break; |
| 373 default: return -1; | 294 default: return -1; |
| 374 } | 295 } |
| 375 | 296 |
| 376 if (hFile) | 297 if (hFile) |
| 377 { | 298 { |
| 378 LARGE_INTEGER pos; | 299 LARGE_INTEGER* li = (LARGE_INTEGER*)&offset; |
| 379 pos.QuadPart = offset; | 300 DWORD dwSet = SetFilePointer(hFile, li->u.LowPart, &li->u.HighPart, dwMo
veMethod); |
| 380 if (!MySetFilePointerEx(hFile, pos, NULL, dwMoveMethod)) | 301 if (dwSet == INVALID_SET_FILE_POINTER) |
| 381 { | 302 { |
| 382 DWORD dwErr = GetLastError(); | 303 DWORD dwErr = GetLastError(); |
| 383 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; | 304 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; |
| 384 ret = -1; | 305 ret = -1; |
| 385 } | 306 } |
| 386 else | 307 else |
| 387 ret=0; | 308 ret=0; |
| 388 } | 309 } |
| 389 return ret; | 310 return ret; |
| 390 } | 311 } |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 { | 380 { |
| 460 pzlib_filefunc_def->zopen64_file = win32_open64_file_funcW; | 381 pzlib_filefunc_def->zopen64_file = win32_open64_file_funcW; |
| 461 pzlib_filefunc_def->zread_file = win32_read_file_func; | 382 pzlib_filefunc_def->zread_file = win32_read_file_func; |
| 462 pzlib_filefunc_def->zwrite_file = win32_write_file_func; | 383 pzlib_filefunc_def->zwrite_file = win32_write_file_func; |
| 463 pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; | 384 pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; |
| 464 pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; | 385 pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; |
| 465 pzlib_filefunc_def->zclose_file = win32_close_file_func; | 386 pzlib_filefunc_def->zclose_file = win32_close_file_func; |
| 466 pzlib_filefunc_def->zerror_file = win32_error_file_func; | 387 pzlib_filefunc_def->zerror_file = win32_error_file_func; |
| 467 pzlib_filefunc_def->opaque = NULL; | 388 pzlib_filefunc_def->opaque = NULL; |
| 468 } | 389 } |
| OLD | NEW |