mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-09 07:39:26 +01:00
Externals: Add a stripped down version of minizip.
This commit is contained in:
parent
480972612c
commit
8e26d33133
@ -586,6 +586,9 @@ else()
|
|||||||
add_subdirectory(Externals/zlib)
|
add_subdirectory(Externals/zlib)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
add_subdirectory(Externals/minizip)
|
||||||
|
include_directories(External/minizip)
|
||||||
|
|
||||||
if(NOT APPLE)
|
if(NOT APPLE)
|
||||||
check_lib(LZO "(no .pc for lzo2)" lzo2 lzo/lzo1x.h QUIET)
|
check_lib(LZO "(no .pc for lzo2)" lzo2 lzo/lzo1x.h QUIET)
|
||||||
endif()
|
endif()
|
||||||
|
16
Externals/minizip/CMakeLists.txt
vendored
Normal file
16
Externals/minizip/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
project(minizip C)
|
||||||
|
|
||||||
|
set(SRCS ioapi.c unzip.c)
|
||||||
|
|
||||||
|
add_definitions(-DNOUNCRYPT)
|
||||||
|
if(UNIX)
|
||||||
|
add_definitions(-D__USE_FILE_OFFSET64)
|
||||||
|
add_definitions(-D__USE_LARGEFILE64)
|
||||||
|
add_definitions(-D_LARGEFILE64_SOURCE)
|
||||||
|
add_definitions(-D_FILE_OFFSET_BIT=64)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(minizip STATIC ${SRCS})
|
||||||
|
target_include_directories(minizip PUBLIC .)
|
||||||
|
|
||||||
|
add_library(MiniZip::minizip ALIAS minizip)
|
17
Externals/minizip/LICENSE
vendored
Normal file
17
Externals/minizip/LICENSE
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
Condition of use and distribution are the same as zlib:
|
||||||
|
|
||||||
|
This software is provided 'as-is', without any express or implied
|
||||||
|
warranty. In no event will the authors be held liable for any damages
|
||||||
|
arising from the use of this software.
|
||||||
|
|
||||||
|
Permission is granted to anyone to use this software for any purpose,
|
||||||
|
including commercial applications, and to alter it and redistribute it
|
||||||
|
freely, subject to the following restrictions:
|
||||||
|
|
||||||
|
1. The origin of this software must not be misrepresented; you must not
|
||||||
|
claim that you wrote the original software. If you use this software
|
||||||
|
in a product, an acknowledgement in the product documentation would be
|
||||||
|
appreciated but is not required.
|
||||||
|
2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
misrepresented as being the original software.
|
||||||
|
3. This notice may not be removed or altered from any source distribution.
|
2
Externals/minizip/README
vendored
Normal file
2
Externals/minizip/README
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Partial import from https://github.com/nmoinvaz/minizip
|
||||||
|
Revision: b3713abe7722f1b779e7cdbd527c6208abbe1121
|
351
Externals/minizip/ioapi.c
vendored
Normal file
351
Externals/minizip/ioapi.c
vendored
Normal file
@ -0,0 +1,351 @@
|
|||||||
|
/* ioapi.c -- IO base function header for compress/uncompress .zip
|
||||||
|
part of the MiniZip project
|
||||||
|
|
||||||
|
Copyright (C) 1998-2010 Gilles Vollant
|
||||||
|
http://www.winimage.com/zLibDll/minizip.html
|
||||||
|
Modifications for Zip64 support
|
||||||
|
Copyright (C) 2009-2010 Mathias Svensson
|
||||||
|
http://result42.com
|
||||||
|
|
||||||
|
This program is distributed under the terms of the same license as zlib.
|
||||||
|
See the accompanying LICENSE file for the full text of the license.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#if defined unix || defined __APPLE__
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "ioapi.h"
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
# define snprintf _snprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
voidpf call_zopen64(const zlib_filefunc64_32_def *pfilefunc, const void *filename, int mode)
|
||||||
|
{
|
||||||
|
if (pfilefunc->zfile_func64.zopen64_file != NULL)
|
||||||
|
return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque, filename, mode);
|
||||||
|
return (*(pfilefunc->zopen32_file))(pfilefunc->zfile_func64.opaque, (const char*)filename, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
voidpf call_zopendisk64(const zlib_filefunc64_32_def *pfilefunc, voidpf filestream, uint32_t number_disk, int mode)
|
||||||
|
{
|
||||||
|
if (pfilefunc->zfile_func64.zopendisk64_file != NULL)
|
||||||
|
return (*(pfilefunc->zfile_func64.zopendisk64_file)) (pfilefunc->zfile_func64.opaque, filestream, number_disk, mode);
|
||||||
|
return (*(pfilefunc->zopendisk32_file))(pfilefunc->zfile_func64.opaque, filestream, number_disk, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
long call_zseek64(const zlib_filefunc64_32_def *pfilefunc, voidpf filestream, uint64_t offset, int origin)
|
||||||
|
{
|
||||||
|
uint32_t offset_truncated = 0;
|
||||||
|
if (pfilefunc->zfile_func64.zseek64_file != NULL)
|
||||||
|
return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin);
|
||||||
|
offset_truncated = (uint32_t)offset;
|
||||||
|
if (offset_truncated != offset)
|
||||||
|
return -1;
|
||||||
|
return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream, offset_truncated, origin);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t call_ztell64(const zlib_filefunc64_32_def *pfilefunc, voidpf filestream)
|
||||||
|
{
|
||||||
|
uint64_t position;
|
||||||
|
if (pfilefunc->zfile_func64.zseek64_file != NULL)
|
||||||
|
return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque, filestream);
|
||||||
|
position = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque, filestream);
|
||||||
|
if ((position) == UINT32_MAX)
|
||||||
|
return (uint64_t)-1;
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def *p_filefunc64_32, const zlib_filefunc_def *p_filefunc32)
|
||||||
|
{
|
||||||
|
p_filefunc64_32->zfile_func64.zopen64_file = NULL;
|
||||||
|
p_filefunc64_32->zfile_func64.zopendisk64_file = NULL;
|
||||||
|
p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file;
|
||||||
|
p_filefunc64_32->zopendisk32_file = p_filefunc32->zopendisk_file;
|
||||||
|
p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
|
||||||
|
p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file;
|
||||||
|
p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file;
|
||||||
|
p_filefunc64_32->zfile_func64.ztell64_file = NULL;
|
||||||
|
p_filefunc64_32->zfile_func64.zseek64_file = NULL;
|
||||||
|
p_filefunc64_32->zfile_func64.zclose_file = p_filefunc32->zclose_file;
|
||||||
|
p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
|
||||||
|
p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque;
|
||||||
|
p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file;
|
||||||
|
p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file;
|
||||||
|
}
|
||||||
|
|
||||||
|
static voidpf ZCALLBACK fopen_file_func(voidpf opaque, const char *filename, int mode);
|
||||||
|
static uint32_t ZCALLBACK fread_file_func(voidpf opaque, voidpf stream, void* buf, uint32_t size);
|
||||||
|
static uint32_t ZCALLBACK fwrite_file_func(voidpf opaque, voidpf stream, const void *buf, uint32_t size);
|
||||||
|
static uint64_t ZCALLBACK ftell64_file_func(voidpf opaque, voidpf stream);
|
||||||
|
static long ZCALLBACK fseek64_file_func(voidpf opaque, voidpf stream, uint64_t offset, int origin);
|
||||||
|
static int ZCALLBACK fclose_file_func(voidpf opaque, voidpf stream);
|
||||||
|
static int ZCALLBACK ferror_file_func(voidpf opaque, voidpf stream);
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
FILE *file;
|
||||||
|
int filenameLength;
|
||||||
|
void *filename;
|
||||||
|
} FILE_IOPOSIX;
|
||||||
|
|
||||||
|
static voidpf file_build_ioposix(FILE *file, const char *filename)
|
||||||
|
{
|
||||||
|
FILE_IOPOSIX *ioposix = NULL;
|
||||||
|
if (file == NULL)
|
||||||
|
return NULL;
|
||||||
|
ioposix = (FILE_IOPOSIX*)malloc(sizeof(FILE_IOPOSIX));
|
||||||
|
ioposix->file = file;
|
||||||
|
ioposix->filenameLength = (int)strlen(filename) + 1;
|
||||||
|
ioposix->filename = (char*)malloc(ioposix->filenameLength * sizeof(char));
|
||||||
|
strncpy((char*)ioposix->filename, filename, ioposix->filenameLength);
|
||||||
|
return (voidpf)ioposix;
|
||||||
|
}
|
||||||
|
|
||||||
|
static voidpf ZCALLBACK fopen_file_func(voidpf opaque, const char *filename, int mode)
|
||||||
|
{
|
||||||
|
FILE* file = NULL;
|
||||||
|
const char *mode_fopen = NULL;
|
||||||
|
if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER) == ZLIB_FILEFUNC_MODE_READ)
|
||||||
|
mode_fopen = "rb";
|
||||||
|
else if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
|
||||||
|
mode_fopen = "r+b";
|
||||||
|
else if (mode & ZLIB_FILEFUNC_MODE_CREATE)
|
||||||
|
mode_fopen = "wb";
|
||||||
|
|
||||||
|
if ((filename != NULL) && (mode_fopen != NULL))
|
||||||
|
{
|
||||||
|
file = fopen(filename, mode_fopen);
|
||||||
|
return file_build_ioposix(file, filename);
|
||||||
|
}
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
static voidpf ZCALLBACK fopen64_file_func(voidpf opaque, const void *filename, int mode)
|
||||||
|
{
|
||||||
|
FILE* file = NULL;
|
||||||
|
const char *mode_fopen = NULL;
|
||||||
|
if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER) == ZLIB_FILEFUNC_MODE_READ)
|
||||||
|
mode_fopen = "rb";
|
||||||
|
else if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
|
||||||
|
mode_fopen = "r+b";
|
||||||
|
else if (mode & ZLIB_FILEFUNC_MODE_CREATE)
|
||||||
|
mode_fopen = "wb";
|
||||||
|
|
||||||
|
if ((filename != NULL) && (mode_fopen != NULL))
|
||||||
|
{
|
||||||
|
file = fopen64((const char*)filename, mode_fopen);
|
||||||
|
return file_build_ioposix(file, (const char*)filename);
|
||||||
|
}
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
static voidpf ZCALLBACK fopendisk64_file_func(voidpf opaque, voidpf stream, uint32_t number_disk, int mode)
|
||||||
|
{
|
||||||
|
FILE_IOPOSIX *ioposix = NULL;
|
||||||
|
char *diskFilename = NULL;
|
||||||
|
voidpf ret = NULL;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
if (stream == NULL)
|
||||||
|
return NULL;
|
||||||
|
ioposix = (FILE_IOPOSIX*)stream;
|
||||||
|
diskFilename = (char*)malloc(ioposix->filenameLength * sizeof(char));
|
||||||
|
strncpy(diskFilename, (const char*)ioposix->filename, ioposix->filenameLength);
|
||||||
|
for (i = ioposix->filenameLength - 1; i >= 0; i -= 1)
|
||||||
|
{
|
||||||
|
if (diskFilename[i] != '.')
|
||||||
|
continue;
|
||||||
|
snprintf(&diskFilename[i], ioposix->filenameLength - i, ".z%02u", number_disk + 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (i >= 0)
|
||||||
|
ret = fopen64_file_func(opaque, diskFilename, mode);
|
||||||
|
free(diskFilename);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static voidpf ZCALLBACK fopendisk_file_func(voidpf opaque, voidpf stream, uint32_t number_disk, int mode)
|
||||||
|
{
|
||||||
|
FILE_IOPOSIX *ioposix = NULL;
|
||||||
|
char *diskFilename = NULL;
|
||||||
|
voidpf ret = NULL;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
if (stream == NULL)
|
||||||
|
return NULL;
|
||||||
|
ioposix = (FILE_IOPOSIX*)stream;
|
||||||
|
diskFilename = (char*)malloc(ioposix->filenameLength * sizeof(char));
|
||||||
|
strncpy(diskFilename, (const char*)ioposix->filename, ioposix->filenameLength);
|
||||||
|
for (i = ioposix->filenameLength - 1; i >= 0; i -= 1)
|
||||||
|
{
|
||||||
|
if (diskFilename[i] != '.')
|
||||||
|
continue;
|
||||||
|
snprintf(&diskFilename[i], ioposix->filenameLength - i, ".z%02u", number_disk + 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (i >= 0)
|
||||||
|
ret = fopen_file_func(opaque, diskFilename, mode);
|
||||||
|
free(diskFilename);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint32_t ZCALLBACK fread_file_func(voidpf opaque, voidpf stream, void* buf, uint32_t size)
|
||||||
|
{
|
||||||
|
FILE_IOPOSIX *ioposix = NULL;
|
||||||
|
uint32_t read = (uint32_t)-1;
|
||||||
|
if (stream == NULL)
|
||||||
|
return read;
|
||||||
|
ioposix = (FILE_IOPOSIX*)stream;
|
||||||
|
read = (uint32_t)fread(buf, 1, (size_t)size, ioposix->file);
|
||||||
|
return read;
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint32_t ZCALLBACK fwrite_file_func(voidpf opaque, voidpf stream, const void *buf, uint32_t size)
|
||||||
|
{
|
||||||
|
FILE_IOPOSIX *ioposix = NULL;
|
||||||
|
uint32_t written = (uint32_t)-1;
|
||||||
|
if (stream == NULL)
|
||||||
|
return written;
|
||||||
|
ioposix = (FILE_IOPOSIX*)stream;
|
||||||
|
written = (uint32_t)fwrite(buf, 1, (size_t)size, ioposix->file);
|
||||||
|
return written;
|
||||||
|
}
|
||||||
|
|
||||||
|
static long ZCALLBACK ftell_file_func(voidpf opaque, voidpf stream)
|
||||||
|
{
|
||||||
|
FILE_IOPOSIX *ioposix = NULL;
|
||||||
|
long ret = -1;
|
||||||
|
if (stream == NULL)
|
||||||
|
return ret;
|
||||||
|
ioposix = (FILE_IOPOSIX*)stream;
|
||||||
|
ret = ftell(ioposix->file);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint64_t ZCALLBACK ftell64_file_func(voidpf opaque, voidpf stream)
|
||||||
|
{
|
||||||
|
FILE_IOPOSIX *ioposix = NULL;
|
||||||
|
uint64_t ret = (uint64_t)-1;
|
||||||
|
if (stream == NULL)
|
||||||
|
return ret;
|
||||||
|
ioposix = (FILE_IOPOSIX*)stream;
|
||||||
|
ret = ftello64(ioposix->file);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static long ZCALLBACK fseek_file_func(voidpf opaque, voidpf stream, uint32_t offset, int origin)
|
||||||
|
{
|
||||||
|
FILE_IOPOSIX *ioposix = NULL;
|
||||||
|
int fseek_origin = 0;
|
||||||
|
long ret = 0;
|
||||||
|
|
||||||
|
if (stream == NULL)
|
||||||
|
return -1;
|
||||||
|
ioposix = (FILE_IOPOSIX*)stream;
|
||||||
|
|
||||||
|
switch (origin)
|
||||||
|
{
|
||||||
|
case ZLIB_FILEFUNC_SEEK_CUR:
|
||||||
|
fseek_origin = SEEK_CUR;
|
||||||
|
break;
|
||||||
|
case ZLIB_FILEFUNC_SEEK_END:
|
||||||
|
fseek_origin = SEEK_END;
|
||||||
|
break;
|
||||||
|
case ZLIB_FILEFUNC_SEEK_SET:
|
||||||
|
fseek_origin = SEEK_SET;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (fseek(ioposix->file, offset, fseek_origin) != 0)
|
||||||
|
ret = -1;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static long ZCALLBACK fseek64_file_func(voidpf opaque, voidpf stream, uint64_t offset, int origin)
|
||||||
|
{
|
||||||
|
FILE_IOPOSIX *ioposix = NULL;
|
||||||
|
int fseek_origin = 0;
|
||||||
|
long ret = 0;
|
||||||
|
|
||||||
|
if (stream == NULL)
|
||||||
|
return -1;
|
||||||
|
ioposix = (FILE_IOPOSIX*)stream;
|
||||||
|
|
||||||
|
switch (origin)
|
||||||
|
{
|
||||||
|
case ZLIB_FILEFUNC_SEEK_CUR:
|
||||||
|
fseek_origin = SEEK_CUR;
|
||||||
|
break;
|
||||||
|
case ZLIB_FILEFUNC_SEEK_END:
|
||||||
|
fseek_origin = SEEK_END;
|
||||||
|
break;
|
||||||
|
case ZLIB_FILEFUNC_SEEK_SET:
|
||||||
|
fseek_origin = SEEK_SET;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fseeko64(ioposix->file, offset, fseek_origin) != 0)
|
||||||
|
ret = -1;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int ZCALLBACK fclose_file_func(voidpf opaque, voidpf stream)
|
||||||
|
{
|
||||||
|
FILE_IOPOSIX *ioposix = NULL;
|
||||||
|
int ret = -1;
|
||||||
|
if (stream == NULL)
|
||||||
|
return ret;
|
||||||
|
ioposix = (FILE_IOPOSIX*)stream;
|
||||||
|
if (ioposix->filename != NULL)
|
||||||
|
free(ioposix->filename);
|
||||||
|
ret = fclose(ioposix->file);
|
||||||
|
free(ioposix);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int ZCALLBACK ferror_file_func(voidpf opaque, voidpf stream)
|
||||||
|
{
|
||||||
|
FILE_IOPOSIX *ioposix = NULL;
|
||||||
|
int ret = -1;
|
||||||
|
if (stream == NULL)
|
||||||
|
return ret;
|
||||||
|
ioposix = (FILE_IOPOSIX*)stream;
|
||||||
|
ret = ferror(ioposix->file);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fill_fopen_filefunc(zlib_filefunc_def *pzlib_filefunc_def)
|
||||||
|
{
|
||||||
|
pzlib_filefunc_def->zopen_file = fopen_file_func;
|
||||||
|
pzlib_filefunc_def->zopendisk_file = fopendisk_file_func;
|
||||||
|
pzlib_filefunc_def->zread_file = fread_file_func;
|
||||||
|
pzlib_filefunc_def->zwrite_file = fwrite_file_func;
|
||||||
|
pzlib_filefunc_def->ztell_file = ftell_file_func;
|
||||||
|
pzlib_filefunc_def->zseek_file = fseek_file_func;
|
||||||
|
pzlib_filefunc_def->zclose_file = fclose_file_func;
|
||||||
|
pzlib_filefunc_def->zerror_file = ferror_file_func;
|
||||||
|
pzlib_filefunc_def->opaque = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fill_fopen64_filefunc(zlib_filefunc64_def *pzlib_filefunc_def)
|
||||||
|
{
|
||||||
|
pzlib_filefunc_def->zopen64_file = fopen64_file_func;
|
||||||
|
pzlib_filefunc_def->zopendisk64_file = fopendisk64_file_func;
|
||||||
|
pzlib_filefunc_def->zread_file = fread_file_func;
|
||||||
|
pzlib_filefunc_def->zwrite_file = fwrite_file_func;
|
||||||
|
pzlib_filefunc_def->ztell64_file = ftell64_file_func;
|
||||||
|
pzlib_filefunc_def->zseek64_file = fseek64_file_func;
|
||||||
|
pzlib_filefunc_def->zclose_file = fclose_file_func;
|
||||||
|
pzlib_filefunc_def->zerror_file = ferror_file_func;
|
||||||
|
pzlib_filefunc_def->opaque = NULL;
|
||||||
|
}
|
146
Externals/minizip/ioapi.h
vendored
Normal file
146
Externals/minizip/ioapi.h
vendored
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
/* ioapi.h -- IO base function header for compress/uncompress .zip
|
||||||
|
part of the MiniZip project
|
||||||
|
|
||||||
|
Copyright (C) 1998-2010 Gilles Vollant
|
||||||
|
http://www.winimage.com/zLibDll/minizip.html
|
||||||
|
Modifications for Zip64 support
|
||||||
|
Copyright (C) 2009-2010 Mathias Svensson
|
||||||
|
http://result42.com
|
||||||
|
|
||||||
|
This program is distributed under the terms of the same license as zlib.
|
||||||
|
See the accompanying LICENSE file for the full text of the license.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ZLIBIOAPI64_H
|
||||||
|
#define _ZLIBIOAPI64_H
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "zlib.h"
|
||||||
|
|
||||||
|
#if defined(USE_FILE32API)
|
||||||
|
# define fopen64 fopen
|
||||||
|
# define ftello64 ftell
|
||||||
|
# define fseeko64 fseek
|
||||||
|
#else
|
||||||
|
# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) || defined(__APPLE__)
|
||||||
|
# define fopen64 fopen
|
||||||
|
# define ftello64 ftello
|
||||||
|
# define fseeko64 fseeko
|
||||||
|
# endif
|
||||||
|
# ifdef _MSC_VER
|
||||||
|
# define fopen64 fopen
|
||||||
|
# if (_MSC_VER >= 1400) && (!(defined(NO_MSCVER_FILE64_FUNC)))
|
||||||
|
# define ftello64 _ftelli64
|
||||||
|
# define fseeko64 _fseeki64
|
||||||
|
# else /* old MSC */
|
||||||
|
# define ftello64 ftell
|
||||||
|
# define fseeko64 fseek
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ZLIB_FILEFUNC_SEEK_CUR (1)
|
||||||
|
#define ZLIB_FILEFUNC_SEEK_END (2)
|
||||||
|
#define ZLIB_FILEFUNC_SEEK_SET (0)
|
||||||
|
|
||||||
|
#define ZLIB_FILEFUNC_MODE_READ (1)
|
||||||
|
#define ZLIB_FILEFUNC_MODE_WRITE (2)
|
||||||
|
#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3)
|
||||||
|
#define ZLIB_FILEFUNC_MODE_EXISTING (4)
|
||||||
|
#define ZLIB_FILEFUNC_MODE_CREATE (8)
|
||||||
|
|
||||||
|
#ifndef ZCALLBACK
|
||||||
|
# if (defined(WIN32) || defined(_WIN32) || defined (WINDOWS) || \
|
||||||
|
defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK)
|
||||||
|
# define ZCALLBACK CALLBACK
|
||||||
|
# else
|
||||||
|
# define ZCALLBACK
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef voidpf (ZCALLBACK *open_file_func) (voidpf opaque, const char *filename, int mode);
|
||||||
|
typedef voidpf (ZCALLBACK *opendisk_file_func) (voidpf opaque, voidpf stream, uint32_t number_disk, int mode);
|
||||||
|
typedef uint32_t (ZCALLBACK *read_file_func) (voidpf opaque, voidpf stream, void* buf, uint32_t size);
|
||||||
|
typedef uint32_t (ZCALLBACK *write_file_func) (voidpf opaque, voidpf stream, const void *buf, uint32_t size);
|
||||||
|
typedef int (ZCALLBACK *close_file_func) (voidpf opaque, voidpf stream);
|
||||||
|
typedef int (ZCALLBACK *error_file_func) (voidpf opaque, voidpf stream);
|
||||||
|
|
||||||
|
typedef long (ZCALLBACK *tell_file_func) (voidpf opaque, voidpf stream);
|
||||||
|
typedef long (ZCALLBACK *seek_file_func) (voidpf opaque, voidpf stream, uint32_t offset, int origin);
|
||||||
|
|
||||||
|
/* here is the "old" 32 bits structure structure */
|
||||||
|
typedef struct zlib_filefunc_def_s
|
||||||
|
{
|
||||||
|
open_file_func zopen_file;
|
||||||
|
opendisk_file_func zopendisk_file;
|
||||||
|
read_file_func zread_file;
|
||||||
|
write_file_func zwrite_file;
|
||||||
|
tell_file_func ztell_file;
|
||||||
|
seek_file_func zseek_file;
|
||||||
|
close_file_func zclose_file;
|
||||||
|
error_file_func zerror_file;
|
||||||
|
voidpf opaque;
|
||||||
|
} zlib_filefunc_def;
|
||||||
|
|
||||||
|
typedef uint64_t (ZCALLBACK *tell64_file_func) (voidpf opaque, voidpf stream);
|
||||||
|
typedef long (ZCALLBACK *seek64_file_func) (voidpf opaque, voidpf stream, uint64_t offset, int origin);
|
||||||
|
typedef voidpf (ZCALLBACK *open64_file_func) (voidpf opaque, const void *filename, int mode);
|
||||||
|
typedef voidpf (ZCALLBACK *opendisk64_file_func)(voidpf opaque, voidpf stream, uint32_t number_disk, int mode);
|
||||||
|
|
||||||
|
typedef struct zlib_filefunc64_def_s
|
||||||
|
{
|
||||||
|
open64_file_func zopen64_file;
|
||||||
|
opendisk64_file_func zopendisk64_file;
|
||||||
|
read_file_func zread_file;
|
||||||
|
write_file_func zwrite_file;
|
||||||
|
tell64_file_func ztell64_file;
|
||||||
|
seek64_file_func zseek64_file;
|
||||||
|
close_file_func zclose_file;
|
||||||
|
error_file_func zerror_file;
|
||||||
|
voidpf opaque;
|
||||||
|
} zlib_filefunc64_def;
|
||||||
|
|
||||||
|
void fill_fopen_filefunc(zlib_filefunc_def *pzlib_filefunc_def);
|
||||||
|
void fill_fopen64_filefunc(zlib_filefunc64_def *pzlib_filefunc_def);
|
||||||
|
|
||||||
|
/* now internal definition, only for zip.c and unzip.h */
|
||||||
|
typedef struct zlib_filefunc64_32_def_s
|
||||||
|
{
|
||||||
|
zlib_filefunc64_def zfile_func64;
|
||||||
|
open_file_func zopen32_file;
|
||||||
|
opendisk_file_func zopendisk32_file;
|
||||||
|
tell_file_func ztell32_file;
|
||||||
|
seek_file_func zseek32_file;
|
||||||
|
} zlib_filefunc64_32_def;
|
||||||
|
|
||||||
|
#define ZREAD64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zread_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size))
|
||||||
|
#define ZWRITE64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zwrite_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size))
|
||||||
|
/*#define ZTELL64(filefunc,filestream) ((*((filefunc).ztell64_file)) ((filefunc).opaque,filestream))*/
|
||||||
|
/*#define ZSEEK64(filefunc,filestream,pos,mode) ((*((filefunc).zseek64_file)) ((filefunc).opaque,filestream,pos,mode))*/
|
||||||
|
#define ZCLOSE64(filefunc,filestream) ((*((filefunc).zfile_func64.zclose_file)) ((filefunc).zfile_func64.opaque,filestream))
|
||||||
|
#define ZERROR64(filefunc,filestream) ((*((filefunc).zfile_func64.zerror_file)) ((filefunc).zfile_func64.opaque,filestream))
|
||||||
|
|
||||||
|
voidpf call_zopen64(const zlib_filefunc64_32_def *pfilefunc,const void*filename, int mode);
|
||||||
|
voidpf call_zopendisk64(const zlib_filefunc64_32_def *pfilefunc, voidpf filestream, uint32_t number_disk, int mode);
|
||||||
|
long call_zseek64(const zlib_filefunc64_32_def *pfilefunc, voidpf filestream, uint64_t offset, int origin);
|
||||||
|
uint64_t call_ztell64(const zlib_filefunc64_32_def *pfilefunc, voidpf filestream);
|
||||||
|
|
||||||
|
void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def *p_filefunc64_32, const zlib_filefunc_def *p_filefunc32);
|
||||||
|
|
||||||
|
#define ZOPEN64(filefunc,filename,mode) (call_zopen64((&(filefunc)),(filename),(mode)))
|
||||||
|
#define ZOPENDISK64(filefunc,filestream,diskn,mode) (call_zopendisk64((&(filefunc)),(filestream),(diskn),(mode)))
|
||||||
|
#define ZTELL64(filefunc,filestream) (call_ztell64((&(filefunc)),(filestream)))
|
||||||
|
#define ZSEEK64(filefunc,filestream,pos,mode) (call_zseek64((&(filefunc)),(filestream),(pos),(mode)))
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
62
Externals/minizip/minizip.vcxproj
vendored
Normal file
62
Externals/minizip/minizip.vcxproj
vendored
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{23114507-079A-4418-9707-CFA81A03CA99}</ProjectGuid>
|
||||||
|
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Label="Configuration">
|
||||||
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
<Import Project="..\..\Source\VSProps\Base.props" />
|
||||||
|
<Import Project="..\..\Source\VSProps\ClDisableAllWarnings.props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup />
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>NOUNCRYPT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Text Include="CMakeLists.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="ioapi.c" />
|
||||||
|
<ClCompile Include="unzip.c" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="ioapi.h" />
|
||||||
|
<ClInclude Include="unzip.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="LICENSE" />
|
||||||
|
<None Include="README" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
1991
Externals/minizip/unzip.c
vendored
Normal file
1991
Externals/minizip/unzip.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
306
Externals/minizip/unzip.h
vendored
Normal file
306
Externals/minizip/unzip.h
vendored
Normal file
@ -0,0 +1,306 @@
|
|||||||
|
/* unzip.h -- IO for uncompress .zip files using zlib
|
||||||
|
Version 1.1, February 14h, 2010
|
||||||
|
part of the MiniZip project
|
||||||
|
|
||||||
|
Copyright (C) 1998-2010 Gilles Vollant
|
||||||
|
http://www.winimage.com/zLibDll/minizip.html
|
||||||
|
Modifications of Unzip for Zip64
|
||||||
|
Copyright (C) 2007-2008 Even Rouault
|
||||||
|
Modifications for Zip64 support on both zip and unzip
|
||||||
|
Copyright (C) 2009-2010 Mathias Svensson
|
||||||
|
http://result42.com
|
||||||
|
|
||||||
|
This program is distributed under the terms of the same license as zlib.
|
||||||
|
See the accompanying LICENSE file for the full text of the license.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _UNZ_H
|
||||||
|
#define _UNZ_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _ZLIB_H
|
||||||
|
#include "zlib.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _ZLIBIOAPI_H
|
||||||
|
#include "ioapi.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_BZIP2
|
||||||
|
#include "bzlib.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define Z_BZIP2ED 12
|
||||||
|
|
||||||
|
#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
|
||||||
|
/* like the STRICT of WIN32, we define a pointer that cannot be converted
|
||||||
|
from (void*) without cast */
|
||||||
|
typedef struct TagunzFile__ { int unused; } unz_file__;
|
||||||
|
typedef unz_file__ *unzFile;
|
||||||
|
#else
|
||||||
|
typedef voidp unzFile;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define UNZ_OK (0)
|
||||||
|
#define UNZ_END_OF_LIST_OF_FILE (-100)
|
||||||
|
#define UNZ_ERRNO (Z_ERRNO)
|
||||||
|
#define UNZ_EOF (0)
|
||||||
|
#define UNZ_PARAMERROR (-102)
|
||||||
|
#define UNZ_BADZIPFILE (-103)
|
||||||
|
#define UNZ_INTERNALERROR (-104)
|
||||||
|
#define UNZ_CRCERROR (-105)
|
||||||
|
#define UNZ_BADPASSWORD (-106)
|
||||||
|
|
||||||
|
/* unz_global_info structure contain global data about the ZIPfile
|
||||||
|
These data comes from the end of central dir */
|
||||||
|
typedef struct unz_global_info64_s
|
||||||
|
{
|
||||||
|
uint64_t number_entry; /* total number of entries in the central dir on this disk */
|
||||||
|
uint32_t number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP*/
|
||||||
|
uint16_t size_comment; /* size of the global comment of the zipfile */
|
||||||
|
} unz_global_info64;
|
||||||
|
|
||||||
|
typedef struct unz_global_info_s
|
||||||
|
{
|
||||||
|
uint32_t number_entry; /* total number of entries in the central dir on this disk */
|
||||||
|
uint32_t number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP*/
|
||||||
|
uint16_t size_comment; /* size of the global comment of the zipfile */
|
||||||
|
} unz_global_info;
|
||||||
|
|
||||||
|
/* unz_file_info contain information about a file in the zipfile */
|
||||||
|
typedef struct unz_file_info64_s
|
||||||
|
{
|
||||||
|
uint16_t version; /* version made by 2 bytes */
|
||||||
|
uint16_t version_needed; /* version needed to extract 2 bytes */
|
||||||
|
uint16_t flag; /* general purpose bit flag 2 bytes */
|
||||||
|
uint16_t compression_method; /* compression method 2 bytes */
|
||||||
|
uint32_t dos_date; /* last mod file date in Dos fmt 4 bytes */
|
||||||
|
uint32_t crc; /* crc-32 4 bytes */
|
||||||
|
uint64_t compressed_size; /* compressed size 8 bytes */
|
||||||
|
uint64_t uncompressed_size; /* uncompressed size 8 bytes */
|
||||||
|
uint16_t size_filename; /* filename length 2 bytes */
|
||||||
|
uint16_t size_file_extra; /* extra field length 2 bytes */
|
||||||
|
uint16_t size_file_comment; /* file comment length 2 bytes */
|
||||||
|
|
||||||
|
uint32_t disk_num_start; /* disk number start 4 bytes */
|
||||||
|
uint16_t internal_fa; /* internal file attributes 2 bytes */
|
||||||
|
uint32_t external_fa; /* external file attributes 4 bytes */
|
||||||
|
|
||||||
|
uint64_t disk_offset;
|
||||||
|
|
||||||
|
uint16_t size_file_extra_internal;
|
||||||
|
} unz_file_info64;
|
||||||
|
|
||||||
|
typedef struct unz_file_info_s
|
||||||
|
{
|
||||||
|
uint16_t version; /* version made by 2 bytes */
|
||||||
|
uint16_t version_needed; /* version needed to extract 2 bytes */
|
||||||
|
uint16_t flag; /* general purpose bit flag 2 bytes */
|
||||||
|
uint16_t compression_method; /* compression method 2 bytes */
|
||||||
|
uint32_t dos_date; /* last mod file date in Dos fmt 4 bytes */
|
||||||
|
uint32_t crc; /* crc-32 4 bytes */
|
||||||
|
uint32_t compressed_size; /* compressed size 4 bytes */
|
||||||
|
uint32_t uncompressed_size; /* uncompressed size 4 bytes */
|
||||||
|
uint16_t size_filename; /* filename length 2 bytes */
|
||||||
|
uint16_t size_file_extra; /* extra field length 2 bytes */
|
||||||
|
uint16_t size_file_comment; /* file comment length 2 bytes */
|
||||||
|
|
||||||
|
uint16_t disk_num_start; /* disk number start 2 bytes */
|
||||||
|
uint16_t internal_fa; /* internal file attributes 2 bytes */
|
||||||
|
uint32_t external_fa; /* external file attributes 4 bytes */
|
||||||
|
|
||||||
|
uint64_t disk_offset;
|
||||||
|
} unz_file_info;
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
/* Opening and close a zip file */
|
||||||
|
|
||||||
|
extern unzFile ZEXPORT unzOpen(const char *path);
|
||||||
|
extern unzFile ZEXPORT unzOpen64(const void *path);
|
||||||
|
/* Open a Zip file.
|
||||||
|
|
||||||
|
path should contain the full path (by example, on a Windows XP computer
|
||||||
|
"c:\\zlib\\zlib113.zip" or on an Unix computer "zlib/zlib113.zip".
|
||||||
|
return NULL if zipfile cannot be opened or doesn't exist
|
||||||
|
return unzFile handle if no error
|
||||||
|
|
||||||
|
NOTE: The "64" function take a const void *pointer, because the path is just the value passed to the
|
||||||
|
open64_file_func callback. Under Windows, if UNICODE is defined, using fill_fopen64_filefunc, the path
|
||||||
|
is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char *does not describe the reality */
|
||||||
|
|
||||||
|
extern unzFile ZEXPORT unzOpen2(const char *path, zlib_filefunc_def *pzlib_filefunc_def);
|
||||||
|
/* Open a Zip file, like unzOpen, but provide a set of file low level API for read/write operations */
|
||||||
|
extern unzFile ZEXPORT unzOpen2_64(const void *path, zlib_filefunc64_def *pzlib_filefunc_def);
|
||||||
|
/* Open a Zip file, like unz64Open, but provide a set of file low level API for read/write 64-bit operations */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzClose(unzFile file);
|
||||||
|
/* Close a ZipFile opened with unzOpen. If there is files inside the .Zip opened with unzOpenCurrentFile,
|
||||||
|
these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
|
||||||
|
|
||||||
|
return UNZ_OK if there is no error */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetGlobalInfo(unzFile file, unz_global_info *pglobal_info);
|
||||||
|
extern int ZEXPORT unzGetGlobalInfo64(unzFile file, unz_global_info64 *pglobal_info);
|
||||||
|
/* Write info about the ZipFile in the *pglobal_info structure.
|
||||||
|
|
||||||
|
return UNZ_OK if no error */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetGlobalComment(unzFile file, char *comment, uint16_t comment_size);
|
||||||
|
/* Get the global comment string of the ZipFile, in the comment buffer.
|
||||||
|
|
||||||
|
uSizeBuf is the size of the szComment buffer.
|
||||||
|
return the number of byte copied or an error code <0 */
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
/* Reading the content of the current zipfile, you can open it, read data from it, and close it
|
||||||
|
(you can close it before reading all the file) */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzOpenCurrentFile(unzFile file);
|
||||||
|
/* Open for reading data the current file in the zipfile.
|
||||||
|
|
||||||
|
return UNZ_OK if no error */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzOpenCurrentFilePassword(unzFile file, const char *password);
|
||||||
|
/* Open for reading data the current file in the zipfile.
|
||||||
|
password is a crypting password
|
||||||
|
|
||||||
|
return UNZ_OK if no error */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzOpenCurrentFile2(unzFile file, int *method, int *level, int raw);
|
||||||
|
/* Same as unzOpenCurrentFile, but open for read raw the file (not uncompress)
|
||||||
|
if raw==1 *method will receive method of compression, *level will receive level of compression
|
||||||
|
|
||||||
|
NOTE: you can set level parameter as NULL (if you did not want known level,
|
||||||
|
but you CANNOT set method parameter as NULL */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzOpenCurrentFile3(unzFile file, int *method, int *level, int raw, const char *password);
|
||||||
|
/* Same as unzOpenCurrentFile, but takes extra parameter password for encrypted files */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzReadCurrentFile(unzFile file, voidp buf, uint32_t len);
|
||||||
|
/* Read bytes from the current file (opened by unzOpenCurrentFile)
|
||||||
|
buf contain buffer where data must be copied
|
||||||
|
len the size of buf.
|
||||||
|
|
||||||
|
return the number of byte copied if somes bytes are copied
|
||||||
|
return 0 if the end of file was reached
|
||||||
|
return <0 with error code if there is an error (UNZ_ERRNO for IO error, or zLib error for uncompress error) */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetCurrentFileInfo(unzFile file, unz_file_info *pfile_info, char *filename,
|
||||||
|
uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size);
|
||||||
|
extern int ZEXPORT unzGetCurrentFileInfo64(unzFile file, unz_file_info64 *pfile_info, char *filename,
|
||||||
|
uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size);
|
||||||
|
/* Get Info about the current file
|
||||||
|
|
||||||
|
pfile_info if != NULL, the *pfile_info structure will contain somes info about the current file
|
||||||
|
filename if != NULL, the file name string will be copied in filename
|
||||||
|
filename_size is the size of the filename buffer
|
||||||
|
extrafield if != NULL, the extra field information from the central header will be copied in to
|
||||||
|
extrafield_size is the size of the extraField buffer
|
||||||
|
comment if != NULL, the comment string of the file will be copied in to
|
||||||
|
comment_size is the size of the comment buffer */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetLocalExtrafield(unzFile file, voidp buf, uint32_t len);
|
||||||
|
/* Read extra field from the current file (opened by unzOpenCurrentFile)
|
||||||
|
This is the local-header version of the extra field (sometimes, there is
|
||||||
|
more info in the local-header version than in the central-header)
|
||||||
|
|
||||||
|
if buf == NULL, it return the size of the local extra field
|
||||||
|
if buf != NULL, len is the size of the buffer, the extra header is copied in buf.
|
||||||
|
|
||||||
|
return number of bytes copied in buf, or (if <0) the error code */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzCloseCurrentFile(unzFile file);
|
||||||
|
/* Close the file in zip opened with unzOpenCurrentFile
|
||||||
|
|
||||||
|
return UNZ_CRCERROR if all the file was read but the CRC is not good */
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
/* Browse the directory of the zipfile */
|
||||||
|
|
||||||
|
typedef int (*unzFileNameComparer)(unzFile file, const char *filename1, const char *filename2);
|
||||||
|
typedef int (*unzIteratorFunction)(unzFile file);
|
||||||
|
typedef int (*unzIteratorFunction2)(unzFile file, unz_file_info64 *pfile_info, char *filename,
|
||||||
|
uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size);
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGoToFirstFile(unzFile file);
|
||||||
|
/* Set the current file of the zipfile to the first file.
|
||||||
|
|
||||||
|
return UNZ_OK if no error */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGoToFirstFile2(unzFile file, unz_file_info64 *pfile_info, char *filename,
|
||||||
|
uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size);
|
||||||
|
/* Set the current file of the zipfile to the first file and retrieves the current info on success.
|
||||||
|
Not as seek intensive as unzGoToFirstFile + unzGetCurrentFileInfo.
|
||||||
|
|
||||||
|
return UNZ_OK if no error */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGoToNextFile(unzFile file);
|
||||||
|
/* Set the current file of the zipfile to the next file.
|
||||||
|
|
||||||
|
return UNZ_OK if no error
|
||||||
|
return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGoToNextFile2(unzFile file, unz_file_info64 *pfile_info, char *filename,
|
||||||
|
uint16_t filename_size, void *extrafield, uint16_t extrafield_size, char *comment, uint16_t comment_size);
|
||||||
|
/* Set the current file of the zipfile to the next file and retrieves the current
|
||||||
|
info on success. Does less seeking around than unzGotoNextFile + unzGetCurrentFileInfo.
|
||||||
|
|
||||||
|
return UNZ_OK if no error
|
||||||
|
return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzLocateFile(unzFile file, const char *filename, unzFileNameComparer filename_compare_func);
|
||||||
|
/* Try locate the file szFileName in the zipfile. For custom filename comparison pass in comparison function.
|
||||||
|
|
||||||
|
return UNZ_OK if the file is found (it becomes the current file)
|
||||||
|
return UNZ_END_OF_LIST_OF_FILE if the file is not found */
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
/* Raw access to zip file */
|
||||||
|
|
||||||
|
typedef struct unz_file_pos_s
|
||||||
|
{
|
||||||
|
uint32_t pos_in_zip_directory; /* offset in zip file directory */
|
||||||
|
uint32_t num_of_file; /* # of file */
|
||||||
|
} unz_file_pos;
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetFilePos(unzFile file, unz_file_pos *file_pos);
|
||||||
|
extern int ZEXPORT unzGoToFilePos(unzFile file, unz_file_pos *file_pos);
|
||||||
|
|
||||||
|
typedef struct unz64_file_pos_s
|
||||||
|
{
|
||||||
|
uint64_t pos_in_zip_directory; /* offset in zip file directory */
|
||||||
|
uint64_t num_of_file; /* # of file */
|
||||||
|
} unz64_file_pos;
|
||||||
|
|
||||||
|
extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos *file_pos);
|
||||||
|
extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos *file_pos);
|
||||||
|
|
||||||
|
extern int32_t ZEXPORT unzGetOffset(unzFile file);
|
||||||
|
extern int64_t ZEXPORT unzGetOffset64(unzFile file);
|
||||||
|
/* Get the current file offset */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzSetOffset(unzFile file, uint32_t pos);
|
||||||
|
extern int ZEXPORT unzSetOffset64(unzFile file, uint64_t pos);
|
||||||
|
/* Set the current file offset */
|
||||||
|
|
||||||
|
extern int32_t ZEXPORT unzTell(unzFile file);
|
||||||
|
extern int64_t ZEXPORT unzTell64(unzFile file);
|
||||||
|
/* return current position in uncompressed data */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzSeek(unzFile file, uint32_t offset, int origin);
|
||||||
|
extern int ZEXPORT unzSeek64(unzFile file, uint64_t offset, int origin);
|
||||||
|
/* Seek within the uncompressed data if compression method is storage */
|
||||||
|
|
||||||
|
extern int ZEXPORT unzEndOfFile(unzFile file);
|
||||||
|
/* return 1 if the end of file was reached, 0 elsewhere */
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _UNZ_H */
|
@ -598,6 +598,9 @@
|
|||||||
<ProjectReference Include="$(ExternalsDir)pugixml\pugixml.vcxproj">
|
<ProjectReference Include="$(ExternalsDir)pugixml\pugixml.vcxproj">
|
||||||
<Project>{38fee76f-f347-484b-949c-b4649381cffb}</Project>
|
<Project>{38fee76f-f347-484b-949c-b4649381cffb}</Project>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="$(ExternalsDir)minizip\minizip.vcxproj">
|
||||||
|
<Project>{23114507-079a-4418-9707-cfa81a03ca99}</Project>
|
||||||
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
@ -85,6 +85,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Updater", "Core\Updater\Upd
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "discord-rpc", "..\Externals\discord-rpc\src\discord-rpc.vcxproj", "{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "discord-rpc", "..\Externals\discord-rpc\src\discord-rpc.vcxproj", "{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "..\Externals\minizip\minizip.vcxproj", "{23114507-079A-4418-9707-CFA81A03CA99}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|x64 = Debug|x64
|
Debug|x64 = Debug|x64
|
||||||
@ -247,6 +249,10 @@ Global
|
|||||||
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}.Debug|x64.Build.0 = Debug|x64
|
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}.Debug|x64.Build.0 = Debug|x64
|
||||||
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}.Release|x64.ActiveCfg = Release|x64
|
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}.Release|x64.ActiveCfg = Release|x64
|
||||||
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}.Release|x64.Build.0 = Release|x64
|
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}.Release|x64.Build.0 = Release|x64
|
||||||
|
{23114507-079A-4418-9707-CFA81A03CA99}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{23114507-079A-4418-9707-CFA81A03CA99}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{23114507-079A-4418-9707-CFA81A03CA99}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{23114507-079A-4418-9707-CFA81A03CA99}.Release|x64.Build.0 = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@ -285,5 +291,6 @@ Global
|
|||||||
{2C0D058E-DE35-4471-AD99-E68A2CAF9E18} = {87ADDFF9-5768-4DA2-A33B-2477593D6677}
|
{2C0D058E-DE35-4471-AD99-E68A2CAF9E18} = {87ADDFF9-5768-4DA2-A33B-2477593D6677}
|
||||||
{5BDF4B91-1491-4FB0-BC27-78E9A8E97DC3} = {87ADDFF9-5768-4DA2-A33B-2477593D6677}
|
{5BDF4B91-1491-4FB0-BC27-78E9A8E97DC3} = {87ADDFF9-5768-4DA2-A33B-2477593D6677}
|
||||||
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD} = {87ADDFF9-5768-4DA2-A33B-2477593D6677}
|
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD} = {87ADDFF9-5768-4DA2-A33B-2477593D6677}
|
||||||
|
{23114507-079A-4418-9707-CFA81A03CA99} = {87ADDFF9-5768-4DA2-A33B-2477593D6677}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
Loading…
x
Reference in New Issue
Block a user