mirror of
https://github.com/nodemcu/nodemcu-firmware.git
synced 2025-01-16 20:52:57 +08:00
526d21dab4
The PR removed the bulk of non-newlib headers from the NodeMCU source base. app/libc has now been cut down to the bare minimum overrides to shadow the corresponding functions in the SDK's libc. The old c_xyz.h headerfiles have been nuked in favour of the standard <xyz.h> headers, with a few exceptions over in sdk-overrides. Again, shipping a libc.a without headers is a terrible thing to do. We're still living on a prayer that libc was configured the same was as a default-configured xtensa gcc toolchain assumes it is. That part I cannot do anything about, unfortunately, but it's no worse than it has been before. This enables our source files to compile successfully using the standard header files, and use the typical malloc()/calloc()/realloc()/free(), the strwhatever()s and memwhatever()s. These end up, through macro and linker magic, mapped to the appropriate SDK or ROM functions.
78 lines
1.9 KiB
C
78 lines
1.9 KiB
C
/*
|
|
* 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
|
|
|
|
#if defined(__XTENSA__)
|
|
|
|
#include "mem.h"
|
|
#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 */
|