2019-07-22 11:13:43 +02:00
|
|
|
/*
|
|
|
|
* uzlib - tiny deflate/inflate library (deflate, gzip, zlib)
|
|
|
|
*
|
|
|
|
* Copyright (c) 2003 by Joergen Ibsen / Jibz
|
|
|
|
* All Rights Reserved
|
|
|
|
* http://www.ibsensoftware.com/
|
|
|
|
*
|
|
|
|
* Copyright (c) 2014-2016 by Paul Sokolovsky
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef UZLIB_INFLATE_H
|
|
|
|
#define UZLIB_INFLATE_H
|
|
|
|
|
|
|
|
#include <setjmp.h>
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#define uz_malloc malloc
|
|
|
|
#define uz_free free
|
|
|
|
|
Initial support for ESP32-C6 and ESP32-H2, plus assorted fixes & improvements (#3646)
* Proof-of-concept multi-type console support via stdio
* Address crashes on linput's use of printf.
On an empty line input, a C3 with UART console would panic while attempting
to output the new Lua prompt. The backtrace shows a xQueueSemaphoreTake
with uxItemSize==0 as the panic cause, deep inside the uart driver, invoked
via vfs_uart and vfs_console layers, from printf.
Similarly, the printf for outputting a backspace/erase sequence would also
trigger a panic.
This workaround (of not mixing fflush() with printf) is likely merely hiding
a deeper issue, but it appears to be consistent. Plus, printf with no args
and a user-supplied format string is a no-no and should be fixed anyway.
* Work around IDF inconsistency with stdout buffering.
* Increase console task stack size.
Seems on Xtensa it ended up not being enough.
* Switch to single-byte console reads.
* Stop cheating and feed Lua from the right context.
* Work around IDF buffering stdout even when told not to, on ACM consoles.
* Initial build support for esp32c6.
Plus fixup of module selection for a variety of targets.
* Update github actions to node 20 versions.
* Update github build to deal with Lua 5.3 being default.
* Address fatal compiler warning.
Newer IDF toolchain is stricter, and we'd apparently failed to build test
the Lua-5.1 path for some time.
* Initial build support for esp32h2.
* Upgrade IDF to v5.1.3
* Fix left-over incorrect type in uzlib.
* Avoid null pointer crashes when debugging startup.
* Workaround for using wifi module on S2 with USB-CDC console.
---------
Co-authored-by: Jade Mattsson <github@frozenlogic.org>
2024-04-26 23:35:22 +02:00
|
|
|
#if defined(CONFIG_IDF_TARGET)
|
2019-07-22 11:13:43 +02:00
|
|
|
|
|
|
|
#define UZLIB_THROW(v) longjmp(unwindAddr, (v))
|
|
|
|
#define UZLIB_SETJMP setjmp
|
|
|
|
|
|
|
|
#else /* Host */
|
|
|
|
|
|
|
|
extern int dbg_break(void);
|
|
|
|
#if defined(_MSC_VER) || defined(__MINGW32__) //msvc requires old name for longjmp
|
|
|
|
#define UZLIB_THROW(v) {dbg_break();longjmp(unwindAddr, (v));}
|
|
|
|
#define UZLIB_SETJMP(n) setjmp(n)
|
|
|
|
#else
|
|
|
|
#define UZLIB_THROW(v) {dbg_break();_longjmp(unwindAddr, (v));}
|
|
|
|
#define UZLIB_SETJMP(n) _setjmp(n)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* defined(__XTENSA__) */
|
|
|
|
|
|
|
|
extern jmp_buf unwindAddr;
|
|
|
|
|
|
|
|
/* ok status, more data produced */
|
|
|
|
#define UZLIB_OK 0
|
|
|
|
/* end of compressed stream reached */
|
|
|
|
#define UZLIB_DONE 1
|
|
|
|
#define UZLIB_DATA_ERROR (-3)
|
|
|
|
#define UZLIB_CHKSUM_ERROR (-4)
|
|
|
|
#define UZLIB_DICT_ERROR (-5)
|
|
|
|
#define UZLIB_MEMORY_ERROR (-6)
|
|
|
|
|
|
|
|
/* checksum types */
|
|
|
|
#define UZLIB_CHKSUM_NONE 0
|
|
|
|
#define UZLIB_CHKSUM_ADLER 1
|
|
|
|
#define UZLIB_CHKSUM_CRC 2
|
|
|
|
|
|
|
|
/* Gzip header codes */
|
|
|
|
#define UZLIB_FTEXT 1
|
|
|
|
#define UZLIB_FHCRC 2
|
|
|
|
#define UZLIB_FEXTRA 4
|
|
|
|
#define UZLIB_FNAME 8
|
|
|
|
#define UZLIB_FCOMMENT 16
|
|
|
|
|
|
|
|
/* Compression API */
|
|
|
|
|
|
|
|
typedef struct uzlib_data UZLIB_DATA;
|
|
|
|
|
|
|
|
int uzlib_inflate (uint8_t (*)(void), void (*)(uint8_t),
|
|
|
|
uint8_t (*)(uint32_t), uint32_t len, uint32_t *crc, void **state);
|
|
|
|
|
|
|
|
int uzlib_compress (uint8_t **dest, uint32_t *destLen,
|
|
|
|
const uint8_t *src, uint32_t srcLen);
|
|
|
|
|
|
|
|
/* Checksum API */
|
|
|
|
/* crc is previous value for incremental computation, 0xffffffff initially */
|
|
|
|
uint32_t uzlib_crc32(const void *data, uint32_t length, uint32_t crc);
|
|
|
|
|
|
|
|
#endif /* UZLIB_INFLATE_H */
|