]> git.ipfire.org Git - thirdparty/xz.git/log
thirdparty/xz.git
14 months agoxz: list: suppress -Wformat-nonliteral for Solaris
Sam James [Sun, 14 Apr 2024 07:08:00 +0000 (08:08 +0100)] 
xz: list: suppress -Wformat-nonliteral for Solaris

Solaris' GCC can't understand that our use is fine, unlike modern compilers:
```
list.c: In function 'print_totals_basic':
list.c:1191:4: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
  uint64_to_str(totals.files, 0));
  ^~~~~~~~~~~~~
cc1: all warnings being treated as errors
```

It's presumably because of older gettext missing format attributes.

This is with `gcc (GCC) 7.3.0`.

14 months agolicense-check.sh: Fix reporting of unclear license info
Lasse Collin [Mon, 3 Jun 2024 08:44:28 +0000 (11:44 +0300)] 
license-check.sh: Fix reporting of unclear license info

The main feature was broken because an old variable name hadn't
been updated to match the rest of the script.

14 months agoUpdate THANKS
Lasse Collin [Fri, 31 May 2024 18:36:26 +0000 (21:36 +0300)] 
Update THANKS

14 months agoTranslations: Run po4a/update-po
Lasse Collin [Wed, 29 May 2024 14:47:13 +0000 (17:47 +0300)] 
Translations: Run po4a/update-po

Now the files are in the new formatting without source file
line numbers. Future updates should keep the diffs much smaller.

14 months agoTranslations: Run "make -C po update-po"
Lasse Collin [Wed, 29 May 2024 14:44:53 +0000 (17:44 +0300)] 
Translations: Run "make -C po update-po"

In the past this wasn't done before releases; the Git repository
just contained the files from the Translation Project. But this
way it is clearer when comparing release tarballs against the
Git repository. In future releases this might no longer be necessary
within a stable branch as the .po files won't change so easily anymore
when creating a tarball.

14 months agoAdd NEWS for 5.6.2
Lasse Collin [Wed, 29 May 2024 15:03:04 +0000 (18:03 +0300)] 
Add NEWS for 5.6.2

14 months agoAdd NEWS for 5.4.7
Lasse Collin [Wed, 29 May 2024 15:03:04 +0000 (18:03 +0300)] 
Add NEWS for 5.4.7

14 months agoAdd NEWS for 5.2.13
Lasse Collin [Wed, 29 May 2024 15:03:04 +0000 (18:03 +0300)] 
Add NEWS for 5.2.13

14 months agoBuild: Update po/*.po files only when needed
Lasse Collin [Wed, 29 May 2024 13:33:24 +0000 (16:33 +0300)] 
Build: Update po/*.po files only when needed

When po/xz.pot doesn't exist, running "make" or "make dist" will
create it. Then the .po files will be updated but only if they
actually would change more than the POT-Creation-Date line.
Then the .gmo files would be generated from the .po files.
This is the case before and after this commit.

However, "make dist" and thus "make mydist" did a forced update
to the files, updating them even if the only change was the
POT-Creation-Date line. This had pros and cons: It made it clear
that the .po file really is in sync with the recent strings in
the package. On the other hand, it added noise in form of changed
files in the source tree and distribution tarballs. It can be
ignored with something like "diff -I'^"POT-Creation-Date: '" but
it's still a minor annoyance *if* there's not enough value in
having the most recent timestamp.

Setting DIST_DEPENDS_ON_UPDATE_PO = no means that such forced
update won't happen in "make dist" anymore. However, the "mydist"
target will use xz.pot-update target which is the same target that
is run when xz.pot doesn't exist at all yet. Thus "mydist" will
ensure that the translations are up to date, without noise from
changes that would affect only the POT-Creation-Date line.

Note that po4a always uses msgmerge with --update, so POT-Creation-Date
in the man page translations is never the only change in .po files.
In that sense this commit makes the message translations behave more
similarly to the man page translations.

Distribution tarballs will still have non-reproducible POT-Creation-Date
in po/xz.pot and po4a/xz-man.pot but those are just two files. Even they
could be made reproducible from a Git timestamp if desired.

14 months agopo4a/update-po: Disable wrapping in .pot and .po files
Lasse Collin [Tue, 28 May 2024 18:10:33 +0000 (21:10 +0300)] 
po4a/update-po: Disable wrapping in .pot and .po files

The .po files from the Translation Project come with unwrapped
strings so this matches it.

This may reduce the noise in diffs too. When the beginning of
a paragraph had changed, the rest of the lines got rewrapped
in msgsid. Now it's just one very long line that changes when
a paragraph has been edited.

The --add-location=file option was removed as redundant. The line
numbers don't exist in the .pot file due to --porefs file and thus
they cannot get copied to the .po files either.

14 months agoUpdate contact info in README
Lasse Collin [Tue, 28 May 2024 15:36:53 +0000 (18:36 +0300)] 
Update contact info in README

14 months agoTranslations: Use --package-name=xz-man with po4a
Lasse Collin [Tue, 28 May 2024 10:25:07 +0000 (13:25 +0300)] 
Translations: Use --package-name=xz-man with po4a

This is to match reality. See the added comment.

14 months agoTranslations: Omit --package-name from po/Makevars
Lasse Collin [Tue, 28 May 2024 10:03:40 +0000 (13:03 +0300)] 
Translations: Omit --package-name from po/Makevars

This is closer to the reality in the po/*.po files.

14 months agolicense-check.sh: Use '--' with slightly untrusted filenames
Lasse Collin [Mon, 27 May 2024 14:45:51 +0000 (17:45 +0300)] 
license-check.sh: Use '--' with slightly untrusted filenames

Names from git ls-files should be safe but if one runs it on
a tree without the .git dir and there are extra files, it's
safer to have the end of arguments marked with '--'.

14 months agolicense-check.sh: Use xargs -0 instead of -d
Lasse Collin [Mon, 27 May 2024 14:41:37 +0000 (17:41 +0300)] 
license-check.sh: Use xargs -0 instead of -d

Neither are in POSIX but -0 is much more portable in practice.

Despite the old comment, the grep usage should be portable already.

14 months agoTranslations: Omit man page line numbers from .pot and .po files
Lasse Collin [Mon, 27 May 2024 22:17:45 +0000 (01:17 +0300)] 
Translations: Omit man page line numbers from .pot and .po files

14 months agoTranslations: Use the xgettext option --add-location=file
Lasse Collin [Mon, 27 May 2024 22:06:30 +0000 (01:06 +0300)] 
Translations: Use the xgettext option --add-location=file

14 months agoTranslations: Use the msgmerge option --add-location=file
Lasse Collin [Mon, 27 May 2024 21:43:53 +0000 (00:43 +0300)] 
Translations: Use the msgmerge option --add-location=file

This way the PO file diffs are less noisy but the locations of the
strings are still present at file level, just without line numbers.

The option is available since gettext 0.19 (2014).
configure.ac requires 0.19.6.

14 months agoBuild: Use $(SHELL) instead of sh to run scripts in Makefile.am
Lasse Collin [Mon, 27 May 2024 09:22:08 +0000 (12:22 +0300)] 
Build: Use $(SHELL) instead of sh to run scripts in Makefile.am

14 months agoTranslations: Change the home page URLs in man page translations
Lasse Collin [Thu, 23 May 2024 14:25:13 +0000 (17:25 +0300)] 
Translations: Change the home page URLs in man page translations

Since the source strings have changed, these would get marked as
fuzzy and the original string would be used instead. The original
and translated strings are identical in this case so it wouldn't
matter. But patching the translations helps still because then
po4a will show the correct translation percentage.

14 months agoCMake: Add manual support for 32-bit x86 assembly files
Lasse Collin [Thu, 23 May 2024 12:15:18 +0000 (15:15 +0300)] 
CMake: Add manual support for 32-bit x86 assembly files

One has to pass -DENABLE_X86_ASM=ON to cmake to enable the
CRC assembly code. Autodetection isn't done. Looking at
CMAKE_SYSTEM_PROCESSOR might not work as it comes from uname
unless cross-compilation is done using a CMake toolchain file.

On top of this, if the code is run on modern processors that support
the CLMUL instruction, then the C code should be faster (but then
one should also be using a x86-64 build if possible).

14 months agoCMake: Rename USE_DOXYGEN to ENABLE_DOXYGEN
Lasse Collin [Thu, 23 May 2024 11:26:45 +0000 (14:26 +0300)] 
CMake: Rename USE_DOXYGEN to ENABLE_DOXYGEN

It's more consistent with the other option() uses.

14 months agoMention license-check.sh in COPYING
Lasse Collin [Wed, 22 May 2024 12:21:53 +0000 (15:21 +0300)] 
Mention license-check.sh in COPYING

14 months agoUse more confident language in COPYING
Lasse Collin [Wed, 22 May 2024 12:21:53 +0000 (15:21 +0300)] 
Use more confident language in COPYING

14 months agoBuild: Run license-check.sh in "mydist" and "dist-hook"
Lasse Collin [Wed, 22 May 2024 12:21:53 +0000 (15:21 +0300)] 
Build: Run license-check.sh in "mydist" and "dist-hook"

In mydist the point is to check using the file list from the Git
repository. In dist-hook it is to check that the TARBALL_IGNORE
patterns work when the .git dir or the "git" command aren't available.

Refuse to create a distribution tarball if license issues are found.

14 months agoAdd build-aux/license-check.sh
Lasse Collin [Wed, 22 May 2024 12:21:53 +0000 (15:21 +0300)] 
Add build-aux/license-check.sh

This helps in spotting files that lack SPDX license identifier
and which haven't been explicitly white listed either. The script
requires the .git directory to be present as only the files that
are in the Git repository are checked.

XZ Utils isn't FSFE REUSE compliant for now.

14 months agoAdd SPDX license identifiers to files under tests/ossfuzz
Lasse Collin [Mon, 29 Apr 2024 14:16:38 +0000 (17:16 +0300)] 
Add SPDX license identifiers to files under tests/ossfuzz

14 months agoAdd SPDX license identifier to .codespellrc
Lasse Collin [Mon, 29 Apr 2024 14:16:06 +0000 (17:16 +0300)] 
Add SPDX license identifier to .codespellrc

14 months agoMove entries po4a/.gitignore to the top level .gitignore
Lasse Collin [Wed, 22 May 2024 12:12:09 +0000 (15:12 +0300)] 
Move entries po4a/.gitignore to the top level .gitignore

The po4a directory is in EXTRA_DIST and thus all files there
are included in the package. .gitignore doesn't belong in the
package so keep that file out of the po4a directory.

14 months agoTests: Make the config.h grep patterns Meson compatible
Lasse Collin [Mon, 20 May 2024 13:55:00 +0000 (16:55 +0300)] 
Tests: Make the config.h grep patterns Meson compatible

Now the test scripts detect both

    #define HAVE_DECODER_ARM
    #define HAVE_DECODER_ARM 1

as support for the ARM filter without confusing it with these:

    #define HAVE_DECODER_ARM64
    #define HAVE_DECODER_ARM64 1

Previously only the ones ending with " 1" were accepted for
the macros where this kind of confusion was possible.

This should help with Meson support because Meson's built-in
features produce config.h entries that are either

    #define FOO 1
    #define FOO 0

or:

    #define FOO
    #undef FOO

The former method has a benefit that one can use "#if FOO" and -Wundef
will catch if a #define is missing (for example, it helps catching
typos). But XZ Utils has to use the latter since it has been
convenient with Autoconf's default behavior.[*] While it's easy to
emulate the Autoconf style (#define FOO 1 vs. no #define at all)
in Meson, it results in clumsy code. Thus it's better to change
the few places in the tests where this difference matters.

[*] While most checks in Autoconf default to the second style above,
    a few things use the first style (like AC_CHECK_DECLS). The mix
    of both styles is the most confusing as one has to remember which
    macro needs #ifdef and which #if. Currently HAVE_VISIBILITY is
    only such config.h entry that is 1 or 0. It comes unmodified
    from Gnulib's visibility.m4.

14 months agoCMake: Add comments
Lasse Collin [Mon, 20 May 2024 13:55:00 +0000 (16:55 +0300)] 
CMake: Add comments

14 months agoCMake: Remove the note that some tests aren't run
Lasse Collin [Mon, 20 May 2024 13:55:00 +0000 (16:55 +0300)] 
CMake: Remove the note that some tests aren't run

They are now in the common build configurations.

14 months agoCMake: Add support for test_files.sh
Lasse Collin [Mon, 20 May 2024 13:55:00 +0000 (16:55 +0300)] 
CMake: Add support for test_files.sh

14 months agoTests: Make test_files.sh more flexible
Lasse Collin [Mon, 20 May 2024 13:55:00 +0000 (16:55 +0300)] 
Tests: Make test_files.sh more flexible

Add a new optional argument to specify the directory of the xz and
xzdec executables.

If ../config.h doesn't exist, assume that all encoders and decoders
are available.

14 months agoCMake: Add support for test_compress.sh tests
Lasse Collin [Mon, 20 May 2024 13:55:00 +0000 (16:55 +0300)] 
CMake: Add support for test_compress.sh tests

14 months agoTests: Make test_compress.sh more flexible
Lasse Collin [Mon, 20 May 2024 13:55:00 +0000 (16:55 +0300)] 
Tests: Make test_compress.sh more flexible

Add a new optional second argument: directory of the xz and xzdec
executables. This is need with the CMake build where the binaries
end up in the top-level build directory.

If ../config.h doesn't exist, assume that all encoders and decoders
are available. This will make this script usable from CMake in the
most common build configuration.

NOTE: Since the existence of ../config.h is checked, the working
directory of the test script must be a subdir in the build tree!
Otherwise ../config.h would look outside the build tree.

Use the default check type instead of forcing CRC32 or CRC64.
Now the script doesn't need to check if CRC64 is available.

14 months agoCMake: Prepare to support the test_*.sh tests
Lasse Collin [Mon, 20 May 2024 13:55:00 +0000 (16:55 +0300)] 
CMake: Prepare to support the test_*.sh tests

This is a bit hacky since the scripts grep config.h to know which
features were built but the CMake build doesn't create config.h.
So instead those test scripts will be run only when all relevant
features have been enabled.

14 months agoTests: test_suffix.sh: Add a comment
Lasse Collin [Mon, 20 May 2024 13:55:00 +0000 (16:55 +0300)] 
Tests: test_suffix.sh: Add a comment

14 months agoFix typos
Lasse Collin [Fri, 17 May 2024 21:34:07 +0000 (00:34 +0300)] 
Fix typos

Thanks to xx on #tukaani.

14 months agoliblzma: Fix white space
Lasse Collin [Fri, 17 May 2024 21:23:52 +0000 (00:23 +0300)] 
liblzma: Fix white space

Thanks to xx on #tukaani.

15 months agoBuild: Temporarily disable CRC CLMUL to silence OSS Fuzz
Lasse Collin [Wed, 15 May 2024 20:14:17 +0000 (23:14 +0300)] 
Build: Temporarily disable CRC CLMUL to silence OSS Fuzz

The code makes aligned 16-byte reads which may read up to 15 bytes
before the beginning or past the end of the buffer if the buffer
is misaligned. The unneeded bytes are then ignored. It cannot cross
page boundaries and thus cannot cause access violations.

This inherently trips address sanitizer which was already disabled
with __attribute__((__no_sanitize_address__)). However, it also
trips memory sanitizer if the extra bytes are uninitialized because
memory sanitizer doesn't see that those bytes then get ignored by
byte shuffling in the xmm registers.

The plan is to change the code so that all sanitizers pass but it's
not finished yet (performance shouldn't get worse) so as a temporary
measure to keep OSS Fuzz happy, the CLMUL CRC is now disabled even
though I think think the code is fine to use (and easy enough to review
the memory accesses in it too).

15 months agoxz: Document the static function get_chains_memusage()
Lasse Collin [Mon, 13 May 2024 14:15:04 +0000 (17:15 +0300)] 
xz: Document the static function get_chains_memusage()

15 months agoxz: Rename filters_memusage_max() to get_chains_memusage()
Lasse Collin [Mon, 13 May 2024 14:07:22 +0000 (17:07 +0300)] 
xz: Rename filters_memusage_max() to get_chains_memusage()

15 months agoxz: Rename filter_memusages to chains_memusages
Lasse Collin [Mon, 13 May 2024 14:04:05 +0000 (17:04 +0300)] 
xz: Rename filter_memusages to chains_memusages

15 months agoxz: Simplify the memory usage scaling code
Lasse Collin [Sun, 12 May 2024 19:26:30 +0000 (22:26 +0300)] 
xz: Simplify the memory usage scaling code

This is closer to what it was before the --filtersX support was added,
just extended to support for scaling all filter chains. The method
before this commit was an extended version of the original too but
it was done in a more complex way for no clear reason. In case of
an error, the complex version printed fewer informative messages
(a good thing) but it's not a sigificant benefit.

In the limit is too low even for single-threaded mode, the required
amount of memory is now reported like in 5.4.x instead of like in
5.5.1alpha - 5.6.1 which showed the original non-scaled usage. It
had been a FIXME in the old code but it's not clear what message
makes the most sense.

Fixes: 5f0c5a04388f8334962c70bc37a8c2ff8f605e0a
15 months agoxz: Edit comments
Lasse Collin [Mon, 13 May 2024 09:14:00 +0000 (12:14 +0300)] 
xz: Edit comments

15 months agoxz: Rename chain_idx to chain_num
Lasse Collin [Mon, 13 May 2024 09:03:51 +0000 (12:03 +0300)] 
xz: Rename chain_idx to chain_num

15 months agoxz: Edit coding style
Lasse Collin [Sun, 12 May 2024 19:29:11 +0000 (22:29 +0300)] 
xz: Edit coding style

15 months agoxz: Edit comments
Lasse Collin [Sun, 12 May 2024 19:16:05 +0000 (22:16 +0300)] 
xz: Edit comments

Fixes: 5f0c5a04388f8334962c70bc37a8c2ff8f605e0a
15 months agoxz: Fix grammar in a comment
Lasse Collin [Sun, 12 May 2024 18:57:49 +0000 (21:57 +0300)] 
xz: Fix grammar in a comment

Fixes: cb3111e3ed84152912b5138d690c8d9f00c6ef02
15 months agoxz: Rename filter_memusages to encoder_memusages
Lasse Collin [Sun, 12 May 2024 18:46:56 +0000 (21:46 +0300)] 
xz: Rename filter_memusages to encoder_memusages

15 months agoxz: Edit coding style
Lasse Collin [Sun, 12 May 2024 18:42:05 +0000 (21:42 +0300)] 
xz: Edit coding style

15 months agoxz: Rename filters_index to chain_num
Lasse Collin [Sun, 12 May 2024 18:31:02 +0000 (21:31 +0300)] 
xz: Rename filters_index to chain_num

The reason is the same as in bd0782c1f13e52cd0fd8415208e30e47004a4c68.

15 months agoxz: Replace a few uint32_t with "unsigned" to reduce the number of casts
Lasse Collin [Sun, 12 May 2024 18:22:43 +0000 (21:22 +0300)] 
xz: Replace a few uint32_t with "unsigned" to reduce the number of casts

These hold only tiny values.

15 months agoxz: Rename filters_used_mask to chains_used_mask
Lasse Collin [Sun, 12 May 2024 18:10:45 +0000 (21:10 +0300)] 
xz: Rename filters_used_mask to chains_used_mask

The reason is the same as in bd0782c1f13e52cd0fd8415208e30e47004a4c68.

15 months agoxz: Move the setting of "check" in coder_set_compression_settings()
Lasse Collin [Sun, 12 May 2024 14:14:43 +0000 (17:14 +0300)] 
xz: Move the setting of "check" in coder_set_compression_settings()

It's more logical to do it in the beginning instead of in the middle
of the filter chain handling.

Fixes: d6af7f347077b22403133239592e478931307759
15 months agoxz: Rename "filters" to "chains"
Lasse Collin [Sun, 12 May 2024 14:09:17 +0000 (17:09 +0300)] 
xz: Rename "filters" to "chains"

The convention is that

    lzma_filter filters[LZMA_FILTERS_MAX + 1];

contains the filters of a single filter chain.
It was so here as well before the commit
d6af7f347077b22403133239592e478931307759.
It changes "filters" to a ten-element array of filter chains.
It's clearer to call this array-of-arrays "chains".

This also renames "filter_idx" to "chain_idx" which is used
as an index as in chains[chain_idx].

15 months agoxz: Clean up a comment
Lasse Collin [Sun, 12 May 2024 13:56:15 +0000 (16:56 +0300)] 
xz: Clean up a comment

15 months agoxz: Add clarifying assertions
Lasse Collin [Sun, 12 May 2024 13:52:09 +0000 (16:52 +0300)] 
xz: Add clarifying assertions

15 months agoxz: Add a clarifying assertion
Lasse Collin [Fri, 10 May 2024 17:23:33 +0000 (20:23 +0300)] 
xz: Add a clarifying assertion

Fixes: 5f0c5a04388f8334962c70bc37a8c2ff8f605e0a
15 months agoxz: Clarify a comment
Lasse Collin [Sun, 12 May 2024 13:47:17 +0000 (16:47 +0300)] 
xz: Clarify a comment

15 months agoxz: Use the info collected in parse_block_list()
Lasse Collin [Sun, 12 May 2024 13:28:25 +0000 (16:28 +0300)] 
xz: Use the info collected in parse_block_list()

This is slightly simpler and it avoids looping through
the opt_block_list array.

15 months agoxz: Remember the filter chains and the largest Block in parse_block_list()
Lasse Collin [Sun, 12 May 2024 12:48:45 +0000 (15:48 +0300)] 
xz: Remember the filter chains and the largest Block in parse_block_list()

15 months agoxz: Update a comment and initialization of filters_used_mask
Lasse Collin [Sun, 12 May 2024 12:38:48 +0000 (15:38 +0300)] 
xz: Update a comment and initialization of filters_used_mask

15 months agoxz: parse_block_list: Edit integer type casting
Lasse Collin [Sun, 12 May 2024 12:08:10 +0000 (15:08 +0300)] 
xz: parse_block_list: Edit integer type casting

15 months agoxz: Make filter_memusages a local variable
Lasse Collin [Sun, 12 May 2024 11:51:37 +0000 (14:51 +0300)] 
xz: Make filter_memusages a local variable

15 months agoxz: Remove unused code and simplify
Lasse Collin [Fri, 10 May 2024 17:33:08 +0000 (20:33 +0300)] 
xz: Remove unused code and simplify

opt_mode == MODE_COMPRESS isn't possible when HAVE_ENCODERS isn't
defined. Thus, when *encoding*, the message about *decoder* memory
usage is possible to show only when both encoder and decoder have
been built.

Since the message is shown only at V_DEBUG, skip the memusage
calculation if verbosity level isn't high enough.

Fixes: 5f0c5a04388f8334962c70bc37a8c2ff8f605e0a
15 months agoxz: Fix integer type from uint64_t to uint32_t
Lasse Collin [Fri, 10 May 2024 17:22:58 +0000 (20:22 +0300)] 
xz: Fix integer type from uint64_t to uint32_t

lzma_options_lzma.dict_size is uint32_t so use it here too.

Fixes: 5f0c5a04388f8334962c70bc37a8c2ff8f605e0a
15 months agodebug/translation.bash: Remove an outdated test command
Lasse Collin [Wed, 8 May 2024 18:40:07 +0000 (21:40 +0300)] 
debug/translation.bash: Remove an outdated test command

Since 5.3.5beta, "xz --lzma2=mf=bt4,nice=2" works even though bt4 needs
at least nice=4. It is rounded up internally by liblzma when needed.

Fixes: 5cd9f0df78cc4f8a7807bf6104adea13034fbb45
15 months agoFix the date of NEWS for 5.4.5
Lasse Collin [Tue, 7 May 2024 17:41:28 +0000 (20:41 +0300)] 
Fix the date of NEWS for 5.4.5

15 months agoBuild: Update visibility.m4 from Gnulib
Lasse Collin [Tue, 7 May 2024 13:21:15 +0000 (16:21 +0300)] 
Build: Update visibility.m4 from Gnulib

This fixes the syntax of the "serial" line and renames
a temporary variable.

15 months agopo4a/update-po: Delete the *.po.authors files
Lasse Collin [Tue, 7 May 2024 12:05:21 +0000 (15:05 +0300)] 
po4a/update-po: Delete the *.po.authors files

These are temporary files that are needed only when running po4a.
The top-level Makefile.am puts the whole po4a directory into
distribution tarball (it's simpler) so deleting these temporary
files is needed to prevent them from getting into tarballs.

15 months agoxz: Edit comments and coding style
Lasse Collin [Tue, 7 May 2024 10:12:17 +0000 (13:12 +0300)] 
xz: Edit comments and coding style

15 months agoxz: Omit an incorrect comment
Lasse Collin [Mon, 6 May 2024 20:08:22 +0000 (23:08 +0300)] 
xz: Omit an incorrect comment

It likely was a leftover from a development version of the code.

Fixes: 183819bfd9efac8c184d9bf123325719b7eee30f
15 months agoxz: Add braces to a for-statement and to an if-statement
Lasse Collin [Mon, 6 May 2024 20:04:31 +0000 (23:04 +0300)] 
xz: Add braces to a for-statement and to an if-statement

No functional changes.

Fixes: 5f0c5a04388f8334962c70bc37a8c2ff8f605e0a
Fixes: 479fd58d60622331fcbe48fddf756927b9f80d9a
15 months agoliblzma: Omit an unneeded array from the x86 filter
Lasse Collin [Mon, 6 May 2024 20:00:09 +0000 (23:00 +0300)] 
liblzma: Omit an unneeded array from the x86 filter

Fixes: 6aa2a6deeba04808a0fe4461396e7fb70277f3d4
15 months agoCMake: Add test_suffix.sh to the tests
Lasse Collin [Mon, 6 May 2024 19:56:31 +0000 (22:56 +0300)] 
CMake: Add test_suffix.sh to the tests

15 months agoTest: Add CMake support to test_suffix.sh
Lasse Collin [Mon, 6 May 2024 19:55:54 +0000 (22:55 +0300)] 
Test: Add CMake support to test_suffix.sh

It needs to find the xz executable from a different directory
and work without config.h.

15 months agoUpdate INSTALL about MINIX 3
Lasse Collin [Mon, 6 May 2024 17:45:34 +0000 (20:45 +0300)] 
Update INSTALL about MINIX 3

The latest stable is 3.3.0 and it's from 2014.
Don't mention the older versions in INSTALL.
3.3.0 ships with Clang already.

Testing with 3.4.0beta6 shows that tuklib_physmem
works too so omit comments about that from INSTALL.
Visibility warnigns weren't a problem either.

Thus it's enough to mention the need for --disable-threads
as configure doesn't autodetect the lack of pthreads.

15 months agoWindows: Remove the "doc/api" line from README-Windows.txt
Lasse Collin [Thu, 2 May 2024 20:00:16 +0000 (23:00 +0300)] 
Windows: Remove the "doc/api" line from README-Windows.txt

Fixes: 252aa1d67bc015eeba462803ab72edeb7744d864
15 months agoBuild: Don't copy doc/api from source tree to distribution tarball
Lasse Collin [Thu, 2 May 2024 19:59:04 +0000 (22:59 +0300)] 
Build: Don't copy doc/api from source tree to distribution tarball

It was copied if it existed. This was intentional when autogen.sh
still built liblzma API docs with Doxygen.

Fixes: d3a77ebc04bf1db8d52de2d9b0f07877bc4fd139
15 months agoci: add SPDX headers
Sam James [Thu, 2 May 2024 12:26:40 +0000 (13:26 +0100)] 
ci: add SPDX headers

I've checked over each of these and they're straightforward applications
of the relevant Github Actions.

15 months agocodespell: Ignore the THANKS file and debbugs.gnu.org URL
Yaroslav Halchenko [Fri, 29 Mar 2024 18:37:24 +0000 (14:37 -0400)] 
codespell: Ignore the THANKS file and debbugs.gnu.org URL

This way "codespell -i 0" is silent.

This is the first commit from
https://github.com/tukaani-project/xz/pull/93
with trivial edits by Lasse Collin.

15 months agoAdd .gitattributes to clean up git-archive output
Lasse Collin [Tue, 30 Apr 2024 11:37:11 +0000 (14:37 +0300)] 
Add .gitattributes to clean up git-archive output

15 months agoxzdec: Support Landlock ABI version 4
Lasse Collin [Fri, 19 Apr 2024 09:11:09 +0000 (12:11 +0300)] 
xzdec: Support Landlock ABI version 4

This was added to xz in 02e3505991233901575b7eabc06b2c6c62a96899
but I forgot to do the same in xzdec.

The Landlock sandbox in xzdec could be stricter as now it's
active only for the last file being decompressed. In xz,
read-only sandbox is used for multi-file case. On the other hand,
xz doesn't go to the strictest mode when processing the last file
when more than one file was specified; xzdec does.

15 months agoliblzma: Fix incorrect function type error from sanitizer
Lasse Collin [Tue, 30 Apr 2024 19:22:45 +0000 (22:22 +0300)] 
liblzma: Fix incorrect function type error from sanitizer

Clang 17 with -fsanitize=address,undefined:

    src/liblzma/common/filter_common.c:366:8: runtime error:
        call to function encoder_find through pointer to incorrect
        function type 'const lzma_filter_coder *(*)(unsigned long)'
    src/liblzma/common/filter_encoder.c:187: note:
        encoder_find defined here

Use a wrapper function to get the correct type neatly.
This reduces the number of casts needed too.

This issue could be a problem with control flow integrity (CFI)
methods that check the function type on indirect function calls.

Fixes: 3b34851de1eaf358cf9268922fa0eeed8278d680
15 months agoxz: Avoid arithmetic on a null pointer
Lasse Collin [Tue, 30 Apr 2024 18:41:11 +0000 (21:41 +0300)] 
xz: Avoid arithmetic on a null pointer

It's undefined behavior. The result wasn't ever used as it occurred
in the last iteration of a loop.

Clang 17 with -fsanitize=address,undefined:

    $ src/xz/xz --block-list=123
    src/xz/args.c:164:12: runtime error: applying non-zero offset 1
        to null pointer

Fixes: 88ccf47205d7f3aa314d358c72ef214f10f68b43
Co-authored-by: Sam James <sam@gentoo.org>
15 months agoCMake: Support building liblzma API docs using Doxygen
Lasse Collin [Sat, 27 Apr 2024 17:42:00 +0000 (20:42 +0300)] 
CMake: Support building liblzma API docs using Doxygen

This is disabled by default to match the default in Autotools.
Use -DUSE_DOXYGEN=ON to enable Doxygen usage.

This uses the update-doxygen script, thus this is under if(UNIX)
although Doxygen itself can run on Windows too.

15 months agoCMake: List API headers in LIBLZMA_API_HEADERS variable
Lasse Collin [Sat, 20 Apr 2024 20:36:39 +0000 (23:36 +0300)] 
CMake: List API headers in LIBLZMA_API_HEADERS variable

This way the same list will be usable in more than one location.

15 months agoPACKAGERS: Document the optional Doxygen usage
Lasse Collin [Fri, 19 Apr 2024 12:16:42 +0000 (15:16 +0300)] 
PACKAGERS: Document the optional Doxygen usage

Also add a note that packagers should check the licensing
of the Doxygen output.

15 months agoBuild: Add --enable-doxygen to generate and install API docs
Lasse Collin [Sat, 27 Apr 2024 14:47:09 +0000 (17:47 +0300)] 
Build: Add --enable-doxygen to generate and install API docs

It requires Doxygen. This option is disabled by default.

15 months agoDoxygen: update-doxygen: Support out-of-tree builds
Lasse Collin [Fri, 19 Apr 2024 12:15:17 +0000 (15:15 +0300)] 
Doxygen: update-doxygen: Support out-of-tree builds

Also, now $0 is used to refer to the script itself.

15 months agoDoxygen: Simplify Doxyfile and add SPDX license identifier
Lasse Collin [Sun, 28 Apr 2024 18:08:00 +0000 (21:08 +0300)] 
Doxygen: Simplify Doxyfile and add SPDX license identifier

This omits all comments and a few non-default options that weren't
needed. Now it contains no copyrighted content from Doxygen itself.

15 months agoDoxygen: Don't strip JavaScript anymore
Lasse Collin [Fri, 19 Apr 2024 12:14:02 +0000 (15:14 +0300)] 
Doxygen: Don't strip JavaScript anymore

The stripping method worked well with Doxygen 1.8 and 1.9 but
it doesn't work with Doxygen 1.10 anymore. Since we won't ship
pre-generated liblzma API docs anymore, the extra bloat and
extra license info of the JavaScript files won't affect the
upstream source package anymore.

15 months agoBuild: Remove old Doxygen rules from top-level Makefile.am
Lasse Collin [Fri, 19 Apr 2024 14:26:41 +0000 (17:26 +0300)] 
Build: Remove old Doxygen rules from top-level Makefile.am

15 months agoUpdate COPYING to match the autogen.sh and mydist changes
Lasse Collin [Fri, 19 Apr 2024 12:10:06 +0000 (15:10 +0300)] 
Update COPYING to match the autogen.sh and mydist changes

15 months agoBuild: Don't run update-doxygen as part of "make mydist"
Lasse Collin [Fri, 19 Apr 2024 14:23:43 +0000 (17:23 +0300)] 
Build: Don't run update-doxygen as part of "make mydist"

15 months agoautogen.sh: Don't generated Doxygen docs anymore
Lasse Collin [Fri, 19 Apr 2024 12:09:48 +0000 (15:09 +0300)] 
autogen.sh: Don't generated Doxygen docs anymore

15 months agowindows/build.bash: Omit Doxygen docs from the package
Lasse Collin [Fri, 19 Apr 2024 14:41:36 +0000 (17:41 +0300)] 
windows/build.bash: Omit Doxygen docs from the package

They will be omitted from the source tarball and I don't want
to make Doxygen a dependency of build.bash.

15 months agoREADME: Don't mention PDF man pages anymore
Lasse Collin [Fri, 19 Apr 2024 11:14:47 +0000 (14:14 +0300)] 
README: Don't mention PDF man pages anymore