Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update unzip.c/h in MythGame to version 1.01h from 2010, replacing ve…
…rsion 0.15 beta from 1998
- Loading branch information
Showing
8 changed files
with
2,110 additions
and
1,359 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,178 @@ | ||
/* ioapi.c -- IO base function header for compress/uncompress .zip | ||
files using zlib + zip or unzip API | ||
Version 1.01h, December 28th, 2009 | ||
Copyright (C) 1998-2009 Gilles Vollant | ||
*/ | ||
|
||
#include <stdio.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
|
||
#include "zlib.h" | ||
#include "ioapi.h" | ||
|
||
|
||
|
||
/* 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 ZCALLBACK fopen_file_func OF(( | ||
voidpf opaque, | ||
const char* filename, | ||
int mode)); | ||
|
||
uLong ZCALLBACK fread_file_func OF(( | ||
voidpf opaque, | ||
voidpf stream, | ||
void* buf, | ||
uLong size)); | ||
|
||
uLong ZCALLBACK fwrite_file_func OF(( | ||
voidpf opaque, | ||
voidpf stream, | ||
const void* buf, | ||
uLong size)); | ||
|
||
long ZCALLBACK ftell_file_func OF(( | ||
voidpf opaque, | ||
voidpf stream)); | ||
|
||
long ZCALLBACK fseek_file_func OF(( | ||
voidpf opaque, | ||
voidpf stream, | ||
uLong offset, | ||
int origin)); | ||
|
||
int ZCALLBACK fclose_file_func OF(( | ||
voidpf opaque, | ||
voidpf stream)); | ||
|
||
int ZCALLBACK ferror_file_func OF(( | ||
voidpf opaque, | ||
voidpf stream)); | ||
|
||
|
||
voidpf ZCALLBACK fopen_file_func (opaque, filename, mode) | ||
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; | ||
} | ||
|
||
|
||
uLong ZCALLBACK fread_file_func (opaque, stream, buf, size) | ||
voidpf opaque; | ||
voidpf stream; | ||
void* buf; | ||
uLong size; | ||
{ | ||
uLong ret; | ||
ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream); | ||
return ret; | ||
} | ||
|
||
|
||
uLong ZCALLBACK fwrite_file_func (opaque, stream, buf, size) | ||
voidpf opaque; | ||
voidpf stream; | ||
const void* buf; | ||
uLong size; | ||
{ | ||
uLong ret; | ||
ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream); | ||
return ret; | ||
} | ||
|
||
long ZCALLBACK ftell_file_func (opaque, stream) | ||
voidpf opaque; | ||
voidpf stream; | ||
{ | ||
long ret; | ||
ret = ftell((FILE *)stream); | ||
return ret; | ||
} | ||
|
||
long ZCALLBACK fseek_file_func (opaque, stream, offset, origin) | ||
voidpf opaque; | ||
voidpf stream; | ||
uLong offset; | ||
int origin; | ||
{ | ||
int fseek_origin=0; | ||
long ret; | ||
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; | ||
} | ||
ret = 0; | ||
if (fseek((FILE *)stream, offset, fseek_origin) != 0) | ||
ret = -1; | ||
return ret; | ||
} | ||
|
||
int ZCALLBACK fclose_file_func (opaque, stream) | ||
voidpf opaque; | ||
voidpf stream; | ||
{ | ||
int ret; | ||
ret = fclose((FILE *)stream); | ||
return ret; | ||
} | ||
|
||
int ZCALLBACK ferror_file_func (opaque, stream) | ||
voidpf opaque; | ||
voidpf stream; | ||
{ | ||
int ret; | ||
ret = ferror((FILE *)stream); | ||
return ret; | ||
} | ||
|
||
void fill_fopen_filefunc (pzlib_filefunc_def) | ||
zlib_filefunc_def* pzlib_filefunc_def; | ||
{ | ||
pzlib_filefunc_def->zopen_file = fopen_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; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
/* ioapi.h -- IO base function header for compress/uncompress .zip | ||
files using zlib + zip or unzip API | ||
Version 1.01h, December 28th, 2009 | ||
Copyright (C) 1998-2009 Gilles Vollant | ||
*/ | ||
|
||
#ifndef _ZLIBIOAPI_H | ||
#define _ZLIBIOAPI_H | ||
|
||
|
||
#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 (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) | ||
#define ZCALLBACK CALLBACK | ||
#else | ||
#define ZCALLBACK | ||
#endif | ||
#endif | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, 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 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)); | ||
typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); | ||
typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); | ||
|
||
typedef struct zlib_filefunc_def_s | ||
{ | ||
open_file_func zopen_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; | ||
|
||
|
||
|
||
void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); | ||
|
||
#define ZREAD(filefunc,filestream,buf,size) ((*((filefunc).zread_file))((filefunc).opaque,filestream,buf,size)) | ||
#define ZWRITE(filefunc,filestream,buf,size) ((*((filefunc).zwrite_file))((filefunc).opaque,filestream,buf,size)) | ||
#define ZTELL(filefunc,filestream) ((*((filefunc).ztell_file))((filefunc).opaque,filestream)) | ||
#define ZSEEK(filefunc,filestream,pos,mode) ((*((filefunc).zseek_file))((filefunc).opaque,filestream,pos,mode)) | ||
#define ZCLOSE(filefunc,filestream) ((*((filefunc).zclose_file))((filefunc).opaque,filestream)) | ||
#define ZERROR(filefunc,filestream) ((*((filefunc).zerror_file))((filefunc).opaque,filestream)) | ||
|
||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif | ||
|
Oops, something went wrong.