From 2c9d38af8d65531fe74a4a3cb710e43fe35f5107 Mon Sep 17 00:00:00 2001 From: SeanOMik Date: Thu, 29 Aug 2019 09:52:59 -0500 Subject: [PATCH] Rewrite Code Dont try to build, it still crashes your switch... --- Makefile | 7 +- RomFs/arial.ttf | Bin 1036584 -> 0 bytes include/BLUnZip.h | 86 - include/BLZip.h | 73 - include/SDL_helper.h | 8 +- include/common.h | 44 - include/fs.h | 16 - include/menu_book_reader.h | 4 +- include/minizip/LICENSE.txt | 17 - include/minizip/crypt.h | 137 -- include/minizip/ioapi.c | 380 --- include/minizip/ioapi.h | 158 -- include/minizip/ioapi_mem.c | 202 -- include/minizip/ioapi_mem.h | 51 - include/minizip/unzip.c | 1962 ---------------- include/minizip/unzip.h | 320 --- include/minizip/zip.c | 2029 ----------------- include/minizip/zip.h | 200 -- include/status_bar.h | 6 - include/touch_helper.h | 37 - source/BLUnZip.cpp | 300 --- source/BLZip.cpp | 300 --- source/{menu_book_reader => }/BookReader.cpp | 17 +- source/{menu_book_reader => }/BookReader.hpp | 13 +- source/SDL_helper.c | 13 +- source/fs.c | 99 - source/main.cpp | 127 +- .../menu_book_reader.cpp | 20 +- .../menu_book_reader/mupdf-fitz-stream-open.c | 236 -- source/status_bar.c | 43 - 30 files changed, 88 insertions(+), 6817 deletions(-) delete mode 100644 RomFs/arial.ttf delete mode 100644 include/BLUnZip.h delete mode 100644 include/BLZip.h delete mode 100644 include/common.h delete mode 100644 include/fs.h delete mode 100644 include/minizip/LICENSE.txt delete mode 100644 include/minizip/crypt.h delete mode 100644 include/minizip/ioapi.c delete mode 100644 include/minizip/ioapi.h delete mode 100644 include/minizip/ioapi_mem.c delete mode 100644 include/minizip/ioapi_mem.h delete mode 100644 include/minizip/unzip.c delete mode 100644 include/minizip/unzip.h delete mode 100644 include/minizip/zip.c delete mode 100644 include/minizip/zip.h delete mode 100644 include/status_bar.h delete mode 100644 include/touch_helper.h delete mode 100644 source/BLUnZip.cpp delete mode 100644 source/BLZip.cpp rename source/{menu_book_reader => }/BookReader.cpp (89%) rename source/{menu_book_reader => }/BookReader.hpp (75%) delete mode 100644 source/fs.c rename source/{menu_book_reader => }/menu_book_reader.cpp (73%) delete mode 100644 source/menu_book_reader/mupdf-fitz-stream-open.c delete mode 100644 source/status_bar.c diff --git a/Makefile b/Makefile index cd7d14e..8abbfdc 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,7 @@ BUILD := build SOURCES := source DATA := data INCLUDES := include -ROMFS := RomFs +#ROMFS := RomFS #--------------------------------------------------------------------------------- # options for code generation @@ -53,16 +53,13 @@ CFLAGS := -g -Wall -O2 -ffunction-sections \ $(ARCH) $(DEFINES) CFLAGS += -D__SWITCH__ $(INCLUDE) `sdl2-config --cflags` -LFLAGS=`sdl2-config --libs` -lSDL2_ttf CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := -g $(ARCH) LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) -#LIBS := `sdl2-config --libs` -#LIBS := -lSDL2_mixer -lmodplug -lmpg123 -lvorbisidec -logg -lSDL2_ttf -lSDL2_gfx -lSDL2_image \ -# -lpng -ljpeg `sdl2-config --libs` -lnx -lmupdf -lmupdf-third +#LIBS := `sdl2-config --libs` -lSDL2_ttf -lSDL2_image -lmupdf -lmupdf-third LIBS := `aarch64-none-elf-pkg-config --libs sdl2` -lSDL2_ttf -lSDL2_image -lmupdf -lmupdf-third #--------------------------------------------------------------------------------- diff --git a/RomFs/arial.ttf b/RomFs/arial.ttf deleted file mode 100644 index 8682d94623e575a4ecc9586a35fc909dff37fb2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1036584 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

28$&@mTJJQiAD@=0-$dp(Eo^yD!Q(Nbd!2C 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/ZSF=-G1 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�{Bs5yG`9b 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

ercnBn_qgr#;?-&R*j#d@fs+xv5bQ(fQ-`e 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

5&_^Y}Au*L~rb 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 yH{V -#include - -extern "C" -{ -#include "minizip/zip.h" -} - -class BLUnZip -{ -private: - std::string filename; - bool valid; - zipFile zf; - -public: - BLUnZip( std::string filename ); - ~BLUnZip( void ); - -public: - bool isValid( void ) { return valid; } - -public: - zipFile Open( std::string zipfilename ); - void Close( void ); - -/* -public: - void Add( std::string contentPath, std::string zipPath, int flags ); -*/ - -public: - void List( void ); - - - int ItemCount( void ); - - int IndexOfItem( std::string itemName ); - - void ListOfItems( std::vector& listing ); - std::string NameOfItem( int idx ); - long SizeOfItem( int idx ); - int ExtractToRAM( int idx, char * buf, long bufsz, std::string pw="" ); - std::string ExtractToString( int idx, std::string password="" ); - -public: - long SizeOfItem( std::string itemName ) { return this->SizeOfItem( this->IndexOfItem( itemName)); } - std::string ExtractToString( std::string itemName, std::string password="" ) { return this->ExtractToString( this->IndexOfItem( itemName), password); } -}; diff --git a/include/BLZip.h b/include/BLZip.h deleted file mode 100644 index 893f398..0000000 --- a/include/BLZip.h +++ /dev/null @@ -1,73 +0,0 @@ -/* BLZip - * C++ class for doing basic zip compression - * Scott Lawrence yorgle@gmail.com - * - * This code is HEAVILY based on the "minizip" code included with zlib - * also available here: http://www.winimage.com/zLibDll/minizip.html - * - * v1.0 2013-June-05 - Initial release - */ - -/* This code is provided under an MIT license: - -The MIT License (MIT) - -Copyright (c) 2013 Scott Lawrence - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -*/ - - -#include - -extern "C" -{ -#include "minizip/zip.h" -#include "minizip/unzip.h" -} - -#define ZipFlag_Overwrite 0x01 /* -o */ -#define ZipFlag_Append 0x02 /* -a */ -#define ZipFlag_Store 0x04 /* -0 */ -#define ZipFlag_Faster 0x08 /* -1 */ -#define ZipFlag_Better 0x10 /* -9 */ -#define ZipFlag_NoPaths 0x20 /* -j */ - - -class BLZip -{ -private: - std::string filename; - bool valid; - zipFile zf; - -public: - BLZip( std::string filename ); - ~BLZip( void ); - -public: - zipFile Open( std::string zipfilename ); - void Close( void ); - -public: - int Add( std::string contentPath, - std::string zipPath="", - int flags = ZipFlag_Better ); -}; diff --git a/include/SDL_helper.h b/include/SDL_helper.h index 19ec46f..0910583 100644 --- a/include/SDL_helper.h +++ b/include/SDL_helper.h @@ -1,5 +1,5 @@ -#ifndef NX_SHELL_SDL_HELPER_H -#define NX_SHELL_SDL_HELPER_H +#ifndef EBOOK_READER_SDL_HELPER_H +#define EBOOK_READER_SDL_HELPER_H #include #include @@ -29,8 +29,8 @@ static inline SDL_Color SDL_MakeColour(Uint8 r, Uint8 g, Uint8 b, Uint8 a) void SDL_ClearScreen(SDL_Renderer *renderer, SDL_Color colour); void SDL_DrawRect(SDL_Renderer *renderer, int x, int y, int w, int h, SDL_Color colour); void SDL_DrawCircle(SDL_Renderer *renderer, int x, int y, int r, SDL_Color colour); -void SDL_DrawText(TTF_Font *font, int x, int y, SDL_Color colour, const char *text); -void SDL_DrawTextf(TTF_Font *font, int x, int y, SDL_Color colour, const char* text, ...); +void SDL_DrawText(SDL_Surface* window_surface, TTF_Font *font, int x, int y, SDL_Color colour, const char *text); +void SDL_DrawTextf(SDL_Surface* window_surface, TTF_Font *font, int x, int y, SDL_Color colour, const char* text, ...); void SDL_LoadImage(SDL_Renderer *renderer, SDL_Texture **texture, char *path); void SDL_LoadImageBuf(SDL_Renderer *renderer, SDL_Texture **texture, void *mem, int size); void SDL_DrawImage(SDL_Renderer *renderer, SDL_Texture *texture, int x, int y, int w, int h); diff --git a/include/common.h b/include/common.h deleted file mode 100644 index 4af7d61..0000000 --- a/include/common.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef NX_SHELL_COMMON_H -#define NX_SHELL_COMMON_H - -#include -#include -#include -#include -#include -#include - -#define wait(msec) svcSleepThread(10000000 * (s64)msec) - -jmp_buf exitJmp; - -SDL_Window *WINDOW; -SDL_Surface *WINDOW_SURFACE; -SDL_Renderer *RENDERER; -TTF_Font *Roboto_large, *Roboto, *Roboto_small, *Roboto_OSK; - -#define ROOT_PATH "/" -#define START_PATH ROOT_PATH -#define MAX_FILES 1024 -#define FILES_PER_PAGE 8 - -int MENU_DEFAULT_STATE; -int BROWSE_STATE; - -#define MENU_STATE_HOME 0 -#define MENU_STATE_OPTIONS 1 -#define MENU_STATE_MENUBAR 2 -#define MENU_STATE_SETTINGS 3 -#define MENU_STATE_FTP 4 -#define MENU_STATE_SORT 5 -#define MENU_STATE_THEMES 6 -#define MENU_STATE_DIALOG 7 -#define MENU_STATE_PROPERTIES 8 - -#define STATE_SD 0 -#define STATE_NAND 1 - -char cwd[512]; -char fileName[255]; - -#endif \ No newline at end of file diff --git a/include/fs.h b/include/fs.h deleted file mode 100644 index 0ac788a..0000000 --- a/include/fs.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef NX_SHELL_FS_H -#define NX_SHELL_FS_H - -#include - -FsFileSystem fs; - -int FS_MakeDir(const char *path); -int FS_RecursiveMakeDir(const char * dir); -bool FS_FileExists(const char *path); -bool FS_DirExists(const char *path); -const char *FS_GetFileExt(const char *filename); -char *FS_GetFileModifiedTime(const char *filename); -Result FS_GetFileSize(const char *path, u64 *size); - -#endif \ No newline at end of file diff --git a/include/menu_book_reader.h b/include/menu_book_reader.h index fb402c4..8b5c3a5 100644 --- a/include/menu_book_reader.h +++ b/include/menu_book_reader.h @@ -1,5 +1,5 @@ -#ifndef NX_SHELL_MENU_BOOK_READER_H -#define NX_SHELL_MENU_BOOK_READER_H +#ifndef EBOOK_READER_MENU_BOOK_READER_H +#define EBOOK_READER_MENU_BOOK_READER_H #include diff --git a/include/minizip/LICENSE.txt b/include/minizip/LICENSE.txt deleted file mode 100644 index 086295a..0000000 --- a/include/minizip/LICENSE.txt +++ /dev/null @@ -1,17 +0,0 @@ -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. \ No newline at end of file diff --git a/include/minizip/crypt.h b/include/minizip/crypt.h deleted file mode 100644 index d1d155c..0000000 --- a/include/minizip/crypt.h +++ /dev/null @@ -1,137 +0,0 @@ -/* crypt.h -- base code for traditional PKWARE encryption - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant - Modifications for Info-ZIP crypting - Copyright (C) 2003 Terry Thorsen - - This code is a modified version of crypting code in Info-ZIP distribution - - Copyright (C) 1990-2000 Info-ZIP. All rights reserved. - - See the Info-ZIP LICENSE file version 2000-Apr-09 or later for terms of use - which also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html - - The encryption/decryption parts of this source code (as opposed to the - non-echoing password parts) were originally written in Europe. The - whole source package can be freely distributed, including from the USA. - (Prior to January 2000, re-export from the US was a violation of US law.) - - This encryption code is a direct transcription of the algorithm from - Roger Schlafly, described by Phil Katz in the file appnote.txt. This - file (appnote.txt) is distributed with the PKZIP program (even in the - version without encryption capabilities). - - If you don't need crypting in your application, just define symbols - NOCRYPT and NOUNCRYPT. - - Mar 8th, 2016 - Lucio Cosmo - Fixed support for 64bit builds for archives with "PKWARE" password. - Changed long, unsigned long, unsigned to unsigned int in - access functions to crctables and pkeys - -*/ - -#define CRC32(c, b) ((*(pcrc_32_tab+(((unsigned int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) - -/*********************************************************************** - * Return the next byte in the pseudo-random sequence - */ -static int decrypt_byte(unsigned int* pkeys) -{ - unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an - * unpredictable manner on 16-bit systems; not a problem - * with any known compiler so far, though */ - - temp = ((unsigned int)(*(pkeys+2)) & 0xffff) | 2; - return (unsigned int)(((temp * (temp ^ 1)) >> 8) & 0xff); -} - -/*********************************************************************** - * Update the encryption keys with the next byte of plain text - */ -static int update_keys(unsigned int* pkeys,const unsigned int* pcrc_32_tab,int c) -{ - (*(pkeys+0)) = CRC32((*(pkeys+0)), c); - (*(pkeys+1)) += (*(pkeys+0)) & 0xff; - (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1; - { - register int keyshift = (int)((*(pkeys+1)) >> 24); - (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift); - } - return c; -} - - -/*********************************************************************** - * Initialize the encryption keys and the random header according to - * the given password. - */ -static void init_keys(const char* passwd,unsigned int* pkeys,const unsigned int* pcrc_32_tab) -{ - *(pkeys+0) = 305419896L; - *(pkeys+1) = 591751049L; - *(pkeys+2) = 878082192L; - while (*passwd != 0) - { - update_keys(pkeys,pcrc_32_tab,(int)*passwd); - passwd++; - } -} - -#define zdecode(pkeys,pcrc_32_tab,c) \ - (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys))) - -#define zencode(pkeys,pcrc_32_tab,c,t) \ - (t=decrypt_byte(pkeys), update_keys(pkeys,pcrc_32_tab,c), t^(c)) - -#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED - -#define RAND_HEAD_LEN 12 - /* "last resort" source for second part of crypt seed pattern */ -# ifndef ZCR_SEED2 -# define ZCR_SEED2 3141592654UL /* use PI as default pattern */ -# endif - -static int crypthead(const char* passwd, /* password string */ - unsigned char* buf, /* where to write header */ - int bufSize, - unsigned int* pkeys, - const unsigned int* pcrc_32_tab, - unsigned int crcForCrypting) -{ - int n; /* index in random header */ - int t; /* temporary */ - int c; /* random byte */ - unsigned char header[RAND_HEAD_LEN-2]; /* random header */ - static unsigned calls = 0; /* ensure different random header each time */ - - if (bufSize < RAND_HEAD_LEN) - return 0; - - /* First generate RAND_HEAD_LEN-2 random bytes. We encrypt the - * output of rand() to get less predictability, since rand() is - * often poorly implemented. - */ - if (++calls == 1) - { - srand((unsigned)(time(NULL) ^ ZCR_SEED2)); - } - init_keys(passwd, pkeys, pcrc_32_tab); - for (n = 0; n < RAND_HEAD_LEN-2; n++) - { - c = (rand() >> 7) & 0xff; - header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); - } - /* Encrypt random header (last two bytes is high word of crc) */ - init_keys(passwd, pkeys, pcrc_32_tab); - for (n = 0; n < RAND_HEAD_LEN-2; n++) - { - buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); - } - buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t); - buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t); - return n; -} - -#endif diff --git a/include/minizip/ioapi.c b/include/minizip/ioapi.c deleted file mode 100644 index 485215d..0000000 --- a/include/minizip/ioapi.c +++ /dev/null @@ -1,380 +0,0 @@ -/* 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. -*/ - -//taken and adapted from https://stackoverflow.com/a/13492589 - -// save diagnostic state -#pragma GCC diagnostic push - -// turn off the specific warning. Can also use "-Wall" -#pragma GCC diagnostic ignored "-Wunused-parameter" - -#include -#include - -#include "ioapi.h" - -#if defined(_WIN32) -# define snprintf _snprintf -#endif - -#ifdef __APPLE__ -/* In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions */ -# define FOPEN_FUNC(filename, mode) fopen(filename, mode) -# define FTELLO_FUNC(stream) ftello(stream) -# define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) -#else -# define FOPEN_FUNC(filename, mode) fopen64(filename, mode) -# define FTELLO_FUNC(stream) ftello64(stream) -# define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) -#endif - -/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ -#ifndef SEEK_CUR -# define SEEK_CUR 1 -#endif -#ifndef SEEK_END -# define SEEK_END 2 -#endif -#ifndef SEEK_SET -# define SEEK_SET 0 -#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 OF((const zlib_filefunc64_32_def* pfilefunc, voidpf filestream, int 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, ZPOS64_T offset, int origin) -{ - uLong offsetTruncated; - if (pfilefunc->zfile_func64.zseek64_file != NULL) - return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin); - offsetTruncated = (uLong)offset; - if (offsetTruncated != offset) - return -1; - return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin); -} - -ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream) -{ - uLong tell_uLong; - if (pfilefunc->zfile_func64.zseek64_file != NULL) - return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream); - tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream); - if ((tell_uLong) == 0xffffffff) - return (ZPOS64_T)-1; - return tell_uLong; -} - -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 OF((voidpf opaque, const char* filename, int mode)); -static uLong ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size)); -static uLong ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size)); -static ZPOS64_T ZCALLBACK ftell64_file_func OF((voidpf opaque, voidpf stream)); -static long ZCALLBACK fseek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); -static int ZCALLBACK fclose_file_func OF((voidpf opaque, voidpf stream)); -static int ZCALLBACK ferror_file_func OF((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 = strlen(filename) + 1; - ioposix->filename = (char*)malloc(ioposix->filenameLength * sizeof(char)); - strncpy(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 = FOPEN_FUNC((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, int 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, ioposix->filename, ioposix->filenameLength); - for (i = ioposix->filenameLength - 1; i >= 0; i -= 1) - { - if (diskFilename[i] != '.') - continue; - snprintf(&diskFilename[i], ioposix->filenameLength - i, ".z%02d", 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, int 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, ioposix->filename, ioposix->filenameLength); - for (i = ioposix->filenameLength - 1; i >= 0; i -= 1) - { - if (diskFilename[i] != '.') - continue; - snprintf(&diskFilename[i], ioposix->filenameLength - i, ".z%02d", number_disk + 1); - break; - } - if (i >= 0) - ret = fopen_file_func(opaque, diskFilename, mode); - free(diskFilename); - return ret; -} - -static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size) -{ - FILE_IOPOSIX *ioposix = NULL; - uLong ret; - if (stream == NULL) - return -1; - ioposix = (FILE_IOPOSIX*)stream; - ret = (uLong)fread(buf, 1, (size_t)size, ioposix->file); - return ret; -} - -static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size) -{ - FILE_IOPOSIX *ioposix = NULL; - uLong ret; - if (stream == NULL) - return -1; - ioposix = (FILE_IOPOSIX*)stream; - ret = (uLong)fwrite(buf, 1, (size_t)size, ioposix->file); - return ret; -} - -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 ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream) -{ - FILE_IOPOSIX *ioposix = NULL; - ZPOS64_T ret = -1; - if (stream == NULL) - return ret; - ioposix = (FILE_IOPOSIX*)stream; - ret = FTELLO_FUNC(ioposix->file); - return ret; -} - -static long ZCALLBACK fseek_file_func (voidpf opaque, voidpf stream, uLong 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, ZPOS64_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(FSEEKO_FUNC(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; -} - -// turn the warnings back on -#pragma GCC diagnostic pop diff --git a/include/minizip/ioapi.h b/include/minizip/ioapi.h deleted file mode 100644 index 9d73081..0000000 --- a/include/minizip/ioapi.h +++ /dev/null @@ -1,158 +0,0 @@ -/* 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 - -#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__)) -# ifndef __USE_FILE_OFFSET64 -# define __USE_FILE_OFFSET64 -# endif -# ifndef __USE_LARGEFILE64 -# define __USE_LARGEFILE64 -# endif -# ifndef _LARGEFILE64_SOURCE -# define _LARGEFILE64_SOURCE -# endif -# ifndef _FILE_OFFSET_BIT -# define _FILE_OFFSET_BIT 64 -# endif -#endif - -#include -#include -#include - - -#define fopen64 fopen -#define ftello64 ftell -#define fseeko64 fseek - -/* a type choosen by DEFINE */ -#ifdef HAVE_64BIT_INT_CUSTOM -typedef 64BIT_INT_CUSTOM_TYPE ZPOS64_T; -#else -# ifdef HAVE_STDINT_H -# include "stdint.h" - typedef uint64_t ZPOS64_T; -# else -# if defined(_MSC_VER) || defined(__BORLANDC__) - typedef unsigned __int64 ZPOS64_T; -# else - typedef unsigned long long int ZPOS64_T; -# 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) OF((voidpf opaque, const char* filename, int mode)); -typedef voidpf (ZCALLBACK *opendisk_file_func) OF((voidpf opaque, voidpf stream, int number_disk, int mode)); -typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); -typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); -typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); -typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); - -typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); -typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong 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; - testerror_file_func zerror_file; - voidpf opaque; -} zlib_filefunc_def; - -typedef ZPOS64_T (ZCALLBACK *tell64_file_func) OF((voidpf opaque, voidpf stream)); -typedef long (ZCALLBACK *seek64_file_func) OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); -typedef voidpf (ZCALLBACK *open64_file_func) OF((voidpf opaque, const void* filename, int mode)); -typedef voidpf (ZCALLBACK *opendisk64_file_func)OF((voidpf opaque, voidpf stream, int 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; - testerror_file_func zerror_file; - voidpf opaque; -} zlib_filefunc64_def; - -void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); -void fill_fopen64_filefunc OF((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 OF((const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)); -voidpf call_zopendisk64 OF((const zlib_filefunc64_32_def* pfilefunc, voidpf filestream, int number_disk, int mode)); -long call_zseek64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin)); -ZPOS64_T call_ztell64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream)); - -void fill_zlib_filefunc64_32_def_from_filefunc32 OF((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 diff --git a/include/minizip/ioapi_mem.c b/include/minizip/ioapi_mem.c deleted file mode 100644 index c6aecd5..0000000 --- a/include/minizip/ioapi_mem.c +++ /dev/null @@ -1,202 +0,0 @@ -/* ioapi_mem.h -- IO base function header for compress/uncompress .zip - files using zlib + zip or unzip API - - This version of ioapi is designed to access memory rather than files. - We do use a region of memory to put data in to and take it out of. We do - not have auto-extending buffers and do not inform anyone else that the - data has been written. It is really intended for accessing a zip archive - embedded in an application such that I can write an installer with no - external files. Creation of archives has not been attempted, although - parts of the framework are present. - - Based on Unzip ioapi.c version 0.22, May 19th, 2003 - - Copyright (C) 1998-2003 Gilles Vollant - (C) 2003 Justin Fletcher - - This file is under the same license as the Unzip tool it is distributed - with. -*/ - -//taken and adapted from https://stackoverflow.com/a/13492589 - -// save diagnostic state -#pragma GCC diagnostic push - -// turn off the specific warning. Can also use "-Wall" -#pragma GCC diagnostic ignored "-Wunused-parameter" - -#include -#include -#include - -#include "zlib.h" -#include "ioapi.h" - -#include "ioapi_mem.h" - -#ifndef IOMEM_BUFFERSIZE -# define IOMEM_BUFFERSIZE (64 * 1024) -#endif - -voidpf ZCALLBACK fopen_mem_func (opaque, filename, mode) - voidpf opaque; - const char* filename; - int mode; -{ - ourmemory_t *mem = (ourmemory_t *)opaque; - if (mem == NULL) - return NULL; /* Mem structure passed in was null */ - - if (mode & ZLIB_FILEFUNC_MODE_CREATE) - { - if (mem->grow) - { - mem->size = IOMEM_BUFFERSIZE; - mem->base = (char *)malloc(mem->size); - } - - mem->limit = 0; /* When writing we start with 0 bytes written */ - } - else - mem->limit = mem->size; - - mem->cur_offset = 0; - - return mem; -} - -voidpf ZCALLBACK fopendisk_mem_func (opaque, stream, number_disk, mode) - voidpf opaque; - voidpf stream; - int number_disk; - int mode; -{ - /* Not used */ - return NULL; -} - -uLong ZCALLBACK fread_mem_func (opaque, stream, buf, size) - voidpf opaque; - voidpf stream; - void* buf; - uLong size; -{ - ourmemory_t *mem = (ourmemory_t *)stream; - - if (size > mem->size - mem->cur_offset) - size = mem->size - mem->cur_offset; - - memcpy(buf, mem->base + mem->cur_offset, size); - mem->cur_offset += size; - - return size; -} - - -uLong ZCALLBACK fwrite_mem_func (opaque, stream, buf, size) - voidpf opaque; - voidpf stream; - const void* buf; - uLong size; -{ - ourmemory_t *mem = (ourmemory_t *)stream; - char *newbase = NULL; - uLong newmemsize = 0; - - if (size > mem->size - mem->cur_offset) - { - if (mem->grow) - { - newmemsize = mem->size; - if (size < IOMEM_BUFFERSIZE) - newmemsize += IOMEM_BUFFERSIZE; - else - newmemsize += size; - newbase = (char *)malloc(newmemsize); - memcpy(newbase, mem->base, mem->size); - free(mem->base); - mem->base = newbase; - mem->size = newmemsize; - } - else - size = mem->size - mem->cur_offset; - } - memcpy(mem->base + mem->cur_offset, buf, size); - mem->cur_offset += size; - if (mem->cur_offset > mem->limit) - mem->limit = mem->cur_offset; - - return size; -} - -long ZCALLBACK ftell_mem_func (opaque, stream) - voidpf opaque; - voidpf stream; -{ - ourmemory_t *mem = (ourmemory_t *)stream; - return mem->cur_offset; -} - -long ZCALLBACK fseek_mem_func (opaque, stream, offset, origin) - voidpf opaque; - voidpf stream; - uLong offset; - int origin; -{ - ourmemory_t *mem = (ourmemory_t *)stream; - uLong new_pos; - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR: - new_pos = mem->cur_offset + offset; - break; - case ZLIB_FILEFUNC_SEEK_END: - new_pos = mem->limit + offset; - break; - case ZLIB_FILEFUNC_SEEK_SET: - new_pos = offset; - break; - default: - return -1; - } - - if (new_pos > mem->size) - return 1; /* Failed to seek that far */ - mem->cur_offset = new_pos; - return 0; -} - -int ZCALLBACK fclose_mem_func (opaque, stream) - voidpf opaque; - voidpf stream; -{ - /* Even with grow = 1, caller must always free() memory */ - return 0; -} - -int ZCALLBACK ferror_mem_func (opaque, stream) - voidpf opaque; - voidpf stream; -{ - /* We never return errors */ - return 0; -} - -void fill_memory_filefunc (pzlib_filefunc_def, ourmem) - zlib_filefunc_def* pzlib_filefunc_def; - ourmemory_t *ourmem; -{ - pzlib_filefunc_def->zopen_file = fopen_mem_func; - pzlib_filefunc_def->zopendisk_file = fopendisk_mem_func; - pzlib_filefunc_def->zread_file = fread_mem_func; - pzlib_filefunc_def->zwrite_file = fwrite_mem_func; - pzlib_filefunc_def->ztell_file = ftell_mem_func; - pzlib_filefunc_def->zseek_file = fseek_mem_func; - pzlib_filefunc_def->zclose_file = fclose_mem_func; - pzlib_filefunc_def->zerror_file = ferror_mem_func; - pzlib_filefunc_def->opaque = ourmem; -} - -// turn the warnings back on -#pragma GCC diagnostic pop diff --git a/include/minizip/ioapi_mem.h b/include/minizip/ioapi_mem.h deleted file mode 100644 index fdbcd1e..0000000 --- a/include/minizip/ioapi_mem.h +++ /dev/null @@ -1,51 +0,0 @@ -/* ioapi_mem.h -- IO base function header for compress/uncompress .zip - files using zlib + zip or unzip API - - This version of ioapi is designed to access memory rather than files. - We do use a region of memory to put data in to and take it out of. - - Copyright (C) 1998-2003 Gilles Vollant - (C) 2003 Justin Fletcher - - 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 _IOAPI_MEM_H -#define _IOAPI_MEM_H - -#include -#include -#include - -#include "zlib.h" -#include "ioapi.h" - -#ifdef __cplusplus -extern "C" { -#endif - -voidpf ZCALLBACK fopen_mem_func OF((voidpf opaque,const char* filename,int mode)); -voidpf ZCALLBACK fopendisk_mem_func OF((voidpf opaque, voidpf stream, int number_disk, int mode)); -uLong ZCALLBACK fread_mem_func OF((voidpf opaque,voidpf stream,void* buf,uLong size)); -uLong ZCALLBACK fwrite_mem_func OF((voidpf opaque,voidpf stream,const void* buf,uLong size)); -long ZCALLBACK ftell_mem_func OF((voidpf opaque,voidpf stream)); -long ZCALLBACK fseek_mem_func OF((voidpf opaque,voidpf stream,uLong offset,int origin)); -int ZCALLBACK fclose_mem_func OF((voidpf opaque,voidpf stream)); -int ZCALLBACK ferror_mem_func OF((voidpf opaque,voidpf stream)); - -typedef struct ourmemory_s { - char *base; /* Base of the region of memory we're using */ - uLong size; /* Size of the region of memory we're using */ - uLong limit; /* Furthest we've written */ - uLong cur_offset; /* Current offset in the area */ - int grow; /* Growable memory buffer */ -} ourmemory_t; - -void fill_memory_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def, ourmemory_t *ourmem)); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/minizip/unzip.c b/include/minizip/unzip.c deleted file mode 100644 index 6e2ddbc..0000000 --- a/include/minizip/unzip.c +++ /dev/null @@ -1,1962 +0,0 @@ -/* unzip.c -- 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 - Modifications for AES, PKWARE disk spanning - Copyright (C) 2010-2014 Nathan Moinvaziri - - 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. - - Mar 8th, 2016 - Lucio Cosmo - Fixed support for 64bit builds for archives with "PKWARE" password. - Changed long, unsigned long, unsigned to unsigned int in - access functions to crctables and pkeys -*/ - -//taken and adapted from https://stackoverflow.com/a/13492589 - -// save diagnostic state -#pragma GCC diagnostic push - -// turn off the specific warning. Can also use "-Wall" -#pragma GCC diagnostic ignored "-Wtype-limits" - -#include -#include -#include - -/*#ifndef NOUNCRYPT -# define NOUNCRYPT -#endif*/ - -#include "unzip.h" - -#ifdef STDC -# include -# include -# include -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else -# include -#endif - -#ifdef HAVE_AES -# define AES_METHOD (99) -# define AES_PWVERIFYSIZE (2) -# define AES_MAXSALTLENGTH (16) -# define AES_AUTHCODESIZE (10) -# define AES_HEADERSIZE (11) -# define AES_KEYSIZE(mode) (64 + (mode * 64)) - -# include "aes/aes.h" -# include "aes/fileenc.h" -#endif -#ifndef NOUNCRYPT -# include "crypt.h" -#endif - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - -#define DISKHEADERMAGIC (0x08074b50) -#define LOCALHEADERMAGIC (0x04034b50) -#define CENTRALHEADERMAGIC (0x02014b50) -#define ENDHEADERMAGIC (0x06054b50) -#define ZIP64ENDHEADERMAGIC (0x06064b50) -#define ZIP64ENDLOCHEADERMAGIC (0x07064b50) - -#define SIZECENTRALDIRITEM (0x2e) -#define SIZECENTRALHEADERLOCATOR (0x14) /* 20 */ -#define SIZEZIPLOCALHEADER (0x1e) - -#ifndef BUFREADCOMMENT -# define BUFREADCOMMENT (0x400) -#endif - -#ifndef UNZ_BUFSIZE -# define UNZ_BUFSIZE (64 * 1024) -#endif -#ifndef UNZ_MAXFILENAMEINZIP -# define UNZ_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -const char unz_copyright[] = - " unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; - -/* unz_file_info_interntal contain internal info about a file in zipfile*/ -typedef struct unz_file_info64_internal_s -{ - ZPOS64_T offset_curfile; /* relative offset of local header 8 bytes */ - ZPOS64_T byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx) */ -#ifdef HAVE_AES - uLong aes_encryption_mode; - uLong aes_compression_method; - uLong aes_version; -#endif -} unz_file_info64_internal; - -/* file_in_zip_read_info_s contain internal information about a file in zipfile */ -typedef struct -{ - Bytef *read_buffer; /* internal buffer for compressed data */ - z_stream stream; /* zLib stream structure for inflate */ - -#ifdef HAVE_BZIP2 - bz_stream bstream; /* bzLib stream structure for bziped */ -#endif -#ifdef HAVE_AES - fcrypt_ctx aes_ctx; -#endif - - ZPOS64_T pos_in_zipfile; /* position in byte on the zipfile, for fseek */ - uLong stream_initialised; /* flag set if stream structure is initialised */ - - ZPOS64_T offset_local_extrafield; /* offset of the local extra field */ - uInt size_local_extrafield; /* size of the local extra field */ - ZPOS64_T pos_local_extrafield; /* position in the local extra field in read */ - ZPOS64_T total_out_64; - - uLong crc32; /* crc32 of all data uncompressed */ - uLong crc32_wait; /* crc32 we must obtain after decompress all */ - ZPOS64_T rest_read_compressed; /* number of byte to be decompressed */ - ZPOS64_T rest_read_uncompressed; /* number of byte to be obtained after decomp */ - - zlib_filefunc64_32_def z_filefunc; - - voidpf filestream; /* io structore of the zipfile */ - uLong compression_method; /* compression method (0==store) */ - ZPOS64_T byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx) */ - int raw; -} file_in_zip64_read_info_s; - -/* unz64_s contain internal information about the zipfile */ -typedef struct -{ - zlib_filefunc64_32_def z_filefunc; - voidpf filestream; /* io structure of the current zipfile */ - voidpf filestream_with_CD; /* io structure of the disk with the central directory */ - unz_global_info64 gi; /* public global information */ - ZPOS64_T byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx)*/ - ZPOS64_T num_file; /* number of the current file in the zipfile*/ - ZPOS64_T pos_in_central_dir; /* pos of the current file in the central dir*/ - ZPOS64_T current_file_ok; /* flag about the usability of the current file*/ - ZPOS64_T central_pos; /* position of the beginning of the central dir*/ - uLong number_disk; /* number of the current disk, used for spanning ZIP*/ - ZPOS64_T size_central_dir; /* size of the central directory */ - ZPOS64_T offset_central_dir; /* offset of start of central directory with - respect to the starting disk number */ - - unz_file_info64 cur_file_info; /* public info about the current file in zip*/ - unz_file_info64_internal cur_file_info_internal; - /* private info about it*/ - file_in_zip64_read_info_s* pfile_in_zip_read; - /* structure about the current file if we are decompressing it */ - int isZip64; /* is the current file zip64 */ -#ifndef NOUNCRYPT - unsigned int keys[3]; /* keys defining the pseudo-random sequence */ - const unsigned int* pcrc_32_tab; -#endif -} unz64_s; - -/* Translate date/time from Dos format to tm_unz (readable more easily) */ -local void unz64local_DosDateToTmuDate (ZPOS64_T ulDosDate, tm_unz* ptm) -{ - ZPOS64_T uDate = (ZPOS64_T)(ulDosDate>>16); - - ptm->tm_mday = (uInt)(uDate&0x1f); - ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1); - ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980); - ptm->tm_hour = (uInt)((ulDosDate &0xF800)/0x800); - ptm->tm_min = (uInt)((ulDosDate&0x7E0)/0x20); - ptm->tm_sec = (uInt)(2*(ulDosDate&0x1f)); - -#define unz64local_in_range(min, max, value) ((min) <= (value) && (value) <= (max)) - if (!unz64local_in_range(0, 11, ptm->tm_mon) || - !unz64local_in_range(1, 31, ptm->tm_mday) || - !unz64local_in_range(0, 23, ptm->tm_hour) || - !unz64local_in_range(0, 59, ptm->tm_min) || - !unz64local_in_range(0, 59, ptm->tm_sec)) - /* Invalid date stored, so don't return it. */ - memset(ptm, 0, sizeof(tm_unz)); -#undef unz64local_in_range -} - -/* Read a byte from a gz_stream; Return EOF for end of file. */ -local int unz64local_getByte OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi)); -local int unz64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi) -{ - unsigned char c; - int err = (int)ZREAD64(*pzlib_filefunc_def, filestream, &c, 1); - if (err == 1) - { - *pi = (int)c; - return UNZ_OK; - } - *pi = 0; - if (ZERROR64(*pzlib_filefunc_def, filestream)) - return UNZ_ERRNO; - return UNZ_EOF; -} - -local int unz64local_getShort OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); -local int unz64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX) -{ - uLong x; - int i = 0; - int err; - - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x = (uLong)i; - if (err == UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x |= ((uLong)i)<<8; - - if (err == UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int unz64local_getLong OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); -local int unz64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX) -{ - uLong x; - int i = 0; - int err; - - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x = (uLong)i; - if (err == UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x |= ((uLong)i)<<8; - if (err == UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x |= ((uLong)i)<<16; - if (err == UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x += ((uLong)i)<<24; - - if (err == UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int unz64local_getLong64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX)); -local int unz64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX) -{ - ZPOS64_T x; - int i = 0; - int err; - - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x = (ZPOS64_T)i; - if (err == UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x |= ((ZPOS64_T)i)<<8; - if (err == UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x |= ((ZPOS64_T)i)<<16; - if (err == UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x |= ((ZPOS64_T)i)<<24; - if (err == UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x |= ((ZPOS64_T)i)<<32; - if (err == UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x |= ((ZPOS64_T)i)<<40; - if (err == UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x |= ((ZPOS64_T)i)<<48; - if (err == UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); - x |= ((ZPOS64_T)i)<<56; - - if (err == UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -/* Locate the Central directory of a zip file (at the end, just before the global comment) */ -local ZPOS64_T unz64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)); -local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T file_size; - ZPOS64_T back_read = 4; - ZPOS64_T max_back = 0xffff; /* maximum size of global comment */ - ZPOS64_T pos_found = 0; - uLong read_size; - ZPOS64_T read_pos; - int i; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT + 4); - if (buf == NULL) - return 0; - - if (ZSEEK64(*pzlib_filefunc_def, filestream, 0, ZLIB_FILEFUNC_SEEK_END) != 0) - { - TRYFREE(buf); - return 0; - } - - file_size = ZTELL64(*pzlib_filefunc_def, filestream); - - if (max_back > file_size) - max_back = file_size; - - while (back_read < max_back) - { - if (back_read + BUFREADCOMMENT > max_back) - back_read = max_back; - else - back_read += BUFREADCOMMENT; - - read_pos = file_size - back_read; - read_size = ((BUFREADCOMMENT + 4) < (file_size - read_pos)) ? - (BUFREADCOMMENT + 4) : (uLong)(file_size - read_pos); - - if (ZSEEK64(*pzlib_filefunc_def, filestream, read_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) - break; - if (ZREAD64(*pzlib_filefunc_def, filestream, buf, read_size) != read_size) - break; - - for (i = (int)read_size-3; (i--) > 0;) - if (((*(buf+i)) == (ENDHEADERMAGIC & 0xff)) && - ((*(buf+i+1)) == (ENDHEADERMAGIC >> 8 & 0xff)) && - ((*(buf+i+2)) == (ENDHEADERMAGIC >> 16 & 0xff)) && - ((*(buf+i+3)) == (ENDHEADERMAGIC >> 24 & 0xff))) - { - pos_found = read_pos+i; - break; - } - - if (pos_found != 0) - break; - } - TRYFREE(buf); - return pos_found; -} - -/* Locate the Central directory 64 of a zipfile (at the end, just before the global comment) */ -local ZPOS64_T unz64local_SearchCentralDir64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, - const ZPOS64_T endcentraloffset)); -local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, - const ZPOS64_T endcentraloffset) -{ - ZPOS64_T offset; - uLong uL; - - /* Zip64 end of central directory locator */ - if (ZSEEK64(*pzlib_filefunc_def, filestream, endcentraloffset - SIZECENTRALHEADERLOCATOR, ZLIB_FILEFUNC_SEEK_SET) != 0) - return 0; - - /* read locator signature */ - if (unz64local_getLong(pzlib_filefunc_def, filestream, &uL) != UNZ_OK) - return 0; - if (uL != ZIP64ENDLOCHEADERMAGIC) - return 0; - /* number of the disk with the start of the zip64 end of central directory */ - if (unz64local_getLong(pzlib_filefunc_def, filestream, &uL) != UNZ_OK) - return 0; - /* relative offset of the zip64 end of central directory record */ - if (unz64local_getLong64(pzlib_filefunc_def, filestream, &offset) != UNZ_OK) - return 0; - /* total number of disks */ - if (unz64local_getLong(pzlib_filefunc_def, filestream, &uL) != UNZ_OK) - return 0; - /* Goto end of central directory record */ - if (ZSEEK64(*pzlib_filefunc_def, filestream, offset, ZLIB_FILEFUNC_SEEK_SET) != 0) - return 0; - /* the signature */ - if (unz64local_getLong(pzlib_filefunc_def, filestream, &uL) != UNZ_OK) - return 0; - if (uL != ZIP64ENDHEADERMAGIC) - return 0; - - return offset; -} - -local unzFile unzOpenInternal(const void *path, zlib_filefunc64_32_def* pzlib_filefunc64_32_def) -{ - unz64_s us; - unz64_s *s; - ZPOS64_T central_pos; - ZPOS64_T central_pos64; - uLong uL; - ZPOS64_T uL64; - voidpf filestream = NULL; - ZPOS64_T number_entry_CD; - int err = UNZ_OK; - - if (unz_copyright[0]!=' ') - return NULL; - - us.filestream = NULL; - us.filestream_with_CD = NULL; - us.z_filefunc.zseek32_file = NULL; - us.z_filefunc.ztell32_file = NULL; - if (pzlib_filefunc64_32_def == NULL) - fill_fopen64_filefunc(&us.z_filefunc.zfile_func64); - else - us.z_filefunc = *pzlib_filefunc64_32_def; - - us.filestream = ZOPEN64(us.z_filefunc, path, ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_EXISTING); - - if (us.filestream == NULL) - return NULL; - - us.filestream_with_CD = us.filestream; - us.isZip64 = 0; - - /* Search for end of central directory header */ - central_pos = unz64local_SearchCentralDir(&us.z_filefunc, us.filestream); - if (central_pos) - { - if (ZSEEK64(us.z_filefunc, us.filestream, central_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = UNZ_ERRNO; - - /* the signature, already checked */ - if (unz64local_getLong(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) - err = UNZ_ERRNO; - /* number of this disk */ - if (unz64local_getShort(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) - err = UNZ_ERRNO; - us.number_disk = uL; - /* number of the disk with the start of the central directory */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,& uL) != UNZ_OK) - err = UNZ_ERRNO; - us.gi.number_disk_with_CD = uL; - /* total number of entries in the central directory on this disk */ - if (unz64local_getShort(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) - err = UNZ_ERRNO; - us.gi.number_entry = uL; - /* total number of entries in the central directory */ - if (unz64local_getShort(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) - err = UNZ_ERRNO; - number_entry_CD = uL; - if (number_entry_CD != us.gi.number_entry) - err = UNZ_BADZIPFILE; - /* size of the central directory */ - if (unz64local_getLong(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) - err = UNZ_ERRNO; - us.size_central_dir = uL; - /* offset of start of central directory with respect to the starting disk number */ - if (unz64local_getLong(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) - err = UNZ_ERRNO; - us.offset_central_dir = uL; - /* zipfile comment length */ - if (unz64local_getShort(&us.z_filefunc, us.filestream, &us.gi.size_comment) != UNZ_OK) - err = UNZ_ERRNO; - - if (err == UNZ_OK) - { - /* Search for Zip64 end of central directory header */ - central_pos64 = unz64local_SearchCentralDir64(&us.z_filefunc, us.filestream, central_pos); - if (central_pos64) - { - central_pos = central_pos64; - us.isZip64 = 1; - - if (ZSEEK64(us.z_filefunc, us.filestream, central_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = UNZ_ERRNO; - - /* the signature, already checked */ - if (unz64local_getLong(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) - err = UNZ_ERRNO; - /* size of zip64 end of central directory record */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream, &uL64) != UNZ_OK) - err = UNZ_ERRNO; - /* version made by */ - if (unz64local_getShort(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) - err = UNZ_ERRNO; - /* version needed to extract */ - if (unz64local_getShort(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) - err = UNZ_ERRNO; - /* number of this disk */ - if (unz64local_getLong(&us.z_filefunc, us.filestream, &us.number_disk) != UNZ_OK) - err = UNZ_ERRNO; - /* number of the disk with the start of the central directory */ - if (unz64local_getLong(&us.z_filefunc, us.filestream, &us.gi.number_disk_with_CD) != UNZ_OK) - err = UNZ_ERRNO; - /* total number of entries in the central directory on this disk */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream, &us.gi.number_entry) != UNZ_OK) - err = UNZ_ERRNO; - /* total number of entries in the central directory */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream, &number_entry_CD) != UNZ_OK) - err = UNZ_ERRNO; - if (number_entry_CD != us.gi.number_entry) - err = UNZ_BADZIPFILE; - /* size of the central directory */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream, &us.size_central_dir) != UNZ_OK) - err = UNZ_ERRNO; - /* offset of start of central directory with respect to the starting disk number */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream, &us.offset_central_dir) != UNZ_OK) - err = UNZ_ERRNO; - } - else if ((us.gi.number_entry == 0xffff) || (us.size_central_dir == 0xffff) || (us.offset_central_dir == 0xffffffff)) - err = UNZ_BADZIPFILE; - } - } - else - err = UNZ_ERRNO; - - if ((err == UNZ_OK) && (central_pos < us.offset_central_dir + us.size_central_dir)) - err = UNZ_BADZIPFILE; - - if (err != UNZ_OK) - { - ZCLOSE64(us.z_filefunc, us.filestream); - return NULL; - } - - if (us.gi.number_disk_with_CD == 0) - { - /* If there is only one disk open another stream so we don't have to seek between the CD - and the file headers constantly */ - filestream = ZOPEN64(us.z_filefunc, path, ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_EXISTING); - if (filestream != NULL) - us.filestream = filestream; - } - - /* Hack for zip files that have no respect for zip64 - if ((central_pos > 0xffffffff) && (us.offset_central_dir < 0xffffffff)) - us.offset_central_dir = central_pos - us.size_central_dir;*/ - - us.byte_before_the_zipfile = central_pos - (us.offset_central_dir + us.size_central_dir); - us.central_pos = central_pos; - us.pfile_in_zip_read = NULL; - - s = (unz64_s*)ALLOC(sizeof(unz64_s)); - if (s != NULL) - { - *s = us; - unzGoToFirstFile((unzFile)s); - } - return (unzFile)s; -} - -extern unzFile ZEXPORT unzOpen2(const char *path, zlib_filefunc_def* pzlib_filefunc32_def) -{ - if (pzlib_filefunc32_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - fill_zlib_filefunc64_32_def_from_filefunc32(&zlib_filefunc64_32_def_fill, pzlib_filefunc32_def); - return unzOpenInternal(path, &zlib_filefunc64_32_def_fill); - } - return unzOpenInternal(path, NULL); -} - -extern unzFile ZEXPORT unzOpen2_64(const void *path, zlib_filefunc64_def* pzlib_filefunc_def) -{ - if (pzlib_filefunc_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - zlib_filefunc64_32_def_fill.zfile_func64 = *pzlib_filefunc_def; - zlib_filefunc64_32_def_fill.ztell32_file = NULL; - zlib_filefunc64_32_def_fill.zseek32_file = NULL; - return unzOpenInternal(path, &zlib_filefunc64_32_def_fill); - } - return unzOpenInternal(path, NULL); -} - -extern unzFile ZEXPORT unzOpen(const char *path) -{ - return unzOpenInternal(path, NULL); -} - -extern unzFile ZEXPORT unzOpen64(const void *path) -{ - return unzOpenInternal(path, NULL); -} - -extern int ZEXPORT unzClose(unzFile file) -{ - unz64_s* s; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - - if (s->pfile_in_zip_read != NULL) - unzCloseCurrentFile(file); - - if ((s->filestream != NULL) && (s->filestream != s->filestream_with_CD)) - ZCLOSE64(s->z_filefunc, s->filestream); - if (s->filestream_with_CD != NULL) - ZCLOSE64(s->z_filefunc, s->filestream_with_CD); - - s->filestream = NULL; - s->filestream_with_CD = NULL; - TRYFREE(s); - return UNZ_OK; -} - -/* Goto to the next available disk for spanned archives */ -local int unzGoToNextDisk OF((unzFile file)); -local int unzGoToNextDisk(unzFile file) -{ - unz64_s* s; - uLong number_disk_next = 0; - - s = (unz64_s*)file; - if (s == NULL) - return UNZ_PARAMERROR; - number_disk_next = s->number_disk; - - if ((s->pfile_in_zip_read != NULL) && (s->pfile_in_zip_read->rest_read_uncompressed > 0)) - /* We are currently reading a file and we need the next sequential disk */ - number_disk_next += 1; - else - /* Goto the disk for the current file */ - number_disk_next = s->cur_file_info.disk_num_start; - - if (number_disk_next != s->number_disk) - { - /* Switch disks */ - if ((s->filestream != NULL) && (s->filestream != s->filestream_with_CD)) - ZCLOSE64(s->z_filefunc, s->filestream); - - if (number_disk_next == s->gi.number_disk_with_CD) - { - s->filestream = s->filestream_with_CD; - } - else - { - s->filestream = ZOPENDISK64(s->z_filefunc, s->filestream_with_CD, number_disk_next, - ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_EXISTING); - } - - if (s->filestream == NULL) - return UNZ_ERRNO; - - s->number_disk = number_disk_next; - } - - return UNZ_OK; -} - -extern int ZEXPORT unzGetGlobalInfo(unzFile file, unz_global_info* pglobal_info32) -{ - unz64_s* s; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - /* to do : check if number_entry is not truncated */ - pglobal_info32->number_entry = (uLong)s->gi.number_entry; - pglobal_info32->size_comment = s->gi.size_comment; - pglobal_info32->number_disk_with_CD = s->gi.number_disk_with_CD; - return UNZ_OK; -} - -extern int ZEXPORT unzGetGlobalInfo64(unzFile file, unz_global_info64* pglobal_info) -{ - unz64_s* s; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - *pglobal_info = s->gi; - return UNZ_OK; -} - -extern int ZEXPORT unzGetGlobalComment(unzFile file, char *comment, uLong comment_size) -{ - unz64_s* s; - uLong bytes_to_read = comment_size; - if (file == NULL) - return (int)UNZ_PARAMERROR; - s = (unz64_s*)file; - - if (bytes_to_read > s->gi.size_comment) - bytes_to_read = s->gi.size_comment; - - if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, s->central_pos + 22, ZLIB_FILEFUNC_SEEK_SET) != 0) - return UNZ_ERRNO; - - if (bytes_to_read>0) - { - *comment = 0; - if (ZREAD64(s->z_filefunc, s->filestream_with_CD, comment, bytes_to_read) != bytes_to_read) - return UNZ_ERRNO; - } - - if ((comment != NULL) && (comment_size > s->gi.size_comment)) - *(comment+s->gi.size_comment) = 0; - return (int)bytes_to_read; -} - -/* Get Info about the current file in the zipfile, with internal only info */ -local int unz64local_GetCurrentFileInfoInternal(unzFile file, unz_file_info64 *pfile_info, - unz_file_info64_internal *pfile_info_internal, char *filename, uLong filename_size, void *extrafield, - uLong extrafield_size, char *comment, uLong comment_size) -{ - unz64_s* s; - unz_file_info64 file_info; - unz_file_info64_internal file_info_internal; - ZPOS64_T bytes_to_read; - int err = UNZ_OK; - uLong uMagic; - long lSeek = 0; - ZPOS64_T current_pos = 0; - uLong acc = 0; - uLong uL; - ZPOS64_T uL64; - - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - - if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, - s->pos_in_central_dir + s->byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = UNZ_ERRNO; - - /* Check the magic */ - if (err == UNZ_OK) - { - if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &uMagic) != UNZ_OK) - err = UNZ_ERRNO; - else if (uMagic != CENTRALHEADERMAGIC) - err = UNZ_BADZIPFILE; - } - - /* Read central directory header */ - if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.version) != UNZ_OK) - err = UNZ_ERRNO; - if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.version_needed) != UNZ_OK) - err = UNZ_ERRNO; - if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.flag) != UNZ_OK) - err = UNZ_ERRNO; - if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.compression_method) != UNZ_OK) - err = UNZ_ERRNO; - if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &file_info.dosDate) != UNZ_OK) - err = UNZ_ERRNO; - unz64local_DosDateToTmuDate(file_info.dosDate, &file_info.tmu_date); - if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &file_info.crc) != UNZ_OK) - err = UNZ_ERRNO; - if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) - err = UNZ_ERRNO; - file_info.compressed_size = uL; - if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) - err = UNZ_ERRNO; - file_info.uncompressed_size = uL; - if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.size_filename) != UNZ_OK) - err = UNZ_ERRNO; - if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.size_file_extra) != UNZ_OK) - err = UNZ_ERRNO; - if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.size_file_comment) != UNZ_OK) - err = UNZ_ERRNO; - if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.disk_num_start) != UNZ_OK) - err = UNZ_ERRNO; - if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.internal_fa) != UNZ_OK) - err = UNZ_ERRNO; - if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &file_info.external_fa) != UNZ_OK) - err = UNZ_ERRNO; - /* Relative offset of local header */ - if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) - err = UNZ_ERRNO; - - file_info.size_file_extra_internal = 0; - file_info.disk_offset = uL; - file_info_internal.offset_curfile = uL; -#ifdef HAVE_AES - file_info_internal.aes_compression_method = 0; - file_info_internal.aes_encryption_mode = 0; - file_info_internal.aes_version = 0; -#endif - - lSeek += file_info.size_filename; - - if ((err == UNZ_OK) && (filename != NULL)) - { - if (file_info.size_filename < filename_size) - { - *(filename+file_info.size_filename) = 0; - bytes_to_read = file_info.size_filename; - } - else - bytes_to_read = filename_size; - - if ((file_info.size_filename > 0) && (filename_size > 0)) - if (ZREAD64(s->z_filefunc, s->filestream_with_CD,filename, (uLong)bytes_to_read) != bytes_to_read) - err = UNZ_ERRNO; - lSeek -= (uLong)bytes_to_read; - } - - /* Read extrafield */ - if ((err == UNZ_OK) && (extrafield != NULL)) - { - if (file_info.size_file_extra < extrafield_size) - bytes_to_read = file_info.size_file_extra; - else - bytes_to_read = extrafield_size; - - if (lSeek != 0) - { - if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, lSeek, ZLIB_FILEFUNC_SEEK_CUR) == 0) - lSeek=0; - else - err = UNZ_ERRNO; - } - - if ((file_info.size_file_extra > 0) && (extrafield_size > 0)) - if (ZREAD64(s->z_filefunc, s->filestream_with_CD, extrafield, (uLong)bytes_to_read) != bytes_to_read) - err = UNZ_ERRNO; - lSeek += file_info.size_file_extra - (uLong)bytes_to_read; - } - else - lSeek += file_info.size_file_extra; - - if ((err == UNZ_OK) && (file_info.size_file_extra != 0)) - { - if (lSeek != 0) - { - if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, lSeek, ZLIB_FILEFUNC_SEEK_CUR) == 0) - lSeek=0; - else - err = UNZ_ERRNO; - } - - /* We are going to parse the extra field so we need to move back */ - current_pos = ZTELL64(s->z_filefunc, s->filestream_with_CD); - if (current_pos < file_info.size_file_extra) - err = UNZ_ERRNO; - current_pos -= file_info.size_file_extra; - if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, current_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = UNZ_ERRNO; - - while((err != UNZ_ERRNO) && (acc < file_info.size_file_extra)) - { - uLong headerid; - uLong datasize; - - if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &headerid) != UNZ_OK) - err = UNZ_ERRNO; - if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &datasize) != UNZ_OK) - err = UNZ_ERRNO; - - /* ZIP64 extra fields */ - if (headerid == 0x0001) - { - /* Subtract size of ZIP64 field, since ZIP64 is handled internally */ - file_info.size_file_extra_internal += 2 + 2 + datasize; - - if (file_info.uncompressed_size == 0xffffffff) - { - if (unz64local_getLong64(&s->z_filefunc, s->filestream_with_CD, &file_info.uncompressed_size) != UNZ_OK) - err = UNZ_ERRNO; - } - if (file_info.compressed_size == 0xffffffff) - { - if (unz64local_getLong64(&s->z_filefunc, s->filestream_with_CD, &file_info.compressed_size) != UNZ_OK) - err = UNZ_ERRNO; - } - if (file_info_internal.offset_curfile == 0xffffffff) - { - /* Relative Header offset */ - if (unz64local_getLong64(&s->z_filefunc, s->filestream_with_CD, &uL64) != UNZ_OK) - err = UNZ_ERRNO; - file_info_internal.offset_curfile = uL64; - file_info.disk_offset = uL64; - } - if (file_info.disk_num_start == 0xffffffff) - { - /* Disk Start Number */ - if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &file_info.disk_num_start) != UNZ_OK) - err = UNZ_ERRNO; - } - } -#ifdef HAVE_AES - /* AES header */ - else if (headerid == 0x9901) - { - /* Subtract size of AES field, since AES is handled internally */ - file_info.size_file_extra_internal += 2 + 2 + datasize; - - /* Verify version info */ - if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) - err = UNZ_ERRNO; - /* Support AE-1 and AE-2 */ - if (uL != 1 && uL != 2) - err = UNZ_ERRNO; - file_info_internal.aes_version = uL; - if (unz64local_getByte(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) - err = UNZ_ERRNO; - if ((char)uL != 'A') - err = UNZ_ERRNO; - if (unz64local_getByte(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) - err = UNZ_ERRNO; - if ((char)uL != 'E') - err = UNZ_ERRNO; - /* Get AES encryption strength and actual compression method */ - if (unz64local_getByte(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) - err = UNZ_ERRNO; - file_info_internal.aes_encryption_mode = uL; - if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) - err = UNZ_ERRNO; - file_info_internal.aes_compression_method = uL; - } -#endif - else - { - if (ZSEEK64(s->z_filefunc, s->filestream_with_CD,datasize, ZLIB_FILEFUNC_SEEK_CUR) != 0) - err = UNZ_ERRNO; - } - - acc += 2 + 2 + datasize; - } - } - - if (file_info.disk_num_start == s->gi.number_disk_with_CD) - file_info_internal.byte_before_the_zipfile = s->byte_before_the_zipfile; - else - file_info_internal.byte_before_the_zipfile = 0; - - if ((err == UNZ_OK) && (comment != NULL)) - { - if (file_info.size_file_comment < comment_size) - { - *(comment+file_info.size_file_comment) = 0; - bytes_to_read = file_info.size_file_comment; - } - else - bytes_to_read = comment_size; - - if (lSeek != 0) - { - if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, lSeek, ZLIB_FILEFUNC_SEEK_CUR) != 0) - err = UNZ_ERRNO; - } - - if ((file_info.size_file_comment > 0) && (comment_size > 0)) - if (ZREAD64(s->z_filefunc, s->filestream_with_CD, comment, (uLong)bytes_to_read) != bytes_to_read) - err = UNZ_ERRNO; - lSeek += file_info.size_file_comment - (uLong)bytes_to_read; - } - else - lSeek += file_info.size_file_comment; - - if ((err == UNZ_OK) && (pfile_info != NULL)) - *pfile_info = file_info; - - if ((err == UNZ_OK) && (pfile_info_internal != NULL)) - *pfile_info_internal = file_info_internal; - - return err; -} - -extern int ZEXPORT unzGetCurrentFileInfo(unzFile file, unz_file_info * pfile_info, char *filename, - uLong filename_size, void *extrafield, uLong extrafield_size, char* comment, uLong comment_size) -{ - unz_file_info64 file_info64; - int err; - - err = unz64local_GetCurrentFileInfoInternal(file, &file_info64, NULL, filename, filename_size, - extrafield, extrafield_size, comment, comment_size); - - if ((err == UNZ_OK) && (pfile_info != NULL)) - { - pfile_info->version = file_info64.version; - pfile_info->version_needed = file_info64.version_needed; - pfile_info->flag = file_info64.flag; - pfile_info->compression_method = file_info64.compression_method; - pfile_info->dosDate = file_info64.dosDate; - pfile_info->crc = file_info64.crc; - - pfile_info->size_filename = file_info64.size_filename; - pfile_info->size_file_extra = file_info64.size_file_extra - file_info64.size_file_extra_internal; - pfile_info->size_file_comment = file_info64.size_file_comment; - - pfile_info->disk_num_start = file_info64.disk_num_start; - pfile_info->internal_fa = file_info64.internal_fa; - pfile_info->external_fa = file_info64.external_fa; - - pfile_info->tmu_date = file_info64.tmu_date, - - pfile_info->compressed_size = (uLong)file_info64.compressed_size; - pfile_info->uncompressed_size = (uLong)file_info64.uncompressed_size; - - } - return err; -} - -extern int ZEXPORT unzGetCurrentFileInfo64(unzFile file, unz_file_info64 * pfile_info, char *filename, - uLong filename_size, void *extrafield, uLong extrafield_size, char* comment, uLong comment_size) -{ - return unz64local_GetCurrentFileInfoInternal(file, pfile_info, NULL, filename, filename_size, - extrafield, extrafield_size, comment,comment_size); -} - -/* Read the local header of the current zipfile. Check the coherency of the local header and info in the - end of central directory about this file store in *piSizeVar the size of extra info in local header - (filename and size of extra field data) */ -local int unz64local_CheckCurrentFileCoherencyHeader(unz64_s* s, uInt* piSizeVar, ZPOS64_T *poffset_local_extrafield, - uInt *psize_local_extrafield) -{ - uLong uMagic, uL, uFlags; - uLong size_filename; - uLong size_extra_field; - int err = UNZ_OK; - int compression_method = 0; - - *piSizeVar = 0; - *poffset_local_extrafield = 0; - *psize_local_extrafield = 0; - - err = unzGoToNextDisk((unzFile)s); - if (err != UNZ_OK) - return err; - - if (ZSEEK64(s->z_filefunc, s->filestream, s->cur_file_info_internal.offset_curfile + - s->cur_file_info_internal.byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) - return UNZ_ERRNO; - - if (err == UNZ_OK) - { - if (unz64local_getLong(&s->z_filefunc, s->filestream, &uMagic) != UNZ_OK) - err = UNZ_ERRNO; - else if (uMagic != LOCALHEADERMAGIC) - err = UNZ_BADZIPFILE; - } - - if (unz64local_getShort(&s->z_filefunc, s->filestream, &uL) != UNZ_OK) - err = UNZ_ERRNO; - if (unz64local_getShort(&s->z_filefunc, s->filestream, &uFlags) != UNZ_OK) - err = UNZ_ERRNO; - if (unz64local_getShort(&s->z_filefunc, s->filestream, &uL) != UNZ_OK) - err = UNZ_ERRNO; - else if ((err == UNZ_OK) && (uL != s->cur_file_info.compression_method)) - err = UNZ_BADZIPFILE; - - compression_method = (int)s->cur_file_info.compression_method; -#ifdef HAVE_AES - if (compression_method == AES_METHOD) - compression_method = (int)s->cur_file_info_internal.aes_compression_method; -#endif - - if ((err == UNZ_OK) && (compression_method != 0) && -#ifdef HAVE_BZIP2 - (compression_method != Z_BZIP2ED) && -#endif - (compression_method != Z_DEFLATED)) - err = UNZ_BADZIPFILE; - - if (unz64local_getLong(&s->z_filefunc, s->filestream, &uL) != UNZ_OK) /* date/time */ - err = UNZ_ERRNO; - if (unz64local_getLong(&s->z_filefunc, s->filestream, &uL) != UNZ_OK) /* crc */ - err = UNZ_ERRNO; - else if ((err == UNZ_OK) && (uL != s->cur_file_info.crc) && ((uFlags & 8) == 0)) - err = UNZ_BADZIPFILE; - if (unz64local_getLong(&s->z_filefunc, s->filestream, &uL) != UNZ_OK) /* size compr */ - err = UNZ_ERRNO; - else if ((uL != 0xffffffff) && (err == UNZ_OK) && (uL != s->cur_file_info.compressed_size) && ((uFlags & 8) == 0)) - err = UNZ_BADZIPFILE; - if (unz64local_getLong(&s->z_filefunc, s->filestream, &uL) != UNZ_OK) /* size uncompr */ - err = UNZ_ERRNO; - else if ((uL != 0xffffffff) && (err == UNZ_OK) && (uL != s->cur_file_info.uncompressed_size) && ((uFlags & 8) == 0)) - err = UNZ_BADZIPFILE; - if (unz64local_getShort(&s->z_filefunc, s->filestream, &size_filename) != UNZ_OK) - err = UNZ_ERRNO; - else if ((err == UNZ_OK) && (size_filename != s->cur_file_info.size_filename)) - err = UNZ_BADZIPFILE; - - *piSizeVar += (uInt)size_filename; - - if (unz64local_getShort(&s->z_filefunc, s->filestream, &size_extra_field) != UNZ_OK) - err = UNZ_ERRNO; - *poffset_local_extrafield = s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + size_filename; - *psize_local_extrafield = (uInt)size_extra_field; - - *piSizeVar += (uInt)size_extra_field; - - return err; -} - -/* - Open for reading data the current file in the zipfile. - If there is no error and the file is opened, the return value is UNZ_OK. -*/ -extern int ZEXPORT unzOpenCurrentFile3(unzFile file, int* method, int* level, int raw, const char* password) -{ - int err = UNZ_OK; - int compression_method; - uInt iSizeVar; - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - ZPOS64_T offset_local_extrafield; - uInt size_local_extrafield; -#ifndef NOUNCRYPT - char source[12]; -#else - if (password != NULL) - return UNZ_PARAMERROR; -#endif - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (!s->current_file_ok) - return UNZ_PARAMERROR; - - if (s->pfile_in_zip_read != NULL) - unzCloseCurrentFile(file); - - if (unz64local_CheckCurrentFileCoherencyHeader(s, &iSizeVar, &offset_local_extrafield, &size_local_extrafield) != UNZ_OK) - return UNZ_BADZIPFILE; - - pfile_in_zip_read_info = (file_in_zip64_read_info_s*)ALLOC(sizeof(file_in_zip64_read_info_s)); - if (pfile_in_zip_read_info == NULL) - return UNZ_INTERNALERROR; - - pfile_in_zip_read_info->read_buffer = (Bytef*)ALLOC(UNZ_BUFSIZE); - pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; - pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; - pfile_in_zip_read_info->pos_local_extrafield = 0; - pfile_in_zip_read_info->raw = raw; - - if (pfile_in_zip_read_info->read_buffer == NULL) - { - TRYFREE(pfile_in_zip_read_info); - return UNZ_INTERNALERROR; - } - - pfile_in_zip_read_info->stream_initialised = 0; - - compression_method = (int)s->cur_file_info.compression_method; -#ifdef HAVE_AES - if (compression_method == AES_METHOD) - compression_method = (int)s->cur_file_info_internal.aes_compression_method; -#endif - - if (method != NULL) - *method = compression_method; - - if (level != NULL) - { - *level = 6; - switch (s->cur_file_info.flag & 0x06) - { - case 6 : *level = 1; break; - case 4 : *level = 2; break; - case 2 : *level = 9; break; - } - } - - if ((compression_method != 0) && -#ifdef HAVE_BZIP2 - (compression_method != Z_BZIP2ED) && -#endif - (compression_method != Z_DEFLATED)) - err = UNZ_BADZIPFILE; - - pfile_in_zip_read_info->crc32_wait = s->cur_file_info.crc; - pfile_in_zip_read_info->crc32 = 0; - pfile_in_zip_read_info->total_out_64 = 0; - pfile_in_zip_read_info->compression_method = compression_method; - pfile_in_zip_read_info->filestream = s->filestream; - pfile_in_zip_read_info->z_filefunc = s->z_filefunc; - if (s->number_disk == s->gi.number_disk_with_CD) - pfile_in_zip_read_info->byte_before_the_zipfile = s->byte_before_the_zipfile; - else - pfile_in_zip_read_info->byte_before_the_zipfile = 0; - pfile_in_zip_read_info->stream.total_out = 0; - pfile_in_zip_read_info->stream.total_in = 0; - pfile_in_zip_read_info->stream.next_in = NULL; - - if (!raw) - { - if (compression_method == Z_BZIP2ED) - { -#ifdef HAVE_BZIP2 - pfile_in_zip_read_info->bstream.bzalloc = (void *(*) (void *, int, int))0; - pfile_in_zip_read_info->bstream.bzfree = (free_func)0; - pfile_in_zip_read_info->bstream.opaque = (voidpf)0; - pfile_in_zip_read_info->bstream.state = (voidpf)0; - - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)0; - pfile_in_zip_read_info->stream.next_in = (voidpf)0; - pfile_in_zip_read_info->stream.avail_in = 0; - - err = BZ2_bzDecompressInit(&pfile_in_zip_read_info->bstream, 0, 0); - if (err == Z_OK) - pfile_in_zip_read_info->stream_initialised=Z_BZIP2ED; - else - { - TRYFREE(pfile_in_zip_read_info); - return err; - } -#else - pfile_in_zip_read_info->raw = 1; -#endif - } - else if (compression_method == Z_DEFLATED) - { - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)s; - pfile_in_zip_read_info->stream.next_in = 0; - pfile_in_zip_read_info->stream.avail_in = 0; - - err = inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); - if (err == Z_OK) - pfile_in_zip_read_info->stream_initialised = Z_DEFLATED; - else - { - TRYFREE(pfile_in_zip_read_info); - return err; - } - /* windowBits is passed < 0 to tell that there is no zlib header. - * Note that in this case inflate *requires* an extra "dummy" byte - * after the compressed stream in order to complete decompression and - * return Z_STREAM_END. - * In unzip, i don't wait absolutely Z_STREAM_END because I known the - * size of both compressed and uncompressed data - */ - } - } - - pfile_in_zip_read_info->rest_read_compressed = s->cur_file_info.compressed_size; - pfile_in_zip_read_info->rest_read_uncompressed = s->cur_file_info.uncompressed_size; - pfile_in_zip_read_info->pos_in_zipfile = s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + iSizeVar; - pfile_in_zip_read_info->stream.avail_in = (uInt)0; - - s->pfile_in_zip_read = pfile_in_zip_read_info; - -#ifndef NOUNCRYPT - s->pcrc_32_tab = NULL; - - if ((password != NULL) && ((s->cur_file_info.flag & 1) != 0)) - { - if (ZSEEK64(s->z_filefunc, s->filestream, - s->pfile_in_zip_read->pos_in_zipfile + s->pfile_in_zip_read->byte_before_the_zipfile, - ZLIB_FILEFUNC_SEEK_SET) != 0) - return UNZ_INTERNALERROR; -#ifdef HAVE_AES - if (s->cur_file_info.compression_method == AES_METHOD) - { - unsigned char passverify[AES_PWVERIFYSIZE]; - unsigned char saltvalue[AES_MAXSALTLENGTH]; - uInt saltlength; - - if ((s->cur_file_info_internal.aes_encryption_mode < 1) || - (s->cur_file_info_internal.aes_encryption_mode > 3)) - return UNZ_INTERNALERROR; - - saltlength = SALT_LENGTH(s->cur_file_info_internal.aes_encryption_mode); - - if (ZREAD64(s->z_filefunc, s->filestream, saltvalue, saltlength) != saltlength) - return UNZ_INTERNALERROR; - if (ZREAD64(s->z_filefunc, s->filestream, passverify, AES_PWVERIFYSIZE) != AES_PWVERIFYSIZE) - return UNZ_INTERNALERROR; - - fcrypt_init(s->cur_file_info_internal.aes_encryption_mode, password, strlen(password), saltvalue, - passverify, &s->pfile_in_zip_read->aes_ctx); - - s->pfile_in_zip_read->rest_read_compressed -= saltlength + AES_PWVERIFYSIZE; - s->pfile_in_zip_read->rest_read_compressed -= AES_AUTHCODESIZE; - - s->pfile_in_zip_read->pos_in_zipfile += saltlength + AES_PWVERIFYSIZE; - } - else -#endif - { - int i; - s->pcrc_32_tab = (const unsigned int*)get_crc_table(); - init_keys(password, s->keys, s->pcrc_32_tab); - - if (ZREAD64(s->z_filefunc, s->filestream, source, 12) < 12) - return UNZ_INTERNALERROR; - - for (i = 0; i < 12; i++) - zdecode(s->keys, s->pcrc_32_tab, source[i]); - - s->pfile_in_zip_read->rest_read_compressed -= 12; - - s->pfile_in_zip_read->pos_in_zipfile += 12; - } - } -#endif - - return UNZ_OK; -} - -extern int ZEXPORT unzOpenCurrentFile(unzFile file) -{ - return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL); -} - -extern int ZEXPORT unzOpenCurrentFilePassword(unzFile file, const char* password) -{ - return unzOpenCurrentFile3(file, NULL, NULL, 0, password); -} - -extern int ZEXPORT unzOpenCurrentFile2(unzFile file, int* method, int* level, int raw) -{ - return unzOpenCurrentFile3(file, method, level, raw, NULL); -} - -/* Read bytes from the current file. - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if some 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 unzReadCurrentFile(unzFile file, voidp buf, unsigned len) -{ - int err = UNZ_OK; - uInt read = 0; - unz64_s* s; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - - if (s->pfile_in_zip_read == NULL) - return UNZ_PARAMERROR; - if (s->pfile_in_zip_read->read_buffer == NULL) - return UNZ_END_OF_LIST_OF_FILE; - if (len == 0) - return 0; - - s->pfile_in_zip_read->stream.next_out = (Bytef*)buf; - s->pfile_in_zip_read->stream.avail_out = (uInt)len; - - if (s->pfile_in_zip_read->raw) - { - if (len > s->pfile_in_zip_read->rest_read_compressed + s->pfile_in_zip_read->stream.avail_in) - s->pfile_in_zip_read->stream.avail_out = (uInt)s->pfile_in_zip_read->rest_read_compressed + - s->pfile_in_zip_read->stream.avail_in; - } - else - { - if (len > s->pfile_in_zip_read->rest_read_uncompressed) - s->pfile_in_zip_read->stream.avail_out = (uInt)s->pfile_in_zip_read->rest_read_uncompressed; - } - - while (s->pfile_in_zip_read->stream.avail_out > 0) - { - if (s->pfile_in_zip_read->stream.avail_in == 0) - { - uLong bytes_to_read = UNZ_BUFSIZE; - uLong bytes_not_read = 0; - uLong bytes_read = 0; - uLong total_bytes_read = 0; - - if (s->pfile_in_zip_read->stream.next_in != NULL) - bytes_not_read = s->pfile_in_zip_read->read_buffer + UNZ_BUFSIZE - - s->pfile_in_zip_read->stream.next_in; - bytes_to_read -= bytes_not_read; - if (bytes_not_read > 0) - memcpy(s->pfile_in_zip_read->read_buffer, s->pfile_in_zip_read->stream.next_in, bytes_not_read); - if (s->pfile_in_zip_read->rest_read_compressed < bytes_to_read) - bytes_to_read = (uInt)s->pfile_in_zip_read->rest_read_compressed; - - while (total_bytes_read != bytes_to_read) - { - if (ZSEEK64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream, - s->pfile_in_zip_read->pos_in_zipfile + s->pfile_in_zip_read->byte_before_the_zipfile, - ZLIB_FILEFUNC_SEEK_SET) != 0) - return UNZ_ERRNO; - - bytes_read = ZREAD64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream, - s->pfile_in_zip_read->read_buffer + bytes_not_read + total_bytes_read, - bytes_to_read - total_bytes_read); - - total_bytes_read += bytes_read; - s->pfile_in_zip_read->pos_in_zipfile += bytes_read; - - if (bytes_read == 0) - { - if (ZERROR64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream)) - return UNZ_ERRNO; - - err = unzGoToNextDisk(file); - if (err != UNZ_OK) - return err; - - s->pfile_in_zip_read->pos_in_zipfile = 0; - s->pfile_in_zip_read->filestream = s->filestream; - } - } - -#ifndef NOUNCRYPT - if ((s->cur_file_info.flag & 1) != 0) - { -#ifdef HAVE_AES - if (s->cur_file_info.compression_method == AES_METHOD) - { - fcrypt_decrypt(s->pfile_in_zip_read->read_buffer, bytes_to_read, &s->pfile_in_zip_read->aes_ctx); - } - else -#endif - if (s->pcrc_32_tab != NULL) - { - uInt i; - for(i = 0; i < total_bytes_read; i++) - s->pfile_in_zip_read->read_buffer[i] = - zdecode(s->keys, s->pcrc_32_tab, s->pfile_in_zip_read->read_buffer[i]); - } - } -#endif - - s->pfile_in_zip_read->rest_read_compressed -= total_bytes_read; - s->pfile_in_zip_read->stream.next_in = (Bytef*)s->pfile_in_zip_read->read_buffer; - s->pfile_in_zip_read->stream.avail_in = (uInt)(bytes_not_read + total_bytes_read); - } - - if ((s->pfile_in_zip_read->compression_method == 0) || (s->pfile_in_zip_read->raw)) - { - uInt copy, i; - - if ((s->pfile_in_zip_read->stream.avail_in == 0) && - (s->pfile_in_zip_read->rest_read_compressed == 0)) - return (read == 0) ? UNZ_EOF : read; - - if (s->pfile_in_zip_read->stream.avail_out < s->pfile_in_zip_read->stream.avail_in) - copy = s->pfile_in_zip_read->stream.avail_out; - else - copy = s->pfile_in_zip_read->stream.avail_in; - - for (i = 0; i < copy; i++) - *(s->pfile_in_zip_read->stream.next_out+i) = - *(s->pfile_in_zip_read->stream.next_in+i); - - s->pfile_in_zip_read->total_out_64 = s->pfile_in_zip_read->total_out_64 + copy; - s->pfile_in_zip_read->rest_read_uncompressed -= copy; - s->pfile_in_zip_read->crc32 = crc32(s->pfile_in_zip_read->crc32, - s->pfile_in_zip_read->stream.next_out, copy); - - s->pfile_in_zip_read->stream.avail_in -= copy; - s->pfile_in_zip_read->stream.avail_out -= copy; - s->pfile_in_zip_read->stream.next_out += copy; - s->pfile_in_zip_read->stream.next_in += copy; - s->pfile_in_zip_read->stream.total_out += copy; - read += copy; - } - else if (s->pfile_in_zip_read->compression_method == Z_BZIP2ED) - { -#ifdef HAVE_BZIP2 - uLong total_out_before, total_out_after; - const Bytef *buf_before; - uLong out_bytes; - - s->pfile_in_zip_read->bstream.next_in = (char*)s->pfile_in_zip_read->stream.next_in; - s->pfile_in_zip_read->bstream.avail_in = s->pfile_in_zip_read->stream.avail_in; - s->pfile_in_zip_read->bstream.total_in_lo32 = (uInt)s->pfile_in_zip_read->stream.total_in; - s->pfile_in_zip_read->bstream.total_in_hi32 = s->pfile_in_zip_read->stream.total_in >> 32; - - s->pfile_in_zip_read->bstream.next_out = (char*)s->pfile_in_zip_read->stream.next_out; - s->pfile_in_zip_read->bstream.avail_out = s->pfile_in_zip_read->stream.avail_out; - s->pfile_in_zip_read->bstream.total_out_lo32 = (uInt)s->pfile_in_zip_read->stream.total_out; - s->pfile_in_zip_read->bstream.total_out_hi32 = s->pfile_in_zip_read->stream.total_out >> 32; - - total_out_before = s->pfile_in_zip_read->bstream.total_out_lo32 + - (((uLong)s->pfile_in_zip_read->bstream.total_out_hi32) << 32); - buf_before = (const Bytef *)s->pfile_in_zip_read->bstream.next_out; - - err = BZ2_bzDecompress(&s->pfile_in_zip_read->bstream); - - total_out_after = s->pfile_in_zip_read->bstream.total_out_lo32 + - (((uLong)s->pfile_in_zip_read->bstream.total_out_hi32) << 32); - - out_bytes = total_out_after-total_out_before; - - s->pfile_in_zip_read->total_out_64 = s->pfile_in_zip_read->total_out_64 + out_bytes; - s->pfile_in_zip_read->rest_read_uncompressed -= out_bytes; - s->pfile_in_zip_read->crc32 = crc32(s->pfile_in_zip_read->crc32,buf_before, (uInt)(out_bytes)); - - read += (uInt)(total_out_after - total_out_before); - - s->pfile_in_zip_read->stream.next_in = (Bytef*)s->pfile_in_zip_read->bstream.next_in; - s->pfile_in_zip_read->stream.avail_in = s->pfile_in_zip_read->bstream.avail_in; - s->pfile_in_zip_read->stream.total_in = s->pfile_in_zip_read->bstream.total_in_lo32; - s->pfile_in_zip_read->stream.next_out = (Bytef*)s->pfile_in_zip_read->bstream.next_out; - s->pfile_in_zip_read->stream.avail_out = s->pfile_in_zip_read->bstream.avail_out; - s->pfile_in_zip_read->stream.total_out = s->pfile_in_zip_read->bstream.total_out_lo32; - - if (err == BZ_STREAM_END) - return (read == 0) ? UNZ_EOF : read; - if (err != BZ_OK) - break; -#endif - } - else - { - ZPOS64_T total_out_before, total_out_after; - const Bytef *buf_before; - ZPOS64_T out_bytes; - int flush=Z_SYNC_FLUSH; - - total_out_before = s->pfile_in_zip_read->stream.total_out; - buf_before = s->pfile_in_zip_read->stream.next_out; - - /* - if ((pfile_in_zip_read_info->rest_read_uncompressed == - pfile_in_zip_read_info->stream.avail_out) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - flush = Z_FINISH; - */ - err = inflate(&s->pfile_in_zip_read->stream,flush); - - if ((err >= 0) && (s->pfile_in_zip_read->stream.msg != NULL)) - err = Z_DATA_ERROR; - - total_out_after = s->pfile_in_zip_read->stream.total_out; - out_bytes = total_out_after-total_out_before; - - s->pfile_in_zip_read->total_out_64 += out_bytes; - s->pfile_in_zip_read->rest_read_uncompressed -= out_bytes; - s->pfile_in_zip_read->crc32 = - crc32(s->pfile_in_zip_read->crc32,buf_before, (uInt)(out_bytes)); - - read += (uInt)(total_out_after - total_out_before); - - if (err == Z_STREAM_END) - return (read == 0) ? UNZ_EOF : read; - if (err != Z_OK) - break; - } - } - - if (err == Z_OK) - return read; - return err; -} - -extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64(unzFile file) -{ - unz64_s* s; - s = (unz64_s*)file; - if (file == NULL) - return 0; /* UNZ_PARAMERROR */ - if (s->pfile_in_zip_read == NULL) - return 0; /* UNZ_PARAMERROR */ - return s->pfile_in_zip_read->pos_in_zipfile + s->pfile_in_zip_read->byte_before_the_zipfile; -} - -extern int ZEXPORT unzGetLocalExtrafield(unzFile file, voidp buf, unsigned len) -{ - unz64_s* s; - uInt read_now; - ZPOS64_T size_to_read; - - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (s->pfile_in_zip_read == NULL) - return UNZ_PARAMERROR; - - size_to_read = s->pfile_in_zip_read->size_local_extrafield - s->pfile_in_zip_read->pos_local_extrafield; - - if (buf == NULL) - return (int)size_to_read; - - if (len > size_to_read) - read_now = (uInt)size_to_read; - else - read_now = (uInt)len ; - - if (read_now == 0) - return 0; - - if (ZSEEK64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream, - s->pfile_in_zip_read->offset_local_extrafield + s->pfile_in_zip_read->pos_local_extrafield, - ZLIB_FILEFUNC_SEEK_SET) != 0) - return UNZ_ERRNO; - - if (ZREAD64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream, buf, read_now) != read_now) - return UNZ_ERRNO; - - return (int)read_now; -} - -extern int ZEXPORT unzCloseCurrentFile(unzFile file) -{ - int err = UNZ_OK; - - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info == NULL) - return UNZ_PARAMERROR; - -#ifdef HAVE_AES - if (s->cur_file_info.compression_method == AES_METHOD) - { - unsigned char authcode[AES_AUTHCODESIZE]; - unsigned char rauthcode[AES_AUTHCODESIZE]; - - if (ZREAD64(s->z_filefunc, s->filestream, authcode, AES_AUTHCODESIZE) != AES_AUTHCODESIZE) - return UNZ_ERRNO; - - if (fcrypt_end(rauthcode, &s->pfile_in_zip_read->aes_ctx) != AES_AUTHCODESIZE) - err = UNZ_CRCERROR; - if (memcmp(authcode, rauthcode, AES_AUTHCODESIZE) != 0) - err = UNZ_CRCERROR; - } - /* AES zip version AE-1 will expect a valid crc as well */ - if ((s->cur_file_info.compression_method != AES_METHOD) || - (s->cur_file_info_internal.aes_version == 0x0001)) -#endif - { - if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) && - (!pfile_in_zip_read_info->raw)) - { - if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) - err = UNZ_CRCERROR; - } - } - - TRYFREE(pfile_in_zip_read_info->read_buffer); - pfile_in_zip_read_info->read_buffer = NULL; - if (pfile_in_zip_read_info->stream_initialised == Z_DEFLATED) - inflateEnd(&pfile_in_zip_read_info->stream); -#ifdef HAVE_BZIP2 - else if (pfile_in_zip_read_info->stream_initialised == Z_BZIP2ED) - BZ2_bzDecompressEnd(&pfile_in_zip_read_info->bstream); -#endif - - pfile_in_zip_read_info->stream_initialised = 0; - TRYFREE(pfile_in_zip_read_info); - - s->pfile_in_zip_read = NULL; - - return err; -} - -extern int ZEXPORT unzGoToFirstFile2(unzFile file, unz_file_info64 *pfile_info, char *filename, - uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong comment_size) -{ - int err = UNZ_OK; - unz64_s* s; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - s->pos_in_central_dir = s->offset_central_dir; - s->num_file = 0; - err = unz64local_GetCurrentFileInfoInternal(file, &s->cur_file_info, &s->cur_file_info_internal, - filename,filename_size, extrafield,extrafield_size, comment,comment_size); - s->current_file_ok = (err == UNZ_OK); - if ((err == UNZ_OK) && (pfile_info != NULL)) - memcpy(pfile_info, &s->cur_file_info, sizeof(unz_file_info64)); - return err; -} - -extern int ZEXPORT unzGoToFirstFile(unzFile file) -{ - return unzGoToFirstFile2(file, NULL, NULL, 0, NULL, 0, NULL, 0); -} - -extern int ZEXPORT unzGoToNextFile2(unzFile file, unz_file_info64 *pfile_info, char *filename, - uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong comment_size) -{ - unz64_s* s; - int err; - - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - if (s->gi.number_entry != 0xffff) /* 2^16 files overflow hack */ - if (s->num_file+1 == s->gi.number_entry) - return UNZ_END_OF_LIST_OF_FILE; - s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + - s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment; - s->num_file++; - err = unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, &s->cur_file_info_internal, - filename, filename_size, extrafield,extrafield_size, comment,comment_size); - s->current_file_ok = (err == UNZ_OK); - if ((err == UNZ_OK) && (pfile_info != NULL)) - memcpy(pfile_info, &s->cur_file_info, sizeof(unz_file_info64)); - return err; -} - -extern int ZEXPORT unzGoToNextFile(unzFile file) -{ - return unzGoToNextFile2(file, NULL, NULL, 0, NULL, 0, NULL, 0); -} - -extern int ZEXPORT unzLocateFile(unzFile file, const char *filename, unzFileNameComparer filename_compare_func) -{ - unz64_s* s; - int err; - unz_file_info64 cur_file_info_saved; - unz_file_info64_internal cur_file_info_internal_saved; - ZPOS64_T num_file_saved; - ZPOS64_T pos_in_central_dir_saved; - char current_filename[UNZ_MAXFILENAMEINZIP+1]; - - if (file == NULL) - return UNZ_PARAMERROR; - if (strlen(filename) >= UNZ_MAXFILENAMEINZIP) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - /* Save the current state */ - num_file_saved = s->num_file; - pos_in_central_dir_saved = s->pos_in_central_dir; - cur_file_info_saved = s->cur_file_info; - cur_file_info_internal_saved = s->cur_file_info_internal; - - err = unzGoToFirstFile2(file, NULL, current_filename, sizeof(current_filename)-1, NULL, 0, NULL, 0); - - while (err == UNZ_OK) - { - if (filename_compare_func != NULL) - err = filename_compare_func(file, current_filename, filename); - else - err = strcmp(current_filename, filename); - if (err == 0) - return UNZ_OK; - err = unzGoToNextFile2(file, NULL, current_filename, sizeof(current_filename)-1, NULL, 0, NULL, 0); - } - - /* We failed, so restore the state of the 'current file' to where we were. */ - s->num_file = num_file_saved; - s->pos_in_central_dir = pos_in_central_dir_saved; - s->cur_file_info = cur_file_info_saved; - s->cur_file_info_internal = cur_file_info_internal_saved; - return err; -} - -extern int ZEXPORT unzGetFilePos(unzFile file, unz_file_pos* file_pos) -{ - unz64_file_pos file_pos64; - int err = unzGetFilePos64(file,&file_pos64); - if (err == UNZ_OK) - { - file_pos->pos_in_zip_directory = (uLong)file_pos64.pos_in_zip_directory; - file_pos->num_of_file = (uLong)file_pos64.num_of_file; - } - return err; -} - -extern int ZEXPORT unzGoToFilePos(unzFile file, unz_file_pos* file_pos) -{ - unz64_file_pos file_pos64; - - if (file_pos == NULL) - return UNZ_PARAMERROR; - file_pos64.pos_in_zip_directory = file_pos->pos_in_zip_directory; - file_pos64.num_of_file = file_pos->num_of_file; - return unzGoToFilePos64(file,&file_pos64); -} - -extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos* file_pos) -{ - unz64_s* s; - - if (file == NULL || file_pos == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - file_pos->pos_in_zip_directory = s->pos_in_central_dir; - file_pos->num_of_file = s->num_file; - - return UNZ_OK; -} - -extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos* file_pos) -{ - unz64_s* s; - int err; - - if (file == NULL || file_pos == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - - /* jump to the right spot */ - s->pos_in_central_dir = file_pos->pos_in_zip_directory; - s->num_file = file_pos->num_of_file; - - /* set the current file */ - err = unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, &s->cur_file_info_internal,NULL,0,NULL,0,NULL,0); - /* return results */ - s->current_file_ok = (err == UNZ_OK); - return err; -} - -extern uLong ZEXPORT unzGetOffset(unzFile file) -{ - ZPOS64_T offset64; - - if (file == NULL) - return 0; /* UNZ_PARAMERROR; */ - offset64 = unzGetOffset64(file); - return (uLong)offset64; -} - -extern ZPOS64_T ZEXPORT unzGetOffset64(unzFile file) -{ - unz64_s* s; - - if (file == NULL) - return 0; /* UNZ_PARAMERROR; */ - s = (unz64_s*)file; - if (!s->current_file_ok) - return 0; - if (s->gi.number_entry != 0 && s->gi.number_entry != 0xffff) - if (s->num_file == s->gi.number_entry) - return 0; - return s->pos_in_central_dir; -} - -extern int ZEXPORT unzSetOffset(unzFile file, uLong pos) -{ - return unzSetOffset64(file, pos); -} - -extern int ZEXPORT unzSetOffset64(unzFile file, ZPOS64_T pos) -{ - unz64_s* s; - int err; - - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - s->pos_in_central_dir = pos; - s->num_file = s->gi.number_entry; /* hack */ - - err = unz64local_GetCurrentFileInfoInternal(file, &s->cur_file_info, &s->cur_file_info_internal, NULL, 0, NULL, 0, NULL, 0); - - s->current_file_ok = (err == UNZ_OK); - return err; -} - -extern z_off_t ZEXPORT unztell(unzFile file) -{ - unz64_s* s; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (s->pfile_in_zip_read == NULL) - return UNZ_PARAMERROR; - return (z_off_t)s->pfile_in_zip_read->stream.total_out; -} - -extern ZPOS64_T ZEXPORT unztell64(unzFile file) -{ - unz64_s* s; - if (file == NULL) - return (ZPOS64_T)-1; - s = (unz64_s*)file; - if (s->pfile_in_zip_read == NULL) - return (ZPOS64_T)-1; - return s->pfile_in_zip_read->total_out_64; -} - -extern int ZEXPORT unzseek(unzFile file, z_off_t offset, int origin) -{ - return unzseek64(file, (ZPOS64_T)offset, origin); -} - -extern int ZEXPORT unzseek64(unzFile file, ZPOS64_T offset, int origin) -{ - unz64_s* s; - ZPOS64_T stream_pos_begin; - ZPOS64_T stream_pos_end; - int isWithinBuffer; - ZPOS64_T position; - - if (file == NULL) - return UNZ_PARAMERROR; - - s = (unz64_s*)file; - - if (s->pfile_in_zip_read == NULL) - return UNZ_ERRNO; - if (s->pfile_in_zip_read->compression_method != 0) - return UNZ_ERRNO; - - if (origin == SEEK_SET) - position = offset; - else if (origin == SEEK_CUR) - position = s->pfile_in_zip_read->total_out_64 + offset; - else if (origin == SEEK_END) - position = s->cur_file_info.compressed_size + offset; - else - return UNZ_PARAMERROR; - - if (position > s->cur_file_info.compressed_size) - return UNZ_PARAMERROR; - - stream_pos_end = s->pfile_in_zip_read->pos_in_zipfile; - stream_pos_begin = stream_pos_end; - - if (stream_pos_begin > UNZ_BUFSIZE) - stream_pos_begin -= UNZ_BUFSIZE; - else - stream_pos_begin = 0; - - isWithinBuffer = s->pfile_in_zip_read->stream.avail_in != 0 && - (s->pfile_in_zip_read->rest_read_compressed != 0 || s->cur_file_info.compressed_size < UNZ_BUFSIZE) && - position >= stream_pos_begin && position < stream_pos_end; - - if (isWithinBuffer) - { - s->pfile_in_zip_read->stream.next_in += position - s->pfile_in_zip_read->total_out_64; - s->pfile_in_zip_read->stream.avail_in = (uInt)(stream_pos_end - position); - } - else - { - s->pfile_in_zip_read->stream.avail_in = 0; - s->pfile_in_zip_read->stream.next_in = 0; - - s->pfile_in_zip_read->pos_in_zipfile = s->pfile_in_zip_read->offset_local_extrafield + position; - s->pfile_in_zip_read->rest_read_compressed = s->cur_file_info.compressed_size - position; - } - - s->pfile_in_zip_read->rest_read_uncompressed -= (position - s->pfile_in_zip_read->total_out_64); - s->pfile_in_zip_read->stream.total_out = (uLong)position; - s->pfile_in_zip_read->total_out_64 = position; - - return UNZ_OK; -} - -extern int ZEXPORT unzeof(unzFile file) -{ - unz64_s* s; - if (file == NULL) - return UNZ_PARAMERROR; - s = (unz64_s*)file; - if (s->pfile_in_zip_read == NULL) - return UNZ_PARAMERROR; - if (s->pfile_in_zip_read->rest_read_uncompressed == 0) - return 1; - return 0; -} - -// turn the warnings back on -#pragma GCC diagnostic pop diff --git a/include/minizip/unzip.h b/include/minizip/unzip.h deleted file mode 100644 index 7c03fe9..0000000 --- a/include/minizip/unzip.h +++ /dev/null @@ -1,320 +0,0 @@ -/* 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 -#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; } unzFile__; -typedef unzFile__ *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) - -/* tm_unz contain date/time info */ -typedef struct tm_unz_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_unz; - -/* 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 -{ - ZPOS64_T number_entry; /* total number of entries in the central dir on this disk */ - uLong number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP*/ - uLong size_comment; /* size of the global comment of the zipfile */ -} unz_global_info64; - -typedef struct unz_global_info_s -{ - uLong number_entry; /* total number of entries in the central dir on this disk */ - uLong number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP*/ - uLong 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 -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - ZPOS64_T compressed_size; /* compressed size 8 bytes */ - ZPOS64_T uncompressed_size; /* uncompressed size 8 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; - ZPOS64_T disk_offset; - uLong size_file_extra_internal; -} unz_file_info64; - -typedef struct unz_file_info_s -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - uLong compressed_size; /* compressed size 4 bytes */ - uLong uncompressed_size; /* uncompressed size 4 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; - uLong disk_offset; -} unz_file_info; - -/***************************************************************************/ -/* Opening and close a zip file */ - -extern unzFile ZEXPORT unzOpen OF((const char *path)); -extern unzFile ZEXPORT unzOpen64 OF((const void *path)); -/* Open a Zip file. - - path should contain the full pathname (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 OF((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 OF((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 OF((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 OF((unzFile file, unz_global_info *pglobal_info)); -extern int ZEXPORT unzGetGlobalInfo64 OF((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 OF((unzFile file, char *comment, uLong 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 OF((unzFile file)); -/* Open for reading data the current file in the zipfile. - - return UNZ_OK if no error */ - -extern int ZEXPORT unzOpenCurrentFilePassword OF((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 OF((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 OF((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 OF((unzFile file, voidp buf, unsigned 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 OF((unzFile file, unz_file_info *pfile_info, char *filename, - uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong comment_size)); -extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file, unz_file_info64 *pfile_info, char *filename, - uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong 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 ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file)); - -extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, voidp buf, unsigned 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 OF((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, - uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong comment_size); - -extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); -/* Set the current file of the zipfile to the first file. - - return UNZ_OK if no error */ - -extern int ZEXPORT unzGoToFirstFile2 OF((unzFile file, unz_file_info64 *pfile_info, char *filename, - uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong 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 OF((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 OF((unzFile file, unz_file_info64 *pfile_info, char *filename, - uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong 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 OF((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 -{ - uLong pos_in_zip_directory; /* offset in zip file directory */ - uLong num_of_file; /* # of file */ -} unz_file_pos; - -extern int ZEXPORT unzGetFilePos OF((unzFile file, unz_file_pos* file_pos)); -extern int ZEXPORT unzGoToFilePos OF((unzFile file, unz_file_pos* file_pos)); - -typedef struct unz64_file_pos_s -{ - ZPOS64_T pos_in_zip_directory; /* offset in zip file directory */ - ZPOS64_T num_of_file; /* # of file */ -} unz64_file_pos; - -extern int ZEXPORT unzGetFilePos64 OF((unzFile file, unz64_file_pos* file_pos)); -extern int ZEXPORT unzGoToFilePos64 OF((unzFile file, const unz64_file_pos* file_pos)); - -extern uLong ZEXPORT unzGetOffset OF((unzFile file)); -extern ZPOS64_T ZEXPORT unzGetOffset64 OF((unzFile file)); -/* Get the current file offset */ - -extern int ZEXPORT unzSetOffset OF((unzFile file, uLong pos)); -extern int ZEXPORT unzSetOffset64 OF((unzFile file, ZPOS64_T pos)); -/* Set the current file offset */ - -extern z_off_t ZEXPORT unztell OF((unzFile file)); -extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file)); -/* return current position in uncompressed data */ - -extern int ZEXPORT unzseek OF((unzFile file, z_off_t offset, int origin)); -extern int ZEXPORT unzseek64 OF((unzFile file, ZPOS64_T offset, int origin)); -/* Seek within the uncompressed data if compression method is storage */ - -extern int ZEXPORT unzeof OF((unzFile file)); -/* return 1 if the end of file was reached, 0 elsewhere */ - -/***************************************************************************/ - -#ifdef __cplusplus -} -#endif - -#endif /* _UNZ_H */ diff --git a/include/minizip/zip.c b/include/minizip/zip.c deleted file mode 100644 index 83bedb2..0000000 --- a/include/minizip/zip.c +++ /dev/null @@ -1,2029 +0,0 @@ -/* zip.c -- IO on .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 for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson - http://result42.com - Modifications for AES, PKWARE disk spanning - Copyright (C) 2010-2014 Nathan Moinvaziri - - 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. -*/ - -// save diagnostic state -#pragma GCC diagnostic push - -// turn off the specific warning. Can also use "-Wall" -#pragma GCC diagnostic ignored "-Wtype-limits" - -#include -#include -#include -#include -#include "zlib.h" -#include "zip.h" - -#ifdef STDC -# include -# include -# include -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else -# include -#endif - -#ifdef HAVE_AES -# define AES_METHOD (99) -# define AES_PWVERIFYSIZE (2) -# define AES_AUTHCODESIZE (10) -# define AES_MAXSALTLENGTH (16) -# define AES_VERSION (0x0001) -# define AES_ENCRYPTIONMODE (0x03) - -# include "aes/aes.h" -# include "aes/fileenc.h" -# include "aes/prng.h" -# include "aes/entropy.h" -#endif - -#ifndef NOCRYPT -# define INCLUDECRYPTINGCODE_IFCRYPTALLOWED -# include "crypt.h" -#endif - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - -#define SIZEDATA_INDATABLOCK (4096-(4*4)) - -#define DISKHEADERMAGIC (0x08074b50) -#define LOCALHEADERMAGIC (0x04034b50) -#define CENTRALHEADERMAGIC (0x02014b50) -#define ENDHEADERMAGIC (0x06054b50) -#define ZIP64ENDHEADERMAGIC (0x06064b50) -#define ZIP64ENDLOCHEADERMAGIC (0x07064b50) - -#define FLAG_LOCALHEADER_OFFSET (0x06) -#define CRC_LOCALHEADER_OFFSET (0x0e) - -#define SIZECENTRALHEADER (0x2e) /* 46 */ -#define SIZECENTRALHEADERLOCATOR (0x14) /* 20 */ -#define SIZECENTRALDIRITEM (0x2e) -#define SIZEZIPLOCALHEADER (0x1e) - -#ifndef BUFREADCOMMENT -# define BUFREADCOMMENT (0x400) -#endif -#ifndef VERSIONMADEBY -# define VERSIONMADEBY (0x0) /* platform dependent */ -#endif - -#ifndef Z_BUFSIZE -# define Z_BUFSIZE (64*1024) -#endif -#ifndef Z_MAXFILENAMEINZIP -# define Z_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -/* NOT sure that this work on ALL platform */ -#define MAKEULONG64(a, b) ((ZPOS64_T)(((unsigned long)(a)) | ((ZPOS64_T)((unsigned long)(b))) << 32)) - -#ifndef DEF_MEM_LEVEL -# if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -# else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -# endif -#endif - -const char zip_copyright[] = " zip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; - -typedef struct linkedlist_datablock_internal_s -{ - struct linkedlist_datablock_internal_s* next_datablock; - uLong avail_in_this_block; - uLong filled_in_this_block; - uLong unused; /* for future use and alignment */ - unsigned char data[SIZEDATA_INDATABLOCK]; -} linkedlist_datablock_internal; - -typedef struct linkedlist_data_s -{ - linkedlist_datablock_internal* first_block; - linkedlist_datablock_internal* last_block; -} linkedlist_data; - -typedef struct -{ - z_stream stream; /* zLib stream structure for inflate */ -#ifdef HAVE_BZIP2 - bz_stream bstream; /* bzLib stream structure for bziped */ -#endif -#ifdef HAVE_AES - fcrypt_ctx aes_ctx; - prng_ctx aes_rng[1]; -#endif - int stream_initialised; /* 1 is stream is initialized */ - uInt pos_in_buffered_data; /* last written byte in buffered_data */ - - ZPOS64_T pos_local_header; /* offset of the local header of the file currently writing */ - char* central_header; /* central header data for the current file */ - uLong size_centralextra; - uLong size_centralheader; /* size of the central header for cur file */ - uLong size_centralextrafree; /* Extra bytes allocated to the central header but that are not used */ - uLong size_comment; - uLong flag; /* flag of the file currently writing */ - - int method; /* compression method written to file.*/ - int compression_method; /* compression method to use */ - int raw; /* 1 for directly writing raw data */ - Byte buffered_data[Z_BUFSIZE]; /* buffer contain compressed data to be writ*/ - uLong dosDate; - uLong crc32; - int zip64; /* Add ZIP64 extended information in the extra field */ - uLong number_disk; /* number of current disk used for spanning ZIP */ - ZPOS64_T pos_zip64extrainfo; - ZPOS64_T total_compressed; - ZPOS64_T total_uncompressed; -#ifndef NOCRYPT - unsigned long keys[3]; /* keys defining the pseudo-random sequence */ - const unsigned long* pcrc_32_tab; - int crypt_header_size; -#endif -} curfile64_info; - -typedef struct -{ - zlib_filefunc64_32_def z_filefunc; - voidpf filestream; /* io structure of the zipfile */ - voidpf filestream_with_CD; /* io structure of the zipfile with the central dir */ - linkedlist_data central_dir; /* datablock with central dir in construction*/ - int in_opened_file_inzip; /* 1 if a file in the zip is currently writ.*/ - int append; /* append mode */ - curfile64_info ci; /* info on the file currently writing */ - - ZPOS64_T begin_pos; /* position of the beginning of the zipfile */ - ZPOS64_T add_position_when_writting_offset; - ZPOS64_T number_entry; - ZPOS64_T disk_size; /* size of each disk */ - uLong number_disk; /* number of the current disk, used for spanning ZIP */ - uLong number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP */ -#ifndef NO_ADDFILEINEXISTINGZIP - char *globalcomment; -#endif -} zip64_internal; - -/* Allocate a new data block */ -local linkedlist_datablock_internal* allocate_new_datablock OF(()); -local linkedlist_datablock_internal* allocate_new_datablock() -{ - linkedlist_datablock_internal* ldi; - - ldi = (linkedlist_datablock_internal*)ALLOC(sizeof(linkedlist_datablock_internal)); - - if (ldi != NULL) - { - ldi->next_datablock = NULL; - ldi->filled_in_this_block = 0; - ldi->avail_in_this_block = SIZEDATA_INDATABLOCK; - } - return ldi; -} - -/* Free data block in linked list */ -local void free_datablock OF((linkedlist_datablock_internal* ldi)); -local void free_datablock(linkedlist_datablock_internal* ldi) -{ - while (ldi != NULL) - { - linkedlist_datablock_internal* ldinext = ldi->next_datablock; - TRYFREE(ldi); - ldi = ldinext; - } -} - -/* Initialize linked list */ -local void init_linkedlist OF((linkedlist_data* ll)); -local void init_linkedlist(linkedlist_data* ll) -{ - ll->first_block = ll->last_block = NULL; -} - -/* Free entire linked list and all data blocks */ -local void free_linkedlist OF((linkedlist_data* ll)); -local void free_linkedlist(linkedlist_data* ll) -{ - free_datablock(ll->first_block); - ll->first_block = ll->last_block = NULL; -} - -/* Add data to linked list data block */ -local int add_data_in_datablock OF((linkedlist_data* ll, const void* buf, uLong len)); -local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len) -{ - linkedlist_datablock_internal* ldi; - const unsigned char* from_copy; - - if (ll == NULL) - return ZIP_INTERNALERROR; - - if (ll->last_block == NULL) - { - ll->first_block = ll->last_block = allocate_new_datablock(); - if (ll->first_block == NULL) - return ZIP_INTERNALERROR; - } - - ldi = ll->last_block; - from_copy = (unsigned char*)buf; - - while (len>0) - { - uInt copy_this; - uInt i; - unsigned char* to_copy; - - if (ldi->avail_in_this_block == 0) - { - ldi->next_datablock = allocate_new_datablock(); - if (ldi->next_datablock == NULL) - return ZIP_INTERNALERROR; - ldi = ldi->next_datablock ; - ll->last_block = ldi; - } - - if (ldi->avail_in_this_block < len) - copy_this = (uInt)ldi->avail_in_this_block; - else - copy_this = (uInt)len; - - to_copy = &(ldi->data[ldi->filled_in_this_block]); - - for (i=0;ifilled_in_this_block += copy_this; - ldi->avail_in_this_block -= copy_this; - from_copy += copy_this ; - len -= copy_this; - } - return ZIP_OK; -} - -local uLong zip64local_TmzDateToDosDate OF((const tm_zip* ptm)); -local uLong zip64local_TmzDateToDosDate(const tm_zip* ptm) -{ - uLong year; -#define zip64local_in_range(min, max, value) ((min) <= (value) && (value) <= (max)) - /* Years supported: - * [00, 79] (assumed to be between 2000 and 2079) - * [80, 207] (assumed to be between 1980 and 2107, typical output of old - software that does 'year-1900' to get a double digit year) - * [1980, 2107] - Due to the date format limitations, only years between 1980 and 2107 can be stored. - */ - if (!(zip64local_in_range(1980, 2107, ptm->tm_year) || zip64local_in_range(0, 207, ptm->tm_year)) || - !zip64local_in_range(0, 11, ptm->tm_mon) || - !zip64local_in_range(1, 31, ptm->tm_mday) || - !zip64local_in_range(0, 23, ptm->tm_hour) || - !zip64local_in_range(0, 59, ptm->tm_min) || - !zip64local_in_range(0, 59, ptm->tm_sec)) - return 0; -#undef zip64local_in_range - - year = (uLong)ptm->tm_year; - if (year >= 1980) /* range [1980, 2107] */ - year -= 1980; - else if (year >= 80) /* range [80, 99] */ - year -= 80; - else /* range [00, 79] */ - year += 20; - - return - (uLong)(((ptm->tm_mday) + (32 * (ptm->tm_mon+1)) + (512 * year)) << 16) | - ((ptm->tm_sec/2) + (32* ptm->tm_min) + (2048 * (uLong)ptm->tm_hour)); -} - -/* Inputs a long in LSB order to the given file: nbByte == 1, 2 ,4 or 8 (byte, short or long, ZPOS64_T) */ -local int zip64local_putValue OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, - ZPOS64_T x, int nbByte)); -local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, - ZPOS64_T x, int nbByte) -{ - unsigned char buf[8]; - int n; - for (n = 0; n < nbByte; n++) - { - buf[n] = (unsigned char)(x & 0xff); - x >>= 8; - } - if (x != 0) - { - /* data overflow - hack for ZIP64 (X Roche) */ - for (n = 0; n < nbByte; n++) - { - buf[n] = 0xff; - } - } - - if (ZWRITE64(*pzlib_filefunc_def,filestream,buf,nbByte)!=(uLong)nbByte) - return ZIP_ERRNO; - - return ZIP_OK; -} - -local void zip64local_putValue_inmemory OF((void* dest, ZPOS64_T x, int nbByte)); -local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbByte) -{ - unsigned char* buf =(unsigned char*)dest; - int n; - for (n = 0; n < nbByte; n++) { - buf[n] = (unsigned char)(x & 0xff); - x >>= 8; - } - - if (x != 0) - { - /* data overflow - hack for ZIP64 */ - for (n = 0; n < nbByte; n++) - { - buf[n] = 0xff; - } - } -} - -local int zip64local_getByte OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi)); -local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def,voidpf filestream,int* pi) -{ - unsigned char c; - int err = (int)ZREAD64(*pzlib_filefunc_def, filestream, &c,1); - if (err == 1) - { - *pi = (int)c; - return ZIP_OK; - } - if (ZERROR64(*pzlib_filefunc_def, filestream)) - return ZIP_ERRNO; - return ZIP_EOF; -} - -local int zip64local_getShort OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); -local int zip64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) -{ - uLong x; - int i = 0; - int err; - - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x = (uLong)i; - if (err == ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x += ((uLong)i) << 8; - - if (err == ZIP_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int zip64local_getLong OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); -local int zip64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) -{ - uLong x; - int i = 0; - int err; - - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x = (uLong)i; - if (err == ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x += ((uLong)i)<<8; - if (err == ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x += ((uLong)i)<<16; - if (err == ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x += ((uLong)i)<<24; - - if (err == ZIP_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int zip64local_getLong64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX)); -local int zip64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX) -{ - ZPOS64_T x; - int i = 0; - int err; - - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x = (ZPOS64_T)i; - if (err == ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x += ((ZPOS64_T)i)<<8; - if (err == ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x += ((ZPOS64_T)i)<<16; - if (err == ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x += ((ZPOS64_T)i)<<24; - if (err == ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x += ((ZPOS64_T)i)<<32; - if (err == ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x += ((ZPOS64_T)i)<<40; - if (err == ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x += ((ZPOS64_T)i)<<48; - if (err == ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); - x += ((ZPOS64_T)i)<<56; - - if (err == ZIP_OK) - *pX = x; - else - *pX = 0; - - return err; -} - -/* Gets the amount of bytes left to write to the current disk for spanning archives */ -local int zipGetDiskSizeAvailable OF((zipFile file, ZPOS64_T *size_available)); -local int zipGetDiskSizeAvailable(zipFile file, ZPOS64_T *size_available) -{ - zip64_internal* zi; - ZPOS64_T current_disk_size; - - zi = (zip64_internal*)file; - ZSEEK64(zi->z_filefunc, zi->filestream, 0, ZLIB_FILEFUNC_SEEK_END); - current_disk_size = ZTELL64(zi->z_filefunc, zi->filestream); - *size_available = zi->disk_size - current_disk_size; - return ZIP_OK; -} - -/* Goes to a specific disk number for spanning archives */ -local int zipGoToSpecificDisk OF((zipFile file, int number_disk, int open_existing)); -local int zipGoToSpecificDisk(zipFile file, int number_disk, int open_existing) -{ - zip64_internal* zi; - int err = ZIP_OK; - - zi = (zip64_internal*)file; - if (zi->disk_size == 0) - return err; - - if ((zi->filestream != NULL) && (zi->filestream != zi->filestream_with_CD)) - ZCLOSE64(zi->z_filefunc, zi->filestream); - - zi->filestream = ZOPENDISK64(zi->z_filefunc, zi->filestream_with_CD, number_disk, (open_existing == 1) ? - (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_EXISTING) : - (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_CREATE)); - - if (zi->filestream == NULL) - err = ZIP_ERRNO; - - return err; -} - -/* Goes to the first disk in a spanned archive */ -local int zipGoToFirstDisk OF((zipFile file)); -local int zipGoToFirstDisk(zipFile file) -{ - zip64_internal* zi; - int number_disk_next; - int err = ZIP_OK; - - zi = (zip64_internal*)file; - - if (zi->disk_size == 0) - return err; - number_disk_next = 0; - if (zi->number_disk_with_CD > 0) - number_disk_next = zi->number_disk_with_CD - 1; - err = zipGoToSpecificDisk(file, number_disk_next, (zi->append == APPEND_STATUS_ADDINZIP)); - if ((err == ZIP_ERRNO) && (zi->append == APPEND_STATUS_ADDINZIP)) - err = zipGoToSpecificDisk(file, number_disk_next, 0); - if (err == ZIP_OK) - zi->number_disk = number_disk_next; - ZSEEK64(zi->z_filefunc, zi->filestream, 0, ZLIB_FILEFUNC_SEEK_END); - return err; -} - -/* Goes to the next disk in a spanned archive */ -local int zipGoToNextDisk OF((zipFile file)); -local int zipGoToNextDisk(zipFile file) -{ - zip64_internal* zi; - ZPOS64_T size_available_in_disk; - int err = ZIP_OK; - int number_disk_next; - - zi = (zip64_internal*)file; - - if (zi->disk_size == 0) - return err; - - number_disk_next = zi->number_disk + 1; - - do - { - err = zipGoToSpecificDisk(file, number_disk_next, (zi->append == APPEND_STATUS_ADDINZIP)); - if ((err == ZIP_ERRNO) && (zi->append == APPEND_STATUS_ADDINZIP)) - err = zipGoToSpecificDisk(file, number_disk_next, 0); - if (err != ZIP_OK) - break; - err = zipGetDiskSizeAvailable(file, &size_available_in_disk); - if (err != ZIP_OK) - break; - zi->number_disk = number_disk_next; - zi->number_disk_with_CD = zi->number_disk + 1; - - number_disk_next += 1; - } - while (size_available_in_disk <= 0); - - return err; -} - -/* Locate the Central directory of a zipfile (at the end, just before the global comment) */ -local ZPOS64_T zip64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)); -local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T file_size; - ZPOS64_T back_read = 4; - ZPOS64_T max_back=0xffff; /* maximum size of global comment */ - ZPOS64_T pos_found=0; - uLong read_size; - ZPOS64_T read_pos; - int i; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf == NULL) - return 0; - - if (ZSEEK64(*pzlib_filefunc_def, filestream, 0, ZLIB_FILEFUNC_SEEK_END) != 0) - { - TRYFREE(buf); - return 0; - } - - file_size = ZTELL64(*pzlib_filefunc_def, filestream); - - if (max_back > file_size) - max_back = file_size; - - while (back_read < max_back) - { - if (back_read + BUFREADCOMMENT > max_back) - back_read = max_back; - else - back_read += BUFREADCOMMENT; - - read_pos = file_size-back_read; - read_size = ((BUFREADCOMMENT+4) < (file_size-read_pos)) ? - (BUFREADCOMMENT+4) : (uLong)(file_size-read_pos); - - if (ZSEEK64(*pzlib_filefunc_def, filestream, read_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) - break; - if (ZREAD64(*pzlib_filefunc_def, filestream, buf, read_size) != read_size) - break; - - for (i = (int)read_size-3; (i--) > 0;) - if ((*(buf+i)) == (ENDHEADERMAGIC & 0xff) && - (*(buf+i+1)) == (ENDHEADERMAGIC >> 8 & 0xff) && - (*(buf+i+2)) == (ENDHEADERMAGIC >> 16 & 0xff) && - (*(buf+i+3)) == (ENDHEADERMAGIC >> 24 & 0xff)) - { - pos_found = read_pos+i; - break; - } - - if (pos_found != 0) - break; - } - TRYFREE(buf); - return pos_found; -} - -/* Locate the Central directory 64 of a zipfile (at the end, just before the global comment) */ -local ZPOS64_T zip64local_SearchCentralDir64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, - const ZPOS64_T endcentraloffset)); -local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, - const ZPOS64_T endcentraloffset) -{ - ZPOS64_T offset; - uLong uL; - - /* Zip64 end of central directory locator */ - if (ZSEEK64(*pzlib_filefunc_def, filestream, endcentraloffset - SIZECENTRALHEADERLOCATOR, ZLIB_FILEFUNC_SEEK_SET) != 0) - return 0; - - /* read locator signature */ - if (zip64local_getLong(pzlib_filefunc_def, filestream, &uL) != ZIP_OK) - return 0; - if (uL != ZIP64ENDLOCHEADERMAGIC) - return 0; - /* number of the disk with the start of the zip64 end of central directory */ - if (zip64local_getLong(pzlib_filefunc_def, filestream, &uL) != ZIP_OK) - return 0; - /* relative offset of the zip64 end of central directory record */ - if (zip64local_getLong64(pzlib_filefunc_def, filestream, &offset) != ZIP_OK) - return 0; - /* total number of disks */ - if (zip64local_getLong(pzlib_filefunc_def, filestream, &uL) != ZIP_OK) - return 0; - /* Goto end of central directory record */ - if (ZSEEK64(*pzlib_filefunc_def,filestream, offset, ZLIB_FILEFUNC_SEEK_SET) != 0) - return 0; - /* the signature */ - if (zip64local_getLong(pzlib_filefunc_def, filestream, &uL) != ZIP_OK) - return 0; - if (uL != ZIP64ENDHEADERMAGIC) - return 0; - - return offset; -} - -extern zipFile ZEXPORT zipOpen4(const void *pathname, int append, ZPOS64_T disk_size, zipcharpc* globalcomment, - zlib_filefunc64_32_def* pzlib_filefunc64_32_def) -{ - zip64_internal ziinit; - zip64_internal* zi; -#ifndef NO_ADDFILEINEXISTINGZIP - ZPOS64_T byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx)*/ - ZPOS64_T size_central_dir; /* size of the central directory */ - ZPOS64_T offset_central_dir; /* offset of start of central directory */ - ZPOS64_T number_entry_CD; /* total number of entries in the central dir */ - ZPOS64_T number_entry; - ZPOS64_T central_pos; - ZPOS64_T size_central_dir_to_read; - uLong uL; - uLong size_comment; - size_t buf_size = SIZEDATA_INDATABLOCK; - void* buf_read; -#endif - int err = ZIP_OK; - int mode; - - ziinit.z_filefunc.zseek32_file = NULL; - ziinit.z_filefunc.ztell32_file = NULL; - if (pzlib_filefunc64_32_def == NULL) - fill_fopen64_filefunc(&ziinit.z_filefunc.zfile_func64); - else - ziinit.z_filefunc = *pzlib_filefunc64_32_def; - - if (append == APPEND_STATUS_CREATE) - mode = (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_CREATE); - else - mode = (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_EXISTING); - - ziinit.filestream = ZOPEN64(ziinit.z_filefunc, pathname, mode); - if (ziinit.filestream == NULL) - return NULL; - - if (append == APPEND_STATUS_CREATEAFTER) - { - /* Don't support spanning ZIP with APPEND_STATUS_CREATEAFTER */ - if (disk_size > 0) - return NULL; - - ZSEEK64(ziinit.z_filefunc,ziinit.filestream,0,SEEK_END); - } - - ziinit.filestream_with_CD = ziinit.filestream; - ziinit.append = append; - ziinit.number_disk = 0; - ziinit.number_disk_with_CD = 0; - ziinit.disk_size = disk_size; - ziinit.begin_pos = ZTELL64(ziinit.z_filefunc,ziinit.filestream); - ziinit.in_opened_file_inzip = 0; - ziinit.ci.stream_initialised = 0; - ziinit.number_entry = 0; - ziinit.add_position_when_writting_offset = 0; - init_linkedlist(&(ziinit.central_dir)); - - zi = (zip64_internal*)ALLOC(sizeof(zip64_internal)); - if (zi == NULL) - { - ZCLOSE64(ziinit.z_filefunc,ziinit.filestream); - return NULL; - } - -#ifndef NO_ADDFILEINEXISTINGZIP - /* Add file in a zipfile */ - ziinit.globalcomment = NULL; - if (append == APPEND_STATUS_ADDINZIP) - { - /* Read and Cache Central Directory Records */ - central_pos = zip64local_SearchCentralDir(&ziinit.z_filefunc,ziinit.filestream); - /* disable to allow appending to empty ZIP archive (must be standard zip, not zip64) - if (central_pos == 0) - err = ZIP_ERRNO; - */ - - if (err == ZIP_OK) - { - /* read end of central directory info */ - if (ZSEEK64(ziinit.z_filefunc, ziinit.filestream, central_pos,ZLIB_FILEFUNC_SEEK_SET) != 0) - err = ZIP_ERRNO; - - /* the signature, already checked */ - if (zip64local_getLong(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) - err = ZIP_ERRNO; - /* number of this disk */ - if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &ziinit.number_disk) != ZIP_OK) - err = ZIP_ERRNO; - /* number of the disk with the start of the central directory */ - if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &ziinit.number_disk_with_CD) != ZIP_OK) - err = ZIP_ERRNO; - /* total number of entries in the central dir on this disk */ - number_entry = 0; - if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) - err = ZIP_ERRNO; - else - number_entry = uL; - /* total number of entries in the central dir */ - number_entry_CD = 0; - if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) - err = ZIP_ERRNO; - else - number_entry_CD = uL; - if (number_entry_CD!=number_entry) - err = ZIP_BADZIPFILE; - /* size of the central directory */ - size_central_dir = 0; - if (zip64local_getLong(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) - err = ZIP_ERRNO; - else - size_central_dir = uL; - /* offset of start of central directory with respect to the starting disk number */ - offset_central_dir = 0; - if (zip64local_getLong(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) - err = ZIP_ERRNO; - else - offset_central_dir = uL; - /* zipfile global comment length */ - if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &size_comment) != ZIP_OK) - err = ZIP_ERRNO; - - if ((err == ZIP_OK) && ((number_entry_CD == 0xffff) || (offset_central_dir == 0xffffffff))) - { - /* Format should be Zip64, as the central directory or file size is too large */ - central_pos = zip64local_SearchCentralDir64(&ziinit.z_filefunc, ziinit.filestream, central_pos); - - if (central_pos) - { - ZPOS64_T sizeEndOfCentralDirectory; - - if (ZSEEK64(ziinit.z_filefunc, ziinit.filestream, central_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = ZIP_ERRNO; - - /* the signature, already checked */ - if (zip64local_getLong(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) - err = ZIP_ERRNO; - /* size of zip64 end of central directory record */ - if (zip64local_getLong64(&ziinit.z_filefunc, ziinit.filestream, &sizeEndOfCentralDirectory) != ZIP_OK) - err = ZIP_ERRNO; - /* version made by */ - if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) - err = ZIP_ERRNO; - /* version needed to extract */ - if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) - err = ZIP_ERRNO; - /* number of this disk */ - if (zip64local_getLong(&ziinit.z_filefunc, ziinit.filestream, &ziinit.number_disk) != ZIP_OK) - err = ZIP_ERRNO; - /* number of the disk with the start of the central directory */ - if (zip64local_getLong(&ziinit.z_filefunc, ziinit.filestream, &ziinit.number_disk_with_CD) != ZIP_OK) - err = ZIP_ERRNO; - /* total number of entries in the central directory on this disk */ - if (zip64local_getLong64(&ziinit.z_filefunc, ziinit.filestream, &number_entry) != ZIP_OK) - err = ZIP_ERRNO; - /* total number of entries in the central directory */ - if (zip64local_getLong64(&ziinit.z_filefunc, ziinit.filestream, &number_entry_CD) != ZIP_OK) - err = ZIP_ERRNO; - if (number_entry_CD!=number_entry) - err = ZIP_BADZIPFILE; - /* size of the central directory */ - if (zip64local_getLong64(&ziinit.z_filefunc, ziinit.filestream, &size_central_dir) != ZIP_OK) - err = ZIP_ERRNO; - /* offset of start of central directory with respect to the starting disk number */ - if (zip64local_getLong64(&ziinit.z_filefunc, ziinit.filestream, &offset_central_dir) != ZIP_OK) - err = ZIP_ERRNO; - } - else - err = ZIP_BADZIPFILE; - } - } - - if ((err == ZIP_OK) && (central_pos 0) - { - ziinit.globalcomment = (char*)ALLOC(size_comment+1); - if (ziinit.globalcomment) - { - size_comment = ZREAD64(ziinit.z_filefunc, ziinit.filestream, ziinit.globalcomment, size_comment); - ziinit.globalcomment[size_comment] = 0; - } - } - - byte_before_the_zipfile = central_pos - (offset_central_dir+size_central_dir); - ziinit.add_position_when_writting_offset = byte_before_the_zipfile; - - /* Store central directory in memory */ - size_central_dir_to_read = size_central_dir; - buf_size = SIZEDATA_INDATABLOCK; - buf_read = (void*)ALLOC(buf_size); - - if (ZSEEK64(ziinit.z_filefunc, ziinit.filestream, - offset_central_dir + byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = ZIP_ERRNO; - - while ((size_central_dir_to_read > 0) && (err == ZIP_OK)) - { - ZPOS64_T read_this = SIZEDATA_INDATABLOCK; - if (read_this > size_central_dir_to_read) - read_this = size_central_dir_to_read; - - if (ZREAD64(ziinit.z_filefunc, ziinit.filestream, buf_read, (uLong)read_this) != read_this) - err = ZIP_ERRNO; - - if (err == ZIP_OK) - err = add_data_in_datablock(&ziinit.central_dir, buf_read, (uLong)read_this); - - size_central_dir_to_read -= read_this; - } - TRYFREE(buf_read); - - ziinit.begin_pos = byte_before_the_zipfile; - ziinit.number_entry = number_entry_CD; - - if (ZSEEK64(ziinit.z_filefunc, ziinit.filestream, - offset_central_dir+byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = ZIP_ERRNO; - } - - if (globalcomment) - *globalcomment = ziinit.globalcomment; -#endif - - if (err != ZIP_OK) - { -#ifndef NO_ADDFILEINEXISTINGZIP - TRYFREE(ziinit.globalcomment); -#endif - TRYFREE(zi); - return NULL; - } - - *zi = ziinit; - zipGoToFirstDisk((zipFile)zi); - return(zipFile)zi; -} - -extern zipFile ZEXPORT zipOpen2(const char *pathname, int append, zipcharpc* globalcomment, - zlib_filefunc_def* pzlib_filefunc32_def) -{ - if (pzlib_filefunc32_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - fill_zlib_filefunc64_32_def_from_filefunc32(&zlib_filefunc64_32_def_fill,pzlib_filefunc32_def); - return zipOpen4(pathname, append, 0, globalcomment, &zlib_filefunc64_32_def_fill); - } - return zipOpen4(pathname, append, 0, globalcomment, NULL); -} - -extern zipFile ZEXPORT zipOpen2_64(const void *pathname, int append, zipcharpc* globalcomment, - zlib_filefunc64_def* pzlib_filefunc_def) -{ - if (pzlib_filefunc_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - zlib_filefunc64_32_def_fill.zfile_func64 = *pzlib_filefunc_def; - zlib_filefunc64_32_def_fill.ztell32_file = NULL; - zlib_filefunc64_32_def_fill.zseek32_file = NULL; - return zipOpen4(pathname, append, 0, globalcomment, &zlib_filefunc64_32_def_fill); - } - return zipOpen4(pathname, append, 0, globalcomment, NULL); -} - -extern zipFile ZEXPORT zipOpen3(const char *pathname, int append, ZPOS64_T disk_size, zipcharpc* globalcomment, - zlib_filefunc_def* pzlib_filefunc32_def) -{ - if (pzlib_filefunc32_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - fill_zlib_filefunc64_32_def_from_filefunc32(&zlib_filefunc64_32_def_fill,pzlib_filefunc32_def); - return zipOpen4(pathname, append, disk_size, globalcomment, &zlib_filefunc64_32_def_fill); - } - return zipOpen4(pathname, append, disk_size, globalcomment, NULL); -} - -extern zipFile ZEXPORT zipOpen3_64(const void *pathname, int append, ZPOS64_T disk_size, zipcharpc* globalcomment, - zlib_filefunc64_def* pzlib_filefunc_def) -{ - if (pzlib_filefunc_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - zlib_filefunc64_32_def_fill.zfile_func64 = *pzlib_filefunc_def; - zlib_filefunc64_32_def_fill.ztell32_file = NULL; - zlib_filefunc64_32_def_fill.zseek32_file = NULL; - return zipOpen4(pathname, append, disk_size, globalcomment, &zlib_filefunc64_32_def_fill); - } - return zipOpen4(pathname, append, disk_size, globalcomment, NULL); -} - -extern zipFile ZEXPORT zipOpen(const char* pathname, int append) -{ - return zipOpen3((const void*)pathname,append,0,NULL,NULL); -} - -extern zipFile ZEXPORT zipOpen64(const void* pathname, int append) -{ - return zipOpen3(pathname,append,0,NULL,NULL); -} - -extern int ZEXPORT zipOpenNewFileInZip4_64(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, - int strategy, const char* password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase, int zip64) -{ - zip64_internal* zi; - uInt size_filename; - uInt size_comment = 0; - uInt i; - int err = ZIP_OK; - ZPOS64_T size_available; - ZPOS64_T size_needed; - -#ifdef NOCRYPT - (crcForCrypting); - if (password != NULL) - return ZIP_PARAMERROR; -#endif - - if (file == NULL) - return ZIP_PARAMERROR; - - if ((method != 0) && -#ifdef HAVE_BZIP2 - (method != Z_BZIP2ED) && -#endif - (method != Z_DEFLATED)) - return ZIP_PARAMERROR; - - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 1) - { - err = zipCloseFileInZip (file); - if (err != ZIP_OK) - return err; - } - - if (filename == NULL) - filename = "-"; - if (comment != NULL) - size_comment = (uInt)strlen(comment); - - size_filename = (uInt)strlen(filename); - - if (zipfi == NULL) - zi->ci.dosDate = 0; - else - { - if (zipfi->dosDate != 0) - zi->ci.dosDate = zipfi->dosDate; - else - zi->ci.dosDate = zip64local_TmzDateToDosDate(&zipfi->tmz_date); - } - - zi->ci.method = method; - zi->ci.compression_method = method; - zi->ci.crc32 = 0; - zi->ci.stream_initialised = 0; - zi->ci.pos_in_buffered_data = 0; - zi->ci.raw = raw; - zi->ci.flag = flagBase; - if ((level == 8) || (level == 9)) - zi->ci.flag |= 2; - if (level == 2) - zi->ci.flag |= 4; - if (level == 1) - zi->ci.flag |= 6; - if (password != NULL) - { - zi->ci.flag |= 1; -#ifdef HAVE_AES - zi->ci.method = AES_METHOD; -#endif - } - - if (zi->disk_size > 0) - { - if ((zi->number_disk == 0) && (zi->number_entry == 0)) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)DISKHEADERMAGIC, 4); - - /* Make sure enough space available on current disk for local header */ - zipGetDiskSizeAvailable((zipFile)zi, &size_available); - size_needed = 30 + size_filename + size_extrafield_local; - if (zi->ci.zip64) - size_needed += 20; -#ifdef HAVE_AES - if (zi->ci.method == AES_METHOD) - size_needed += 11; -#endif - if (size_available < size_needed) - zipGoToNextDisk((zipFile)zi); - } - - zi->ci.pos_local_header = ZTELL64(zi->z_filefunc, zi->filestream); - zi->ci.size_comment = size_comment; - zi->ci.size_centralheader = SIZECENTRALHEADER + size_filename + size_extrafield_global; - zi->ci.size_centralextra = size_extrafield_global; - zi->ci.size_centralextrafree = 32; /* Extra space reserved for ZIP64 extra info */ -#ifdef HAVE_AES - if (zi->ci.method == AES_METHOD) - zi->ci.size_centralextrafree += 11; /* Extra space reserved for AES extra info */ -#endif - zi->ci.central_header = (char*)ALLOC((uInt)zi->ci.size_centralheader + zi->ci.size_centralextrafree + size_comment); - zi->ci.number_disk = zi->number_disk; - - /* Write central directory header */ - zip64local_putValue_inmemory(zi->ci.central_header, (uLong)CENTRALHEADERMAGIC, 4); - zip64local_putValue_inmemory(zi->ci.central_header+4, (uLong)versionMadeBy, 2); - zip64local_putValue_inmemory(zi->ci.central_header+6, (uLong)20, 2); - zip64local_putValue_inmemory(zi->ci.central_header+8, (uLong)zi->ci.flag, 2); - zip64local_putValue_inmemory(zi->ci.central_header+10, (uLong)zi->ci.method, 2); - zip64local_putValue_inmemory(zi->ci.central_header+12, (uLong)zi->ci.dosDate, 4); - zip64local_putValue_inmemory(zi->ci.central_header+16, (uLong)0, 4); /*crc*/ - zip64local_putValue_inmemory(zi->ci.central_header+20, (uLong)0, 4); /*compr size*/ - zip64local_putValue_inmemory(zi->ci.central_header+24, (uLong)0, 4); /*uncompr size*/ - zip64local_putValue_inmemory(zi->ci.central_header+28, (uLong)size_filename, 2); - zip64local_putValue_inmemory(zi->ci.central_header+30, (uLong)size_extrafield_global, 2); - zip64local_putValue_inmemory(zi->ci.central_header+32, (uLong)size_comment, 2); - zip64local_putValue_inmemory(zi->ci.central_header+34, (uLong)zi->ci.number_disk, 2); /*disk nm start*/ - - if (zipfi == NULL) - zip64local_putValue_inmemory(zi->ci.central_header+36, (uLong)0, 2); - else - zip64local_putValue_inmemory(zi->ci.central_header+36, (uLong)zipfi->internal_fa, 2); - if (zipfi == NULL) - zip64local_putValue_inmemory(zi->ci.central_header+38, (uLong)0, 4); - else - zip64local_putValue_inmemory(zi->ci.central_header+38, (uLong)zipfi->external_fa, 4); - if (zi->ci.pos_local_header >= 0xffffffff) - zip64local_putValue_inmemory(zi->ci.central_header+42, (uLong)0xffffffff, 4); - else - zip64local_putValue_inmemory(zi->ci.central_header+42, - (uLong)zi->ci.pos_local_header - zi->add_position_when_writting_offset, 4); - - for (i = 0; i < size_filename; i++) - zi->ci.central_header[SIZECENTRALHEADER+i] = filename[i]; - for (i = 0; i < size_extrafield_global; i++) - zi->ci.central_header[SIZECENTRALHEADER+size_filename+i] = - ((const char*)extrafield_global)[i]; - /* Store comment at the end for later repositioning */ - for (i = 0; i < size_comment; i++) - zi->ci.central_header[zi->ci.size_centralheader+ - zi->ci.size_centralextrafree+i] = comment[i]; - - if (zi->ci.central_header == NULL) - return ZIP_INTERNALERROR; - - zi->ci.zip64 = zip64; - zi->ci.total_compressed = 0; - zi->ci.total_uncompressed = 0; - zi->ci.pos_zip64extrainfo = 0; - - /* Write the local header */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)LOCALHEADERMAGIC, 4); - - if (err == ZIP_OK) - { - if (zi->ci.zip64) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)45, 2); /* version needed to extract */ - else - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)20, 2); /* version needed to extract */ - } - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->ci.flag, 2); - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->ci.method, 2); - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->ci.dosDate, 4); - - /* CRC & compressed size & uncompressed size will be filled in later and rewritten later */ - - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0, 4); /* crc 32, unknown */ - if (err == ZIP_OK) - { - if (zi->ci.zip64) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0xFFFFFFFF, 4); /* compressed size, unknown */ - else - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0, 4); /* compressed size, unknown */ - } - if (err == ZIP_OK) - { - if (zi->ci.zip64) /* uncompressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0xFFFFFFFF, 4); - else /* uncompressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0, 4); - } - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)size_filename, 2); - if (err == ZIP_OK) - { - ZPOS64_T size_extrafield = size_extrafield_local; - if (zi->ci.zip64) - size_extrafield += 20; -#ifdef HAVE_AES - if (zi->ci.method == AES_METHOD) - size_extrafield += 11; -#endif - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)size_extrafield,2); - } - if ((err == ZIP_OK) && (size_filename > 0)) - { - if (ZWRITE64(zi->z_filefunc, zi->filestream, filename, size_filename) != size_filename) - err = ZIP_ERRNO; - } - if ((err == ZIP_OK) && (size_extrafield_local > 0)) - { - if (ZWRITE64(zi->z_filefunc, zi->filestream, extrafield_local, size_extrafield_local) != size_extrafield_local) - err = ZIP_ERRNO; - } - - /* Write the Zip64 extended info */ - if ((err == ZIP_OK) && (zi->ci.zip64)) - { - short headerid = 1; - short datasize = 16; - ZPOS64_T compressed_size = 0; - ZPOS64_T uncompressed_size = 0; - - /* Remember position of Zip64 extended info for the local file header. - (needed when we update size after done with file) */ - zi->ci.pos_zip64extrainfo = ZTELL64(zi->z_filefunc, zi->filestream); - - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)headerid, 2); - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)datasize, 2); - - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)uncompressed_size, 8); - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)compressed_size, 8); - } -#ifdef HAVE_AES - /* Write the AES extended info */ - if ((err == ZIP_OK) && (zi->ci.method == AES_METHOD)) - { - int headerid = 0x9901; - short datasize = 7; - - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, headerid, 2); - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, datasize, 2); - - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, AES_VERSION, 2); - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, 'A', 1); - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, 'E', 1); - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, AES_ENCRYPTIONMODE, 1); - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->ci.compression_method, 2); - } -#endif - -#ifdef HAVE_BZIP2 - zi->ci.bstream.avail_in = (uInt)0; - zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; - zi->ci.bstream.total_in_hi32 = 0; - zi->ci.bstream.total_in_lo32 = 0; - zi->ci.bstream.total_out_hi32 = 0; - zi->ci.bstream.total_out_lo32 = 0; -#endif - - zi->ci.stream.avail_in = (uInt)0; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - zi->ci.stream.total_in = 0; - zi->ci.stream.total_out = 0; - zi->ci.stream.data_type = Z_BINARY; - - if ((err == ZIP_OK) && (!zi->ci.raw)) - { - if (method == Z_DEFLATED) - { - zi->ci.stream.zalloc = (alloc_func)0; - zi->ci.stream.zfree = (free_func)0; - zi->ci.stream.opaque = (voidpf)zi; - - if (windowBits > 0) - windowBits = -windowBits; - - err = deflateInit2(&zi->ci.stream, level, Z_DEFLATED, windowBits, memLevel, strategy); - - if (err == Z_OK) - zi->ci.stream_initialised = Z_DEFLATED; - } - else if (method == Z_BZIP2ED) - { -#ifdef HAVE_BZIP2 - zi->ci.bstream.bzalloc = 0; - zi->ci.bstream.bzfree = 0; - zi->ci.bstream.opaque = (voidpf)0; - - err = BZ2_bzCompressInit(&zi->ci.bstream, level, 0, 35); - if (err == BZ_OK) - zi->ci.stream_initialised = Z_BZIP2ED; -#endif - } - } - -#ifndef NOCRYPT - zi->ci.crypt_header_size = 0; - if ((err == Z_OK) && ((zi->ci.flag & 1) != 0)) - { -#ifdef HAVE_AES - if (zi->ci.method == AES_METHOD) - { - unsigned char passverify[AES_PWVERIFYSIZE]; - unsigned char saltvalue[AES_MAXSALTLENGTH]; - uInt saltlength; - - if ((AES_ENCRYPTIONMODE < 1) || (AES_ENCRYPTIONMODE > 3)) - return Z_ERRNO; - - saltlength = SALT_LENGTH(AES_ENCRYPTIONMODE); - - prng_init(entropy_fun, zi->ci.aes_rng); - prng_rand(saltvalue, saltlength, zi->ci.aes_rng); - prng_end(zi->ci.aes_rng); - - fcrypt_init(AES_ENCRYPTIONMODE, password, strlen(password), saltvalue, passverify, &zi->ci.aes_ctx); - - if (ZWRITE64(zi->z_filefunc, zi->filestream, saltvalue, saltlength) != saltlength) - err = ZIP_ERRNO; - if (ZWRITE64(zi->z_filefunc, zi->filestream, passverify, AES_PWVERIFYSIZE) != AES_PWVERIFYSIZE) - err = ZIP_ERRNO; - - zi->ci.crypt_header_size = saltlength + AES_PWVERIFYSIZE + AES_AUTHCODESIZE; - } - else -#endif - { - unsigned char bufHead[RAND_HEAD_LEN]; - unsigned int sizeHead; - - zi->ci.pcrc_32_tab = (const unsigned long *)get_crc_table(); - /*init_keys(password, zi->ci.keys, zi->ci.pcrc_32_tab);*/ - - sizeHead = crypthead(password, bufHead, RAND_HEAD_LEN, zi->ci.keys, zi->ci.pcrc_32_tab, crcForCrypting); - zi->ci.crypt_header_size = sizeHead; - - if (ZWRITE64(zi->z_filefunc, zi->filestream, bufHead, sizeHead) != sizeHead) - err = ZIP_ERRNO; - } - } -#endif - - if (err == Z_OK) - zi->in_opened_file_inzip = 1; - return err; -} - -extern int ZEXPORT zipOpenNewFileInZip4(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, - int memLevel, int strategy, const char* password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase) -{ - return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, comment, method, level, raw, windowBits, memLevel, - strategy, password, crcForCrypting, versionMadeBy, flagBase, 0); -} - -extern int ZEXPORT zipOpenNewFileInZip3(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, - int memLevel, int strategy, const char* password, uLong crcForCrypting) -{ - return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, comment, method, level, raw, windowBits, memLevel, - strategy, password, crcForCrypting, VERSIONMADEBY, 0, 0); -} - -extern int ZEXPORT zipOpenNewFileInZip3_64(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, - int memLevel, int strategy, const char* password, uLong crcForCrypting, int zip64) -{ - return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, comment, method, level, raw, windowBits, memLevel, strategy, - password, crcForCrypting, VERSIONMADEBY, 0, zip64); -} - -extern int ZEXPORT zipOpenNewFileInZip2(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int raw) -{ - return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, comment, method, level, raw, -MAX_WBITS, DEF_MEM_LEVEL, - Z_DEFAULT_STRATEGY, NULL, 0, VERSIONMADEBY, 0, 0); -} - -extern int ZEXPORT zipOpenNewFileInZip2_64(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int raw, int zip64) -{ - return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, comment, method, level, raw, -MAX_WBITS, DEF_MEM_LEVEL, - Z_DEFAULT_STRATEGY, NULL, 0, VERSIONMADEBY, 0, zip64); -} - -extern int ZEXPORT zipOpenNewFileInZip64(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void*extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int zip64) -{ - return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, comment, method, level, 0, -MAX_WBITS, DEF_MEM_LEVEL, - Z_DEFAULT_STRATEGY, NULL, 0, VERSIONMADEBY, 0, zip64); -} - -extern int ZEXPORT zipOpenNewFileInZip(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void*extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level) -{ - return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, comment, method, level, 0, -MAX_WBITS, DEF_MEM_LEVEL, - Z_DEFAULT_STRATEGY, NULL, 0, VERSIONMADEBY, 0, 0); -} - -/* Flushes the write buffer to disk */ -local int zip64FlushWriteBuffer OF((zip64_internal* zi)); -local int zip64FlushWriteBuffer(zip64_internal* zi) -{ - int err = ZIP_OK; - uInt written = 0; - uInt total_written = 0; - uInt write = 0; - uInt max_write = 0; - ZPOS64_T size_available = 0; - - if ((zi->ci.flag & 1) != 0) - { -#ifndef NOCRYPT -#ifdef HAVE_AES - if (zi->ci.method == AES_METHOD) - { - fcrypt_encrypt(zi->ci.buffered_data, zi->ci.pos_in_buffered_data, &zi->ci.aes_ctx); - } - else -#endif - { - uInt i; - int t; - for (i = 0;i < zi->ci.pos_in_buffered_data; i++) - zi->ci.buffered_data[i] = zencode(zi->ci.keys, zi->ci.pcrc_32_tab, zi->ci.buffered_data[i],t); - } -#endif - } - - write = zi->ci.pos_in_buffered_data; - - do - { - max_write = write; - - if (zi->disk_size > 0) - { - err = zipGetDiskSizeAvailable((zipFile)zi, &size_available); - if (err != ZIP_OK) - return err; - - if (size_available == 0) - { - err = zipGoToNextDisk((zipFile)zi); - if (err != ZIP_OK) - return err; - } - - if (size_available < (ZPOS64_T)max_write) - max_write = (uInt)size_available; - } - - written = ZWRITE64(zi->z_filefunc, zi->filestream, zi->ci.buffered_data + total_written, max_write); - - if (ZERROR64(zi->z_filefunc, zi->filestream)) - { - err = ZIP_ERRNO; - break; - } - - total_written += written; - write -= written; - } - while (write > 0); - - zi->ci.total_compressed += zi->ci.pos_in_buffered_data; - -#ifdef HAVE_BZIP2 - if (zi->ci.compression_method == Z_BZIP2ED) - { - zi->ci.total_uncompressed += zi->ci.bstream.total_in_lo32; - zi->ci.bstream.total_in_lo32 = 0; - zi->ci.bstream.total_in_hi32 = 0; - } - else -#endif - { - zi->ci.total_uncompressed += zi->ci.stream.total_in; - zi->ci.stream.total_in = 0; - } - - zi->ci.pos_in_buffered_data = 0; - - return err; -} - -extern int ZEXPORT zipWriteInFileInZip(zipFile file,const void* buf,unsigned int len) -{ - zip64_internal* zi; - int err = ZIP_OK; - - if (file == NULL) - return ZIP_PARAMERROR; - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 0) - return ZIP_PARAMERROR; - - zi->ci.crc32 = crc32(zi->ci.crc32, buf, (uInt)len); - -#ifdef HAVE_BZIP2 - if ((zi->ci.compression_method == Z_BZIP2ED) && (!zi->ci.raw)) - { - zi->ci.bstream.next_in = (void*)buf; - zi->ci.bstream.avail_in = len; - err = BZ_RUN_OK; - - while ((err == BZ_RUN_OK) && (zi->ci.bstream.avail_in > 0)) - { - if (zi->ci.bstream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; - } - else - { - uLong uTotalOutBefore_lo = zi->ci.bstream.total_out_lo32; - uLong uTotalOutBefore_hi = zi->ci.bstream.total_out_hi32; - - err = BZ2_bzCompress(&zi->ci.bstream, BZ_RUN); - - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.bstream.total_out_lo32 - uTotalOutBefore_lo); - } - } - - if (err == BZ_RUN_OK) - err = ZIP_OK; - } - else -#endif - { - zi->ci.stream.next_in = (Bytef*)buf; - zi->ci.stream.avail_in = len; - - while ((err == ZIP_OK) && (zi->ci.stream.avail_in > 0)) - { - if (zi->ci.stream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - } - - if (err != ZIP_OK) - break; - - if ((zi->ci.compression_method == Z_DEFLATED) && (!zi->ci.raw)) - { - uLong total_out_before = zi->ci.stream.total_out; - err = deflate(&zi->ci.stream, Z_NO_FLUSH); - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - total_out_before); - } - else - { - uInt copy_this,i; - if (zi->ci.stream.avail_in < zi->ci.stream.avail_out) - copy_this = zi->ci.stream.avail_in; - else - copy_this = zi->ci.stream.avail_out; - - for (i = 0; i < copy_this; i++) - *(((char*)zi->ci.stream.next_out)+i) = - *(((const char*)zi->ci.stream.next_in)+i); - - zi->ci.stream.avail_in -= copy_this; - zi->ci.stream.avail_out -= copy_this; - zi->ci.stream.next_in += copy_this; - zi->ci.stream.next_out += copy_this; - zi->ci.stream.total_in += copy_this; - zi->ci.stream.total_out += copy_this; - zi->ci.pos_in_buffered_data += copy_this; - } - } - } - - return err; -} - -extern int ZEXPORT zipCloseFileInZipRaw(zipFile file, uLong uncompressed_size, uLong crc32) -{ - return zipCloseFileInZipRaw64 (file, uncompressed_size, crc32); -} - -extern int ZEXPORT zipCloseFileInZipRaw64(zipFile file, ZPOS64_T uncompressed_size, uLong crc32) -{ - zip64_internal* zi; - ZPOS64_T compressed_size; - uLong invalidValue = 0xffffffff; - uLong i = 0; - short datasize = 0; - int err = ZIP_OK; - - if (file == NULL) - return ZIP_PARAMERROR; - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 0) - return ZIP_PARAMERROR; - zi->ci.stream.avail_in = 0; - - if (!zi->ci.raw) - { - if (zi->ci.compression_method == Z_DEFLATED) - { - while (err == ZIP_OK) - { - uLong total_out_before; - if (zi->ci.stream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - } - total_out_before = zi->ci.stream.total_out; - err = deflate(&zi->ci.stream, Z_FINISH); - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - total_out_before); - } - } - else if (zi->ci.compression_method == Z_BZIP2ED) - { -#ifdef HAVE_BZIP2 - err = BZ_FINISH_OK; - while (err == BZ_FINISH_OK) - { - uLong total_out_before; - if (zi->ci.bstream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; - } - total_out_before = zi->ci.bstream.total_out_lo32; - err = BZ2_bzCompress(&zi->ci.bstream, BZ_FINISH); - if (err == BZ_STREAM_END) - err = Z_STREAM_END; - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.bstream.total_out_lo32 - total_out_before); - } - - if (err == BZ_FINISH_OK) - err = ZIP_OK; -#endif - } - } - - if (err == Z_STREAM_END) - err = ZIP_OK; /* this is normal */ - - if ((zi->ci.pos_in_buffered_data>0) && (err == ZIP_OK)) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - } - -#ifdef HAVE_AES - if (zi->ci.method == AES_METHOD) - { - unsigned char authcode[AES_AUTHCODESIZE]; - - fcrypt_end(authcode, &zi->ci.aes_ctx); - - if (ZWRITE64(zi->z_filefunc, zi->filestream, authcode, AES_AUTHCODESIZE) != AES_AUTHCODESIZE) - err = ZIP_ERRNO; - } -#endif - - if (!zi->ci.raw) - { - if (zi->ci.compression_method == Z_DEFLATED) - { - int tmp_err = deflateEnd(&zi->ci.stream); - if (err == ZIP_OK) - err = tmp_err; - zi->ci.stream_initialised = 0; - } -#ifdef HAVE_BZIP2 - else if (zi->ci.compression_method == Z_BZIP2ED) - { - int tmperr = BZ2_bzCompressEnd(&zi->ci.bstream); - if (err == ZIP_OK) - err = tmperr; - zi->ci.stream_initialised = 0; - } -#endif - - crc32 = (uLong)zi->ci.crc32; - uncompressed_size = zi->ci.total_uncompressed; - } - - compressed_size = zi->ci.total_compressed; -#ifndef NOCRYPT - compressed_size += zi->ci.crypt_header_size; -#endif - - /* Update current item crc and sizes */ - if (compressed_size >= 0xffffffff || uncompressed_size >= 0xffffffff || zi->ci.pos_local_header >= 0xffffffff) - { - zip64local_putValue_inmemory(zi->ci.central_header+4, (uLong)45, 2); /* version made by */ - zip64local_putValue_inmemory(zi->ci.central_header+6, (uLong)45, 2); /* version needed */ - } - zip64local_putValue_inmemory(zi->ci.central_header+16, crc32, 4); /* crc */ - if (compressed_size >= 0xffffffff) - zip64local_putValue_inmemory(zi->ci.central_header+20, invalidValue, 4); /* compr size */ - else - zip64local_putValue_inmemory(zi->ci.central_header+20, compressed_size, 4); /* compr size */ - if (zi->ci.stream.data_type == Z_ASCII) - zip64local_putValue_inmemory(zi->ci.central_header+36, (uLong)Z_ASCII, 2); /* internal file attrib */ - if (uncompressed_size >= 0xffffffff) - zip64local_putValue_inmemory(zi->ci.central_header+24, invalidValue, 4); /* uncompr size */ - else - zip64local_putValue_inmemory(zi->ci.central_header+24, uncompressed_size, 4); /* uncompr size */ - - /* Add ZIP64 extra info field for uncompressed size */ - if (uncompressed_size >= 0xffffffff) - datasize += 8; - /* Add ZIP64 extra info field for compressed size */ - if (compressed_size >= 0xffffffff) - datasize += 8; - /* Add ZIP64 extra info field for relative offset to local file header of current file */ - if (zi->ci.pos_local_header >= 0xffffffff) - datasize += 8; - - /* Add Extra Information Header for 'ZIP64 information' */ - if (datasize > 0) - { - char* p = zi->ci.central_header + zi->ci.size_centralheader; - - if ((uLong)(datasize + 4) > zi->ci.size_centralextrafree) - return ZIP_BADZIPFILE; - - zip64local_putValue_inmemory(p, 0x0001, 2); - p += 2; - zip64local_putValue_inmemory(p, datasize, 2); - p += 2; - - if (uncompressed_size >= 0xffffffff) - { - zip64local_putValue_inmemory(p, uncompressed_size, 8); - p += 8; - } - if (compressed_size >= 0xffffffff) - { - zip64local_putValue_inmemory(p, compressed_size, 8); - p += 8; - } - if (zi->ci.pos_local_header >= 0xffffffff) - { - zip64local_putValue_inmemory(p, zi->ci.pos_local_header, 8); - p += 8; - } - - zi->ci.size_centralextrafree -= datasize + 4; - zi->ci.size_centralheader += datasize + 4; - zi->ci.size_centralextra += datasize + 4; - - zip64local_putValue_inmemory(zi->ci.central_header+30, (uLong)zi->ci.size_centralextra, 2); - } - -#ifdef HAVE_AES - /* Write the AES extended info */ - if (zi->ci.method == AES_METHOD) - { - char* p = zi->ci.central_header + zi->ci.size_centralheader; - - datasize = 7; - - if ((uLong)(datasize + 4) > zi->ci.size_centralextrafree) - return ZIP_BADZIPFILE; - - zip64local_putValue_inmemory(p, 0x9901, 2); - p += 2; - zip64local_putValue_inmemory(p, datasize, 2); - p += 2; - zip64local_putValue_inmemory(p, AES_VERSION, 2); - p += 2; - zip64local_putValue_inmemory(p, 'A', 1); - p += 1; - zip64local_putValue_inmemory(p, 'E', 1); - p += 1; - zip64local_putValue_inmemory(p, AES_ENCRYPTIONMODE, 1); - p += 1; - zip64local_putValue_inmemory(p, zi->ci.compression_method, 2); - p += 2; - - zi->ci.size_centralextrafree -= datasize + 4; - zi->ci.size_centralheader += datasize + 4; - zi->ci.size_centralextra += datasize + 4; - - zip64local_putValue_inmemory(zi->ci.central_header+30, (uLong)zi->ci.size_centralextra, 2); - } -#endif - /* Restore comment to correct position */ - for (i = 0; i < zi->ci.size_comment; i++) - zi->ci.central_header[zi->ci.size_centralheader+i] = - zi->ci.central_header[zi->ci.size_centralheader+zi->ci.size_centralextrafree+i]; - zi->ci.size_centralheader += zi->ci.size_comment; - - if (err == ZIP_OK) - err = add_data_in_datablock(&zi->central_dir, zi->ci.central_header, (uLong)zi->ci.size_centralheader); - - free(zi->ci.central_header); - - if (err == ZIP_OK) - { - /* Update the LocalFileHeader with the new values. */ - ZPOS64_T cur_pos_inzip = ZTELL64(zi->z_filefunc, zi->filestream); - uLong cur_number_disk = zi->number_disk; - - /* Local file header is stored on previous disk, switch to make edits */ - if (zi->ci.number_disk != cur_number_disk) - err = zipGoToSpecificDisk(file, zi->ci.number_disk, 1); - - if (ZSEEK64(zi->z_filefunc, zi->filestream, zi->ci.pos_local_header + 14, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = ZIP_ERRNO; - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream,crc32,4); /* crc 32, unknown */ - - if (uncompressed_size >= 0xffffffff || compressed_size >= 0xffffffff) - { - if (zi->ci.pos_zip64extrainfo > 0) - { - /* Update the size in the ZIP64 extended field. */ - if (ZSEEK64(zi->z_filefunc, zi->filestream, zi->ci.pos_zip64extrainfo + 4, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = ZIP_ERRNO; - - if (err == ZIP_OK) /* compressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, uncompressed_size, 8); - if (err == ZIP_OK) /* uncompressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, compressed_size, 8); - } - else - err = ZIP_BADZIPFILE; /* Caller passed zip64 = 0, so no room for zip64 info -> fatal */ - } - else - { - if (err == ZIP_OK) /* compressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream,compressed_size, 4); - if (err == ZIP_OK) /* uncompressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream,uncompressed_size, 4); - } - - /* Now switch back again to the disk we were on before */ - if (zi->ci.number_disk != cur_number_disk) - err = zipGoToSpecificDisk(file, cur_number_disk, 1); - - if (ZSEEK64(zi->z_filefunc, zi->filestream, cur_pos_inzip, ZLIB_FILEFUNC_SEEK_SET) != 0) - err = ZIP_ERRNO; - } - - zi->number_entry++; - zi->in_opened_file_inzip = 0; - - return err; -} - -extern int ZEXPORT zipCloseFileInZip(zipFile file) -{ - return zipCloseFileInZipRaw(file, 0, 0); -} - -extern int ZEXPORT zipClose(zipFile file, const char* global_comment) -{ - zip64_internal* zi; - int err = 0; - uLong size_centraldir = 0; - uInt size_global_comment = 0; - ZPOS64_T centraldir_pos_inzip; - ZPOS64_T pos = 0; - uLong write = 0; - - if (file == NULL) - return ZIP_PARAMERROR; - - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 1) - err = zipCloseFileInZip(file); - -#ifndef NO_ADDFILEINEXISTINGZIP - if (global_comment == NULL) - global_comment = zi->globalcomment; -#endif - - if (zi->filestream != zi->filestream_with_CD) - { - if (ZCLOSE64(zi->z_filefunc, zi->filestream) != 0) - if (err == ZIP_OK) - err = ZIP_ERRNO; - if (zi->disk_size > 0) - zi->number_disk_with_CD = zi->number_disk + 1; - zi->filestream = zi->filestream_with_CD; - } - - centraldir_pos_inzip = ZTELL64(zi->z_filefunc, zi->filestream); - - if (err == ZIP_OK) - { - linkedlist_datablock_internal* ldi = zi->central_dir.first_block; - while (ldi!= NULL) - { - if ((err == ZIP_OK) && (ldi->filled_in_this_block > 0)) - { - write = ZWRITE64(zi->z_filefunc, zi->filestream, ldi->data, ldi->filled_in_this_block); - if (write != ldi->filled_in_this_block) - err = ZIP_ERRNO; - } - - size_centraldir += ldi->filled_in_this_block; - ldi = ldi->next_datablock; - } - } - - free_linkedlist(&(zi->central_dir)); - - pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; - - /* Write the ZIP64 central directory header */ - if (pos >= 0xffffffff || zi->number_entry > 0xffff) - { - ZPOS64_T zip64eocd_pos_inzip = ZTELL64(zi->z_filefunc, zi->filestream); - uLong zip64datasize = 44; - - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)ZIP64ENDHEADERMAGIC, 4); - - /* size of this 'zip64 end of central directory' */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)zip64datasize, 8); - /* version made by */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)45, 2); - /* version needed */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)45, 2); - /* number of this disk */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_disk_with_CD, 4); - /* number of the disk with the start of the central directory */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_disk_with_CD, 4); - /* total number of entries in the central dir on this disk */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->number_entry, 8); - /* total number of entries in the central dir */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->number_entry, 8); - /* size of the central directory */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)size_centraldir, 8); - - if (err == ZIP_OK) - { - /* offset of start of central directory with respect to the starting disk number */ - ZPOS64_T pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)pos, 8); - } - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)ZIP64ENDLOCHEADERMAGIC, 4); - - /* number of the disk with the start of the central directory */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_disk_with_CD, 4); - /*relative offset to the Zip64EndOfCentralDirectory */ - if (err == ZIP_OK) - { - ZPOS64_T pos = zip64eocd_pos_inzip - zi->add_position_when_writting_offset; - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, pos, 8); - } - /* number of the disk with the start of the central directory */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_disk_with_CD+1, 4); - } - - /* Write the central directory header */ - - /* signature */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)ENDHEADERMAGIC, 4); - /* number of this disk */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_disk_with_CD, 2); - /* number of the disk with the start of the central directory */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_disk_with_CD, 2); - /* total number of entries in the central dir on this disk */ - if (err == ZIP_OK) - { - if (zi->number_entry >= 0xffff) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0xffff, 2); /* use value in ZIP64 record */ - else - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_entry, 2); - } - /* total number of entries in the central dir */ - if (err == ZIP_OK) - { - if (zi->number_entry >= 0xffff) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0xffff, 2); /* use value in ZIP64 record */ - else - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_entry, 2); - } - /* size of the central directory */ - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)size_centraldir,4); - /* offset of start of central directory with respect to the starting disk number */ - if (err == ZIP_OK) - { - ZPOS64_T pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; - if (pos >= 0xffffffff) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0xffffffff, 4); - else - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)pos, 4); - } - - /* Write global comment */ - - if (global_comment != NULL) - size_global_comment = (uInt)strlen(global_comment); - if (err == ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)size_global_comment, 2); - if (err == ZIP_OK && size_global_comment > 0) - { - if (ZWRITE64(zi->z_filefunc, zi->filestream, global_comment, size_global_comment) != size_global_comment) - err = ZIP_ERRNO; - } - - if ((ZCLOSE64(zi->z_filefunc, zi->filestream) != 0) && (err == ZIP_OK)) - err = ZIP_ERRNO; - -#ifndef NO_ADDFILEINEXISTINGZIP - TRYFREE(zi->globalcomment); -#endif - TRYFREE(zi); - - return err; -} - -#pragma GCC diagnostic pop \ No newline at end of file diff --git a/include/minizip/zip.h b/include/minizip/zip.h deleted file mode 100644 index 3f3a30b..0000000 --- a/include/minizip/zip.h +++ /dev/null @@ -1,200 +0,0 @@ -/* zip.h -- IO on .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 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 _ZIP_H -#define _ZIP_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(STRICTZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagzipFile__ { int unused; } zipFile__; -typedef zipFile__ *zipFile; -#else -typedef voidp zipFile; -#endif - -#define ZIP_OK (0) -#define ZIP_EOF (0) -#define ZIP_ERRNO (Z_ERRNO) -#define ZIP_PARAMERROR (-102) -#define ZIP_BADZIPFILE (-103) -#define ZIP_INTERNALERROR (-104) - -#ifndef DEF_MEM_LEVEL -# if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -# else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -# endif -#endif -/* default memLevel */ - -/* tm_zip contain date/time info */ -typedef struct tm_zip_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_zip; - -typedef struct -{ - tm_zip tmz_date; /* date in understandable format */ - uLong dosDate; /* if dos_date == 0, tmu_date is used */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ -} zip_fileinfo; - -typedef const char* zipcharpc; - -#define APPEND_STATUS_CREATE (0) -#define APPEND_STATUS_CREATEAFTER (1) -#define APPEND_STATUS_ADDINZIP (2) - -/***************************************************************************/ -/* Writing a zip file */ - -extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append)); -extern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append)); -/* Create a zipfile. - - pathname should contain the full pathname (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 - return zipFile handle if no error - - If the file pathname exist and append == APPEND_STATUS_CREATEAFTER, the zip - will be created at the end of the file. (useful if the file contain a self extractor code) - If the file pathname exist and append == APPEND_STATUS_ADDINZIP, we will add files in existing - zip (be sure you don't add file that doesn't exist) - - NOTE: There is no delete function into a zipfile. If you want delete file into a zipfile, - you must open a zipfile, and create another. Of course, you can use RAW reading and writing to copy - the file you did not want delete. */ - -extern zipFile ZEXPORT zipOpen2 OF((const char *pathname, int append, zipcharpc* globalcomment, - zlib_filefunc_def* pzlib_filefunc_def)); - -extern zipFile ZEXPORT zipOpen2_64 OF((const void *pathname, int append, zipcharpc* globalcomment, - zlib_filefunc64_def* pzlib_filefunc_def)); - -extern zipFile ZEXPORT zipOpen3 OF((const char *pathname, int append, ZPOS64_T disk_size, - zipcharpc* globalcomment, zlib_filefunc_def* pzlib_filefunc_def)); -/* Same as zipOpen2 but allows specification of spanned zip size */ - -extern zipFile ZEXPORT zipOpen3_64 OF((const void *pathname, int append, ZPOS64_T disk_size, - zipcharpc* globalcomment, zlib_filefunc64_def* pzlib_filefunc_def)); - -extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level)); -/* Open a file in the ZIP for writing. - - filename : the filename in zip (if NULL, '-' without quote will be used - *zipfi contain supplemental information - extrafield_local buffer to store the local header extra field data, can be NULL - size_extrafield_local size of extrafield_local buffer - extrafield_global buffer to store the global header extra field data, can be NULL - size_extrafield_global size of extrafield_local buffer - comment buffer for comment string - method contain the compression method (0 for store, Z_DEFLATED for deflate) - level contain the level of compression (can be Z_DEFAULT_COMPRESSION) - zip64 is set to 1 if a zip64 extended information block should be added to the local file header. - this MUST be '1' if the uncompressed size is >= 0xffffffff. */ - -extern int ZEXPORT zipOpenNewFileInZip64 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int zip64)); -/* Same as zipOpenNewFileInZip with zip64 support */ - -extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int raw)); -/* Same as zipOpenNewFileInZip, except if raw=1, we write raw file */ - -extern int ZEXPORT zipOpenNewFileInZip2_64 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int raw, int zip64)); -/* Same as zipOpenNewFileInZip3 with zip64 support */ - -extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, - int strategy, const char* password, uLong crcForCrypting)); -/* Same as zipOpenNewFileInZip2, except - windowBits, memLevel, strategy : see parameter strategy in deflateInit2 - password : crypting password (NULL for no crypting) - crcForCrypting : crc of file to compress (needed for crypting) */ - -extern int ZEXPORT zipOpenNewFileInZip3_64 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, - int strategy, const char* password, uLong crcForCrypting, int zip64)); -/* Same as zipOpenNewFileInZip3 with zip64 support */ - -extern int ZEXPORT zipOpenNewFileInZip4 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, - int strategy, const char* password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase)); -/* Same as zipOpenNewFileInZip3 except versionMadeBy & flag fields */ - -extern int ZEXPORT zipOpenNewFileInZip4_64 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, - uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, - int strategy, const char* password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase, int zip64)); -/* Same as zipOpenNewFileInZip4 with zip64 support */ - -extern int ZEXPORT zipWriteInFileInZip OF((zipFile file, const void* buf, unsigned len)); -/* Write data in the zipfile */ - -extern int ZEXPORT zipCloseFileInZip OF((zipFile file)); -/* Close the current file in the zipfile */ - -extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file, uLong uncompressed_size, uLong crc32)); -extern int ZEXPORT zipCloseFileInZipRaw64 OF((zipFile file, ZPOS64_T uncompressed_size, uLong crc32)); -/* Close the current file in the zipfile, for file opened with parameter raw=1 in zipOpenNewFileInZip2 - uncompressed_size and crc32 are value for the uncompressed size */ - -extern int ZEXPORT zipClose OF((zipFile file, const char* global_comment)); -/* Close the zipfile */ - -/***************************************************************************/ - -#ifdef __cplusplus -} -#endif - -#endif /* _ZIP_H */ diff --git a/include/status_bar.h b/include/status_bar.h deleted file mode 100644 index 810acc2..0000000 --- a/include/status_bar.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NX_SHELL_STATUS_BAR_H -#define NX_SHELL_STATUS_BAR_H - -void StatusBar_DisplayTime(void); - -#endif \ No newline at end of file diff --git a/include/touch_helper.h b/include/touch_helper.h deleted file mode 100644 index b6ee2eb..0000000 --- a/include/touch_helper.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef NX_SHELL_TOUCH_HELPER_H -#define NX_SHELL_TOUCH_HELPER_H - -#include -#include - -#define tapped_inside(touchInfo, x1, y1, x2, y2) (touchInfo.firstTouch.px >= x1 && touchInfo.firstTouch.px <= x2 && touchInfo.firstTouch.py >= y1 && touchInfo.firstTouch.py <= y2) -#define tapped_outside(touchInfo, x1, y1, x2, y2) (touchInfo.firstTouch.px < x1 || touchInfo.firstTouch.px > x2 || touchInfo.firstTouch.py < y1 || touchInfo.firstTouch.py > y2) - -typedef enum TouchState -{ - TouchNone, - TouchStart, - TouchMoving, - TouchEnded -} TouchState; - -typedef enum TapType -{ - TapNone, - TapShort, - TapLong -} TapType; - -typedef struct TouchInfo -{ - TouchState state; - touchPosition firstTouch; - touchPosition prevTouch; - TapType tapType; - u64 touchStart; -} TouchInfo; - -void Touch_Init(TouchInfo * touchInfo); -void Touch_Process(TouchInfo * touchInfo); - -#endif \ No newline at end of file diff --git a/source/BLUnZip.cpp b/source/BLUnZip.cpp deleted file mode 100644 index 1e1a3e6..0000000 --- a/source/BLUnZip.cpp +++ /dev/null @@ -1,300 +0,0 @@ -/* BLUnZip - * C++ class for doing basic zip extraction to strings - * Scott Lawrence yorgle@gmail.com - * - * This code is HEAVILY based on the "minizip" code included with zlib - * also available here: http://www.winimage.com/zLibDll/minizip.html - * - * v1.0 2013-June-05 - Initial release - */ - -/* This code is provided under an MIT license: - -The MIT License (MIT) - -Copyright (c) 2013 Scott Lawrence - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -*/ - - -#include - -extern "C" -{ -#include -#include -#include -#include -#include -#include - -#ifdef _WIN32 -# include -# include -#else -# include -# include -#endif - - -#include "minizip/zip.h" -#include "minizip/unzip.h" - -#define CASESENSITIVITY (0) -#define WRITEBUFFERSIZE (8192) -#define MAXFILENAME (256) - -#ifdef _WIN32 -#define USEWIN32IOAPI -#include "minizip/iowin32.h" -#endif -} - - -#include "BLUnZip.h" - - -BLUnZip::BLUnZip( std::string _filename ) - : filename( _filename ) - , valid( false ) -{ - // make sure it exists - //if( !ZipFileExists( (char *) _filename.c_str() )) return; - - // open it - this->zf = this->Open( _filename ); //, ZipFlag_Append ); - if( !this->zf ) return; - - // we're AOK - valid = true; -} - -void BLUnZip::Close( void ) -{ - unzClose( this->zf ); - this->zf = NULL; - this->valid = false; -} - -zipFile BLUnZip::Open( std::string zipfilename ) -{ - char filename_try[MAXFILENAME+16] = ""; - zipFile zf = NULL; - - -# ifdef USEWIN32IOAPI - zlib_filefunc64_def ffunc; -# endif - - strncpy(filename_try, zipfilename.c_str(),MAXFILENAME-1); - /* strncpy doesnt append the trailing NULL, of the string is too long. */ - filename_try[ MAXFILENAME ] = '\0'; - -# ifdef USEWIN32IOAPI - fill_win32_filefunc64A(&ffunc); - zf = unzOpen2_64(zipfilename.c_str(),&ffunc); -# else - zf = unzOpen64(zipfilename.c_str()); -# endif - if (zf==NULL) - { - strcat(filename_try,".zip"); -# ifdef USEWIN32IOAPI - zf = unzOpen2_64(filename_try,&ffunc); -# else - zf = unzOpen64(filename_try); -# endif - } - - return zf; - -} - -BLUnZip::~BLUnZip( void ) -{ - this->Close(); -} - - -//////////////////////////////////////////////////////////////////////////////// - -int BLUnZip::ItemCount( void ) -{ - int i = 0; - unzGoToFirstFile( zf ); - - do { - i++; - } while( (unzGoToNextFile( zf )) == UNZ_OK ); - - return i; -} - -void BLUnZip::List( void ) -{ - int i = 0; - - std::cout << "Listing:" << std::endl; - for( i=0 ; iItemCount() ; i++ ) { - std::string n = this->NameOfItem( i ); - long sz = this->SizeOfItem( i ); - - std::cout << " " << i << ": " << n << " " << sz << std::endl; - - } -} - -int BLUnZip::IndexOfItem( std::string itemName ) -{ - int i = 0; - - for( i=0 ; iItemCount() ; i++ ) { - std::string n = this->NameOfItem( i ); - - if( !n.compare( itemName )) return i; - } - return -1; -} - -void BLUnZip::ListOfItems( std::vector& listing ) -{ - unzGoToFirstFile( zf ); - - listing.clear(); - do { - char filename_inzip[256]; - unz_file_info64 file_info; - int err; - - err = unzGetCurrentFileInfo64(zf, &file_info, - filename_inzip,sizeof(filename_inzip), - //buf, bufsz, - NULL,0,NULL,0); - if (err!=UNZ_OK) return; - - std::string s( filename_inzip ); - listing.push_back( s ); - } while( (unzGoToNextFile( zf )) == UNZ_OK ); -} - -std::string BLUnZip::NameOfItem( int idx ) -{ - std::string ret( "" ); - int i = 0; - unzGoToFirstFile( zf ); - - do { - char filename_inzip[256]; - unz_file_info64 file_info; - int err; - - err = unzGetCurrentFileInfo64(zf,&file_info, - filename_inzip,sizeof(filename_inzip), - //buf, bufsz, - NULL,0,NULL,0); - if (err!=UNZ_OK) - { - return ret; - } - if( i == idx ) { - ret.assign( filename_inzip ); - return ret; - } - i++; - } while( (unzGoToNextFile( zf )) == UNZ_OK ); - - return ret; -} - -long BLUnZip::SizeOfItem( int idx ) -{ - int i = 0; - unzGoToFirstFile( this->zf ); - - do { - char filename_inzip[256]; - unz_file_info64 file_info; - int err; - - err = unzGetCurrentFileInfo64(this->zf,&file_info, - filename_inzip,sizeof(filename_inzip), - NULL,0,NULL,0); - if (err!=UNZ_OK) - { - return 0; - } - if( i == idx ) { - return file_info.uncompressed_size; - } - i++; - } while( (unzGoToNextFile( this->zf )) == UNZ_OK ); - - return 0; -} - - -//////////////////////////////////////////////////////////////////////////////// -// get the content to RAM -int BLUnZip::ExtractToRAM( int idx, char * buf, long bufsz, std::string pw ) -{ - const char * password = NULL; // TODO: password! - int i = 0; - int err = 0; - - if( !buf ) return -1; - buf[0] = '\0'; - - if( pw.compare( "" ) ) { - password = pw.c_str(); - } - - unzGoToFirstFile( this->zf ); - - do { - if( i == idx ) { - //err = unzOpenCurrentFile( this->zf ); - err = unzOpenCurrentFilePassword(this->zf,password); - err = unzReadCurrentFile(this->zf,buf,bufsz); - unzCloseCurrentFile( this->zf ); - return err; - } - i++; - } while( (unzGoToNextFile( this->zf )) == UNZ_OK ); - - return 0; -} - -std::string BLUnZip::ExtractToString( int idx, std::string password ) -{ - long sz = this->SizeOfItem( idx ); - if( sz == 0 ) return ""; - - sz++; // for null - sz *= sizeof( char ); - char * buf = (char *)malloc( sz ); - - this->ExtractToRAM( idx, buf, sz, password ); - buf[ sz-1 ] = '\0'; // force. - - std::string ret( buf ); - return ret; -} - diff --git a/source/BLZip.cpp b/source/BLZip.cpp deleted file mode 100644 index 6001c34..0000000 --- a/source/BLZip.cpp +++ /dev/null @@ -1,300 +0,0 @@ -/* BLZip - * C++ class for doing basic zip compression - * Scott Lawrence yorgle@gmail.com - * - * This code is HEAVILY based on the "minizip" code included with zlib - * also available here: http://www.winimage.com/zLibDll/minizip.html - * - * v1.0 2013-June-05 - Initial release - */ - -/* This code is provided under an MIT license: - -The MIT License (MIT) - -Copyright (c) 2013 Scott Lawrence - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -*/ - - -#include - -extern "C" -{ -#include -#include -#include -#include -#include -#include - -#ifdef _WIN32 -# include -# include -#else -# include -# include -#endif - - -#include "minizip/zip.h" -#include "minizip/unzip.h" - -#define CASESENSITIVITY (0) -#define WRITEBUFFERSIZE (8192) -#define MAXFILENAME (256) - -#ifdef _WIN32 -#define USEWIN32IOAPI -#include "minizip/iowin32.h" -#endif -} - -#include "BLZip.h" - - -BLZip::BLZip( std::string _filename ) - : filename( _filename ) - , valid( false ) -{ - // make sure it exists - //if( !ZipFileExists( (char *) _filename.c_str() )) return; - - // open it - this->zf = this->Open( _filename ); //, ZipFlag_Append ); - if( !this->zf ) return; - - // we're AOK - valid = true; -} - -void BLZip::Close( void ) -{ - zipClose( this->zf, NULL ); - this->zf = NULL; - this->valid = false; -} - - -#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__)) - #ifndef __USE_FILE_OFFSET64 - #define __USE_FILE_OFFSET64 - #endif - #ifndef __USE_LARGEFILE64 - #define __USE_LARGEFILE64 - #endif - #ifndef _LARGEFILE64_SOURCE - #define _LARGEFILE64_SOURCE - #endif - #ifndef _FILE_OFFSET_BIT - #define _FILE_OFFSET_BIT 64 - #endif -#endif - -#ifdef __APPLE__ -// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions -#define FOPEN_FUNC(filename, mode) fopen(filename, mode) -#define FTELLO_FUNC(stream) ftello(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) -#else -#define FOPEN_FUNC(filename, mode) fopen64(filename, mode) -#define FTELLO_FUNC(stream) ftello64(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) -#endif - -/* calculate the CRC32 of a file, - because to encrypt a file, we need known the CRC32 of the file before */ -int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigned long* result_crc) -{ - unsigned long calculate_crc=0; - int err=ZIP_OK; - FILE * fin = FOPEN_FUNC(filenameinzip,"rb"); - - unsigned long size_read = 0; - unsigned long total_read = 0; - if (fin==NULL) - { - err = ZIP_ERRNO; - } - - if (err == ZIP_OK) - do - { - err = ZIP_OK; - size_read = (int)fread(buf,1,size_buf,fin); - if (size_read < size_buf) - if (feof(fin)==0) - { - printf("error in reading %s\n",filenameinzip); - err = ZIP_ERRNO; - } - - if (size_read>0) - calculate_crc = crc32(calculate_crc,(const Bytef *)buf,size_read); - total_read += size_read; - - } while ((err == ZIP_OK) && (size_read>0)); - - if (fin) - fclose(fin); - - *result_crc=calculate_crc; - return err; -} - -int isLargeFile(const char* filename) -{ - int largeFile = 0; - ZPOS64_T pos = 0; - FILE* pFile = FOPEN_FUNC(filename, "rb"); - - if(pFile != NULL) - { - int n = FSEEKO_FUNC(pFile, 0, SEEK_END); - pos = FTELLO_FUNC(pFile); - - if(pos >= 0xffffffff) - largeFile = 1; - - fclose(pFile); - } - - return largeFile; -} - - -zipFile BLZip::Open( std::string zipfilename ) -{ - zipFile zf = NULL; - int fileExists = 0; /*check_exist_file( zipfilename.c_str() ); */ - int creat = 0; - int err = ZIP_OK; - int flags = ZipFlag_Overwrite; - - /* open the zip file for output */ - if( fileExists ) { - creat = (flags & ZipFlag_Overwrite)? APPEND_STATUS_CREATE : APPEND_STATUS_ADDINZIP; - } else { - creat = APPEND_STATUS_CREATE; - } - zf = zipOpen64( zipfilename.c_str(), creat ); - if ( err != ZIP_OK ) return zf; - - return zf; -} - -BLZip::~BLZip( void ) -{ - this->Close(); -} - - - -int BLZip::Add( std::string contentPath, std::string zipPath, int flags ) -{ - int compressLevel = 0; - int zip64 = 0; - char * password = NULL; - zip_fileinfo zi; - FILE * fin = NULL; - int size_read; - int size_buf=0; - void* buf=NULL; - int err; - unsigned long crcFile=0; - - if( !this->zf ) return ZIP_PARAMERROR; - - size_buf = WRITEBUFFERSIZE; - buf = (void*)malloc(size_buf); - if (buf==NULL) - { - printf("Error allocating memory\n"); - return ZIP_INTERNALERROR; - } - - if( !zipPath.compare( "" ) ) { - zipPath.assign( contentPath ); - } - - if( flags & ZipFlag_Faster ) compressLevel = 1; - if( flags & ZipFlag_Better ) compressLevel = 9; - - err = getFileCrc( contentPath.c_str(), buf, size_buf, &crcFile ); - zip64 = isLargeFile( contentPath.c_str() ); - - err = zipOpenNewFileInZip3_64(this->zf,zipPath.c_str(),&zi, - NULL,0,NULL,0,NULL /* comment*/, - (compressLevel != 0) ? Z_DEFLATED : 0, - compressLevel,0, - /* -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, */ - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - password,crcFile, zip64); - - if (err != ZIP_OK) - printf("error in opening %s in zipfile\n", contentPath.c_str() ); - else - { - fin = FOPEN_FUNC( (char *)contentPath.c_str(), "rb" ); - if (fin==NULL) - { - err=ZIP_ERRNO; - printf("error in opening %s for reading\n", contentPath.c_str()); - } - } - - if (err == ZIP_OK) - do - { - err = ZIP_OK; - size_read = (int)fread(buf,1,size_buf,fin); - if (size_read < size_buf) - if (feof(fin)==0) - { - printf("error in reading %s\n", contentPath.c_str() ); - err = ZIP_ERRNO; - } - - if (size_read>0) - { - err = zipWriteInFileInZip (this->zf,buf,size_read); - if (err<0) - { - printf("error in writing %s in the zipfile\n", contentPath.c_str() ); - } - - } - } while ((err == ZIP_OK) && (size_read>0)); - - if (fin) - fclose(fin); - - /* and close the file */ - if( err == ZIP_OK ) { - err = zipCloseFileInZip(this->zf); - } - - free( buf ); - - return ZIP_OK; -} - - diff --git a/source/menu_book_reader/BookReader.cpp b/source/BookReader.cpp similarity index 89% rename from source/menu_book_reader/BookReader.cpp rename to source/BookReader.cpp index 9fe7b25..6d6357c 100644 --- a/source/menu_book_reader/BookReader.cpp +++ b/source/BookReader.cpp @@ -3,8 +3,8 @@ extern "C" { #include "SDL_helper.h" -#include "status_bar.h" -#include "common.h" +//#include "status_bar.h" +//#include "common.h" //#include "config.h" } @@ -17,7 +17,8 @@ static inline void FreeTextureIfNeeded(SDL_Texture **texture) { } } -BookReader::BookReader(const char *path) { +BookReader::BookReader(SDL_Renderer *renderer, const char *path) { + RENDERER = renderer; if (ctx == NULL) { ctx = fz_new_context(NULL, NULL, 128 << 10); fz_register_document_handlers(ctx); @@ -29,7 +30,7 @@ BookReader::BookReader(const char *path) { pages_count = fz_count_pages(ctx, doc); SDL_Rect viewport; - SDL_RenderGetViewport(RENDERER, &viewport); + SDL_RenderGetViewport(renderer, &viewport); screen_bounds = fz_make_rect(0, 0, viewport.w, viewport.h); load_page(0); @@ -78,7 +79,7 @@ void BookReader::reset_page() { set_zoom(min_zoom); } -void BookReader::draw() { +void BookReader::draw(SDL_Surface *window_surface, TTF_Font *font) { float w = page_bounds.x1 * zoom, h = page_bounds.y1 * zoom; SDL_Rect rect; @@ -97,14 +98,14 @@ void BookReader::draw() { sprintf(title, "%i/%i, %.2f%%", current_page + 1, pages_count, zoom * 100); int title_width = 0, title_height = 0; - TTF_SizeText(Roboto, title, &title_width, &title_height); + TTF_SizeText(font, title, &title_width, &title_height); SDL_Color color = STATUS_BAR_LIGHT; SDL_DrawRect(RENDERER, 0, 0, 1280, 40, SDL_MakeColour(color.r, color.g, color.b , 128)); - SDL_DrawText(Roboto, (screen_bounds.x1 - title_width) / 2, (44 - title_height) / 2, WHITE, title); + SDL_DrawText(window_surface, font, (screen_bounds.x1 - title_width) / 2, (44 - title_height) / 2, WHITE, title); - StatusBar_DisplayTime(); + //StatusBar_DisplayTime(); } SDL_RenderPresent(RENDERER); diff --git a/source/menu_book_reader/BookReader.hpp b/source/BookReader.hpp similarity index 75% rename from source/menu_book_reader/BookReader.hpp rename to source/BookReader.hpp index 61392f1..20a2266 100644 --- a/source/menu_book_reader/BookReader.hpp +++ b/source/BookReader.hpp @@ -1,13 +1,15 @@ -#ifndef NX_SHELL_BOOK_READER_HPP -#define NX_SHELL_BOOK_READER_HPP +#ifndef EBOOK_READER_BOOK_READER_HPP +#define EBOOK_READER_BOOK_READER_HPP #include +#include +#include struct SDL_Texture; class BookReader { public: - BookReader(const char *path); + BookReader(SDL_Renderer *renderer, const char *path); ~BookReader(); void previous_page(); @@ -19,7 +21,7 @@ public: void move_page_left(); void move_page_right(); void reset_page(); - void draw(); + void draw(SDL_Surface *window_surface, TTF_Font *font); private: void load_page(int num); @@ -34,7 +36,8 @@ private: fz_point page_center = fz_make_point(0, 0); SDL_Texture *page_texture = NULL; - + SDL_Renderer *RENDERER = NULL; + int current_page = -1, pages_count = 0; float min_zoom = 1, max_zoom = 1, zoom = 1; diff --git a/source/SDL_helper.c b/source/SDL_helper.c index 5538a51..6615e39 100644 --- a/source/SDL_helper.c +++ b/source/SDL_helper.c @@ -1,4 +1,3 @@ -#include "common.h" #include "SDL_helper.h" void SDL_ClearScreen(SDL_Renderer *renderer, SDL_Color colour) @@ -11,8 +10,8 @@ void SDL_DrawRect(SDL_Renderer *renderer, int x, int y, int w, int h, SDL_Color { SDL_Rect rect; rect.x = x; rect.y = y; rect.w = w; rect.h = h; - SDL_SetRenderDrawColor(RENDERER, colour.r, colour.g, colour.b, colour.a); - SDL_RenderFillRect(RENDERER, &rect); + SDL_SetRenderDrawColor(renderer, colour.r, colour.g, colour.b, colour.a); + SDL_RenderFillRect(renderer, &rect); } void SDL_DrawCircle(SDL_Renderer *renderer, int x, int y, int r, SDL_Color colour) @@ -21,22 +20,22 @@ void SDL_DrawCircle(SDL_Renderer *renderer, int x, int y, int r, SDL_Color colou return; } -void SDL_DrawText(TTF_Font *font, int x, int y, SDL_Color colour, const char *text) +void SDL_DrawText(SDL_Surface* window_surface, TTF_Font *font, int x, int y, SDL_Color colour, const char *text) { SDL_Surface *surface = TTF_RenderText_Blended_Wrapped(font, text, colour, 1280); SDL_SetSurfaceAlphaMod(surface, colour.a); SDL_Rect position = {x, y, surface->w, surface->h}; - SDL_BlitSurface(surface, NULL, WINDOW_SURFACE, &position); + SDL_BlitSurface(surface, NULL, window_surface, &position); SDL_FreeSurface(surface); } -void SDL_DrawTextf(TTF_Font *font, int x, int y, SDL_Color colour, const char* text, ...) +void SDL_DrawTextf(SDL_Surface* window_surface, TTF_Font *font, int x, int y, SDL_Color colour, const char* text, ...) { char buffer[256]; va_list args; va_start(args, text); vsnprintf(buffer, 256, text, args); - SDL_DrawText(font, x, y, colour, buffer); + SDL_DrawText(window_surface, font, x, y, colour, buffer); va_end(args); } diff --git a/source/fs.c b/source/fs.c deleted file mode 100644 index 89a5f16..0000000 --- a/source/fs.c +++ /dev/null @@ -1,99 +0,0 @@ -#include -#include -#include - -#include "fs.h" - -int FS_MakeDir(const char *path) -{ - if (!path) - return -1; - - return mkdir(path, 0777); -} - -int FS_RecursiveMakeDir(const char * dir) -{ - int ret = 0; - char buf[256]; - char *p = NULL; - size_t len; - - snprintf(buf, sizeof(buf), "%s",dir); - len = strlen(buf); - - if (buf[len - 1] == '/') - buf[len - 1] = 0; - - for (p = buf + 1; *p; p++) - { - if (*p == '/') - { - *p = 0; - - ret = FS_MakeDir(buf); - - *p = '/'; - } - - ret = FS_MakeDir(buf); - } - - return ret; -} - -bool FS_FileExists(const char *path) -{ - FILE *temp = fopen(path, "r"); - - if (temp == NULL) - return false; - - fclose(temp); - return true; -} - -bool FS_DirExists(const char *path) -{ - struct stat info; - - if (stat( path, &info ) != 0) - return false; - else if (info.st_mode & S_IFDIR) - return true; - else - return false; -} - -const char *FS_GetFileExt(const char *filename) -{ - const char *dot = strrchr(filename, '.'); - - if (!dot || dot == filename) - return ""; - - return dot + 1; -} - -char *FS_GetFileModifiedTime(const char *filename) -{ - struct stat attr; - stat(filename, &attr); - - return ctime(&attr.st_mtime); -} - -Result FS_GetFileSize(const char *path, u64 *size) -{ - FsFile file; - Result ret = 0; - - if (R_FAILED(ret = fsFsOpenFile(&fs, path, FS_OPEN_READ, &file))) - return ret; - - if (R_FAILED(ret = fsFileGetSize(&file, size))) - return ret; - - fsFileClose(&file); - return 0; -} diff --git a/source/main.cpp b/source/main.cpp index 8d02fc5..a6feb8f 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -1,108 +1,73 @@ -#include #include #include -#include #include #include -#include "fs.h" -#include "common.h" +//#include "menu_book_reader.h" -#include "menu_book_reader.h" +int main(int argc, char *argv[]) { + SDL_Event event; + SDL_Window *window; + SDL_Renderer *renderer; + int done = 0; -using namespace std; + //romfsInit(); -static void Term_Services(void) { - - TTF_CloseFont(Roboto_OSK); - TTF_CloseFont(Roboto_small); - TTF_CloseFont(Roboto); - TTF_CloseFont(Roboto_large); - TTF_Quit(); - - Mix_CloseAudio(); - Mix_Quit(); - - IMG_Quit(); - - SDL_DestroyRenderer(RENDERER); - SDL_FreeSurface(WINDOW_SURFACE); - SDL_DestroyWindow(WINDOW); - - //#ifdef DEBUG - socketExit(); - //#endif - - timeExit(); - SDL_Quit(); - romfsExit(); -} - -static void Init_Services(void) { - romfsInit(); - // mandatory at least on switch, else gfx is not properly closed + // mandatory at least on switch, else gfx is not properly closed if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) { SDL_Log("SDL_Init: %s\n", SDL_GetError()); - Term_Services(); + return -1; } - timeInitialize(); - /*#ifdef DEBUG - socketInitializeDefault();*/ - nxlinkStdio(); - //#endif - - printf("Init Services"); - - //SDL_CreateWindowAndRenderer(1280, 720, 0, &WINDOW, &RENDERER); - - WINDOW = SDL_CreateWindow("sdl2_gles2", 0, 0, 1920, 1080, 0); - if (!WINDOW) { + // create an SDL window (OpenGL ES2 always enabled) + // when SDL_FULLSCREEN flag is not set, viewport is automatically handled by SDL (use SDL_SetWindowSize to "change resolution") + // available switch SDL2 video modes : + // 1920 x 1080 @ 32 bpp (SDL_PIXELFORMAT_RGBA8888) + // 1280 x 720 @ 32 bpp (SDL_PIXELFORMAT_RGBA8888) + window = SDL_CreateWindow("sdl2_gles2", 0, 0, 1920, 1080, 0); + if (!window) { SDL_Log("SDL_CreateWindow: %s\n", SDL_GetError()); SDL_Quit(); - Term_Services(); + return -1; } - WINDOW_SURFACE = SDL_GetWindowSurface(WINDOW); - - RENDERER = SDL_CreateRenderer(WINDOW, 0, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); - if (!RENDERER) { + // create a renderer (OpenGL ES2) + renderer = SDL_CreateRenderer(window, 0, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); + if (!renderer) { SDL_Log("SDL_CreateRenderer: %s\n", SDL_GetError()); SDL_Quit(); - Term_Services(); + return -1; } - /*SDL_SetRenderDrawBlendMode(RENDERER, SDL_BLENDMODE_BLEND); + /*TTF_Init(); + TTF_Font *arialUnicode = TTF_OpenFont("RomFs:/arial-unicode-ms.ttf", 30); + if (!arialUnicode) { + SDL_Quit(); + return -1; + }*/ - SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "2"); + // open CONTROLLER_PLAYER_1 and CONTROLLER_PLAYER_2 + // when railed, both joycons are mapped to joystick #0, + // else joycons are individually mapped to joystick #0, joystick #1, ... + // https://github.com/devkitPro/SDL/blob/switch-sdl2/src/joystick/switch/SDL_sysjoystick.c#L45 + for (int i = 0; i < 2; i++) { + if (SDL_JoystickOpen(i) == NULL) { + SDL_Log("SDL_JoystickOpen: %s\n", SDL_GetError()); + SDL_Quit(); + return -1; + } + } - IMG_Init(IMG_INIT_PNG | IMG_INIT_JPG); + //Menu_OpenBook("/switch/eBookReader/books/test.epub"); - Mix_Init(MIX_INIT_FLAC | MIX_INIT_MOD | MIX_INIT_MP3 | MIX_INIT_OGG); - Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 2, 4096);*/ + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(window); - TTF_Init(); - Roboto_large = TTF_OpenFont("romfs:/arial-unicode-ms.tff", 30); - Roboto = TTF_OpenFont("romfs:/arial-unicode-ms.tff", 25); - Roboto_small = TTF_OpenFont("romfs:/arial-unicode-ms.tff", 20); - Roboto_OSK = TTF_OpenFont("romfs:/arial-unicode-ms.tff", 50); - if (!Roboto_large || !Roboto || !Roboto_small || !Roboto_OSK) - Term_Services(); + //TTF_CloseFont(arialUnicode); + //TTF_Quit(); + //romfsExit(); + SDL_Quit(); - FS_RecursiveMakeDir("/switch/eBookReader/"); - FS_RecursiveMakeDir("/switch/eBookReader/books"); + return 0; } - -int main(int argc, char **argv) { - //Init_Services(); - printf("AFTER INIT"); - - /*if (setjmp(exitJmp)) { - Term_Services(); - return 0; - } - - //Menu_OpenBook("/switch/eBookReader/books/test.epub"); - Term_Services();*/ -} \ No newline at end of file diff --git a/source/menu_book_reader/menu_book_reader.cpp b/source/menu_book_reader.cpp similarity index 73% rename from source/menu_book_reader/menu_book_reader.cpp rename to source/menu_book_reader.cpp index 2fdb742..05d13aa 100644 --- a/source/menu_book_reader/menu_book_reader.cpp +++ b/source/menu_book_reader.cpp @@ -1,23 +1,25 @@ extern "C" { #include "menu_book_reader.h" - #include "touch_helper.h" + //#include "touch_helper.h" } #include "BookReader.hpp" +#include +#include -void Menu_OpenBook(char *path) +void Menu_OpenBook(SDL_Renderer *renderer, SDL_Surface* window_surface, TTF_Font *font, char *path) { - BookReader *reader = new BookReader(path); + BookReader *reader = new BookReader(renderer, path); - TouchInfo touchInfo; - Touch_Init(&touchInfo); + /*TouchInfo touchInfo; + Touch_Init(&touchInfo);*/ while(appletMainLoop()) { - reader->draw(); + reader->draw(window_surface, font); hidScanInput(); - Touch_Process(&touchInfo); + //Touch_Process(&touchInfo); u64 kDown = hidKeysDown(CONTROLLER_P1_AUTO); u64 kHeld = hidKeysHeld(CONTROLLER_P1_AUTO); @@ -51,13 +53,13 @@ void Menu_OpenBook(char *path) if (kHeld & KEY_LSTICK_RIGHT) reader->move_page_right(); - if (touchInfo.state == TouchEnded && touchInfo.tapType != TapNone) + /*if (touchInfo.state == TouchEnded && touchInfo.tapType != TapNone) { if (tapped_inside(touchInfo, 0, 0, 120, 720)) reader->previous_page(); else if (tapped_inside(touchInfo, 1160, 0, 1280, 720)) reader->next_page(); - } + }*/ } delete reader; diff --git a/source/menu_book_reader/mupdf-fitz-stream-open.c b/source/menu_book_reader/mupdf-fitz-stream-open.c deleted file mode 100644 index d317509..0000000 --- a/source/menu_book_reader/mupdf-fitz-stream-open.c +++ /dev/null @@ -1,236 +0,0 @@ -#define _LARGEFILE_SOURCE -#ifndef _FILE_OFFSET_BITS -#define _FILE_OFFSET_BITS 64 -#endif - -#include -#include - -#include -#include -#include - -int -fz_file_exists(fz_context *ctx, const char *path) { - FILE *file; -#ifdef _WIN32 - file = fz_fopen_utf8(path, "rb"); -#else - file = fopen(path, "rb"); -#endif - if (file) - fclose(file); - return !!file; -} - -fz_stream * -fz_new_stream(fz_context *ctx, void *state, fz_stream_next_fn *next, fz_stream_drop_fn *drop) { - fz_stream *stm = NULL; - - fz_try(ctx) - { - stm = fz_malloc_struct(ctx, fz_stream); - } - fz_catch(ctx) - { - drop(ctx, state); - fz_rethrow(ctx); - } - - stm->refs = 1; - stm->error = 0; - stm->eof = 0; - stm->pos = 0; - - stm->bits = 0; - stm->avail = 0; - - stm->rp = NULL; - stm->wp = NULL; - - stm->state = state; - stm->next = next; - stm->drop = drop; - stm->seek = NULL; - - return stm; -} - -fz_stream * -fz_keep_stream(fz_context *ctx, fz_stream *stm) { - return fz_keep_imp(ctx, stm, &stm->refs); -} - -void -fz_drop_stream(fz_context *ctx, fz_stream *stm) { - if (fz_drop_imp(ctx, stm, &stm->refs)) - { - if (stm->drop) - stm->drop(ctx, stm->state); - fz_free(ctx, stm); - } -} - -/* File stream */ - -// TODO: WIN32: HANDLE CreateFileW(), etc. -// TODO: POSIX: int creat(), read(), write(), lseeko, etc. - -typedef struct fz_file_stream_s { - FILE *file; - unsigned char buffer[4096]; - char file_name[512]; -} fz_file_stream; - -static int next_file(fz_context *ctx, fz_stream *stm, size_t n) { - fz_file_stream *state = stm->state; - - /* Switch hack: for some reason multiple calls fseek/fread return incorrect part of file, so close/open/fseek */ - if (state->file_name[0]) { - fclose(state->file); - state->file = fopen(state->file_name, "rb"); - fseek(state->file, stm->pos, 0); - } - - /* n is only a hint, that we can safely ignore */ - n = fread(state->buffer, 1, sizeof(state->buffer), state->file); - if (n < sizeof(state->buffer) && ferror(state->file)) - fz_throw(ctx, FZ_ERROR_GENERIC, "read error: %s", strerror(errno)); - stm->rp = state->buffer; - stm->wp = state->buffer + n; - stm->pos += (int64_t)n; - - if (n == 0) - return EOF; - return *stm->rp++; -} - -static void seek_file(fz_context *ctx, fz_stream *stm, int64_t offset, int whence) { - fz_file_stream *state = stm->state; -#ifdef _WIN32 - int64_t n = _fseeki64(state->file, offset, whence); -#else - int64_t n = fseeko(state->file, offset, whence); -#endif - if (n < 0) - fz_throw(ctx, FZ_ERROR_GENERIC, "cannot seek: %s", strerror(errno)); -#ifdef _WIN32 - stm->pos = _ftelli64(state->file); -#else - stm->pos = ftello(state->file); -#endif - stm->rp = state->buffer; - stm->wp = state->buffer; -} - -static void drop_file(fz_context *ctx, void *state_) { - fz_file_stream *state = state_; - int n = fclose(state->file); - if (n < 0) - fz_warn(ctx, "close error: %s", strerror(errno)); - fz_free(ctx, state); -} - -static fz_stream * -fz_open_file_ptr(fz_context *ctx, FILE *file, const char* file_name) { - fz_stream *stm; - fz_file_stream *state = fz_malloc_struct(ctx, fz_file_stream); - state->file = file; - strcpy(state->file_name, file_name); - - stm = fz_new_stream(ctx, state, next_file, drop_file); - stm->seek = seek_file; - - return stm; -} - -fz_stream *fz_open_file_ptr_no_close(fz_context *ctx, FILE *file) { - fz_stream *stm = fz_open_file_ptr(ctx, file, 0); - /* We don't own the file ptr. Ensure we don't close it */ - stm->drop = NULL; - return stm; -} - -fz_stream * -fz_open_file(fz_context *ctx, const char *name) { - FILE *file; -#ifdef _WIN32 - file = fz_fopen_utf8(name, "rb"); -#else - file = fopen(name, "rb"); -#endif - if (file == NULL) - fz_throw(ctx, FZ_ERROR_GENERIC, "cannot open %s: %s", name, strerror(errno)); - return fz_open_file_ptr(ctx, file, name); -} - -#ifdef _WIN32 -fz_stream * -fz_open_file_w(fz_context *ctx, const wchar_t *name) { - FILE *file = _wfopen(name, L"rb"); - if (file == NULL) - fz_throw(ctx, FZ_ERROR_GENERIC, "cannot open file %ls: %s", name, strerror(errno)); - return fz_open_file_ptr(ctx, file); -} -#endif - -/* Memory stream */ - -static int next_buffer(fz_context *ctx, fz_stream *stm, size_t max) { - return EOF; -} - -static void seek_buffer(fz_context *ctx, fz_stream *stm, int64_t offset, int whence) { - int64_t pos = stm->pos - (stm->wp - stm->rp); - /* Convert to absolute pos */ - if (whence == 1) - { - offset += pos; /* Was relative to current pos */ - } - else if (whence == 2) - { - offset += stm->pos; /* Was relative to end */ - } - - if (offset < 0) - offset = 0; - if (offset > stm->pos) - offset = stm->pos; - stm->rp += (int)(offset - pos); -} - -static void drop_buffer(fz_context *ctx, void *state_) { - fz_buffer *state = (fz_buffer *)state_; - fz_drop_buffer(ctx, state); -} - -fz_stream * -fz_open_buffer(fz_context *ctx, fz_buffer *buf) { - fz_stream *stm; - - fz_keep_buffer(ctx, buf); - stm = fz_new_stream(ctx, buf, next_buffer, drop_buffer); - stm->seek = seek_buffer; - - stm->rp = buf->data; - stm->wp = buf->data + buf->len; - - stm->pos = (int64_t)buf->len; - - return stm; -} - -fz_stream * -fz_open_memory(fz_context *ctx, const unsigned char *data, size_t len) { - fz_stream *stm; - - stm = fz_new_stream(ctx, NULL, next_buffer, NULL); - stm->seek = seek_buffer; - - stm->rp = (unsigned char *)data; - stm->wp = (unsigned char *)data + len; - - stm->pos = (int64_t)len; - - return stm; -} diff --git a/source/status_bar.c b/source/status_bar.c deleted file mode 100644 index 269b211..0000000 --- a/source/status_bar.c +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include - -#include "common.h" -#include "SDL_helper.h" -#include "status_bar.h" - -static char *Clock_GetCurrentTime(bool _12hour) -{ - static char buffer[10]; - - u64 current_time; - timeGetCurrentTime(TimeType_UserSystemClock, ¤t_time); - struct tm* time_struct = gmtime((const time_t *)¤t_time); - int hours = time_struct->tm_hour; - int minutes = time_struct->tm_min; - int amOrPm = 0; - - if (_12hour) - { - if (hours < 12) - amOrPm = 1; - if (hours == 0) - hours = 12; - else if (hours > 12) - hours = hours - 12; - - if ((hours >= 1) && (hours < 10)) - snprintf(buffer, 10, "%2i:%02i %s", hours, minutes, amOrPm ? "AM" : "PM"); - else - snprintf(buffer, 10, "%2i:%02i %s", hours, minutes, amOrPm ? "AM" : "PM"); - } - - return buffer; -} - -void StatusBar_DisplayTime(void) -{ - int width = 0, height = 0; - TTF_SizeText(Roboto, Clock_GetCurrentTime(true), &width, &height); - - SDL_DrawText(Roboto, 1260 - width, (40 - height)/2, WHITE, Clock_GetCurrentTime(true)); -} \ No newline at end of file