annotate src/zlib-1.2.8/contrib/minizip/iowin32.c @ 169:223a55898ab9 tip default

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