summaryrefslogtreecommitdiff
path: root/updater/unzipfile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'updater/unzipfile.cpp')
-rw-r--r--updater/unzipfile.cpp14
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 {