xref: /OK3568_Linux_fs/buildroot/package/assimp/0003-closes-2954-upgrade-to-latest-greatest.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunFrom bb3db0ebaffc6b76de256e597ec1d1e4d2a6663f Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: kimkulling <kim.kulling@googlemail.com>
3*4882a593SmuzhiyunDate: Mon, 9 Mar 2020 10:51:26 +0100
4*4882a593SmuzhiyunSubject: [PATCH] closes https://github.com/assimp/assimp/issues/2954: upgrade
5*4882a593Smuzhiyun to latest greatest.
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun[Retrieved from:
8*4882a593Smuzhiyunhttps://github.com/assimp/assimp/commit/bb3db0ebaffc6b76de256e597ec1d1e4d2a6663f]
9*4882a593SmuzhiyunSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
10*4882a593Smuzhiyun---
11*4882a593Smuzhiyun contrib/zip/CMakeLists.txt      |  8 ++----
12*4882a593Smuzhiyun contrib/zip/README.md           | 51 +++++++++++++++++++++++++++++++--
13*4882a593Smuzhiyun contrib/zip/src/zip.c           | 17 ++++++++++-
14*4882a593Smuzhiyun contrib/zip/src/zip.h           | 13 ++++++++-
15*4882a593Smuzhiyun contrib/zip/test/CMakeLists.txt |  5 ----
16*4882a593Smuzhiyun contrib/zip/test/test.c         |  4 ++-
17*4882a593Smuzhiyun 6 files changed, 81 insertions(+), 17 deletions(-)
18*4882a593Smuzhiyun
19*4882a593Smuzhiyundiff --git a/contrib/zip/CMakeLists.txt b/contrib/zip/CMakeLists.txt
20*4882a593Smuzhiyunindex 77916d2e14..f194649ede 100644
21*4882a593Smuzhiyun--- a/contrib/zip/CMakeLists.txt
22*4882a593Smuzhiyun+++ b/contrib/zip/CMakeLists.txt
23*4882a593Smuzhiyun@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.0)
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun project(zip
26*4882a593Smuzhiyun   LANGUAGES C
27*4882a593Smuzhiyun-  VERSION "0.1.15")
28*4882a593Smuzhiyun+  VERSION "0.1.18")
29*4882a593Smuzhiyun set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun option(CMAKE_DISABLE_TESTING "Disable test creation" OFF)
32*4882a593Smuzhiyun@@ -16,10 +16,6 @@ elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR
33*4882a593Smuzhiyun         "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
34*4882a593Smuzhiyun         "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang")
35*4882a593Smuzhiyun   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -Wextra -Werror -pedantic")
36*4882a593Smuzhiyun-  if(ENABLE_COVERAGE)
37*4882a593Smuzhiyun-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
38*4882a593Smuzhiyun-    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
39*4882a593Smuzhiyun-  endif()
40*4882a593Smuzhiyun endif (MSVC)
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun # zip
43*4882a593Smuzhiyun@@ -35,7 +31,7 @@ if (NOT CMAKE_DISABLE_TESTING)
44*4882a593Smuzhiyun   enable_testing()
45*4882a593Smuzhiyun   add_subdirectory(test)
46*4882a593Smuzhiyun   find_package(Sanitizers)
47*4882a593Smuzhiyun-  add_sanitizers(${PROJECT_NAME} ${test_out} ${test_miniz_out})
48*4882a593Smuzhiyun+  add_sanitizers(${PROJECT_NAME} ${test_out})
49*4882a593Smuzhiyun endif()
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun ####
52*4882a593Smuzhiyundiff --git a/contrib/zip/README.md b/contrib/zip/README.md
53*4882a593Smuzhiyunindex 14eb9a34c8..bdd0822b67 100644
54*4882a593Smuzhiyun--- a/contrib/zip/README.md
55*4882a593Smuzhiyun+++ b/contrib/zip/README.md
56*4882a593Smuzhiyun@@ -1,10 +1,8 @@
57*4882a593Smuzhiyun ### A portable (OSX/Linux/Windows), simple zip library written in C
58*4882a593Smuzhiyun This is done by hacking awesome [miniz](https://code.google.com/p/miniz) library and layering functions on top of the miniz v1.15 API.
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun-[![Windows](https://ci.appveyor.com/api/projects/status/bph8dr3jacgmjv32/branch/master?svg=true&label=windows)](https://ci.appveyor.com/project/kuba--/zip)
61*4882a593Smuzhiyun-[![Linux](https://travis-ci.org/kuba--/zip.svg?branch=master&label=linux%2fosx)](https://travis-ci.org/kuba--/zip)
62*4882a593Smuzhiyun+[![Build](https://github.com/kuba--/zip/workflows/build/badge.svg)](https://github.com/kuba--/zip/actions?query=workflow%3Abuild)
63*4882a593Smuzhiyun [![Version](https://badge.fury.io/gh/kuba--%2Fzip.svg)](https://github.com/kuba--/zip/releases)
64*4882a593Smuzhiyun-[![Codecov](https://codecov.io/gh/kuba--/zip/branch/master/graph/badge.svg)](https://codecov.io/gh/kuba--/zip)
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun # The Idea
68*4882a593Smuzhiyun@@ -213,6 +211,53 @@ func main() {
69*4882a593Smuzhiyun }
70*4882a593Smuzhiyun ```
71*4882a593Smuzhiyun
72*4882a593Smuzhiyun+### Rust (ffi)
73*4882a593Smuzhiyun+```rust
74*4882a593Smuzhiyun+extern crate libc;
75*4882a593Smuzhiyun+use std::ffi::CString;
76*4882a593Smuzhiyun+
77*4882a593Smuzhiyun+#[repr(C)]
78*4882a593Smuzhiyun+pub struct Zip {
79*4882a593Smuzhiyun+    _private: [u8; 0],
80*4882a593Smuzhiyun+}
81*4882a593Smuzhiyun+
82*4882a593Smuzhiyun+#[link(name = "zip")]
83*4882a593Smuzhiyun+extern "C" {
84*4882a593Smuzhiyun+    fn zip_open(path: *const libc::c_char, level: libc::c_int, mode: libc::c_char) -> *mut Zip;
85*4882a593Smuzhiyun+    fn zip_close(zip: *mut Zip) -> libc::c_void;
86*4882a593Smuzhiyun+
87*4882a593Smuzhiyun+    fn zip_entry_open(zip: *mut Zip, entryname: *const libc::c_char) -> libc::c_int;
88*4882a593Smuzhiyun+    fn zip_entry_close(zip: *mut Zip) -> libc::c_int;
89*4882a593Smuzhiyun+    fn zip_entry_write(
90*4882a593Smuzhiyun+        zip: *mut Zip,
91*4882a593Smuzhiyun+        buf: *const libc::c_void,
92*4882a593Smuzhiyun+        bufsize: libc::size_t,
93*4882a593Smuzhiyun+    ) -> libc::c_int;
94*4882a593Smuzhiyun+}
95*4882a593Smuzhiyun+
96*4882a593Smuzhiyun+fn main() {
97*4882a593Smuzhiyun+    let path = CString::new("/tmp/test.zip").unwrap();
98*4882a593Smuzhiyun+    let mode: libc::c_char = 'w' as libc::c_char;
99*4882a593Smuzhiyun+
100*4882a593Smuzhiyun+    let entryname = CString::new("test.txt").unwrap();
101*4882a593Smuzhiyun+    let content = "test content\0";
102*4882a593Smuzhiyun+
103*4882a593Smuzhiyun+    unsafe {
104*4882a593Smuzhiyun+        let zip: *mut Zip = zip_open(path.as_ptr(), 5, mode);
105*4882a593Smuzhiyun+        {
106*4882a593Smuzhiyun+            zip_entry_open(zip, entryname.as_ptr());
107*4882a593Smuzhiyun+            {
108*4882a593Smuzhiyun+                let buf = content.as_ptr() as *const libc::c_void;
109*4882a593Smuzhiyun+                let bufsize = content.len() as libc::size_t;
110*4882a593Smuzhiyun+                zip_entry_write(zip, buf, bufsize);
111*4882a593Smuzhiyun+            }
112*4882a593Smuzhiyun+            zip_entry_close(zip);
113*4882a593Smuzhiyun+        }
114*4882a593Smuzhiyun+        zip_close(zip);
115*4882a593Smuzhiyun+    }
116*4882a593Smuzhiyun+}
117*4882a593Smuzhiyun+```
118*4882a593Smuzhiyun+
119*4882a593Smuzhiyun ### Ruby (ffi)
120*4882a593Smuzhiyun Install _ffi_ gem.
121*4882a593Smuzhiyun ```shell
122*4882a593Smuzhiyundiff --git a/contrib/zip/src/zip.c b/contrib/zip/src/zip.c
123*4882a593Smuzhiyunindex 1abcfd8fd1..3b2821e6a3 100644
124*4882a593Smuzhiyun--- a/contrib/zip/src/zip.c
125*4882a593Smuzhiyun+++ b/contrib/zip/src/zip.c
126*4882a593Smuzhiyun@@ -222,6 +222,20 @@ void zip_close(struct zip_t *zip) {
127*4882a593Smuzhiyun   }
128*4882a593Smuzhiyun }
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun+int zip_is64(struct zip_t *zip) {
131*4882a593Smuzhiyun+  if (!zip) {
132*4882a593Smuzhiyun+    // zip_t handler is not initialized
133*4882a593Smuzhiyun+    return -1;
134*4882a593Smuzhiyun+  }
135*4882a593Smuzhiyun+
136*4882a593Smuzhiyun+  if (!zip->archive.m_pState) {
137*4882a593Smuzhiyun+    // zip state is not initialized
138*4882a593Smuzhiyun+    return -1;
139*4882a593Smuzhiyun+  }
140*4882a593Smuzhiyun+
141*4882a593Smuzhiyun+  return (int)zip->archive.m_pState->m_zip64;
142*4882a593Smuzhiyun+}
143*4882a593Smuzhiyun+
144*4882a593Smuzhiyun int zip_entry_open(struct zip_t *zip, const char *entryname) {
145*4882a593Smuzhiyun   size_t entrylen = 0;
146*4882a593Smuzhiyun   mz_zip_archive *pzip = NULL;
147*4882a593Smuzhiyun@@ -794,7 +808,8 @@ int zip_create(const char *zipname, const char *filenames[], size_t len) {
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun     if (MZ_FILE_STAT(name, &file_stat) != 0) {
150*4882a593Smuzhiyun       // problem getting information - check errno
151*4882a593Smuzhiyun-      return -1;
152*4882a593Smuzhiyun+      status = -1;
153*4882a593Smuzhiyun+      break;
154*4882a593Smuzhiyun     }
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun     if ((file_stat.st_mode & 0200) == 0) {
157*4882a593Smuzhiyundiff --git a/contrib/zip/src/zip.h b/contrib/zip/src/zip.h
158*4882a593Smuzhiyunindex a48d64d6de..cd3ab5cd00 100644
159*4882a593Smuzhiyun--- a/contrib/zip/src/zip.h
160*4882a593Smuzhiyun+++ b/contrib/zip/src/zip.h
161*4882a593Smuzhiyun@@ -21,7 +21,7 @@ extern "C" {
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun #if !defined(_SSIZE_T_DEFINED) && !defined(_SSIZE_T_DEFINED_) &&               \
164*4882a593Smuzhiyun     !defined(__DEFINED_ssize_t) && !defined(__ssize_t_defined) &&              \
165*4882a593Smuzhiyun-    !defined(_SSIZE_T) && !defined(_SSIZE_T_)
166*4882a593Smuzhiyun+    !defined(_SSIZE_T) && !defined(_SSIZE_T_) && !defined(_SSIZE_T_DECLARED)
167*4882a593Smuzhiyun
168*4882a593Smuzhiyun // 64-bit Windows is the only mainstream platform
169*4882a593Smuzhiyun // where sizeof(long) != sizeof(void*)
170*4882a593Smuzhiyun@@ -37,6 +37,7 @@ typedef long ssize_t; /* byte count or error */
171*4882a593Smuzhiyun #define __ssize_t_defined
172*4882a593Smuzhiyun #define _SSIZE_T
173*4882a593Smuzhiyun #define _SSIZE_T_
174*4882a593Smuzhiyun+#define _SSIZE_T_DECLARED
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun #endif
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun@@ -90,6 +91,16 @@ extern struct zip_t *zip_open(const char *zipname, int level, char mode);
179*4882a593Smuzhiyun  */
180*4882a593Smuzhiyun extern void zip_close(struct zip_t *zip);
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun+/**
183*4882a593Smuzhiyun+ * Determines if the archive has a zip64 end of central directory headers.
184*4882a593Smuzhiyun+ *
185*4882a593Smuzhiyun+ * @param zip zip archive handler.
186*4882a593Smuzhiyun+ *
187*4882a593Smuzhiyun+ * @return the return code - 1 (true), 0 (false), negative number (< 0) on
188*4882a593Smuzhiyun+ *         error.
189*4882a593Smuzhiyun+ */
190*4882a593Smuzhiyun+extern int zip_is64(struct zip_t *zip);
191*4882a593Smuzhiyun+
192*4882a593Smuzhiyun /**
193*4882a593Smuzhiyun  * Opens an entry by name in the zip archive.
194*4882a593Smuzhiyun  *
195*4882a593Smuzhiyundiff --git a/contrib/zip/test/CMakeLists.txt b/contrib/zip/test/CMakeLists.txt
196*4882a593Smuzhiyunindex cc060b00fe..1224115858 100644
197*4882a593Smuzhiyun--- a/contrib/zip/test/CMakeLists.txt
198*4882a593Smuzhiyun+++ b/contrib/zip/test/CMakeLists.txt
199*4882a593Smuzhiyun@@ -2,15 +2,10 @@ cmake_minimum_required(VERSION 2.8)
200*4882a593Smuzhiyun
201*4882a593Smuzhiyun # test
202*4882a593Smuzhiyun set(test_out test.out)
203*4882a593Smuzhiyun-set(test_miniz_out test_miniz.out)
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun add_executable(${test_out} test.c)
206*4882a593Smuzhiyun target_link_libraries(${test_out} zip)
207*4882a593Smuzhiyun-add_executable(${test_miniz_out} test_miniz.c)
208*4882a593Smuzhiyun-target_link_libraries(${test_miniz_out} zip)
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun add_test(NAME ${test_out} COMMAND ${test_out})
211*4882a593Smuzhiyun-add_test(NAME ${test_miniz_out} COMMAND ${test_miniz_out})
212*4882a593Smuzhiyun
213*4882a593Smuzhiyun set(test_out ${test_out} PARENT_SCOPE)
214*4882a593Smuzhiyun-set(test_miniz_out ${test_miniz_out} PARENT_SCOPE)
215*4882a593Smuzhiyundiff --git a/contrib/zip/test/test.c b/contrib/zip/test/test.c
216*4882a593Smuzhiyunindex a9b2ddab1e..9cc2248ac0 100644
217*4882a593Smuzhiyun--- a/contrib/zip/test/test.c
218*4882a593Smuzhiyun+++ b/contrib/zip/test/test.c
219*4882a593Smuzhiyun@@ -47,7 +47,7 @@ static void test_write(void) {
220*4882a593Smuzhiyun   assert(CRC32DATA1 == zip_entry_crc32(zip));
221*4882a593Smuzhiyun   ++total_entries;
222*4882a593Smuzhiyun   assert(0 == zip_entry_close(zip));
223*4882a593Smuzhiyun-
224*4882a593Smuzhiyun+  assert(0 == zip_is64(zip));
225*4882a593Smuzhiyun   zip_close(zip);
226*4882a593Smuzhiyun }
227*4882a593Smuzhiyun
228*4882a593Smuzhiyun@@ -92,6 +92,7 @@ static void test_read(void) {
229*4882a593Smuzhiyun   size_t buftmp;
230*4882a593Smuzhiyun   struct zip_t *zip = zip_open(ZIPNAME, 0, 'r');
231*4882a593Smuzhiyun   assert(zip != NULL);
232*4882a593Smuzhiyun+  assert(0 == zip_is64(zip));
233*4882a593Smuzhiyun
234*4882a593Smuzhiyun   assert(0 == zip_entry_open(zip, "test\\test-1.txt"));
235*4882a593Smuzhiyun   assert(strlen(TESTDATA1) == zip_entry_size(zip));
236*4882a593Smuzhiyun@@ -310,6 +311,7 @@ static void test_fwrite(void) {
237*4882a593Smuzhiyun   assert(0 == zip_entry_open(zip, WFILE));
238*4882a593Smuzhiyun   assert(0 == zip_entry_fwrite(zip, WFILE));
239*4882a593Smuzhiyun   assert(0 == zip_entry_close(zip));
240*4882a593Smuzhiyun+  assert(0 == zip_is64(zip));
241*4882a593Smuzhiyun
242*4882a593Smuzhiyun   zip_close(zip);
243*4882a593Smuzhiyun   remove(WFILE);
244