diff options
Diffstat (limited to 'updater/unzipfile.cpp')
-rw-r--r-- | updater/unzipfile.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/updater/unzipfile.cpp b/updater/unzipfile.cpp index a449ceb..b14bf97 100644 --- a/updater/unzipfile.cpp +++ b/updater/unzipfile.cpp @@ -2,7 +2,8 @@ #include "utils.h"
#include <unzip.h>
-#include <iowin32.h>
+
+extern "C" void fill_memory_filefunc (zlib_filefunc_def* pzlib_filefunc_def);
bool extractCurrentFile(unzFile uf, TCHAR *path)
{
@@ -87,12 +88,15 @@ bool extractCurrentFile(unzFile uf, TCHAR *path) return true;
}
-void unzip_file(TCHAR* zipfile, TCHAR* dest)
+void unzip_mem(char* buf, int len, TCHAR* dest)
{
- zlib_filefunc64_def ffunc;
- fill_win32_filefunc64(&ffunc);
+ zlib_filefunc_def ffunc;
+ fill_memory_filefunc(&ffunc);
+
+ char zipfile[128];
+ mir_snprintf(zipfile, sizeof(zipfile), "%p+%x", buf, len);
- unzFile uf = unzOpen2_64(zipfile, &ffunc);
+ unzFile uf = unzOpen2(zipfile, &ffunc);
if (uf)
{
do {
|