blob: 79f17257a114434d005f444024c47bcd16fc3eda [file] [log] [blame]
From c162a3620a3d0d317f59af8ddc2d1605bf5ee4b3 Mon Sep 17 00:00:00 2001
From: martell <martellmalone@gmail.com>
Date: Sat, 11 Oct 2014 03:32:38 +0100
Subject: [PATCH 1/3] unzip: add function unzOpenBuffer
---
unzip.c | 11 +++++++++++
unzip.h | 2 ++
2 files changed, 13 insertions(+)
diff --git a/unzip.c b/unzip.c
index 11030cb..1f4bdda 100644
--- a/unzip.c
+++ b/unzip.c
@@ -29,6 +29,7 @@
#include "zlib.h"
#include "unzip.h"
+#include "ioapi_mem.h"
#ifdef HAVE_AES
# define AES_METHOD (99)
@@ -553,6 +554,16 @@ extern unzFile ZEXPORT unzOpen64(const void *path)
return unzOpenInternal(path, NULL);
}
+extern unzFile ZEXPORT unzOpenBuffer(const void* buffer, uLong size)
+{
+ char path[48] = {0};
+ ourmemory_t FileMemory;
+ zlib_filefunc64_32_def memory_file;
+ sprintf(path, "%llx %lx", (unsigned long long)buffer, (unsigned long)size);
+ fill_memory_filefunc(&memory_file, &FileMemory);
+ return unzOpenInternal(path, &memory_file);
+}
+
extern int ZEXPORT unzClose(unzFile file)
{
unz64_s *s;
diff --git a/unzip.h b/unzip.h
index 1aa197f..8503471 100644
--- a/unzip.h
+++ b/unzip.h
@@ -131,6 +131,8 @@ extern unzFile ZEXPORT unzOpen64(const void *path);
open64_file_func callback. Under Windows, if UNICODE is defined, using fill_fopen64_filefunc, the path
is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char *does not describe the reality */
+extern unzFile ZEXPORT unzOpenBuffer OF((const void* buffer, uLong size));
+/* Open a Zip file, like unzOpen, but from a buffer */
extern unzFile ZEXPORT unzOpen2(const char *path, zlib_filefunc_def *pzlib_filefunc_def);
/* Open a Zip file, like unzOpen, but provide a set of file low level API for read/write operations */
extern unzFile ZEXPORT unzOpen2_64(const void *path, zlib_filefunc64_def *pzlib_filefunc_def);
--
2.1.2