bitbank2 / unziplib Goto Github PK
View Code? Open in Web Editor NEWAn embedded-friendly library for decompressing files from zip archives
License: Apache License 2.0
An embedded-friendly library for decompressing files from zip archives
License: Apache License 2.0
Hi,
Thanks a lot to share those nice library
I already use PNGdec for some firmware running on ESP32
Now I would like to extract PGN from a ZIP located on my SD cardand send this on LCD
I start with you nice sample code but done for BMP image
I try to change and add PNGdec but I cannot succeed to extract image
I saw you do extract image here
icBitmap = (uint8_t *)malloc(fi.uncompressed_size); // allocate enough to hold the bitmap
But how to pass this to PNGdec ?
As using filemane give me dimension and other things but cannot decode and display
Kind regards
Hello,
I would have a question.
Do you have some example code for SdFat library (https://github.com/greiman/SdFat)?
I would like to use your library, but on STM32, I can't use the standard SD library.
Hi,
I have tested the SD example that works good
But porting the library in my sketch ( just #include <unzipLIB.h>) bring compilation error :
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\adler32.c.o: in function adler32_z': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/adler32.c:67: multiple definition of
adler32_z'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\adler32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/adler32.c:67: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\adler32.c.o: in function adler32': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/adler32.c:138: multiple definition of
adler32'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\adler32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/adler32.c:138: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\adler32.c.o: in function adler32_combine': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/adler32.c:176: multiple definition of
adler32_combine'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\adler32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/adler32.c:176: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\adler32.c.o: in function adler32_combine64': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/adler32.c:184: multiple definition of
adler32_combine64'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\adler32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/adler32.c:184: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\crc32.c.o: in function get_crc_table': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/crc32.c:189: multiple definition of
get_crc_table'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\crc32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/crc32.c:189: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\crc32.c.o: in function crc32_z': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/crc32.c:206: multiple definition of
crc32_z'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\crc32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/crc32.c:206: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\crc32.c.o: in function crc32': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/crc32.c:241: multiple definition of
crc32'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\crc32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/crc32.c:241: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\crc32.c.o: in function crc32_combine': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/crc32.c:432: multiple definition of
crc32_combine'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\crc32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/crc32.c:432: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\crc32.c.o: in function crc32_combine64': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/crc32.c:440: multiple definition of
crc32_combine64'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\crc32.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/crc32.c:440: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\infback.c.o: in function inflateBackInit_': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/infback.c:34: multiple definition of
inflateBackInit_'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\infback.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/infback.c:34: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\infback.c.o: in function inflateBack': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/infback.c:256: multiple definition of
inflateBack'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\infback.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/infback.c:256: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\infback.c.o: in function inflateBackEnd': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/infback.c:633: multiple definition of
inflateBackEnd'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\infback.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/infback.c:633: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inffast.c.o: in function inflate_fast': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inffast.c:53: multiple definition of
inflate_fast'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inffast.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inffast.c:53: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateResetKeep': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:121: multiple definition of
inflateResetKeep'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:121: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateReset': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:146: multiple definition of
inflateReset'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:146: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateReset2': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:160: multiple definition of
inflateReset2'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:160: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateInit2_': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:201: multiple definition of
inflateInit2_'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:200: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateInit_': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:247: multiple definition of
inflateInit_'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:244: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflatePrime': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:255: multiple definition of
inflatePrime'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:252: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflate': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:631: multiple definition of
inflate'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:626: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateEnd': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1293: multiple definition of
inflateEnd'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1280: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateGetDictionary': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1309: multiple definition of
inflateGetDictionary'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1296: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateSetDictionary': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1332: multiple definition of
inflateSetDictionary'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1319: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateGetHeader': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1366: multiple definition of
inflateGetHeader'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1353: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateSync': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1416: multiple definition of
inflateSync'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1403: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateSyncPoint': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1467: multiple definition of
inflateSyncPoint'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1454: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateCopy': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1478: multiple definition of
inflateCopy'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1465: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateUndermine': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1525: multiple definition of
inflateUndermine'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1512: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateValidate': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1543: multiple definition of
inflateValidate'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1530: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateMark': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1557: multiple definition of
inflateMark'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1544: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inflate.c.o: in function inflateCodesUsed': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inflate.c:1570: multiple definition of
inflateCodesUsed'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inflate.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inflate.c:1557: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inftrees.c.o: in function inflate_table': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inftrees.c:39: multiple definition of
inflate_table'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inftrees.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inftrees.c:39: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\inftrees.c.o:c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/inftrees.c:11: multiple definition of inflate_copyright'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\inftrees.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/inftrees.c:11: first defined here c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\zutil.c.o: in function
zlibVersion':
c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/zutil.c:28: multiple definition of zlibVersion'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/zutil.c:28: first defined here c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\zutil.c.o: in function
zlibCompileFlags':
c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/zutil.c:33: multiple definition of zlibCompileFlags'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/zutil.c:33: first defined here c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/zutil.c:13: multiple definition of
z_errmsg'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/zutil.c:13: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\zutil.c.o: in function zError': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/zutil.c:135: multiple definition of
zError'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/zutil.c:135: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\zutil.c.o: in function zcalloc': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/zutil.c:309: multiple definition of
zcalloc'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/zutil.c:309: first defined here
c:/users/francis/appdata/local/arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\arduino_783879\zutil.c.o: in function zcfree': c:\Users\francis\Documents\Arduino\libraries\arduino_783879\src/zutil.c:319: multiple definition of
zcfree'; C:\Users\francis\AppData\Local\Temp\arduino\sketches\358A2753F82A48EF6338E76ED220E33A\libraries\unzipLIB-master\zutil.c.o:c:\Users\francis\Documents\Arduino\libraries\unzipLIB-master\src/zutil.c:319: first defined here
collect2.exe: error: ld returned 1 exit status
Any suggestion for fixing those problem ?
best rgds
Hi,
I'm still not able to read the unzipped data chunk by chunk.
If I would read it at once, It would not fit into RAM. My unzipped data size is 393 KB
If I comment out Block 2, it is working, but I would like to read 512 bytes one after another:
...
#define BUFF_SIZE 512
static uint8_t l_Buff[BUFF_SIZE];
...
// Block 1
zip.openCurrentFile();
mySeek(&myfile, 0, SEEK_SET);
int readSize = zip.readCurrentFile(l_Buff, BUFF_SIZE);
Serial.print("Bytes read in buffer: "); Serial.println(readSize);
binFile.write(l_Buff, BUFF_SIZE);
// Block 2
mySeek(&myfile, 512, SEEK_SET);
readSize = zip.readCurrentFile(l_Buff, BUFF_SIZE);
Serial.print("Bytes read in buffer: "); Serial.println(readSize);
binFile.write(l_Buff, BUFF_SIZE);
If ZIP file is not OK or not a ZIP file, it crashed.
If I open a ZIP file, that is not OK, e.g. wrong transmission from server or not a ZIP file, it crashed.
Guru Meditation Error: Core 1 panic'ed (InstrFetchProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x00000000 PS : 0x00060330 A0 : 0x800e1e2d A1 : 0x3ffb2150
A2 : 0x00000000 A3 : 0x48004901 A4 : 0x00000000 A5 : 0x3ffc692c
A6 : 0x48000101 A7 : 0x00000000 A8 : 0x800e1e0c A9 : 0x3ffb2120
A10 : 0x3ffc692c A11 : 0x3ffb2178 A12 : 0x0000f15c A13 : 0x0000f15c
A14 ets Jul 29 2019 12:21:46
Please insert a function to compare the ZIP file, if it is correct.
Hi,
I could create a simple program to test your library with SdFat library, instead of standard Arduino SD.
But I realized, that I still have a problem.
I would like to implement FOTA, so I will download the application.zip file.
Then I want to unzip it (application.bin).
The .bin file is quite large (393216 byte). I don't have this much memory. (I have 56+4 KB of SRAM on STM32F429ZI).
So my question, how can I use your library, so that I can write this larga application.bin to the SD card in chunkwise manner?
Here is my code:
#include <Arduino.h>
#include <unzipLIB.h>
#include "SdFat.h"
#include "sdios.h"
SPIClass SPI_4(PE6, PE5, PE2); // MOSI, MISO. SCLK
const uint8_t SD_CS_PIN = PE4;
#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SD_SCK_MHZ(4), &SPI_4)
UNZIP zip; // statically allocate the UNZIP structure (41K)
SdFat sd;
File root;
static File myfile;
static File myfileAnother;
void * myOpen(const char *filename, int32_t *size) {
root.open("/");
myfileAnother.open(filename);
*size = (uint32_t)myfileAnother.fileSize();
return (void *)&myfileAnother;
}
void myClose(void *p) {
ZIPFILE *pzf = (ZIPFILE *)p;
File *f = (File *)pzf->fHandle;
if (f) f->close();
}
int32_t myRead(void *p, uint8_t *buffer, int32_t length) {
ZIPFILE *pzf = (ZIPFILE *)p;
File *f = (File *)pzf->fHandle;
return f->read(buffer, length);
}
int32_t mySeek(void *p, int32_t position, int iType) {
ZIPFILE *pzf = (ZIPFILE *)p;
File *f = (File *)pzf->fHandle;
if (iType == SEEK_SET)
return f->seek(position);
else if (iType == SEEK_END) {
return f->seek(position + pzf->iSize);
} else { // SEEK_CUR
long l = f->position();
return f->seek(l + position);
}
}
void setup() {
Serial.begin(115200);
while (!Serial && millis() < 3000);
Serial.println("Search for ZIP files on the SD card");
if (!sd.begin(SD_CONFIG))
{
sd.initErrorHalt(&Serial);
Serial.println("Unable to access SD Card");
}
if (!root.open("/"))
{
Serial.println("Open root failed");
}
//////////////////////////////////////////////////////////////////////////////
int rc;
char szComment[256], szName[256];
unz_file_info fi;
const char *name = "application.zip";
if (!myfile.open(name, O_RDONLY))
{
Serial.println("Opening application.zip failed");
}
Serial.println("Openend application.zip");
rc = rc = zip.openZIP(name, myOpen, myClose, myRead, mySeek);
if (rc == UNZ_OK) {
Serial.print("ZIP file found");
// Display the global comment and all of the filenames within
rc = zip.getGlobalComment(szComment, sizeof(szComment));
Serial.print("Files in this archive: ");
zip.gotoFirstFile();
rc = UNZ_OK;
rc = zip.getFileInfo(&fi, szName, sizeof(szName), NULL, 0, szComment, sizeof(szComment));
if (rc == UNZ_OK) {
Serial.println(szName);
Serial.print("Compressed size: "); Serial.println(fi.compressed_size, DEC);
Serial.print("Uncompressed size: "); Serial.println(fi.uncompressed_size, DEC);
}
zip.closeZIP();
}
}
void loop() {}
Good day. Please give an example of unzip to esp32 from SPIFFS. Thank you.
must use RAM 41K,can not save some?
maybe can 32K to 16K?
change MAX_WBITS or other。。
Hi,
thanks for sharing your library
I am testing your example on ESP32 to get pgn on my SD card
I found a little mistake in your code at line 85 : rc = rc = zip.openZIP(name, myOpen, myClose, myRead, mySeek);
I think it should be rc = zip.openZIP(name, myOpen, myClose, myRead, mySeek);
Right ?
Now I place a chitubox zip at root on the SD card (I check there is PNG there inside)
the serial give me
File: Carriage.ZIP
[869141][E][vfs_api.cpp:29] open(): Carriage.ZIP does not start with /
this error message seem to come from library, can you help to solve the pb ?
Kind regards
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.