]> git.ipfire.org Git - thirdparty/xz.git/log
thirdparty/xz.git
3 years agoliblzma: Convert list of flags in lzma_mt to bulleted list.
Jia Tan [Mon, 6 Feb 2023 15:42:08 +0000 (23:42 +0800)] 
liblzma: Convert list of flags in lzma_mt to bulleted list.

3 years agoliblzma: Fix typo in documentation in container.h
Jia Tan [Thu, 26 Jan 2023 15:17:41 +0000 (23:17 +0800)] 
liblzma: Fix typo in documentation in container.h

lzma_microlzma_decoder -> lzma_microlzma_encoder

3 years agoliblzma: Improve documentation for container.h
Jia Tan [Thu, 26 Jan 2023 15:16:34 +0000 (23:16 +0800)] 
liblzma: Improve documentation for container.h

Standardizing each function to always specify parameters and return
values. Also moved the parameters and return values to the end of each
function description.

3 years agoCMake: Add LZIP decoder test to list of tests.
Jia Tan [Wed, 22 Feb 2023 12:59:41 +0000 (20:59 +0800)] 
CMake: Add LZIP decoder test to list of tests.

3 years agoUpdate THANKS.
Lasse Collin [Fri, 17 Feb 2023 18:56:49 +0000 (20:56 +0200)] 
Update THANKS.

3 years agoBuild: Use only the generic symbol versioning on MicroBlaze.
Lasse Collin [Fri, 17 Feb 2023 18:48:28 +0000 (20:48 +0200)] 
Build: Use only the generic symbol versioning on MicroBlaze.

On MicroBlaze, GCC 12 is broken in sense that
__has_attribute(__symver__) returns true but it still doesn't
support the __symver__ attribute even though the platform is ELF
and symbol versioning is supported if using the traditional
__asm__(".symver ...") method. Avoiding the traditional method is
good because it breaks LTO (-flto) builds with GCC.

See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101766

For now the only extra symbols in liblzma_linux.map are the
compatibility symbols with the patch that spread from RHEL/CentOS 7.
These require the use of __symver__ attribute or __asm__(".symver ...")
in the C code. Compatibility with the patch from CentOS 7 doesn't
seem valuable on MicroBlaze so use liblzma_generic.map on MicroBlaze
instead. It doesn't require anything special in the C code and thus
no LTO issues either.

An alternative would be to detect support for __symver__
attribute in configure.ac and CMakeLists.txt and fall back
to __asm__(".symver ...") but then LTO would be silently broken
on MicroBlaze. It sounds likely that MicroBlaze is a special
case so let's treat it as a such because that is simpler. If
a similar issue exists on some other platform too then hopefully
someone will report it and this can be reconsidered.

(This doesn't do the same fix in CMakeLists.txt. Perhaps it should
but perhaps CMake build of liblzma doesn't matter much on MicroBlaze.
The problem breaks the build so it's easy to notice and can be fixed
later.)

Thanks to Vincent Fazio for reporting the problem and proposing
a patch (in the end that solution wasn't used):
https://github.com/tukaani-project/xz/pull/32

3 years agoliblzma: Very minor API doc tweaks.
Lasse Collin [Thu, 16 Feb 2023 19:09:00 +0000 (21:09 +0200)] 
liblzma: Very minor API doc tweaks.

Use "member" to refer to struct members as that's the term used
by the C standard.

Use lzma_options_delta.dist and such in docs so that in Doxygen's
HTML output they will link to the doc of the struct member.

Clean up a few trailing white spaces too.

3 years agoliblzma: Adjust spacing in doc headers in bcj.h.
Jia Tan [Thu, 16 Feb 2023 16:54:33 +0000 (00:54 +0800)] 
liblzma: Adjust spacing in doc headers in bcj.h.

3 years agoliblzma: Adjust documentation in bcj.h for consistent style.
Jia Tan [Thu, 16 Feb 2023 16:44:44 +0000 (00:44 +0800)] 
liblzma: Adjust documentation in bcj.h for consistent style.

3 years agoliblzma: Rename field => member in documentation.
Jia Tan [Thu, 16 Feb 2023 16:36:05 +0000 (00:36 +0800)] 
liblzma: Rename field => member in documentation.

Also adjusted preset value => preset level.

3 years agoliblzma: Silence a warning from MSVC.
Lasse Collin [Thu, 16 Feb 2023 15:59:50 +0000 (17:59 +0200)] 
liblzma: Silence a warning from MSVC.

It gives C4146 here since unary minus with unsigned integer
is still unsigned (which is the intention here). Doing it
with substraction makes it clearer and avoids the warning.

Thanks to Nathan Moinvaziri for reporting this.

3 years ago liblzma: Improve documentation for stream_flags.h
Jia Tan [Thu, 16 Feb 2023 13:04:54 +0000 (21:04 +0800)] 
 liblzma: Improve documentation for stream_flags.h

Standardizing each function to always specify parameters and return
values. Also moved the parameters and return values to the end of each
function description.

A few small things were reworded and long sentences broken up.

3 years agoliblzma: Improve documentation in lzma12.h.
Jia Tan [Tue, 14 Feb 2023 13:50:16 +0000 (21:50 +0800)] 
liblzma: Improve documentation in lzma12.h.

All functions now explicitly specify parameter and return values.

3 years agoliblzma: Improve documentation in check.h.
Jia Tan [Fri, 27 Jan 2023 14:44:06 +0000 (22:44 +0800)] 
liblzma: Improve documentation in check.h.

All functions now explicitly specify parameter and return values.
Also moved the note about SHA-256 functions not being exported to the
top of the file.

3 years agoliblzma: Improve documentation in index.h
Jia Tan [Wed, 8 Feb 2023 13:33:52 +0000 (21:33 +0800)] 
liblzma: Improve documentation in index.h

All functions now explicitly specify parameter and return values.

3 years agoliblzma: Reword a comment in index.h.
Jia Tan [Wed, 8 Feb 2023 12:35:32 +0000 (20:35 +0800)] 
liblzma: Reword a comment in index.h.

3 years agoliblzma: Omit lzma_index_iter's internal field from Doxygen docs.
Jia Tan [Wed, 8 Feb 2023 12:30:23 +0000 (20:30 +0800)] 
liblzma: Omit lzma_index_iter's internal field from Doxygen docs.

Add \private above this field and its sub-fields since it is not meant
to be modified by users.

3 years agoliblzma: Fix documentation for LZMA_MEMLIMIT_ERROR.
Jia Tan [Sat, 21 Jan 2023 13:32:03 +0000 (21:32 +0800)] 
liblzma: Fix documentation for LZMA_MEMLIMIT_ERROR.

LZMA_MEMLIMIT_ERROR was missing the "<" character needed to put
documentation after a member.

3 years agoliblzma: Improve documentation for base.h.
Jia Tan [Fri, 20 Jan 2023 16:29:38 +0000 (00:29 +0800)] 
liblzma: Improve documentation for base.h.

Standardizing each function to always specify params and return values.
Also fixed a small grammar mistake.

3 years agoliblzma: Add one more missing [out] annotation in vli.h
Jia Tan [Mon, 13 Feb 2023 16:12:34 +0000 (00:12 +0800)] 
liblzma: Add one more missing [out] annotation in vli.h

3 years agoliblzma: Minor improvements to vli.h.
Jia Tan [Mon, 13 Feb 2023 16:08:33 +0000 (00:08 +0800)] 
liblzma: Minor improvements to vli.h.

Added [out] annotations to parameters that are pointers and can have
their value changed. Also added a clarification to lzma_vli_is_valid.

3 years agoliblzma: Add comments for macros in delta.h.
Jia Tan [Fri, 10 Feb 2023 13:38:02 +0000 (21:38 +0800)] 
liblzma: Add comments for macros in delta.h.

Document LZMA_DELTA_DIST_MIN and LZMA_DELTA_DIST_MAX for completeness
and to avoid Doxygen warnings.

3 years agoliblzma: Improve documentation in index_hash.h.
Jia Tan [Fri, 10 Feb 2023 13:35:23 +0000 (21:35 +0800)] 
liblzma: Improve documentation in index_hash.h.

All functions now explicitly specify parameter and return values.
Also reworded the description of lzma_index_hash_init() for readability.

3 years agoxz: Improve the comment about start_time in mytime.c.
Lasse Collin [Tue, 7 Feb 2023 17:07:45 +0000 (19:07 +0200)] 
xz: Improve the comment about start_time in mytime.c.

start_time is relative to an arbitary point in time, it's not
time of day, so using it for anything else than time differences
wouldn't make sense.

3 years agoBuild: Adjust CMake version search regex.
Jia Tan [Sat, 4 Feb 2023 13:06:35 +0000 (21:06 +0800)] 
Build: Adjust CMake version search regex.

Now, the LZMA_VERSION_MAJOR, LZMA_VERSION_MINOR, and LZMA_VERSION_PATCH
macros do not need to be on consecutive lines in version.h. They can be
separated by more whitespace, comments, or even other content, as long
as they appear in the proper order (major, minor, patch).

3 years agoxz: Add a comment clarifying the use of start_time in mytime.c.
Jia Tan [Sat, 4 Feb 2023 04:01:23 +0000 (12:01 +0800)] 
xz: Add a comment clarifying the use of start_time in mytime.c.

3 years agoliblzma: Improve documentation for version.h.
Jia Tan [Thu, 26 Jan 2023 01:50:21 +0000 (09:50 +0800)] 
liblzma: Improve documentation for version.h.

Specified parameter and return values for API functions and documented
a few more of the macros.

3 years agoDocs: Omit SIGTSTP not handled from TODO.
Jia Tan [Fri, 3 Feb 2023 14:52:55 +0000 (22:52 +0800)] 
Docs: Omit SIGTSTP not handled from TODO.

3 years agoliblzma: Fix bug in lzma_str_from_filters() not checking filters[] length.
Jia Tan [Thu, 2 Feb 2023 16:33:32 +0000 (00:33 +0800)] 
liblzma: Fix bug in lzma_str_from_filters() not checking filters[] length.

The bug is only a problem in applications that do not properly terminate
the filters[] array with LZMA_VLI_UNKNOWN or have more than
LZMA_FILTERS_MAX filters. This bug does not affect xz.

3 years agoTests: Create test_filter_str.c.
Jia Tan [Thu, 2 Feb 2023 16:32:47 +0000 (00:32 +0800)] 
Tests: Create test_filter_str.c.

Tests lzma_str_to_filters(), lzma_str_from_filters(), and
lzma_str_list_filters() API functions.

3 years agoliblzma: Fix typos in comments in string_conversion.c.
Jia Tan [Sun, 22 Jan 2023 00:49:00 +0000 (08:49 +0800)] 
liblzma: Fix typos in comments in string_conversion.c.

3 years agoliblzma: Clarify block encoder and decoder documentation.
Jia Tan [Thu, 2 Feb 2023 16:20:20 +0000 (00:20 +0800)] 
liblzma: Clarify block encoder and decoder documentation.

Added a few sentences to the description for lzma_block_encoder() and
lzma_block_decoder() to highlight that the Block Header must be coded
before calling these functions.

3 years agoUpdate lzma_block documentation for lzma_block_uncomp_encode().
Jia Tan [Thu, 2 Feb 2023 16:12:24 +0000 (00:12 +0800)] 
Update lzma_block documentation for lzma_block_uncomp_encode().

3 years agoliblzma: Minor edits to lzma_block header_size documentation.
Jia Tan [Thu, 2 Feb 2023 16:11:37 +0000 (00:11 +0800)] 
liblzma: Minor edits to lzma_block header_size documentation.

3 years agoliblzma: Enumerate functions that read version in lzma_block.
Jia Tan [Thu, 2 Feb 2023 16:11:07 +0000 (00:11 +0800)] 
liblzma: Enumerate functions that read version in lzma_block.

3 years agoliblzma: Clarify comment in block.h.
Jia Tan [Thu, 2 Feb 2023 16:10:34 +0000 (00:10 +0800)] 
liblzma: Clarify comment in block.h.

3 years agoliblzma: Improve documentation for block.h.
Jia Tan [Thu, 2 Feb 2023 16:07:23 +0000 (00:07 +0800)] 
liblzma: Improve documentation for block.h.

Standardizing each function to always specify params and return values.
Output pointer parameters are also marked with doxygen style [out] to
make it clear. Any note sections were also moved above the parameter and
return sections for consistency.

3 years agoliblzma: Clarify a comment about LZMA_STR_NO_VALIDATION.
Jia Tan [Wed, 1 Feb 2023 15:38:30 +0000 (23:38 +0800)] 
liblzma: Clarify a comment about LZMA_STR_NO_VALIDATION.

The flag description for LZMA_STR_NO_VALIDATION was previously confusing
about the treatment for filters than cannot be used with .xz format
(lzma1) without using LZMA_STR_ALL_FILTERS. Now, it is clear that
LZMA_STR_NO_VALIDATION is not a super set of LZMA_STR_ALL_FILTERS.

3 years agoCI: Update .gitignore for artifacts directory in build-aux.
Jia Tan [Wed, 1 Feb 2023 13:43:33 +0000 (21:43 +0800)] 
CI: Update .gitignore for artifacts directory in build-aux.

The workflow action for our CI pipeline can only reference artifacts in
the source directory, so we should ignore these files if the ci_build.sh
is run locally.

3 years agoCI: Add quotes around variables in a few places.
Jia Tan [Wed, 1 Feb 2023 13:36:46 +0000 (21:36 +0800)] 
CI: Add quotes around variables in a few places.

3 years agoCI: Upload test logs as artifacts if a test fails.
Jia Tan [Wed, 1 Feb 2023 13:36:22 +0000 (21:36 +0800)] 
CI: Upload test logs as artifacts if a test fails.

3 years agoxz: Use clock_gettime() even if CLOCK_MONOTONIC isn't available.
Lasse Collin [Fri, 27 Jan 2023 18:02:49 +0000 (20:02 +0200)] 
xz: Use clock_gettime() even if CLOCK_MONOTONIC isn't available.

mythread.h and thus liblzma already does it.

3 years agopo4a/po4a.conf: Sort the language identifiers in alphabetical order.
Lasse Collin [Fri, 27 Jan 2023 17:41:19 +0000 (19:41 +0200)] 
po4a/po4a.conf: Sort the language identifiers in alphabetical order.

3 years agoxz: Add SIGTSTP handler for progress indicator time keeping.
Lasse Collin [Thu, 26 Jan 2023 16:29:17 +0000 (18:29 +0200)] 
xz: Add SIGTSTP handler for progress indicator time keeping.

This way, if xz is stopped the elapsed time and estimated time
remaining won't get confused by the amount of time spent in
the stopped state.

This raises SIGSTOP. It's not clear to me if this is the correct way.
POSIX and glibc docs say that SIGTSTP shouldn't stop the process if
it is orphaned but this commit doesn't attempt to handle that.

Search for SIGTSTP in section 2.4.3:

https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html

3 years agoTranslations: Add Brazilian Portuguese translation of man pages.
Jia Tan [Fri, 27 Jan 2023 12:14:51 +0000 (20:14 +0800)] 
Translations: Add Brazilian Portuguese translation of man pages.

Thanks to Rafael Fontenelle.

3 years agoBuild: Avoid different quoting style in --enable-doxygen doc.
Lasse Collin [Thu, 26 Jan 2023 15:51:06 +0000 (17:51 +0200)] 
Build: Avoid different quoting style in --enable-doxygen doc.

3 years agotuklib_physmem: Check for __has_warning before GCC version.
Lasse Collin [Thu, 26 Jan 2023 15:39:46 +0000 (17:39 +0200)] 
tuklib_physmem: Check for __has_warning before GCC version.

Clang can be configured to fake a too high GCC version so
this way it's more robust.

3 years agoliblzma: Fix documentation in filter.h for lzma_str_to_filters()
Jia Tan [Tue, 24 Jan 2023 12:48:50 +0000 (20:48 +0800)] 
liblzma: Fix documentation in filter.h for lzma_str_to_filters()

The previous documentation for lzma_str_to_filters() was technically
correct, but misleading. lzma_str_to_filters() returns NULL on success,
which is in practice always defined to 0. This is the same value as
LZMA_OK, but lzma_str_to_filters() does not return lzma_ret so we should
be more clear.

3 years agoRevert "tuklib_common: Define __has_warning if it is not defined."
Lasse Collin [Mon, 23 Jan 2023 21:44:58 +0000 (23:44 +0200)] 
Revert "tuklib_common: Define __has_warning if it is not defined."

This reverts commit 82e3c968bfa10e3ff13333bd9cbbadb5988d6766.

Macros in the reserved namespace (_foo or __foo) shouldn't be #defined
without a very good reason. Here the alternative would have been
to #define tuklib_has_warning(str) to an approriate value.

Also the tuklib_* files should stay namespace clean if possible.

3 years agotuklib_physmem: Clean up the way -Wcast-function-type is silenced on Windows.
Lasse Collin [Mon, 23 Jan 2023 21:38:34 +0000 (23:38 +0200)] 
tuklib_physmem: Clean up the way -Wcast-function-type is silenced on Windows.

__has_warning and other __has_foo macros are meant to become
compiler-agnostic so it's not good to check for __clang__ with it.

This also relied on tuklib_common.h for #defining __has_warning
which was confusing as #defining reserved macros is generally
not a good idea.

3 years agoxz: Flip the return value of suffix_is_set to match the documentation.
Lasse Collin [Mon, 23 Jan 2023 22:05:38 +0000 (00:05 +0200)] 
xz: Flip the return value of suffix_is_set to match the documentation.

Also edit style to match the existing coding style in the project.

3 years agoxz: Refactor duplicated check for custom suffix when using --format=raw
Jia Tan [Sat, 7 Jan 2023 13:55:06 +0000 (21:55 +0800)] 
xz: Refactor duplicated check for custom suffix when using --format=raw

3 years agoliblzma: Set documentation on all reserved fields to private.
Jia Tan [Fri, 20 Jan 2023 13:53:14 +0000 (21:53 +0800)] 
liblzma: Set documentation on all reserved fields to private.

This prevents the reserved fields from being part of the generated
Doxygen documentation.

3 years agoDoxygen: Update Doxyfile.in from 1.4.7 to 1.8.17.
Jia Tan [Tue, 20 Dec 2022 13:39:59 +0000 (21:39 +0800)] 
Doxygen: Update Doxyfile.in from 1.4.7 to 1.8.17.

A few Doxygen tags were obsolete from 1.4.7. Version 1.8.17 released
in 2019, so this should be compatible with resonable modern distros.
The purpose of Doxygen these days is for docs on the website, so it
doesn't necessarily have to work for everyone. Just when the maintainers
want to update the docs.

3 years agoDoxygen: Make Doxygen only produce liblzma API documentation by default.
Jia Tan [Tue, 3 Jan 2023 12:37:30 +0000 (20:37 +0800)] 
Doxygen: Make Doxygen only produce liblzma API documentation by default.

Doxygen is now configurable in autotools only with
--enable-doxygen=[api|all]. The default is "api", which will only
generate HTML output for liblzma API functions. The LaTex documentation
output was also disabled.

3 years agoliblzma: Highlight liblzma API headers should not be included directly.
Jia Tan [Wed, 21 Dec 2022 15:59:43 +0000 (23:59 +0800)] 
liblzma: Highlight liblzma API headers should not be included directly.

This improves the generated Doxygen HTML files to better highlight
how to properly use the liblzma API header files.

3 years agotuklib_physmem: Silence warning from -Wcast-function-type on MinGW-w64.
Jia Tan [Thu, 19 Jan 2023 12:35:09 +0000 (20:35 +0800)] 
tuklib_physmem: Silence warning from -Wcast-function-type on MinGW-w64.

tuklib_physmem depends on GetProcAddress() for both MSVC and MinGW-w64
to retrieve a function address. The proper way to do this is to cast the
return value to the type of function pointer retrieved. Unfortunately,
this causes a cast-function-type warning, so the best solution is to
simply ignore the warning.

3 years agotuklib_common: Define __has_warning if it is not defined.
Jia Tan [Thu, 19 Jan 2023 12:32:40 +0000 (20:32 +0800)] 
tuklib_common: Define __has_warning if it is not defined.

clang supports the __has_warning macro to determine if the version of
clang compiling the code supports a given warning. If we do not define
it for other compilers, it may cause a preprocessor error.

3 years agoCI: Reorder 32-bit build first for Linux autotool builds.
Jia Tan [Wed, 18 Jan 2023 14:11:05 +0000 (22:11 +0800)] 
CI: Reorder 32-bit build first for Linux autotool builds.

The 32-bit build needs to be first so the configure cache only needs to
be reset one time. The 32-bit build sets the CFLAGS env variable, so any
build using that flag after will fail unless the cache is reset.

3 years agoCI: Enable --config-cache in autotool builds.
Jia Tan [Wed, 18 Jan 2023 13:51:43 +0000 (21:51 +0800)] 
CI: Enable --config-cache in autotool builds.

If CFLAGS are set in a build, the cache must be cleared with
"make distclean", or by deleting the cache file.

3 years agoxz: Add missing comment for coder_set_compression_settings()
Jia Tan [Mon, 16 Jan 2023 13:35:45 +0000 (21:35 +0800)] 
xz: Add missing comment for coder_set_compression_settings()

3 years agoxz: Do not set compression settings with raw format in list mode.
Jia Tan [Mon, 16 Jan 2023 12:55:10 +0000 (20:55 +0800)] 
xz: Do not set compression settings with raw format in list mode.

Calling coder_set_compression_settings() in list mode with verbose mode
on caused the filter chain and memory requirements to print. This was
unnecessary since the command results in an error and not consistent
with other formats like lzma and alone.

3 years agoTranslations: Update the Brazilian Portuguese translation.
Jia Tan [Fri, 13 Jan 2023 12:37:06 +0000 (20:37 +0800)] 
Translations: Update the Brazilian Portuguese translation.

3 years agoCI: Disable shared and nls from various jobs in autotool runners.
Jia Tan [Thu, 12 Jan 2023 15:43:06 +0000 (23:43 +0800)] 
CI: Disable shared and nls from various jobs in autotool runners.

Disabling shared library generation and linking should help speed up the
runners. The shared library is still being tested in the 32 bit build
and the full feature.

Disabling nls is to check for any unexpected warnings or errors.

3 years agoCI: Reorder the 32-bit job in the Ubuntu runner.
Jia Tan [Thu, 12 Jan 2023 15:39:19 +0000 (23:39 +0800)] 
CI: Reorder the 32-bit job in the Ubuntu runner.

Run the 32 bit job sooner since this is a more interesting test than
some of the later jobs.

3 years agoCI: Allow disabling Native Language Support.
Jia Tan [Thu, 12 Jan 2023 15:09:03 +0000 (23:09 +0800)] 
CI: Allow disabling Native Language Support.

3 years agoCI: Only run autogen.sh if it has not already run.
Jia Tan [Thu, 12 Jan 2023 15:02:20 +0000 (23:02 +0800)] 
CI: Only run autogen.sh if it has not already run.

3 years agoCI: Allow disabling shared library in autotools builds.
Jia Tan [Thu, 12 Jan 2023 14:58:36 +0000 (22:58 +0800)] 
CI: Allow disabling shared library in autotools builds.

3 years agoCI: Improve Usage readability and add -h option.
Jia Tan [Thu, 12 Jan 2023 14:44:18 +0000 (22:44 +0800)] 
CI: Improve Usage readability and add -h option.

3 years agoBuild: Omit -Wmissing-noreturn from the default warnings.
Lasse Collin [Thu, 12 Jan 2023 11:04:05 +0000 (13:04 +0200)] 
Build: Omit -Wmissing-noreturn from the default warnings.

It's not that important. It can be annoying in builds that
disable many features since in those cases the tests programs
will correctly trigger this warning with Clang.

3 years agoxz: Use ssize_t for the to-be-ignored return value from write(fd, ptr, 1).
Lasse Collin [Thu, 12 Jan 2023 04:05:58 +0000 (06:05 +0200)] 
xz: Use ssize_t for the to-be-ignored return value from write(fd, ptr, 1).

It makes no difference here as the return value fits into an int
too and it then gets ignored but this looks better.

3 years agoxz: Silence warnings from -Wsign-conversion in a 32-bit build.
Lasse Collin [Thu, 12 Jan 2023 04:01:12 +0000 (06:01 +0200)] 
xz: Silence warnings from -Wsign-conversion in a 32-bit build.

3 years agoliblzma: Silence another warning from -Wsign-conversion in a 32-bit build.
Lasse Collin [Thu, 12 Jan 2023 03:38:48 +0000 (05:38 +0200)] 
liblzma: Silence another warning from -Wsign-conversion in a 32-bit build.

It doesn't warn on a 64-bit system because truncating
a ptrdiff_t (signed long) to uint32_t is diagnosed under
-Wconversion by GCC and -Wshorten-64-to-32 by Clang.

3 years agoliblzma: Silence a warning from -Wsign-conversion in a 32-bit build.
Lasse Collin [Thu, 12 Jan 2023 02:46:45 +0000 (04:46 +0200)] 
liblzma: Silence a warning from -Wsign-conversion in a 32-bit build.

3 years agoBuild: Make configure add more warning flags for GCC and Clang.
Lasse Collin [Thu, 12 Jan 2023 02:17:24 +0000 (04:17 +0200)] 
Build: Make configure add more warning flags for GCC and Clang.

-Wstrict-aliasing was removed from the list since it is enabled
by -Wall already.

A normal build is clean with these on GNU/Linux x86-64 with
GCC 12.2.0 and Clang 14.0.6.

3 years agoTests: Fix warnings from clang --Wassign-enum.
Lasse Collin [Thu, 12 Jan 2023 02:14:18 +0000 (04:14 +0200)] 
Tests: Fix warnings from clang --Wassign-enum.

Explicitly casting the integer to lzma_check silences the warning.
Since such an invalid value is needed in multiple tests, a constant
INVALID_LZMA_CHECK_ID was added to tests.h.

The use of 0x1000 for lzma_block.check wasn't optimal as if
the underlying type is a char then 0x1000 will be truncated to 0.
However, in these test cases the value is ignored, thus even with
such truncation the test would have passed.

3 years agoTests: Silence warnings from -Wsign-conversion.
Lasse Collin [Thu, 12 Jan 2023 01:51:07 +0000 (03:51 +0200)] 
Tests: Silence warnings from -Wsign-conversion.

Note that assigning an unsigned int to lzma_check doesn't warn
on GNU/Linux x86-64 since the enum type is unsigned on that
platform. The enum can be signed on some other platform though
so it's best to use enumeration type lzma_check in these situations.

3 years agoliblzma: Silence warnings from clang -Wconditional-uninitialized.
Lasse Collin [Thu, 12 Jan 2023 01:19:59 +0000 (03:19 +0200)] 
liblzma: Silence warnings from clang -Wconditional-uninitialized.

This is similar to 2ce4f36f179a81d0c6e182a409f363df759d1ad0.
The actual initialization of the variables is done inside
mythread_sync() macro. Clang doesn't seem to see that
the initialization code inside the macro is always executed.

3 years agoFix warnings from clang -Wdocumentation.
Lasse Collin [Thu, 12 Jan 2023 01:11:40 +0000 (03:11 +0200)] 
Fix warnings from clang -Wdocumentation.

3 years agoTests: test_lzip_decoder: Remove trailing white-space.
Lasse Collin [Thu, 12 Jan 2023 01:04:28 +0000 (03:04 +0200)] 
Tests: test_lzip_decoder: Remove trailing white-space.

3 years agoTests: test_lzip_decoder: Silence warnings from -Wsign-conversion.
Lasse Collin [Thu, 12 Jan 2023 01:03:55 +0000 (03:03 +0200)] 
Tests: test_lzip_decoder: Silence warnings from -Wsign-conversion.

3 years agoAdd NEWS for 5.4.1.
Jia Tan [Wed, 11 Jan 2023 15:58:16 +0000 (23:58 +0800)] 
Add NEWS for 5.4.1.

3 years agoxz: Fix warning -Wformat-nonliteral on clang in message.c.
Jia Tan [Wed, 11 Jan 2023 14:46:48 +0000 (22:46 +0800)] 
xz: Fix warning -Wformat-nonliteral on clang in message.c.

clang and gcc differ in how they handle -Wformat-nonliteral. gcc will
allow a non-literal format string as long as the function takes its
format arguments as a va_list.

3 years agoTests: Fix test_filter_flags copy/paste error.
Jia Tan [Wed, 11 Jan 2023 12:58:31 +0000 (20:58 +0800)] 
Tests: Fix test_filter_flags copy/paste error.

3 years agoTests: Fix type-limits warning in test_filter_flags.
Jia Tan [Wed, 11 Jan 2023 12:42:29 +0000 (20:42 +0800)] 
Tests: Fix type-limits warning in test_filter_flags.

This only occurs in test_filter_flags when the BCJ filters are not
configured and built. In this case, ARRAY_SIZE() returns 0 and causes a
type-limits warning with the loop variable since an unsigned number will
always be >= 0.

3 years agoliblzma: CLMUL CRC64: Work around a bug in MSVC, second attempt.
Lasse Collin [Tue, 10 Jan 2023 20:14:03 +0000 (22:14 +0200)] 
liblzma: CLMUL CRC64: Work around a bug in MSVC, second attempt.

This affects only 32-bit x86 builds. x86-64 is OK as is.

I still cannot easily test this myself. The reporter has tested
this and it passes the tests included in the CMake build and
performance is good: raw CRC64 is 2-3 times faster than the
C version of the slice-by-four method. (Note that liblzma doesn't
include a MSVC-compatible version of the 32-bit x86 assembly code
for the slice-by-four method.)

Thanks to Iouri Kharon for figuring out a fix, testing, and
benchmarking.

3 years agoTests: Fix unused function warning in test_block_header.
Jia Tan [Tue, 10 Jan 2023 17:18:50 +0000 (01:18 +0800)] 
Tests: Fix unused function warning in test_block_header.

One of the global arrays of filters was only used in a test that
required both encoders and decoders to be configured in the build.

3 years agoTests: Fix unused function warning in test_index_hash.
Jia Tan [Tue, 10 Jan 2023 17:08:03 +0000 (01:08 +0800)] 
Tests: Fix unused function warning in test_index_hash.

test_index_hash does not use fill_index_hash() unless both encoders
and decoders are configured in the build.

3 years agoCI/CD: Add 32-bit build and test steps to Ubuntu autotools runner.
Jia Tan [Tue, 10 Jan 2023 16:54:45 +0000 (00:54 +0800)] 
CI/CD: Add 32-bit build and test steps to Ubuntu autotools runner.

If all goes well, Mac autotools and Linux and Mac CMake will be added
later for 32-bit builds.

3 years agoCI/CD: Enables warnings as errors in autotool build.
Jia Tan [Tue, 10 Jan 2023 16:51:01 +0000 (00:51 +0800)] 
CI/CD: Enables warnings as errors in autotool build.

This will help us catch warnings and potential bugs in builds that are
not often tested by us.

3 years agoCI/CD: Add -f argument to set CFLAGS in ci_build.sh.
Jia Tan [Tue, 10 Jan 2023 16:48:35 +0000 (00:48 +0800)] 
CI/CD: Add -f argument to set CFLAGS in ci_build.sh.

For now, the suggested option is for -m32 only, but this can be updated
later if other flags are deemed useful.

3 years agoRevert "liblzma: CLMUL CRC64: Workaround a bug in MSVC (VS2015-2022)."
Lasse Collin [Tue, 10 Jan 2023 10:47:16 +0000 (12:47 +0200)] 
Revert "liblzma: CLMUL CRC64: Workaround a bug in MSVC (VS2015-2022)."

This reverts commit 36edc65ab4cf10a131f239acbd423b4510ba52d5.

It was reported that it wasn't a good enough fix and MSVC
still produced (different kind of) bad code when building
for 32-bit x86 if optimizations are enabled.

Thanks to Iouri Kharon.

3 years agosysdefs.h: Don't include strings.h anymore.
Lasse Collin [Tue, 10 Jan 2023 09:56:11 +0000 (11:56 +0200)] 
sysdefs.h: Don't include strings.h anymore.

On some platforms src/xz/suffix.c may need <strings.h> for
strcasecmp() but suffix.c includes the header when it needs it.

Unless there is an old system that otherwise supports enough C99
to build XZ Utils but doesn't have C89/C90-compatible <string.h>,
there should be no need to include <strings.h> in sysdefs.h.

3 years agoxz: Include <strings.h> in suffix.c if needed for strcasecmp().
Lasse Collin [Tue, 10 Jan 2023 09:23:41 +0000 (11:23 +0200)] 
xz: Include <strings.h> in suffix.c if needed for strcasecmp().

SUSv2 and POSIX.1‐2017 declare only a few functions in <strings.h>.
Of these, strcasecmp() is used on some platforms in suffix.c.
Nothing else in the project needs <strings.h> (at least if
building on a modern system).

sysdefs.h currently includes <strings.h> if HAVE_STRINGS_H is
defined and suffix.c relied on this.

Note that dos/config.h doesn't #define HAVE_STRINGS_H even though
DJGPP does have strings.h. It isn't needed with DJGPP as strcasecmp()
is also in <string.h> in DJGPP.

3 years agosysdefs.h: Fix a comment.
Lasse Collin [Tue, 10 Jan 2023 08:05:13 +0000 (10:05 +0200)] 
sysdefs.h: Fix a comment.

3 years agosysdefs.h: Don't include memory.h anymore even if it were available.
Lasse Collin [Tue, 10 Jan 2023 08:04:06 +0000 (10:04 +0200)] 
sysdefs.h: Don't include memory.h anymore even if it were available.

It quite probably was never needed, that is, any system where memory.h
was required likely couldn't compile XZ Utils for other reasons anyway.

XZ Utils 5.2.6 and later source packages were generated using
Autoconf 2.71 which no longer defines HAVE_MEMORY_H. So the code
being removed is no longer used anyway.

3 years agoCMake: Fix appending to CMAKE_RC_FLAGS.
Lasse Collin [Tue, 10 Jan 2023 06:29:32 +0000 (08:29 +0200)] 
CMake: Fix appending to CMAKE_RC_FLAGS.

It's a string, not a list. It only worked when the variable was empty.

Thanks to Iouri Kharon.

3 years agoWindows: Update INSTALL-MSVC.txt to recommend CMake over project files.
Lasse Collin [Mon, 9 Jan 2023 22:33:14 +0000 (00:33 +0200)] 
Windows: Update INSTALL-MSVC.txt to recommend CMake over project files.

3 years agoCMake: Fix windres issues again.
Lasse Collin [Mon, 9 Jan 2023 21:41:25 +0000 (23:41 +0200)] 
CMake: Fix windres issues again.

At least on some systems, GNU windres needs --use-temp-file
in addition to the \x20 hack to avoid spaces in the command line
argument. Hovever, that \x20 syntax is broken with llvm-windres
version 15.0.0 (results in "XZx20Utils") but luckily it works
with a regular space. Thus it is best to limit the workarounds
to GNU toolchain on Windows.

3 years agoTests: test_filter_flags: Clean up minor issues.
Lasse Collin [Fri, 6 Jan 2023 20:53:38 +0000 (22:53 +0200)] 
Tests: test_filter_flags: Clean up minor issues.

Here are the list of the most significant issues addressed:
- Avoid using internal common.h header. It's not good to copy the
constants like this but common.h cannot be included for use outside
of liblzma. This is the quickest thing to do that could be fixed later.

- Omit the INIT_FILTER macro. Initialization should be done with just
regular designated initializers.

- Use start_offset = 257 for BCJ tests. It demonstrates that Filter
Flags encoder and decoder don't validate the options thoroughly.
257 is valid only for the x86 filter. This is a bit silly but
not a significant problem in practice because the encoder and
decoder initialization functions will catch bad alignment still.
Perhaps this should be fixed but it's not urgent and doesn't need
to be in 5.4.x.

- Various tweaks to comments such as filter id -> Filter ID