-/* ioapi.c -- IO base function header for compress/uncompress .zip\r
- files using zlib + zip or unzip API\r
-\r
- Version 1.01e, February 12th, 2005\r
-\r
- Copyright (C) 1998-2005 Gilles Vollant\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-\r
-#include "zlib.h"\r
-#include "ioapi.h"\r
-\r
-\r
-\r
-/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */\r
-\r
-#ifndef SEEK_CUR\r
-#define SEEK_CUR 1\r
-#endif\r
-\r
-#ifndef SEEK_END\r
-#define SEEK_END 2\r
-#endif\r
-\r
-#ifndef SEEK_SET\r
-#define SEEK_SET 0\r
-#endif\r
-\r
-voidpf ZCALLBACK fopen_file_func OF((\r
- voidpf opaque,\r
- const char* filename,\r
- int mode));\r
-\r
-uLong ZCALLBACK fread_file_func OF((\r
- voidpf opaque,\r
- voidpf stream,\r
- void* buf,\r
- uLong size));\r
-\r
-uLong ZCALLBACK fwrite_file_func OF((\r
- voidpf opaque,\r
- voidpf stream,\r
- const void* buf,\r
- uLong size));\r
-\r
-long ZCALLBACK ftell_file_func OF((\r
- voidpf opaque,\r
- voidpf stream));\r
-\r
-long ZCALLBACK fseek_file_func OF((\r
- voidpf opaque,\r
- voidpf stream,\r
- uLong offset,\r
- int origin));\r
-\r
-int ZCALLBACK fclose_file_func OF((\r
- voidpf opaque,\r
- voidpf stream));\r
-\r
-int ZCALLBACK ferror_file_func OF((\r
- voidpf opaque,\r
- voidpf stream));\r
-\r
-\r
-voidpf ZCALLBACK fopen_file_func (opaque, filename, mode)\r
- voidpf opaque;\r
- const char* filename;\r
- int mode;\r
-{\r
- FILE* file = NULL;\r
- const char* mode_fopen = NULL;\r
- if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)\r
- mode_fopen = "rb";\r
- else\r
- if (mode & ZLIB_FILEFUNC_MODE_EXISTING)\r
- mode_fopen = "r+b";\r
- else\r
- if (mode & ZLIB_FILEFUNC_MODE_CREATE)\r
- mode_fopen = "wb";\r
-\r
- if ((filename!=NULL) && (mode_fopen != NULL))\r
- file = fopen(filename, mode_fopen);\r
- return file;\r
-}\r
-\r
-\r
-uLong ZCALLBACK fread_file_func (opaque, stream, buf, size)\r
- voidpf opaque;\r
- voidpf stream;\r
- void* buf;\r
- uLong size;\r
-{\r
- uLong ret;\r
- ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);\r
- return ret;\r
-}\r
-\r
-\r
-uLong ZCALLBACK fwrite_file_func (opaque, stream, buf, size)\r
- voidpf opaque;\r
- voidpf stream;\r
- const void* buf;\r
- uLong size;\r
-{\r
- uLong ret;\r
- ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);\r
- return ret;\r
-}\r
-\r
-long ZCALLBACK ftell_file_func (opaque, stream)\r
- voidpf opaque;\r
- voidpf stream;\r
-{\r
- long ret;\r
- ret = ftell((FILE *)stream);\r
- return ret;\r
-}\r
-\r
-long ZCALLBACK fseek_file_func (opaque, stream, offset, origin)\r
- voidpf opaque;\r
- voidpf stream;\r
- uLong offset;\r
- int origin;\r
-{\r
- int fseek_origin=0;\r
- long ret;\r
- switch (origin)\r
- {\r
- case ZLIB_FILEFUNC_SEEK_CUR :\r
- fseek_origin = SEEK_CUR;\r
- break;\r
- case ZLIB_FILEFUNC_SEEK_END :\r
- fseek_origin = SEEK_END;\r
- break;\r
- case ZLIB_FILEFUNC_SEEK_SET :\r
- fseek_origin = SEEK_SET;\r
- break;\r
- default: return -1;\r
- }\r
- ret = 0;\r
- fseek((FILE *)stream, offset, fseek_origin);\r
- return ret;\r
-}\r
-\r
-int ZCALLBACK fclose_file_func (opaque, stream)\r
- voidpf opaque;\r
- voidpf stream;\r
-{\r
- int ret;\r
- ret = fclose((FILE *)stream);\r
- return ret;\r
-}\r
-\r
-int ZCALLBACK ferror_file_func (opaque, stream)\r
- voidpf opaque;\r
- voidpf stream;\r
-{\r
- int ret;\r
- ret = ferror((FILE *)stream);\r
- return ret;\r
-}\r
-\r
-void fill_fopen_filefunc (pzlib_filefunc_def)\r
- zlib_filefunc_def* pzlib_filefunc_def;\r
-{\r
- pzlib_filefunc_def->zopen_file = fopen_file_func;\r
- pzlib_filefunc_def->zread_file = fread_file_func;\r
- pzlib_filefunc_def->zwrite_file = fwrite_file_func;\r
- pzlib_filefunc_def->ztell_file = ftell_file_func;\r
- pzlib_filefunc_def->zseek_file = fseek_file_func;\r
- pzlib_filefunc_def->zclose_file = fclose_file_func;\r
- pzlib_filefunc_def->zerror_file = ferror_file_func;\r
- pzlib_filefunc_def->opaque = NULL;\r
-}\r
+/* ioapi.c -- IO base function header for compress/uncompress .zip
+ files using zlib + zip or unzip API
+
+ Version 1.01e, February 12th, 2005
+
+ Copyright (C) 1998-2005 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;
+ fseek((FILE *)stream, offset, fseek_origin);
+ 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;
+}