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 |