commit d8a898eb9974683bc725c49ec76722f9a8758f48 Author: Lasse Collin Date: 2022-11-30 18:33:05 +0200 Bump version and soname for 5.2.9. src/liblzma/Makefile.am | 2 +- src/liblzma/api/lzma/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit efd4430e21f798e198a6ee8a368a79065139eb54 Author: Lasse Collin Date: 2022-11-30 18:31:16 +0200 Add NEWS for 5.2.9. NEWS | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) commit 2dc1bc97a562ef4d4134c8df4d344d0f403428b8 Author: Lasse Collin Date: 2022-11-30 18:08:34 +0200 Change the bug report address. It forwards to me and Jia Tan. Also update the IRC reference in README as #tukaani was moved to Libera Chat long ago. CMakeLists.txt | 2 +- README | 11 +++++------ configure.ac | 2 +- dos/config.h | 2 +- windows/README-Windows.txt | 2 +- 5 files changed, 9 insertions(+), 10 deletions(-) commit fb13a234d9def06cbe2b8ed88ece7db0c6d5c39f Author: Lasse Collin Date: 2022-11-30 17:38:32 +0200 Update to HTTPS URLs in AUTHORS. AUTHORS | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 841448e36d4455d39ff1e1115843360934e7a507 Author: Lasse Collin Date: 2022-11-27 01:03:16 +0200 liblzma: Remove two FIXME comments. src/liblzma/common/filter_encoder.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit b61da00c7f535bd48930a878efdf6843d804983e Author: Lasse Collin Date: 2022-11-24 14:52:44 +0200 Build: Don't put GNU/Linux-specific symbol versions into static liblzma. It not only makes no sense to put symbol versions into a static library but it can also cause breakage. By default Libtool #defines PIC if building a shared library and doesn't define it for static libraries. This is documented in the Libtool manual. It can be overriden using --with-pic or --without-pic. configure.ac detects if --with-pic or --without-pic is used and then gives an error if neither --disable-shared nor --disable-static was used at the same time. Thus, in normal situations it works to build both shared and static library at the same time on GNU/Linux, only --with-pic or --without-pic requires that only one type of library is built. Thanks to John Paul Adrian Glaubitz from Debian for reporting the problem that occurred on ia64: https://www.mail-archive.com/xz-devel@tukaani.org/msg00610.html CMakeLists.txt | 5 +- configure.ac | 143 +++++++++++++++++++++++++++++--------------- src/liblzma/common/common.h | 12 ++++ 3 files changed, 111 insertions(+), 49 deletions(-) commit 6c29793b3cac292b25801d011db6d8ccade50396 Author: Lasse Collin Date: 2022-11-24 00:02:31 +0200 CMake: Don't use symbol versioning with static library. CMakeLists.txt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit 872623def5e3e5c7f9f14f366d908f3e012d1007 Author: Lasse Collin Date: 2022-11-24 01:26:37 +0200 liblzma: Fix another invalid free() after memory allocation failure. This time it can happen when lzma_stream_encoder_mt() is used to reinitialize an existing multi-threaded Stream encoder and one of 1-4 tiny allocations in lzma_filters_copy() fail. It's very similar to the previous bug 10430fbf3820dafd4eafd38ec8be161a6978ed2b, happening with an array of lzma_filter structures whose old options are freed but the replacement never arrives due to a memory allocation failure in lzma_filters_copy(). src/liblzma/common/stream_encoder_mt.c | 4 ++++ 1 file changed, 4 insertions(+) commit b0f8d9293ca5a0a56964695a59a098c9d1e82b99 Author: Jia Tan Date: 2022-05-05 20:53:42 +0800 liblzma: Add support for LZMA_SYNC_FLUSH in the Block encoder. The documentation mentions that lzma_block_encoder() supports LZMA_SYNC_FLUSH but it was never added to supported_actions[] in the internal structure. Because of this, LZMA_SYNC_FLUSH could not be used with the Block encoder unless it was the next coder after something like stream_encoder() or stream_encoder_mt(). src/liblzma/common/block_encoder.c | 1 + 1 file changed, 1 insertion(+) commit 6997e0b5e2339025646cfaec13a3317fb340729b Author: Lasse Collin Date: 2022-11-23 21:55:22 +0200 liblzma: Add lzma_attr_warn_unused_result to lzma_filters_copy(). src/liblzma/api/lzma/filter.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit f94a3e34603c56c55777056bb5412bfd0e948f0b Author: Lasse Collin Date: 2022-11-23 21:26:21 +0200 liblzma: Fix invalid free() after memory allocation failure. The bug was in the single-threaded .xz Stream encoder in the code that is used for both re-initialization and for lzma_filters_update(). To trigger it, an application had to either re-initialize an existing encoder instance with lzma_stream_encoder() or use lzma_filters_update(), and then one of the 1-4 tiny allocations in lzma_filters_copy() (called from stream_encoder_update()) must fail. An error was correctly reported but the encoder state was corrupted. This is related to the recent fix in f8ee61e74eb40600445fdb601c374d582e1e9c8a which is good but it wasn't enough to fix the main problem in stream_encoder.c. src/liblzma/common/stream_encoder.c | 39 +++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) commit 8309385b444bce23e56256e21fb008a170434008 Author: Lasse Collin Date: 2022-11-22 16:37:15 +0200 liblzma: Fix language in a comment. src/liblzma/common/stream_encoder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5fecba6022cbbeed8103b49d79b2fb36086be72d Author: Lasse Collin Date: 2022-11-22 11:20:17 +0200 liblzma: Fix infinite loop in LZMA encoder init with dict_size >= 2 GiB. The encoder doesn't support dictionary sizes larger than 1536 MiB. This is validated, for example, when calculating the memory usage via lzma_raw_encoder_memusage(). It is also enforced by the LZ part of the encoder initialization. However, LZMA encoder with LZMA_MODE_NORMAL did an unsafe calculation with dict_size before such validation and that results in an infinite loop if dict_size was 2 << 30 or greater. src/liblzma/lzma/lzma_encoder.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) commit 1946b2b141d8b12c9325ba48d3a04ad8e8206750 Author: Lasse Collin Date: 2022-11-21 13:02:33 +0200 liblzma: Fix two Doxygen commands in the API headers. These were caught by clang -Wdocumentation. src/liblzma/api/lzma/hardware.h | 2 +- src/liblzma/api/lzma/index_hash.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 5476089d9c42b9b04e92b80e1800b384a98265cb Author: Lasse Collin 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 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 Date: 2022-11-11 17:16:03 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 454f567e58bbadea5cff4f31ef450c1305e9853d Author: Lasse Collin 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Date: 2022-09-16 14:09:07 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 974186f7cd839f1dbf937b98e112dff670d2bd5c Author: Lasse Collin 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 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 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 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 Date: 2022-09-08 15:11:08 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 31d80c6b261b24220776dfaeb8a04f80f80e0a24 Author: Lasse Collin 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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(-) commit 0e222bf7d79a9792025c5ffeaa66c8e14eb47615 Author: Lasse Collin Date: 2022-07-17 21:36:25 +0300 xzgrep: Add more LC_ALL=C to avoid bugs with multibyte characters. Also replace one use of expr with printf. The rationale for LC_ALL=C was already mentioned in 69d1b3fc29677af8ade8dc15dba83f0589cb63d6 that fixed a security issue. However, unrelated uses weren't changed in that commit yet. POSIX says that with sed and such tools one should use LC_ALL=C to ensure predictable behavior when strings contain byte sequences that aren't valid multibyte characters in the current locale. See under "Application usage" in here: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html With GNU sed invalid multibyte strings would work without this; it's documented in its Texinfo manual. Some other implementations aren't so forgiving. src/scripts/xzgrep.in | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) commit 62c1d2bc2da66e182c52bb1e3aa791f6d8a9e099 Author: Lasse Collin Date: 2022-07-17 20:55:16 +0300 xzgrep: Fix parsing of certain options. Fix handling of "xzgrep -25 foo" (in GNU grep "grep -25 foo" is an alias for "grep -C25 foo"). xzgrep would treat "foo" as filename instead of as a pattern. This bug was fixed in zgrep in gzip in 2012. Add -E, -F, -G, and -P to the "no argument required" list. Add -X to "argument required" list. It is an intentionally-undocumented GNU grep option so this isn't an important option for xzgrep but it seems that other grep implementations (well, those that I checked) don't support -X so I hope this change is an improvement still. grep -d (grep --directories=ACTION) requires an argument. In contrast to zgrep, I kept -d in the "no argument required" list because it's not supported in xzgrep (or zgrep). This way "xzgrep -d" gives an error about option being unsupported instead of telling that it requires an argument. Both zgrep and xzgrep tell that it's unsupported if an argument is specified. Add comments. src/scripts/xzgrep.in | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) commit 372a0d12c95fad5e5477b4f79646bf66d28e0c31 Author: Lasse Collin Date: 2022-07-14 20:33:05 +0300 Tests: Add the .lzma files to test_files.sh. tests/test_files.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) commit b8e3d0c45b62c81dfc6b350556d77cf2c7401edd Author: Lasse Collin Date: 2022-07-14 19:37:42 +0300 Tests: Add .lzma test files. tests/files/README | 63 ++++++++++++++++----- tests/files/bad-too_big_size-with_eopm.lzma | Bin 0 -> 37 bytes tests/files/bad-too_small_size-without_eopm-1.lzma | Bin 0 -> 31 bytes tests/files/bad-too_small_size-without_eopm-2.lzma | Bin 0 -> 31 bytes tests/files/bad-too_small_size-without_eopm-3.lzma | Bin 0 -> 36 bytes tests/files/bad-unknown_size-without_eopm.lzma | Bin 0 -> 31 bytes tests/files/good-known_size-with_eopm.lzma | Bin 0 -> 37 bytes tests/files/good-known_size-without_eopm.lzma | Bin 0 -> 31 bytes tests/files/good-unknown_size-with_eopm.lzma | Bin 0 -> 37 bytes 9 files changed, 50 insertions(+), 13 deletions(-) commit e96bdf7189916bffec0dcc933cd809fac898587c Author: Lasse Collin Date: 2022-07-14 18:12:38 +0300 liblzma: Rename a variable and improve a comment. src/liblzma/lzma/lzma_decoder.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) commit 2d54fdf58e80bb2b0852633838576fd1ae7961c5 Author: Lasse Collin Date: 2022-07-13 22:24:41 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit ff54b557fe3b06b59a24e4028c1464c35dd5b142 Author: Lasse Collin Date: 2022-07-13 22:24:07 +0300 liblzma: Add optional autodetection of LZMA end marker. Turns out that this is needed for .lzma files as the spec in LZMA SDK says that end marker may be present even if the size is stored in the header. Such files are rare but exist in the real world. The code in liblzma is so old that the spec didn't exist in LZMA SDK back then and I had understood that such files weren't possible (the lzma tool in LZMA SDK didn't create such files). This modifies the internal API so that LZMA decoder can be told if EOPM is allowed even when the uncompressed size is known. It's allowed with .lzma and not with other uses. Thanks to Karl Beldan for reporting the problem. doc/lzma-file-format.txt | 11 ++++- src/liblzma/common/alone_decoder.c | 2 +- src/liblzma/lz/lz_decoder.c | 10 +++- src/liblzma/lz/lz_decoder.h | 8 +-- src/liblzma/lzma/lzma2_decoder.c | 2 +- src/liblzma/lzma/lzma_decoder.c | 99 +++++++++++++++++++++++++++----------- 6 files changed, 94 insertions(+), 38 deletions(-) commit bb795fe835cf2b3ae7ed68b155784fbfc14e2faf Author: Lasse Collin Date: 2022-06-14 17:20:49 +0300 Tests: Add test file good-1-empty-bcj-lzma2.xz. This is from test_bcj_exact_size.c. It's good to have it as a standalone file. tests/files/README | 5 +++++ tests/files/good-1-empty-bcj-lzma2.xz | Bin 0 -> 52 bytes 2 files changed, 5 insertions(+) commit dbd8b0bf45c10f991635f585a2ea59fb5ae28ff3 Author: Lasse Collin Date: 2022-03-31 00:05:07 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit bb66a98ded39c40df202da17cb2055356dcd4168 Author: Lasse Collin Date: 2022-03-29 19:19:12 +0300 xzgrep: Fix escaping of malicious filenames (ZDI-CAN-16587). Malicious filenames can make xzgrep to write to arbitrary files or (with a GNU sed extension) lead to arbitrary code execution. xzgrep from XZ Utils versions up to and including 5.2.5 are affected. 5.3.1alpha and 5.3.2alpha are affected as well. This patch works for all of them. This bug was inherited from gzip's zgrep. gzip 1.12 includes a fix for zgrep. The issue with the old sed script is that with multiple newlines, the N-command will read the second line of input, then the s-commands will be skipped because it's not the end of the file yet, then a new sed cycle starts and the pattern space is printed and emptied. So only the last line or two get escaped. One way to fix this would be to read all lines into the pattern space first. However, the included fix is even simpler: All lines except the last line get a backslash appended at the end. To ensure that shell command substitution doesn't eat a possible trailing newline, a colon is appended to the filename before escaping. The colon is later used to separate the filename from the grep output so it is fine to add it here instead of a few lines later. The old code also wasn't POSIX compliant as it used \n in the replacement section of the s-command. Using \ is the POSIX compatible method. LC_ALL=C was added to the two critical sed commands. POSIX sed manual recommends it when using sed to manipulate pathnames because in other locales invalid multibyte sequences might cause issues with some sed implementations. In case of GNU sed, these particular sed scripts wouldn't have such problems but some other scripts could have, see: info '(sed)Locale Considerations' This vulnerability was discovered by: cleemy desu wayo working with Trend Micro Zero Day Initiative Thanks to Jim Meyering and Paul Eggert discussing the different ways to fix this and for coordinating the patch release schedule with gzip. src/scripts/xzgrep.in | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) commit fa3af4e4c6a8f692785b87ba0f165f34d154ae0f Author: Lasse Collin Date: 2022-03-23 16:34:00 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit f12ce0f23a0496daebc77e8359309bf724ad5e8a Author: Lasse Collin Date: 2022-03-06 16:54:23 +0200 liblzma: Fix docs: lzma_block_decoder() cannot return LZMA_UNSUPPORTED_CHECK. If Check is unsupported, it will be silently ignored. It's the caller's job to handle it. src/liblzma/api/lzma/block.h | 3 --- 1 file changed, 3 deletions(-) commit 412566731111edc28f0b68bc966d01ab24d17082 Author: Lasse Collin Date: 2022-03-06 15:18:58 +0200 liblzma: Index hash: Change return value type of hash_append() to void. src/liblzma/common/index_hash.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) commit 7c3ce02df001701a26c2fa41b2dc8b530743f454 Author: Lasse Collin Date: 2022-02-22 03:42:57 +0200 liblzma: Minor addition to lzma_vli_size() API doc. Thanks to Jia Tan. src/liblzma/api/lzma/vli.h | 2 ++ 1 file changed, 2 insertions(+) commit b8f667fe0c3e17fd2c559901d2aaf19b1dfd51f2 Author: Lasse Collin Date: 2022-02-22 02:04:18 +0200 liblzma: Check the return value of lzma_index_append() in threaded encoder. If lzma_index_append() failed (most likely memory allocation failure) it could have gone unnoticed and the resulting .xz file would have an incorrect Index. Decompressing such a file would produce the correct uncompressed data but then an error would occur when verifying the Index field. src/liblzma/common/stream_encoder_mt.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 2356d53edd8f44ff8f411972ca62d63079ff59af Author: Lasse Collin Date: 2022-02-22 01:37:39 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 748ef0833821f1ea4ff5d57abc3cab1ae76266d3 Author: Ed Maste Date: 2022-02-11 15:25:46 +0000 liblzma: Use non-executable stack on FreeBSD as on Linux src/liblzma/check/crc32_x86.S | 4 ++-- src/liblzma/check/crc64_x86.S | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 068a6e3286c9ca7d67f13f4c78646c4f4a3c3c5b Author: Lasse Collin Date: 2022-02-20 20:36:27 +0200 liblzma: Make Block decoder catch certain types of errors better. Now it limits the input and output buffer sizes that are passed to a raw decoder. This way there's no need to check if the sizes can grow too big or overflow when updating Compressed Size and Uncompressed Size counts. This also means that a corrupt file cannot cause the raw decoder to process useless extra input or output that would exceed the size info in Block Header (and thus cause LZMA_DATA_ERROR anyway). More importantly, now the size information is verified more carefully in case raw decoder returns LZMA_OK. This doesn't really matter with the current single-threaded .xz decoder as the errors would be detected slightly later anyway. But this helps avoiding corner cases in the upcoming threaded decompressor, and it might help other Block decoder uses outside liblzma too. The test files bad-1-lzma2-{9,10,11}.xz test these conditions. With the single-threaded .xz decoder the only difference is that LZMA_DATA_ERROR is detected in a difference place now. src/liblzma/common/block_decoder.c | 79 ++++++++++++++++++++++++++------------ 1 file changed, 54 insertions(+), 25 deletions(-) commit 766df4f62c165ba96d60af8fadbada51349fd140 Author: Lasse Collin Date: 2022-02-20 19:38:55 +0200 Tests: Add bad-1-lzma2-11.xz. tests/files/README | 5 +++++ tests/files/bad-1-lzma2-11.xz | Bin 0 -> 64 bytes 2 files changed, 5 insertions(+) commit 12a6d6ce2a9850e32140e542decfd9c8a33c87fc Author: Lasse Collin Date: 2022-02-18 18:51:10 +0200 Translations: Fix po4a failure with the French man page translations. Thanks to Mario Blättermann for the patch. po4a/fr_FR.po | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 00e6aad836cf301e95575ea53790f5ab96fe8ed6 Author: Lasse Collin Date: 2022-02-07 01:14:37 +0200 Translations: Add French translation of man pages. This matches xz-utils 5.2.5-2 in Debian. The translation was done by "bubu", proofread by the debian-l10n-french mailing list contributors, and submitted to me on the xz-devel mailing list by Jean-Pierre Giraud. Thanks to everyone! po4a/fr_FR.po | 3541 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ po4a/po4a.conf | 2 +- 2 files changed, 3542 insertions(+), 1 deletion(-) commit e20ce2b12251a246c50fb5b7fa2204c11611b407 Author: jiat75 Date: 2022-01-28 20:47:55 +0800 liblzma: Add NULL checks to LZMA and LZMA2 properties encoders. Previously lzma_lzma_props_encode() and lzma_lzma2_props_encode() assumed that the options pointers must be non-NULL because the with these filters the API says it must never be NULL. It is good to do these checks anyway. src/liblzma/lzma/lzma2_encoder.c | 3 +++ src/liblzma/lzma/lzma_encoder.c | 3 +++ 2 files changed, 6 insertions(+) commit feb80ace866c3033cefbc39f6b07ada83e316e6a Author: huangqinjin Date: 2021-12-13 20:49:21 +0800 CMake: Keep compatible with Windows 95 for 32-bit build. CMakeLists.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit 725f2e0522c4ef8dc5fdd69b5017bac6322ebce2 Author: Lasse Collin Date: 2021-11-13 21:04:05 +0200 xzgrep: Update man page timestamp. src/scripts/xzgrep.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7955669d423724e69a7f2dae1173dae248f7a596 Author: Lasse Collin Date: 2021-11-13 18:23:24 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 671673a7a209e6131491e6a424758bbc13fb7aa1 Author: Ville Skyttä Date: 2021-11-13 10:11:57 +0200 xzgrep: use `grep -E/-F` instead of `egrep` and `fgrep` `egrep` and `fgrep` have been deprecated in GNU grep since 2007, and in current post 3.7 Git they have been made to emit obsolescence warnings: https://git.savannah.gnu.org/cgit/grep.git/commit/?id=a9515624709865d480e3142fd959bccd1c9372d1 src/scripts/xzgrep.1 | 8 ++++---- src/scripts/xzgrep.in | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) commit 45e538257e85050f67a6d363961e31b71e3ec565 Author: Lasse Collin Date: 2021-10-27 23:27:48 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit ca21733d24a4f65b46a5efa124a89c859ac5592e Author: Lasse Collin Date: 2021-10-27 23:23:11 +0300 xz: Change the coding style of the previous commit. It isn't any better now but it's consistent with the rest of the code base. src/xz/file_io.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit 906b990b151b93750958371e39ad00e8d1daada9 Author: Alexander Bluhm Date: 2021-10-05 23:33:16 +0200 xz: Avoid fchown(2) failure. OpenBSD does not allow to change the group of a file if the user does not belong to this group. In contrast to Linux, OpenBSD also fails if the new group is the same as the old one. Do not call fchown(2) in this case, it would change nothing anyway. This fixes an issue with Perl Alien::Build module. https://github.com/PerlAlien/Alien-Build/issues/62 src/xz/file_io.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit ca83df96c48371ce0094c73c6f4582899ae4b62b Author: Lasse Collin Date: 2021-09-09 22:21:07 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit d8b294af03840c7c47d6b7b0d4c0d6d2f6357dfa Author: Lasse Collin Date: 2021-09-09 21:41:51 +0300 liblzma: Use _MSVC_LANG to detect when "noexcept" can be used with MSVC. By default, MSVC always sets __cplusplus to 199711L. The real C++ standard version is available in _MSVC_LANG (or one could use /Zc:__cplusplus to set __cplusplus correctly). Fixes . Thanks to Dan Weiss. src/liblzma/api/lzma.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit c2fde22befe1f5256ad3d7c4cb35794aa8e64c67 Author: Lasse Collin Date: 2021-06-04 19:02:38 +0300 xzdiff: Update the man page about the exit status. This was forgotten from 194029ffaf74282a81f0c299c07f73caca3232ca. src/scripts/xzdiff.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 8d0fd42fbedd01fd3c847b56d19841e603500dea Author: Lasse Collin Date: 2021-06-04 18:52:48 +0300 xzless: Fix less(1) version detection when it contains a dot. Sometimes the version number from "less -V" contains a dot, sometimes not. xzless failed detect the version number when it does contain a dot. This fixes it. Thanks to nick87720z for reporting this. Apparently it had been reported here in 2013. src/scripts/xzless.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6e2cab8579fc6f832b5954510b27fd7e74563436 Author: Lasse Collin Date: 2022-07-12 18:53:04 +0300 xz: Document the special memlimit case of 2000 MiB on MIPS32. See commit 95806a8a52ae57bddf6c77dfd19cf7938a92e040. src/xz/xz.1 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 38b311462bd8974888ba3cd9312de132c76ec2e0 Author: Lasse Collin Date: 2021-04-11 19:58:10 +0300 Update THANKS. THANKS | 2 ++ 1 file changed, 2 insertions(+) commit 95806a8a52ae57bddf6c77dfd19cf7938a92e040 Author: Ivan A. Melnikov Date: 2021-04-09 11:45:10 +0300 Reduce maximum possible memory limit on MIPS32 Due to architectural limitations, address space available to a single userspace process on MIPS32 is limited to 2 GiB, not 4, even on systems that have more physical RAM -- e.g. 64-bit systems with 32-bit userspace, or systems that use XPA (an extension similar to x86's PAE). So, for MIPS32, we have to impose stronger memory limits. I've chosen 2000MiB to give the process some headroom. src/xz/hardware.c | 6 ++++++ 1 file changed, 6 insertions(+) commit a79bd30a6fbfe614f47ad77498c46e218dbe2b1d Author: Lasse Collin Date: 2021-02-13 23:31:27 +0200 CMake: Use interface library for better FindLibLZMA compatibility. https://www.mail-archive.com/xz-devel@tukaani.org/msg00446.html Thanks to Markus Rickert. CMakeLists.txt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit 64d98147616c48f2df37fb46b49350f3d5febd34 Author: Lasse Collin Date: 2021-01-30 18:36:04 +0200 CMake: Try to improve compatibility with the FindLibLZMA module. The naming conflict with FindLibLZMA module gets worse. Not avoiding it in the first place was stupid. Normally find_package(LibLZMA) will use the module and find_package(liblzma 5.2.5 REQUIRED CONFIG) will use the config file even with a case insensitive file system. However, if CMAKE_FIND_PACKAGE_PREFER_CONFIG is TRUE and the file system is case insensitive, find_package(LibLZMA) will find our liblzma config file instead of using FindLibLZMA module. One big problem with this is that FindLibLZMA uses LibLZMA::LibLZMA and we use liblzma::liblzma as the target name. With target names CMake happens to be case sensitive. To workaround this, this commit adds add_library(LibLZMA::LibLZMA ALIAS liblzma::liblzma) to the config file. Then both spellings work. To make the behavior consistent between case sensitive and insensitive file systems, the config and related files are renamed from liblzmaConfig.cmake to liblzma-config.cmake style. With this style CMake looks for lowercase version of the package name so find_package(LiBLzmA 5.2.5 REQUIRED CONFIG) will work to find our config file. There are other differences between our config file and FindLibLZMA so it's still possible that things break for reasons other than the spelling of the target name. Hopefully those situations aren't too common. When the config file is available, it should always give as good or better results as FindLibLZMA so this commit doesn't affect the recommendation to use find_package(liblzma 5.2.5 REQUIRED CONFIG) which explicitly avoids FindLibLZMA. Thanks to Markus Rickert. CMakeLists.txt | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) commit 9e2f9e2d0841dd0417125ca3c7a05418541fb230 Author: Lasse Collin Date: 2021-01-24 22:32:41 +0200 Tests: Add bad-1-lzma2-10.xz and also modify -9.xz. tests/files/README | 11 +++++++++-- tests/files/bad-1-lzma2-10.xz | Bin 0 -> 60 bytes tests/files/bad-1-lzma2-9.xz | Bin 72 -> 72 bytes 3 files changed, 9 insertions(+), 2 deletions(-) commit 00a4c69bbbf302dd6323fd6970890ee22ddd4f96 Author: Lasse Collin Date: 2021-01-24 18:51:51 +0200 Tests: Add bad-1-lzma2-9.xz. tests/files/README | 4 ++++ tests/files/bad-1-lzma2-9.xz | Bin 0 -> 72 bytes 2 files changed, 4 insertions(+) commit 1da2269b2e9b952d165ad7bec823de9dfe9a9e9e Author: Lasse Collin Date: 2021-01-24 17:02:00 +0200 Tests: Add bad-1-check-crc32-2.xz. tests/files/README | 7 +++++++ tests/files/bad-1-check-crc32-2.xz | Bin 0 -> 72 bytes 2 files changed, 7 insertions(+) commit 11ceecb5e2999ff96989915120e63a2e7e130057 Author: Lasse Collin Date: 2021-01-11 23:57:11 +0200 Scripts: Add zstd support to xzdiff. src/scripts/xzdiff.1 | 6 ++++-- src/scripts/xzdiff.in | 16 +++++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) commit d655b8c9cb5a4e596c0fa2290fa91e995b734f97 Author: Lasse Collin Date: 2021-01-11 23:28:52 +0200 Scripts: Fix exit status of xzgrep. Omit the -q option from xz, gzip, and bzip2. With xz this shouldn't matter. With gzip it's important because -q makes gzip replace SIGPIPE with exit status 2. With bzip2 it's important because with -q bzip2 is completely silent if input is corrupt while other decompressors still give an error message. Avoiding exit status 2 from gzip is important because bzip2 uses exit status 2 to indicate corrupt input. Before this commit xzgrep didn't recognize corrupt .bz2 files because xzgrep was treating exit status 2 as SIGPIPE for gzip compatibility. zstd still needs -q because otherwise it is noisy in normal operation. The code to detect real SIGPIPE didn't check if the exit status was due to a signal (>= 128) and so could ignore some other exit status too. src/scripts/xzgrep.in | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) commit 09c331b03c801414d547fc25711daf099cef6fb5 Author: Lasse Collin Date: 2021-01-11 22:01:51 +0200 Scripts: Fix exit status of xzdiff/xzcmp. This is a minor fix since this affects only the situation when the files differ and the exit status is something else than 0. In such case there could be SIGPIPE from a decompression tool and that would result in exit status of 2 from xzdiff/xzcmp while the correct behavior would be to return 1 or whatever else diff or cmp may have returned. This commit omits the -q option from xz/gzip/bzip2/lzop arguments. I'm not sure why the -q was used in the first place, perhaps it hides warnings in some situation that I cannot see at the moment. Hopefully the removal won't introduce a new bug. With gzip the -q option was harmful because it made gzip return 2 instead of >= 128 with SIGPIPE. Ignoring exit status 2 (warning from gzip) isn't practical because bzip2 uses exit status 2 to indicate corrupt input file. It's better if SIGPIPE results in exit status >= 128. With bzip2 the removal of -q seems to be good because with -q it prints nothing if input is corrupt. The other tools aren't silent in this situation even with -q. On the other hand, if zstd support is added, it will need -q since otherwise it's noisy in normal situations. Thanks to Étienne Mollier and Sebastian Andrzej Siewior. src/scripts/xzdiff.in | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) commit b33a345cbab90e18b601d26cc3a0dea083b7d8d9 Author: Lasse Collin Date: 2020-12-23 17:15:49 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit c01e29a933baba737217a3549eaaced7e499edf5 Author: H.J. Lu Date: 2020-12-23 06:49:04 -0800 liblzma: Enable Intel CET in x86 CRC assembly codes When Intel CET is enabled, we need to include in assembly codes to mark Intel CET support and add _CET_ENDBR to indirect jump targets. Tested on Intel Tiger Lake under CET enabled Linux. src/liblzma/check/crc32_x86.S | 9 +++++++++ src/liblzma/check/crc64_x86.S | 9 +++++++++ 2 files changed, 18 insertions(+) commit 0983682f87ae1a9efcbe4e45579d53c9bca16500 Author: Lasse Collin Date: 2020-12-16 18:33:29 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 880596e4b8731b24f6c19cb737ed7d06fe92dda2 Author: Lasse Collin Date: 2020-12-16 18:30:14 +0200 Build: Don't build bundles on Apple OSes. Thanks to Daniel Packard. CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) commit 29050c79f1f83bf73714146a44dfbb4d26e27920 Author: Lasse Collin Date: 2020-12-05 22:44:03 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 94fd72474973978f8369be7c23f77c3b741953a6 Author: Adam Borowski Date: 2020-09-25 03:35:18 +0200 Scripts: Add zstd support to xzgrep. Thanks to Adam Borowski. src/scripts/xzgrep.1 | 9 ++++++--- src/scripts/xzgrep.in | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) commit 13c58ac13e1a84c30de24191931af425286d0550 Author: Lasse Collin Date: 2020-11-17 20:51:48 +0200 CMake: Fix compatibility with CMake 3.13. The syntax "if(DEFINED CACHE{FOO})" requires CMake 3.14. In some other places the code treats the cache variables like normal variables already (${FOO} or if(FOO) is used, not ${CACHE{FOO}). Thanks to ygrek for reporting the bug on IRC. CMakeLists.txt | 2 +- cmake/tuklib_cpucores.cmake | 4 ++-- cmake/tuklib_physmem.cmake | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) commit 8f7d3345a7c31a20a544dc04232715b1bcdc91f7 Author: Lasse Collin Date: 2020-11-01 22:56:43 +0200 Update THANKS. THANKS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit ca7bcdb30f14e7cd66fe357d10046442eee648a0 Author: Lasse Collin Date: 2020-11-01 22:34:25 +0200 xz: Avoid unneeded \f escapes on the man page. I don't want to use \c in macro arguments but groff_man(7) suggests that \f has better portability. \f would be needed for the .TP strings for portability reasons anyway. Thanks to Bjarni Ingi Gislason. src/xz/xz.1 | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) commit 3b40a0792ee5ba0dd4d9ab129b4443585bbfdd14 Author: Lasse Collin Date: 2020-11-01 19:09:53 +0200 xz: Use non-breaking spaces when intentionally using more than one space. This silences some style checker warnings. Seems that spaces in the beginning of a line don't need this treatment. Thanks to Bjarni Ingi Gislason. src/xz/xz.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d85699c36df5f839b82800a6e63151eff25677eb Author: Lasse Collin Date: 2020-11-01 18:49:37 +0200 xz: Protect the ellipsis (...) on the man page with \&. This does it only when ... appears outside macro calls. Thanks to Bjarni Ingi Gislason. src/xz/xz.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit d996ae66176206de9b4d485b250a88b2d9ded151 Author: Lasse Collin Date: 2020-11-01 18:41:21 +0200 xz: Avoid the abbreviation "e.g." on the man page. A few are simply omitted, most are converted to "for example" and surrounded with commas. Sounds like that this is better style, for example, man-pages(7) recommends avoiding such abbreviations except in parenthesis. Thanks to Bjarni Ingi Gislason. src/xz/xz.1 | 66 ++++++++++++++++++++++++++++++------------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) commit d16d0d198ade6820ed9d39ba6a7068b55b8bf6dc Author: Lasse Collin Date: 2020-07-12 23:10:03 +0300 xz man page: Change \- (minus) to \(en (en-dash) for a numeric range. Docs of ancient troff/nroff mention \(em (em-dash) but not \(en and \- was used for both minus and en-dash. I don't know how portable \(en is nowadays but it can be changed back if someone complains. At least GNU groff and OpenBSD's mandoc support it. Thanks to Bjarni Ingi Gislason for the patch. src/xz/xz.1 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit 3acf1adfc768c7d2290e138bcb1109145e4d8160 Author: Lasse Collin Date: 2020-07-12 20:46:24 +0300 Windows: Fix building of resource files when config.h isn't used. Now CMake + Visual Studio works for building liblzma.dll. Thanks to Markus Rickert. src/common/common_w32res.rc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit adba06e649875b45b5b671f5ab45f694144938d4 Author: Lasse Collin Date: 2020-04-06 19:31:50 +0300 src/scripts/xzgrep.1: Filenames to xzgrep are optional. xzgrep --help was correct already. src/scripts/xzgrep.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7be1dcf8585e150bffb57a6ad499a63edd0d3494 Author: Lasse Collin Date: 2022-07-12 17:59:41 +0300 Translations: Add Portuguese translation. Jia Tan made white-space changes and also changed "Language: pt_BR\n" to pt. The translator wasn't reached so I'm hoping these changes are OK and will commit it without translator's approval. Thanks to Pedro Albuquerque and Jia Tan. po/LINGUAS | 1 + po/pt.po | 1001 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1002 insertions(+) commit 3f94d2a568290bf770a762ee69403955fdb0a228 Author: Bjarni Ingi Gislason Date: 2020-03-26 22:17:31 +0000 src/script/xzgrep.1: Remove superfluous '.RB' Output is from: test-groff -b -e -mandoc -T utf8 -rF0 -t -w w -z [ "test-groff" is a developmental version of "groff" ] Input file is ./src/scripts/xzgrep.1 :20 (macro RB): only 1 argument, but more are expected :23 (macro RB): only 1 argument, but more are expected :26 (macro RB): only 1 argument, but more are expected :29 (macro RB): only 1 argument, but more are expected :32 (macro RB): only 1 argument, but more are expected "abc..." does not mean the same as "abc ...". The output from nroff and troff is unchanged except for the space between "file" and "...". Signed-off-by: Bjarni Ingi Gislason src/scripts/xzgrep.1 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 725d9791c90b7cef19a3ab4d7469b567101c2a87 Author: Bjarni Ingi Gislason Date: 2020-03-30 21:56:36 +0000 xzgrep.1: Delete superfluous '.PP' Summary: mandoc -T lint xzgrep.1 : mandoc: xzgrep.1:79:2: WARNING: skipping paragraph macro: PP empty There is no change in the output of "nroff" and "troff". Signed-off-by: Bjarni Ingi Gislason src/scripts/xzgrep.1 | 1 - 1 file changed, 1 deletion(-) commit 55c2555c5d420e9251a97828022e5c8c4d786dac Author: Bjarni Ingi Gislason Date: 2020-03-26 21:16:18 +0000 src/xz/xz.1: Correct misused two-fonts macros Output is from: test-groff -b -e -mandoc -T utf8 -rF0 -t -w w -z [ "test-groff" is a developmental version of "groff" ] Input file is ./src/xz/xz.1 :408 (macro BR): only 1 argument, but more are expected :1009 (macro BR): only 1 argument, but more are expected :1743 (macro BR): only 1 argument, but more are expected :1920 (macro BR): only 1 argument, but more are expected :2213 (macro BR): only 1 argument, but more are expected Output from nroff and troff is unchanged, except for a font change of a full stop (.). Signed-off-by: Bjarni Ingi Gislason src/xz/xz.1 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 55e3a8e0e437279223c108085dccddc60b06036c Author: Lasse Collin Date: 2022-07-10 21:16:40 +0300 Translations: Add Serbian translation. Quite a few white-space changes were made by Jia Tan to make this look good. Contacting the translator didn't succeed so I'm committing this without getting translator's approval. Thanks to Мирослав Николић (Miroslav Nikolic) and Jia Tan. po/LINGUAS | 1 + po/sr.po | 987 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 988 insertions(+) commit 4e04279cbe8c1af25dde42ebf740722deded27a0 Author: Lasse Collin Date: 2022-07-04 23:51:36 +0300 Translations: Add Swedish translation. Thanks to Sebastian Rasmussen and Jia Tan. po/LINGUAS | 1 + po/sv.po | 983 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 984 insertions(+) commit 27f55e96b0cdae3fc51b409663b6c017a88ea8bc Author: Lasse Collin Date: 2022-07-04 23:40:27 +0300 Translations: Add Esperanto translation. Thanks to Keith Bowes and Jia Tan. po/LINGUAS | 1 + po/eo.po | 984 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 985 insertions(+) commit be31be9e8f12cf6fce4be1ab822660ad411e803b Author: Lasse Collin Date: 2022-07-01 00:22:33 +0300 Translations: Add Catalan translation. Thanks to Jordi Mas and Jia Tan. po/LINGUAS | 1 + po/ca.po | 1076 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1077 insertions(+) commit 30e3ad040f4e7ba1a0e97179d6fd62a1201c863b Author: Lasse Collin Date: 2022-06-30 17:47:08 +0300 Translations: Add Ukrainian translation. Thanks to Yuri Chornoivan and Jia Tan. po/LINGUAS | 1 + po/uk.po | 996 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 997 insertions(+) commit f2e2cce49f7b07e8985ba6add4b4ca79b22eddd0 Author: Lasse Collin Date: 2022-06-30 17:45:26 +0300 Translators: Add Romanian translation. Thanks to Remus-Gabriel Chelu and Jia Tan. po/LINGUAS | 1 + po/ro.po | 1016 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1017 insertions(+) commit a12fd5bad2aa922c9b4cf96d16632696f3e0584e Author: Lasse Collin Date: 2022-06-29 18:33:32 +0300 Translations: Update Brazilian Portuguese translation. One msgstr was changed. The diff is long due to changes in the source code line numbers in the comments. Thanks to Rafael Fontenelle. po/pt_BR.po | 186 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 92 insertions(+), 94 deletions(-) commit dd713288d27a0d64426d74effe9187087496333c Author: Lasse Collin Date: 2022-06-29 18:04:44 +0300 Translations: Add Croatian translation. Thanks to Božidar Putanec and Jia Tan. po/LINGUAS | 1 + po/hr.po | 987 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 988 insertions(+) commit 016980f26974623a4bcd889b6ba5a0caa4b2f57f Author: Lasse Collin Date: 2022-06-29 17:58:48 +0300 Translations: Add Spanish translation. Thanks to Cristian Othón Martínez Vera and Jia Tan. po/LINGUAS | 1 + po/es.po | 984 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 985 insertions(+) commit 4fe9578c3aab21e6ceb8f0ea470bc87821f5907f Author: Lasse Collin Date: 2022-06-29 17:49:43 +0300 Translations: Add Korean translation. Thanks to Seong-ho Cho and Jia Tan. po/LINGUAS | 1 + po/ko.po | 972 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 973 insertions(+) commit cf1ec5518e6e3d89f57685ac83b81ab228e48bcd Author: Lasse Collin Date: 2020-03-23 18:09:40 +0200 v5.2-specific typo fix from fossies.org. README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 968bbfea09447a4f52e856bb97301aca80e40dcb Author: Lasse Collin Date: 2020-03-23 18:07:50 +0200 Typo fixes from fossies.org. https://fossies.org/linux/misc/xz-5.2.5.tar.xz/codespell.html Makefile.am | 2 +- doc/examples/01_compress_easy.c | 2 +- src/liblzma/api/lzma/base.h | 2 +- src/liblzma/check/crc32_x86.S | 2 +- src/liblzma/common/index.c | 2 +- src/xz/xz.1 | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) commit 2327a461e1afce862c22269b80d3517801103c1b Author: Lasse Collin Date: 2020-03-17 16:27:42 +0200 Bump version and soname for 5.2.5. src/liblzma/Makefile.am | 2 +- src/liblzma/api/lzma/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 3be82d2f7dc882258caf0f0a69214e5916b2bdda Author: Lasse Collin Date: 2020-03-17 16:26:04 +0200 Update NEWS for 5.2.5. NEWS | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) commit ab3e57539c7337f0653b13b75dbc5d03ade9700e Author: Lasse Collin Date: 2020-03-16 21:57:21 +0200 Translations: Rebuild cs.po to avoid incorrect fuzzy strings. "make dist" updates the .po files and the fuzzy strings would result in multiple very wrong translations. po/cs.po | 592 ++++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 322 insertions(+), 270 deletions(-) commit 3a6f38309dc5d44d8a63ebb337b6b2028561c93e Author: Lasse Collin Date: 2020-03-16 20:01:37 +0200 README: Update outdated sections. README | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) commit 9cc0901798217e258e91c13cf6fda7ad42ba108c Author: Lasse Collin Date: 2020-03-16 19:46:27 +0200 README: Mention that translatable strings will change after 5.2.x. README | 74 +++--------------------------------------------------------------- 1 file changed, 3 insertions(+), 71 deletions(-) commit cc163574249f6a4a66f3dc09d6fe5a71bee24fab Author: Lasse Collin Date: 2020-03-16 19:39:45 +0200 README: Mention that man pages can be translated. README | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit ca261994edc3f2d03d5589c037171c63471ee9dc Author: Lasse Collin Date: 2020-03-16 17:30:39 +0200 Translations: Add partial Danish translation. I made a few minor white space changes without getting them approved by the Danish translation team. po/LINGUAS | 1 + po/da.po | 896 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 897 insertions(+) commit 51cd5d051fc730d61411dee292e863582784e189 Author: Lasse Collin Date: 2020-03-16 16:43:29 +0200 Update INSTALL.generic from Automake 1.16.1. INSTALL.generic | 321 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 162 insertions(+), 159 deletions(-) commit 69d694e5f1beae2bbfa3b6c348ec0ec5f14b5cd0 Author: Lasse Collin Date: 2020-03-15 15:27:22 +0200 Update INSTALL for Windows and DOS and add preliminary info for z/OS. INSTALL | 51 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 10 deletions(-) commit 2c3b1bb80a3ca7e09728fe4d7a1d8648a5cb9bca Author: Lasse Collin Date: 2020-03-15 15:26:20 +0200 Build: Update m4/ax_pthread.m4 from Autoconf Archive (again). m4/ax_pthread.m4 | 219 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 117 insertions(+), 102 deletions(-) commit 74a5af180a6a6c4b8c90cefb37ee900d3fea7dc6 Author: Lasse Collin Date: 2020-03-11 21:15:35 +0200 xz: Never use thousand separators in DJGPP builds. DJGPP 2.05 added support for thousands separators but it's broken at least under WinXP with Finnish locale that uses a non-breaking space as the thousands separator. Workaround by disabling thousands separators for DJGPP builds. src/xz/util.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) commit ceba0d25e826bcdbf64bb4cb03385a2a66f8cbcb Author: Lasse Collin Date: 2020-03-11 19:38:08 +0200 DOS: Update dos/Makefile for DJGPP 2.05. It doesn't need -fgnu89-inline like 2.04beta did. dos/Makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit 29e5bd71612253281fb22bbaa0a566990a74dcc3 Author: Lasse Collin Date: 2020-03-11 19:36:07 +0200 DOS: Update instructions in dos/INSTALL.txt. dos/INSTALL.txt | 59 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 29 insertions(+), 30 deletions(-) commit 00a037ee9c8ee5a03cf9744e05570ae93d56b875 Author: Lasse Collin Date: 2020-03-11 17:58:51 +0200 DOS: Update config.h. The added defines assume GCC >= 4.8. dos/config.h | 8 ++++++++ 1 file changed, 8 insertions(+) commit 4ec2feaefa310b4249eb41893caf526e5c51ee39 Author: Lasse Collin Date: 2020-03-11 22:37:54 +0200 Translations: Add hu, zh_CN, and zh_TW. I made a few white space changes to these without getting them approved by the translation teams. (I tried to contact the hu and zh_TW teams but didn't succeed. I didn't contact the zh_CN team.) po/LINGUAS | 3 + po/hu.po | 985 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ po/zh_CN.po | 963 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ po/zh_TW.po | 956 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 2907 insertions(+) commit b6ed09729ae408be4533a0ddbc7df3d6f566846a Author: Lasse Collin Date: 2020-03-11 14:33:30 +0200 Translations: Update vi.po to match the file from the TP. The translated strings haven't been updated but word wrapping is different. po/vi.po | 407 ++++++++++++++++++++++++++++----------------------------------- 1 file changed, 179 insertions(+), 228 deletions(-) commit 7c85e8953ced204c858101872a15183e4639e9fb Author: Lasse Collin Date: 2020-03-11 14:18:03 +0200 Translations: Add fi and pt_BR, and update de, fr, it, and pl. The German translation isn't identical to the file in the Translation Project but the changes (white space changes only) were approved by the translator Mario Blättermann. po/LINGUAS | 2 + po/de.po | 476 ++++++++++++++-------------- po/fi.po | 974 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ po/fr.po | 272 ++++++++-------- po/it.po | 479 ++++++++++++---------------- po/pl.po | 239 +++++++------- po/pt_BR.po | 1001 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 2697 insertions(+), 746 deletions(-) commit 7da3ebc67fb5414034685ec16c7a29dad03dfa9b Author: Lasse Collin Date: 2020-02-25 21:35:14 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 1acc48794364606c9091cae6fa56db75a1325114 Author: Lasse Collin Date: 2020-03-11 13:05:29 +0200 Build: Add very limited experimental CMake support. This version matches CMake files in the master branch (commit 265daa873c0d871f5f23f9b56e133a6f20045a0a) except that this omits two source files that aren't in v5.2 and in the beginning of CMakeLists.txt the first paragraph in the comment is slightly different to point out possible issues in building shared liblzma. CMakeLists.txt | 659 ++++++++++++++++++++++++++++++++++++++++++++ cmake/tuklib_common.cmake | 49 ++++ cmake/tuklib_cpucores.cmake | 175 ++++++++++++ cmake/tuklib_integer.cmake | 102 +++++++ cmake/tuklib_mbstr.cmake | 20 ++ cmake/tuklib_physmem.cmake | 150 ++++++++++ cmake/tuklib_progname.cmake | 19 ++ 7 files changed, 1174 insertions(+) commit 9acc6abea1552803c74c1486fbb10af119550772 Author: Lasse Collin Date: 2020-02-27 20:24:27 +0200 Build: Add support for --no-po4a option to autogen.sh. Normally, if po4a isn't available, autogen.sh will return with non-zero exit status. The option --no-po4a can be useful when one knows that po4a isn't available but wants autogen.sh to still return with zero exit status. autogen.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit c8853b31545db7bd0551be85949624b1261efd47 Author: Lasse Collin Date: 2020-02-24 23:37:07 +0200 Update m4/.gitignore. m4/.gitignore | 1 + 1 file changed, 1 insertion(+) commit 901eb4a8c992354c3ea482f5bad60a1f8ad6fcc8 Author: Lasse Collin Date: 2020-02-24 23:01:00 +0200 liblzma: Remove unneeded from fastpos_tablegen.c. This file only generates fastpos_table.c. It isn't built as a part of liblzma. src/liblzma/lzma/fastpos_tablegen.c | 1 - 1 file changed, 1 deletion(-) commit ac35c9585fb734b7a19785d490c152e0b8cd4663 Author: Lasse Collin Date: 2020-02-22 14:15:07 +0200 Use defined(__GNUC__) before __GNUC__ in preprocessor lines. This should silence the equivalent of -Wundef in compilers that don't define __GNUC__. src/common/sysdefs.h | 3 ++- src/liblzma/api/lzma.h | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) commit fb9cada7cfade1156d6277717280e05b5cd342d6 Author: Lasse Collin Date: 2020-02-21 17:40:02 +0200 liblzma: Add more uses of lzma_memcmplen() to the normal mode of LZMA. This gives a tiny encoder speed improvement. This could have been done in 2014 after the commit 544aaa3d13554e8640f9caf7db717a96360ec0f6 but it was forgotten. src/liblzma/lzma/lzma_encoder_optimum_normal.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) commit 6117955af0b9cef5acde7859e86f773692b5f43c Author: Lasse Collin Date: 2020-02-21 17:01:15 +0200 Build: Add visibility.m4 from gnulib. Appears that this file used to get included as a side effect of gettext. After the change to gettext version requirements this file no longer got copied to the package and so the build was broken. m4/.gitignore | 1 - m4/visibility.m4 | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) commit c2cc64d78c098834231f9cfd7d852c9cd8950d74 Author: Lasse Collin Date: 2020-02-21 16:10:44 +0200 xz: Silence a warning when sig_atomic_t is long int. It can be true at least on z/OS. src/xz/signals.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b6314aa275b35c714e0a191d0b2e9b6106129ea9 Author: Lasse Collin Date: 2020-02-21 15:59:26 +0200 xz: Avoid unneeded access of a volatile variable. src/xz/signals.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f772a1572f723e5dc7d2d32e1d4287ac7a0da55e Author: Lasse Collin Date: 2020-02-21 01:24:18 +0200 tuklib_integer.m4: Optimize the check order. The __builtin byteswapping is the preferred one so check for it first. m4/tuklib_integer.m4 | 56 +++++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 27 deletions(-) commit 641042e63f665f3231c2fd1241fd3dddda3fb313 Author: Lasse Collin Date: 2020-02-20 18:54:04 +0200 tuklib_exit: Add missing header. strerror() needs which happened to be included via tuklib_common.h -> tuklib_config.h -> sysdefs.h if HAVE_CONFIG_H was defined. This wasn't tested without config.h before so it had worked fine. src/common/tuklib_exit.c | 1 + 1 file changed, 1 insertion(+) commit dbd55a69e530fec9ae866aaf6c3ccc0b4daf1f1f Author: Lasse Collin Date: 2020-02-16 11:18:28 +0200 sysdefs.h: Omit the conditionals around string.h and limits.h. string.h is used unconditionally elsewhere in the project and configure has always stopped if limits.h is missing, so these headers must have been always available even on the weirdest systems. src/common/sysdefs.h | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) commit 9294909861e6d22b32418467e0e988f953a82264 Author: Lasse Collin Date: 2020-02-15 15:07:11 +0200 Build: Bump Autoconf and Libtool version requirements. There is no specific reason for this other than blocking the most ancient versions. These are still old: Autoconf 2.69 (2012) Automake 1.12 (2012) gettext 0.19.6 (2015) Libtool 2.4 (2010) configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit bd09081bbdf552f730030d2fd0e5e39ccb3936af Author: Lasse Collin Date: 2020-02-15 03:08:32 +0200 Build: Use AM_GNU_GETTEXT_REQUIRE_VERSION and require 0.19.6. This bumps the version requirement from 0.19 (from 2014) to 0.19.6 (2015). Using only the old AM_GNU_GETTEXT_VERSION results in old gettext infrastructure being placed in the package. By using both macros we get the latest gettext files while the other programs in the Autotools family can still see the old macro. configure.ac | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 1e5e08d86534aec7ca957982c7f6e90203c19e9f Author: Lasse Collin Date: 2020-02-14 20:42:06 +0200 Translations: Add German translation of the man pages. Thanks to Mario Blättermann. po4a/de.po | 5532 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ po4a/po4a.conf | 2 +- 2 files changed, 5533 insertions(+), 1 deletion(-) commit 4b1447809ffbc0d77c0ad456bd6b3afcf0b8623e Author: Lasse Collin Date: 2020-02-07 15:32:21 +0200 Build: Add support for translated man pages using po4a. The dependency on po4a is optional. It's never required to install the translated man pages when xz is built from a release tarball. If po4a is missing when building from xz.git, the translated man pages won't be generated but otherwise the build will work normally. The translations are only updated automatically by autogen.sh and by "make mydist". This makes it easy to keep po4a as an optional dependency and ensures that I won't forget to put updated translations to a release tarball. The translated man pages aren't installed if --disable-nls is used. The installation of translated man pages abuses Automake internals by calling "install-man" with redefined dist_man_MANS and man_MANS. This makes the hairy script code slightly less hairy. If it breaks some day, this code needs to be fixed; don't blame Automake developers. Also, this adds more quotes to the existing shell script code in the Makefile.am "-hook"s. Makefile.am | 4 ++++ autogen.sh | 8 ++++--- po4a/.gitignore | 2 ++ po4a/po4a.conf | 14 +++++++++++ po4a/update-po | 45 ++++++++++++++++++++++++++++++++++ src/scripts/Makefile.am | 64 +++++++++++++++++++++++++++++++++++++------------ src/xz/Makefile.am | 50 +++++++++++++++++++++++++++----------- src/xzdec/Makefile.am | 55 ++++++++++++++++++++++++++++++++---------- 8 files changed, 197 insertions(+), 45 deletions(-) commit 882fcfdcd86525cc5c6f6d0bf0230d0089206d13 Author: Lasse Collin Date: 2020-02-06 00:04:42 +0200 Update THANKS (sync with the master branch). THANKS | 3 +++ 1 file changed, 3 insertions(+) commit 134bb7765815d5f265eb0bc9e6ebacd9ae4a52bc Author: Lasse Collin Date: 2020-02-05 22:35:06 +0200 Update tests/.gitignore. .gitignore | 4 ++++ 1 file changed, 4 insertions(+) commit 6912472fafb656be8f4c5b4ac9ea28fea3065de4 Author: Lasse Collin Date: 2020-02-05 22:28:51 +0200 Update m4/.gitignore. m4/.gitignore | 1 + 1 file changed, 1 insertion(+) commit 68c60735bbb6e51d4205ba8a9fde307bcfb22f8c Author: Lasse Collin Date: 2020-02-05 20:47:38 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit e1beaa74bc7cb5a409d59b55870e01ae7784ce3a Author: Lasse Collin Date: 2020-02-05 20:33:50 +0200 xz: Comment out annoying sandboxing messages. src/xz/file_io.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit 8238192652290df78bd728b20e3f6542d1a2819e Author: Lasse Collin Date: 2020-02-05 19:33:37 +0200 Build: Workaround a POSIX shell detection problem on Solaris. I don't know if the problem is in gnulib's gl_POSIX_SHELL macro or if xzgrep does something that isn't in POSIX. The workaround adds a special case for Solaris: if /usr/xpg4/bin/sh exists and gl_cv_posix_shell wasn't overriden on the configure command line, use that shell for xzgrep and other scripts. That shell is known to work and exists on most Solaris systems. configure.ac | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 93a1f61e892e145607dd938e3b30098af19a1672 Author: Lasse Collin Date: 2020-02-03 22:03:50 +0200 Build: Update m4/ax_pthread.m4 from Autoconf Archive. m4/ax_pthread.m4 | 398 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 279 insertions(+), 119 deletions(-) commit d0daa21792ff861e5423bbd82aaa6c8ba9fa0462 Author: Lasse Collin Date: 2020-02-01 19:56:18 +0200 xz: Limit --memlimit-compress to at most 4020 MiB for 32-bit xz. See the code comment for reasoning. It's far from perfect but hopefully good enough for certain cases while hopefully doing nothing bad in other situations. At presets -5 ... -9, 4020 MiB vs. 4096 MiB makes no difference on how xz scales down the number of threads. The limit has to be a few MiB below 4096 MiB because otherwise things like "xz --lzma2=dict=500MiB" won't scale down the dict size enough and xz cannot allocate enough memory. With "ulimit -v $((4096 * 1024))" on x86-64, the limit in xz had to be no more than 4085 MiB. Some safety margin is good though. This is hack but it should be useful when running 32-bit xz on a 64-bit kernel that gives full 4 GiB address space to xz. Hopefully this is enough to solve this: https://bugzilla.redhat.com/show_bug.cgi?id=1196786 FreeBSD has a patch that limits the result in tuklib_physmem() to SIZE_MAX on 32-bit systems. While I think it's not the way to do it, the results on --memlimit-compress have been good. This commit should achieve practically identical results for compression while leaving decompression and tuklib_physmem() and thus lzma_physmem() unaffected. src/xz/hardware.c | 32 +++++++++++++++++++++++++++++++- src/xz/xz.1 | 21 ++++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) commit 4433c2dc5727ee6aef570e001a5a024e0d94e609 Author: Lasse Collin Date: 2020-01-26 20:53:25 +0200 xz: Set the --flush-timeout deadline when the first input byte arrives. xz --flush-timeout=2000, old version: 1. xz is started. The next flush will happen after two seconds. 2. No input for one second. 3. A burst of a few kilobytes of input. 4. No input for one second. 5. Two seconds have passed and flushing starts. The first second counted towards the flush-timeout even though there was no pending data. This can cause flushing to occur more often than needed. xz --flush-timeout=2000, after this commit: 1. xz is started. 2. No input for one second. 3. A burst of a few kilobytes of input. The next flush will happen after two seconds counted from the time when the first bytes of the burst were read. 4. No input for one second. 5. No input for another second. 6. Two seconds have passed and flushing starts. src/xz/coder.c | 6 +----- src/xz/file_io.c | 6 +++++- src/xz/mytime.c | 1 - 3 files changed, 6 insertions(+), 7 deletions(-) commit acc0ef3ac80f18e349c6d0252177707105c0a29c Author: Lasse Collin Date: 2020-01-26 20:19:19 +0200 xz: Move flush_needed from mytime.h to file_pair struct in file_io.h. src/xz/coder.c | 3 ++- src/xz/file_io.c | 3 ++- src/xz/file_io.h | 3 +++ src/xz/mytime.c | 3 --- src/xz/mytime.h | 4 ---- 5 files changed, 7 insertions(+), 9 deletions(-) commit 4afe69d30b66812682a2016ee18441958019cbb2 Author: Lasse Collin Date: 2020-01-26 14:49:22 +0200 xz: coder.c: Make writing output a separate function. The same code sequence repeats so it's nicer as a separate function. Note that in one case there was no test for opt_mode != MODE_TEST, but that was only because that condition would always be true, so this commit doesn't change the behavior there. src/xz/coder.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) commit ec26f3ace5f9b260ca91508030f07465ae2f9f78 Author: Lasse Collin Date: 2020-01-26 14:13:42 +0200 xz: Fix semi-busy-waiting in xz --flush-timeout. When input blocked, xz --flush-timeout=1 would wake up every millisecond and initiate flushing which would have nothing to flush and thus would just waste CPU time. The fix disables the timeout when no input has been seen since the previous flush. src/xz/coder.c | 4 ++++ src/xz/file_io.c | 15 +++++++++++---- src/xz/file_io.h | 4 ++++ 3 files changed, 19 insertions(+), 4 deletions(-) commit 38915703241e69a64f133ff9a02ec9100c6019c6 Author: Lasse Collin Date: 2020-01-26 13:47:31 +0200 xz: Refactor io_read() a bit. src/xz/file_io.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) commit f6d24245349cecfae6ec0d2366fa80716c9f6d37 Author: Lasse Collin Date: 2020-01-26 13:37:08 +0200 xz: Update a comment in file_io.h. src/xz/file_io.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 15b55d5c63d27f81776edb1abc05872a751fc674 Author: Lasse Collin Date: 2020-01-26 13:27:51 +0200 xz: Move the setting of flush_needed in file_io.c to a nicer location. src/xz/file_io.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 609c7067859146ffc62ac655f6ba53599c891801 Author: Lasse Collin Date: 2020-02-05 19:56:09 +0200 xz: Enable Capsicum sandboxing by default if available. It has been enabled in FreeBSD for a while and reported to work fine. Thanks to Xin Li. INSTALL | 6 ------ configure.ac | 8 ++++---- 2 files changed, 4 insertions(+), 10 deletions(-) commit 00517d125cc26ecece0eebb84c1c3975cd19bee0 Author: Lasse Collin Date: 2019-12-31 22:41:45 +0200 Rename unaligned_read32ne to read32ne, and similarly for the others. src/common/tuklib_integer.h | 64 +++++++++++++++---------------- src/liblzma/common/alone_encoder.c | 2 +- src/liblzma/common/block_header_decoder.c | 2 +- src/liblzma/common/block_header_encoder.c | 2 +- src/liblzma/common/memcmplen.h | 9 ++--- src/liblzma/common/stream_flags_decoder.c | 6 +-- src/liblzma/common/stream_flags_encoder.c | 8 ++-- src/liblzma/lz/lz_encoder_hash.h | 2 +- src/liblzma/lzma/lzma_decoder.c | 2 +- src/liblzma/lzma/lzma_encoder.c | 2 +- src/liblzma/lzma/lzma_encoder_private.h | 3 +- src/liblzma/simple/simple_decoder.c | 2 +- src/liblzma/simple/simple_encoder.c | 2 +- tests/test_block_header.c | 4 +- tests/test_stream_flags.c | 6 +-- 15 files changed, 54 insertions(+), 62 deletions(-) commit 52d89d8443c4a31a69c0701062f2c7711d82bbed Author: Lasse Collin Date: 2019-12-31 00:29:48 +0200 Rename read32ne to aligned_read32ne, and similarly for the others. Using the aligned methods requires more care to ensure that the address really is aligned, so it's nicer if the aligned methods are prefixed. The next commit will remove the unaligned_ prefix from the unaligned methods which in liblzma are used in more places than the aligned ones. src/common/tuklib_integer.h | 56 +++++++++++++++++++++--------------------- src/liblzma/check/crc32_fast.c | 4 +-- src/liblzma/check/crc64_fast.c | 4 +-- 3 files changed, 32 insertions(+), 32 deletions(-) commit 850620468b57d49f16093e5870d1050886fcb37a Author: Lasse Collin Date: 2019-12-31 00:18:24 +0200 Revise tuklib_integer.h and .m4. Add a configure option --enable-unsafe-type-punning to get the old non-conforming memory access methods. It can be useful with old compilers or in some other less typical situations but shouldn't normally be used. Omit the packed struct trick for unaligned access. While it's best in some cases, this is simpler. If the memcpy trick doesn't work, one can request unsafe type punning from configure. Because CRC32/CRC64 code needs fast aligned reads, if no very safe way to do it is found, type punning is used as a fallback. This sucks but since it currently works in practice, it seems to be the least bad option. It's never needed with GCC >= 4.7 or Clang >= 3.6 since these support __builtin_assume_aligned and thus fast aligned access can be done with the memcpy trick. Other things: - Support GCC/Clang __builtin_bswapXX - Cleaner bswap fallback macros - Minor cleanups m4/tuklib_integer.m4 | 43 ++++ src/common/tuklib_integer.h | 488 ++++++++++++++++++++++++-------------------- 2 files changed, 314 insertions(+), 217 deletions(-) commit a45badf0342666462cc6a7107a071418570ab773 Author: Lasse Collin Date: 2019-12-29 22:51:58 +0200 Tests: Hopefully fix test_check.c to work on EBCDIC systems. Thanks to Daniel Richard G. tests/test_check.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) commit c9a8071e6690a8db8a485c075920df254e7c70ea Author: Lasse Collin Date: 2019-09-24 23:02:40 +0300 Scripts: Put /usr/xpg4/bin to the beginning of PATH on Solaris. This adds a configure option --enable-path-for-scripts=PREFIX which defaults to empty except on Solaris it is /usr/xpg4/bin to make POSIX grep and others available. The Solaris case had been documented in INSTALL with a manual fix but it's better to do this automatically since it is needed on most Solaris systems anyway. Thanks to Daniel Richard G. INSTALL | 43 +++++++++++++++++++++++++++++++++++-------- configure.ac | 26 ++++++++++++++++++++++++++ src/scripts/xzdiff.in | 1 + src/scripts/xzgrep.in | 1 + src/scripts/xzless.in | 1 + src/scripts/xzmore.in | 1 + 6 files changed, 65 insertions(+), 8 deletions(-) commit aba140e2df3ff63ad124ae997de16d517b98ca50 Author: Lasse Collin Date: 2019-07-12 18:57:43 +0300 Fix comment typos in tuklib_mbstr* files. src/common/tuklib_mbstr.h | 2 +- src/common/tuklib_mbstr_fw.c | 2 +- src/common/tuklib_mbstr_width.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 710f5bd769a5d2bd8684256c2727d15350ee2ab8 Author: Lasse Collin Date: 2019-07-12 18:30:46 +0300 Add missing include to tuklib_mbstr_width.c. It didn't matter in XZ Utils because sysdefs.h includes string.h anyway. src/common/tuklib_mbstr_width.c | 1 + 1 file changed, 1 insertion(+) commit 0e491aa8cd72e0100cd15c1b9469cd57fae500b0 Author: Lasse Collin Date: 2019-06-25 23:15:21 +0300 liblzma: Fix a buggy comment. src/liblzma/lz/lz_encoder_mf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bfc245569f340a75bd71ad32a6beba786712683b Author: Lasse Collin Date: 2019-06-25 00:16:06 +0300 configure.ac: Fix a typo in a comment. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f18eee9d15a22c8449ef395a05f0eb637c4ad253 Author: Lasse Collin Date: 2019-06-25 00:08:13 +0300 Tests: Silence warnings from clang -Wassign-enum. Also changed 999 to 99 so it fits even if lzma_check happened to be 8 bits wide. tests/test_block_header.c | 3 ++- tests/test_stream_flags.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) commit 25f74554723e8deabc66fed1abf0ec27a4ed19d5 Author: Lasse Collin Date: 2019-06-24 23:52:17 +0300 liblzma: Add a comment. src/liblzma/common/stream_encoder_mt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 44eb961f2a51d02420d017bc5ff470360663650c Author: Lasse Collin Date: 2019-06-24 23:45:21 +0300 liblzma: Silence clang -Wmissing-variable-declarations. src/liblzma/check/crc32_table.c | 3 +++ src/liblzma/check/crc64_table.c | 3 +++ 2 files changed, 6 insertions(+) commit 267afcd9955e668c1532b069230c21c348eb4f82 Author: Lasse Collin Date: 2019-06-24 22:57:43 +0300 xz: Silence a warning from clang -Wsign-conversion in main.c. src/xz/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0e3c4002f809311ecef239b05e556d9c462b5703 Author: Lasse Collin Date: 2019-06-24 22:47:39 +0300 liblzma: Remove incorrect uses of lzma_attribute((__unused__)). Caught by clang -Wused-but-marked-unused. src/liblzma/common/alone_decoder.c | 3 +-- src/liblzma/common/alone_encoder.c | 3 +-- src/liblzma/lz/lz_decoder.c | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) commit cb708e8fa3405ec13a0ebfebbbf2793f927deab1 Author: Lasse Collin Date: 2019-06-24 20:53:55 +0300 Tests: Silence a warning from -Wsign-conversion. tests/create_compress_files.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit c8cace3d6e965c0fb537591372bf71b9357dd76c Author: Lasse Collin Date: 2019-06-24 20:45:49 +0300 xz: Fix an integer overflow with 32-bit off_t. Or any off_t which isn't very big (like signed 64 bit integer that most system have). A small off_t could overflow if the file being decompressed had long enough run of zero bytes, which would result in corrupt output. src/xz/file_io.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit 65a42741e290fbcd85dfc5db8a62c4bce5f7712c Author: Lasse Collin Date: 2019-06-24 00:57:23 +0300 Tests: Remove a duplicate branch from tests/tests.h. The duplication was introduced about eleven years ago and should have been cleaned up back then already. This was caught by -Wduplicated-branches. tests/tests.h | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) commit 5c4fb60e8df026e933afab0cfe0a8b55be20036c Author: Lasse Collin Date: 2019-06-23 23:22:45 +0300 tuklib_mbstr_width: Fix a warning from -Wsign-conversion. src/common/tuklib_mbstr_width.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 37df03ce52ce53710e1513387648763f8a744154 Author: Lasse Collin Date: 2019-06-23 23:19:34 +0300 xz: Fix some of the warnings from -Wsign-conversion. src/xz/args.c | 4 ++-- src/xz/coder.c | 4 ++-- src/xz/file_io.c | 5 +++-- src/xz/message.c | 4 ++-- src/xz/mytime.c | 4 ++-- src/xz/options.c | 2 +- src/xz/util.c | 4 ++-- 7 files changed, 14 insertions(+), 13 deletions(-) commit 7c65ae0f5f2e2431f88621e8fe6d1dc7907e30c1 Author: Lasse Collin Date: 2019-06-23 22:27:45 +0300 tuklib_cpucores: Silence warnings from -Wsign-conversion. src/common/tuklib_cpucores.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit a502dd1d000b598406637d452f535f4bbd43e2a4 Author: Lasse Collin Date: 2019-06-23 21:40:47 +0300 xzdec: Fix warnings from -Wsign-conversion. src/xzdec/xzdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a45d1a5374ceb22e23255b0b595b9e641e9860af Author: Lasse Collin Date: 2019-06-23 21:38:56 +0300 liblzma: Fix warnings from -Wsign-conversion. Also, more parentheses were added to the literal_subcoder macro in lzma_comon.h (better style but no functional change in the current usage). src/liblzma/common/block_header_decoder.c | 2 +- src/liblzma/delta/delta_decoder.c | 2 +- src/liblzma/lzma/fastpos.h | 2 +- src/liblzma/lzma/lzma2_decoder.c | 8 ++++---- src/liblzma/lzma/lzma_common.h | 3 ++- src/liblzma/lzma/lzma_decoder.c | 16 ++++++++-------- src/liblzma/simple/arm.c | 6 +++--- src/liblzma/simple/armthumb.c | 8 ++++---- src/liblzma/simple/ia64.c | 2 +- src/liblzma/simple/powerpc.c | 9 +++++---- src/liblzma/simple/x86.c | 2 +- 11 files changed, 31 insertions(+), 29 deletions(-) commit 4ff87ddf80ed7cb233444cddd86ab1940b5b55ec Author: Lasse Collin Date: 2019-06-23 19:33:55 +0300 tuklib_integer: Silence warnings from -Wsign-conversion. src/common/tuklib_integer.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit ed1a9d33984a3a37ae9a775a46859850d98ea4d0 Author: Lasse Collin Date: 2019-06-20 19:40:30 +0300 tuklib_integer: Fix usage of conv macros. Use a temporary variable instead of e.g. conv32le(unaligned_read32ne(buf)) because the macro can evaluate its argument multiple times. src/common/tuklib_integer.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) commit 612c88dfc08e2c572623954ecfde541d21c84882 Author: Lasse Collin Date: 2019-06-03 20:44:19 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 85da31d8b882b8b9671ab3e3d74d88bd945cd0bb Author: Lasse Collin Date: 2019-06-03 20:41:54 +0300 liblzma: Fix comments. Thanks to Bruce Stark. src/liblzma/common/alone_encoder.c | 4 ++-- src/liblzma/common/block_util.c | 2 +- src/liblzma/common/common.c | 2 +- src/liblzma/common/filter_common.h | 2 +- src/liblzma/common/filter_decoder.h | 2 +- src/liblzma/common/filter_flags_encoder.c | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) commit 6a73a7889587aa394e236c7e9e4f870b44851036 Author: Lasse Collin Date: 2019-06-02 00:50:59 +0300 liblzma: Fix one more unaligned read to use unaligned_read16ne(). src/liblzma/lz/lz_encoder_hash.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ce59b34ec9ac344d62a57cad5f94f695f42cdaee Author: Lasse Collin Date: 2019-06-01 21:41:55 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 94aa3fb568fe41dd4925a961966ed5cf8213bd1f Author: Lasse Collin Date: 2019-06-01 21:36:13 +0300 liblzma: memcmplen: Use ctz32() from tuklib_integer.h. The same compiler-specific #ifdefs are already in tuklib_integer.h src/liblzma/common/memcmplen.h | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) commit 412791486dfb430219d8e30bcbebbfc57a99484a Author: Lasse Collin Date: 2019-06-01 21:30:03 +0300 tuklib_integer: Cleanup MSVC-specific code. src/common/tuklib_integer.h | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) commit efbf6e5f0932e6c1a4250f91ee99059f449f2470 Author: Lasse Collin Date: 2019-06-01 19:01:21 +0300 liblzma: Use unaligned_readXXne functions instead of type punning. Now gcc -fsanitize=undefined should be clean. Thanks to Jeffrey Walton. src/liblzma/common/memcmplen.h | 12 ++++++------ src/liblzma/lzma/lzma_encoder_private.h | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) commit 29afef03486d461c23f57150ac5436684bff7811 Author: Lasse Collin Date: 2019-06-01 18:41:16 +0300 tuklib_integer: Improve unaligned memory access. Now memcpy() or GNU C packed structs for unaligned access instead of type punning. See the comment in this commit for details. Avoiding type punning with unaligned access is needed to silence gcc -fsanitize=undefined. New functions: unaliged_readXXne and unaligned_writeXXne where XX is 16, 32, or 64. src/common/tuklib_integer.h | 180 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 168 insertions(+), 12 deletions(-) commit 596ed3de4485a4b1d83b5fe506ae9d0a172139b4 Author: Lasse Collin Date: 2019-05-13 20:05:17 +0300 liblzma: Avoid memcpy(NULL, foo, 0) because it is undefined behavior. I should have always known this but I didn't. Here is an example as a reminder to myself: int mycopy(void *dest, void *src, size_t n) { memcpy(dest, src, n); return dest == NULL; } In the example, a compiler may assume that dest != NULL because passing NULL to memcpy() would be undefined behavior. Testing with GCC 8.2.1, mycopy(NULL, NULL, 0) returns 1 with -O0 and -O1. With -O2 the return value is 0 because the compiler infers that dest cannot be NULL because it was already used with memcpy() and thus the test for NULL gets optimized out. In liblzma, if a null-pointer was passed to memcpy(), there were no checks for NULL *after* the memcpy() call, so I cautiously suspect that it shouldn't have caused bad behavior in practice, but it's hard to be sure, and the problematic cases had to be fixed anyway. Thanks to Jeffrey Walton. src/liblzma/common/common.c | 6 +++++- src/liblzma/lz/lz_decoder.c | 12 +++++++++--- src/liblzma/simple/simple_coder.c | 10 +++++++++- 3 files changed, 23 insertions(+), 5 deletions(-) commit b4b83555c576e1d845a2b98a193b23c021437804 Author: Lasse Collin Date: 2019-05-11 20:56:08 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 8d4906262b45557ed164cd74adb270e6ef7f6f03 Author: Lasse Collin Date: 2019-05-11 20:54:12 +0300 xz: Update xz man page date. src/xz/xz.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0d318402f8a022f707622c72f8f1894ea476cf89 Author: Antoine Cœur Date: 2019-05-08 13:30:57 +0800 spelling Doxyfile.in | 2 +- NEWS | 2 +- src/liblzma/api/lzma/block.h | 2 +- src/liblzma/api/lzma/hardware.h | 2 +- src/liblzma/api/lzma/lzma12.h | 2 +- src/liblzma/api/lzma/vli.h | 2 +- src/liblzma/common/hardware_physmem.c | 2 +- src/liblzma/common/index.c | 4 ++-- src/liblzma/common/stream_encoder_mt.c | 2 +- src/liblzma/common/vli_decoder.c | 2 +- src/liblzma/lz/lz_decoder.c | 2 +- src/scripts/xzgrep.in | 2 +- src/xz/args.c | 2 +- src/xz/coder.c | 4 ++-- src/xz/main.c | 2 +- src/xz/mytime.h | 2 +- src/xz/private.h | 2 +- src/xz/xz.1 | 2 +- windows/build.bash | 2 +- 19 files changed, 21 insertions(+), 21 deletions(-) commit aeb3be8ac4c4b06a745c3799b80b38159fb78b1a Author: Lasse Collin Date: 2019-03-04 22:49:04 +0200 README: Update translation instructions. XZ Utils is now part of the Translation Project . README | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) commit 0c238dc3feb0a3eea1e713feb8d338c8dfba9f74 Author: Lasse Collin Date: 2018-12-20 20:42:29 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 3ca432d9cce4bf7e793de173dd22025b68611c42 Author: Lasse Collin Date: 2018-12-14 20:34:30 +0200 xz: Fix a crash in progress indicator when in passthru mode. "xz -dcfv not_an_xz_file" crashed (all four options are required to trigger it). It caused xz to call lzma_get_progress(&strm, ...) when no coder was initialized in strm. In this situation strm.internal is NULL which leads to a crash in lzma_get_progress(). The bug was introduced when xz started using lzma_get_progress() to get progress info for multi-threaded compression, so the bug is present in versions 5.1.3alpha and higher. Thanks to Filip Palian for the bug report. src/xz/coder.c | 11 +++++++---- src/xz/message.c | 18 ++++++++++++++++-- src/xz/message.h | 3 ++- 3 files changed, 25 insertions(+), 7 deletions(-) commit fcc419e3c3f77a8b6fc5056a86b1b8abbe266e62 Author: Lasse Collin Date: 2018-11-22 17:20:31 +0200 xz: Update man page timestamp. src/xz/xz.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5a2fc3cd0194e55df329dd29f805299aaca5f32f Author: Pavel Raiskup Date: 2018-11-22 15:14:34 +0100 'have have' typos src/xz/signals.c | 2 +- src/xz/xz.1 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 7143b04fe49390807f355b1dad686a3d8c4dbdcf Author: Lasse Collin Date: 2018-07-27 18:10:44 +0300 xzless: Rename unused variables to silence static analysers. In this particular case I don't see this affecting readability of the code. Thanks to Pavel Raiskup. src/scripts/xzless.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 273c33297bb69621045ed19665eaf8338bcf4a50 Author: Lasse Collin Date: 2018-07-27 16:02:58 +0300 liblzma: Remove an always-true condition from lzma_index_cat(). This should help static analysis tools to see that newg isn't leaked. Thanks to Pavel Raiskup. src/liblzma/common/index.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 65b4aba6d06d2cd24ba9ad01fa389c238ad8f352 Author: Lasse Collin Date: 2018-05-19 21:23:25 +0300 liblzma: Improve lzma_properties_decode() API documentation. src/liblzma/api/lzma/filter.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 531e78e5a253a3e2c4d4dd1505acaccee48f4083 Author: Lasse Collin Date: 2019-05-01 16:52:36 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 905de7e93528ca5a47039e7e1e5270163f9fc67e Author: Lasse Collin Date: 2019-05-01 16:43:16 +0300 Windows: Update VS version in windows/vs2019/config.h. windows/vs2019/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0ffd30e172fd18cc619823b2a86448bf56a67e22 Author: Julien Marrec Date: 2019-04-25 17:44:06 +0200 Windows: Upgrade solution itself windows/vs2019/xz_win.sln | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit c2ef96685fc7ca36311649eeb2284b9808292040 Author: Julien Marrec Date: 2019-04-25 17:40:24 +0200 Windows: Upgrade solution with VS2019 windows/vs2019/liblzma.vcxproj | 15 ++++++++------- windows/vs2019/liblzma_dll.vcxproj | 15 ++++++++------- 2 files changed, 16 insertions(+), 14 deletions(-) commit 25fccaf00bea399d8aa026e5b8fa254ce196e6e0 Author: Julien Marrec Date: 2019-04-25 17:39:32 +0200 Windows: Duplicate windows/vs2017 before upgrading windows/vs2019/config.h | 148 ++++++++++++++ windows/vs2019/liblzma.vcxproj | 354 ++++++++++++++++++++++++++++++++++ windows/vs2019/liblzma_dll.vcxproj | 383 +++++++++++++++++++++++++++++++++++++ windows/vs2019/xz_win.sln | 48 +++++ 4 files changed, 933 insertions(+) commit 1424078d6328291c7c524b64328ce9660617cb24 Author: Lasse Collin Date: 2019-01-13 17:29:23 +0200 Windows/VS2017: Omit WindowsTargetPlatformVersion from project files. I understood that if a WTPV is specified, it's often wrong because different VS installations have different SDK version installed. Omitting the WTPV tag makes VS2017 default to Windows SDK 8.1 which often is also missing, so in any case people may need to specify the WTPV before building. But some day in the future a missing WTPV tag will start to default to the latest installed SDK which sounds reasonable: https://developercommunity.visualstudio.com/content/problem/140294/windowstargetplatformversion-makes-it-impossible-t.html Thanks to "dom". windows/INSTALL-MSVC.txt | 4 ++++ windows/vs2017/liblzma.vcxproj | 1 - windows/vs2017/liblzma_dll.vcxproj | 1 - 3 files changed, 4 insertions(+), 2 deletions(-) commit b5be61cc06088bb07f488f9baf7d447ff47b37c1 Author: Lasse Collin Date: 2018-04-29 19:00:06 +0300 Bump version and soname for 5.2.4. src/liblzma/Makefile.am | 2 +- src/liblzma/api/lzma/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit c47fa6d06745bb2e99866e76b81ac7a9c5a8bfec Author: Lasse Collin Date: 2018-04-29 18:48:00 +0300 extra/scanlzma: Fix compiler warnings. extra/scanlzma/scanlzma.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 7b350fe21aa4fd6495a3b6188a40e3f1ae7c0edf Author: Lasse Collin Date: 2018-04-29 18:15:37 +0300 Add NEWS for 5.2.4. NEWS | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) commit 5801591162a280aa52d156dfde42c531ec7fd8b6 Author: Lasse Collin Date: 2018-02-06 19:36:30 +0200 Update THANKS. THANKS | 2 ++ 1 file changed, 2 insertions(+) commit c4a616f4536146f8906e1b4412eefeec07b28fae Author: Ben Boeckel Date: 2018-01-29 13:58:18 -0500 nothrow: use noexcept for C++11 and newer In C++11, the `throw()` specifier is deprecated and `noexcept` is preffered instead. src/liblzma/api/lzma.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 0b8947782ff3c5ef830a7f85412e44dcf3cdeb77 Author: Lasse Collin Date: 2018-02-06 18:02:48 +0200 liblzma: Remove incorrect #ifdef from range_common.h. In most cases it was harmless but it could affect some custom build systems. Thanks to Pippijn van Steenhoven. src/liblzma/rangecoder/range_common.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit 48f3b9f73ffea7f55d5678997aba0e79d2e82168 Author: Lasse Collin Date: 2018-01-10 22:10:39 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit a3ce3e902342be37c626a561ce3d9ffcf27d0f94 Author: Lasse Collin Date: 2018-01-10 21:54:27 +0200 tuklib_integer: New Intel C compiler needs immintrin.h. Thanks to Melanie Blower (Intel) for the patch. src/common/tuklib_integer.h | 11 +++++++++++ 1 file changed, 11 insertions(+) commit 4505ca483985f88c6923c05a43b4327feaab83b1 Author: Lasse Collin Date: 2017-09-24 20:04:24 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 1ef3cc226e3ce173575c218238b71a4eecabc470 Author: Lasse Collin Date: 2017-09-16 20:36:20 +0300 Windows: Fix paths in VS project files. Some paths use slashes instead of backslashes as directory separators... now it should work (I tested VS2013 version). windows/vs2013/liblzma.vcxproj | 12 ++++++------ windows/vs2013/liblzma_dll.vcxproj | 24 ++++++++++++------------ windows/vs2017/liblzma.vcxproj | 12 ++++++------ windows/vs2017/liblzma_dll.vcxproj | 24 ++++++++++++------------ 4 files changed, 36 insertions(+), 36 deletions(-) commit e775d2a8189d24f60470e6e49d8af881df3a1680 Author: Lasse Collin Date: 2017-09-16 12:54:23 +0300 Windows: Add project files for VS2017. These files match the v5.2 branch (no file info decoder). windows/vs2017/config.h | 148 ++++++++++++++ windows/vs2017/liblzma.vcxproj | 355 ++++++++++++++++++++++++++++++++++ windows/vs2017/liblzma_dll.vcxproj | 384 +++++++++++++++++++++++++++++++++++++ windows/vs2017/xz_win.sln | 48 +++++ 4 files changed, 935 insertions(+) commit 10e02e0fbb6e2173f8b41f6e39b7b570f47dd74d Author: Lasse Collin Date: 2017-09-16 12:39:43 +0300 Windows: Move VS2013 files into windows/vs2013 directory. windows/{ => vs2013}/config.h | 0 windows/{ => vs2013}/liblzma.vcxproj | 278 +++++++++++++++--------------- windows/{ => vs2013}/liblzma_dll.vcxproj | 280 +++++++++++++++---------------- windows/{ => vs2013}/xz_win.sln | 0 4 files changed, 279 insertions(+), 279 deletions(-) commit 06eebd4543196ded36fa9b8b9544195b38b24ef2 Author: Lasse Collin Date: 2017-08-14 20:08:33 +0300 Fix or hide warnings from GCC 7's -Wimplicit-fallthrough. src/liblzma/lzma/lzma_decoder.c | 6 ++++++ src/xz/list.c | 2 ++ 2 files changed, 8 insertions(+) commit ea4ea1dffafebaa8b2770bf3eca46900e4dd22dc Author: Alexey Tourbin Date: 2017-05-16 23:56:35 +0300 Docs: Fix a typo in a comment in doc/examples/02_decompress.c. doc/examples/02_decompress.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit eb2ef4c79bf405ea0d215f3b1df3d0eaf5e1d27b Author: Lasse Collin Date: 2017-05-23 18:34:43 +0300 xz: Fix "xz --list --robot missing_or_bad_file.xz". It ended up printing an uninitialized char-array when trying to print the check names (column 7) on the "totals" line. This also changes the column 12 (minimum xz version) to 50000002 (xz 5.0.0) instead of 0 when there are no valid input files. Thanks to kidmin for the bug report. src/xz/list.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 3ea5dbd9b0d79048e336e40cef3b6d814fb74e13 Author: Lasse Collin Date: 2017-04-24 19:48:47 +0300 Build: Omit pre-5.0.0 entries from the generated ChangeLog. It makes ChangeLog significantly smaller. Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit bae24675936df99064de1502593c006bd902594b Author: Lasse Collin Date: 2017-04-24 19:30:22 +0300 Update the Git repository URL to HTTPS in ChangeLog. ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 70f479211973b5361f4d7cb08ba5be69b4266e7a Author: Lasse Collin Date: 2017-04-19 22:17:35 +0300 Update the home page URLs to HTTPS. COPYING | 2 +- README | 2 +- configure.ac | 2 +- doc/faq.txt | 4 ++-- dos/config.h | 2 +- src/common/common_w32res.rc | 2 +- src/xz/xz.1 | 6 +++--- src/xzdec/xzdec.1 | 4 ++-- windows/README-Windows.txt | 2 +- windows/config.h | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) commit 2a4b2fa75d06a097261a02ecd3cf2b6d449bf754 Author: Lasse Collin Date: 2017-03-30 22:01:54 +0300 xz: Use POSIX_FADV_RANDOM for in "xz --list" mode. xz --list is random access so POSIX_FADV_SEQUENTIAL was clearly wrong. src/xz/file_io.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) commit eb25743ade39170cffd9566a1aae272098cce216 Author: Lasse Collin Date: 2017-03-30 19:47:45 +0300 liblzma: Fix lzma_memlimit_set(strm, 0). The 0 got treated specially in a buggy way and as a result the function did nothing. The API doc said that 0 was supposed to return LZMA_PROG_ERROR but it didn't. Now 0 is treated as if 1 had been specified. This is done because 0 is already used to indicate an error from lzma_memlimit_get() and lzma_memusage(). In addition, lzma_memlimit_set() no longer checks that the new limit is at least LZMA_MEMUSAGE_BASE. It's counter-productive for the Index decoder and was actually needed only by the auto decoder. Auto decoder has now been modified to check for LZMA_MEMUSAGE_BASE. src/liblzma/api/lzma/base.h | 7 ++++++- src/liblzma/common/auto_decoder.c | 3 +++ src/liblzma/common/common.c | 6 ++++-- 3 files changed, 13 insertions(+), 3 deletions(-) commit ef36c6362f3f3853f21b8a6359bcd06576ebf207 Author: Lasse Collin Date: 2017-03-30 19:16:55 +0300 liblzma: Similar memlimit fix for stream_, alone_, and auto_decoder. src/liblzma/api/lzma/container.h | 21 +++++++++++++++++---- src/liblzma/common/alone_decoder.c | 5 +---- src/liblzma/common/auto_decoder.c | 5 +---- src/liblzma/common/stream_decoder.c | 5 +---- 4 files changed, 20 insertions(+), 16 deletions(-) commit 57616032650f03840480b696d7878acdd2065521 Author: Lasse Collin Date: 2017-03-30 18:58:18 +0300 liblzma: Fix handling of memlimit == 0 in lzma_index_decoder(). It returned LZMA_PROG_ERROR, which was done to avoid zero as the limit (because it's a special value elsewhere), but using LZMA_PROG_ERROR is simply inconvenient and can cause bugs. The fix/workaround is to treat 0 as if it were 1 byte. It's effectively the same thing. The only weird consequence is that then lzma_memlimit_get() will return 1 even when 0 was specified as the limit. This fixes a very rare corner case in xz --list where a specific memory usage limit and a multi-stream file could print the error message "Internal error (bug)" instead of saying that the memory usage limit is too low. src/liblzma/api/lzma/index.h | 18 +++++++++++------- src/liblzma/common/index_decoder.c | 4 ++-- 2 files changed, 13 insertions(+), 9 deletions(-) commit 3d566cd519017eee1a400e7961ff14058dfaf33c Author: Lasse Collin Date: 2016-12-30 13:26:36 +0200 Bump version and soname for 5.2.3. src/liblzma/Makefile.am | 2 +- src/liblzma/api/lzma/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 053e624fe33795e779ff736f16ce44a129c829b5 Author: Lasse Collin Date: 2016-12-30 13:25:10 +0200 Update NEWS for 5.2.3. NEWS | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) commit cae412b2b77d7fd88d187ed7659331709311f80d Author: Lasse Collin Date: 2015-04-01 14:45:25 +0300 xz: Fix the Capsicum rights on user_abort_pipe. src/xz/file_io.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 9ccbae41000572193b9a09e7102f9e84dc6d96de Author: Lasse Collin Date: 2016-12-28 21:05:22 +0200 Mention potential sandboxing bugs in INSTALL. INSTALL | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit e013a337d3de77cce24360dffe956ea2339489b6 Author: Lasse Collin Date: 2016-11-21 20:24:50 +0200 liblzma: Avoid multiple definitions of lzma_coder structures. Only one definition was visible in a translation unit. It avoided a few casts and temp variables but seems that this hack doesn't work with link-time optimizations in compilers as it's not C99/C11 compliant. Fixes: http://www.mail-archive.com/xz-devel@tukaani.org/msg00279.html src/liblzma/common/alone_decoder.c | 44 +++++---- src/liblzma/common/alone_encoder.c | 34 ++++--- src/liblzma/common/auto_decoder.c | 35 ++++--- src/liblzma/common/block_decoder.c | 41 ++++---- src/liblzma/common/block_encoder.c | 40 ++++---- src/liblzma/common/common.h | 18 ++-- src/liblzma/common/index_decoder.c | 33 ++++--- src/liblzma/common/index_encoder.c | 16 ++-- src/liblzma/common/stream_decoder.c | 50 +++++----- src/liblzma/common/stream_encoder.c | 56 ++++++----- src/liblzma/common/stream_encoder_mt.c | 124 ++++++++++++++----------- src/liblzma/delta/delta_common.c | 25 ++--- src/liblzma/delta/delta_decoder.c | 6 +- src/liblzma/delta/delta_encoder.c | 12 ++- src/liblzma/delta/delta_private.h | 4 +- src/liblzma/lz/lz_decoder.c | 60 ++++++------ src/liblzma/lz/lz_decoder.h | 13 ++- src/liblzma/lz/lz_encoder.c | 57 +++++++----- src/liblzma/lz/lz_encoder.h | 9 +- src/liblzma/lzma/lzma2_decoder.c | 32 ++++--- src/liblzma/lzma/lzma2_encoder.c | 51 +++++----- src/liblzma/lzma/lzma_decoder.c | 27 +++--- src/liblzma/lzma/lzma_encoder.c | 29 +++--- src/liblzma/lzma/lzma_encoder.h | 9 +- src/liblzma/lzma/lzma_encoder_optimum_fast.c | 3 +- src/liblzma/lzma/lzma_encoder_optimum_normal.c | 23 ++--- src/liblzma/lzma/lzma_encoder_private.h | 6 +- src/liblzma/simple/arm.c | 2 +- src/liblzma/simple/armthumb.c | 2 +- src/liblzma/simple/ia64.c | 2 +- src/liblzma/simple/powerpc.c | 2 +- src/liblzma/simple/simple_coder.c | 61 ++++++------ src/liblzma/simple/simple_private.h | 12 +-- src/liblzma/simple/sparc.c | 2 +- src/liblzma/simple/x86.c | 15 +-- 35 files changed, 532 insertions(+), 423 deletions(-) commit 8e0f1af3dcaec00a3879cce8ad7441edc6359d1c Author: Lasse Collin Date: 2016-12-26 20:50:25 +0200 Document --enable-sandbox configure option in INSTALL. INSTALL | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) commit ce2542d220de06acd618fd9f5c0a6683029fb4eb Author: Lasse Collin Date: 2015-03-31 22:19:34 +0300 xz: Add support for sandboxing with Capsicum (disabled by default). In the v5.2 branch this feature is considered experimental and thus disabled by default. The sandboxing is used conditionally as described in main.c. This isn't optimal but it was much easier to implement than a full sandboxing solution and it still covers the most common use cases where xz is writing to standard output. This should have practically no effect on performance even with small files as fork() isn't needed. C and locale libraries can open files as needed. This has been fine in the past, but it's a problem with things like Capsicum. io_sandbox_enter() tries to ensure that various locale-related files have been loaded before cap_enter() is called, but it's possible that there are other similar problems which haven't been seen yet. Currently Capsicum is available on FreeBSD 10 and later and there is a port to Linux too. Thanks to Loganaden Velvindron for help. configure.ac | 41 +++++++++++++++++++++++++++ src/xz/Makefile.am | 2 +- src/xz/file_io.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/xz/file_io.h | 6 ++++ src/xz/main.c | 18 ++++++++++++ src/xz/private.h | 4 +++ 6 files changed, 151 insertions(+), 1 deletion(-) commit 3ca1d5e6320111043e19434da881065fadafa0e4 Author: Lasse Collin Date: 2015-03-31 21:12:30 +0300 Fix bugs and otherwise improve ax_check_capsicum.m4. AU_ALIAS was removed because the new version is incompatible with the old version. It no longer checks for separately. It's enough to test for it as part of AC_CHECK_DECL. The defines HAVE_CAPSICUM_SYS_CAPSICUM_H and HAVE_CAPSICUM_SYS_CAPABILITY_H were removed as unneeded. HAVE_SYS_CAPSICUM_H from AC_CHECK_HEADERS is enough. It no longer does a useless search for the Capsicum library if the header wasn't found. Fixed a bug in ACTION-IF-FOUND (the first argument). Specifying the argument omitted the default action but the given action wasn't used instead. AC_DEFINE([HAVE_CAPSICUM]) is now always called when Capsicum support is found. Previously it was part of the default ACTION-IF-FOUND which a custom action would override. Now the default action only prepends ${CAPSICUM_LIB} to LIBS. The documentation was updated. Since there as no serial number, "#serial 2" was added. m4/ax_check_capsicum.m4 | 103 ++++++++++++++++++++++++------------------------ 1 file changed, 51 insertions(+), 52 deletions(-) commit 5f3a742b64197fe8bedb6f05fc6ce5d177d11145 Author: Lasse Collin Date: 2015-03-31 19:20:24 +0300 Add m4/ax_check_capsicum.m4 for detecting Capsicum support. The file was loaded from this web page: https://github.com/google/capsicum-test/blob/dev/autoconf/m4/ax_check_capsicum.m4 Thanks to Loganaden Velvindron for pointing it out for me. m4/ax_check_capsicum.m4 | 86 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) commit d74377e62b4c649e40294dd441de72c0f092e67c Author: Lasse Collin Date: 2015-10-12 20:29:09 +0300 liblzma: Fix a memory leak in error path of lzma_index_dup(). lzma_index_dup() calls index_dup_stream() which, in case of an error, calls index_stream_end() to free memory allocated by index_stream_init(). However, it illogically didn't actually free the memory. To make it logical, the tree handling code was modified a bit in addition to changing index_stream_end(). Thanks to Evan Nemerson for the bug report. src/liblzma/common/index.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) commit f580732216dcf971f3f006fe8e01cd4979e1d964 Author: Lasse Collin Date: 2016-10-24 18:53:25 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 88d7a7fd153bf1355cdf798ffdac7443d0169afc Author: Lasse Collin Date: 2016-10-24 18:51:36 +0300 tuklib_cpucores: Add support for sched_getaffinity(). It's available in glibc (GNU/Linux, GNU/kFreeBSD). It's better than sysconf(_SC_NPROCESSORS_ONLN) because sched_getaffinity() gives the number of cores available to the process instead of the total number of cores online. As a side effect, this commit fixes a bug on GNU/kFreeBSD where configure would detect the FreeBSD-specific cpuset_getaffinity() but it wouldn't actually work because on GNU/kFreeBSD it requires using -lfreebsd-glue when linking. Now the glibc-specific function will be used instead. Thanks to Sebastian Andrzej Siewior for the original patch and testing. m4/tuklib_cpucores.m4 | 30 +++++++++++++++++++++++++++++- src/common/tuklib_cpucores.c | 9 +++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) commit 51baf684376903dbeddd840582bfdf9fa91b311b Author: Lasse Collin Date: 2016-06-30 20:27:36 +0300 xz: Fix copying of timestamps on Windows. xz used to call utime() on Windows, but its result gets lost on close(). Using _futime() seems to work. Thanks to Martok for reporting the bug: http://www.mail-archive.com/xz-devel@tukaani.org/msg00261.html configure.ac | 2 +- src/xz/file_io.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) commit 1ddc479851139d6e8202e5835421bfe6578d9e07 Author: Lasse Collin Date: 2016-06-16 22:46:02 +0300 xz: Silence warnings from -Wlogical-op. Thanks to Evan Nemerson. src/xz/file_io.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) commit be647ff5ed5a1c244a65722af6ce250259f3b14a Author: Lasse Collin Date: 2016-04-10 20:55:49 +0300 Build: Fix = to += for xz_SOURCES in src/xz/Makefile.am. Thanks to Christian Kujau. src/xz/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit fb6d50c15343831f35305982cefa82053099191d Author: Lasse Collin Date: 2016-04-10 20:54:17 +0300 Build: Bump GNU Gettext version requirement to 0.19. It silences a few warnings and most people probably have 0.19 even on stable distributions. Thanks to Christian Kujau. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 74f8dad9f912a2993768d93d108ea2b0b2c196e0 Author: Lasse Collin Date: 2016-03-13 20:21:49 +0200 liblzma: Disable external SHA-256 by default. This is the sane thing to do. The conflict with OpenSSL on some OSes and especially that the OS-provided versions can be significantly slower makes it clear that it was a mistake to have the external SHA-256 support enabled by default. Those who want it can now pass --enable-external-sha256 to configure. INSTALL was updated with notes about OSes where this can be a bad idea. The SHA-256 detection code in configure.ac had some bugs that could lead to a build failure in some situations. These were fixed, although it doesn't matter that much now that the external SHA-256 is disabled by default. MINIX >= 3.2.0 uses NetBSD's libc and thus has SHA256_Init in libc instead of libutil. Support for the libutil version was removed. INSTALL | 36 ++++++++++++++++++++++ configure.ac | 76 +++++++++++++++++++++++------------------------ src/liblzma/check/check.h | 16 ++++------ 3 files changed, 79 insertions(+), 49 deletions(-) commit ea7f6ff04cb5bb1498088eb09960a4c3f13dfe39 Author: Lasse Collin Date: 2016-03-10 20:27:05 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit d0e018016b311232e82d9a98dc68f1e3dabce794 Author: Lasse Collin Date: 2016-03-10 20:26:49 +0200 Build: Avoid SHA256_Init on FreeBSD and MINIX 3. On FreeBSD 10 and older, SHA256_Init from libmd conflicts with libcrypto from OpenSSL. The OpenSSL version has different sizeof(SHA256_CTX) and it can cause weird problems if wrong SHA256_Init gets used. Looking at the source, MINIX 3 seems to have a similar issue but I'm not sure. To be safe, I disabled SHA256_Init on MINIX 3 too. NetBSD has SHA256_Init in libc and they had a similar problem, but they already fixed it in 2009. Thanks to Jim Wilcoxson for the bug report that helped in finding the problem. configure.ac | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) commit 5daae123915f32a4ed6dc948b831533c2d1beec3 Author: Lasse Collin Date: 2015-11-08 20:16:10 +0200 tuklib_physmem: Hopefully silence a warning on Windows. src/common/tuklib_physmem.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 491acc406e098167ccb7fce0728b94c2f32cff9f Author: Lasse Collin Date: 2015-11-04 23:17:43 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 8173ff8790ad3502d04e1c07d014cb84a3b8187b Author: Lasse Collin Date: 2015-11-04 23:14:00 +0200 liblzma: Make Valgrind happier with optimized (gcc -O2) liblzma. When optimizing, GCC can reorder code so that an uninitialized value gets used in a comparison, which makes Valgrind unhappy. It doesn't happen when compiled with -O0, which I tend to use when running Valgrind. Thanks to Rich Prohaska. I remember this being mentioned long ago by someone else but nothing was done back then. src/liblzma/lz/lz_encoder.c | 4 ++++ 1 file changed, 4 insertions(+) commit 013de2b5ab8094d2c82a2771f3d143eeb656eda9 Author: Lasse Collin Date: 2015-11-03 20:55:45 +0200 liblzma: Rename lzma_presets.c back to lzma_encoder_presets.c. It would be too annoying to update other build systems just because of this. src/liblzma/lzma/Makefile.inc | 2 +- src/liblzma/lzma/{lzma_presets.c => lzma_encoder_presets.c} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit a322f70ad96de88968c2c36e6a36bc08ae30bd20 Author: Lasse Collin Date: 2015-11-03 20:47:07 +0200 Build: Disable xzdec, lzmadec, and lzmainfo when they cannot be built. They all need decoder support and if that isn't available, there's no point trying to build them. configure.ac | 3 +++ 1 file changed, 3 insertions(+) commit 8ea49606cf6427e32319de7693eca9e43f1c8ad6 Author: Lasse Collin Date: 2015-11-03 20:35:19 +0200 Build: Simplify $enable_{encoders,decoders} usage a bit. configure.ac | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 42131a25e52bfe400acfa7df93469a96bb78bb78 Author: Lasse Collin Date: 2015-11-03 20:31:31 +0200 Windows/MSVC: Update config.h. windows/config.h | 6 ++++++ 1 file changed, 6 insertions(+) commit e9184e87cc989d14c7413e6adb3eca98f6ae0290 Author: Lasse Collin Date: 2015-11-03 20:29:58 +0200 DOS: Update config.h. dos/config.h | 6 ++++++ 1 file changed, 6 insertions(+) commit 2296778f3c9a1e3a8699973b09dd3610b8baa402 Author: Lasse Collin Date: 2015-11-03 20:29:33 +0200 xz: Make xz buildable even when encoders or decoders are disabled. The patch is quite long but it's mostly about adding new #ifdefs to omit code when encoders or decoders have been disabled. This adds two new #defines to config.h: HAVE_ENCODERS and HAVE_DECODERS. configure.ac | 4 ++++ src/xz/Makefile.am | 8 ++++++-- src/xz/args.c | 16 ++++++++++++++++ src/xz/coder.c | 33 +++++++++++++++++++++++++-------- src/xz/main.c | 9 +++++++-- src/xz/private.h | 5 ++++- 6 files changed, 62 insertions(+), 13 deletions(-) commit 97a3109281e475d9cf1b5095237d672fa0ad25e5 Author: Lasse Collin Date: 2015-11-03 18:06:40 +0200 Build: Build LZMA1/2 presets also when only decoder is wanted. People shouldn't rely on the presets when decoding raw streams, but xz uses the presets as the starting point for raw decoder options anyway. lzma_encocder_presets.c was renamed to lzma_presets.c to make it clear it's not used solely by the encoder code. src/liblzma/lzma/Makefile.inc | 6 +++++- src/liblzma/lzma/{lzma_encoder_presets.c => lzma_presets.c} | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) commit dc6b78d7f0f6fe43e9d4215146e8581feb8090e7 Author: Lasse Collin Date: 2015-11-03 17:54:48 +0200 Build: Fix configure to handle LZMA1 dependency with LZMA2. Now it gives an error if LZMA1 encoder/decoder is missing when LZMA2 encoder/decoder was requested. Even better would be LZMA2 implicitly enabling LZMA1 but it would need more code. configure.ac | 5 ----- 1 file changed, 5 deletions(-) commit 46d76c9cd3cb26a31f5ae6c3a8bbcf38e6da1add Author: Lasse Collin Date: 2015-11-03 17:41:54 +0200 Build: Don't omit lzma_cputhreads() unless using --disable-threads. Previously it was omitted if encoders were disabled with --disable-encoders. It didn't make sense and it also broke the build. src/liblzma/common/Makefile.inc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 16d68f874d89f1e4a1919786a35bbaef7d71a077 Author: Lasse Collin Date: 2015-11-02 18:16:51 +0200 liblzma: Fix a build failure related to external SHA-256 support. If an appropriate header and structure were found by configure, but a library with a usable SHA-256 functions wasn't, the build failed. src/liblzma/check/check.h | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) commit d9311647fc1ab512a3394596221ab8039c00af6b Author: Lasse Collin Date: 2015-11-02 15:19:10 +0200 xz: Always close the file before trying to delete it. unlink() can return EBUSY in errno for open files on some operating systems and file systems. src/xz/file_io.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) commit f59c4183f3c9066626ce45dc3db4642fa603fa21 Author: Lasse Collin Date: 2015-10-12 21:08:42 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 35f189673e280c12e4c5129f9f97e54eef3bbc04 Author: Lasse Collin Date: 2015-10-12 21:07:41 +0300 Tests: Add tests for the two bugs fixed in index.c. tests/test_index.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) commit e10bfdb0fcaff12f3a6dadee51e0a022aadccb51 Author: Lasse Collin Date: 2015-10-12 20:45:15 +0300 liblzma: Fix lzma_index_dup() for empty Streams. Stream Flags and Stream Padding weren't copied from empty Streams. src/liblzma/common/index.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit 06f434bd8980f25ca23232eb7bb7df7e37dc8448 Author: Lasse Collin Date: 2015-10-12 20:31:44 +0300 liblzma: Add a note to index.c for those using static analyzers. src/liblzma/common/index.c | 3 +++ 1 file changed, 3 insertions(+) commit 9815cdf6987ef91a85493bfcfd1ce2aaf3b47a0a Author: Lasse Collin Date: 2015-09-29 13:59:35 +0300 Bump version and soname for 5.2.2. src/liblzma/Makefile.am | 2 +- src/liblzma/api/lzma/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit cbe0cec8476bdd0416c7ca9bc83895c9bea1cf78 Author: Lasse Collin Date: 2015-09-29 13:57:28 +0300 Update NEWS for 5.2.2. NEWS | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit 49427ce7eececdd18bbd35dab23c81910d083e1c Author: Andre Noll Date: 2015-05-28 15:50:00 +0200 Fix typo in German translation. As pointed out by Robert Pollak, there's a typo in the German translation of the compression preset option (-0 ... -9) help text. "The compressor" translates to "der Komprimierer", and the genitive form is "des Komprimierers". The old word makes no sense at all. po/de.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 608d6f06c940e7f28c25de005e8b99bdff42d27c Author: Hauke Henningsen Date: 2015-08-17 04:59:54 +0200 Update German translation, mostly wrt orthography Provide an update of the German translation. * A lot of compound words were previously written with spaces, while German orthography is relatively clear in that the components should not be separated. * When referring to the actual process of (de)compression rather than the concept, replace “(De-)Kompression” with “(De-)Komprimierung”. Previously, both forms were used in this context and are now used in a manner consistent with “Komprimierung” being more likely to refer to a process. * Consistently translate “standard input”/“output” * Use “Zeichen” instead of false friend “Charakter” for “character” * Insert commas around relative clauses (as required in German) * Some other minor corrections * Capitalize “ß” as “ẞ” * Consistently start option descriptions in --help with capital letters Acked-By: Andre Noll * Update after msgmerge po/de.po | 383 ++++++++++++++++++++++++++++++++------------------------------- 1 file changed, 196 insertions(+), 187 deletions(-) commit c8988414e5b67b8ef2fe0ba7b1ccdd0ec73c60d3 Author: Lasse Collin Date: 2015-08-11 13:23:04 +0300 Build: Minor Cygwin cleanup. Some tests used "cygwin*" and some used "cygwin". I changed them all to use "cygwin". Shouldn't affect anything in practice. configure.ac | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 85a6dfed53477906bfe9a7c0123dd412e391cb48 Author: Lasse Collin Date: 2015-08-11 13:21:52 +0300 Build: Support building of MSYS2 binaries. configure.ac | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) commit 77f270be8432df2e4516a0c48814b6976d6618c5 Author: Lasse Collin Date: 2015-08-09 21:06:26 +0300 Windows: Define DLL_EXPORT when building liblzma.dll with MSVC. src/liblzma/common/common.h uses it to set __declspec(dllexport) for the API symbols. Thanks to Adam Walling. windows/liblzma_dll.vcxproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 8c975446c5903090a5a8493b5b96b71003056a88 Author: Lasse Collin Date: 2015-08-09 21:02:20 +0300 Windows: Omit unneeded header files from MSVC project files. windows/liblzma.vcxproj | 5 ----- windows/liblzma_dll.vcxproj | 5 ----- 2 files changed, 10 deletions(-) commit 119a00434954726ca58e4a578e6469f530fca30e Author: Lasse Collin Date: 2015-07-12 20:48:19 +0300 liblzma: A MSVC-specific hack isn't needed with MSVC 2013 and newer. src/liblzma/api/lzma.h | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) commit d4e7c557fcab353539c9481a8d95cb04bcb15c7c Author: Lasse Collin Date: 2015-06-19 20:38:55 +0300 Update THANKS. THANKS | 2 ++ 1 file changed, 2 insertions(+) commit 98001740ca56c894a7bd32eb47e9857a8a7d878d Author: Lasse Collin Date: 2015-06-19 20:21:30 +0300 Windows: Update the docs. INSTALL | 29 ++++++++----- windows/INSTALL-MSVC.txt | 47 ++++++++++++++++++++++ windows/{INSTALL-Windows.txt => INSTALL-MinGW.txt} | 2 +- 3 files changed, 67 insertions(+), 11 deletions(-) commit 28195e4c877007cc760ecea1d17f740693d66873 Author: Lasse Collin Date: 2015-06-19 17:25:31 +0300 Windows: Add MSVC project files for building liblzma. Thanks to Adam Walling for creating these files. windows/liblzma.vcxproj | 359 ++++++++++++++++++++++++++++++++++++++++ windows/liblzma_dll.vcxproj | 388 ++++++++++++++++++++++++++++++++++++++++++++ windows/xz_win.sln | 48 ++++++ 3 files changed, 795 insertions(+) commit 960440f3230dc628f6966d9f7614fc1b28baf44e Author: Lasse Collin Date: 2015-05-13 20:57:55 +0300 Tests: Fix a memory leak in test_bcj_exact_size. Thanks to Cristian Rodríguez. tests/test_bcj_exact_size.c | 1 + 1 file changed, 1 insertion(+) commit 68cd35acafbdcdf4e8ea8b5bb843c736939d6f8b Author: Lasse Collin Date: 2015-05-12 18:08:24 +0300 Fix NEWS about threading in 5.2.0. Thanks to Andy Hochhaus. NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit ff96ed6d25786728356017a13baf8c14731b4f1e Author: Lasse Collin Date: 2015-05-11 21:26:16 +0300 xz: Document that threaded decompression hasn't been implemented yet. src/xz/xz.1 | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit 00d37b64a64ea8597fd2422d5187afd761ab9531 Author: Lasse Collin Date: 2015-04-20 20:20:29 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit db190a832c49ca3aed6d69cc992fa5583cae7b11 Author: Lasse Collin Date: 2015-04-20 19:59:18 +0300 Revert "xz: Use pipe2() if available." This reverts commit 7a11c4a8e5e15f13d5fa59233b3172e65428efdd. It is a problem when libc has pipe2() but the kernel is too old to have pipe2() and thus pipe2() fails. In xz it's pointless to have a fallback for non-functioning pipe2(); it's better to avoid pipe2() completely. Thanks to Michael Fox for the bug report. configure.ac | 4 ++-- src/xz/file_io.c | 9 +-------- 2 files changed, 3 insertions(+), 10 deletions(-) commit eccd8155e107c5ada03d13e7730675cdf1a44ddc Author: Lasse Collin Date: 2015-03-29 22:14:47 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 25263fd9e7a8a913395cb93d7c104cd48c2b4a00 Author: Lasse Collin Date: 2015-03-29 22:13:48 +0300 Fix the detection of installed RAM on QNX. The earlier version compiled but didn't actually work since sysconf(_SC_PHYS_PAGES) always fails (or so I was told). Thanks to Ole André Vadla Ravnås for the patch and testing. m4/tuklib_physmem.m4 | 6 +++--- src/common/tuklib_physmem.c | 14 +++++++++++++- 2 files changed, 16 insertions(+), 4 deletions(-) commit 4c544d2410903d38402221cb783ed85585b6a007 Author: Lasse Collin Date: 2015-03-27 22:39:07 +0200 Fix CPU core count detection on QNX. It tried to use sysctl() on QNX but - it broke the build because sysctl() needs -lsocket on QNX; - sysctl() doesn't work for detecting the core count on QNX even if it compiled. sysconf() works. An alternative would have been to use QNX-specific SYSPAGE_ENTRY(num_cpu) from . Thanks to Ole André Vadla Ravnås. m4/tuklib_cpucores.m4 | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) commit e0ea6737b03e83ccaff4514d00e31bb926f8f0f3 Author: Lasse Collin Date: 2015-03-07 22:05:57 +0200 xz: size_t/uint32_t cleanup in options.c. src/xz/options.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 8bcca29a65335fd679c13814b70b35b68fa5daed Author: Lasse Collin Date: 2015-03-07 22:04:23 +0200 xz: Fix a comment and silence a warning in message.c. src/xz/message.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit f243f5f44c6b19a7c289a0ec73a03ee08364cb5b Author: Lasse Collin Date: 2015-03-07 22:01:00 +0200 liblzma: Silence more uint32_t vs. size_t warnings. src/liblzma/lz/lz_encoder.c | 2 +- src/liblzma/lzma/lzma_encoder.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 7f0a4c50f4a374c40acf4b86848f301ad1e82d34 Author: Lasse Collin Date: 2015-03-07 19:54:00 +0200 xz: Make arg_count an unsigned int to silence a warning. Actually the value of arg_count cannot exceed INT_MAX but it's nicer as an unsigned int. src/xz/args.h | 2 +- src/xz/main.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit f6ec46801588b1be29c07c9db98558b521304002 Author: Lasse Collin Date: 2015-03-07 19:33:17 +0200 liblzma: Fix a warning in index.c. src/liblzma/common/index.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit a24518971cc621315af142dd3bb7614fab04ad27 Author: Lasse Collin Date: 2015-02-26 20:46:14 +0200 Build: Fix a CR+LF problem when running autoreconf -fi on OS/2. build-aux/version.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit dec11497a71518423b5ff0e759100cf8aadf6c7b Author: Lasse Collin Date: 2015-02-26 16:53:44 +0200 Bump version and soname for 5.2.1. src/liblzma/Makefile.am | 2 +- src/liblzma/api/lzma/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 29e39c79975ab89ee5dd671e97064534a9f3a649 Author: Lasse Collin Date: 2015-02-26 13:01:09 +0200 Update NEWS for 5.2.1. NEWS | 14 ++++++++++++++ 1 file changed, 14 insertions(+) commit 7a11c4a8e5e15f13d5fa59233b3172e65428efdd Author: Lasse Collin Date: 2015-02-22 19:38:48 +0200 xz: Use pipe2() if available. configure.ac | 4 ++-- src/xz/file_io.c | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) commit 117d962685c72682c63edc9bb765367189800202 Author: Lasse Collin Date: 2015-02-21 23:40:26 +0200 liblzma: Fix a compression-ratio regression in LZMA1/2 in fast mode. The bug was added in the commit f48fce093b07aeda95c18850f5e086d9f2383380 and thus affected 5.1.4beta and 5.2.0. Luckily the bug cannot cause data corruption or other nasty things. src/liblzma/lzma/lzma_encoder_optimum_fast.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ae984e31c167d3bc52972ec422dd1ebd5f5d5719 Author: Lasse Collin Date: 2015-02-21 23:00:19 +0200 xz: Fix the fcntl() usage when creating a pipe for the self-pipe trick. Now it reads the old flags instead of blindly setting O_NONBLOCK. The old code may have worked correctly, but this is better. src/xz/file_io.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) commit 2205bb5853098aea36a56df6f5747037175f66b4 Author: Lasse Collin Date: 2015-02-10 15:29:34 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit d935b0cdf3db440269b9d952b2b281b18f8c7b08 Author: Lasse Collin Date: 2015-02-10 15:28:30 +0200 tuklib_cpucores: Use cpuset_getaffinity() on FreeBSD if available. In FreeBSD, cpuset_getaffinity() is the preferred way to get the number of available cores. Thanks to Rui Paulo for the patch. I edited it slightly, but hopefully I didn't break anything. m4/tuklib_cpucores.m4 | 23 ++++++++++++++++++++++- src/common/tuklib_cpucores.c | 18 ++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) commit eb61bc58c20769cac4d05f363b9c0e8c9c71a560 Author: Lasse Collin Date: 2015-02-09 22:08:37 +0200 xzdiff: Make the mktemp usage compatible with FreeBSD's mktemp. Thanks to Rui Paulo for the fix. src/scripts/xzdiff.in | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit b9a5b6b7a29029680af733082b6a46e0fc01623a Author: Lasse Collin Date: 2015-02-03 21:45:53 +0200 Add a few casts to tuklib_integer.h to silence possible warnings. I heard that Visual Studio 2013 gave warnings without the casts. Thanks to Gabi Davar. src/common/tuklib_integer.h | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) commit c45757135f40e4a0de730ba5fff0100219493982 Author: Lasse Collin Date: 2015-01-26 21:24:39 +0200 liblzma: Set LZMA_MEMCMPLEN_EXTRA depending on the compare method. src/liblzma/common/memcmplen.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) commit 3c500174ed5485f550972a2a6109c361e875f069 Author: Lasse Collin Date: 2015-01-26 20:40:16 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit fec88d41e672d9e197c9442aecf02bd0dfa6d516 Author: Lasse Collin Date: 2015-01-26 20:39:28 +0200 liblzma: Silence harmless Valgrind errors. Thanks to Torsten Rupp for reporting this. I had forgotten to run Valgrind before the 5.2.0 release. src/liblzma/lz/lz_encoder.c | 6 ++++++ 1 file changed, 6 insertions(+) commit a9b45badfec0928d20a27c7176c005fa637f7d1e Author: Lasse Collin Date: 2015-01-09 21:50:19 +0200 xz: Fix comments. src/xz/file_io.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) commit 541aee6dd4aa97a809aba281475a21b641bb89e2 Author: Lasse Collin Date: 2015-01-09 21:35:06 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 4170edc914655310d2363baccf5e615e09b04911 Author: Lasse Collin Date: 2015-01-09 21:34:06 +0200 xz: Don't fail if stdout doesn't support O_NONBLOCK. This is similar to the case with stdin. Thanks to Brad Smith for the bug report and testing on OpenBSD. src/xz/file_io.c | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) commit 04bbc0c2843c50c8ad1cba42b937118e38b0508d Author: Lasse Collin Date: 2015-01-07 19:18:20 +0200 xz: Fix a memory leak in DOS-specific code. src/xz/file_io.c | 2 ++ 1 file changed, 2 insertions(+) commit f0f1f6c7235ffa901cf76fe18e33749e200b3eea Author: Lasse Collin Date: 2015-01-07 19:08:06 +0200 xz: Don't fail if stdin doesn't support O_NONBLOCK. It's a problem at least on OpenBSD which doesn't support O_NONBLOCK on e.g. /dev/null. I'm not surprised if it's a problem on other OSes too since this behavior is allowed in POSIX-1.2008. The code relying on this behavior was committed in June 2013 and included in 5.1.3alpha released on 2013-10-26. Clearly the development releases only get limited testing. src/xz/file_io.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) commit d2d484647d9d9d679f03c75abb0404f67069271c Author: Lasse Collin Date: 2015-01-06 20:30:15 +0200 Tests: Don't hide unexpected error messages in test_files.sh. Hiding them makes no sense since normally there's no error when testing the "good" files. With "bad" files errors are expected and then it makes sense to keep the messages hidden. tests/test_files.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit aae6a6aeda51cf94a47e39ad624728f9bee75e30 Author: Lasse Collin Date: 2014-12-30 11:17:16 +0200 Update Solaris notes in INSTALL. Mention the possible "make check" failure on Solaris in the Solaris-specific section of INSTALL. It was already in section 4.5 but it is better mention it in the OS-specific section too. INSTALL | 4 ++++ 1 file changed, 4 insertions(+) commit 7815112153178800a3521b9f31960e7cdc26cfba Author: Lasse Collin Date: 2014-12-26 12:00:05 +0200 Build: POSIX shell isn't required if scripts are disabled. INSTALL | 3 ++- configure.ac | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) commit a0cd05ee71d330b79ead6eb9222e1b24e1559d3a Author: Lasse Collin Date: 2014-12-21 20:48:37 +0200 DOS: Update Makefile. dos/Makefile | 1 + 1 file changed, 1 insertion(+) commit b85ee0905ec4ab7656d22e63519fdd3bedb21f2e Author: Lasse Collin Date: 2014-12-21 19:50:38 +0200 Windows: Fix bin_i486 to bin_i686 in build.bash. windows/build.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit cbafa710918195dbba3db02c3fab4f0538235206 Author: Lasse Collin Date: 2014-12-21 18:58:44 +0200 Docs: Use lzma_cputhreads() in 04_compress_easy_mt.c. doc/examples/04_compress_easy_mt.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) commit 8dbb57238d372c7263cfeb3e7f7fd9a73173156a Author: Lasse Collin Date: 2014-12-21 18:56:44 +0200 Docs: Update docs/examples/00_README.txt. doc/examples/00_README.txt | 4 ++++ 1 file changed, 4 insertions(+) commit 6060f7dc76fd6c2a8a1f8e85d0e4d86bb78273e6 Author: Lasse Collin Date: 2014-12-21 18:11:17 +0200 Bump version and soname for 5.2.0. I know that soname != app version, but I skip AGE=1 in -version-info to make the soname match the liblzma version anyway. It doesn't hurt anything as long as it doesn't conflict with library versioning rules. src/liblzma/Makefile.am | 2 +- src/liblzma/api/lzma/version.h | 6 +++--- src/liblzma/liblzma.map | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) commit 3e8bd1d15e417f2d588e9be50ce027ee3d48b2da Author: Lasse Collin Date: 2014-12-21 18:05:03 +0200 Avoid variable-length arrays in the debug programs. debug/full_flush.c | 3 ++- debug/sync_flush.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) commit 72f7307cfdceb941aeb2bf30d424cc0d13621786 Author: Lasse Collin Date: 2014-12-21 18:01:45 +0200 Build: Include 04_compress_easy_mt.c in the tarball. Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 2cb82ff21c62def11f3683a8bb0aaf363102aaa0 Author: Lasse Collin Date: 2014-12-21 18:00:38 +0200 Fix build when --disable-threads is used. src/common/mythread.h | 2 ++ 1 file changed, 2 insertions(+) commit 9b9e3536e458ef958f66b0e8982efc9d36de4d17 Author: Adrien Nader Date: 2014-12-21 15:56:15 +0100 po/fr: improve wording for help for --lzma1/--lzma2. po/fr.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a8b6b569e7fadbf5b5b9139d53bc764015c15027 Author: Adrien Nader Date: 2014-12-21 15:55:48 +0100 po/fr: missing line in translation of --extreme. po/fr.po | 1 + 1 file changed, 1 insertion(+) commit f168a6fd1a888cf4f0caaddcafcb21dadc6ab6e9 Author: Lasse Collin Date: 2014-12-21 14:32:33 +0200 Update NEWS for 5.2.0. NEWS | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) commit cec2ee863b3a88f4bf039cb00f73c4a4fc93a429 Author: Lasse Collin Date: 2014-12-21 14:32:22 +0200 Update NEWS for 5.0.8. NEWS | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit 42e97a32649bf53ce43be2258b902a417c6e7fa1 Author: Lasse Collin Date: 2014-12-21 14:07:54 +0200 xz: Fix a comment. src/xz/options.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 29b95d5d6665cedffa6a9d6d3d914f981e852182 Author: Lasse Collin Date: 2014-12-20 20:43:14 +0200 Update INSTALL about the dependencies of the scripts. INSTALL | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) commit 3af91040bb42c21afbb81f5568c3313125e61192 Author: Lasse Collin Date: 2014-12-20 20:42:33 +0200 Windows: Update build instructions. INSTALL | 15 +++++++++------ windows/INSTALL-Windows.txt | 44 +++++++++++++++++++++----------------------- 2 files changed, 30 insertions(+), 29 deletions(-) commit 0152f72bf6289d744823dc6c849538f3a139ad70 Author: Lasse Collin Date: 2014-12-20 20:41:48 +0200 Windows: Update the build script and README-Windows.txt. The 32-bit build is now for i686 or newer because the prebuilt MinGW-w64 toolchains include i686 code in the executables even if one uses -march=i486. The build script builds 32-bit SSE2 enabled version too. Run-time detection of SSE2 support would be nice (on any OS) but it's not implemented in XZ Utils yet. windows/README-Windows.txt | 30 ++++++++++++++++-------------- windows/build.bash | 23 ++++++++++++++--------- 2 files changed, 30 insertions(+), 23 deletions(-) commit 4a1f6133ee5533cee8d91e06fcc22443e5f1881a Author: Lasse Collin Date: 2014-12-19 15:51:50 +0200 Windows: Define TUKLIB_SYMBOL_PREFIX in config.h. It is to keep all symbols in the lzma_ namespace. windows/config.h | 3 +++ 1 file changed, 3 insertions(+) commit 7f7d093de79eee0c7dbfd7433647e46302f19f82 Author: Lasse Collin Date: 2014-12-16 21:00:09 +0200 xz: Update the man page about --threads. src/xz/xz.1 | 5 ----- 1 file changed, 5 deletions(-) commit 009823448b82aa5f465668878a544c5842885407 Author: Lasse Collin Date: 2014-12-16 20:57:43 +0200 xz: Update the man page about --block-size. src/xz/xz.1 | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) commit 7dddfbeb499e528940bc12047355c184644aafe9 Author: Adrien Nader Date: 2014-12-10 22:26:57 +0100 po/fr: several more translation updates: reword and handle --ignore-check. po/fr.po | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) commit 6eca5be40e04ddc4b738d493e4e56835956d8b69 Author: Adrien Nader Date: 2014-12-10 22:23:01 +0100 po/fr: yet another place where my email address had to be updated. po/fr.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d1003673e92ba47edd6aeeb3dbea05c18269d0e7 Author: Adrien Nader Date: 2014-12-10 22:22:20 +0100 po/fr: fix several typos that have been around since the beginning. po/fr.po | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) commit 4c5aa911a0df027e46171e368debc543d2fa72b2 Author: Adrien Nader Date: 2014-12-03 20:02:31 +0100 po/fr: last batch of new translations for now. Four new error messages. po/fr.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit 3e3099e36d27059499e7996fb38a62e8ab01d356 Author: Adrien Nader Date: 2014-12-03 20:01:32 +0100 po/fr: translations for --threads, --block-size and --block-list. po/fr.po | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) commit e7d96a5933eec4e9d4a62569ee88df0ebb0f1d53 Author: Adrien Nader Date: 2014-12-03 20:00:53 +0100 po/fr: remove fuzzy marker for error messages that will be kept in English. The following is a copy of a comment inside fr.po: Note from translator on "file status flags". The following entry is kept un-translated on purpose. It is difficult to translate and should only happen in exceptional circumstances which means that translating would: - lose some of the meaning - make it more difficult to look up in search engines; it might happen one in a million times, if we dilute the error message in 20 languages, it will be almost impossible to find an explanation and support for the error. po/fr.po | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) commit 46cbb9033af8a21fafe543302d6919746e0d72af Author: Adrien Nader Date: 2014-12-03 19:58:25 +0100 po/fr: several minor updates and better wording. Meaning doesn't change at all: it's only for better wording and/or formatting of a few strings. po/fr.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 7ce49d444f04e73145f79c832eb4d510594b074a Author: Adrien Nader Date: 2014-12-03 19:56:12 +0100 po/fr: update my email address and copyright years. po/fr.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 214c553ebc3047cd720da1ce5c80cf7c38118d3c Author: Adrien Nader Date: 2014-11-26 10:08:26 +0100 fr.po: commit file after only "update-po" so actual is readable. po/fr.po | 311 ++++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 199 insertions(+), 112 deletions(-) commit 1190c641af09cde85f8bd0fbe5c4906f4a29431b Author: Lasse Collin Date: 2014-12-02 20:04:07 +0200 liblzma: Document how lzma_mt.block_size affects memory usage. src/liblzma/api/lzma/container.h | 4 ++++ 1 file changed, 4 insertions(+) commit e4fc1d2f9571fba79ce383595be2ea2a9257def0 Author: Lasse Collin Date: 2014-11-28 20:07:18 +0200 Update INSTALL about a "make check" failure in test_scripts.sh. INSTALL | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) commit 34f9e40a0a0c3bd2c2730cdb9cd550bbb8a3f2fe Author: Lasse Collin Date: 2014-11-26 20:12:27 +0200 Remove LZMA_UNSTABLE macro. src/liblzma/api/lzma/container.h | 4 ---- src/liblzma/common/common.h | 2 -- src/xz/private.h | 1 - 3 files changed, 7 deletions(-) commit 6d9c0ce9f2677b159e32b224aba5b535b304a705 Author: Lasse Collin Date: 2014-11-26 20:10:33 +0200 liblzma: Update lzma_stream_encoder_mt() API docs. src/liblzma/api/lzma/container.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 2301f3f05dd9742f42cda8f0f318864f5dc39ab3 Author: Lasse Collin Date: 2014-11-25 12:32:05 +0200 liblzma: Verify the filter chain in threaded encoder initialization. This way an invalid filter chain is detected at the Stream encoder initialization instead of delaying it to the first call to lzma_code() which triggers the initialization of the actual filter encoder(s). src/liblzma/common/stream_encoder_mt.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit 107a263d5bb63cd3593fd6a5c938706539f84523 Author: Lasse Collin Date: 2014-11-17 19:11:49 +0200 Build: Update m4/ax_pthread.m4 from Autoconf Archive. m4/ax_pthread.m4 | 71 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 24 deletions(-) commit b13a781833399ff5726cfc997f3cb2f0acbdbf31 Author: Lasse Collin Date: 2014-11-17 18:52:21 +0200 Build: Replace obsolete AC_HELP_STRING with AS_HELP_STRING. configure.ac | 36 ++++++++++++++++++------------------ m4/tuklib_integer.m4 | 2 +- 2 files changed, 19 insertions(+), 19 deletions(-) commit 542cac122ed3550148a2af0033af22b757491378 Author: Lasse Collin Date: 2014-11-17 18:43:19 +0200 Build: Fix Autoconf warnings about escaped backquotes. Thanks to Daniel Richard G. for pointing out that it's good to sometimes run autoreconf -fi with -Wall. configure.ac | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit 7b03a15cea8cd4f19ed680b51c4bcbae3ce4142f Author: Lasse Collin Date: 2014-11-10 18:54:40 +0200 xzdiff: Use mkdir if mktemp isn't available. src/scripts/xzdiff.in | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) commit f8c13e5e3609581d5dd9f8777985ca07f2390ad7 Author: Lasse Collin Date: 2014-11-10 18:45:01 +0200 xzdiff: Create a temporary directory to hold a temporary file. This avoids the possibility of "File name too long" when creating a temp file when the input file name is very long. This also means that other users on the system can no longer see the input file names in /tmp (or whatever $TMPDIR is) since the temporary directory will have a generic name. This usually doesn't matter since on many systems one can see the arguments given to all processes anyway. The number X chars to mktemp where increased from 6 to 10. Note that with some shells temp files or dirs won't be used at all. src/scripts/xzdiff.in | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 7716dcf9df7f457500cb657314e7a9aea5fedb06 Author: Lasse Collin Date: 2014-11-10 15:38:47 +0200 liblzma: Fix lzma_mt.preset in lzma_stream_encoder_mt_memusage(). It read the filter chain from a wrong variable. This is a similar bug that was fixed in 9494fb6d0ff41c585326f00aa8f7fe58f8106a5e. src/liblzma/common/stream_encoder_mt.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 230fa4a605542c84b4178a57381695a0af4e779b Author: Lasse Collin Date: 2014-11-10 14:49:55 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 4e4ae08bc7c1711e399c9f2d26eb375d39d08101 Author: Lasse Collin Date: 2014-10-29 21:28:25 +0200 Update .gitignore files. .gitignore | 2 ++ m4/.gitignore | 3 +++ 2 files changed, 5 insertions(+) commit c923b140b27d1a055db6284e10fd546ad1a7fcdb Author: Lasse Collin Date: 2014-10-29 21:15:35 +0200 Build: Prepare to support Automake's subdir-objects. Due to a bug in Automake, subdir-objects won't be enabled for now. http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17354 Thanks to Daniel Richard G. for the original patches. configure.ac | 7 ++++++- src/Makefile.am | 22 +++++++++++++++++++++- src/liblzma/Makefile.am | 4 ++-- src/lzmainfo/Makefile.am | 4 ++-- src/xz/Makefile.am | 10 +++++----- src/xzdec/Makefile.am | 8 ++++---- 6 files changed, 40 insertions(+), 15 deletions(-) commit 08c2aa16bea0df82828f665d51fba2e0a5e8997f Author: Lasse Collin Date: 2014-10-24 20:09:29 +0300 Translations: Update the Italian translation. Thanks to Milo Casagrande. po/it.po | 452 ++++++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 275 insertions(+), 177 deletions(-) commit 2f9f61aa83539c54ff6c118a2693890f0519b3dd Author: Lasse Collin Date: 2014-10-18 18:51:45 +0300 Translations: Update the Polish translation. Thanks to Jakub Bogusz. po/pl.po | 332 ++++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 214 insertions(+), 118 deletions(-) commit 4f9d233f67aea25e532824d11b7642cf7dee7a76 Author: Andre Noll Date: 2014-10-14 17:30:30 +0200 l10n: de.po: Change translator email address. Although the old address is still working, the new one should be preferred. So this commit changes all three places in de.po accordingly. Signed-off-by: Andre Noll po/de.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 00502b2bedad43f0cc167ac17ae0608837ee196b Author: Andre Noll Date: 2014-10-14 17:30:29 +0200 l10n: de.po: Update German translation Signed-off-by: Andre Noll po/de.po | 531 +++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 281 insertions(+), 250 deletions(-) commit 706b0496753fb609e69f1570ec603f11162189d1 Author: Andre Noll Date: 2014-10-14 17:30:28 +0200 l10n: de.po: Fix typo: Schießen -> Schließen. That's a funny one since "schießen" means to shoot :) Signed-off-by: Andre Noll po/de.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7c32e6a935c3d7ee366abad1679bd5f322f0c7d4 Author: Lasse Collin Date: 2014-10-09 19:42:26 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 076258cc458f1e705041ac7a729b15ffe8c5214a Author: Lasse Collin Date: 2014-10-09 19:41:51 +0300 Add support for AmigaOS/AROS to tuklib_physmem(). Thanks to Fredrik Wikstrom. m4/tuklib_physmem.m4 | 3 ++- src/common/tuklib_physmem.c | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) commit efa7b0a210e1baa8e128fc98c5443a944c39ad24 Author: Lasse Collin Date: 2014-10-09 18:42:14 +0300 xzgrep: Avoid passing both -q and -l to grep. The behavior of grep -ql varies: - GNU grep behaves like grep -q. - OpenBSD grep behaves like grep -l. POSIX doesn't make it 100 % clear what behavior is expected. Anyway, using both -q and -l at the same time makes no sense so both options simply should never be used at the same time. Thanks to Christian Weisgerber. src/scripts/xzgrep.in | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 9c5f76098c9986b48d2fc574a0b764f4cde0c538 Author: Trần Ngọc Quân Date: 2014-09-25 09:22:45 +0700 l10n: vi.po: Update Vietnamese translation Signed-off-by: Trần Ngọc Quân po/vi.po | 136 +++++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 84 insertions(+), 52 deletions(-) commit c4911f2db36d811896c73c008b4218d8fa9a4730 Author: Lasse Collin Date: 2014-09-25 18:38:48 +0300 Build: Detect supported compiler warning flags better. Clang and nowadays also GCC accept any -Wfoobar option but then may give a warning that an unknown warning option was specified. To avoid adding unsupported warning options, the options are now tested with -Werror. Thanks to Charles Diza. configure.ac | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 76e75522ed6f5c228d55587dee5a997893f6e474 Author: Lasse Collin Date: 2014-09-20 21:01:21 +0300 Update NEWS for 5.0.7. NEWS | 11 +++++++++++ 1 file changed, 11 insertions(+) commit d62028b4c1174fc67b6929f126f5eb24c018c700 Author: Lasse Collin Date: 2014-09-20 19:42:56 +0300 liblzma: Fix a portability problem in Makefile.am. POSIX supports $< only in inference rules (suffix rules). Using it elsewhere is a GNU make extension and doesn't work e.g. with OpenBSD make. Thanks to Christian Weisgerber for the patch. src/liblzma/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c35de31d4283edad3e57d37ffe939406542cb7bb Author: Lasse Collin Date: 2014-09-14 21:54:09 +0300 Bump the version number to 5.1.4beta. src/liblzma/api/lzma/version.h | 4 ++-- src/liblzma/liblzma.map | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit e9e097e22cacdaa23e5414fea7913535449cb340 Author: Lasse Collin Date: 2014-09-14 21:50:13 +0300 Update NEWS for 5.0.6 and 5.1.4beta. NEWS | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) commit 642f856bb8562ab66704b1e01ac7bc08b6d0a663 Author: Lasse Collin Date: 2014-09-14 21:02:41 +0300 Update TODO. TODO | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) commit 6b5e3b9eff5b8cedb2aac5f524d4d60fc8a48124 Author: Lasse Collin Date: 2014-08-05 22:32:36 +0300 xz: Add --ignore-check. src/xz/args.c | 7 +++++++ src/xz/args.h | 1 + src/xz/coder.c | 10 +++++++++- src/xz/message.c | 2 ++ src/xz/xz.1 | 19 +++++++++++++++++++ 5 files changed, 38 insertions(+), 1 deletion(-) commit 9adbc2ff373f979c917cdfd3679ce0ebd59f1040 Author: Lasse Collin Date: 2014-08-05 22:15:07 +0300 liblzma: Add support for LZMA_IGNORE_CHECK. src/liblzma/api/lzma/container.h | 24 ++++++++++++++++++++++++ src/liblzma/common/common.h | 1 + src/liblzma/common/stream_decoder.c | 14 ++++++++++++-- 3 files changed, 37 insertions(+), 2 deletions(-) commit 0e0f34b8e4f1c60ecaec15c2105982381cc9c3e6 Author: Lasse Collin Date: 2014-08-05 22:03:30 +0300 liblzma: Add support for lzma_block.ignore_check. Note that this slightly changes how lzma_block_header_decode() has been documented. Earlier it said that the .version is set to the lowest required value, but now it says that the .version field is kept unchanged if possible. In practice this doesn't affect any old code, because before this commit the only possible .version was 0. src/liblzma/api/lzma/block.h | 50 ++++++++++++++++++++++++------- src/liblzma/common/block_buffer_encoder.c | 2 +- src/liblzma/common/block_decoder.c | 18 ++++++++--- src/liblzma/common/block_encoder.c | 2 +- src/liblzma/common/block_header_decoder.c | 12 ++++++-- src/liblzma/common/block_header_encoder.c | 2 +- src/liblzma/common/block_util.c | 2 +- 7 files changed, 68 insertions(+), 20 deletions(-) commit 71e1437ab585b46f7a25f5a131557d3d1c0cbaa2 Author: Lasse Collin Date: 2014-08-04 19:25:58 +0300 liblzma: Use lzma_memcmplen() in the BT3 match finder. I had missed this when writing the commit 5db75054e900fa06ef5ade5f2c21dffdd5d16141. Thanks to Jun I Jin. src/liblzma/lz/lz_encoder_mf.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit 41dc9ea06e1414ebe8ef52afc8fc15b6e3282b04 Author: Lasse Collin Date: 2014-08-04 00:25:44 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 5dcffdbcc23a68abc3ac3539b30be71bc9b5af84 Author: Lasse Collin Date: 2014-08-03 21:32:25 +0300 liblzma: SHA-256: Optimize the Maj macro slightly. The Maj macro is used where multiple things are added together, so making Maj a sum of two expressions allows some extra freedom for the compiler to schedule the instructions. I learned this trick from . src/liblzma/check/sha256.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a9477d1e0c6fd0e47e637d051e7b9e2a5d9af517 Author: Lasse Collin Date: 2014-08-03 21:08:12 +0300 liblzma: SHA-256: Optimize the way rotations are done. This looks weird because the rotations become sequential, but it helps quite a bit on both 32-bit and 64-bit x86: - It requires fewer instructions on two-operand instruction sets like x86. - It requires one register less which matters especially on 32-bit x86. I hope this doesn't hurt other archs. I didn't invent this idea myself, but I don't remember where I saw it first. src/liblzma/check/sha256.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) commit 5a76c7c8ee9a0afbeedb1c211db9224260404347 Author: Lasse Collin Date: 2014-08-03 20:38:13 +0300 liblzma: SHA-256: Remove the GCC #pragma that became unneeded. The unrolling in the previous commit should avoid the situation where a compiler may think that an uninitialized variable might be accessed. src/liblzma/check/sha256.c | 5 ----- 1 file changed, 5 deletions(-) commit 9a096f8e57509775c331950b8351bbca77bdcfa8 Author: Lasse Collin Date: 2014-08-03 20:33:38 +0300 liblzma: SHA-256: Unroll a little more. This way a branch isn't needed for each operation to choose between blk0 and blk2, and still the code doesn't grow as much as it would with full unrolling. src/liblzma/check/sha256.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) commit bc7650d87bf27f85f1a2a806dc2db1780e09e6a5 Author: Lasse Collin Date: 2014-08-03 19:56:43 +0300 liblzma: SHA-256: Do the byteswapping without a temporary buffer. src/liblzma/check/sha256.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) commit 544aaa3d13554e8640f9caf7db717a96360ec0f6 Author: Lasse Collin Date: 2014-07-25 22:38:28 +0300 liblzma: Use lzma_memcmplen() in normal mode of LZMA. Two locations were not changed yet because the simplest change assumes that the initial "len" may be greater than "limit". src/liblzma/lzma/lzma_encoder_optimum_normal.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) commit f48fce093b07aeda95c18850f5e086d9f2383380 Author: Lasse Collin Date: 2014-07-25 22:30:38 +0300 liblzma: Simplify LZMA fast mode code by using memcmp(). src/liblzma/lzma/lzma_encoder_optimum_fast.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) commit 6bf5308e34e23dede5b301b1b9b4f131dacd9218 Author: Lasse Collin Date: 2014-07-25 22:29:49 +0300 liblzma: Use lzma_memcmplen() in fast mode of LZMA. src/liblzma/lzma/lzma_encoder_optimum_fast.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 353212137e51e45b105a3a3fc2e6879f1cf0d492 Author: Lasse Collin Date: 2014-07-25 21:16:23 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 5db75054e900fa06ef5ade5f2c21dffdd5d16141 Author: Lasse Collin Date: 2014-07-25 21:15:07 +0300 liblzma: Use lzma_memcmplen() in the match finders. This doesn't change the match finder output. src/liblzma/lz/lz_encoder.c | 13 ++++++++++++- src/liblzma/lz/lz_encoder_mf.c | 33 +++++++++++---------------------- 2 files changed, 23 insertions(+), 23 deletions(-) commit e1c8f1d01f4a4e2136173edab2dc63c71ef038f4 Author: Lasse Collin Date: 2014-07-25 20:57:20 +0300 liblzma: Add lzma_memcmplen() for fast memory comparison. This commit just adds the function. Its uses will be in separate commits. This hasn't been tested much yet and it's perhaps a bit early to commit it but if there are bugs they should get found quite quickly. Thanks to Jun I Jin from Intel for help and for pointing out that string comparison needs to be optimized in liblzma. configure.ac | 13 +++ src/liblzma/common/Makefile.inc | 1 + src/liblzma/common/memcmplen.h | 170 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 184 insertions(+) commit 765735cf52e5123586e74a51b9c073b5257f631f Author: Lasse Collin Date: 2014-07-12 21:10:09 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 59da01785ef66c7e62f36e70ca808fd2824bb995 Author: Lasse Collin Date: 2014-07-12 20:06:08 +0300 Translations: Add Vietnamese translation. Thanks to Trần Ngọc Quân. po/LINGUAS | 1 + po/vi.po | 1007 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1008 insertions(+) commit 17215f751c354852700e7f8592ccf319570a0721 Author: Lasse Collin Date: 2014-06-29 20:54:14 +0300 xz: Update the help message of a few options. Updated: --threads, --block-size, and --block-list Added: --flush-timeout src/xz/message.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) commit 96864a6ddf91ad693d102ea165f3d7918744d582 Author: Lasse Collin Date: 2014-06-18 22:07:06 +0300 xz: Use lzma_cputhreads() instead of own copy of tuklib_cpucores(). src/xz/Makefile.am | 1 - src/xz/hardware.c | 12 +++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) commit a115cc3748482e277f42a968baa3cd266f031dba Author: Lasse Collin Date: 2014-06-18 22:04:24 +0300 liblzma: Add lzma_cputhreads(). src/liblzma/Makefile.am | 8 +++++++- src/liblzma/api/lzma/hardware.h | 14 ++++++++++++++ src/liblzma/common/Makefile.inc | 1 + src/liblzma/common/hardware_cputhreads.c | 22 ++++++++++++++++++++++ src/liblzma/liblzma.map | 1 + 5 files changed, 45 insertions(+), 1 deletion(-) commit 3ce3e7976904fbab4e6482bafa442856f77a51fa Author: Lasse Collin Date: 2014-06-18 19:11:52 +0300 xz: Check for filter chain compatibility for --flush-timeout. This avoids LZMA_PROG_ERROR from lzma_code() with filter chains that don't support LZMA_SYNC_FLUSH. src/xz/coder.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) commit 381ac14ed79e5d38809f251705be8b3193bba417 Author: Lasse Collin Date: 2014-06-13 19:21:54 +0300 xzgrep: List xzgrep_expected_output in tests/Makefile.am. tests/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 4244b65b06d5ecaf6f9dd0387ac7e3166bd2364e Author: Lasse Collin Date: 2014-06-13 18:58:22 +0300 xzgrep: Improve the test script. Now it should be close to the functionality of the original version by Pavel Raiskup. tests/Makefile.am | 3 ++- tests/test_scripts.sh | 24 ++++++++++++++---------- tests/xzgrep_expected_output | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 11 deletions(-) commit 1e60f2c0a0ee6c18b02943ce56214799a70aac26 Author: Lasse Collin Date: 2014-06-11 21:03:25 +0300 xzgrep: Add a test for the previous fix. This is a simplified version of Pavel Raiskup's original patch. tests/test_scripts.sh | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) commit ceca37901783988204caaf40dff4623d535cc789 Author: Lasse Collin Date: 2014-06-11 20:43:28 +0300 xzgrep: exit 0 when at least one file matches. Mimic the original grep behavior and return exit_success when at least one xz compressed file matches given pattern. Original bugreport: https://bugzilla.redhat.com/show_bug.cgi?id=1108085 Thanks to Pavel Raiskup for the patch. src/scripts/xzgrep.in | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) commit 8c19216baccb92d011694590df8a1262da2e980c Author: Lasse Collin Date: 2014-06-09 21:21:24 +0300 xz: Force single-threaded mode when --flush-timeout is used. src/xz/coder.c | 11 +++++++++++ 1 file changed, 11 insertions(+) commit 87f1a24810805187d7bbc8ac5512e7eec307ddf5 Author: Lasse Collin Date: 2014-05-25 22:05:39 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit da1718f266fcfc091e7bf08aae1bc986d0e6cc6b Author: Lasse Collin Date: 2014-05-25 21:45:56 +0300 liblzma: Use lzma_alloc_zero() in LZ encoder initialization. This avoids a memzero() call for a newly-allocated memory, which can be expensive when encoding small streams with an over-sized dictionary. To avoid using lzma_alloc_zero() for memory that doesn't need to be zeroed, lzma_mf.son is now allocated separately, which requires handling it separately in normalize() too. Thanks to Vincenzo Innocente for reporting the problem. src/liblzma/lz/lz_encoder.c | 84 ++++++++++++++++++++++-------------------- src/liblzma/lz/lz_encoder.h | 2 +- src/liblzma/lz/lz_encoder_mf.c | 31 +++++++++------- 3 files changed, 62 insertions(+), 55 deletions(-) commit 28af24e9cf2eb259997c85dce13d4c97b3daa47a Author: Lasse Collin Date: 2014-05-25 19:25:57 +0300 liblzma: Add the internal function lzma_alloc_zero(). src/liblzma/common/common.c | 21 +++++++++++++++++++++ src/liblzma/common/common.h | 6 ++++++ 2 files changed, 27 insertions(+) commit ed9ac85822c490e34b68c259afa0b385d21d1c40 Author: Lasse Collin Date: 2014-05-08 18:03:09 +0300 xz: Fix uint64_t vs. size_t which broke 32-bit build. Thanks to Christian Hesse. src/xz/coder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d716acdae3fa7996f9e68a7bac012e6d8d13dd02 Author: Lasse Collin Date: 2014-05-04 11:09:11 +0300 Docs: Update comments to refer to lzma/lzma12.h in example programs. doc/examples/03_compress_custom.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 4d5b7b3fda31241ca86ed35e08e73f776ee916e0 Author: Lasse Collin Date: 2014-05-04 11:07:17 +0300 liblzma: Rename the private API header lzma/lzma.h to lzma/lzma12.h. It can be confusing that two header files have the same name. The public API file is still lzma.h. src/liblzma/api/Makefile.am | 2 +- src/liblzma/api/lzma.h | 2 +- src/liblzma/api/lzma/{lzma.h => lzma12.h} | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 1555a9c5664afc7893a2b75e9970105437f01ef1 Author: Lasse Collin Date: 2014-04-25 17:53:42 +0300 Build: Fix the combination of --disable-xzdec --enable-lzmadec. In this case "make install" could fail if the man page directory didn't already exist at the destination. If it did exist, a dangling symlink was created there. Now the link is omitted instead. This isn't the best fix but it's better than the old behavior. src/xzdec/Makefile.am | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit 56056571df3377eaa6ae6233b3ccc5d72e81d43d Author: Lasse Collin Date: 2014-04-25 17:44:26 +0300 Build: Add --disable-doc to configure. INSTALL | 6 ++++++ Makefile.am | 2 ++ configure.ac | 6 ++++++ 3 files changed, 14 insertions(+) commit 6de61d8721097a6214810841aa85b08e303ac538 Author: Lasse Collin Date: 2014-04-24 18:06:24 +0300 Update INSTALL. Add a note about failing "make check". The source of the problem should be fixed in libtool (if it really is a libtool bug and not mine) but I'm unable to spend time on that for now. Thanks to Nelson H. F. Beebe for reporting the issue. Add a note about a possible need to run "ldconfig" after "make install". INSTALL | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) commit 54df428799a8d853639b753d0e6784694d73eb3e Author: Lasse Collin Date: 2014-04-09 17:26:10 +0300 xz: Rename a variable to avoid a namespace collision on Solaris. I don't know the details but I have an impression that there's no problem in practice if using GCC since people have built xz with GCC (without patching xz), but renaming the variable cannot hurt either. Thanks to Mark Ashley. src/xz/signals.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) commit 5876ca27daa1429676b1160007d9688266907f00 Author: Lasse Collin Date: 2014-01-29 20:19:41 +0200 Docs: Add example program for threaded encoding. I didn't add -DLZMA_UNSTABLE to Makefile so one has to specify it manually as long as LZMA_UNSTABLE is needed. doc/examples/04_compress_easy_mt.c | 184 +++++++++++++++++++++++++++++++++++++ doc/examples/Makefile | 3 +- 2 files changed, 186 insertions(+), 1 deletion(-) commit 9494fb6d0ff41c585326f00aa8f7fe58f8106a5e Author: Lasse Collin Date: 2014-01-29 20:13:51 +0200 liblzma: Fix lzma_mt.preset not working with lzma_stream_encoder_mt(). It read the filter chain from a wrong variable. src/liblzma/common/stream_encoder_mt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 673a4cb53de3a715685cb1b836da57a3c7dcd43c Author: Lasse Collin Date: 2014-01-20 11:20:40 +0200 liblzma: Fix typo in a comment. src/liblzma/api/lzma/block.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ad96a871a1470eb76d6233d3890ce9338047b7a3 Author: Lasse Collin Date: 2014-01-12 19:38:43 +0200 Windows: Add config.h for building liblzma with MSVC 2013. This is for building liblzma. Building xz tool too requires a little more work. Maybe it will be supported, but for most MSVC users it's enough to be able to build liblzma. C99 support in MSVC 2013 is almost usable which is a big improvement over earlier versions. It's "almost" because there's a dumb bug that breaks mixed declarations after an "if" statements unless the "if" statement uses braces: https://connect.microsoft.com/VisualStudio/feedback/details/808650/visual-studio-2013-c99-compiler-bug https://connect.microsoft.com/VisualStudio/feedback/details/808472/c99-support-of-mixed-declarations-and-statements-fails-with-certain-types-and-constructs Hopefully it will get fixed. Then liblzma should be compilable with MSVC 2013 without patching. windows/config.h | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) commit 3d5c090872fab4212b57c290e8ed4d02c78c1737 Author: Lasse Collin Date: 2014-01-12 17:41:14 +0200 xz: Fix a comment. src/xz/coder.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 69fd4e1c932c7975476a0143c86e45d81b60d3f9 Author: Lasse Collin Date: 2014-01-12 17:04:33 +0200 Windows: Add MSVC defines for inline and restrict keywords. src/common/sysdefs.h | 10 ++++++++++ 1 file changed, 10 insertions(+) commit a19d9e8575ee6647cd9154cf1f20203f1330485f Author: Lasse Collin Date: 2014-01-12 16:44:52 +0200 liblzma: Avoid C99 compound literal arrays. MSVC 2013 doesn't like them. Maybe they aren't so good for readability either since many aren't used to them. src/liblzma/lzma/lzma_encoder_presets.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit e28528f1c867b2ed4ac91195ad08efb9bb8a6263 Author: Lasse Collin Date: 2014-01-12 12:50:30 +0200 liblzma: Remove a useless C99ism from sha256.c. Unsurprisingly it makes no difference in compiled output. src/liblzma/check/sha256.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5ad1effc45adfb7dabc9a98e79736077e6b7e2d5 Author: Lasse Collin Date: 2014-01-12 12:17:08 +0200 xz: Fix use of wrong variable. Since the only call to suffix_set() uses optarg as the argument, fixing this bug doesn't change the behavior of the program. src/xz/suffix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3e62c68d75b5a3fdd46dbb34bb335d73289860d5 Author: Lasse Collin Date: 2014-01-12 12:11:36 +0200 Fix typos in comments. src/common/mythread.h | 2 +- src/liblzma/check/crc32_fast.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit e90ea601fb72867ec04adf456cbe4bf9520fd412 Author: Lasse Collin Date: 2013-11-26 18:20:16 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit b22e94d8d15764416354e04729382a7371ae2c30 Author: Lasse Collin Date: 2013-11-26 18:20:09 +0200 liblzma: Document the need for block->check for lzma_block_header_decode(). Thanks to Tomer Chachamu. src/liblzma/api/lzma/block.h | 3 +++ 1 file changed, 3 insertions(+) commit d1cd8b1cb824b72421d1ee370e628024d2fcbec4 Author: Lasse Collin Date: 2013-11-12 16:38:57 +0200 xz: Update the man page about --block-size and --block-list. src/xz/xz.1 | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) commit 76be7c612e6bcc38724488ccc3b8bcb1cfec9f0a Author: Lasse Collin Date: 2013-11-12 16:30:53 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit dd750acbe2259d75444ef0f8da2d4bacc90d7afc Author: Lasse Collin Date: 2013-11-12 16:29:48 +0200 xz: Make --block-list and --block-size work together in single-threaded. Previously, --block-list and --block-size only worked together in threaded mode. Boundaries are specified by --block-list, but --block-size specifies the maximum size for a Block. Now this works in single-threaded mode too. Thanks to James M Leddy for the original patch. src/xz/coder.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 75 insertions(+), 15 deletions(-) commit ae222fe9805d0161d022d75ba8485dab8bf6d7d5 Author: Lasse Collin Date: 2013-10-26 13:26:14 +0300 Bump the version number to 5.1.3alpha. src/liblzma/api/lzma/version.h | 2 +- src/liblzma/liblzma.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 2193837a6a597cd3bf4e9ddf49421a5697d8e155 Author: Lasse Collin Date: 2013-10-26 13:25:02 +0300 Update NEWS for 5.1.3alpha. NEWS | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) commit ed48e75e2763876173aef8902da407a8eb28854b Author: Lasse Collin Date: 2013-10-26 12:47:04 +0300 Update TODO. TODO | 4 ---- 1 file changed, 4 deletions(-) commit 841da0352d79a56a44796a4c39163429c9f039a3 Author: Lasse Collin Date: 2013-10-25 22:41:28 +0300 xz: Document behavior of --block-list with threads. This needs to be updated before 5.2.0. src/xz/xz.1 | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) commit 56feb8665b78c1032aabd53c619c62af51defe64 Author: Lasse Collin Date: 2013-10-22 20:03:12 +0300 xz: Document --flush-timeout=TIMEOUT on the man page. src/xz/xz.1 | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) commit ba413da1d5bb3324287cf3174922acd921165971 Author: Lasse Collin Date: 2013-10-22 19:51:55 +0300 xz: Take advantage of LZMA_FULL_BARRIER with --block-list. Now if --block-list is used in threaded mode, the encoder won't need to flush at each Block boundary specified via --block-list. This improves performance a lot, making threading helpful with --block-list. The flush timer was reset after LZMA_FULL_FLUSH but since LZMA_FULL_BARRIER doesn't flush, resetting the timer is no longer done. src/xz/coder.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) commit 0cd45fc2bc5537de287a0bc005e2d67467a92148 Author: Lasse Collin Date: 2013-10-02 20:05:23 +0300 liblzma: Support LZMA_FULL_FLUSH and _BARRIER in threaded encoder. Now --block-list=SIZES works with in the threaded mode too, although the performance is still bad due to the use of LZMA_FULL_FLUSH instead of the new LZMA_FULL_BARRIER. src/liblzma/common/stream_encoder_mt.c | 55 ++++++++++++++++++++++++---------- 1 file changed, 39 insertions(+), 16 deletions(-) commit 97bb38712f414fabecca908af2e38a12570293fd Author: Lasse Collin Date: 2013-10-02 12:55:11 +0300 liblzma: Add LZMA_FULL_BARRIER support to single-threaded encoder. In the single-threaded encoder LZMA_FULL_BARRIER is simply an alias for LZMA_FULL_FLUSH. src/liblzma/api/lzma/base.h | 37 ++++++++++++++++++++++++++++++------- src/liblzma/common/common.c | 17 +++++++++++++++-- src/liblzma/common/common.h | 7 ++++++- src/liblzma/common/stream_encoder.c | 4 +++- 4 files changed, 54 insertions(+), 11 deletions(-) commit fef0c6b410c08e581c9178700a4e7599f0895ff9 Author: Lasse Collin Date: 2013-09-17 11:57:51 +0300 liblzma: Add block_buffer_encoder.h into Makefile.inc. This should have been in b465da5988dd59ad98fda10c2e4ea13d0b9c73bc. src/liblzma/common/Makefile.inc | 1 + 1 file changed, 1 insertion(+) commit 8083e03291b6d21c0f538163e187b4e8cd5594e4 Author: Lasse Collin Date: 2013-09-17 11:55:38 +0300 xz: Add a missing test for TUKLIB_DOSLIKE. src/xz/file_io.c | 2 ++ 1 file changed, 2 insertions(+) commit 6b44b4a775fe29ecc7bcb7996e086e3bc09e5fd0 Author: Lasse Collin Date: 2013-09-17 11:52:28 +0300 Add native threading support on Windows. Now liblzma only uses "mythread" functions and types which are defined in mythread.h matching the desired threading method. Before Windows Vista, there is no direct equivalent to pthread condition variables. Since this package doesn't use pthread_cond_broadcast(), pre-Vista threading can still be kept quite simple. The pre-Vista code doesn't use anything that wasn't already available in Windows 95, so the binaries should run even on Windows 95 if someone happens to care. INSTALL | 41 ++- configure.ac | 118 ++++++-- src/common/mythread.h | 513 ++++++++++++++++++++++++++------- src/liblzma/common/stream_encoder_mt.c | 83 +++--- src/xz/coder.c | 8 +- windows/README-Windows.txt | 2 +- windows/build.bash | 23 +- 7 files changed, 573 insertions(+), 215 deletions(-) commit ae0ab74a88d5b9b15845f1d9a24ade4349a54f9f Author: Lasse Collin Date: 2013-09-11 14:40:35 +0300 Build: Remove a comment about Automake 1.10 from configure.ac. The previous commit supports silent rules and that requires Automake 1.11. configure.ac | 2 -- 1 file changed, 2 deletions(-) commit 72975df6c8c59aaf849138ab3606e8fb6970596a Author: Lasse Collin Date: 2013-09-09 20:37:03 +0300 Build: Create liblzma.pc in a src/liblzma/Makefile.am. Previously it was done in configure, but doing that goes against the Autoconf manual. Autoconf requires that it is possible to override e.g. prefix after running configure and that doesn't work correctly if liblzma.pc is created by configure. A potential downside of this change is that now e.g. libdir in liblzma.pc is a standalone string instead of being defined via ${prefix}, so if one overrides prefix when running pkg-config the libdir won't get the new value. I don't know if this matters in practice. Thanks to Vincent Torri. configure.ac | 1 - src/liblzma/Makefile.am | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) commit 1c2b6e7e8382ed390f53e140f160488bb2205ecc Author: Lasse Collin Date: 2013-08-04 15:24:09 +0300 Fix the previous commit which broke the build. Apparently I didn't even compile-test the previous commit. Thanks to Christian Hesse. src/common/tuklib_cpucores.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 124eb69c7857f618b4807588c51bc9ba21bf8691 Author: Lasse Collin Date: 2013-08-03 13:52:58 +0300 Windows: Add Windows support to tuklib_cpucores(). It is used for Cygwin too. I'm not sure if that is a good or bad idea. Thanks to Vincent Torri. m4/tuklib_cpucores.m4 | 19 +++++++++++++++++-- src/common/tuklib_cpucores.c | 13 ++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) commit eada8a875ce3fd521cb42e4ace2624d3d49c5f35 Author: Anders F Bjorklund Date: 2013-08-02 15:59:46 +0200 macosx: separate liblzma package macosx/build.sh | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) commit be0100d01ca6a75899d051bee00acf17e6dc0c15 Author: Anders F Bjorklund Date: 2013-08-02 15:58:44 +0200 macosx: set minimum to leopard macosx/build.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) commit 416729e2d743f4b2fe9fd438eedeb98adce033c3 Author: Anders F Bjorklund Date: 2011-08-07 13:13:30 +0200 move configurables into variables macosx/build.sh | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) commit 16581080e5f29f9a4e49efece21c5bf572323acc Author: Lasse Collin Date: 2013-07-15 14:08:41 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 3e2b198ba37b624efd9c7caee2a435dc986b46c6 Author: Lasse Collin Date: 2013-07-15 14:08:02 +0300 Build: Fix the detection of missing CRC32. Thanks to Vincent Torri. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit dee6ad3d5915422bc30a6821efeacaeb8ca8ef00 Author: Lasse Collin Date: 2013-07-04 14:18:46 +0300 xz: Add preliminary support for --flush-timeout=TIMEOUT. When --flush-timeout=TIMEOUT is used, xz will use LZMA_SYNC_FLUSH if read() would block and at least TIMEOUT milliseconds has elapsed since the previous flush. This can be useful in realtime-like use cases where the data is simultanously decompressed by another process (possibly on a different computer). If new uncompressed input data is produced slowly, without this option xz could buffer the data for a long time until it would become decompressible from the output. If TIMEOUT is 0, the feature is disabled. This is the default. This commit affects the compression side. Using xz for the decompression side for the above purpose doesn't work yet so well because there is quite a bit of input and output buffering when decompressing. The --long-help or man page were not updated yet. The details of this feature may change. src/xz/args.c | 7 +++++++ src/xz/coder.c | 46 +++++++++++++++++++++++++++++++++++----------- src/xz/file_io.c | 46 ++++++++++++++++++++++++++++++++++++---------- 3 files changed, 78 insertions(+), 21 deletions(-) commit fa381acaf9a29a8114e1c0a97de99bab9adb014e Author: Lasse Collin Date: 2013-07-04 13:41:03 +0300 xz: Don't set src_eof=true after an I/O error because it's useless. src/xz/file_io.c | 3 --- 1 file changed, 3 deletions(-) commit ea00545beace5b950f709ec21e46878e0f448678 Author: Lasse Collin Date: 2013-07-04 13:25:11 +0300 xz: Fix the test when to read more input. Testing for end of file was no longer correct after full flushing became possible with --block-size=SIZE and --block-list=SIZES. There was no bug in practice though because xz just made a few unneeded zero-byte reads. src/xz/coder.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 736903c64bef394c06685d79908e397bcb08b88f Author: Lasse Collin Date: 2013-07-04 12:51:57 +0300 xz: Move some of the timing code into mytime.[hc]. This switches units from microseconds to milliseconds. New clock_gettime(CLOCK_MONOTONIC) will be used if available. There is still a fallback to gettimeofday(). src/xz/Makefile.am | 2 ++ src/xz/coder.c | 5 +++ src/xz/message.c | 54 +++++++++------------------------ src/xz/mytime.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/xz/mytime.h | 47 ++++++++++++++++++++++++++++ src/xz/private.h | 1 + 6 files changed, 158 insertions(+), 40 deletions(-) commit 24edf8d807e24ffaa1e793114d94cca3b970027d Author: Lasse Collin Date: 2013-07-01 14:35:03 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit c0627b3fceacfa1ed162f5f55235360ea26f569a Author: Lasse Collin Date: 2013-07-01 14:34:11 +0300 xz: Silence a warning seen with _FORTIFY_SOURCE=2. Thanks to Christian Hesse. src/xz/file_io.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit 1936718bb38ee394bd89836fdd4eabc0beb02443 Author: Lasse Collin Date: 2013-06-30 19:40:11 +0300 Update NEWS for 5.0.5. NEWS | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) commit a37ae8b5eb6093a530198f109c6f7a538c80ecf0 Author: Lasse Collin Date: 2013-06-30 18:02:27 +0300 Man pages: Use similar syntax for synopsis as in xz. The man pages of lzmainfo, xzmore, and xzdec had similar constructs as the man page of xz had before the commit eb6ca9854b8eb9fbf72497c1cf608d6b19d2d494. Eric S. Raymond didn't mention these man pages in his bug report, but it's nice to be consistent. src/lzmainfo/lzmainfo.1 | 4 ++-- src/scripts/xzmore.1 | 6 +++--- src/xzdec/xzdec.1 | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) commit cdba9ddd870ae72fd6219a125662c20ec997f86c Author: Lasse Collin Date: 2013-06-29 15:59:13 +0300 xz: Use non-blocking I/O for the output file. Now both reading and writing should be without race conditions with signals. They might still be signal handling issues left. Signals are blocked during many operations to avoid EINTR but it may cause problems e.g. if writing to stderr blocks when trying to display an error message. src/xz/file_io.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 8 deletions(-) commit e61a5c95da3fe31281d959e5e842885a8ba2b5bd Author: Lasse Collin Date: 2013-06-28 23:56:17 +0300 xz: Fix return value type in io_write_buf(). It didn't affect the behavior of the code since -1 becomes true anyway. src/xz/file_io.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9dc319eabb34a826f4945f91c71620f14a60e9e2 Author: Lasse Collin Date: 2013-06-28 23:48:05 +0300 xz: Use the self-pipe trick to avoid a race condition with signals. It is possible that a signal to set user_abort arrives right before a blocking system call is made. In this case the call may block until another signal arrives, while the wanted behavior is to make xz clean up and exit as soon as possible. After this commit, the race condition is avoided with the input side which already uses non-blocking I/O. The output side still uses blocking I/O and thus has the race condition. src/xz/file_io.c | 56 ++++++++++++++++++++++++++++++++++++++++++++------------ src/xz/file_io.h | 8 ++++++++ src/xz/signals.c | 5 +++++ 3 files changed, 57 insertions(+), 12 deletions(-) commit 3541bc79d0cfabc0ad155c99bfdad1289f17fec3 Author: Lasse Collin Date: 2013-06-28 22:51:02 +0300 xz: Use non-blocking I/O for the input file. src/xz/file_io.c | 156 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 111 insertions(+), 45 deletions(-) commit 78673a08bed5066c81e8a8e90d20e670c28ecfd5 Author: Lasse Collin Date: 2013-06-28 18:46:13 +0300 xz: Remove an outdated NetBSD-specific comment. Nowadays errno == EFTYPE is documented in open(2). src/xz/file_io.c | 4 ---- 1 file changed, 4 deletions(-) commit a616fdad34b48b2932ef03fb87309dcc8b829527 Author: Lasse Collin Date: 2013-06-28 18:09:47 +0300 xz: Fix error detection of fcntl(fd, F_SETFL, flags) calls. POSIX says that fcntl(fd, F_SETFL, flags) returns -1 on error and "other than -1" on success. This is how it is documented e.g. on OpenBSD too. On Linux, success with F_SETFL is always 0 (at least accorinding to fcntl(2) from man-pages 3.51). src/xz/file_io.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 4a08a6e4c61c65ab763ab314100a6d7a3bb89298 Author: Lasse Collin Date: 2013-06-28 17:36:47 +0300 xz: Fix use of wrong variable in a fcntl() call. Due to a wrong variable name, when writing a sparse file to standard output, *all* file status flags were cleared (to the extent the operating system allowed it) instead of only clearing the O_APPEND flag. In practice this worked fine in the common situations on GNU/Linux, but I didn't check how it behaved elsewhere. The original flags were still restored correctly. I still changed the code to use a separate boolean variable to indicate when the flags should be restored instead of relying on a special value in stdout_flags. src/xz/file_io.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) commit b790b435daa3351067f80a5973b647f8d55367a2 Author: Lasse Collin Date: 2013-06-28 14:55:37 +0300 xz: Fix assertion related to posix_fadvise(). Input file can be a FIFO or something else that doesn't support posix_fadvise() so don't check the return value even with an assertion. Nothing bad happens if the call to posix_fadvise() fails. src/xz/file_io.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) commit 84d2da6c9dc252f441deb7626c2522202b005d4d Author: Lasse Collin Date: 2013-06-26 13:30:57 +0300 xz: Check the value of lzma_stream_flags.version in --list. It is a no-op for now, but if an old xz version is used together with a newer liblzma that supports something new, then this check becomes important and will stop the old xz from trying to parse files that it won't understand. src/xz/list.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) commit 9376f5f8f762296f2173d61af9101112c36f38c0 Author: Lasse Collin Date: 2013-06-26 12:17:00 +0300 Build: Require Automake 1.12 and use serial-tests option. It should actually still work with Automake 1.10 if the serial-tests option is removed. Automake 1.13 started using parallel tests by default and the option to get the old behavior isn't supported before 1.12. At least for now, parallel tests don't improve anything in XZ Utils but they hide the progress output from test_compress.sh. configure.ac | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit b7e200d7bd0a3c7c171c13ad37d68296d6f73374 Author: Lasse Collin Date: 2013-06-23 18:59:13 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 46540e4c10923e363741ff5aab99e79fc0ce6ee8 Author: Lasse Collin Date: 2013-06-23 18:57:23 +0300 liblzma: Avoid a warning about a shadowed variable. On Mac OS X wait() is declared in that we include one way or other so don't use "wait" as a variable name. Thanks to Christian Kujau. src/liblzma/common/stream_encoder_mt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit ebb501ec73cecc546c67117dd01b5e33c90bfb4a Author: Lasse Collin Date: 2013-06-23 17:36:47 +0300 xz: Validate Uncompressed Size from Block Header in list.c. This affects only "xz -lvv". Normal decompression with xz already detected if Block Header and Index had mismatched Uncompressed Size fields. So this just makes "xz -lvv" show such files as corrupt instead of showing the Uncompressed Size from Index. src/xz/list.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) commit c09e91dd236d3cabee0fc48312b3dc8cceae41ab Author: Lasse Collin Date: 2013-06-21 22:08:11 +0300 Update THANKS. THANKS | 2 ++ 1 file changed, 2 insertions(+) commit eb6ca9854b8eb9fbf72497c1cf608d6b19d2d494 Author: Lasse Collin Date: 2013-06-21 22:04:45 +0300 xz: Make the man page more friendly to doclifter. Thanks to Eric S. Raymond. src/xz/xz.1 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 0c0a1947e6ad90a0a10b7a5c39f6ab99a0aa5c93 Author: Lasse Collin Date: 2013-06-21 21:54:59 +0300 xz: A couple of man page fixes. Now the interaction of presets and custom filter chains is described correctly. Earlier it contradicted itself. Thanks to DevHC who reported these issues on IRC to me on 2012-12-14. src/xz/xz.1 | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) commit 2fcda89939c903106c429e109083d43d894049e0 Author: Lasse Collin Date: 2013-06-21 21:50:26 +0300 xz: Fix interaction between preset and custom filter chains. There was somewhat illogical behavior when --extreme was specified and mixed with custom filter chains. Before this commit, "xz -9 --lzma2 -e" was equivalent to "xz --lzma2". After it is equivalent to "xz -6e" (all earlier preset options get forgotten when a custom filter chain is specified and the default preset is 6 to which -e is applied). I find this less illogical. This also affects the meaning of "xz -9e --lzma2 -7". Earlier it was equivalent to "xz -7e" (the -e specified before a custom filter chain wasn't forgotten). Now it is "xz -7". Note that "xz -7e" still is the same as "xz -e7". Hopefully very few cared about this in the first place, so pretty much no one should even notice this change. Thanks to Conley Moorhous. src/xz/coder.c | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) commit 97379c5ea758da3f8b0bc444d5f7fa43753ce610 Author: Lasse Collin Date: 2013-04-27 22:07:46 +0300 Build: Use -Wvla with GCC if supported. Variable-length arrays are mandatory in C99 but optional in C11. The code doesn't currently use any VLAs and it shouldn't in the future either to stay compatible with C11 without requiring any optional C11 features. configure.ac | 1 + 1 file changed, 1 insertion(+) commit 8957c58609d3987c58aa72b96c436cf565cc4917 Author: Lasse Collin Date: 2013-04-15 19:29:09 +0300 xzdec: Improve the --help message. The options are now ordered in the same order as in xz's help message. Descriptions were added to the options that are ignored. I left them in parenthesis even if it looks a bit weird because I find it easier to spot the ignored vs. non-ignored options from the list that way. src/xzdec/xzdec.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit ed886e1a92534a24401d0e99c11f1dcff3b5220a Author: Lasse Collin Date: 2013-04-05 19:25:40 +0300 Update THANKS. THANKS | 2 ++ 1 file changed, 2 insertions(+) commit 5019413a055ce29e660dbbf15e02443cb5a26c59 Author: Jeff Bastian Date: 2013-04-03 13:59:17 +0200 xzgrep: make the '-h' option to be --no-filename equivalent * src/scripts/xzgrep.in: Accept the '-h' option in argument parsing. src/scripts/xzgrep.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5ea900cb5ad862bca81316729f92357c1fc040ce Author: Lasse Collin Date: 2013-03-23 22:25:15 +0200 liblzma: Be less picky in lzma_alone_decoder(). To avoid false positives when detecting .lzma files, rare values in dictionary size and uncompressed size fields were rejected. They will still be rejected if .lzma files are decoded with lzma_auto_decoder(), but when using lzma_alone_decoder() directly, such files will now be accepted. Hopefully this is an OK compromise. This doesn't affect xz because xz still has its own file format detection code. This does affect lzmadec though. So after this commit lzmadec will accept files that xz or xz-emulating-lzma doesn't. NOTE: lzma_alone_decoder() still won't decode all .lzma files because liblzma's LZMA decoder doesn't support lc + lp > 4. Reported here: http://sourceforge.net/projects/lzmautils/forums/forum/708858/topic/7068827 src/liblzma/common/alone_decoder.c | 22 ++++++++++++++-------- src/liblzma/common/alone_decoder.h | 5 +++-- src/liblzma/common/auto_decoder.c | 2 +- 3 files changed, 18 insertions(+), 11 deletions(-) commit bb117fffa84604b6e3811b068c80db82bf7f7b05 Author: Lasse Collin Date: 2013-03-23 21:55:13 +0200 liblzma: Use lzma_block_buffer_bound64() in threaded encoder. Now it uses lzma_block_uncomp_encode() if the data doesn't fit into the space calculated by lzma_block_buffer_bound64(). src/liblzma/common/stream_encoder_mt.c | 66 +++++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 16 deletions(-) commit e572e123b55b29527e54ce5f0807f115481d78b9 Author: Lasse Collin Date: 2013-03-23 21:51:38 +0200 liblzma: Fix another deadlock in the threaded encoder. This race condition could cause a deadlock if lzma_end() was called before finishing the encoding. This can happen with xz with debugging enabled (non-debugging version doesn't call lzma_end() before exiting). src/liblzma/common/stream_encoder_mt.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit b465da5988dd59ad98fda10c2e4ea13d0b9c73bc Author: Lasse Collin Date: 2013-03-23 19:17:33 +0200 liblzma: Add lzma_block_uncomp_encode(). This also adds a new internal function lzma_block_buffer_bound64() which is similar to lzma_block_buffer_bound() but uses uint64_t instead of size_t. src/liblzma/api/lzma/block.h | 18 ++++++ src/liblzma/common/block_buffer_encoder.c | 94 +++++++++++++++++++++---------- src/liblzma/common/block_buffer_encoder.h | 24 ++++++++ src/liblzma/liblzma.map | 1 + 4 files changed, 106 insertions(+), 31 deletions(-) commit 9e6dabcf22ef4679f4faaae15ebd5b137ae2fad1 Author: Lasse Collin Date: 2013-03-05 19:14:50 +0200 Avoid unneeded use of awk in xzless. Use "read" instead of "awk" in xzless to get the version number of "less". The need for awk was introduced in the commit db5c1817fabf7cbb9e4087b1576eb26f0747338e. Thanks to Ariel P for the patch. src/scripts/xzless.in | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit e7b424d267a34803db8d92a3515528be2ed45abd Author: Lasse Collin Date: 2012-12-14 20:13:32 +0200 Make the progress indicator smooth in threaded mode. This adds lzma_get_progress() to liblzma and takes advantage of it in xz. lzma_get_progress() collects progress information from the thread-specific structures so that fairly accurate progress information is available to applications. Adding a new function seemed to be a better way than making the information directly available in lzma_stream (like total_in and total_out are) because collecting the information requires locking mutexes. It's waste of time to do it more often than the up to date information is actually needed by an application. src/liblzma/api/lzma/base.h | 22 +++++++++- src/liblzma/common/common.c | 16 +++++++ src/liblzma/common/common.h | 6 +++ src/liblzma/common/stream_encoder_mt.c | 77 +++++++++++++++++++++++++++++++--- src/liblzma/liblzma.map | 1 + src/xz/message.c | 20 +++++---- 6 files changed, 129 insertions(+), 13 deletions(-) commit 2ebbb994e367f55f2561aa7c9e7451703c171f2f Author: Lasse Collin Date: 2012-12-14 11:01:41 +0200 liblzma: Fix mythread_sync for nested locking. src/common/mythread.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 4c7e28705f6de418d19cc77324ef301f996e01ff Author: Lasse Collin Date: 2012-12-13 21:05:36 +0200 xz: Mention --threads in --help. Thanks to Olivier Delhomme for pointing out that this was still missing. src/xz/message.c | 4 ++++ 1 file changed, 4 insertions(+) commit db5c1817fabf7cbb9e4087b1576eb26f0747338e Author: Jonathan Nieder Date: 2012-11-19 00:10:10 -0800 xzless: Make "less -V" parsing more robust In v4.999.9beta~30 (xzless: Support compressed standard input, 2009-08-09), xzless learned to parse ‘less -V’ output to figure out whether less is new enough to handle $LESSOPEN settings starting with “|-”. That worked well for a while, but the version string from ‘less’ versions 448 (June, 2012) is misparsed, producing a warning: $ xzless /tmp/test.xz; echo $? /usr/bin/xzless: line 49: test: 456 (GNU regular expressions): \ integer expression expected 0 More precisely, modern ‘less’ lists the regexp implementation along with its version number, and xzless passes the entire version number with attached parenthetical phrase as a number to "test $a -gt $b", producing the above confusing message. $ less-444 -V | head -1 less 444 $ less -V | head -1 less 456 (no regular expressions) So relax the pattern matched --- instead of expecting "less ", look for a line of the form "less [ (extra parenthetical)]". While at it, improve the behavior when no matching line is found --- instead of producing a cryptic message, we can fall back on a LESSPIPE setting that is supported by all versions of ‘less’. The implementation uses "awk" for simplicity. Hopefully that’s portable enough. Reported-by: Jörg-Volker Peetz Signed-off-by: Jonathan Nieder src/scripts/xzless.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 65536214a31ecd33b6b03b68a351fb597d3703d6 Author: Lasse Collin Date: 2012-10-03 15:54:24 +0300 xz: Fix the note about --rsyncable on the man page. src/xz/xz.1 | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) commit 3d93b6354927247a1569caf22ad27b07e97ee904 Author: Lasse Collin Date: 2012-09-28 20:11:09 +0300 xz: Improve handling of failed realloc in xrealloc. Thanks to Jim Meyering. src/xz/util.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) commit ab225620664e235637833be2329935f9d290ba80 Author: Lasse Collin Date: 2012-08-24 16:27:31 +0300 A few typo fixes to comments and the xz man page. Thanks to Jim Meyering. configure.ac | 2 +- src/liblzma/check/sha256.c | 1 - src/xz/xz.1 | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) commit f3c1ec69d910175ffd431fd82968dd35cec806ed Author: Lasse Collin Date: 2012-08-13 21:40:09 +0300 xz: Add a warning to --help about alpha and beta versions. src/xz/message.c | 5 +++++ 1 file changed, 5 insertions(+) commit d8eaf9d8278c23c2cf2b7ca5562d4de570d3b5db Author: Lasse Collin Date: 2012-08-02 17:13:30 +0300 Build: Bump gettext version requirement to 0.18. Otherwise too old version of m4/lib-link.m4 gets included when autoreconf -fi is run. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 96e08902b09f0f304d4ff80c6e83ef7fff883f34 Author: Lasse Collin Date: 2012-07-17 18:29:08 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 3778db1be53e61ff285c573af5ee468803008456 Author: Lasse Collin Date: 2012-07-17 18:19:59 +0300 liblzma: Make the use of lzma_allocator const-correct. There is a tiny risk of causing breakage: If an application assigns lzma_stream.allocator to a non-const pointer, such code won't compile anymore. I don't know why anyone would do such a thing though, so in practice this shouldn't cause trouble. Thanks to Jan Kratochvil for the patch. src/liblzma/api/lzma/base.h | 4 +++- src/liblzma/api/lzma/block.h | 6 ++--- src/liblzma/api/lzma/container.h | 9 +++++--- src/liblzma/api/lzma/filter.h | 13 ++++++----- src/liblzma/api/lzma/index.h | 16 ++++++------- src/liblzma/api/lzma/index_hash.h | 4 ++-- src/liblzma/common/alone_decoder.c | 6 ++--- src/liblzma/common/alone_decoder.h | 2 +- src/liblzma/common/alone_encoder.c | 8 +++---- src/liblzma/common/auto_decoder.c | 6 ++--- src/liblzma/common/block_buffer_decoder.c | 2 +- src/liblzma/common/block_buffer_encoder.c | 4 ++-- src/liblzma/common/block_decoder.c | 6 ++--- src/liblzma/common/block_decoder.h | 2 +- src/liblzma/common/block_encoder.c | 8 +++---- src/liblzma/common/block_encoder.h | 2 +- src/liblzma/common/block_header_decoder.c | 4 ++-- src/liblzma/common/common.c | 10 ++++----- src/liblzma/common/common.h | 20 +++++++++-------- src/liblzma/common/easy_buffer_encoder.c | 4 ++-- src/liblzma/common/filter_buffer_decoder.c | 3 ++- src/liblzma/common/filter_buffer_encoder.c | 7 +++--- src/liblzma/common/filter_common.c | 4 ++-- src/liblzma/common/filter_common.h | 2 +- src/liblzma/common/filter_decoder.c | 7 +++--- src/liblzma/common/filter_decoder.h | 2 +- src/liblzma/common/filter_encoder.c | 2 +- src/liblzma/common/filter_encoder.h | 2 +- src/liblzma/common/filter_flags_decoder.c | 2 +- src/liblzma/common/index.c | 26 ++++++++++----------- src/liblzma/common/index_decoder.c | 12 +++++----- src/liblzma/common/index_encoder.c | 6 ++--- src/liblzma/common/index_encoder.h | 2 +- src/liblzma/common/index_hash.c | 6 +++-- src/liblzma/common/outqueue.c | 4 ++-- src/liblzma/common/outqueue.h | 5 +++-- src/liblzma/common/stream_buffer_decoder.c | 2 +- src/liblzma/common/stream_buffer_encoder.c | 3 ++- src/liblzma/common/stream_decoder.c | 9 ++++---- src/liblzma/common/stream_decoder.h | 5 +++-- src/liblzma/common/stream_encoder.c | 10 ++++----- src/liblzma/common/stream_encoder_mt.c | 16 ++++++------- src/liblzma/delta/delta_common.c | 4 ++-- src/liblzma/delta/delta_decoder.c | 6 ++--- src/liblzma/delta/delta_decoder.h | 5 +++-- src/liblzma/delta/delta_encoder.c | 6 ++--- src/liblzma/delta/delta_encoder.h | 3 ++- src/liblzma/delta/delta_private.h | 2 +- src/liblzma/lz/lz_decoder.c | 8 +++---- src/liblzma/lz/lz_decoder.h | 7 +++--- src/liblzma/lz/lz_encoder.c | 19 ++++++++-------- src/liblzma/lz/lz_encoder.h | 6 ++--- src/liblzma/lzma/lzma2_decoder.c | 8 +++---- src/liblzma/lzma/lzma2_decoder.h | 5 +++-- src/liblzma/lzma/lzma2_encoder.c | 6 ++--- src/liblzma/lzma/lzma2_encoder.h | 2 +- src/liblzma/lzma/lzma_decoder.c | 8 +++---- src/liblzma/lzma/lzma_decoder.h | 7 +++--- src/liblzma/lzma/lzma_encoder.c | 7 +++--- src/liblzma/lzma/lzma_encoder.h | 5 +++-- src/liblzma/simple/arm.c | 8 ++++--- src/liblzma/simple/armthumb.c | 8 ++++--- src/liblzma/simple/ia64.c | 8 ++++--- src/liblzma/simple/powerpc.c | 8 ++++--- src/liblzma/simple/simple_coder.c | 10 ++++----- src/liblzma/simple/simple_coder.h | 36 ++++++++++++++++++++---------- src/liblzma/simple/simple_decoder.c | 2 +- src/liblzma/simple/simple_decoder.h | 2 +- src/liblzma/simple/simple_private.h | 3 ++- src/liblzma/simple/sparc.c | 8 ++++--- src/liblzma/simple/x86.c | 8 ++++--- 71 files changed, 269 insertions(+), 219 deletions(-) commit d625c7cf824fd3b61c6da84f56179e94917ff603 Author: Lasse Collin Date: 2012-07-05 07:36:28 +0300 Tests: Remove tests/test_block.c that had gotten committed accidentally. tests/test_block.c | 52 ---------------------------------------------------- 1 file changed, 52 deletions(-) commit 0b09d266cce72bc4841933b171e79551e488927c Author: Lasse Collin Date: 2012-07-05 07:33:35 +0300 Build: Include macosx/build.sh in the distribution. It has been in the Git repository since 2010 but probably few people have seen it since it hasn't been included in the release tarballs. :-( Makefile.am | 1 + 1 file changed, 1 insertion(+) commit d6e0b23d4613b9f417893dd96cc168c8005ece3d Author: Lasse Collin Date: 2012-07-05 07:28:53 +0300 Build: Include validate_map.sh in the distribution. It's required by "make mydist". Fix also the location of EXTRA_DIST+= so that those files get distributed also if symbol versioning isn't enabled. src/liblzma/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 19de545d86097c3954d69ab5d12820387f6a09bc Author: Lasse Collin Date: 2012-07-05 07:24:45 +0300 Docs: Fix the name LZMA Utils -> XZ Utils in debug/README. debug/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 672eccf57c31a40dfb956b7662db06d43e18618e Author: Lasse Collin Date: 2012-07-05 07:23:17 +0300 Include debug/translation.bash in the distribution. Also fix the script name mentioned in README. README | 4 ++-- debug/Makefile.am | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) commit cafb523adac1caf305e70a04bc37f25602bf990c Author: Lasse Collin Date: 2012-07-04 22:31:58 +0300 xz: Document --block-list better. Thanks to Jonathan Nieder. src/xz/xz.1 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit c7ff218528bc8f7c65e7ef73c6515777346c6794 Author: Lasse Collin Date: 2012-07-04 20:01:49 +0300 Bump the version number to 5.1.2alpha. src/liblzma/api/lzma/version.h | 2 +- src/liblzma/liblzma.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 8f3c1d886f93e6478ad509ff52102b2ce7faa999 Author: Lasse Collin Date: 2012-07-04 20:01:19 +0300 Update NEWS for 5.1.2alpha. NEWS | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) commit 0d5fa05466e580fbc458820f87013ae7644e20e5 Author: Lasse Collin Date: 2012-07-04 19:58:23 +0300 xz: Fix the version number printed by xz -lvv. The decoder bug was fixed in 5.0.2 instead of 5.0.3. src/xz/list.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit df11317985a4165731dde12bb0f0028da0e7b77f Author: Lasse Collin Date: 2012-07-04 17:11:31 +0300 Build: Add a comment to configure.ac about symbol versioning. configure.ac | 4 ++++ 1 file changed, 4 insertions(+) commit bd9cc179e8be3ef515201d3ed9c7dd79ae88869d Author: Lasse Collin Date: 2012-07-04 17:06:49 +0300 Update TODO. TODO | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) commit 4a238dd9b22f462cac5e199828bf1beb0df05884 Author: Lasse Collin Date: 2012-07-04 17:05:46 +0300 Document --enable-symbol-versions in INSTALL. INSTALL | 5 +++++ 1 file changed, 5 insertions(+) commit 88ccf47205d7f3aa314d358c72ef214f10f68b43 Author: Lasse Collin Date: 2012-07-03 21:16:39 +0300 xz: Add incomplete support for --block-list. It's broken with threads and when also --block-size is used. src/xz/args.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/xz/args.h | 1 + src/xz/coder.c | 48 ++++++++++++++++++++++++++++------ src/xz/coder.h | 4 +++ src/xz/main.c | 1 + src/xz/message.c | 6 +++++ src/xz/xz.1 | 23 +++++++++++++++-- 7 files changed, 151 insertions(+), 10 deletions(-) commit 972179cdcdf5d8949c48ee31737d87d3050b44af Author: Lasse Collin Date: 2012-07-01 18:44:33 +0300 xz: Update the man page about the new field in --robot -lvv. src/xz/xz.1 | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) commit 1403707fc64a70976aebe66f8d9a9bd12f73a2c5 Author: Lasse Collin Date: 2012-06-28 10:47:49 +0300 liblzma: Check that the first byte of range encoded data is 0x00. It is just to be more pedantic and thus perhaps catch broken files slightly earlier. src/liblzma/lzma/lzma_decoder.c | 8 ++++++-- src/liblzma/rangecoder/range_decoder.h | 12 +++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) commit eccd8017ffe2c5de473222c4963ec53c62f7fda2 Author: Lasse Collin Date: 2012-06-22 19:00:23 +0300 Update NEWS from 5.0.4. NEWS | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) commit 2e6754eac26a431e8d340c28906f63bcd1e177e8 Author: Lasse Collin Date: 2012-06-22 14:34:03 +0300 xz: Update man page date to match the latest update. src/xz/xz.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b3235a0b1af45d5e1244cbe3191516966c076fa0 Author: Lasse Collin Date: 2012-06-18 21:27:47 +0300 Docs: Language fix to 01_compress_easy.c. Thanks to Jonathan Nieder. doc/examples/01_compress_easy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f1675f765fe228cb5a5f904f853445a03e33cfe9 Author: Lasse Collin Date: 2012-06-14 20:15:30 +0300 Fix the top-level Makefile.am for the new example programs. Makefile.am | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) commit 3a0c5378abefaf86aa39a62a7c9682bdb21568a1 Author: Lasse Collin Date: 2012-06-14 10:52:33 +0300 Docs: Add new example programs. These have more comments than the old examples and human-readable error messages. More tutorial-like examples are needed but these are a start. doc/examples/00_README.txt | 27 ++++ doc/examples/01_compress_easy.c | 297 ++++++++++++++++++++++++++++++++++++++ doc/examples/02_decompress.c | 287 ++++++++++++++++++++++++++++++++++++ doc/examples/03_compress_custom.c | 193 +++++++++++++++++++++++++ doc/examples/Makefile | 23 +++ 5 files changed, 827 insertions(+) commit 1bd2c2c553e30c4a73cfb82abc6908efd6be6b8d Author: Lasse Collin Date: 2012-06-14 10:33:27 +0300 Docs: Move xz_pipe_comp.c and xz_pipe_decomp.c to doc/examples_old. It is good to keep these around to so that if someone has copied the decompressor bug from xz_pipe_decomp.c he has an example how to easily fix it. doc/{examples => examples_old}/xz_pipe_comp.c | 0 doc/{examples => examples_old}/xz_pipe_decomp.c | 0 2 files changed, 0 insertions(+), 0 deletions(-) commit 905f0ab5b5ce544d4b68a2ed6077df0f3d021292 Author: Lasse Collin Date: 2012-06-14 10:33:01 +0300 Docs: Fix a bug in xz_pipe_decomp.c example program. doc/examples/xz_pipe_decomp.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit 4bd1a3bd5fdf4870b2f96dd0b8a21657c8a58ad8 Author: Lasse Collin Date: 2012-05-30 23:14:33 +0300 Translations: Update the French translation. Thanks to Adrien Nader. po/fr.po | 148 ++++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 79 insertions(+), 69 deletions(-) commit d2e836f2f3a87df6fe6bb0589b037db51205d910 Author: Lasse Collin Date: 2012-05-29 23:42:37 +0300 Translations: Update the German translation. The previous only included the new strings in v5.0. po/de.po | 229 +++++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 133 insertions(+), 96 deletions(-) commit c9a16151577ba459afd6e3528df23bc0ddb95171 Author: Lasse Collin Date: 2012-05-29 22:26:27 +0300 Translations: Update the German translation. po/de.po | 169 ++++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 91 insertions(+), 78 deletions(-) commit 1530a74fd48f8493372edad137a24541efe24713 Author: Lasse Collin Date: 2012-05-29 22:14:21 +0300 Translations: Update Polish translation. po/pl.po | 283 +++++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 165 insertions(+), 118 deletions(-) commit d8db706acb8316f9861abd432cfbe001dd6d0c5c Author: Lasse Collin Date: 2012-05-28 20:42:11 +0300 liblzma: Fix possibility of incorrect LZMA_BUF_ERROR. lzma_code() could incorrectly return LZMA_BUF_ERROR if all of the following was true: - The caller knows how many bytes of output to expect and only provides that much output space. - When the last output bytes are decoded, the caller-provided input buffer ends right before the LZMA2 end of payload marker. So LZMA2 won't provide more output anymore, but it won't know it yet and thus won't return LZMA_STREAM_END yet. - A BCJ filter is in use and it hasn't left any unfiltered bytes in the temp buffer. This can happen with any BCJ filter, but in practice it's more likely with filters other than the x86 BCJ. Another situation where the bug can be triggered happens if the uncompressed size is zero bytes and no output space is provided. In this case the decompression can fail even if the whole input file is given to lzma_code(). A similar bug was fixed in XZ Embedded on 2011-09-19. src/liblzma/simple/simple_coder.c | 2 +- tests/Makefile.am | 4 +- tests/test_bcj_exact_size.c | 112 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+), 2 deletions(-) commit 3f94b6d87f1b8f1c421ba548f8ebb83dca9c8cda Author: Lasse Collin Date: 2012-05-28 15:38:32 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 7769ea051d739a38a1640fd448cf5eb83cb119c6 Author: Lasse Collin Date: 2012-05-28 15:37:43 +0300 xz: Don't show a huge number in -vv when memory limit is disabled. src/xz/message.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit ec921105725e4d3ef0a683dd83eee6f24ab60ccd Author: Lasse Collin Date: 2012-05-27 22:30:17 +0300 xz: Document the "summary" lines of --robot -lvv. This documents only the columns that are in v5.0. The new columns added in the master branch aren't necessarily stable yet. src/xz/xz.1 | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) commit 27d24eb0a9f6eed96d6a4594c2b0bf7a91d29f9a Author: Lasse Collin Date: 2012-05-27 21:53:20 +0300 xz: Fix output of verbose --robot --list modes. It printed the filename in "filename (x/y)" format which it obviously shouldn't do in robot mode. src/xz/message.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ab25b82a91754d9388c89abddf806424671d9431 Author: Lasse Collin Date: 2012-05-24 18:33:54 +0300 Build: Upgrade m4/acx_pthread.m4 to the latest version. m4/ax_pthread.m4 | 98 +++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 62 insertions(+), 36 deletions(-) commit d05d6d65c41a4bc83f162fa3d67c5d84e8751634 Author: Lasse Collin Date: 2012-05-10 21:15:17 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit e077391982f9f28dbfe542bba8800e7c5b916666 Author: Lasse Collin Date: 2012-05-10 21:14:16 +0300 Docs: Cleanup line wrapping a bit. README | 12 ++++++------ doc/history.txt | 49 +++++++++++++++++++++++++------------------------ 2 files changed, 31 insertions(+), 30 deletions(-) commit fc39849c350225c6a1cd7f6e6adff1020521eabc Author: Benno Schulenberg Date: 2012-03-13 22:04:04 +0100 Fix a few typos and add some missing articles in some documents. Also hyphenate several compound adjectives. Signed-off-by: Benno Schulenberg AUTHORS | 6 +++--- README | 42 ++++++++++++++++++++--------------------- doc/faq.txt | 24 ++++++++++++------------ doc/history.txt | 58 ++++++++++++++++++++++++++++----------------------------- 4 files changed, 65 insertions(+), 65 deletions(-) commit 29fa0566d5df199cb9acb2d17bf7eea61acc7fa1 Author: Lasse Collin Date: 2012-04-29 11:51:25 +0300 Windows: Update notes about static linking with MSVC. windows/README-Windows.txt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) commit aac1b31ea4e66cf5a7a8c116bdaa15aa45e6c56e Author: Lasse Collin Date: 2012-04-19 15:25:26 +0300 liblzma: Remove outdated comments. src/liblzma/simple/simple_coder.c | 3 --- src/liblzma/simple/simple_private.h | 3 +-- 2 files changed, 1 insertion(+), 5 deletions(-) commit df14a46013bea70c0bd35be7821b0b9108f97de7 Author: Lasse Collin Date: 2012-04-19 14:17:52 +0300 DOS: Link against DJGPP's libemu to support FPU emulation. This way xz should work on 386SX and 486SX. Floating point only is needed for verbose output in xz. dos/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 03ed742a3a4931bb5c821357832083b26f577b13 Author: Lasse Collin Date: 2012-04-19 14:02:25 +0300 liblzma: Fix Libs.private in liblzma.pc to include -lrt when needed. src/liblzma/liblzma.pc.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8c5b13ad59df70f49429bfdfd6ac120b8f892fda Author: Lasse Collin Date: 2012-04-19 13:58:55 +0300 Docs: Update MINIX 3 information in INSTALL. INSTALL | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit c7376fc415a1566f38b2de4b516a17013d516a8b Author: Lasse Collin Date: 2012-02-22 14:23:13 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit cff070aba6281ba743d29a62b8c0c66e5da4b2a6 Author: Lasse Collin Date: 2012-02-22 14:02:34 +0200 Fix exit status of xzgrep when grepping binary files. When grepping binary files, grep may exit before it has read all the input. In this case, gzip -q returns 2 (eating SIGPIPE), but xz and bzip2 show SIGPIPE as the exit status (e.g. 141). This causes wrong exit status when grepping xz- or bzip2-compressed binary files. The fix checks for the special exit status that indicates SIGPIPE. It uses kill -l which should be supported everywhere since it is in both SUSv2 (1997) and POSIX.1-2008. Thanks to James Buren for the bug report. src/scripts/xzgrep.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 41cafb2bf9beea915710ee68f05fe929cd17759c Author: Lasse Collin Date: 2012-02-22 12:08:43 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 2dcea03712fa881930d69ec9eff70855c3d126d9 Author: Lasse Collin Date: 2012-02-22 12:00:16 +0200 Fix compiling with IBM XL C on AIX. INSTALL | 36 ++++++++++++++++++++++-------------- configure.ac | 6 +++++- 2 files changed, 27 insertions(+), 15 deletions(-) commit 7db6bdf4abcf524115be2cf5659ed540cef074c5 Author: Lasse Collin Date: 2012-01-10 17:13:03 +0200 Tests: Fix a compiler warning with _FORTIFY_SOURCE. Reported here: http://sourceforge.net/projects/lzmautils/forums/forum/708858/topic/4927385 tests/create_compress_files.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 694952d545b6cf056547893ced69486eff9ece55 Author: Lasse Collin Date: 2011-12-19 21:21:29 +0200 Docs: Explain the stable releases better in README. README | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 418fe668b3c53a9a20020b6cc652aaf25c734b29 Author: Lasse Collin Date: 2011-11-07 13:07:52 +0200 xz: Show minimum required XZ Utils version in xz -lvv. Man page wasn't updated yet. src/xz/list.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 57 insertions(+), 6 deletions(-) commit 7081d82c37326bac97184e338345fa1c327e3580 Author: Lasse Collin Date: 2011-11-04 17:57:16 +0200 xz: Fix a typo in a comment. Thanks to Bela Lubkin. src/xz/args.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 232fe7cd70ad258d6a37f17e860e0f1b1891eeb5 Author: Lasse Collin Date: 2011-11-03 17:08:02 +0200 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 74d2bae4d3449c68453b0473dd3430ce91fd90c1 Author: Lasse Collin Date: 2011-11-03 17:07:22 +0200 xz: Fix xz on EBCDIC systems. Thanks to Chris Donawa. src/xz/coder.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 4ac4923f47cc0ef97dd9ca5cfcc44fc53eeab34a Author: Lasse Collin Date: 2011-10-23 17:09:10 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit ab50ae3ef40c81e5bf613905ca3fd636548b75e7 Author: Lasse Collin Date: 2011-10-23 17:08:14 +0300 liblzma: Fix invalid free() in the threaded encoder. It was triggered if initialization failed e.g. due to running out of memory. Thanks to Arkadiusz Miskiewicz. src/liblzma/common/outqueue.c | 4 ++++ 1 file changed, 4 insertions(+) commit 6b620a0f0813d28c3c544b4ff8cb595b38a6e908 Author: Lasse Collin Date: 2011-10-23 17:05:55 +0300 liblzma: Fix a deadlock in the threaded encoder. It was triggered when reinitializing the encoder, e.g. when encoding two files. src/liblzma/common/stream_encoder_mt.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit bd52cf150ecd51e3ab63a9cc1a3cff6a77500178 Author: Lasse Collin Date: 2011-09-06 12:03:41 +0300 Build: Fix "make check" on Windows. tests/Makefile.am | 7 +++++-- windows/build.bash | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) commit 5c5b2256969ac473001b7d67615ed3bd0a54cc82 Author: Lasse Collin Date: 2011-08-09 21:19:13 +0300 Update THANKS. THANKS | 2 ++ 1 file changed, 2 insertions(+) commit 5b1e1f10741af9e4bbe4cfc3261fb7c7b04f7809 Author: Lasse Collin Date: 2011-08-09 21:16:44 +0300 Workaround unusual SIZE_MAX on SCO OpenServer. src/common/sysdefs.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit e9ed88126eee86e2511fa42681a5c7104820cf0a Author: Lasse Collin Date: 2011-08-06 20:37:28 +0300 Run the scripts with the correct shell in test_scripts.sh. The scripts are now made executable in the build tree. This way the scripts can be run like programs in test_scripts.sh. Previously test_scripts.sh always used sh but it's not correct if @POSIX_SHELL@ is set to something else by configure. Thanks to Jonathan Nieder for the patch. configure.ac | 8 ++++---- tests/test_scripts.sh | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) commit 1c673e5681720491a74fc4b2992e075f47302c22 Author: Lasse Collin Date: 2011-07-31 11:01:47 +0300 Fix exit status of "xzdiff foo.xz bar.xz". xzdiff was clobbering the exit status from diff in a case statement used to analyze the exit statuses from "xz" when its operands were two compressed files. Save and restore diff's exit status to fix this. The bug is inherited from zdiff in GNU gzip and was fixed there on 2009-10-09. Thanks to Jonathan Nieder for the patch and to Peter Pallinger for reporting the bug. src/scripts/xzdiff.in | 2 ++ tests/Makefile.am | 4 +++- tests/test_scripts.sh | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) commit 324cde7a864f4506c32ae7846d688c359a83fe65 Author: Lasse Collin Date: 2011-06-16 12:15:29 +0300 liblzma: Remove unneeded semicolon. src/liblzma/lz/lz_encoder_hash.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 492c86345551a51a29bf18e55fe55a5e86f169ce Author: Lasse Collin Date: 2011-05-28 19:24:56 +0300 Build: Make configure print if symbol versioning is enabled or not. configure.ac | 2 ++ 1 file changed, 2 insertions(+) commit fc4d4436969bd4d71b704d400a165875e596034a Author: Lasse Collin Date: 2011-05-28 16:43:26 +0300 Don't call close(-1) in tuklib_open_stdxxx() on error. Thanks to Jim Meyering. src/common/tuklib_open_stdxxx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit bd35d903a04c4d388adb4065b0fa271302380895 Author: Lasse Collin Date: 2011-05-28 15:55:39 +0300 liblzma: Use symbol versioning. Symbol versioning is enabled by default on GNU/Linux, other GNU-based systems, and FreeBSD. I'm not sure how stable this is, so it may need backward-incompatible changes before the next release. The idea is that alpha and beta symbols are considered unstable and require recompiling the applications that use those symbols. Once a symbol is stable, it may get extended with new features in ways that don't break compatibility with older ABI & API. The mydist target runs validate_map.sh which should catch some probable problems in liblzma.map. Otherwise I would forget to update the map file for new releases. Makefile.am | 1 + configure.ac | 21 +++++++++ src/liblzma/Makefile.am | 6 +++ src/liblzma/liblzma.map | 105 ++++++++++++++++++++++++++++++++++++++++++++ src/liblzma/validate_map.sh | 68 ++++++++++++++++++++++++++++ 5 files changed, 201 insertions(+) commit afbb244362c9426a37ce4eb9d54aab768da3adad Author: Lasse Collin Date: 2011-05-28 09:46:46 +0300 Translations: Update the Italian translation. Thanks to Milo Casagrande. po/it.po | 365 +++++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 216 insertions(+), 149 deletions(-) commit 79bef85e0543c0c3723281c3c817616c6cec343b Author: Lasse Collin Date: 2011-05-28 08:46:04 +0300 Tests: Add a test file for the bug in the previous commit. tests/files/README | 4 ++++ tests/files/bad-1-block_header-6.xz | Bin 0 -> 72 bytes 2 files changed, 4 insertions(+) commit c0297445064951807803457dca1611b3c47e7f0f Author: Lasse Collin Date: 2011-05-27 22:25:44 +0300 xz: Fix error handling in xz -lvv. It could do an invalid free() and read past the end of the uninitialized filters array. src/xz/list.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) commit 8bd91918ac50731f00b1a2a48072980572eb2ff9 Author: Lasse Collin Date: 2011-05-27 22:09:49 +0300 liblzma: Handle allocation failures correctly in lzma_index_init(). Thanks to Jim Meyering. src/liblzma/common/index.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit fe00f95828ef5627721b57e054f7eb2d42a2c961 Author: Lasse Collin Date: 2011-05-24 00:23:46 +0300 Build: Fix checking for system-provided SHA-256. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 21b45b9bab541f419712cbfd473ccc31802e0397 Author: Lasse Collin Date: 2011-05-23 18:30:30 +0300 Build: Set GZIP_ENV=-9n in top-level Makefile.am. Makefile.am | 3 +++ 1 file changed, 3 insertions(+) commit 48053e8a4550233af46359024538bff90c870ab1 Author: Lasse Collin Date: 2011-05-22 16:42:11 +0300 Update NEWS for 5.0.3. NEWS | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) commit bba37df2c9e54ad773e15ff00a09d2d6989fb3b2 Author: Lasse Collin Date: 2011-05-21 16:28:44 +0300 Add French translation. It is known that the BCJ filter --help text is only partially translated. po/LINGUAS | 1 + po/fr.po | 864 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 865 insertions(+) commit 4161d7634965a7a287bf208dcd79f6185f448fe8 Author: Lasse Collin Date: 2011-05-21 15:12:10 +0300 xz: Translate also the string used to print the program name. French needs a space before a colon, e.g. "xz : foo error". src/xz/message.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit b94aa0c8380cdb18cddb33440d625474c16643cf Author: Lasse Collin Date: 2011-05-21 15:08:44 +0300 liblzma: Try to use SHA-256 from the operating system. If the operating system libc or other base libraries provide SHA-256, use that instead of our own copy. Note that this doesn't use OpenSSL or libgcrypt or such libraries to avoid creating dependencies to other packages. This supports at least FreeBSD, NetBSD, OpenBSD, Solaris, MINIX, and Darwin. They all provide similar but not identical SHA-256 APIs; everyone is a little different. Thanks to Wim Lewis for the original patch, improvements, and testing. configure.ac | 54 +++++++++++++++++++++++++++ src/liblzma/check/Makefile.inc | 2 + src/liblzma/check/check.h | 83 ++++++++++++++++++++++++++++++++++++++---- 3 files changed, 131 insertions(+), 8 deletions(-) commit f004128678d43ea10b4a6401aa184cf83252d6ec Author: Lasse Collin Date: 2011-05-17 12:52:18 +0300 Don't use clockid_t in mythread.h when clock_gettime() isn't available. Thanks to Wim Lewis for the patch. src/common/mythread.h | 2 ++ 1 file changed, 2 insertions(+) commit f779516f42ebd2db47a5b7d6143459bf7737cf2f Author: Lasse Collin Date: 2011-05-17 12:26:28 +0300 Update THANKS. THANKS | 3 +++ 1 file changed, 3 insertions(+) commit 830ba587775bb562f6eaf05cad61bf669d1f8892 Author: Lasse Collin Date: 2011-05-17 12:21:33 +0300 Update INSTALL with a note about linker problem on OpenSolaris x86. INSTALL | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) commit ec7106309c8060e9c646dba20c4f15689a0bbb04 Author: Lasse Collin Date: 2011-05-17 12:01:37 +0300 Build: Fix initialization of enable_check_* variables in configure.ac. This doesn't matter much in practice since it is unlikely that anyone would have such environment variable names. Thanks to Wim Lewis. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4c6e146df99696920f12410fb17754412797ef36 Author: Lasse Collin Date: 2011-05-17 11:54:38 +0300 Add underscores to attributes (__attribute((__foo__))). src/liblzma/common/alone_decoder.c | 2 +- src/liblzma/common/alone_encoder.c | 2 +- src/liblzma/common/block_encoder.c | 2 +- src/liblzma/common/common.c | 2 +- src/liblzma/common/common.h | 2 +- src/liblzma/common/index_decoder.c | 9 +++++---- src/liblzma/common/index_encoder.c | 11 ++++++----- src/liblzma/delta/delta_encoder.c | 2 +- src/liblzma/lz/lz_decoder.c | 2 +- src/liblzma/lz/lz_encoder.c | 2 +- src/liblzma/simple/arm.c | 2 +- src/liblzma/simple/armthumb.c | 2 +- src/liblzma/simple/ia64.c | 2 +- src/liblzma/simple/powerpc.c | 2 +- src/liblzma/simple/simple_coder.c | 2 +- src/liblzma/simple/sparc.c | 2 +- src/lzmainfo/lzmainfo.c | 4 ++-- src/xz/coder.c | 2 +- src/xz/hardware.h | 2 +- src/xz/message.c | 2 +- src/xz/message.h | 18 +++++++++--------- src/xz/options.c | 6 +++--- src/xz/signals.c | 2 +- src/xz/util.h | 6 +++--- src/xzdec/xzdec.c | 6 +++--- 25 files changed, 49 insertions(+), 47 deletions(-) commit 7a480e485938884ef3021b48c3b0b9f9699dc9b6 Author: Lasse Collin Date: 2011-05-01 12:24:23 +0300 xz: Fix input file position when --single-stream is used. Now the following works as you would expect: echo foo | xz > foo.xz echo bar | xz >> foo.xz ( xz -dc --single-stream ; xz -dc --single-stream ) < foo.xz Note that it doesn't work if the input is not seekable or if there is Stream Padding between the concatenated .xz Streams. src/xz/coder.c | 1 + src/xz/file_io.c | 15 +++++++++++++++ src/xz/file_io.h | 13 +++++++++++++ 3 files changed, 29 insertions(+) commit c29e6630c1450c630c4e7b783bdd76515db9004c Author: Lasse Collin Date: 2011-05-01 12:15:51 +0300 xz: Print the maximum number of worker threads in xz -vv. src/xz/coder.c | 4 ++++ 1 file changed, 4 insertions(+) commit 0b77c4a75158ccc416b07d6e81df8ee0abaea720 Author: Lasse Collin Date: 2011-04-19 10:44:48 +0300 Build: Warn if no supported method to detect the number of CPU cores. configure.ac | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) commit e4622df9ab4982f8faa53d85b17be66216175a58 Author: Lasse Collin Date: 2011-04-19 09:55:06 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 9c1b05828a88eff54409760b92162c7cc2c7cff6 Author: Lasse Collin Date: 2011-04-19 09:20:44 +0300 Fix portability problems in mythread.h. Use gettimeofday() if clock_gettime() isn't available (e.g. Darwin). The test for availability of pthread_condattr_setclock() and CLOCK_MONOTONIC was incorrect. Instead of fixing the #ifdefs, use an Autoconf test. That way if there exists a system that supports them but doesn't specify the matching POSIX #defines, the features will still get detected. Don't try to use pthread_sigmask() on OpenVMS. It doesn't have that function. Guard mythread.h against being #included multiple times. configure.ac | 7 +++++++ src/common/mythread.h | 31 +++++++++++++++++++++++++++---- 2 files changed, 34 insertions(+), 4 deletions(-) commit 3de00cc75da7b0e7b65e84c62b5351e231f501e9 Author: Lasse Collin Date: 2011-04-18 19:35:49 +0300 Update THANKS. THANKS | 2 ++ 1 file changed, 2 insertions(+) commit bd5002f5821e3d1b04f2f56989e4a19318e73633 Author: Martin Väth Date: 2011-04-15 04:54:49 -0400 xzgrep: fix typo in $0 parsing Reported-by: Diego Elio Pettenò Signed-off-by: Martin Väth Signed-off-by: Mike Frysinger src/scripts/xzgrep.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 6ef4eabc0acc49e1bb9dc68064706e19fa9fcf48 Author: Lasse Collin Date: 2011-04-12 12:48:31 +0300 Bump the version number to 5.1.1alpha and liblzma soname to 5.0.99. src/liblzma/Makefile.am | 2 +- src/liblzma/api/lzma/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 9a4377be0d21e597c66bad6c7452873aebfb3c1c Author: Lasse Collin Date: 2011-04-12 12:42:37 +0300 Put the unstable APIs behind #ifdef LZMA_UNSTABLE. This way people hopefully won't complain if these APIs change and break code that used an older API. src/liblzma/api/lzma/container.h | 4 ++++ src/liblzma/common/common.h | 2 ++ src/xz/private.h | 2 ++ 3 files changed, 8 insertions(+) commit 3e321a3acd50002cf6fdfd259e910f56d3389bc3 Author: Lasse Collin Date: 2011-04-12 11:59:49 +0300 Remove doubled words from documentation and comments. Spot candidates by running these commands: git ls-files |xargs perl -0777 -n \ -e 'while (/\b(then?|[iao]n|i[fst]|but|f?or|at|and|[dt]o)\s+\1\b/gims)' \ -e '{$n=($` =~ tr/\n/\n/ + 1); ($v=$&)=~s/\n/\\n/g; print "$ARGV:$n:$v\n"}' Thanks to Jim Meyering for the original patch. doc/lzma-file-format.txt | 4 ++-- src/liblzma/common/alone_encoder.c | 2 +- src/liblzma/lzma/lzma2_encoder.c | 2 +- src/xz/file_io.c | 2 +- src/xz/xz.1 | 2 +- windows/INSTALL-Windows.txt | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) commit d91a84b534b012d19474f2fda1fbcaef873e1ba4 Author: Lasse Collin Date: 2011-04-12 11:46:01 +0300 Update NEWS. NEWS | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) commit 14e6ad8cfe0165c1a8beeb5b2a1536558b29b0a1 Author: Lasse Collin Date: 2011-04-12 11:45:40 +0300 Update TODO. TODO | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit 70e750f59793f9b5cd306a5adce9b8e427739e04 Author: Lasse Collin Date: 2011-04-12 11:08:55 +0300 xz: Update the man page about threading. src/xz/xz.1 | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) commit 24e0406c0fb7494d2037dec033686faf1bf67068 Author: Lasse Collin Date: 2011-04-11 22:06:03 +0300 xz: Add support for threaded compression. src/xz/args.c | 3 +- src/xz/coder.c | 202 +++++++++++++++++++++++++++++++++++---------------------- 2 files changed, 125 insertions(+), 80 deletions(-) commit de678e0c924aa79a19293a8a6ed82e8cb6572a42 Author: Lasse Collin Date: 2011-04-11 22:03:30 +0300 liblzma: Add lzma_stream_encoder_mt() for threaded compression. This is the simplest method to do threading, which splits the uncompressed data into blocks and compresses them independently from each other. There's room for improvement especially to reduce the memory usage, but nevertheless, this is a good start. configure.ac | 1 + src/liblzma/api/lzma/container.h | 163 +++++ src/liblzma/common/Makefile.inc | 7 + src/liblzma/common/common.c | 9 +- src/liblzma/common/common.h | 14 + src/liblzma/common/outqueue.c | 180 ++++++ src/liblzma/common/outqueue.h | 155 +++++ src/liblzma/common/stream_encoder_mt.c | 1011 ++++++++++++++++++++++++++++++++ 8 files changed, 1539 insertions(+), 1 deletion(-) commit 25fe729532cdf4b8fed56a4519b73cf31efaec50 Author: Lasse Collin Date: 2011-04-11 21:15:07 +0300 liblzma: Add the forgotten lzma_lzma2_block_size(). This should have been in 5eefc0086d24a65e136352f8c1d19cefb0cbac7a. src/liblzma/lzma/lzma2_encoder.c | 10 ++++++++++ src/liblzma/lzma/lzma2_encoder.h | 2 ++ 2 files changed, 12 insertions(+) commit 91afb785a1dee34862078d9bf844ef12b8cc3e35 Author: Lasse Collin Date: 2011-04-11 21:04:13 +0300 liblzma: Document lzma_easy_(enc|dec)oder_memusage() better too. src/liblzma/api/lzma/container.h | 9 +++++++++ 1 file changed, 9 insertions(+) commit 4a9905302a9e4a1601ae09d650d3f08ce98ae9ee Author: Lasse Collin Date: 2011-04-11 20:59:07 +0300 liblzma: Document lzma_raw_(enc|dec)oder_memusage() better. It didn't mention the return value that is used if an error occurs. src/liblzma/api/lzma/filter.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 0badb0b1bd649163322783b0bd9e590b4bc7a93d Author: Lasse Collin Date: 2011-04-11 19:28:18 +0300 liblzma: Use memzero() to initialize supported_actions[]. This is cleaner and makes it simpler to add new members to lzma_action enumeration. src/liblzma/common/common.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit a7934c446a58e20268689899d2a39f50e571f251 Author: Lasse Collin Date: 2011-04-11 19:26:27 +0300 liblzma: API comment about lzma_allocator with threaded coding. src/liblzma/api/lzma/base.h | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) commit 5eefc0086d24a65e136352f8c1d19cefb0cbac7a Author: Lasse Collin Date: 2011-04-11 19:16:30 +0300 liblzma: Add an internal function lzma_mt_block_size(). This is based lzma_chunk_size() that was included in some development version of liblzma. src/liblzma/common/filter_encoder.c | 46 ++++++++++++++++++------------------- src/liblzma/common/filter_encoder.h | 4 ++-- 2 files changed, 24 insertions(+), 26 deletions(-) commit d1199274758049fc523d98c5b860ff814a799eec Author: Lasse Collin Date: 2011-04-11 13:59:50 +0300 liblzma: Don't create an empty Block in lzma_stream_buffer_encode(). Empty Block was created if the input buffer was empty. Empty Block wastes a few bytes of space, but more importantly it triggers a bug in XZ Utils 5.0.1 and older when trying to decompress such a file. 5.0.1 and older consider such files to be corrupt. I thought that no encoder creates empty Blocks when releasing 5.0.2 but I was wrong. src/liblzma/common/stream_buffer_encoder.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) commit 3b22fc2c87ec85fcdd385c163b68fc49c97aa848 Author: Lasse Collin Date: 2011-04-11 13:28:40 +0300 liblzma: Fix API docs to mention LZMA_UNSUPPORTED_CHECK. This return value was missing from the API comments of four functions. src/liblzma/api/lzma/block.h | 1 + src/liblzma/api/lzma/container.h | 3 +++ 2 files changed, 4 insertions(+) commit 71b9380145dccf001f22e66a06b9d508905c25ce Author: Lasse Collin Date: 2011-04-11 13:21:28 +0300 liblzma: Validate encoder arguments better. The biggest problem was that the integrity check type wasn't validated, and e.g. lzma_easy_buffer_encode() would create a corrupt .xz Stream if given an unsupported Check ID. Luckily applications don't usually try to use an unsupport Check ID, so this bug is unlikely to cause many real-world problems. src/liblzma/common/block_buffer_encoder.c | 18 ++++++++++++------ src/liblzma/common/block_encoder.c | 5 +++++ src/liblzma/common/stream_buffer_encoder.c | 3 +++ 3 files changed, 20 insertions(+), 6 deletions(-) commit ec7e3dbad704268825fc48f0bdd4577bc46b4f13 Author: Lasse Collin Date: 2011-04-11 09:57:30 +0300 xz: Move the description of --block-size in --long-help. src/xz/message.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit cd3086ff443bb282bdf556919c28b3e3cbed8169 Author: Lasse Collin Date: 2011-04-11 09:55:35 +0300 Docs: Document --single-stream and --block-size. src/xz/xz.1 | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) commit fb64a4924334e3c440865710990fe08090f2fed0 Author: Lasse Collin Date: 2011-04-11 09:27:57 +0300 liblzma: Make lzma_stream_encoder_init() static (second try). It's an internal function and it's not needed by anything outside stream_encoder.c. src/liblzma/common/Makefile.inc | 1 - src/liblzma/common/easy_encoder.c | 1 - src/liblzma/common/stream_encoder.c | 13 ++++++------- src/liblzma/common/stream_encoder.h | 23 ----------------------- 4 files changed, 6 insertions(+), 32 deletions(-) commit a34730cf6af4d33a4057914e57227b6dfde6567e Author: Lasse Collin Date: 2011-04-11 08:31:42 +0300 Revert "liblzma: Make lzma_stream_encoder_init() static." This reverts commit 352ac82db5d3f64585c07b39e4759388dec0e4d7. I don't know what I was thinking. src/liblzma/common/Makefile.inc | 1 + src/liblzma/common/stream_encoder.c | 9 +++++---- src/liblzma/common/stream_encoder.h | 23 +++++++++++++++++++++++ 3 files changed, 29 insertions(+), 4 deletions(-) commit 9f0a806aef7ea79718e3f1f2baf3564295229a27 Author: Lasse Collin Date: 2011-04-10 21:23:21 +0300 Revise mythread.h. This adds: - mythread_sync() macro to create synchronized blocks - mythread_cond structure and related functions and macros for condition variables with timed waiting using a relative timeout - mythread_create() to create a thread with all signals blocked Some of these wouldn't need to be inline functions, but I'll keep them this way for now for simplicity. For timed waiting on a condition variable, librt is now required on some systems to use clock_gettime(). configure.ac was updated to handle this. configure.ac | 1 + src/common/mythread.h | 200 +++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 181 insertions(+), 20 deletions(-) commit 352ac82db5d3f64585c07b39e4759388dec0e4d7 Author: Lasse Collin Date: 2011-04-10 20:37:36 +0300 liblzma: Make lzma_stream_encoder_init() static. It's an internal function and it's not needed by anything outside stream_encoder.c. src/liblzma/common/Makefile.inc | 1 - src/liblzma/common/stream_encoder.c | 9 ++++----- src/liblzma/common/stream_encoder.h | 23 ----------------------- 3 files changed, 4 insertions(+), 29 deletions(-) commit 9e807fe3fe79618ac48f58207cf7082ea20a6928 Author: Lasse Collin Date: 2011-04-10 14:58:10 +0300 DOS: Update the docs and include notes about 8.3 filenames. dos/{README => INSTALL.txt} | 13 +---- dos/README.txt | 123 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+), 11 deletions(-) commit ebd54dbd6e481d31e80757f900ac8109ad1423c6 Author: Lasse Collin Date: 2011-04-10 13:09:42 +0300 xz/DOS: Add experimental 8.3 filename support. This is incompatible with the 8.3 support patch made by Juan Manuel Guerrero. I think this one is nicer, but I need to get feedback from DOS users before saying that this is the final version of 8.3 filename support. src/xz/suffix.c | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 167 insertions(+), 9 deletions(-) commit cd4fe97852bcaeffe674ee51b4613709292a0972 Author: Lasse Collin Date: 2011-04-10 12:47:47 +0300 xz/DOS: Be more careful with the destination file. Try to avoid overwriting the source file if --force is used and the generated destination filename refers to the source file. This can happen with 8.3 filenames where extra characters are ignored. If the generated output file refers to a special file like "con" or "prn", refuse to write to it even if --force is used. src/xz/file_io.c | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) commit 607f9f98ae5ef6d49f4c21c806d462bf6b3d6796 Author: Lasse Collin Date: 2011-04-09 18:29:30 +0300 Update THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit fca396b37410d272b754843a5dc13847be443a3a Author: Lasse Collin Date: 2011-04-09 18:28:58 +0300 liblzma: Add missing #ifdefs to filter_common.c. Passing --disable-decoders to configure broke a few encoders due to missing #ifdefs in filter_common.c. Thanks to Jason Gorski for the patch. src/liblzma/common/filter_common.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit b03f6cd3ebadd675f2cc9d518cb26fa860269447 Author: Lasse Collin Date: 2011-04-09 15:24:59 +0300 xz: Avoid unneeded fstat() on DOS-like systems. src/xz/file_io.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) commit 335fe260a81f61ec99ff5940df733b4c50aedb7c Author: Lasse Collin Date: 2011-04-09 15:11:13 +0300 xz: Minor internal changes to handling of --threads. Now it always defaults to one thread. Maybe this will change again if a threading method is added that doesn't affect memory usage. src/xz/args.c | 4 ++-- src/xz/hardware.c | 24 ++++++++++++------------ src/xz/hardware.h | 9 ++++----- 3 files changed, 18 insertions(+), 19 deletions(-) commit 9edd6ee895fbe71d245a173f48e511f154a99875 Author: Lasse Collin Date: 2011-04-08 17:53:05 +0300 xz: Change size_t to uint32_t in a few places. src/xz/coder.c | 6 +++--- src/xz/coder.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) commit 411013ea4506a6df24d35a060fcbd73a57b73eb3 Author: Lasse Collin Date: 2011-04-08 17:48:41 +0300 xz: Fix a typo in a comment. src/xz/coder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b34c5ce4b22e8d7b81f9895d15054af41d17f805 Author: Lasse Collin Date: 2011-04-05 22:41:33 +0300 liblzma: Use TUKLIB_GNUC_REQ to check GCC version in sha256.c. src/liblzma/check/sha256.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit db33117cc85c17e0b897b5312bd5eb43aac41c03 Author: Lasse Collin Date: 2011-04-05 17:12:20 +0300 Build: Upgrade m4/acx_pthread.m4 to the latest version. It was renamed to ax_pthread.m4 in Autoconf Archive. configure.ac | 2 +- m4/{acx_pthread.m4 => ax_pthread.m4} | 170 ++++++++++++++++++----------------- 2 files changed, 88 insertions(+), 84 deletions(-) commit 1039bfcfc098b69d56ecb39d198a092552eacf6d Author: Lasse Collin Date: 2011-04-05 15:27:26 +0300 xz: Use posix_fadvise() if it is available. configure.ac | 3 +++ src/xz/file_io.c | 15 +++++++++++++++ 2 files changed, 18 insertions(+) commit 1ef3cf44a8eb9512480af4482a5232ea08363b14 Author: Lasse Collin Date: 2011-04-05 15:13:29 +0300 xz: Call lzma_end(&strm) before exiting if debugging is enabled. src/xz/coder.c | 10 ++++++++++ src/xz/coder.h | 5 +++++ src/xz/main.c | 4 ++++ 3 files changed, 19 insertions(+) commit bd432015d33dcade611d297bc01eb0700088ef6c Author: Lasse Collin Date: 2011-04-02 14:49:56 +0300 liblzma: Fix a memory leak in stream_encoder.c. It leaks old filter options structures (hundred bytes or so) every time the lzma_stream is reinitialized. With the xz tool, this happens when compressing multiple files. src/liblzma/common/stream_encoder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 16889013214e7620d204b6e6c1bf9f3103a13655 Author: Lasse Collin Date: 2011-04-01 08:47:20 +0300 Updated NEWS for 5.0.2. NEWS | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit 85cdf7dd4e97b078e7b929e47f55a7f1da36010f Author: Lasse Collin Date: 2011-03-31 15:06:58 +0300 Update INSTALL with another note about IRIX. INSTALL | 4 ++++ 1 file changed, 4 insertions(+) commit c3f4995586873d6a4fb7e451010a128571a9a370 Author: Lasse Collin Date: 2011-03-31 12:22:55 +0300 Tests: Add a new file to test empty LZMA2 streams. tests/files/README | 4 ++++ tests/files/good-1-lzma2-5.xz | Bin 0 -> 52 bytes 2 files changed, 4 insertions(+) commit 0d21f49a809dc2088da6cc0da7f948404df7ecfa Author: Lasse Collin Date: 2011-03-31 11:54:48 +0300 liblzma: Fix decoding of LZMA2 streams having no uncompressed data. The decoder considered empty LZMA2 streams to be corrupt. This shouldn't matter much with .xz files, because no encoder creates empty LZMA2 streams in .xz. This bug is more likely to cause problems in applications that use raw LZMA2 streams. src/liblzma/lzma/lzma2_decoder.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 40277998cb9bad564ce4827aff152e6e1c904dfa Author: Lasse Collin Date: 2011-03-24 01:42:49 +0200 Scripts: Better fix for xzgrep. Now it uses "grep -q". Thanks to Gregory Margo. src/scripts/xzgrep.in | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 2118733045ad0ca183a3f181a0399baf876983a6 Author: Lasse Collin Date: 2011-03-24 01:22:18 +0200 Updated THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit c7210d9a3fca6f31a57208bfddfc9ab20a2e097a Author: Lasse Collin Date: 2011-03-24 01:21:32 +0200 Scripts: Fix xzgrep -l. It didn't work at all. It tried to use the -q option for grep, but it appended it after "--". This works around it by redirecting to /dev/null. The downside is that this can be slower with big files compared to proper use of "grep -q". Thanks to Gregory Margo. src/scripts/xzgrep.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 4eb83e32046a6d670862bc91c3d82530963b455e Author: Lasse Collin Date: 2011-03-19 13:08:22 +0200 Scripts: Add lzop (.lzo) support to xzdiff and xzgrep. src/scripts/xzdiff.1 | 6 ++++-- src/scripts/xzdiff.in | 22 ++++++++++++++-------- src/scripts/xzgrep.1 | 11 +++++++---- src/scripts/xzgrep.in | 5 +++-- 4 files changed, 28 insertions(+), 16 deletions(-) commit 923b22483bd9356f3219b2b784d96f455f4dc499 Author: Lasse Collin Date: 2011-03-18 19:10:30 +0200 xz: Add --block-size=SIZE. This uses LZMA_FULL_FLUSH every SIZE bytes of input. Man page wasn't updated yet. src/xz/args.c | 7 +++++++ src/xz/coder.c | 50 ++++++++++++++++++++++++++++++++++++++++---------- src/xz/coder.h | 3 +++ src/xz/message.c | 4 ++++ 4 files changed, 54 insertions(+), 10 deletions(-) commit 57597d42ca1740ad506437be168d800a50f1a0ad Author: Lasse Collin Date: 2011-03-18 18:19:19 +0200 xz: Add --single-stream. This can be useful when there is garbage after the compressed stream (.xz, .lzma, or raw stream). Man page wasn't updated yet. src/xz/args.c | 6 ++++++ src/xz/coder.c | 11 +++++++++-- src/xz/coder.h | 3 +++ src/xz/message.c | 6 +++++- 4 files changed, 23 insertions(+), 3 deletions(-) commit 96f94bc925d579a700147fa5d7793b64d69cfc18 Author: Lasse Collin Date: 2011-02-04 22:49:31 +0200 xz: Clean up suffix.c. struct suffix_pair isn't needed in compresed_name() so get rid of it there. src/xz/suffix.c | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) commit 8930c7ae3f82bdae15aa129f01de08be23d7e8d7 Author: Lasse Collin Date: 2011-02-04 11:29:47 +0200 xz: Check if the file already has custom suffix when compressing. Now "xz -S .test foo.test" refuses to compress the file because it already has the suffix .test. The man page had it documented this way already. src/xz/suffix.c | 9 +++++++++ 1 file changed, 9 insertions(+) commit 940d5852c6cf08abccc6befd9d1b5411c9076a58 Author: Lasse Collin Date: 2011-02-02 23:01:51 +0200 Updated THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 4ebe65f839613f27f127bab7b8c347d982330ee3 Author: Lasse Collin Date: 2011-02-02 23:00:33 +0200 Translations: Add Polish translation. Thanks to Jakub Bogusz. po/LINGUAS | 1 + po/pl.po | 825 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 826 insertions(+) commit fc1d292dca1925dfd17174f443f91a696ecd5bf8 Author: Lasse Collin Date: 2011-02-02 22:24:00 +0200 Updated THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit 6dd061adfd2775428b079eb03d6fd47d7c0f1ffe Merge: 9d542ce 5fbce0b Author: Lasse Collin Date: 2011-02-06 20:13:01 +0200 Merge commit '5fbce0b8d96dc96775aa0215e3581addc830e23d' commit 5fbce0b8d96dc96775aa0215e3581addc830e23d Author: Lasse Collin Date: 2011-01-28 20:16:57 +0200 Update NEWS for 5.0.1. NEWS | 14 ++++++++++++++ 1 file changed, 14 insertions(+) commit 03ebd1bbb314f9f204940219a835c883bf442475 Author: Lasse Collin Date: 2011-01-26 12:19:08 +0200 xz: Fix --force on setuid/setgid/sticky and multi-hardlink files. xz didn't compress setuid/setgid/sticky files and files with multiple hard links even with --force. This bug was introduced in 23ac2c44c3ac76994825adb7f9a8f719f78b5ee4. Thanks to Charles Wilson. src/xz/file_io.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) commit 9d542ceebcbe40b174169c132ccfcdc720ca7089 Merge: 4f2c69a 7bd0a5e Author: Lasse Collin Date: 2011-01-19 11:45:35 +0200 Merge branch 'v5.0' commit 7bd0a5e7ccc354f7c2e95c8bc27569c820f6a136 Author: Lasse Collin Date: 2011-01-18 21:25:24 +0200 Updated THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit f71c4e16e913f660977526f0ef8d2acdf458d7c9 Author: Lasse Collin Date: 2011-01-18 21:23:50 +0200 Add alloc_size and malloc attributes to a few functions. Thanks to Cristian Rodríguez for the original patch. src/common/sysdefs.h | 6 ++++++ src/liblzma/common/common.h | 2 +- src/xz/util.h | 5 +++-- 3 files changed, 10 insertions(+), 3 deletions(-) commit 316cbe24465143edde8f6ffb7532834b7b2ea93f Author: Lasse Collin Date: 2010-12-13 16:36:33 +0200 Scripts: Fix gzip and bzip2 support in xzdiff. src/scripts/xzdiff.in | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 4f2c69a4e3e0aee2e37b0b1671d34086e20c8ac6 Merge: adb89e6 9311774 Author: Lasse Collin Date: 2010-12-12 23:13:22 +0200 Merge branch 'v5.0' commit 9311774c493c19deab51ded919dcd2e9c4aa2829 Author: Lasse Collin Date: 2010-12-12 21:23:55 +0200 Build: Enable ASM on DJGPP by default. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4a42aaee282fc73b482581684d65110506d5efdd Author: Lasse Collin Date: 2010-12-12 16:09:42 +0200 Updated THANKS. THANKS | 1 + 1 file changed, 1 insertion(+) commit ce56f63c41ee210e6308090eb6d49221fdf67d6c Author: Lasse Collin Date: 2010-12-12 16:07:11 +0200 Add missing PRIx32 and PRIx64 compatibility definitions. This fixes portability to systems that lack C99 inttypes.h. Thanks to Juan Manuel Guerrero. src/common/sysdefs.h | 9 +++++++++ 1 file changed, 9 insertions(+) commit e6baedddcf54e7da049ebc49183565b99facd4c7 Author: Lasse Collin Date: 2010-12-12 14:50:04 +0200 DOS-like: Treat \ and : as directory separators in addition to /. Juan Manuel Guerrero had fixed this in his XZ Utils port to DOS/DJGPP. The bug affects also Windows and OS/2. src/xz/suffix.c | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) commit adb89e68d43a4cadb0c215b45ef7a75737c9c3ec Merge: 7c24e0d b7afd3e Author: Lasse Collin Date: 2010-12-07 18:53:04 +0200 Merge branch 'v5.0' commit b7afd3e22a8fac115b75c738d40d3eb1de7e286f Author: Lasse Collin Date: 2010-12-07 18:52:04 +0200 Translations: Fix Czech translation of "sparse file". Thanks to Petr Hubený and Marek Černocký. po/cs.po | 88 ++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 44 insertions(+), 44 deletions(-) commit 7c24e0d1b8a2e86e9263b0d56d39621e01aed7af Merge: b4d42f1 3e56470 Author: Lasse Collin Date: 2010-11-15 14:33:01 +0200 Merge branch 'v5.0' commit 3e564704bc6f463cb2db11e3f3f0dbd71d85992e Author: Lasse Collin Date: 2010-11-15 14:28:26 +0200 liblzma: Document the return value of lzma_lzma_preset(). src/liblzma/api/lzma/lzma.h | 3 +++ 1 file changed, 3 insertions(+) commit 2964d8d691ed92abdcf214888d79ad6d79774735 Author: Jonathan Nieder Date: 2010-11-12 15:22:13 -0600 Simplify paths in generated API docs Currently the file list generated by Doxygen has src/ at the beginning of each path. Paths like common/sysdefs.h and liblzma/api/lzma.h are easier to read without such a prefix. Builds from a separate build directory with mkdir build cd build ../configure doxygen Doxyfile include an even longer prefix /home/someone/src/xz/src; this patch has the nice side-effect of eliminating that prefix, too. Fixes: http://bugs.debian.org/572273 Doxyfile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b4d42f1a7120e2cefeb2f14425efe2ca6db85416 Author: Anders F Bjorklund Date: 2010-11-05 12:56:11 +0100 add build script for macosx universal macosx/build.sh | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) commit 15ee6935abe4a2fc76639ee342ca2e69af3e0ad6 Author: Lasse Collin Date: 2010-11-04 18:31:40 +0200 Update the copies of GPLv2 and LGPLv2.1 from gnu.org. There are only a few white space changes. COPYING.GPLv2 | 14 +++++++------- COPYING.LGPLv2.1 | 16 +++++++--------- 2 files changed, 14 insertions(+), 16 deletions(-) commit 8e355f7fdbeee6fe394eb02a28f267ce99a882a2 Merge: 974ebe6 37c2565 Author: Lasse Collin Date: 2010-10-26 15:53:06 +0300 Merge branch 'v5.0' commit 37c25658efd25b034266daf87cd381d20d1df776 Author: Lasse Collin Date: 2010-10-26 15:48:48 +0300 Build: Copy the example programs to $docdir/examples. The example programs by Daniel Mealha Cabrita were included in the git repository, but I had forgot to add them to Makefile.am. Thus, they didn't get included in the source package at all by "make dist". Makefile.am | 5 +++++ windows/build.bash | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) commit 974ebe63497bdf0d262e06474f0dd5a70b1dd000 Author: Lasse Collin Date: 2010-10-26 10:36:41 +0300 liblzma: Rename a few variables and constants. This has no semantic changes. I find the new names slightly more logical and they match the names that are already used in XZ Embedded. The name fastpos wasn't changed (not worth the hassle). src/liblzma/lzma/fastpos.h | 55 +++++------ src/liblzma/lzma/lzma2_encoder.c | 2 +- src/liblzma/lzma/lzma_common.h | 45 ++++----- src/liblzma/lzma/lzma_decoder.c | 58 +++++------ src/liblzma/lzma/lzma_encoder.c | 56 +++++------ src/liblzma/lzma/lzma_encoder_optimum_fast.c | 9 +- src/liblzma/lzma/lzma_encoder_optimum_normal.c | 128 ++++++++++++------------- src/liblzma/lzma/lzma_encoder_private.h | 16 ++-- 8 files changed, 183 insertions(+), 186 deletions(-) commit 7c427ec38d016c0070a42315d752857e33792fc4 Author: Lasse Collin Date: 2010-10-25 12:59:25 +0300 Bump version 5.1.0alpha. src/liblzma/api/lzma/version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e45929260cd902036efd40c5610a8d0a50d5712b Author: Lasse Collin Date: 2010-10-23 17:25:52 +0300 Build: Fix mydist rule when .git doesn't exist. Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 6e1326fcdf6b6209949be57cfe3ad4b781b65168 Author: Lasse Collin Date: 2010-10-23 14:15:35 +0300 Add NEWS for 5.0.0. NEWS | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) commit b667a3ef6338a2c1db7b7706b1f6c99ea392221c Author: Lasse Collin Date: 2010-10-23 14:02:53 +0300 Bump version to 5.0.0 and liblzma version-info to 5:0:0. src/liblzma/Makefile.am | 2 +- src/liblzma/api/lzma/version.h | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-)