annotate src/zlib-1.2.8/contrib/minizip/iowin32.c @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents 5ea0608b923f
children
rev   line source
Chris@43 1 /* iowin32.c -- IO base function header for compress/uncompress .zip
Chris@43 2 Version 1.1, February 14h, 2010
Chris@43 3 part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
Chris@43 4
Chris@43 5 Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
Chris@43 6
Chris@43 7 Modifications for Zip64 support
Chris@43 8 Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
Chris@43 9
Chris@43 10 For more info read MiniZip_info.txt
Chris@43 11
Chris@43 12 */
Chris@43 13
Chris@43 14 #include <stdlib.h>
Chris@43 15
Chris@43 16 #include "zlib.h"
Chris@43 17 #include "ioapi.h"
Chris@43 18 #include "iowin32.h"
Chris@43 19
Chris@43 20 #ifndef INVALID_HANDLE_VALUE
Chris@43 21 #define INVALID_HANDLE_VALUE (0xFFFFFFFF)
Chris@43 22 #endif
Chris@43 23
Chris@43 24 #ifndef INVALID_SET_FILE_POINTER
Chris@43 25 #define INVALID_SET_FILE_POINTER ((DWORD)-1)
Chris@43 26 #endif
Chris@43 27
Chris@43 28
Chris@43 29 #if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API)))
Chris@43 30 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
Chris@43 31 #define IOWIN32_USING_WINRT_API 1
Chris@43 32 #endif
Chris@43 33 #endif
Chris@43 34
Chris@43 35 voidpf ZCALLBACK win32_open_file_func OF((voidpf opaque, const char* filename, int mode));
Chris@43 36 uLong ZCALLBACK win32_read_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size));
Chris@43 37 uLong ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
Chris@43 38 ZPOS64_T ZCALLBACK win32_tell64_file_func OF((voidpf opaque, voidpf stream));
Chris@43 39 long ZCALLBACK win32_seek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
Chris@43 40 int ZCALLBACK win32_close_file_func OF((voidpf opaque, voidpf stream));
Chris@43 41 int ZCALLBACK win32_error_file_func OF((voidpf opaque, voidpf stream));
Chris@43 42
Chris@43 43 typedef struct
Chris@43 44 {
Chris@43 45 HANDLE hf;
Chris@43 46 int error;
Chris@43 47 } WIN32FILE_IOWIN;
Chris@43 48
Chris@43 49
Chris@43 50 static void win32_translate_open_mode(int mode,
Chris@43 51 DWORD* lpdwDesiredAccess,
Chris@43 52 DWORD* lpdwCreationDisposition,
Chris@43 53 DWORD* lpdwShareMode,
Chris@43 54 DWORD* lpdwFlagsAndAttributes)
Chris@43 55 {
Chris@43 56 *lpdwDesiredAccess = *lpdwShareMode = *lpdwFlagsAndAttributes = *lpdwCreationDisposition = 0;
Chris@43 57
Chris@43 58 if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
Chris@43 59 {
Chris@43 60 *lpdwDesiredAccess = GENERIC_READ;
Chris@43 61 *lpdwCreationDisposition = OPEN_EXISTING;
Chris@43 62 *lpdwShareMode = FILE_SHARE_READ;
Chris@43 63 }
Chris@43 64 else if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
Chris@43 65 {
Chris@43 66 *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ;
Chris@43 67 *lpdwCreationDisposition = OPEN_EXISTING;
Chris@43 68 }
Chris@43 69 else if (mode & ZLIB_FILEFUNC_MODE_CREATE)
Chris@43 70 {
Chris@43 71 *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ;
Chris@43 72 *lpdwCreationDisposition = CREATE_ALWAYS;
Chris@43 73 }
Chris@43 74 }
Chris@43 75
Chris@43 76 static voidpf win32_build_iowin(HANDLE hFile)
Chris@43 77 {
Chris@43 78 voidpf ret=NULL;
Chris@43 79
Chris@43 80 if ((hFile != NULL) && (hFile != INVALID_HANDLE_VALUE))
Chris@43 81 {
Chris@43 82 WIN32FILE_IOWIN w32fiow;
Chris@43 83 w32fiow.hf = hFile;
Chris@43 84 w32fiow.error = 0;
Chris@43 85 ret = malloc(sizeof(WIN32FILE_IOWIN));
Chris@43 86
Chris@43 87 if (ret==NULL)
Chris@43 88 CloseHandle(hFile);
Chris@43 89 else
Chris@43 90 *((WIN32FILE_IOWIN*)ret) = w32fiow;
Chris@43 91 }
Chris@43 92 return ret;
Chris@43 93 }
Chris@43 94
Chris@43 95 voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int mode)
Chris@43 96 {
Chris@43 97 const char* mode_fopen = NULL;
Chris@43 98 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
Chris@43 99 HANDLE hFile = NULL;
Chris@43 100
Chris@43 101 win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
Chris@43 102
Chris@43 103 #ifdef IOWIN32_USING_WINRT_API
Chris@43 104 #ifdef UNICODE
Chris@43 105 if ((filename!=NULL) && (dwDesiredAccess != 0))
Chris@43 106 hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
Chris@43 107 #else
Chris@43 108 if ((filename!=NULL) && (dwDesiredAccess != 0))
Chris@43 109 {
Chris@43 110 WCHAR filenameW[FILENAME_MAX + 0x200 + 1];
Chris@43 111 MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200);
Chris@43 112 hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
Chris@43 113 }
Chris@43 114 #endif
Chris@43 115 #else
Chris@43 116 if ((filename!=NULL) && (dwDesiredAccess != 0))
Chris@43 117 hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
Chris@43 118 #endif
Chris@43 119
Chris@43 120 return win32_build_iowin(hFile);
Chris@43 121 }
Chris@43 122
Chris@43 123
Chris@43 124 voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int mode)
Chris@43 125 {
Chris@43 126 const char* mode_fopen = NULL;
Chris@43 127 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
Chris@43 128 HANDLE hFile = NULL;
Chris@43 129
Chris@43 130 win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
Chris@43 131
Chris@43 132 #ifdef IOWIN32_USING_WINRT_API
Chris@43 133 if ((filename!=NULL) && (dwDesiredAccess != 0))
Chris@43 134 {
Chris@43 135 WCHAR filenameW[FILENAME_MAX + 0x200 + 1];
Chris@43 136 MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200);
Chris@43 137 hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
Chris@43 138 }
Chris@43 139 #else
Chris@43 140 if ((filename!=NULL) && (dwDesiredAccess != 0))
Chris@43 141 hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
Chris@43 142 #endif
Chris@43 143
Chris@43 144 return win32_build_iowin(hFile);
Chris@43 145 }
Chris@43 146
Chris@43 147
Chris@43 148 voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int mode)
Chris@43 149 {
Chris@43 150 const char* mode_fopen = NULL;
Chris@43 151 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
Chris@43 152 HANDLE hFile = NULL;
Chris@43 153
Chris@43 154 win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
Chris@43 155
Chris@43 156 #ifdef IOWIN32_USING_WINRT_API
Chris@43 157 if ((filename!=NULL) && (dwDesiredAccess != 0))
Chris@43 158 hFile = CreateFile2((LPCWSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition,NULL);
Chris@43 159 #else
Chris@43 160 if ((filename!=NULL) && (dwDesiredAccess != 0))
Chris@43 161 hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
Chris@43 162 #endif
Chris@43 163
Chris@43 164 return win32_build_iowin(hFile);
Chris@43 165 }
Chris@43 166
Chris@43 167
Chris@43 168 voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mode)
Chris@43 169 {
Chris@43 170 const char* mode_fopen = NULL;
Chris@43 171 DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
Chris@43 172 HANDLE hFile = NULL;
Chris@43 173
Chris@43 174 win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
Chris@43 175
Chris@43 176 #ifdef IOWIN32_USING_WINRT_API
Chris@43 177 #ifdef UNICODE
Chris@43 178 if ((filename!=NULL) && (dwDesiredAccess != 0))
Chris@43 179 hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
Chris@43 180 #else
Chris@43 181 if ((filename!=NULL) && (dwDesiredAccess != 0))
Chris@43 182 {
Chris@43 183 WCHAR filenameW[FILENAME_MAX + 0x200 + 1];
Chris@43 184 MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200);
Chris@43 185 hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL);
Chris@43 186 }
Chris@43 187 #endif
Chris@43 188 #else
Chris@43 189 if ((filename!=NULL) && (dwDesiredAccess != 0))
Chris@43 190 hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
Chris@43 191 #endif
Chris@43 192
Chris@43 193 return win32_build_iowin(hFile);
Chris@43 194 }
Chris@43 195
Chris@43 196
Chris@43 197 uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uLong size)
Chris@43 198 {
Chris@43 199 uLong ret=0;
Chris@43 200 HANDLE hFile = NULL;
Chris@43 201 if (stream!=NULL)
Chris@43 202 hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
Chris@43 203
Chris@43 204 if (hFile != NULL)
Chris@43 205 {
Chris@43 206 if (!ReadFile(hFile, buf, size, &ret, NULL))
Chris@43 207 {
Chris@43 208 DWORD dwErr = GetLastError();
Chris@43 209 if (dwErr == ERROR_HANDLE_EOF)
Chris@43 210 dwErr = 0;
Chris@43 211 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
Chris@43 212 }
Chris@43 213 }
Chris@43 214
Chris@43 215 return ret;
Chris@43 216 }
Chris@43 217
Chris@43 218
Chris@43 219 uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const void* buf,uLong size)
Chris@43 220 {
Chris@43 221 uLong ret=0;
Chris@43 222 HANDLE hFile = NULL;
Chris@43 223 if (stream!=NULL)
Chris@43 224 hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
Chris@43 225
Chris@43 226 if (hFile != NULL)
Chris@43 227 {
Chris@43 228 if (!WriteFile(hFile, buf, size, &ret, NULL))
Chris@43 229 {
Chris@43 230 DWORD dwErr = GetLastError();
Chris@43 231 if (dwErr == ERROR_HANDLE_EOF)
Chris@43 232 dwErr = 0;
Chris@43 233 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
Chris@43 234 }
Chris@43 235 }
Chris@43 236
Chris@43 237 return ret;
Chris@43 238 }
Chris@43 239
Chris@43 240 static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos, DWORD dwMoveMethod)
Chris@43 241 {
Chris@43 242 #ifdef IOWIN32_USING_WINRT_API
Chris@43 243 return SetFilePointerEx(hFile, pos, newPos, dwMoveMethod);
Chris@43 244 #else
Chris@43 245 LONG lHigh = pos.HighPart;
Chris@43 246 DWORD dwNewPos = SetFilePointer(hFile, pos.LowPart, &lHigh, FILE_CURRENT);
Chris@43 247 BOOL fOk = TRUE;
Chris@43 248 if (dwNewPos == 0xFFFFFFFF)
Chris@43 249 if (GetLastError() != NO_ERROR)
Chris@43 250 fOk = FALSE;
Chris@43 251 if ((newPos != NULL) && (fOk))
Chris@43 252 {
Chris@43 253 newPos->LowPart = dwNewPos;
Chris@43 254 newPos->HighPart = lHigh;
Chris@43 255 }
Chris@43 256 return fOk;
Chris@43 257 #endif
Chris@43 258 }
Chris@43 259
Chris@43 260 long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream)
Chris@43 261 {
Chris@43 262 long ret=-1;
Chris@43 263 HANDLE hFile = NULL;
Chris@43 264 if (stream!=NULL)
Chris@43 265 hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
Chris@43 266 if (hFile != NULL)
Chris@43 267 {
Chris@43 268 LARGE_INTEGER pos;
Chris@43 269 pos.QuadPart = 0;
Chris@43 270
Chris@43 271 if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT))
Chris@43 272 {
Chris@43 273 DWORD dwErr = GetLastError();
Chris@43 274 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
Chris@43 275 ret = -1;
Chris@43 276 }
Chris@43 277 else
Chris@43 278 ret=(long)pos.LowPart;
Chris@43 279 }
Chris@43 280 return ret;
Chris@43 281 }
Chris@43 282
Chris@43 283 ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream)
Chris@43 284 {
Chris@43 285 ZPOS64_T ret= (ZPOS64_T)-1;
Chris@43 286 HANDLE hFile = NULL;
Chris@43 287 if (stream!=NULL)
Chris@43 288 hFile = ((WIN32FILE_IOWIN*)stream)->hf;
Chris@43 289
Chris@43 290 if (hFile)
Chris@43 291 {
Chris@43 292 LARGE_INTEGER pos;
Chris@43 293 pos.QuadPart = 0;
Chris@43 294
Chris@43 295 if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT))
Chris@43 296 {
Chris@43 297 DWORD dwErr = GetLastError();
Chris@43 298 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
Chris@43 299 ret = (ZPOS64_T)-1;
Chris@43 300 }
Chris@43 301 else
Chris@43 302 ret=pos.QuadPart;
Chris@43 303 }
Chris@43 304 return ret;
Chris@43 305 }
Chris@43 306
Chris@43 307
Chris@43 308 long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,int origin)
Chris@43 309 {
Chris@43 310 DWORD dwMoveMethod=0xFFFFFFFF;
Chris@43 311 HANDLE hFile = NULL;
Chris@43 312
Chris@43 313 long ret=-1;
Chris@43 314 if (stream!=NULL)
Chris@43 315 hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
Chris@43 316 switch (origin)
Chris@43 317 {
Chris@43 318 case ZLIB_FILEFUNC_SEEK_CUR :
Chris@43 319 dwMoveMethod = FILE_CURRENT;
Chris@43 320 break;
Chris@43 321 case ZLIB_FILEFUNC_SEEK_END :
Chris@43 322 dwMoveMethod = FILE_END;
Chris@43 323 break;
Chris@43 324 case ZLIB_FILEFUNC_SEEK_SET :
Chris@43 325 dwMoveMethod = FILE_BEGIN;
Chris@43 326 break;
Chris@43 327 default: return -1;
Chris@43 328 }
Chris@43 329
Chris@43 330 if (hFile != NULL)
Chris@43 331 {
Chris@43 332 LARGE_INTEGER pos;
Chris@43 333 pos.QuadPart = offset;
Chris@43 334 if (!MySetFilePointerEx(hFile, pos, NULL, dwMoveMethod))
Chris@43 335 {
Chris@43 336 DWORD dwErr = GetLastError();
Chris@43 337 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
Chris@43 338 ret = -1;
Chris@43 339 }
Chris@43 340 else
Chris@43 341 ret=0;
Chris@43 342 }
Chris@43 343 return ret;
Chris@43 344 }
Chris@43 345
Chris@43 346 long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS64_T offset,int origin)
Chris@43 347 {
Chris@43 348 DWORD dwMoveMethod=0xFFFFFFFF;
Chris@43 349 HANDLE hFile = NULL;
Chris@43 350 long ret=-1;
Chris@43 351
Chris@43 352 if (stream!=NULL)
Chris@43 353 hFile = ((WIN32FILE_IOWIN*)stream)->hf;
Chris@43 354
Chris@43 355 switch (origin)
Chris@43 356 {
Chris@43 357 case ZLIB_FILEFUNC_SEEK_CUR :
Chris@43 358 dwMoveMethod = FILE_CURRENT;
Chris@43 359 break;
Chris@43 360 case ZLIB_FILEFUNC_SEEK_END :
Chris@43 361 dwMoveMethod = FILE_END;
Chris@43 362 break;
Chris@43 363 case ZLIB_FILEFUNC_SEEK_SET :
Chris@43 364 dwMoveMethod = FILE_BEGIN;
Chris@43 365 break;
Chris@43 366 default: return -1;
Chris@43 367 }
Chris@43 368
Chris@43 369 if (hFile)
Chris@43 370 {
Chris@43 371 LARGE_INTEGER pos;
Chris@43 372 pos.QuadPart = offset;
Chris@43 373 if (!MySetFilePointerEx(hFile, pos, NULL, FILE_CURRENT))
Chris@43 374 {
Chris@43 375 DWORD dwErr = GetLastError();
Chris@43 376 ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
Chris@43 377 ret = -1;
Chris@43 378 }
Chris@43 379 else
Chris@43 380 ret=0;
Chris@43 381 }
Chris@43 382 return ret;
Chris@43 383 }
Chris@43 384
Chris@43 385 int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream)
Chris@43 386 {
Chris@43 387 int ret=-1;
Chris@43 388
Chris@43 389 if (stream!=NULL)
Chris@43 390 {
Chris@43 391 HANDLE hFile;
Chris@43 392 hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
Chris@43 393 if (hFile != NULL)
Chris@43 394 {
Chris@43 395 CloseHandle(hFile);
Chris@43 396 ret=0;
Chris@43 397 }
Chris@43 398 free(stream);
Chris@43 399 }
Chris@43 400 return ret;
Chris@43 401 }
Chris@43 402
Chris@43 403 int ZCALLBACK win32_error_file_func (voidpf opaque,voidpf stream)
Chris@43 404 {
Chris@43 405 int ret=-1;
Chris@43 406 if (stream!=NULL)
Chris@43 407 {
Chris@43 408 ret = ((WIN32FILE_IOWIN*)stream) -> error;
Chris@43 409 }
Chris@43 410 return ret;
Chris@43 411 }
Chris@43 412
Chris@43 413 void fill_win32_filefunc (zlib_filefunc_def* pzlib_filefunc_def)
Chris@43 414 {
Chris@43 415 pzlib_filefunc_def->zopen_file = win32_open_file_func;
Chris@43 416 pzlib_filefunc_def->zread_file = win32_read_file_func;
Chris@43 417 pzlib_filefunc_def->zwrite_file = win32_write_file_func;
Chris@43 418 pzlib_filefunc_def->ztell_file = win32_tell_file_func;
Chris@43 419 pzlib_filefunc_def->zseek_file = win32_seek_file_func;
Chris@43 420 pzlib_filefunc_def->zclose_file = win32_close_file_func;
Chris@43 421 pzlib_filefunc_def->zerror_file = win32_error_file_func;
Chris@43 422 pzlib_filefunc_def->opaque = NULL;
Chris@43 423 }
Chris@43 424
Chris@43 425 void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def)
Chris@43 426 {
Chris@43 427 pzlib_filefunc_def->zopen64_file = win32_open64_file_func;
Chris@43 428 pzlib_filefunc_def->zread_file = win32_read_file_func;
Chris@43 429 pzlib_filefunc_def->zwrite_file = win32_write_file_func;
Chris@43 430 pzlib_filefunc_def->ztell64_file = win32_tell64_file_func;
Chris@43 431 pzlib_filefunc_def->zseek64_file = win32_seek64_file_func;
Chris@43 432 pzlib_filefunc_def->zclose_file = win32_close_file_func;
Chris@43 433 pzlib_filefunc_def->zerror_file = win32_error_file_func;
Chris@43 434 pzlib_filefunc_def->opaque = NULL;
Chris@43 435 }
Chris@43 436
Chris@43 437
Chris@43 438 void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def)
Chris@43 439 {
Chris@43 440 pzlib_filefunc_def->zopen64_file = win32_open64_file_funcA;
Chris@43 441 pzlib_filefunc_def->zread_file = win32_read_file_func;
Chris@43 442 pzlib_filefunc_def->zwrite_file = win32_write_file_func;
Chris@43 443 pzlib_filefunc_def->ztell64_file = win32_tell64_file_func;
Chris@43 444 pzlib_filefunc_def->zseek64_file = win32_seek64_file_func;
Chris@43 445 pzlib_filefunc_def->zclose_file = win32_close_file_func;
Chris@43 446 pzlib_filefunc_def->zerror_file = win32_error_file_func;
Chris@43 447 pzlib_filefunc_def->opaque = NULL;
Chris@43 448 }
Chris@43 449
Chris@43 450
Chris@43 451 void fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def)
Chris@43 452 {
Chris@43 453 pzlib_filefunc_def->zopen64_file = win32_open64_file_funcW;
Chris@43 454 pzlib_filefunc_def->zread_file = win32_read_file_func;
Chris@43 455 pzlib_filefunc_def->zwrite_file = win32_write_file_func;
Chris@43 456 pzlib_filefunc_def->ztell64_file = win32_tell64_file_func;
Chris@43 457 pzlib_filefunc_def->zseek64_file = win32_seek64_file_func;
Chris@43 458 pzlib_filefunc_def->zclose_file = win32_close_file_func;
Chris@43 459 pzlib_filefunc_def->zerror_file = win32_error_file_func;
Chris@43 460 pzlib_filefunc_def->opaque = NULL;
Chris@43 461 }