commit 5476089d9c42b9b04e92b80e1800b384a98265cb
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-13 19:58:47 +0200

    Bump version and soname for 5.2.8.

 src/liblzma/Makefile.am        | 2 +-
 src/liblzma/api/lzma/version.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

commit f9994f395d04d37b75e879f90397258b86b466cc
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-13 19:57:26 +0200

    Add NEWS for 5.2.8.

 NEWS | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 79 insertions(+)

commit cdf14b28993ef2f3168821372467e3aa7cf1e973
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-11 17:16:03 +0200

    Update THANKS.

 THANKS | 1 +
 1 file changed, 1 insertion(+)

commit 454f567e58bbadea5cff4f31ef450c1305e9853d
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-11 17:15:25 +0200

    liblzma: Fix building with Intel ICC (the classic compiler).
    
    It claims __GNUC__ >= 10 but doesn't support __symver__ attribute.
    
    Thanks to Stephen Sachs.

 src/liblzma/common/common.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 2f01169f5a81e21e7a7e5f799c32472c6277b1d5
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-11 14:35:58 +0200

    liblzma: Fix incorrect #ifdef for x86 SSE2 support.
    
    __SSE2__ is the correct macro for SSE2 support with GCC, Clang,
    and ICC. __SSE2_MATH__ means doing floating point math with SSE2
    instead of 387. Often the latter macro is defined if the first
    one is but it was still a bug.

 src/liblzma/common/memcmplen.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

commit fc1358679ed3994f67e5e8c869c281be82370a32
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-11 12:23:58 +0200

    Scripts: Ignore warnings from xz.
    
    In practice this means making the scripts work when
    the input files have an unsupported check type which
    isn't a problem in practice unless support for
    some check types has been disabled at build time.

 src/scripts/xzdiff.in | 5 +++--
 src/scripts/xzgrep.in | 2 +-
 src/scripts/xzless.in | 4 ++--
 src/scripts/xzmore.in | 4 ++--
 4 files changed, 8 insertions(+), 7 deletions(-)

commit a08be1c420501b1c75770a8f6103e3959486c895
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-09 14:10:52 +0200

    xz: Add comments about stdin and src_st.st_size.
    
    "xz -v < regular_file > out.xz" doesn't display the percentage
    and estimated remaining time because it doesn't even try to
    check the input file size when input is read from stdin.
    This could be improved but for now there's just a comment
    to remind about it.

 src/xz/coder.c   | 9 +++++++++
 src/xz/file_io.c | 4 ++++
 2 files changed, 13 insertions(+)

commit 3ee411cd1cd636bdced6ecede4651394bb4f9cb1
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-09 12:48:22 +0200

    xz: Fix displaying of file sizes in progress indicator in passthru mode.
    
    It worked for one input file since the counters are zero when
    xz starts but they weren't reset when starting a new file in
    passthru mode. For example, if files A, B, and C are one byte each,
    then "xz -dcvf A B C" would show file sizes as 1, 2, and 3 bytes
    instead of 1, 1, and 1 byte.

 src/xz/coder.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

commit aa7fa9d960df4bb21f7727bbf7ce0503f3d211b4
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-09 11:27:20 +0200

    xz: Add a comment why --to-stdout is not in --help.
    
    It is on the man page still.

 src/xz/message.c | 3 +++
 1 file changed, 3 insertions(+)

commit ff49ff84a4ba3fab25ffb6d65af321dee36c1273
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-08 22:26:54 +0200

    Docs: Update faq.txt a little.

 doc/faq.txt | 66 ++++++++++++++++++++++++++++++++++++++++---------------------
 1 file changed, 43 insertions(+), 23 deletions(-)

commit 3489565b75b45ee514cf0a6785bb721c7dc624f3
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-08 14:13:03 +0200

    liblzma: Update API docs about decoder flags.

 src/liblzma/api/lzma/container.h | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

commit e4937710805c4b660fc629c15d9a6164b2d97822
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-08 14:00:58 +0200

    liblzma: Fix a comment in auto_decoder.c.

 src/liblzma/common/auto_decoder.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit d4674dfbb7d1df1feb841f5dbce6ae1f0b026879
Author: Jia Tan <jiat0218@gmail.com>
Date:   2022-11-07 16:24:14 +0200

    xz: Avoid a compiler warning in progress_speed() in message.c.
    
    This should be smaller too since it avoids the string constants.

 src/xz/message.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

commit 4ed56d32a91ff8ff21c71db4082a54a72ae08b3d
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-10-31 16:26:05 +0200

    Build: Clarify comment in configure.ac about SSE2.

 configure.ac | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

commit f930638797f1fec05b272367c052d4fc9de35896
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-10-31 16:16:37 +0200

    Build: Remove obsolete commented-out lines from configure.ac.

 configure.ac | 4 ----
 1 file changed, 4 deletions(-)

commit 6930f14733757592a4f8d92513f642a5dcc9ec9c
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-10-31 13:31:58 +0200

    Windows: Fix mythread_once() macro with Vista threads.
    
    Don't call InitOnceComplete() if initialization was already done.
    
    So far mythread_once() has been needed only when building
    with --enable-small. windows/build.bash does this together
    with --disable-threads so the Vista-specific mythread_once()
    is never needed by those builds. VS project files or
    CMake-builds don't support HAVE_SMALL builds at all.

 src/common/mythread.h | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

commit 1c8cbb5be3a97bf22e933777369c4cc28ef9ed5f
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-10-31 11:49:47 +0200

    CMake: Sync tuklib_cpucores.cmake with tuklib_cpucores.m4.
    
    This was forgotten from commit 2611c4d90535652d3eb7ef4a026a6691276fab43.

 cmake/tuklib_cpucores.cmake | 5 +++++
 1 file changed, 5 insertions(+)

commit fa9efb729b1827b25ec71aefcf32f3aceeaf9597
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-10-25 23:45:03 +0300

    Build: Use AC_CONFIG_HEADERS instead of the ancient AC_CONFIG_HEADER.
    
    We require Autoconf >= 2.69 and that has AC_CONFIG_HEADERS.
    
    There is a warning about AC_PROG_CC_C99 being obsolete but
    it cannot be removed because it is needed with Autoconf 2.69.

 configure.ac | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit b10ba4bf39edd9c9fef42cade3e64fc3b9e3fd19
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-10-25 23:31:44 +0300

    Build: Update m4/ax_pthread.m4 from Autoconf Archive.

 m4/ax_pthread.m4 | 29 ++++++++++++++++++++++-------
 1 file changed, 22 insertions(+), 7 deletions(-)

commit 01744b280c6e35d331b9dc4cc64716b82bc8b3db
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-10-25 23:09:11 +0300

    xz: Fix --single-stream with an empty .xz Stream.
    
    Example:
    
        $ xz -dc --single-stream good-0-empty.xz
        xz: good-0-empty.xz: Internal error (bug)
    
    The code, that is tries to catch some input file issues early,
    didn't anticipate LZMA_STREAM_END which is possible in that
    code only when --single-stream is used.

 src/xz/coder.c | 9 +++++++++
 1 file changed, 9 insertions(+)

commit a3e4606134058241bf1c396243bebcec42c2a780
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-10-25 19:07:17 +0300

    xz: Fix decompressor behavior if input uses an unsupported check type.
    
    Now files with unsupported check will make xz display
    a warning, set the exit status to 2 (unless --no-warn is used),
    and then decompress the file normally. This is how it was
    supposed to work since the beginning but this was broken by
    the commit 231c3c7098f1099a56abb8afece76fc9b8699f05, that is,
    a little before 5.0.0 was released. The buggy behavior displayed
    a message, set exit status 1 (error), and xz didn't attempt to
    to decompress the file.
    
    This doesn't matter today except for special builds that disable
    CRC64 or SHA-256 at build time (but such builds should be used
    in special situations only). The bug matters if new check type
    is added in the future and an old xz version is used to decompress
    such a file; however, it's likely that such files would use a new
    filter too and an old xz wouldn't be able to decompress the file
    anyway.
    
    The first hunk in the commit is the actual fix. The second hunk
    is a cleanup since LZMA_TELL_ANY_CHECK isn't used in xz.
    
    There is a test file for unsupported check type but it wasn't
    used by test_files.sh, perhaps due to different behavior between
    xz and the simpler xzdec.

 src/xz/coder.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

commit 0b5e8c7e073bce07c59112af1e8a7495e3576e6c
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-10-25 18:36:19 +0300

    xz: Clarify the man page: input file isn't removed if an error occurs.

 src/xz/xz.1 | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

commit 23b7416d5ba0e3579265467bd546865d2ea4cef0
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-10-25 18:23:54 +0300

    xz: If input file cannot be removed, treat it as a warning, not error.
    
    Treating it as a warning (message + exit status 2) matches gzip
    and it seems more logical as at that point the output file has
    already been successfully closed. When it's a warning it is
    possible to suppress it with --no-warn.

 src/xz/file_io.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit 5daa40454b63c4eb04ab5caeb339eddc95c94bb1
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-10-20 20:22:50 +0300

    tuklib_cpucores: Use HW_NCPUONLINE on OpenBSD.
    
    On OpenBSD the number of cores online is often less
    than what HW_NCPU would return because OpenBSD disables
    simultaneous multi-threading (SMT) by default.
    
    Thanks to Christian Weisgerber.

 m4/tuklib_cpucores.m4        | 5 +++++
 src/common/tuklib_cpucores.c | 9 +++++++++
 2 files changed, 14 insertions(+)

commit 0af861050f375678eafc4e1136ca589ae47d31c0
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-11 13:25:02 +0200

    NEWS: Omit the extra copy of 5.2.5 NEWS.
    
    It was a copy-paste error.

 NEWS | 105 -------------------------------------------------------------------
 1 file changed, 105 deletions(-)

commit f0c6a66701afed12c5926c0499b150ecd5b0a63c
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-10 12:34:43 +0200

    Translations: Rename poa4/fr_FR.po to po4a/fr.po.
    
    That's how it is preferred at the Translation Project.
    On my system /usr/share/man/fr_FR doesn't contain any
    other man pages than XZ Utils while /usr/share/man/fr
    has quite a few, so this will fix that too.
    
    Thanks to Benno Schulenberg from the Translation Project.

 po4a/{fr_FR.po => fr.po} | 0
 po4a/po4a.conf           | 2 +-
 2 files changed, 1 insertion(+), 1 deletion(-)

commit 6bf8b1f870870a1a0c3f555c34decc9ffb9f8d7a
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-08 16:57:17 +0200

    Translations: Update Turkish translation.

 po/tr.po | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 9f8e9d3c8189d8c6f587c99b0da1cf83f72330c2
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-11-08 14:55:32 +0200

    Translations: Update Croatian translation.

 po/hr.po | 190 ++++++++++++++++++++++++++++++++-------------------------------
 1 file changed, 96 insertions(+), 94 deletions(-)

commit d24a57b7fc7e5e9267b84367cb0788d3acf7f569
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-30 16:41:03 +0300

    Bump version and soname for 5.2.7.

 src/liblzma/Makefile.am        | 2 +-
 src/liblzma/api/lzma/version.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

commit d2003362dd42004355a5550ee7a60ace3b3ea2d8
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-30 16:40:39 +0300

    Add NEWS for 5.2.7.

 NEWS | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 74 insertions(+)

commit 369afb51991e91a5c3a23c4ae3872329a403eb31
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-30 12:06:13 +0300

    liblzma: Add API doc note about the .xz decoder LZMA_MEMLIMIT_ERROR bug.
    
    The bug was fixed in 660739f99ab211edec4071de98889fb32ed04e98.

 src/liblzma/api/lzma/base.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

commit 166431e9951613481b8136f52b570d7bc30b5a03
Author: Jia Tan <jiat0218@gmail.com>
Date:   2022-09-21 16:15:50 +0800

    liblzma: Add dest and src NULL checks to lzma_index_cat.
    
    The documentation states LZMA_PROG_ERROR can be returned from
    lzma_index_cat. Previously, lzma_index_cat could not return
    LZMA_PROG_ERROR. Now, the validation is similar to
    lzma_index_append, which does a NULL check on the index
    parameter.

 src/liblzma/common/index.c | 3 +++
 1 file changed, 3 insertions(+)

commit 5e53a6c28b87a0bb9b0cfeaf708cc99ef8e9bc66
Author: Jia Tan <jiat0218@gmail.com>
Date:   2022-09-21 20:29:28 +0800

    Tests: Create a test for the lzma_index_cat bug.

 tests/test_index.c | 43 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)

commit 4ed5fd54c676b735e3f58158f214af68755d59b5
Author: Jia Tan <jiat0218@gmail.com>
Date:   2022-09-21 19:28:53 +0800

    liblzma: Fix copying of check type statistics in lzma_index_cat().
    
    The check type of the last Stream in dest was never copied to
    dest->checks (the code tried to copy it but it was done too late).
    This meant that the value returned by lzma_index_checks() would
    only include the check type of the last Stream when multiple
    lzma_indexes had been concatenated.
    
    In xz --list this meant that the summary would only list the
    check type of the last Stream, so in this sense this was only
    a visual bug. However, it's possible that some applications
    use this information for purposes other than merely showing
    it to the users in an informational message. I'm not aware of
    such applications though and it's quite possible that such
    applications don't exist.
    
    Regular streamed decompression in xz or any other application
    doesn't use lzma_index_cat() and so this bug cannot affect them.

 src/liblzma/common/index.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

commit c4476f695291a2d7376d5fa406d32e354f858858
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-28 12:20:41 +0300

    tuklib_physmem: Fix Unicode builds on Windows.
    
    Thanks to ArSaCiA Game.

 src/common/tuklib_physmem.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 976f897bbba9890a99f01a8d59c6d59c230142e6
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-28 11:05:15 +0300

    liblzma: Stream decoder: Fix restarting after LZMA_MEMLIMIT_ERROR.
    
    If lzma_code() returns LZMA_MEMLIMIT_ERROR it is now possible
    to use lzma_memlimit_set() to increase the limit and continue
    decoding. This was supposed to work from the beginning but
    there was a bug. With other decoders (.lzma or threaded .xz)
    this already worked correctly.

 src/liblzma/common/stream_decoder.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

commit 2caa9580e5f7c5cc6668e9427a2c21f3f63bb684
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-28 11:00:23 +0300

    liblzma: Stream decoder: Fix comments.

 src/liblzma/common/stream_decoder.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

commit 51882fec5b96cf7760389b670d86c1e7a5a0ced2
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-16 14:09:07 +0300

    Update THANKS.

 THANKS | 1 +
 1 file changed, 1 insertion(+)

commit 974186f7cd839f1dbf937b98e112dff670d2bd5c
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-16 14:07:03 +0300

    xzgrep: Fix compatibility with old shells.
    
    Running the current xzgrep on Slackware 10.1 with GNU bash 3.00.15:
    
        xzgrep: line 231: syntax error near unexpected token `;;'
    
    On SCO OpenServer 5.0.7 with Korn Shell 93r:
    
        syntax error at line 231 : `;;' unexpected
    
    Turns out that some old shells don't like apostrophes (') inside
    command substitutions. For example, the following fails:
    
        x=$(echo foo
        # asdf'zxcv
        echo bar)
        printf '%s\n' "$x"
    
    The problem was introduced by commits
    69d1b3fc29677af8ade8dc15dba83f0589cb63d6 (2022-03-29),
    bd7b290f3fe4faeceb7d3497ed9bf2e6ed5e7dc5 (2022-07-18), and
    a648978b20495b7aa4a8b029c5a810b5ad9d08ff (2022-07-19).
    5.2.6 is the only stable release that included
    this problem.
    
    Thanks to Kevin R. Bulgrien for reporting the problem
    on SCO OpenServer 5.0.7 and for providing the fix.

 src/scripts/xzgrep.in | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

commit f94da15120c3d3c363ca12c2262ac6cb9f321f4f
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-09 13:51:57 +0300

    liblzma: lzma_filters_copy: Keep dest[] unmodified if an error occurs.
    
    lzma_stream_encoder() and lzma_stream_encoder_mt() always assumed
    this. Before this patch, failing lzma_filters_copy() could result
    in free(invalid_pointer) or invalid memory reads in stream_encoder.c
    or stream_encoder_mt.c.
    
    To trigger this, allocating memory for a filter options structure
    has to fail. These are tiny allocations so in practice they very
    rarely fail.
    
    Certain badness in the filter chain array could also make
    lzma_filters_copy() fail but both stream_encoder.c and
    stream_encoder_mt.c validate the filter chain before
    trying to copy it, so the crash cannot occur this way.

 src/liblzma/api/lzma/filter.h      |  4 +++-
 src/liblzma/common/filter_common.c | 18 ++++++++++++------
 2 files changed, 15 insertions(+), 7 deletions(-)

commit ea57b9aa2c3e1cdb667f8dd698314b1c36047018
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-16 17:08:53 +0300

    Tests: Add a test file for lzma_index_append() integer overflow bug.
    
    This test fails before commit 18d7facd3802b55c287581405c4d49c98708c136.
    
    test_files.sh now runs xz -l for bad-3-index-uncomp-overflow.xz
    because only then the previously-buggy code path gets tested.
    Normal decompression doesn't use lzma_index_append() at all.
    Instead, lzma_index_hash functions are used and those already
    did the overflow check.

 tests/files/README                         |  10 ++++++++++
 tests/files/bad-3-index-uncomp-overflow.xz | Bin 0 -> 132 bytes
 tests/test_files.sh                        |   8 ++++++++
 3 files changed, 18 insertions(+)

commit 72e1645a439a999638a63ec9abb7210671ea5415
Author: Jia Tan <jiat0218@gmail.com>
Date:   2022-09-02 20:18:55 +0800

    liblzma: lzma_index_append: Add missing integer overflow check.
    
    The documentation in src/liblzma/api/lzma/index.h suggests that
    both the unpadded (compressed) size and the uncompressed size
    are checked for overflow, but only the unpadded size was checked.
    The uncompressed check is done first since that is more likely to
    occur than the unpadded or index field size overflows.

 src/liblzma/common/index.c | 4 ++++
 1 file changed, 4 insertions(+)

commit 20d82bc90781aa9d2373efe872d90ba64dc7dc62
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-08 15:11:08 +0300

    Update THANKS.

 THANKS | 1 +
 1 file changed, 1 insertion(+)

commit 31d80c6b261b24220776dfaeb8a04f80f80e0a24
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-04 23:23:00 +0300

    liblzma: Vaccinate against an ill patch from RHEL/CentOS 7.
    
    RHEL/CentOS 7 shipped with 5.1.2alpha, including the threaded
    encoder that is behind #ifdef LZMA_UNSTABLE in the API headers.
    In 5.1.2alpha these symbols are under XZ_5.1.2alpha in liblzma.map.
    API/ABI compatibility tracking isn't done between development
    releases so newer releases didn't have XZ_5.1.2alpha anymore.
    
    Later RHEL/CentOS 7 updated xz to 5.2.2 but they wanted to keep
    the exported symbols compatible with 5.1.2alpha. After checking
    the ABI changes it turned out that >= 5.2.0 ABI is backward
    compatible with the threaded encoder functions from 5.1.2alpha
    (but not vice versa as fixes and extensions to these functions
    were made between 5.1.2alpha and 5.2.0).
    
    In RHEL/CentOS 7, XZ Utils 5.2.2 was patched with
    xz-5.2.2-compat-libs.patch to modify liblzma.map:
    
      - XZ_5.1.2alpha was added with lzma_stream_encoder_mt and
        lzma_stream_encoder_mt_memusage. This matched XZ Utils 5.1.2alpha.
    
      - XZ_5.2 was replaced with XZ_5.2.2. It is clear that this was
        an error; the intention was to keep using XZ_5.2 (XZ_5.2.2
        has never been used in XZ Utils). So XZ_5.2.2 lists all
        symbols that were listed under XZ_5.2 before the patch.
        lzma_stream_encoder_mt and _mt_memusage are included too so
        they are listed both here and under XZ_5.1.2alpha.
    
    The patch didn't add any __asm__(".symver ...") lines to the .c
    files. Thus the resulting liblzma.so exports the threaded encoder
    functions under XZ_5.1.2alpha only. Listing the two functions
    also under XZ_5.2.2 in liblzma.map has no effect without
    matching .symver lines.
    
    The lack of XZ_5.2 in RHEL/CentOS 7 means that binaries linked
    against unpatched XZ Utils 5.2.x won't run on RHEL/CentOS 7.
    This is unfortunate but this alone isn't too bad as the problem
    is contained within RHEL/CentOS 7 and doesn't affect users
    of other distributions. It could also be fixed internally in
    RHEL/CentOS 7.
    
    The second problem is more serious: In XZ Utils 5.2.2 the API
    headers don't have #ifdef LZMA_UNSTABLE for obvious reasons.
    This is true in RHEL/CentOS 7 version too. Thus now programs
    using new APIs can be compiled without an extra #define. However,
    the programs end up depending on symbol version XZ_5.1.2alpha
    (and possibly also XZ_5.2.2) instead of XZ_5.2 as they would
    with an unpatched XZ Utils 5.2.2. This means that such binaries
    won't run on other distributions shipping XZ Utils >= 5.2.0 as
    they don't provide XZ_5.1.2alpha or XZ_5.2.2; they only provide
    XZ_5.2 (and XZ_5.0). (This includes RHEL/CentOS 8 as the patch
    luckily isn't included there anymore with XZ Utils 5.2.4.)
    
    Binaries built by RHEL/CentOS 7 users get distributed and then
    people wonder why they don't run on some other distribution.
    Seems that people have found out about the patch and been copying
    it to some build scripts, seemingly curing the symptoms but
    actually spreading the illness further and outside RHEL/CentOS 7.
    
    The ill patch seems to be from late 2016 (RHEL 7.3) and in 2017 it
    had spread at least to EasyBuild. I heard about the events only
    recently. :-(
    
    This commit splits liblzma.map into two versions: one for
    GNU/Linux and another for other OSes that can use symbol versioning
    (FreeBSD, Solaris, maybe others). The Linux-specific file and the
    matching additions to .c files add full compatibility with binaries
    that have been built against a RHEL/CentOS-patched liblzma. Builds
    for OSes other than GNU/Linux won't get the vaccine as they should
    be immune to the problem (I really hope that no build script uses
    the RHEL/CentOS 7 patch outside GNU/Linux).
    
    The RHEL/CentOS compatibility symbols XZ_5.1.2alpha and XZ_5.2.2
    are intentionally put *after* XZ_5.2 in liblzma_linux.map. This way
    if one forgets to #define HAVE_SYMBOL_VERSIONS_LINUX when building,
    the resulting liblzma.so.5 will have lzma_stream_encoder_mt@@XZ_5.2
    since XZ_5.2 {...} is the first one that lists that function.
    Without HAVE_SYMBOL_VERSIONS_LINUX @XZ_5.1.2alpha and @XZ_5.2.2
    will be missing but that's still a minor problem compared to
    only having lzma_stream_encoder_mt@@XZ_5.1.2alpha!
    
    The "local: *;" line was moved to XZ_5.0 so that it doesn't need
    to be moved around. It doesn't matter where it is put.
    
    Having two similar liblzma_*.map files is a bit silly as it is,
    at least for now, easily possible to generate the generic one
    from the Linux-specific file. But that adds extra steps and
    increases the risk of mistakes when supporting more than one
    build system. So I rather maintain two files in parallel and let
    validate_map.sh check that they are in sync when "make mydist"
    is run.
    
    This adds .symver lines for lzma_stream_encoder_mt@XZ_5.2.2 and
    lzma_stream_encoder_mt_memusage@XZ_5.2.2 even though these
    weren't exported by RHEL/CentOS 7 (only @@XZ_5.1.2alpha was
    for these two). I added these anyway because someone might
    misunderstand the RHEL/CentOS 7 patch and think that @XZ_5.2.2
    (@@XZ_5.2.2) versions were exported too.
    
    At glance one could suggest using __typeof__ to copy the function
    prototypes when making aliases. However, this doesn't work trivially
    because __typeof__ won't copy attributes (lzma_nothrow, lzma_pure)
    and it won't change symbol visibility from hidden to default (done
    by LZMA_API()). Attributes could be copied with __copy__ attribute
    but that needs GCC 9 and a fallback method would be needed anyway.
    
    This uses __symver__ attribute with GCC >= 10 and
    __asm__(".symver ...") with everything else. The attribute method
    is required for LTO (-flto) support with GCC. Using -flto with
    GCC older than 10 is now broken on GNU/Linux and will not be fixed
    (can silently result in a broken liblzma build that has dangerously
    incorrect symbol versions). LTO builds with Clang seem to work
    with the traditional __asm__(".symver ...") method.
    
    Thanks to Boud Roukema for reporting the problem and discussing
    the details and testing the fix.

 configure.ac                                     |  23 ++++-
 src/liblzma/Makefile.am                          |  10 +-
 src/liblzma/common/block_buffer_encoder.c        |  18 ++++
 src/liblzma/common/common.c                      |  14 +++
 src/liblzma/common/common.h                      |  28 ++++++
 src/liblzma/common/hardware_cputhreads.c         |  12 +++
 src/liblzma/common/stream_encoder_mt.c           |  42 ++++++++
 src/liblzma/{liblzma.map => liblzma_generic.map} |   6 +-
 src/liblzma/liblzma_linux.map                    | 123 +++++++++++++++++++++++
 src/liblzma/validate_map.sh                      | 113 +++++++++++++++++++--
 10 files changed, 374 insertions(+), 15 deletions(-)

commit e7a7ac744eb0f890ef52388de838596ef566c73f
Author: Jia Tan <jiat0218@gmail.com>
Date:   2022-09-08 15:07:00 +0300

    CMake: Clarify a comment about Windows symlinks without file extension.

 CMakeLists.txt | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

commit a273a0cb77c6000e4da627b07f28c5af41f0908c
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-08 15:02:41 +0300

    CMake: Update for liblzma_*.map files and fix wrong common_w32res.rc dep.
    
    The previous commit split liblzma.map into liblzma_linux.map and
    liblzma_generic.map. This commit updates the CMake build for those.
    
    common_w32res.rc dependency was listed under Linux/FreeBSD while
    obviously it belongs to Windows when building a DLL.

 CMakeLists.txt | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

commit 5875a45be0ab399e37acc31165725a9b5291f67e
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-08-31 16:42:04 +0300

    CMake: Add xz symlinks.
    
    These are a minor thing especially since the xz build has
    some real problems still like lack of large file support
    on 32-bit systems but I'll commit this since the code exists.
    
    Thanks to Jia Tan.

 CMakeLists.txt | 38 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 37 insertions(+), 1 deletion(-)

commit 3523b6ebb56c447f21736f01bfe91602741aa3e7
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-08-31 16:29:38 +0300

    CMake: Put xz man page install under if(UNIX) like is for xzdec.
    
    Thanks to Jia Tan.

 CMakeLists.txt | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

commit 5af9e8759f748a11a408bfc5aef829df3811fc23
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-09-16 15:10:07 +0300

    Translations: Add Turkish translation.

 po/LINGUAS |   1 +
 po/tr.po   | 977 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 978 insertions(+)

commit f05a69685e9c7f7157d751abfbd2d8ea6e3bacc7
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-08-18 17:49:16 +0300

    Build: Include the CMake files in the distribution.
    
    This was supposed to be done in 2020 with 5.2.5 release
    already but it was noticed only today. 5.2.5 and 5.2.6
    even mention experiemental CMake support in the NEWS entries.
    
    Thanks to Olivier B. for reporting the problem.

 Makefile.am | 2 ++
 1 file changed, 2 insertions(+)

commit ad5ef6d3c30bb749113c51aa0bbe8bcb5e193fbe
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-08-18 17:38:05 +0300

    Windows: Fix broken liblzma.dll build with Visual Studio project files.
    
    The bug was introduced in 352ba2d69af2136bc814aa1df1a132559d445616
    "Windows: Fix building of resource files when config.h isn't used."
    
    That commit fixed liblzma.dll build with CMake while keeping it
    working with Autotools on Windows but the VS project files were
    forgotten.
    
    I haven't tested these changes.
    
    Thanks to Olivier B. for reporting the bug and for the initial patch.

 windows/vs2013/liblzma_dll.vcxproj | 6 ++++++
 windows/vs2017/liblzma_dll.vcxproj | 6 ++++++
 windows/vs2019/liblzma_dll.vcxproj | 6 ++++++
 3 files changed, 18 insertions(+)

commit 8dfed05bdaa4873833ba24279f02ad2db25effea
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-08-12 14:30:13 +0300

    Bump version and soname for 5.2.6.

 src/liblzma/Makefile.am        | 2 +-
 src/liblzma/api/lzma/version.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

commit 09b4af4e04def5777b06124200b64b0b941eea7f
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-08-12 14:29:28 +0300

    Add NEWS for 5.2.6.

 NEWS | 226 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 226 insertions(+)

commit 692de534fae6c38f92416793addcf5f60ffe2bf6
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-08-12 14:28:41 +0300

    Add Jia Tan to AUTHORS.

 AUTHORS | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 275de376a645f406be7c453bb68427aa9466cf83
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-07-25 19:11:05 +0300

    Translations: Change the copyright comment string to use with po4a.
    
    This affects the second line in po4a/xz-man.pot. The man pages of
    xzdiff, xzgrep, and xzmore are from GNU gzip and under GNU GPLv2+
    while the rest of the man pages are in the public domain.

 po4a/update-po | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 76a5a752b8467ff591dd028deb61e9bf2c274c7e
Author: Jia Tan <jiat0218@gmail.com>
Date:   2022-07-25 18:30:05 +0300

    liblzma: Refactor lzma_mf_is_supported() to use a switch-statement.

 src/liblzma/lz/lz_encoder.c | 32 ++++++++++++++------------------
 1 file changed, 14 insertions(+), 18 deletions(-)

commit 749b86c2c18ab61a07f19ec8fefc67325da97397
Author: Jia Tan <jiat0218@gmail.com>
Date:   2022-07-25 18:20:01 +0300

    Build: Don't allow empty LIST in --enable-match-finders=LIST.
    
    It's enforced only when a match finder is needed, that is,
    when LZMA1 or LZMA2 encoder is enabled.

 configure.ac | 4 ++++
 1 file changed, 4 insertions(+)

commit 63e3cdef805a4d9ea94c76c36cbabe4dc76abe36
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2021-01-11 23:41:16 +0200

    xz: Make --keep accept symlinks, hardlinks, and setuid/setgid/sticky.
    
    Previously this required using --force but that has other
    effects too which might be undesirable. Changing the behavior
    of --keep has a small risk of breaking existing scripts but
    since this is a fairly special corner case I expect the
    likehood of breakage to be low enough.
    
    I think the new behavior is more logical. The only reason for
    the old behavior was to be consistent with gzip and bzip2.
    
    Thanks to Vincent Lefevre and Sebastian Andrzej Siewior.

 src/xz/file_io.c |  9 +++++----
 src/xz/xz.1      | 16 +++++++++++++++-
 2 files changed, 20 insertions(+), 5 deletions(-)

commit 9055584be0ae47032b7fb3ba8531aa56b9ed572a
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-07-19 23:19:49 +0300

    xzgrep man page: Document exit statuses.

 src/scripts/xzgrep.1 | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

commit 57e1ccbb7ce30e5298ea7ec3934e462fa8d32237
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-07-19 23:13:24 +0300

    xzgrep: Improve error handling, especially signals.
    
    xzgrep wouldn't exit on SIGPIPE or SIGQUIT when it clearly
    should have. It's quite possible that it's not perfect still
    but at least it's much better.
    
    If multiple exit statuses compete, now it tries to pick
    the largest of value.
    
    Some comments were added.
    
    The exit status handling of signals is still broken if the shell
    uses values larger than 255 in $? to indicate that a process
    died due to a signal ***and*** their "exit" command doesn't take
    this into account. This seems to work well with the ksh and yash
    versions I tried. However, there is a report in gzip/zgrep that
    OpenSolaris 5.11 (not 5.10) has a problem with "exit" truncating
    the argument to 8 bits:
    
        https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22900#25
    
    Such a bug would break xzgrep but I didn't add a workaround
    at least for now. 5.11 is old and I don't know if the problem
    exists in modern descendants, or if the problem exists in other
    ksh implementations in use.

 src/scripts/xzgrep.in | 72 +++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 53 insertions(+), 19 deletions(-)

commit 6351ea1afb261ec9be95f808bcbe724e0da4ae09
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-07-19 00:10:55 +0300

    xzgrep: Make the fix for ZDI-CAN-16587 more robust.
    
    I don't know if this can make a difference in the real world
    but it looked kind of suspicious (what happens with sed
    implementations that cannot process very long lines?).
    At least this commit shouldn't make it worse.

 src/scripts/xzgrep.in | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

commit 2c1ff2ed6b9f17b3913866a15d776ebbbeb824d2
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-07-18 21:52:31 +0300

    xzgrep: Use grep -H --label when available (GNU, *BSDs).
    
    It avoids the use of sed for prefixing filenames to output lines.
    Using sed for that is slower and prone to security bugs so now
    the sed method is only used as a fallback.
    
    This also fixes an actual bug: When grepping a binary file,
    GNU grep nowadays prints its diagnostics to stderr instead of
    stdout and thus the sed-method for prefixing the filename doesn't
    work. So with this commit grepping binary files gives reasonable
    output with GNU grep now.
    
    This was inspired by zgrep but the implementation is different.

 src/scripts/xzgrep.in | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

commit 8b0be38a795fa1cdffdada64341a34209e630060
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-07-18 21:10:25 +0300

    xzgrep: Use -e to specify the pattern to grep.
    
    Now we don't need the separate test for adding the -q option
    as it can be added directly in the two places where it's needed.

 src/scripts/xzgrep.in | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

commit 4a61867a874c60b31448d2d4f3c276efba85a243
Author: Lasse Collin <lasse.collin@tukaani.org>
Date:   2022-07-18 19:18:48 +0300

    Scripts: Use printf instead of echo in a few places.
    
    It's a good habbit as echo has some portability corner cases
    when the string contents can be anything.

 src/scripts/xzdiff.in | 6 +++---
 src/scripts/xzgrep.in | 4 ++--
 src/scripts/xzless.in | 4 ++--
 src/scripts/xzmore.in | 8 ++++----
 4 files changed, 11 insertions(+), 11 deletions(-)

