summaryrefslogtreecommitdiffstats
path: root/src/minizip-1-unzOpenBuffer.patch
blob: 45d38ec57cba6e00168c7ac7b05d6d5919dfc4e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
This file is part of MXE.
See index.html for further information.

This patch has been taken from:
https://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-zlib

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

---
 Makefile.am |  1 +
 unzip.c     | 11 +++++++++++
 unzip.h     |  2 ++
 3 files changed, 14 insertions(+)

diff --git a/Makefile.am b/Makefile.am
index d83fee7..e2958e6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -19,6 +19,7 @@ libminizip_la_SOURCES = \
 	ioapi.c \
 	unzip.c \
 	zip.c \
+	ioapi_mem.c \
 	${iowin32_src}
 
 libminizip_la_LDFLAGS = $(AM_LDFLAGS) -version-info 1:0:0 -lz
diff --git a/unzip.c b/unzip.c
index ce02265..bb72a66 100644
--- a/unzip.c
+++ b/unzip.c
@@ -26,6 +26,7 @@
 
 #include "zlib.h"
 #include "unzip.h"
+#include "ioapi_mem.h"
 
 #ifdef STDC
 #  include <stddef.h>
@@ -581,6 +582,16 @@ extern unzFile ZEXPORT unzOpen64(const void *path)
     return unzOpenInternal(path, NULL, 1);
 }
 
+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, 0);
+}
+
 extern int ZEXPORT unzClose(unzFile file)
 {
     unz64_s* s;
diff --git a/unzip.h b/unzip.h
index 22c830f..28fedb9 100644
--- a/unzip.h
+++ b/unzip.h
@@ -143,6 +143,8 @@ extern unzFile ZEXPORT unzOpen64 OF((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 OF((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 OF((const void *path, zlib_filefunc64_def* pzlib_filefunc_def));
-- 
2.1.2