Add unzipfx as extra vendored dependency, for CI builds
Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
parent
9dc031d5aa
commit
685e62df24
36 changed files with 30307 additions and 0 deletions
129
deps/unzipfx/win32/win32i64.c
vendored
Normal file
129
deps/unzipfx/win32/win32i64.c
vendored
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
/*
|
||||
Copyright (c) 1990-2009 Info-ZIP. All rights reserved.
|
||||
|
||||
See the accompanying file LICENSE, version 2009-Jan-02 or later
|
||||
(the contents of which are also included in zip.h) for terms of use.
|
||||
If, for some reason, all these files are missing, the Info-ZIP license
|
||||
also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
|
||||
*/
|
||||
/*---------------------------------------------------------------------------
|
||||
|
||||
win32/win32i64.c - UnZip 6
|
||||
|
||||
64-bit filesize support for WIN32 Zip and UnZip.
|
||||
---------------------------------------------------------------------------*/
|
||||
|
||||
#include "../zip.h"
|
||||
|
||||
/* --------------------------------------------------- */
|
||||
/* Large File Support
|
||||
*
|
||||
* Initial functions by E. Gordon and R. Nausedat
|
||||
* 9/10/2003
|
||||
*
|
||||
* These implement 64-bit file support for Windows. The
|
||||
* defines and headers are in win32/osdep.h.
|
||||
*
|
||||
* These moved from win32.c by Mike White to avoid conflicts
|
||||
* in WiZ of same name functions in UnZip and Zip libraries.
|
||||
* 9/25/04 EG
|
||||
*/
|
||||
|
||||
#if defined(LARGE_FILE_SUPPORT) && !defined(__CYGWIN__)
|
||||
# ifdef USE_STRM_INPUT
|
||||
|
||||
# ifndef zftello
|
||||
/* 64-bit buffered ftello
|
||||
*
|
||||
* Win32 does not provide a 64-bit buffered
|
||||
* ftell (in the published api anyway) so below provides
|
||||
* hopefully close version.
|
||||
* We have not gotten _telli64 to work with buffered
|
||||
* streams. Below cheats by using fgetpos improperly and
|
||||
* may not work on other ports.
|
||||
*/
|
||||
|
||||
zoff_t zftello(stream)
|
||||
FILE *stream;
|
||||
{
|
||||
fpos_t fpos = 0;
|
||||
|
||||
if (fgetpos(stream, &fpos) != 0) {
|
||||
return -1L;
|
||||
} else {
|
||||
return fpos;
|
||||
}
|
||||
}
|
||||
# endif /* ndef zftello */
|
||||
|
||||
|
||||
# ifndef zfseeko
|
||||
/* 64-bit buffered fseeko
|
||||
*
|
||||
* Win32 does not provide a 64-bit buffered
|
||||
* fseeko, so use _lseeki64 and fflush. Note
|
||||
* that SEEK_CUR can lose track of location
|
||||
* if fflush is done between the last buffered
|
||||
* io and this call.
|
||||
*/
|
||||
|
||||
int zfseeko(stream, offset, origin)
|
||||
FILE *stream;
|
||||
zoff_t offset;
|
||||
int origin;
|
||||
{
|
||||
|
||||
/* fseek() or its replacements are supposed to clear the eof status
|
||||
of the stream. fflush() and _lseeki64() do not touch the stream's
|
||||
eof flag, so we have to do it manually. */
|
||||
#if ((defined(_MSC_VER) && (_MSC_VER >= 1200)) || \
|
||||
(defined(__MINGW32__) && defined(__MSVCRT_VERSION__)))
|
||||
/* For the MSC environment (VS 6 or higher), and for recent releases of
|
||||
the MinGW environment, we "know" the internals of the FILE structure.
|
||||
So, we can clear just the EOF bit of the status flag. */
|
||||
stream->_flag &= ~_IOEOF;
|
||||
#else
|
||||
/* Unfortunately, there is no standard "cleareof()" function, so we have
|
||||
to use clearerr(). This has the unwanted side effect of clearing the
|
||||
ferror() state as well. */
|
||||
clearerr(stream);
|
||||
#endif
|
||||
|
||||
if (origin == SEEK_CUR) {
|
||||
/* instead of synching up lseek easier just to figure and
|
||||
use an absolute offset */
|
||||
offset += zftello(stream);
|
||||
origin = SEEK_SET;
|
||||
}
|
||||
fflush(stream);
|
||||
if (_lseeki64(fileno(stream), offset, origin) == (zoff_t)-1L) {
|
||||
return -1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
# endif /* ndef fseeko */
|
||||
# endif /* USE_STRM_INPUT */
|
||||
#endif /* Win32 LARGE_FILE_SUPPORT */
|
||||
|
||||
#if 0
|
||||
FILE* zfopen(filename, mode)
|
||||
const char *filename;
|
||||
const char *mode;
|
||||
{
|
||||
FILE* fTemp;
|
||||
|
||||
fTemp = fopen(filename, mode);
|
||||
if( fTemp == NULL )
|
||||
return NULL;
|
||||
|
||||
/* sorry, could not make VC60 and its rtl work properly without setting the
|
||||
* file buffer to NULL. the problem seems to be _telli64 which seems to
|
||||
* return the max stream position, comments are welcome
|
||||
*/
|
||||
setbuf(fTemp, NULL);
|
||||
|
||||
return fTemp;
|
||||
}
|
||||
#endif
|
||||
/* --------------------------------------------------- */
|
||||
Loading…
Add table
Add a link
Reference in a new issue