From 596c7472116a9204c5a32cc3d9e588fa8a4b6feb Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Mon, 16 Aug 2021 16:43:17 -0700 Subject: [PATCH] make UNAME externally definable on top of providing a central definition place, which eases maintenance, it might also help for #1021. Also : updated doc --- Makefile | 2 +- Makefile.inc | 12 +++++++----- doc/lz4_manual.html | 4 ++-- doc/lz4frame_manual.html | 6 +++--- programs/Makefile | 3 ++- tests/Makefile | 4 ++-- 6 files changed, 17 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index b98bb68..7a5c1ef 100644 --- a/Makefile +++ b/Makefile @@ -109,7 +109,7 @@ cmake: endif # POSIX_ENV -ifneq (,$(filter MSYS%,$(shell uname))) +ifneq (,$(filter MSYS%,$(shell $(UNAME)))) HOST_OS = MSYS CMAKE_PARAMS = -G"MSYS Makefiles" endif diff --git a/Makefile.inc b/Makefile.inc index 0840a56..89bb151 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -30,7 +30,9 @@ # - LZ4 forum froup : https://groups.google.com/forum/#!forum/lz4c # ################################################################ -TARGET_OS ?= $(shell uname) +UNAME ?= uname + +TARGET_OS ?= $(shell $(UNAME)) ifeq ($(TARGET_OS),) TARGET_OS ?= $(OS) endif @@ -67,7 +69,7 @@ WINDRES = windres endif #determine if dev/nul based on host environment -ifneq (,$(filter MINGW% MSYS% CYGWIN%,$(shell uname))) +ifneq (,$(filter MINGW% MSYS% CYGWIN%,$(shell $(UNAME)))) VOID := /dev/null else ifneq (,$(filter Windows%,$(OS))) @@ -77,7 +79,7 @@ VOID := /dev/null endif endif -ifneq (,$(filter Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku MidnightBSD MINGW% CYGWIN% MSYS%,$(shell uname))) +ifneq (,$(filter Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku MidnightBSD MINGW% CYGWIN% MSYS%,$(shell $(UNAME)))) POSIX_ENV = Yes else POSIX_ENV = No @@ -87,7 +89,7 @@ endif ifeq ($(WINBASED),yes) LN_SF = cp -p else - ifneq (,$(filter MINGW% MSYS% CYGWIN%,$(shell uname))) + ifneq (,$(filter MINGW% MSYS% CYGWIN%,$(shell $(UNAME)))) LN_SF = cp -p else ifneq (,$(filter Windows%,$(OS))) @@ -98,7 +100,7 @@ LN_SF = ln -sf endif endif -ifneq (,$(filter $(shell uname),SunOS)) +ifneq (,$(filter $(shell $(UNAME)),SunOS)) INSTALL ?= ginstall else INSTALL ?= install diff --git a/doc/lz4_manual.html b/doc/lz4_manual.html index 47fe18d..b6f304b 100644 --- a/doc/lz4_manual.html +++ b/doc/lz4_manual.html @@ -393,7 +393,7 @@ int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream);

It's possible to have input and output sharing the same buffer, - for highly contrained memory environments. + for highly constrained memory environments. In both cases, it requires input to lay at the end of the buffer, and decompression to start at beginning of the buffer. Buffer size must feature some margin, hence be larger than final size. @@ -459,7 +459,7 @@ int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream); size_t prefixSize; } LZ4_streamDecode_t_internal;


-
#define LZ4_STREAMSIZE       16416  /* static size, for inter-version compatibility */
+
#define LZ4_STREAMSIZE       ((1UL << LZ4_MEMORY_USAGE) + 32)  /* static size, for inter-version compatibility */
 #define LZ4_STREAMSIZE_VOIDP (LZ4_STREAMSIZE / sizeof(void*))
 union LZ4_stream_u {
     void* table[LZ4_STREAMSIZE_VOIDP];
diff --git a/doc/lz4frame_manual.html b/doc/lz4frame_manual.html
index 57a165c..281c0d6 100644
--- a/doc/lz4frame_manual.html
+++ b/doc/lz4frame_manual.html
@@ -140,7 +140,8 @@ LZ4F_errorCode_t LZ4F_freeCompressionContext(LZ4F_cctx* cctx);
  The version provided MUST be LZ4F_VERSION. It is intended to track potential version mismatch, notably when using DLL.
  The function will provide a pointer to a fully allocated LZ4F_cctx object.
  If @return != zero, there was an error during context creation.
- Object can release its memory using LZ4F_freeCompressionContext();
+ Object can be released using LZ4F_freeCompressionContext();
+ Note: LZ4F_freeCompressionContext() works with NULL pointers (do nothing).
  
 


@@ -182,8 +183,7 @@ LZ4F_errorCode_t LZ4F_freeCompressionContext(LZ4F_cctx* cctx); Important rule: dstCapacity MUST be large enough to ensure operation success even in worst case situations. This value is provided by LZ4F_compressBound(). If this condition is not respected, LZ4F_compress() will fail (result is an errorCode). - LZ4F_compressUpdate() doesn't guarantee error recovery. - When an error occurs, compression context must be freed or resized. + After an error, the state is left in a UB state, and must be re-initialized or freed. `cOptPtr` is optional : NULL can be provided, in which case all options are set to default. @return : number of bytes written into `dstBuffer` (it can be zero, meaning input data was just buffered). or an error code if it fails (which can be tested using LZ4F_isError()) diff --git a/programs/Makefile b/programs/Makefile index 811ab72..ace0d03 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -55,7 +55,8 @@ CFLAGS += $(DEBUGFLAGS) $(MOREFLAGS) include ../Makefile.inc -ifeq ($(TARGET_OS)$(shell uname -r),SunOS5.10) +OS_VERSION ?= $(UNAME) -r +ifeq ($(TARGET_OS)$(shell $(OS_VERSION)),SunOS5.10) LDFLAGS += -lrt endif diff --git a/tests/Makefile b/tests/Makefile index 83e3fcb..00f6f3b 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -145,14 +145,14 @@ checkTag: checkTag.c $(LZ4DIR)/lz4.h ifeq ($(POSIX_ENV),Yes) MD5:=md5sum -ifneq (,$(filter $(shell uname), Darwin )) +ifneq (,$(filter $(shell $(UNAME)), Darwin )) MD5:=md5 -r endif # note : we should probably settle on a single compare utility CMP:=cmp DIFF:=diff -ifneq (,$(filter $(shell uname),SunOS)) +ifneq (,$(filter $(shell $(UNAME)),SunOS)) DIFF:=gdiff endif