ALT Linux Bugzilla
– Attachment 13317 Details for
Bug 46323
xz update to 5.4.3 version
New bug
|
Search
|
[?]
|
Help
Register
|
Log In
[x]
|
Forgot Password
Login:
[x]
|
EN
|
RU
[patch]
patch for 5.2.5 => 5.4.3
xz-5.4.3.patch (text/plain), 3.11 MB, created by
VikaB
on 2023-05-31 09:04:31 MSK
(
hide
)
Description:
patch for 5.2.5 => 5.4.3
Filename:
MIME Type:
Creator:
VikaB
Created:
2023-05-31 09:04:31 MSK
Size:
3.11 MB
patch
obsolete
>diff -ur xz-5.2.5/AUTHORS xz-5.4.3/AUTHORS >--- xz-5.2.5/AUTHORS 2020-03-17 17:28:50 >+++ xz-5.4.3/AUTHORS 2023-05-04 17:21:05 >@@ -3,21 +3,33 @@ > =================== > > XZ Utils is developed and maintained by Lasse Collin >- <lasse.collin@tukaani.org>. >+ <lasse.collin@tukaani.org> and Jia Tan <jiat0218@gmail.com>. > > Major parts of liblzma are based on code written by Igor Pavlov, >- specifically the LZMA SDK <http://7-zip.org/sdk.html>. Without >+ specifically the LZMA SDK <https://7-zip.org/sdk.html>. Without > this code, XZ Utils wouldn't exist. > > The SHA-256 implementation in liblzma is based on the code found from >- 7-Zip <http://7-zip.org/>, which has a modified version of the SHA-256 >- code found from Crypto++ <http://www.cryptopp.com/>. The SHA-256 code >+ 7-Zip <https://7-zip.org/>, which has a modified version of the SHA-256 >+ code found from Crypto++ <https://www.cryptopp.com/>. The SHA-256 code > in Crypto++ was written by Kevin Springle and Wei Dai. > > Some scripts have been adapted from gzip. The original versions > were written by Jean-loup Gailly, Charles Levert, and Paul Eggert. > Andrew Dudman helped adapting the scripts and their man pages for > XZ Utils. >+ >+ The initial version of the threaded .xz decompressor was written >+ by Sebastian Andrzej Siewior. >+ >+ The initial version of the .lz (lzip) decoder was written >+ by MichaÅ Górny. >+ >+ CLMUL-accelerated CRC code was contributed by Ilya Kurdyukov. >+ >+ Other authors: >+ - Jonathan Nieder >+ - Joachim Henke > > The GNU Autotools-based build system contains files from many authors, > which I'm not trying to list here. >Only in xz-5.4.3: CMakeLists.txt >diff -ur xz-5.2.5/COPYING xz-5.4.3/COPYING >--- xz-5.2.5/COPYING 2020-03-17 17:28:50 >+++ xz-5.4.3/COPYING 2023-05-04 17:21:05 >@@ -21,6 +21,17 @@ > XZ Utils specific documentation files in other directories > are in the public domain. > >+ Note: The JavaScript files (under the MIT license) have >+ been removed from the Doxygen-generated HTML version of the >+ liblzma API documentation. Doxygen itself is under the GNU GPL >+ but the remaining files generated by Doxygen are not affected >+ by the licenses used in Doxygen because Doxygen licensing has >+ the following exception: >+ >+ "Documents produced by doxygen are derivative works >+ derived from the input used in their production; >+ they are not affected by this license." >+ > - Translated messages are in the public domain. > > - The build system contains public domain files, and files that >diff -ur xz-5.2.5/COPYING.GPLv3 xz-5.4.3/COPYING.GPLv3 >--- xz-5.2.5/COPYING.GPLv3 2020-03-17 17:28:50 >+++ xz-5.4.3/COPYING.GPLv3 2023-05-04 17:21:05 >@@ -1,7 +1,7 @@ > GNU GENERAL PUBLIC LICENSE > Version 3, 29 June 2007 > >- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> >+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> > Everyone is permitted to copy and distribute verbatim copies > of this license document, but changing it is not allowed. > >@@ -645,7 +645,7 @@ > GNU General Public License for more details. > > You should have received a copy of the GNU General Public License >- along with this program. If not, see <http://www.gnu.org/licenses/>. >+ along with this program. If not, see <https://www.gnu.org/licenses/>. > > Also add information on how to contact you by electronic and paper mail. > >@@ -664,11 +664,11 @@ > You should also get your employer (if you work as a programmer) or school, > if any, to sign a "copyright disclaimer" for the program, if necessary. > For more information on this, and how to apply and follow the GNU GPL, see >-<http://www.gnu.org/licenses/>. >+<https://www.gnu.org/licenses/>. > > The GNU General Public License does not permit incorporating your program > into proprietary programs. If your program is a subroutine library, you > may consider it more useful to permit linking proprietary applications with > the library. If this is what you want to do, use the GNU Lesser General > Public License instead of this License. But first, please read >-<http://www.gnu.org/philosophy/why-not-lgpl.html>. >+<https://www.gnu.org/licenses/why-not-lgpl.html>. >diff -ur xz-5.2.5/ChangeLog xz-5.4.3/ChangeLog >--- xz-5.2.5/ChangeLog 2020-03-17 17:31:45 >+++ xz-5.4.3/ChangeLog 2023-05-04 17:33:10 >@@ -1,6947 +1,10186 @@ >-commit 2327a461e1afce862c22269b80d3517801103c1b >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-17 16:27:42 +0200 >+commit 238b4e5458b4bd2cadefb768b8ea7c6b70a191ac >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-05-04 20:38:52 +0800 > >- Bump version and soname for 5.2.5. >+ Translations: Update the Croatian translation. > >+ po/hr.po | 6 +++--- >+ 1 file changed, 3 insertions(+), 3 deletions(-) >+ >+commit 0cee63c3c6c4f9084a5e7fa7c15a1863ac8e5ffc >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-05-04 19:50:42 +0800 >+ >+ Bump version and soname for 5.4.3. >+ > src/liblzma/Makefile.am | 2 +- > src/liblzma/api/lzma/version.h | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > >-commit 3be82d2f7dc882258caf0f0a69214e5916b2bdda >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-17 16:26:04 +0200 >+commit 01f937ea9a49005c5091c0165fa0c1e572dd1749 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-05-02 20:39:56 +0800 > >- Update NEWS for 5.2.5. >+ Add NEWS for 5.4.3. > >- NEWS | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- 1 file changed, 105 insertions(+) >+ NEWS | 10 ++++++++++ >+ 1 file changed, 10 insertions(+) > >-commit ab3e57539c7337f0653b13b75dbc5d03ade9700e >+commit e9b9ea953179502d5245b4e6ca4f5ffe9d5797b1 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-16 21:57:21 +0200 >+Date: 2023-05-03 22:46:42 +0300 > >- Translations: Rebuild cs.po to avoid incorrect fuzzy strings. >+ tuklib_integer.h: Fix a recent copypaste error in Clang detection. > >- "make dist" updates the .po files and the fuzzy strings would >- result in multiple very wrong translations. >+ Wrong line was changed in 7062348bf35c1e4cbfee00ad9fffb4a21aa6eff7. >+ Also, this has >= instead of == since ints larger than 32 bits would >+ work too even if not relevant in practice. > >- po/cs.po | 592 ++++++++++++++++++++++++++++++++++----------------------------- >- 1 file changed, 322 insertions(+), 270 deletions(-) >+ src/common/tuklib_integer.h | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit 3a6f38309dc5d44d8a63ebb337b6b2028561c93e >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-16 20:01:37 +0200 >+commit be6e39a8622f0d905072874ec25b1ffd155b12e1 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-04-20 20:15:00 +0800 > >- README: Update outdated sections. >+ Update THANKS. > >- README | 21 +++++++++++---------- >- 1 file changed, 11 insertions(+), 10 deletions(-) >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) > >-commit 9cc0901798217e258e91c13cf6fda7ad42ba108c >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-16 19:46:27 +0200 >+commit 9e343a46cf87a345799222c0b0b3a6f3358dde0c >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-04-19 22:22:16 +0800 > >- README: Mention that translatable strings will change after 5.2.x. >+ Windows: Include <intrin.h> when needed. >+ >+ Legacy Windows did not need to #include <intrin.h> to use the MSVC >+ intrinsics. Newer versions likely just issue a warning, but the MSVC >+ documentation says to include the header file for the intrinsics we use. >+ >+ GCC and Clang can "pretend" to be MSVC on Windows, so extra checks are >+ needed in tuklib_integer.h to only include <intrin.h> when it will is >+ actually needed. > >- README | 74 +++--------------------------------------------------------------- >- 1 file changed, 3 insertions(+), 71 deletions(-) >+ src/common/tuklib_integer.h | 6 ++++++ >+ src/liblzma/common/memcmplen.h | 10 ++++++++++ >+ 2 files changed, 16 insertions(+) > >-commit cc163574249f6a4a66f3dc09d6fe5a71bee24fab >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-16 19:39:45 +0200 >+commit 12321a9390acc076b414035a46df9d7545ac379f >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-04-19 21:59:03 +0800 > >- README: Mention that man pages can be translated. >+ tuklib_integer: Use __builtin_clz() with Clang. >+ >+ Clang has support for __builtin_clz(), but previously Clang would >+ fallback to either the MSVC intrinsic or the regular C code. This was >+ discovered due to a bug where a new version of Clang required the >+ <intrin.h> header file in order to use the MSVC intrinsics. >+ >+ Thanks to Anton Kochkov for notifying us about the bug. > >- README | 7 ++++--- >- 1 file changed, 4 insertions(+), 3 deletions(-) >+ src/common/tuklib_integer.h | 6 +++--- >+ 1 file changed, 3 insertions(+), 3 deletions(-) > >-commit ca261994edc3f2d03d5589c037171c63471ee9dc >+commit d1f0e01c395960efd6c29ff144eda4f4c8c1c6d3 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-16 17:30:39 +0200 >+Date: 2023-04-14 18:42:33 +0300 > >- Translations: Add partial Danish translation. >+ liblzma: Update project maintainers in lzma.h. > >- I made a few minor white space changes without getting them >- approved by the Danish translation team. >+ AUTHORS was updated earlier, lzma.h was simply forgotten. > >- po/LINGUAS | 1 + >- po/da.po | 896 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- 2 files changed, 897 insertions(+) >+ src/liblzma/api/lzma.h | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 51cd5d051fc730d61411dee292e863582784e189 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-16 16:43:29 +0200 >+commit 8204c5d1304e1e3b7487801b4acaf8e3179a6c52 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-04-13 20:45:19 +0800 > >- Update INSTALL.generic from Automake 1.16.1. >+ liblzma: Cleans up old commented out code. > >- INSTALL.generic | 321 ++++++++++++++++++++++++++++---------------------------- >- 1 file changed, 162 insertions(+), 159 deletions(-) >+ src/liblzma/common/alone_encoder.c | 11 ----------- >+ 1 file changed, 11 deletions(-) > >-commit 69d694e5f1beae2bbfa3b6c348ec0ec5f14b5cd0 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-15 15:27:22 +0200 >+commit 32980d1562bc031013306be1c787761fa63da87d >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-28 22:32:40 +0800 > >- Update INSTALL for Windows and DOS and add preliminary info for z/OS. >+ CMake: Update liblzma-config.cmake generation. >+ >+ Now that the threading is configurable, the liblzma CMake package only >+ needs the threading library when using POSIX threads. > >- INSTALL | 51 +++++++++++++++++++++++++++++++++++++++++---------- >- 1 file changed, 41 insertions(+), 10 deletions(-) >+ CMakeLists.txt | 33 ++++++++++++++++++++++----------- >+ 1 file changed, 22 insertions(+), 11 deletions(-) > >-commit 2c3b1bb80a3ca7e09728fe4d7a1d8648a5cb9bca >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-15 15:26:20 +0200 >+commit 023907faa965476fb921a6344253c50e0ba795f9 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-28 22:25:33 +0800 > >- Build: Update m4/ax_pthread.m4 from Autoconf Archive (again). >+ CMake: Allows setting thread method. >+ >+ The thread method is now configurable for the CMake build. It matches >+ the Autotools build by allowing ON (pick the best threading method), >+ OFF (no threading), posix, win95, and vista. If both Windows and >+ posix threading are both available, then ON will choose Windows >+ threading. Windows threading will also not use: >+ >+ target_link_libraries(liblzma Threads::Threads) >+ >+ since on systems like MinGW-w64 it would link the posix threads >+ without purpose. > >- m4/ax_pthread.m4 | 219 +++++++++++++++++++++++++++++-------------------------- >- 1 file changed, 117 insertions(+), 102 deletions(-) >+ CMakeLists.txt | 144 +++++++++++++++++++++++++++++++++++++++++---------------- >+ 1 file changed, 104 insertions(+), 40 deletions(-) > >-commit 74a5af180a6a6c4b8c90cefb37ee900d3fea7dc6 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-11 21:15:35 +0200 >+commit ba176d77cbb164b13006516660fc1ff6c59dedb5 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-24 20:05:59 +0800 > >- 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. >+ CMake: Only build xzdec if decoders are enabled. > >- src/xz/util.c | 14 ++++++++++++-- >- 1 file changed, 12 insertions(+), 2 deletions(-) >+ CMakeLists.txt | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit ceba0d25e826bcdbf64bb4cb03385a2a66f8cbcb >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-11 19:38:08 +0200 >+commit c99d697df800e9bc47e09facf88bcfdb9e0264a5 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-22 15:42:04 +0800 > >- DOS: Update dos/Makefile for DJGPP 2.05. >- >- It doesn't need -fgnu89-inline like 2.04beta did. >+ Build: Removes redundant check for LZMA1 filter support. > >- dos/Makefile | 4 +--- >- 1 file changed, 1 insertion(+), 3 deletions(-) >+ src/liblzma/lzma/Makefile.inc | 5 +---- >+ 1 file changed, 1 insertion(+), 4 deletions(-) > >-commit 29e5bd71612253281fb22bbaa0a566990a74dcc3 >+commit 54a2fd8c850e626343b79c4cc8fcac2f638ec890 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-11 19:36:07 +0200 >+Date: 2023-03-23 15:14:29 +0200 > >- DOS: Update instructions in dos/INSTALL.txt. >+ CMake: Bump maximum policy version to 3.26. >+ >+ It adds only one new policy related to FOLDERS which we don't use. >+ This makes it clear that the code is compatible with the policies >+ up to 3.26. > >- dos/INSTALL.txt | 59 ++++++++++++++++++++++++++++----------------------------- >- 1 file changed, 29 insertions(+), 30 deletions(-) >+ CMakeLists.txt | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 00a037ee9c8ee5a03cf9744e05570ae93d56b875 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-11 17:58:51 +0200 >+commit 622d0fdc02d5f565c2872d79bc70c669c95c8284 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-21 23:36:00 +0800 > >- DOS: Update config.h. >- >- The added defines assume GCC >= 4.8. >+ CMake: Conditionally build xz list.* files if decoders are enabled. > >- dos/config.h | 8 ++++++++ >- 1 file changed, 8 insertions(+) >+ CMakeLists.txt | 9 +++++++-- >+ 1 file changed, 7 insertions(+), 2 deletions(-) > >-commit 4ec2feaefa310b4249eb41893caf526e5c51ee39 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-11 22:37:54 +0200 >+commit 3e2dc523c596cd770a6a7c58cacc0d0d8761e853 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-25 11:46:50 +0800 > >- Translations: Add hu, zh_CN, and zh_TW. >+ CMake: Allow configuring features as cache variables. > >- 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.) >+ This allows users to change the features they build either in >+ CMakeCache.txt or by using a CMake GUI. The sources built for >+ liblzma are affected by this too, so only the necessary files >+ will be compiled. > >- po/LINGUAS | 3 + >- po/hu.po | 985 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- po/zh_CN.po | 963 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- po/zh_TW.po | 956 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- 4 files changed, 2907 insertions(+) >+ CMakeLists.txt | 528 ++++++++++++++++++++++++++++++++++++++++++--------------- >+ 1 file changed, 391 insertions(+), 137 deletions(-) > >-commit b6ed09729ae408be4533a0ddbc7df3d6f566846a >+commit 0c053f97337fa4ead77acefb577e8e86f8ef388d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-11 14:33:30 +0200 >+Date: 2023-03-21 14:07:51 +0200 > >- Translations: Update vi.po to match the file from the TP. >+ Build: Add a comment that AC_PROG_CC_C99 is needed for Autoconf 2.69. > >- The translated strings haven't been updated but word wrapping >- is different. >+ It's obsolete in Autoconf >= 2.70 and just an alias for AC_PROG_CC >+ but Autoconf 2.69 requires AC_PROG_CC_C99 to get a C99 compiler. > >- po/vi.po | 407 ++++++++++++++++++++++++++++----------------------------------- >- 1 file changed, 179 insertions(+), 228 deletions(-) >+ configure.ac | 3 +++ >+ 1 file changed, 3 insertions(+) > >-commit 7c85e8953ced204c858101872a15183e4639e9fb >+commit 915d4f6058d52f84d2b58b0a5f3c8272eaa6c1bd > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-11 14:18:03 +0200 >+Date: 2023-03-21 14:04:37 +0200 > >- Translations: Add fi and pt_BR, and update de, fr, it, and pl. >+ Build: configure.ac: Use AS_IF and AS_CASE where required. > >- 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. >+ This makes no functional difference in the generated configure >+ (at least with the Autotools versions I have installed) but this >+ change might prevent future bugs like the one that was just >+ fixed in the commit 5a5bd7f871818029d5ccbe189f087f591258c294. > >- 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(-) >+ configure.ac | 30 +++++++++++++++--------------- >+ 1 file changed, 15 insertions(+), 15 deletions(-) > >-commit 7da3ebc67fb5414034685ec16c7a29dad03dfa9b >+commit b848c039586ed2cddb6fb033680dac107cc5143f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-25 21:35:14 +0200 >+Date: 2023-03-21 13:12:03 +0200 > > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 1acc48794364606c9091cae6fa56db75a1325114 >+commit c775ba1602a74f29dbc2088bbe4d02c23fc32ba1 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-03-11 13:05:29 +0200 >+Date: 2023-03-21 13:11:49 +0200 > >- Build: Add very limited experimental CMake support. >+ Build: Fix --disable-threads breaking the building of shared libs. > >- 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. >+ This is broken in the releases 5.2.6 to 5.4.2. A workaround >+ for these releases is to pass EGREP='grep -E' as an argument >+ to configure in addition to --disable-threads. >+ >+ The problem appeared when m4/ax_pthread.m4 was updated in >+ the commit 6629ed929cc7d45a11e385f357ab58ec15e7e4ad which >+ introduced the use of AC_EGREP_CPP. AC_EGREP_CPP calls >+ AC_REQUIRE([AC_PROG_EGREP]) to set the shell variable EGREP >+ but this was only executed if POSIX threads were enabled. >+ Libtool code also has AC_REQUIRE([AC_PROG_EGREP]) but Autoconf >+ omits it as AC_PROG_EGREP has already been required earlier. >+ Thus, if not using POSIX threads, the shell variable EGREP >+ would be undefined in the Libtool code in configure. >+ >+ ax_pthread.m4 is fine. The bug was in configure.ac which called >+ AX_PTHREAD conditionally in an incorrect way. Using AS_CASE >+ ensures that all AC_REQUIREs get always run. >+ >+ Thanks to Frank Busse for reporting the bug. >+ Fixes: https://github.com/tukaani-project/xz/issues/45 > >- 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(+) >+ configure.ac | 16 ++++++++-------- >+ 1 file changed, 8 insertions(+), 8 deletions(-) > >-commit 9acc6abea1552803c74c1486fbb10af119550772 >+commit 0673c9ec98b6bae12b33dc295564514aaa26e2fc > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-27 20:24:27 +0200 >+Date: 2023-03-19 22:45:59 +0200 > >- Build: Add support for --no-po4a option to autogen.sh. >+ liblzma: Silence -Wsign-conversion in SSE2 code in memcmplen.h. > >- 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. >+ Thanks to Christian Hesse for reporting the issue. >+ Fixes: https://github.com/tukaani-project/xz/issues/44 > >- autogen.sh | 11 ++++++++++- >- 1 file changed, 10 insertions(+), 1 deletion(-) >+ src/liblzma/common/memcmplen.h | 3 ++- >+ 1 file changed, 2 insertions(+), 1 deletion(-) > >-commit c8853b31545db7bd0551be85949624b1261efd47 >+commit 6ca8046ecbc7a1c81ee08f544bfd1414819fb2e8 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-18 23:22:06 +0800 >+ >+ Bump version and soname for 5.4.2. >+ >+ src/liblzma/Makefile.am | 2 +- >+ src/liblzma/api/lzma/version.h | 2 +- >+ 2 files changed, 2 insertions(+), 2 deletions(-) >+ >+commit ce4f246600db10e77fc93d492ea045b4c9830bc6 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-18 22:10:57 +0800 >+ >+ Add NEWS for 5.4.2. >+ >+ NEWS | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 48 insertions(+) >+ >+commit 3634fe330788fc0df217acdb6581031a851600a3 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-24 23:37:07 +0200 >+Date: 2023-03-18 16:00:54 +0200 > >- Update m4/.gitignore. >+ Update the copy of GNU GPLv3 from gnu.org to COPYING.GPLv3. > >- m4/.gitignore | 1 + >- 1 file changed, 1 insertion(+) >+ COPYING.GPLv3 | 8 ++++---- >+ 1 file changed, 4 insertions(+), 4 deletions(-) > >-commit 901eb4a8c992354c3ea482f5bad60a1f8ad6fcc8 >+commit 97679d25ce7cb014328f1455bb338903c003d54f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-24 23:01:00 +0200 >+Date: 2023-03-18 15:51:57 +0200 > >- liblzma: Remove unneeded <sys/types.h> from fastpos_tablegen.c. >+ Change a few HTTP URLs to HTTPS. > >- This file only generates fastpos_table.c. >- It isn't built as a part of liblzma. >+ The xz man page timestamp was intentionally left unchanged. > >- src/liblzma/lzma/fastpos_tablegen.c | 1 - >- 1 file changed, 1 deletion(-) >+ INSTALL | 2 +- >+ README | 8 ++++---- >+ configure.ac | 2 +- >+ dos/INSTALL.txt | 4 ++-- >+ src/liblzma/api/lzma.h | 8 ++++---- >+ src/liblzma/check/sha256.c | 2 +- >+ src/xz/xz.1 | 2 +- >+ windows/INSTALL-MinGW.txt | 10 +++++----- >+ 8 files changed, 19 insertions(+), 19 deletions(-) > >-commit ac35c9585fb734b7a19785d490c152e0b8cd4663 >+commit 01a67e89a56c3ebf5f6681bd06f0edc22a1ae594 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-18 00:40:28 +0800 >+ >+ CMake: Fix typo in a comment. >+ >+ CMakeLists.txt | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) >+ >+commit 5dca3f5cbab31105196c89cd6df0a9bbc3307c05 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-22 14:15:07 +0200 >+Date: 2023-03-17 18:36:22 +0200 > >- Use defined(__GNUC__) before __GNUC__ in preprocessor lines. >- >- This should silence the equivalent of -Wundef in compilers that >- don't define __GNUC__. >+ Windows: build.bash: Copy liblzma API docs to the output package. > >- src/common/sysdefs.h | 3 ++- >- src/liblzma/api/lzma.h | 5 +++-- >- 2 files changed, 5 insertions(+), 3 deletions(-) >+ windows/build.bash | 3 ++- >+ 1 file changed, 2 insertions(+), 1 deletion(-) > >-commit fb9cada7cfade1156d6277717280e05b5cd342d6 >+commit ae252862b30b509ab88b2bbcaa08e8d51b57e928 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-21 17:40:02 +0200 >+Date: 2023-03-17 08:53:38 +0200 > >- liblzma: Add more uses of lzma_memcmplen() to the normal mode of LZMA. >+ Windows: Add microlzma_*.c to the VS project files. > >- This gives a tiny encoder speed improvement. This could have been done >- in 2014 after the commit 544aaa3d13554e8640f9caf7db717a96360ec0f6 but >- it was forgotten. >+ These should have been included in 5.3.2alpha already. > >- src/liblzma/lzma/lzma_encoder_optimum_normal.c | 16 ++++++++++------ >- 1 file changed, 10 insertions(+), 6 deletions(-) >+ windows/vs2013/liblzma.vcxproj | 2 ++ >+ windows/vs2013/liblzma_dll.vcxproj | 2 ++ >+ windows/vs2017/liblzma.vcxproj | 2 ++ >+ windows/vs2017/liblzma_dll.vcxproj | 2 ++ >+ windows/vs2019/liblzma.vcxproj | 2 ++ >+ windows/vs2019/liblzma_dll.vcxproj | 2 ++ >+ 6 files changed, 12 insertions(+) > >-commit 6117955af0b9cef5acde7859e86f773692b5f43c >+commit 147d282cc3733e2723df82622b6540ddfb52635e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-21 17:01:15 +0200 >+Date: 2023-03-17 08:43:51 +0200 > >- Build: Add visibility.m4 from gnulib. >+ CMake: Add microlzma_*.c to the build. > >- 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. >+ These should have been included in 5.3.2alpha already. > >- m4/.gitignore | 1 - >- m4/visibility.m4 | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- 2 files changed, 77 insertions(+), 1 deletion(-) >+ CMakeLists.txt | 2 ++ >+ 1 file changed, 2 insertions(+) > >-commit c2cc64d78c098834231f9cfd7d852c9cd8950d74 >+commit 4523a5ee29f45c0256af67a15771bc8bbd25ba53 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-21 16:10:44 +0200 >+Date: 2023-03-17 08:41:36 +0200 > >- xz: Silence a warning when sig_atomic_t is long int. >- >- It can be true at least on z/OS. >+ Build: Update comments about unaligned access to mention 64-bit. > >- src/xz/signals.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ cmake/tuklib_integer.cmake | 7 +++---- >+ m4/tuklib_integer.m4 | 4 ++-- >+ 2 files changed, 5 insertions(+), 6 deletions(-) > >-commit b6314aa275b35c714e0a191d0b2e9b6106129ea9 >+commit 82aacb40367dc580b09c5a7b270f6c98b63e49b9 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-21 15:59:26 +0200 >+Date: 2023-03-17 00:02:30 +0200 > >- xz: Avoid unneeded access of a volatile variable. >+ Tests: Update .gitignore. > >- src/xz/signals.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ .gitignore | 3 ++- >+ 1 file changed, 2 insertions(+), 1 deletion(-) > >-commit f772a1572f723e5dc7d2d32e1d4287ac7a0da55e >+commit 5d022c24921eec938604a8cb10d70aa08dbd8575 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-21 01:24:18 +0200 >+Date: 2023-03-14 20:04:03 +0200 > >- tuklib_integer.m4: Optimize the check order. >+ po4a/update-po: Display the script name consistently in error messages. >+ >+ po4a/update-po | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) >+ >+commit 896295117324f323c0b8db6a31ad6ebfaa88793d >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-17 01:30:36 +0800 >+ >+ Doc: Rename Doxygen HTML doc directory name liblzma => api. > >- The __builtin byteswapping is the preferred one so check for it first. >+ When the docs are installed, calling the directory "liblzma" is >+ confusing since multiple other files in the doc directory are for >+ liblzma. This should also make it more natural for distros when they >+ package the documentation. > >- m4/tuklib_integer.m4 | 56 +++++++++++++++++++++++++++------------------------- >- 1 file changed, 29 insertions(+), 27 deletions(-) >+ .gitignore | 2 +- >+ Makefile.am | 18 +++++++++--------- >+ PACKAGERS | 4 ++-- >+ doxygen/Doxyfile | 2 +- >+ doxygen/update-doxygen | 18 +++++++++--------- >+ 5 files changed, 22 insertions(+), 22 deletions(-) > >-commit 641042e63f665f3231c2fd1241fd3dddda3fb313 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-20 18:54:04 +0200 >+commit 94097157fae308b2c1a5edb4e8597c68b45eeaea >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-16 22:07:15 +0800 > >- tuklib_exit: Add missing header. >+ liblzma: Remove note from lzma_options_bcj about the ARM64 exception. > >- strerror() needs <string.h> 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. >+ This was left in by mistake since an early version of the ARM64 filter >+ used a different struct for its options. > >- src/common/tuklib_exit.c | 1 + >- 1 file changed, 1 insertion(+) >+ src/liblzma/api/lzma/bcj.h | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit dbd55a69e530fec9ae866aaf6c3ccc0b4daf1f1f >+commit da16d0b73b79d7785ece6f78a577fadd1fb59d0e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-16 11:18:28 +0200 >+Date: 2023-03-15 19:19:13 +0200 > >- sysdefs.h: Omit the conditionals around string.h and limits.h. >+ COPYING: Add a note about the included Doxygen-generated HTML. >+ >+ COPYING | 11 +++++++++++ >+ 1 file changed, 11 insertions(+) >+ >+commit e57c74f9ef19201f72c106f2c347596f40229936 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-16 21:41:09 +0800 >+ >+ Doc: Update PACKAGERS with details about liblzma API docs install. >+ >+ PACKAGERS | 22 ++++++++++++++++------ >+ 1 file changed, 16 insertions(+), 6 deletions(-) >+ >+commit 7e2fa48bb73edb25457232e2e62a4f81c6b95281 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-16 21:38:32 +0800 >+ >+ liblzma: Add set lzma.h as the main page for Doxygen documentation. > >- 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. >+ The \mainpage command is used in the first block of comments in lzma.h. >+ This changes the previously nearly empty index.html to use the first >+ comment block in lzma.h for its contents. >+ >+ lzma.h is no longer documented separately, but this is for the better >+ since lzma.h only defined a few macros that users do not need to use. >+ The individual API header files all have a disclaimer that they should >+ not be #included directly, so there should be no confusion on the fact >+ that lzma.h should be the only header used by applications. >+ >+ Additionally, the note "See ../lzma.h for information about liblzma as >+ a whole." was removed since lzma.h is now the main page of the >+ generated HTML and does not have its own page anymore. So it would be >+ confusing in the HTML version and was only a "nice to have" when >+ browsing the source files. > >- src/common/sysdefs.h | 8 ++------ >- 1 file changed, 2 insertions(+), 6 deletions(-) >+ src/liblzma/api/lzma.h | 1 + >+ src/liblzma/api/lzma/base.h | 2 -- >+ src/liblzma/api/lzma/bcj.h | 2 -- >+ src/liblzma/api/lzma/block.h | 2 -- >+ src/liblzma/api/lzma/check.h | 2 -- >+ src/liblzma/api/lzma/container.h | 2 -- >+ src/liblzma/api/lzma/delta.h | 2 -- >+ src/liblzma/api/lzma/filter.h | 2 -- >+ src/liblzma/api/lzma/hardware.h | 2 -- >+ src/liblzma/api/lzma/index.h | 2 -- >+ src/liblzma/api/lzma/index_hash.h | 4 +--- >+ src/liblzma/api/lzma/lzma12.h | 2 -- >+ src/liblzma/api/lzma/stream_flags.h | 2 -- >+ src/liblzma/api/lzma/version.h | 2 -- >+ src/liblzma/api/lzma/vli.h | 2 -- >+ 15 files changed, 2 insertions(+), 29 deletions(-) > >-commit 9294909861e6d22b32418467e0e988f953a82264 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-15 15:07:11 +0200 >+commit d42977c7acfdf7fd9acc8803cf411eca7dc10478 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-16 21:37:32 +0800 > >- Build: Bump Autoconf and Libtool version requirements. >+ Build: Generate doxygen documentation in autogen.sh. > >- There is no specific reason for this other than blocking >- the most ancient versions. These are still old: >+ Another command line option (--no-doxygen) was added to disable >+ creating the doxygen documenation in cases where it not wanted or >+ if the doxygen tool is not installed. >+ >+ autogen.sh | 35 +++++++++++++++++++++++++++++------ >+ 1 file changed, 29 insertions(+), 6 deletions(-) >+ >+commit 8fc712fcf41d821069c670f22b8bf628e7a4a877 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-16 21:35:55 +0800 >+ >+ Build: Create doxygen/update-doxygen script. > >- Autoconf 2.69 (2012) >- Automake 1.12 (2012) >- gettext 0.19.6 (2015) >- Libtool 2.4 (2010) >+ This is a helper script to generate the Doxygen documentation. It can be >+ run in 'liblzma' or 'internal' mode by setting the first argument. It >+ will default to 'liblzma' mode and only generate documentation for the >+ liblzma API header files. >+ >+ The helper script will be run during the custom mydist hook when we >+ create releases. This hook already alters the source directory, so its >+ fine to do it here too. This way, we can include the Doxygen generated >+ files in the distrubtion and when installing. >+ >+ In 'liblzma' mode, the JavaScript is stripped from the .html files and >+ the .js files are removed. This avoids license hassle from jQuery and >+ other libraries that Doxygen 1.9.6 puts into jquery.js in minified form. > >- configure.ac | 4 ++-- >- 1 file changed, 2 insertions(+), 2 deletions(-) >+ Makefile.am | 1 + >+ doxygen/update-doxygen | 111 +++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 112 insertions(+) > >-commit bd09081bbdf552f730030d2fd0e5e39ccb3936af >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-15 03:08:32 +0200 >+commit 77d2c025d19fbac7277c63239cfb1338f02c66c0 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-03-16 21:34:36 +0800 > >- Build: Use AM_GNU_GETTEXT_REQUIRE_VERSION and require 0.19.6. >+ Build: Install Doxygen docs and include in distribution if generated. > >- This bumps the version requirement from 0.19 (from 2014) to >- 0.19.6 (2015). >+ Added a install-data-local target to install the Doxygen documentation >+ only when it has been generated. In order to correctly remove the docs, >+ a corresponding uninstall-local target was added. > >- 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. >+ If the doxygen docs exist in the source tree, they will also be included >+ in the distribution now too. > >- configure.ac | 6 +++++- >- 1 file changed, 5 insertions(+), 1 deletion(-) >+ Makefile.am | 18 ++++++++++++++++++ >+ 1 file changed, 18 insertions(+) > >-commit 1e5e08d86534aec7ca957982c7f6e90203c19e9f >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-14 20:42:06 +0200 >+commit 9af8f6f947a43974a4ff025f4c896f2fb4c91b4f >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-03 20:37:30 +0800 > >- Translations: Add German translation of the man pages. >+ Doxygen: Refactor Doxyfile.in to doxygen/Doxyfile. > >- Thanks to Mario Blättermann. >+ Instead of having Doxyfile.in configured by Autoconf, the Doxyfile >+ can have the tags that need to be configured piped into the doxygen >+ command through stdin with the overrides after Doxyfile's contents. >+ >+ Going forward, the documentation should be generated in two different >+ modes: liblzma or internal. >+ >+ liblzma is useful for most users. It is the documentation for just >+ the liblzma API header files. This is the default. >+ >+ internal is for people who want to understand how xz and liblzma work. >+ It might be useful for people who want to contribute to the project. > >- po4a/de.po | 5532 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- po4a/po4a.conf | 2 +- >- 2 files changed, 5533 insertions(+), 1 deletion(-) >+ .gitignore | 3 +- >+ Doxyfile.in | 1234 ------------------------- >+ Makefile.am | 1 - >+ configure.ac | 1 - >+ doxygen/Doxyfile | 2684 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 5 files changed, 2686 insertions(+), 1237 deletions(-) > >-commit 4b1447809ffbc0d77c0ad456bd6b3afcf0b8623e >+commit 1c558a26928b753fcf1c0d4bce9c0643285edd86 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-28 23:22:36 +0800 >+ >+ Tests: Remove unused macros and functions. >+ >+ tests/tests.h | 75 ----------------------------------------------------------- >+ 1 file changed, 75 deletions(-) >+ >+commit 7479a69a45a1b8fdb9a209e11f247dce11ac1ba0 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-12 22:29:07 +0800 >+ >+ Tests: Refactors existing lzma_index tests. >+ >+ Converts the existing lzma_index tests into tuktests and covers every >+ API function from index.h except for lzma_file_info_decoder, which can >+ be tested in the future. >+ >+ tests/test_index.c | 2036 ++++++++++++++++++++++++++++++++++++++-------------- >+ 1 file changed, 1492 insertions(+), 544 deletions(-) >+ >+commit fd56d5353360279c10e8e5e05f5bc6ea03f64584 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-07 15:32:21 +0200 >+Date: 2023-03-07 19:59:23 +0200 > >- Build: Add support for translated man pages using po4a. >+ xz: Make Capsicum sandbox more strict with stdin and stdout. >+ >+ src/xz/file_io.c | 8 ++++++++ >+ 1 file changed, 8 insertions(+) >+ >+commit d1bdaaebc68cae7f0ba457fa990b520df2186fd1 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2023-03-11 19:31:40 +0200 >+ >+ xz: Don't fail if Capsicum is enabled but kernel doesn't support it. > >- 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. >+ (This commit combines related commits from the master branch.) > >- 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. >+ If Capsicum support is missing from the kernel or xz is being run >+ in an emulator that lacks Capsicum suport, the syscalls will fail >+ and set errno to ENOSYS. Previously xz would display and error and >+ exit, making xz unusable. Now it will check for ENOSYS and run >+ without sandbox support. Other tools like ssh behave similarly. > >- The translated man pages aren't installed if --disable-nls is used. >+ Displaying a warning for missing Capsicum support was considered >+ but such extra output would quickly become annoying. It would also >+ break test_scripts.sh in "make check". > >- 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 move cap_enter() to be the first step instead of the last one. >+ This matches the example in the cap_rights_limit(2) man page. With >+ the current code it shouldn't make any practical difference though. > >- Also, this adds more quotes to the existing shell script code in >- the Makefile.am "-hook"s. >+ Thanks to Xin Li for the bug report, suggesting a fix, and testing: >+ https://github.com/tukaani-project/xz/pull/43 >+ >+ Thanks to Jia Tan for most of the original commits. > >- 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(-) >+ src/xz/file_io.c | 15 ++++++++++++--- >+ 1 file changed, 12 insertions(+), 3 deletions(-) > >-commit 882fcfdcd86525cc5c6f6d0bf0230d0089206d13 >+commit 5d351c69c19d212ddd2cf1f3bdb24900820c6776 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-04 21:06:35 +0800 >+ >+ Build: Adjust CMake version search regex. >+ >+ Now, the LZMA_VERSION_MAJOR, LZMA_VERSION_MINOR, and LZMA_VERSION_PATCH >+ macros do not need to be on consecutive lines in version.h. They can be >+ separated by more whitespace, comments, or even other content, as long >+ as they appear in the proper order (major, minor, patch). >+ >+ CMakeLists.txt | 2 ++ >+ 1 file changed, 2 insertions(+) >+ >+commit b82d4831e3f2339c4cdbc47776c99462088c11b7 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-26 09:50:21 +0800 >+ >+ liblzma: Improve documentation for version.h. >+ >+ Specified parameter and return values for API functions and documented >+ a few more of the macros. >+ >+ src/liblzma/api/lzma/version.h | 29 ++++++++++++++++++++++------- >+ 1 file changed, 22 insertions(+), 7 deletions(-) >+ >+commit 2caba3efe3e0c2d7c6dca00e22c56812326a34e6 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-24 23:46:23 +0800 >+ >+ liblzma: Clarify lzma_lzma_preset() documentation in lzma12.h. >+ >+ lzma_lzma_preset() does not guarentee that the lzma_options_lzma are >+ usable in an encoder even if it returns false (success). If liblzma >+ is built with default configurations, then the options will always be >+ usable. However if the match finders hc3, hc4, or bt4 are disabled, then >+ the options may not be usable depending on the preset level requested. >+ >+ The documentation was updated to reflect this complexity, since this >+ behavior was unclear before. >+ >+ src/liblzma/api/lzma/lzma12.h | 5 +++++ >+ 1 file changed, 5 insertions(+) >+ >+commit 594f904673ba55a833adfa60bbab6b60d4902d08 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-06 00:04:42 +0200 >+Date: 2023-02-27 18:38:35 +0200 > >- Update THANKS (sync with the master branch). >+ CMake: Require that the C compiler supports C99 or a newer standard. >+ >+ Thanks to autoantwort for reporting the issue and suggesting >+ a different patch: >+ https://github.com/tukaani-project/xz/pull/42 > >- THANKS | 3 +++ >- 1 file changed, 3 insertions(+) >+ CMakeLists.txt | 8 ++++++++ >+ 1 file changed, 8 insertions(+) > >-commit 134bb7765815d5f265eb0bc9e6ebacd9ae4a52bc >+commit 88101143cb774bca6b7006c8335b09dc3f334140 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-24 18:10:37 +0800 >+ >+ Tests: Small tweak to test-vli.c. >+ >+ The static global variables can be disabled if encoders and decoders >+ are not built. If they are not disabled and -Werror is used, it will >+ cause an usused warning as an error. >+ >+ tests/test_vli.c | 2 ++ >+ 1 file changed, 2 insertions(+) >+ >+commit 4042dbf03a06e019ccdd1e9d1b94cf613d62d5a9 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-06 21:46:43 +0800 >+ >+ liblzma: Replace '\n' -> newline in filter.h documentation. >+ >+ The '\n' renders as a newline when the comments are converted to html >+ by Doxygen. >+ >+ src/liblzma/api/lzma/filter.h | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) >+ >+commit 3971f5c5024750ce8286891c6f79ae1661047483 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-06 21:45:37 +0800 >+ >+ liblzma: Shorten return description for two functions in filter.h. >+ >+ Shorten the description for lzma_raw_encoder_memusage() and >+ lzma_raw_decoder_memusage(). >+ >+ src/liblzma/api/lzma/filter.h | 8 ++------ >+ 1 file changed, 2 insertions(+), 6 deletions(-) >+ >+commit 5e61b39432752b6cd1a7b518f0f9e4f0c3f0f242 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-06 21:44:45 +0800 >+ >+ liblzma: Reword a few lines in filter.h >+ >+ src/liblzma/api/lzma/filter.h | 10 +++++----- >+ 1 file changed, 5 insertions(+), 5 deletions(-) >+ >+commit 8a53533869defa1191b41f176a0312cb53a139e2 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-06 21:35:06 +0800 >+ >+ liblzma: Improve documentation in filter.h. >+ >+ All functions now explicitly specify parameter and return values. >+ The notes and code annotations were moved before the parameter and >+ return value descriptions for consistency. >+ >+ Also, the description above lzma_filter_encoder_is_supported() about >+ not being able to list available filters was removed since >+ lzma_str_list_filters() will do this. >+ >+ src/liblzma/api/lzma/filter.h | 226 ++++++++++++++++++++++++++---------------- >+ 1 file changed, 143 insertions(+), 83 deletions(-) >+ >+commit 6d05b08b17ac8cb93165ee8f310fdd925b0b258f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-05 22:35:06 +0200 >+Date: 2023-02-23 20:46:16 +0200 > >- Update tests/.gitignore. >+ Update THANKS. > >- .gitignore | 4 ++++ >- 1 file changed, 4 insertions(+) >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) > >-commit 6912472fafb656be8f4c5b4ac9ea28fea3065de4 >+commit dfc9a54082e0fc7b3b796ea15336b5075acc79d5 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-05 22:28:51 +0200 >+Date: 2023-02-21 22:57:10 +0200 > >- Update m4/.gitignore. >+ liblzma: Avoid null pointer + 0 (undefined behavior in C). >+ >+ In the C99 and C17 standards, section 6.5.6 paragraph 8 means that >+ adding 0 to a null pointer is undefined behavior. As of writing, >+ "clang -fsanitize=undefined" (Clang 15) diagnoses this. However, >+ I'm not aware of any compiler that would take advantage of this >+ when optimizing (Clang 15 included). It's good to avoid this anyway >+ since compilers might some day infer that pointer arithmetic implies >+ that the pointer is not NULL. That is, the following foo() would then >+ unconditionally return 0, even for foo(NULL, 0): >+ >+ void bar(char *a, char *b); >+ >+ int foo(char *a, size_t n) >+ { >+ bar(a, a + n); >+ return a == NULL; >+ } >+ >+ In contrast to C, C++ explicitly allows null pointer + 0. So if >+ the above is compiled as C++ then there is no undefined behavior >+ in the foo(NULL, 0) call. >+ >+ To me it seems that changing the C standard would be the sane >+ thing to do (just add one sentence) as it would ensure that a huge >+ amount of old code won't break in the future. Based on web searches >+ it seems that a large number of codebases (where null pointer + 0 >+ occurs) are being fixed instead to be future-proof in case compilers >+ will some day optimize based on it (like making the above foo(NULL, 0) >+ return 0) which in the worst case will cause security bugs. >+ >+ Some projects don't plan to change it. For example, gnulib and thus >+ many GNU tools currently require that null pointer + 0 is defined: >+ >+ https://lists.gnu.org/archive/html/bug-gnulib/2021-11/msg00000.html >+ >+ https://www.gnu.org/software/gnulib/manual/html_node/Other-portability-assumptions.html >+ >+ In XZ Utils null pointer + 0 issue should be fixed after this >+ commit. This adds a few if-statements and thus branches to avoid >+ null pointer + 0. These check for size > 0 instead of ptr != NULL >+ because this way bugs where size > 0 && ptr == NULL will likely >+ get caught quickly. None of them are in hot spots so it shouldn't >+ matter for performance. >+ >+ A little less readable version would be replacing >+ >+ ptr + offset >+ >+ with >+ >+ offset != 0 ? ptr + offset : ptr >+ >+ or creating a macro for it: >+ >+ #define my_ptr_add(ptr, offset) \ >+ ((offset) != 0 ? ((ptr) + (offset)) : (ptr)) >+ >+ Checking for offset != 0 instead of ptr != NULL allows GCC >= 8.1, >+ Clang >= 7, and Clang-based ICX to optimize it to the very same code >+ as ptr + offset. That is, it won't create a branch. So for hot code >+ this could be a good solution to avoid null pointer + 0. Unfortunately >+ other compilers like ICC 2021 or MSVC 19.33 (VS2022) will create a >+ branch from my_ptr_add(). >+ >+ Thanks to Marcin Kowalczyk for reporting the problem: >+ https://github.com/tukaani-project/xz/issues/36 > >- m4/.gitignore | 1 + >+ src/liblzma/common/block_decoder.c | 5 ++++- >+ src/liblzma/common/block_encoder.c | 7 +++++-- >+ src/liblzma/common/common.c | 20 ++++++++++++++------ >+ src/liblzma/common/index_decoder.c | 13 ++++++++++--- >+ src/liblzma/common/index_encoder.c | 11 +++++++++-- >+ src/liblzma/common/index_hash.c | 13 ++++++++++--- >+ src/liblzma/common/lzip_decoder.c | 6 +++++- >+ src/liblzma/delta/delta_decoder.c | 7 ++++++- >+ src/liblzma/delta/delta_encoder.c | 12 ++++++++++-- >+ src/liblzma/simple/simple_coder.c | 6 ++++-- >+ 10 files changed, 77 insertions(+), 23 deletions(-) >+ >+commit f6dce49cb656b358e2fb2a3032e35e20af34dc84 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-07 00:00:44 +0800 >+ >+ liblzma: Adjust container.h for consistency with filter.h. >+ >+ src/liblzma/api/lzma/container.h | 20 +++++++++----------- >+ 1 file changed, 9 insertions(+), 11 deletions(-) >+ >+commit 173d240bb4763aedc8c01df4d9c83e311d954c33 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-07 00:00:09 +0800 >+ >+ liblzma: Fix small typos and reword a few things in filter.h. >+ >+ src/liblzma/api/lzma/container.h | 13 ++++++------- >+ 1 file changed, 6 insertions(+), 7 deletions(-) >+ >+commit 17797bacde3f7264048ef0976c137a600148d6cf >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-06 23:42:08 +0800 >+ >+ liblzma: Convert list of flags in lzma_mt to bulleted list. >+ >+ src/liblzma/api/lzma/container.h | 9 ++++++--- >+ 1 file changed, 6 insertions(+), 3 deletions(-) >+ >+commit 37da0e727161b401b8bfd8dccf163a4b2fc0460b >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-26 23:17:41 +0800 >+ >+ liblzma: Fix typo in documentation in container.h >+ >+ lzma_microlzma_decoder -> lzma_microlzma_encoder >+ >+ src/liblzma/api/lzma/container.h | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) >+ >+commit b8331077c626e6bf14f4671d09b561146eaf816a >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-26 23:16:34 +0800 >+ >+ liblzma: Improve documentation for container.h >+ >+ Standardizing each function to always specify parameters and return >+ values. Also moved the parameters and return values to the end of each >+ function description. >+ >+ src/liblzma/api/lzma/container.h | 146 +++++++++++++++++++++++++-------------- >+ 1 file changed, 93 insertions(+), 53 deletions(-) >+ >+commit b9a3511bb61d3b6ce49abd33dce6155a573f5272 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-22 20:59:41 +0800 >+ >+ CMake: Add LZIP decoder test to list of tests. >+ >+ CMakeLists.txt | 1 + > 1 file changed, 1 insertion(+) > >-commit 68c60735bbb6e51d4205ba8a9fde307bcfb22f8c >+commit cd82ef2fb48b174c57cd03b84a9a0f978772cb89 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-05 20:47:38 +0200 >+Date: 2023-02-17 20:56:49 +0200 > > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit e1beaa74bc7cb5a409d59b55870e01ae7784ce3a >+commit 076e911ba25cadf2cbdfbd0f65991a002e210c0b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-05 20:33:50 +0200 >+Date: 2023-02-17 20:48:28 +0200 > >- xz: Comment out annoying sandboxing messages. >+ Build: Use only the generic symbol versioning on MicroBlaze. >+ >+ On MicroBlaze, GCC 12 is broken in sense that >+ __has_attribute(__symver__) returns true but it still doesn't >+ support the __symver__ attribute even though the platform is ELF >+ and symbol versioning is supported if using the traditional >+ __asm__(".symver ...") method. Avoiding the traditional method is >+ good because it breaks LTO (-flto) builds with GCC. >+ >+ See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101766 >+ >+ For now the only extra symbols in liblzma_linux.map are the >+ compatibility symbols with the patch that spread from RHEL/CentOS 7. >+ These require the use of __symver__ attribute or __asm__(".symver ...") >+ in the C code. Compatibility with the patch from CentOS 7 doesn't >+ seem valuable on MicroBlaze so use liblzma_generic.map on MicroBlaze >+ instead. It doesn't require anything special in the C code and thus >+ no LTO issues either. >+ >+ An alternative would be to detect support for __symver__ >+ attribute in configure.ac and CMakeLists.txt and fall back >+ to __asm__(".symver ...") but then LTO would be silently broken >+ on MicroBlaze. It sounds likely that MicroBlaze is a special >+ case so let's treat it as a such because that is simpler. If >+ a similar issue exists on some other platform too then hopefully >+ someone will report it and this can be reconsidered. >+ >+ (This doesn't do the same fix in CMakeLists.txt. Perhaps it should >+ but perhaps CMake build of liblzma doesn't matter much on MicroBlaze. >+ The problem breaks the build so it's easy to notice and can be fixed >+ later.) >+ >+ Thanks to Vincent Fazio for reporting the problem and proposing >+ a patch (in the end that solution wasn't used): >+ https://github.com/tukaani-project/xz/pull/32 > >- src/xz/file_io.c | 10 +++++++--- >- 1 file changed, 7 insertions(+), 3 deletions(-) >+ configure.ac | 12 ++++++++++-- >+ 1 file changed, 10 insertions(+), 2 deletions(-) > >-commit 8238192652290df78bd728b20e3f6542d1a2819e >+commit bc34e5ac9996667d2c1ec9a7895ec5931ac4caea > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-05 19:33:37 +0200 >+Date: 2023-02-16 21:09:00 +0200 > >- Build: Workaround a POSIX shell detection problem on Solaris. >+ liblzma: Very minor API doc tweaks. > >- 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. >+ Use "member" to refer to struct members as that's the term used >+ by the C standard. >+ >+ Use lzma_options_delta.dist and such in docs so that in Doxygen's >+ HTML output they will link to the doc of the struct member. >+ >+ Clean up a few trailing white spaces too. > >- configure.ac | 10 ++++++++++ >- 1 file changed, 10 insertions(+) >+ src/liblzma/api/lzma/block.h | 6 +++--- >+ src/liblzma/api/lzma/delta.h | 6 +++--- >+ src/liblzma/api/lzma/index.h | 10 +++++----- >+ src/liblzma/api/lzma/stream_flags.h | 6 +++--- >+ 4 files changed, 14 insertions(+), 14 deletions(-) > >-commit 93a1f61e892e145607dd938e3b30098af19a1672 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-03 22:03:50 +0200 >+commit d31fbd28be5b79eb682db50004b0fb7aad5299ec >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-17 00:54:33 +0800 > >- Build: Update m4/ax_pthread.m4 from Autoconf Archive. >+ liblzma: Adjust spacing in doc headers in bcj.h. > >- m4/ax_pthread.m4 | 398 ++++++++++++++++++++++++++++++++++++++----------------- >- 1 file changed, 279 insertions(+), 119 deletions(-) >+ src/liblzma/api/lzma/bcj.h | 14 +++++++------- >+ 1 file changed, 7 insertions(+), 7 deletions(-) > >-commit d0daa21792ff861e5423bbd82aaa6c8ba9fa0462 >+commit 701e9be6bede19771895f756082db0c017f86f07 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-17 00:44:44 +0800 >+ >+ liblzma: Adjust documentation in bcj.h for consistent style. >+ >+ src/liblzma/api/lzma/bcj.h | 43 ++++++++++++++++++++++--------------------- >+ 1 file changed, 22 insertions(+), 21 deletions(-) >+ >+commit 762c4d0b62d2694cf3a01e030fdfe68e09e7b503 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-17 00:36:05 +0800 >+ >+ liblzma: Rename field => member in documentation. >+ >+ Also adjusted preset value => preset level. >+ >+ src/liblzma/api/lzma/base.h | 18 +++++++-------- >+ src/liblzma/api/lzma/block.h | 44 ++++++++++++++++++------------------- >+ src/liblzma/api/lzma/container.h | 26 +++++++++++----------- >+ src/liblzma/api/lzma/delta.h | 12 +++++----- >+ src/liblzma/api/lzma/index.h | 30 ++++++++++++------------- >+ src/liblzma/api/lzma/lzma12.h | 28 +++++++++++------------ >+ src/liblzma/api/lzma/stream_flags.h | 32 +++++++++++++-------------- >+ 7 files changed, 95 insertions(+), 95 deletions(-) >+ >+commit 0ce1db0223854d94b4a0d17737ac0486a75d9e6a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-01 19:56:18 +0200 >+Date: 2023-02-16 17:59:50 +0200 > >- xz: Limit --memlimit-compress to at most 4020 MiB for 32-bit xz. >+ liblzma: Silence a warning from MSVC. > >- 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. >+ It gives C4146 here since unary minus with unsigned integer >+ is still unsigned (which is the intention here). Doing it >+ with substraction makes it clearer and avoids the warning. > >- At presets -5 ... -9, 4020 MiB vs. 4096 MiB makes no difference >- on how xz scales down the number of threads. >+ Thanks to Nathan Moinvaziri for reporting this. >+ >+ src/liblzma/check/crc64_fast.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) >+ >+commit d83da006b3e8dbad9112e6cde6b27049d193c9ec >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-16 21:04:54 +0800 >+ >+ liblzma: Improve documentation for stream_flags.h > >- 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. >+ Standardizing each function to always specify parameters and return >+ values. Also moved the parameters and return values to the end of each >+ function description. > >- 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: >+ A few small things were reworded and long sentences broken up. >+ >+ src/liblzma/api/lzma/stream_flags.h | 76 ++++++++++++++++++++++--------------- >+ 1 file changed, 46 insertions(+), 30 deletions(-) >+ >+commit 2796bb4736f645d34939b5d62d5958f534e41e69 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-14 21:50:16 +0800 >+ >+ liblzma: Improve documentation in lzma12.h. > >- https://bugzilla.redhat.com/show_bug.cgi?id=1196786 >+ All functions now explicitly specify parameter and return values. >+ >+ src/liblzma/api/lzma/lzma12.h | 32 +++++++++++++++++++++++--------- >+ 1 file changed, 23 insertions(+), 9 deletions(-) >+ >+commit ebebaa8d9381afea440eb1b01917117551adf68f >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-27 22:44:06 +0800 >+ >+ liblzma: Improve documentation in check.h. > >- 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. >+ All functions now explicitly specify parameter and return values. >+ Also moved the note about SHA-256 functions not being exported to the >+ top of the file. > >- src/xz/hardware.c | 32 +++++++++++++++++++++++++++++++- >- src/xz/xz.1 | 21 ++++++++++++++++++++- >- 2 files changed, 51 insertions(+), 2 deletions(-) >+ src/liblzma/api/lzma/check.h | 41 ++++++++++++++++++++++++++++------------- >+ 1 file changed, 28 insertions(+), 13 deletions(-) > >-commit 4433c2dc5727ee6aef570e001a5a024e0d94e609 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-01-26 20:53:25 +0200 >+commit 765fa2865aab97ea713c1715922e322b3cf599a7 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-08 21:33:52 +0800 > >- xz: Set the --flush-timeout deadline when the first input byte arrives. >+ liblzma: Improve documentation in index.h > >- xz --flush-timeout=2000, old version: >+ All functions now explicitly specify parameter and return values. >+ >+ src/liblzma/api/lzma/index.h | 177 ++++++++++++++++++++++++++++++------------- >+ 1 file changed, 126 insertions(+), 51 deletions(-) >+ >+commit 918e208af5960728b6def01e692b395f7d8e3701 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-08 20:35:32 +0800 >+ >+ liblzma: Reword a comment in index.h. >+ >+ src/liblzma/api/lzma/index.h | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) >+ >+commit 1f157d214bc09338876d2467b549935679abc0bf >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-08 20:30:23 +0800 >+ >+ liblzma: Omit lzma_index_iter's internal field from Doxygen docs. > >- 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. >+ Add \private above this field and its sub-fields since it is not meant >+ to be modified by users. >+ >+ src/liblzma/api/lzma/index.h | 9 ++++++++- >+ 1 file changed, 8 insertions(+), 1 deletion(-) >+ >+commit 28757fa46d8e0f0a9c17628b2b6af9bcb3cd96fc >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-21 21:32:03 +0800 >+ >+ liblzma: Fix documentation for LZMA_MEMLIMIT_ERROR. > >- 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. >+ LZMA_MEMLIMIT_ERROR was missing the "<" character needed to put >+ documentation after a member. >+ >+ src/liblzma/api/lzma/base.h | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) >+ >+commit 135d5a1a65a9e199b9a5550c1f788cf43cd81018 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-21 00:29:38 +0800 >+ >+ liblzma: Improve documentation for base.h. > >- xz --flush-timeout=2000, after this commit: >+ Standardizing each function to always specify params and return values. >+ Also fixed a small grammar mistake. >+ >+ src/liblzma/api/lzma/base.h | 30 +++++++++++++++++++++++++----- >+ 1 file changed, 25 insertions(+), 5 deletions(-) >+ >+commit 2287d5668384e289d51e72724997dc920483768e >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-14 00:08:33 +0800 >+ >+ liblzma: Minor improvements to vli.h. > >- 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. >+ Added [out] annotations to parameters that are pointers and can have >+ their value changed. Also added a clarification to lzma_vli_is_valid. > >- src/xz/coder.c | 6 +----- >- src/xz/file_io.c | 6 +++++- >- src/xz/mytime.c | 1 - >- 3 files changed, 6 insertions(+), 7 deletions(-) >+ src/liblzma/api/lzma/vli.h | 15 ++++++++------- >+ 1 file changed, 8 insertions(+), 7 deletions(-) > >-commit acc0ef3ac80f18e349c6d0252177707105c0a29c >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-01-26 20:19:19 +0200 >+commit 7124b8a16ae60cb2e93218ff531868eebd673bde >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-10 21:38:02 +0800 > >- xz: Move flush_needed from mytime.h to file_pair struct in file_io.h. >+ liblzma: Add comments for macros in delta.h. >+ >+ Document LZMA_DELTA_DIST_MIN and LZMA_DELTA_DIST_MAX for completeness >+ and to avoid Doxygen warnings. > >- 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(-) >+ src/liblzma/api/lzma/delta.h | 8 ++++++++ >+ 1 file changed, 8 insertions(+) > >-commit 4afe69d30b66812682a2016ee18441958019cbb2 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-01-26 14:49:22 +0200 >+commit 59c7bb8931159fdb1a31bbbeaed0e6984e2d3c81 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-10 21:35:23 +0800 > >- xz: coder.c: Make writing output a separate function. >+ liblzma: Improve documentation in index_hash.h. > >- 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. >+ All functions now explicitly specify parameter and return values. >+ Also reworded the description of lzma_index_hash_init() for readability. > >- src/xz/coder.c | 30 +++++++++++++++++------------- >- 1 file changed, 17 insertions(+), 13 deletions(-) >+ src/liblzma/api/lzma/index_hash.h | 36 +++++++++++++++++++++++++++--------- >+ 1 file changed, 27 insertions(+), 9 deletions(-) > >-commit ec26f3ace5f9b260ca91508030f07465ae2f9f78 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-01-26 14:13:42 +0200 >+commit e970c28ac3cb2e8051925f81db2fe953664c2645 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-03 00:33:32 +0800 > >- xz: Fix semi-busy-waiting in xz --flush-timeout. >+ liblzma: Fix bug in lzma_str_from_filters() not checking filters[] length. > >- 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. >+ The bug is only a problem in applications that do not properly terminate >+ the filters[] array with LZMA_VLI_UNKNOWN or have more than >+ LZMA_FILTERS_MAX filters. This bug does not affect xz. > >- src/xz/coder.c | 4 ++++ >- src/xz/file_io.c | 15 +++++++++++---- >- src/xz/file_io.h | 4 ++++ >- 3 files changed, 19 insertions(+), 4 deletions(-) >+ src/liblzma/common/string_conversion.c | 7 +++++++ >+ 1 file changed, 7 insertions(+) > >-commit 38915703241e69a64f133ff9a02ec9100c6019c6 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-01-26 13:47:31 +0200 >+commit 85e01266a96689448abb249da6c6abc3afcd4a4e >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-03 00:32:47 +0800 > >- xz: Refactor io_read() a bit. >+ Tests: Create test_filter_str.c. >+ >+ Tests lzma_str_to_filters(), lzma_str_from_filters(), and >+ lzma_str_list_filters() API functions. > >- src/xz/file_io.c | 17 ++++++++--------- >- 1 file changed, 8 insertions(+), 9 deletions(-) >+ CMakeLists.txt | 1 + >+ tests/Makefile.am | 2 + >+ tests/test_filter_str.c | 593 ++++++++++++++++++++++++++++++++++++++++++++++++ >+ 3 files changed, 596 insertions(+) > >-commit f6d24245349cecfae6ec0d2366fa80716c9f6d37 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-01-26 13:37:08 +0200 >+commit 3fa0f3ba12dd3383f62dbfa18a864f9b4217fa0a >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-22 08:49:00 +0800 > >- xz: Update a comment in file_io.h. >+ liblzma: Fix typos in comments in string_conversion.c. > >- src/xz/file_io.h | 5 ++++- >- 1 file changed, 4 insertions(+), 1 deletion(-) >+ src/liblzma/common/string_conversion.c | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit 15b55d5c63d27f81776edb1abc05872a751fc674 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-01-26 13:27:51 +0200 >+commit 32dbe045d74e94f75c53236fa2a6c0454d7b6d9e >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-03 00:20:20 +0800 > >- xz: Move the setting of flush_needed in file_io.c to a nicer location. >+ liblzma: Clarify block encoder and decoder documentation. >+ >+ Added a few sentences to the description for lzma_block_encoder() and >+ lzma_block_decoder() to highlight that the Block Header must be coded >+ before calling these functions. > >- src/xz/file_io.c | 6 ++---- >- 1 file changed, 2 insertions(+), 4 deletions(-) >+ src/liblzma/api/lzma/block.h | 15 +++++++++++---- >+ 1 file changed, 11 insertions(+), 4 deletions(-) > >-commit 609c7067859146ffc62ac655f6ba53599c891801 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2020-02-05 19:56:09 +0200 >+commit ccf12acbfa7331b1bbb99ec55879186eb35f879f >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-03 00:12:24 +0800 > >- xz: Enable Capsicum sandboxing by default if available. >+ Update lzma_block documentation for lzma_block_uncomp_encode(). >+ >+ src/liblzma/api/lzma/block.h | 3 +++ >+ 1 file changed, 3 insertions(+) >+ >+commit 6a0b168dd9dc1ef437255c4bfdc6eff8b96fdb24 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-03 00:11:37 +0800 >+ >+ liblzma: Minor edits to lzma_block header_size documentation. >+ >+ src/liblzma/api/lzma/block.h | 3 ++- >+ 1 file changed, 2 insertions(+), 1 deletion(-) >+ >+commit 84ce36f90e68471fec1f0e61cd93ac7ed9ab4883 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-03 00:11:07 +0800 >+ >+ liblzma: Enumerate functions that read version in lzma_block. >+ >+ src/liblzma/api/lzma/block.h | 13 +++++++++++-- >+ 1 file changed, 11 insertions(+), 2 deletions(-) >+ >+commit d6620774682830d606f57109861b6763805b3492 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-03 00:10:34 +0800 >+ >+ liblzma: Clarify comment in block.h. >+ >+ src/liblzma/api/lzma/block.h | 3 ++- >+ 1 file changed, 2 insertions(+), 1 deletion(-) >+ >+commit 880adb5aa25f66a53d81c2f3acc716f7a4d373d1 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-03 00:07:23 +0800 >+ >+ liblzma: Improve documentation for block.h. > >- It has been enabled in FreeBSD for a while and reported to work fine. >+ Standardizing each function to always specify params and return values. >+ Output pointer parameters are also marked with doxygen style [out] to >+ make it clear. Any note sections were also moved above the parameter and >+ return sections for consistency. >+ >+ src/liblzma/api/lzma/block.h | 96 ++++++++++++++++++++++++++++++++++---------- >+ 1 file changed, 75 insertions(+), 21 deletions(-) >+ >+commit b5b1b1f061c342271e4977ce5cba604a19c0ca52 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-02-01 23:38:30 +0800 >+ >+ liblzma: Clarify a comment about LZMA_STR_NO_VALIDATION. > >- Thanks to Xin Li. >+ The flag description for LZMA_STR_NO_VALIDATION was previously confusing >+ about the treatment for filters than cannot be used with .xz format >+ (lzma1) without using LZMA_STR_ALL_FILTERS. Now, it is clear that >+ LZMA_STR_NO_VALIDATION is not a super set of LZMA_STR_ALL_FILTERS. > >- INSTALL | 6 ------ >- configure.ac | 8 ++++---- >- 2 files changed, 4 insertions(+), 10 deletions(-) >+ src/liblzma/api/lzma/filter.h | 5 +++-- >+ 1 file changed, 3 insertions(+), 2 deletions(-) > >-commit 00517d125cc26ecece0eebb84c1c3975cd19bee0 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-12-31 22:41:45 +0200 >+commit e904e778b82b14f2779aab80d6c8f3c01a3fc54b >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-27 20:14:51 +0800 > >- Rename unaligned_read32ne to read32ne, and similarly for the others. >+ Translations: Add Brazilian Portuguese translation of man pages. >+ >+ Thanks to Rafael Fontenelle. > >- 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(-) >+ po4a/po4a.conf | 2 +- >+ po4a/pt_BR.po | 3677 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 3678 insertions(+), 1 deletion(-) > >-commit 52d89d8443c4a31a69c0701062f2c7711d82bbed >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-12-31 00:29:48 +0200 >+commit e9c47e79c9584ba1126f5fa0dbe6c96e67411aa6 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-24 20:48:50 +0800 > >- Rename read32ne to aligned_read32ne, and similarly for the others. >+ liblzma: Fix documentation in filter.h for lzma_str_to_filters() > >- 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. >+ The previous documentation for lzma_str_to_filters() was technically >+ correct, but misleading. lzma_str_to_filters() returns NULL on success, >+ which is in practice always defined to 0. This is the same value as >+ LZMA_OK, but lzma_str_to_filters() does not return lzma_ret so we should >+ be more clear. > >- 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(-) >+ src/liblzma/api/lzma/filter.h | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 850620468b57d49f16093e5870d1050886fcb37a >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-12-31 00:18:24 +0200 >+commit 99575947a58a60416c570eb78038d18a1ea4cef4 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-07 21:55:06 +0800 > >- Revise tuklib_integer.h and .m4. >+ xz: Refactor duplicated check for custom suffix when using --format=raw >+ >+ src/xz/args.c | 8 ++++++++ >+ src/xz/suffix.c | 26 ++++++++------------------ >+ src/xz/suffix.h | 8 ++++++++ >+ 3 files changed, 24 insertions(+), 18 deletions(-) >+ >+commit 76dec92fcca4a9ccd2063ed6d5d9e3474665baad >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-20 21:53:14 +0800 >+ >+ liblzma: Set documentation on all reserved fields to private. > >- 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. >+ This prevents the reserved fields from being part of the generated >+ Doxygen documentation. >+ >+ src/liblzma/api/lzma/base.h | 17 +++++++++++++++ >+ src/liblzma/api/lzma/block.h | 43 +++++++++++++++++++++++++++++++++++++ >+ src/liblzma/api/lzma/container.h | 24 +++++++++++++++++++++ >+ src/liblzma/api/lzma/delta.h | 12 +++++++++++ >+ src/liblzma/api/lzma/index.h | 27 +++++++++++++++++++++++ >+ src/liblzma/api/lzma/lzma12.h | 22 +++++++++++++++++++ >+ src/liblzma/api/lzma/stream_flags.h | 28 ++++++++++++++++++++++++ >+ 7 files changed, 173 insertions(+) >+ >+commit bd213d06ebf92cf42eeb97e7c578bddc857f8ea8 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-21 23:59:43 +0800 >+ >+ liblzma: Highlight liblzma API headers should not be included directly. > >- 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. >+ This improves the generated Doxygen HTML files to better highlight >+ how to properly use the liblzma API header files. >+ >+ src/liblzma/api/lzma/base.h | 5 +++-- >+ src/liblzma/api/lzma/bcj.h | 5 +++-- >+ src/liblzma/api/lzma/block.h | 5 +++-- >+ src/liblzma/api/lzma/check.h | 5 +++-- >+ src/liblzma/api/lzma/container.h | 5 +++-- >+ src/liblzma/api/lzma/delta.h | 5 +++-- >+ src/liblzma/api/lzma/filter.h | 5 +++-- >+ src/liblzma/api/lzma/hardware.h | 5 +++-- >+ src/liblzma/api/lzma/index.h | 5 +++-- >+ src/liblzma/api/lzma/index_hash.h | 5 +++-- >+ src/liblzma/api/lzma/lzma12.h | 5 +++-- >+ src/liblzma/api/lzma/stream_flags.h | 5 +++-- >+ src/liblzma/api/lzma/version.h | 5 +++-- >+ src/liblzma/api/lzma/vli.h | 5 +++-- >+ 14 files changed, 42 insertions(+), 28 deletions(-) >+ >+commit 257dbff0ba1a7bc45a74d203ece015c9f70c88cd >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-19 20:35:09 +0800 >+ >+ tuklib_physmem: Silence warning from -Wcast-function-type on MinGW-w64. > >- 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. >+ tuklib_physmem depends on GetProcAddress() for both MSVC and MinGW-w64 >+ to retrieve a function address. The proper way to do this is to cast the >+ return value to the type of function pointer retrieved. Unfortunately, >+ this causes a cast-function-type warning, so the best solution is to >+ simply ignore the warning. >+ >+ src/common/tuklib_physmem.c | 18 ++++++++++++++++++ >+ 1 file changed, 18 insertions(+) >+ >+commit 720ad4a44282a7ee59aa9920eaf495d85d245d97 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-16 21:35:45 +0800 >+ >+ xz: Add missing comment for coder_set_compression_settings() >+ >+ src/xz/coder.h | 3 ++- >+ 1 file changed, 2 insertions(+), 1 deletion(-) >+ >+commit 88dc19163421282369c0989e997c05f9a447edc6 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-16 20:55:10 +0800 >+ >+ xz: Do not set compression settings with raw format in list mode. > >- Other things: >- - Support GCC/Clang __builtin_bswapXX >- - Cleaner bswap fallback macros >- - Minor cleanups >+ Calling coder_set_compression_settings() in list mode with verbose mode >+ on caused the filter chain and memory requirements to print. This was >+ unnecessary since the command results in an error and not consistent >+ with other formats like lzma and alone. > >- m4/tuklib_integer.m4 | 43 ++++ >- src/common/tuklib_integer.h | 488 ++++++++++++++++++++++++-------------------- >- 2 files changed, 314 insertions(+), 217 deletions(-) >+ src/xz/args.c | 3 ++- >+ 1 file changed, 2 insertions(+), 1 deletion(-) > >-commit a45badf0342666462cc6a7107a071418570ab773 >+commit 039e0ab13efb144642f9d99eeeb9c668e76bb430 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-13 20:37:06 +0800 >+ >+ Translations: Update the Brazilian Portuguese translation. >+ >+ po/pt_BR.po | 603 ++++++++++++++++++++++++++++++++++-------------------------- >+ 1 file changed, 344 insertions(+), 259 deletions(-) >+ >+commit 718f7a60e740b26b8353965edaaddc7d4deb4d85 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-12-29 22:51:58 +0200 >+Date: 2023-01-12 13:04:05 +0200 > >- Tests: Hopefully fix test_check.c to work on EBCDIC systems. >+ Build: Omit -Wmissing-noreturn from the default warnings. > >- Thanks to Daniel Richard G. >+ It's not that important. It can be annoying in builds that >+ disable many features since in those cases the tests programs >+ will correctly trigger this warning with Clang. > >- tests/test_check.c | 9 +++++++-- >- 1 file changed, 7 insertions(+), 2 deletions(-) >+ configure.ac | 1 - >+ 1 file changed, 1 deletion(-) > >-commit c9a8071e6690a8db8a485c075920df254e7c70ea >+commit 3ccedb09724c998c39d708c945f6da5852c39e13 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-09-24 23:02:40 +0300 >+Date: 2023-01-12 06:05:58 +0200 > >- Scripts: Put /usr/xpg4/bin to the beginning of PATH on Solaris. >+ xz: Use ssize_t for the to-be-ignored return value from write(fd, ptr, 1). > >- 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. >+ It makes no difference here as the return value fits into an int >+ too and it then gets ignored but this looks better. > >- 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(-) >+ src/xz/file_io.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit aba140e2df3ff63ad124ae997de16d517b98ca50 >+commit 09fbd2f0527def89e839c8907de4fe7ef6bc5019 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-07-12 18:57:43 +0300 >+Date: 2023-01-12 06:01:12 +0200 > >- Fix comment typos in tuklib_mbstr* files. >+ xz: Silence warnings from -Wsign-conversion in a 32-bit build. > >- 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(-) >+ src/common/tuklib_mbstr_fw.c | 2 +- >+ src/xz/list.c | 4 ++-- >+ 2 files changed, 3 insertions(+), 3 deletions(-) > >-commit 710f5bd769a5d2bd8684256c2727d15350ee2ab8 >+commit 683d3f178ef1487b5418be49f331b0131a101b40 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-07-12 18:30:46 +0300 >+Date: 2023-01-12 05:38:48 +0200 > >- Add missing include to tuklib_mbstr_width.c. >+ liblzma: Silence another warning from -Wsign-conversion in a 32-bit build. > >- It didn't matter in XZ Utils because sysdefs.h >- includes string.h anyway. >+ It doesn't warn on a 64-bit system because truncating >+ a ptrdiff_t (signed long) to uint32_t is diagnosed under >+ -Wconversion by GCC and -Wshorten-64-to-32 by Clang. > >- src/common/tuklib_mbstr_width.c | 1 + >- 1 file changed, 1 insertion(+) >+ src/liblzma/lz/lz_encoder_mf.c | 7 ++++--- >+ 1 file changed, 4 insertions(+), 3 deletions(-) > >-commit 0e491aa8cd72e0100cd15c1b9469cd57fae500b0 >+commit 2b8062ef94a38d0f9ad0d1b309e8748db52f5c15 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-25 23:15:21 +0300 >+Date: 2023-01-12 04:46:45 +0200 > >- liblzma: Fix a buggy comment. >+ liblzma: Silence a warning from -Wsign-conversion in a 32-bit build. > >- src/liblzma/lz/lz_encoder_mf.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ src/common/mythread.h | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit bfc245569f340a75bd71ad32a6beba786712683b >+commit b16b9c0d22227012518595c2222facc73bd833a8 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-25 00:16:06 +0300 >+Date: 2023-01-12 04:17:24 +0200 > >- configure.ac: Fix a typo in a comment. >+ Build: Make configure add more warning flags for GCC and Clang. >+ >+ -Wstrict-aliasing was removed from the list since it is enabled >+ by -Wall already. >+ >+ A normal build is clean with these on GNU/Linux x86-64 with >+ GCC 12.2.0 and Clang 14.0.6. > >- configure.ac | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ configure.ac | 36 +++++++++++++++++++++++++++++++----- >+ 1 file changed, 31 insertions(+), 5 deletions(-) > >-commit f18eee9d15a22c8449ef395a05f0eb637c4ad253 >+commit c47ecd6d3909d0d3ff48dfd6e2ee41e7c7130b94 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-25 00:08:13 +0300 >+Date: 2023-01-12 04:14:18 +0200 > >- Tests: Silence warnings from clang -Wassign-enum. >+ Tests: Fix warnings from clang --Wassign-enum. > >- Also changed 999 to 99 so it fits even if lzma_check happened >- to be 8 bits wide. >+ Explicitly casting the integer to lzma_check silences the warning. >+ Since such an invalid value is needed in multiple tests, a constant >+ INVALID_LZMA_CHECK_ID was added to tests.h. >+ >+ The use of 0x1000 for lzma_block.check wasn't optimal as if >+ the underlying type is a char then 0x1000 will be truncated to 0. >+ However, in these test cases the value is ignored, thus even with >+ such truncation the test would have passed. > >- tests/test_block_header.c | 3 ++- >- tests/test_stream_flags.c | 2 +- >- 2 files changed, 3 insertions(+), 2 deletions(-) >+ tests/test_block_header.c | 6 +++--- >+ tests/test_check.c | 2 +- >+ tests/test_stream_flags.c | 8 ++++---- >+ tests/tests.h | 9 +++++++++ >+ 4 files changed, 17 insertions(+), 8 deletions(-) > >-commit 25f74554723e8deabc66fed1abf0ec27a4ed19d5 >+commit 34e13ce015232968731de2a9ec3440a08b0084b1 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-24 23:52:17 +0300 >+Date: 2023-01-12 03:51:07 +0200 > >- liblzma: Add a comment. >+ Tests: Silence warnings from -Wsign-conversion. >+ >+ Note that assigning an unsigned int to lzma_check doesn't warn >+ on GNU/Linux x86-64 since the enum type is unsigned on that >+ platform. The enum can be signed on some other platform though >+ so it's best to use enumeration type lzma_check in these situations. > >+ tests/test_check.c | 6 +++--- >+ tests/test_stream_flags.c | 10 +++++----- >+ 2 files changed, 8 insertions(+), 8 deletions(-) >+ >+commit 6671d0fe46b77f0fafce860836b7a12dc3cda14a >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2023-01-12 03:19:59 +0200 >+ >+ liblzma: Silence warnings from clang -Wconditional-uninitialized. >+ >+ This is similar to 2ce4f36f179a81d0c6e182a409f363df759d1ad0. >+ The actual initialization of the variables is done inside >+ mythread_sync() macro. Clang doesn't seem to see that >+ the initialization code inside the macro is always executed. >+ >+ src/liblzma/common/stream_decoder_mt.c | 8 +++++--- > src/liblzma/common/stream_encoder_mt.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ 2 files changed, 6 insertions(+), 4 deletions(-) > >-commit 44eb961f2a51d02420d017bc5ff470360663650c >+commit d3e833ca1d2abda54648494c33aca73a40a47efe > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-24 23:45:21 +0300 >+Date: 2023-01-12 03:11:40 +0200 > >- liblzma: Silence clang -Wmissing-variable-declarations. >+ Fix warnings from clang -Wdocumentation. > >- src/liblzma/check/crc32_table.c | 3 +++ >- src/liblzma/check/crc64_table.c | 3 +++ >- 2 files changed, 6 insertions(+) >+ src/liblzma/check/check.h | 4 ---- >+ src/liblzma/lz/lz_encoder_mf.c | 4 ++-- >+ src/xz/options.c | 4 ++-- >+ 3 files changed, 4 insertions(+), 8 deletions(-) > >-commit 267afcd9955e668c1532b069230c21c348eb4f82 >+commit 977dd2e26bc50efec8d30fb90380394042d24558 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-24 22:57:43 +0300 >+Date: 2023-01-12 03:04:28 +0200 > >- xz: Silence a warning from clang -Wsign-conversion in main.c. >+ Tests: test_lzip_decoder: Remove trailing white-space. > >- src/xz/main.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ tests/test_lzip_decoder.c | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit 0e3c4002f809311ecef239b05e556d9c462b5703 >+commit c55157ed7437ab14f2afb7fecf331e321f2edf9a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-24 22:47:39 +0300 >+Date: 2023-01-12 03:03:55 +0200 > >- liblzma: Remove incorrect uses of lzma_attribute((__unused__)). >- >- Caught by clang -Wused-but-marked-unused. >+ Tests: test_lzip_decoder: Silence warnings from -Wsign-conversion. > >- 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(-) >+ tests/test_lzip_decoder.c | 13 +++++++------ >+ 1 file changed, 7 insertions(+), 6 deletions(-) > >-commit cb708e8fa3405ec13a0ebfebbbf2793f927deab1 >+commit 18b845e69752c975dfeda418ec00eda22605c2ee > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-24 20:53:55 +0300 >+Date: 2023-01-11 18:52:54 +0200 > >- Tests: Silence a warning from -Wsign-conversion. >+ Bump version and soname for 5.4.1. > >- tests/create_compress_files.c | 8 ++++---- >- 1 file changed, 4 insertions(+), 4 deletions(-) >+ src/liblzma/Makefile.am | 2 +- >+ src/liblzma/api/lzma/version.h | 2 +- >+ 2 files changed, 2 insertions(+), 2 deletions(-) > >-commit c8cace3d6e965c0fb537591372bf71b9357dd76c >+commit 4080bbb844fb36701ffb978f0c41ea2c2c9f8960 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-11 23:58:16 +0800 >+ >+ Add NEWS for 5.4.1. >+ >+ NEWS | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 70 insertions(+) >+ >+commit 674c89fdb8c457ebc3a0652e235d8b6cd7b7dee2 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-24 20:45:49 +0300 >+Date: 2023-01-10 11:56:11 +0200 > >- xz: Fix an integer overflow with 32-bit off_t. >+ sysdefs.h: Don't include strings.h anymore. > >- 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. >+ On some platforms src/xz/suffix.c may need <strings.h> for >+ strcasecmp() but suffix.c includes the header when it needs it. >+ >+ Unless there is an old system that otherwise supports enough C99 >+ to build XZ Utils but doesn't have C89/C90-compatible <string.h>, >+ there should be no need to include <strings.h> in sysdefs.h. > >- src/xz/file_io.c | 11 +++++++++-- >- 1 file changed, 9 insertions(+), 2 deletions(-) >+ src/common/sysdefs.h | 6 ------ >+ 1 file changed, 6 deletions(-) > >-commit 65a42741e290fbcd85dfc5db8a62c4bce5f7712c >+commit 2a6b938084fac9ddb39cd69c9beeed15c3b6f6f6 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-24 00:57:23 +0300 >+Date: 2023-01-10 11:23:41 +0200 > >- Tests: Remove a duplicate branch from tests/tests.h. >+ xz: Include <strings.h> in suffix.c if needed for strcasecmp(). > >- The duplication was introduced about eleven years ago and >- should have been cleaned up back then already. >+ SUSv2 and POSIX.1â2017 declare only a few functions in <strings.h>. >+ Of these, strcasecmp() is used on some platforms in suffix.c. >+ Nothing else in the project needs <strings.h> (at least if >+ building on a modern system). > >- This was caught by -Wduplicated-branches. >+ sysdefs.h currently includes <strings.h> if HAVE_STRINGS_H is >+ defined and suffix.c relied on this. >+ >+ Note that dos/config.h doesn't #define HAVE_STRINGS_H even though >+ DJGPP does have strings.h. It isn't needed with DJGPP as strcasecmp() >+ is also in <string.h> in DJGPP. > >- tests/tests.h | 9 ++------- >- 1 file changed, 2 insertions(+), 7 deletions(-) >+ src/xz/suffix.c | 3 +++ >+ 1 file changed, 3 insertions(+) > >-commit 5c4fb60e8df026e933afab0cfe0a8b55be20036c >+commit aea639e81beb548e3114c74b6d9a894d6e036189 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-11 22:46:48 +0800 >+ >+ xz: Fix warning -Wformat-nonliteral on clang in message.c. >+ >+ clang and gcc differ in how they handle -Wformat-nonliteral. gcc will >+ allow a non-literal format string as long as the function takes its >+ format arguments as a va_list. >+ >+ src/xz/message.c | 9 +++++++++ >+ 1 file changed, 9 insertions(+) >+ >+commit e3b42bfcb0f67988beee7c7022fed0361282be45 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-11 20:58:31 +0800 >+ >+ Tests: Fix test_filter_flags copy/paste error. >+ >+ tests/test_filter_flags.c | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) >+ >+commit 21625b7e11d004788e40eb5eb88d9d89f65fe347 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-11 20:42:29 +0800 >+ >+ Tests: Fix type-limits warning in test_filter_flags. >+ >+ This only occurs in test_filter_flags when the BCJ filters are not >+ configured and built. In this case, ARRAY_SIZE() returns 0 and causes a >+ type-limits warning with the loop variable since an unsigned number will >+ always be >= 0. >+ >+ tests/test_filter_flags.c | 13 ++++++++++--- >+ 1 file changed, 10 insertions(+), 3 deletions(-) >+ >+commit c337983e928682d56ce3470b286a8d5b8646e0ad > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-23 23:22:45 +0300 >+Date: 2023-01-10 22:14:03 +0200 > >- tuklib_mbstr_width: Fix a warning from -Wsign-conversion. >+ liblzma: CLMUL CRC64: Work around a bug in MSVC, second attempt. >+ >+ This affects only 32-bit x86 builds. x86-64 is OK as is. >+ >+ I still cannot easily test this myself. The reporter has tested >+ this and it passes the tests included in the CMake build and >+ performance is good: raw CRC64 is 2-3 times faster than the >+ C version of the slice-by-four method. (Note that liblzma doesn't >+ include a MSVC-compatible version of the 32-bit x86 assembly code >+ for the slice-by-four method.) >+ >+ Thanks to Iouri Kharon for figuring out a fix, testing, and >+ benchmarking. > >- src/common/tuklib_mbstr_width.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ src/liblzma/check/crc64_fast.c | 18 ++++++++++++++++++ >+ 1 file changed, 18 insertions(+) > >-commit 37df03ce52ce53710e1513387648763f8a744154 >+commit b7fb438ea0e3ee02e3a164f3b72fae456cbe34d7 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-11 01:18:50 +0800 >+ >+ Tests: Fix unused function warning in test_block_header. >+ >+ One of the global arrays of filters was only used in a test that >+ required both encoders and decoders to be configured in the build. >+ >+ tests/test_block_header.c | 4 ++++ >+ 1 file changed, 4 insertions(+) >+ >+commit 68e9ef036d18d7c3952bff0b391d5989b86934da >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-11 01:08:03 +0800 >+ >+ Tests: Fix unused function warning in test_index_hash. >+ >+ test_index_hash does not use fill_index_hash() unless both encoders >+ and decoders are configured in the build. >+ >+ tests/test_index_hash.c | 4 +--- >+ 1 file changed, 1 insertion(+), 3 deletions(-) >+ >+commit a387707cd8cdefbffb5b7429bda4b7fcc192954a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-23 23:19:34 +0300 >+Date: 2023-01-10 00:33:14 +0200 > >- xz: Fix some of the warnings from -Wsign-conversion. >+ Windows: Update INSTALL-MSVC.txt to recommend CMake over project files. > >- 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(-) >+ windows/INSTALL-MSVC.txt | 19 ++++++++++++------- >+ 1 file changed, 12 insertions(+), 7 deletions(-) > >-commit 7c65ae0f5f2e2431f88621e8fe6d1dc7907e30c1 >+commit 52902ad69518255a14b0144f0a2379e06fde5b6e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-23 22:27:45 +0300 >+Date: 2023-01-10 12:47:16 +0200 > >- tuklib_cpucores: Silence warnings from -Wsign-conversion. >+ Revert "liblzma: CLMUL CRC64: Workaround a bug in MSVC (VS2015-2022)." >+ >+ This reverts commit 36edc65ab4cf10a131f239acbd423b4510ba52d5. >+ >+ It was reported that it wasn't a good enough fix and MSVC >+ still produced (different kind of) bad code when building >+ for 32-bit x86 if optimizations are enabled. >+ >+ Thanks to Iouri Kharon. > >- src/common/tuklib_cpucores.c | 10 +++++----- >- 1 file changed, 5 insertions(+), 5 deletions(-) >+ src/liblzma/check/crc64_fast.c | 6 ------ >+ 1 file changed, 6 deletions(-) > >-commit a502dd1d000b598406637d452f535f4bbd43e2a4 >+commit e81b9fc48ca70f9228308d3f1871cd81f9a5a496 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-23 21:40:47 +0300 >+Date: 2023-01-10 10:05:13 +0200 > >- xzdec: Fix warnings from -Wsign-conversion. >+ sysdefs.h: Fix a comment. > >- src/xzdec/xzdec.c | 2 +- >+ src/common/sysdefs.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit a45d1a5374ceb22e23255b0b595b9e641e9860af >+commit 6e89ab58b031aa046308a0b3504ff0a5be042571 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-23 21:38:56 +0300 >+Date: 2023-01-10 10:04:06 +0200 > >- liblzma: Fix warnings from -Wsign-conversion. >+ sysdefs.h: Don't include memory.h anymore even if it were available. > >- Also, more parentheses were added to the literal_subcoder >- macro in lzma_comon.h (better style but no functional change >- in the current usage). >+ It quite probably was never needed, that is, any system where memory.h >+ was required likely couldn't compile XZ Utils for other reasons anyway. >+ >+ XZ Utils 5.2.6 and later source packages were generated using >+ Autoconf 2.71 which no longer defines HAVE_MEMORY_H. So the code >+ being removed is no longer used anyway. > >- 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(-) >+ src/common/sysdefs.h | 8 ++------ >+ 1 file changed, 2 insertions(+), 6 deletions(-) > >-commit 4ff87ddf80ed7cb233444cddd86ab1940b5b55ec >+commit 65c59ad429aa59f9df0326d9fc82931ba4a9d123 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-23 19:33:55 +0300 >+Date: 2023-01-10 08:50:26 +0200 > >- tuklib_integer: Silence warnings from -Wsign-conversion. >+ CMake/Windows: Add a workaround for windres from GNU binutils. >+ >+ This is combined from the following commits in the master branch: >+ 443dfebced041adc88f10d824188eeef5b5821a9 >+ 6b117d3b1fe91eb26d533ab16a2e552f84148d47 >+ 5e34774c31d1b7509b5cb77a3be9973adec59ea0 >+ >+ Thanks to Iouri Kharon for the bug report, the original patch, >+ and testing. > >- src/common/tuklib_integer.h | 6 +++--- >- 1 file changed, 3 insertions(+), 3 deletions(-) >+ CMakeLists.txt | 32 +++++++++++++++++++++++++++++++- >+ 1 file changed, 31 insertions(+), 1 deletion(-) > >-commit ed1a9d33984a3a37ae9a775a46859850d98ea4d0 >+commit 43521e77acc907863fa4f94aae276366172cb9ee > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-20 19:40:30 +0300 >+Date: 2023-01-06 22:53:38 +0200 > >- tuklib_integer: Fix usage of conv macros. >+ Tests: test_filter_flags: Clean up minor issues. > >- Use a temporary variable instead of e.g. >- conv32le(unaligned_read32ne(buf)) because the macro can >- evaluate its argument multiple times. >+ Here are the list of the most significant issues addressed: >+ - Avoid using internal common.h header. It's not good to copy the >+ constants like this but common.h cannot be included for use outside >+ of liblzma. This is the quickest thing to do that could be fixed later. >+ >+ - Omit the INIT_FILTER macro. Initialization should be done with just >+ regular designated initializers. >+ >+ - Use start_offset = 257 for BCJ tests. It demonstrates that Filter >+ Flags encoder and decoder don't validate the options thoroughly. >+ 257 is valid only for the x86 filter. This is a bit silly but >+ not a significant problem in practice because the encoder and >+ decoder initialization functions will catch bad alignment still. >+ Perhaps this should be fixed but it's not urgent and doesn't need >+ to be in 5.4.x. >+ >+ - Various tweaks to comments such as filter id -> Filter ID > >- src/common/tuklib_integer.h | 12 ++++++++---- >- 1 file changed, 8 insertions(+), 4 deletions(-) >+ tests/test_filter_flags.c | 153 +++++++++++++++++++++++----------------------- >+ 1 file changed, 78 insertions(+), 75 deletions(-) > >-commit 612c88dfc08e2c572623954ecfde541d21c84882 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-03 20:44:19 +0300 >+commit 6b44cead95d767414272dc3a67898a36bfdf95b3 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-29 23:33:33 +0800 > >- Update THANKS. >+ Tests: Refactors existing filter flags tests. >+ >+ Converts the existing filter flags tests into tuktests. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ tests/test_filter_flags.c | 655 ++++++++++++++++++++++++++++++++-------------- >+ 1 file changed, 457 insertions(+), 198 deletions(-) > >-commit 85da31d8b882b8b9671ab3e3d74d88bd945cd0bb >+commit 1bbefa9659b202ba31bd244a9d0e4f0d37ff3ed7 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-03 20:41:54 +0300 >+Date: 2023-01-08 00:32:29 +0200 > >- liblzma: Fix comments. >+ Tests: tuktest.h: Support tuktest_malloc(0). > >- Thanks to Bruce Stark. >+ It's not needed in XZ Utils at least for now. It's good to support >+ it still because if such use is needed later, it wouldn't be >+ caught on GNU/Linux since malloc(0) from glibc returns non-NULL. > >- 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(-) >+ tests/tuktest.h | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit 6a73a7889587aa394e236c7e9e4f870b44851036 >+commit ce3a3fbc7c2c399aeed644d54f3bd56ac914dfee > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-02 00:50:59 +0300 >+Date: 2023-01-07 21:57:11 +0200 > >- liblzma: Fix one more unaligned read to use unaligned_read16ne(). >+ CMake: Update cmake_minimum_required from 3.13...3.16 to 3.13...3.25. >+ >+ The changes listed on cmake-policies(7) for versions 3.17 to 3.25 >+ shouldn't affect this project. > >- src/liblzma/lz/lz_encoder_hash.h | 2 +- >+ CMakeLists.txt | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit ce59b34ec9ac344d62a57cad5f94f695f42cdaee >+commit 99fcd57f2ea35eaa94e09f674d5364329c880fa2 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-01 21:41:55 +0300 >+Date: 2023-01-08 00:24:23 +0200 > > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 94aa3fb568fe41dd4925a961966ed5cf8213bd1f >+commit c0c13d9d82eb8a4302c8bbb8b4c5178d285fe9ab > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-01 21:36:13 +0300 >+Date: 2023-01-07 19:50:35 +0200 > >- liblzma: memcmplen: Use ctz32() from tuklib_integer.h. >- >- The same compiler-specific #ifdefs are already in tuklib_integer.h >+ Update THANKS. > >- src/liblzma/common/memcmplen.h | 10 +--------- >- 1 file changed, 1 insertion(+), 9 deletions(-) >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) > >-commit 412791486dfb430219d8e30bcbebbfc57a99484a >+commit 3d45987451b1c3bb42697b29341824c0e5484cba > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-01 21:30:03 +0300 >+Date: 2023-01-09 11:27:24 +0200 > >- tuklib_integer: Cleanup MSVC-specific code. >+ CMake: Fix a copypaste error in xzdec Windows resource file handling. >+ >+ It was my mistake. Thanks to Iouri Kharon for the bug report. > >- src/common/tuklib_integer.h | 20 +++++++++----------- >- 1 file changed, 9 insertions(+), 11 deletions(-) >+ CMakeLists.txt | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit efbf6e5f0932e6c1a4250f91ee99059f449f2470 >+commit 706bce5018d7cf83094e13454a0731169ec119b5 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-01 19:01:21 +0300 >+Date: 2023-01-07 19:50:03 +0200 > >- liblzma: Use unaligned_readXXne functions instead of type punning. >+ CMake/Windows: Add resource files to xz.exe and xzdec.exe. > >- Now gcc -fsanitize=undefined should be clean. >+ The command line tools cannot be built with MSVC for now but >+ they can be built with MinGW-w64. > >- Thanks to Jeffrey Walton. >+ Thanks to Iouri Kharon for the bug report and the original patch. > >- src/liblzma/common/memcmplen.h | 12 ++++++------ >- src/liblzma/lzma/lzma_encoder_private.h | 2 +- >- 2 files changed, 7 insertions(+), 7 deletions(-) >+ CMakeLists.txt | 16 ++++++++++++++++ >+ 1 file changed, 16 insertions(+) > >-commit 29afef03486d461c23f57150ac5436684bff7811 >+commit e96dee55df04113c33b387ccdb6cb70935422d91 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-06-01 18:41:16 +0300 >+Date: 2023-01-09 12:22:05 +0200 > >- tuklib_integer: Improve unaligned memory access. >+ liblzma: CLMUL CRC64: Workaround a bug in MSVC (VS2015-2022). > >- Now memcpy() or GNU C packed structs for unaligned access instead >- of type punning. See the comment in this commit for details. >+ I haven't tested with MSVC myself and there doesn't seem to be >+ information about the problem online, so I'm relying on the bug report. > >- 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. >+ Thanks to Iouri Kharon for the bug report and the patch. > >- src/common/tuklib_integer.h | 180 +++++++++++++++++++++++++++++++++++++++++--- >- 1 file changed, 168 insertions(+), 12 deletions(-) >+ src/liblzma/check/crc64_fast.c | 6 ++++++ >+ 1 file changed, 6 insertions(+) > >-commit 596ed3de4485a4b1d83b5fe506ae9d0a172139b4 >+commit 52bc1ee34dda9bb6fb40175e5952863066681b77 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-05-13 20:05:17 +0300 >+Date: 2023-01-07 19:31:15 +0200 > >- liblzma: Avoid memcpy(NULL, foo, 0) because it is undefined behavior. >+ Build: Require that _mm_set_epi64x() is usable to enable CLMUL support. > >- I should have always known this but I didn't. Here is an example >- as a reminder to myself: >+ VS2013 doesn't have _mm_set_epi64x() so this way CLMUL gets >+ disabled with VS2013. > >- int mycopy(void *dest, void *src, size_t n) >- { >- memcpy(dest, src, n); >- return dest == NULL; >- } >+ Thanks to Iouri Kharon for the bug report. >+ >+ CMakeLists.txt | 3 ++- >+ configure.ac | 8 ++++++-- >+ 2 files changed, 8 insertions(+), 3 deletions(-) >+ >+commit bad44cfe19e8be8ae76755369be2a34abcd2b4fa >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-29 00:25:18 +0800 >+ >+ Tests: Creates test_index_hash.c > >- 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. >+ Tests all API functions exported from index_hash.h. Does not have a >+ dedicated test for lzma_index_hash_end. > >- 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. >+ [Minor edits were made by Lasse Collin.] > >- 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(-) >+ .gitignore | 1 + >+ CMakeLists.txt | 2 + >+ tests/Makefile.am | 3 + >+ tests/test_index_hash.c | 388 ++++++++++++++++++++++++++++++++++++++++++++++++ >+ 4 files changed, 394 insertions(+) > >-commit b4b83555c576e1d845a2b98a193b23c021437804 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-05-11 20:56:08 +0300 >+commit 692ccdf5516dfe55fb6e9c5cdfb31f4c02c1ecd1 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-05 20:57:25 +0800 > >- Update THANKS. >+ liblzma: Remove common.h include from common/index.h. >+ >+ common/index.h is needed by liblzma internally and tests. common.h will >+ include and define many things that are not needed by the tests. >+ >+ Also, this prevents include order problems because both common.h and >+ lzma.h define LZMA_API. On most platforms it results only in a warning >+ but on Windows it would break the build as the definition in common.h >+ must be used only for building liblzma itself. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ src/liblzma/common/index.c | 1 + >+ src/liblzma/common/index.h | 9 +++++++-- >+ src/liblzma/common/index_decoder.h | 1 + >+ src/liblzma/common/stream_buffer_encoder.c | 1 + >+ 4 files changed, 10 insertions(+), 2 deletions(-) > >-commit 8d4906262b45557ed164cd74adb270e6ef7f6f03 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-05-11 20:54:12 +0300 >+commit 2ac7bafc8f07c1edefe96a4a7a040ddfff0eb5bb >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-08-17 20:20:16 +0800 > >- xz: Update xz man page date. >+ liblzma: Add NULL check to lzma_index_hash_append. >+ >+ This is for consistency with lzma_index_append. > >- src/xz/xz.1 | 2 +- >+ src/liblzma/common/index_hash.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 0d318402f8a022f707622c72f8f1894ea476cf89 >-Author: Antoine CÅur <antoine.coeur@ef.com> >-Date: 2019-05-08 13:30:57 +0800 >+commit db714d30e0c74d1dd4af1a23ed62b44e0e8e4efc >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-08-17 17:59:51 +0800 > >- spelling >+ liblzma: Replaced hardcoded 0x0 index indicator byte with macro > >- 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(-) >+ src/liblzma/common/index.h | 3 +++ >+ src/liblzma/common/index_decoder.c | 2 +- >+ src/liblzma/common/index_encoder.c | 2 +- >+ src/liblzma/common/index_hash.c | 2 +- >+ src/liblzma/common/stream_decoder.c | 3 ++- >+ src/liblzma/common/stream_decoder_mt.c | 2 +- >+ 6 files changed, 9 insertions(+), 5 deletions(-) > >-commit aeb3be8ac4c4b06a745c3799b80b38159fb78b1a >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-03-04 22:49:04 +0200 >+commit 39d2585dcd3e827cfc3c46025ab6708c4aeb36c6 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-06 20:43:31 +0800 > >- README: Update translation instructions. >+ Style: Change #if !defined() to #ifndef in mythread.h. >+ >+ src/common/mythread.h | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) >+ >+commit 3f0130aa288e4ed57ace609517db9700a41223af >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-06 20:35:55 +0800 >+ >+ Build: Add missing stream_decoder_mt.c to .vcxproj files. > >- XZ Utils is now part of the Translation Project >- <https://translationproject.org/>. >+ The line in the .vcxproj files for building with was missing in 5.4.0. >+ Thank to Hajin Jang for reporting the issue. > >- README | 32 +++++++++++++------------------- >- 1 file changed, 13 insertions(+), 19 deletions(-) >+ windows/vs2013/liblzma.vcxproj | 1 + >+ windows/vs2013/liblzma_dll.vcxproj | 1 + >+ windows/vs2017/liblzma.vcxproj | 1 + >+ windows/vs2017/liblzma_dll.vcxproj | 1 + >+ windows/vs2019/liblzma.vcxproj | 1 + >+ windows/vs2019/liblzma_dll.vcxproj | 1 + >+ 6 files changed, 6 insertions(+) > >-commit 0c238dc3feb0a3eea1e713feb8d338c8dfba9f74 >+commit f204d1050a515d17851eed9049862ce5a9c729c1 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2018-12-20 20:42:29 +0200 >+Date: 2023-01-04 22:40:54 +0200 > > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 3ca432d9cce4bf7e793de173dd22025b68611c42 >+commit 34a9c2d650d6c30bd88e1b21910dd863209aa884 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2018-12-14 20:34:30 +0200 >+Date: 2023-01-04 18:40:28 +0200 > >- xz: Fix a crash in progress indicator when in passthru mode. >+ Tests: Adjust style in test_compress.sh. >+ >+ tests/test_compress.sh | 12 +++++++----- >+ 1 file changed, 7 insertions(+), 5 deletions(-) >+ >+commit 761c208d58e0c3daa0f46e68b406adfc318d2a46 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-04 23:58:58 +0800 >+ >+ Tests: Replace non portable shell parameter expansion > >- "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 shell parameter expansion using # and ## is not supported in >+ Solaris 10 Bourne shell (/bin/sh). Even though this is POSIX, it is not fully >+ portable, so we should avoid it. >+ >+ tests/create_compress_files.c | 2 +- >+ tests/test_compress.sh | 20 +++++++++++++------- >+ tests/test_compress_prepared_bcj_sparc | 2 +- >+ tests/test_compress_prepared_bcj_x86 | 2 +- >+ 4 files changed, 16 insertions(+), 10 deletions(-) >+ >+commit 8a7cbc074547e55e57f4f3696f69bedeb05e14c4 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-03 21:02:38 +0800 >+ >+ Translations: Add Korean translation of man pages. > >- 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 <Filip.Palian@pjwstk.edu.pl> for >- the bug report. >+ Thanks to Seong-ho Cho > >- src/xz/coder.c | 11 +++++++---- >- src/xz/message.c | 18 ++++++++++++++++-- >- src/xz/message.h | 3 ++- >- 3 files changed, 25 insertions(+), 7 deletions(-) >+ po4a/ko.po | 5552 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ po4a/po4a.conf | 2 +- >+ 2 files changed, 5553 insertions(+), 1 deletion(-) > >-commit fcc419e3c3f77a8b6fc5056a86b1b8abbe266e62 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2018-11-22 17:20:31 +0200 >+commit ca2af49bb8be5995eb0e6a3abf457622626d49a7 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-03 20:47:27 +0800 > >- xz: Update man page timestamp. >+ Translations: Update the Esperanto translation. > >- src/xz/xz.1 | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ po/eo.po | 620 ++++++++++++++++++++++++++++++++++----------------------------- >+ 1 file changed, 332 insertions(+), 288 deletions(-) > >-commit 5a2fc3cd0194e55df329dd29f805299aaca5f32f >-Author: Pavel Raiskup <praiskup@redhat.com> >-Date: 2018-11-22 15:14:34 +0100 >+commit bfba3394aed03311fe9a746d3141b2e16d8b9325 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2023-01-02 17:05:07 +0200 > >- 'have have' typos >+ Build: Fix config.h comments. > >- src/xz/signals.c | 2 +- >- src/xz/xz.1 | 2 +- >+ configure.ac | 2 +- >+ m4/tuklib_progname.m4 | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > >-commit 7143b04fe49390807f355b1dad686a3d8c4dbdcf >+commit 507648ad114c2ae0cd6d181063e1ac07e8106718 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2023-01-02 22:33:48 +0800 >+ >+ Build: Only define HAVE_PROGRAM_INVOCATION_NAME if it is set to 1. >+ >+ HAVE_DECL_PROGRAM_INVOCATION_NAME is renamed to >+ HAVE_PROGRAM_INVOCATION_NAME. Previously, >+ HAVE_DECL_PROGRAM_INVOCATION_NAME was always set when >+ building with autotools. CMake would only set this when it was 1, and the >+ dos/config.h did not define it. The new macro definition is consistent >+ across build systems. >+ >+ cmake/tuklib_progname.cmake | 5 ++--- >+ m4/tuklib_progname.m4 | 5 ++++- >+ src/common/tuklib_progname.c | 2 +- >+ src/common/tuklib_progname.h | 2 +- >+ 4 files changed, 8 insertions(+), 6 deletions(-) >+ >+commit ab5229d32adfec1f3fbc95228d9dd6f560732ab5 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2018-07-27 18:10:44 +0300 >+Date: 2022-12-30 20:10:08 +0200 > >- xzless: Rename unused variables to silence static analysers. >+ Tests: test_check: Test corner cases of CLMUL CRC64. >+ >+ tests/test_check.c | 27 +++++++++++++++++++++++++++ >+ 1 file changed, 27 insertions(+) >+ >+commit 8791826f31733fda0a13b411c2ed930faaeb25aa >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-12-30 19:36:49 +0200 >+ >+ Tests: Clarify a comment in test_lzip_decoder.c. >+ >+ tests/test_lzip_decoder.c | 8 ++++++-- >+ 1 file changed, 6 insertions(+), 2 deletions(-) >+ >+commit c410d812ea12bfc74f6b727c1a799478c79f19ca >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-29 01:55:19 +0800 >+ >+ xz: Includes <time.h> and <sys/time.h> conditionally in mytime.c. > >- In this particular case I don't see this affecting readability >- of the code. >+ Previously, mytime.c depended on mythread.h for <time.h> to be included. >+ >+ src/xz/mytime.c | 4 +++- >+ 1 file changed, 3 insertions(+), 1 deletion(-) >+ >+commit 501c6013d4a59fae5d4368e9657c4885493db809 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-29 01:15:27 +0800 >+ >+ liblzma: Includes sys/time.h conditionally in mythread > >- Thanks to Pavel Raiskup. >+ Previously, <sys/time.h> was always included, even if mythread only used >+ clock_gettime. <time.h> is still needed even if clock_gettime is not used >+ though because struct timespec is needed for mythread_condtime. > >- src/scripts/xzless.in | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ src/common/mythread.h | 8 +++++++- >+ 1 file changed, 7 insertions(+), 1 deletion(-) > >-commit 273c33297bb69621045ed19665eaf8338bcf4a50 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2018-07-27 16:02:58 +0300 >+commit 9e3cb514b5b95bd235dcdff3db4436f57444ee4f >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-29 01:10:53 +0800 > >- liblzma: Remove an always-true condition from lzma_index_cat(). >+ Build: No longer require HAVE_DECL_CLOCK_MONOTONIC to always be set. > >- This should help static analysis tools to see that newg >- isn't leaked. >+ Previously, if threading was enabled HAVE_DECL_CLOCK_MONOTONIC would always >+ be set to 0 or 1. However, this macro was needed in xz so if xz was not >+ built with threading and HAVE_DECL_CLOCK_MONOTONIC was not defined but >+ HAVE_CLOCK_GETTIME was, it caused a warning during build. Now, >+ HAVE_DECL_CLOCK_MONOTONIC has been renamed to HAVE_CLOCK_MONOTONIC and >+ will only be set if it is 1. >+ >+ CMakeLists.txt | 8 +++----- >+ configure.ac | 5 ++++- >+ src/common/mythread.h | 4 ++-- >+ src/xz/mytime.c | 5 ++--- >+ 4 files changed, 11 insertions(+), 11 deletions(-) >+ >+commit 6fc3e5467911572fa9af4021ea46396261aae796 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-28 01:14:07 +0800 >+ >+ Translations: Add Ukrainian translations of man pages. > >- Thanks to Pavel Raiskup. >+ Thanks to Yuri Chornoivan > >- src/liblzma/common/index.c | 4 ++-- >- 1 file changed, 2 insertions(+), 2 deletions(-) >+ po4a/po4a.conf | 2 +- >+ po4a/uk.po | 3676 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 3677 insertions(+), 1 deletion(-) > >-commit 65b4aba6d06d2cd24ba9ad01fa389c238ad8f352 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2018-05-19 21:23:25 +0300 >+commit e84f2ab7f8bc38cd8f8befa0bb398656c3c11f8e >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-22 23:14:53 +0800 > >- liblzma: Improve lzma_properties_decode() API documentation. >+ liblzma: Update documentation for lzma_filter_encoder. > >- src/liblzma/api/lzma/filter.h | 7 ++++--- >- 1 file changed, 4 insertions(+), 3 deletions(-) >+ src/liblzma/common/filter_encoder.c | 7 +++++-- >+ 1 file changed, 5 insertions(+), 2 deletions(-) > >-commit 531e78e5a253a3e2c4d4dd1505acaccee48f4083 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-05-01 16:52:36 +0300 >+commit b14b8dbba9a3b232787ae218b46430b9246383dd >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-21 21:12:03 +0800 > >- Update THANKS. >+ Tests: Adds lzip decoder tests > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ .gitignore | 1 + >+ tests/Makefile.am | 2 + >+ tests/test_lzip_decoder.c | 471 ++++++++++++++++++++++++++++++++++++++++++++++ >+ 3 files changed, 474 insertions(+) > >-commit 905de7e93528ca5a47039e7e1e5270163f9fc67e >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-05-01 16:43:16 +0300 >+commit 09a114805e1d4f9a02a06cee7dbf2f5014d1f710 >+Author: Jia Cheong Tan <jiat0218@gmail.com> >+Date: 2022-12-20 22:05:21 +0800 > >- Windows: Update VS version in windows/vs2019/config.h. >+ Doxygen: Update .gitignore for generating docs for in source build. >+ >+ In source builds are not recommended, but we should still ignore >+ the generated artifacts. > >- windows/vs2019/config.h | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ .gitignore | 2 ++ >+ 1 file changed, 2 insertions(+) > >-commit 0ffd30e172fd18cc619823b2a86448bf56a67e22 >-Author: Julien Marrec <julien.marrec@gmail.com> >-Date: 2019-04-25 17:44:06 +0200 >+commit d3e6fe44196bf9478ad193522e2b48febf2eca6b >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-20 20:46:44 +0800 > >- Windows: Upgrade solution itself >+ liblzma: Fix lzma_microlzma_encoder() return value. >+ >+ Using return_if_error on lzma_lzma_lclppb_encode was improper because >+ return_if_error is expecting an lzma_ret value, but >+ lzma_lzma_lclppb_encode returns a boolean. This could result in >+ lzma_microlzma_encoder, which would be misleading for applications. > >- windows/vs2019/xz_win.sln | 7 +++++-- >- 1 file changed, 5 insertions(+), 2 deletions(-) >+ src/liblzma/common/microlzma_encoder.c | 3 ++- >+ 1 file changed, 2 insertions(+), 1 deletion(-) > >-commit c2ef96685fc7ca36311649eeb2284b9808292040 >-Author: Julien Marrec <julien.marrec@gmail.com> >-Date: 2019-04-25 17:40:24 +0200 >+commit b55a27b46f52524a4a8d9cdef03e6689cefc1375 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-12-16 18:30:02 +0200 > >- Windows: Upgrade solution with VS2019 >+ liblzma: Update authors list in arm64.c. > >- windows/vs2019/liblzma.vcxproj | 15 ++++++++------- >- windows/vs2019/liblzma_dll.vcxproj | 15 ++++++++------- >- 2 files changed, 16 insertions(+), 14 deletions(-) >+ src/liblzma/simple/arm64.c | 1 + >+ 1 file changed, 1 insertion(+) > >-commit 25fccaf00bea399d8aa026e5b8fa254ce196e6e0 >-Author: Julien Marrec <julien.marrec@gmail.com> >-Date: 2019-04-25 17:39:32 +0200 >+commit 2fd28d2b7cec3468324a6f15eff7e73c285b1d7d >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-16 20:58:55 +0800 > >- Windows: Duplicate windows/vs2017 before upgrading >+ CMake: Update .gitignore for CMake artifacts from in source build. >+ >+ In source builds are not recommended, but we can make it easier >+ by ignoring the generated artifacts from CMake. > >- 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(+) >+ .gitignore | 23 +++++++++++++++++++++++ >+ 1 file changed, 23 insertions(+) > >-commit 1424078d6328291c7c524b64328ce9660617cb24 >+commit b69da6d4bb6bb11fc0cf066920791990d2b22a06 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2019-01-13 17:29:23 +0200 >+Date: 2022-12-13 20:37:17 +0200 > >- Windows/VS2017: Omit WindowsTargetPlatformVersion from project files. >+ Bump version to 5.4.0 and soname to 5.4.0. >+ >+ src/liblzma/Makefile.am | 2 +- >+ src/liblzma/api/lzma/version.h | 6 +++--- >+ src/liblzma/liblzma_generic.map | 2 +- >+ src/liblzma/liblzma_linux.map | 2 +- >+ 4 files changed, 6 insertions(+), 6 deletions(-) >+ >+commit 20869eb3fb280ff4f271ef527b12b6bf68b05e19 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-12-13 20:29:39 +0200 >+ >+ Update INSTALL: CMake on Windows isn't experimental anymore. > >- 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: >+ Using CMake to build liblzma should work on a few other OSes >+ but building the command line tools is still subtly broken. > >- https://developercommunity.visualstudio.com/content/problem/140294/windowstargetplatformversion-makes-it-impossible-t.html >- >- Thanks to "dom". >+ It is known that shared library versioning may differ between >+ CMake and Libtool builds on some OSes, most notably Darwin. > >- windows/INSTALL-MSVC.txt | 4 ++++ >- windows/vs2017/liblzma.vcxproj | 1 - >- windows/vs2017/liblzma_dll.vcxproj | 1 - >- 3 files changed, 4 insertions(+), 2 deletions(-) >+ INSTALL | 10 ++++------ >+ 1 file changed, 4 insertions(+), 6 deletions(-) > >-commit b5be61cc06088bb07f488f9baf7d447ff47b37c1 >+commit cbbd84451944e3e8c63acfaa3c923f6d8aff7852 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2018-04-29 19:00:06 +0300 >+Date: 2022-12-13 19:47:53 +0200 > >- Bump version and soname for 5.2.4. >+ Add NEWS for 5.4.0. > >- src/liblzma/Makefile.am | 2 +- >- src/liblzma/api/lzma/version.h | 2 +- >- 2 files changed, 2 insertions(+), 2 deletions(-) >+ NEWS | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 202 insertions(+) > >-commit c47fa6d06745bb2e99866e76b81ac7a9c5a8bfec >+commit c3e94d37e8d10a3e96019864b6f5d7b578db2c14 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2018-04-29 18:48:00 +0300 >+Date: 2022-12-13 17:41:20 +0200 > >- extra/scanlzma: Fix compiler warnings. >+ Fix a typo in NEWS. > >- extra/scanlzma/scanlzma.c | 6 +++++- >- 1 file changed, 5 insertions(+), 1 deletion(-) >+ NEWS | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 7b350fe21aa4fd6495a3b6188a40e3f1ae7c0edf >+commit 0d2a2e0a545c3da2b3e9500f1e531eb903087245 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2018-04-29 18:15:37 +0300 >+Date: 2022-12-13 17:41:03 +0200 > >- Add NEWS for 5.2.4. >+ Add NEWS for 5.2.10. > >- NEWS | 27 +++++++++++++++++++++++++++ >- 1 file changed, 27 insertions(+) >+ NEWS | 12 ++++++++++++ >+ 1 file changed, 12 insertions(+) > >-commit 5801591162a280aa52d156dfde42c531ec7fd8b6 >+commit 177ece1c8eb007188fb1b04eff09ca2193fbdea6 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2018-02-06 19:36:30 +0200 >+Date: 2022-12-13 12:30:45 +0200 > >- Update THANKS. >+ Tests: Fix a typo in tests/files/README. > >- THANKS | 2 ++ >- 1 file changed, 2 insertions(+) >+ tests/files/README | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit c4a616f4536146f8906e1b4412eefeec07b28fae >-Author: Ben Boeckel <mathstuf@gmail.com> >-Date: 2018-01-29 13:58:18 -0500 >+commit 60f45bdbaa6b07558b3f4baac285739b0c6342f5 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-12-13 12:30:09 +0200 > >- nothrow: use noexcept for C++11 and newer >- >- In C++11, the `throw()` specifier is deprecated and `noexcept` is >- preffered instead. >+ Tests: Add two ARM64 test files. > >- src/liblzma/api/lzma.h | 6 +++++- >- 1 file changed, 5 insertions(+), 1 deletion(-) >+ tests/files/README | 7 +++++++ >+ tests/files/good-1-arm64-lzma2-1.xz | Bin 0 -> 512 bytes >+ tests/files/good-1-arm64-lzma2-2.xz | Bin 0 -> 488 bytes >+ tests/test_files.sh | 5 +++++ >+ 4 files changed, 12 insertions(+) > >-commit 0b8947782ff3c5ef830a7f85412e44dcf3cdeb77 >+commit f5e419550619c548c7c35d7e367cf00580a56521 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2018-02-06 18:02:48 +0200 >+Date: 2022-12-12 22:44:21 +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. >+ Translations: Update the Catalan translation. > >- src/liblzma/rangecoder/range_common.h | 4 +--- >- 1 file changed, 1 insertion(+), 3 deletions(-) >+ po/ca.po | 657 +++++++++++++++++++++++++++++---------------------------------- >+ 1 file changed, 306 insertions(+), 351 deletions(-) > >-commit 48f3b9f73ffea7f55d5678997aba0e79d2e82168 >+commit 0fb9d355da3789b1757040af475b4e6bbc8b8af8 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2018-01-10 22:10:39 +0200 >+Date: 2022-12-12 19:18:12 +0200 > > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit a3ce3e902342be37c626a561ce3d9ffcf27d0f94 >+commit e5b6c161c61a37c54dcb76a99bbb83ac4abe02dc > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2018-01-10 21:54:27 +0200 >+Date: 2022-12-12 19:07:58 +0200 > >- tuklib_integer: New Intel C compiler needs immintrin.h. >+ Update AUTHORS. >+ >+ AUTHORS | 12 ++++++++++++ >+ 1 file changed, 12 insertions(+) >+ >+commit f2d98e691099d82054d5f3071ef6f5e809932e44 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-12-12 15:31:14 +0200 >+ >+ Docs: Omit multi-threaded decompress from TODO. > >- Thanks to Melanie Blower (Intel) for the patch. >+ The TODO file outdated still. > >- src/common/tuklib_integer.h | 11 +++++++++++ >- 1 file changed, 11 insertions(+) >+ TODO | 2 -- >+ 1 file changed, 2 deletions(-) > >-commit 4505ca483985f88c6923c05a43b4327feaab83b1 >+commit b42908c42a4cc091db45a7e5ba0e0ecceaa3f6da > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2017-09-24 20:04:24 +0300 >+Date: 2022-12-11 21:16:09 +0200 > >- Update THANKS. >+ Docs: Update xz-file-format.txt to 1.1.0 for ARM64 filter. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ doc/xz-file-format.txt | 29 ++++++++++++++++++++++------- >+ 1 file changed, 22 insertions(+), 7 deletions(-) > >-commit 1ef3cc226e3ce173575c218238b71a4eecabc470 >+commit 854f2f5946b353cb0963fd6dfd54d363adc89b9f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2017-09-16 20:36:20 +0300 >+Date: 2022-12-11 21:13:57 +0200 > >- 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). >+ xz: Rename --experimental-arm64 to --arm64. > >- 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(-) >+ src/xz/args.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit e775d2a8189d24f60470e6e49d8af881df3a1680 >+commit 31dbd1e5fb65831915a7bbb531c3f19aea8d57a5 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2017-09-16 12:54:23 +0300 >+Date: 2022-12-11 21:13:06 +0200 > >- Windows: Add project files for VS2017. >- >- These files match the v5.2 branch (no file info decoder). >+ liblzma: Change LZMA_FILTER_ARM64 to the official Filter ID 0x0A. > >- 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(+) >+ src/liblzma/api/lzma/bcj.h | 6 +----- >+ 1 file changed, 1 insertion(+), 5 deletions(-) > >-commit 10e02e0fbb6e2173f8b41f6e39b7b570f47dd74d >+commit 01b3549e523edac899ec4925b282ceddd20da116 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2017-09-16 12:39:43 +0300 >+Date: 2022-12-08 19:24:22 +0200 > >- Windows: Move VS2013 files into windows/vs2013 directory. >+ xz: Make args_info.files_name a const pointer. > >- 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(-) >+ src/xz/args.c | 2 +- >+ src/xz/args.h | 2 +- >+ 2 files changed, 2 insertions(+), 2 deletions(-) > >-commit 06eebd4543196ded36fa9b8b9544195b38b24ef2 >+commit bc665b84ea6bf7946394a08122177efe41b26a5f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2017-08-14 20:08:33 +0300 >+Date: 2022-12-08 19:18:16 +0200 > >- Fix or hide warnings from GCC 7's -Wimplicit-fallthrough. >+ xz: Don't modify argv[]. >+ >+ The code that parses --memlimit options and --block-list modified >+ the argv[] when parsing the option string from optarg. This was >+ visible in "ps auxf" and such and could be confusing. I didn't >+ understand it back in the day when I wrote that code. Now a copy >+ is allocated when modifiable strings are needed. > >- src/liblzma/lzma/lzma_decoder.c | 6 ++++++ >- src/xz/list.c | 2 ++ >- 2 files changed, 8 insertions(+) >+ src/xz/args.c | 23 +++++++++++++++++++---- >+ 1 file changed, 19 insertions(+), 4 deletions(-) > >-commit ea4ea1dffafebaa8b2770bf3eca46900e4dd22dc >-Author: Alexey Tourbin <alexey.tourbin@gmail.com> >-Date: 2017-05-16 23:56:35 +0300 >+commit a13064e1c290de7933db72b6dffbd65cfce59c9f >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-12-08 18:18:57 +0200 > >- Docs: Fix a typo in a comment in doc/examples/02_decompress.c. >+ Translations: Update the German man page translations. > >- doc/examples/02_decompress.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ po4a/de.po | 4570 ++++++++++++++++++------------------------------------------ >+ 1 file changed, 1374 insertions(+), 3196 deletions(-) > >-commit eb2ef4c79bf405ea0d215f3b1df3d0eaf5e1d27b >+commit 8bdbe42a8d0d75dff70206b923fc4bce5c69a40a >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-06 23:05:56 +0800 >+ >+ Translations: Update the German translation. >+ >+ po/de.po | 586 ++++++++++++++++++++++++++++++++++----------------------------- >+ 1 file changed, 315 insertions(+), 271 deletions(-) >+ >+commit 5c304b57c24ef40ff57f864301065f0244c05bde >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-06 23:04:25 +0800 >+ >+ Translations: Update the Turkish translation. >+ >+ po/tr.po | 221 +++++++++++++++++++++++++++++++-------------------------------- >+ 1 file changed, 108 insertions(+), 113 deletions(-) >+ >+commit 6d86781fdb937970486500447ebb49b98244235b >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-06 23:02:11 +0800 >+ >+ Translations: Update the Croatian translation. >+ >+ po/hr.po | 228 +++++++++++++++++++++++++++++++-------------------------------- >+ 1 file changed, 113 insertions(+), 115 deletions(-) >+ >+commit 7a5b4b8075eb36026b1796f04ffed5830c42396a >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-06 22:56:30 +0800 >+ >+ Translations: Add Romanian translation of man pages. >+ >+ Thanks to Remus-Gabriel Chelu. >+ >+ po4a/po4a.conf | 2 +- >+ po4a/ro.po | 3692 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 3693 insertions(+), 1 deletion(-) >+ >+commit c6977e7400088177556e8771bcb839eb7d90caa3 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-12-06 22:52:13 +0800 >+ >+ Translations: Update the Romanian translation. >+ >+ po/ro.po | 294 +++++++++++++++++++++++++++++++-------------------------------- >+ 1 file changed, 147 insertions(+), 147 deletions(-) >+ >+commit ac2a747e939c2cbccff7a49c399769af5e02d2ab > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2017-05-23 18:34:43 +0300 >+Date: 2022-12-08 17:30:09 +0200 > >- xz: Fix "xz --list --robot missing_or_bad_file.xz". >+ liblzma: Check for unexpected NULL pointers in block_header_decode(). > >- It ended up printing an uninitialized char-array when trying to >- print the check names (column 7) on the "totals" line. >+ The API docs gave an impression that such checks are done >+ but they actually weren't done. In practice it made little >+ difference since the calling code has a bug if these are NULL. > >- 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. >+ Thanks to Jia Tan for the original patch that checked for >+ block->filters == NULL. > >- src/xz/list.c | 8 ++++++-- >- 1 file changed, 6 insertions(+), 2 deletions(-) >+ src/liblzma/common/block_header_decoder.c | 4 ++++ >+ 1 file changed, 4 insertions(+) > >-commit 3ea5dbd9b0d79048e336e40cef3b6d814fb74e13 >+commit 24790f49ae66938c1c7574315e1c0aba1ed5ed25 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2017-04-24 19:48:47 +0300 >+Date: 2022-12-01 20:59:32 +0200 > >- Build: Omit pre-5.0.0 entries from the generated ChangeLog. >+ Bump version number for 5.3.5beta. > >- It makes ChangeLog significantly smaller. >+ This also sorts the symbol names alphabetically in liblzma_*.map. > >- Makefile.am | 3 ++- >- 1 file changed, 2 insertions(+), 1 deletion(-) >+ src/liblzma/api/lzma/version.h | 4 ++-- >+ src/liblzma/liblzma_generic.map | 10 +++++----- >+ src/liblzma/liblzma_linux.map | 10 +++++----- >+ 3 files changed, 12 insertions(+), 12 deletions(-) > >-commit bae24675936df99064de1502593c006bd902594b >+commit 7e53c5bcb3c2c17f47c096c06ff6b1481e6ecafa > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2017-04-24 19:30:22 +0300 >+Date: 2022-12-01 20:57:26 +0200 > >- Update the Git repository URL to HTTPS in ChangeLog. >+ Add NEWS for 5.3.5beta. > >- ChangeLog | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ NEWS | 43 +++++++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 43 insertions(+) > >-commit 70f479211973b5361f4d7cb08ba5be69b4266e7a >+commit 5865f2aaac326fcbd9f8a7d62defa230e4cb644e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2017-04-19 22:17:35 +0300 >+Date: 2022-12-01 20:57:09 +0200 > >- Update the home page URLs to HTTPS. >+ Update THANKS. > >- 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(-) >+ THANKS | 3 +++ >+ 1 file changed, 3 insertions(+) > >-commit 2a4b2fa75d06a097261a02ecd3cf2b6d449bf754 >+commit 62b270988ec67314d69976df484d2974c6eacfda > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2017-03-30 22:01:54 +0300 >+Date: 2022-12-01 20:04:17 +0200 > >- xz: Use POSIX_FADV_RANDOM for in "xz --list" mode. >+ liblzma: Use __has_attribute(__symver__) to fix Clang detection. > >- xz --list is random access so POSIX_FADV_SEQUENTIAL was clearly >- wrong. >+ If someone sets up Clang to define __GNUC__ to 10 or greater >+ then symvers broke. __has_attribute is supported by such GCC >+ and Clang versions that don't support __symver__ so this should >+ be much better and simpler way to detect if __symver__ is >+ actually supported. >+ >+ Thanks to Tomasz Gajc for the bug report. > >- src/xz/file_io.c | 10 ++++++++-- >- 1 file changed, 8 insertions(+), 2 deletions(-) >+ src/liblzma/common/common.h | 15 ++++++++++++++- >+ 1 file changed, 14 insertions(+), 1 deletion(-) > >-commit eb25743ade39170cffd9566a1aae272098cce216 >+commit f9ca7d45162664ddd9fb70e19335c2426e5d75bb > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2017-03-30 19:47:45 +0300 >+Date: 2022-12-01 18:51:52 +0200 > >- liblzma: Fix lzma_memlimit_set(strm, 0). >+ liblzma: Omit zero-skipping from ARM64 filter. > >- 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. >+ It has some complicated downsides and its usefulness is more limited >+ than I originally thought. So this change is bad for certain very >+ specific situations but a generic solution that works for other >+ filters (and is otherwise better too) is planned anyway. And this >+ way 7-Zip can use the same compatible filter for the .7z format. > >- 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. >+ This is still marked as experimental with a new temporary Filter ID. > >- 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(-) >+ src/liblzma/api/lzma/bcj.h | 2 +- >+ src/liblzma/simple/arm64.c | 81 +++++++++++++--------------------------------- >+ 2 files changed, 24 insertions(+), 59 deletions(-) > >-commit ef36c6362f3f3853f21b8a6359bcd06576ebf207 >+commit 5baec3f0a9c85e6abf45c0f652f699b074129a8b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2017-03-30 19:16:55 +0300 >+Date: 2022-12-01 18:13:27 +0200 > >- liblzma: Similar memlimit fix for stream_, alone_, and auto_decoder. >+ xz: Omit the special notes about ARM64 filter on the man page. > >- 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(-) >+ src/xz/xz.1 | 5 ++--- >+ 1 file changed, 2 insertions(+), 3 deletions(-) > >-commit 57616032650f03840480b696d7878acdd2065521 >+commit 0c3627b51862eb0dcdd4fc283d046250571991c6 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2017-03-30 18:58:18 +0300 >+Date: 2022-12-01 18:12:03 +0200 > >- 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. >+ liblzma: Don't be over-specific in lzma_str_to_filters API doc. > >- src/liblzma/api/lzma/index.h | 18 +++++++++++------- >- src/liblzma/common/index_decoder.c | 4 ++-- >- 2 files changed, 13 insertions(+), 9 deletions(-) >+ src/liblzma/api/lzma/filter.h | 3 +-- >+ 1 file changed, 1 insertion(+), 2 deletions(-) > >-commit 3d566cd519017eee1a400e7961ff14058dfaf33c >+commit 94adf057f27b1970f493dc99cd166407d7255639 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-12-30 13:26:36 +0200 >+Date: 2022-12-01 17:54:23 +0200 > >- Bump version and soname for 5.2.3. >+ liblzma: Silence unused variable warning when BCJ filters are disabled. >+ >+ Thanks to Jia Tan for the original patch. > >- src/liblzma/Makefile.am | 2 +- >- src/liblzma/api/lzma/version.h | 2 +- >- 2 files changed, 2 insertions(+), 2 deletions(-) >+ src/liblzma/common/string_conversion.c | 15 +++++++++++++++ >+ 1 file changed, 15 insertions(+) > >-commit 053e624fe33795e779ff736f16ce44a129c829b5 >+commit c68af4441744e5ffc41a472e1be9c9d53a1d9780 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-12-30 13:25:10 +0200 >+Date: 2022-12-01 17:38:03 +0200 > >- Update NEWS for 5.2.3. >+ Translations: Update the Chinese (simplified) translation. > >- NEWS | 39 +++++++++++++++++++++++++++++++++++++++ >- 1 file changed, 39 insertions(+) >+ po/zh_CN.po | 608 ++++++++++++++++++++++++++++++++++-------------------------- >+ 1 file changed, 348 insertions(+), 260 deletions(-) > >-commit cae412b2b77d7fd88d187ed7659331709311f80d >+commit 3be6942e5c27d29995d41da52fbe274e4ce4a537 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-04-01 14:45:25 +0300 >+Date: 2022-11-30 18:55:03 +0200 > >- xz: Fix the Capsicum rights on user_abort_pipe. >+ Add NEWS for 5.2.9. > >- src/xz/file_io.c | 6 +++++- >- 1 file changed, 5 insertions(+), 1 deletion(-) >+ NEWS | 34 ++++++++++++++++++++++++++++++++++ >+ 1 file changed, 34 insertions(+) > >-commit 9ccbae41000572193b9a09e7102f9e84dc6d96de >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-12-28 21:05:22 +0200 >+commit 7c16e312cb2f40b81154c0e5be13a3c6b8da485d >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-11-30 23:33:08 +0800 > >- Mention potential sandboxing bugs in INSTALL. >+ xz: Remove message_filters_to_str function prototype from message.h. >+ >+ This was forgotten from 7484744af6cbabe81e92af7d9e061dfd597fff7b. > >- INSTALL | 5 ++++- >- 1 file changed, 4 insertions(+), 1 deletion(-) >+ src/xz/message.h | 16 ---------------- >+ 1 file changed, 16 deletions(-) > >-commit e013a337d3de77cce24360dffe956ea2339489b6 >+commit 764955e2d4f2a5e8d6d6fec63af694f799e050e7 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-11-21 20:24:50 +0200 >+Date: 2022-11-30 18:08:34 +0200 > >- liblzma: Avoid multiple definitions of lzma_coder structures. >+ Change the bug report address. > >- 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. >+ It forwards to me and Jia Tan. > >- Fixes: >- http://www.mail-archive.com/xz-devel@tukaani.org/msg00279.html >+ Also update the IRC reference in README as #tukaani was moved >+ to Libera Chat long ago. > >- 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(-) >+ 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 8e0f1af3dcaec00a3879cce8ad7441edc6359d1c >+commit c21983c76031e01da01ad3c6cc716fe4b8a75070 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-12-26 20:50:25 +0200 >+Date: 2022-11-30 17:50:17 +0200 > >- Document --enable-sandbox configure option in INSTALL. >+ Build: Add string_conversion.c to CMake, DOS, and VS files. > >- INSTALL | 25 +++++++++++++++++++++++++ >- 1 file changed, 25 insertions(+) >+ CMakeLists.txt | 1 + >+ dos/Makefile | 1 + >+ windows/vs2013/liblzma.vcxproj | 1 + >+ windows/vs2013/liblzma_dll.vcxproj | 1 + >+ windows/vs2017/liblzma.vcxproj | 1 + >+ windows/vs2017/liblzma_dll.vcxproj | 1 + >+ windows/vs2019/liblzma.vcxproj | 1 + >+ windows/vs2019/liblzma_dll.vcxproj | 1 + >+ 8 files changed, 8 insertions(+) > >-commit ce2542d220de06acd618fd9f5c0a6683029fb4eb >+commit 30be0c35d24eb5175459d69dbf7d92e2b087ef82 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-03-31 22:19:34 +0300 >+Date: 2022-11-30 17:38:32 +0200 > >- 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. >+ Update to HTTPS URLs in AUTHORS. > >- 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(-) >+ AUTHORS | 6 +++--- >+ 1 file changed, 3 insertions(+), 3 deletions(-) > >-commit 3ca1d5e6320111043e19434da881065fadafa0e4 >+commit 0a72b9ca2fe20082da9b7128fe0d908af947a851 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-11-30 00:52:06 +0800 >+ >+ liblzma: Improve documentation for string to filter functions. >+ >+ src/liblzma/api/lzma/filter.h | 17 +++++++++-------- >+ 1 file changed, 9 insertions(+), 8 deletions(-) >+ >+commit a6e21fcede3b196160a52dd294d965c508a4bb33 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-03-31 21:12:30 +0300 >+Date: 2022-11-29 22:27:42 +0200 > >- Fix bugs and otherwise improve ax_check_capsicum.m4. >+ liblzma: Two fixes to lzma_str_list_filters() API docs. > >- AU_ALIAS was removed because the new version is incompatible >- with the old version. >- >- It no longer checks for <sys/capability.h> 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. >+ Thanks to Jia Tan. > >- m4/ax_check_capsicum.m4 | 103 ++++++++++++++++++++++++------------------------ >- 1 file changed, 51 insertions(+), 52 deletions(-) >+ src/liblzma/api/lzma/filter.h | 6 +++--- >+ 1 file changed, 3 insertions(+), 3 deletions(-) > >-commit 5f3a742b64197fe8bedb6f05fc6ce5d177d11145 >+commit 7484744af6cbabe81e92af7d9e061dfd597fff7b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-03-31 19:20:24 +0300 >+Date: 2022-11-28 21:57:47 +0200 > >- Add m4/ax_check_capsicum.m4 for detecting Capsicum support. >+ xz: Use lzma_str_from_filters(). > >- 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. >+ Two uses: Displaying encoder filter chain when compressing with -vv, >+ and displaying the decoder filter chain in --list -vv. > >- m4/ax_check_capsicum.m4 | 86 +++++++++++++++++++++++++++++++++++++++++++++++++ >- 1 file changed, 86 insertions(+) >+ src/xz/list.c | 28 ++++++--- >+ src/xz/message.c | 175 +++---------------------------------------------------- >+ 2 files changed, 28 insertions(+), 175 deletions(-) > >-commit d74377e62b4c649e40294dd441de72c0f092e67c >+commit cedeeca2ea6ada5b0411b2ae10d7a859e837f203 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-10-12 20:29:09 +0300 >+Date: 2022-11-28 21:37:48 +0200 > >- liblzma: Fix a memory leak in error path of lzma_index_dup(). >+ liblzma: Add lzma_str_to_filters, _from_filters, and _list_filters. > >- 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. >+ lzma_str_to_filters() uses static error messages which makes >+ them not very precise. It tells the position in the string >+ where an error occurred though which helps quite a bit if >+ applications take advantage of it. Dynamic error messages can >+ be added later with a new flag if it seems important enough. > >- src/liblzma/common/index.c | 18 +++++++++--------- >- 1 file changed, 9 insertions(+), 9 deletions(-) >+ src/liblzma/api/lzma/filter.h | 258 +++++++ >+ src/liblzma/common/Makefile.inc | 1 + >+ src/liblzma/common/string_conversion.c | 1302 ++++++++++++++++++++++++++++++++ >+ src/liblzma/liblzma_generic.map | 3 + >+ src/liblzma/liblzma_linux.map | 3 + >+ 5 files changed, 1567 insertions(+) > >-commit f580732216dcf971f3f006fe8e01cd4979e1d964 >+commit 072ebf7b1335421193ffa9d4a70d5533786b8995 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-10-24 18:53:25 +0300 >+Date: 2022-11-28 21:02:19 +0200 > >- Update THANKS. >+ liblzma: Make lzma_validate_chain() available outside filter_common.c. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ src/liblzma/common/filter_common.c | 8 ++++---- >+ src/liblzma/common/filter_common.h | 3 +++ >+ 2 files changed, 7 insertions(+), 4 deletions(-) > >-commit 88d7a7fd153bf1355cdf798ffdac7443d0169afc >+commit 5f22bd2d37e3bd01a5d701b51750eb51f09c11bf > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-10-24 18:51:36 +0300 >+Date: 2022-11-28 10:51:03 +0200 > >- tuklib_cpucores: Add support for sched_getaffinity(). >+ liblzma: Remove lzma_lz_decoder_uncompressed() as it's now unused. >+ >+ src/liblzma/lz/lz_decoder.c | 14 -------------- >+ src/liblzma/lz/lz_decoder.h | 3 --- >+ 2 files changed, 17 deletions(-) >+ >+commit cee83206465b95729ab649aa2f57fdbde8dcaf89 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-28 10:48:53 +0200 >+ >+ liblzma: Use LZMA1EXT feature in lzma_microlzma_decoder(). > >- 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. >+ Here too this avoids the slightly ugly method to set >+ the uncompressed size. > >- 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. >+ Also moved the setting of dict_size to the struct initializer. >+ >+ src/liblzma/common/microlzma_decoder.c | 15 ++++++++------- >+ 1 file changed, 8 insertions(+), 7 deletions(-) >+ >+commit e310e8b6a490dfb468f4ed68feff246d776b323c >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-28 10:28:20 +0200 >+ >+ liblzma: Use LZMA1EXT feature in lzma_alone_decoder(). > >- Thanks to Sebastian Andrzej Siewior for the original patch >- and testing. >+ This avoids the need to use the slightly ugly method to >+ set the uncompressed size. > >- m4/tuklib_cpucores.m4 | 30 +++++++++++++++++++++++++++++- >- src/common/tuklib_cpucores.c | 9 +++++++++ >- 2 files changed, 38 insertions(+), 1 deletion(-) >+ src/liblzma/common/alone_decoder.c | 18 +++++++++++++----- >+ 1 file changed, 13 insertions(+), 5 deletions(-) > >-commit 51baf684376903dbeddd840582bfdf9fa91b311b >+commit 33b8a24b6646a9dbfd8358405aec466b13078559 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-06-30 20:27:36 +0300 >+Date: 2022-11-27 23:16:21 +0200 > >- xz: Fix copying of timestamps on Windows. >+ liblzma: Add LZMA_FILTER_LZMA1EXT to support LZMA1 without end marker. > >- xz used to call utime() on Windows, but its result gets lost >- on close(). Using _futime() seems to work. >+ Some file formats need support for LZMA1 streams that don't use >+ the end of payload marker (EOPM) alias end of stream (EOS) marker. >+ So far liblzma API has supported decompressing such streams via >+ lzma_alone_decoder() when .lzma header specifies a known >+ uncompressed size. Encoding support hasn't been available in the API. > >- Thanks to Martok for reporting the bug: >- http://www.mail-archive.com/xz-devel@tukaani.org/msg00261.html >+ Instead of adding a new LZMA1-only API for this purpose, this commit >+ adds a new filter ID for use with raw encoder and decoder. The main >+ benefit of this approach is that then also filter chains are possible, >+ for example, if someone wants to implement support for .7z files that >+ use the x86 BCJ filter with LZMA1 (not BCJ2 as that isn't supported >+ in liblzma). > >- configure.ac | 2 +- >- src/xz/file_io.c | 18 ++++++++++++++++++ >- 2 files changed, 19 insertions(+), 1 deletion(-) >+ src/liblzma/api/lzma/lzma12.h | 123 ++++++++++++++++++++++++++++++-- >+ src/liblzma/common/filter_common.c | 7 ++ >+ src/liblzma/common/filter_decoder.c | 6 ++ >+ src/liblzma/common/filter_encoder.c | 9 +++ >+ src/liblzma/lzma/lzma2_encoder.c | 2 +- >+ src/liblzma/lzma/lzma_decoder.c | 26 ++++++- >+ src/liblzma/lzma/lzma_encoder.c | 40 +++++++++-- >+ src/liblzma/lzma/lzma_encoder.h | 3 +- >+ src/liblzma/lzma/lzma_encoder_private.h | 3 + >+ 9 files changed, 204 insertions(+), 15 deletions(-) > >-commit 1ddc479851139d6e8202e5835421bfe6578d9e07 >+commit 9a304bf1e45b3ddf61aaeaa7c764915b34618ede > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-06-16 22:46:02 +0300 >+Date: 2022-11-27 18:43:07 +0200 > >- xz: Silence warnings from -Wlogical-op. >- >- Thanks to Evan Nemerson. >+ liblzma: Avoid unneeded use of void pointer in LZMA decoder. > >- src/xz/file_io.c | 12 ++++++++++-- >- 1 file changed, 10 insertions(+), 2 deletions(-) >+ src/liblzma/lzma/lzma_decoder.c | 3 +-- >+ src/liblzma/lzma/lzma_decoder.h | 2 +- >+ 2 files changed, 2 insertions(+), 3 deletions(-) > >-commit be647ff5ed5a1c244a65722af6ce250259f3b14a >+commit 218394958c7683f892275bb40eae880620feebcc > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-04-10 20:55:49 +0300 >+Date: 2022-11-27 18:20:33 +0200 > >- Build: Fix = to += for xz_SOURCES in src/xz/Makefile.am. >+ liblzma: Pass the Filter ID to LZ encoder and decoder. > >- Thanks to Christian Kujau. >+ This allows using two Filter IDs with the same >+ initialization function and data structures. > >- src/xz/Makefile.am | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ src/liblzma/common/alone_decoder.c | 1 + >+ src/liblzma/common/alone_encoder.c | 1 + >+ src/liblzma/common/common.h | 7 +++++-- >+ src/liblzma/common/lzip_decoder.c | 1 + >+ src/liblzma/common/microlzma_decoder.c | 1 + >+ src/liblzma/common/microlzma_encoder.c | 1 + >+ src/liblzma/lz/lz_decoder.c | 5 +++-- >+ src/liblzma/lz/lz_decoder.h | 3 ++- >+ src/liblzma/lz/lz_encoder.c | 5 +++-- >+ src/liblzma/lz/lz_encoder.h | 3 ++- >+ src/liblzma/lzma/lzma2_decoder.c | 3 ++- >+ src/liblzma/lzma/lzma2_encoder.c | 3 ++- >+ src/liblzma/lzma/lzma_decoder.c | 2 +- >+ src/liblzma/lzma/lzma_encoder.c | 2 +- >+ 14 files changed, 26 insertions(+), 12 deletions(-) > >-commit fb6d50c15343831f35305982cefa82053099191d >+commit 1663c7676b76f4c514031797f3db1896e8100f7f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-04-10 20:54:17 +0300 >+Date: 2022-11-27 01:03:16 +0200 > >- 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. >+ liblzma: Remove two FIXME comments. > >- configure.ac | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ src/liblzma/common/filter_encoder.c | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit 74f8dad9f912a2993768d93d108ea2b0b2c196e0 >+commit 11fe708db783ac36ebeeb85da164e29e8c300910 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-03-13 20:21:49 +0200 >+Date: 2022-11-26 22:25:30 +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. >+ xz: Use lzma_filters_free(). > >- INSTALL | 36 ++++++++++++++++++++++ >- configure.ac | 76 +++++++++++++++++++++++------------------------ >- src/liblzma/check/check.h | 16 ++++------ >- 3 files changed, 79 insertions(+), 49 deletions(-) >+ src/xz/list.c | 8 ++------ >+ 1 file changed, 2 insertions(+), 6 deletions(-) > >-commit ea7f6ff04cb5bb1498088eb09960a4c3f13dfe39 >+commit e782af9110d8499c7ac2929bc871540eefea5ea1 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-03-10 20:27:05 +0200 >+Date: 2022-11-26 22:21:13 +0200 > >- Update THANKS. >+ liblzma: Use lzma_filters_free() in more places. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ src/liblzma/common/block_header_decoder.c | 20 ++------------------ >+ src/liblzma/common/stream_decoder.c | 4 +--- >+ src/liblzma/common/stream_decoder_mt.c | 22 +++++----------------- >+ 3 files changed, 8 insertions(+), 38 deletions(-) > >-commit d0e018016b311232e82d9a98dc68f1e3dabce794 >+commit 90caaded2dc6db1d6a55b01160d7e87f4a423628 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2016-03-10 20:26:49 +0200 >+Date: 2022-11-25 18:04:37 +0200 > >- Build: Avoid SHA256_Init on FreeBSD and MINIX 3. >+ liblzma: Omit simple coder init functions if they are disabled. >+ >+ src/liblzma/simple/arm.c | 4 ++++ >+ src/liblzma/simple/armthumb.c | 4 ++++ >+ src/liblzma/simple/ia64.c | 4 ++++ >+ src/liblzma/simple/powerpc.c | 4 ++++ >+ src/liblzma/simple/sparc.c | 4 ++++ >+ src/liblzma/simple/x86.c | 4 ++++ >+ 6 files changed, 24 insertions(+) >+ >+commit 5cd9f0df78cc4f8a7807bf6104adea13034fbb45 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-24 23:24:59 +0200 >+ >+ xz: Allow nice_len 2 and 3 even if match finder requires 3 or 4. > >- 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. >+ Now that liblzma accepts these, we avoid the extra check and >+ there's one message less for translators too. >+ >+ src/xz/options.c | 5 ----- >+ 1 file changed, 5 deletions(-) >+ >+commit 3be88ae071371caa279b44e13f4836fb178fe4ae >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-24 23:23:55 +0200 >+ >+ liblzma: Allow nice_len 2 and 3 even if match finder requires 3 or 4. > >- 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. >+ That is, if the specified nice_len is smaller than the minimum >+ of the match finder, silently use the match finder's minimum value >+ instead of reporting an error. The old behavior is annoying to users >+ and it complicates xz options handling too. > >- configure.ac | 27 +++++++++++++++++++++------ >- 1 file changed, 21 insertions(+), 6 deletions(-) >+ src/liblzma/lz/lz_encoder.c | 14 +++++++++----- >+ src/liblzma/lz/lz_encoder.h | 9 +++++++++ >+ src/liblzma/lzma/lzma_encoder.c | 11 ++++++++--- >+ 3 files changed, 26 insertions(+), 8 deletions(-) > >-commit 5daae123915f32a4ed6dc948b831533c2d1beec3 >+commit 93439cfafe1768b3b18d67d2356ef7e7559bba59 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-08 20:16:10 +0200 >+Date: 2022-11-24 16:25:10 +0200 > >- tuklib_physmem: Hopefully silence a warning on Windows. >+ liblzma: Add lzma_filters_update() support to the multi-threaded encoder. >+ >+ A tiny downside of this is that now a 1-4 tiny allocations are made >+ for every Block because each worker thread needs its own copy of >+ the filter chain. > >- src/common/tuklib_physmem.c | 3 ++- >- 1 file changed, 2 insertions(+), 1 deletion(-) >+ src/liblzma/api/lzma/filter.h | 36 +++++++------ >+ src/liblzma/common/stream_encoder_mt.c | 96 +++++++++++++++++++++++++++++++--- >+ 2 files changed, 109 insertions(+), 23 deletions(-) > >-commit 491acc406e098167ccb7fce0728b94c2f32cff9f >+commit 17ac51e689794eb41cab3e80946fec689caea2d2 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-04 23:17:43 +0200 >+Date: 2022-11-24 14:53:22 +0200 > > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 8173ff8790ad3502d04e1c07d014cb84a3b8187b >+commit 06824396b2b6c84f3a235cb7c19c2a9701167797 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-04 23:14:00 +0200 >+Date: 2022-11-24 14:52:44 +0200 > >- liblzma: Make Valgrind happier with optimized (gcc -O2) liblzma. >+ Build: Don't put GNU/Linux-specific symbol versions into static 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. >+ It not only makes no sense to put symbol versions into a static library >+ but it can also cause breakage. > >- Thanks to Rich Prohaska. I remember this being mentioned long >- ago by someone else but nothing was done back then. >+ 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 > >- src/liblzma/lz/lz_encoder.c | 4 ++++ >- 1 file changed, 4 insertions(+) >+ CMakeLists.txt | 5 +- >+ configure.ac | 143 +++++++++++++++++++++++++++++--------------- >+ src/liblzma/common/common.h | 12 ++++ >+ 3 files changed, 111 insertions(+), 49 deletions(-) > >-commit 013de2b5ab8094d2c82a2771f3d143eeb656eda9 >+commit e1acf7107291f8b3d6d609a7133331ff36d35d14 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-03 20:55:45 +0200 >+Date: 2022-11-24 01:32:16 +0200 > >- liblzma: Rename lzma_presets.c back to lzma_encoder_presets.c. >+ liblzma: Refactor to use lzma_filters_free(). > >- It would be too annoying to update other build systems >- just because of this. >+ lzma_filters_free() sets the options to NULL and ids to >+ LZMA_VLI_UNKNOWN so there is no need to do it by caller; >+ the filter arrays will always be left in a safe state. >+ >+ Also use memcpy() instead of a loop to copy a filter chain >+ when it is known to be safe to copy LZMA_FILTERS_MAX + 1 >+ (even if the elements past the terminator might be uninitialized). > >- src/liblzma/lzma/Makefile.inc | 2 +- >- src/liblzma/lzma/{lzma_presets.c => lzma_encoder_presets.c} | 2 +- >- 2 files changed, 2 insertions(+), 2 deletions(-) >+ src/liblzma/common/stream_encoder.c | 16 ++++------------ >+ src/liblzma/common/stream_encoder_mt.c | 11 ++--------- >+ 2 files changed, 6 insertions(+), 21 deletions(-) > >-commit a322f70ad96de88968c2c36e6a36bc08ae30bd20 >+commit cb05dbcf8b868441ec805016222f3fd77f1c5caa > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-03 20:47:07 +0200 >+Date: 2022-11-24 01:26:37 +0200 > >- Build: Disable xzdec, lzmadec, and lzmainfo when they cannot be built. >+ liblzma: Fix another invalid free() after memory allocation failure. > >- They all need decoder support and if that isn't available, >- there's no point trying to build them. >+ 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(). > >- configure.ac | 3 +++ >- 1 file changed, 3 insertions(+) >+ src/liblzma/common/stream_encoder_mt.c | 4 ++++ >+ 1 file changed, 4 insertions(+) > >-commit 8ea49606cf6427e32319de7693eca9e43f1c8ad6 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-03 20:35:19 +0200 >+commit 75f1a6c26df4ce329da0882786403e3ccf5cd898 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-05-05 20:53:42 +0800 > >- Build: Simplify $enable_{encoders,decoders} usage a bit. >+ 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(). > >- configure.ac | 6 ++++-- >- 1 file changed, 4 insertions(+), 2 deletions(-) >+ src/liblzma/common/block_encoder.c | 1 + >+ 1 file changed, 1 insertion(+) > >-commit 42131a25e52bfe400acfa7df93469a96bb78bb78 >+commit d0901645170b638c517f5c50866b6ef48f491c65 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-03 20:31:31 +0200 >+Date: 2022-11-24 01:02:50 +0200 > >- Windows/MSVC: Update config.h. >+ liblzma: Add new API function lzma_filters_free(). >+ >+ This is small but convenient and should have been added >+ a long time ago. > >- windows/config.h | 6 ++++++ >- 1 file changed, 6 insertions(+) >+ src/liblzma/api/lzma/filter.h | 21 +++++++++++++++++++++ >+ src/liblzma/common/filter_common.c | 26 ++++++++++++++++++++++++++ >+ src/liblzma/liblzma_generic.map | 1 + >+ src/liblzma/liblzma_linux.map | 1 + >+ 4 files changed, 49 insertions(+) > >-commit e9184e87cc989d14c7413e6adb3eca98f6ae0290 >+commit ae1f8a723dcde2f2c5cf444bcbb5fc5026b3c3c5 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-03 20:29:58 +0200 >+Date: 2022-11-24 00:02:31 +0200 > >- DOS: Update config.h. >+ CMake: Don't use symbol versioning with static library. > >- dos/config.h | 6 ++++++ >- 1 file changed, 6 insertions(+) >+ CMakeLists.txt | 10 +++++++--- >+ 1 file changed, 7 insertions(+), 3 deletions(-) > >-commit 2296778f3c9a1e3a8699973b09dd3610b8baa402 >+commit 48c1b99dc537a27e1ca929d8837e778e5ba32191 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-03 20:29:33 +0200 >+Date: 2022-11-23 21:55:22 +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. >+ liblzma: Add lzma_attr_warn_unused_result to lzma_filters_copy(). > >- 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(-) >+ src/liblzma/api/lzma/filter.h | 3 ++- >+ 1 file changed, 2 insertions(+), 1 deletion(-) > >-commit 97a3109281e475d9cf1b5095237d672fa0ad25e5 >+commit 10430fbf3820dafd4eafd38ec8be161a6978ed2b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-03 18:06:40 +0200 >+Date: 2022-11-23 21:26:21 +0200 > >- Build: Build LZMA1/2 presets also when only decoder is wanted. >+ liblzma: Fix invalid free() after memory allocation failure. > >- 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. >+ 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. > >- lzma_encocder_presets.c was renamed to lzma_presets.c to >- make it clear it's not used solely by the encoder code. >+ 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/lzma/Makefile.inc | 6 +++++- >- src/liblzma/lzma/{lzma_encoder_presets.c => lzma_presets.c} | 3 ++- >- 2 files changed, 7 insertions(+), 2 deletions(-) >+ src/liblzma/common/stream_encoder.c | 39 +++++++++++++++++++++++++++++-------- >+ 1 file changed, 31 insertions(+), 8 deletions(-) > >-commit dc6b78d7f0f6fe43e9d4215146e8581feb8090e7 >+commit cafd6dc397ca8b5b5f7775e8d6876b8fe70f8e70 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-03 17:54:48 +0200 >+Date: 2022-11-22 16:37:15 +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. >+ liblzma: Fix language in a comment. > >- configure.ac | 5 ----- >- 1 file changed, 5 deletions(-) >+ src/liblzma/common/stream_encoder.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 46d76c9cd3cb26a31f5ae6c3a8bbcf38e6da1add >+commit c392bf8ccba857baaf50399c4b460119befacd54 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-03 17:41:54 +0200 >+Date: 2022-11-22 11:20:17 +0200 > >- Build: Don't omit lzma_cputhreads() unless using --disable-threads. >+ liblzma: Fix infinite loop in LZMA encoder init with dict_size >= 2 GiB. > >- Previously it was omitted if encoders were disabled >- with --disable-encoders. It didn't make sense and >- it also broke the build. >+ 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/common/Makefile.inc | 5 ++++- >- 1 file changed, 4 insertions(+), 1 deletion(-) >+ src/liblzma/lzma/lzma_encoder.c | 19 +++++++++++++++---- >+ 1 file changed, 15 insertions(+), 4 deletions(-) > >-commit 16d68f874d89f1e4a1919786a35bbaef7d71a077 >+commit f50534c973a591ccf65485adfc827a8a7126ca6c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-02 18:16:51 +0200 >+Date: 2022-11-21 13:02:33 +0200 > >- liblzma: Fix a build failure related to external SHA-256 support. >+ liblzma: Fix two Doxygen commands in the API headers. > >- If an appropriate header and structure were found by configure, >- but a library with a usable SHA-256 functions wasn't, the build >- failed. >+ These were caught by clang -Wdocumentation. > >- src/liblzma/check/check.h | 32 +++++++++++++++++++++++--------- >- 1 file changed, 23 insertions(+), 9 deletions(-) >+ src/liblzma/api/lzma/hardware.h | 2 +- >+ src/liblzma/api/lzma/index_hash.h | 2 +- >+ 2 files changed, 2 insertions(+), 2 deletions(-) > >-commit d9311647fc1ab512a3394596221ab8039c00af6b >+commit 649d4872ed2f55196114a061d45b416fc4353569 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-11-02 15:19:10 +0200 >+Date: 2022-11-19 19:09:55 +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. >+ xz: Refactor duplicate code from hardware_memlimit_mtenc_get(). > >- src/xz/file_io.c | 25 ++++++++++++------------- >- 1 file changed, 12 insertions(+), 13 deletions(-) >+ src/xz/hardware.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit f59c4183f3c9066626ce45dc3db4642fa603fa21 >+commit d327743bb547a53364e5951a16e5f1663fe4b9ff > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-10-12 21:08:42 +0300 >+Date: 2022-11-19 19:06:13 +0200 > >- Update THANKS. >+ xz: Add support --threads=+N so that -T+1 gives threaded mode. > >- THANKS | 1 + >+ src/xz/args.c | 18 +++++++++++++++--- >+ src/xz/hardware.c | 17 +++++++++++++++-- >+ src/xz/hardware.h | 1 + >+ src/xz/xz.1 | 21 ++++++++++++++++++++- >+ 4 files changed, 51 insertions(+), 6 deletions(-) >+ >+commit a11a2b8b5e830ba682c1d81aaa7078842b296995 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-11-19 23:18:04 +0800 >+ >+ CMake: Adds test_memlimit to CMake tests >+ >+ CMakeLists.txt | 1 + > 1 file changed, 1 insertion(+) > >-commit 35f189673e280c12e4c5129f9f97e54eef3bbc04 >+commit 2af8d9e9b3f44f62d19e7c39297ec63af2e8c64f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-10-12 21:07:41 +0300 >+Date: 2022-11-15 19:10:21 +0200 > >- Tests: Add tests for the two bugs fixed in index.c. >+ Translations: Update the Korean translation. > >- tests/test_index.c | 30 ++++++++++++++++++++++++++++++ >- 1 file changed, 30 insertions(+) >+ po/ko.po | 652 ++++++++++++++++++++++++++++++++++++--------------------------- >+ 1 file changed, 371 insertions(+), 281 deletions(-) > >-commit e10bfdb0fcaff12f3a6dadee51e0a022aadccb51 >+commit 16ac05677292f7e21a4feaddcfb2ab062ea5f385 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-10-12 20:45:15 +0300 >+Date: 2022-11-15 19:09:28 +0200 > >- liblzma: Fix lzma_index_dup() for empty Streams. >- >- Stream Flags and Stream Padding weren't copied from >- empty Streams. >+ Translations: Update the Turkish translation. > >- src/liblzma/common/index.c | 11 ++++++----- >- 1 file changed, 6 insertions(+), 5 deletions(-) >+ po/tr.po | 568 ++++++++++++++++++++++++++++++++++----------------------------- >+ 1 file changed, 310 insertions(+), 258 deletions(-) > >-commit 06f434bd8980f25ca23232eb7bb7df7e37dc8448 >+commit b9a67d9a5fa207062d4aa8a01639234609315d31 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-10-12 20:31:44 +0300 >+Date: 2022-11-15 10:58:39 +0200 > >- liblzma: Add a note to index.c for those using static analyzers. >+ Bump version number for 5.3.4alpha. > >- src/liblzma/common/index.c | 3 +++ >- 1 file changed, 3 insertions(+) >+ src/liblzma/api/lzma/version.h | 2 +- >+ src/liblzma/liblzma_generic.map | 2 +- >+ src/liblzma/liblzma_linux.map | 2 +- >+ 3 files changed, 3 insertions(+), 3 deletions(-) > >-commit 9815cdf6987ef91a85493bfcfd1ce2aaf3b47a0a >+commit 5b999ba289b3280457b7386b9ac65dbbdf1575a5 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-09-29 13:59:35 +0300 >+Date: 2022-11-15 10:54:40 +0200 > >- Bump version and soname for 5.2.2. >+ Add NEWS for 5.3.4alpha. > >- src/liblzma/Makefile.am | 2 +- >- src/liblzma/api/lzma/version.h | 2 +- >- 2 files changed, 2 insertions(+), 2 deletions(-) >+ NEWS | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 96 insertions(+) > >-commit cbe0cec8476bdd0416c7ca9bc83895c9bea1cf78 >+commit ce8db9e37da4f6c87691c5066f51f91f2411c44a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-09-29 13:57:28 +0300 >+Date: 2022-11-15 10:54:08 +0200 > >- Update NEWS for 5.2.2. >+ Add NEWS for 5.2.8. > >- NEWS | 18 ++++++++++++++++++ >- 1 file changed, 18 insertions(+) >+ NEWS | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 79 insertions(+) > >-commit 49427ce7eececdd18bbd35dab23c81910d083e1c >-Author: Andre Noll <maan@tuebingen.mpg.de> >-Date: 2015-05-28 15:50:00 +0200 >+commit b56bc8251d2736224af6bdaaae734ceb8926a879 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-14 23:19:57 +0200 > >- Fix typo in German translation. >+ Revert "liblzma: Simple/BCJ filters: Allow disabling generic BCJ options." > >- 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. >+ This reverts commit 177bdc922cb17bd0fd831ab8139dfae912a5c2b8 >+ and also does equivalent change to arm64.c. >+ >+ Now that ARM64 filter will use lzma_options_bcj, this change >+ is not needed anymore. > >- po/de.po | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ src/liblzma/simple/arm.c | 2 +- >+ src/liblzma/simple/arm64.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 | 4 ++-- >+ src/liblzma/simple/simple_private.h | 2 +- >+ src/liblzma/simple/sparc.c | 2 +- >+ src/liblzma/simple/x86.c | 3 +-- >+ 9 files changed, 10 insertions(+), 11 deletions(-) > >-commit 608d6f06c940e7f28c25de005e8b99bdff42d27c >-Author: Hauke Henningsen <sqrt@entless.org> >-Date: 2015-08-17 04:59:54 +0200 >+commit 8370ec8edf9ddf8d1d9fef03d8d1027503ec4c35 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-14 23:14:41 +0200 > >- Update German translation, mostly wrt orthography >+ Replace the experimental ARM64 filter with a new experimental version. > >- 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 >+ This is incompatible with the previous version. > >- Acked-By: Andre Noll <maan@tuebingen.mpg.de> >- >- * Update after msgmerge >+ This has space/tab fixes in filter_*.c and bcj.h too. > >- po/de.po | 383 ++++++++++++++++++++++++++++++++------------------------------- >- 1 file changed, 196 insertions(+), 187 deletions(-) >+ src/liblzma/api/lzma/bcj.h | 41 +----- >+ src/liblzma/common/filter_common.c | 14 +- >+ src/liblzma/common/filter_decoder.c | 12 +- >+ src/liblzma/common/filter_encoder.c | 17 +-- >+ src/liblzma/simple/arm64.c | 283 ++++++++++++++---------------------- >+ src/liblzma/simple/simple_decoder.h | 4 - >+ src/liblzma/simple/simple_encoder.h | 2 - >+ src/xz/args.c | 2 +- >+ src/xz/message.c | 13 +- >+ src/xz/options.c | 39 ----- >+ src/xz/options.h | 7 - >+ 11 files changed, 147 insertions(+), 287 deletions(-) > >-commit c8988414e5b67b8ef2fe0ba7b1ccdd0ec73c60d3 >+commit f644473a211394447824ea00518d0a214ff3f7f2 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-08-11 13:23:04 +0300 >+Date: 2022-11-14 21:34:57 +0200 > >- Build: Minor Cygwin cleanup. >+ liblzma: Add fast CRC64 for 32/64-bit x86 using SSSE3 + SSE4.1 + CLMUL. > >- Some tests used "cygwin*" and some used "cygwin". I changed >- them all to use "cygwin". Shouldn't affect anything in practice. >+ It also works on E2K as it supports these intrinsics. >+ >+ On x86-64 runtime detection is used so the code keeps working on >+ older processors too. A CLMUL-only build can be done by using >+ -msse4.1 -mpclmul in CFLAGS and this will reduce the library >+ size since the generic implementation and its 8 KiB lookup table >+ will be omitted. >+ >+ On 32-bit x86 this isn't used by default for now because by default >+ on 32-bit x86 the separate assembly file crc64_x86.S is used. >+ If --disable-assembler is used then this new CLMUL code is used >+ the same way as on 64-bit x86. However, a CLMUL-only build >+ (-msse4.1 -mpclmul) won't omit the 8 KiB lookup table on >+ 32-bit x86 due to a currently-missing check for disabled >+ assembler usage. >+ >+ The configure.ac check should be such that the code won't be >+ built if something in the toolchain doesn't support it but >+ --disable-clmul-crc option can be used to unconditionally >+ disable this feature. >+ >+ CLMUL speeds up decompression of files that have compressed very >+ well (assuming CRC64 is used as a check type). It is know that >+ the CLMUL code is significantly slower than the generic code for >+ tiny inputs (especially 1-8 bytes but up to 16 bytes). If that >+ is a real-world problem then there is already a commented-out >+ variant that uses the generic version for small inputs. >+ >+ Thanks to Ilya Kurdyukov for the original patch which was >+ derived from a white paper from Intel [1] (published in 2009) >+ and public domain code from [2] (released in 2016). >+ >+ [1] https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf >+ [2] https://github.com/rawrunprotected/crc > >- configure.ac | 6 +++--- >+ CMakeLists.txt | 26 ++- >+ INSTALL | 12 ++ >+ configure.ac | 59 +++++- >+ src/liblzma/check/crc64_fast.c | 449 +++++++++++++++++++++++++++++++++++++++- >+ src/liblzma/check/crc64_table.c | 21 +- >+ 5 files changed, 554 insertions(+), 13 deletions(-) >+ >+commit 3b466bc79672bb2b06d1245a500588e6026e0ba0 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-14 20:14:34 +0200 >+ >+ Translations: Update the Swedish translation one more time. >+ >+ po/sv.po | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > >-commit 85a6dfed53477906bfe9a7c0123dd412e391cb48 >+commit e963379a8622ebdff6ce78e76b803bcd1e1d16d6 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-08-11 13:21:52 +0300 >+Date: 2022-11-14 19:34:15 +0200 > >- Build: Support building of MSYS2 binaries. >+ Translations: Update the Swedish translation again. > >- configure.ac | 16 +++++++++++----- >- 1 file changed, 11 insertions(+), 5 deletions(-) >+ po/sv.po | 16 ++++++++-------- >+ 1 file changed, 8 insertions(+), 8 deletions(-) > >-commit 77f270be8432df2e4516a0c48814b6976d6618c5 >+commit a4bc689a823a2254f29ac9d233170add5121b307 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-08-09 21:06:26 +0300 >+Date: 2022-11-14 19:07:45 +0200 > >- 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. >+ Translations: Update the Swedish translation. > >- windows/liblzma_dll.vcxproj | 12 ++++++------ >- 1 file changed, 6 insertions(+), 6 deletions(-) >+ po/sv.po | 671 ++++++++++++++++++++++++++++++++++++--------------------------- >+ 1 file changed, 382 insertions(+), 289 deletions(-) > >-commit 8c975446c5903090a5a8493b5b96b71003056a88 >+commit bbf2073d824ab4ba33bed4b77f467435abd333a5 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-08-09 21:02:20 +0300 >+Date: 2022-11-14 18:58:09 +0200 > >- Windows: Omit unneeded header files from MSVC project files. >+ Translations: Update the Ukrainian translation. > >- windows/liblzma.vcxproj | 5 ----- >- windows/liblzma_dll.vcxproj | 5 ----- >- 2 files changed, 10 deletions(-) >+ po/uk.po | 618 ++++++++++++++++++++++++++++++++++++--------------------------- >+ 1 file changed, 354 insertions(+), 264 deletions(-) > >-commit 119a00434954726ca58e4a578e6469f530fca30e >+commit ac10b1b3622e70881595586edfb8a3ebdcd76bb6 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-07-12 20:48:19 +0300 >+Date: 2022-11-14 17:58:07 +0200 > >- liblzma: A MSVC-specific hack isn't needed with MSVC 2013 and newer. >+ Build: Omit x86_64 from --enable-assembler. >+ >+ It didn't do anything. There are only 32-bit x86 assembly files >+ and it feels likely that new files won't be added as intrinsics >+ in C are more portable across toolchains and OSes. > >- src/liblzma/api/lzma.h | 18 +++++++++++++----- >- 1 file changed, 13 insertions(+), 5 deletions(-) >+ configure.ac | 6 ++---- >+ 1 file changed, 2 insertions(+), 4 deletions(-) > >-commit d4e7c557fcab353539c9481a8d95cb04bcb15c7c >+commit eb0f1450ad9f23dac03050d9c8375980240aee21 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-06-19 20:38:55 +0300 >+Date: 2022-11-14 16:00:52 +0200 > >- Update THANKS. >+ liblzma: Use __attribute__((__constructor__)) if available. >+ >+ This uses it for CRC table initializations when using --disable-small. >+ It avoids mythread_once() overhead. It also means that then >+ --disable-small --disable-threads is thread-safe if this attribute >+ is supported. > >- THANKS | 2 ++ >- 1 file changed, 2 insertions(+) >+ CMakeLists.txt | 15 +++++++++++++++ >+ INSTALL | 4 +++- >+ configure.ac | 31 ++++++++++++++++++++++++++++--- >+ src/liblzma/check/crc32_small.c | 7 +++++++ >+ src/liblzma/check/crc64_small.c | 5 +++++ >+ src/liblzma/lz/lz_encoder.c | 2 +- >+ 6 files changed, 59 insertions(+), 5 deletions(-) > >-commit 98001740ca56c894a7bd32eb47e9857a8a7d878d >+commit 6553f49b11dafad35c73b05f12e14865ea1fd8a1 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-06-19 20:21:30 +0300 >+Date: 2022-11-12 21:19:52 +0200 > >- Windows: Update the docs. >+ Translations: Update the Romanian translation. > >- INSTALL | 29 ++++++++----- >- windows/INSTALL-MSVC.txt | 47 ++++++++++++++++++++++ >- windows/{INSTALL-Windows.txt => INSTALL-MinGW.txt} | 2 +- >- 3 files changed, 67 insertions(+), 11 deletions(-) >+ po/ro.po | 651 +++++++++++++++++++++++++++++++++++++-------------------------- >+ 1 file changed, 380 insertions(+), 271 deletions(-) > >-commit 28195e4c877007cc760ecea1d17f740693d66873 >+commit db97e69e12393becc29f8febd53133d0d36989bd > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-06-19 17:25:31 +0300 >+Date: 2022-11-12 21:17:45 +0200 > >- Windows: Add MSVC project files for building liblzma. >- >- Thanks to Adam Walling for creating these files. >+ Translations: Update the Hungarian translation. > >- windows/liblzma.vcxproj | 359 ++++++++++++++++++++++++++++++++++++++++ >- windows/liblzma_dll.vcxproj | 388 ++++++++++++++++++++++++++++++++++++++++++++ >- windows/xz_win.sln | 48 ++++++ >- 3 files changed, 795 insertions(+) >+ po/hu.po | 625 ++++++++++++++++++++++++++++++++++++--------------------------- >+ 1 file changed, 357 insertions(+), 268 deletions(-) > >-commit 960440f3230dc628f6966d9f7614fc1b28baf44e >+commit 2bbb9c0f3829a8b121b36998d273a6c6f92000f4 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-05-13 20:57:55 +0300 >+Date: 2022-11-11 17:58:57 +0200 > >- Tests: Fix a memory leak in test_bcj_exact_size. >- >- Thanks to Cristian RodrÃguez. >+ Translations: Update the Finnish translation. > >- tests/test_bcj_exact_size.c | 1 + >- 1 file changed, 1 insertion(+) >+ po/fi.po | 610 ++++++++++++++++++++++++++++++++++++--------------------------- >+ 1 file changed, 348 insertions(+), 262 deletions(-) > >-commit 68cd35acafbdcdf4e8ea8b5bb843c736939d6f8b >+commit 3c8cbb8137b6f8ed9416c1209d73cdbcb015251f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-05-12 18:08:24 +0300 >+Date: 2022-11-11 17:58:18 +0200 > >- Fix NEWS about threading in 5.2.0. >- >- Thanks to Andy Hochhaus. >+ Translations: Update the Croatian translation. > >- NEWS | 3 ++- >- 1 file changed, 2 insertions(+), 1 deletion(-) >+ po/hr.po | 680 +++++++++++++++++++++++++++++++++++---------------------------- >+ 1 file changed, 381 insertions(+), 299 deletions(-) > >-commit ff96ed6d25786728356017a13baf8c14731b4f1e >+commit 26c3359eac0988d6f3986735cd1363bec1678e8e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-05-11 21:26:16 +0300 >+Date: 2022-11-11 17:57:18 +0200 > >- xz: Document that threaded decompression hasn't been implemented yet. >+ Translations: Update the Polish translation. > >- src/xz/xz.1 | 10 +++++++++- >- 1 file changed, 9 insertions(+), 1 deletion(-) >+ po/pl.po | 569 ++++++++++++++++++++++++++++++++++----------------------------- >+ 1 file changed, 309 insertions(+), 260 deletions(-) > >-commit 00d37b64a64ea8597fd2422d5187afd761ab9531 >+commit 577e467b137c735afb8de6ae71ac7a73c2960cc4 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-04-20 20:20:29 +0300 >+Date: 2022-11-11 17:56:44 +0200 > >+ Translations: Update the Spanish translation. >+ >+ po/es.po | 598 ++++++++++++++++++++++++++++++++++++--------------------------- >+ 1 file changed, 344 insertions(+), 254 deletions(-) >+ >+commit f9b4ff6e9a0f1678650775582d3e4fe782abce97 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-11 17:16:03 +0200 >+ > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit db190a832c49ca3aed6d69cc992fa5583cae7b11 >+commit a39961ef211e1bf030b17edeea3cff29fe263b67 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-04-20 19:59:18 +0300 >+Date: 2022-11-11 17:15:25 +0200 > >- Revert "xz: Use pipe2() if available." >+ liblzma: Fix building with Intel ICC (the classic compiler). > >- 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. >+ It claims __GNUC__ >= 10 but doesn't support __symver__ attribute. > >- Thanks to Michael Fox for the bug report. >+ Thanks to Stephen Sachs. > >- configure.ac | 4 ++-- >- src/xz/file_io.c | 9 +-------- >- 2 files changed, 3 insertions(+), 10 deletions(-) >+ src/liblzma/common/common.h | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit eccd8155e107c5ada03d13e7730675cdf1a44ddc >+commit c715f683dcb1a817d565da292cddfbceda643e12 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-03-29 22:14:47 +0300 >+Date: 2022-11-11 14:35:58 +0200 > >- Update THANKS. >+ 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. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ src/liblzma/common/memcmplen.h | 3 +-- >+ 1 file changed, 1 insertion(+), 2 deletions(-) > >-commit 25263fd9e7a8a913395cb93d7c104cd48c2b4a00 >+commit bd334ae56afe7f642ad4d0f1ac19e74e82daa1ce > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-03-29 22:13:48 +0300 >+Date: 2022-11-11 13:27:06 +0200 > >- Fix the detection of installed RAM on QNX. >+ Add NEWS for 5.2.7 (forgotten cherry-pick from v5.2). >+ >+ NEWS | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 74 insertions(+) >+ >+commit 3c7860cf49de6f81046b3a4034a89f3a4803a576 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-11 13:16:21 +0200 >+ >+ xzdiff: Add support for .lz files. > >- The earlier version compiled but didn't actually work >- since sysconf(_SC_PHYS_PAGES) always fails (or so I was told). >+ The other scripts don't need changes for .lz support because >+ in those scripts it is enough that xz supports .lz. >+ >+ src/scripts/xzdiff.in | 10 +++++----- >+ 1 file changed, 5 insertions(+), 5 deletions(-) >+ >+commit d76c752a6d77052e5ad57ade555082585f7ac5d8 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-11 12:23:58 +0200 >+ >+ Scripts: Ignore warnings from xz. > >- Thanks to Ole André Vadla RavnÃ¥s for the patch and testing. >+ 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. > >- m4/tuklib_physmem.m4 | 6 +++--- >- src/common/tuklib_physmem.c | 14 +++++++++++++- >- 2 files changed, 16 insertions(+), 4 deletions(-) >+ 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 4c544d2410903d38402221cb783ed85585b6a007 >+commit 6552535afd1fe29d726ab6e68cf14ce3624fd48c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-03-27 22:39:07 +0200 >+Date: 2022-11-10 12:34:43 +0200 > >- Fix CPU core count detection on QNX. >+ Translations: Rename poa4/fr_FR.po to po4a/fr.po. > >- 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. >+ 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. > >- sysconf() works. An alternative would have been to use >- QNX-specific SYSPAGE_ENTRY(num_cpu) from <sys/syspage.h>. >- >- Thanks to Ole André Vadla RavnÃ¥s. >+ Thanks to Benno Schulenberg from the Translation Project. > >- m4/tuklib_cpucores.m4 | 15 +++++++++++---- >- 1 file changed, 11 insertions(+), 4 deletions(-) >+ po4a/{fr_FR.po => fr.po} | 0 >+ po4a/po4a.conf | 2 +- >+ 2 files changed, 1 insertion(+), 1 deletion(-) > >-commit e0ea6737b03e83ccaff4514d00e31bb926f8f0f3 >+commit 0918159ce4c75bfb60aff0193b559f8a9f41d25a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-03-07 22:05:57 +0200 >+Date: 2022-11-09 18:48:50 +0200 > >- xz: size_t/uint32_t cleanup in options.c. >+ xz: Update the man page about BCJ filters, including upcoming --arm64. >+ >+ The --arm64 isn't actually implemented yet in the form >+ described in this commit. >+ >+ Thanks to Jia Tan. > >- src/xz/options.c | 12 ++++++------ >- 1 file changed, 6 insertions(+), 6 deletions(-) >+ src/xz/xz.1 | 66 +++++++++++++++++++++++++++---------------------------------- >+ 1 file changed, 29 insertions(+), 37 deletions(-) > >-commit 8bcca29a65335fd679c13814b70b35b68fa5daed >+commit ba2ae3596f6be1587495f33b367488f6e00e56f1 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-03-07 22:04:23 +0200 >+Date: 2022-11-09 18:14:14 +0200 > >- xz: Fix a comment and silence a warning in message.c. >+ xz: Add --arm64 to --long-help and omit endianness from ARM(-Thumb). >+ >+ Modern 32-bit ARM in big endian mode use little endian for >+ instruction encoding still, so the filters work on such >+ executables too. It's likely less confusing for users this way. >+ >+ The --arm64 option hasn't been implemented yet (there is >+ --experimental-arm64 but it's different). The --arm64 option >+ is added now anyway because this is the likely result and the >+ strings need to be ready for translators. >+ >+ Thanks to Jia Tan. > > src/xz/message.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > >-commit f243f5f44c6b19a7c289a0ec73a03ee08364cb5b >+commit 802d57d9215d9c81dbee86edb43c9e93a7f7ec55 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-03-07 22:01:00 +0200 >+Date: 2022-11-09 15:12:13 +0200 > >- liblzma: Silence more uint32_t vs. size_t warnings. >+ Windows: Update the VS project files for ARM64 and .lz support. > >- src/liblzma/lz/lz_encoder.c | 2 +- >- src/liblzma/lzma/lzma_encoder.c | 2 +- >- 2 files changed, 2 insertions(+), 2 deletions(-) >+ windows/vs2013/config.h | 9 +++++++++ >+ windows/vs2013/liblzma.vcxproj | 5 ++++- >+ windows/vs2013/liblzma_dll.vcxproj | 5 ++++- >+ windows/vs2017/config.h | 9 +++++++++ >+ windows/vs2017/liblzma.vcxproj | 3 +++ >+ windows/vs2017/liblzma_dll.vcxproj | 3 +++ >+ windows/vs2019/config.h | 9 +++++++++ >+ windows/vs2019/liblzma.vcxproj | 5 ++++- >+ windows/vs2019/liblzma_dll.vcxproj | 5 ++++- >+ 9 files changed, 49 insertions(+), 4 deletions(-) > >-commit 7f0a4c50f4a374c40acf4b86848f301ad1e82d34 >+commit 5846aeda05972bc803c6094821ae836229ebe691 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-03-07 19:54:00 +0200 >+Date: 2022-11-09 14:57:48 +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. >+ DOS: Update Makefile and config.h to include ARM64 and .lz support. > >- src/xz/args.h | 2 +- >- src/xz/main.c | 2 +- >- 2 files changed, 2 insertions(+), 2 deletions(-) >+ dos/Makefile | 2 ++ >+ dos/config.h | 9 +++++++++ >+ 2 files changed, 11 insertions(+) > >-commit f6ec46801588b1be29c07c9db98558b521304002 >+commit 781da8d6c44de6aa278c916375250668a0b107f2 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-03-07 19:33:17 +0200 >+Date: 2022-11-09 14:45:05 +0200 > >- liblzma: Fix a warning in index.c. >+ CMake: Add lzip decoder files and #define to the build. > >- src/liblzma/common/index.c | 4 +++- >- 1 file changed, 3 insertions(+), 1 deletion(-) >+ CMakeLists.txt | 3 +++ >+ 1 file changed, 3 insertions(+) > >-commit a24518971cc621315af142dd3bb7614fab04ad27 >+commit df8ad4af65a9c4846b108550d0083770a69dee64 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-02-26 20:46:14 +0200 >+Date: 2022-11-09 14:41:56 +0200 > >- Build: Fix a CR+LF problem when running autoreconf -fi on OS/2. >+ Docs: Update INSTALL and also add new prohibited options to PACKAGERS. > >- build-aux/version.sh | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ INSTALL | 49 +++++++++++++++++++++++++++++++++++++++++-------- >+ PACKAGERS | 2 ++ >+ 2 files changed, 43 insertions(+), 8 deletions(-) > >-commit dec11497a71518423b5ff0e759100cf8aadf6c7b >+commit c8ef089c149afaab413c3a51be827dd1d11afe0e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-02-26 16:53:44 +0200 >+Date: 2022-10-20 17:39:06 +0300 > >- Bump version and soname for 5.2.1. >+ Tests: Test the .lz files in test_files.sh. > >- src/liblzma/Makefile.am | 2 +- >- src/liblzma/api/lzma/version.h | 2 +- >- 2 files changed, 2 insertions(+), 2 deletions(-) >+ tests/test_files.sh | 25 +++++++++++++++++++++++++ >+ 1 file changed, 25 insertions(+) > >-commit 29e39c79975ab89ee5dd671e97064534a9f3a649 >+commit c8f70ebb4628ceb6cb29cc9195d9deadf69d2bd7 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-02-26 13:01:09 +0200 >+Date: 2022-10-20 15:35:59 +0300 > >- Update NEWS for 5.2.1. >+ Tests: Add .lz (lzip) test files. > >- NEWS | 14 ++++++++++++++ >- 1 file changed, 14 insertions(+) >+ tests/files/README | 109 +++++++++++++++++++++++++++++---- >+ tests/files/bad-1-v0-uncomp-size.lz | Bin 0 -> 42 bytes >+ tests/files/bad-1-v1-crc32.lz | Bin 0 -> 50 bytes >+ tests/files/bad-1-v1-dict-1.lz | Bin 0 -> 50 bytes >+ tests/files/bad-1-v1-dict-2.lz | Bin 0 -> 50 bytes >+ tests/files/bad-1-v1-magic-1.lz | Bin 0 -> 50 bytes >+ tests/files/bad-1-v1-magic-2.lz | Bin 0 -> 50 bytes >+ tests/files/bad-1-v1-member-size.lz | Bin 0 -> 50 bytes >+ tests/files/bad-1-v1-trailing-magic.lz | Bin 0 -> 54 bytes >+ tests/files/bad-1-v1-uncomp-size.lz | Bin 0 -> 50 bytes >+ tests/files/good-1-v0-trailing-1.lz | Bin 0 -> 59 bytes >+ tests/files/good-1-v0.lz | Bin 0 -> 42 bytes >+ tests/files/good-1-v1-trailing-1.lz | Bin 0 -> 67 bytes >+ tests/files/good-1-v1-trailing-2.lz | Bin 0 -> 70 bytes >+ tests/files/good-1-v1.lz | Bin 0 -> 50 bytes >+ tests/files/good-2-v0-v1.lz | Bin 0 -> 78 bytes >+ tests/files/good-2-v1-v0.lz | Bin 0 -> 78 bytes >+ tests/files/good-2-v1-v1.lz | Bin 0 -> 86 bytes >+ tests/files/unsupported-1-v234.lz | Bin 0 -> 50 bytes >+ 19 files changed, 98 insertions(+), 11 deletions(-) > >-commit 7a11c4a8e5e15f13d5fa59233b3172e65428efdd >+commit 731db13e6fa3ad3e3fc786c0ccf6eac4cce6865f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-02-22 19:38:48 +0200 >+Date: 2022-10-19 22:32:51 +0300 > >- xz: Use pipe2() if available. >+ xz: Remove the commented-out FORMAT_GZIP, gzip, .gz, and .tgz. > >- configure.ac | 4 ++-- >- src/xz/file_io.c | 9 ++++++++- >- 2 files changed, 10 insertions(+), 3 deletions(-) >+ src/xz/args.c | 2 -- >+ src/xz/coder.h | 1 - >+ src/xz/suffix.c | 9 --------- >+ 3 files changed, 12 deletions(-) > >-commit 117d962685c72682c63edc9bb765367189800202 >+commit 3176f992c55b8d788c4633809aaf9447376a5a12 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-02-21 23:40:26 +0200 >+Date: 2022-10-08 21:28:15 +0300 > >- liblzma: Fix a compression-ratio regression in LZMA1/2 in fast mode. >+ xz: Add .lz (lzip) decompression support. > >- 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. >+ If configured with --disable-lzip-decoder then --long-help will >+ still list `lzip' in --format but I left it like that since >+ due to translations it would be messy to have two help strings. >+ Features are disabled only in special situations so wrong help >+ in such a situation shouldn't matter much. >+ >+ Thanks to MichaÅ Górny for the original patch. > >- src/liblzma/lzma/lzma_encoder_optimum_fast.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ src/xz/args.c | 9 ++++++++ >+ src/xz/coder.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- >+ src/xz/coder.h | 3 +++ >+ src/xz/message.c | 2 +- >+ src/xz/suffix.c | 26 ++++++++++++++++++---- >+ src/xz/xz.1 | 46 +++++++++++++++++++++++++++++++++----- >+ 6 files changed, 141 insertions(+), 13 deletions(-) > >-commit ae984e31c167d3bc52972ec422dd1ebd5f5d5719 >+commit 034086e1ae1459210837a24e04878435c86dc41b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-02-21 23:00:19 +0200 >+Date: 2022-10-08 00:29:20 +0300 > >- xz: Fix the fcntl() usage when creating a pipe for the self-pipe trick. >+ liblzma: Add .lz support to lzma_auto_decoder(). > >- Now it reads the old flags instead of blindly setting O_NONBLOCK. >- The old code may have worked correctly, but this is better. >+ Thanks to MichaÅ Górny for the original patch. > >- src/xz/file_io.c | 16 +++++++++++----- >- 1 file changed, 11 insertions(+), 5 deletions(-) >+ src/liblzma/api/lzma/container.h | 10 ++++++---- >+ src/liblzma/common/Makefile.inc | 3 ++- >+ src/liblzma/common/auto_decoder.c | 23 +++++++++++++++++------ >+ src/liblzma/common/lzip_decoder.h | 22 ++++++++++++++++++++++ >+ 4 files changed, 47 insertions(+), 11 deletions(-) > >-commit 2205bb5853098aea36a56df6f5747037175f66b4 >+commit 0538db038f3cdc352007dacb42454aa1806b8e40 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-02-10 15:29:34 +0200 >+Date: 2022-10-06 15:50:20 +0300 > >- Update THANKS. >+ liblzma: Add .lz (lzip) decompression support (format versions 0 and 1). >+ >+ Support for format version 0 was removed from lzip 1.18 for some >+ reason. .lz format version 0 files are rare (and old) but some >+ source packages were released in this format, and some people might >+ have personal files in this format too. It's very little extra code >+ to support it along side format version 1 so this commits adds >+ support for both. >+ >+ The Sync Flush marker extentension to the original .lz format >+ version 1 isn't supported. It would require changes to the >+ LZMA decoder itself. Such files are very rare anyway. >+ >+ See the API doc for lzma_lzip_decoder() for more details about >+ the .lz format support. >+ >+ Thanks to MichaÅ Górny for the original patch. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ configure.ac | 21 ++ >+ src/liblzma/api/lzma/container.h | 62 +++++- >+ src/liblzma/common/Makefile.inc | 5 + >+ src/liblzma/common/lzip_decoder.c | 413 ++++++++++++++++++++++++++++++++++++++ >+ src/liblzma/liblzma_generic.map | 1 + >+ src/liblzma/liblzma_linux.map | 1 + >+ 6 files changed, 501 insertions(+), 2 deletions(-) > >-commit d935b0cdf3db440269b9d952b2b281b18f8c7b08 >+commit 633d48a075b9ce4b9c08a7a56a7eb4cabc18100c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-02-10 15:28:30 +0200 >+Date: 2022-11-09 14:17:23 +0200 > >- tuklib_cpucores: Use cpuset_getaffinity() on FreeBSD if available. >+ liblzma: Add the missing Makefile.inc change for --disable-microlzma. > >- In FreeBSD, cpuset_getaffinity() is the preferred way to get >- the number of available cores. >+ This was forgotten from commit 59c4d6e1390f6f4176f43ac1dad1f7ac03c449b8. >+ >+ src/liblzma/common/Makefile.inc | 12 ++++++++++-- >+ 1 file changed, 10 insertions(+), 2 deletions(-) >+ >+commit 724285dadbdc88765c8fb83eab9816575a260966 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-09 14:10:52 +0200 >+ >+ xz: Add comments about stdin and src_st.st_size. > >- Thanks to Rui Paulo for the patch. I edited it slightly, but >- hopefully I didn't break anything. >+ "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. > >- m4/tuklib_cpucores.m4 | 23 ++++++++++++++++++++++- >- src/common/tuklib_cpucores.c | 18 ++++++++++++++++++ >- 2 files changed, 40 insertions(+), 1 deletion(-) >+ src/xz/coder.c | 9 +++++++++ >+ src/xz/file_io.c | 4 ++++ >+ 2 files changed, 13 insertions(+) > >-commit eb61bc58c20769cac4d05f363b9c0e8c9c71a560 >+commit f723eec68b0e44234910f669a29119de33018967 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-02-09 22:08:37 +0200 >+Date: 2022-11-09 12:48:22 +0200 > >- xzdiff: Make the mktemp usage compatible with FreeBSD's mktemp. >+ xz: Fix displaying of file sizes in progress indicator in passthru mode. > >- Thanks to Rui Paulo for the fix. >+ 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/scripts/xzdiff.in | 7 ++++++- >- 1 file changed, 6 insertions(+), 1 deletion(-) >+ src/xz/coder.c | 6 +++++- >+ 1 file changed, 5 insertions(+), 1 deletion(-) > >-commit b9a5b6b7a29029680af733082b6a46e0fc01623a >+commit 69265d0f223ddf1d66f799b8b047df22923e376f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-02-03 21:45:53 +0200 >+Date: 2022-11-09 11:27:20 +0200 > >- Add a few casts to tuklib_integer.h to silence possible warnings. >+ xz: Add a comment why --to-stdout is not in --help. > >- I heard that Visual Studio 2013 gave warnings without the casts. >- >- Thanks to Gabi Davar. >+ It is on the man page still. > >- src/common/tuklib_integer.h | 24 ++++++++++++------------ >- 1 file changed, 12 insertions(+), 12 deletions(-) >+ src/xz/message.c | 3 +++ >+ 1 file changed, 3 insertions(+) > >-commit c45757135f40e4a0de730ba5fff0100219493982 >+commit fe6b8852a3c6a0eb5a3c33512e0a69af257d3bc7 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-01-26 21:24:39 +0200 >+Date: 2022-11-08 23:05:37 +0200 > >- liblzma: Set LZMA_MEMCMPLEN_EXTRA depending on the compare method. >+ xz: Make xz -lvv show that the upcoming --arm64 needs 5.4.0 to decompress. > >- src/liblzma/common/memcmplen.h | 15 ++++++++++----- >- 1 file changed, 10 insertions(+), 5 deletions(-) >+ src/xz/list.c | 20 +++++++++++++++----- >+ 1 file changed, 15 insertions(+), 5 deletions(-) > >-commit 3c500174ed5485f550972a2a6109c361e875f069 >+commit fb3f05ac9f2b4b0e3643401960fbeab31997ac7a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-01-26 20:40:16 +0200 >+Date: 2022-11-08 22:26:54 +0200 > >- Update THANKS. >+ Docs: Update faq.txt a little. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ doc/faq.txt | 66 ++++++++++++++++++++++++++++++++++++++++--------------------- >+ 1 file changed, 43 insertions(+), 23 deletions(-) > >-commit fec88d41e672d9e197c9442aecf02bd0dfa6d516 >+commit 05331f091ec3b68eccbfb2a9a7a576072768fb4b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-01-26 20:39:28 +0200 >+Date: 2022-11-08 16:57:17 +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. >+ Translations: Update Turkish translation. > >- src/liblzma/lz/lz_encoder.c | 6 ++++++ >- 1 file changed, 6 insertions(+) >+ po/tr.po | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit a9b45badfec0928d20a27c7176c005fa637f7d1e >+commit ed3a4822963b4940d84e6f44d47277c394fc046d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-01-09 21:50:19 +0200 >+Date: 2022-11-08 14:55:32 +0200 > >- xz: Fix comments. >+ Translations: Update Croatian translation. > >- src/xz/file_io.c | 12 ++++++++---- >- 1 file changed, 8 insertions(+), 4 deletions(-) >+ po/hr.po | 190 ++++++++++++++++++++++++++++++++------------------------------- >+ 1 file changed, 96 insertions(+), 94 deletions(-) > >-commit 541aee6dd4aa97a809aba281475a21b641bb89e2 >+commit 4746f5ec721316bc4c6fec9905b2902e0360e0af > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-01-09 21:35:06 +0200 >+Date: 2022-11-08 14:13:03 +0200 > >- Update THANKS. >+ liblzma: Update API docs about decoder flags. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ src/liblzma/api/lzma/container.h | 21 +++++++++++++++++---- >+ 1 file changed, 17 insertions(+), 4 deletions(-) > >-commit 4170edc914655310d2363baccf5e615e09b04911 >+commit 8779a9db5d0cec00c9dc9e9965dd2dda04f9d80d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-01-09 21:34:06 +0200 >+Date: 2022-11-08 14:01:50 +0200 > >- xz: Don't fail if stdout doesn't support O_NONBLOCK. >+ liblzma: Use the return_if_error() macro in alone_decoder.c. >+ >+ src/liblzma/common/alone_decoder.c | 6 ++---- >+ 1 file changed, 2 insertions(+), 4 deletions(-) >+ >+commit 3f4990b6822961e75cd9b4e2e82b1df63f6f8fcc >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-08 14:00:58 +0200 >+ >+ liblzma: Fix a comment in auto_decoder.c. >+ >+ src/liblzma/common/auto_decoder.c | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) >+ >+commit 026a5897c72a2041ae08ceec54ce8b1cdeb51334 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-08 13:43:19 +0200 >+ >+ xz: Initialize the pledge(2) sandbox at the very beginning of main(). > >- This is similar to the case with stdin. >+ It feels better that the initializations are sandboxed too. >+ They don't do anything that the pledge() call wouldn't allow. >+ >+ src/xz/main.c | 27 ++++++++++++++------------- >+ 1 file changed, 14 insertions(+), 13 deletions(-) >+ >+commit 49a59f6ca001c3ce9affa2c162b437aad021b4d5 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-11-07 22:51:16 +0200 >+ >+ xz: Extend --robot --info-memory output. > >- Thanks to Brad Smith for the bug report and testing >- on OpenBSD. >+ Now it includes everything that the human-readable --info-memory shows. > >- src/xz/file_io.c | 36 +++++++++++++++--------------------- >- 1 file changed, 15 insertions(+), 21 deletions(-) >+ src/xz/hardware.c | 24 +++++++++++++++--------- >+ src/xz/xz.1 | 47 +++++++++++++++++++++++++++++++++++++++++------ >+ 2 files changed, 56 insertions(+), 15 deletions(-) > >-commit 04bbc0c2843c50c8ad1cba42b937118e38b0508d >+commit 5e2450c75cbac966c62cf2231c824f2cc91ddba8 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-01-07 19:18:20 +0200 >+Date: 2022-11-07 17:22:04 +0200 > >- xz: Fix a memory leak in DOS-specific code. >+ liblzma: Include cached memory in reported memusage in threaded decoder. >+ >+ This affects lzma_memusage() and lzma_memlimit_set() when used >+ with the threaded decompressor. Now all allocations are reported >+ by lzma_memusage() (so it's not misleading) and lzma_memlimit_set() >+ cannot lower the limit below that value. >+ >+ The alternative would have been to allow lowering the limit if >+ doing so is possible by freeing the cached memory but since >+ the primary use case of lzma_memlimit_set() is to increase >+ memlimit after LZMA_MEMLIMIT_ERROR this simple approach >+ was selected. >+ >+ The cached memory was always included when enforcing >+ the memory usage limit while decoding. >+ >+ Thanks to Jia Tan. > >- src/xz/file_io.c | 2 ++ >- 1 file changed, 2 insertions(+) >+ src/liblzma/common/stream_decoder_mt.c | 22 +++++++++++++++++++--- >+ 1 file changed, 19 insertions(+), 3 deletions(-) > >-commit f0f1f6c7235ffa901cf76fe18e33749e200b3eea >+commit 1fc6e7dd1fabdb60124d449b99273330ccab3ff1 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-11-07 16:24:14 +0200 >+ >+ xz: Avoid a compiler warning in progress_speed() in message.c. >+ >+ This should be smaller too since it avoids the string constants. >+ >+ src/xz/message.c | 9 +++------ >+ 1 file changed, 3 insertions(+), 6 deletions(-) >+ >+commit cf118c014683069b5dbe91898acdc40f2f0a1f5d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-01-07 19:08:06 +0200 >+Date: 2022-10-31 16:26:05 +0200 > >- xz: Don't fail if stdin doesn't support O_NONBLOCK. >+ Build: Clarify comment in configure.ac about SSE2. >+ >+ configure.ac | 5 ++++- >+ 1 file changed, 4 insertions(+), 1 deletion(-) >+ >+commit aad3c609ffb72f581a7a2b67be3ad70b2b327840 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-10-31 16:16:37 +0200 >+ >+ Build: Remove obsolete commented-out lines from configure.ac. >+ >+ configure.ac | 4 ---- >+ 1 file changed, 4 deletions(-) >+ >+commit e53e0e2186c6b8ce866bd19aec52f1c318ed31ba >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-10-31 13:31:58 +0200 >+ >+ Windows: Fix mythread_once() macro with Vista threads. > >- 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. >+ Don't call InitOnceComplete() if initialization was already done. > >- 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. >+ 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/xz/file_io.c | 18 +++++++----------- >- 1 file changed, 7 insertions(+), 11 deletions(-) >+ src/common/mythread.h | 7 ++++--- >+ 1 file changed, 4 insertions(+), 3 deletions(-) > >-commit d2d484647d9d9d679f03c75abb0404f67069271c >+commit 48dde3bab9dc04081acb5aa7cf7c5044b8a49f58 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2015-01-06 20:30:15 +0200 >+Date: 2022-10-31 11:54:44 +0200 > >- Tests: Don't hide unexpected error messages in test_files.sh. >+ liblzma: Silence -Wconversion warning from crc64_fast.c. >+ >+ src/liblzma/check/crc64_fast.c | 5 +++-- >+ 1 file changed, 3 insertions(+), 2 deletions(-) >+ >+commit a243c617ff249d915ac123de4f536b80322c1fdb >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-10-31 11:49:47 +0200 >+ >+ CMake: Sync tuklib_cpucores.cmake with tuklib_cpucores.m4. > >- 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. >+ This was forgotten from commit 2611c4d90535652d3eb7ef4a026a6691276fab43. > >- tests/test_files.sh | 4 ++-- >- 1 file changed, 2 insertions(+), 2 deletions(-) >+ cmake/tuklib_cpucores.cmake | 5 +++++ >+ 1 file changed, 5 insertions(+) > >-commit aae6a6aeda51cf94a47e39ad624728f9bee75e30 >+commit 05c72de06fcaaedc78f8abba7d5ec568ddcf1e75 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-30 11:17:16 +0200 >+Date: 2022-10-27 15:49:18 +0300 > >- Update Solaris notes in INSTALL. >+ Tests: test_files.sh: Make it not fail if features were disabled at build. > >- 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. >+ It now tries to test as many files as easily possible. >+ The exit status indicates skipping if any of the files were >+ skipped. This way it is easy to notice if something is being >+ skipped when it isn't expected. > >- INSTALL | 4 ++++ >- 1 file changed, 4 insertions(+) >+ tests/test_files.sh | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- >+ 1 file changed, 46 insertions(+), 4 deletions(-) > >-commit 7815112153178800a3521b9f31960e7cdc26cfba >+commit b3459327a51f4b8239d19e6c34b4e0c6bc2d81de > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-26 12:00:05 +0200 >+Date: 2022-10-27 15:30:13 +0300 > >- Build: POSIX shell isn't required if scripts are disabled. >+ Tests: test_files.sh: Suppress an expected warning from the log. >+ >+ xz (but not xzdec) will normally warn about unsupported check >+ but since we are testing specifically such a file, it's better >+ to silence that warning so that it doesn't look suspicious in >+ test_files.sh.log. >+ >+ The use of -q and -Q in xzdec is just for consistency and >+ doesn't affect the result at least for now. > >- INSTALL | 3 ++- >- configure.ac | 2 +- >- 2 files changed, 3 insertions(+), 2 deletions(-) >+ tests/test_files.sh | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit a0cd05ee71d330b79ead6eb9222e1b24e1559d3a >+commit 798c86e4231e0835ab76ccd0810c8ea30833b2ce > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-21 20:48:37 +0200 >+Date: 2022-10-27 15:27:50 +0300 > >- DOS: Update Makefile. >+ Tests: test_files.sh: Print the reason for skipping if xz & xzdec missing. > >- dos/Makefile | 1 + >+ tests/test_files.sh | 1 + > 1 file changed, 1 insertion(+) > >-commit b85ee0905ec4ab7656d22e63519fdd3bedb21f2e >+commit c1dd8524e1af07f16b790463899de06a6a5fcc08 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-21 19:50:38 +0200 >+Date: 2022-10-27 01:12:40 +0300 > >- Windows: Fix bin_i486 to bin_i686 in build.bash. >+ Tests: Keep test_compress_* working when some filters are unavailable. > >- windows/build.bash | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ tests/test_compress.sh | 34 ++++++++++++++++++++-------------- >+ 1 file changed, 20 insertions(+), 14 deletions(-) > >-commit cbafa710918195dbba3db02c3fab4f0538235206 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-21 18:58:44 +0200 >+commit ce30ada91951d0746879ae438da11f1ee8a90aa0 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-10-23 21:01:08 +0800 > >- Docs: Use lzma_cputhreads() in 04_compress_easy_mt.c. >+ Tests: test_bcj_exact_size skips properly now if PowerPC filter disabled. > >- doc/examples/04_compress_easy_mt.c | 30 ++++++++++++++++++++++++++---- >- 1 file changed, 26 insertions(+), 4 deletions(-) >+ tests/test_bcj_exact_size.c | 3 +++ >+ 1 file changed, 3 insertions(+) > >-commit 8dbb57238d372c7263cfeb3e7f7fd9a73173156a >+commit 89c5cfcacaca7130509fac836e2f30c46b824502 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-21 18:56:44 +0200 >+Date: 2022-10-26 00:05:57 +0300 > >- Docs: Update docs/examples/00_README.txt. >+ Tests: Test also unsupported-*.xz. > >- doc/examples/00_README.txt | 4 ++++ >- 1 file changed, 4 insertions(+) >+ tests/test_files.sh | 37 +++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 37 insertions(+) > >-commit 6060f7dc76fd6c2a8a1f8e85d0e4d86bb78273e6 >+commit a4b214b93ac741edef9c41e55865b0b867ca2587 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-21 18:11:17 +0200 >+Date: 2022-10-25 23:45:03 +0300 > >- Bump version and soname for 5.2.0. >+ Build: Use AC_CONFIG_HEADERS instead of the ancient AC_CONFIG_HEADER. > >- 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. >+ 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. > >- src/liblzma/Makefile.am | 2 +- >- src/liblzma/api/lzma/version.h | 6 +++--- >- src/liblzma/liblzma.map | 2 +- >- 3 files changed, 5 insertions(+), 5 deletions(-) >+ configure.ac | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 3e8bd1d15e417f2d588e9be50ce027ee3d48b2da >+commit 04f299b64e73f50afc188c2590ebebc6b73ed744 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-21 18:05:03 +0200 >+Date: 2022-10-25 23:31:44 +0300 > >- Avoid variable-length arrays in the debug programs. >+ Build: Update m4/ax_pthread.m4 from Autoconf Archive. > >- debug/full_flush.c | 3 ++- >- debug/sync_flush.c | 3 ++- >- 2 files changed, 4 insertions(+), 2 deletions(-) >+ m4/ax_pthread.m4 | 29 ++++++++++++++++++++++------- >+ 1 file changed, 22 insertions(+), 7 deletions(-) > >-commit 72f7307cfdceb941aeb2bf30d424cc0d13621786 >+commit 59c4d6e1390f6f4176f43ac1dad1f7ac03c449b8 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-21 18:01:45 +0200 >+Date: 2022-10-25 23:28:34 +0300 > >- Build: Include 04_compress_easy_mt.c in the tarball. >+ Build: Add configure option --disable-microlzma. >+ >+ MicroLZMA was made for EROFS and used by erofs-utils. >+ It might be used by something else in the future but >+ those wanting a smaller build for specific situations >+ can now disable this rarely-needed feature. > >- Makefile.am | 1 + >- 1 file changed, 1 insertion(+) >+ configure.ac | 22 ++++++++++++++++++++++ >+ 1 file changed, 22 insertions(+) > >-commit 2cb82ff21c62def11f3683a8bb0aaf363102aaa0 >+commit 054ccd6d14b2cc6eddc56897af280d3221414150 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-21 18:00:38 +0200 >+Date: 2022-10-25 23:09:11 +0300 > >- Fix build when --disable-threads is used. >+ 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/common/mythread.h | 2 ++ >- 1 file changed, 2 insertions(+) >+ src/xz/coder.c | 9 +++++++++ >+ 1 file changed, 9 insertions(+) > >-commit 9b9e3536e458ef958f66b0e8982efc9d36de4d17 >-Author: Adrien Nader <adrien@notk.org> >-Date: 2014-12-21 15:56:15 +0100 >+commit 563288ea705e83ff5cb292adf794650c263bca1d >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-10-25 21:11:58 +0300 > >- po/fr: improve wording for help for --lzma1/--lzma2. >+ xz: Add support for OpenBSD's pledge() sandbox. > >- po/fr.po | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ configure.ac | 12 +++++++++--- >+ src/xz/file_io.c | 11 +++++++++++ >+ src/xz/main.c | 13 +++++++++++++ >+ src/xz/private.h | 2 +- >+ 4 files changed, 34 insertions(+), 4 deletions(-) > >-commit a8b6b569e7fadbf5b5b9139d53bc764015c15027 >-Author: Adrien Nader <adrien@notk.org> >-Date: 2014-12-21 15:55:48 +0100 >+commit f9913e8ee2ba0b1e4ff4d0aa4c001aae305ed944 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-10-25 19:07:17 +0300 > >- po/fr: missing line in translation of --extreme. >+ 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. > >- po/fr.po | 1 + >- 1 file changed, 1 insertion(+) >+ src/xz/coder.c | 19 +++++++++++++++---- >+ 1 file changed, 15 insertions(+), 4 deletions(-) > >-commit f168a6fd1a888cf4f0caaddcafcb21dadc6ab6e9 >+commit aa4fe145b9486adc454f44fd3e09be9add808a0f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-21 14:32:33 +0200 >+Date: 2022-10-25 18:36:19 +0300 > >- Update NEWS for 5.2.0. >+ xz: Clarify the man page: input file isn't removed if an error occurs. > >- NEWS | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- 1 file changed, 65 insertions(+) >+ src/xz/xz.1 | 5 +++-- >+ 1 file changed, 3 insertions(+), 2 deletions(-) > >-commit cec2ee863b3a88f4bf039cb00f73c4a4fc93a429 >+commit 8b46ae8cdeddfd7dc01fec92971b8696e9a96c5d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-21 14:32:22 +0200 >+Date: 2022-10-25 18:30:55 +0300 > >- Update NEWS for 5.0.8. >+ xz: Refactor to remove is_empty_filename(). >+ >+ Long ago it was used in list.c too but nowadays it's needed >+ only in io_open_src() so it's nicer to avoid a separate function. > >- NEWS | 12 ++++++++++++ >- 1 file changed, 12 insertions(+) >+ src/xz/file_io.c | 4 +++- >+ src/xz/util.c | 12 ------------ >+ src/xz/util.h | 4 ---- >+ 3 files changed, 3 insertions(+), 17 deletions(-) > >-commit 42e97a32649bf53ce43be2258b902a417c6e7fa1 >+commit 85624015978b0de294cff3df79006df987c552b1 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-21 14:07:54 +0200 >+Date: 2022-10-25 18:23:54 +0300 > >- xz: Fix a comment. >+ 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/options.c | 4 ++-- >+ src/xz/file_io.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit 29b95d5d6665cedffa6a9d6d3d914f981e852182 >+commit fda9f85f52c546f7ca0313cf89481da4707fecb3 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-20 20:43:14 +0200 >+Date: 2022-10-24 16:25:09 +0300 > >- Update INSTALL about the dependencies of the scripts. >+ liblzma: Threaded decoder: Stop the worker threads on errors. >+ >+ It's waste of CPU time and electricity to leave the unfinished >+ worker threads running when it is known that their output will >+ get ignored. > >- INSTALL | 15 ++++++++++----- >- 1 file changed, 10 insertions(+), 5 deletions(-) >+ src/liblzma/common/stream_decoder_mt.c | 33 ++++++++++++++++++++++++++------- >+ 1 file changed, 26 insertions(+), 7 deletions(-) > >-commit 3af91040bb42c21afbb81f5568c3313125e61192 >+commit 2611c4d90535652d3eb7ef4a026a6691276fab43 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-20 20:42:33 +0200 >+Date: 2022-10-20 20:22:50 +0300 > >- Windows: Update build instructions. >+ 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. > >- INSTALL | 15 +++++++++------ >- windows/INSTALL-Windows.txt | 44 +++++++++++++++++++++----------------------- >- 2 files changed, 30 insertions(+), 29 deletions(-) >+ m4/tuklib_cpucores.m4 | 5 +++++ >+ src/common/tuklib_cpucores.c | 9 +++++++++ >+ 2 files changed, 14 insertions(+) > >-commit 0152f72bf6289d744823dc6c849538f3a139ad70 >+commit 424ac91c7e0419393ff2bde4f62e21fa611c776d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-20 20:41:48 +0200 >+Date: 2022-10-19 19:39:35 +0300 > >- Windows: Update the build script and README-Windows.txt. >+ Tests: Skip tests in test_*.sh if encoders and/or decoders are disabled. > >- 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. >+ This isn't perfect as the scripts can still fail if only >+ certain filters are disabled. This is still an improvement >+ as now "make check" has better behavior when all encoders >+ or decoders are disabled. > >- 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. >+ Grepping ../config.h is simple and fairly clean but it only >+ works if config.h was created. CMake builds don't create >+ config.h but they don't use these test scripts either. >+ >+ Thanks to Sebastian Andrzej Siewior for reporting the problem. >+ Thanks to Jia Tan for the original patch which grepped xz >+ error messages instead of config.h. > >- windows/README-Windows.txt | 30 ++++++++++++++++-------------- >- windows/build.bash | 23 ++++++++++++++--------- >- 2 files changed, 30 insertions(+), 23 deletions(-) >+ tests/test_compress.sh | 12 ++++++++++++ >+ tests/test_files.sh | 11 +++++++++++ >+ tests/test_scripts.sh | 11 +++++++++++ >+ 3 files changed, 34 insertions(+) > >-commit 4a1f6133ee5533cee8d91e06fcc22443e5f1881a >+commit ca8bf9d7c5a30be8ba1eeb106fd892f19e83ed09 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-19 15:51:50 +0200 >+Date: 2022-10-19 18:54:34 +0300 > >- Windows: Define TUKLIB_SYMBOL_PREFIX in config.h. >+ Test: Remove the (exit 1) lines. > >- It is to keep all symbols in the lzma_ namespace. >+ I suspect that I used these in the original version because >+ Autoconf's manual describes that such a trick is needed in >+ some specific situations for portability reasons. None of those >+ situations listed on Autoconf 2.71 manual apply to these test >+ scripts though so this cleans them up. > >- windows/config.h | 3 +++ >- 1 file changed, 3 insertions(+) >+ tests/test_compress.sh | 10 ---------- >+ tests/test_files.sh | 9 --------- >+ tests/test_scripts.sh | 6 ------ >+ 3 files changed, 25 deletions(-) > >-commit 7f7d093de79eee0c7dbfd7433647e46302f19f82 >+commit 82fcb7cfc17ce62f79ebc7ca2374e1daca5e4d5e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-16 21:00:09 +0200 >+Date: 2022-10-19 17:14:57 +0300 > >- xz: Update the man page about --threads. >+ Tests: Fix a warning in test_memlimit.c when decoders are disabled. > >- src/xz/xz.1 | 5 ----- >- 1 file changed, 5 deletions(-) >+ tests/test_memlimit.c | 3 +++ >+ 1 file changed, 3 insertions(+) > >-commit 009823448b82aa5f465668878a544c5842885407 >+commit b5f8271b45b9b0e59485ffba3640ca3418835ec4 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-16 20:57:43 +0200 >+Date: 2022-10-19 17:11:46 +0300 > >- xz: Update the man page about --block-size. >+ Tests: Add test_memlimit to .gitignore. >+ >+ Thanks to Jia Tan. > >- src/xz/xz.1 | 41 +++++++++++++++++++++++++++++++++-------- >- 1 file changed, 33 insertions(+), 8 deletions(-) >+ .gitignore | 1 + >+ 1 file changed, 1 insertion(+) > >-commit 7dddfbeb499e528940bc12047355c184644aafe9 >-Author: Adrien Nader <adrien@notk.org> >-Date: 2014-12-10 22:26:57 +0100 >+commit 6a86e81cab202d0a812a7b2e9efacaf70c58ba38 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-10-06 21:53:09 +0300 > >- po/fr: several more translation updates: reword and handle --ignore-check. >+ Tests: Refactor test_stream_flags.c. >+ >+ Converts test_stream_flags to tuktest. Also the test will now >+ compile and skip properly if encoders or decoders are disabled. >+ >+ Thanks to Sebastian Andrzej Siewior. > >- po/fr.po | 50 ++++++++++++++++++++++++++------------------------ >- 1 file changed, 26 insertions(+), 24 deletions(-) >+ tests/test_stream_flags.c | 533 ++++++++++++++++++++++++++++++++++++---------- >+ 1 file changed, 416 insertions(+), 117 deletions(-) > >-commit 6eca5be40e04ddc4b738d493e4e56835956d8b69 >-Author: Adrien Nader <adrien@notk.org> >-Date: 2014-12-10 22:23:01 +0100 >+commit 827ac5b4821491fd3afe0d0e1ddac326253aeb66 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-10-06 17:00:38 +0800 > >- po/fr: yet another place where my email address had to be updated. >+ Tests: Refactor test_block_header.c. >+ >+ test_block_header now achieves higher test coverage. Also the >+ test will now compile and skip properly if encoders or decoders >+ are disabled. >+ >+ Thanks to Sebastian Andrzej Siewior. > >- po/fr.po | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ tests/test_block_header.c | 486 +++++++++++++++++++++++++++++++++++----------- >+ 1 file changed, 370 insertions(+), 116 deletions(-) > >-commit d1003673e92ba47edd6aeeb3dbea05c18269d0e7 >-Author: Adrien Nader <adrien@notk.org> >-Date: 2014-12-10 22:22:20 +0100 >+commit 84963318952064a93bfc52edd6b0ef70593384ee >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-10-05 23:54:12 +0800 > >- po/fr: fix several typos that have been around since the beginning. >+ Tests: Fix compilation issues. >+ >+ test_bcj_exact_size, test_check, test_hardware, and test_index will >+ all now compile and skip properly if encoders or decoders are disabled. >+ >+ Also fixed a small typo (disabed -> disabled). >+ >+ Thanks to Sebastian Andrzej Siewior. > >- po/fr.po | 22 +++++++++++----------- >- 1 file changed, 11 insertions(+), 11 deletions(-) >+ tests/test_bcj_exact_size.c | 20 ++++++++++++++------ >+ tests/test_check.c | 8 +++++++- >+ tests/test_hardware.c | 2 +- >+ tests/test_index.c | 6 ++++++ >+ tests/test_memlimit.c | 16 +++++++++++++++- >+ tests/test_vli.c | 13 +++++++++++++ >+ 6 files changed, 56 insertions(+), 9 deletions(-) > >-commit 4c5aa911a0df027e46171e368debc543d2fa72b2 >-Author: Adrien Nader <adrien@notk.org> >-Date: 2014-12-03 20:02:31 +0100 >+commit 7dcabeec63d46b436fa5f043c3d1f09d0e15be16 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-10-05 16:20:47 +0300 > >- po/fr: last batch of new translations for now. >+ Tests: Include mythread.h in the tests that use MYTHREAD_ENABLED. >+ >+ tests/test_check.c | 1 + >+ tests/test_hardware.c | 1 + >+ tests/test_memlimit.c | 1 + >+ 3 files changed, 3 insertions(+) >+ >+commit 14af758a770c7781af18fb66d6d21ee5b1c27f04 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-10-05 20:57:16 +0800 >+ >+ liblzma: Fix a compilation issue when encoders are disabled. > >- Four new error messages. >+ When encoders were disabled and threading enabled, outqueue.c and >+ outqueue.h were not compiled. The multi threaded decoder required >+ these files, so compilation failed. > >- po/fr.po | 16 ++++++++-------- >- 1 file changed, 8 insertions(+), 8 deletions(-) >+ src/liblzma/common/Makefile.inc | 7 ++++--- >+ 1 file changed, 4 insertions(+), 3 deletions(-) > >-commit 3e3099e36d27059499e7996fb38a62e8ab01d356 >-Author: Adrien Nader <adrien@notk.org> >-Date: 2014-12-03 20:01:32 +0100 >+commit 6ca5c354bd4620aa7f81da68870eef1b1f26288f >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-10-05 16:41:38 +0800 > >- po/fr: translations for --threads, --block-size and --block-list. >+ Tests: Fix compilation error when threading support has been disabled. >+ >+ Now tests that require threading are skipped when threading >+ support has been disabled. >+ >+ Thanks to Sebastian Andrzej Siewior. > >- po/fr.po | 12 ++++++++---- >- 1 file changed, 8 insertions(+), 4 deletions(-) >+ tests/test_check.c | 4 ++++ >+ tests/test_hardware.c | 4 ++++ >+ tests/test_memlimit.c | 4 ++++ >+ 3 files changed, 12 insertions(+) > >-commit e7d96a5933eec4e9d4a62569ee88df0ebb0f1d53 >-Author: Adrien Nader <adrien@notk.org> >-Date: 2014-12-03 20:00:53 +0100 >+commit fae37ad2affd8fe8871f4ff93d5cab5ec14d5e58 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-10-05 14:26:00 +0300 > >- po/fr: remove fuzzy marker for error messages that will be kept in English. >+ tuklib_integer: Add 64-bit endianness-converting reads and writes. > >- The following is a copy of a comment inside fr.po: >+ Also update the comment in liblzma's memcmplen.h. > >- 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. >+ Thanks to MichaÅ Górny for the original patch for the reads. > >- po/fr.po | 22 ++++++++++++++++------ >- 1 file changed, 16 insertions(+), 6 deletions(-) >+ m4/tuklib_integer.m4 | 8 ++++---- >+ src/common/tuklib_integer.h | 46 ++++++++++++++++++++++++++++++++++++++++-- >+ src/liblzma/common/memcmplen.h | 9 +++------ >+ 3 files changed, 51 insertions(+), 12 deletions(-) > >-commit 46cbb9033af8a21fafe543302d6919746e0d72af >-Author: Adrien Nader <adrien@notk.org> >-Date: 2014-12-03 19:58:25 +0100 >+commit 508a44372c5b0dede8863fd0d358d4a9d8645c95 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-09-30 12:06:13 +0300 > >- po/fr: several minor updates and better wording. >+ liblzma: Add API doc note about the .xz decoder LZMA_MEMLIMIT_ERROR bug. > >- Meaning doesn't change at all: it's only for better wording and/or >- formatting of a few strings. >+ The bug was fixed in 660739f99ab211edec4071de98889fb32ed04e98. > >- po/fr.po | 14 +++++++------- >- 1 file changed, 7 insertions(+), 7 deletions(-) >+ src/liblzma/api/lzma/base.h | 11 +++++++++++ >+ 1 file changed, 11 insertions(+) > >-commit 7ce49d444f04e73145f79c832eb4d510594b074a >-Author: Adrien Nader <adrien@notk.org> >-Date: 2014-12-03 19:56:12 +0100 >+commit 8cc9874a7974cd575aee44f218836f7acdbeb0ed >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-09-21 16:15:50 +0800 > >- po/fr: update my email address and copyright years. >+ 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. > >- po/fr.po | 4 ++-- >- 1 file changed, 2 insertions(+), 2 deletions(-) >+ src/liblzma/common/index.c | 3 +++ >+ 1 file changed, 3 insertions(+) > >-commit 214c553ebc3047cd720da1ce5c80cf7c38118d3c >-Author: Adrien Nader <adrien@notk.org> >-Date: 2014-11-26 10:08:26 +0100 >+commit afd5a8bf5374eba82804a999e1ea7af680784086 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-09-21 20:29:28 +0800 > >- fr.po: commit file after only "update-po" so actual is readable. >+ Tests: Create a test for the lzma_index_cat bug. > >- po/fr.po | 311 ++++++++++++++++++++++++++++++++++++++++----------------------- >- 1 file changed, 199 insertions(+), 112 deletions(-) >+ tests/test_index.c | 43 ++++++++++++++++++++++++++++++++++++++++++- >+ 1 file changed, 42 insertions(+), 1 deletion(-) > >-commit 1190c641af09cde85f8bd0fbe5c4906f4a29431b >+commit 3d5a99ca373a4e86faf671226ca6487febb9eeac >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-09-21 19:28:53 +0800 >+ >+ liblzma: Fix copying of check type statistics in lzma_index_cat(). >+ >+ The check type of the last Stream in dest was never copied to >+ dest->checks (the code tried to copy it but it was done too late). >+ This meant that the value returned by lzma_index_checks() would >+ only include the check type of the last Stream when multiple >+ lzma_indexes had been concatenated. >+ >+ In xz --list this meant that the summary would only list the >+ check type of the last Stream, so in this sense this was only >+ a visual bug. However, it's possible that some applications >+ use this information for purposes other than merely showing >+ it to the users in an informational message. I'm not aware of >+ such applications though and it's quite possible that such >+ applications don't exist. >+ >+ Regular streamed decompression in xz or any other application >+ doesn't use lzma_index_cat() and so this bug cannot affect them. >+ >+ src/liblzma/common/index.c | 7 ++++++- >+ 1 file changed, 6 insertions(+), 1 deletion(-) >+ >+commit a61d32172789735350a941e23baf6b587c49e5d9 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-12-02 20:04:07 +0200 >+Date: 2022-09-28 12:20:41 +0300 > >- liblzma: Document how lzma_mt.block_size affects memory usage. >+ tuklib_physmem: Fix Unicode builds on Windows. >+ >+ Thanks to ArSaCiA Game. > >- src/liblzma/api/lzma/container.h | 4 ++++ >- 1 file changed, 4 insertions(+) >+ src/common/tuklib_physmem.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit e4fc1d2f9571fba79ce383595be2ea2a9257def0 >+commit 5a4d3548ab214fdca364d5c734baf1d1fab47308 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-11-28 20:07:18 +0200 >+Date: 2022-09-28 11:12:07 +0300 > >- Update INSTALL about a "make check" failure in test_scripts.sh. >+ Tests: Add test_memlimit.c to test restarting after LZMA_MEMLIMIT_ERROR. > >- INSTALL | 24 +++++++++++++++++------- >- 1 file changed, 17 insertions(+), 7 deletions(-) >+ tests/Makefile.am | 2 + >+ tests/test_memlimit.c | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 153 insertions(+) > >-commit 34f9e40a0a0c3bd2c2730cdb9cd550bbb8a3f2fe >+commit 660739f99ab211edec4071de98889fb32ed04e98 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-11-26 20:12:27 +0200 >+Date: 2022-09-28 11:05:15 +0300 > >- Remove LZMA_UNSTABLE macro. >+ 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/api/lzma/container.h | 4 ---- >- src/liblzma/common/common.h | 2 -- >- src/xz/private.h | 1 - >- 3 files changed, 7 deletions(-) >+ src/liblzma/common/stream_decoder.c | 16 +++++++++++++--- >+ 1 file changed, 13 insertions(+), 3 deletions(-) > >-commit 6d9c0ce9f2677b159e32b224aba5b535b304a705 >+commit 7e68fda58c74ad9e5b876cc22fcbe80fc0e4747b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-11-26 20:10:33 +0200 >+Date: 2022-09-28 11:00:23 +0300 > >- liblzma: Update lzma_stream_encoder_mt() API docs. >+ liblzma: Stream decoder: Fix comments. > >- src/liblzma/api/lzma/container.h | 5 +++-- >- 1 file changed, 3 insertions(+), 2 deletions(-) >+ src/liblzma/common/stream_decoder.c | 12 +++++------- >+ 1 file changed, 5 insertions(+), 7 deletions(-) > >-commit 2301f3f05dd9742f42cda8f0f318864f5dc39ab3 >+commit f664cb25841fc1c478b819034a224a558e2ac6e7 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-11-25 12:32:05 +0200 >+Date: 2022-09-20 16:58:22 +0300 > >- liblzma: Verify the filter chain in threaded encoder initialization. >+ liblzma: ARM64: Add comments. >+ >+ src/liblzma/simple/arm64.c | 13 +++++++++++++ >+ 1 file changed, 13 insertions(+) >+ >+commit b557b4a0eea05470fae8ba5ef4ad5a6dfb36ac41 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-09-20 16:27:50 +0300 >+ >+ liblzma: ARM64: Fix wrong comment in API doc. > >- 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). >+ Thanks to Jia Tan. > >- src/liblzma/common/stream_encoder_mt.c | 9 ++++++--- >- 1 file changed, 6 insertions(+), 3 deletions(-) >+ src/liblzma/api/lzma/bcj.h | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit 107a263d5bb63cd3593fd6a5c938706539f84523 >+commit d5b0906fa55157f48c200188a3951d80df9cb308 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-11-17 19:11:49 +0200 >+Date: 2022-09-19 20:24:26 +0300 > >- Build: Update m4/ax_pthread.m4 from Autoconf Archive. >+ xz: Add --experimental-arm64[=width=WIDTH]. >+ >+ It will be renamed to --arm64 once it is stable. >+ >+ Man page or --long-help weren't updated yet. > >- m4/ax_pthread.m4 | 71 +++++++++++++++++++++++++++++++++++++------------------- >- 1 file changed, 47 insertions(+), 24 deletions(-) >+ src/xz/args.c | 7 +++++++ >+ src/xz/message.c | 7 +++++++ >+ src/xz/options.c | 39 +++++++++++++++++++++++++++++++++++++++ >+ src/xz/options.h | 7 +++++++ >+ 4 files changed, 60 insertions(+) > >-commit b13a781833399ff5726cfc997f3cb2f0acbdbf31 >+commit ecb966de308c255bb4735a7307ef9901c643a9de > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-11-17 18:52:21 +0200 >+Date: 2022-09-19 19:34:56 +0300 > >- Build: Replace obsolete AC_HELP_STRING with AS_HELP_STRING. >+ liblzma: Add experimental ARM64 BCJ filter with a temporary Filter ID. >+ >+ That is, the Filter ID will be changed once the design is final. >+ The current version will be removed. So files created with the >+ tempoary Filter ID won't be supported in the future. > >- configure.ac | 36 ++++++++++++++++++------------------ >- m4/tuklib_integer.m4 | 2 +- >- 2 files changed, 19 insertions(+), 19 deletions(-) >+ CMakeLists.txt | 3 + >+ configure.ac | 4 +- >+ src/liblzma/api/lzma/bcj.h | 35 +++++- >+ src/liblzma/common/filter_common.c | 9 ++ >+ src/liblzma/common/filter_decoder.c | 8 ++ >+ src/liblzma/common/filter_encoder.c | 11 ++ >+ src/liblzma/simple/Makefile.inc | 4 + >+ src/liblzma/simple/arm64.c | 227 ++++++++++++++++++++++++++++++++++++ >+ src/liblzma/simple/simple_coder.h | 9 ++ >+ src/liblzma/simple/simple_decoder.h | 4 + >+ src/liblzma/simple/simple_encoder.h | 2 + >+ 11 files changed, 313 insertions(+), 3 deletions(-) > >-commit 542cac122ed3550148a2af0033af22b757491378 >+commit 177bdc922cb17bd0fd831ab8139dfae912a5c2b8 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-11-17 18:43:19 +0200 >+Date: 2022-09-17 22:42:18 +0300 > >- Build: Fix Autoconf warnings about escaped backquotes. >+ liblzma: Simple/BCJ filters: Allow disabling generic BCJ options. > >- Thanks to Daniel Richard G. for pointing out that it's >- good to sometimes run autoreconf -fi with -Wall. >+ This will be needed for the ARM64 BCJ filter as it will use >+ its own options struct. > >- configure.ac | 7 +++---- >- 1 file changed, 3 insertions(+), 4 deletions(-) >+ 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 | 4 ++-- >+ src/liblzma/simple/simple_private.h | 2 +- >+ src/liblzma/simple/sparc.c | 2 +- >+ src/liblzma/simple/x86.c | 3 ++- >+ 8 files changed, 10 insertions(+), 9 deletions(-) > >-commit 7b03a15cea8cd4f19ed680b51c4bcbae3ce4142f >+commit c3592d0a55114144686ecf960cb516d6b31c98e9 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-11-10 18:54:40 +0200 >+Date: 2022-09-16 17:08:53 +0300 > >- xzdiff: Use mkdir if mktemp isn't available. >+ 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. > >- src/scripts/xzdiff.in | 17 ++++++++++++++++- >- 1 file changed, 16 insertions(+), 1 deletion(-) >+ 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 f8c13e5e3609581d5dd9f8777985ca07f2390ad7 >+commit 982b29f828079a2a26253a40e975127a40a7d2bd > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-11-10 18:45:01 +0200 >+Date: 2022-09-16 15:10:07 +0300 > >- xzdiff: Create a temporary directory to hold a temporary file. >+ Translations: Add Turkish translation. >+ >+ po/LINGUAS | 1 + >+ po/tr.po | 977 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 978 insertions(+) >+ >+commit 1fc088d9f6d1697924aaeac8cd1fb9918d1532e2 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-09-16 14:09:07 +0300 >+ >+ Update THANKS. >+ >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) >+ >+commit 097c7b67ce86ff16a7cef7631b39e5ca4ee3d420 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-09-16 14:07:03 +0300 >+ >+ xzgrep: Fix compatibility with old shells. > >- This avoids the possibility of "File name too long" when >- creating a temp file when the input file name is very long. >+ Running the current xzgrep on Slackware 10.1 with GNU bash 3.00.15: > >- 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. >+ xzgrep: line 231: syntax error near unexpected token `;;' > >- The number X chars to mktemp where increased from 6 to 10. >+ On SCO OpenServer 5.0.7 with Korn Shell 93r: > >- Note that with some shells temp files or dirs won't be used at all. >+ 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/xzdiff.in | 10 +++++----- >- 1 file changed, 5 insertions(+), 5 deletions(-) >+ src/scripts/xzgrep.in | 6 +++--- >+ 1 file changed, 3 insertions(+), 3 deletions(-) > >-commit 7716dcf9df7f457500cb657314e7a9aea5fedb06 >+commit f2d084fe3f0d6d71488bfc6987f26542f67bfd99 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-11-10 15:38:47 +0200 >+Date: 2022-09-09 14:12:30 +0300 > >- liblzma: Fix lzma_mt.preset in lzma_stream_encoder_mt_memusage(). >+ Tests: Silence warnings about unused functions from tuktest.h. > >- It read the filter chain from a wrong variable. This is a similar >- bug that was fixed in 9494fb6d0ff41c585326f00aa8f7fe58f8106a5e. >+ Warnings about unused tuktest_run_test conveniently tell which >+ test programs haven't been converted to tuktest.h yet but I >+ silenced that warning too for now anyway. >+ >+ It is fine to use __attribute__((__unused__)) even when the >+ function is actually used because the attribute only means >+ that the function might be unused. > >- src/liblzma/common/stream_encoder_mt.c | 3 +-- >- 1 file changed, 1 insertion(+), 2 deletions(-) >+ tests/tuktest.h | 10 ++++++++++ >+ 1 file changed, 10 insertions(+) > >-commit 230fa4a605542c84b4178a57381695a0af4e779b >+commit f8ee61e74eb40600445fdb601c374d582e1e9c8a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-11-10 14:49:55 +0200 >+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 18d7facd3802b55c287581405c4d49c98708c136 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-09-02 20:18:55 +0800 >+ >+ liblzma: lzma_index_append: Add missing integer overflow check. >+ >+ The documentation in src/liblzma/api/lzma/index.h suggests that >+ both the unpadded (compressed) size and the uncompressed size >+ are checked for overflow, but only the unpadded size was checked. >+ The uncompressed check is done first since that is more likely to >+ occur than the unpadded or index field size overflows. >+ >+ src/liblzma/common/index.c | 4 ++++ >+ 1 file changed, 4 insertions(+) >+ >+commit 9ac06cb5b85274d18f9f70d82cf2d8c9c1151bd4 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-09-08 15:11:08 +0300 >+ > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 4e4ae08bc7c1711e399c9f2d26eb375d39d08101 >+commit ba3e4ba2de034ae93a513f9c3a0823b80cdb66dc >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-09-08 15:07:00 +0300 >+ >+ CMake: Clarify a comment about Windows symlinks without file extension. >+ >+ CMakeLists.txt | 7 +++---- >+ 1 file changed, 3 insertions(+), 4 deletions(-) >+ >+commit 17485e884ce5c74315f29a8a1507bc706cd5cd1d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-10-29 21:28:25 +0200 >+Date: 2022-09-08 15:02:41 +0300 > >- Update .gitignore files. >+ 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. > >- .gitignore | 2 ++ >- m4/.gitignore | 3 +++ >- 2 files changed, 5 insertions(+) >+ CMakeLists.txt | 24 +++++++++++++++++++----- >+ 1 file changed, 19 insertions(+), 5 deletions(-) > >-commit c923b140b27d1a055db6284e10fd546ad1a7fcdb >+commit 913ddc5572b9455fa0cf299be2e35c708840e922 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-10-29 21:15:35 +0200 >+Date: 2022-09-04 23:23:00 +0300 > >- Build: Prepare to support Automake's subdir-objects. >+ liblzma: Vaccinate against an ill patch from RHEL/CentOS 7. > >- Due to a bug in Automake, subdir-objects won't be enabled >- for now. >+ 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. > >- http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17354 >+ 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). > >- Thanks to Daniel Richard G. for the original patches. >+ 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 | 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(-) >+ 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 | 131 +++++++++++++++++++++++ >+ src/liblzma/validate_map.sh | 113 +++++++++++++++++-- >+ 10 files changed, 382 insertions(+), 15 deletions(-) > >-commit 08c2aa16bea0df82828f665d51fba2e0a5e8997f >+commit 80a1a8bb838842a2be343bd88ad1462c21c5e2c9 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-10-24 20:09:29 +0300 >+Date: 2022-08-31 16:42:04 +0300 > >- Translations: Update the Italian translation. >+ CMake: Add xz symlinks. > >- Thanks to Milo Casagrande. >+ 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. > >- po/it.po | 452 ++++++++++++++++++++++++++++++++++++++------------------------- >- 1 file changed, 275 insertions(+), 177 deletions(-) >+ CMakeLists.txt | 38 +++++++++++++++++++++++++++++++++++++- >+ 1 file changed, 37 insertions(+), 1 deletion(-) > >-commit 2f9f61aa83539c54ff6c118a2693890f0519b3dd >+commit a4193bb6d85d7765b1b87faeab3e50106d3ab2e9 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-10-18 18:51:45 +0300 >+Date: 2022-08-31 16:29:38 +0300 > >- Translations: Update the Polish translation. >+ CMake: Put xz man page install under if(UNIX) like is for xzdec. > >- Thanks to Jakub Bogusz. >+ Thanks to Jia Tan. > >- po/pl.po | 332 ++++++++++++++++++++++++++++++++++++++++----------------------- >- 1 file changed, 214 insertions(+), 118 deletions(-) >+ CMakeLists.txt | 8 +++++--- >+ 1 file changed, 5 insertions(+), 3 deletions(-) > >-commit 4f9d233f67aea25e532824d11b7642cf7dee7a76 >-Author: Andre Noll <maan@tuebingen.mpg.de> >-Date: 2014-10-14 17:30:30 +0200 >+commit c1555b1a221a1427d4d650647531016d754bc4da >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-08-22 18:16:40 +0300 > >- 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 <maan@tuebingen.mpg.de> >+ Bump version number for 5.3.3alpha. > >- po/de.po | 6 +++--- >- 1 file changed, 3 insertions(+), 3 deletions(-) >+ src/liblzma/api/lzma/version.h | 2 +- >+ src/liblzma/liblzma.map | 2 +- >+ 2 files changed, 2 insertions(+), 2 deletions(-) > >-commit 00502b2bedad43f0cc167ac17ae0608837ee196b >-Author: Andre Noll <maan@tuebingen.mpg.de> >-Date: 2014-10-14 17:30:29 +0200 >+commit 44fedddc11c3f6ec2f7fe35a3e38f15ca93f90eb >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-08-22 18:13:56 +0300 > >- l10n: de.po: Update German translation >- >- Signed-off-by: Andre Noll <maan@systemlinux.org> >+ Add NEWS for 5.3.3alpha. > >- po/de.po | 531 +++++++++++++++++++++++++++++++++------------------------------ >- 1 file changed, 281 insertions(+), 250 deletions(-) >+ NEWS | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 119 insertions(+) > >-commit 706b0496753fb609e69f1570ec603f11162189d1 >-Author: Andre Noll <maan@tuebingen.mpg.de> >-Date: 2014-10-14 17:30:28 +0200 >+commit a93e235d7ca764cc19f8f9f9063b40ff361c3cfa >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-07-12 17:59:41 +0300 > >- l10n: de.po: Fix typo: SchieÃen -> SchlieÃen. >+ Translations: Add Portuguese translation. > >- That's a funny one since "schieÃen" means to shoot :) >+ 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. > >- Signed-off-by: Andre Noll <maan@systemlinux.org> >+ Thanks to Pedro Albuquerque and Jia Tan. > >- po/de.po | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ po/LINGUAS | 1 + >+ po/pt.po | 1001 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 1002 insertions(+) > >-commit 7c32e6a935c3d7ee366abad1679bd5f322f0c7d4 >+commit e7cf5a946f25e40d77f45e41f0dee7d42a04e9ae > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-10-09 19:42:26 +0300 >+Date: 2022-07-10 21:16:40 +0300 > >- Update THANKS. >+ 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. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ po/LINGUAS | 1 + >+ po/sr.po | 987 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 988 insertions(+) > >-commit 076258cc458f1e705041ac7a729b15ffe8c5214a >+commit cc8617ab53b1f2a4da212fa76c92fe538269c5de > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-10-09 19:41:51 +0300 >+Date: 2022-07-04 23:51:36 +0300 > >- Add support for AmigaOS/AROS to tuklib_physmem(). >+ Translations: Add Swedish translation. > >- Thanks to Fredrik Wikstrom. >+ Thanks to Sebastian Rasmussen and Jia Tan. > >- m4/tuklib_physmem.m4 | 3 ++- >- src/common/tuklib_physmem.c | 7 +++++++ >- 2 files changed, 9 insertions(+), 1 deletion(-) >+ po/LINGUAS | 1 + >+ po/sv.po | 983 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 984 insertions(+) > >-commit efa7b0a210e1baa8e128fc98c5443a944c39ad24 >+commit c613598c358b640682d0ca2aed38fa7df763e8c7 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-10-09 18:42:14 +0300 >+Date: 2022-07-04 23:40:27 +0300 > >- xzgrep: Avoid passing both -q and -l to grep. >+ Translations: Add Esperanto translation. > >- 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. >+ Thanks to Keith Bowes and Jia Tan. > >- src/scripts/xzgrep.in | 6 ++++-- >- 1 file changed, 4 insertions(+), 2 deletions(-) >+ po/LINGUAS | 1 + >+ po/eo.po | 984 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 985 insertions(+) > >-commit 9c5f76098c9986b48d2fc574a0b764f4cde0c538 >-Author: Trần Ngá»c Quân <vnwildman@gmail.com> >-Date: 2014-09-25 09:22:45 +0700 >+commit 659a587d678f21e98e91d2751c31d4ce050c081a >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-07-01 00:22:33 +0300 > >- l10n: vi.po: Update Vietnamese translation >+ Translations: Add Catalan translation. > >- Signed-off-by: Trần Ngá»c Quân <vnwildman@gmail.com> >+ Thanks to Jordi Mas and Jia Tan. > >- po/vi.po | 136 +++++++++++++++++++++++++++++++++++++++------------------------ >- 1 file changed, 84 insertions(+), 52 deletions(-) >+ po/LINGUAS | 1 + >+ po/ca.po | 1076 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 1077 insertions(+) > >-commit c4911f2db36d811896c73c008b4218d8fa9a4730 >+commit 739fd8c9bdf1d85f57d56642aad87148d4779530 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-09-25 18:38:48 +0300 >+Date: 2022-06-30 17:47:08 +0300 > >- Build: Detect supported compiler warning flags better. >+ Translations: Add Ukrainian translation. > >- 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. >+ Thanks to Yuri Chornoivan and Jia Tan. > >- configure.ac | 5 +++-- >- 1 file changed, 3 insertions(+), 2 deletions(-) >+ po/LINGUAS | 1 + >+ po/uk.po | 996 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 997 insertions(+) > >-commit 76e75522ed6f5c228d55587dee5a997893f6e474 >+commit 73280550b111930c62a667e56add8fd574f80bc8 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-09-20 21:01:21 +0300 >+Date: 2022-06-30 17:45:26 +0300 > >- Update NEWS for 5.0.7. >+ Translators: Add Romanian translation. >+ >+ Thanks to Remus-Gabriel Chelu and Jia Tan. > >- NEWS | 11 +++++++++++ >- 1 file changed, 11 insertions(+) >+ po/LINGUAS | 1 + >+ po/ro.po | 1016 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 1017 insertions(+) > >-commit d62028b4c1174fc67b6929f126f5eb24c018c700 >+commit 2465f5b825152714b2c357d96c2422c31109d320 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-09-20 19:42:56 +0300 >+Date: 2022-06-29 18:33:32 +0300 > >- liblzma: Fix a portability problem in Makefile.am. >+ Translations: Update Brazilian Portuguese translation. > >- 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. >+ One msgstr was changed. The diff is long due to changes >+ in the source code line numbers in the comments. > >- Thanks to Christian Weisgerber for the patch. >+ Thanks to Rafael Fontenelle. > >- src/liblzma/Makefile.am | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ po/pt_BR.po | 186 ++++++++++++++++++++++++++++++------------------------------ >+ 1 file changed, 92 insertions(+), 94 deletions(-) > >-commit c35de31d4283edad3e57d37ffe939406542cb7bb >+commit 434e1ffd3e62719d509da10b646216f5ef53fe4d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-09-14 21:54:09 +0300 >+Date: 2022-06-29 18:04:44 +0300 > >- Bump the version number to 5.1.4beta. >+ Translations: Add Croatian translation. >+ >+ Thanks to Božidar Putanec and Jia Tan. > >- src/liblzma/api/lzma/version.h | 4 ++-- >- src/liblzma/liblzma.map | 2 +- >- 2 files changed, 3 insertions(+), 3 deletions(-) >+ po/LINGUAS | 1 + >+ po/hr.po | 987 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 988 insertions(+) > >-commit e9e097e22cacdaa23e5414fea7913535449cb340 >+commit 0732d0f7065c9bd48bfe4f5983144ae970c4a499 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-09-14 21:50:13 +0300 >+Date: 2022-06-29 17:58:48 +0300 > >- Update NEWS for 5.0.6 and 5.1.4beta. >+ Translations: Add Spanish translation. >+ >+ Thanks to Cristian Othón MartÃnez Vera and Jia Tan. > >- NEWS | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ >- 1 file changed, 50 insertions(+) >+ po/LINGUAS | 1 + >+ po/es.po | 984 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 985 insertions(+) > >-commit 642f856bb8562ab66704b1e01ac7bc08b6d0a663 >+commit 9899b0f82bc130998d1f1f618a6ab805b73f2696 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-09-14 21:02:41 +0300 >+Date: 2022-06-29 17:49:43 +0300 > >- Update TODO. >+ Translations: Add Korean translation. >+ >+ Thanks to Seong-ho Cho and Jia Tan. > >- TODO | 38 ++++++++++++++++++++++++++++++++++---- >- 1 file changed, 34 insertions(+), 4 deletions(-) >+ po/LINGUAS | 1 + >+ po/ko.po | 972 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 973 insertions(+) > >-commit 6b5e3b9eff5b8cedb2aac5f524d4d60fc8a48124 >+commit 65217eaf6bd195f3ef027d4ac55d57b7d133d69f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-08-05 22:32:36 +0300 >+Date: 2020-03-16 21:57:21 +0200 > >- xz: Add --ignore-check. >+ 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. > >- 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(-) >+ po/cs.po | 592 ++++++++++++++++++++++++++++++++++----------------------------- >+ 1 file changed, 322 insertions(+), 270 deletions(-) > >-commit 9adbc2ff373f979c917cdfd3679ce0ebd59f1040 >+commit e56ff423ee7af9e648e16b132f0d835d2cb4db26 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-08-05 22:15:07 +0300 >+Date: 2020-03-16 17:30:39 +0200 > >- liblzma: Add support for LZMA_IGNORE_CHECK. >+ Translations: Add partial Danish translation. >+ >+ I made a few minor white space changes without getting them >+ approved by the Danish translation team. > >- 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(-) >+ po/LINGUAS | 1 + >+ po/da.po | 896 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 897 insertions(+) > >-commit 0e0f34b8e4f1c60ecaec15c2105982381cc9c3e6 >+commit 43e09c62e77cb8807d932c81de4decbdb956e184 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-08-05 22:03:30 +0300 >+Date: 2020-03-11 22:37:54 +0200 > >- liblzma: Add support for lzma_block.ignore_check. >+ Translations: Add hu, zh_CN, and zh_TW. > >- 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. >+ 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.) > >- 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(-) >+ po/LINGUAS | 3 + >+ po/hu.po | 985 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ po/zh_CN.po | 963 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ po/zh_TW.po | 956 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 4 files changed, 2907 insertions(+) > >-commit 71e1437ab585b46f7a25f5a131557d3d1c0cbaa2 >+commit 982b6b198ae1ffe6093236dd8a3d03d1415b912b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-08-04 19:25:58 +0300 >+Date: 2020-03-11 14:33:30 +0200 > >- liblzma: Use lzma_memcmplen() in the BT3 match finder. >+ Translations: Update vi.po to match the file from the TP. > >- I had missed this when writing the commit >- 5db75054e900fa06ef5ade5f2c21dffdd5d16141. >+ The translated strings haven't been updated but word wrapping >+ is different. >+ >+ po/vi.po | 407 ++++++++++++++++++++++++++++----------------------------------- >+ 1 file changed, 179 insertions(+), 228 deletions(-) >+ >+commit 801f39691fc4abc6dd33d7653d498781b593f3eb >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2020-03-11 14:18:03 +0200 >+ >+ Translations: Add fi and pt_BR, and update de, fr, it, and pl. > >- Thanks to Jun I Jin. >+ 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. > >- src/liblzma/lz/lz_encoder_mf.c | 5 ++--- >- 1 file changed, 2 insertions(+), 3 deletions(-) >+ 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 41dc9ea06e1414ebe8ef52afc8fc15b6e3282b04 >+commit 311e4f85ede5d2f0bb71f3ad70b5b7db1b5adf33 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-08-04 00:25:44 +0300 >+Date: 2022-08-22 17:27:19 +0300 > >- Update THANKS. >+ xz: Try to clarify --memlimit-mt-decompress vs. --memlimit-compress. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ src/xz/xz.1 | 31 +++++++++++++++++++------------ >+ 1 file changed, 19 insertions(+), 12 deletions(-) > >-commit 5dcffdbcc23a68abc3ac3539b30be71bc9b5af84 >+commit df23c31000283c00e5ef1ca32a0bc3bb757bd707 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-08-03 21:32:25 +0300 >+Date: 2022-08-22 16:46:18 +0300 > >- liblzma: SHA-256: Optimize the Maj macro slightly. >+ CMake: Add liblzma tests. > >- 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 >- <http://www.hackersdelight.org/corres.txt>. >+ Thanks to Jia Tan for the patch. > >- src/liblzma/check/sha256.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ CMakeLists.txt | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++- >+ 1 file changed, 52 insertions(+), 1 deletion(-) > >-commit a9477d1e0c6fd0e47e637d051e7b9e2a5d9af517 >+commit 02a777f9c422d3b5ec895078530bb1a2b6f7bdf5 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-08-03 21:08:12 +0300 >+Date: 2022-08-19 23:32:22 +0300 > >- liblzma: SHA-256: Optimize the way rotations are done. >+ xz: Revise --info-memory output. > >- This looks weird because the rotations become sequential, >- but it helps quite a bit on both 32-bit and 64-bit x86: >+ The strings could be more descriptive but it's good >+ to have some version of this committed now. > >- - 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. >+ --robot mode wasn't changed yet. > >- src/liblzma/check/sha256.c | 17 +++++++++++------ >- 1 file changed, 11 insertions(+), 6 deletions(-) >+ src/xz/hardware.c | 32 ++++++++++++++++++++++++++------ >+ src/xz/xz.1 | 1 + >+ 2 files changed, 27 insertions(+), 6 deletions(-) > >-commit 5a76c7c8ee9a0afbeedb1c211db9224260404347 >+commit f864f6d42eab57ea8ed82cc2dd19a03b51377442 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-08-03 20:38:13 +0300 >+Date: 2022-08-19 23:12:02 +0300 > >- liblzma: SHA-256: Remove the GCC #pragma that became unneeded. >+ xz: Update the man page for threaded decompression and memlimits. > >- The unrolling in the previous commit should avoid the >- situation where a compiler may think that an uninitialized >- variable might be accessed. >+ This documents the changes made in commits >+ 6c6da57ae2aa962aabde6892442227063d87e88c, >+ cad299008cf73ec566f0662a9cf2b94f86a99659, and >+ 898faa97287a756231c663a3ed5165672b417207. >+ >+ The --info-memory bit hasn't been finished yet >+ even though it's already mentioned in this commit >+ under --memlimit-mt-decompress and --threads. > >- src/liblzma/check/sha256.c | 5 ----- >- 1 file changed, 5 deletions(-) >+ src/xz/xz.1 | 148 +++++++++++++++++++++++++++++++++++++++++++++++++----------- >+ 1 file changed, 121 insertions(+), 27 deletions(-) > >-commit 9a096f8e57509775c331950b8351bbca77bdcfa8 >+commit d13bfcc0056617dd648f655a01653932fad7067f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-08-03 20:33:38 +0300 >+Date: 2022-08-18 17:49:16 +0300 > >- liblzma: SHA-256: Unroll a little more. >+ Build: Include the CMake files in the distribution. > >- 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. >+ 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. > >- src/liblzma/check/sha256.c | 25 ++++++++++++++++--------- >- 1 file changed, 16 insertions(+), 9 deletions(-) >+ Makefile.am | 2 ++ >+ 1 file changed, 2 insertions(+) > >-commit bc7650d87bf27f85f1a2a806dc2db1780e09e6a5 >+commit e66787bcfefdb93f19c974f895f65969a77937b0 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-08-03 19:56:43 +0300 >+Date: 2022-08-18 17:38:05 +0300 > >- liblzma: SHA-256: Do the byteswapping without a temporary buffer. >+ 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. > >- src/liblzma/check/sha256.c | 13 +------------ >- 1 file changed, 1 insertion(+), 12 deletions(-) >+ windows/vs2013/liblzma_dll.vcxproj | 6 ++++++ >+ windows/vs2017/liblzma_dll.vcxproj | 6 ++++++ >+ windows/vs2019/liblzma_dll.vcxproj | 6 ++++++ >+ 3 files changed, 18 insertions(+) > >-commit 544aaa3d13554e8640f9caf7db717a96360ec0f6 >+commit c4e8e5fb311225b8b48d34157891a640b2535e0c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-07-25 22:38:28 +0300 >+Date: 2022-08-18 17:16:49 +0300 > >- liblzma: Use lzma_memcmplen() in normal mode of LZMA. >+ liblzma: Threaded decoder: Improve LZMA_FAIL_FAST when LZMA_FINISH is used. > >- Two locations were not changed yet because the simplest change >- assumes that the initial "len" may be greater than "limit". >+ It will now return LZMA_DATA_ERROR (not LZMA_OK or LZMA_BUF_ERROR) >+ if LZMA_FINISH is used and there isn't enough input to finish >+ decoding the Block Header or the Block. The use of LZMA_DATA_ERROR >+ is simpler and the less risky than LZMA_BUF_ERROR but this might >+ be changed before 5.4.0. > >- src/liblzma/lzma/lzma_encoder_optimum_normal.c | 20 +++++--------------- >- 1 file changed, 5 insertions(+), 15 deletions(-) >+ src/liblzma/api/lzma/container.h | 6 +++++ >+ src/liblzma/common/stream_decoder_mt.c | 42 ++++++++++++++++++++++++++++++++++ >+ 2 files changed, 48 insertions(+) > >-commit f48fce093b07aeda95c18850f5e086d9f2383380 >+commit 6dcf606e7efa2b259f0262f9e2f61e00116842d3 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-07-25 22:30:38 +0300 >+Date: 2022-08-12 18:31:47 +0300 > >- liblzma: Simplify LZMA fast mode code by using memcmp(). >+ Add NEWS for 5.2.6. > >- src/liblzma/lzma/lzma_encoder_optimum_fast.c | 11 +---------- >- 1 file changed, 1 insertion(+), 10 deletions(-) >+ NEWS | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 121 insertions(+) > >-commit 6bf5308e34e23dede5b301b1b9b4f131dacd9218 >+commit 413b86fcf8934fae5a004f378a9483d37d8fcaab > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-07-25 22:29:49 +0300 >+Date: 2022-08-12 14:28:41 +0300 > >- liblzma: Use lzma_memcmplen() in fast mode of LZMA. >+ Add Jia Tan to AUTHORS. > >- src/liblzma/lzma/lzma_encoder_optimum_fast.c | 6 +++--- >- 1 file changed, 3 insertions(+), 3 deletions(-) >+ AUTHORS | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 353212137e51e45b105a3a3fc2e6879f1cf0d492 >+commit 352672732c346c546ff3c26d0605bc0ed1c8b7c7 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-07-25 21:16:23 +0300 >+Date: 2022-07-25 19:28:26 +0300 > >- Update THANKS. >+ Build: Start the generated ChangeLog from around 5.2.0 instead of 5.0.0. >+ >+ This makes ChangeLog smaller. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ Makefile.am | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 5db75054e900fa06ef5ade5f2c21dffdd5d16141 >+commit 6f6d11225d6016be2bbb55d845b66f6b04d048df > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-07-25 21:15:07 +0300 >+Date: 2022-07-25 19:11:05 +0300 > >- liblzma: Use lzma_memcmplen() in the match finders. >+ Translations: Change the copyright comment string to use with po4a. > >- This doesn't change the match finder output. >+ 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. > >- src/liblzma/lz/lz_encoder.c | 13 ++++++++++++- >- src/liblzma/lz/lz_encoder_mf.c | 33 +++++++++++---------------------- >- 2 files changed, 23 insertions(+), 23 deletions(-) >+ po4a/update-po | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit e1c8f1d01f4a4e2136173edab2dc63c71ef038f4 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-07-25 20:57:20 +0300 >+commit 61f8ec804abdb4c5dac01e8ae9b90c7be58a5c24 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-07-25 18:30:05 +0300 > >- liblzma: Add lzma_memcmplen() for fast memory comparison. >+ 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 4d80b463a1251aa22eabc87d2732fec13b1adda6 >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-07-25 18:20:01 +0300 >+ >+ Build: Don't allow empty LIST in --enable-match-finders=LIST. > >- 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. >+ It's enforced only when a match finder is needed, that is, >+ when LZMA1 or LZMA2 encoder is enabled. > >- configure.ac | 13 +++ >- src/liblzma/common/Makefile.inc | 1 + >- src/liblzma/common/memcmplen.h | 170 ++++++++++++++++++++++++++++++++++++++++ >- 3 files changed, 184 insertions(+) >+ configure.ac | 4 ++++ >+ 1 file changed, 4 insertions(+) > >-commit 765735cf52e5123586e74a51b9c073b5257f631f >+commit 9cc721af5436908f2d5a828aebbc4050a32a3487 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-07-12 21:10:09 +0300 >+Date: 2022-07-24 13:27:48 +0300 > >+ xz: Update the man page that change to --keep will be in 5.2.6. >+ >+ src/xz/xz.1 | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) >+ >+commit b81bf0c7d1873e52a4086a9abb494471d652cb55 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-07-19 23:23:54 +0300 >+ > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 59da01785ef66c7e62f36e70ca808fd2824bb995 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-07-12 20:06:08 +0300 >+commit 340cf1ec3927767046b8293a49da3db4e393f426 >+Author: Nicholas Jackson <nickajacks1@gmail.com> >+Date: 2022-07-17 17:39:23 -0700 > >- Translations: Add Vietnamese translation. >- >- Thanks to Trần Ngá»c Quân. >+ CMake: Add missing source file to liblzma build > >- po/LINGUAS | 1 + >- po/vi.po | 1007 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- 2 files changed, 1008 insertions(+) >+ CMakeLists.txt | 1 + >+ 1 file changed, 1 insertion(+) > >-commit 17215f751c354852700e7f8592ccf319570a0721 >+commit d796b6d7fdb8b7238b277056cf9146cce25db604 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-06-29 20:54:14 +0300 >+Date: 2022-07-19 23:19:49 +0300 > >- xz: Update the help message of a few options. >- >- Updated: --threads, --block-size, and --block-list >- Added: --flush-timeout >+ xzgrep man page: Document exit statuses. > >- src/xz/message.c | 18 +++++++++++------- >- 1 file changed, 11 insertions(+), 7 deletions(-) >+ src/scripts/xzgrep.1 | 15 ++++++++++++++- >+ 1 file changed, 14 insertions(+), 1 deletion(-) > >-commit 96864a6ddf91ad693d102ea165f3d7918744d582 >+commit 923bf96b55e5216a6c8df9d8331934f54784390e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-06-18 22:07:06 +0300 >+Date: 2022-07-19 23:13:24 +0300 > >- xz: Use lzma_cputhreads() instead of own copy of tuklib_cpucores(). >+ 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/xz/Makefile.am | 1 - >- src/xz/hardware.c | 12 +++++++++--- >- 2 files changed, 9 insertions(+), 4 deletions(-) >+ src/scripts/xzgrep.in | 72 +++++++++++++++++++++++++++++++++++++-------------- >+ 1 file changed, 53 insertions(+), 19 deletions(-) > >-commit a115cc3748482e277f42a968baa3cd266f031dba >+commit a648978b20495b7aa4a8b029c5a810b5ad9d08ff > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-06-18 22:04:24 +0300 >+Date: 2022-07-19 00:10:55 +0300 > >- liblzma: Add lzma_cputhreads(). >+ 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/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(-) >+ src/scripts/xzgrep.in | 5 ++++- >+ 1 file changed, 4 insertions(+), 1 deletion(-) > >-commit 3ce3e7976904fbab4e6482bafa442856f77a51fa >+commit bd7b290f3fe4faeceb7d3497ed9bf2e6ed5e7dc5 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-06-18 19:11:52 +0300 >+Date: 2022-07-18 21:52:31 +0300 > >- xz: Check for filter chain compatibility for --flush-timeout. >+ xzgrep: Use grep -H --label when available (GNU, *BSDs). > >- This avoids LZMA_PROG_ERROR from lzma_code() with filter chains >- that don't support LZMA_SYNC_FLUSH. >+ 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/xz/coder.c | 30 +++++++++++++++++++++--------- >- 1 file changed, 21 insertions(+), 9 deletions(-) >+ src/scripts/xzgrep.in | 21 +++++++++++++++++++++ >+ 1 file changed, 21 insertions(+) > >-commit 381ac14ed79e5d38809f251705be8b3193bba417 >+commit b56729af9f1a596e57aeefd7570d8d7dce5c9f52 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-06-13 19:21:54 +0300 >+Date: 2022-07-18 21:10:25 +0300 > >- xzgrep: List xzgrep_expected_output in tests/Makefile.am. >+ 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. > >- tests/Makefile.am | 3 ++- >- 1 file changed, 2 insertions(+), 1 deletion(-) >+ src/scripts/xzgrep.in | 12 ++++-------- >+ 1 file changed, 4 insertions(+), 8 deletions(-) > >-commit 4244b65b06d5ecaf6f9dd0387ac7e3166bd2364e >+commit bad61b5997e6647911974022bfb72f3d4818a594 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-06-13 18:58:22 +0300 >+Date: 2022-07-18 19:18:48 +0300 > >- xzgrep: Improve the test script. >+ Scripts: Use printf instead of echo in a few places. > >- Now it should be close to the functionality of the original >- version by Pavel Raiskup. >+ It's a good habbit as echo has some portability corner cases >+ when the string contents can be anything. > >- tests/Makefile.am | 3 ++- >- tests/test_scripts.sh | 24 ++++++++++++++---------- >- tests/xzgrep_expected_output | 39 +++++++++++++++++++++++++++++++++++++++ >- 3 files changed, 55 insertions(+), 11 deletions(-) >+ 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 1e60f2c0a0ee6c18b02943ce56214799a70aac26 >+commit 6a4a4a7d2667837dc824c26fcb19ed6ca5aff645 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-06-11 21:03:25 +0300 >+Date: 2022-07-17 21:36:25 +0300 > >- xzgrep: Add a test for the previous fix. >+ xzgrep: Add more LC_ALL=C to avoid bugs with multibyte characters. > >- This is a simplified version of Pavel Raiskup's >- original patch. >+ 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. > >- tests/test_scripts.sh | 26 ++++++++++++++++++++++---- >- 1 file changed, 22 insertions(+), 4 deletions(-) >+ src/scripts/xzgrep.in | 14 ++++++++------ >+ 1 file changed, 8 insertions(+), 6 deletions(-) > >-commit ceca37901783988204caaf40dff4623d535cc789 >+commit b48f9d615f2c2e8d2f6e253d0e48ee66d0652b68 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-06-11 20:43:28 +0300 >+Date: 2022-07-17 20:55:16 +0300 > >- xzgrep: exit 0 when at least one file matches. >+ xzgrep: Fix parsing of certain options. > >- Mimic the original grep behavior and return exit_success when >- at least one xz compressed file matches given pattern. >+ 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. > >- Original bugreport: >- https://bugzilla.redhat.com/show_bug.cgi?id=1108085 >+ Add -E, -F, -G, and -P to the "no argument required" list. > >- Thanks to Pavel Raiskup for the patch. >+ 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 | 15 +++++++++++++-- >- 1 file changed, 13 insertions(+), 2 deletions(-) >+ src/scripts/xzgrep.in | 19 +++++++++++++++++-- >+ 1 file changed, 17 insertions(+), 2 deletions(-) > >-commit 8c19216baccb92d011694590df8a1262da2e980c >+commit 2d2201bc6315deda4d43625aa510972467bd51d4 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-06-09 21:21:24 +0300 >+Date: 2022-07-14 20:33:05 +0300 > >- xz: Force single-threaded mode when --flush-timeout is used. >+ Tests: Add the .lzma files to test_files.sh. > >- src/xz/coder.c | 11 +++++++++++ >- 1 file changed, 11 insertions(+) >+ tests/test_files.sh | 20 ++++++++++++++++++++ >+ 1 file changed, 20 insertions(+) > >-commit 87f1a24810805187d7bbc8ac5512e7eec307ddf5 >+commit ce5549a591bf126300618879f5b24023351baff6 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-05-25 22:05:39 +0300 >+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 107c93ee5cad51a6ea0cee471209bfe8d76deaa3 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 511feb5eadb988d641b025d597f4fac7502003b8 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-07-13 22:24:41 +0300 >+ > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit da1718f266fcfc091e7bf08aae1bc986d0e6cc6b >+commit 9595a3119b9faf0ce01375329cad8bbf85c35ea2 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-05-25 21:45:56 +0300 >+Date: 2022-07-13 22:24:07 +0300 > >- liblzma: Use lzma_alloc_zero() in LZ encoder initialization. >+ liblzma: Add optional autodetection of LZMA end marker. > >- This avoids a memzero() call for a newly-allocated memory, >- which can be expensive when encoding small streams with >- an over-sized dictionary. >+ 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). > >- 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. >+ 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 Vincenzo Innocente for reporting the problem. >+ Thanks to Karl Beldan 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(-) >+ doc/lzma-file-format.txt | 11 +++- >+ src/liblzma/common/alone_decoder.c | 2 +- >+ src/liblzma/common/microlzma_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 ++++++++++++++++++++++++---------- >+ 7 files changed, 95 insertions(+), 39 deletions(-) > >-commit 28af24e9cf2eb259997c85dce13d4c97b3daa47a >+commit 0c0f8e9761eb6eaf199082cf144db7ac5f9d8cb2 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-05-25 19:25:57 +0300 >+Date: 2022-07-12 18:53:04 +0300 > >- liblzma: Add the internal function lzma_alloc_zero(). >+ xz: Document the special memlimit case of 2000 MiB on MIPS32. >+ >+ See commit fc3d3a7296ef58bb799a73943636b8bfd95339f7. > >- src/liblzma/common/common.c | 21 +++++++++++++++++++++ >- src/liblzma/common/common.h | 6 ++++++ >- 2 files changed, 27 insertions(+) >+ src/xz/xz.1 | 8 ++++++-- >+ 1 file changed, 6 insertions(+), 2 deletions(-) > >-commit ed9ac85822c490e34b68c259afa0b385d21d1c40 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-05-08 18:03:09 +0300 >+commit d1bfa3dc703325ecd974167e864a8712fdfe936e >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-07-01 21:19:26 +0800 > >- xz: Fix uint64_t vs. size_t which broke 32-bit build. >+ Created script to generate code coverage reports. > >- Thanks to Christian Hesse. >+ The script uses lcov and genhtml after running the tests >+ to show the code coverage statistics. The script will create >+ a coverage directory where it is run. It can be run both in >+ and out of the source directory. > >- src/xz/coder.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ .gitignore | 4 +++ >+ tests/code_coverage.sh | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 83 insertions(+) > >-commit d716acdae3fa7996f9e68a7bac012e6d8d13dd02 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-05-04 11:09:11 +0300 >+commit 86a30b0255d8064169fabfd213d907016d2f9f2a >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-06-16 17:32:19 +0300 > >- Docs: Update comments to refer to lzma/lzma12.h in example programs. >+ Tests: Add more tests into test_check. > >- doc/examples/03_compress_custom.c | 6 +++--- >- 1 file changed, 3 insertions(+), 3 deletions(-) >+ tests/test_check.c | 279 +++++++++++++++++++++++++++++++++++++++++++++++++++-- >+ tests/tests.h | 23 +++++ >+ 2 files changed, 295 insertions(+), 7 deletions(-) > >-commit 4d5b7b3fda31241ca86ed35e08e73f776ee916e0 >+commit 82e30fed66a89706388a8c15dc954d84e63f38fa > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-05-04 11:07:17 +0300 >+Date: 2022-06-16 15:02:57 +0300 > >- liblzma: Rename the private API header lzma/lzma.h to lzma/lzma12.h. >+ Tests: Use char[][24] array for enum_strings_lzma_ret. > >- It can be confusing that two header files have the same name. >- The public API file is still lzma.h. >+ Array of pointers to short strings is a bit pointless here >+ and now it's fully const. > >- 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(-) >+ tests/tests.h | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 1555a9c5664afc7893a2b75e9970105437f01ef1 >+commit 5ba9459e6c4a29f6870ca78ce8ac6e519d59c41e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-04-25 17:53:42 +0300 >+Date: 2022-06-16 14:12:14 +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. >+ Tests: tuktest.h: Add tuktest_error_impl to help with error conditions. > >- src/xzdec/Makefile.am | 10 +++++++++- >- 1 file changed, 9 insertions(+), 1 deletion(-) >+ tests/tuktest.h | 72 +++++++++++++++++++++++++-------------------------------- >+ 1 file changed, 32 insertions(+), 40 deletions(-) > >-commit 56056571df3377eaa6ae6233b3ccc5d72e81d43d >+commit b339892668da20aea22a93668c82b87a38e4a97f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-04-25 17:44:26 +0300 >+Date: 2022-06-16 13:29:59 +0300 > >- Build: Add --disable-doc to configure. >+ Tests: tuktest.h: Rename file_from_* and use tuktest_malloc there. > >- INSTALL | 6 ++++++ >- Makefile.am | 2 ++ >- configure.ac | 6 ++++++ >- 3 files changed, 14 insertions(+) >+ tests/test_bcj_exact_size.c | 4 +--- >+ tests/tuktest.h | 52 +++++++++++++++++++++------------------------ >+ 2 files changed, 25 insertions(+), 31 deletions(-) > >-commit 6de61d8721097a6214810841aa85b08e303ac538 >+commit d8b63a0ad68d1c461eb373466679ebc41fbc207d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-04-24 18:06:24 +0300 >+Date: 2022-06-16 13:08:19 +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". >+ Tests: tuktest.h: Add malloc wrapper with automatic freeing. > >- INSTALL | 25 +++++++++++++++++++++++++ >- 1 file changed, 25 insertions(+) >+ tests/tuktest.h | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 124 insertions(+) > >-commit 54df428799a8d853639b753d0e6784694d73eb3e >+commit 1d51536a4b19a8fae768f8eb462fc2238cb36d53 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-04-09 17:26:10 +0300 >+Date: 2022-06-16 11:47:37 +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. >+ Tests: tuktest.h: Move a function. > >- src/xz/signals.c | 12 +++++++----- >- 1 file changed, 7 insertions(+), 5 deletions(-) >+ tests/tuktest.h | 44 ++++++++++++++++++++++---------------------- >+ 1 file changed, 22 insertions(+), 22 deletions(-) > >-commit 5876ca27daa1429676b1160007d9688266907f00 >+commit 70c7555f6403553ee35539e869de0025592d8564 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-01-29 20:19:41 +0200 >+Date: 2022-06-14 22:21:15 +0300 > >- Docs: Add example program for threaded encoding. >+ Tests: test_vli: Remove an invalid test-assertion. > >- I didn't add -DLZMA_UNSTABLE to Makefile so one has to >- specify it manually as long as LZMA_UNSTABLE is needed. >+ lzma_vli is unsigned so trying a signed value results in >+ a compiler warning from -Wsign-conversion. (lzma_vli)-1 >+ equals to LZMA_VLI_UNKNOWN anyway which is the next assertion. > >- doc/examples/04_compress_easy_mt.c | 184 +++++++++++++++++++++++++++++++++++++ >- doc/examples/Makefile | 3 +- >- 2 files changed, 186 insertions(+), 1 deletion(-) >+ tests/test_vli.c | 2 -- >+ 1 file changed, 2 deletions(-) > >-commit 9494fb6d0ff41c585326f00aa8f7fe58f8106a5e >+commit 154b73c5a1092c3f785e01666b564ad7ff1be555 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-01-29 20:13:51 +0200 >+Date: 2022-06-14 22:10:10 +0300 > >- liblzma: Fix lzma_mt.preset not working with lzma_stream_encoder_mt(). >+ Tests: test_vli: Add const where appropriate. >+ >+ tests/test_vli.c | 53 ++++++++++++++++++++++++++++------------------------- >+ 1 file changed, 28 insertions(+), 25 deletions(-) >+ >+commit 0354d6cce3ff98ea6f927107baf216253f6ce2bb >+Author: Jia Tan <jiat75@gmail.com> >+Date: 2022-06-13 20:27:03 +0800 >+ >+ Added vli tests to .gitignore >+ >+ .gitignore | 1 + >+ 1 file changed, 1 insertion(+) >+ >+commit a08f5ccf6bdc20ef70e41f6f3321618ef146f96e >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-06-12 11:31:40 +0800 >+ >+ Created tests for all functions exported in vli.h > >- It read the filter chain from a wrong variable. >+ Achieved 100% code coverage vli_encoder.c, vli_decoder.c, and vli_size.c > >- src/liblzma/common/stream_encoder_mt.c | 4 ++-- >- 1 file changed, 2 insertions(+), 2 deletions(-) >+ tests/Makefile.am | 4 +- >+ tests/test_vli.c | 308 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 311 insertions(+), 1 deletion(-) > >-commit 673a4cb53de3a715685cb1b836da57a3c7dcd43c >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-01-20 11:20:40 +0200 >+commit 1e3eb61815a91c0a1bfbb802e2d95593f523491f >+Author: jiat75 <jiat0218@gmail.com> >+Date: 2022-06-03 21:24:54 +0800 > >- liblzma: Fix typo in a comment. >+ Added parallel test artifacts to .gitignore > >- src/liblzma/api/lzma/block.h | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ .gitignore | 2 ++ >+ 1 file changed, 2 insertions(+) > >-commit ad96a871a1470eb76d6233d3890ce9338047b7a3 >+commit 00e3613f1212eaa84e721585fdb4de6967cf2476 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-01-12 19:38:43 +0200 >+Date: 2022-06-14 21:29:21 +0300 > >- Windows: Add config.h for building liblzma with MSVC 2013. >+ Tests: Use good-1-empty-bcj-lzma2.xz in test_bcj_exact_size. > >- 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. >+ It's much nicer this way so that the test data isn't a hardcoded >+ table inside the C file. > >- windows/config.h | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- 1 file changed, 139 insertions(+) >+ tests/test_bcj_exact_size.c | 19 +++++++------------ >+ 1 file changed, 7 insertions(+), 12 deletions(-) > >-commit 3d5c090872fab4212b57c290e8ed4d02c78c1737 >+commit 86bab755be252bfd3e0a9aee8e7b83a9bbb23ed0 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-01-12 17:41:14 +0200 >+Date: 2022-06-14 21:26:13 +0300 > >- xz: Fix a comment. >+ Tests: Add file reading helpers to tuktest.h. > >- src/xz/coder.c | 4 ++-- >- 1 file changed, 2 insertions(+), 2 deletions(-) >+ tests/tuktest.h | 183 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- >+ 1 file changed, 176 insertions(+), 7 deletions(-) > >-commit 69fd4e1c932c7975476a0143c86e45d81b60d3f9 >+commit 83d2337b72dbf391c6f3b41889eea99e51679105 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-01-12 17:04:33 +0200 >+Date: 2022-06-14 18:21:57 +0300 > >- Windows: Add MSVC defines for inline and restrict keywords. >+ Tests: tuktest.h: Move a printf from a macro to a helper function. > >- src/common/sysdefs.h | 10 ++++++++++ >- 1 file changed, 10 insertions(+) >+ tests/tuktest.h | 26 ++++++++++++++++++-------- >+ 1 file changed, 18 insertions(+), 8 deletions(-) > >-commit a19d9e8575ee6647cd9154cf1f20203f1330485f >+commit f9e8176ea7d520797a2db2d49a5a632c285674a8 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-01-12 16:44:52 +0200 >+Date: 2022-06-14 17:20:49 +0300 > >- liblzma: Avoid C99 compound literal arrays. >+ Tests: Add test file good-1-empty-bcj-lzma2.xz. > >- MSVC 2013 doesn't like them. Maybe they aren't so good >- for readability either since many aren't used to them. >+ This is from test_bcj_exact_size.c. >+ It's good to have it as a standalone file. > >- src/liblzma/lzma/lzma_encoder_presets.c | 8 +++++--- >- 1 file changed, 5 insertions(+), 3 deletions(-) >+ tests/files/README | 5 +++++ >+ tests/files/good-1-empty-bcj-lzma2.xz | Bin 0 -> 52 bytes >+ 2 files changed, 5 insertions(+) > >-commit e28528f1c867b2ed4ac91195ad08efb9bb8a6263 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-01-12 12:50:30 +0200 >+commit aa75c5563a760aea3aa23d997d519e702e82726b >+Author: Jia Tan <jiat0218@gmail.com> >+Date: 2022-06-10 21:35:18 +0800 > >- liblzma: Remove a useless C99ism from sha256.c. >+ Tests: Created tests for hardware functions. > >- Unsurprisingly it makes no difference in compiled output. >+ Created tests for all API functions exported in >+ src/liblzma/api/lzma/hardware.h. The tests are fairly trivial >+ but are helpful because they will inform users if their machines >+ cannot support these functions. They also improve the code >+ coverage metrics. > >- src/liblzma/check/sha256.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ .gitignore | 1 + >+ tests/Makefile.am | 2 ++ >+ tests/test_hardware.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ >+ 3 files changed, 48 insertions(+) > >-commit 5ad1effc45adfb7dabc9a98e79736077e6b7e2d5 >+commit 5c8ffdca20813939818843476fb212dfae8838a3 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-01-12 12:17:08 +0200 >+Date: 2022-06-02 21:01:45 +0300 > >- xz: Fix use of wrong variable. >+ Tests: Convert test_check to tuktest. > >- Since the only call to suffix_set() uses optarg >- as the argument, fixing this bug doesn't change >- the behavior of the program. >+ Thanks to Jia Tan for help with all the tests. > >- src/xz/suffix.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ tests/test_check.c | 67 +++++++++++++++++++++++++++--------------------------- >+ 1 file changed, 33 insertions(+), 34 deletions(-) > >-commit 3e62c68d75b5a3fdd46dbb34bb335d73289860d5 >+commit faf5ff8899d539b4dcd2a7e5280cb820a4746c86 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2014-01-12 12:11:36 +0200 >+Date: 2022-06-02 20:31:03 +0300 > >- Fix typos in comments. >+ Tests: Convert test_block_header to tuktest. > >- src/common/mythread.h | 2 +- >- src/liblzma/check/crc32_fast.c | 2 +- >- 2 files changed, 2 insertions(+), 2 deletions(-) >+ tests/test_block_header.c | 89 +++++++++++++++++++++++++++-------------------- >+ 1 file changed, 52 insertions(+), 37 deletions(-) > >-commit e90ea601fb72867ec04adf456cbe4bf9520fd412 >+commit 754d39fbebee3782258d42f154a223d3c5770ec7 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-11-26 18:20:16 +0200 >+Date: 2022-06-02 20:28:23 +0300 > >- Update THANKS. >+ Tests: Convert test_bcj_exact_size to tuktest. >+ >+ The compress() and decompress() functions were merged because >+ the later depends on the former so they need to be a single >+ test case. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ tests/test_bcj_exact_size.c | 75 +++++++++++++++++++++++++-------------------- >+ 1 file changed, 41 insertions(+), 34 deletions(-) > >-commit b22e94d8d15764416354e04729382a7371ae2c30 >+commit 96da21470f9570cd08286906a050a7c22631775b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-11-26 18:20:09 +0200 >+Date: 2022-06-02 20:27:00 +0300 > >- liblzma: Document the need for block->check for lzma_block_header_decode(). >+ Tests: Include tuktest.h in tests.h. > >- Thanks to Tomer Chachamu. >+ This breaks -Werror because none of the tests so far use >+ tuktest.h and thus there are warnings about unused variables >+ and functions. > >- src/liblzma/api/lzma/block.h | 3 +++ >- 1 file changed, 3 insertions(+) >+ tests/tests.h | 47 +++++++++++++++++++++++------------------------ >+ 1 file changed, 23 insertions(+), 24 deletions(-) > >-commit d1cd8b1cb824b72421d1ee370e628024d2fcbec4 >+commit df71ba1c991f60c3269aaadd398247e632714626 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-11-12 16:38:57 +0200 >+Date: 2022-06-02 20:25:21 +0300 > >- xz: Update the man page about --block-size and --block-list. >+ Tests: Add tuktest.h mini-test-framework. > >- src/xz/xz.1 | 24 +++++++++++++++--------- >- 1 file changed, 15 insertions(+), 9 deletions(-) >+ tests/Makefile.am | 1 + >+ tests/tuktest.h | 752 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 753 insertions(+) > >-commit 76be7c612e6bcc38724488ccc3b8bcb1cfec9f0a >+commit 4773608554d1b684a05ff9c1d879cf5c42266d33 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-11-12 16:30:53 +0200 >+Date: 2022-05-23 21:31:36 +0300 > >- Update THANKS. >+ Build: Enable Automake's parallel test harness. >+ >+ It has been the default for quite some time already and >+ the old serial harness isn't discouraged. The downside is >+ that with parallel tests one cannot print progress info or >+ other diagnostics to the terminal; all output from the tests >+ will be in the log files only. But now that the compression >+ tests are separated the parallel tests will speed things up. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ configure.ac | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit dd750acbe2259d75444ef0f8da2d4bacc90d7afc >+commit 9a6dd6d46f7f256a5573e5d874c1052033ed7b05 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-11-12 16:29:48 +0200 >+Date: 2022-05-23 21:17:47 +0300 > >- xz: Make --block-list and --block-size work together in single-threaded. >+ Tests: Split test_compress.sh into separate test unit for each file. > >- 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. >+ test_compress.sh now takes one command line argument: >+ a filename to be tested. If it begins with "compress_generated_" >+ the file will be created with create_compress_files. > >- Thanks to James M Leddy for the original patch. >+ This will allow parallel execution of the slow tests. > >- src/xz/coder.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++++---------- >- 1 file changed, 75 insertions(+), 15 deletions(-) >+ tests/Makefile.am | 11 +++- >+ tests/test_compress.sh | 91 +++++++++++++++++++--------------- >+ tests/test_compress_generated_abc | 3 ++ >+ tests/test_compress_generated_random | 3 ++ >+ tests/test_compress_generated_text | 3 ++ >+ tests/test_compress_prepared_bcj_sparc | 3 ++ >+ tests/test_compress_prepared_bcj_x86 | 3 ++ >+ 7 files changed, 77 insertions(+), 40 deletions(-) > >-commit ae222fe9805d0161d022d75ba8485dab8bf6d7d5 >+commit c7758ac9c734707514dd34f254173ebac5eea7f8 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-10-26 13:26:14 +0300 >+Date: 2022-05-23 20:32:49 +0300 > >- Bump the version number to 5.1.3alpha. >+ Test: Make create_compress_files.c a little more flexible. >+ >+ If a command line argument is given, then only the test file >+ of that type is created. It's quite dumb in sense that unknown >+ names don't give an error but it's good enough here. >+ >+ Also use EXIT_FAILURE instead of 1 as exit status for errors. > >- src/liblzma/api/lzma/version.h | 2 +- >- src/liblzma/liblzma.map | 2 +- >- 2 files changed, 2 insertions(+), 2 deletions(-) >+ tests/create_compress_files.c | 25 +++++++++++++++---------- >+ 1 file changed, 15 insertions(+), 10 deletions(-) > >-commit 2193837a6a597cd3bf4e9ddf49421a5697d8e155 >+commit 4a8e4a7b0ad4b03c0ac6862716c3457452cdaf8c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-10-26 13:25:02 +0300 >+Date: 2022-05-23 20:17:42 +0300 > >- Update NEWS for 5.1.3alpha. >+ Tests: Remove unneeded commented lines from test_compress.sh. > >- NEWS | 35 +++++++++++++++++++++++++++++++++++ >- 1 file changed, 35 insertions(+) >+ tests/test_compress.sh | 13 ------------- >+ 1 file changed, 13 deletions(-) > >-commit ed48e75e2763876173aef8902da407a8eb28854b >+commit 2ee50d150ee009f36135540b459e6ff328549725 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-10-26 12:47:04 +0300 >+Date: 2022-05-23 20:16:00 +0300 > >- Update TODO. >+ Tests: Remove progress indicator from test_compress.sh. >+ >+ It will be useless with Automake's parallel tests. > >- TODO | 4 ---- >- 1 file changed, 4 deletions(-) >+ tests/test_compress.sh | 9 --------- >+ 1 file changed, 9 deletions(-) > >-commit 841da0352d79a56a44796a4c39163429c9f039a3 >+commit 2ce4f36f179a81d0c6e182a409f363df759d1ad0 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-10-25 22:41:28 +0300 >+Date: 2022-05-23 19:37:18 +0300 > >- xz: Document behavior of --block-list with threads. >+ liblzma: Silence a warning. > >- This needs to be updated before 5.2.0. >+ The actual initialization is done via mythread_sync and seems >+ that GCC doesn't necessarily see that it gets initialized there. > >- src/xz/xz.1 | 24 +++++++++++++++++++++--- >- 1 file changed, 21 insertions(+), 3 deletions(-) >+ src/liblzma/common/stream_decoder_mt.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 56feb8665b78c1032aabd53c619c62af51defe64 >+commit 5d8f3764ef43c35910e6d7003c0900a961ef6544 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-10-22 20:03:12 +0300 >+Date: 2022-04-14 20:53:16 +0300 > >- xz: Document --flush-timeout=TIMEOUT on the man page. >+ xz: Fix build with --disable-threads. > >- src/xz/xz.1 | 37 ++++++++++++++++++++++++++++++++++++- >- 1 file changed, 36 insertions(+), 1 deletion(-) >+ src/xz/hardware.c | 4 ++++ >+ 1 file changed, 4 insertions(+) > >-commit ba413da1d5bb3324287cf3174922acd921165971 >+commit 1d592897278b172d8549aa29c3a1f3a4f432a9b9 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-10-22 19:51:55 +0300 >+Date: 2022-04-14 14:50:17 +0300 > >- xz: Take advantage of LZMA_FULL_BARRIER with --block-list. >+ xz: Change the cap of the default -T0 memlimit for 32-bit xz. > >- 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 SIZE_MAX / 3 was 1365 MiB. 1400 MiB gives little more room >+ and it looks like a round (artificial) number in --info-memory >+ once --info-memory is made to display it. > >- The flush timer was reset after LZMA_FULL_FLUSH but since >- LZMA_FULL_BARRIER doesn't flush, resetting the timer is >- no longer done. >+ Also, using #if avoids useless code on 64-bit builds. > >- src/xz/coder.c | 32 +++++++++++++++----------------- >- 1 file changed, 15 insertions(+), 17 deletions(-) >+ src/xz/hardware.c | 4 +++- >+ 1 file changed, 3 insertions(+), 1 deletion(-) > >-commit 0cd45fc2bc5537de287a0bc005e2d67467a92148 >+commit c77fe55ddb7752ed0fec46967c5ec9a72632ea0c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-10-02 20:05:23 +0300 >+Date: 2022-04-14 14:20:46 +0300 > >- liblzma: Support LZMA_FULL_FLUSH and _BARRIER in threaded encoder. >+ xz: Add a default soft memory usage limit for --threads=0. > >- 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. >+ This is a soft limit in sense that it only affects the number of >+ threads. It never makes xz fail and it never makes xz change >+ settings that would affect the compressed output. >+ >+ The idea is to make -T0 have more reasonable behavior when >+ the system has very many cores or when a memory-hungry >+ compression options are used. This also helps with 32-bit xz, >+ preventing it from running out of address space. >+ >+ The downside of this commit is that now the number of threads >+ might become too low compared to what the user expected. I >+ hope this to be an acceptable compromise as the old behavior >+ has been a source of well-argued complaints for a long time. > >- src/liblzma/common/stream_encoder_mt.c | 55 ++++++++++++++++++++++++---------- >- 1 file changed, 39 insertions(+), 16 deletions(-) >+ src/xz/coder.c | 28 ++++++++++++++++++++++++++-- >+ src/xz/hardware.c | 38 +++++++++++++++++++++++++++++--------- >+ src/xz/hardware.h | 27 +++++++++++++++++++++++++++ >+ 3 files changed, 82 insertions(+), 11 deletions(-) > >-commit 97bb38712f414fabecca908af2e38a12570293fd >+commit 0adc13bfe32c14f3e4c6ce9f2d4fdf4112ab53f4 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-10-02 12:55:11 +0300 >+Date: 2022-04-14 12:59:09 +0300 > >- liblzma: Add LZMA_FULL_BARRIER support to single-threaded encoder. >+ xz: Make -T0 use multithreaded mode on single-core systems. > >- In the single-threaded encoder LZMA_FULL_BARRIER is simply >- an alias for LZMA_FULL_FLUSH. >+ The main problem withi the old behavior is that the compressed >+ output is different on single-core systems vs. multicore systems. >+ This commit fixes it by making -T0 one thread in multithreaded mode >+ on single-core systems. >+ >+ The downside of this is that it uses more memory. However, if >+ --memlimit-compress is used, xz can (thanks to the previous commit) >+ drop to the single-threaded mode still. > >- 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(-) >+ src/xz/coder.c | 18 +++++++++--------- >+ src/xz/hardware.c | 14 ++++++++++++++ >+ src/xz/hardware.h | 4 ++++ >+ 3 files changed, 27 insertions(+), 9 deletions(-) > >-commit fef0c6b410c08e581c9178700a4e7599f0895ff9 >+commit 898faa97287a756231c663a3ed5165672b417207 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-09-17 11:57:51 +0300 >+Date: 2022-04-14 12:38:00 +0300 > >- liblzma: Add block_buffer_encoder.h into Makefile.inc. >+ xz: Changes to --memlimit-compress and --no-adjust. > >- This should have been in b465da5988dd59ad98fda10c2e4ea13d0b9c73bc. >+ In single-threaded mode, --memlimit-compress can make xz scale down >+ the LZMA2 dictionary size to meet the memory usage limit. This >+ obviously affects the compressed output. However, if xz was in >+ threaded mode, --memlimit-compress could make xz reduce the number >+ of threads but it wouldn't make xz switch from multithreaded mode >+ to single-threaded mode or scale down the LZMA2 dictionary size. >+ This seemed illogical and there was even a "FIXME?" about it. >+ >+ Now --memlimit-compress can make xz switch to single-threaded >+ mode if one thread in multithreaded mode uses too much memory. >+ If memory usage is still too high, then the LZMA2 dictionary >+ size can be scaled down too. >+ >+ The option --no-adjust was also changed so that it no longer >+ prevents xz from scaling down the number of threads as that >+ doesn't affect compressed output (only performance). After >+ this commit --no-adjust only prevents adjustments that affect >+ compressed output, that is, with --no-adjust xz won't switch >+ from multithreaded mode to single-threaded mode and won't >+ scale down the LZMA2 dictionary size. >+ >+ The man page wasn't updated yet. > >- src/liblzma/common/Makefile.inc | 1 + >- 1 file changed, 1 insertion(+) >+ src/xz/coder.c | 63 +++++++++++++++++++++++++++++++++++++++------------------- >+ 1 file changed, 43 insertions(+), 20 deletions(-) > >-commit 8083e03291b6d21c0f538163e187b4e8cd5594e4 >+commit cad299008cf73ec566f0662a9cf2b94f86a99659 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-09-17 11:55:38 +0300 >+Date: 2022-04-11 22:20:49 +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 <lasse.collin@tukaani.org> >-Date: 2013-09-17 11:52:28 +0300 >- >- Add native threading support on Windows. >+ xz: Add --memlimit-mt-decompress along with a default limit value. > >- Now liblzma only uses "mythread" functions and types >- which are defined in mythread.h matching the desired >- threading method. >+ --memlimit-mt-decompress allows specifying the limit for >+ multithreaded decompression. This matches memlimit_threading in >+ liblzma. This limit can only affect the number of threads being >+ used; it will never prevent xz from decompressing a file. The >+ old --memlimit-decompress option is still used at the same time. > >- 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. >+ If the value of --memlimit-decompress (the default value or >+ one specified by the user) is less than the value of >+ --memlimit-mt-decompress , then --memlimit-mt-decompress is >+ reduced to match --memlimit-decompress. >+ >+ Man page wasn't updated yet. > >- 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(-) >+ src/xz/args.c | 24 +++++++++++++++------- >+ src/xz/coder.c | 34 ++++++++++--------------------- >+ src/xz/hardware.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++----- >+ src/xz/hardware.h | 17 ++++++++++------ >+ src/xz/message.c | 4 +++- >+ 5 files changed, 97 insertions(+), 42 deletions(-) > >-commit ae0ab74a88d5b9b15845f1d9a24ade4349a54f9f >+commit fe87b4cd5364f5bbb6a75a0299f1500c852d7c9a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-09-11 14:40:35 +0300 >+Date: 2022-04-06 23:11:59 +0300 > >- Build: Remove a comment about Automake 1.10 from configure.ac. >+ liblzma: Threaded decoder: Improve setting of pending_error. > >- The previous commit supports silent rules and that requires >- Automake 1.11. >+ It doesn't need to be done conditionally. The comments try >+ to explain it. > >- configure.ac | 2 -- >- 1 file changed, 2 deletions(-) >+ src/liblzma/common/stream_decoder_mt.c | 51 +++++++++++++++++++++++----------- >+ 1 file changed, 35 insertions(+), 16 deletions(-) > >-commit 72975df6c8c59aaf849138ab3606e8fb6970596a >+commit 90621da7f6e1bfd6d91d60415eae04b2bca274c2 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-09-09 20:37:03 +0300 >+Date: 2022-04-06 12:39:49 +0300 > >- Build: Create liblzma.pc in a src/liblzma/Makefile.am. >+ liblzma: Add a new flag LZMA_FAIL_FAST for threaded decoder. > >- 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. >+ In most cases if the input file is corrupt the application won't >+ care about the uncompressed content at all. With this new flag >+ the threaded decoder will return an error as soon as any thread >+ has detected an error; it won't wait to copy out the data before >+ the location of the error. > >- 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. >+ I don't plan to use this in xz to keep the behavior consistent >+ between single-threaded and multi-threaded modes. > >- configure.ac | 1 - >- src/liblzma/Makefile.am | 20 ++++++++++++++++++++ >- 2 files changed, 20 insertions(+), 1 deletion(-) >+ src/liblzma/api/lzma/container.h | 25 ++++++++++++++++- >+ src/liblzma/common/common.h | 7 +++-- >+ src/liblzma/common/stream_decoder_mt.c | 50 +++++++++++++++++++--------------- >+ 3 files changed, 56 insertions(+), 26 deletions(-) > >-commit 1c2b6e7e8382ed390f53e140f160488bb2205ecc >+commit 64b6d496dc815a176d8307f418f6834a26783484 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-08-04 15:24:09 +0300 >+Date: 2022-04-05 12:24:57 +0300 > >- Fix the previous commit which broke the build. >+ liblzma: Threaded decoder: Always wait for output if LZMA_FINISH is used. > >- Apparently I didn't even compile-test the previous commit. >+ This makes the behavior consistent with the single-threaded >+ decoder when handling truncated .xz files. > >- Thanks to Christian Hesse. >+ Thanks to Jia Tan for finding this issue. > >- src/common/tuklib_cpucores.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ src/liblzma/common/stream_decoder_mt.c | 26 ++++++++++++++++++++++++-- >+ 1 file changed, 24 insertions(+), 2 deletions(-) > >-commit 124eb69c7857f618b4807588c51bc9ba21bf8691 >+commit e671bc8828b9c0c5406c3a22c541301d0eb54518 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-08-03 13:52:58 +0300 >+Date: 2022-04-02 21:49:59 +0300 > >- Windows: Add Windows support to tuklib_cpucores(). >+ liblzma: Threaded decoder: Support zpipe.c-style decoding loop. > >- It is used for Cygwin too. I'm not sure if that is >- a good or bad idea. >+ This makes it possible to call lzma_code() in a loop that only >+ reads new input when lzma_code() didn't fill the output buffer >+ completely. That isn't the calling style suggested by the >+ liblzma example program 02_decompress.c so perhaps the usefulness >+ of this feature is limited. > >- Thanks to Vincent Torri. >+ Also, it is possible to write such a loop so that it works >+ with the single-threaded decoder but not with the threaded >+ decoder even after this commit, or so that it works only if >+ lzma_mt.timeout = 0. >+ >+ The zlib tutorial <https://zlib.net/zlib_how.html> is a well-known >+ example of a loop where more input is read only when output isn't >+ full. Porting this as is to liblzma would work with the >+ single-threaded decoder (if LZMA_CONCATENATED isn't used) but it >+ wouldn't work with threaded decoder even after this commit because >+ the loop assumes that no more output is possible when it cannot >+ read more input ("if (strm.avail_in == 0) break;"). This cannot >+ be fixed at liblzma side; the loop has to be modified at least >+ a little. >+ >+ I'm adding this in any case because the actual code is simple >+ and short and should have no harmful side-effects in other >+ situations. > >- m4/tuklib_cpucores.m4 | 19 +++++++++++++++++-- >- src/common/tuklib_cpucores.c | 13 ++++++++++++- >- 2 files changed, 29 insertions(+), 3 deletions(-) >+ src/liblzma/common/stream_decoder_mt.c | 77 +++++++++++++++++++++++++++++----- >+ 1 file changed, 67 insertions(+), 10 deletions(-) > >-commit eada8a875ce3fd521cb42e4ace2624d3d49c5f35 >-Author: Anders F Bjorklund <afb@users.sourceforge.net> >-Date: 2013-08-02 15:59:46 +0200 >+commit 2ba8173e27be4793edb46497e499ac2ae753a316 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-03-31 00:05:07 +0300 > >- macosx: separate liblzma package >+ Update THANKS. > >- macosx/build.sh | 23 +++++++++++++++-------- >- 1 file changed, 15 insertions(+), 8 deletions(-) >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) > >-commit be0100d01ca6a75899d051bee00acf17e6dc0c15 >-Author: Anders F Bjorklund <afb@users.sourceforge.net> >-Date: 2013-08-02 15:58:44 +0200 >+commit 69d1b3fc29677af8ade8dc15dba83f0589cb63d6 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-03-29 19:19:12 +0300 > >- macosx: set minimum to leopard >+ 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 \<newline> 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. > >- macosx/build.sh | 13 ++++++++----- >- 1 file changed, 8 insertions(+), 5 deletions(-) >+ src/scripts/xzgrep.in | 20 ++++++++++++-------- >+ 1 file changed, 12 insertions(+), 8 deletions(-) > >-commit 416729e2d743f4b2fe9fd438eedeb98adce033c3 >-Author: Anders F Bjorklund <afb@users.sourceforge.net> >-Date: 2011-08-07 13:13:30 +0200 >+commit bd93b776c1bd15e90661033c918cdeb354dbcc38 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-03-26 01:02:44 +0200 > >- move configurables into variables >+ liblzma: Fix a deadlock in threaded decoder. >+ >+ If a worker thread has consumed all input so far and it's >+ waiting on thr->cond and then the main thread enables >+ partial update for that thread, the code used to deadlock. >+ This commit allows one dummy decoding pass to occur in this >+ situation which then also does the partial update. >+ >+ As part of the fix, this moves thr->progress_* updates to >+ avoid the second thr->mutex locking. >+ >+ Thanks to Jia Tan for finding, debugging, and reporting the bug. > >- macosx/build.sh | 25 ++++++++++++++++++------- >- 1 file changed, 18 insertions(+), 7 deletions(-) >+ src/liblzma/common/stream_decoder_mt.c | 71 +++++++++++++++++++++++++--------- >+ 1 file changed, 52 insertions(+), 19 deletions(-) > >-commit 16581080e5f29f9a4e49efece21c5bf572323acc >+commit e0394e94230f208682ac1e1f4c41f22f9ad79916 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-07-15 14:08:41 +0300 >+Date: 2022-03-23 16:34:00 +0200 > > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 3e2b198ba37b624efd9c7caee2a435dc986b46c6 >+commit 487c77d48760564b1949c5067630b675b87be4de > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-07-15 14:08:02 +0300 >+Date: 2022-03-23 16:28:55 +0200 > >- Build: Fix the detection of missing CRC32. >+ liblzma: Threaded decoder: Don't stop threads on LZMA_TIMED_OUT. > >- Thanks to Vincent Torri. >+ LZMA_TIMED_OUT is not an error and thus stopping threads on >+ LZMA_TIMED_OUT breaks the decoder badly. >+ >+ Thanks to Jia Tan for finding the bug and for the patch. > >- configure.ac | 2 +- >+ src/liblzma/common/stream_decoder_mt.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit dee6ad3d5915422bc30a6821efeacaeb8ca8ef00 >+commit 6c6da57ae2aa962aabde6892442227063d87e88c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-07-04 14:18:46 +0300 >+Date: 2022-03-07 00:36:16 +0200 > >- xz: Add preliminary support for --flush-timeout=TIMEOUT. >+ xz: Add initial support for threaded decompression. > >- 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. >+ If threading support is enabled at build time, this will >+ use lzma_stream_decoder_mt() even for single-threaded mode. >+ With memlimit_threading=0 the behavior should be identical. > >- 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. >+ This needs some work like adding --memlimit-threading=LIMIT. > >- If TIMEOUT is 0, the feature is disabled. This is the default. >+ The original patch from Sebastian Andrzej Siewior included >+ a method to get currently available RAM on Linux. It might >+ be one way to go but as it is Linux-only, the available-RAM >+ approach needs work for portability or using a fallback method >+ on other OSes. > >- 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 man page wasn't updated yet. >+ >+ src/xz/coder.c | 36 +++++++++++++++++++++++++++++++++++- >+ 1 file changed, 35 insertions(+), 1 deletion(-) >+ >+commit 4cce3e27f529af33e0e7749a8cbcec59954946b5 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-03-06 23:36:20 +0200 >+ >+ liblzma: Add threaded .xz decompressor. > >- The --long-help or man page were not updated yet. >- The details of this feature may change. >+ I realize that this is about a decade late. >+ >+ Big thanks to Sebastian Andrzej Siewior for the original patch. >+ I made a bunch of smaller changes but after a while quite a few >+ things got rewritten. So any bugs in the commit were created by me. > >- src/xz/args.c | 7 +++++++ >- src/xz/coder.c | 46 +++++++++++++++++++++++++++++++++++----------- >- src/xz/file_io.c | 46 ++++++++++++++++++++++++++++++++++++---------- >- 3 files changed, 78 insertions(+), 21 deletions(-) >+ src/liblzma/api/lzma/container.h | 90 +- >+ src/liblzma/common/Makefile.inc | 5 + >+ src/liblzma/common/common.h | 4 + >+ src/liblzma/common/stream_decoder_mt.c | 1814 ++++++++++++++++++++++++++++++++ >+ src/liblzma/liblzma.map | 1 + >+ 5 files changed, 1907 insertions(+), 7 deletions(-) > >-commit fa381acaf9a29a8114e1c0a97de99bab9adb014e >+commit 717631b9788dc9c100ee0c87d3c14a2782638ff4 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-07-04 13:41:03 +0300 >+Date: 2022-03-06 16:54:23 +0200 > >- xz: Don't set src_eof=true after an I/O error because it's useless. >+ 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/xz/file_io.c | 3 --- >+ src/liblzma/api/lzma/block.h | 3 --- > 1 file changed, 3 deletions(-) > >-commit ea00545beace5b950f709ec21e46878e0f448678 >+commit 1a4bb97a00936535e30ac61945aeee38882b5d1a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-07-04 13:25:11 +0300 >+Date: 2022-03-06 16:41:19 +0200 > >- xz: Fix the test when to read more input. >+ liblzma: Add new output queue (lzma_outq) features. > >- 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. >+ Add lzma_outq_clear_cache2() which may leave one buffer allocated >+ in the cache. >+ >+ Add lzma_outq_outbuf_memusage() to get the memory needed for >+ a single lzma_outbuf. This is now used internally in outqueue.c too. >+ >+ Track both the total amount of memory allocated and the amount of >+ memory that is in active use (not in cache). >+ >+ In lzma_outbuf, allow storing the current input position that >+ matches the current output position. This way the main thread >+ can notice when no more output is possible without first providing >+ more input. >+ >+ Allow specifying return code for lzma_outq_read() in a finished >+ lzma_outbuf. > >- src/xz/coder.c | 6 +++--- >- 1 file changed, 3 insertions(+), 3 deletions(-) >+ src/liblzma/common/outqueue.c | 43 +++++++++++++++++++++++++++++++++++------- >+ src/liblzma/common/outqueue.h | 44 ++++++++++++++++++++++++++++++++++++++++++- >+ 2 files changed, 79 insertions(+), 8 deletions(-) > >-commit 736903c64bef394c06685d79908e397bcb08b88f >+commit ddbc6f58c2de388eed24cd7ea91b523d397da5f4 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-07-04 12:51:57 +0300 >+Date: 2022-03-06 15:18:58 +0200 > >- xz: Move some of the timing code into mytime.[hc]. >+ 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 20e7a33e2d59c6a814447d3991f21e2702174b20 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-02-22 03:42:57 +0200 >+ >+ liblzma: Minor addition to lzma_vli_size() API doc. > >- This switches units from microseconds to milliseconds. >+ Thanks to Jia Tan. >+ >+ src/liblzma/api/lzma/vli.h | 2 ++ >+ 1 file changed, 2 insertions(+) >+ >+commit 4f78f5fcf63592f2d77e921cfe0d5de300867374 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2022-02-22 02:04:18 +0200 >+ >+ liblzma: Check the return value of lzma_index_append() in threaded encoder. > >- New clock_gettime(CLOCK_MONOTONIC) will be used if available. >- There is still a fallback to gettimeofday(). >+ 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/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(-) >+ src/liblzma/common/stream_encoder_mt.c | 7 +++++-- >+ 1 file changed, 5 insertions(+), 2 deletions(-) > >-commit 24edf8d807e24ffaa1e793114d94cca3b970027d >+commit 5313ad66b40aab822ddca3e9905254cb99a4080d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-07-01 14:35:03 +0300 >+Date: 2022-02-22 01:37:39 +0200 > > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit c0627b3fceacfa1ed162f5f55235360ea26f569a >+commit 865e0a3689a25a7ee8eecae1a34c1775e3aa676e >+Author: Ed Maste <emaste@FreeBSD.org> >+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 1c9a5786d206b4abc8e427326651c8174baea753 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-07-01 14:34:11 +0300 >+Date: 2022-02-20 20:36:27 +0200 > >- xz: Silence a warning seen with _FORTIFY_SOURCE=2. >+ liblzma: Make Block decoder catch certain types of errors better. > >- Thanks to Christian Hesse. >+ 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/xz/file_io.c | 8 +++++++- >- 1 file changed, 7 insertions(+), 1 deletion(-) >+ src/liblzma/common/block_decoder.c | 79 ++++++++++++++++++++++++++------------ >+ 1 file changed, 54 insertions(+), 25 deletions(-) > >-commit 1936718bb38ee394bd89836fdd4eabc0beb02443 >+commit 555de11873eb00c9b94a8be70645db502e5a9dbd > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-30 19:40:11 +0300 >+Date: 2022-02-20 19:38:55 +0200 > >- Update NEWS for 5.0.5. >+ Tests: Add bad-1-lzma2-11.xz. > >- NEWS | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ >- 1 file changed, 52 insertions(+) >+ tests/files/README | 5 +++++ >+ tests/files/bad-1-lzma2-11.xz | Bin 0 -> 64 bytes >+ 2 files changed, 5 insertions(+) > >-commit a37ae8b5eb6093a530198f109c6f7a538c80ecf0 >+commit f0da507f22e7f4e3edb75b45b74d344244ca03fb > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-30 18:02:27 +0300 >+Date: 2022-02-18 18:51:10 +0200 > >- Man pages: Use similar syntax for synopsis as in xz. >+ Translations: Fix po4a failure with the French man page translations. > >- 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. >+ Thanks to Mario Blättermann for the patch. > >- src/lzmainfo/lzmainfo.1 | 4 ++-- >- src/scripts/xzmore.1 | 6 +++--- >- src/xzdec/xzdec.1 | 10 +++++----- >- 3 files changed, 10 insertions(+), 10 deletions(-) >+ po4a/fr_FR.po | 6 ++++-- >+ 1 file changed, 4 insertions(+), 2 deletions(-) > >-commit cdba9ddd870ae72fd6219a125662c20ec997f86c >+commit f7711d228c3c32395460c82498c60a9f730d0239 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-29 15:59:13 +0300 >+Date: 2022-02-07 01:14:37 +0200 > >- xz: Use non-blocking I/O for the output file. >+ Translations: Add French translation of man pages. > >- Now both reading and writing should be without >- race conditions with signals. >+ This matches xz-utils 5.2.5-2 in Debian. > >- 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. >+ 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! > >- src/xz/file_io.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++-------- >- 1 file changed, 49 insertions(+), 8 deletions(-) >+ po4a/fr_FR.po | 3541 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ po4a/po4a.conf | 2 +- >+ 2 files changed, 3542 insertions(+), 1 deletion(-) > >-commit e61a5c95da3fe31281d959e5e842885a8ba2b5bd >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-28 23:56:17 +0300 >+commit 6468f7e41a8e9c611e4ba8d34e2175c5dacdbeb4 >+Author: jiat75 <jiat0218@gmail.com> >+Date: 2022-01-28 20:47:55 +0800 > >- xz: Fix return value type in io_write_buf(). >+ liblzma: Add NULL checks to LZMA and LZMA2 properties encoders. > >- It didn't affect the behavior of the code since -1 >- becomes true anyway. >+ 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/xz/file_io.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ src/liblzma/lzma/lzma2_encoder.c | 3 +++ >+ src/liblzma/lzma/lzma_encoder.c | 3 +++ >+ 2 files changed, 6 insertions(+) > >-commit 9dc319eabb34a826f4945f91c71620f14a60e9e2 >+commit 2523c30705f49eabd27b854aa656ae87cc224808 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-28 23:48:05 +0300 >+Date: 2022-02-06 23:19:32 +0200 > >- xz: Use the self-pipe trick to avoid a race condition with signals. >+ liblzma: Fix uint64_t vs. size_t confusion. > >- 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. >+ This broke 32-bit builds due to a pointer type mismatch. > >- 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. >+ This bug was introduced with the output-size-limited encoding >+ in 625f4c7c99b2fcc4db9e7ab2deb4884790e2e17c. >+ >+ Thanks to huangqinjin for the bug report. > >- src/xz/file_io.c | 56 ++++++++++++++++++++++++++++++++++++++++++++------------ >- src/xz/file_io.h | 8 ++++++++ >- src/xz/signals.c | 5 +++++ >- 3 files changed, 57 insertions(+), 12 deletions(-) >+ src/liblzma/rangecoder/range_encoder.h | 11 +++++++---- >+ 1 file changed, 7 insertions(+), 4 deletions(-) > >-commit 3541bc79d0cfabc0ad155c99bfdad1289f17fec3 >+commit 2bd36c91d03e03b31a4f12fd0afc100ae32d66e2 >+Author: huangqinjin <huangqinjin@gmail.com> >+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 2024fbf2794885277d05378d40b2b8015a7c3b40 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-28 22:51:02 +0300 >+Date: 2021-11-13 21:04:05 +0200 > >- xz: Use non-blocking I/O for the input file. >+ xzgrep: Update man page timestamp. > >- src/xz/file_io.c | 156 +++++++++++++++++++++++++++++++++++++++---------------- >- 1 file changed, 111 insertions(+), 45 deletions(-) >+ src/scripts/xzgrep.1 | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 78673a08bed5066c81e8a8e90d20e670c28ecfd5 >+commit 400e7a239a53282cedaad927a41f3463d7f542e5 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-28 18:46:13 +0300 >+Date: 2021-11-13 18:23:24 +0200 > >- xz: Remove an outdated NetBSD-specific comment. >+ Update THANKS. >+ >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) >+ >+commit 3a512c7787b2642ca946f4adc6e9a0a5d9b0d5a0 >+Author: Ville Skyttä <ville.skytta@iki.fi> >+Date: 2021-11-13 10:11:57 +0200 >+ >+ xzgrep: use `grep -E/-F` instead of `egrep` and `fgrep` > >- Nowadays errno == EFTYPE is documented in open(2). >+ `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/xz/file_io.c | 4 ---- >- 1 file changed, 4 deletions(-) >+ src/scripts/xzgrep.1 | 8 ++++---- >+ src/scripts/xzgrep.in | 4 ++-- >+ 2 files changed, 6 insertions(+), 6 deletions(-) > >-commit a616fdad34b48b2932ef03fb87309dcc8b829527 >+commit edf525e2b1840dcaf377df472c67d8f11f8ace1b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-28 18:09:47 +0300 >+Date: 2021-10-28 23:02:11 +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). >+ Bump the version number for 5.3.2alpha. > >- src/xz/file_io.c | 8 ++++---- >- 1 file changed, 4 insertions(+), 4 deletions(-) >+ src/liblzma/api/lzma/version.h | 2 +- >+ src/liblzma/liblzma.map | 2 +- >+ 2 files changed, 2 insertions(+), 2 deletions(-) > >-commit 4a08a6e4c61c65ab763ab314100a6d7a3bb89298 >+commit ea8c948655a86290524efe59cff067e06a886709 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-28 17:36:47 +0300 >+Date: 2021-10-28 22:59:52 +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. >+ Add NEWS for 5.3.2alpha. > >- src/xz/file_io.c | 24 +++++++++++++----------- >- 1 file changed, 13 insertions(+), 11 deletions(-) >+ NEWS | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 86 insertions(+) > >-commit b790b435daa3351067f80a5973b647f8d55367a2 >+commit 52435f302f4724157ec50b4210cbe42b285c3cbc > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-28 14:55:37 +0300 >+Date: 2021-10-27 23:27:48 +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. >+ Update THANKS. > >- src/xz/file_io.c | 10 ++-------- >- 1 file changed, 2 insertions(+), 8 deletions(-) >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) > >-commit 84d2da6c9dc252f441deb7626c2522202b005d4d >+commit f2aea1d5a504b2021bf47a238390e4f12bdd518d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-26 13:30:57 +0300 >+Date: 2021-10-27 23:23:11 +0300 > >- xz: Check the value of lzma_stream_flags.version in --list. >+ xz: Change the coding style of the previous commit. > >- 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. >+ It isn't any better now but it's consistent with >+ the rest of the code base. > >- src/xz/list.c | 14 ++++++++++++++ >- 1 file changed, 14 insertions(+) >+ src/xz/file_io.c | 11 ++++++----- >+ 1 file changed, 6 insertions(+), 5 deletions(-) > >-commit 9376f5f8f762296f2173d61af9101112c36f38c0 >+commit 892b16cc282f5b4e1c49871b326f4db25c5b4d81 >+Author: Alexander Bluhm <alexander.bluhm@gmx.net> >+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 2b509c868cae3988bf21cd693fbf9021cdc85628 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-26 12:17:00 +0300 >+Date: 2021-09-17 17:31:11 +0300 > >- Build: Require Automake 1.12 and use serial-tests option. >+ liblzma: Fix liblzma.map for the lzma_microlzma_* symbols. > >- 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. >+ This should have been part of d267d109c370a40b502e73f8664b154b15e4f253. > >- At least for now, parallel tests don't improve anything >- in XZ Utils but they hide the progress output from >- test_compress.sh. >+ Thanks to Gao Xiang. > >- configure.ac | 4 +++- >- 1 file changed, 3 insertions(+), 1 deletion(-) >+ src/liblzma/liblzma.map | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit b7e200d7bd0a3c7c171c13ad37d68296d6f73374 >+commit cacb06a954b58255dfc084a0bc9708f43a0fd6d6 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-23 18:59:13 +0300 >+Date: 2021-09-09 22:21:07 +0300 > > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 46540e4c10923e363741ff5aab99e79fc0ce6ee8 >+commit 6928aac9da6ba612780b9f72ba1d6ecbe1e8b54e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-23 18:57:23 +0300 >+Date: 2021-09-09 21:41:51 +0300 > >- liblzma: Avoid a warning about a shadowed variable. >+ liblzma: Use _MSVC_LANG to detect when "noexcept" can be used with MSVC. > >- On Mac OS X wait() is declared in <sys/wait.h> that >- we include one way or other so don't use "wait" as >- a variable name. >+ 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). > >- Thanks to Christian Kujau. >+ Fixes <https://sourceforge.net/p/lzmautils/discussion/708858/thread/f6bc3b108a/>. >+ >+ Thanks to Dan Weiss. > >- src/liblzma/common/stream_encoder_mt.c | 4 ++-- >+ src/liblzma/api/lzma.h | 3 ++- >+ 1 file changed, 2 insertions(+), 1 deletion(-) >+ >+commit d267d109c370a40b502e73f8664b154b15e4f253 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2021-09-05 20:38:12 +0300 >+ >+ liblzma: Rename EROFS LZMA to MicroLZMA. >+ >+ It still exists primarily for EROFS but MicroLZMA is >+ a more generic name (that hopefully doesn't clash with >+ something that already exists). >+ >+ src/liblzma/api/lzma/container.h | 33 +++++++++++++--------- >+ src/liblzma/common/Makefile.inc | 4 +-- >+ .../{erofs_decoder.c => microlzma_decoder.c} | 32 ++++++++++----------- >+ .../{erofs_encoder.c => microlzma_encoder.c} | 30 ++++++++++---------- >+ 4 files changed, 52 insertions(+), 47 deletions(-) >+ >+commit 3247e95115acb95bc27f41e8cf4501db5b0b4309 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 ebb501ec73cecc546c67117dd01b5e33c90bfb4a >+commit 96f5a28a46fc93ac4e296808ac0f8631d05498bc > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-23 17:36:47 +0300 >+Date: 2021-06-04 18:52:48 +0300 > >- xz: Validate Uncompressed Size from Block Header in list.c. >+ xzless: Fix less(1) version detection when it contains a dot. > >- 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. >+ 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 <https://bugs.gentoo.org/489362> in 2013. > >- src/xz/list.c | 14 +++++++++++++- >- 1 file changed, 13 insertions(+), 1 deletion(-) >+ src/scripts/xzless.in | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit c09e91dd236d3cabee0fc48312b3dc8cceae41ab >+commit 5fb5212d816addbc523d0798cb482fdd0484f8fa > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-21 22:08:11 +0300 >+Date: 2021-04-11 19:58:10 +0300 > > Update THANKS. > > THANKS | 2 ++ > 1 file changed, 2 insertions(+) > >-commit eb6ca9854b8eb9fbf72497c1cf608d6b19d2d494 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-21 22:04:45 +0300 >+commit fc3d3a7296ef58bb799a73943636b8bfd95339f7 >+Author: Ivan A. Melnikov <iv@altlinux.org> >+Date: 2021-04-09 11:45:10 +0300 > >- xz: Make the man page more friendly to doclifter. >+ Reduce maximum possible memory limit on MIPS32 > >- Thanks to Eric S. Raymond. >+ 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/xz.1 | 7 ++++--- >- 1 file changed, 4 insertions(+), 3 deletions(-) >+ src/xz/hardware.c | 6 ++++++ >+ 1 file changed, 6 insertions(+) > >-commit 0c0a1947e6ad90a0a10b7a5c39f6ab99a0aa5c93 >+commit e7da44d5151e21f153925781ad29334ae0786101 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-21 21:54:59 +0300 >+Date: 2021-02-13 23:31:27 +0200 > >- xz: A couple of man page fixes. >+ CMake: Use interface library for better FindLibLZMA compatibility. > >- Now the interaction of presets and custom filter chains >- is described correctly. Earlier it contradicted itself. >+ https://www.mail-archive.com/xz-devel@tukaani.org/msg00446.html > >- Thanks to DevHC who reported these issues on IRC to me >- on 2012-12-14. >+ Thanks to Markus Rickert. > >- src/xz/xz.1 | 35 +++++++++++++++++++++++------------ >- 1 file changed, 23 insertions(+), 12 deletions(-) >+ CMakeLists.txt | 11 +++++++++-- >+ 1 file changed, 9 insertions(+), 2 deletions(-) > >-commit 2fcda89939c903106c429e109083d43d894049e0 >+commit a61dd82ada39030f41b4ffca9ea551714908bedc > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-06-21 21:50:26 +0300 >+Date: 2021-01-30 18:36:04 +0200 > >- xz: Fix interaction between preset and custom filter chains. >+ CMake: Try to improve compatibility with the FindLibLZMA module. > >- There was somewhat illogical behavior when --extreme was >- specified and mixed with custom filter chains. >+ The naming conflict with FindLibLZMA module gets worse. >+ Not avoiding it in the first place was stupid. > >- 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. >+ 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. > >- 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". >+ 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 > >- Hopefully very few cared about this in the first place, >- so pretty much no one should even notice this change. >+ add_library(LibLZMA::LibLZMA ALIAS liblzma::liblzma) > >- Thanks to Conley Moorhous. >+ 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. > >- src/xz/coder.c | 35 +++++++++++++++++++++-------------- >- 1 file changed, 21 insertions(+), 14 deletions(-) >+ CMakeLists.txt | 21 +++++++++++++-------- >+ 1 file changed, 13 insertions(+), 8 deletions(-) > >-commit 97379c5ea758da3f8b0bc444d5f7fa43753ce610 >+commit 5b7bc1b8ae766a76710ca1b99f909cf52c697f05 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-04-27 22:07:46 +0300 >+Date: 2021-01-29 21:19:43 +0200 > >- 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. >+ Update THANKS. > >- configure.ac | 1 + >+ THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 8957c58609d3987c58aa72b96c436cf565cc4917 >+commit 6c6f0db340dcb8bb424411cedba713405d55f6b8 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-04-15 19:29:09 +0300 >+Date: 2021-01-29 21:19:08 +0200 > >- xzdec: Improve the --help message. >+ liblzma: Fix unitialized variable. > >- The options are now ordered in the same order as in xz's help >- message. >+ This was introduced two weeks ago in the commit >+ 625f4c7c99b2fcc4db9e7ab2deb4884790e2e17c. > >- 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. >+ Thanks to Nathan Moinvaziri. > >- src/xzdec/xzdec.c | 10 +++++----- >- 1 file changed, 5 insertions(+), 5 deletions(-) >+ src/liblzma/lzma/lzma_encoder.c | 1 + >+ 1 file changed, 1 insertion(+) > >-commit ed886e1a92534a24401d0e99c11f1dcff3b5220a >+commit bb1d5c1fdd30550d4221ecd336e0be1206132a5c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-04-05 19:25:40 +0300 >+Date: 2021-01-24 22:32:41 +0200 > >- Update THANKS. >+ Tests: Add bad-1-lzma2-10.xz and also modify -9.xz. > >- THANKS | 2 ++ >- 1 file changed, 2 insertions(+) >+ 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 5019413a055ce29e660dbbf15e02443cb5a26c59 >-Author: Jeff Bastian <jbastian@redhat.com> >-Date: 2013-04-03 13:59:17 +0200 >+commit 6b8abc84a5469792e0355d0bfc0784d41cfdfef7 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2021-01-24 19:22:35 +0200 > >- xzgrep: make the '-h' option to be --no-filename equivalent >- >- * src/scripts/xzgrep.in: Accept the '-h' option in argument parsing. >+ liblzma: Fix a wrong comment in stream_encoder_mt.c. > >- src/scripts/xzgrep.in | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ src/liblzma/common/stream_encoder_mt.c | 10 +++++++--- >+ 1 file changed, 7 insertions(+), 3 deletions(-) > >-commit 5ea900cb5ad862bca81316729f92357c1fc040ce >+commit 939fc5ed654aac25fe0c8684b2df8dbeadb2de1e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-03-23 22:25:15 +0200 >+Date: 2021-01-24 18:51:51 +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 >+ Tests: Add bad-1-lzma2-9.xz. > >- 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(-) >+ tests/files/README | 4 ++++ >+ tests/files/bad-1-lzma2-9.xz | Bin 0 -> 72 bytes >+ 2 files changed, 4 insertions(+) > >-commit bb117fffa84604b6e3811b068c80db82bf7f7b05 >+commit fdd30032f8531ac89519b48c21d810ecf06825f6 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-03-23 21:55:13 +0200 >+Date: 2021-01-24 17:02:00 +0200 > >- liblzma: Use lzma_block_buffer_bound64() in threaded encoder. >+ 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 db465419ae26ec7fb9b9472183911ff521620c77 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2021-01-17 19:20:50 +0200 >+ >+ liblzma: In EROFS LZMA decoder, verify that comp_size matches at the end. > >- Now it uses lzma_block_uncomp_encode() if the data doesn't >- fit into the space calculated by lzma_block_buffer_bound64(). >+ When the uncompressed size is known to be exact, after decompressing >+ the stream exactly comp_size bytes of input must have been consumed. >+ This is a minor improvement to error detection. > >- src/liblzma/common/stream_encoder_mt.c | 66 +++++++++++++++++++++++++--------- >- 1 file changed, 50 insertions(+), 16 deletions(-) >+ src/liblzma/common/erofs_decoder.c | 7 ++++++- >+ 1 file changed, 6 insertions(+), 1 deletion(-) > >-commit e572e123b55b29527e54ce5f0807f115481d78b9 >+commit 774cc0118ba2496581cb2621505a04bb6598cc75 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-03-23 21:51:38 +0200 >+Date: 2021-01-17 18:53:34 +0200 > >- liblzma: Fix another deadlock in the threaded encoder. >+ liblzma: Make EROFS LZMA decoder work when exact uncomp_size isn't known. > >- 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). >+ The caller must still not specify an uncompressed size bigger >+ than the actual uncompressed size. >+ >+ As a downside, this now needs the exact compressed size. > >- src/liblzma/common/stream_encoder_mt.c | 9 ++++++--- >- 1 file changed, 6 insertions(+), 3 deletions(-) >+ src/liblzma/api/lzma/container.h | 23 ++++++++--- >+ src/liblzma/common/erofs_decoder.c | 80 ++++++++++++++++++++++++++++++++++---- >+ 2 files changed, 91 insertions(+), 12 deletions(-) > >-commit b465da5988dd59ad98fda10c2e4ea13d0b9c73bc >+commit 421b0aa352da244075db10205cf33712f91b9835 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-03-23 19:17:33 +0200 >+Date: 2021-01-14 20:57:11 +0200 > >- liblzma: Add lzma_block_uncomp_encode(). >+ liblzma: Fix missing normalization in rc_encode_dummy(). > >- 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. >+ Without this fix it could attempt to create too much output. > >- 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(-) >+ src/liblzma/rangecoder/range_encoder.h | 7 ++++++- >+ 1 file changed, 6 insertions(+), 1 deletion(-) > >-commit 9e6dabcf22ef4679f4faaae15ebd5b137ae2fad1 >+commit 601ec0311e769fc704daaaa7dac0ca840aff080e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2013-03-05 19:14:50 +0200 >+Date: 2021-01-14 20:07:01 +0200 > >- Avoid unneeded use of awk in xzless. >+ liblzma: Add EROFS LZMA encoder and decoder. > >- Use "read" instead of "awk" in xzless to get the version >- number of "less". The need for awk was introduced in >- the commit db5c1817fabf7cbb9e4087b1576eb26f0747338e. >+ Right now this is just a planned extra-compact format for use >+ in the EROFS file system in Linux. At this point it's possible >+ that the format will either change or be abandoned and removed >+ completely. > >- Thanks to Ariel P for the patch. >+ The special thing about the encoder is that it uses the >+ output-size-limited encoding added in the previous commit. >+ EROFS uses fixed-sized blocks (e.g. 4 KiB) to hold compressed >+ data so the compressors must be able to create valid streams >+ that fill the given block size. > >- src/scripts/xzless.in | 3 +-- >- 1 file changed, 1 insertion(+), 2 deletions(-) >+ src/liblzma/api/lzma/container.h | 76 +++++++++++++++++++ >+ src/liblzma/common/Makefile.inc | 2 + >+ src/liblzma/common/erofs_decoder.c | 148 +++++++++++++++++++++++++++++++++++++ >+ src/liblzma/common/erofs_encoder.c | 139 ++++++++++++++++++++++++++++++++++ >+ src/liblzma/liblzma.map | 2 + >+ 5 files changed, 367 insertions(+) > >-commit e7b424d267a34803db8d92a3515528be2ed45abd >+commit 625f4c7c99b2fcc4db9e7ab2deb4884790e2e17c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-12-14 20:13:32 +0200 >+Date: 2021-01-13 19:16:32 +0200 > >- Make the progress indicator smooth in threaded mode. >+ liblzma: Add rough support for output-size-limited encoding in LZMA1. > >- This adds lzma_get_progress() to liblzma and takes advantage >- of it in xz. >+ With this it is possible to encode LZMA1 data without EOPM so that >+ the encoder will encode as much input as it can without exceeding >+ the specified output size limit. The resulting LZMA1 stream will >+ be a normal LZMA1 stream without EOPM. The actual uncompressed size >+ will be available to the caller via the uncomp_size pointer. > >- 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. >+ One missing thing is that the LZMA layer doesn't inform the LZ layer >+ when the encoding is finished and thus the LZ may read more input >+ when it won't be used. However, this doesn't matter if encoding is >+ done with a single call (which is the planned use case for now). >+ For proper multi-call encoding this should be improved. >+ >+ This commit only adds the functionality for internal use. >+ Nothing uses it yet. > >- 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(-) >+ src/liblzma/common/common.h | 11 +++ >+ src/liblzma/lz/lz_encoder.c | 16 ++++ >+ src/liblzma/lz/lz_encoder.h | 4 + >+ src/liblzma/lzma/lzma_encoder.c | 127 +++++++++++++++++++++++--------- >+ src/liblzma/lzma/lzma_encoder_private.h | 12 +++ >+ src/liblzma/rangecoder/range_encoder.h | 111 ++++++++++++++++++++++++++++ >+ 6 files changed, 246 insertions(+), 35 deletions(-) > >-commit 2ebbb994e367f55f2561aa7c9e7451703c171f2f >+commit 9cdabbeea891e8f1e7741b076f7db6ac05ae392a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-12-14 11:01:41 +0200 >+Date: 2021-01-11 23:57:11 +0200 > >- liblzma: Fix mythread_sync for nested locking. >+ Scripts: Add zstd support to xzdiff. > >- src/common/mythread.h | 5 +++-- >- 1 file changed, 3 insertions(+), 2 deletions(-) >+ src/scripts/xzdiff.1 | 6 ++++-- >+ src/scripts/xzdiff.in | 16 +++++++++++----- >+ 2 files changed, 15 insertions(+), 7 deletions(-) > >-commit 4c7e28705f6de418d19cc77324ef301f996e01ff >+commit d9ec3add97cf4c999a7f594c6529680227b6c274 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-12-13 21:05:36 +0200 >+Date: 2021-01-11 23:41:30 +0200 > >- xz: Mention --threads in --help. >- >- Thanks to Olivier Delhomme for pointing out that this >- was still missing. >+ Update THANKS. > >- src/xz/message.c | 4 ++++ >- 1 file changed, 4 insertions(+) >+ THANKS | 2 ++ >+ 1 file changed, 2 insertions(+) > >-commit db5c1817fabf7cbb9e4087b1576eb26f0747338e >-Author: Jonathan Nieder <jrnieder@gmail.com> >-Date: 2012-11-19 00:10:10 -0800 >+commit 074259f4f3966aeac6edb205fecbc1a8d2b58bb2 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2021-01-11 23:41:16 +0200 > >- xzless: Make "less -V" parsing more robust >+ xz: Make --keep accept symlinks, hardlinks, and setuid/setgid/sticky. > >- 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: >+ 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. > >- $ xzless /tmp/test.xz; echo $? >- /usr/bin/xzless: line 49: test: 456 (GNU regular expressions): \ >- integer expression expected >- 0 >+ I think the new behavior is more logical. The only reason for >+ the old behavior was to be consistent with gzip and bzip2. > >- 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. >+ 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 73c555b3077c19dda29b6f4592ced2af876f8333 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2021-01-11 23:28:52 +0200 >+ >+ Scripts: Fix exit status of xzgrep. > >- $ less-444 -V | head -1 >- less 444 >- $ less -V | head -1 >- less 456 (no regular expressions) >+ 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. > >- So relax the pattern matched --- instead of expecting "less <number>", >- look for a line of the form "less <number>[ (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â. >+ 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. > >- The implementation uses "awk" for simplicity. Hopefully thatâs >- portable enough. >+ zstd still needs -q because otherwise it is noisy in normal >+ operation. > >- Reported-by: Jörg-Volker Peetz <jvpeetz@web.de> >- Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> >+ 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/xzless.in | 3 ++- >- 1 file changed, 2 insertions(+), 1 deletion(-) >+ src/scripts/xzgrep.in | 20 +++++++++++++------- >+ 1 file changed, 13 insertions(+), 7 deletions(-) > >-commit 65536214a31ecd33b6b03b68a351fb597d3703d6 >+commit 194029ffaf74282a81f0c299c07f73caca3232ca > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-10-03 15:54:24 +0300 >+Date: 2021-01-11 22:01:51 +0200 > >- xz: Fix the note about --rsyncable on the man page. >+ 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/xz/xz.1 | 17 +++++++++-------- >- 1 file changed, 9 insertions(+), 8 deletions(-) >+ src/scripts/xzdiff.in | 35 +++++++++++++++++++++-------------- >+ 1 file changed, 21 insertions(+), 14 deletions(-) > >-commit 3d93b6354927247a1569caf22ad27b07e97ee904 >+commit f7fa309e1f7178d04c7bedc03b73077639371e97 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-09-28 20:11:09 +0300 >+Date: 2021-01-09 21:14:36 +0200 > >- xz: Improve handling of failed realloc in xrealloc. >+ liblzma: Make lzma_outq usable for threaded decompression too. > >- Thanks to Jim Meyering. >+ Before this commit all output queue buffers were allocated as >+ a single big allocation. Now each buffer is allocated separately >+ when needed. Used buffers are cached to avoid reallocation >+ overhead but the cache will keep only one buffer size at a time. >+ This should make things work OK in the decompression where most >+ of the time the buffer sizes will be the same but with some less >+ common files the buffer sizes may vary. >+ >+ While this should work fine, it's still a bit preliminary >+ and may even get reverted if it turns out to be useless for >+ decompression. > >- src/xz/util.c | 14 ++++++++++++-- >- 1 file changed, 12 insertions(+), 2 deletions(-) >+ src/liblzma/common/outqueue.c | 268 +++++++++++++++++++++------------ >+ src/liblzma/common/outqueue.h | 138 ++++++++++++----- >+ src/liblzma/common/stream_encoder_mt.c | 52 ++++--- >+ 3 files changed, 301 insertions(+), 157 deletions(-) > >-commit ab225620664e235637833be2329935f9d290ba80 >+commit a35a69d693ce37d4ba7c1855bda7d9cfa13d1778 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-08-24 16:27:31 +0300 >+Date: 2020-12-23 17:15:49 +0200 > >- A few typo fixes to comments and the xz man page. >+ Update THANKS. >+ >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) >+ >+commit 4fd79b90c52396d70e0b1206ceb1a873a0ad2589 >+Author: H.J. Lu <hjl.tools@gmail.com> >+Date: 2020-12-23 06:49:04 -0800 >+ >+ liblzma: Enable Intel CET in x86 CRC assembly codes > >- Thanks to Jim Meyering. >+ When Intel CET is enabled, we need to include <cet.h> 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. > >- configure.ac | 2 +- >- src/liblzma/check/sha256.c | 1 - >- src/xz/xz.1 | 4 ++-- >- 3 files changed, 3 insertions(+), 4 deletions(-) >+ src/liblzma/check/crc32_x86.S | 9 +++++++++ >+ src/liblzma/check/crc64_x86.S | 9 +++++++++ >+ 2 files changed, 18 insertions(+) > >-commit f3c1ec69d910175ffd431fd82968dd35cec806ed >+commit bb3b8c6a23e25db79f862b1de325c56052e0354b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-08-13 21:40:09 +0300 >+Date: 2020-12-16 18:33:29 +0200 > >- xz: Add a warning to --help about alpha and beta versions. >+ Update THANKS. > >- src/xz/message.c | 5 +++++ >- 1 file changed, 5 insertions(+) >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) > >-commit d8eaf9d8278c23c2cf2b7ca5562d4de570d3b5db >+commit 21588ca34af98738954fc12ded1b89d7294ef646 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-08-02 17:13:30 +0300 >+Date: 2020-12-16 18:30:14 +0200 > >- Build: Bump gettext version requirement to 0.18. >+ Build: Don't build bundles on Apple OSes. > >- Otherwise too old version of m4/lib-link.m4 gets included >- when autoreconf -fi is run. >+ Thanks to Daniel Packard. > >- configure.ac | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ CMakeLists.txt | 3 +++ >+ 1 file changed, 3 insertions(+) > >-commit 96e08902b09f0f304d4ff80c6e83ef7fff883f34 >+commit d05b0c42dd8b38d8c6b8193c8af50e9bd3d16f28 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-17 18:29:08 +0300 >+Date: 2020-12-05 22:44:03 +0200 > > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 3778db1be53e61ff285c573af5ee468803008456 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-17 18:19:59 +0300 >+commit 1890351f3423627ba5c4c495402f32d7e9ed90b7 >+Author: Adam Borowski <kilobyte@angband.pl> >+Date: 2020-09-25 03:35:18 +0200 > >- liblzma: Make the use of lzma_allocator const-correct. >+ Scripts: Add zstd support to xzgrep. > >- 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. >+ Thanks to Adam Borowski. > >- 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(-) >+ src/scripts/xzgrep.1 | 9 ++++++--- >+ src/scripts/xzgrep.in | 1 + >+ 2 files changed, 7 insertions(+), 3 deletions(-) > >-commit d625c7cf824fd3b61c6da84f56179e94917ff603 >+commit 2f108abb3d82e4e2313b438dae9c0c7c7a6366f2 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-05 07:36:28 +0300 >+Date: 2020-11-17 20:51:48 +0200 > >- Tests: Remove tests/test_block.c that had gotten committed accidentally. >+ 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. > >- tests/test_block.c | 52 ---------------------------------------------------- >- 1 file changed, 52 deletions(-) >+ CMakeLists.txt | 2 +- >+ cmake/tuklib_cpucores.cmake | 4 ++-- >+ cmake/tuklib_physmem.cmake | 4 ++-- >+ 3 files changed, 5 insertions(+), 5 deletions(-) > >-commit 0b09d266cce72bc4841933b171e79551e488927c >+commit 5af726a79273fafa5de5745b117e567f21c90e49 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-05 07:33:35 +0300 >+Date: 2020-11-01 22:56:43 +0200 > >- 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. :-( >+ Update THANKS. > >- Makefile.am | 1 + >- 1 file changed, 1 insertion(+) >+ THANKS | 4 +++- >+ 1 file changed, 3 insertions(+), 1 deletion(-) > >-commit d6e0b23d4613b9f417893dd96cc168c8005ece3d >+commit 4575d9d365c756ec189899f9f743e0b3515ce72d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-05 07:28:53 +0300 >+Date: 2020-11-01 22:34:25 +0200 > >- Build: Include validate_map.sh in the distribution. >+ xz: Avoid unneeded \f escapes on the man page. > >- It's required by "make mydist". >+ 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. > >- Fix also the location of EXTRA_DIST+= so that those files >- get distributed also if symbol versioning isn't enabled. >+ Thanks to Bjarni Ingi Gislason. > >- src/liblzma/Makefile.am | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ src/xz/xz.1 | 31 ++++++++++++++++++++++--------- >+ 1 file changed, 22 insertions(+), 9 deletions(-) > >-commit 19de545d86097c3954d69ab5d12820387f6a09bc >+commit 620b32f5339f86710cb4435e01ecdac972ccac73 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-05 07:24:45 +0300 >+Date: 2020-11-01 19:09:53 +0200 > >- Docs: Fix the name LZMA Utils -> XZ Utils in debug/README. >+ 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. > >- debug/README | 2 +- >+ src/xz/xz.1 | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 672eccf57c31a40dfb956b7662db06d43e18618e >+commit cb1f34988c8a4130485091b2f8b641303d8f701b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-05 07:23:17 +0300 >+Date: 2020-11-01 18:49:37 +0200 > >- Include debug/translation.bash in the distribution. >+ xz: Protect the ellipsis (...) on the man page with \&. > >- Also fix the script name mentioned in README. >+ This does it only when ... appears outside macro calls. >+ >+ Thanks to Bjarni Ingi Gislason. > >- README | 4 ++-- >- debug/Makefile.am | 3 +++ >- 2 files changed, 5 insertions(+), 2 deletions(-) >+ src/xz/xz.1 | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit cafb523adac1caf305e70a04bc37f25602bf990c >+commit 5d224da3da87400f2fab313abbd7c710e7169ef9 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-04 22:31:58 +0300 >+Date: 2020-11-01 18:41:21 +0200 > >- xz: Document --block-list better. >+ xz: Avoid the abbreviation "e.g." on the man page. > >- Thanks to Jonathan Nieder. >+ 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 | 8 +++++++- >- 1 file changed, 7 insertions(+), 1 deletion(-) >+ src/xz/xz.1 | 66 ++++++++++++++++++++++++++++++------------------------------- >+ 1 file changed, 33 insertions(+), 33 deletions(-) > >-commit c7ff218528bc8f7c65e7ef73c6515777346c6794 >+commit 90457dbe3e5717660f5b81f8c604860fc5137c0c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-04 20:01:49 +0300 >+Date: 2020-07-12 23:10:03 +0300 > >- Bump the version number to 5.1.2alpha. >+ 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/liblzma/api/lzma/version.h | 2 +- >- src/liblzma/liblzma.map | 2 +- >- 2 files changed, 2 insertions(+), 2 deletions(-) >+ src/xz/xz.1 | 16 ++++++++-------- >+ 1 file changed, 8 insertions(+), 8 deletions(-) > >-commit 8f3c1d886f93e6478ad509ff52102b2ce7faa999 >+commit 352ba2d69af2136bc814aa1df1a132559d445616 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-04 20:01:19 +0300 >+Date: 2020-07-12 20:46:24 +0300 > >- Update NEWS for 5.1.2alpha. >+ 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. > >- NEWS | 41 +++++++++++++++++++++++++++++++++++++++++ >- 1 file changed, 41 insertions(+) >+ src/common/common_w32res.rc | 4 +++- >+ 1 file changed, 3 insertions(+), 1 deletion(-) > >-commit 0d5fa05466e580fbc458820f87013ae7644e20e5 >+commit a9e2a87f1d61dcf684d809bf08c8ebea93f8a480 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-04 19:58:23 +0300 >+Date: 2020-04-06 19:31:50 +0300 > >- xz: Fix the version number printed by xz -lvv. >+ src/scripts/xzgrep.1: Filenames to xzgrep are optional. > >- The decoder bug was fixed in 5.0.2 instead of 5.0.3. >+ xzgrep --help was correct already. > >- src/xz/list.c | 6 +++--- >- 1 file changed, 3 insertions(+), 3 deletions(-) >+ src/scripts/xzgrep.1 | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit df11317985a4165731dde12bb0f0028da0e7b77f >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-04 17:11:31 +0300 >+commit a7ba275d9b855d186abb29eb7a4f4cb6d9ca6fe0 >+Author: Bjarni Ingi Gislason <bjarniig@rhi.hi.is> >+Date: 2020-03-26 22:17:31 +0000 > >- Build: Add a comment to configure.ac about symbol versioning. >+ 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 >+ >+ <src/scripts/xzgrep.1>:20 (macro RB): only 1 argument, but more are expected >+ <src/scripts/xzgrep.1>:23 (macro RB): only 1 argument, but more are expected >+ <src/scripts/xzgrep.1>:26 (macro RB): only 1 argument, but more are expected >+ <src/scripts/xzgrep.1>:29 (macro RB): only 1 argument, but more are expected >+ <src/scripts/xzgrep.1>: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 <bjarniig@rhi.hi.is> > >- configure.ac | 4 ++++ >- 1 file changed, 4 insertions(+) >+ src/scripts/xzgrep.1 | 12 ++++++------ >+ 1 file changed, 6 insertions(+), 6 deletions(-) > >-commit bd9cc179e8be3ef515201d3ed9c7dd79ae88869d >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-04 17:06:49 +0300 >+commit 133d498db0f4b14f066d192d64dbcade45deae6b >+Author: Bjarni Ingi Gislason <bjarniig@rhi.hi.is> >+Date: 2020-03-30 21:56:36 +0000 > >- Update TODO. >+ 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 <bjarniig@rhi.hi.is> > >- TODO | 12 ++++++++++-- >- 1 file changed, 10 insertions(+), 2 deletions(-) >+ src/scripts/xzgrep.1 | 1 - >+ 1 file changed, 1 deletion(-) > >-commit 4a238dd9b22f462cac5e199828bf1beb0df05884 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-04 17:05:46 +0300 >+commit 057839ca982f886387b66746bffe749cb14fd8cd >+Author: Bjarni Ingi Gislason <bjarniig@rhi.hi.is> >+Date: 2020-03-26 21:16:18 +0000 > >- Document --enable-symbol-versions in INSTALL. >+ 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 >+ >+ <src/xz/xz.1>:408 (macro BR): only 1 argument, but more are expected >+ <src/xz/xz.1>:1009 (macro BR): only 1 argument, but more are expected >+ <src/xz/xz.1>:1743 (macro BR): only 1 argument, but more are expected >+ <src/xz/xz.1>:1920 (macro BR): only 1 argument, but more are expected >+ <src/xz/xz.1>: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 <bjarniig@rhi.hi.is> > >- INSTALL | 5 +++++ >- 1 file changed, 5 insertions(+) >+ src/xz/xz.1 | 10 +++++----- >+ 1 file changed, 5 insertions(+), 5 deletions(-) > >-commit 88ccf47205d7f3aa314d358c72ef214f10f68b43 >+commit b8e12f5ab4c9fd3cb09a4330b2861f6b979ababd > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-03 21:16:39 +0300 >+Date: 2020-03-23 18:07:50 +0200 > >- xz: Add incomplete support for --block-list. >+ Typo fixes from fossies.org. > >- It's broken with threads and when also --block-size is used. >+ https://fossies.org/linux/misc/xz-5.2.5.tar.xz/codespell.html > >- 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(-) >+ 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 972179cdcdf5d8949c48ee31737d87d3050b44af >+commit 869b9d1b4edd6df07f819d360d306251f8147353 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-07-01 18:44:33 +0300 >+Date: 2020-03-17 16:24:28 +0200 > >- xz: Update the man page about the new field in --robot -lvv. >+ Update NEWS for 5.2.5. > >- src/xz/xz.1 | 18 +++++++++++++++++- >- 1 file changed, 17 insertions(+), 1 deletion(-) >+ NEWS | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 105 insertions(+) > >-commit 1403707fc64a70976aebe66f8d9a9bd12f73a2c5 >+commit a048e3a92d238c65f050a765174d9c75417231d4 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-06-28 10:47:49 +0300 >+Date: 2020-03-16 20:01:37 +0200 > >- 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. >+ README: Update outdated sections. > >- src/liblzma/lzma/lzma_decoder.c | 8 ++++++-- >- src/liblzma/rangecoder/range_decoder.h | 12 +++++++++--- >- 2 files changed, 15 insertions(+), 5 deletions(-) >+ README | 21 +++++++++++---------- >+ 1 file changed, 11 insertions(+), 10 deletions(-) > >-commit eccd8017ffe2c5de473222c4963ec53c62f7fda2 >+commit 29aed815ad4f98f3e4d355faa76a244ecd8ce716 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-06-22 19:00:23 +0300 >+Date: 2020-03-16 19:39:45 +0200 > >- Update NEWS from 5.0.4. >+ README: Mention that man pages can be translated. > >- NEWS | 37 +++++++++++++++++++++++++++++++++++++ >- 1 file changed, 37 insertions(+) >+ README | 7 ++++--- >+ 1 file changed, 4 insertions(+), 3 deletions(-) > >-commit 2e6754eac26a431e8d340c28906f63bcd1e177e8 >+commit 7fa7653940cc9dcfcbce2fbc5166ea343ad4e3c1 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-06-22 14:34:03 +0300 >+Date: 2020-03-16 16:43:29 +0200 > >- xz: Update man page date to match the latest update. >+ Update INSTALL.generic from Automake 1.16.1. > >- src/xz/xz.1 | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ INSTALL.generic | 321 ++++++++++++++++++++++++++++---------------------------- >+ 1 file changed, 162 insertions(+), 159 deletions(-) > >-commit b3235a0b1af45d5e1244cbe3191516966c076fa0 >+commit 9bd317ef03ab9b3e6a927c27c2e9c4ac041182f0 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-06-18 21:27:47 +0300 >+Date: 2020-03-15 15:27:22 +0200 > >- Docs: Language fix to 01_compress_easy.c. >- >- Thanks to Jonathan Nieder. >+ Update INSTALL for Windows and DOS and add preliminary info for z/OS. > >- doc/examples/01_compress_easy.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ INSTALL | 51 +++++++++++++++++++++++++++++++++++++++++---------- >+ 1 file changed, 41 insertions(+), 10 deletions(-) > >-commit f1675f765fe228cb5a5f904f853445a03e33cfe9 >+commit a3148c0446dc7fa96363752df414d22539c9007b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-06-14 20:15:30 +0300 >+Date: 2020-03-15 15:26:20 +0200 > >- Fix the top-level Makefile.am for the new example programs. >+ Build: Update m4/ax_pthread.m4 from Autoconf Archive (again). > >- Makefile.am | 12 ++++++++++-- >- 1 file changed, 10 insertions(+), 2 deletions(-) >+ m4/ax_pthread.m4 | 219 +++++++++++++++++++++++++++++-------------------------- >+ 1 file changed, 117 insertions(+), 102 deletions(-) > >-commit 3a0c5378abefaf86aa39a62a7c9682bdb21568a1 >+commit 7812002dd3ed319e42a14662a8531802cca8ca67 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-06-14 10:52:33 +0300 >+Date: 2020-03-11 21:15:35 +0200 > >- Docs: Add new example programs. >+ xz: Never use thousand separators in DJGPP builds. > >- These have more comments than the old examples and >- human-readable error messages. More tutorial-like examples >- are needed but these are a start. >+ 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. > >- 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(+) >+ src/xz/util.c | 14 ++++++++++++-- >+ 1 file changed, 12 insertions(+), 2 deletions(-) > >-commit 1bd2c2c553e30c4a73cfb82abc6908efd6be6b8d >+commit 7c8f688bf7fccd65d396e0130cbf4ea5dff5c56f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-06-14 10:33:27 +0300 >+Date: 2020-03-11 19:38:08 +0200 > >- Docs: Move xz_pipe_comp.c and xz_pipe_decomp.c to doc/examples_old. >+ DOS: Update dos/Makefile for DJGPP 2.05. > >- 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. >+ It doesn't need -fgnu89-inline like 2.04beta did. > >- 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(-) >+ dos/Makefile | 4 +--- >+ 1 file changed, 1 insertion(+), 3 deletions(-) > >-commit 905f0ab5b5ce544d4b68a2ed6077df0f3d021292 >+commit 319ca928d73de87940c54e30bffe69f9fa65efdf > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-06-14 10:33:01 +0300 >+Date: 2020-03-11 19:36:07 +0200 > >- Docs: Fix a bug in xz_pipe_decomp.c example program. >+ DOS: Update instructions in dos/INSTALL.txt. > >- doc/examples/xz_pipe_decomp.c | 10 +++++++++- >- 1 file changed, 9 insertions(+), 1 deletion(-) >+ dos/INSTALL.txt | 59 ++++++++++++++++++++++++++++----------------------------- >+ 1 file changed, 29 insertions(+), 30 deletions(-) > >-commit 4bd1a3bd5fdf4870b2f96dd0b8a21657c8a58ad8 >+commit cb6b227ce39932824812ccd8a0647bd968de27d2 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-05-30 23:14:33 +0300 >+Date: 2020-03-11 17:58:51 +0200 > >- Translations: Update the French translation. >+ DOS: Update config.h. > >- Thanks to Adrien Nader. >+ The added defines assume GCC >= 4.8. > >- po/fr.po | 148 ++++++++++++++++++++++++++++++++++----------------------------- >- 1 file changed, 79 insertions(+), 69 deletions(-) >+ dos/config.h | 8 ++++++++ >+ 1 file changed, 8 insertions(+) > >-commit d2e836f2f3a87df6fe6bb0589b037db51205d910 >+commit 4572d53e16e87eee375bc5624de2fd59bb0ae9cd > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-05-29 23:42:37 +0300 >+Date: 2020-03-02 13:54:33 +0200 > >- Translations: Update the German translation. >+ liblzma: Fix a comment and RC_SYMBOLS_MAX. > >- The previous only included the new strings in v5.0. >+ The comment didn't match the value of RC_SYMBOLS_MAX and the value >+ itself was slightly larger than actually needed. The only harm >+ about this was that memory usage was a few bytes larger. > >- po/de.po | 229 +++++++++++++++++++++++++++++++++++++-------------------------- >- 1 file changed, 133 insertions(+), 96 deletions(-) >+ src/liblzma/rangecoder/range_encoder.h | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit c9a16151577ba459afd6e3528df23bc0ddb95171 >+commit 265daa873c0d871f5f23f9b56e133a6f20045a0a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-05-29 22:26:27 +0300 >+Date: 2020-02-27 20:58:52 +0200 > >- Translations: Update the German translation. >+ Build: Make CMake build fail if tuklib_cpucores or tuklib_physmem fails. > >- po/de.po | 169 ++++++++++++++++++++++++++++++++++----------------------------- >- 1 file changed, 91 insertions(+), 78 deletions(-) >+ CMakeLists.txt | 18 ++++++++++++++++++ >+ 1 file changed, 18 insertions(+) > >-commit 1530a74fd48f8493372edad137a24541efe24713 >+commit 7c8b904527cdbe61248c80edcc2e20d840c4fef9 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-05-29 22:14:21 +0300 >+Date: 2020-02-27 20:24:27 +0200 > >- Translations: Update Polish translation. >- >- po/pl.po | 283 +++++++++++++++++++++++++++++++++++++-------------------------- >- 1 file changed, 165 insertions(+), 118 deletions(-) >- >-commit d8db706acb8316f9861abd432cfbe001dd6d0c5c >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-05-28 20:42:11 +0300 >- >- liblzma: Fix possibility of incorrect LZMA_BUF_ERROR. >+ Build: Add support for --no-po4a option to autogen.sh. > >- 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. >+ 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. > >- 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(-) >+ autogen.sh | 11 ++++++++++- >+ 1 file changed, 10 insertions(+), 1 deletion(-) > >-commit 3f94b6d87f1b8f1c421ba548f8ebb83dca9c8cda >+commit 292a5c0f9c9b3a66f5a5c652dc46381836d4537f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-05-28 15:38:32 +0300 >+Date: 2020-02-25 21:35:14 +0200 > > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 7769ea051d739a38a1640fd448cf5eb83cb119c6 >+commit 474320e9908786ba2021035f9013191e16cde08a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-05-28 15:37:43 +0300 >+Date: 2020-02-25 20:42:31 +0200 > >- xz: Don't show a huge number in -vv when memory limit is disabled. >+ Build: Fix bugs in the CMake files. >+ >+ Seems that the phrase "add more quotes" from sh/bash scripting >+ applies to CMake as well. E.g. passing an unquoted list ${FOO} >+ to a function that expects one argument results in only the >+ first element of the list being passed as an argument and >+ the rest get ignored. Adding quotes helps ("${FOO}"). >+ >+ list(INSERT ...) is weird. Inserting an empty string to an empty >+ variable results in empty list, but inserting it to a non-empty >+ variable does insert an empty element to the list. >+ >+ Since INSERT requires at least one element, >+ "${CMAKE_THREAD_LIBS_INIT}" needs to be quoted in CMakeLists.txt. >+ It might result in an empty element in the list. It seems to not >+ matter as empty elements consistently get ignored in that variable. >+ In fact, calling cmake_check_push_state() and cmake_check_pop_state() >+ will strip the empty elements from CMAKE_REQUIRED_LIBRARIES! >+ >+ In addition to quoting fixes, this fixes checks for the cache >+ variables in tuklib_cpucores.cmake and tuklib_physmem.cmake. >+ >+ Thanks to Martin MatuÅ¡ka for testing and reporting the problems. >+ These fixes aren't tested yet but hopefully they soon will be. > >- src/xz/message.c | 12 +++++++++++- >- 1 file changed, 11 insertions(+), 1 deletion(-) >+ CMakeLists.txt | 52 ++++++++++++++++++++++----------------------- >+ cmake/tuklib_common.cmake | 8 ++++--- >+ cmake/tuklib_cpucores.cmake | 30 ++++++++++++++------------ >+ cmake/tuklib_integer.cmake | 34 +++++++++++++++-------------- >+ cmake/tuklib_mbstr.cmake | 6 +++--- >+ cmake/tuklib_physmem.cmake | 29 +++++++++++++------------ >+ cmake/tuklib_progname.cmake | 4 ++-- >+ 7 files changed, 85 insertions(+), 78 deletions(-) > >-commit ec921105725e4d3ef0a683dd83eee6f24ab60ccd >+commit 7e3493d40eac0c3fa3d5124097745a70e15c41f6 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-05-27 22:30:17 +0300 >+Date: 2020-02-24 23:38:16 +0200 > >- xz: Document the "summary" lines of --robot -lvv. >+ Build: Add very limited experimental CMake support. > >- This documents only the columns that are in v5.0. >- The new columns added in the master branch aren't >- necessarily stable yet. >+ This does *NOT* replace the Autotools-based build system in >+ the foreseeable future. See the comment in the beginning >+ of CMakeLists.txt. >+ >+ So far this has been tested only on GNU/Linux but I commit >+ it anyway to make it easier for others to test. Since I >+ haven't played much with CMake before, it's likely that >+ there are things that have been done in a silly or wrong >+ way and need to be fixed. > >- src/xz/xz.1 | 19 +++++++++++++++++++ >- 1 file changed, 19 insertions(+) >+ CMakeLists.txt | 643 ++++++++++++++++++++++++++++++++++++++++++++ >+ cmake/tuklib_common.cmake | 47 ++++ >+ cmake/tuklib_cpucores.cmake | 173 ++++++++++++ >+ cmake/tuklib_integer.cmake | 100 +++++++ >+ cmake/tuklib_mbstr.cmake | 20 ++ >+ cmake/tuklib_physmem.cmake | 149 ++++++++++ >+ cmake/tuklib_progname.cmake | 19 ++ >+ 7 files changed, 1151 insertions(+) > >-commit 27d24eb0a9f6eed96d6a4594c2b0bf7a91d29f9a >+commit 21bd4701fca3e9002ce78bc135debca369ed8545 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-05-27 21:53:20 +0300 >+Date: 2020-02-24 23:37:07 +0200 > >- 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. >+ Update m4/.gitignore. > >- src/xz/message.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ m4/.gitignore | 1 + >+ 1 file changed, 1 insertion(+) > >-commit ab25b82a91754d9388c89abddf806424671d9431 >+commit e094d1d0f196a91ec703e8d0055948feef349ae8 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-05-24 18:33:54 +0300 >+Date: 2020-02-24 23:29:35 +0200 > >- Build: Upgrade m4/acx_pthread.m4 to the latest version. >+ tuklib: Omit an unneeded <sys/types.h> from a tests. >+ >+ tuklib_cpucores.c and tuklib_physmem.c don't include <sys/types.h> >+ even via other files in this package, so clearly that header isn't >+ needed in the tests either (no one has reported build problems due >+ to a missing header in a .c file). > >- m4/ax_pthread.m4 | 98 +++++++++++++++++++++++++++++++++++--------------------- >- 1 file changed, 62 insertions(+), 36 deletions(-) >+ m4/tuklib_cpucores.m4 | 1 - >+ m4/tuklib_physmem.m4 | 1 - >+ 2 files changed, 2 deletions(-) > >-commit d05d6d65c41a4bc83f162fa3d67c5d84e8751634 >+commit b3ed19a55fe99a45bd77614e149d39d18498075c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-05-10 21:15:17 +0300 >+Date: 2020-02-24 23:01:00 +0200 > >- Update THANKS. >+ liblzma: Remove unneeded <sys/types.h> from fastpos_tablegen.c. >+ >+ This file only generates fastpos_table.c. >+ It isn't built as a part of liblzma. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ src/liblzma/lzma/fastpos_tablegen.c | 1 - >+ 1 file changed, 1 deletion(-) > >-commit e077391982f9f28dbfe542bba8800e7c5b916666 >+commit 7b8982b29179b3c586e0456dc9ecbd4f58dcea59 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-05-10 21:14:16 +0300 >+Date: 2020-02-22 14:15:07 +0200 > >- Docs: Cleanup line wrapping a bit. >- >- README | 12 ++++++------ >- doc/history.txt | 49 +++++++++++++++++++++++++------------------------ >- 2 files changed, 31 insertions(+), 30 deletions(-) >- >-commit fc39849c350225c6a1cd7f6e6adff1020521eabc >-Author: Benno Schulenberg <bensberg@justemail.net> >-Date: 2012-03-13 22:04:04 +0100 >- >- Fix a few typos and add some missing articles in some documents. >+ Use defined(__GNUC__) before __GNUC__ in preprocessor lines. > >- Also hyphenate several compound adjectives. >- >- Signed-off-by: Benno Schulenberg <bensberg@justemail.net> >+ This should silence the equivalent of -Wundef in compilers that >+ don't define __GNUC__. > >- AUTHORS | 6 +++--- >- README | 42 ++++++++++++++++++++--------------------- >- doc/faq.txt | 24 ++++++++++++------------ >- doc/history.txt | 58 ++++++++++++++++++++++++++++----------------------------- >- 4 files changed, 65 insertions(+), 65 deletions(-) >+ src/common/sysdefs.h | 3 ++- >+ src/liblzma/api/lzma.h | 5 +++-- >+ 2 files changed, 5 insertions(+), 3 deletions(-) > >-commit 29fa0566d5df199cb9acb2d17bf7eea61acc7fa1 >+commit 43dfe04e6209c691cf4fbe3072d4ee91271748f1 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-04-29 11:51:25 +0300 >+Date: 2020-02-21 17:40:02 +0200 > >- Windows: Update notes about static linking with MSVC. >+ 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. > >- windows/README-Windows.txt | 13 +++++++++---- >- 1 file changed, 9 insertions(+), 4 deletions(-) >+ src/liblzma/lzma/lzma_encoder_optimum_normal.c | 16 ++++++++++------ >+ 1 file changed, 10 insertions(+), 6 deletions(-) > >-commit aac1b31ea4e66cf5a7a8c116bdaa15aa45e6c56e >+commit 59e6eb4840b9f52fa3a61544974017279b448216 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-04-19 15:25:26 +0300 >+Date: 2020-02-21 17:01:15 +0200 > >- liblzma: Remove outdated comments. >+ 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. > >- src/liblzma/simple/simple_coder.c | 3 --- >- src/liblzma/simple/simple_private.h | 3 +-- >- 2 files changed, 1 insertion(+), 5 deletions(-) >+ m4/.gitignore | 1 - >+ m4/visibility.m4 | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ 2 files changed, 77 insertions(+), 1 deletion(-) > >-commit df14a46013bea70c0bd35be7821b0b9108f97de7 >+commit 7fe3ef2eaa53d439cec043727ea1998f4ff0e22a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-04-19 14:17:52 +0300 >+Date: 2020-02-21 16:10:44 +0200 > >- DOS: Link against DJGPP's libemu to support FPU emulation. >+ xz: Silence a warning when sig_atomic_t is long int. > >- This way xz should work on 386SX and 486SX. Floating point >- only is needed for verbose output in xz. >+ It can be true at least on z/OS. > >- dos/Makefile | 2 +- >+ src/xz/signals.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 03ed742a3a4931bb5c821357832083b26f577b13 >+commit b0a2a77d10940c42b449d47a005bfc2e50ab5db8 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-04-19 14:02:25 +0300 >+Date: 2020-02-21 15:59:26 +0200 > >- liblzma: Fix Libs.private in liblzma.pc to include -lrt when needed. >+ xz: Avoid unneeded access of a volatile variable. > >- src/liblzma/liblzma.pc.in | 2 +- >+ src/xz/signals.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 8c5b13ad59df70f49429bfdfd6ac120b8f892fda >+commit 524c2f12c762032b819757aeda8af7c47c4cabce > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-04-19 13:58:55 +0300 >+Date: 2020-02-21 01:24:18 +0200 > >- Docs: Update MINIX 3 information in INSTALL. >+ tuklib_integer.m4: Optimize the check order. >+ >+ The __builtin byteswapping is the preferred one so check for it first. > >- INSTALL | 8 +++++--- >- 1 file changed, 5 insertions(+), 3 deletions(-) >+ m4/tuklib_integer.m4 | 56 +++++++++++++++++++++++++++------------------------- >+ 1 file changed, 29 insertions(+), 27 deletions(-) > >-commit c7376fc415a1566f38b2de4b516a17013d516a8b >+commit 57360bb4fd79b358b36d2877db26ac828d1fdfcb > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-02-22 14:23:13 +0200 >+Date: 2020-02-20 18:54:04 +0200 > >- Update THANKS. >+ tuklib_exit: Add missing header. >+ >+ strerror() needs <string.h> 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. > >- THANKS | 1 + >+ src/common/tuklib_exit.c | 1 + > 1 file changed, 1 insertion(+) > >-commit cff070aba6281ba743d29a62b8c0c66e5da4b2a6 >+commit fddd31175e74a538997a939d930462fde17d2dd4 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-02-22 14:02:34 +0200 >+Date: 2020-02-18 19:12:35 +0200 > >- Fix exit status of xzgrep when grepping binary files. >+ Revert the previous commit and add a comment. > >- 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 previous commit broke crc32_tablegen.c. > >- 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. >+ If the whole package is built without config.h (with defines >+ set on the compiler command line) this should still work fine >+ as long as these headers conform to C99 well enough. > >- src/scripts/xzgrep.in | 3 ++- >- 1 file changed, 2 insertions(+), 1 deletion(-) >+ src/common/tuklib_config.h | 17 ++++++++++------- >+ 1 file changed, 10 insertions(+), 7 deletions(-) > >-commit 41cafb2bf9beea915710ee68f05fe929cd17759c >+commit 4e4e9fbb7e66d45319525ac224bff48fbdd0cf6e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-02-22 12:08:43 +0200 >+Date: 2020-02-17 23:37:20 +0200 > >- Update THANKS. >+ Do not check for HAVE_CONFIG_H in tuklib_config.h. >+ >+ In XZ Utils sysdefs.h takes care of it and the required headers. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ src/common/tuklib_config.h | 15 +++++++-------- >+ 1 file changed, 7 insertions(+), 8 deletions(-) > >-commit 2dcea03712fa881930d69ec9eff70855c3d126d9 >+commit 2d4cef954feba82073951358466a1d614141cf33 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-02-22 12:00:16 +0200 >+Date: 2020-02-16 11:18:28 +0200 > >- Fix compiling with IBM XL C on AIX. >+ 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. > >- INSTALL | 36 ++++++++++++++++++++++-------------- >- configure.ac | 6 +++++- >- 2 files changed, 27 insertions(+), 15 deletions(-) >+ src/common/sysdefs.h | 8 ++------ >+ 1 file changed, 2 insertions(+), 6 deletions(-) > >-commit 7db6bdf4abcf524115be2cf5659ed540cef074c5 >+commit feb9c1969bc3eb33d4ecb72cfa897f92dae84939 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2012-01-10 17:13:03 +0200 >+Date: 2020-02-15 15:07:11 +0200 > >- Tests: Fix a compiler warning with _FORTIFY_SOURCE. >+ Build: Bump Autoconf and Libtool version requirements. > >- Reported here: >- http://sourceforge.net/projects/lzmautils/forums/forum/708858/topic/4927385 >+ 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) > >- tests/create_compress_files.c | 3 ++- >- 1 file changed, 2 insertions(+), 1 deletion(-) >+ configure.ac | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit 694952d545b6cf056547893ced69486eff9ece55 >+commit 3d576cf92158d62790017ad7f2dd6dc1dd6b42bb > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-12-19 21:21:29 +0200 >+Date: 2020-02-15 03:08:32 +0200 > >- Docs: Explain the stable releases better in README. >+ 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. > >- README | 6 +++++- >+ configure.ac | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > >-commit 418fe668b3c53a9a20020b6cc652aaf25c734b29 >+commit fa792b8befaf7cb3960b655e0a9410da866d756f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-11-07 13:07:52 +0200 >+Date: 2020-02-14 20:42:06 +0200 > >- xz: Show minimum required XZ Utils version in xz -lvv. >+ Translations: Add German translation of the man pages. > >- Man page wasn't updated yet. >+ Thanks to Mario Blättermann. > >- src/xz/list.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++------ >- 1 file changed, 57 insertions(+), 6 deletions(-) >+ po4a/de.po | 5532 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ po4a/po4a.conf | 2 +- >+ 2 files changed, 5533 insertions(+), 1 deletion(-) > >-commit 7081d82c37326bac97184e338345fa1c327e3580 >+commit 6f7211b6bb47a895b47f533282dba9ee9a1b0c8b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-11-04 17:57:16 +0200 >+Date: 2020-02-07 15:32:21 +0200 > >- xz: Fix a typo in a comment. >+ Build: Add support for translated man pages using po4a. > >- Thanks to Bela Lubkin. >+ 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. > >- src/xz/args.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ 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 232fe7cd70ad258d6a37f17e860e0f1b1891eeb5 >+commit 426f9e5819ff7710a5ff573a96c02940be65d52f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-11-03 17:08:02 +0200 >+Date: 2020-02-06 17:31:38 +0200 > > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 74d2bae4d3449c68453b0473dd3430ce91fd90c1 >+commit e3a4481d020e4de89efa037f335cf50f3ca55592 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-11-03 17:07:22 +0200 >+Date: 2020-02-05 22:35:06 +0200 > >- xz: Fix xz on EBCDIC systems. >- >- Thanks to Chris Donawa. >+ Update tests/.gitignore. > >- src/xz/coder.c | 5 ++++- >- 1 file changed, 4 insertions(+), 1 deletion(-) >+ .gitignore | 4 ++++ >+ 1 file changed, 4 insertions(+) > >-commit 4ac4923f47cc0ef97dd9ca5cfcc44fc53eeab34a >+commit 07208de92f2d5bca764f6d0ebe9d9866051dc4ef > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-10-23 17:09:10 +0300 >+Date: 2020-02-05 22:28:51 +0200 > >- Update THANKS. >+ Update m4/.gitignore. > >- THANKS | 1 + >+ m4/.gitignore | 1 + > 1 file changed, 1 insertion(+) > >-commit ab50ae3ef40c81e5bf613905ca3fd636548b75e7 >+commit c91fbf223db46c3b3cb9df769863a1a60cd9c908 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-10-23 17:08:14 +0300 >+Date: 2020-02-05 20:47:38 +0200 > >- 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. >+ Update THANKS. > >- src/liblzma/common/outqueue.c | 4 ++++ >- 1 file changed, 4 insertions(+) >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) > >-commit 6b620a0f0813d28c3c544b4ff8cb595b38a6e908 >+commit 15a133b6d1a3eab4faf6eb52a71fdc56bd65846f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-10-23 17:05:55 +0300 >+Date: 2020-02-05 20:40:14 +0200 > >- liblzma: Fix a deadlock in the threaded encoder. >+ xz: Make it a fatal error if enabling the sandbox fails. > >- It was triggered when reinitializing the encoder, >- e.g. when encoding two files. >+ Perhaps it's too drastic but on the other hand it will let me >+ learn about possible problems if people report the errors. >+ This won't be backported to the v5.2 branch. > >- src/liblzma/common/stream_encoder_mt.c | 4 +++- >- 1 file changed, 3 insertions(+), 1 deletion(-) >+ src/xz/file_io.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit bd52cf150ecd51e3ab63a9cc1a3cff6a77500178 >+commit af0fb386ef55db66654ae39e2deec6e04190c4ff > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-09-06 12:03:41 +0300 >+Date: 2020-02-05 20:33:50 +0200 > >- Build: Fix "make check" on Windows. >+ xz: Comment out annoying sandboxing messages. > >- tests/Makefile.am | 7 +++++-- >- windows/build.bash | 2 ++ >- 2 files changed, 7 insertions(+), 2 deletions(-) >+ src/xz/file_io.c | 10 +++++++--- >+ 1 file changed, 7 insertions(+), 3 deletions(-) > >-commit 5c5b2256969ac473001b7d67615ed3bd0a54cc82 >+commit 986d8c9b52b824474088e5bb3b6940651660f0e2 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-08-09 21:19:13 +0300 >+Date: 2020-02-05 19:33:37 +0200 > >- Update THANKS. >+ 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. > >- THANKS | 2 ++ >- 1 file changed, 2 insertions(+) >+ configure.ac | 10 ++++++++++ >+ 1 file changed, 10 insertions(+) > >-commit 5b1e1f10741af9e4bbe4cfc3261fb7c7b04f7809 >+commit 6629ed929cc7d45a11e385f357ab58ec15e7e4ad > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-08-09 21:16:44 +0300 >+Date: 2020-02-03 22:03:50 +0200 > >- Workaround unusual SIZE_MAX on SCO OpenServer. >+ Build: Update m4/ax_pthread.m4 from Autoconf Archive. > >- src/common/sysdefs.h | 9 ++++++--- >- 1 file changed, 6 insertions(+), 3 deletions(-) >+ m4/ax_pthread.m4 | 398 ++++++++++++++++++++++++++++++++++++++----------------- >+ 1 file changed, 279 insertions(+), 119 deletions(-) > >-commit e9ed88126eee86e2511fa42681a5c7104820cf0a >+commit 353970510895f6a80adfe60cf71b70a95adfa8bc > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-08-06 20:37:28 +0300 >+Date: 2020-02-01 19:56:18 +0200 > >- Run the scripts with the correct shell in test_scripts.sh. >+ xz: Limit --memlimit-compress to at most 4020 MiB for 32-bit xz. > >- 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. >+ 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. > >- Thanks to Jonathan Nieder for the patch. >+ 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. > >- configure.ac | 8 ++++---- >- tests/test_scripts.sh | 8 ++++---- >- 2 files changed, 8 insertions(+), 8 deletions(-) >+ src/xz/hardware.c | 32 +++++++++++++++++++++++++++++++- >+ src/xz/xz.1 | 21 ++++++++++++++++++++- >+ 2 files changed, 51 insertions(+), 2 deletions(-) > >-commit 1c673e5681720491a74fc4b2992e075f47302c22 >+commit ba76d67585f88677af9f48b48e7bdc3bb7687def > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-07-31 11:01:47 +0300 >+Date: 2020-01-26 20:53:25 +0200 > >- Fix exit status of "xzdiff foo.xz bar.xz". >+ xz: Set the --flush-timeout deadline when the first input byte arrives. > >- 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. >+ xz --flush-timeout=2000, old version: > >- The bug is inherited from zdiff in GNU gzip and was fixed >- there on 2009-10-09. >+ 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. > >- Thanks to Jonathan Nieder for the patch and >- to Peter Pallinger for reporting the bug. >+ 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/scripts/xzdiff.in | 2 ++ >- tests/Makefile.am | 4 +++- >- tests/test_scripts.sh | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ >- 3 files changed, 59 insertions(+), 1 deletion(-) >+ src/xz/coder.c | 6 +----- >+ src/xz/file_io.c | 6 +++++- >+ src/xz/mytime.c | 1 - >+ 3 files changed, 6 insertions(+), 7 deletions(-) > >-commit 324cde7a864f4506c32ae7846d688c359a83fe65 >+commit fd47fd62bbb1bfd13ab63869137971d8b390025f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-06-16 12:15:29 +0300 >+Date: 2020-01-26 20:19:19 +0200 > >- liblzma: Remove unneeded semicolon. >+ xz: Move flush_needed from mytime.h to file_pair struct in file_io.h. > >- src/liblzma/lz/lz_encoder_hash.h | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ 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 492c86345551a51a29bf18e55fe55a5e86f169ce >+commit 815035681063d5774d3640fc20b8ede783dd574e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-28 19:24:56 +0300 >+Date: 2020-01-26 14:49:22 +0200 > >- Build: Make configure print if symbol versioning is enabled or not. >+ 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. > >- configure.ac | 2 ++ >- 1 file changed, 2 insertions(+) >+ src/xz/coder.c | 30 +++++++++++++++++------------- >+ 1 file changed, 17 insertions(+), 13 deletions(-) > >-commit fc4d4436969bd4d71b704d400a165875e596034a >+commit 5a49e081a098455bcdbd95cefb90e9b18780fe58 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-28 16:43:26 +0300 >+Date: 2020-01-26 14:13:42 +0200 > >- Don't call close(-1) in tuklib_open_stdxxx() on error. >+ xz: Fix semi-busy-waiting in xz --flush-timeout. > >- Thanks to Jim Meyering. >+ 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/common/tuklib_open_stdxxx.c | 4 +++- >- 1 file changed, 3 insertions(+), 1 deletion(-) >+ 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 bd35d903a04c4d388adb4065b0fa271302380895 >+commit dcca70fe9fa3c4bec56cf9c79e966166c9a9cf6a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-28 15:55:39 +0300 >+Date: 2020-01-26 13:47:31 +0200 > >- 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. >+ xz: Refactor io_read() a bit. > >- 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(+) >+ src/xz/file_io.c | 17 ++++++++--------- >+ 1 file changed, 8 insertions(+), 9 deletions(-) > >-commit afbb244362c9426a37ce4eb9d54aab768da3adad >+commit 4ae9ab70cd3214395756435d13d8d000368ca2cb > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-28 09:46:46 +0300 >+Date: 2020-01-26 13:37:08 +0200 > >- Translations: Update the Italian translation. >- >- Thanks to Milo Casagrande. >+ xz: Update a comment in file_io.h. > >- po/it.po | 365 +++++++++++++++++++++++++++++++++++++-------------------------- >- 1 file changed, 216 insertions(+), 149 deletions(-) >+ src/xz/file_io.h | 5 ++++- >+ 1 file changed, 4 insertions(+), 1 deletion(-) > >-commit 79bef85e0543c0c3723281c3c817616c6cec343b >+commit 3333ba4a6795a55cf0375329ba08152bd7fcbd46 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-28 08:46:04 +0300 >+Date: 2020-01-26 13:27:51 +0200 > >- Tests: Add a test file for the bug in the previous commit. >+ xz: Move the setting of flush_needed in file_io.c to a nicer location. > >- tests/files/README | 4 ++++ >- tests/files/bad-1-block_header-6.xz | Bin 0 -> 72 bytes >- 2 files changed, 4 insertions(+) >+ src/xz/file_io.c | 6 ++---- >+ 1 file changed, 2 insertions(+), 4 deletions(-) > >-commit c0297445064951807803457dca1611b3c47e7f0f >+commit cf2df0f05ac98c1158c6e48145900b773223605d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-27 22:25:44 +0300 >+Date: 2020-01-19 21:54:33 +0200 > >- xz: Fix error handling in xz -lvv. >+ Use $(LIB_FUZZING_ENGINE) in tests/ossfuzz/Makefile. > >- It could do an invalid free() and read past the end >- of the uninitialized filters array. >+ https://github.com/google/oss-fuzz/pull/3219#issuecomment-573751048 >+ >+ Thanks to Bhargava Shastry for sending the patch. > >- src/xz/list.c | 21 ++++++--------------- >- 1 file changed, 6 insertions(+), 15 deletions(-) >+ tests/ossfuzz/Makefile | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 8bd91918ac50731f00b1a2a48072980572eb2ff9 >+commit 7136f1735c60ac6967c4b8e277fcde53d485234f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-27 22:09:49 +0300 >+Date: 2019-12-31 00:41:28 +0200 > >- liblzma: Handle allocation failures correctly in lzma_index_init(). >- >- Thanks to Jim Meyering. >+ Rename unaligned_read32ne to read32ne, and similarly for the others. > >- src/liblzma/common/index.c | 7 +++++-- >- 1 file changed, 5 insertions(+), 2 deletions(-) >+ 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 fe00f95828ef5627721b57e054f7eb2d42a2c961 >+commit 5e78fcbf2eb21936022c9c5c3625d4da76f4b241 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-24 00:23:46 +0300 >+Date: 2019-12-31 00:29:48 +0200 > >- Build: Fix checking for system-provided SHA-256. >+ 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. > >- configure.ac | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ 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 21b45b9bab541f419712cbfd473ccc31802e0397 >+commit 77bc5bc6dd67056cfd5888520ac930cfc57b4516 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-23 18:30:30 +0300 >+Date: 2019-12-31 00:18:24 +0200 > >- Build: Set GZIP_ENV=-9n in top-level Makefile.am. >+ 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 > >- Makefile.am | 3 +++ >- 1 file changed, 3 insertions(+) >+ m4/tuklib_integer.m4 | 46 ++++- >+ src/common/tuklib_integer.h | 488 ++++++++++++++++++++++++-------------------- >+ 2 files changed, 316 insertions(+), 218 deletions(-) > >-commit 48053e8a4550233af46359024538bff90c870ab1 >+commit 8b72950a6b2e2a36c2d8fdc8857564b57191b088 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-22 16:42:11 +0300 >+Date: 2019-12-29 22:51:58 +0200 > >- Update NEWS for 5.0.3. >+ Tests: Hopefully fix test_check.c to work on EBCDIC systems. >+ >+ Thanks to Daniel Richard G. > >- NEWS | 32 ++++++++++++++++++++++++++++++++ >- 1 file changed, 32 insertions(+) >+ tests/test_check.c | 9 +++++++-- >+ 1 file changed, 7 insertions(+), 2 deletions(-) > >-commit bba37df2c9e54ad773e15ff00a09d2d6989fb3b2 >+commit 43ce4ea7c762238d3df9717b34126d3e0d7cd51c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-21 16:28:44 +0300 >+Date: 2019-09-24 23:02:40 +0300 > >- Add French translation. >+ Scripts: Put /usr/xpg4/bin to the beginning of PATH on Solaris. > >- It is known that the BCJ filter --help text is only >- partially translated. >+ 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. > >- po/LINGUAS | 1 + >- po/fr.po | 864 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- 2 files changed, 865 insertions(+) >+ 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 4161d7634965a7a287bf208dcd79f6185f448fe8 >+commit 6a89e656ebedd53a10cd1a063a32a9e4ade0da1f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-21 15:12:10 +0300 >+Date: 2019-07-12 18:57:43 +0300 > >- xz: Translate also the string used to print the program name. >- >- French needs a space before a colon, e.g. "xz : foo error". >+ Fix comment typos in tuklib_mbstr* files. > >- src/xz/message.c | 6 +++++- >- 1 file changed, 5 insertions(+), 1 deletion(-) >+ 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 b94aa0c8380cdb18cddb33440d625474c16643cf >+commit ac0b4212656a48ef0c187c0c941d40ac9489ae36 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-21 15:08:44 +0300 >+Date: 2019-07-12 18:30:46 +0300 > >- liblzma: Try to use SHA-256 from the operating system. >+ Add missing include to tuklib_mbstr_width.c. > >- 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. >+ It didn't matter in XZ Utils because sysdefs.h >+ includes string.h anyway. > >- configure.ac | 54 +++++++++++++++++++++++++++ >- src/liblzma/check/Makefile.inc | 2 + >- src/liblzma/check/check.h | 83 ++++++++++++++++++++++++++++++++++++++---- >- 3 files changed, 131 insertions(+), 8 deletions(-) >+ src/common/tuklib_mbstr_width.c | 1 + >+ 1 file changed, 1 insertion(+) > >-commit f004128678d43ea10b4a6401aa184cf83252d6ec >+commit 72a443281fb0b91aebf8cdff2ab1f7c07b081240 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-17 12:52:18 +0300 >+Date: 2019-07-12 18:10:57 +0300 > >- Don't use clockid_t in mythread.h when clock_gettime() isn't available. >- >- Thanks to Wim Lewis for the patch. >+ Update tuklib base headers to include stdbool.h. > >- src/common/mythread.h | 2 ++ >- 1 file changed, 2 insertions(+) >+ src/common/tuklib_common.h | 2 +- >+ src/common/tuklib_config.h | 1 + >+ 2 files changed, 2 insertions(+), 1 deletion(-) > >-commit f779516f42ebd2db47a5b7d6143459bf7737cf2f >+commit de1f47b2b40e960b7bc3acba754f66dd19705921 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-17 12:26:28 +0300 >+Date: 2019-06-28 00:54:31 +0300 > >- Update THANKS. >+ xz: Automatically align the strings in --info-memory. >+ >+ This makes it easier to translate the strings. >+ >+ Also, the string for amount of RAM was shortened. > >- THANKS | 3 +++ >- 1 file changed, 3 insertions(+) >+ src/xz/hardware.c | 45 ++++++++++++++++++++++++++++++++++----------- >+ 1 file changed, 34 insertions(+), 11 deletions(-) > >-commit 830ba587775bb562f6eaf05cad61bf669d1f8892 >+commit 8ce679125dbd0e2058d8f886e738d7f19a45cab5 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-17 12:21:33 +0300 >+Date: 2019-06-25 23:15:21 +0300 > >- Update INSTALL with a note about linker problem on OpenSolaris x86. >+ liblzma: Fix a buggy comment. > >- INSTALL | 23 +++++++++++++++++------ >- 1 file changed, 17 insertions(+), 6 deletions(-) >+ src/liblzma/lz/lz_encoder_mf.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit ec7106309c8060e9c646dba20c4f15689a0bbb04 >+commit fc77929e92e869f6869bf88931066103fd75f376 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-17 12:01:37 +0300 >+Date: 2019-06-25 00:16:06 +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: Fix a typo in a comment. > > configure.ac | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 4c6e146df99696920f12410fb17754412797ef36 >+commit e873902641794210ad7db59743f98e3e1cd6139f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-17 11:54:38 +0300 >+Date: 2019-06-25 00:08:13 +0300 > >- Add underscores to attributes (__attribute((__foo__))). >+ 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. > >- 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(-) >+ tests/test_block_header.c | 3 ++- >+ tests/test_stream_flags.c | 2 +- >+ 2 files changed, 3 insertions(+), 2 deletions(-) > >-commit 7a480e485938884ef3021b48c3b0b9f9699dc9b6 >+commit d499e467d99efeaae688564eedc4548837c1416a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-01 12:24:23 +0300 >+Date: 2019-06-24 23:52:17 +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. >+ liblzma: Add a comment. > >- src/xz/coder.c | 1 + >- src/xz/file_io.c | 15 +++++++++++++++ >- src/xz/file_io.h | 13 +++++++++++++ >- 3 files changed, 29 insertions(+) >+ src/liblzma/common/stream_encoder_mt.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit c29e6630c1450c630c4e7b783bdd76515db9004c >+commit a12b13c5f0d54c684fa8446f93fdac08ab2a716b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-05-01 12:15:51 +0300 >+Date: 2019-06-24 23:45:21 +0300 > >- xz: Print the maximum number of worker threads in xz -vv. >+ liblzma: Silence clang -Wmissing-variable-declarations. > >- src/xz/coder.c | 4 ++++ >- 1 file changed, 4 insertions(+) >+ src/liblzma/check/crc32_table.c | 3 +++ >+ src/liblzma/check/crc64_table.c | 3 +++ >+ 2 files changed, 6 insertions(+) > >-commit 0b77c4a75158ccc416b07d6e81df8ee0abaea720 >+commit 1b4675cebf7471f7cc9b7072c950e3de97147063 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-19 10:44:48 +0300 >+Date: 2019-06-24 23:25:41 +0300 > >- Build: Warn if no supported method to detect the number of CPU cores. >+ Add LZMA_RET_INTERNAL1..8 to lzma_ret and use one for LZMA_TIMED_OUT. >+ >+ LZMA_TIMED_OUT is *internally* used as a value for lzma_ret >+ enumeration. Previously it was #defined to 32 and cast to lzma_ret. >+ That way it wasn't visible in the public API, but this was hackish. >+ >+ Now the public API has eight LZMA_RET_INTERNALx members and >+ LZMA_TIMED_OUT is #defined to LZMA_RET_INTERNAL1. This way >+ the code is cleaner overall although the public API has a few >+ extra mysterious enum members. > >- configure.ac | 11 +++++------ >- 1 file changed, 5 insertions(+), 6 deletions(-) >+ src/liblzma/api/lzma/base.h | 15 ++++++++++++++- >+ src/liblzma/common/common.c | 4 +--- >+ src/liblzma/common/common.h | 5 ++--- >+ src/xz/message.c | 8 ++++++++ >+ 4 files changed, 25 insertions(+), 7 deletions(-) > >-commit e4622df9ab4982f8faa53d85b17be66216175a58 >+commit 159c43875eb25deea626ed651274464bae3e32ef > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-19 09:55:06 +0300 >+Date: 2019-06-24 22:57:43 +0300 > >- Update THANKS. >+ xz: Silence a warning from clang -Wsign-conversion in main.c. > >- THANKS | 1 + >- 1 file changed, 1 insertion(+) >+ src/xz/main.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 9c1b05828a88eff54409760b92162c7cc2c7cff6 >+commit 466cfcd3e52f6750ce28a635997f3dd84fb18515 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-19 09:20:44 +0300 >+Date: 2019-06-24 22:52:20 +0300 > >- Fix portability problems in mythread.h. >+ xz: Make "headings" static in list.c. > >- Use gettimeofday() if clock_gettime() isn't available >- (e.g. Darwin). >+ Caught by clang -Wmissing-variable-declarations. >+ >+ src/xz/list.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) >+ >+commit 608517b9b76c41fac6613dbda1193d6f41338e19 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2019-06-24 22:47:39 +0300 >+ >+ liblzma: Remove incorrect uses of lzma_attribute((__unused__)). > >- 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. >+ Caught by clang -Wused-but-marked-unused. > >- configure.ac | 7 +++++++ >- src/common/mythread.h | 31 +++++++++++++++++++++++++++---- >- 2 files changed, 34 insertions(+), 4 deletions(-) >+ 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 3de00cc75da7b0e7b65e84c62b5351e231f501e9 >+commit c2d2ab6a9d41a2b55d047c5b710aacf80d219255 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-18 19:35:49 +0300 >+Date: 2019-06-24 20:53:55 +0300 > >- Update THANKS. >+ Tests: Silence a warning from -Wsign-conversion. > >- THANKS | 2 ++ >- 1 file changed, 2 insertions(+) >+ tests/create_compress_files.c | 8 ++++---- >+ 1 file changed, 4 insertions(+), 4 deletions(-) > >-commit bd5002f5821e3d1b04f2f56989e4a19318e73633 >-Author: Martin Väth <vaeth@mathematik.uni-wuerzburg.de> >-Date: 2011-04-15 04:54:49 -0400 >+commit 2402f7873dcae719d0ebddd23bb579074519ac52 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2019-06-24 20:45:49 +0300 > >- xzgrep: fix typo in $0 parsing >+ xz: Fix an integer overflow with 32-bit off_t. > >- Reported-by: Diego Elio Pettenò <flameeyes@gentoo.org> >- Signed-off-by: Martin Väth <vaeth@mathematik.uni-wuerzburg.de> >- Signed-off-by: Mike Frysinger <vapier@gentoo.org> >+ 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/scripts/xzgrep.in | 4 ++-- >- 1 file changed, 2 insertions(+), 2 deletions(-) >+ src/xz/file_io.c | 11 +++++++++-- >+ 1 file changed, 9 insertions(+), 2 deletions(-) > >-commit 6ef4eabc0acc49e1bb9dc68064706e19fa9fcf48 >+commit 4fd3a8dd0b60f029e1c66a0ee634f9e9fda3caa9 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-12 12:48:31 +0300 >+Date: 2019-06-24 01:24:17 +0300 > >- Bump the version number to 5.1.1alpha and liblzma soname to 5.0.99. >+ xz: Cleanup io_seek_src() a bit. >+ >+ lseek() returns -1 on error and checking for -1 is nicer. > >- src/liblzma/Makefile.am | 2 +- >- src/liblzma/api/lzma/version.h | 2 +- >- 2 files changed, 2 insertions(+), 2 deletions(-) >+ src/xz/file_io.c | 4 +--- >+ 1 file changed, 1 insertion(+), 3 deletions(-) > >-commit 9a4377be0d21e597c66bad6c7452873aebfb3c1c >+commit dfda7cf6afa486e10df035327d68753896dfb48a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-12 12:42:37 +0300 >+Date: 2019-06-24 00:57:23 +0300 > >- Put the unstable APIs behind #ifdef LZMA_UNSTABLE. >+ Tests: Remove a duplicate branch from tests/tests.h. > >- This way people hopefully won't complain if these APIs >- change and break code that used an older API. >+ The duplication was introduced about eleven years ago and >+ should have been cleaned up back then already. >+ >+ This was caught by -Wduplicated-branches. > >- src/liblzma/api/lzma/container.h | 4 ++++ >- src/liblzma/common/common.h | 2 ++ >- src/xz/private.h | 2 ++ >- 3 files changed, 8 insertions(+) >+ tests/tests.h | 9 ++------- >+ 1 file changed, 2 insertions(+), 7 deletions(-) > >-commit 3e321a3acd50002cf6fdfd259e910f56d3389bc3 >+commit 1d4a904d8fb634bd5a04f7fbdd17d3739f3d8866 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-12 11:59:49 +0300 >+Date: 2019-06-24 00:40:45 +0300 > >- Remove doubled words from documentation and comments. >+ xz: Change io_seek_src and io_pread arguments from off_t to uint64_t. > >- 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. >+ This helps fixing warnings from -Wsign-conversion and makes the >+ code look better too. > >- 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(-) >+ src/xz/file_io.c | 16 ++++++++++++---- >+ src/xz/file_io.h | 4 ++-- >+ src/xz/list.c | 9 ++++----- >+ 3 files changed, 18 insertions(+), 11 deletions(-) > >-commit d91a84b534b012d19474f2fda1fbcaef873e1ba4 >+commit 50120deb0159fcb53ee1a6caffb2bb81a1ecd990 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-12 11:46:01 +0300 >+Date: 2019-06-24 00:12:38 +0300 > >- Update NEWS. >+ xz: list.c: Fix some warnings from -Wsign-conversion. > >- NEWS | 47 +++++++++++++++++++++++++++++++++++++++++++++-- >- 1 file changed, 45 insertions(+), 2 deletions(-) >+ src/xz/list.c | 7 ++++--- >+ 1 file changed, 4 insertions(+), 3 deletions(-) > >-commit 14e6ad8cfe0165c1a8beeb5b2a1536558b29b0a1 >+commit d0a78751eb54fb1572002746c533936a118e4e42 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-12 11:45:40 +0300 >+Date: 2019-06-23 23:22:45 +0300 > >- Update TODO. >+ tuklib_mbstr_width: Fix a warning from -Wsign-conversion. > >- TODO | 12 +++++++++++- >- 1 file changed, 11 insertions(+), 1 deletion(-) >+ src/common/tuklib_mbstr_width.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 70e750f59793f9b5cd306a5adce9b8e427739e04 >+commit 7883d73530b4b2a701ddd7d50c35676cbc158039 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-12 11:08:55 +0300 >+Date: 2019-06-23 23:19:34 +0300 > >- xz: Update the man page about threading. >+ xz: Fix some of the warnings from -Wsign-conversion. > >- src/xz/xz.1 | 34 ++++++++++++++++++++-------------- >- 1 file changed, 20 insertions(+), 14 deletions(-) >+ 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 24e0406c0fb7494d2037dec033686faf1bf67068 >+commit c2b994fe3d35e9e575c28869a2f7f534f2495d05 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-11 22:06:03 +0300 >+Date: 2019-06-23 22:27:45 +0300 > >- xz: Add support for threaded compression. >+ tuklib_cpucores: Silence warnings from -Wsign-conversion. > >- src/xz/args.c | 3 +- >- src/xz/coder.c | 202 +++++++++++++++++++++++++++++++++++---------------------- >- 2 files changed, 125 insertions(+), 80 deletions(-) >+ src/common/tuklib_cpucores.c | 10 +++++----- >+ 1 file changed, 5 insertions(+), 5 deletions(-) > >-commit de678e0c924aa79a19293a8a6ed82e8cb6572a42 >+commit 07c4fa9e1a195e0543f271380c8de22a3ab145ff > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-11 22:03:30 +0300 >+Date: 2019-06-23 21:40:47 +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. >+ xzdec: Fix warnings from -Wsign-conversion. > >- 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(-) >+ src/xzdec/xzdec.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 25fe729532cdf4b8fed56a4519b73cf31efaec50 >+commit dfac2c9a1d7d4a2b8a5d7c9c6d567dee48318bcf > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-11 21:15:07 +0300 >+Date: 2019-06-23 21:38:56 +0300 > >- liblzma: Add the forgotten lzma_lzma2_block_size(). >+ liblzma: Fix warnings from -Wsign-conversion. > >- 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 <lasse.collin@tukaani.org> >-Date: 2011-04-11 21:04:13 +0300 >- >- liblzma: Document lzma_easy_(enc|dec)oder_memusage() better too. >+ 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/api/lzma/container.h | 9 +++++++++ >- 1 file changed, 9 insertions(+) >+ 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 4a9905302a9e4a1601ae09d650d3f08ce98ae9ee >+commit 41838dcc26375f6aa393a63e4d81e2f4d223de07 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-11 20:59:07 +0300 >+Date: 2019-06-23 19:33:55 +0300 > >- liblzma: Document lzma_raw_(enc|dec)oder_memusage() better. >- >- It didn't mention the return value that is used if >- an error occurs. >+ tuklib_integer: Silence warnings from -Wsign-conversion. > >- src/liblzma/api/lzma/filter.h | 8 ++++++-- >- 1 file changed, 6 insertions(+), 2 deletions(-) >+ src/common/tuklib_integer.h | 6 +++--- >+ 1 file changed, 3 insertions(+), 3 deletions(-) > >-commit 0badb0b1bd649163322783b0bd9e590b4bc7a93d >+commit 3ce05d235f736d392347a05086b8033416874b87 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-11 19:28:18 +0300 >+Date: 2019-06-20 19:40:30 +0300 > >- liblzma: Use memzero() to initialize supported_actions[]. >+ tuklib_integer: Fix usage of conv macros. > >- This is cleaner and makes it simpler to add new members >- to lzma_action enumeration. >+ Use a temporary variable instead of e.g. >+ conv32le(unaligned_read32ne(buf)) because the macro can >+ evaluate its argument multiple times. > >- src/liblzma/common/common.c | 6 ++---- >- 1 file changed, 2 insertions(+), 4 deletions(-) >+ src/common/tuklib_integer.h | 12 ++++++++---- >+ 1 file changed, 8 insertions(+), 4 deletions(-) > >-commit a7934c446a58e20268689899d2a39f50e571f251 >+commit b525b0c0ef40cd89b69294c9b8d57f4a8db58e1f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-11 19:26:27 +0300 >+Date: 2019-06-03 20:44:19 +0300 > >- liblzma: API comment about lzma_allocator with threaded coding. >+ Update THANKS. > >- src/liblzma/api/lzma/base.h | 18 +++++++++++++----- >- 1 file changed, 13 insertions(+), 5 deletions(-) >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) > >-commit 5eefc0086d24a65e136352f8c1d19cefb0cbac7a >+commit 039a168e8cf201d5104a25ec41f0cf25eda6cc53 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-11 19:16:30 +0300 >+Date: 2019-06-03 20:41:54 +0300 > >- liblzma: Add an internal function lzma_mt_block_size(). >+ liblzma: Fix comments. > >- This is based lzma_chunk_size() that was included in some >- development version of liblzma. >+ Thanks to Bruce Stark. > >- src/liblzma/common/filter_encoder.c | 46 ++++++++++++++++++------------------- >- src/liblzma/common/filter_encoder.h | 4 ++-- >- 2 files changed, 24 insertions(+), 26 deletions(-) >+ 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 d1199274758049fc523d98c5b860ff814a799eec >+commit c460f6defebc5a81bbca90adc2476154ca244f69 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-11 13:59:50 +0300 >+Date: 2019-06-02 00:50:59 +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. >+ liblzma: Fix one more unaligned read to use unaligned_read16ne(). > >- src/liblzma/common/stream_buffer_encoder.c | 20 +++++++++++++------- >- 1 file changed, 13 insertions(+), 7 deletions(-) >+ src/liblzma/lz/lz_encoder_hash.h | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 3b22fc2c87ec85fcdd385c163b68fc49c97aa848 >+commit c81d77c537f0b8c8672868e1dc6cf7290ce4a25b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-11 13:28:40 +0300 >+Date: 2019-06-01 21:41:55 +0300 > >- liblzma: Fix API docs to mention LZMA_UNSUPPORTED_CHECK. >- >- This return value was missing from the API comments of >- four functions. >+ Update THANKS. > >- src/liblzma/api/lzma/block.h | 1 + >- src/liblzma/api/lzma/container.h | 3 +++ >- 2 files changed, 4 insertions(+) >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) > >-commit 71b9380145dccf001f22e66a06b9d508905c25ce >+commit 386394fc9fcde2615391f804eaa466749f96f4ef > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-11 13:21:28 +0300 >+Date: 2019-06-01 21:36:13 +0300 > >- liblzma: Validate encoder arguments better. >+ liblzma: memcmplen: Use ctz32() from tuklib_integer.h. > >- 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 <lasse.collin@tukaani.org> >-Date: 2011-04-11 09:57:30 +0300 >- >- xz: Move the description of --block-size in --long-help. >+ The same compiler-specific #ifdefs are already in tuklib_integer.h > >- src/xz/message.c | 8 ++++---- >- 1 file changed, 4 insertions(+), 4 deletions(-) >+ src/liblzma/common/memcmplen.h | 10 +--------- >+ 1 file changed, 1 insertion(+), 9 deletions(-) > >-commit cd3086ff443bb282bdf556919c28b3e3cbed8169 >+commit 264ab971ce2994baac41b1579c9c35aba7743fc8 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-11 09:55:35 +0300 >+Date: 2019-06-01 21:30:03 +0300 > >- Docs: Document --single-stream and --block-size. >+ tuklib_integer: Cleanup MSVC-specific code. > >- src/xz/xz.1 | 38 ++++++++++++++++++++++++++++++++++++-- >- 1 file changed, 36 insertions(+), 2 deletions(-) >+ src/common/tuklib_integer.h | 20 +++++++++----------- >+ 1 file changed, 9 insertions(+), 11 deletions(-) > >-commit fb64a4924334e3c440865710990fe08090f2fed0 >+commit 33773c6f2a8711d4aa6656795db52c59a28580ec > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-11 09:27:57 +0300 >+Date: 2019-06-01 19:01:21 +0300 > >- liblzma: Make lzma_stream_encoder_init() static (second try). >+ liblzma: Use unaligned_readXXne functions instead of type punning. > >- It's an internal function and it's not needed by >- anything outside stream_encoder.c. >+ Now gcc -fsanitize=undefined should be clean. >+ >+ Thanks to Jeffrey Walton. > >- 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(-) >+ src/liblzma/common/memcmplen.h | 12 ++++++------ >+ src/liblzma/lzma/lzma_encoder_private.h | 2 +- >+ 2 files changed, 7 insertions(+), 7 deletions(-) > >-commit a34730cf6af4d33a4057914e57227b6dfde6567e >+commit e5f13a66567b1987e0aae42c6fdcd277bb5810ba > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-11 08:31:42 +0300 >+Date: 2019-06-01 18:46:54 +0300 > >- Revert "liblzma: Make lzma_stream_encoder_init() static." >+ tuklib_integer: Autodetect support for unaligned access on ARM. > >- This reverts commit 352ac82db5d3f64585c07b39e4759388dec0e4d7. >- I don't know what I was thinking. >+ The result is used as the default for --enable-unaligned-access. >+ The test should work with GCC and Clang. > >- 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(-) >+ m4/tuklib_integer.m4 | 11 +++++++++++ >+ 1 file changed, 11 insertions(+) > >-commit 9f0a806aef7ea79718e3f1f2baf3564295229a27 >+commit 3bc112c2d38d5f348bce7bc2422286b1692c7490 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-10 21:23:21 +0300 >+Date: 2019-06-01 18:41:16 +0300 > >- Revise mythread.h. >+ tuklib_integer: Improve unaligned memory access. > >- This adds: >+ Now memcpy() or GNU C packed structs for unaligned access instead >+ of type punning. See the comment in this commit for details. > >- - mythread_sync() macro to create synchronized blocks >+ Avoiding type punning with unaligned access is needed to >+ silence gcc -fsanitize=undefined. > >- - mythread_cond structure and related functions >- and macros for condition variables with timed >- waiting using a relative timeout >+ 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 2a22de439ec63da1927b640eda309296a1e8dce5 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2019-05-13 20:05:17 +0300 >+ >+ liblzma: Avoid memcpy(NULL, foo, 0) because it is undefined behavior. > >- - mythread_create() to create a thread with all >- signals blocked >+ I should have always known this but I didn't. Here is an example >+ as a reminder to myself: > >- Some of these wouldn't need to be inline functions, >- but I'll keep them this way for now for simplicity. >+ int mycopy(void *dest, void *src, size_t n) >+ { >+ memcpy(dest, src, n); >+ return dest == NULL; >+ } > >- 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. >+ 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. > >- configure.ac | 1 + >- src/common/mythread.h | 200 +++++++++++++++++++++++++++++++++++++++++++++----- >- 2 files changed, 181 insertions(+), 20 deletions(-) >+ 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 352ac82db5d3f64585c07b39e4759388dec0e4d7 >+commit d3fc850cfedc058247d9e334ce59bbc8f2286d8a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-10 20:37:36 +0300 >+Date: 2019-05-11 20:56:08 +0300 > >- liblzma: Make lzma_stream_encoder_init() static. >+ Update THANKS. >+ >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) >+ >+commit 4adb8288ab61d5f14e212007b8742df0710baf73 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 2fb0ddaa557ce86e38fe06439930fa8665f092fd >+Author: Antoine CÅur <antoine.coeur@ef.com> >+Date: 2019-05-08 13:30:57 +0800 >+ >+ spelling >+ >+ Doxyfile.in | 2 +- >+ NEWS | 2 +- >+ doc/examples/11_file_info.c | 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/file_info.c | 4 ++-- >+ 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/list.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 +- >+ 22 files changed, 26 insertions(+), 26 deletions(-) >+ >+commit 4ed339606156bd313ed99237485cb8ed0362d64f >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2019-05-01 18:43:10 +0300 >+ >+ xz: In xz -lvv look at the widths of the check names too. > >- It's an internal function and it's not needed by >- anything outside stream_encoder.c. >+ Now the widths of the check names is used to adjust the width >+ of the Check column. This way there no longer is a need to restrict >+ the widths of the check names to be at most ten terminal-columns. > >- 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(-) >+ src/xz/list.c | 32 ++++++++++++++++++++++++++------ >+ 1 file changed, 26 insertions(+), 6 deletions(-) > >-commit 9e807fe3fe79618ac48f58207cf7082ea20a6928 >+commit 2f4281a1001dcf7fdf1418c0c0d246c16561fb65 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-10 14:58:10 +0300 >+Date: 2019-05-01 18:33:25 +0300 > >- DOS: Update the docs and include notes about 8.3 filenames. >+ xz: Fix xz -lvv column alignment to look at the translated strings. > >- dos/{README => INSTALL.txt} | 13 +---- >- dos/README.txt | 123 ++++++++++++++++++++++++++++++++++++++++++++ >- 2 files changed, 125 insertions(+), 11 deletions(-) >+ src/xz/list.c | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit ebd54dbd6e481d31e80757f900ac8109ad1423c6 >+commit 01d01b7c7c0b8eaf7f780a5584ec52c22d10fa4a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-10 13:09:42 +0300 >+Date: 2019-05-01 16:52:36 +0300 > >- xz/DOS: Add experimental 8.3 filename support. >+ Update THANKS. >+ >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) >+ >+commit 64030c6b17f7743df03a9948a0ccfcdf40c6b97c >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 2dc9117f5fbfab31444a3ca1e55795ccfa8a9f51 >+Author: Julien Marrec <julien.marrec@gmail.com> >+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 ac31413916fa9b11bab17f0f0aa63e2869360f6f >+Author: Julien Marrec <julien.marrec@gmail.com> >+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 be25a0c37ba92a20c390b4d17fe502457fe96b71 >+Author: Julien Marrec <julien.marrec@gmail.com> >+Date: 2019-04-25 17:39:32 +0200 >+ >+ Windows: Duplicate windows/vs2017 before upgrading >+ >+ windows/vs2019/config.h | 148 ++++++++++++++ >+ windows/vs2019/liblzma.vcxproj | 356 ++++++++++++++++++++++++++++++++++ >+ windows/vs2019/liblzma_dll.vcxproj | 385 +++++++++++++++++++++++++++++++++++++ >+ windows/vs2019/xz_win.sln | 48 +++++ >+ 4 files changed, 937 insertions(+) >+ >+commit d0e58b3a51e8e616f3dc26ec7b7e4aa0fa6991ad >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2019-03-04 22:49:04 +0200 >+ >+ README: Update translation instructions. > >- 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. >+ XZ Utils is now part of the Translation Project >+ <https://translationproject.org/>. > >- src/xz/suffix.c | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- >- 1 file changed, 167 insertions(+), 9 deletions(-) >+ README | 32 +++++++++++++------------------- >+ 1 file changed, 13 insertions(+), 19 deletions(-) > >-commit cd4fe97852bcaeffe674ee51b4613709292a0972 >+commit a750c35a7d45a16c11c1d40fecee8443c32a9996 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-10 12:47:47 +0300 >+Date: 2019-03-04 21:20:39 +0200 > >- xz/DOS: Be more careful with the destination file. >+ xz: Automatically align column headings in xz -lvv. >+ >+ src/xz/list.c | 263 ++++++++++++++++++++++++++++++++++++++++++++++------------ >+ 1 file changed, 212 insertions(+), 51 deletions(-) >+ >+commit 6cb42e8aa1dc37bf403a9f5acbd07e86036b7e77 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2019-03-04 01:07:59 +0200 >+ >+ xz: Automatically align strings ending in a colon in --list output. > >- 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. >+ This should avoid alignment errors in translations with these >+ strings. >+ >+ src/xz/list.c | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++------- >+ 1 file changed, 102 insertions(+), 12 deletions(-) >+ >+commit 1e3f29b62f2c03e50fc9ebea7b83c1497dd35484 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2019-01-13 17:29:23 +0200 >+ >+ Windows/VS2017: Omit WindowsTargetPlatformVersion from project files. > >- If the generated output file refers to a special file >- like "con" or "prn", refuse to write to it even if --force >- is used. >+ 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". > >- src/xz/file_io.c | 35 +++++++++++++++++++++++++++++++++-- >- 1 file changed, 33 insertions(+), 2 deletions(-) >+ windows/INSTALL-MSVC.txt | 4 ++++ >+ windows/vs2017/liblzma.vcxproj | 1 - >+ windows/vs2017/liblzma_dll.vcxproj | 1 - >+ 3 files changed, 4 insertions(+), 2 deletions(-) > >-commit 607f9f98ae5ef6d49f4c21c806d462bf6b3d6796 >+commit 4d86076332aece6314063d3712a5f364172bbb0f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-09 18:29:30 +0300 >+Date: 2018-12-20 20:42:29 +0200 > > Update THANKS. > > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit fca396b37410d272b754843a5dc13847be443a3a >+commit b55d79461d1f6aeaac03c7dae84481e5eb8bea4c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-09 18:28:58 +0300 >+Date: 2018-12-14 20:34:30 +0200 > >- liblzma: Add missing #ifdefs to filter_common.c. >+ xz: Fix a crash in progress indicator when in passthru mode. > >- Passing --disable-decoders to configure broke a few >- encoders due to missing #ifdefs in filter_common.c. >+ "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(). > >- Thanks to Jason Gorski for the patch. >+ 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 <Filip.Palian@pjwstk.edu.pl> for >+ the bug report. > >- src/liblzma/common/filter_common.c | 6 +++--- >- 1 file changed, 3 insertions(+), 3 deletions(-) >+ src/xz/coder.c | 11 +++++++---- >+ src/xz/message.c | 18 ++++++++++++++++-- >+ src/xz/message.h | 3 ++- >+ 3 files changed, 25 insertions(+), 7 deletions(-) > >-commit b03f6cd3ebadd675f2cc9d518cb26fa860269447 >+commit 4ae5526de013efd1021686fa80bdd10cf1cb9c56 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-09 15:24:59 +0300 >+Date: 2018-11-22 17:20:31 +0200 > >- xz: Avoid unneeded fstat() on DOS-like systems. >+ xz: Update man page timestamp. > >- src/xz/file_io.c | 14 ++++++++------ >- 1 file changed, 8 insertions(+), 6 deletions(-) >+ src/xz/xz.1 | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 335fe260a81f61ec99ff5940df733b4c50aedb7c >+commit 6a36d0d5f49e0080ff64dd9ef250abd489bea2ad >+Author: Pavel Raiskup <praiskup@redhat.com> >+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 9eca51ef805ed8002a851df1b4995d71826c8b6e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-09 15:11:13 +0300 >+Date: 2018-11-02 20:40:48 +0200 > >- xz: Minor internal changes to handling of --threads. >+ Update THANKS. >+ >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) >+ >+commit 106d1a663d4ba42b63231caa289f531548df81c1 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2018-11-02 20:18:45 +0200 >+ >+ Tests: Add a fuzz test program and a config file for OSS-Fuzz. > >- Now it always defaults to one thread. Maybe this >- will change again if a threading method is added >- that doesn't affect memory usage. >+ Thanks to Bhargava Shastry and Github user pdknsk. > >- src/xz/args.c | 4 ++-- >- src/xz/hardware.c | 24 ++++++++++++------------ >- src/xz/hardware.h | 9 ++++----- >- 3 files changed, 18 insertions(+), 19 deletions(-) >+ tests/Makefile.am | 1 + >+ tests/ossfuzz/Makefile | 7 ++++ >+ tests/ossfuzz/config/fuzz.dict | 2 + >+ tests/ossfuzz/config/fuzz.options | 2 + >+ tests/ossfuzz/fuzz.c | 82 +++++++++++++++++++++++++++++++++++++++ >+ 5 files changed, 94 insertions(+) > >-commit 9edd6ee895fbe71d245a173f48e511f154a99875 >+commit a18ae42a79a19b1394b41eb3e238139fd28012ec > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-08 17:53:05 +0300 >+Date: 2018-10-26 22:49:10 +0300 > >- xz: Change size_t to uint32_t in a few places. >+ liblzma: Don't verify header CRC32s if building for fuzz testing. >+ >+ FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is #defined when liblzma >+ is being built for fuzz testing. >+ >+ Most fuzzed inputs would normally get rejected because of incorrect >+ CRC32 and the actual header decoding code wouldn't get fuzzed. >+ Disabling CRC32 checks avoids this problem. The fuzzer program >+ must still use LZMA_IGNORE_CHECK flag to disable verification of >+ integrity checks of uncompressed data. > >- src/xz/coder.c | 6 +++--- >- src/xz/coder.h | 2 +- >- 2 files changed, 4 insertions(+), 4 deletions(-) >+ src/liblzma/common/block_header_decoder.c | 5 ++++- >+ src/liblzma/common/index_decoder.c | 5 ++++- >+ src/liblzma/common/index_hash.c | 5 ++++- >+ src/liblzma/common/stream_flags_decoder.c | 10 ++++++++-- >+ 4 files changed, 20 insertions(+), 5 deletions(-) > >-commit 411013ea4506a6df24d35a060fcbd73a57b73eb3 >+commit f76f7516d6a1c832f61810c82e92d151cc80966c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-08 17:48:41 +0300 >+Date: 2018-07-27 18:10:44 +0300 > >- xz: Fix a typo in a comment. >+ 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/xz/coder.c | 2 +- >+ src/scripts/xzless.in | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit b34c5ce4b22e8d7b81f9895d15054af41d17f805 >+commit 3cbcaeb07eb7543735befd6f507fdb5fa4363cff > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-05 22:41:33 +0300 >+Date: 2018-07-27 16:02:58 +0300 > >- liblzma: Use TUKLIB_GNUC_REQ to check GCC version in sha256.c. >+ 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/check/sha256.c | 6 +++--- >- 1 file changed, 3 insertions(+), 3 deletions(-) >+ src/liblzma/common/index.c | 4 ++-- >+ 1 file changed, 2 insertions(+), 2 deletions(-) > >-commit db33117cc85c17e0b897b5312bd5eb43aac41c03 >+commit 76762ae6098ec55c326f4b4b4a42e8c1918ee81f > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-05 17:12:20 +0300 >+Date: 2018-05-19 21:23:25 +0300 > >- Build: Upgrade m4/acx_pthread.m4 to the latest version. >- >- It was renamed to ax_pthread.m4 in Autoconf Archive. >+ liblzma: Improve lzma_properties_decode() API documentation. > >- configure.ac | 2 +- >- m4/{acx_pthread.m4 => ax_pthread.m4} | 170 ++++++++++++++++++----------------- >- 2 files changed, 88 insertions(+), 84 deletions(-) >+ src/liblzma/api/lzma/filter.h | 7 ++++--- >+ 1 file changed, 4 insertions(+), 3 deletions(-) > >-commit 1039bfcfc098b69d56ecb39d198a092552eacf6d >+commit 2267f5b0d20a5d24e93fcd9f72ea7eeb0d89708c > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-05 15:27:26 +0300 >+Date: 2018-04-29 18:58:19 +0300 > >- xz: Use posix_fadvise() if it is available. >+ Bump the version number to 5.3.1alpha. > >- configure.ac | 3 +++ >- src/xz/file_io.c | 15 +++++++++++++++ >- 2 files changed, 18 insertions(+) >+ src/liblzma/api/lzma/version.h | 2 +- >+ src/liblzma/liblzma.map | 2 +- >+ 2 files changed, 2 insertions(+), 2 deletions(-) > >-commit 1ef3cf44a8eb9512480af4482a5232ea08363b14 >+commit cee3021d30704858e4bdd22240e7d28e570d7451 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-05 15:13:29 +0300 >+Date: 2018-04-29 18:48:00 +0300 > >- xz: Call lzma_end(&strm) before exiting if debugging is enabled. >+ extra/scanlzma: Fix compiler warnings. > >- src/xz/coder.c | 10 ++++++++++ >- src/xz/coder.h | 5 +++++ >- src/xz/main.c | 4 ++++ >- 3 files changed, 19 insertions(+) >+ extra/scanlzma/scanlzma.c | 6 +++++- >+ 1 file changed, 5 insertions(+), 1 deletion(-) > >-commit bd432015d33dcade611d297bc01eb0700088ef6c >+commit c5c7ceb08a011b97d261798033e2c39613a69eb7 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-02 14:49:56 +0300 >+Date: 2018-04-29 18:44:47 +0300 > >- liblzma: Fix a memory leak in stream_encoder.c. >+ DOS: Add file_info.c to the list of files to build. >+ >+ dos/Makefile | 1 + >+ 1 file changed, 1 insertion(+) >+ >+commit 114cab97af766b21e0fc8620479202fb1e7a5e41 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2018-04-29 18:33:10 +0300 >+ >+ Update NEWS for 5.3.1alpha. >+ >+ NEWS | 11 +++++++++++ >+ 1 file changed, 11 insertions(+) >+ >+commit b8139e11c512bbf32bf58ab0689f9bb6c52819da >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2018-04-29 18:15:37 +0300 >+ >+ Add NEWS for 5.2.4. >+ >+ NEWS | 27 +++++++++++++++++++++++++++ >+ 1 file changed, 27 insertions(+) >+ >+commit 47b59d47cfd904a420fbd45629d168ca1973721d >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2018-02-06 19:36:30 +0200 >+ >+ Update THANKS. >+ >+ THANKS | 2 ++ >+ 1 file changed, 2 insertions(+) >+ >+commit bc197991690ede24ab143665b5b0f0f9cb35cc46 >+Author: Ben Boeckel <mathstuf@gmail.com> >+Date: 2018-01-29 13:58:18 -0500 >+ >+ nothrow: use noexcept for C++11 and newer > >- 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. >+ In C++11, the `throw()` specifier is deprecated and `noexcept` is >+ preffered instead. > >- src/liblzma/common/stream_encoder.c | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >+ src/liblzma/api/lzma.h | 6 +++++- >+ 1 file changed, 5 insertions(+), 1 deletion(-) > >-commit 16889013214e7620d204b6e6c1bf9f3103a13655 >+commit fb6d4f83cb6e144734f2a4216bb117bd56dc3cb5 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-04-01 08:47:20 +0300 >+Date: 2018-02-06 18:02:48 +0200 > >- Updated NEWS for 5.0.2. >+ 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. > >- NEWS | 18 ++++++++++++++++++ >- 1 file changed, 18 insertions(+) >+ src/liblzma/rangecoder/range_common.h | 4 +--- >+ 1 file changed, 1 insertion(+), 3 deletions(-) > >-commit 85cdf7dd4e97b078e7b929e47f55a7f1da36010f >+commit bc577d35c2d0ed17f554d2d8107b2a2a9abbac76 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-03-31 15:06:58 +0300 >+Date: 2018-01-10 22:10:39 +0200 > >- Update INSTALL with another note about IRIX. >+ Update THANKS. > >- INSTALL | 4 ++++ >- 1 file changed, 4 insertions(+) >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) > >-commit c3f4995586873d6a4fb7e451010a128571a9a370 >+commit 713bbc1a80f26d34c96ed3dbb9887362204de3a1 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-03-31 12:22:55 +0300 >+Date: 2018-01-10 21:54:27 +0200 > >- Tests: Add a new file to test empty LZMA2 streams. >+ tuklib_integer: New Intel C compiler needs immintrin.h. >+ >+ Thanks to Melanie Blower (Intel) for the patch. > >- tests/files/README | 4 ++++ >- tests/files/good-1-lzma2-5.xz | Bin 0 -> 52 bytes >+ src/common/tuklib_integer.h | 11 +++++++++++ >+ 1 file changed, 11 insertions(+) >+ >+commit a0ee1afbd99da138b559cb27fa2022e7f1ab44f3 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2017-09-24 20:04:24 +0300 >+ >+ Update THANKS. >+ >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) >+ >+commit a1e2c568de29c0b57d873eab40a2879b749da429 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 cea5cf8d26c9d1dc30a808614d79c0b25640e15e >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2017-09-16 12:56:20 +0300 >+ >+ Windows: Update VS2017 project files to include file info decoder. >+ >+ windows/vs2017/liblzma.vcxproj | 2 ++ >+ windows/vs2017/liblzma_dll.vcxproj | 2 ++ > 2 files changed, 4 insertions(+) > >-commit 0d21f49a809dc2088da6cc0da7f948404df7ecfa >+commit 95d563db3ee497b223e522b699c4d4c29943eef0 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-03-31 11:54:48 +0300 >+Date: 2017-09-16 12:54:23 +0300 > >- liblzma: Fix decoding of LZMA2 streams having no uncompressed data. >+ Windows: Add project files for VS2017. > >- 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(-) >+ These files match the v5.2 branch (no file info decoder). > >-commit 40277998cb9bad564ce4827aff152e6e1c904dfa >+ 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 ab72416d62ea8f50ad31d5b8545fcb6a2bf96b73 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-03-24 01:42:49 +0200 >+Date: 2017-09-16 12:45:50 +0300 > >- Scripts: Better fix for xzgrep. >+ Windows: Update VS2013 project files to include file info decoder. >+ >+ windows/vs2013/liblzma.vcxproj | 2 ++ >+ windows/vs2013/liblzma_dll.vcxproj | 2 ++ >+ 2 files changed, 4 insertions(+) >+ >+commit 82388980187b0e3794d187762054200bbdcc9a53 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 94e3f986aa4e14b4ff01ac24857f499630d6d180 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 0b0e1e6803456aac641a59332200f8e95e2b7ea8 >+Author: Alexey Tourbin <alexey.tourbin@gmail.com> >+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 a015cd1f90116e655be4eaf4aad42c4c911c2807 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2017-05-23 18:34:43 +0300 >+ >+ xz: Fix "xz --list --robot missing_or_bad_file.xz". > >- Now it uses "grep -q". >+ It ended up printing an uninitialized char-array when trying to >+ print the check names (column 7) on the "totals" line. > >- Thanks to Gregory Margo. >- >- src/scripts/xzgrep.in | 8 ++++++-- >+ 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 2118733045ad0ca183a3f181a0399baf876983a6 >+ >+commit c2e29f06a7d1e3ba242ac2fafc69f5d6e92f62cd > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-03-24 01:22:18 +0200 >- >- Updated THANKS. >+Date: 2017-04-24 20:20:11 +0300 > >+ Docs: Add doc/examples/11_file_info.c. >+ >+ doc/examples/11_file_info.c | 206 ++++++++++++++++++++++++++++++++++++++++++++ >+ doc/examples/Makefile | 3 +- >+ 2 files changed, 208 insertions(+), 1 deletion(-) >+ >+commit 1520f6ec808896375ac7bf778c449e0f7dea5f46 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 8269782283806c90a8509c2ac2a308344f70e171 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2017-04-24 19:48:23 +0300 >+ >+ xz: Use lzma_file_info_decoder() for --list. >+ >+ src/xz/list.c | 254 ++++++++++------------------------------------------------ >+ 1 file changed, 44 insertions(+), 210 deletions(-) >+ >+commit e353d0b1cc0d3997ae5048faa8e6786414953e06 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2017-04-24 19:35:50 +0300 >+ >+ liblzma: Add lzma_file_info_decoder(). >+ >+ src/liblzma/api/lzma/index.h | 66 ++++ >+ src/liblzma/common/Makefile.inc | 1 + >+ src/liblzma/common/file_info.c | 855 ++++++++++++++++++++++++++++++++++++++++ >+ src/liblzma/liblzma.map | 7 +- >+ 4 files changed, 928 insertions(+), 1 deletion(-) >+ >+commit 144ef9e19e9496c995b21505dd1e111c442968d1 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 8c9842c265993d7dd4039f732d3546267fb5ecc4 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2017-04-21 15:05:16 +0300 >+ >+ liblzma: Rename LZMA_SEEK to LZMA_SEEK_NEEDED and seek_in to seek_pos. >+ >+ src/liblzma/api/lzma/base.h | 18 +++++++++--------- >+ src/liblzma/common/common.c | 2 +- >+ src/xz/message.c | 2 +- >+ 3 files changed, 11 insertions(+), 11 deletions(-) >+ >+commit 662b27c417cab248cb365dd7682121bdec4d5ae7 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 c28f0b3d00af87b92dda229831548d8eb0067d1d >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2017-04-05 18:47:22 +0300 >+ >+ xz: Add io_seek_src(). >+ >+ src/xz/file_io.c | 20 +++++++++++++++++--- >+ src/xz/file_io.h | 13 +++++++++++++ >+ 2 files changed, 30 insertions(+), 3 deletions(-) >+ >+commit bba477257d7319c8764890f3669175b866d24944 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 310d19816d1652b0c8bb1b82574d46345d924752 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2017-03-30 20:03:05 +0300 >+ >+ liblzma: Make lzma_index_decoder_init() visible to other liblzma funcs. >+ >+ This is to allow other functions to use it without going >+ via the public API (lzma_index_decoder()). >+ >+ src/liblzma/common/Makefile.inc | 1 + >+ src/liblzma/common/index_decoder.c | 10 +++++----- >+ src/liblzma/common/index_decoder.h | 24 ++++++++++++++++++++++++ >+ 3 files changed, 30 insertions(+), 5 deletions(-) >+ >+commit a27920002dbc469f778a134fc665b7c3ea73701b >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2017-03-30 20:00:09 +0300 >+ >+ liblzma: Add generic support for input seeking (LZMA_SEEK). >+ >+ Also mention LZMA_SEEK in xz/message.c to silence a warning. >+ >+ src/liblzma/api/lzma/base.h | 31 ++++++++++++++++++++++++++++++- >+ src/liblzma/common/common.c | 12 +++++++++++- >+ src/xz/message.c | 1 + >+ 3 files changed, 42 insertions(+), 2 deletions(-) >+ >+commit a0b1dda409bc3e6e2957a2651663fc411d2caf2d >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 84462afaada61379f5878e46f8f00e25a1cdcf29 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 cbc74017939690d13441b8926bb743fb03211b83 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 78ae13bced912b1b92ae927992c99cbcc463cae7 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2016-12-30 13:25:10 +0200 >+ >+ Update NEWS for 5.2.3. >+ >+ NEWS | 39 +++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 39 insertions(+) >+ >+commit 0297863fdb453aed1a25eb025f3ba7bacbbb1357 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2016-12-26 20:55:52 +0200 >+ >+ Document --enable-sandbox configure option in INSTALL. >+ >+ INSTALL | 23 +++++++++++++++++++++++ >+ 1 file changed, 23 insertions(+) >+ >+commit d4a0462abe5478193521c14625e1c81fead87f9f >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 a01794c52add98263b49119842c3e7141d1b9ced >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2016-10-24 18:53:25 +0300 >+ >+ Update THANKS. >+ > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit c7210d9a3fca6f31a57208bfddfc9ab20a2e097a >+commit df8f446e3ad47e5148b8c8d8b6e519d3ce29cb9d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-03-24 01:21:32 +0200 >+Date: 2016-10-24 18:51:36 +0300 > >- Scripts: Fix xzgrep -l. >+ tuklib_cpucores: Add support for sched_getaffinity(). > >- 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". >+ 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. > >- Thanks to Gregory Margo. >- >- src/scripts/xzgrep.in | 4 ++-- >- 1 file changed, 2 insertions(+), 2 deletions(-) >- >-commit 4eb83e32046a6d670862bc91c3d82530963b455e >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-03-19 13:08:22 +0200 >- >- Scripts: Add lzop (.lzo) support to xzdiff and xzgrep. >+ 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. > >- 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(-) >+ m4/tuklib_cpucores.m4 | 30 +++++++++++++++++++++++++++++- >+ src/common/tuklib_cpucores.c | 9 +++++++++ >+ 2 files changed, 38 insertions(+), 1 deletion(-) > >-commit 923b22483bd9356f3219b2b784d96f455f4dc499 >+commit 446e4318fa79788e09299d5953b5dd428953d14b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-03-18 19:10:30 +0200 >+Date: 2016-06-30 20:27:36 +0300 > >- xz: Add --block-size=SIZE. >+ xz: Fix copying of timestamps on Windows. > >- This uses LZMA_FULL_FLUSH every SIZE bytes of input. >+ xz used to call utime() on Windows, but its result gets lost >+ on close(). Using _futime() seems to work. > >- 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 >+ 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 1b0ac0c53c761263e91e34195cb21dfdcfeac0bd > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-03-18 18:19:19 +0200 >- >- xz: Add --single-stream. >+Date: 2016-06-16 22:46:02 +0300 >+ >+ xz: Silence warnings from -Wlogical-op. > >- This can be useful when there is garbage after the >- compressed stream (.xz, .lzma, or raw stream). >+ Thanks to Evan Nemerson. >+ >+ src/xz/file_io.c | 12 ++++++++++-- >+ 1 file changed, 10 insertions(+), 2 deletions(-) >+ >+commit c83b7a03342c3325ff10400b22ee21edfcd1e026 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2016-04-10 20:55:49 +0300 >+ >+ Build: Fix = to += for xz_SOURCES in src/xz/Makefile.am. > >- 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 >+ Thanks to Christian Kujau. >+ >+ src/xz/Makefile.am | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) >+ >+commit ade31a2bfb95c94d05fbfc0ecbba5d6377f2506e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-02-04 22:49:31 +0200 >- >- xz: Clean up suffix.c. >+Date: 2016-04-10 20:54:17 +0300 >+ >+ Build: Bump GNU Gettext version requirement to 0.19. > >- 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 >+ 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 ac398c3bafa6e4c80e20571373a96947db863b3d > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-02-04 11:29:47 +0200 >- >- xz: Check if the file already has custom suffix when compressing. >+Date: 2016-03-13 20:21:49 +0200 >+ >+ liblzma: Disable external SHA-256 by default. > >- 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 >+ 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 6fd5ecb589a9fdd7a576ea48c4850d496bab9ce5 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-02-02 23:01:51 +0200 >- >- Updated THANKS. >+Date: 2016-03-10 20:27:05 +0200 > >+ Update THANKS. >+ > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 4ebe65f839613f27f127bab7b8c347d982330ee3 >+commit 473ef0dc69a30e64d5fa0d34aca02f7309faa3e9 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-02-02 23:00:33 +0200 >+Date: 2016-03-10 20:26:49 +0200 > >- Translations: Add Polish translation. >+ Build: Avoid SHA256_Init on FreeBSD and MINIX 3. > >- Thanks to Jakub Bogusz. >- >- po/LINGUAS | 1 + >- po/pl.po | 825 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- 2 files changed, 826 insertions(+) >+ 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. > >-commit fc1d292dca1925dfd17174f443f91a696ecd5bf8 >+ configure.ac | 27 +++++++++++++++++++++------ >+ 1 file changed, 21 insertions(+), 6 deletions(-) >+ >+commit faf302137e54d605b44ecf0373cb51a6403a2de1 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-02-02 22:24:00 +0200 >+Date: 2015-11-08 20:16:10 +0200 > >- Updated THANKS. >+ tuklib_physmem: Hopefully silence a warning on Windows. > >+ src/common/tuklib_physmem.c | 3 ++- >+ 1 file changed, 2 insertions(+), 1 deletion(-) >+ >+commit e52e9151cf8613022d1de4712ff39dbcb666e991 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-11-04 23:17:43 +0200 >+ >+ Update THANKS. >+ > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit 6dd061adfd2775428b079eb03d6fd47d7c0f1ffe >-Merge: 9d542ce 5fbce0b >+commit 14115f84a38161d55eaa2d070f08739bde37e966 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-02-06 20:13:01 +0200 >+Date: 2015-11-04 23:14:00 +0200 > >- Merge commit '5fbce0b8d96dc96775aa0215e3581addc830e23d' >+ 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. > >-commit 5fbce0b8d96dc96775aa0215e3581addc830e23d >+ src/liblzma/lz/lz_encoder.c | 4 ++++ >+ 1 file changed, 4 insertions(+) >+ >+commit f4c95ba94beb71a608eb6eadbf82b44f53a0260e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-01-28 20:16:57 +0200 >+Date: 2015-11-03 20:55:45 +0200 > >- Update NEWS for 5.0.1. >+ 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. > >- NEWS | 14 ++++++++++++++ >- 1 file changed, 14 insertions(+) >+ 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 03ebd1bbb314f9f204940219a835c883bf442475 >+commit c7bc20a6f3e71920871d48db31a79ab58b5a0a4b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-01-26 12:19:08 +0200 >+Date: 2015-11-03 20:47:07 +0200 > >- xz: Fix --force on setuid/setgid/sticky and multi-hardlink files. >+ Build: Disable xzdec, lzmadec, and lzmainfo when they cannot be built. > >- xz didn't compress setuid/setgid/sticky files and files >- with multiple hard links even with --force. This bug was >- introduced in 23ac2c44c3ac76994825adb7f9a8f719f78b5ee4. >+ 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 5cbca1205deeb6fb7afe7a864fa68a57466d928a >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 af13781886c8e7a0aabebb5141ea282dc364f5c6 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-11-03 20:31:31 +0200 >+ >+ Windows/MSVC: Update config.h. >+ >+ windows/config.h | 6 ++++++ >+ 1 file changed, 6 insertions(+) >+ >+commit 9fa5949330f162c5a2f6653f83025327837e8f39 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-11-03 20:29:58 +0200 >+ >+ DOS: Update config.h. >+ >+ dos/config.h | 6 ++++++ >+ 1 file changed, 6 insertions(+) >+ >+commit cb3111e3ed84152912b5138d690c8d9f00c6ef02 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-11-03 20:29:33 +0200 >+ >+ xz: Make xz buildable even when encoders or decoders are disabled. > >- Thanks to Charles Wilson. >- >- src/xz/file_io.c | 15 +++++++-------- >- 1 file changed, 7 insertions(+), 8 deletions(-) >- >-commit 9d542ceebcbe40b174169c132ccfcdc720ca7089 >-Merge: 4f2c69a 7bd0a5e >+ 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 4cc584985c0b7a13901da1b7a64ef9f7cc36e8ab > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-01-19 11:45:35 +0200 >- >- Merge branch 'v5.0' >+Date: 2015-11-03 18:06:40 +0200 > >-commit 7bd0a5e7ccc354f7c2e95c8bc27569c820f6a136 >+ 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 23ed1d41489f632155bbc9660f323d57e09da180 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-01-18 21:25:24 +0200 >+Date: 2015-11-03 17:54:48 +0200 > >- Updated THANKS. >+ 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 b0bc3e03852af13419ea2960881824258d451117 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 c6bf438ab39e0fb4a47d3c81725c227919502726 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 e18adc56f2262aa9394d46681e9e4b9981ed5e97 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 282e768a1484e88c8b7ec35655ee4959954ec87a >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-10-12 21:08:42 +0300 >+ >+ Update THANKS. >+ > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit f71c4e16e913f660977526f0ef8d2acdf458d7c9 >+commit 372e402713a1d4337ffce5f56d5c5c9ed99a66d0 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2011-01-18 21:23:50 +0200 >+Date: 2015-10-12 21:07:41 +0300 > >- Add alloc_size and malloc attributes to a few functions. >+ Tests: Add tests for the two bugs fixed in index.c. >+ >+ tests/test_index.c | 30 ++++++++++++++++++++++++++++++ >+ 1 file changed, 30 insertions(+) >+ >+commit 21515d79d778b8730a434f151b07202d52a04611 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-10-12 20:45:15 +0300 >+ >+ liblzma: Fix lzma_index_dup() for empty Streams. > >- 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 >+ 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 09f395b6b360c0b13e8559eece1d179b908ebd3a > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-12-13 16:36:33 +0200 >- >- Scripts: Fix gzip and bzip2 support in xzdiff. >+Date: 2015-10-12 20:31:44 +0300 > >- src/scripts/xzdiff.in | 12 ++++++------ >+ liblzma: Add a note to index.c for those using static analyzers. >+ >+ src/liblzma/common/index.c | 3 +++ >+ 1 file changed, 3 insertions(+) >+ >+commit 3bf857edfef51374f6f3fffae3d817f57d3264a0 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 7f05803979b4b79642d5be4218a79da7a0b12c47 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-09-29 13:57:28 +0300 >+ >+ Update NEWS for 5.2.2. >+ >+ NEWS | 18 ++++++++++++++++++ >+ 1 file changed, 18 insertions(+) >+ >+commit 397fcc0946315b55c3c6d80e37e82a2a78bc15c1 >+Author: Hauke Henningsen <sqrt@entless.org> >+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 <maan@tuebingen.mpg.de> >+ >+ * Update after msgmerge >+ >+ po/de.po | 383 ++++++++++++++++++++++++++++++++------------------------------- >+ 1 file changed, 196 insertions(+), 187 deletions(-) >+ >+commit cbc9e39bae715accb44168930a71888480aad569 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 bcacd8ce7a031566858e5e03c1009064c3f1c89e >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 0275a5398c01d57b724dec7fea52dec3bd6edc6c >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 4f2c69a4e3e0aee2e37b0b1671d34086e20c8ac6 >-Merge: adb89e6 9311774 >+commit a74525cf9b945fb0b370e64cf406104beb31729b > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-12-12 23:13:22 +0200 >+Date: 2015-08-09 21:02:20 +0300 > >- Merge branch 'v5.0' >+ Windows: Omit unneeded header files from MSVC project files. > >-commit 9311774c493c19deab51ded919dcd2e9c4aa2829 >+ windows/liblzma.vcxproj | 5 ----- >+ windows/liblzma_dll.vcxproj | 5 ----- >+ 2 files changed, 10 deletions(-) >+ >+commit fbbb295a91caf39faf8838c8c39526e4cb4dc121 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-12-12 21:23:55 +0200 >+Date: 2015-07-12 20:48:19 +0300 > >- Build: Enable ASM on DJGPP by default. >+ liblzma: A MSVC-specific hack isn't needed with MSVC 2013 and newer. > >- configure.ac | 2 +- >+ src/liblzma/api/lzma.h | 18 +++++++++++++----- >+ 1 file changed, 13 insertions(+), 5 deletions(-) >+ >+commit 713dbe5c230fe00865a54f5c32358ea30f9a1156 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-06-19 20:38:55 +0300 >+ >+ Update THANKS. >+ >+ THANKS | 2 ++ >+ 1 file changed, 2 insertions(+) >+ >+commit 3a5d755d055d51f99c523b4c2952727e1e69cfa1 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 b0798c6aa6184efcefd0bdcca20f96121a13feda >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 9b02a4ffdac1b9f066658ec4c95c0834f4cd2fb7 >+Author: Andre Noll <maan@tuebingen.mpg.de> >+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 4a42aaee282fc73b482581684d65110506d5efdd >+commit c7f4041f6b8f4729f88d3bc888b2a4080ae51f72 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-12-12 16:09:42 +0200 >+Date: 2015-05-13 20:57:55 +0300 > >- Updated THANKS. >+ 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 17b29d4f0ae0f780fbd69e15a398dc478d8492f8 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 49c26920d6e2d85e5c6123e34958aed2e77485ad >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 5b2458cb244ed237efe4de1ebcf06e1b3a1f4256 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-04-20 20:20:29 +0300 >+ >+ Update THANKS. >+ > THANKS | 1 + > 1 file changed, 1 insertion(+) > >-commit ce56f63c41ee210e6308090eb6d49221fdf67d6c >+commit 6bd0349c58451b13442e8f463e35de83548bf985 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-12-12 16:07:11 +0200 >+Date: 2015-04-20 19:59:18 +0300 > >- Add missing PRIx32 and PRIx64 compatibility definitions. >+ Revert "xz: Use pipe2() if available." > >- This fixes portability to systems that lack C99 inttypes.h. >+ 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 Juan Manuel Guerrero. >- >- src/common/sysdefs.h | 9 +++++++++ >- 1 file changed, 9 insertions(+) >- >-commit e6baedddcf54e7da049ebc49183565b99facd4c7 >+ 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 fc0df0f8db87dff45543708a711e17d29c37f632 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-12-12 14:50:04 +0200 >- >- DOS-like: Treat \ and : as directory separators in addition to /. >+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 57393615b31b3788dd77280452d845bcc12d33af >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-03-31 22:20:11 +0300 >+ >+ Update THANKS. >+ >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) >+ >+commit 1238381143a9a7ce84839c2582ccd56ff750a440 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-03-31 22:19:34 +0300 >+ >+ xz: Add support for sandboxing with Capsicum. > >- 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(-) >+ 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. > >-commit adb89e68d43a4cadb0c215b45ef7a75737c9c3ec >-Merge: 7c24e0d b7afd3e >+ 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 29a087fb5a0c879f0b1bc4c6b989f7b87bacdf9e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-12-07 18:53:04 +0200 >- >- Merge branch 'v5.0' >+Date: 2015-03-31 21:12:30 +0300 > >-commit b7afd3e22a8fac115b75c738d40d3eb1de7e286f >+ 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 <sys/capability.h> 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 6e845c6a3eddf2fde9db5a29950421dff60a43ac > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-12-07 18:52:04 +0200 >+Date: 2015-03-31 19:20:24 +0300 > >- Translations: Fix Czech translation of "sparse file". >+ Add m4/ax_check_capsicum.m4 for detecting Capsicum support. > >- Thanks to Petr Hubený and Marek Äernocký. >+ 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. > >- po/cs.po | 88 ++++++++++++++++++++++++++++++++-------------------------------- >- 1 file changed, 44 insertions(+), 44 deletions(-) >+ m4/ax_check_capsicum.m4 | 86 +++++++++++++++++++++++++++++++++++++++++++++++++ >+ 1 file changed, 86 insertions(+) > >-commit 7c24e0d1b8a2e86e9263b0d56d39621e01aed7af >-Merge: b4d42f1 3e56470 >+commit 3717885f9ef2c06f1bcbad9f4c2ed2d5695f844e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-11-15 14:33:01 +0200 >- >- Merge branch 'v5.0' >+Date: 2015-03-30 22:44:02 +0300 > >-commit 3e564704bc6f463cb2db11e3f3f0dbd71d85992e >+ Bump version to 5.3.0alpha and soname to 5.3.99. >+ >+ The idea of 99 is that it looks a bit weird in this context. >+ For new features there's no API/ABI stability in devel versions. >+ >+ src/liblzma/Makefile.am | 2 +- >+ src/liblzma/api/lzma/version.h | 6 +++--- >+ 2 files changed, 4 insertions(+), 4 deletions(-) >+ >+commit eccd8155e107c5ada03d13e7730675cdf1a44ddc > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-11-15 14:28:26 +0200 >+Date: 2015-03-29 22:14:47 +0300 > >- liblzma: Document the return value of lzma_lzma_preset(). >+ Update THANKS. > >- src/liblzma/api/lzma/lzma.h | 3 +++ >- 1 file changed, 3 insertions(+) >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) > >-commit 2964d8d691ed92abdcf214888d79ad6d79774735 >-Author: Jonathan Nieder <jrnieder@gmail.com> >-Date: 2010-11-12 15:22:13 -0600 >+commit 25263fd9e7a8a913395cb93d7c104cd48c2b4a00 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-03-29 22:13:48 +0300 > >- Simplify paths in generated API docs >+ Fix the detection of installed RAM on QNX. > >- 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. >+ The earlier version compiled but didn't actually work >+ since sysconf(_SC_PHYS_PAGES) always fails (or so I was told). > >- Builds from a separate build directory with >+ 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 <lasse.collin@tukaani.org> >+Date: 2015-03-27 22:39:07 +0200 >+ >+ Fix CPU core count detection on QNX. > >- mkdir build >- cd build >- ../configure >- doxygen Doxyfile >+ 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. > >- include an even longer prefix /home/someone/src/xz/src; this >- patch has the nice side-effect of eliminating that prefix, too. >+ sysconf() works. An alternative would have been to use >+ QNX-specific SYSPAGE_ENTRY(num_cpu) from <sys/syspage.h>. > >- Fixes: http://bugs.debian.org/572273 >+ Thanks to Ole André Vadla RavnÃ¥s. > >- Doxyfile.in | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >- >-commit b4d42f1a7120e2cefeb2f14425efe2ca6db85416 >-Author: Anders F Bjorklund <afb@users.sourceforge.net> >-Date: 2010-11-05 12:56:11 +0100 >+ m4/tuklib_cpucores.m4 | 15 +++++++++++---- >+ 1 file changed, 11 insertions(+), 4 deletions(-) > >- add build script for macosx universal >+commit e0ea6737b03e83ccaff4514d00e31bb926f8f0f3 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-03-07 22:05:57 +0200 > >- macosx/build.sh | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- 1 file changed, 92 insertions(+) >+ xz: size_t/uint32_t cleanup in options.c. > >-commit 15ee6935abe4a2fc76639ee342ca2e69af3e0ad6 >-Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-11-04 18:31:40 +0200 >- >- Update the copies of GPLv2 and LGPLv2.1 from gnu.org. >+ src/xz/options.c | 12 ++++++------ >+ 1 file changed, 6 insertions(+), 6 deletions(-) >+ >+commit 8bcca29a65335fd679c13814b70b35b68fa5daed >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+Date: 2015-03-07 19:54:00 +0200 >+ >+ xz: Make arg_count an unsigned int to silence a warning. > >- 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 >+ 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 <lasse.collin@tukaani.org> >-Date: 2010-10-26 15:53:06 +0300 >- >- Merge branch 'v5.0' >+Date: 2015-03-07 19:33:17 +0200 > >-commit 37c25658efd25b034266daf87cd381d20d1df776 >+ 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 <lasse.collin@tukaani.org> >-Date: 2010-10-26 15:48:48 +0300 >+Date: 2015-02-26 20:46:14 +0200 > >- Build: Copy the example programs to $docdir/examples. >+ 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 <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+Date: 2015-02-21 23:40:26 +0200 >+ >+ liblzma: Fix a compression-ratio regression in LZMA1/2 in fast mode. > >- 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". >+ 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. > >- Makefile.am | 5 +++++ >- windows/build.bash | 3 ++- >- 2 files changed, 7 insertions(+), 1 deletion(-) >+ src/liblzma/lzma/lzma_encoder_optimum_fast.c | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit 974ebe63497bdf0d262e06474f0dd5a70b1dd000 >+commit ae984e31c167d3bc52972ec422dd1ebd5f5d5719 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-10-26 10:36:41 +0300 >- >- liblzma: Rename a few variables and constants. >+Date: 2015-02-21 23:00:19 +0200 >+ >+ xz: Fix the fcntl() usage when creating a pipe for the self-pipe trick. > >- 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. >+ 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 <lasse.collin@tukaani.org> >+Date: 2015-02-10 15:29:34 +0200 >+ >+ Update THANKS. >+ >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) >+ >+commit d935b0cdf3db440269b9d952b2b281b18f8c7b08 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+Date: 2015-02-10 15:28:30 +0200 >+ >+ tuklib_cpucores: Use cpuset_getaffinity() on FreeBSD if available. > >- 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 <lasse.collin@tukaani.org> >-Date: 2010-10-25 12:59:25 +0300 >- >- Bump version 5.1.0alpha. >+ 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. > >- src/liblzma/api/lzma/version.h | 4 ++-- >+ m4/tuklib_cpucores.m4 | 23 ++++++++++++++++++++++- >+ src/common/tuklib_cpucores.c | 18 ++++++++++++++++++ >+ 2 files changed, 40 insertions(+), 1 deletion(-) >+ >+commit eb61bc58c20769cac4d05f363b9c0e8c9c71a560 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+Date: 2015-01-26 20:40:16 +0200 >+ >+ Update THANKS. >+ >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) >+ >+commit fec88d41e672d9e197c9442aecf02bd0dfa6d516 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+Date: 2015-01-09 21:35:06 +0200 >+ >+ Update THANKS. >+ >+ THANKS | 1 + >+ 1 file changed, 1 insertion(+) >+ >+commit 4170edc914655310d2363baccf5e615e09b04911 >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+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 e45929260cd902036efd40c5610a8d0a50d5712b >+commit aae6a6aeda51cf94a47e39ad624728f9bee75e30 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-10-23 17:25:52 +0300 >+Date: 2014-12-30 11:17:16 +0200 > >- Build: Fix mydist rule when .git doesn't exist. >+ 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. > >- Makefile.am | 1 + >+ INSTALL | 4 ++++ >+ 1 file changed, 4 insertions(+) >+ >+commit 7815112153178800a3521b9f31960e7cdc26cfba >+Author: Lasse Collin <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+Date: 2014-12-21 20:48:37 +0200 >+ >+ DOS: Update Makefile. >+ >+ dos/Makefile | 1 + > 1 file changed, 1 insertion(+) > >-commit 6e1326fcdf6b6209949be57cfe3ad4b781b65168 >+commit b85ee0905ec4ab7656d22e63519fdd3bedb21f2e > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-10-23 14:15:35 +0300 >+Date: 2014-12-21 19:50:38 +0200 > >- Add NEWS for 5.0.0. >+ Windows: Fix bin_i486 to bin_i686 in build.bash. > >- NEWS | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >- 1 file changed, 62 insertions(+) >+ windows/build.bash | 2 +- >+ 1 file changed, 1 insertion(+), 1 deletion(-) > >-commit b667a3ef6338a2c1db7b7706b1f6c99ea392221c >+commit cbafa710918195dbba3db02c3fab4f0538235206 > Author: Lasse Collin <lasse.collin@tukaani.org> >-Date: 2010-10-23 14:02:53 +0300 >+Date: 2014-12-21 18:58:44 +0200 > >- Bump version to 5.0.0 and liblzma version-info to 5:0:0. >+ 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 <lasse.collin@tukaani.org> >+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 <lasse.collin@tukaani.org> >+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 | 8 ++++---- >- 2 files changed, 5 insertions(+), 5 deletions(-) >+ src/liblzma/api/lzma/version.h | 6 +++--- >+ src/liblzma/liblzma.map | 2 +- >+ 3 files changed, 5 insertions(+), 5 deletions(-) >Only in xz-5.2.5: Doxyfile.in >diff -ur xz-5.2.5/INSTALL xz-5.4.3/INSTALL >--- xz-5.2.5/INSTALL 2020-03-17 17:28:54 >+++ xz-5.4.3/INSTALL 2023-05-04 17:21:05 >@@ -142,12 +142,10 @@ > > If it is enough to build liblzma (no command line tools): > >- - There is experimental CMake support. As it is, it should be >- good enough to build static liblzma with Visual Studio. >- Building liblzma.dll might work too (if it doesn't, it should >- be fixed). The CMake support may work with MinGW or MinGW-w64. >- Read the comment in the beginning of CMakeLists.txt before >- running CMake! >+ - There is CMake support. It should be good enough to build >+ static liblzma or liblzma.dll with Visual Studio. The CMake >+ support may work with MinGW or MinGW-w64. Read the comment >+ in the beginning of CMakeLists.txt before running CMake! > > - There are Visual Studio project files under the "windows" > directory. See windows/INSTALL-MSVC.txt. In the future the >@@ -316,6 +314,18 @@ > | xz -v -0 -Csha256 > foo.xz > time xz --test foo.xz > >+ --disable-microlzma >+ Don't build MicroLZMA encoder and decoder. This omits >+ lzma_microlzma_encoder() and lzma_microlzma_decoder() >+ API functions from liblzma. These functions are needed >+ by specific applications only. They were written for >+ erofs-utils but they may be used by others too. >+ >+ --disable-lzip-decoder >+ Disable decompression support for .lz (lzip) files. >+ This omits the API function lzma_lzip_decoder() from >+ liblzma and .lz support from the xz tool. >+ > --disable-xz > --disable-xzdec > --disable-lzmadec >@@ -358,17 +368,46 @@ > pre-i686 systems, you may want to disable the assembler > code. > >+ --disable-clmul-crc >+ Disable the use carryless multiplication for CRC >+ calculation even if compiler support for it is detected. >+ The code uses runtime detection of SSSE3, SSE4.1, and >+ CLMUL instructions on x86. On 32-bit x86 this currently >+ is used only if --disable-assembler is used (this might >+ be fixed in the future). The code works on E2K too. >+ >+ If using compiler options that unconditionally allow the >+ required extensions (-msse4.1 -mpclmul) then runtime >+ detection isn't used and the generic code is omitted. >+ > --enable-unaligned-access >- Allow liblzma to use unaligned memory access for 16-bit >- and 32-bit loads and stores. This should be enabled only >- when the hardware supports this, i.e. when unaligned >- access is fast. Some operating system kernels emulate >- unaligned access, which is extremely slow. This option >- shouldn't be used on systems that rely on such emulation. >+ Allow liblzma to use unaligned memory access for 16-bit, >+ 32-bit, and 64-bit loads and stores. This should be >+ enabled only when the hardware supports this, that is, >+ when unaligned access is fast. Some operating system >+ kernels emulate unaligned access, which is extremely >+ slow. This option shouldn't be used on systems that >+ rely on such emulation. > > Unaligned access is enabled by default on x86, x86-64, >- and big endian PowerPC. >+ big endian PowerPC, some ARM, and some ARM64 systems. > >+ --enable-unsafe-type-punning >+ This enables use of code like >+ >+ uint8_t *buf8 = ...; >+ *(uint32_t *)buf8 = ...; >+ >+ which violates strict aliasing rules and may result >+ in broken code. There should be no need to use this >+ option with recent GCC or Clang versions on any >+ arch as just as fast code can be generated in a safe >+ way too (using __builtin_assume_aligned + memcpy). >+ >+ However, this option might improve performance in some >+ other cases, especially with old compilers (for example, >+ GCC 3 and early 4.x on x86, GCC < 6 on ARMv6 and ARMv7). >+ > --enable-small > Reduce the size of liblzma by selecting smaller but > semantically equivalent version of some functions, and >@@ -427,7 +466,9 @@ > > no Disable threading support. This is the > same as using --disable-threads. >- NOTE: If combined with --enable-small, the >+ NOTE: If combined with --enable-small >+ and the compiler doesn't support >+ __attribute__((__constructor__)), the > resulting liblzma won't be thread safe, > that is, if a multi-threaded application > calls any liblzma functions from more than >@@ -447,6 +488,7 @@ > auto Look for a supported sandboxing method > and use it if found. If no method is > found, then sandboxing isn't used. >+ This is the default. > > no Disable sandboxing support. > >@@ -455,6 +497,10 @@ > sandboxing. If no Capsicum support > is found, configure will give an error. > >+ pledge Use pledge(2) (OpenBSD >= 5.9) for >+ sandboxing. If pledge(2) isn't found, >+ configure will give an error. >+ > --enable-symbol-versions > Use symbol versioning for liblzma. This is enabled by > default on GNU/Linux, other GNU-based systems, and >@@ -517,7 +563,7 @@ > liblzma, pass --enable-small to configure. > > - Tell the compiler to optimize for size instead of speed. >- E.g. with GCC, put -Os into CFLAGS. >+ For example, with GCC, put -Os into CFLAGS. > > - xzdec and lzmadec will never use multithreading capabilities of > liblzma. You can avoid dependency on libpthread by passing >@@ -550,7 +596,7 @@ > a fallback xzdiff will use mkdir to securely create a temporary > directory. Having mktemp available is still recommended since the > mkdir fallback method isn't as robust as mktemp is. The original >- mktemp can be found from <http://www.mktemp.org/>. On GNU, most will >+ mktemp can be found from <https://www.mktemp.org/>. On GNU, most will > use the mktemp program from GNU coreutils instead of the original > implementation. Both mktemp versions are fine. > >diff -ur xz-5.2.5/Makefile.am xz-5.4.3/Makefile.am >--- xz-5.2.5/Makefile.am 2020-03-17 17:28:50 >+++ xz-5.4.3/Makefile.am 2023-05-04 17:21:05 >@@ -44,16 +44,30 @@ > dist_examplesold_DATA = \ > doc/examples_old/xz_pipe_comp.c \ > doc/examples_old/xz_pipe_decomp.c >+ >+# Install the Doxygen generated documentation if they were built. >+install-data-local: >+ if test -d "$(srcdir)/doc/api" ; then \ >+ $(MKDIR_P) "$(DESTDIR)$(docdir)/api" && \ >+ $(INSTALL_DATA) "$(srcdir)"/doc/api/* \ >+ "$(DESTDIR)$(docdir)/api"; \ >+ fi >+ >+# Remove the Doxygen generated documentation when uninstalling. >+uninstall-local: >+ rm -rf "$(DESTDIR)$(docdir)/api" > endif > > EXTRA_DIST = \ > po4a \ > extra \ > dos \ >+ doxygen \ > windows \ > macosx \ >+ cmake \ >+ CMakeLists.txt \ > autogen.sh \ >- Doxyfile.in \ > COPYING.GPLv2 \ > COPYING.GPLv3 \ > COPYING.LGPLv2.1 \ >@@ -64,7 +78,7 @@ > > ACLOCAL_AMFLAGS = -I m4 > >-# List of man pages to conver to PDF and plain text in the dist-hook target. >+# List of man pages to convert to PDF and plain text in the dist-hook target. > manfiles = \ > src/xz/xz.1 \ > src/xzdec/xzdec.1 \ >@@ -79,7 +93,7 @@ > dist-hook: > if test -d "$(srcdir)/.git" && type git > /dev/null 2>&1; then \ > ( cd "$(srcdir)" && git log --date=iso --stat \ >- b667a3ef6338a2c1db7b7706b1f6c99ea392221c^..HEAD ) \ >+ 6060f7dc76fd6c2a8a1f8e85d0e4d86bb78273e6^..HEAD ) \ > > "$(distdir)/ChangeLog"; \ > fi > if type groff > /dev/null 2>&1 && type ps2pdf > /dev/null 2>&1; then \ >@@ -98,6 +112,11 @@ > > "$$dest/txt/$$BASE.txt"; \ > done; \ > fi >+ if test -d "$(srcdir)/doc/api" ; then \ >+ $(MKDIR_P) "$(distdir)/doc/api" && \ >+ $(INSTALL_DATA) "$(srcdir)"/doc/api/* \ >+ "$(distdir)/doc/api"; \ >+ fi > > # This works with GNU tar and gives cleaner package than normal 'make dist'. > # This also ensures that the man page translations are up to date (dist-hook >@@ -105,6 +124,7 @@ > mydist: > sh "$(srcdir)/src/liblzma/validate_map.sh" > cd "$(srcdir)/po4a" && sh update-po >+ cd "$(srcdir)/doxygen" && sh update-doxygen > VERSION=$(VERSION); \ > if test -d "$(srcdir)/.git" && type git > /dev/null 2>&1; then \ > SNAPSHOT=`cd "$(srcdir)" && git describe --abbrev=4 | cut -b2-`; \ >diff -ur xz-5.2.5/Makefile.in xz-5.4.3/Makefile.in >--- xz-5.2.5/Makefile.in 2020-03-17 17:29:35 >+++ xz-5.4.3/Makefile.in 2023-05-04 17:31:30 >@@ -1,7 +1,7 @@ >-# Makefile.in generated by automake 1.16.1 from Makefile.am. >+# Makefile.in generated by automake 1.16.5 from Makefile.am. > # @configure_input@ > >-# Copyright (C) 1994-2018 Free Software Foundation, Inc. >+# Copyright (C) 1994-2021 Free Software Foundation, Inc. > > # This Makefile.in is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -118,7 +118,7 @@ > configure.lineno config.status.lineno > mkinstalldirs = $(install_sh) -d > CONFIG_HEADER = config.h >-CONFIG_CLEAN_FILES = Doxyfile >+CONFIG_CLEAN_FILES = > CONFIG_CLEAN_VPATH_FILES = > AM_V_P = $(am__v_P_@AM_V@) > am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) >@@ -194,8 +194,8 @@ > $(am__extra_recursive_targets) > AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ > cscope distdir distdir-am dist dist-all distcheck >-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ >- $(LISP)config.h.in >+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ >+ config.h.in > # Read a list of newline-separated strings from the standard input, > # and print each of them once, without duplicates. Input order is > # *not* preserved. >@@ -212,11 +212,8 @@ > unique=`for i in $$list; do \ > if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ > done | $(am__uniquify_input)` >-ETAGS = etags >-CTAGS = ctags >-CSCOPE = cscope >-am__DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.in \ >- $(srcdir)/config.h.in $(top_srcdir)/build-aux/compile \ >+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ >+ $(top_srcdir)/build-aux/compile \ > $(top_srcdir)/build-aux/config.guess \ > $(top_srcdir)/build-aux/config.rpath \ > $(top_srcdir)/build-aux/config.sub \ >@@ -264,6 +261,8 @@ > reldir="$$dir2" > DIST_ARCHIVES = $(distdir).tar.gz > DIST_TARGETS = dist-gzip >+# Exists only to be overridden by the user if desired. >+AM_DISTCHECK_DVI_TARGET = dvi > distuninstallcheck_listfiles = find . -type f -print > am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ > | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' >@@ -288,6 +287,8 @@ > CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ > CPP = @CPP@ > CPPFLAGS = @CPPFLAGS@ >+CSCOPE = @CSCOPE@ >+CTAGS = @CTAGS@ > CYGPATH_W = @CYGPATH_W@ > DEFS = @DEFS@ > DEPDIR = @DEPDIR@ >@@ -298,8 +299,10 @@ > ECHO_N = @ECHO_N@ > ECHO_T = @ECHO_T@ > EGREP = @EGREP@ >+ETAGS = @ETAGS@ > EXEEXT = @EXEEXT@ > FGREP = @FGREP@ >+FILECMD = @FILECMD@ > GETOPT_H = @GETOPT_H@ > GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ > GMSGFMT = @GMSGFMT@ >@@ -352,6 +355,7 @@ > PREFERABLY_POSIX_SHELL = @PREFERABLY_POSIX_SHELL@ > PTHREAD_CC = @PTHREAD_CC@ > PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ >+PTHREAD_CXX = @PTHREAD_CXX@ > PTHREAD_LIBS = @PTHREAD_LIBS@ > RANLIB = @RANLIB@ > RC = @RC@ >@@ -410,6 +414,7 @@ > prefix = @prefix@ > program_transform_name = @program_transform_name@ > psdir = @psdir@ >+runstatedir = @runstatedir@ > sbindir = @sbindir@ > sharedstatedir = @sharedstatedir@ > srcdir = @srcdir@ >@@ -455,10 +460,12 @@ > po4a \ > extra \ > dos \ >+ doxygen \ > windows \ > macosx \ >+ cmake \ >+ CMakeLists.txt \ > autogen.sh \ >- Doxyfile.in \ > COPYING.GPLv2 \ > COPYING.GPLv3 \ > COPYING.LGPLv2.1 \ >@@ -469,7 +476,7 @@ > > ACLOCAL_AMFLAGS = -I m4 > >-# List of man pages to conver to PDF and plain text in the dist-hook target. >+# List of man pages to convert to PDF and plain text in the dist-hook target. > manfiles = \ > src/xz/xz.1 \ > src/xzdec/xzdec.1 \ >@@ -531,8 +538,6 @@ > > distclean-hdr: > -rm -f config.h stamp-h1 >-Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in >- cd $(top_builddir) && $(SHELL) ./config.status $@ > > mostlyclean-libtool: > -rm -f *.lo >@@ -711,7 +716,6 @@ > distclean-tags: > -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags > -rm -f cscope.out cscope.in.out cscope.po.out cscope.files >- > distdir: $(BUILT_SOURCES) > $(MAKE) $(AM_MAKEFLAGS) distdir-am > >@@ -803,6 +807,10 @@ > tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz > $(am__post_remove_distdir) > >+dist-zstd: distdir >+ tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst >+ $(am__post_remove_distdir) >+ > dist-tarZ: distdir > @echo WARNING: "Support for distribution archives compressed with" \ > "legacy program 'compress' is deprecated." >&2 >@@ -845,6 +853,8 @@ > eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ > *.zip*) \ > unzip $(distdir).zip ;;\ >+ *.tar.zst*) \ >+ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ > esac > chmod -R a-w $(distdir) > chmod u+w $(distdir) >@@ -860,7 +870,7 @@ > $(DISTCHECK_CONFIGURE_FLAGS) \ > --srcdir=../.. --prefix="$$dc_install_base" \ > && $(MAKE) $(AM_MAKEFLAGS) \ >- && $(MAKE) $(AM_MAKEFLAGS) dvi \ >+ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ > && $(MAKE) $(AM_MAKEFLAGS) check \ > && $(MAKE) $(AM_MAKEFLAGS) install \ > && $(MAKE) $(AM_MAKEFLAGS) installcheck \ >@@ -949,6 +959,8 @@ > maintainer-clean-generic: > @echo "This command is intended for maintainers to use" > @echo "it deletes files that may require special tools to rebuild." >+@COND_DOC_FALSE@install-data-local: >+@COND_DOC_FALSE@uninstall-local: > clean: clean-recursive > > clean-am: clean-generic clean-libtool mostlyclean-am >@@ -971,8 +983,8 @@ > > info-am: > >-install-data-am: install-dist_docDATA install-dist_examplesDATA \ >- install-dist_examplesoldDATA >+install-data-am: install-data-local install-dist_docDATA \ >+ install-dist_examplesDATA install-dist_examplesoldDATA > > install-dvi: install-dvi-recursive > >@@ -1019,7 +1031,7 @@ > ps-am: > > uninstall-am: uninstall-dist_docDATA uninstall-dist_examplesDATA \ >- uninstall-dist_examplesoldDATA >+ uninstall-dist_examplesoldDATA uninstall-local > > .MAKE: $(am__recursive_targets) all install-am install-strip > >@@ -1027,31 +1039,44 @@ > am--refresh check check-am clean clean-cscope clean-generic \ > clean-libtool cscope cscopelist-am ctags ctags-am dist \ > dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \ >- dist-tarZ dist-xz dist-zip distcheck distclean \ >+ dist-tarZ dist-xz dist-zip dist-zstd distcheck distclean \ > distclean-generic distclean-hdr distclean-libtool \ > distclean-tags distcleancheck distdir distuninstallcheck dvi \ > dvi-am html html-am info info-am install install-am \ >- install-data install-data-am install-dist_docDATA \ >- install-dist_examplesDATA install-dist_examplesoldDATA \ >- install-dvi install-dvi-am install-exec install-exec-am \ >- install-html install-html-am install-info install-info-am \ >- install-man install-pdf install-pdf-am install-ps \ >- install-ps-am install-strip installcheck installcheck-am \ >- installdirs installdirs-am maintainer-clean \ >- maintainer-clean-generic mostlyclean mostlyclean-generic \ >- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ >- uninstall-am uninstall-dist_docDATA \ >- uninstall-dist_examplesDATA uninstall-dist_examplesoldDATA >+ install-data install-data-am install-data-local \ >+ install-dist_docDATA install-dist_examplesDATA \ >+ install-dist_examplesoldDATA install-dvi install-dvi-am \ >+ install-exec install-exec-am install-html install-html-am \ >+ install-info install-info-am install-man install-pdf \ >+ install-pdf-am install-ps install-ps-am install-strip \ >+ installcheck installcheck-am installdirs installdirs-am \ >+ maintainer-clean maintainer-clean-generic mostlyclean \ >+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ >+ tags tags-am uninstall uninstall-am uninstall-dist_docDATA \ >+ uninstall-dist_examplesDATA uninstall-dist_examplesoldDATA \ >+ uninstall-local > > .PRECIOUS: Makefile > > >+# Install the Doxygen generated documentation if they were built. >+@COND_DOC_TRUE@install-data-local: >+@COND_DOC_TRUE@ if test -d "$(srcdir)/doc/api" ; then \ >+@COND_DOC_TRUE@ $(MKDIR_P) "$(DESTDIR)$(docdir)/api" && \ >+@COND_DOC_TRUE@ $(INSTALL_DATA) "$(srcdir)"/doc/api/* \ >+@COND_DOC_TRUE@ "$(DESTDIR)$(docdir)/api"; \ >+@COND_DOC_TRUE@ fi >+ >+# Remove the Doxygen generated documentation when uninstalling. >+@COND_DOC_TRUE@uninstall-local: >+@COND_DOC_TRUE@ rm -rf "$(DESTDIR)$(docdir)/api" >+ > # Create ChangeLog from output of "git log --date=iso --stat". > # Convert the man pages to PDF and plain text (ASCII only) formats. > dist-hook: > if test -d "$(srcdir)/.git" && type git > /dev/null 2>&1; then \ > ( cd "$(srcdir)" && git log --date=iso --stat \ >- b667a3ef6338a2c1db7b7706b1f6c99ea392221c^..HEAD ) \ >+ 6060f7dc76fd6c2a8a1f8e85d0e4d86bb78273e6^..HEAD ) \ > > "$(distdir)/ChangeLog"; \ > fi > if type groff > /dev/null 2>&1 && type ps2pdf > /dev/null 2>&1; then \ >@@ -1070,6 +1095,11 @@ > > "$$dest/txt/$$BASE.txt"; \ > done; \ > fi >+ if test -d "$(srcdir)/doc/api" ; then \ >+ $(MKDIR_P) "$(distdir)/doc/api" && \ >+ $(INSTALL_DATA) "$(srcdir)"/doc/api/* \ >+ "$(distdir)/doc/api"; \ >+ fi > > # This works with GNU tar and gives cleaner package than normal 'make dist'. > # This also ensures that the man page translations are up to date (dist-hook >@@ -1077,6 +1107,7 @@ > mydist: > sh "$(srcdir)/src/liblzma/validate_map.sh" > cd "$(srcdir)/po4a" && sh update-po >+ cd "$(srcdir)/doxygen" && sh update-doxygen > VERSION=$(VERSION); \ > if test -d "$(srcdir)/.git" && type git > /dev/null 2>&1; then \ > SNAPSHOT=`cd "$(srcdir)" && git describe --abbrev=4 | cut -b2-`; \ >diff -ur xz-5.2.5/NEWS xz-5.4.3/NEWS >--- xz-5.2.5/NEWS 2020-03-17 17:28:54 >+++ xz-5.4.3/NEWS 2023-05-04 17:22:00 >@@ -2,6 +2,1011 @@ > XZ Utils Release Notes > ====================== > >+5.4.3 (2023-05-04) >+ >+ * All fixes from 5.2.12 >+ >+ * Features in the CMake build can now be disabled as CMake cache >+ variables, similar to the Autotools build. >+ >+ * Minor update to the Croatian translation. >+ >+ >+5.4.2 (2023-03-18) >+ >+ * All fixes from 5.2.11 that were not included in 5.4.1. >+ >+ * If xz is built with support for the Capsicum sandbox but running >+ in an environment that doesn't support Capsicum, xz now runs >+ normally without sandboxing instead of exiting with an error. >+ >+ * liblzma: >+ >+ - Documentation was updated to improve the style, consistency, >+ and completeness of the liblzma API headers. >+ >+ - The Doxygen-generated HTML documentation for the liblzma API >+ header files is now included in the source release and is >+ installed as part of "make install". All JavaScript is >+ removed to simplify license compliance and to reduce the >+ install size. >+ >+ - Fixed a minor bug in lzma_str_from_filters() that produced >+ too many filters in the output string instead of reporting >+ an error if the input array had more than four filters. This >+ bug did not affect xz. >+ >+ * Build systems: >+ >+ - autogen.sh now invokes the doxygen tool via the new wrapper >+ script doxygen/update-doxygen, unless the command line option >+ --no-doxygen is used. >+ >+ - Added microlzma_encoder.c and microlzma_decoder.c to the >+ VS project files for Windows and to the CMake build. These >+ should have been included in 5.3.2alpha. >+ >+ * Tests: >+ >+ - Added a test to the CMake build that was forgotten in the >+ previous release. >+ >+ - Added and refactored a few tests. >+ >+ * Translations: >+ >+ - Updated the Brazilian Portuguese translation. >+ >+ - Added Brazilian Portuguese man page translation. >+ >+ >+5.4.1 (2023-01-11) >+ >+ * liblzma: >+ >+ - Fixed the return value of lzma_microlzma_encoder() if the >+ LZMA options lc/lp/pb are invalid. Invalid lc/lp/pb options >+ made the function return LZMA_STREAM_END without encoding >+ anything instead of returning LZMA_OPTIONS_ERROR. >+ >+ - Windows / Visual Studio: Workaround a possible compiler bug >+ when targeting 32-bit x86 and compiling the CLMUL version of >+ the CRC64 code. The CLMUL code isn't enabled by the Windows >+ project files but it is in the CMake-based builds. >+ >+ * Build systems: >+ >+ - Windows-specific CMake changes: >+ >+ * Don't try to enable CLMUL CRC64 code if _mm_set_epi64x() >+ isn't available. This fixes CMake-based build with Visual >+ Studio 2013. >+ >+ * Created a workaround for a build failure with windres >+ from GNU binutils. It is used only when the C compiler >+ is GCC (not Clang). The workaround is incompatible >+ with llvm-windres, resulting in "XZx20Utils" instead >+ of "XZ Utils" in the resource file, but without the >+ workaround llvm-windres works correctly. See the >+ comment in CMakeLists.txt for details. >+ >+ * Included the resource files in the xz and xzdec build >+ rules. Building the command line tools is still >+ experimental but possible with MinGW-w64. >+ >+ - Visual Studio: Added stream_decoder_mt.c to the project >+ files. Now the threaded decompressor lzma_stream_decoder_mt() >+ gets built. CMake-based build wasn't affected. >+ >+ - Updated windows/INSTALL-MSVC.txt to mention that CMake-based >+ build is now the preferred method with Visual Studio. The >+ project files will probably be removed after 5.4.x releases. >+ >+ - Changes to #defines in config.h: >+ >+ * HAVE_DECL_CLOCK_MONOTONIC was replaced by >+ HAVE_CLOCK_MONOTONIC. The old macro was always defined >+ in configure-generated config.h to either 0 or 1. The >+ new macro is defined (to 1) only if the declaration of >+ CLOCK_MONOTONIC is available. This matches the way most >+ other config.h macros work and makes things simpler with >+ other build systems. >+ >+ * HAVE_DECL_PROGRAM_INVOCATION_NAME was replaced by >+ HAVE_PROGRAM_INVOCATION_NAME for the same reason. >+ >+ * Tests: >+ >+ - Fixed test script compatibility with ancient /bin/sh >+ versions. Now the five test_compress_* tests should >+ no longer fail on Solaris 10. >+ >+ - Added and refactored a few tests. >+ >+ * Translations: >+ >+ - Updated the Catalan and Esperanto translations. >+ >+ - Added Korean and Ukrainian man page translations. >+ >+ >+5.4.0 (2022-12-13) >+ >+ This bumps the minor version of liblzma because new features were >+ added. The API and ABI are still backward compatible with liblzma >+ 5.2.x and 5.0.x. >+ >+ Since 5.3.5beta: >+ >+ * All fixes from 5.2.10. >+ >+ * The ARM64 filter is now stable. The xz option is now --arm64. >+ Decompression requires XZ Utils 5.4.0. In the future the ARM64 >+ filter will be supported by XZ for Java, XZ Embedded (including >+ the version in Linux), LZMA SDK, and 7-Zip. >+ >+ * Translations: >+ >+ - Updated Catalan, Croatian, German, Romanian, and Turkish >+ translations. >+ >+ - Updated German man page translations. >+ >+ - Added Romanian man page translations. >+ >+ Summary of new features added in the 5.3.x development releases: >+ >+ * liblzma: >+ >+ - Added threaded .xz decompressor lzma_stream_decoder_mt(). >+ It can use multiple threads with .xz files that have multiple >+ Blocks with size information in Block Headers. The threaded >+ encoder in xz has always created such files. >+ >+ Single-threaded encoder cannot store the size information in >+ Block Headers even if one used LZMA_FULL_FLUSH to create >+ multiple Blocks, so this threaded decoder cannot use multiple >+ threads with such files. >+ >+ If there are multiple Streams (concatenated .xz files), one >+ Stream will be decompressed completely before starting the >+ next Stream. >+ >+ - A new decoder flag LZMA_FAIL_FAST was added. It makes the >+ threaded decompressor report errors soon instead of first >+ flushing all pending data before the error location. >+ >+ - New Filter IDs: >+ * LZMA_FILTER_ARM64 is for ARM64 binaries. >+ * LZMA_FILTER_LZMA1EXT is for raw LZMA1 streams that don't >+ necessarily use the end marker. >+ >+ - Added lzma_str_to_filters(), lzma_str_from_filters(), and >+ lzma_str_list_filters() to convert a preset or a filter chain >+ string to a lzma_filter[] and vice versa. These should make >+ it easier to write applications that allow users to specify >+ custom compression options. >+ >+ - Added lzma_filters_free() which can be convenient for freeing >+ the filter options in a filter chain (an array of lzma_filter >+ structures). >+ >+ - lzma_file_info_decoder() to makes it a little easier to get >+ the Index field from .xz files. This helps in getting the >+ uncompressed file size but an easy-to-use random access >+ API is still missing which has existed in XZ for Java for >+ a long time. >+ >+ - Added lzma_microlzma_encoder() and lzma_microlzma_decoder(). >+ It is used by erofs-utils and may be used by others too. >+ >+ The MicroLZMA format is a raw LZMA stream (without end marker) >+ whose first byte (always 0x00) has been replaced with >+ bitwise-negation of the LZMA properties (lc/lp/pb). It was >+ created for use in EROFS but may be used in other contexts >+ as well where it is important to avoid wasting bytes for >+ stream headers or footers. The format is also supported by >+ XZ Embedded (the XZ Embedded version in Linux got MicroLZMA >+ support in Linux 5.16). >+ >+ The MicroLZMA encoder API in liblzma can compress into a >+ fixed-sized output buffer so that as much data is compressed >+ as can be fit into the buffer while still creating a valid >+ MicroLZMA stream. This is needed for EROFS. >+ >+ - Added lzma_lzip_decoder() to decompress the .lz (lzip) file >+ format version 0 and the original unextended version 1 files. >+ Also lzma_auto_decoder() supports .lz files. >+ >+ - lzma_filters_update() can now be used with the multi-threaded >+ encoder (lzma_stream_encoder_mt()) to change the filter chain >+ after LZMA_FULL_BARRIER or LZMA_FULL_FLUSH. >+ >+ - In lzma_options_lzma, allow nice_len = 2 and 3 with the match >+ finders that require at least 3 or 4. Now it is internally >+ rounded up if needed. >+ >+ - CLMUL-based CRC64 on x86-64 and E2K with runtime processor >+ detection. On 32-bit x86 it currently isn't available unless >+ --disable-assembler is used which can make the non-CLMUL >+ CRC64 slower; this might be fixed in the future. >+ >+ - Building with --disable-threads --enable-small >+ is now thread-safe if the compiler supports >+ __attribute__((__constructor__)). >+ >+ * xz: >+ >+ - Using -T0 (--threads=0) will now use multi-threaded encoder >+ even on a single-core system. This is to ensure that output >+ from the same xz binary is identical on both single-core and >+ multi-core systems. >+ >+ - --threads=+1 or -T+1 is now a way to put xz into >+ multi-threaded mode while using only one worker thread. >+ The + is ignored if the number is not 1. >+ >+ - A default soft memory usage limit is now used for compression >+ when -T0 is used and no explicit limit has been specified. >+ This soft limit is used to restrict the number of threads >+ but if the limit is exceeded with even one thread then xz >+ will continue with one thread using the multi-threaded >+ encoder and this limit is ignored. If the number of threads >+ is specified manually then no default limit will be used; >+ this affects only -T0. >+ >+ This change helps on systems that have very many cores and >+ using all of them for xz makes no sense. Previously xz -T0 >+ could run out of memory on such systems because it attempted >+ to reserve memory for too many threads. >+ >+ This also helps with 32-bit builds which don't have a large >+ amount of address space that would be required for many >+ threads. The default soft limit for -T0 is at most 1400 MiB >+ on all 32-bit platforms. >+ >+ - Previously a low value in --memlimit-compress wouldn't cause >+ xz to switch from multi-threaded mode to single-threaded mode >+ if the limit cannot otherwise be met; xz failed instead. Now >+ xz can switch to single-threaded mode and then, if needed, >+ scale down the LZMA2 dictionary size too just like it already >+ did when it was started in single-threaded mode. >+ >+ - The option --no-adjust no longer prevents xz from scaling down >+ the number of threads as that doesn't affect the compressed >+ output (only performance). Now --no-adjust only prevents >+ adjustments that affect compressed output, that is, with >+ --no-adjust xz won't switch from multi-threaded mode to >+ single-threaded mode and won't scale down the LZMA2 >+ dictionary size. >+ >+ - Added a new option --memlimit-mt-decompress=LIMIT. This is >+ used to limit the number of decompressor threads (possibly >+ falling back to single-threaded mode) but it will never make >+ xz refuse to decompress a file. This has a system-specific >+ default value because without any limit xz could end up >+ allocating memory for the whole compressed input file, the >+ whole uncompressed output file, multiple thread-specific >+ decompressor instances and so on. Basically xz could >+ attempt to use an insane amount of memory even with fairly >+ common files. The system-specific default value is currently >+ the same as the one used for compression with -T0. >+ >+ The new option works together with the existing option >+ --memlimit-decompress=LIMIT. The old option sets a hard limit >+ that must not be exceeded (xz will refuse to decompress) >+ while the new option only restricts the number of threads. >+ If the limit set with --memlimit-mt-decompress is greater >+ than the limit set with --memlimit-compress, then the latter >+ value is used also for --memlimit-mt-decompress. >+ >+ - Added new information to the output of xz --info-memory and >+ new fields to the output of xz --robot --info-memory. >+ >+ - In --lzma2=nice=NUMBER allow 2 and 3 with all match finders >+ now that liblzma handles it. >+ >+ - Don't mention endianness for ARM and ARM-Thumb filters in >+ --long-help. The filters only work for little endian >+ instruction encoding but modern ARM processors using >+ big endian data access still use little endian >+ instruction encoding. So the help text was misleading. >+ In contrast, the PowerPC filter is only for big endian >+ 32/64-bit PowerPC code. Little endian PowerPC would need >+ a separate filter. >+ >+ - Added decompression support for the .lz (lzip) file format >+ version 0 and the original unextended version 1. It is >+ autodetected by default. See also the option --format on >+ the xz man page. >+ >+ - Sandboxing enabled by default: >+ * Capsicum (FreeBSD) >+ * pledge(2) (OpenBSD) >+ >+ * Scripts now support the .lz format using xz. >+ >+ * A few new tests were added. >+ >+ * The liblzma-specific tests are now supported in CMake-based >+ builds too ("make test"). >+ >+ >+5.3.5beta (2022-12-01) >+ >+ * All fixes from 5.2.9. >+ >+ * liblzma: >+ >+ - Added new LZMA_FILTER_LZMA1EXT for raw encoder and decoder to >+ handle raw LZMA1 streams that don't have end of payload marker >+ (EOPM) alias end of stream (EOS) marker. It can be used in >+ filter chains, for example, with the x86 BCJ filter. >+ >+ - Added lzma_str_to_filters(), lzma_str_from_filters(), and >+ lzma_str_list_filters() to make it easier for applications >+ to get custom compression options from a user and convert >+ it to an array of lzma_filter structures. >+ >+ - Added lzma_filters_free(). >+ >+ - lzma_filters_update() can now be used with the multi-threaded >+ encoder (lzma_stream_encoder_mt()) to change the filter chain >+ after LZMA_FULL_BARRIER or LZMA_FULL_FLUSH. >+ >+ - In lzma_options_lzma, allow nice_len = 2 and 3 with the match >+ finders that require at least 3 or 4. Now it is internally >+ rounded up if needed. >+ >+ - ARM64 filter was modified. It is still experimental. >+ >+ - Fixed LTO build with Clang if -fgnuc-version=10 or similar >+ was used to make Clang look like GCC >= 10. Now it uses >+ __has_attribute(__symver__) which should be reliable. >+ >+ * xz: >+ >+ - --threads=+1 or -T+1 is now a way to put xz into multi-threaded >+ mode while using only one worker thread. >+ >+ - In --lzma2=nice=NUMBER allow 2 and 3 with all match finders >+ now that liblzma handles it. >+ >+ * Updated translations: Chinese (simplified), Korean, and Turkish. >+ >+ >+5.3.4alpha (2022-11-15) >+ >+ * All fixes from 5.2.7 and 5.2.8. >+ >+ * liblzma: >+ >+ - Minor improvements to the threaded decoder. >+ >+ - Added CRC64 implementation that uses SSSE3, SSE4.1, and CLMUL >+ instructions on 32/64-bit x86 and E2K. On 32-bit x86 it's >+ not enabled unless --disable-assembler is used but then >+ the non-CLMUL code might be slower. Processor support is >+ detected at runtime so this is built by default on x86-64 >+ and E2K. On these platforms, if compiler flags indicate >+ unconditional CLMUL support (-msse4.1 -mpclmul) then the >+ generic version is not built, making liblzma 8-9 KiB smaller >+ compared to having both versions included. >+ >+ With extremely compressible files this can make decompression >+ up to twice as fast but with typical files 5 % improvement >+ is a more realistic expectation. >+ >+ The CLMUL version is slower than the generic version with >+ tiny inputs (especially at 1-8 bytes per call, but up to >+ 16 bytes). In normal use in xz this doesn't matter at all. >+ >+ - Added an experimental ARM64 filter. This is *not* the final >+ version! Files created with this experimental version won't >+ be supported in the future versions! The filter design is >+ a compromise where improving one use case makes some other >+ cases worse. >+ >+ - Added decompression support for the .lz (lzip) file format >+ version 0 and the original unextended version 1. See the >+ API docs of lzma_lzip_decoder() for details. Also >+ lzma_auto_decoder() supports .lz files. >+ >+ - Building with --disable-threads --enable-small >+ is now thread-safe if the compiler supports >+ __attribute__((__constructor__)) >+ >+ * xz: >+ >+ - Added support for OpenBSD's pledge(2) as a sandboxing method. >+ >+ - Don't mention endianness for ARM and ARM-Thumb filters in >+ --long-help. The filters only work for little endian >+ instruction encoding but modern ARM processors using >+ big endian data access still use little endian >+ instruction encoding. So the help text was misleading. >+ In contrast, the PowerPC filter is only for big endian >+ 32/64-bit PowerPC code. Little endian PowerPC would need >+ a separate filter. >+ >+ - Added --experimental-arm64. This will be renamed once the >+ filter is finished. Files created with this experimental >+ filter will not be supported in the future! >+ >+ - Added new fields to the output of xz --robot --info-memory. >+ >+ - Added decompression support for the .lz (lzip) file format >+ version 0 and the original unextended version 1. It is >+ autodetected by default. See also the option --format on >+ the xz man page. >+ >+ * Scripts now support the .lz format using xz. >+ >+ * Build systems: >+ >+ - New #defines in config.h: HAVE_ENCODER_ARM64, >+ HAVE_DECODER_ARM64, HAVE_LZIP_DECODER, HAVE_CPUID_H, >+ HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR, HAVE_USABLE_CLMUL >+ >+ - New configure options: --disable-clmul-crc, >+ --disable-microlzma, --disable-lzip-decoder, and >+ 'pledge' is now an option in --enable-sandbox (but >+ it's autodetected by default anyway). >+ >+ - INSTALL was updated to document the new configure options. >+ >+ - PACKAGERS now lists also --disable-microlzma and >+ --disable-lzip-decoder as configure options that must >+ not be used in builds for non-embedded use. >+ >+ * Tests: >+ >+ - Fix some of the tests so that they skip instead of fail if >+ certain features have been disabled with configure options. >+ It's still not perfect. >+ >+ - Other improvements to tests. >+ >+ * Updated translations: Croatian, Finnish, Hungarian, Polish, >+ Romanian, Spanish, Swedish, and Ukrainian. >+ >+ >+5.3.3alpha (2022-08-22) >+ >+ * All fixes from 5.2.6. >+ >+ * liblzma: >+ >+ - Fixed 32-bit build. >+ >+ - Added threaded .xz decompressor lzma_stream_decoder_mt(). >+ It can use multiple threads with .xz files that have multiple >+ Blocks with size information in Block Headers. The threaded >+ encoder in xz has always created such files. >+ >+ Single-threaded encoder cannot store the size information in >+ Block Headers even if one used LZMA_FULL_FLUSH to create >+ multiple Blocks, so this threaded decoder cannot use multiple >+ threads with such files. >+ >+ If there are multiple Streams (concatenated .xz files), one >+ Stream will be decompressed completely before starting the >+ next Stream. >+ >+ - A new decoder flag LZMA_FAIL_FAST was added. It makes the >+ threaded decompressor report errors soon instead of first >+ flushing all pending data before the error location. >+ >+ * xz: >+ >+ - Using -T0 (--threads=0) will now use multi-threaded encoder >+ even on a single-core system. This is to ensure that output >+ from the same xz binary is identical on both single-core and >+ multi-core systems. >+ >+ - A default soft memory usage limit is now used for compression >+ when -T0 is used and no explicit limit has been specified. >+ This soft limit is used to restrict the number of threads >+ but if the limit is exceeded with even one thread then xz >+ will continue with one thread using the multi-threaded >+ encoder and this limit is ignored. If the number of threads >+ is specified manually then no default limit will be used; >+ this affects only -T0. >+ >+ This change helps on systems that have very many cores and >+ using all of them for xz makes no sense. Previously xz -T0 >+ could run out of memory on such systems because it attempted >+ to reserve memory for too many threads. >+ >+ This also helps with 32-bit builds which don't have a large >+ amount of address space that would be required for many >+ threads. The default limit is 1400 MiB on all 32-bit >+ platforms with -T0. >+ >+ Now xz -T0 should just work. It might use too few threads >+ in some cases but at least it shouldn't easily run out of >+ memory. It's possible that this will be tweaked before 5.4.0. >+ >+ - Changes to --memlimit-compress and --no-adjust: >+ >+ In single-threaded mode, --memlimit-compress can make xz >+ scale down the LZMA2 dictionary size to meet the memory usage >+ limit. This obviously affects the compressed output. However, >+ if xz was in threaded mode, --memlimit-compress could make xz >+ reduce the number of threads but it wouldn't make xz switch >+ from multi-threaded mode to single-threaded mode or scale >+ down the LZMA2 dictionary size. This seemed illogical. >+ >+ Now --memlimit-compress can make xz switch to single-threaded >+ mode if one thread in multi-threaded mode uses too much >+ memory. If memory usage is still too high, then the LZMA2 >+ dictionary size can be scaled down too. >+ >+ The option --no-adjust was also changed so that it no longer >+ prevents xz from scaling down the number of threads as that >+ doesn't affect compressed output (only performance). After >+ this commit --no-adjust only prevents adjustments that affect >+ compressed output, that is, with --no-adjust xz won't switch >+ from multithreaded mode to single-threaded mode and won't >+ scale down the LZMA2 dictionary size. >+ >+ - Added a new option --memlimit-mt-decompress=LIMIT. This is >+ used to limit the number of decompressor threads (possibly >+ falling back to single-threaded mode) but it will never make >+ xz refuse to decompress a file. This has a system-specific >+ default value because without any limit xz could end up >+ allocating memory for the whole compressed input file, the >+ whole uncompressed output file, multiple thread-specific >+ decompressor instances and so on. Basically xz could >+ attempt to use an insane amount of memory even with fairly >+ common files. >+ >+ The new option works together with the existing option >+ --memlimit-decompress=LIMIT. The old option sets a hard limit >+ that must not be exceeded (xz will refuse to decompress) >+ while the new option only restricts the number of threads. >+ If the limit set with --memlimit-mt-decompress is greater >+ than the limit set with --memlimit-compress, then the latter >+ value is used also for --memlimit-mt-decompress. >+ >+ * Tests: >+ >+ - Added a few more tests. >+ >+ - Added tests/code_coverage.sh to create a code coverage report >+ of the tests. >+ >+ * Build systems: >+ >+ - Automake's parallel test harness is now used to make tests >+ finish faster. >+ >+ - Added the CMake files to the distribution tarball. These were >+ supposed to be in 5.2.5 already. >+ >+ - Added liblzma tests to the CMake build. >+ >+ - Windows: Fix building of liblzma.dll with the included >+ Visual Studio project files. >+ >+ >+5.3.2alpha (2021-10-28) >+ >+ This release was made on short notice so that recent erofs-utils can >+ be built with LZMA support without needing a snapshot from xz.git. >+ Thus many pending things were not included, not even updated >+ translations (which would need to be updated for the new --list >+ strings anyway). >+ >+ * All fixes from 5.2.5. >+ >+ * xz: >+ >+ - When copying metadata from the source file to the destination >+ file, don't try to set the group (GID) if it is already set >+ correctly. This avoids a failure on OpenBSD (and possibly on >+ a few other OSes) where files may get created so that their >+ group doesn't belong to the user, and fchown(2) can fail even >+ if it needs to do nothing. >+ >+ - The --keep option now accepts symlinks, hardlinks, and >+ setuid, setgid, and sticky files. Previously this required >+ using --force. >+ >+ - Split the long strings used in --list and --info-memory modes >+ to make them much easier for translators. >+ >+ - If built with sandbox support and enabling the sandbox fails, >+ xz will now immediately exit with exit status of 1. Previously >+ it would only display a warning if -vv was used. >+ >+ - Cap --memlimit-compress to 2000 MiB on MIPS32 because on >+ MIPS32 userspace processes are limited to 2 GiB of address >+ space. >+ >+ * liblzma: >+ >+ - Added lzma_microlzma_encoder() and lzma_microlzma_decoder(). >+ The API is in lzma/container.h. >+ >+ The MicroLZMA format is a raw LZMA stream (without end marker) >+ whose first byte (always 0x00) has been replaced with >+ bitwise-negation of the LZMA properties (lc/lp/pb). It was >+ created for use in EROFS but may be used in other contexts >+ as well where it is important to avoid wasting bytes for >+ stream headers or footers. The format is also supported by >+ XZ Embedded. >+ >+ The MicroLZMA encoder API in liblzma can compress into a >+ fixed-sized output buffer so that as much data is compressed >+ as can be fit into the buffer while still creating a valid >+ MicroLZMA stream. This is needed for EROFS. >+ >+ - Added fuzzing support. >+ >+ - Support Intel Control-flow Enforcement Technology (CET) in >+ 32-bit x86 assembly files. >+ >+ - Visual Studio: Use non-standard _MSVC_LANG to detect C++ >+ standard version in the lzma.h API header. It's used to >+ detect when "noexcept" can be used. >+ >+ * Scripts: >+ >+ - Fix exit status of xzdiff/xzcmp. Exit status could be 2 when >+ the correct value is 1. >+ >+ - Fix exit status of xzgrep. >+ >+ - Detect corrupt .bz2 files in xzgrep. >+ >+ - Add zstd support to xzgrep and xzdiff/xzcmp. >+ >+ - Fix less(1) version detection in xzless. It failed if the >+ version number from "less -V" contained a dot. >+ >+ * Fix typos and technical issues in man pages. >+ >+ * Build systems: >+ >+ - Windows: Fix building of resource files when config.h isn't >+ used. CMake + Visual Studio can now build liblzma.dll. >+ >+ - Various fixes to the CMake support. It might still need a few >+ more fixes even for liblzma-only builds. >+ >+ >+5.3.1alpha (2018-04-29) >+ >+ * All fixes from 5.2.4. >+ >+ * Add lzma_file_info_decoder() into liblzma and use it in xz to >+ implement the --list feature. >+ >+ * Capsicum sandbox support is enabled by default where available >+ (FreeBSD >= 10). >+ >+ >+5.2.10 (2022-12-13) >+ >+ * xz: Don't modify argv[] when parsing the --memlimit* and >+ --block-list command line options. This fixes confusing >+ arguments in process listing (like "ps auxf"). >+ >+ * GNU/Linux only: Use __has_attribute(__symver__) to detect if >+ that attribute is supported. This fixes build on Mandriva where >+ Clang is patched to define __GNUC__ to 11 by default (instead >+ of 4 as used by Clang upstream). >+ >+ >+5.2.9 (2022-11-30) >+ >+ * liblzma: >+ >+ - Fixed an infinite loop in LZMA encoder initialization >+ if dict_size >= 2 GiB. (The encoder only supports up >+ to 1536 MiB.) >+ >+ - Fixed two cases of invalid free() that can happen if >+ a tiny allocation fails in encoder re-initialization >+ or in lzma_filters_update(). These bugs had some >+ similarities with the bug fixed in 5.2.7. >+ >+ - Fixed lzma_block_encoder() not allowing the use of >+ LZMA_SYNC_FLUSH with lzma_code() even though it was >+ documented to be supported. The sync-flush code in >+ the Block encoder was already used internally via >+ lzma_stream_encoder(), so this was just a missing flag >+ in the lzma_block_encoder() API function. >+ >+ - GNU/Linux only: Don't put symbol versions into static >+ liblzma as it breaks things in some cases (and even if >+ it didn't break anything, symbol versions in static >+ libraries are useless anyway). The downside of the fix >+ is that if the configure options --with-pic or --without-pic >+ are used then it's not possible to build both shared and >+ static liblzma at the same time on GNU/Linux anymore; >+ with those options --disable-static or --disable-shared >+ must be used too. >+ >+ * New email address for bug reports is <xz@tukaani.org> which >+ forwards messages to Lasse Collin and Jia Tan. >+ >+ >+5.2.8 (2022-11-13) >+ >+ * xz: >+ >+ - If xz cannot remove an input file when it should, this >+ is now treated as a warning (exit status 2) instead of >+ an error (exit status 1). This matches GNU gzip and it >+ is more logical as at that point the output file has >+ already been successfully closed. >+ >+ - Fix handling of .xz files with an unsupported check type. >+ Previously such printed a warning message but then xz >+ behaved as if an error had occurred (didn't decompress, >+ exit status 1). Now a warning is printed, decompression >+ is done anyway, and exit status is 2. This used to work >+ slightly before 5.0.0. In practice this bug matters only >+ if xz has been built with some check types disabled. As >+ instructed in PACKAGERS, such builds should be done in >+ special situations only. >+ >+ - Fix "xz -dc --single-stream tests/files/good-0-empty.xz" >+ which failed with "Internal error (bug)". That is, >+ --single-stream was broken if the first .xz stream in >+ the input file didn't contain any uncompressed data. >+ >+ - Fix displaying file sizes in the progress indicator when >+ working in passthru mode and there are multiple input files. >+ Just like "gzip -cdf", "xz -cdf" works like "cat" when the >+ input file isn't a supported compressed file format. In >+ this case the file size counters weren't reset between >+ files so with multiple input files the progress indicator >+ displayed an incorrect (too large) value. >+ >+ * liblzma: >+ >+ - API docs in lzma/container.h: >+ * Update the list of decoder flags in the decoder >+ function docs. >+ * Explain LZMA_CONCATENATED behavior with .lzma files >+ in lzma_auto_decoder() docs. >+ >+ - OpenBSD: Use HW_NCPUONLINE to detect the number of >+ available hardware threads in lzma_physmem(). >+ >+ - Fix use of wrong macro to detect x86 SSE2 support. >+ __SSE2_MATH__ was used with GCC/Clang but the correct >+ one is __SSE2__. The first one means that SSE2 is used >+ for floating point math which is irrelevant here. >+ The affected SSE2 code isn't used on x86-64 so this affects >+ only 32-bit x86 builds that use -msse2 without -mfpmath=sse >+ (there is no runtime detection for SSE2). It improves LZMA >+ compression speed (not decompression). >+ >+ - Fix the build with Intel C compiler 2021 (ICC, not ICX) >+ on Linux. It defines __GNUC__ to 10 but doesn't support >+ the __symver__ attribute introduced in GCC 10. >+ >+ * Scripts: Ignore warnings from xz by using --quiet --no-warn. >+ This is needed if the input .xz files use an unsupported >+ check type. >+ >+ * Translations: >+ >+ - Updated Croatian and Turkish translations. >+ >+ - One new translations wasn't included because it needed >+ technical fixes. It will be in upcoming 5.4.0. No new >+ translations will be added to the 5.2.x branch anymore. >+ >+ - Renamed the French man page translation file from >+ fr_FR.po to fr.po and thus also its install directory >+ (like /usr/share/man/fr_FR -> .../fr). >+ >+ - Man page translations for upcoming 5.4.0 are now handled >+ in the Translation Project. >+ >+ * Update doc/faq.txt a little so it's less out-of-date. >+ >+ >+5.2.7 (2022-09-30) >+ >+ * liblzma: >+ >+ - Made lzma_filters_copy() to never modify the destination >+ array if an error occurs. lzma_stream_encoder() and >+ lzma_stream_encoder_mt() already assumed this. Before this >+ change, if a tiny memory allocation in lzma_filters_copy() >+ failed it would lead to a crash (invalid free() or invalid >+ memory reads) in the cleanup paths of these two encoder >+ initialization functions. >+ >+ - Added missing integer overflow check to lzma_index_append(). >+ This affects xz --list and other applications that decode >+ the Index field from .xz files using lzma_index_decoder(). >+ Normal decompression of .xz files doesn't call this code >+ and thus most applications using liblzma aren't affected >+ by this bug. >+ >+ - Single-threaded .xz decoder (lzma_stream_decoder()): 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 decoder) this already worked correctly. >+ >+ - Fixed accumulation of integrity check type statistics in >+ lzma_index_cat(). This bug made lzma_index_checks() return >+ only the type of the integrity check of the last Stream >+ when multiple lzma_indexes were concatenated. Most >+ applications don't use these APIs but in xz it made >+ xz --list not list all check types from concatenated .xz >+ files. In xz --list --verbose only the per-file "Check:" >+ lines were affected and in xz --robot --list only the "file" >+ line was affected. >+ >+ - Added ABI compatibility with executables that were linked >+ against liblzma in RHEL/CentOS 7 or other liblzma builds >+ that had copied the problematic patch from RHEL/CentOS 7 >+ (xz-5.2.2-compat-libs.patch). For the details, see the >+ comment at the top of src/liblzma/validate_map.sh. >+ >+ WARNING: This uses __symver__ attribute with GCC >= 10. >+ In other cases the traditional __asm__(".symver ...") >+ is used. Using link-time optimization (LTO, -flto) with >+ GCC versions older than 10 can silently result in >+ broken liblzma.so.5 (incorrect symbol versions)! If you >+ want to use -flto with GCC, you must use GCC >= 10. >+ LTO with Clang seems to work even with the traditional >+ __asm__(".symver ...") method. >+ >+ * xzgrep: Fixed compatibility with old shells that break if >+ comments inside command substitutions have apostrophes ('). >+ This problem was introduced in 5.2.6. >+ >+ * Build systems: >+ >+ - New #define in config.h: HAVE_SYMBOL_VERSIONS_LINUX >+ >+ - Windows: Fixed liblzma.dll build with Visual Studio project >+ files. It broke in 5.2.6 due to a change that was made to >+ improve CMake support. >+ >+ - Windows: Building liblzma with UNICODE defined should now >+ work. >+ >+ - CMake files are now actually included in the release tarball. >+ They should have been in 5.2.5 already. >+ >+ - Minor CMake fixes and improvements. >+ >+ * Added a new translation: Turkish >+ >+ >+5.2.6 (2022-08-12) >+ >+ * xz: >+ >+ - The --keep option now accepts symlinks, hardlinks, and >+ setuid, setgid, and sticky files. Previously this required >+ using --force. >+ >+ - When copying metadata from the source file to the destination >+ file, don't try to set the group (GID) if it is already set >+ correctly. This avoids a failure on OpenBSD (and possibly on >+ a few other OSes) where files may get created so that their >+ group doesn't belong to the user, and fchown(2) can fail even >+ if it needs to do nothing. >+ >+ - Cap --memlimit-compress to 2000 MiB instead of 4020 MiB on >+ MIPS32 because on MIPS32 userspace processes are limited >+ to 2 GiB of address space. >+ >+ * liblzma: >+ >+ - Fixed a missing error-check in the threaded encoder. If a >+ small memory allocation fails, a .xz file with an invalid >+ Index field would be created. Decompressing such a file would >+ produce the correct output but result in an error at the end. >+ Thus this is a "mild" data corruption bug. Note that while >+ a failed memory allocation can trigger the bug, it cannot >+ cause invalid memory access. >+ >+ - The decoder for .lzma files now supports files that have >+ uncompressed size stored in the header and still use the >+ end of payload marker (end of stream marker) at the end >+ of the LZMA stream. Such files are rare but, according to >+ the documentation in LZMA SDK, they are valid. >+ doc/lzma-file-format.txt was updated too. >+ >+ - Improved 32-bit x86 assembly files: >+ * Support Intel Control-flow Enforcement Technology (CET) >+ * Use non-executable stack on FreeBSD. >+ >+ - Visual Studio: Use non-standard _MSVC_LANG to detect C++ >+ standard version in the lzma.h API header. It's used to >+ detect when "noexcept" can be used. >+ >+ * xzgrep: >+ >+ - Fixed arbitrary command injection via a malicious filename >+ (CVE-2022-1271, ZDI-CAN-16587). A standalone patch for >+ this was released to the public on 2022-04-07. A slight >+ robustness improvement has been made since then and, if >+ using GNU or *BSD grep, a new faster method is now used >+ that doesn't use the old sed-based construct at all. This >+ also fixes bad output with GNU grep >= 3.5 (2020-09-27) >+ when xzgrepping binary files. >+ >+ This vulnerability was discovered by: >+ cleemy desu wayo working with Trend Micro Zero Day Initiative >+ >+ - Fixed detection of corrupt .bz2 files. >+ >+ - Improved error handling to fix exit status in some situations >+ and to fix handling of signals: in some situations a signal >+ didn't make xzgrep exit when it clearly should have. It's >+ possible that the signal handling still isn't quite perfect >+ but hopefully it's good enough. >+ >+ - Documented exit statuses on the man page. >+ >+ - xzegrep and xzfgrep now use "grep -E" and "grep -F" instead >+ of the deprecated egrep and fgrep commands. >+ >+ - Fixed parsing of the options -E, -F, -G, -P, and -X. The >+ problem occurred when multiple options were specied in >+ a single argument, for example, >+ >+ echo foo | xzgrep -Fe foo >+ >+ treated foo as a filename because -Fe wasn't correctly >+ split into -F -e. >+ >+ - Added zstd support. >+ >+ * xzdiff/xzcmp: >+ >+ - Fixed wrong exit status. Exit status could be 2 when the >+ correct value is 1. >+ >+ - Documented on the man page that exit status of 2 is used >+ for decompression errors. >+ >+ - Added zstd support. >+ >+ * xzless: >+ >+ - Fix less(1) version detection. It failed if the version number >+ from "less -V" contained a dot. >+ >+ * Translations: >+ >+ - Added new translations: Catalan, Croatian, Esperanto, >+ Korean, Portuguese, Romanian, Serbian, Spanish, Swedish, >+ and Ukrainian >+ >+ - Updated the Brazilian Portuguese translation. >+ >+ - Added French man page translation. This and the existing >+ German translation aren't complete anymore because the >+ English man pages got a few updates and the translators >+ weren't reached so that they could update their work. >+ >+ * Build systems: >+ >+ - Windows: Fix building of resource files when config.h isn't >+ used. CMake + Visual Studio can now build liblzma.dll. >+ >+ - Various fixes to the CMake support. Building static or shared >+ liblzma should work fine in most cases. In contrast, building >+ the command line tools with CMake is still clearly incomplete >+ and experimental and should be used for testing only. >+ >+ > 5.2.5 (2020-03-17) > > * liblzma: >diff -ur xz-5.2.5/PACKAGERS xz-5.4.3/PACKAGERS >--- xz-5.2.5/PACKAGERS 2020-03-17 17:28:50 >+++ xz-5.4.3/PACKAGERS 2023-05-04 17:21:05 >@@ -44,6 +44,8 @@ > lzmadec binary for compatibility with LZMA Utils > liblzma liblzma.so.* > liblzma-devel liblzma.so, liblzma.a, API headers >+ liblzma-doc Doxygen-generated liblzma API docs (HTML), >+ example programs > > > 2. Package description >@@ -109,7 +111,14 @@ > This package includes the API headers, static library, and > other development files related to liblzma. > >+ liblzma-doc: > >+ liblzma API documentation in HTML and example usage >+ >+ This package includes the Doxygen-generated liblzma API >+ HTML docs and example programs showing how to use liblzma. >+ >+ > 3. License > ---------- > >@@ -138,6 +147,8 @@ > --enable-checks > --enable-small (*) > --disable-threads (*) >+ --disable-microlzma (*) >+ --disable-lzip-decoder (*) > > (*) These are OK when building xzdec and lzmadec as described > in INSTALL. >@@ -158,12 +169,13 @@ > can be replaced with a symlink if your distro ships with shared > copies of the common license texts. > >- liblzma API is currently only documented using Doxygen tags in the >- API headers. It hasn't been tested much how good results Doxygen >- is able to make from the tags (e.g. Doxyfile might need tweaking, >- the tagging may need to be improved etc.), so it might be simpler >- to just let people read docs directly from the .h files for now, >- and also save quite a bit in package size at the same time. >+ The Doxygen-generated documentation (HTML) for the liblzma API >+ headers is included in the source release and will be installed by >+ "make install" to $docdir/api. All JavaScript is removed to >+ simplify license compliance and to reduce the install size. If the >+ liblzma API documentation is not desired, either run configure with >+ --disable-doc or remove the doc/api directory before running >+ "make install". > > > 6. Extra files >diff -ur xz-5.2.5/README xz-5.4.3/README >--- xz-5.2.5/README 2020-03-17 17:28:54 >+++ xz-5.4.3/README 2023-05-04 17:21:05 >@@ -113,8 +113,8 @@ > Since the liblzma API has similarities to the zlib API, some people > may find it useful to read the zlib docs and tutorial too: > >- http://zlib.net/manual.html >- http://zlib.net/zlib_how.html >+ https://zlib.net/manual.html >+ https://zlib.net/zlib_how.html > > > 2. Version numbering >@@ -202,19 +202,87 @@ > > https://translationproject.org/html/translators.html > >- Several strings will change in a future version of xz so if you >- wish to start a new translation, look at the code in the xz git >- repostiory instead of a 5.2.x release. >+ Below are notes and testing instructions specific to xz >+ translations. > >+ Testing can be done by installing xz into a temporary directory: > >+ ./configure --disable-shared --prefix=/tmp/xz-test >+ # <Edit the .po file in the po directory.> >+ make -C po update-po >+ make install >+ bash debug/translation.bash | less >+ bash debug/translation.bash | less -S # For --list outputs >+ >+ Repeat the above as needed (no need to re-run configure though). >+ >+ Note especially the following: >+ >+ - The output of --help and --long-help must look nice on >+ an 80-column terminal. It's OK to add extra lines if needed. >+ >+ - In contrast, don't add extra lines to error messages and such. >+ They are often preceded with e.g. a filename on the same line, >+ so you have no way to predict where to put a \n. Let the terminal >+ do the wrapping even if it looks ugly. Adding new lines will be >+ even uglier in the generic case even if it looks nice in a few >+ limited examples. >+ >+ - Be careful with column alignment in tables and table-like output >+ (--list, --list --verbose --verbose, --info-memory, --help, and >+ --long-help): >+ >+ * All descriptions of options in --help should start in the >+ same column (but it doesn't need to be the same column as >+ in the English messages; just be consistent if you change it). >+ Check that both --help and --long-help look OK, since they >+ share several strings. >+ >+ * --list --verbose and --info-memory print lines that have >+ the format "Description: %s". If you need a longer >+ description, you can put extra space between the colon >+ and %s. Then you may need to add extra space to other >+ strings too so that the result as a whole looks good (all >+ values start at the same column). >+ >+ * The columns of the actual tables in --list --verbose --verbose >+ should be aligned properly. Abbreviate if necessary. It might >+ be good to keep at least 2 or 3 spaces between column headings >+ and avoid spaces in the headings so that the columns stand out >+ better, but this is a matter of opinion. Do what you think >+ looks best. >+ >+ - Be careful to put a period at the end of a sentence when the >+ original version has it, and don't put it when the original >+ doesn't have it. Similarly, be careful with \n characters >+ at the beginning and end of the strings. >+ >+ - Read the TRANSLATORS comments that have been extracted from the >+ source code and included in xz.pot. Some comments suggest >+ testing with a specific command which needs an .xz file. You >+ may use e.g. any tests/files/good-*.xz. However, these test >+ commands are included in translations.bash output, so reading >+ translations.bash output carefully can be enough. >+ >+ - If you find language problems in the original English strings, >+ feel free to suggest improvements. Ask if something is unclear. >+ >+ - The translated messages should be understandable (sometimes this >+ may be a problem with the original English messages too). Don't >+ make a direct word-by-word translation from English especially if >+ the result doesn't sound good in your language. >+ >+ Thanks for your help! >+ >+ > 5. Other implementations of the .xz format > ------------------------------------------ > > 7-Zip and the p7zip port of 7-Zip support the .xz format starting > from the version 9.00alpha. > >- http://7-zip.org/ >- http://p7zip.sourceforge.net/ >+ https://7-zip.org/ >+ https://p7zip.sourceforge.net/ > > XZ Embedded is a limited implementation written for use in the Linux > kernel, but it is also suitable for other embedded use. >@@ -226,11 +294,10 @@ > ---------------------- > > If you have questions, bug reports, patches etc. related to XZ Utils, >- contact Lasse Collin <lasse.collin@tukaani.org> (in Finnish or English). >- I'm sometimes slow at replying. If you haven't got a reply within two >- weeks, assume that your email has got lost and resend it or use IRC. >+ the project maintainers Lasse Collin and Jia Tan can be reached via >+ <xz@tukaani.org>. > >- You can find me also from #tukaani on Freenode; my nick is Larhzu. >- The channel tends to be pretty quiet, so just ask your question and >- someone may wake up. >+ You might find Lasse also from #tukaani on Libera Chat (IRC). >+ The nick is Larhzu. The channel tends to be pretty quiet, >+ so just ask your question and someone might wake up. > >diff -ur xz-5.2.5/THANKS xz-5.4.3/THANKS >--- xz-5.2.5/THANKS 2020-03-17 17:28:50 >+++ xz-5.4.3/THANKS 2023-05-04 17:22:00 >@@ -8,35 +8,48 @@ > - H. Peter Anvin > - Jeff Bastian > - Nelson H. F. Beebe >+ - Karl Beldan > - Karl Berry > - Anders F. Björklund > - Emmanuel Blot > - Melanie Blower >+ - Alexander Bluhm > - Martin Blumenstingl > - Ben Boeckel > - Jakub Bogusz >+ - Adam Borowski > - Maarten Bosmans > - Trent W. Buck >+ - Kevin R. Bulgrien > - James Buren > - David Burklund >+ - Frank Busse > - Daniel Mealha Cabrita > - Milo Casagrande > - Marek Äernocký > - Tomer Chachamu >+ - Vitaly Chikunov > - Antoine CÅur > - Gabi Davar >+ - Ä°hsan DoÄan > - Chris Donawa > - Andrew Dudman > - Markus Duft > - Ä°smail Dönmez >+ - Paul Eggert > - Robert Elz > - Gilles Espinasse > - Denis Excoffier >+ - Vincent Fazio > - Michael Felt > - Michael Fox > - Mike Frysinger > - Daniel Richard G. >+ - Tomasz Gajc >+ - Bjarni Ingi Gislason >+ - John Paul Adrian Glaubitz > - Bill Glessner >+ - MichaÅ Górny > - Jason Gorski > - Juan Manuel Guerrero > - Diederik de Haas >@@ -44,18 +57,26 @@ > - Christian Hesse > - Vincenzo Innocente > - Peter Ivanov >+ - Nicholas Jackson >+ - Sam James >+ - Hajin Jang > - Jouk Jansen > - Jun I Jin > - Kiyoshi Kanazawa > - Per Ãyvind Karlsen >+ - Iouri Kharon > - Thomas Klausner > - Richard Koch >+ - Anton Kochkov > - Ville Koskinen >+ - Marcin Kowalczyk > - Jan Kratochvil > - Christian Kujau > - Stephan Kulow >+ - Ilya Kurdyukov > - Peter Lawler > - James M Leddy >+ - Vincent Lefevre > - Hin-Tak Leung > - Andraž 'ruskie' Levstik > - Cary Lewis >@@ -63,12 +84,17 @@ > - Xin Li > - Eric Lindblad > - Lorenzo De Liso >+ - H.J. Lu > - Bela Lubkin > - Gregory Margo > - Julien Marrec >+ - Ed Maste > - Martin MatuÅ¡ka >+ - Ivan A. Melnikov > - Jim Meyering > - Arkadiusz Miskiewicz >+ - Nathan Moinvaziri >+ - Ãtienne Mollier > - Conley Moorhous > - RafaÅ MużyÅo > - Adrien Nader >@@ -77,6 +103,7 @@ > - Jonathan Nieder > - Andre Noll > - Peter O'Gorman >+ - Daniel Packard > - Filip Palian > - Peter Pallinger > - Rui Paulo >@@ -88,12 +115,15 @@ > - Trần Ngá»c Quân > - Pavel Raiskup > - Ole André Vadla RavnÃ¥s >+ - Eric S. Raymond > - Robert Readman > - Bernhard Reutner-Fischer >- - Eric S. Raymond >+ - Markus Rickert > - Cristian RodrÃguez > - Christian von Roques >+ - Boud Roukema > - Torsten Rupp >+ - Stephen Sachs > - Jukka Salmi > - Alexandre Sauvé > - Benno Schulenberg >@@ -102,11 +132,13 @@ > - Dan Shechter > - Stuart Shelton > - Sebastian Andrzej Siewior >+ - Ville Skyttä > - Brad Smith > - Bruce Stark > - Pippijn van Steenhoven > - Jonathan Stott > - Dan Stromberg >+ - Jia Tan > - Vincent Torri > - Paul Townsend > - Mohammed Adnène Trojette >@@ -117,6 +149,7 @@ > - Adam Walling > - Jeffrey Walton > - Christian Weisgerber >+ - Dan Weiss > - Bert Wesarg > - Fredrik Wikstrom > - Jim Wilcoxson >diff -ur xz-5.2.5/TODO xz-5.4.3/TODO >--- xz-5.2.5/TODO 2020-03-17 17:28:50 >+++ xz-5.4.3/TODO 2023-05-04 17:22:00 >@@ -59,8 +59,6 @@ > - Implement threaded match finders. > - Implement pigz-style threading in LZMA2. > >- Multithreaded decompression >- > Buffer-to-buffer coding could use less RAM (especially when > decompressing LZMA1 or LZMA2). > >diff -ur xz-5.2.5/aclocal.m4 xz-5.4.3/aclocal.m4 >--- xz-5.2.5/aclocal.m4 2020-03-17 17:29:32 >+++ xz-5.4.3/aclocal.m4 2023-05-04 17:31:29 >@@ -1,6 +1,6 @@ >-# generated automatically by aclocal 1.16.1 -*- Autoconf -*- >+# generated automatically by aclocal 1.16.5 -*- Autoconf -*- > >-# Copyright (C) 1996-2018 Free Software Foundation, Inc. >+# Copyright (C) 1996-2021 Free Software Foundation, Inc. > > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -14,13 +14,13 @@ > m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) > m4_ifndef([AC_AUTOCONF_VERSION], > [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl >-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, >-[m4_warning([this file was generated for autoconf 2.69. >+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, >+[m4_warning([this file was generated for autoconf 2.71. > You have another version of autoconf. It may work, but is not guaranteed to. > If you have problems, you may need to regenerate the build system entirely. > To do so, use the procedure documented by the package, typically 'autoreconf'.])]) > >-# Copyright (C) 2002-2018 Free Software Foundation, Inc. >+# Copyright (C) 2002-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -35,7 +35,7 @@ > [am__api_version='1.16' > dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to > dnl require some minimum version. Point them to the right macro. >-m4_if([$1], [1.16.1], [], >+m4_if([$1], [1.16.5], [], > [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl > ]) > >@@ -51,14 +51,14 @@ > # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. > # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. > AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], >-[AM_AUTOMAKE_VERSION([1.16.1])dnl >+[AM_AUTOMAKE_VERSION([1.16.5])dnl > m4_ifndef([AC_AUTOCONF_VERSION], > [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl > _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) > > # Figure out how to run the assembler. -*- Autoconf -*- > >-# Copyright (C) 2001-2018 Free Software Foundation, Inc. >+# Copyright (C) 2001-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -78,7 +78,7 @@ > > # AM_AUX_DIR_EXPAND -*- Autoconf -*- > >-# Copyright (C) 2001-2018 Free Software Foundation, Inc. >+# Copyright (C) 2001-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -130,7 +130,7 @@ > > # AM_CONDITIONAL -*- Autoconf -*- > >-# Copyright (C) 1997-2018 Free Software Foundation, Inc. >+# Copyright (C) 1997-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -161,7 +161,7 @@ > Usually this means the macro was only invoked conditionally.]]) > fi])]) > >-# Copyright (C) 1999-2018 Free Software Foundation, Inc. >+# Copyright (C) 1999-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -352,7 +352,7 @@ > > # Generate code to set up dependency tracking. -*- Autoconf -*- > >-# Copyright (C) 1999-2018 Free Software Foundation, Inc. >+# Copyright (C) 1999-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -391,7 +391,9 @@ > done > if test $am_rc -ne 0; then > AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments >- for automatic dependency tracking. Try re-running configure with the >+ for automatic dependency tracking. If GNU make was not used, consider >+ re-running the configure script with MAKE="gmake" (or whatever is >+ necessary). You can also try re-running configure with the > '--disable-dependency-tracking' option to at least be able to build > the package (albeit without support for automatic dependency tracking).]) > fi >@@ -418,7 +420,7 @@ > > # Do all the work for Automake. -*- Autoconf -*- > >-# Copyright (C) 1996-2018 Free Software Foundation, Inc. >+# Copyright (C) 1996-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -446,6 +448,10 @@ > # release and drop the old call support. > AC_DEFUN([AM_INIT_AUTOMAKE], > [AC_PREREQ([2.65])dnl >+m4_ifdef([_$0_ALREADY_INIT], >+ [m4_fatal([$0 expanded multiple times >+]m4_defn([_$0_ALREADY_INIT]))], >+ [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl > dnl Autoconf wants to disallow AM_ names. We explicitly allow > dnl the ones we care about. > m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl >@@ -482,7 +488,7 @@ > [_AM_SET_OPTIONS([$1])dnl > dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. > m4_if( >- m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), >+ m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), > [ok:ok],, > [m4_fatal([AC_INIT should be called with package and version arguments])])dnl > AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl >@@ -534,6 +540,20 @@ > [m4_define([AC_PROG_OBJCXX], > m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl > ]) >+# Variables for tags utilities; see am/tags.am >+if test -z "$CTAGS"; then >+ CTAGS=ctags >+fi >+AC_SUBST([CTAGS]) >+if test -z "$ETAGS"; then >+ ETAGS=etags >+fi >+AC_SUBST([ETAGS]) >+if test -z "$CSCOPE"; then >+ CSCOPE=cscope >+fi >+AC_SUBST([CSCOPE]) >+ > AC_REQUIRE([AM_SILENT_RULES])dnl > dnl The testsuite driver may need to know about EXEEXT, so add the > dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This >@@ -615,7 +635,7 @@ > done > echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) > >-# Copyright (C) 2001-2018 Free Software Foundation, Inc. >+# Copyright (C) 2001-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -636,7 +656,7 @@ > fi > AC_SUBST([install_sh])]) > >-# Copyright (C) 2003-2018 Free Software Foundation, Inc. >+# Copyright (C) 2003-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -657,7 +677,7 @@ > > # Check to see how 'make' treats includes. -*- Autoconf -*- > >-# Copyright (C) 2001-2018 Free Software Foundation, Inc. >+# Copyright (C) 2001-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -700,7 +720,7 @@ > > # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- > >-# Copyright (C) 1997-2018 Free Software Foundation, Inc. >+# Copyright (C) 1997-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -721,12 +741,7 @@ > [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl > AC_REQUIRE_AUX_FILE([missing])dnl > if test x"${MISSING+set}" != xset; then >- case $am_aux_dir in >- *\ * | *\ *) >- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; >- *) >- MISSING="\${SHELL} $am_aux_dir/missing" ;; >- esac >+ MISSING="\${SHELL} '$am_aux_dir/missing'" > fi > # Use eval to expand $SHELL > if eval "$MISSING --is-lightweight"; then >@@ -739,7 +754,7 @@ > > # Helper functions for option handling. -*- Autoconf -*- > >-# Copyright (C) 2001-2018 Free Software Foundation, Inc. >+# Copyright (C) 2001-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -768,7 +783,7 @@ > AC_DEFUN([_AM_IF_OPTION], > [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) > >-# Copyright (C) 1999-2018 Free Software Foundation, Inc. >+# Copyright (C) 1999-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -815,7 +830,7 @@ > # For backward compatibility. > AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) > >-# Copyright (C) 2001-2018 Free Software Foundation, Inc. >+# Copyright (C) 2001-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -834,7 +849,7 @@ > > # Check to make sure that the build environment is sane. -*- Autoconf -*- > >-# Copyright (C) 1996-2018 Free Software Foundation, Inc. >+# Copyright (C) 1996-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -915,7 +930,7 @@ > rm -f conftest.file > ]) > >-# Copyright (C) 2009-2018 Free Software Foundation, Inc. >+# Copyright (C) 2009-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -975,7 +990,7 @@ > _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl > ]) > >-# Copyright (C) 2001-2018 Free Software Foundation, Inc. >+# Copyright (C) 2001-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -1003,7 +1018,7 @@ > INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" > AC_SUBST([INSTALL_STRIP_PROGRAM])]) > >-# Copyright (C) 2006-2018 Free Software Foundation, Inc. >+# Copyright (C) 2006-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -1022,7 +1037,7 @@ > > # Check how to create a tarball. -*- Autoconf -*- > >-# Copyright (C) 2004-2018 Free Software Foundation, Inc. >+# Copyright (C) 2004-2021 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >diff -ur xz-5.2.5/autogen.sh xz-5.4.3/autogen.sh >--- xz-5.2.5/autogen.sh 2020-03-17 17:28:50 >+++ xz-5.4.3/autogen.sh 2023-05-04 17:21:05 >@@ -19,15 +19,38 @@ > ${AUTOHEADER:-autoheader} > ${AUTOMAKE:-automake} -acf --foreign > >-# Generate the translated man pages if the "po4a" tool is available. >+# Generate the translated man pages and the doxygen documentation if the >+# "po4a" and "doxygen" tools are available. > # This is *NOT* done by "autoreconf -fi" or when "make" is run. >-# >-# Pass --no-po4a to this script to skip this step. It can be useful when >-# you know that po4a isn't available and don't want autogen.sh to exit >-# with non-zero exit status. >-if test "x$1" != "x--no-po4a"; then >+# Pass --no-po4a or --no-doxygen to this script to skip these steps. >+# It can be useful when you know that po4a or doxygen aren't available and >+# don't want autogen.sh to exit with non-zero exit status. >+generate_po4a="y" >+generate_doxygen="y" >+ >+for arg in "$@" >+do >+ case $arg in >+ "--no-po4a") >+ generate_po4a="n" >+ ;; >+ >+ "--no-doxygen") >+ generate_doxygen="n" >+ ;; >+ esac >+done >+ >+if test "$generate_po4a" != "n"; then > cd po4a > sh update-po >+ cd .. >+fi >+ >+if test "$generate_doxygen" != "n"; then >+ cd doxygen >+ sh update-doxygen >+ cd .. > fi > > exit 0 >diff -ur xz-5.2.5/build-aux/compile xz-5.4.3/build-aux/compile >--- xz-5.2.5/build-aux/compile 2020-03-17 17:29:35 >+++ xz-5.4.3/build-aux/compile 2023-05-04 17:31:30 >@@ -3,7 +3,7 @@ > > scriptversion=2018-03-07.03; # UTC > >-# Copyright (C) 1999-2018 Free Software Foundation, Inc. >+# Copyright (C) 1999-2021 Free Software Foundation, Inc. > # Written by Tom Tromey <tromey@cygnus.com>. > # > # This program is free software; you can redistribute it and/or modify >@@ -53,7 +53,7 @@ > MINGW*) > file_conv=mingw > ;; >- CYGWIN*) >+ CYGWIN* | MSYS*) > file_conv=cygwin > ;; > *) >@@ -67,7 +67,7 @@ > mingw/*) > file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` > ;; >- cygwin/*) >+ cygwin/* | msys/*) > file=`cygpath -m "$file" || echo "$file"` > ;; > wine/*) >diff -ur xz-5.2.5/build-aux/config.guess xz-5.4.3/build-aux/config.guess >--- xz-5.2.5/build-aux/config.guess 2020-03-17 17:29:35 >+++ xz-5.4.3/build-aux/config.guess 2023-05-04 17:31:30 >@@ -1,12 +1,14 @@ > #! /bin/sh > # Attempt to guess a canonical system name. >-# Copyright 1992-2018 Free Software Foundation, Inc. >+# Copyright 1992-2022 Free Software Foundation, Inc. > >-timestamp='2018-03-08' >+# shellcheck disable=SC2006,SC2268 # see below for rationale > >+timestamp='2022-01-09' >+ > # This file is free software; you can redistribute it and/or modify it > # under the terms of the GNU General Public License as published by >-# the Free Software Foundation; either version 3 of the License, or >+# the Free Software Foundation, either version 3 of the License, or > # (at your option) any later version. > # > # This program is distributed in the hope that it will be useful, but >@@ -27,11 +29,19 @@ > # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. > # > # You can get the latest version of this script from: >-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess >+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess > # > # Please send patches to <config-patches@gnu.org>. > > >+# The "shellcheck disable" line above the timestamp inhibits complaints >+# about features and limitations of the classic Bourne shell that were >+# superseded or lifted in POSIX. However, this script identifies a wide >+# variety of pre-POSIX systems that do not have POSIX shells at all, and >+# even some reasonably current systems (Solaris 10 as case-in-point) still >+# have a pre-POSIX /bin/sh. >+ >+ > me=`echo "$0" | sed -e 's,.*/,,'` > > usage="\ >@@ -50,7 +60,7 @@ > GNU config.guess ($timestamp) > > Originally written by Per Bothner. >-Copyright 1992-2018 Free Software Foundation, Inc. >+Copyright 1992-2022 Free Software Foundation, Inc. > > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." >@@ -84,7 +94,8 @@ > exit 1 > fi > >-trap 'exit 1' 1 2 15 >+# Just in case it came from the environment. >+GUESS= > > # CC_FOR_BUILD -- compiler used by this script. Note that the use of a > # compiler to aid in system detection is discouraged as it requires >@@ -96,73 +107,90 @@ > > # Portable tmp directory creation inspired by the Autoconf team. > >-set_cc_for_build=' >-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; >-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; >-: ${TMPDIR=/tmp} ; >- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || >- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || >- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || >- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; >-dummy=$tmp/dummy ; >-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; >-case $CC_FOR_BUILD,$HOST_CC,$CC in >- ,,) echo "int x;" > "$dummy.c" ; >- for c in cc gcc c89 c99 ; do >- if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then >- CC_FOR_BUILD="$c"; break ; >- fi ; >- done ; >- if test x"$CC_FOR_BUILD" = x ; then >- CC_FOR_BUILD=no_compiler_found ; >- fi >- ;; >- ,,*) CC_FOR_BUILD=$CC ;; >- ,*,*) CC_FOR_BUILD=$HOST_CC ;; >-esac ; set_cc_for_build= ;' >+tmp= >+# shellcheck disable=SC2172 >+trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 > >+set_cc_for_build() { >+ # prevent multiple calls if $tmp is already set >+ test "$tmp" && return 0 >+ : "${TMPDIR=/tmp}" >+ # shellcheck disable=SC2039,SC3028 >+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || >+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || >+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || >+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } >+ dummy=$tmp/dummy >+ case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in >+ ,,) echo "int x;" > "$dummy.c" >+ for driver in cc gcc c89 c99 ; do >+ if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then >+ CC_FOR_BUILD=$driver >+ break >+ fi >+ done >+ if test x"$CC_FOR_BUILD" = x ; then >+ CC_FOR_BUILD=no_compiler_found >+ fi >+ ;; >+ ,,*) CC_FOR_BUILD=$CC ;; >+ ,*,*) CC_FOR_BUILD=$HOST_CC ;; >+ esac >+} >+ > # This is needed to find uname on a Pyramid OSx when run in the BSD universe. > # (ghazi@noc.rutgers.edu 1994-08-24) >-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then >+if test -f /.attbin/uname ; then > PATH=$PATH:/.attbin ; export PATH > fi > > UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown > UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown >-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown >+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown > UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown > >-case "$UNAME_SYSTEM" in >+case $UNAME_SYSTEM in > Linux|GNU|GNU/*) >- # If the system lacks a compiler, then just pick glibc. >- # We could probably try harder. >- LIBC=gnu >+ LIBC=unknown > >- eval "$set_cc_for_build" >+ set_cc_for_build > cat <<-EOF > "$dummy.c" > #include <features.h> > #if defined(__UCLIBC__) > LIBC=uclibc > #elif defined(__dietlibc__) > LIBC=dietlibc >- #else >+ #elif defined(__GLIBC__) > LIBC=gnu >+ #else >+ #include <stdarg.h> >+ /* First heuristic to detect musl libc. */ >+ #ifdef __DEFINED_va_list >+ LIBC=musl > #endif >+ #endif > EOF >- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" >+ cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` >+ eval "$cc_set_libc" > >- # If ldd exists, use it to detect musl libc. >- if command -v ldd >/dev/null && \ >- ldd --version 2>&1 | grep -q ^musl >- then >- LIBC=musl >+ # Second heuristic to detect musl libc. >+ if [ "$LIBC" = unknown ] && >+ command -v ldd >/dev/null && >+ ldd --version 2>&1 | grep -q ^musl; then >+ LIBC=musl > fi >+ >+ # If the system lacks a compiler, then just pick glibc. >+ # We could probably try harder. >+ if [ "$LIBC" = unknown ]; then >+ LIBC=gnu >+ fi > ;; > esac > > # Note: order is significant - the case branches are not exclusive. > >-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in >+case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in > *:NetBSD:*:*) > # NetBSD (nbsd) targets should (where applicable) match one or > # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, >@@ -174,12 +202,12 @@ > # > # Note: NetBSD doesn't particularly care about the vendor > # portion of the name. We always set it to "unknown". >- sysctl="sysctl -n hw.machine_arch" > UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ >- "/sbin/$sysctl" 2>/dev/null || \ >- "/usr/sbin/$sysctl" 2>/dev/null || \ >+ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ >+ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ > echo unknown)` >- case "$UNAME_MACHINE_ARCH" in >+ case $UNAME_MACHINE_ARCH in >+ aarch64eb) machine=aarch64_be-unknown ;; > armeb) machine=armeb-unknown ;; > arm*) machine=arm-unknown ;; > sh3el) machine=shl-unknown ;; >@@ -188,18 +216,18 @@ > earmv*) > arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` > endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` >- machine="${arch}${endian}"-unknown >+ machine=${arch}${endian}-unknown > ;; >- *) machine="$UNAME_MACHINE_ARCH"-unknown ;; >+ *) machine=$UNAME_MACHINE_ARCH-unknown ;; > esac > # The Operating System including object format, if it has switched > # to ELF recently (or will in the future) and ABI. >- case "$UNAME_MACHINE_ARCH" in >+ case $UNAME_MACHINE_ARCH in > earm*) > os=netbsdelf > ;; > arm*|i386|m68k|ns32k|sh3*|sparc|vax) >- eval "$set_cc_for_build" >+ set_cc_for_build > if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ > | grep -q __ELF__ > then >@@ -215,7 +243,7 @@ > ;; > esac > # Determine ABI tags. >- case "$UNAME_MACHINE_ARCH" in >+ case $UNAME_MACHINE_ARCH in > earm*) > expr='s/^earmv[0-9]/-eabi/;s/eb$//' > abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` >@@ -226,7 +254,7 @@ > # thus, need a distinct triplet. However, they do not need > # kernel version information, so it can be replaced with a > # suitable tag, in the style of linux-gnu. >- case "$UNAME_VERSION" in >+ case $UNAME_VERSION in > Debian*) > release='-gnu' > ;; >@@ -237,45 +265,57 @@ > # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: > # contains redundant information, the shorter form: > # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. >- echo "$machine-${os}${release}${abi}" >- exit ;; >+ GUESS=$machine-${os}${release}${abi-} >+ ;; > *:Bitrig:*:*) > UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` >- echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" >- exit ;; >+ GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE >+ ;; > *:OpenBSD:*:*) > UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` >- echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" >- exit ;; >+ GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE >+ ;; >+ *:SecBSD:*:*) >+ UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` >+ GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE >+ ;; > *:LibertyBSD:*:*) > UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` >- echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" >- exit ;; >+ GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE >+ ;; > *:MidnightBSD:*:*) >- echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE >+ ;; > *:ekkoBSD:*:*) >- echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE >+ ;; > *:SolidBSD:*:*) >- echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE >+ ;; >+ *:OS108:*:*) >+ GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE >+ ;; > macppc:MirBSD:*:*) >- echo powerpc-unknown-mirbsd"$UNAME_RELEASE" >- exit ;; >+ GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE >+ ;; > *:MirBSD:*:*) >- echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE >+ ;; > *:Sortix:*:*) >- echo "$UNAME_MACHINE"-unknown-sortix >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-sortix >+ ;; >+ *:Twizzler:*:*) >+ GUESS=$UNAME_MACHINE-unknown-twizzler >+ ;; > *:Redox:*:*) >- echo "$UNAME_MACHINE"-unknown-redox >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-redox >+ ;; > mips:OSF1:*.*) >- echo mips-dec-osf1 >- exit ;; >+ GUESS=mips-dec-osf1 >+ ;; > alpha:OSF1:*:*) >+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code. >+ trap '' 0 > case $UNAME_RELEASE in > *4.0) > UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` >@@ -289,7 +329,7 @@ > # covers most systems running today. This code pipes the CPU > # types through head -n 1, so we only detect the type of CPU 0. > ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` >- case "$ALPHA_CPU_TYPE" in >+ case $ALPHA_CPU_TYPE in > "EV4 (21064)") > UNAME_MACHINE=alpha ;; > "EV4.5 (21064)") >@@ -326,117 +366,121 @@ > # A Tn.n version is a released field test version. > # A Xn.n version is an unreleased experimental baselevel. > # 1.2 uses "1.2" for uname -r. >- echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" >- # Reset EXIT trap before exiting to avoid spurious non-zero exit code. >- exitcode=$? >- trap '' 0 >- exit $exitcode ;; >+ OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` >+ GUESS=$UNAME_MACHINE-dec-osf$OSF_REL >+ ;; > Amiga*:UNIX_System_V:4.0:*) >- echo m68k-unknown-sysv4 >- exit ;; >+ GUESS=m68k-unknown-sysv4 >+ ;; > *:[Aa]miga[Oo][Ss]:*:*) >- echo "$UNAME_MACHINE"-unknown-amigaos >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-amigaos >+ ;; > *:[Mm]orph[Oo][Ss]:*:*) >- echo "$UNAME_MACHINE"-unknown-morphos >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-morphos >+ ;; > *:OS/390:*:*) >- echo i370-ibm-openedition >- exit ;; >+ GUESS=i370-ibm-openedition >+ ;; > *:z/VM:*:*) >- echo s390-ibm-zvmoe >- exit ;; >+ GUESS=s390-ibm-zvmoe >+ ;; > *:OS400:*:*) >- echo powerpc-ibm-os400 >- exit ;; >+ GUESS=powerpc-ibm-os400 >+ ;; > arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) >- echo arm-acorn-riscix"$UNAME_RELEASE" >- exit ;; >+ GUESS=arm-acorn-riscix$UNAME_RELEASE >+ ;; > arm*:riscos:*:*|arm*:RISCOS:*:*) >- echo arm-unknown-riscos >- exit ;; >+ GUESS=arm-unknown-riscos >+ ;; > SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) >- echo hppa1.1-hitachi-hiuxmpp >- exit ;; >+ GUESS=hppa1.1-hitachi-hiuxmpp >+ ;; > Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) > # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. >- if test "`(/bin/universe) 2>/dev/null`" = att ; then >- echo pyramid-pyramid-sysv3 >- else >- echo pyramid-pyramid-bsd >- fi >- exit ;; >+ case `(/bin/universe) 2>/dev/null` in >+ att) GUESS=pyramid-pyramid-sysv3 ;; >+ *) GUESS=pyramid-pyramid-bsd ;; >+ esac >+ ;; > NILE*:*:*:dcosx) >- echo pyramid-pyramid-svr4 >- exit ;; >+ GUESS=pyramid-pyramid-svr4 >+ ;; > DRS?6000:unix:4.0:6*) >- echo sparc-icl-nx6 >- exit ;; >+ GUESS=sparc-icl-nx6 >+ ;; > DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) > case `/usr/bin/uname -p` in >- sparc) echo sparc-icl-nx7; exit ;; >- esac ;; >+ sparc) GUESS=sparc-icl-nx7 ;; >+ esac >+ ;; > s390x:SunOS:*:*) >- echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" >- exit ;; >+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` >+ GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL >+ ;; > sun4H:SunOS:5.*:*) >- echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" >- exit ;; >+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` >+ GUESS=sparc-hal-solaris2$SUN_REL >+ ;; > sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) >- echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" >- exit ;; >+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` >+ GUESS=sparc-sun-solaris2$SUN_REL >+ ;; > i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) >- echo i386-pc-auroraux"$UNAME_RELEASE" >- exit ;; >+ GUESS=i386-pc-auroraux$UNAME_RELEASE >+ ;; > i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) >- eval "$set_cc_for_build" >+ set_cc_for_build > SUN_ARCH=i386 > # If there is a compiler, see if it is configured for 64-bit objects. > # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. > # This test works for both compilers. >- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then >+ if test "$CC_FOR_BUILD" != no_compiler_found; then > if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ >- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ >+ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ > grep IS_64BIT_ARCH >/dev/null > then > SUN_ARCH=x86_64 > fi > fi >- echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" >- exit ;; >+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` >+ GUESS=$SUN_ARCH-pc-solaris2$SUN_REL >+ ;; > sun4*:SunOS:6*:*) > # According to config.sub, this is the proper way to canonicalize > # SunOS6. Hard to guess exactly what SunOS6 will be like, but > # it's likely to be more like Solaris than SunOS4. >- echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" >- exit ;; >+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` >+ GUESS=sparc-sun-solaris3$SUN_REL >+ ;; > sun4*:SunOS:*:*) >- case "`/usr/bin/arch -k`" in >+ case `/usr/bin/arch -k` in > Series*|S4*) > UNAME_RELEASE=`uname -v` > ;; > esac > # Japanese Language versions have a version number like `4.1.3-JL'. >- echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" >- exit ;; >+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` >+ GUESS=sparc-sun-sunos$SUN_REL >+ ;; > sun3*:SunOS:*:*) >- echo m68k-sun-sunos"$UNAME_RELEASE" >- exit ;; >+ GUESS=m68k-sun-sunos$UNAME_RELEASE >+ ;; > sun*:*:4.2BSD:*) > UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` > test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 >- case "`/bin/arch`" in >+ case `/bin/arch` in > sun3) >- echo m68k-sun-sunos"$UNAME_RELEASE" >+ GUESS=m68k-sun-sunos$UNAME_RELEASE > ;; > sun4) >- echo sparc-sun-sunos"$UNAME_RELEASE" >+ GUESS=sparc-sun-sunos$UNAME_RELEASE > ;; > esac >- exit ;; >+ ;; > aushp:SunOS:*:*) >- echo sparc-auspex-sunos"$UNAME_RELEASE" >- exit ;; >+ GUESS=sparc-auspex-sunos$UNAME_RELEASE >+ ;; > # The situation for MiNT is a little confusing. The machine name > # can be virtually everything (everything which is not > # "atarist" or "atariste" at least should have a processor >@@ -446,43 +490,43 @@ > # MiNT. But MiNT is downward compatible to TOS, so this should > # be no problem. > atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) >- echo m68k-atari-mint"$UNAME_RELEASE" >- exit ;; >+ GUESS=m68k-atari-mint$UNAME_RELEASE >+ ;; > atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) >- echo m68k-atari-mint"$UNAME_RELEASE" >- exit ;; >+ GUESS=m68k-atari-mint$UNAME_RELEASE >+ ;; > *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) >- echo m68k-atari-mint"$UNAME_RELEASE" >- exit ;; >+ GUESS=m68k-atari-mint$UNAME_RELEASE >+ ;; > milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) >- echo m68k-milan-mint"$UNAME_RELEASE" >- exit ;; >+ GUESS=m68k-milan-mint$UNAME_RELEASE >+ ;; > hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) >- echo m68k-hades-mint"$UNAME_RELEASE" >- exit ;; >+ GUESS=m68k-hades-mint$UNAME_RELEASE >+ ;; > *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) >- echo m68k-unknown-mint"$UNAME_RELEASE" >- exit ;; >+ GUESS=m68k-unknown-mint$UNAME_RELEASE >+ ;; > m68k:machten:*:*) >- echo m68k-apple-machten"$UNAME_RELEASE" >- exit ;; >+ GUESS=m68k-apple-machten$UNAME_RELEASE >+ ;; > powerpc:machten:*:*) >- echo powerpc-apple-machten"$UNAME_RELEASE" >- exit ;; >+ GUESS=powerpc-apple-machten$UNAME_RELEASE >+ ;; > RISC*:Mach:*:*) >- echo mips-dec-mach_bsd4.3 >- exit ;; >+ GUESS=mips-dec-mach_bsd4.3 >+ ;; > RISC*:ULTRIX:*:*) >- echo mips-dec-ultrix"$UNAME_RELEASE" >- exit ;; >+ GUESS=mips-dec-ultrix$UNAME_RELEASE >+ ;; > VAX*:ULTRIX*:*:*) >- echo vax-dec-ultrix"$UNAME_RELEASE" >- exit ;; >+ GUESS=vax-dec-ultrix$UNAME_RELEASE >+ ;; > 2020:CLIX:*:* | 2430:CLIX:*:*) >- echo clipper-intergraph-clix"$UNAME_RELEASE" >- exit ;; >+ GUESS=clipper-intergraph-clix$UNAME_RELEASE >+ ;; > mips:*:*:UMIPS | mips:*:*:RISCos) >- eval "$set_cc_for_build" >+ set_cc_for_build > sed 's/^ //' << EOF > "$dummy.c" > #ifdef __cplusplus > #include <stdio.h> /* for printf() prototype */ >@@ -508,78 +552,79 @@ > dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && > SYSTEM_NAME=`"$dummy" "$dummyarg"` && > { echo "$SYSTEM_NAME"; exit; } >- echo mips-mips-riscos"$UNAME_RELEASE" >- exit ;; >+ GUESS=mips-mips-riscos$UNAME_RELEASE >+ ;; > Motorola:PowerMAX_OS:*:*) >- echo powerpc-motorola-powermax >- exit ;; >+ GUESS=powerpc-motorola-powermax >+ ;; > Motorola:*:4.3:PL8-*) >- echo powerpc-harris-powermax >- exit ;; >+ GUESS=powerpc-harris-powermax >+ ;; > Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) >- echo powerpc-harris-powermax >- exit ;; >+ GUESS=powerpc-harris-powermax >+ ;; > Night_Hawk:Power_UNIX:*:*) >- echo powerpc-harris-powerunix >- exit ;; >+ GUESS=powerpc-harris-powerunix >+ ;; > m88k:CX/UX:7*:*) >- echo m88k-harris-cxux7 >- exit ;; >+ GUESS=m88k-harris-cxux7 >+ ;; > m88k:*:4*:R4*) >- echo m88k-motorola-sysv4 >- exit ;; >+ GUESS=m88k-motorola-sysv4 >+ ;; > m88k:*:3*:R3*) >- echo m88k-motorola-sysv3 >- exit ;; >+ GUESS=m88k-motorola-sysv3 >+ ;; > AViiON:dgux:*:*) > # DG/UX returns AViiON for all architectures > UNAME_PROCESSOR=`/usr/bin/uname -p` >- if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] >+ if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 > then >- if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ >- [ "$TARGET_BINARY_INTERFACE"x = x ] >+ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ >+ test "$TARGET_BINARY_INTERFACE"x = x > then >- echo m88k-dg-dgux"$UNAME_RELEASE" >+ GUESS=m88k-dg-dgux$UNAME_RELEASE > else >- echo m88k-dg-dguxbcs"$UNAME_RELEASE" >+ GUESS=m88k-dg-dguxbcs$UNAME_RELEASE > fi > else >- echo i586-dg-dgux"$UNAME_RELEASE" >+ GUESS=i586-dg-dgux$UNAME_RELEASE > fi >- exit ;; >+ ;; > M88*:DolphinOS:*:*) # DolphinOS (SVR3) >- echo m88k-dolphin-sysv3 >- exit ;; >+ GUESS=m88k-dolphin-sysv3 >+ ;; > M88*:*:R3*:*) > # Delta 88k system running SVR3 >- echo m88k-motorola-sysv3 >- exit ;; >+ GUESS=m88k-motorola-sysv3 >+ ;; > XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) >- echo m88k-tektronix-sysv3 >- exit ;; >+ GUESS=m88k-tektronix-sysv3 >+ ;; > Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) >- echo m68k-tektronix-bsd >- exit ;; >+ GUESS=m68k-tektronix-bsd >+ ;; > *:IRIX*:*:*) >- echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" >- exit ;; >+ IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` >+ GUESS=mips-sgi-irix$IRIX_REL >+ ;; > ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. >- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id >- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' >+ GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id >+ ;; # Note that: echo "'`uname -s`'" gives 'AIX ' > i*86:AIX:*:*) >- echo i386-ibm-aix >- exit ;; >+ GUESS=i386-ibm-aix >+ ;; > ia64:AIX:*:*) >- if [ -x /usr/bin/oslevel ] ; then >+ if test -x /usr/bin/oslevel ; then > IBM_REV=`/usr/bin/oslevel` > else >- IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" >+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE > fi >- echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" >- exit ;; >+ GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV >+ ;; > *:AIX:2:3) > if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then >- eval "$set_cc_for_build" >+ set_cc_for_build > sed 's/^ //' << EOF > "$dummy.c" > #include <sys/systemcfg.h> > >@@ -593,16 +638,16 @@ > EOF > if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` > then >- echo "$SYSTEM_NAME" >+ GUESS=$SYSTEM_NAME > else >- echo rs6000-ibm-aix3.2.5 >+ GUESS=rs6000-ibm-aix3.2.5 > fi > elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then >- echo rs6000-ibm-aix3.2.4 >+ GUESS=rs6000-ibm-aix3.2.4 > else >- echo rs6000-ibm-aix3.2 >+ GUESS=rs6000-ibm-aix3.2 > fi >- exit ;; >+ ;; > *:AIX:*:[4567]) > IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` > if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then >@@ -610,57 +655,57 @@ > else > IBM_ARCH=powerpc > fi >- if [ -x /usr/bin/lslpp ] ; then >- IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | >+ if test -x /usr/bin/lslpp ; then >+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ > awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` > else >- IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" >+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE > fi >- echo "$IBM_ARCH"-ibm-aix"$IBM_REV" >- exit ;; >+ GUESS=$IBM_ARCH-ibm-aix$IBM_REV >+ ;; > *:AIX:*:*) >- echo rs6000-ibm-aix >- exit ;; >+ GUESS=rs6000-ibm-aix >+ ;; > ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) >- echo romp-ibm-bsd4.4 >- exit ;; >+ GUESS=romp-ibm-bsd4.4 >+ ;; > ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and >- echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to >- exit ;; # report: romp-ibm BSD 4.3 >+ GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to >+ ;; # report: romp-ibm BSD 4.3 > *:BOSX:*:*) >- echo rs6000-bull-bosx >- exit ;; >+ GUESS=rs6000-bull-bosx >+ ;; > DPX/2?00:B.O.S.:*:*) >- echo m68k-bull-sysv3 >- exit ;; >+ GUESS=m68k-bull-sysv3 >+ ;; > 9000/[34]??:4.3bsd:1.*:*) >- echo m68k-hp-bsd >- exit ;; >+ GUESS=m68k-hp-bsd >+ ;; > hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) >- echo m68k-hp-bsd4.4 >- exit ;; >+ GUESS=m68k-hp-bsd4.4 >+ ;; > 9000/[34678]??:HP-UX:*:*) >- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` >- case "$UNAME_MACHINE" in >+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` >+ case $UNAME_MACHINE in > 9000/31?) HP_ARCH=m68000 ;; > 9000/[34]??) HP_ARCH=m68k ;; > 9000/[678][0-9][0-9]) >- if [ -x /usr/bin/getconf ]; then >+ if test -x /usr/bin/getconf; then > sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` > sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` >- case "$sc_cpu_version" in >+ case $sc_cpu_version in > 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 > 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 > 532) # CPU_PA_RISC2_0 >- case "$sc_kernel_bits" in >+ case $sc_kernel_bits in > 32) HP_ARCH=hppa2.0n ;; > 64) HP_ARCH=hppa2.0w ;; > '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 > esac ;; > esac > fi >- if [ "$HP_ARCH" = "" ]; then >- eval "$set_cc_for_build" >+ if test "$HP_ARCH" = ""; then >+ set_cc_for_build > sed 's/^ //' << EOF > "$dummy.c" > > #define _HPUX_SOURCE >@@ -698,9 +743,9 @@ > test -z "$HP_ARCH" && HP_ARCH=hppa > fi ;; > esac >- if [ "$HP_ARCH" = hppa2.0w ] >+ if test "$HP_ARCH" = hppa2.0w > then >- eval "$set_cc_for_build" >+ set_cc_for_build > > # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating > # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler >@@ -719,14 +764,14 @@ > HP_ARCH=hppa64 > fi > fi >- echo "$HP_ARCH"-hp-hpux"$HPUX_REV" >- exit ;; >+ GUESS=$HP_ARCH-hp-hpux$HPUX_REV >+ ;; > ia64:HP-UX:*:*) >- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` >- echo ia64-hp-hpux"$HPUX_REV" >- exit ;; >+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` >+ GUESS=ia64-hp-hpux$HPUX_REV >+ ;; > 3050*:HI-UX:*:*) >- eval "$set_cc_for_build" >+ set_cc_for_build > sed 's/^ //' << EOF > "$dummy.c" > #include <unistd.h> > int >@@ -754,36 +799,36 @@ > EOF > $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && > { echo "$SYSTEM_NAME"; exit; } >- echo unknown-hitachi-hiuxwe2 >- exit ;; >+ GUESS=unknown-hitachi-hiuxwe2 >+ ;; > 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) >- echo hppa1.1-hp-bsd >- exit ;; >+ GUESS=hppa1.1-hp-bsd >+ ;; > 9000/8??:4.3bsd:*:*) >- echo hppa1.0-hp-bsd >- exit ;; >+ GUESS=hppa1.0-hp-bsd >+ ;; > *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) >- echo hppa1.0-hp-mpeix >- exit ;; >+ GUESS=hppa1.0-hp-mpeix >+ ;; > hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) >- echo hppa1.1-hp-osf >- exit ;; >+ GUESS=hppa1.1-hp-osf >+ ;; > hp8??:OSF1:*:*) >- echo hppa1.0-hp-osf >- exit ;; >+ GUESS=hppa1.0-hp-osf >+ ;; > i*86:OSF1:*:*) >- if [ -x /usr/sbin/sysversion ] ; then >- echo "$UNAME_MACHINE"-unknown-osf1mk >+ if test -x /usr/sbin/sysversion ; then >+ GUESS=$UNAME_MACHINE-unknown-osf1mk > else >- echo "$UNAME_MACHINE"-unknown-osf1 >+ GUESS=$UNAME_MACHINE-unknown-osf1 > fi >- exit ;; >+ ;; > parisc*:Lites*:*:*) >- echo hppa1.1-hp-lites >- exit ;; >+ GUESS=hppa1.1-hp-lites >+ ;; > C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) >- echo c1-convex-bsd >- exit ;; >+ GUESS=c1-convex-bsd >+ ;; > C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) > if getsysinfo -f scalar_acc > then echo c32-convex-bsd >@@ -791,17 +836,18 @@ > fi > exit ;; > C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) >- echo c34-convex-bsd >- exit ;; >+ GUESS=c34-convex-bsd >+ ;; > C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) >- echo c38-convex-bsd >- exit ;; >+ GUESS=c38-convex-bsd >+ ;; > C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) >- echo c4-convex-bsd >- exit ;; >+ GUESS=c4-convex-bsd >+ ;; > CRAY*Y-MP:*:*:*) >- echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' >- exit ;; >+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` >+ GUESS=ymp-cray-unicos$CRAY_REL >+ ;; > CRAY*[A-Z]90:*:*:*) > echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ > | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ >@@ -809,103 +855,129 @@ > -e 's/\.[^.]*$/.X/' > exit ;; > CRAY*TS:*:*:*) >- echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' >- exit ;; >+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` >+ GUESS=t90-cray-unicos$CRAY_REL >+ ;; > CRAY*T3E:*:*:*) >- echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' >- exit ;; >+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` >+ GUESS=alphaev5-cray-unicosmk$CRAY_REL >+ ;; > CRAY*SV1:*:*:*) >- echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' >- exit ;; >+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` >+ GUESS=sv1-cray-unicos$CRAY_REL >+ ;; > *:UNICOS/mp:*:*) >- echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' >- exit ;; >+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` >+ GUESS=craynv-cray-unicosmp$CRAY_REL >+ ;; > F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) > FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` > FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` > FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` >- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" >- exit ;; >+ GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} >+ ;; > 5000:UNIX_System_V:4.*:*) > FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` > FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` >- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" >- exit ;; >+ GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} >+ ;; > i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) >- echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" >- exit ;; >+ GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE >+ ;; > sparc*:BSD/OS:*:*) >- echo sparc-unknown-bsdi"$UNAME_RELEASE" >- exit ;; >+ GUESS=sparc-unknown-bsdi$UNAME_RELEASE >+ ;; > *:BSD/OS:*:*) >- echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE >+ ;; >+ arm:FreeBSD:*:*) >+ UNAME_PROCESSOR=`uname -p` >+ set_cc_for_build >+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ >+ | grep -q __ARM_PCS_VFP >+ then >+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` >+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi >+ else >+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` >+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf >+ fi >+ ;; > *:FreeBSD:*:*) > UNAME_PROCESSOR=`/usr/bin/uname -p` >- case "$UNAME_PROCESSOR" in >+ case $UNAME_PROCESSOR in > amd64) > UNAME_PROCESSOR=x86_64 ;; > i386) > UNAME_PROCESSOR=i586 ;; > esac >- echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" >- exit ;; >+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` >+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL >+ ;; > i*:CYGWIN*:*) >- echo "$UNAME_MACHINE"-pc-cygwin >- exit ;; >+ GUESS=$UNAME_MACHINE-pc-cygwin >+ ;; > *:MINGW64*:*) >- echo "$UNAME_MACHINE"-pc-mingw64 >- exit ;; >+ GUESS=$UNAME_MACHINE-pc-mingw64 >+ ;; > *:MINGW*:*) >- echo "$UNAME_MACHINE"-pc-mingw32 >- exit ;; >+ GUESS=$UNAME_MACHINE-pc-mingw32 >+ ;; > *:MSYS*:*) >- echo "$UNAME_MACHINE"-pc-msys >- exit ;; >+ GUESS=$UNAME_MACHINE-pc-msys >+ ;; > i*:PW*:*) >- echo "$UNAME_MACHINE"-pc-pw32 >- exit ;; >+ GUESS=$UNAME_MACHINE-pc-pw32 >+ ;; >+ *:SerenityOS:*:*) >+ GUESS=$UNAME_MACHINE-pc-serenity >+ ;; > *:Interix*:*) >- case "$UNAME_MACHINE" in >+ case $UNAME_MACHINE in > x86) >- echo i586-pc-interix"$UNAME_RELEASE" >- exit ;; >+ GUESS=i586-pc-interix$UNAME_RELEASE >+ ;; > authenticamd | genuineintel | EM64T) >- echo x86_64-unknown-interix"$UNAME_RELEASE" >- exit ;; >+ GUESS=x86_64-unknown-interix$UNAME_RELEASE >+ ;; > IA64) >- echo ia64-unknown-interix"$UNAME_RELEASE" >- exit ;; >+ GUESS=ia64-unknown-interix$UNAME_RELEASE >+ ;; > esac ;; > i*:UWIN*:*) >- echo "$UNAME_MACHINE"-pc-uwin >- exit ;; >+ GUESS=$UNAME_MACHINE-pc-uwin >+ ;; > amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) >- echo x86_64-unknown-cygwin >- exit ;; >+ GUESS=x86_64-pc-cygwin >+ ;; > prep*:SunOS:5.*:*) >- echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" >- exit ;; >+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` >+ GUESS=powerpcle-unknown-solaris2$SUN_REL >+ ;; > *:GNU:*:*) > # the GNU system >- echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" >- exit ;; >+ GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` >+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` >+ GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL >+ ;; > *:GNU/*:*:*) > # other systems with GNU libc and userland >- echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" >- exit ;; >- i*86:Minix:*:*) >- echo "$UNAME_MACHINE"-pc-minix >- exit ;; >+ GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` >+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` >+ GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC >+ ;; >+ *:Minix:*:*) >+ GUESS=$UNAME_MACHINE-unknown-minix >+ ;; > aarch64:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > aarch64_be:Linux:*:*) > UNAME_MACHINE=aarch64_be >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > alpha:Linux:*:*) >- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in >+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in > EV5) UNAME_MACHINE=alphaev5 ;; > EV56) UNAME_MACHINE=alphaev56 ;; > PCA56) UNAME_MACHINE=alphapca56 ;; >@@ -916,183 +988,225 @@ > esac > objdump --private-headers /bin/sh | grep -q ld.so.1 > if test "$?" = 0 ; then LIBC=gnulibc1 ; fi >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >- arc:Linux:*:* | arceb:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; >+ arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > arm*:Linux:*:*) >- eval "$set_cc_for_build" >+ set_cc_for_build > if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ > | grep -q __ARM_EABI__ > then >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC > else > if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ > | grep -q __ARM_PCS_VFP > then >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi >+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi > else >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf >+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf > fi > fi >- exit ;; >+ ;; > avr32*:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > cris:Linux:*:*) >- echo "$UNAME_MACHINE"-axis-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC >+ ;; > crisv32:Linux:*:*) >- echo "$UNAME_MACHINE"-axis-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC >+ ;; > e2k:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > frv:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > hexagon:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > i*86:Linux:*:*) >- echo "$UNAME_MACHINE"-pc-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-pc-linux-$LIBC >+ ;; > ia64:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > k1om:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; >+ loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > m32r*:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > m68*:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > mips:Linux:*:* | mips64:Linux:*:*) >- eval "$set_cc_for_build" >+ set_cc_for_build >+ IS_GLIBC=0 >+ test x"${LIBC}" = xgnu && IS_GLIBC=1 > sed 's/^ //' << EOF > "$dummy.c" > #undef CPU >- #undef ${UNAME_MACHINE} >- #undef ${UNAME_MACHINE}el >+ #undef mips >+ #undef mipsel >+ #undef mips64 >+ #undef mips64el >+ #if ${IS_GLIBC} && defined(_ABI64) >+ LIBCABI=gnuabi64 >+ #else >+ #if ${IS_GLIBC} && defined(_ABIN32) >+ LIBCABI=gnuabin32 >+ #else >+ LIBCABI=${LIBC} >+ #endif >+ #endif >+ >+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 >+ CPU=mipsisa64r6 >+ #else >+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 >+ CPU=mipsisa32r6 >+ #else >+ #if defined(__mips64) >+ CPU=mips64 >+ #else >+ CPU=mips >+ #endif >+ #endif >+ #endif >+ > #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) >- CPU=${UNAME_MACHINE}el >+ MIPS_ENDIAN=el > #else > #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) >- CPU=${UNAME_MACHINE} >+ MIPS_ENDIAN= > #else >- CPU= >+ MIPS_ENDIAN= > #endif > #endif > EOF >- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" >- test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } >+ cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` >+ eval "$cc_set_vars" >+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } > ;; > mips64el:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > openrisc*:Linux:*:*) >- echo or1k-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=or1k-unknown-linux-$LIBC >+ ;; > or32:Linux:*:* | or1k*:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > padre:Linux:*:*) >- echo sparc-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=sparc-unknown-linux-$LIBC >+ ;; > parisc64:Linux:*:* | hppa64:Linux:*:*) >- echo hppa64-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=hppa64-unknown-linux-$LIBC >+ ;; > parisc:Linux:*:* | hppa:Linux:*:*) > # Look for CPU level > case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in >- PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; >- PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; >- *) echo hppa-unknown-linux-"$LIBC" ;; >+ PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; >+ PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; >+ *) GUESS=hppa-unknown-linux-$LIBC ;; > esac >- exit ;; >+ ;; > ppc64:Linux:*:*) >- echo powerpc64-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=powerpc64-unknown-linux-$LIBC >+ ;; > ppc:Linux:*:*) >- echo powerpc-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=powerpc-unknown-linux-$LIBC >+ ;; > ppc64le:Linux:*:*) >- echo powerpc64le-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=powerpc64le-unknown-linux-$LIBC >+ ;; > ppcle:Linux:*:*) >- echo powerpcle-unknown-linux-"$LIBC" >- exit ;; >- riscv32:Linux:*:* | riscv64:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=powerpcle-unknown-linux-$LIBC >+ ;; >+ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > s390:Linux:*:* | s390x:Linux:*:*) >- echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-ibm-linux-$LIBC >+ ;; > sh64*:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > sh*:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > sparc:Linux:*:* | sparc64:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > tile*:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > vax:Linux:*:*) >- echo "$UNAME_MACHINE"-dec-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-dec-linux-$LIBC >+ ;; > x86_64:Linux:*:*) >- echo "$UNAME_MACHINE"-pc-linux-"$LIBC" >- exit ;; >+ set_cc_for_build >+ LIBCABI=$LIBC >+ if test "$CC_FOR_BUILD" != no_compiler_found; then >+ if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ >+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ >+ grep IS_X32 >/dev/null >+ then >+ LIBCABI=${LIBC}x32 >+ fi >+ fi >+ GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI >+ ;; > xtensa*:Linux:*:*) >- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC >+ ;; > i*86:DYNIX/ptx:4*:*) > # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. > # earlier versions are messed up and put the nodename in both > # sysname and nodename. >- echo i386-sequent-sysv4 >- exit ;; >+ GUESS=i386-sequent-sysv4 >+ ;; > i*86:UNIX_SV:4.2MP:2.*) > # Unixware is an offshoot of SVR4, but it has its own version > # number series starting with 2... > # I am not positive that other SVR4 systems won't match this, > # I just have to hope. -- rms. > # Use sysv4.2uw... so that sysv4* matches it. >- echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" >- exit ;; >+ GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION >+ ;; > i*86:OS/2:*:*) > # If we were able to find `uname', then EMX Unix compatibility > # is probably installed. >- echo "$UNAME_MACHINE"-pc-os2-emx >- exit ;; >+ GUESS=$UNAME_MACHINE-pc-os2-emx >+ ;; > i*86:XTS-300:*:STOP) >- echo "$UNAME_MACHINE"-unknown-stop >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-stop >+ ;; > i*86:atheos:*:*) >- echo "$UNAME_MACHINE"-unknown-atheos >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-atheos >+ ;; > i*86:syllable:*:*) >- echo "$UNAME_MACHINE"-pc-syllable >- exit ;; >+ GUESS=$UNAME_MACHINE-pc-syllable >+ ;; > i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) >- echo i386-unknown-lynxos"$UNAME_RELEASE" >- exit ;; >+ GUESS=i386-unknown-lynxos$UNAME_RELEASE >+ ;; > i*86:*DOS:*:*) >- echo "$UNAME_MACHINE"-pc-msdosdjgpp >- exit ;; >+ GUESS=$UNAME_MACHINE-pc-msdosdjgpp >+ ;; > i*86:*:4.*:*) > UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` > if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then >- echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" >+ GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL > else >- echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" >+ GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL > fi >- exit ;; >+ ;; > i*86:*:5:[678]*) > # UnixWare 7.x, OpenUNIX and OpenServer 6. > case `/bin/uname -X | grep "^Machine"` in >@@ -1100,12 +1214,12 @@ > *Pentium) UNAME_MACHINE=i586 ;; > *Pent*|*Celeron) UNAME_MACHINE=i686 ;; > esac >- echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} >+ ;; > i*86:*:3.2:*) > if test -f /usr/options/cb.name; then > UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` >- echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL" >+ GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL > elif /bin/uname -X 2>/dev/null >/dev/null ; then > UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` > (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 >@@ -1115,11 +1229,11 @@ > && UNAME_MACHINE=i686 > (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ > && UNAME_MACHINE=i686 >- echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" >+ GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL > else >- echo "$UNAME_MACHINE"-pc-sysv32 >+ GUESS=$UNAME_MACHINE-pc-sysv32 > fi >- exit ;; >+ ;; > pc:*:*:*) > # Left here for compatibility: > # uname -m prints for DJGPP always 'pc', but it prints nothing about >@@ -1127,31 +1241,31 @@ > # Note: whatever this is, it MUST be the same as what config.sub > # prints for the "djgpp" host, or else GDB configure will decide that > # this is a cross-build. >- echo i586-pc-msdosdjgpp >- exit ;; >+ GUESS=i586-pc-msdosdjgpp >+ ;; > Intel:Mach:3*:*) >- echo i386-pc-mach3 >- exit ;; >+ GUESS=i386-pc-mach3 >+ ;; > paragon:*:*:*) >- echo i860-intel-osf1 >- exit ;; >+ GUESS=i860-intel-osf1 >+ ;; > i860:*:4.*:*) # i860-SVR4 > if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then >- echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 >+ GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 > else # Add other i860-SVR4 vendors below as they are discovered. >- echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 >+ GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 > fi >- exit ;; >+ ;; > mini*:CTIX:SYS*5:*) > # "miniframe" >- echo m68010-convergent-sysv >- exit ;; >+ GUESS=m68010-convergent-sysv >+ ;; > mc68k:UNIX:SYSTEM5:3.51m) >- echo m68k-convergent-sysv >- exit ;; >+ GUESS=m68k-convergent-sysv >+ ;; > M680?0:D-NIX:5.3:*) >- echo m68k-diab-dnix >- exit ;; >+ GUESS=m68k-diab-dnix >+ ;; > M68*:*:R3V[5678]*:*) > test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; > 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) >@@ -1176,249 +1290,404 @@ > /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ > && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; > m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) >- echo m68k-unknown-lynxos"$UNAME_RELEASE" >- exit ;; >+ GUESS=m68k-unknown-lynxos$UNAME_RELEASE >+ ;; > mc68030:UNIX_System_V:4.*:*) >- echo m68k-atari-sysv4 >- exit ;; >+ GUESS=m68k-atari-sysv4 >+ ;; > TSUNAMI:LynxOS:2.*:*) >- echo sparc-unknown-lynxos"$UNAME_RELEASE" >- exit ;; >+ GUESS=sparc-unknown-lynxos$UNAME_RELEASE >+ ;; > rs6000:LynxOS:2.*:*) >- echo rs6000-unknown-lynxos"$UNAME_RELEASE" >- exit ;; >+ GUESS=rs6000-unknown-lynxos$UNAME_RELEASE >+ ;; > PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) >- echo powerpc-unknown-lynxos"$UNAME_RELEASE" >- exit ;; >+ GUESS=powerpc-unknown-lynxos$UNAME_RELEASE >+ ;; > SM[BE]S:UNIX_SV:*:*) >- echo mips-dde-sysv"$UNAME_RELEASE" >- exit ;; >+ GUESS=mips-dde-sysv$UNAME_RELEASE >+ ;; > RM*:ReliantUNIX-*:*:*) >- echo mips-sni-sysv4 >- exit ;; >+ GUESS=mips-sni-sysv4 >+ ;; > RM*:SINIX-*:*:*) >- echo mips-sni-sysv4 >- exit ;; >+ GUESS=mips-sni-sysv4 >+ ;; > *:SINIX-*:*:*) > if uname -p 2>/dev/null >/dev/null ; then > UNAME_MACHINE=`(uname -p) 2>/dev/null` >- echo "$UNAME_MACHINE"-sni-sysv4 >+ GUESS=$UNAME_MACHINE-sni-sysv4 > else >- echo ns32k-sni-sysv >+ GUESS=ns32k-sni-sysv > fi >- exit ;; >+ ;; > PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort > # says <Richard.M.Bartel@ccMail.Census.GOV> >- echo i586-unisys-sysv4 >- exit ;; >+ GUESS=i586-unisys-sysv4 >+ ;; > *:UNIX_System_V:4*:FTX*) > # From Gerald Hewes <hewes@openmarket.com>. > # How about differentiating between stratus architectures? -djm >- echo hppa1.1-stratus-sysv4 >- exit ;; >+ GUESS=hppa1.1-stratus-sysv4 >+ ;; > *:*:*:FTX*) > # From seanf@swdc.stratus.com. >- echo i860-stratus-sysv4 >- exit ;; >+ GUESS=i860-stratus-sysv4 >+ ;; > i*86:VOS:*:*) > # From Paul.Green@stratus.com. >- echo "$UNAME_MACHINE"-stratus-vos >- exit ;; >+ GUESS=$UNAME_MACHINE-stratus-vos >+ ;; > *:VOS:*:*) > # From Paul.Green@stratus.com. >- echo hppa1.1-stratus-vos >- exit ;; >+ GUESS=hppa1.1-stratus-vos >+ ;; > mc68*:A/UX:*:*) >- echo m68k-apple-aux"$UNAME_RELEASE" >- exit ;; >+ GUESS=m68k-apple-aux$UNAME_RELEASE >+ ;; > news*:NEWS-OS:6*:*) >- echo mips-sony-newsos6 >- exit ;; >+ GUESS=mips-sony-newsos6 >+ ;; > R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) >- if [ -d /usr/nec ]; then >- echo mips-nec-sysv"$UNAME_RELEASE" >+ if test -d /usr/nec; then >+ GUESS=mips-nec-sysv$UNAME_RELEASE > else >- echo mips-unknown-sysv"$UNAME_RELEASE" >+ GUESS=mips-unknown-sysv$UNAME_RELEASE > fi >- exit ;; >+ ;; > BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. >- echo powerpc-be-beos >- exit ;; >+ GUESS=powerpc-be-beos >+ ;; > BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. >- echo powerpc-apple-beos >- exit ;; >+ GUESS=powerpc-apple-beos >+ ;; > BePC:BeOS:*:*) # BeOS running on Intel PC compatible. >- echo i586-pc-beos >- exit ;; >+ GUESS=i586-pc-beos >+ ;; > BePC:Haiku:*:*) # Haiku running on Intel PC compatible. >- echo i586-pc-haiku >- exit ;; >+ GUESS=i586-pc-haiku >+ ;; > x86_64:Haiku:*:*) >- echo x86_64-unknown-haiku >- exit ;; >+ GUESS=x86_64-unknown-haiku >+ ;; > SX-4:SUPER-UX:*:*) >- echo sx4-nec-superux"$UNAME_RELEASE" >- exit ;; >+ GUESS=sx4-nec-superux$UNAME_RELEASE >+ ;; > SX-5:SUPER-UX:*:*) >- echo sx5-nec-superux"$UNAME_RELEASE" >- exit ;; >+ GUESS=sx5-nec-superux$UNAME_RELEASE >+ ;; > SX-6:SUPER-UX:*:*) >- echo sx6-nec-superux"$UNAME_RELEASE" >- exit ;; >+ GUESS=sx6-nec-superux$UNAME_RELEASE >+ ;; > SX-7:SUPER-UX:*:*) >- echo sx7-nec-superux"$UNAME_RELEASE" >- exit ;; >+ GUESS=sx7-nec-superux$UNAME_RELEASE >+ ;; > SX-8:SUPER-UX:*:*) >- echo sx8-nec-superux"$UNAME_RELEASE" >- exit ;; >+ GUESS=sx8-nec-superux$UNAME_RELEASE >+ ;; > SX-8R:SUPER-UX:*:*) >- echo sx8r-nec-superux"$UNAME_RELEASE" >- exit ;; >+ GUESS=sx8r-nec-superux$UNAME_RELEASE >+ ;; > SX-ACE:SUPER-UX:*:*) >- echo sxace-nec-superux"$UNAME_RELEASE" >- exit ;; >+ GUESS=sxace-nec-superux$UNAME_RELEASE >+ ;; > Power*:Rhapsody:*:*) >- echo powerpc-apple-rhapsody"$UNAME_RELEASE" >- exit ;; >+ GUESS=powerpc-apple-rhapsody$UNAME_RELEASE >+ ;; > *:Rhapsody:*:*) >- echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" >- exit ;; >+ GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE >+ ;; >+ arm64:Darwin:*:*) >+ GUESS=aarch64-apple-darwin$UNAME_RELEASE >+ ;; > *:Darwin:*:*) >- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown >- eval "$set_cc_for_build" >- if test "$UNAME_PROCESSOR" = unknown ; then >- UNAME_PROCESSOR=powerpc >+ UNAME_PROCESSOR=`uname -p` >+ case $UNAME_PROCESSOR in >+ unknown) UNAME_PROCESSOR=powerpc ;; >+ esac >+ if command -v xcode-select > /dev/null 2> /dev/null && \ >+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then >+ # Avoid executing cc if there is no toolchain installed as >+ # cc will be a stub that puts up a graphical alert >+ # prompting the user to install developer tools. >+ CC_FOR_BUILD=no_compiler_found >+ else >+ set_cc_for_build > fi >- if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then >- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then >- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ >- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ >- grep IS_64BIT_ARCH >/dev/null >- then >- case $UNAME_PROCESSOR in >- i386) UNAME_PROCESSOR=x86_64 ;; >- powerpc) UNAME_PROCESSOR=powerpc64 ;; >- esac >- fi >- # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc >- if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ >- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ >- grep IS_PPC >/dev/null >- then >- UNAME_PROCESSOR=powerpc >- fi >+ if test "$CC_FOR_BUILD" != no_compiler_found; then >+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ >+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ >+ grep IS_64BIT_ARCH >/dev/null >+ then >+ case $UNAME_PROCESSOR in >+ i386) UNAME_PROCESSOR=x86_64 ;; >+ powerpc) UNAME_PROCESSOR=powerpc64 ;; >+ esac > fi >+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc >+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ >+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ >+ grep IS_PPC >/dev/null >+ then >+ UNAME_PROCESSOR=powerpc >+ fi > elif test "$UNAME_PROCESSOR" = i386 ; then >- # Avoid executing cc on OS X 10.9, as it ships with a stub >- # that puts up a graphical alert prompting to install >- # developer tools. Any system running Mac OS X 10.7 or >- # later (Darwin 11 and later) is required to have a 64-bit >- # processor. This is not true of the ARM version of Darwin >- # that Apple uses in portable devices. >- UNAME_PROCESSOR=x86_64 >+ # uname -m returns i386 or x86_64 >+ UNAME_PROCESSOR=$UNAME_MACHINE > fi >- echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" >- exit ;; >+ GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE >+ ;; > *:procnto*:*:* | *:QNX:[0123456789]*:*) > UNAME_PROCESSOR=`uname -p` > if test "$UNAME_PROCESSOR" = x86; then > UNAME_PROCESSOR=i386 > UNAME_MACHINE=pc > fi >- echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" >- exit ;; >+ GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE >+ ;; > *:QNX:*:4*) >- echo i386-pc-qnx >- exit ;; >+ GUESS=i386-pc-qnx >+ ;; > NEO-*:NONSTOP_KERNEL:*:*) >- echo neo-tandem-nsk"$UNAME_RELEASE" >- exit ;; >+ GUESS=neo-tandem-nsk$UNAME_RELEASE >+ ;; > NSE-*:NONSTOP_KERNEL:*:*) >- echo nse-tandem-nsk"$UNAME_RELEASE" >- exit ;; >+ GUESS=nse-tandem-nsk$UNAME_RELEASE >+ ;; > NSR-*:NONSTOP_KERNEL:*:*) >- echo nsr-tandem-nsk"$UNAME_RELEASE" >- exit ;; >+ GUESS=nsr-tandem-nsk$UNAME_RELEASE >+ ;; > NSV-*:NONSTOP_KERNEL:*:*) >- echo nsv-tandem-nsk"$UNAME_RELEASE" >- exit ;; >+ GUESS=nsv-tandem-nsk$UNAME_RELEASE >+ ;; > NSX-*:NONSTOP_KERNEL:*:*) >- echo nsx-tandem-nsk"$UNAME_RELEASE" >- exit ;; >+ GUESS=nsx-tandem-nsk$UNAME_RELEASE >+ ;; > *:NonStop-UX:*:*) >- echo mips-compaq-nonstopux >- exit ;; >+ GUESS=mips-compaq-nonstopux >+ ;; > BS2000:POSIX*:*:*) >- echo bs2000-siemens-sysv >- exit ;; >+ GUESS=bs2000-siemens-sysv >+ ;; > DS/*:UNIX_System_V:*:*) >- echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" >- exit ;; >+ GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE >+ ;; > *:Plan9:*:*) > # "uname -m" is not consistent, so use $cputype instead. 386 > # is converted to i386 for consistency with other x86 > # operating systems. >- if test "$cputype" = 386; then >+ if test "${cputype-}" = 386; then > UNAME_MACHINE=i386 >- else >- UNAME_MACHINE="$cputype" >+ elif test "x${cputype-}" != x; then >+ UNAME_MACHINE=$cputype > fi >- echo "$UNAME_MACHINE"-unknown-plan9 >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-plan9 >+ ;; > *:TOPS-10:*:*) >- echo pdp10-unknown-tops10 >- exit ;; >+ GUESS=pdp10-unknown-tops10 >+ ;; > *:TENEX:*:*) >- echo pdp10-unknown-tenex >- exit ;; >+ GUESS=pdp10-unknown-tenex >+ ;; > KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) >- echo pdp10-dec-tops20 >- exit ;; >+ GUESS=pdp10-dec-tops20 >+ ;; > XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) >- echo pdp10-xkl-tops20 >- exit ;; >+ GUESS=pdp10-xkl-tops20 >+ ;; > *:TOPS-20:*:*) >- echo pdp10-unknown-tops20 >- exit ;; >+ GUESS=pdp10-unknown-tops20 >+ ;; > *:ITS:*:*) >- echo pdp10-unknown-its >- exit ;; >+ GUESS=pdp10-unknown-its >+ ;; > SEI:*:*:SEIUX) >- echo mips-sei-seiux"$UNAME_RELEASE" >- exit ;; >+ GUESS=mips-sei-seiux$UNAME_RELEASE >+ ;; > *:DragonFly:*:*) >- echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" >- exit ;; >+ DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` >+ GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL >+ ;; > *:*VMS:*:*) > UNAME_MACHINE=`(uname -p) 2>/dev/null` >- case "$UNAME_MACHINE" in >- A*) echo alpha-dec-vms ; exit ;; >- I*) echo ia64-dec-vms ; exit ;; >- V*) echo vax-dec-vms ; exit ;; >+ case $UNAME_MACHINE in >+ A*) GUESS=alpha-dec-vms ;; >+ I*) GUESS=ia64-dec-vms ;; >+ V*) GUESS=vax-dec-vms ;; > esac ;; > *:XENIX:*:SysV) >- echo i386-pc-xenix >- exit ;; >+ GUESS=i386-pc-xenix >+ ;; > i*86:skyos:*:*) >- echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" >- exit ;; >+ SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` >+ GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL >+ ;; > i*86:rdos:*:*) >- echo "$UNAME_MACHINE"-pc-rdos >- exit ;; >- i*86:AROS:*:*) >- echo "$UNAME_MACHINE"-pc-aros >- exit ;; >+ GUESS=$UNAME_MACHINE-pc-rdos >+ ;; >+ i*86:Fiwix:*:*) >+ GUESS=$UNAME_MACHINE-pc-fiwix >+ ;; >+ *:AROS:*:*) >+ GUESS=$UNAME_MACHINE-unknown-aros >+ ;; > x86_64:VMkernel:*:*) >- echo "$UNAME_MACHINE"-unknown-esx >- exit ;; >+ GUESS=$UNAME_MACHINE-unknown-esx >+ ;; > amd64:Isilon\ OneFS:*:*) >- echo x86_64-unknown-onefs >- exit ;; >+ GUESS=x86_64-unknown-onefs >+ ;; >+ *:Unleashed:*:*) >+ GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE >+ ;; > esac > >+# Do we have a guess based on uname results? >+if test "x$GUESS" != x; then >+ echo "$GUESS" >+ exit >+fi >+ >+# No uname command or uname output not recognized. >+set_cc_for_build >+cat > "$dummy.c" <<EOF >+#ifdef _SEQUENT_ >+#include <sys/types.h> >+#include <sys/utsname.h> >+#endif >+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) >+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) >+#include <signal.h> >+#if defined(_SIZE_T_) || defined(SIGLOST) >+#include <sys/utsname.h> >+#endif >+#endif >+#endif >+main () >+{ >+#if defined (sony) >+#if defined (MIPSEB) >+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, >+ I don't know.... */ >+ printf ("mips-sony-bsd\n"); exit (0); >+#else >+#include <sys/param.h> >+ printf ("m68k-sony-newsos%s\n", >+#ifdef NEWSOS4 >+ "4" >+#else >+ "" >+#endif >+ ); exit (0); >+#endif >+#endif >+ >+#if defined (NeXT) >+#if !defined (__ARCHITECTURE__) >+#define __ARCHITECTURE__ "m68k" >+#endif >+ int version; >+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; >+ if (version < 4) >+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); >+ else >+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); >+ exit (0); >+#endif >+ >+#if defined (MULTIMAX) || defined (n16) >+#if defined (UMAXV) >+ printf ("ns32k-encore-sysv\n"); exit (0); >+#else >+#if defined (CMU) >+ printf ("ns32k-encore-mach\n"); exit (0); >+#else >+ printf ("ns32k-encore-bsd\n"); exit (0); >+#endif >+#endif >+#endif >+ >+#if defined (__386BSD__) >+ printf ("i386-pc-bsd\n"); exit (0); >+#endif >+ >+#if defined (sequent) >+#if defined (i386) >+ printf ("i386-sequent-dynix\n"); exit (0); >+#endif >+#if defined (ns32000) >+ printf ("ns32k-sequent-dynix\n"); exit (0); >+#endif >+#endif >+ >+#if defined (_SEQUENT_) >+ struct utsname un; >+ >+ uname(&un); >+ if (strncmp(un.version, "V2", 2) == 0) { >+ printf ("i386-sequent-ptx2\n"); exit (0); >+ } >+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ >+ printf ("i386-sequent-ptx1\n"); exit (0); >+ } >+ printf ("i386-sequent-ptx\n"); exit (0); >+#endif >+ >+#if defined (vax) >+#if !defined (ultrix) >+#include <sys/param.h> >+#if defined (BSD) >+#if BSD == 43 >+ printf ("vax-dec-bsd4.3\n"); exit (0); >+#else >+#if BSD == 199006 >+ printf ("vax-dec-bsd4.3reno\n"); exit (0); >+#else >+ printf ("vax-dec-bsd\n"); exit (0); >+#endif >+#endif >+#else >+ printf ("vax-dec-bsd\n"); exit (0); >+#endif >+#else >+#if defined(_SIZE_T_) || defined(SIGLOST) >+ struct utsname un; >+ uname (&un); >+ printf ("vax-dec-ultrix%s\n", un.release); exit (0); >+#else >+ printf ("vax-dec-ultrix\n"); exit (0); >+#endif >+#endif >+#endif >+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) >+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) >+#if defined(_SIZE_T_) || defined(SIGLOST) >+ struct utsname *un; >+ uname (&un); >+ printf ("mips-dec-ultrix%s\n", un.release); exit (0); >+#else >+ printf ("mips-dec-ultrix\n"); exit (0); >+#endif >+#endif >+#endif >+ >+#if defined (alliant) && defined (i860) >+ printf ("i860-alliant-bsd\n"); exit (0); >+#endif >+ >+ exit (1); >+} >+EOF >+ >+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && >+ { echo "$SYSTEM_NAME"; exit; } >+ >+# Apollos put the system type in the environment. >+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } >+ > echo "$0: unable to guess system type" >&2 > >-case "$UNAME_MACHINE:$UNAME_SYSTEM" in >+case $UNAME_MACHINE:$UNAME_SYSTEM in > mips:Linux | mips64:Linux) > # If we got here on MIPS GNU/Linux, output extra information. > cat >&2 <<EOF >@@ -1435,10 +1704,18 @@ > operating system you are using. If your script is old, overwrite *all* > copies of config.guess and config.sub with the latest versions from: > >- https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess >+ https://git.savannah.gnu.org/cgit/config.git/plain/config.guess > and >- https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub >+ https://git.savannah.gnu.org/cgit/config.git/plain/config.sub >+EOF > >+our_year=`echo $timestamp | sed 's,-.*,,'` >+thisyear=`date +%Y` >+# shellcheck disable=SC2003 >+script_age=`expr "$thisyear" - "$our_year"` >+if test "$script_age" -lt 3 ; then >+ cat >&2 <<EOF >+ > If $0 has already been updated, send the following data and any > information you think might be pertinent to config-patches@gnu.org to > provide the necessary information to handle your system. >@@ -1465,6 +1742,7 @@ > UNAME_SYSTEM = "$UNAME_SYSTEM" > UNAME_VERSION = "$UNAME_VERSION" > EOF >+fi > > exit 1 > >diff -ur xz-5.2.5/build-aux/config.rpath xz-5.4.3/build-aux/config.rpath >--- xz-5.2.5/build-aux/config.rpath 2020-03-17 17:29:25 >+++ xz-5.4.3/build-aux/config.rpath 2023-05-04 17:27:40 >@@ -2,7 +2,7 @@ > # Output a system dependent set of variables, describing how to set the > # run time search path of shared libraries in an executable. > # >-# Copyright 1996-2019 Free Software Foundation, Inc. >+# Copyright 1996-2022 Free Software Foundation, Inc. > # Taken from GNU libtool, 2001 > # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 > # >@@ -371,7 +371,7 @@ > hardcode_direct=yes > hardcode_minus_L=yes > ;; >- freebsd* | dragonfly*) >+ freebsd* | dragonfly* | midnightbsd*) > hardcode_libdir_flag_spec='-R$libdir' > hardcode_direct=yes > ;; >@@ -547,7 +547,7 @@ > freebsd[23].*) > library_names_spec='$libname$shrext$versuffix' > ;; >- freebsd* | dragonfly*) >+ freebsd* | dragonfly* | midnightbsd*) > library_names_spec='$libname$shrext' > ;; > gnu*) >diff -ur xz-5.2.5/build-aux/config.sub xz-5.4.3/build-aux/config.sub >--- xz-5.2.5/build-aux/config.sub 2020-03-17 17:29:35 >+++ xz-5.4.3/build-aux/config.sub 2023-05-04 17:31:30 >@@ -1,12 +1,14 @@ > #! /bin/sh > # Configuration validation subroutine script. >-# Copyright 1992-2018 Free Software Foundation, Inc. >+# Copyright 1992-2021 Free Software Foundation, Inc. > >-timestamp='2018-03-08' >+# shellcheck disable=SC2006,SC2268 # see below for rationale > >+timestamp='2021-12-25' >+ > # This file is free software; you can redistribute it and/or modify it > # under the terms of the GNU General Public License as published by >-# the Free Software Foundation; either version 3 of the License, or >+# the Free Software Foundation, either version 3 of the License, or > # (at your option) any later version. > # > # This program is distributed in the hope that it will be useful, but >@@ -33,7 +35,7 @@ > # Otherwise, we print the canonical config type on stdout and succeed. > > # You can get the latest version of this script from: >-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub >+# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub > > # This file is supposed to be the same for all GNU packages > # and recognize all the CPU types, system types and aliases >@@ -50,6 +52,13 @@ > # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM > # It is wrong to echo any other type of specification. > >+# The "shellcheck disable" line above the timestamp inhibits complaints >+# about features and limitations of the classic Bourne shell that were >+# superseded or lifted in POSIX. However, this script identifies a wide >+# variety of pre-POSIX systems that do not have POSIX shells at all, and >+# even some reasonably current systems (Solaris 10 as case-in-point) still >+# have a pre-POSIX /bin/sh. >+ > me=`echo "$0" | sed -e 's,.*/,,'` > > usage="\ >@@ -67,7 +76,7 @@ > version="\ > GNU config.sub ($timestamp) > >-Copyright 1992-2018 Free Software Foundation, Inc. >+Copyright 1992-2021 Free Software Foundation, Inc. > > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." >@@ -89,7 +98,7 @@ > - ) # Use stdin as input. > break ;; > -* ) >- echo "$me: invalid option $1$help" >+ echo "$me: invalid option $1$help" >&2 > exit 1 ;; > > *local*) >@@ -110,1223 +119,1186 @@ > exit 1;; > esac > >-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). >-# Here we must recognize all the valid KERNEL-OS combinations. >-maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` >-case $maybe_os in >- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ >- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ >- knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ >- kopensolaris*-gnu* | cloudabi*-eabi* | \ >- storm-chaos* | os2-emx* | rtmk-nova*) >- os=-$maybe_os >- basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` >- ;; >- android-linux) >- os=-linux-android >- basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown >- ;; >- *) >- basic_machine=`echo "$1" | sed 's/-[^-]*$//'` >- if [ "$basic_machine" != "$1" ] >- then os=`echo "$1" | sed 's/.*-/-/'` >- else os=; fi >- ;; >-esac >+# Split fields of configuration type >+# shellcheck disable=SC2162 >+saved_IFS=$IFS >+IFS="-" read field1 field2 field3 field4 <<EOF >+$1 >+EOF >+IFS=$saved_IFS > >-### Let's recognize common machines as not being operating systems so >-### that things like config.sub decstation-3100 work. We also >-### recognize some manufacturers as not being operating systems, so we >-### can provide default operating systems below. >-case $os in >- -sun*os*) >- # Prevent following clause from handling this invalid input. >+# Separate into logical components for further validation >+case $1 in >+ *-*-*-*-*) >+ echo Invalid configuration \`"$1"\': more than four components >&2 >+ exit 1 > ;; >- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ >- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ >- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ >- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ >- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ >- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ >- -apple | -axis | -knuth | -cray | -microblaze*) >- os= >- basic_machine=$1 >+ *-*-*-*) >+ basic_machine=$field1-$field2 >+ basic_os=$field3-$field4 > ;; >- -bluegene*) >- os=-cnk >+ *-*-*) >+ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two >+ # parts >+ maybe_os=$field2-$field3 >+ case $maybe_os in >+ nto-qnx* | linux-* | uclinux-uclibc* \ >+ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ >+ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ >+ | storm-chaos* | os2-emx* | rtmk-nova*) >+ basic_machine=$field1 >+ basic_os=$maybe_os >+ ;; >+ android-linux) >+ basic_machine=$field1-unknown >+ basic_os=linux-android >+ ;; >+ *) >+ basic_machine=$field1-$field2 >+ basic_os=$field3 >+ ;; >+ esac > ;; >- -sim | -cisco | -oki | -wec | -winbond) >- os= >- basic_machine=$1 >+ *-*) >+ # A lone config we happen to match not fitting any pattern >+ case $field1-$field2 in >+ decstation-3100) >+ basic_machine=mips-dec >+ basic_os= >+ ;; >+ *-*) >+ # Second component is usually, but not always the OS >+ case $field2 in >+ # Prevent following clause from handling this valid os >+ sun*os*) >+ basic_machine=$field1 >+ basic_os=$field2 >+ ;; >+ zephyr*) >+ basic_machine=$field1-unknown >+ basic_os=$field2 >+ ;; >+ # Manufacturers >+ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ >+ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ >+ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ >+ | convergent* | ncr* | news | 32* | 3600* | 3100* \ >+ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ >+ | ultra | tti* | harris | dolphin | highlevel | gould \ >+ | cbm | ns | masscomp | apple | axis | knuth | cray \ >+ | microblaze* | sim | cisco \ >+ | oki | wec | wrs | winbond) >+ basic_machine=$field1-$field2 >+ basic_os= >+ ;; >+ *) >+ basic_machine=$field1 >+ basic_os=$field2 >+ ;; >+ esac >+ ;; >+ esac > ;; >- -scout) >+ *) >+ # Convert single-component short-hands not valid as part of >+ # multi-component configurations. >+ case $field1 in >+ 386bsd) >+ basic_machine=i386-pc >+ basic_os=bsd >+ ;; >+ a29khif) >+ basic_machine=a29k-amd >+ basic_os=udi >+ ;; >+ adobe68k) >+ basic_machine=m68010-adobe >+ basic_os=scout >+ ;; >+ alliant) >+ basic_machine=fx80-alliant >+ basic_os= >+ ;; >+ altos | altos3068) >+ basic_machine=m68k-altos >+ basic_os= >+ ;; >+ am29k) >+ basic_machine=a29k-none >+ basic_os=bsd >+ ;; >+ amdahl) >+ basic_machine=580-amdahl >+ basic_os=sysv >+ ;; >+ amiga) >+ basic_machine=m68k-unknown >+ basic_os= >+ ;; >+ amigaos | amigados) >+ basic_machine=m68k-unknown >+ basic_os=amigaos >+ ;; >+ amigaunix | amix) >+ basic_machine=m68k-unknown >+ basic_os=sysv4 >+ ;; >+ apollo68) >+ basic_machine=m68k-apollo >+ basic_os=sysv >+ ;; >+ apollo68bsd) >+ basic_machine=m68k-apollo >+ basic_os=bsd >+ ;; >+ aros) >+ basic_machine=i386-pc >+ basic_os=aros >+ ;; >+ aux) >+ basic_machine=m68k-apple >+ basic_os=aux >+ ;; >+ balance) >+ basic_machine=ns32k-sequent >+ basic_os=dynix >+ ;; >+ blackfin) >+ basic_machine=bfin-unknown >+ basic_os=linux >+ ;; >+ cegcc) >+ basic_machine=arm-unknown >+ basic_os=cegcc >+ ;; >+ convex-c1) >+ basic_machine=c1-convex >+ basic_os=bsd >+ ;; >+ convex-c2) >+ basic_machine=c2-convex >+ basic_os=bsd >+ ;; >+ convex-c32) >+ basic_machine=c32-convex >+ basic_os=bsd >+ ;; >+ convex-c34) >+ basic_machine=c34-convex >+ basic_os=bsd >+ ;; >+ convex-c38) >+ basic_machine=c38-convex >+ basic_os=bsd >+ ;; >+ cray) >+ basic_machine=j90-cray >+ basic_os=unicos >+ ;; >+ crds | unos) >+ basic_machine=m68k-crds >+ basic_os= >+ ;; >+ da30) >+ basic_machine=m68k-da30 >+ basic_os= >+ ;; >+ decstation | pmax | pmin | dec3100 | decstatn) >+ basic_machine=mips-dec >+ basic_os= >+ ;; >+ delta88) >+ basic_machine=m88k-motorola >+ basic_os=sysv3 >+ ;; >+ dicos) >+ basic_machine=i686-pc >+ basic_os=dicos >+ ;; >+ djgpp) >+ basic_machine=i586-pc >+ basic_os=msdosdjgpp >+ ;; >+ ebmon29k) >+ basic_machine=a29k-amd >+ basic_os=ebmon >+ ;; >+ es1800 | OSE68k | ose68k | ose | OSE) >+ basic_machine=m68k-ericsson >+ basic_os=ose >+ ;; >+ gmicro) >+ basic_machine=tron-gmicro >+ basic_os=sysv >+ ;; >+ go32) >+ basic_machine=i386-pc >+ basic_os=go32 >+ ;; >+ h8300hms) >+ basic_machine=h8300-hitachi >+ basic_os=hms >+ ;; >+ h8300xray) >+ basic_machine=h8300-hitachi >+ basic_os=xray >+ ;; >+ h8500hms) >+ basic_machine=h8500-hitachi >+ basic_os=hms >+ ;; >+ harris) >+ basic_machine=m88k-harris >+ basic_os=sysv3 >+ ;; >+ hp300 | hp300hpux) >+ basic_machine=m68k-hp >+ basic_os=hpux >+ ;; >+ hp300bsd) >+ basic_machine=m68k-hp >+ basic_os=bsd >+ ;; >+ hppaosf) >+ basic_machine=hppa1.1-hp >+ basic_os=osf >+ ;; >+ hppro) >+ basic_machine=hppa1.1-hp >+ basic_os=proelf >+ ;; >+ i386mach) >+ basic_machine=i386-mach >+ basic_os=mach >+ ;; >+ isi68 | isi) >+ basic_machine=m68k-isi >+ basic_os=sysv >+ ;; >+ m68knommu) >+ basic_machine=m68k-unknown >+ basic_os=linux >+ ;; >+ magnum | m3230) >+ basic_machine=mips-mips >+ basic_os=sysv >+ ;; >+ merlin) >+ basic_machine=ns32k-utek >+ basic_os=sysv >+ ;; >+ mingw64) >+ basic_machine=x86_64-pc >+ basic_os=mingw64 >+ ;; >+ mingw32) >+ basic_machine=i686-pc >+ basic_os=mingw32 >+ ;; >+ mingw32ce) >+ basic_machine=arm-unknown >+ basic_os=mingw32ce >+ ;; >+ monitor) >+ basic_machine=m68k-rom68k >+ basic_os=coff >+ ;; >+ morphos) >+ basic_machine=powerpc-unknown >+ basic_os=morphos >+ ;; >+ moxiebox) >+ basic_machine=moxie-unknown >+ basic_os=moxiebox >+ ;; >+ msdos) >+ basic_machine=i386-pc >+ basic_os=msdos >+ ;; >+ msys) >+ basic_machine=i686-pc >+ basic_os=msys >+ ;; >+ mvs) >+ basic_machine=i370-ibm >+ basic_os=mvs >+ ;; >+ nacl) >+ basic_machine=le32-unknown >+ basic_os=nacl >+ ;; >+ ncr3000) >+ basic_machine=i486-ncr >+ basic_os=sysv4 >+ ;; >+ netbsd386) >+ basic_machine=i386-pc >+ basic_os=netbsd >+ ;; >+ netwinder) >+ basic_machine=armv4l-rebel >+ basic_os=linux >+ ;; >+ news | news700 | news800 | news900) >+ basic_machine=m68k-sony >+ basic_os=newsos >+ ;; >+ news1000) >+ basic_machine=m68030-sony >+ basic_os=newsos >+ ;; >+ necv70) >+ basic_machine=v70-nec >+ basic_os=sysv >+ ;; >+ nh3000) >+ basic_machine=m68k-harris >+ basic_os=cxux >+ ;; >+ nh[45]000) >+ basic_machine=m88k-harris >+ basic_os=cxux >+ ;; >+ nindy960) >+ basic_machine=i960-intel >+ basic_os=nindy >+ ;; >+ mon960) >+ basic_machine=i960-intel >+ basic_os=mon960 >+ ;; >+ nonstopux) >+ basic_machine=mips-compaq >+ basic_os=nonstopux >+ ;; >+ os400) >+ basic_machine=powerpc-ibm >+ basic_os=os400 >+ ;; >+ OSE68000 | ose68000) >+ basic_machine=m68000-ericsson >+ basic_os=ose >+ ;; >+ os68k) >+ basic_machine=m68k-none >+ basic_os=os68k >+ ;; >+ paragon) >+ basic_machine=i860-intel >+ basic_os=osf >+ ;; >+ parisc) >+ basic_machine=hppa-unknown >+ basic_os=linux >+ ;; >+ psp) >+ basic_machine=mipsallegrexel-sony >+ basic_os=psp >+ ;; >+ pw32) >+ basic_machine=i586-unknown >+ basic_os=pw32 >+ ;; >+ rdos | rdos64) >+ basic_machine=x86_64-pc >+ basic_os=rdos >+ ;; >+ rdos32) >+ basic_machine=i386-pc >+ basic_os=rdos >+ ;; >+ rom68k) >+ basic_machine=m68k-rom68k >+ basic_os=coff >+ ;; >+ sa29200) >+ basic_machine=a29k-amd >+ basic_os=udi >+ ;; >+ sei) >+ basic_machine=mips-sei >+ basic_os=seiux >+ ;; >+ sequent) >+ basic_machine=i386-sequent >+ basic_os= >+ ;; >+ sps7) >+ basic_machine=m68k-bull >+ basic_os=sysv2 >+ ;; >+ st2000) >+ basic_machine=m68k-tandem >+ basic_os= >+ ;; >+ stratus) >+ basic_machine=i860-stratus >+ basic_os=sysv4 >+ ;; >+ sun2) >+ basic_machine=m68000-sun >+ basic_os= >+ ;; >+ sun2os3) >+ basic_machine=m68000-sun >+ basic_os=sunos3 >+ ;; >+ sun2os4) >+ basic_machine=m68000-sun >+ basic_os=sunos4 >+ ;; >+ sun3) >+ basic_machine=m68k-sun >+ basic_os= >+ ;; >+ sun3os3) >+ basic_machine=m68k-sun >+ basic_os=sunos3 >+ ;; >+ sun3os4) >+ basic_machine=m68k-sun >+ basic_os=sunos4 >+ ;; >+ sun4) >+ basic_machine=sparc-sun >+ basic_os= >+ ;; >+ sun4os3) >+ basic_machine=sparc-sun >+ basic_os=sunos3 >+ ;; >+ sun4os4) >+ basic_machine=sparc-sun >+ basic_os=sunos4 >+ ;; >+ sun4sol2) >+ basic_machine=sparc-sun >+ basic_os=solaris2 >+ ;; >+ sun386 | sun386i | roadrunner) >+ basic_machine=i386-sun >+ basic_os= >+ ;; >+ sv1) >+ basic_machine=sv1-cray >+ basic_os=unicos >+ ;; >+ symmetry) >+ basic_machine=i386-sequent >+ basic_os=dynix >+ ;; >+ t3e) >+ basic_machine=alphaev5-cray >+ basic_os=unicos >+ ;; >+ t90) >+ basic_machine=t90-cray >+ basic_os=unicos >+ ;; >+ toad1) >+ basic_machine=pdp10-xkl >+ basic_os=tops20 >+ ;; >+ tpf) >+ basic_machine=s390x-ibm >+ basic_os=tpf >+ ;; >+ udi29k) >+ basic_machine=a29k-amd >+ basic_os=udi >+ ;; >+ ultra3) >+ basic_machine=a29k-nyu >+ basic_os=sym1 >+ ;; >+ v810 | necv810) >+ basic_machine=v810-nec >+ basic_os=none >+ ;; >+ vaxv) >+ basic_machine=vax-dec >+ basic_os=sysv >+ ;; >+ vms) >+ basic_machine=vax-dec >+ basic_os=vms >+ ;; >+ vsta) >+ basic_machine=i386-pc >+ basic_os=vsta >+ ;; >+ vxworks960) >+ basic_machine=i960-wrs >+ basic_os=vxworks >+ ;; >+ vxworks68) >+ basic_machine=m68k-wrs >+ basic_os=vxworks >+ ;; >+ vxworks29k) >+ basic_machine=a29k-wrs >+ basic_os=vxworks >+ ;; >+ xbox) >+ basic_machine=i686-pc >+ basic_os=mingw32 >+ ;; >+ ymp) >+ basic_machine=ymp-cray >+ basic_os=unicos >+ ;; >+ *) >+ basic_machine=$1 >+ basic_os= >+ ;; >+ esac > ;; >- -wrs) >- os=-vxworks >- basic_machine=$1 >- ;; >- -chorusos*) >- os=-chorusos >- basic_machine=$1 >- ;; >- -chorusrdb) >- os=-chorusrdb >- basic_machine=$1 >- ;; >- -hiux*) >- os=-hiuxwe2 >- ;; >- -sco6) >- os=-sco5v6 >- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` >- ;; >- -sco5) >- os=-sco3.2v5 >- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` >- ;; >- -sco4) >- os=-sco3.2v4 >- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` >- ;; >- -sco3.2.[4-9]*) >- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` >- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` >- ;; >- -sco3.2v[4-9]*) >- # Don't forget version if it is 3.2v4 or newer. >- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` >- ;; >- -sco5v6*) >- # Don't forget version if it is 3.2v4 or newer. >- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` >- ;; >- -sco*) >- os=-sco3.2v2 >- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` >- ;; >- -udk*) >- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` >- ;; >- -isc) >- os=-isc2.2 >- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` >- ;; >- -clix*) >- basic_machine=clipper-intergraph >- ;; >- -isc*) >- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` >- ;; >- -lynx*178) >- os=-lynxos178 >- ;; >- -lynx*5) >- os=-lynxos5 >- ;; >- -lynx*) >- os=-lynxos >- ;; >- -ptx*) >- basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` >- ;; >- -psos*) >- os=-psos >- ;; >- -mint | -mint[0-9]*) >- basic_machine=m68k-atari >- os=-mint >- ;; > esac > >-# Decode aliases for certain CPU-COMPANY combinations. >+# Decode 1-component or ad-hoc basic machines > case $basic_machine in >- # Recognize the basic CPU types without company name. >- # Some are omitted here because they have special meanings below. >- 1750a | 580 \ >- | a29k \ >- | aarch64 | aarch64_be \ >- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ >- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ >- | am33_2.0 \ >- | arc | arceb \ >- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ >- | avr | avr32 \ >- | ba \ >- | be32 | be64 \ >- | bfin \ >- | c4x | c8051 | clipper \ >- | d10v | d30v | dlx | dsp16xx \ >- | e2k | epiphany \ >- | fido | fr30 | frv | ft32 \ >- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ >- | hexagon \ >- | i370 | i860 | i960 | ia16 | ia64 \ >- | ip2k | iq2000 \ >- | k1om \ >- | le32 | le64 \ >- | lm32 \ >- | m32c | m32r | m32rle | m68000 | m68k | m88k \ >- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ >- | mips | mipsbe | mipseb | mipsel | mipsle \ >- | mips16 \ >- | mips64 | mips64el \ >- | mips64octeon | mips64octeonel \ >- | mips64orion | mips64orionel \ >- | mips64r5900 | mips64r5900el \ >- | mips64vr | mips64vrel \ >- | mips64vr4100 | mips64vr4100el \ >- | mips64vr4300 | mips64vr4300el \ >- | mips64vr5000 | mips64vr5000el \ >- | mips64vr5900 | mips64vr5900el \ >- | mipsisa32 | mipsisa32el \ >- | mipsisa32r2 | mipsisa32r2el \ >- | mipsisa32r6 | mipsisa32r6el \ >- | mipsisa64 | mipsisa64el \ >- | mipsisa64r2 | mipsisa64r2el \ >- | mipsisa64r6 | mipsisa64r6el \ >- | mipsisa64sb1 | mipsisa64sb1el \ >- | mipsisa64sr71k | mipsisa64sr71kel \ >- | mipsr5900 | mipsr5900el \ >- | mipstx39 | mipstx39el \ >- | mn10200 | mn10300 \ >- | moxie \ >- | mt \ >- | msp430 \ >- | nds32 | nds32le | nds32be \ >- | nios | nios2 | nios2eb | nios2el \ >- | ns16k | ns32k \ >- | open8 | or1k | or1knd | or32 \ >- | pdp10 | pj | pjl \ >- | powerpc | powerpc64 | powerpc64le | powerpcle \ >- | pru \ >- | pyramid \ >- | riscv32 | riscv64 \ >- | rl78 | rx \ >- | score \ >- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ >- | sh64 | sh64le \ >- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ >- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ >- | spu \ >- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ >- | ubicom32 \ >- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ >- | visium \ >- | wasm32 \ >- | x86 | xc16x | xstormy16 | xtensa \ >- | z8k | z80) >- basic_machine=$basic_machine-unknown >+ # Here we handle the default manufacturer of certain CPU types. It is in >+ # some cases the only manufacturer, in others, it is the most popular. >+ w89k) >+ cpu=hppa1.1 >+ vendor=winbond > ;; >- c54x) >- basic_machine=tic54x-unknown >+ op50n) >+ cpu=hppa1.1 >+ vendor=oki > ;; >- c55x) >- basic_machine=tic55x-unknown >+ op60c) >+ cpu=hppa1.1 >+ vendor=oki > ;; >- c6x) >- basic_machine=tic6x-unknown >+ ibm*) >+ cpu=i370 >+ vendor=ibm > ;; >- leon|leon[3-9]) >- basic_machine=sparc-$basic_machine >+ orion105) >+ cpu=clipper >+ vendor=highlevel > ;; >- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) >- basic_machine=$basic_machine-unknown >- os=-none >+ mac | mpw | mac-mpw) >+ cpu=m68k >+ vendor=apple > ;; >- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) >+ pmac | pmac-mpw) >+ cpu=powerpc >+ vendor=apple > ;; >- ms1) >- basic_machine=mt-unknown >- ;; > >- strongarm | thumb | xscale) >- basic_machine=arm-unknown >- ;; >- xgate) >- basic_machine=$basic_machine-unknown >- os=-none >- ;; >- xscaleeb) >- basic_machine=armeb-unknown >- ;; >- >- xscaleel) >- basic_machine=armel-unknown >- ;; >- >- # We use `pc' rather than `unknown' >- # because (1) that's what they normally are, and >- # (2) the word "unknown" tends to confuse beginning users. >- i*86 | x86_64) >- basic_machine=$basic_machine-pc >- ;; >- # Object if more than one company name word. >- *-*-*) >- echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 >- exit 1 >- ;; >- # Recognize the basic CPU types with company name. >- 580-* \ >- | a29k-* \ >- | aarch64-* | aarch64_be-* \ >- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ >- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ >- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ >- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ >- | avr-* | avr32-* \ >- | ba-* \ >- | be32-* | be64-* \ >- | bfin-* | bs2000-* \ >- | c[123]* | c30-* | [cjt]90-* | c4x-* \ >- | c8051-* | clipper-* | craynv-* | cydra-* \ >- | d10v-* | d30v-* | dlx-* \ >- | e2k-* | elxsi-* \ >- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ >- | h8300-* | h8500-* \ >- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ >- | hexagon-* \ >- | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ >- | ip2k-* | iq2000-* \ >- | k1om-* \ >- | le32-* | le64-* \ >- | lm32-* \ >- | m32c-* | m32r-* | m32rle-* \ >- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ >- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ >- | microblaze-* | microblazeel-* \ >- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ >- | mips16-* \ >- | mips64-* | mips64el-* \ >- | mips64octeon-* | mips64octeonel-* \ >- | mips64orion-* | mips64orionel-* \ >- | mips64r5900-* | mips64r5900el-* \ >- | mips64vr-* | mips64vrel-* \ >- | mips64vr4100-* | mips64vr4100el-* \ >- | mips64vr4300-* | mips64vr4300el-* \ >- | mips64vr5000-* | mips64vr5000el-* \ >- | mips64vr5900-* | mips64vr5900el-* \ >- | mipsisa32-* | mipsisa32el-* \ >- | mipsisa32r2-* | mipsisa32r2el-* \ >- | mipsisa32r6-* | mipsisa32r6el-* \ >- | mipsisa64-* | mipsisa64el-* \ >- | mipsisa64r2-* | mipsisa64r2el-* \ >- | mipsisa64r6-* | mipsisa64r6el-* \ >- | mipsisa64sb1-* | mipsisa64sb1el-* \ >- | mipsisa64sr71k-* | mipsisa64sr71kel-* \ >- | mipsr5900-* | mipsr5900el-* \ >- | mipstx39-* | mipstx39el-* \ >- | mmix-* \ >- | mt-* \ >- | msp430-* \ >- | nds32-* | nds32le-* | nds32be-* \ >- | nios-* | nios2-* | nios2eb-* | nios2el-* \ >- | none-* | np1-* | ns16k-* | ns32k-* \ >- | open8-* \ >- | or1k*-* \ >- | orion-* \ >- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ >- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ >- | pru-* \ >- | pyramid-* \ >- | riscv32-* | riscv64-* \ >- | rl78-* | romp-* | rs6000-* | rx-* \ >- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ >- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ >- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ >- | sparclite-* \ >- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ >- | tahoe-* \ >- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ >- | tile*-* \ >- | tron-* \ >- | ubicom32-* \ >- | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ >- | vax-* \ >- | visium-* \ >- | wasm32-* \ >- | we32k-* \ >- | x86-* | x86_64-* | xc16x-* | xps100-* \ >- | xstormy16-* | xtensa*-* \ >- | ymp-* \ >- | z8k-* | z80-*) >- ;; >- # Recognize the basic CPU types without company name, with glob match. >- xtensa*) >- basic_machine=$basic_machine-unknown >- ;; > # Recognize the various machine names and aliases which stand > # for a CPU type and a company and sometimes even an OS. >- 386bsd) >- basic_machine=i386-pc >- os=-bsd >- ;; > 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) >- basic_machine=m68000-att >+ cpu=m68000 >+ vendor=att > ;; > 3b*) >- basic_machine=we32k-att >+ cpu=we32k >+ vendor=att > ;; >- a29khif) >- basic_machine=a29k-amd >- os=-udi >- ;; >- abacus) >- basic_machine=abacus-unknown >- ;; >- adobe68k) >- basic_machine=m68010-adobe >- os=-scout >- ;; >- alliant | fx80) >- basic_machine=fx80-alliant >- ;; >- altos | altos3068) >- basic_machine=m68k-altos >- ;; >- am29k) >- basic_machine=a29k-none >- os=-bsd >- ;; >- amd64) >- basic_machine=x86_64-pc >- ;; >- amd64-*) >- basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` >- ;; >- amdahl) >- basic_machine=580-amdahl >- os=-sysv >- ;; >- amiga | amiga-*) >- basic_machine=m68k-unknown >- ;; >- amigaos | amigados) >- basic_machine=m68k-unknown >- os=-amigaos >- ;; >- amigaunix | amix) >- basic_machine=m68k-unknown >- os=-sysv4 >- ;; >- apollo68) >- basic_machine=m68k-apollo >- os=-sysv >- ;; >- apollo68bsd) >- basic_machine=m68k-apollo >- os=-bsd >- ;; >- aros) >- basic_machine=i386-pc >- os=-aros >- ;; >- asmjs) >- basic_machine=asmjs-unknown >- ;; >- aux) >- basic_machine=m68k-apple >- os=-aux >- ;; >- balance) >- basic_machine=ns32k-sequent >- os=-dynix >- ;; >- blackfin) >- basic_machine=bfin-unknown >- os=-linux >- ;; >- blackfin-*) >- basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` >- os=-linux >- ;; > bluegene*) >- basic_machine=powerpc-ibm >- os=-cnk >+ cpu=powerpc >+ vendor=ibm >+ basic_os=cnk > ;; >- c54x-*) >- basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` >- ;; >- c55x-*) >- basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` >- ;; >- c6x-*) >- basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` >- ;; >- c90) >- basic_machine=c90-cray >- os=-unicos >- ;; >- cegcc) >- basic_machine=arm-unknown >- os=-cegcc >- ;; >- convex-c1) >- basic_machine=c1-convex >- os=-bsd >- ;; >- convex-c2) >- basic_machine=c2-convex >- os=-bsd >- ;; >- convex-c32) >- basic_machine=c32-convex >- os=-bsd >- ;; >- convex-c34) >- basic_machine=c34-convex >- os=-bsd >- ;; >- convex-c38) >- basic_machine=c38-convex >- os=-bsd >- ;; >- cray | j90) >- basic_machine=j90-cray >- os=-unicos >- ;; >- craynv) >- basic_machine=craynv-cray >- os=-unicosmp >- ;; >- cr16 | cr16-*) >- basic_machine=cr16-unknown >- os=-elf >- ;; >- crds | unos) >- basic_machine=m68k-crds >- ;; >- crisv32 | crisv32-* | etraxfs*) >- basic_machine=crisv32-axis >- ;; >- cris | cris-* | etrax*) >- basic_machine=cris-axis >- ;; >- crx) >- basic_machine=crx-unknown >- os=-elf >- ;; >- da30 | da30-*) >- basic_machine=m68k-da30 >- ;; >- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) >- basic_machine=mips-dec >- ;; > decsystem10* | dec10*) >- basic_machine=pdp10-dec >- os=-tops10 >+ cpu=pdp10 >+ vendor=dec >+ basic_os=tops10 > ;; > decsystem20* | dec20*) >- basic_machine=pdp10-dec >- os=-tops20 >+ cpu=pdp10 >+ vendor=dec >+ basic_os=tops20 > ;; > delta | 3300 | motorola-3300 | motorola-delta \ > | 3300-motorola | delta-motorola) >- basic_machine=m68k-motorola >+ cpu=m68k >+ vendor=motorola > ;; >- delta88) >- basic_machine=m88k-motorola >- os=-sysv3 >- ;; >- dicos) >- basic_machine=i686-pc >- os=-dicos >- ;; >- djgpp) >- basic_machine=i586-pc >- os=-msdosdjgpp >- ;; >- dpx20 | dpx20-*) >- basic_machine=rs6000-bull >- os=-bosx >- ;; > dpx2*) >- basic_machine=m68k-bull >- os=-sysv3 >+ cpu=m68k >+ vendor=bull >+ basic_os=sysv3 > ;; >- e500v[12]) >- basic_machine=powerpc-unknown >- os=$os"spe" >+ encore | umax | mmax) >+ cpu=ns32k >+ vendor=encore > ;; >- e500v[12]-*) >- basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` >- os=$os"spe" >- ;; >- ebmon29k) >- basic_machine=a29k-amd >- os=-ebmon >- ;; > elxsi) >- basic_machine=elxsi-elxsi >- os=-bsd >+ cpu=elxsi >+ vendor=elxsi >+ basic_os=${basic_os:-bsd} > ;; >- encore | umax | mmax) >- basic_machine=ns32k-encore >- ;; >- es1800 | OSE68k | ose68k | ose | OSE) >- basic_machine=m68k-ericsson >- os=-ose >- ;; > fx2800) >- basic_machine=i860-alliant >+ cpu=i860 >+ vendor=alliant > ;; > genix) >- basic_machine=ns32k-ns >+ cpu=ns32k >+ vendor=ns > ;; >- gmicro) >- basic_machine=tron-gmicro >- os=-sysv >- ;; >- go32) >- basic_machine=i386-pc >- os=-go32 >- ;; > h3050r* | hiux*) >- basic_machine=hppa1.1-hitachi >- os=-hiuxwe2 >+ cpu=hppa1.1 >+ vendor=hitachi >+ basic_os=hiuxwe2 > ;; >- h8300hms) >- basic_machine=h8300-hitachi >- os=-hms >- ;; >- h8300xray) >- basic_machine=h8300-hitachi >- os=-xray >- ;; >- h8500hms) >- basic_machine=h8500-hitachi >- os=-hms >- ;; >- harris) >- basic_machine=m88k-harris >- os=-sysv3 >- ;; >- hp300-*) >- basic_machine=m68k-hp >- ;; >- hp300bsd) >- basic_machine=m68k-hp >- os=-bsd >- ;; >- hp300hpux) >- basic_machine=m68k-hp >- os=-hpux >- ;; > hp3k9[0-9][0-9] | hp9[0-9][0-9]) >- basic_machine=hppa1.0-hp >+ cpu=hppa1.0 >+ vendor=hp > ;; > hp9k2[0-9][0-9] | hp9k31[0-9]) >- basic_machine=m68000-hp >+ cpu=m68000 >+ vendor=hp > ;; > hp9k3[2-9][0-9]) >- basic_machine=m68k-hp >+ cpu=m68k >+ vendor=hp > ;; > hp9k6[0-9][0-9] | hp6[0-9][0-9]) >- basic_machine=hppa1.0-hp >+ cpu=hppa1.0 >+ vendor=hp > ;; > hp9k7[0-79][0-9] | hp7[0-79][0-9]) >- basic_machine=hppa1.1-hp >+ cpu=hppa1.1 >+ vendor=hp > ;; > hp9k78[0-9] | hp78[0-9]) > # FIXME: really hppa2.0-hp >- basic_machine=hppa1.1-hp >+ cpu=hppa1.1 >+ vendor=hp > ;; > hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) > # FIXME: really hppa2.0-hp >- basic_machine=hppa1.1-hp >+ cpu=hppa1.1 >+ vendor=hp > ;; > hp9k8[0-9][13679] | hp8[0-9][13679]) >- basic_machine=hppa1.1-hp >+ cpu=hppa1.1 >+ vendor=hp > ;; > hp9k8[0-9][0-9] | hp8[0-9][0-9]) >- basic_machine=hppa1.0-hp >+ cpu=hppa1.0 >+ vendor=hp > ;; >- hppaosf) >- basic_machine=hppa1.1-hp >- os=-osf >- ;; >- hppro) >- basic_machine=hppa1.1-hp >- os=-proelf >- ;; >- i370-ibm* | ibm*) >- basic_machine=i370-ibm >- ;; > i*86v32) >- basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` >- os=-sysv32 >+ cpu=`echo "$1" | sed -e 's/86.*/86/'` >+ vendor=pc >+ basic_os=sysv32 > ;; > i*86v4*) >- basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` >- os=-sysv4 >+ cpu=`echo "$1" | sed -e 's/86.*/86/'` >+ vendor=pc >+ basic_os=sysv4 > ;; > i*86v) >- basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` >- os=-sysv >+ cpu=`echo "$1" | sed -e 's/86.*/86/'` >+ vendor=pc >+ basic_os=sysv > ;; > i*86sol2) >- basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` >- os=-solaris2 >+ cpu=`echo "$1" | sed -e 's/86.*/86/'` >+ vendor=pc >+ basic_os=solaris2 > ;; >- i386mach) >- basic_machine=i386-mach >- os=-mach >+ j90 | j90-cray) >+ cpu=j90 >+ vendor=cray >+ basic_os=${basic_os:-unicos} > ;; >- vsta) >- basic_machine=i386-unknown >- os=-vsta >- ;; > iris | iris4d) >- basic_machine=mips-sgi >- case $os in >- -irix*) >+ cpu=mips >+ vendor=sgi >+ case $basic_os in >+ irix*) > ;; > *) >- os=-irix4 >+ basic_os=irix4 > ;; > esac > ;; >- isi68 | isi) >- basic_machine=m68k-isi >- os=-sysv >- ;; >- leon-*|leon[3-9]-*) >- basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` >- ;; >- m68knommu) >- basic_machine=m68k-unknown >- os=-linux >- ;; >- m68knommu-*) >- basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` >- os=-linux >- ;; >- magnum | m3230) >- basic_machine=mips-mips >- os=-sysv >- ;; >- merlin) >- basic_machine=ns32k-utek >- os=-sysv >- ;; >- microblaze*) >- basic_machine=microblaze-xilinx >- ;; >- mingw64) >- basic_machine=x86_64-pc >- os=-mingw64 >- ;; >- mingw32) >- basic_machine=i686-pc >- os=-mingw32 >- ;; >- mingw32ce) >- basic_machine=arm-unknown >- os=-mingw32ce >- ;; > miniframe) >- basic_machine=m68000-convergent >+ cpu=m68000 >+ vendor=convergent > ;; >- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) >- basic_machine=m68k-atari >- os=-mint >+ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) >+ cpu=m68k >+ vendor=atari >+ basic_os=mint > ;; >- mips3*-*) >- basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` >- ;; >- mips3*) >- basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown >- ;; >- monitor) >- basic_machine=m68k-rom68k >- os=-coff >- ;; >- morphos) >- basic_machine=powerpc-unknown >- os=-morphos >- ;; >- moxiebox) >- basic_machine=moxie-unknown >- os=-moxiebox >- ;; >- msdos) >- basic_machine=i386-pc >- os=-msdos >- ;; >- ms1-*) >- basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` >- ;; >- msys) >- basic_machine=i686-pc >- os=-msys >- ;; >- mvs) >- basic_machine=i370-ibm >- os=-mvs >- ;; >- nacl) >- basic_machine=le32-unknown >- os=-nacl >- ;; >- ncr3000) >- basic_machine=i486-ncr >- os=-sysv4 >- ;; >- netbsd386) >- basic_machine=i386-unknown >- os=-netbsd >- ;; >- netwinder) >- basic_machine=armv4l-rebel >- os=-linux >- ;; >- news | news700 | news800 | news900) >- basic_machine=m68k-sony >- os=-newsos >- ;; >- news1000) >- basic_machine=m68030-sony >- os=-newsos >- ;; > news-3600 | risc-news) >- basic_machine=mips-sony >- os=-newsos >+ cpu=mips >+ vendor=sony >+ basic_os=newsos > ;; >- necv70) >- basic_machine=v70-nec >- os=-sysv >- ;; > next | m*-next) >- basic_machine=m68k-next >- case $os in >- -nextstep* ) >+ cpu=m68k >+ vendor=next >+ case $basic_os in >+ openstep*) >+ ;; >+ nextstep*) > ;; >- -ns2*) >- os=-nextstep2 >+ ns2*) >+ basic_os=nextstep2 > ;; > *) >- os=-nextstep3 >+ basic_os=nextstep3 > ;; > esac > ;; >- nh3000) >- basic_machine=m68k-harris >- os=-cxux >- ;; >- nh[45]000) >- basic_machine=m88k-harris >- os=-cxux >- ;; >- nindy960) >- basic_machine=i960-intel >- os=-nindy >- ;; >- mon960) >- basic_machine=i960-intel >- os=-mon960 >- ;; >- nonstopux) >- basic_machine=mips-compaq >- os=-nonstopux >- ;; > np1) >- basic_machine=np1-gould >+ cpu=np1 >+ vendor=gould > ;; >- neo-tandem) >- basic_machine=neo-tandem >- ;; >- nse-tandem) >- basic_machine=nse-tandem >- ;; >- nsr-tandem) >- basic_machine=nsr-tandem >- ;; >- nsv-tandem) >- basic_machine=nsv-tandem >- ;; >- nsx-tandem) >- basic_machine=nsx-tandem >- ;; > op50n-* | op60c-*) >- basic_machine=hppa1.1-oki >- os=-proelf >+ cpu=hppa1.1 >+ vendor=oki >+ basic_os=proelf > ;; >- openrisc | openrisc-*) >- basic_machine=or32-unknown >- ;; >- os400) >- basic_machine=powerpc-ibm >- os=-os400 >- ;; >- OSE68000 | ose68000) >- basic_machine=m68000-ericsson >- os=-ose >- ;; >- os68k) >- basic_machine=m68k-none >- os=-os68k >- ;; > pa-hitachi) >- basic_machine=hppa1.1-hitachi >- os=-hiuxwe2 >+ cpu=hppa1.1 >+ vendor=hitachi >+ basic_os=hiuxwe2 > ;; >- paragon) >- basic_machine=i860-intel >- os=-osf >- ;; >- parisc) >- basic_machine=hppa-unknown >- os=-linux >- ;; >- parisc-*) >- basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` >- os=-linux >- ;; > pbd) >- basic_machine=sparc-tti >+ cpu=sparc >+ vendor=tti > ;; > pbb) >- basic_machine=m68k-tti >+ cpu=m68k >+ vendor=tti > ;; >- pc532 | pc532-*) >- basic_machine=ns32k-pc532 >+ pc532) >+ cpu=ns32k >+ vendor=pc532 > ;; >- pc98) >- basic_machine=i386-pc >- ;; >- pc98-*) >- basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` >- ;; >- pentium | p5 | k5 | k6 | nexgen | viac3) >- basic_machine=i586-pc >- ;; >- pentiumpro | p6 | 6x86 | athlon | athlon_*) >- basic_machine=i686-pc >- ;; >- pentiumii | pentium2 | pentiumiii | pentium3) >- basic_machine=i686-pc >- ;; >- pentium4) >- basic_machine=i786-pc >- ;; >- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) >- basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` >- ;; >- pentiumpro-* | p6-* | 6x86-* | athlon-*) >- basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` >- ;; >- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) >- basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` >- ;; >- pentium4-*) >- basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` >- ;; > pn) >- basic_machine=pn-gould >+ cpu=pn >+ vendor=gould > ;; >- power) basic_machine=power-ibm >+ power) >+ cpu=power >+ vendor=ibm > ;; >- ppc | ppcbe) basic_machine=powerpc-unknown >+ ps2) >+ cpu=i386 >+ vendor=ibm > ;; >- ppc-* | ppcbe-*) >- basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` >+ rm[46]00) >+ cpu=mips >+ vendor=siemens > ;; >- ppcle | powerpclittle) >- basic_machine=powerpcle-unknown >+ rtpc | rtpc-*) >+ cpu=romp >+ vendor=ibm > ;; >- ppcle-* | powerpclittle-*) >- basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` >+ sde) >+ cpu=mipsisa32 >+ vendor=sde >+ basic_os=${basic_os:-elf} > ;; >- ppc64) basic_machine=powerpc64-unknown >+ simso-wrs) >+ cpu=sparclite >+ vendor=wrs >+ basic_os=vxworks > ;; >- ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` >+ tower | tower-32) >+ cpu=m68k >+ vendor=ncr > ;; >- ppc64le | powerpc64little) >- basic_machine=powerpc64le-unknown >+ vpp*|vx|vx-*) >+ cpu=f301 >+ vendor=fujitsu > ;; >- ppc64le-* | powerpc64little-*) >- basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` >+ w65) >+ cpu=w65 >+ vendor=wdc > ;; >- ps2) >- basic_machine=i386-ibm >+ w89k-*) >+ cpu=hppa1.1 >+ vendor=winbond >+ basic_os=proelf > ;; >- pw32) >- basic_machine=i586-unknown >- os=-pw32 >+ none) >+ cpu=none >+ vendor=none > ;; >- rdos | rdos64) >- basic_machine=x86_64-pc >- os=-rdos >+ leon|leon[3-9]) >+ cpu=sparc >+ vendor=$basic_machine > ;; >- rdos32) >- basic_machine=i386-pc >- os=-rdos >+ leon-*|leon[3-9]-*) >+ cpu=sparc >+ vendor=`echo "$basic_machine" | sed 's/-.*//'` > ;; >- rom68k) >- basic_machine=m68k-rom68k >- os=-coff >+ >+ *-*) >+ # shellcheck disable=SC2162 >+ saved_IFS=$IFS >+ IFS="-" read cpu vendor <<EOF >+$basic_machine >+EOF >+ IFS=$saved_IFS > ;; >- rm[46]00) >- basic_machine=mips-siemens >+ # We use `pc' rather than `unknown' >+ # because (1) that's what they normally are, and >+ # (2) the word "unknown" tends to confuse beginning users. >+ i*86 | x86_64) >+ cpu=$basic_machine >+ vendor=pc > ;; >- rtpc | rtpc-*) >- basic_machine=romp-ibm >+ # These rules are duplicated from below for sake of the special case above; >+ # i.e. things that normalized to x86 arches should also default to "pc" >+ pc98) >+ cpu=i386 >+ vendor=pc > ;; >- s390 | s390-*) >- basic_machine=s390-ibm >+ x64 | amd64) >+ cpu=x86_64 >+ vendor=pc > ;; >- s390x | s390x-*) >- basic_machine=s390x-ibm >+ # Recognize the basic CPU types without company name. >+ *) >+ cpu=$basic_machine >+ vendor=unknown > ;; >- sa29200) >- basic_machine=a29k-amd >- os=-udi >+esac >+ >+unset -v basic_machine >+ >+# Decode basic machines in the full and proper CPU-Company form. >+case $cpu-$vendor in >+ # Here we handle the default manufacturer of certain CPU types in canonical form. It is in >+ # some cases the only manufacturer, in others, it is the most popular. >+ craynv-unknown) >+ vendor=cray >+ basic_os=${basic_os:-unicosmp} > ;; >- sb1) >- basic_machine=mipsisa64sb1-unknown >+ c90-unknown | c90-cray) >+ vendor=cray >+ basic_os=${Basic_os:-unicos} > ;; >- sb1el) >- basic_machine=mipsisa64sb1el-unknown >+ fx80-unknown) >+ vendor=alliant > ;; >- sde) >- basic_machine=mipsisa32-sde >- os=-elf >+ romp-unknown) >+ vendor=ibm > ;; >- sei) >- basic_machine=mips-sei >- os=-seiux >+ mmix-unknown) >+ vendor=knuth > ;; >- sequent) >- basic_machine=i386-sequent >+ microblaze-unknown | microblazeel-unknown) >+ vendor=xilinx > ;; >- sh5el) >- basic_machine=sh5le-unknown >+ rs6000-unknown) >+ vendor=ibm > ;; >- simso-wrs) >- basic_machine=sparclite-wrs >- os=-vxworks >+ vax-unknown) >+ vendor=dec > ;; >- sps7) >- basic_machine=m68k-bull >- os=-sysv2 >+ pdp11-unknown) >+ vendor=dec > ;; >- spur) >- basic_machine=spur-unknown >+ we32k-unknown) >+ vendor=att > ;; >- st2000) >- basic_machine=m68k-tandem >+ cydra-unknown) >+ vendor=cydrome > ;; >- stratus) >- basic_machine=i860-stratus >- os=-sysv4 >+ i370-ibm*) >+ vendor=ibm > ;; >- strongarm-* | thumb-*) >- basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` >+ orion-unknown) >+ vendor=highlevel > ;; >- sun2) >- basic_machine=m68000-sun >+ xps-unknown | xps100-unknown) >+ cpu=xps100 >+ vendor=honeywell > ;; >- sun2os3) >- basic_machine=m68000-sun >- os=-sunos3 >+ >+ # Here we normalize CPU types with a missing or matching vendor >+ armh-unknown | armh-alt) >+ cpu=armv7l >+ vendor=alt >+ basic_os=${basic_os:-linux-gnueabihf} > ;; >- sun2os4) >- basic_machine=m68000-sun >- os=-sunos4 >+ dpx20-unknown | dpx20-bull) >+ cpu=rs6000 >+ vendor=bull >+ basic_os=${basic_os:-bosx} > ;; >- sun3os3) >- basic_machine=m68k-sun >- os=-sunos3 >+ >+ # Here we normalize CPU types irrespective of the vendor >+ amd64-*) >+ cpu=x86_64 > ;; >- sun3os4) >- basic_machine=m68k-sun >- os=-sunos4 >+ blackfin-*) >+ cpu=bfin >+ basic_os=linux > ;; >- sun4os3) >- basic_machine=sparc-sun >- os=-sunos3 >+ c54x-*) >+ cpu=tic54x > ;; >- sun4os4) >- basic_machine=sparc-sun >- os=-sunos4 >+ c55x-*) >+ cpu=tic55x > ;; >- sun4sol2) >- basic_machine=sparc-sun >- os=-solaris2 >+ c6x-*) >+ cpu=tic6x > ;; >- sun3 | sun3-*) >- basic_machine=m68k-sun >+ e500v[12]-*) >+ cpu=powerpc >+ basic_os=${basic_os}"spe" > ;; >- sun4) >- basic_machine=sparc-sun >+ mips3*-*) >+ cpu=mips64 > ;; >- sun386 | sun386i | roadrunner) >- basic_machine=i386-sun >+ ms1-*) >+ cpu=mt > ;; >- sv1) >- basic_machine=sv1-cray >- os=-unicos >+ m68knommu-*) >+ cpu=m68k >+ basic_os=linux > ;; >- symmetry) >- basic_machine=i386-sequent >- os=-dynix >+ m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) >+ cpu=s12z > ;; >- t3e) >- basic_machine=alphaev5-cray >- os=-unicos >+ openrisc-*) >+ cpu=or32 > ;; >- t90) >- basic_machine=t90-cray >- os=-unicos >+ parisc-*) >+ cpu=hppa >+ basic_os=linux > ;; >- tile*) >- basic_machine=$basic_machine-unknown >- os=-linux-gnu >+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) >+ cpu=i586 > ;; >- tx39) >- basic_machine=mipstx39-unknown >+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) >+ cpu=i686 > ;; >- tx39el) >- basic_machine=mipstx39el-unknown >+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) >+ cpu=i686 > ;; >- toad1) >- basic_machine=pdp10-xkl >- os=-tops20 >+ pentium4-*) >+ cpu=i786 > ;; >- tower | tower-32) >- basic_machine=m68k-ncr >+ pc98-*) >+ cpu=i386 > ;; >- tpf) >- basic_machine=s390x-ibm >- os=-tpf >+ ppc-* | ppcbe-*) >+ cpu=powerpc > ;; >- udi29k) >- basic_machine=a29k-amd >- os=-udi >+ ppcle-* | powerpclittle-*) >+ cpu=powerpcle > ;; >- ultra3) >- basic_machine=a29k-nyu >- os=-sym1 >+ ppc64-*) >+ cpu=powerpc64 > ;; >- v810 | necv810) >- basic_machine=v810-nec >- os=-none >+ ppc64le-* | powerpc64little-*) >+ cpu=powerpc64le > ;; >- vaxv) >- basic_machine=vax-dec >- os=-sysv >+ sb1-*) >+ cpu=mipsisa64sb1 > ;; >- vms) >- basic_machine=vax-dec >- os=-vms >+ sb1el-*) >+ cpu=mipsisa64sb1el > ;; >- vpp*|vx|vx-*) >- basic_machine=f301-fujitsu >+ sh5e[lb]-*) >+ cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` > ;; >- vxworks960) >- basic_machine=i960-wrs >- os=-vxworks >+ spur-*) >+ cpu=spur > ;; >- vxworks68) >- basic_machine=m68k-wrs >- os=-vxworks >+ strongarm-* | thumb-*) >+ cpu=arm > ;; >- vxworks29k) >- basic_machine=a29k-wrs >- os=-vxworks >+ tx39-*) >+ cpu=mipstx39 > ;; >- w65*) >- basic_machine=w65-wdc >- os=-none >+ tx39el-*) >+ cpu=mipstx39el > ;; >- w89k-*) >- basic_machine=hppa1.1-winbond >- os=-proelf >+ x64-*) >+ cpu=x86_64 > ;; >- x64) >- basic_machine=x86_64-pc >- ;; >- xbox) >- basic_machine=i686-pc >- os=-mingw32 >- ;; >- xps | xps100) >- basic_machine=xps100-honeywell >- ;; > xscale-* | xscalee[bl]-*) >- basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` >+ cpu=`echo "$cpu" | sed 's/^xscale/arm/'` > ;; >- ymp) >- basic_machine=ymp-cray >- os=-unicos >+ arm64-* | aarch64le-*) >+ cpu=aarch64 > ;; >- none) >- basic_machine=none-none >- os=-none >- ;; > >-# Here we handle the default manufacturer of certain CPU types. It is in >-# some cases the only manufacturer, in others, it is the most popular. >- w89k) >- basic_machine=hppa1.1-winbond >+ # Recognize the canonical CPU Types that limit and/or modify the >+ # company names they are paired with. >+ cr16-*) >+ basic_os=${basic_os:-elf} > ;; >- op50n) >- basic_machine=hppa1.1-oki >+ crisv32-* | etraxfs*-*) >+ cpu=crisv32 >+ vendor=axis > ;; >- op60c) >- basic_machine=hppa1.1-oki >+ cris-* | etrax*-*) >+ cpu=cris >+ vendor=axis > ;; >- romp) >- basic_machine=romp-ibm >+ crx-*) >+ basic_os=${basic_os:-elf} > ;; >- mmix) >- basic_machine=mmix-knuth >+ neo-tandem) >+ cpu=neo >+ vendor=tandem > ;; >- rs6000) >- basic_machine=rs6000-ibm >+ nse-tandem) >+ cpu=nse >+ vendor=tandem > ;; >- vax) >- basic_machine=vax-dec >+ nsr-tandem) >+ cpu=nsr >+ vendor=tandem > ;; >- pdp11) >- basic_machine=pdp11-dec >+ nsv-tandem) >+ cpu=nsv >+ vendor=tandem > ;; >- we32k) >- basic_machine=we32k-att >+ nsx-tandem) >+ cpu=nsx >+ vendor=tandem > ;; >- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) >- basic_machine=sh-unknown >+ mipsallegrexel-sony) >+ cpu=mipsallegrexel >+ vendor=sony > ;; >- cydra) >- basic_machine=cydra-cydrome >+ tile*-*) >+ basic_os=${basic_os:-linux-gnu} > ;; >- orion) >- basic_machine=orion-highlevel >- ;; >- orion105) >- basic_machine=clipper-highlevel >- ;; >- mac | mpw | mac-mpw) >- basic_machine=m68k-apple >- ;; >- pmac | pmac-mpw) >- basic_machine=powerpc-apple >- ;; >- *-unknown) >- # Make sure to match an already-canonicalized machine name. >- ;; >+ > *) >- echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 >- exit 1 >+ # Recognize the canonical CPU types that are allowed with any >+ # company name. >+ case $cpu in >+ 1750a | 580 \ >+ | a29k \ >+ | aarch64 | aarch64_be \ >+ | abacus \ >+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ >+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ >+ | alphapca5[67] | alpha64pca5[67] \ >+ | am33_2.0 \ >+ | amdgcn \ >+ | arc | arceb | arc32 | arc64 \ >+ | arm | arm[lb]e | arme[lb] | armv* \ >+ | avr | avr32 \ >+ | asmjs \ >+ | ba \ >+ | be32 | be64 \ >+ | bfin | bpf | bs2000 \ >+ | c[123]* | c30 | [cjt]90 | c4x \ >+ | c8051 | clipper | craynv | csky | cydra \ >+ | d10v | d30v | dlx | dsp16xx \ >+ | e2k | elxsi | epiphany \ >+ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ >+ | h8300 | h8500 \ >+ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ >+ | hexagon \ >+ | i370 | i*86 | i860 | i960 | ia16 | ia64 \ >+ | ip2k | iq2000 \ >+ | k1om \ >+ | le32 | le64 \ >+ | lm32 \ >+ | loongarch32 | loongarch64 | loongarchx32 \ >+ | m32c | m32r | m32rle \ >+ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ >+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ >+ | m88110 | m88k | maxq | mb | mcore | mep | metag \ >+ | microblaze | microblazeel \ >+ | mips | mipsbe | mipseb | mipsel | mipsle \ >+ | mips16 \ >+ | mips64 | mips64eb | mips64el \ >+ | mips64octeon | mips64octeonel \ >+ | mips64orion | mips64orionel \ >+ | mips64r5900 | mips64r5900el \ >+ | mips64vr | mips64vrel \ >+ | mips64vr4100 | mips64vr4100el \ >+ | mips64vr4300 | mips64vr4300el \ >+ | mips64vr5000 | mips64vr5000el \ >+ | mips64vr5900 | mips64vr5900el \ >+ | mipsisa32 | mipsisa32el \ >+ | mipsisa32r2 | mipsisa32r2el \ >+ | mipsisa32r3 | mipsisa32r3el \ >+ | mipsisa32r5 | mipsisa32r5el \ >+ | mipsisa32r6 | mipsisa32r6el \ >+ | mipsisa64 | mipsisa64el \ >+ | mipsisa64r2 | mipsisa64r2el \ >+ | mipsisa64r3 | mipsisa64r3el \ >+ | mipsisa64r5 | mipsisa64r5el \ >+ | mipsisa64r6 | mipsisa64r6el \ >+ | mipsisa64sb1 | mipsisa64sb1el \ >+ | mipsisa64sr71k | mipsisa64sr71kel \ >+ | mipsr5900 | mipsr5900el \ >+ | mipstx39 | mipstx39el \ >+ | mmix \ >+ | mn10200 | mn10300 \ >+ | moxie \ >+ | mt \ >+ | msp430 \ >+ | nds32 | nds32le | nds32be \ >+ | nfp \ >+ | nios | nios2 | nios2eb | nios2el \ >+ | none | np1 | ns16k | ns32k | nvptx \ >+ | open8 \ >+ | or1k* \ >+ | or32 \ >+ | orion \ >+ | picochip \ >+ | pdp10 | pdp11 | pj | pjl | pn | power \ >+ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ >+ | pru \ >+ | pyramid \ >+ | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ >+ | rl78 | romp | rs6000 | rx \ >+ | s390 | s390x \ >+ | score \ >+ | sh | shl \ >+ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ >+ | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ >+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ >+ | sparclite \ >+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ >+ | spu \ >+ | tahoe \ >+ | thumbv7* \ >+ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ >+ | tron \ >+ | ubicom32 \ >+ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ >+ | vax \ >+ | visium \ >+ | w65 \ >+ | wasm32 | wasm64 \ >+ | we32k \ >+ | x86 | x86_64 | xc16x | xgate | xps100 \ >+ | xstormy16 | xtensa* \ >+ | ymp \ >+ | z8k | z80) >+ ;; >+ >+ *) >+ echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 >+ exit 1 >+ ;; >+ esac > ;; > esac > > # Here we canonicalize certain aliases for manufacturers. >-case $basic_machine in >- *-digital*) >- basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` >+case $vendor in >+ digital*) >+ vendor=dec > ;; >- *-commodore*) >- basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` >+ commodore*) >+ vendor=cbm > ;; > *) > ;; >@@ -1334,203 +1306,215 @@ > > # Decode manufacturer-specific aliases for certain operating systems. > >-if [ x"$os" != x"" ] >+if test x$basic_os != x > then >+ >+# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just >+# set os. >+case $basic_os in >+ gnu/linux*) >+ kernel=linux >+ os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` >+ ;; >+ os2-emx) >+ kernel=os2 >+ os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` >+ ;; >+ nto-qnx*) >+ kernel=nto >+ os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` >+ ;; >+ *-*) >+ # shellcheck disable=SC2162 >+ saved_IFS=$IFS >+ IFS="-" read kernel os <<EOF >+$basic_os >+EOF >+ IFS=$saved_IFS >+ ;; >+ # Default OS when just kernel was specified >+ nto*) >+ kernel=nto >+ os=`echo "$basic_os" | sed -e 's|nto|qnx|'` >+ ;; >+ linux*) >+ kernel=linux >+ os=`echo "$basic_os" | sed -e 's|linux|gnu|'` >+ ;; >+ *) >+ kernel= >+ os=$basic_os >+ ;; >+esac >+ >+# Now, normalize the OS (knowing we just have one component, it's not a kernel, >+# etc.) > case $os in > # First match some system type aliases that might get confused > # with valid system types. >- # -solaris* is a basic system type, with this one exception. >- -auroraux) >- os=-auroraux >+ # solaris* is a basic system type, with this one exception. >+ auroraux) >+ os=auroraux > ;; >- -solaris1 | -solaris1.*) >- os=`echo $os | sed -e 's|solaris1|sunos4|'` >+ bluegene*) >+ os=cnk > ;; >- -solaris) >- os=-solaris2 >+ solaris1 | solaris1.*) >+ os=`echo "$os" | sed -e 's|solaris1|sunos4|'` > ;; >- -unixware*) >- os=-sysv4.2uw >+ solaris) >+ os=solaris2 > ;; >- -gnu/linux*) >- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` >+ unixware*) >+ os=sysv4.2uw > ;; > # es1800 is here to avoid being matched by es* (a different OS) >- -es1800*) >- os=-ose >+ es1800*) >+ os=ose > ;; >- # Now accept the basic system types. >- # The portable systems comes first. >- # Each alternative MUST end in a * to match a version number. >- # -sysv* is not here because it comes later, after sysvr4. >- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ >- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ >- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ >- | -sym* | -kopensolaris* | -plan9* \ >- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ >- | -aos* | -aros* | -cloudabi* | -sortix* \ >- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ >- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ >- | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \ >- | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ >- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ >- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ >- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ >- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* | -hcos* \ >- | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ >- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ >- | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ >- | -linux-newlib* | -linux-musl* | -linux-uclibc* \ >- | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ >- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \ >- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ >- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ >- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ >- | -morphos* | -superux* | -rtmk* | -windiss* \ >- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ >- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ >- | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \ >- | -midnightbsd*) >- # Remember, each alternative MUST END IN *, to match a version number. >+ # Some version numbers need modification >+ chorusos*) >+ os=chorusos > ;; >- -qnx*) >- case $basic_machine in >- x86-* | i*86-*) >- ;; >- *) >- os=-nto$os >- ;; >- esac >+ isc) >+ os=isc2.2 > ;; >- -nto-qnx*) >+ sco6) >+ os=sco5v6 > ;; >- -nto*) >- os=`echo $os | sed -e 's|nto|nto-qnx|'` >+ sco5) >+ os=sco3.2v5 > ;; >- -sim | -xray | -os68k* | -v88r* \ >- | -windows* | -osx | -abug | -netware* | -os9* \ >- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) >+ sco4) >+ os=sco3.2v4 > ;; >- -mac*) >- os=`echo "$os" | sed -e 's|mac|macos|'` >+ sco3.2.[4-9]*) >+ os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` > ;; >- -linux-dietlibc) >- os=-linux-dietlibc >+ sco*v* | scout) >+ # Don't match below > ;; >- -linux*) >- os=`echo $os | sed -e 's|linux|linux-gnu|'` >+ sco*) >+ os=sco3.2v2 > ;; >- -sunos5*) >- os=`echo "$os" | sed -e 's|sunos5|solaris2|'` >+ psos*) >+ os=psos > ;; >- -sunos6*) >- os=`echo "$os" | sed -e 's|sunos6|solaris3|'` >+ qnx*) >+ os=qnx > ;; >- -opened*) >- os=-openedition >+ hiux*) >+ os=hiuxwe2 > ;; >- -os400*) >- os=-os400 >+ lynx*178) >+ os=lynxos178 > ;; >- -wince*) >- os=-wince >+ lynx*5) >+ os=lynxos5 > ;; >- -utek*) >- os=-bsd >+ lynxos*) >+ # don't get caught up in next wildcard > ;; >- -dynix*) >- os=-bsd >+ lynx*) >+ os=lynxos > ;; >- -acis*) >- os=-aos >+ mac[0-9]*) >+ os=`echo "$os" | sed -e 's|mac|macos|'` > ;; >- -atheos*) >- os=-atheos >+ opened*) >+ os=openedition > ;; >- -syllable*) >- os=-syllable >+ os400*) >+ os=os400 > ;; >- -386bsd) >- os=-bsd >+ sunos5*) >+ os=`echo "$os" | sed -e 's|sunos5|solaris2|'` > ;; >- -ctix* | -uts*) >- os=-sysv >+ sunos6*) >+ os=`echo "$os" | sed -e 's|sunos6|solaris3|'` > ;; >- -nova*) >- os=-rtmk-nova >+ wince*) >+ os=wince > ;; >- -ns2) >- os=-nextstep2 >+ utek*) >+ os=bsd > ;; >- -nsk*) >- os=-nsk >+ dynix*) >+ os=bsd > ;; >- # Preserve the version number of sinix5. >- -sinix5.*) >- os=`echo $os | sed -e 's|sinix|sysv|'` >+ acis*) >+ os=aos > ;; >- -sinix*) >- os=-sysv4 >+ atheos*) >+ os=atheos > ;; >- -tpf*) >- os=-tpf >+ syllable*) >+ os=syllable > ;; >- -triton*) >- os=-sysv3 >+ 386bsd) >+ os=bsd > ;; >- -oss*) >- os=-sysv3 >+ ctix* | uts*) >+ os=sysv > ;; >- -svr4*) >- os=-sysv4 >+ nova*) >+ os=rtmk-nova > ;; >- -svr3) >- os=-sysv3 >+ ns2) >+ os=nextstep2 > ;; >- -sysvr4) >- os=-sysv4 >+ # Preserve the version number of sinix5. >+ sinix5.*) >+ os=`echo "$os" | sed -e 's|sinix|sysv|'` > ;; >- # This must come after -sysvr4. >- -sysv*) >+ sinix*) >+ os=sysv4 > ;; >- -ose*) >- os=-ose >+ tpf*) >+ os=tpf > ;; >- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) >- os=-mint >+ triton*) >+ os=sysv3 > ;; >- -zvmoe) >- os=-zvmoe >+ oss*) >+ os=sysv3 > ;; >- -dicos*) >- os=-dicos >+ svr4*) >+ os=sysv4 > ;; >- -pikeos*) >+ svr3) >+ os=sysv3 >+ ;; >+ sysvr4) >+ os=sysv4 >+ ;; >+ ose*) >+ os=ose >+ ;; >+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) >+ os=mint >+ ;; >+ dicos*) >+ os=dicos >+ ;; >+ pikeos*) > # Until real need of OS specific support for > # particular features comes up, bare metal > # configurations are quite functional. >- case $basic_machine in >+ case $cpu in > arm*) >- os=-eabi >+ os=eabi > ;; > *) >- os=-elf >+ os=elf > ;; > esac > ;; >- -nacl*) >- ;; >- -ios) >- ;; >- -none) >- ;; > *) >- # Get rid of the `-' at the beginning of $os. >- os=`echo $os | sed 's/[^-]*-//'` >- echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 >- exit 1 >+ # No normalization, but not necessarily accepted, that comes below. > ;; > esac >+ > else > > # Here we handle the default operating systems that come with various machines. >@@ -1543,254 +1527,359 @@ > # will signal an error saying that MANUFACTURER isn't an operating > # system, and we'll never get to this point. > >-case $basic_machine in >+kernel= >+case $cpu-$vendor in > score-*) >- os=-elf >+ os=elf > ;; > spu-*) >- os=-elf >+ os=elf > ;; > *-acorn) >- os=-riscix1.2 >+ os=riscix1.2 > ;; > arm*-rebel) >- os=-linux >+ kernel=linux >+ os=gnu > ;; > arm*-semi) >- os=-aout >+ os=aout > ;; > c4x-* | tic4x-*) >- os=-coff >+ os=coff > ;; > c8051-*) >- os=-elf >+ os=elf > ;; >+ clipper-intergraph) >+ os=clix >+ ;; > hexagon-*) >- os=-elf >+ os=elf > ;; > tic54x-*) >- os=-coff >+ os=coff > ;; > tic55x-*) >- os=-coff >+ os=coff > ;; > tic6x-*) >- os=-coff >+ os=coff > ;; > # This must come before the *-dec entry. > pdp10-*) >- os=-tops20 >+ os=tops20 > ;; > pdp11-*) >- os=-none >+ os=none > ;; > *-dec | vax-*) >- os=-ultrix4.2 >+ os=ultrix4.2 > ;; > m68*-apollo) >- os=-domain >+ os=domain > ;; > i386-sun) >- os=-sunos4.0.2 >+ os=sunos4.0.2 > ;; > m68000-sun) >- os=-sunos3 >+ os=sunos3 > ;; > m68*-cisco) >- os=-aout >+ os=aout > ;; > mep-*) >- os=-elf >+ os=elf > ;; > mips*-cisco) >- os=-elf >+ os=elf > ;; > mips*-*) >- os=-elf >+ os=elf > ;; > or32-*) >- os=-coff >+ os=coff > ;; > *-tti) # must be before sparc entry or we get the wrong os. >- os=-sysv3 >+ os=sysv3 > ;; > sparc-* | *-sun) >- os=-sunos4.1.1 >+ os=sunos4.1.1 > ;; > pru-*) >- os=-elf >+ os=elf > ;; > *-be) >- os=-beos >+ os=beos > ;; > *-ibm) >- os=-aix >+ os=aix > ;; > *-knuth) >- os=-mmixware >+ os=mmixware > ;; > *-wec) >- os=-proelf >+ os=proelf > ;; > *-winbond) >- os=-proelf >+ os=proelf > ;; > *-oki) >- os=-proelf >+ os=proelf > ;; > *-hp) >- os=-hpux >+ os=hpux > ;; > *-hitachi) >- os=-hiux >+ os=hiux > ;; > i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) >- os=-sysv >+ os=sysv > ;; > *-cbm) >- os=-amigaos >+ os=amigaos > ;; > *-dg) >- os=-dgux >+ os=dgux > ;; > *-dolphin) >- os=-sysv3 >+ os=sysv3 > ;; > m68k-ccur) >- os=-rtu >+ os=rtu > ;; > m88k-omron*) >- os=-luna >+ os=luna > ;; > *-next) >- os=-nextstep >+ os=nextstep > ;; > *-sequent) >- os=-ptx >+ os=ptx > ;; > *-crds) >- os=-unos >+ os=unos > ;; > *-ns) >- os=-genix >+ os=genix > ;; > i370-*) >- os=-mvs >+ os=mvs > ;; > *-gould) >- os=-sysv >+ os=sysv > ;; > *-highlevel) >- os=-bsd >+ os=bsd > ;; > *-encore) >- os=-bsd >+ os=bsd > ;; > *-sgi) >- os=-irix >+ os=irix > ;; > *-siemens) >- os=-sysv4 >+ os=sysv4 > ;; > *-masscomp) >- os=-rtu >+ os=rtu > ;; > f30[01]-fujitsu | f700-fujitsu) >- os=-uxpv >+ os=uxpv > ;; > *-rom68k) >- os=-coff >+ os=coff > ;; > *-*bug) >- os=-coff >+ os=coff > ;; > *-apple) >- os=-macos >+ os=macos > ;; > *-atari*) >- os=-mint >+ os=mint > ;; >+ *-wrs) >+ os=vxworks >+ ;; > *) >- os=-none >+ os=none > ;; > esac >+ > fi > >+# Now, validate our (potentially fixed-up) OS. >+case $os in >+ # Sometimes we do "kernel-libc", so those need to count as OSes. >+ musl* | newlib* | relibc* | uclibc*) >+ ;; >+ # Likewise for "kernel-abi" >+ eabi* | gnueabi*) >+ ;; >+ # VxWorks passes extra cpu info in the 4th filed. >+ simlinux | simwindows | spe) >+ ;; >+ # Now accept the basic system types. >+ # The portable systems comes first. >+ # Each alternative MUST end in a * to match a version number. >+ gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ >+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ >+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ >+ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ >+ | hiux* | abug | nacl* | netware* | windows* \ >+ | os9* | macos* | osx* | ios* \ >+ | mpw* | magic* | mmixware* | mon960* | lnews* \ >+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ >+ | aos* | aros* | cloudabi* | sortix* | twizzler* \ >+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ >+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ >+ | mirbsd* | netbsd* | dicos* | openedition* | ose* \ >+ | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ >+ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ >+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ >+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ >+ | udi* | lites* | ieee* | go32* | aux* | hcos* \ >+ | chorusrdb* | cegcc* | glidix* | serenity* \ >+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ >+ | midipix* | mingw32* | mingw64* | mint* \ >+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \ >+ | interix* | uwin* | mks* | rhapsody* | darwin* \ >+ | openstep* | oskit* | conix* | pw32* | nonstopux* \ >+ | storm-chaos* | tops10* | tenex* | tops20* | its* \ >+ | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ >+ | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ >+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ >+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \ >+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ >+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ >+ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ >+ | fiwix* ) >+ ;; >+ # This one is extra strict with allowed versions >+ sco3.2v2 | sco3.2v[4-9]* | sco5v6*) >+ # Don't forget version if it is 3.2v4 or newer. >+ ;; >+ none) >+ ;; >+ *) >+ echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 >+ exit 1 >+ ;; >+esac >+ >+# As a final step for OS-related things, validate the OS-kernel combination >+# (given a valid OS), if there is a kernel. >+case $kernel-$os in >+ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ >+ | linux-musl* | linux-relibc* | linux-uclibc* ) >+ ;; >+ uclinux-uclibc* ) >+ ;; >+ -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) >+ # These are just libc implementations, not actual OSes, and thus >+ # require a kernel. >+ echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 >+ exit 1 >+ ;; >+ kfreebsd*-gnu* | kopensolaris*-gnu*) >+ ;; >+ vxworks-simlinux | vxworks-simwindows | vxworks-spe) >+ ;; >+ nto-qnx*) >+ ;; >+ os2-emx) >+ ;; >+ *-eabi* | *-gnueabi*) >+ ;; >+ -*) >+ # Blank kernel with real OS is always fine. >+ ;; >+ *-*) >+ echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 >+ exit 1 >+ ;; >+esac >+ > # Here we handle the case where we know the os, and the CPU type, but not the > # manufacturer. We pick the logical manufacturer. >-vendor=unknown >-case $basic_machine in >- *-unknown) >- case $os in >- -riscix*) >+case $vendor in >+ unknown) >+ case $cpu-$os in >+ *-riscix*) > vendor=acorn > ;; >- -sunos*) >+ *-sunos*) > vendor=sun > ;; >- -cnk*|-aix*) >+ *-cnk* | *-aix*) > vendor=ibm > ;; >- -beos*) >+ *-beos*) > vendor=be > ;; >- -hpux*) >+ *-hpux*) > vendor=hp > ;; >- -mpeix*) >+ *-mpeix*) > vendor=hp > ;; >- -hiux*) >+ *-hiux*) > vendor=hitachi > ;; >- -unos*) >+ *-unos*) > vendor=crds > ;; >- -dgux*) >+ *-dgux*) > vendor=dg > ;; >- -luna*) >+ *-luna*) > vendor=omron > ;; >- -genix*) >+ *-genix*) > vendor=ns > ;; >- -mvs* | -opened*) >+ *-clix*) >+ vendor=intergraph >+ ;; >+ *-mvs* | *-opened*) > vendor=ibm > ;; >- -os400*) >+ *-os400*) > vendor=ibm > ;; >- -ptx*) >+ s390-* | s390x-*) >+ vendor=ibm >+ ;; >+ *-ptx*) > vendor=sequent > ;; >- -tpf*) >+ *-tpf*) > vendor=ibm > ;; >- -vxsim* | -vxworks* | -windiss*) >+ *-vxsim* | *-vxworks* | *-windiss*) > vendor=wrs > ;; >- -aux*) >+ *-aux*) > vendor=apple > ;; >- -hms*) >+ *-hms*) > vendor=hitachi > ;; >- -mpw* | -macos*) >+ *-mpw* | *-macos*) > vendor=apple > ;; >- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) >+ *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) > vendor=atari > ;; >- -vos*) >+ *-vos*) > vendor=stratus > ;; > esac >- basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` > ;; > esac > >-echo "$basic_machine$os" >+echo "$cpu-$vendor-${kernel:+$kernel-}$os" > exit > > # Local variables: >diff -ur xz-5.2.5/build-aux/depcomp xz-5.4.3/build-aux/depcomp >--- xz-5.2.5/build-aux/depcomp 2020-03-17 17:29:36 >+++ xz-5.4.3/build-aux/depcomp 2023-05-04 17:31:30 >@@ -3,7 +3,7 @@ > > scriptversion=2018-03-07.03; # UTC > >-# Copyright (C) 1999-2018 Free Software Foundation, Inc. >+# Copyright (C) 1999-2021 Free Software Foundation, Inc. > > # This program is free software; you can redistribute it and/or modify > # it under the terms of the GNU General Public License as published by >diff -ur xz-5.2.5/build-aux/install-sh xz-5.4.3/build-aux/install-sh >--- xz-5.2.5/build-aux/install-sh 2020-03-17 17:29:35 >+++ xz-5.4.3/build-aux/install-sh 2023-05-04 17:31:30 >@@ -1,7 +1,7 @@ > #!/bin/sh > # install - install a program, script, or datafile > >-scriptversion=2018-03-11.20; # UTC >+scriptversion=2020-11-14.01; # UTC > > # This originates from X11R5 (mit/util/scripts/install.sh), which was > # later released in X11R6 (xc/config/util/install.sh) with the >@@ -69,6 +69,11 @@ > # Desired mode of installed file. > mode=0755 > >+# Create dirs (including intermediate dirs) using mode 755. >+# This is like GNU 'install' as of coreutils 8.32 (2020). >+mkdir_umask=22 >+ >+backupsuffix= > chgrpcmd= > chmodcmd=$chmodprog > chowncmd= >@@ -99,18 +104,28 @@ > --version display version info and exit. > > -c (ignored) >- -C install only if different (preserve the last data modification time) >+ -C install only if different (preserve data modification time) > -d create directories instead of installing files. > -g GROUP $chgrpprog installed files to GROUP. > -m MODE $chmodprog installed files to MODE. > -o USER $chownprog installed files to USER. >+ -p pass -p to $cpprog. > -s $stripprog installed files. >+ -S SUFFIX attempt to back up existing files, with suffix SUFFIX. > -t DIRECTORY install into DIRECTORY. > -T report an error if DSTFILE is a directory. > > Environment variables override the default commands: > CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG > RMPROG STRIPPROG >+ >+By default, rm is invoked with -f; when overridden with RMPROG, >+it's up to you to specify -f if you want it. >+ >+If -S is not specified, no backups are attempted. >+ >+Email bug reports to bug-automake@gnu.org. >+Automake home page: https://www.gnu.org/software/automake/ > " > > while test $# -ne 0; do >@@ -137,8 +152,13 @@ > -o) chowncmd="$chownprog $2" > shift;; > >+ -p) cpprog="$cpprog -p";; >+ > -s) stripcmd=$stripprog;; > >+ -S) backupsuffix="$2" >+ shift;; >+ > -t) > is_target_a_directory=always > dst_arg=$2 >@@ -255,6 +275,10 @@ > dstdir=$dst > test -d "$dstdir" > dstdir_status=$? >+ # Don't chown directories that already exist. >+ if test $dstdir_status = 0; then >+ chowncmd="" >+ fi > else > > # Waiting for this to be detected by the "$cpprog $src $dsttmp" command >@@ -301,22 +325,6 @@ > if test $dstdir_status != 0; then > case $posix_mkdir in > '') >- # Create intermediate dirs using mode 755 as modified by the umask. >- # This is like FreeBSD 'install' as of 1997-10-28. >- umask=`umask` >- case $stripcmd.$umask in >- # Optimize common cases. >- *[2367][2367]) mkdir_umask=$umask;; >- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; >- >- *[0-7]) >- mkdir_umask=`expr $umask + 22 \ >- - $umask % 100 % 40 + $umask % 20 \ >- - $umask % 10 % 4 + $umask % 2 >- `;; >- *) mkdir_umask=$umask,go-w;; >- esac >- > # With -d, create the new directory with the user-specified mode. > # Otherwise, rely on $mkdir_umask. > if test -n "$dir_arg"; then >@@ -326,52 +334,49 @@ > fi > > posix_mkdir=false >- case $umask in >- *[123567][0-7][0-7]) >- # POSIX mkdir -p sets u+wx bits regardless of umask, which >- # is incompatible with FreeBSD 'install' when (umask & 300) != 0. >- ;; >- *) >- # Note that $RANDOM variable is not portable (e.g. dash); Use it >- # here however when possible just to lower collision chance. >- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ >+ # The $RANDOM variable is not portable (e.g., dash). Use it >+ # here however when possible just to lower collision chance. >+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ > >- trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 >+ trap ' >+ ret=$? >+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null >+ exit $ret >+ ' 0 > >- # Because "mkdir -p" follows existing symlinks and we likely work >- # directly in world-writeable /tmp, make sure that the '$tmpdir' >- # directory is successfully created first before we actually test >- # 'mkdir -p' feature. >- if (umask $mkdir_umask && >- $mkdirprog $mkdir_mode "$tmpdir" && >- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 >- then >- if test -z "$dir_arg" || { >- # Check for POSIX incompatibilities with -m. >- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or >- # other-writable bit of parent directory when it shouldn't. >- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. >- test_tmpdir="$tmpdir/a" >- ls_ld_tmpdir=`ls -ld "$test_tmpdir"` >- case $ls_ld_tmpdir in >- d????-?r-*) different_mode=700;; >- d????-?--*) different_mode=755;; >- *) false;; >- esac && >- $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { >- ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` >- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" >- } >- } >- then posix_mkdir=: >- fi >- rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" >- else >- # Remove any dirs left behind by ancient mkdir implementations. >- rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null >- fi >- trap '' 0;; >- esac;; >+ # Because "mkdir -p" follows existing symlinks and we likely work >+ # directly in world-writeable /tmp, make sure that the '$tmpdir' >+ # directory is successfully created first before we actually test >+ # 'mkdir -p'. >+ if (umask $mkdir_umask && >+ $mkdirprog $mkdir_mode "$tmpdir" && >+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 >+ then >+ if test -z "$dir_arg" || { >+ # Check for POSIX incompatibilities with -m. >+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or >+ # other-writable bit of parent directory when it shouldn't. >+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. >+ test_tmpdir="$tmpdir/a" >+ ls_ld_tmpdir=`ls -ld "$test_tmpdir"` >+ case $ls_ld_tmpdir in >+ d????-?r-*) different_mode=700;; >+ d????-?--*) different_mode=755;; >+ *) false;; >+ esac && >+ $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { >+ ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` >+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" >+ } >+ } >+ then posix_mkdir=: >+ fi >+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" >+ else >+ # Remove any dirs left behind by ancient mkdir implementations. >+ rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null >+ fi >+ trap '' 0;; > esac > > if >@@ -382,7 +387,7 @@ > then : > else > >- # The umask is ridiculous, or mkdir does not conform to POSIX, >+ # mkdir does not conform to POSIX, > # or it failed possibly due to a race condition. Create the > # directory the slow way, step by step, checking for races as we go. > >@@ -411,7 +416,7 @@ > prefixes= > else > if $posix_mkdir; then >- (umask=$mkdir_umask && >+ (umask $mkdir_umask && > $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break > # Don't fail if two instances are running concurrently. > test -d "$prefix" || exit 1 >@@ -451,7 +456,18 @@ > trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 > > # Copy the file name to the temp name. >- (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && >+ (umask $cp_umask && >+ { test -z "$stripcmd" || { >+ # Create $dsttmp read-write so that cp doesn't create it read-only, >+ # which would cause strip to fail. >+ if test -z "$doit"; then >+ : >"$dsttmp" # No need to fork-exec 'touch'. >+ else >+ $doit touch "$dsttmp" >+ fi >+ } >+ } && >+ $doit_exec $cpprog "$src" "$dsttmp") && > > # and set any options; do chmod last to preserve setuid bits. > # >@@ -477,6 +493,13 @@ > then > rm -f "$dsttmp" > else >+ # If $backupsuffix is set, and the file being installed >+ # already exists, attempt a backup. Don't worry if it fails, >+ # e.g., if mv doesn't support -f. >+ if test -n "$backupsuffix" && test -f "$dst"; then >+ $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null >+ fi >+ > # Rename the file to the real destination. > $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || > >@@ -491,9 +514,9 @@ > # file should still install successfully. > { > test ! -f "$dst" || >- $doit $rmcmd -f "$dst" 2>/dev/null || >+ $doit $rmcmd "$dst" 2>/dev/null || > { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && >- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } >+ { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } > } || > { echo "$0: cannot unlink or rename $dst" >&2 > (exit 1); exit 1 >diff -ur xz-5.2.5/build-aux/ltmain.sh xz-5.4.3/build-aux/ltmain.sh >--- xz-5.2.5/build-aux/ltmain.sh 2020-03-17 17:29:27 >+++ xz-5.4.3/build-aux/ltmain.sh 2023-05-04 17:31:27 >@@ -1,12 +1,12 @@ >-#! /bin/sh >+#! /usr/bin/env sh > ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in >-## by inline-source v2018-07-24.06 >+## by inline-source v2019-02-19.15 > >-# libtool (GNU libtool) 2.4.6.42-b88ce-dirty >+# libtool (GNU libtool) 2.4.7.4-1ec8f-dirty > # Provide generalized library-building support services. > # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 > >-# Copyright (C) 1996-2018 Free Software Foundation, Inc. >+# Copyright (C) 1996-2019, 2021-2022 Free Software Foundation, Inc. > # This is free software; see the source for copying conditions. There is NO > # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > >@@ -31,8 +31,8 @@ > > PROGRAM=libtool > PACKAGE=libtool >-VERSION=2.4.6.42-b88ce-dirty >-package_revision=2.4.6.42 >+VERSION=2.4.7.4-1ec8f-dirty >+package_revision=2.4.7.4 > > > ## ------ ## >@@ -64,7 +64,7 @@ > # libraries, which are installed to $pkgauxdir. > > # Set a version string for this script. >-scriptversion=2018-07-24.06; # UTC >+scriptversion=2019-02-19.15; # UTC > > # General shell script boiler plate, and helper functions. > # Written by Gary V. Vaughan, 2004 >@@ -72,10 +72,10 @@ > # This is free software. There is NO warranty; not even for > # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > # >-# Copyright (C) 2004-2018 Bootstrap Authors >+# Copyright (C) 2004-2019, 2021 Bootstrap Authors > # > # This file is dual licensed under the terms of the MIT license >-# <https://opensource.org/license/MIT>, and GPL version 3 or later >+# <https://opensource.org/license/MIT>, and GPL version 2 or later > # <http://www.gnu.org/licenses/gpl-2.0.html>. You must apply one of > # these licenses when using or redistributing this software or any of > # the files within it. See the URLs above, or the file `LICENSE` >@@ -130,6 +130,12 @@ > _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" > fi" > done >+# These NLS vars are set unconditionally (bootstrap issue #24). Unset those >+# in case the environment reset is needed later and the $save_* variant is not >+# defined (see the code above). >+LC_ALL=C >+LANGUAGE=C >+export LANGUAGE LC_ALL > > # Make sure IFS has a sensible default > sp=' ' >@@ -368,7 +374,36 @@ > s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g > s/\n//g" > >+# require_check_ifs_backslash >+# --------------------------- >+# Check if we can use backslash as IFS='\' separator, and set >+# $check_ifs_backshlash_broken to ':' or 'false'. >+require_check_ifs_backslash=func_require_check_ifs_backslash >+func_require_check_ifs_backslash () >+{ >+ _G_save_IFS=$IFS >+ IFS='\' >+ _G_check_ifs_backshlash='a\\b' >+ for _G_i in $_G_check_ifs_backshlash >+ do >+ case $_G_i in >+ a) >+ check_ifs_backshlash_broken=false >+ ;; >+ '') >+ break >+ ;; >+ *) >+ check_ifs_backshlash_broken=: >+ break >+ ;; >+ esac >+ done >+ IFS=$_G_save_IFS >+ require_check_ifs_backslash=: >+} > >+ > ## ----------------- ## > ## Global variables. ## > ## ----------------- ## >@@ -1108,6 +1143,8 @@ > { > $debug_cmd > >+ $require_check_ifs_backslash >+ > func_quote_portable_result=$2 > > # one-time-loop (easy break) >@@ -1122,8 +1159,10 @@ > # Quote for eval. > case $func_quote_portable_result in > *[\\\`\"\$]*) >- case $func_quote_portable_result in >- *[\[\*\?]*) >+ # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string >+ # contains the shell wildcard characters. >+ case $check_ifs_backshlash_broken$func_quote_portable_result in >+ :*|*[\[\*\?]*) > func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ > | $SED "$sed_quote_subst"` > break >@@ -1497,10 +1536,10 @@ > # This is free software. There is NO warranty; not even for > # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > # >-# Copyright (C) 2010-2018 Bootstrap Authors >+# Copyright (C) 2010-2019, 2021 Bootstrap Authors > # > # This file is dual licensed under the terms of the MIT license >-# <https://opensource.org/license/MIT>, and GPL version 3 or later >+# <https://opensource.org/license/MIT>, and GPL version 2 or later > # <http://www.gnu.org/licenses/gpl-2.0.html>. You must apply one of > # these licenses when using or redistributing this software or any of > # the files within it. See the URLs above, or the file `LICENSE` >@@ -1510,7 +1549,7 @@ > # <https://github.com/gnulib-modules/bootstrap/issues> > > # Set a version string for this script. >-scriptversion=2018-07-24.06; # UTC >+scriptversion=2019-02-19.15; # UTC > > > ## ------ ## >@@ -2056,7 +2095,7 @@ > > func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` > func_split_equals_rhs= >- test "x$func_split_equals_lhs" = "x$1" \ >+ test "x$func_split_equals_lhs=" = "x$1" \ > || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` > } > fi #func_split_equals >@@ -2082,7 +2121,7 @@ > { > $debug_cmd > >- func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` >+ func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'` > func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` > } > fi #func_split_short_opt >@@ -2176,7 +2215,7 @@ > # End: > > # Set a version string. >-scriptversion='(GNU libtool) 2.4.6.42-b88ce-dirty' >+scriptversion='(GNU libtool) 2.4.7.4-1ec8f-dirty' > > > # func_echo ARG... >@@ -2267,7 +2306,7 @@ > compiler: $LTCC > compiler flags: $LTCFLAGS > linker: $LD (gnu? $with_gnu_ld) >- version: $progname (GNU libtool) 2.4.6.42-b88ce-dirty >+ version: $progname (GNU libtool) 2.4.7.4-1ec8f-dirty > automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` > autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` > >@@ -3862,7 +3901,8 @@ > -prefer-non-pic try to build non-PIC objects only > -shared do not build a '.o' file suitable for static linking > -static only build a '.o' file suitable for static linking >- -Wc,FLAG pass FLAG directly to the compiler >+ -Wc,FLAG >+ -Xcompiler FLAG pass FLAG directly to the compiler > > COMPILE-COMMAND is a command to be used in creating a 'standard' object file > from the given SOURCEFILE. >@@ -3968,6 +4008,8 @@ > -weak LIBNAME declare that the target provides the LIBNAME interface > -Wc,FLAG > -Xcompiler FLAG pass linker-specific FLAG directly to the compiler >+ -Wa,FLAG >+ -Xassembler FLAG pass linker-specific FLAG directly to the assembler > -Wl,FLAG > -Xlinker FLAG pass linker-specific FLAG directly to the linker > -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) >@@ -7064,6 +7106,13 @@ > prev= > continue > ;; >+ xassembler) >+ func_append compiler_flags " -Xassembler $qarg" >+ prev= >+ func_append compile_command " -Xassembler $qarg" >+ func_append finalize_command " -Xassembler $qarg" >+ continue >+ ;; > xcclinker) > func_append linker_flags " $qarg" > func_append compiler_flags " $qarg" >@@ -7234,7 +7283,7 @@ > # These systems don't actually have a C library (as such) > test X-lc = "X$arg" && continue > ;; >- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) >+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) > # Do not include libc due to us having libc/libc_r. > test X-lc = "X$arg" && continue > ;; >@@ -7254,7 +7303,7 @@ > esac > elif test X-lc_r = "X$arg"; then > case $host in >- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) >+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) > # Do not include libc_r directly, use -pthread flag. > continue > ;; >@@ -7284,8 +7333,20 @@ > prev=xcompiler > continue > ;; >- >- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ >+ # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199. >+ -pthread) >+ case $host in >+ *solaris2*) ;; >+ *) >+ case "$new_inherited_linker_flags " in >+ *" $arg "*) ;; >+ * ) func_append new_inherited_linker_flags " $arg" ;; >+ esac >+ ;; >+ esac >+ continue >+ ;; >+ -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \ > |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) > func_append compiler_flags " $arg" > func_append compile_command " $arg" >@@ -7452,6 +7513,11 @@ > arg=$func_stripname_result > ;; > >+ -Xassembler) >+ prev=xassembler >+ continue >+ ;; >+ > -Xcompiler) > prev=xcompiler > continue >@@ -7491,10 +7557,12 @@ > # -stdlib=* select c++ std lib with clang > # -fsanitize=* Clang/GCC memory and address sanitizer > # -fuse-ld=* Linker select flags for GCC >+ # -Wa,* Pass flags directly to the assembler >+ # -Werror, -Werror=* Report (specified) warnings as errors > -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ > -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ > -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ >- -specs=*|-fsanitize=*|-fuse-ld=*) >+ -specs=*|-fsanitize=*|-fuse-ld=*|-Wa,*|-Werror|-Werror=*) > func_quote_arg pretty "$arg" > arg=$func_quote_arg_result > func_append compile_command " $arg" >@@ -8851,7 +8919,7 @@ > test CXX = "$tagname" && { > case $host_os in > linux*) >- case `$CC -V 2>&1 | sed 5q` in >+ case `$CC -V 2>&1 | $SED 5q` in > *Sun\ C*) # Sun C++ 5.9 > func_suncc_cstd_abi > >@@ -9024,7 +9092,7 @@ > # > case $version_type in > # correct linux to gnu/linux during the next big refactor >- darwin|freebsd-elf|linux|osf|windows|none) >+ darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none) > func_arith $number_major + $number_minor > current=$func_arith_result > age=$number_minor >@@ -9115,7 +9183,7 @@ > versuffix=.$current.$revision > ;; > >- freebsd-elf) >+ freebsd-elf | midnightbsd-elf) > func_arith $current - $age > major=.$func_arith_result > versuffix=$major.$age.$revision >@@ -9341,7 +9409,7 @@ > *-*-netbsd*) > # Don't link with libc until the a.out ld.so is fixed. > ;; >- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) >+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) > # Do not include libc due to us having libc/libc_r. > ;; > *-*-sco3.2v5* | *-*-sco5v6*) >diff -ur xz-5.2.5/build-aux/missing xz-5.4.3/build-aux/missing >--- xz-5.2.5/build-aux/missing 2020-03-17 17:29:35 >+++ xz-5.4.3/build-aux/missing 2023-05-04 17:31:30 >@@ -3,7 +3,7 @@ > > scriptversion=2018-03-07.03; # UTC > >-# Copyright (C) 1996-2018 Free Software Foundation, Inc. >+# Copyright (C) 1996-2021 Free Software Foundation, Inc. > # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. > > # This program is free software; you can redistribute it and/or modify >Only in xz-5.4.3/build-aux: test-driver >Only in xz-5.4.3: cmake >diff -ur xz-5.2.5/config.h.in xz-5.4.3/config.h.in >--- xz-5.2.5/config.h.in 2020-03-17 17:29:33 >+++ xz-5.4.3/config.h.in 2023-05-04 17:32:19 >@@ -31,10 +31,6 @@ > /* Define to 1 if you have the `CC_SHA256_Init' function. */ > #undef HAVE_CC_SHA256_INIT > >-/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the >- CoreFoundation framework. */ >-#undef HAVE_CFLOCALECOPYCURRENT >- > /* Define to 1 if you have the Mac OS X function > CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */ > #undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES >@@ -55,27 +51,28 @@ > /* Define to 1 if you have the `clock_gettime' function. */ > #undef HAVE_CLOCK_GETTIME > >+/* Define to 1 if `CLOCK_MONOTONIC' is declared in <time.h>. */ >+#undef HAVE_CLOCK_MONOTONIC >+ > /* Define to 1 if you have the <CommonCrypto/CommonDigest.h> header file. */ > #undef HAVE_COMMONCRYPTO_COMMONDIGEST_H > >+/* Define to 1 if you have the <cpuid.h> header file. */ >+#undef HAVE_CPUID_H >+ > /* Define if the GNU dcgettext() function is already present or preinstalled. > */ > #undef HAVE_DCGETTEXT > >-/* Define to 1 if you have the declaration of `CLOCK_MONOTONIC', and to 0 if >- you don't. */ >-#undef HAVE_DECL_CLOCK_MONOTONIC >- >-/* Define to 1 if you have the declaration of `program_invocation_name', and >- to 0 if you don't. */ >-#undef HAVE_DECL_PROGRAM_INVOCATION_NAME >- > /* Define to 1 if any of HAVE_DECODER_foo have been defined. */ > #undef HAVE_DECODERS > > /* Define to 1 if arm decoder is enabled. */ > #undef HAVE_DECODER_ARM > >+/* Define to 1 if arm64 decoder is enabled. */ >+#undef HAVE_DECODER_ARM64 >+ > /* Define to 1 if armthumb decoder is enabled. */ > #undef HAVE_DECODER_ARMTHUMB > >@@ -109,6 +106,9 @@ > /* Define to 1 if arm encoder is enabled. */ > #undef HAVE_ENCODER_ARM > >+/* Define to 1 if arm64 encoder is enabled. */ >+#undef HAVE_ENCODER_ARM64 >+ > /* Define to 1 if armthumb encoder is enabled. */ > #undef HAVE_ENCODER_ARMTHUMB > >@@ -136,6 +136,10 @@ > /* Define to 1 if you have the <fcntl.h> header file. */ > #undef HAVE_FCNTL_H > >+/* Define to 1 if __attribute__((__constructor__)) is supported for functions. >+ */ >+#undef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR >+ > /* Define to 1 if you have the `futimens' function. */ > #undef HAVE_FUTIMENS > >@@ -166,12 +170,12 @@ > /* Define to 1 if you have the <limits.h> header file. */ > #undef HAVE_LIMITS_H > >+/* Define to 1 if .lz (lzip) decompression support is enabled. */ >+#undef HAVE_LZIP_DECODER >+ > /* Define to 1 if mbrtowc and mbstate_t are properly declared. */ > #undef HAVE_MBRTOWC > >-/* Define to 1 if you have the <memory.h> header file. */ >-#undef HAVE_MEMORY_H >- > /* Define to 1 to enable bt2 match finder. */ > #undef HAVE_MF_BT2 > >@@ -187,12 +191,21 @@ > /* Define to 1 to enable hc4 match finder. */ > #undef HAVE_MF_HC4 > >+/* Define to 1 if you have the <minix/config.h> header file. */ >+#undef HAVE_MINIX_CONFIG_H >+ > /* Define to 1 if getopt.h declares extern int optreset. */ > #undef HAVE_OPTRESET > >+/* Define to 1 if you have the `pledge' function. */ >+#undef HAVE_PLEDGE >+ > /* Define to 1 if you have the `posix_fadvise' function. */ > #undef HAVE_POSIX_FADVISE > >+/* Define to 1 if `program_invocation_name' is declared in <errno.h>. */ >+#undef HAVE_PROGRAM_INVOCATION_NAME >+ > /* Define to 1 if you have the `pthread_condattr_setclock' function. */ > #undef HAVE_PTHREAD_CONDATTR_SETCLOCK > >@@ -226,6 +239,9 @@ > /* Define to 1 if you have the <stdint.h> header file. */ > #undef HAVE_STDINT_H > >+/* Define to 1 if you have the <stdio.h> header file. */ >+#undef HAVE_STDIO_H >+ > /* Define to 1 if you have the <stdlib.h> header file. */ > #undef HAVE_STDLIB_H > >@@ -250,6 +266,13 @@ > /* Define to 1 if `st_uatime' is a member of `struct stat'. */ > #undef HAVE_STRUCT_STAT_ST_UATIME > >+/* Define to 1 to if GNU/Linux-specific details are unconditionally wanted for >+ symbol versioning. Define to 2 to if these are wanted only if also PIC is >+ defined (allows building both shared and static liblzma at the same time >+ with Libtool if neither --with-pic nor --without-pic is used). This define >+ must be used together with liblzma_linux.map. */ >+#undef HAVE_SYMBOL_VERSIONS_LINUX >+ > /* Define to 1 if you have the <sys/byteorder.h> header file. */ > #undef HAVE_SYS_BYTEORDER_H > >@@ -277,6 +300,10 @@ > /* Define to 1 if you have the <unistd.h> header file. */ > #undef HAVE_UNISTD_H > >+/* Define to 1 if _mm_set_epi64x and _mm_clmulepi64_si128 are usable. See >+ configure.ac for details. */ >+#undef HAVE_USABLE_CLMUL >+ > /* Define to 1 if you have the `utime' function. */ > #undef HAVE_UTIME > >@@ -287,6 +314,9 @@ > declarations. */ > #undef HAVE_VISIBILITY > >+/* Define to 1 if you have the <wchar.h> header file. */ >+#undef HAVE_WCHAR_H >+ > /* Define to 1 if you have the `wcwidth' function. */ > #undef HAVE_WCWIDTH > >@@ -352,7 +382,9 @@ > /* The size of `size_t', as computed by sizeof. */ > #undef SIZEOF_SIZE_T > >-/* Define to 1 if you have the ANSI C header files. */ >+/* Define to 1 if all of the C90 standard headers exist (not just the ones >+ required in a freestanding environment). This macro is provided for >+ backward compatibility; new code need not use it. */ > #undef STDC_HEADERS > > /* Define to 1 if the number of available CPU cores can be detected with >@@ -375,8 +407,8 @@ > sysctl(). */ > #undef TUKLIB_CPUCORES_SYSCTL > >-/* Define to 1 if the system supports fast unaligned access to 16-bit and >- 32-bit integers. */ >+/* Define to 1 if the system supports fast unaligned access to 16-bit, 32-bit, >+ and 64-bit integers. */ > #undef TUKLIB_FAST_UNALIGNED_ACCESS > > /* Define to 1 if the amount of physical memory can be detected with >@@ -416,21 +448,87 @@ > #ifndef _ALL_SOURCE > # undef _ALL_SOURCE > #endif >+/* Enable general extensions on macOS. */ >+#ifndef _DARWIN_C_SOURCE >+# undef _DARWIN_C_SOURCE >+#endif >+/* Enable general extensions on Solaris. */ >+#ifndef __EXTENSIONS__ >+# undef __EXTENSIONS__ >+#endif > /* Enable GNU extensions on systems that have them. */ > #ifndef _GNU_SOURCE > # undef _GNU_SOURCE > #endif >-/* Enable threading extensions on Solaris. */ >+/* Enable X/Open compliant socket functions that do not require linking >+ with -lxnet on HP-UX 11.11. */ >+#ifndef _HPUX_ALT_XOPEN_SOCKET_API >+# undef _HPUX_ALT_XOPEN_SOCKET_API >+#endif >+/* Identify the host operating system as Minix. >+ This macro does not affect the system headers' behavior. >+ A future release of Autoconf may stop defining this macro. */ >+#ifndef _MINIX >+# undef _MINIX >+#endif >+/* Enable general extensions on NetBSD. >+ Enable NetBSD compatibility extensions on Minix. */ >+#ifndef _NETBSD_SOURCE >+# undef _NETBSD_SOURCE >+#endif >+/* Enable OpenBSD compatibility extensions on NetBSD. >+ Oddly enough, this does nothing on OpenBSD. */ >+#ifndef _OPENBSD_SOURCE >+# undef _OPENBSD_SOURCE >+#endif >+/* Define to 1 if needed for POSIX-compatible behavior. */ >+#ifndef _POSIX_SOURCE >+# undef _POSIX_SOURCE >+#endif >+/* Define to 2 if needed for POSIX-compatible behavior. */ >+#ifndef _POSIX_1_SOURCE >+# undef _POSIX_1_SOURCE >+#endif >+/* Enable POSIX-compatible threading on Solaris. */ > #ifndef _POSIX_PTHREAD_SEMANTICS > # undef _POSIX_PTHREAD_SEMANTICS > #endif >+/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ >+#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ >+# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ >+#endif >+/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ >+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ >+# undef __STDC_WANT_IEC_60559_BFP_EXT__ >+#endif >+/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ >+#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ >+# undef __STDC_WANT_IEC_60559_DFP_EXT__ >+#endif >+/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ >+#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ >+# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ >+#endif >+/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ >+#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ >+# undef __STDC_WANT_IEC_60559_TYPES_EXT__ >+#endif >+/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ >+#ifndef __STDC_WANT_LIB_EXT2__ >+# undef __STDC_WANT_LIB_EXT2__ >+#endif >+/* Enable extensions specified by ISO/IEC 24747:2009. */ >+#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ >+# undef __STDC_WANT_MATH_SPEC_FUNCS__ >+#endif > /* Enable extensions on HP NonStop. */ > #ifndef _TANDEM_SOURCE > # undef _TANDEM_SOURCE > #endif >-/* Enable general extensions on Solaris. */ >-#ifndef __EXTENSIONS__ >-# undef __EXTENSIONS__ >+/* Enable X/Open extensions. Define to 500 only if necessary >+ to make mbstate_t available. */ >+#ifndef _XOPEN_SOURCE >+# undef _XOPEN_SOURCE > #endif > > >@@ -449,26 +547,11 @@ > # endif > #endif > >-/* Enable large inode numbers on Mac OS X 10.5. */ >-#ifndef _DARWIN_USE_64_BIT_INODE >-# define _DARWIN_USE_64_BIT_INODE 1 >-#endif >- > /* Number of bits in a file offset, on hosts where this is settable. */ > #undef _FILE_OFFSET_BITS > > /* Define for large files, on AIX-style hosts. */ > #undef _LARGE_FILES >- >-/* Define to 1 if on MINIX. */ >-#undef _MINIX >- >-/* Define to 2 if the system does not provide POSIX.1 features except with >- this defined. */ >-#undef _POSIX_1_SOURCE >- >-/* Define to 1 if you need to in order for `stat' and other things to work. */ >-#undef _POSIX_SOURCE > > /* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>, > <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the >diff -ur xz-5.2.5/configure xz-5.4.3/configure >--- xz-5.2.5/configure 2020-03-17 17:29:33 >+++ xz-5.4.3/configure 2023-05-04 17:31:29 >@@ -1,11 +1,12 @@ > #! /bin/sh > # Guess values for system-dependent variables and create Makefiles. >-# Generated by GNU Autoconf 2.69 for XZ Utils 5.2.5. >+# Generated by GNU Autoconf 2.71 for XZ Utils 5.4.3. > # >-# Report bugs to <lasse.collin@tukaani.org>. >+# Report bugs to <xz@tukaani.org>. > # > # >-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. >+# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, >+# Inc. > # > # > # This configure script is free software; the Free Software Foundation >@@ -16,14 +17,16 @@ > > # Be more Bourne compatible > DUALCASE=1; export DUALCASE # for MKS sh >-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : >+as_nop=: >+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 >+then : > emulate sh > NULLCMD=: > # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which > # is contrary to our usage. Disable this feature. > alias -g '${1+"$@"}'='"$@"' > setopt NO_GLOB_SUBST >-else >+else $as_nop > case `(set -o) 2>/dev/null` in #( > *posix*) : > set -o posix ;; #( >@@ -33,46 +36,46 @@ > fi > > >+ >+# Reset variables that may have inherited troublesome values from >+# the environment. >+ >+# IFS needs to be set, to space, tab, and newline, in precisely that order. >+# (If _AS_PATH_WALK were called with IFS unset, it would have the >+# side effect of setting IFS to empty, thus disabling word splitting.) >+# Quoting is to prevent editors from complaining about space-tab. > as_nl=' > ' > export as_nl >-# Printing a long string crashes Solaris 7 /usr/bin/printf. >-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' >-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo >-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo >-# Prefer a ksh shell builtin over an external printf program on Solaris, >-# but without wasting forks for bash or zsh. >-if test -z "$BASH_VERSION$ZSH_VERSION" \ >- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then >- as_echo='print -r --' >- as_echo_n='print -rn --' >-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then >- as_echo='printf %s\n' >- as_echo_n='printf %s' >-else >- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then >- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' >- as_echo_n='/usr/ucb/echo -n' >- else >- as_echo_body='eval expr "X$1" : "X\\(.*\\)"' >- as_echo_n_body='eval >- arg=$1; >- case $arg in #( >- *"$as_nl"*) >- expr "X$arg" : "X\\(.*\\)$as_nl"; >- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; >- esac; >- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" >- ' >- export as_echo_n_body >- as_echo_n='sh -c $as_echo_n_body as_echo' >- fi >- export as_echo_body >- as_echo='sh -c $as_echo_body as_echo' >-fi >+IFS=" "" $as_nl" > >+PS1='$ ' >+PS2='> ' >+PS4='+ ' >+ >+# Ensure predictable behavior from utilities with locale-dependent output. >+LC_ALL=C >+export LC_ALL >+LANGUAGE=C >+export LANGUAGE >+ >+# We cannot yet rely on "unset" to work, but we need these variables >+# to be unset--not just set to an empty or harmless value--now, to >+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct >+# also avoids known problems related to "unset" and subshell syntax >+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). >+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH >+do eval test \${$as_var+y} \ >+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : >+done >+ >+# Ensure that fds 0, 1, and 2 are open. >+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi >+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi >+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi >+ > # The user is always right. >-if test "${PATH_SEPARATOR+set}" != set; then >+if ${PATH_SEPARATOR+false} :; then > PATH_SEPARATOR=: > (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { > (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || >@@ -81,13 +84,6 @@ > fi > > >-# IFS >-# We need space, tab and new line, in precisely that order. Quoting is >-# there to prevent editors from complaining about space-tab. >-# (If _AS_PATH_WALK were called with IFS unset, it would disable word >-# splitting by setting IFS to empty value.) >-IFS=" "" $as_nl" >- > # Find who we are. Look in the path if we contain no directory separator. > as_myself= > case $0 in #(( >@@ -96,8 +92,12 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break > done > IFS=$as_save_IFS > >@@ -109,31 +109,11 @@ > as_myself=$0 > fi > if test ! -f "$as_myself"; then >- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 >+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 > exit 1 > fi > >-# Unset variables that we do not need and which cause bugs (e.g. in >-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" >-# suppresses any "Segmentation fault" message there. '((' could >-# trigger a bug in pdksh 5.2.14. >-for as_var in BASH_ENV ENV MAIL MAILPATH >-do eval test x\${$as_var+set} = xset \ >- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : >-done >-PS1='$ ' >-PS2='> ' >-PS4='+ ' > >-# NLS nuisances. >-LC_ALL=C >-export LC_ALL >-LANGUAGE=C >-export LANGUAGE >- >-# CDPATH. >-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH >- > # Use a proper internal environment variable to ensure we don't fall > # into an infinite loop, continuously re-executing ourselves. > if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then >@@ -154,20 +134,22 @@ > exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} > # Admittedly, this is quite paranoid, since all the known shells bail > # out after a failed `exec'. >-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 >-as_fn_exit 255 >+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 >+exit 255 > fi > # We don't want this to propagate to other subprocesses. > { _as_can_reexec=; unset _as_can_reexec;} > if test "x$CONFIG_SHELL" = x; then >- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : >+ as_bourne_compatible="as_nop=: >+if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 >+then : > emulate sh > NULLCMD=: > # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which > # is contrary to our usage. Disable this feature. > alias -g '\${1+\"\$@\"}'='\"\$@\"' > setopt NO_GLOB_SUBST >-else >+else \$as_nop > case \`(set -o) 2>/dev/null\` in #( > *posix*) : > set -o posix ;; #( >@@ -187,12 +169,15 @@ > as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } > as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } > as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } >-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : >+if ( set x; as_fn_ret_success y && test x = \"\$1\" ) >+then : > >-else >+else \$as_nop > exitcode=1; echo positional parameters were not saved. > fi > test x\$exitcode = x0 || exit 1 >+blah=\$(echo \$(echo blah)) >+test x\"\$blah\" = xblah || exit 1 > test -x / || exit 1" > as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO > as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO >@@ -207,30 +192,38 @@ > PATH=/empty FPATH=/empty; export PATH FPATH > test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ > || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" >- if (eval "$as_required") 2>/dev/null; then : >+ if (eval "$as_required") 2>/dev/null >+then : > as_have_required=yes >-else >+else $as_nop > as_have_required=no > fi >- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : >+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null >+then : > >-else >+else $as_nop > as_save_IFS=$IFS; IFS=$PATH_SEPARATOR > as_found=false > for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > as_found=: > case $as_dir in #( > /*) > for as_base in sh bash ksh sh5; do > # Try only shells that exist, to save several forks. >- as_shell=$as_dir/$as_base >+ as_shell=$as_dir$as_base > if { test -f "$as_shell" || test -f "$as_shell.exe"; } && >- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : >+ as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null >+then : > CONFIG_SHELL=$as_shell as_have_required=yes >- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : >+ if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null >+then : > break 2 > fi > fi >@@ -238,14 +231,21 @@ > esac > as_found=false > done >-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && >- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : >- CONFIG_SHELL=$SHELL as_have_required=yes >-fi; } > IFS=$as_save_IFS >+if $as_found >+then : > >+else $as_nop >+ if { test -f "$SHELL" || test -f "$SHELL.exe"; } && >+ as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null >+then : >+ CONFIG_SHELL=$SHELL as_have_required=yes >+fi >+fi > >- if test "x$CONFIG_SHELL" != x; then : >+ >+ if test "x$CONFIG_SHELL" != x >+then : > export CONFIG_SHELL > # We cannot yet assume a decent shell, so we have to provide a > # neutralization value for shells without unset; and this also >@@ -263,22 +263,23 @@ > exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} > # Admittedly, this is quite paranoid, since all the known shells bail > # out after a failed `exec'. >-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 >+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 > exit 255 > fi > >- if test x$as_have_required = xno; then : >- $as_echo "$0: This script requires a shell more modern than all" >- $as_echo "$0: the shells that I found on your system." >- if test x${ZSH_VERSION+set} = xset ; then >- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" >- $as_echo "$0: be upgraded to zsh 4.3.4 or later." >+ if test x$as_have_required = xno >+then : >+ printf "%s\n" "$0: This script requires a shell more modern than all" >+ printf "%s\n" "$0: the shells that I found on your system." >+ if test ${ZSH_VERSION+y} ; then >+ printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" >+ printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." > else >- $as_echo "$0: Please tell bug-autoconf@gnu.org and >-$0: lasse.collin@tukaani.org about your system, including >-$0: any error possibly output before this message. Then >-$0: install a modern shell, or manually run the script >-$0: under such a shell if you do have one." >+ printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and xz@tukaani.org >+$0: about your system, including any error possibly output >+$0: before this message. Then install a modern shell, or >+$0: manually run the script under such a shell if you do >+$0: have one." > fi > exit 1 > fi >@@ -302,6 +303,7 @@ > } > as_unset=as_fn_unset > >+ > # as_fn_set_status STATUS > # ----------------------- > # Set $? to STATUS, without forking. >@@ -319,6 +321,14 @@ > as_fn_set_status $1 > exit $1 > } # as_fn_exit >+# as_fn_nop >+# --------- >+# Do nothing but, unlike ":", preserve the value of $?. >+as_fn_nop () >+{ >+ return $? >+} >+as_nop=as_fn_nop > > # as_fn_mkdir_p > # ------------- >@@ -333,7 +343,7 @@ > as_dirs= > while :; do > case $as_dir in #( >- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( >+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( > *) as_qdir=$as_dir;; > esac > as_dirs="'$as_qdir' $as_dirs" >@@ -342,7 +352,7 @@ > X"$as_dir" : 'X\(//\)[^/]' \| \ > X"$as_dir" : 'X\(//\)$' \| \ > X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || >-$as_echo X"$as_dir" | >+printf "%s\n" X"$as_dir" | > sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ > s//\1/ > q >@@ -381,12 +391,13 @@ > # advantage of any shell optimizations that allow amortized linear growth over > # repeated appends, instead of the typical quadratic growth present in naive > # implementations. >-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : >+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null >+then : > eval 'as_fn_append () > { > eval $1+=\$2 > }' >-else >+else $as_nop > as_fn_append () > { > eval $1=\$$1\$2 >@@ -398,18 +409,27 @@ > # Perform arithmetic evaluation on the ARGs, and store the result in the > # global $as_val. Take advantage of shells that can avoid forks. The arguments > # must be portable across $(()) and expr. >-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : >+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null >+then : > eval 'as_fn_arith () > { > as_val=$(( $* )) > }' >-else >+else $as_nop > as_fn_arith () > { > as_val=`expr "$@" || test $? -eq 1` > } > fi # as_fn_arith > >+# as_fn_nop >+# --------- >+# Do nothing but, unlike ":", preserve the value of $?. >+as_fn_nop () >+{ >+ return $? >+} >+as_nop=as_fn_nop > > # as_fn_error STATUS ERROR [LINENO LOG_FD] > # ---------------------------------------- >@@ -421,9 +441,9 @@ > as_status=$1; test $as_status -eq 0 && as_status=1 > if test "$4"; then > as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 > fi >- $as_echo "$as_me: error: $2" >&2 >+ printf "%s\n" "$as_me: error: $2" >&2 > as_fn_exit $as_status > } # as_fn_error > >@@ -450,7 +470,7 @@ > $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ > X"$0" : 'X\(//\)$' \| \ > X"$0" : 'X\(/\)' \| . 2>/dev/null || >-$as_echo X/"$0" | >+printf "%s\n" X/"$0" | > sed '/^.*\/\([^/][^/]*\)\/*$/{ > s//\1/ > q >@@ -494,7 +514,7 @@ > s/-\n.*// > ' >$as_me.lineno && > chmod +x "$as_me.lineno" || >- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } >+ { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } > > # If we had to re-execute with $CONFIG_SHELL, we're ensured to have > # already done that, so ensure we don't try to do so again and fall >@@ -508,6 +528,10 @@ > exit > } > >+ >+# Determine whether it's possible to make 'echo' print without a newline. >+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed >+# for compatibility with existing Makefiles. > ECHO_C= ECHO_N= ECHO_T= > case `echo -n x` in #((((( > -n*) >@@ -521,6 +545,13 @@ > ECHO_N='-n';; > esac > >+# For backward compatibility with old third-party macros, we provide >+# the shell variables $as_echo and $as_echo_n. New code should use >+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. >+as_echo='printf %s\n' >+as_echo_n='printf %s' >+ >+ > rm -f conf$$ conf$$.exe conf$$.file > if test -d conf$$.dir; then > rm -f conf$$.dir/conf$$.file >@@ -590,48 +621,44 @@ > # Identity of this package. > PACKAGE_NAME='XZ Utils' > PACKAGE_TARNAME='xz' >-PACKAGE_VERSION='5.2.5' >-PACKAGE_STRING='XZ Utils 5.2.5' >-PACKAGE_BUGREPORT='lasse.collin@tukaani.org' >+PACKAGE_VERSION='5.4.3' >+PACKAGE_STRING='XZ Utils 5.4.3' >+PACKAGE_BUGREPORT='xz@tukaani.org' > PACKAGE_URL='https://tukaani.org/xz/' > > ac_unique_file="src/liblzma/common/common.h" > # Factoring default headers for most tests. > ac_includes_default="\ >-#include <stdio.h> >-#ifdef HAVE_SYS_TYPES_H >-# include <sys/types.h> >+#include <stddef.h> >+#ifdef HAVE_STDIO_H >+# include <stdio.h> > #endif >-#ifdef HAVE_SYS_STAT_H >-# include <sys/stat.h> >-#endif >-#ifdef STDC_HEADERS >+#ifdef HAVE_STDLIB_H > # include <stdlib.h> >-# include <stddef.h> >-#else >-# ifdef HAVE_STDLIB_H >-# include <stdlib.h> >-# endif > #endif > #ifdef HAVE_STRING_H >-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H >-# include <memory.h> >-# endif > # include <string.h> > #endif >-#ifdef HAVE_STRINGS_H >-# include <strings.h> >-#endif > #ifdef HAVE_INTTYPES_H > # include <inttypes.h> > #endif > #ifdef HAVE_STDINT_H > # include <stdint.h> > #endif >+#ifdef HAVE_STRINGS_H >+# include <strings.h> >+#endif >+#ifdef HAVE_SYS_TYPES_H >+# include <sys/types.h> >+#endif >+#ifdef HAVE_SYS_STAT_H >+# include <sys/stat.h> >+#endif > #ifdef HAVE_UNISTD_H > # include <unistd.h> > #endif" > >+ac_header_c_list= > gt_needs= > ac_subst_vars='am__EXEEXT_FALSE > am__EXEEXT_TRUE >@@ -664,6 +691,10 @@ > MSGFMT > GETTEXT_MACRO_VERSION > USE_NLS >+COND_SYMVERS_GENERIC_FALSE >+COND_SYMVERS_GENERIC_TRUE >+COND_SYMVERS_LINUX_FALSE >+COND_SYMVERS_LINUX_TRUE > COND_SHARED_FALSE > COND_SHARED_TRUE > RC >@@ -677,6 +708,7 @@ > RANLIB > ac_ct_AR > AR >+FILECMD > NM > ac_ct_DUMPBIN > DUMPBIN >@@ -690,12 +722,13 @@ > COND_THREADS_TRUE > PTHREAD_CFLAGS > PTHREAD_LIBS >+PTHREAD_CXX > PTHREAD_CC > ax_pthread_config >-SED > EGREP > GREP > CPP >+SED > am__fastdepCCAS_FALSE > am__fastdepCCAS_TRUE > CCASDEPMODE >@@ -722,6 +755,9 @@ > AM_DEFAULT_VERBOSITY > AM_DEFAULT_V > AM_V >+CSCOPE >+ETAGS >+CTAGS > am__untar > am__tar > AMTAR >@@ -748,8 +784,6 @@ > PREFERABLY_POSIX_SHELL > POSIX_SHELL > enable_path_for_scripts >-COND_SYMVERS_FALSE >-COND_SYMVERS_TRUE > COND_DOC_FALSE > COND_DOC_TRUE > COND_SCRIPTS_FALSE >@@ -766,10 +800,12 @@ > COND_XZ_TRUE > COND_SMALL_FALSE > COND_SMALL_TRUE >-COND_ASM_X86_64_FALSE >-COND_ASM_X86_64_TRUE > COND_ASM_X86_FALSE > COND_ASM_X86_TRUE >+COND_LZIP_DECODER_FALSE >+COND_LZIP_DECODER_TRUE >+COND_MICROLZMA_FALSE >+COND_MICROLZMA_TRUE > COND_CHECK_SHA256_FALSE > COND_CHECK_SHA256_TRUE > COND_CHECK_CRC64_FALSE >@@ -794,6 +830,12 @@ > COND_ENCODER_SPARC_TRUE > COND_FILTER_SPARC_FALSE > COND_FILTER_SPARC_TRUE >+COND_DECODER_ARM64_FALSE >+COND_DECODER_ARM64_TRUE >+COND_ENCODER_ARM64_FALSE >+COND_ENCODER_ARM64_TRUE >+COND_FILTER_ARM64_FALSE >+COND_FILTER_ARM64_TRUE > COND_DECODER_ARMTHUMB_FALSE > COND_DECODER_ARMTHUMB_TRUE > COND_ENCODER_ARMTHUMB_FALSE >@@ -876,6 +918,7 @@ > docdir > oldincludedir > includedir >+runstatedir > localstatedir > sharedstatedir > sysconfdir >@@ -905,7 +948,10 @@ > enable_match_finders > enable_checks > enable_external_sha256 >+enable_microlzma >+enable_lzip_decoder > enable_assembler >+enable_clmul_crc > enable_small > enable_threads > enable_assume_ram >@@ -916,7 +962,6 @@ > enable_lzma_links > enable_scripts > enable_doc >-enable_symbol_versions > enable_sandbox > enable_path_for_scripts > enable_silent_rules >@@ -929,6 +974,7 @@ > with_gnu_ld > with_sysroot > enable_libtool_lock >+enable_symbol_versions > enable_nls > enable_rpath > with_libiconv_prefix >@@ -988,6 +1034,7 @@ > sysconfdir='${prefix}/etc' > sharedstatedir='${prefix}/com' > localstatedir='${prefix}/var' >+runstatedir='${localstatedir}/run' > includedir='${prefix}/include' > oldincludedir='/usr/include' > docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' >@@ -1017,8 +1064,6 @@ > *) ac_optarg=yes ;; > esac > >- # Accept the important Cygnus configure options, so we can diagnose typos. >- > case $ac_dashdash$ac_option in > --) > ac_dashdash=yes ;; >@@ -1059,9 +1104,9 @@ > ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` > # Reject names that are not valid shell variable names. > expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && >- as_fn_error $? "invalid feature name: $ac_useropt" >+ as_fn_error $? "invalid feature name: \`$ac_useropt'" > ac_useropt_orig=$ac_useropt >- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` >+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` > case $ac_user_opts in > *" > "enable_$ac_useropt" >@@ -1085,9 +1130,9 @@ > ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` > # Reject names that are not valid shell variable names. > expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && >- as_fn_error $? "invalid feature name: $ac_useropt" >+ as_fn_error $? "invalid feature name: \`$ac_useropt'" > ac_useropt_orig=$ac_useropt >- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` >+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` > case $ac_user_opts in > *" > "enable_$ac_useropt" >@@ -1240,6 +1285,15 @@ > | -silent | --silent | --silen | --sile | --sil) > silent=yes ;; > >+ -runstatedir | --runstatedir | --runstatedi | --runstated \ >+ | --runstate | --runstat | --runsta | --runst | --runs \ >+ | --run | --ru | --r) >+ ac_prev=runstatedir ;; >+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ >+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ >+ | --run=* | --ru=* | --r=*) >+ runstatedir=$ac_optarg ;; >+ > -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) > ac_prev=sbindir ;; > -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ >@@ -1289,9 +1343,9 @@ > ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` > # Reject names that are not valid shell variable names. > expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && >- as_fn_error $? "invalid package name: $ac_useropt" >+ as_fn_error $? "invalid package name: \`$ac_useropt'" > ac_useropt_orig=$ac_useropt >- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` >+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` > case $ac_user_opts in > *" > "with_$ac_useropt" >@@ -1305,9 +1359,9 @@ > ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` > # Reject names that are not valid shell variable names. > expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && >- as_fn_error $? "invalid package name: $ac_useropt" >+ as_fn_error $? "invalid package name: \`$ac_useropt'" > ac_useropt_orig=$ac_useropt >- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` >+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` > case $ac_user_opts in > *" > "with_$ac_useropt" >@@ -1351,9 +1405,9 @@ > > *) > # FIXME: should be removed in autoconf 3.0. >- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 >+ printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 > expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && >- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 >+ printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 > : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" > ;; > >@@ -1369,7 +1423,7 @@ > case $enable_option_checking in > no) ;; > fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; >- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; >+ *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; > esac > fi > >@@ -1377,7 +1431,7 @@ > for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ > datadir sysconfdir sharedstatedir localstatedir includedir \ > oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ >- libdir localedir mandir >+ libdir localedir mandir runstatedir > do > eval ac_val=\$$ac_var > # Remove trailing slashes. >@@ -1433,7 +1487,7 @@ > X"$as_myself" : 'X\(//\)[^/]' \| \ > X"$as_myself" : 'X\(//\)$' \| \ > X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || >-$as_echo X"$as_myself" | >+printf "%s\n" X"$as_myself" | > sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ > s//\1/ > q >@@ -1490,7 +1544,7 @@ > # Omit some internal or obsolete options to make the list less imposing. > # This message is too long to be a string in the A/UX 3.1 sh. > cat <<_ACEOF >-\`configure' configures XZ Utils 5.2.5 to adapt to many kinds of systems. >+\`configure' configures XZ Utils 5.4.3 to adapt to many kinds of systems. > > Usage: $0 [OPTION]... [VAR=VALUE]... > >@@ -1530,6 +1584,7 @@ > --sysconfdir=DIR read-only single-machine data [PREFIX/etc] > --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] > --localstatedir=DIR modifiable single-machine data [PREFIX/var] >+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] > --libdir=DIR object code libraries [EPREFIX/lib] > --includedir=DIR C header files [PREFIX/include] > --oldincludedir=DIR C header files for non-gcc [/usr/include] >@@ -1560,7 +1615,7 @@ > > if test -n "$ac_init_help"; then > case $ac_init_help in >- short | recursive ) echo "Configuration of XZ Utils 5.2.5:";; >+ short | recursive ) echo "Configuration of XZ Utils 5.4.3:";; > esac > cat <<\_ACEOF > >@@ -1571,7 +1626,7 @@ > --enable-debug Enable debugging code. > --enable-encoders=LIST Comma-separated list of encoders to build. > Default=all. Available encoders: lzma1 lzma2 delta >- x86 powerpc ia64 arm armthumb sparc >+ x86 powerpc ia64 arm armthumb arm64 sparc > --enable-decoders=LIST Comma-separated list of decoders to build. > Default=all. Available decoders are the same as > available encoders. >@@ -1586,8 +1641,14 @@ > --enable-external-sha256 > Use SHA-256 code from the operating system. See > INSTALL for possible subtle problems. >+ --disable-microlzma Do not build MicroLZMA encoder and decoder. It is >+ needed by specific applications only, for example, >+ erofs-utils. >+ --disable-lzip-decoder Disable decompression support for .lz (lzip) files. > --disable-assembler Do not use assembler optimizations even if such > exist for the architecture. >+ --disable-clmul-crc Do not use carryless multiplication for CRC >+ calculation even if support for it is detected. > --enable-small Make liblzma smaller and a little slower. This is > disabled by default to optimize for speed. > --enable-threads=METHOD Supported METHODS are `yes', `no', `posix', `win95', >@@ -1609,12 +1670,8 @@ > xzmore, and their symlinks > --disable-doc do not install documentation files to docdir (man > pages will still be installed) >- --enable-symbol-versions >- Use symbol versioning for liblzma. Enabled by >- default on GNU/Linux, other GNU-based systems, and >- FreeBSD. >- --enable-sandbox=METHOD Sandboxing METHOD can be `auto', `no', or >- `capsicum'. The default is `auto' which enables >+ --enable-sandbox=METHOD Sandboxing METHOD can be `auto', `no', `capsicum', >+ or `pledge'. The default is `auto' which enables > sandboxing if a supported sandboxing method is > found. > --enable-path-for-scripts=PREFIX >@@ -1633,14 +1690,18 @@ > --enable-fast-install[=PKGS] > optimize for fast installation [default=yes] > --disable-libtool-lock avoid locking (might break parallel builds) >+ --enable-symbol-versions >+ Use symbol versioning for liblzma. Enabled by >+ default on GNU/Linux, other GNU-based systems, and >+ FreeBSD. > --disable-nls do not use Native Language Support > --disable-rpath do not hardcode runtime library paths > --disable-largefile omit support for large files > --enable-unaligned-access > Enable if the system supports *fast* unaligned >- memory access with 16-bit and 32-bit integers. By >- default, this is enabled only on x86, x86_64, and >- big endian PowerPC. >+ memory access with 16-bit, 32-bit, and 64-bit >+ integers. By default, this is enabled only on x86, >+ x86_64, big endian PowerPC, and some ARM systems. > --enable-unsafe-type-punning > This introduces strict aliasing violations and may > result in broken code. However, this might improve >@@ -1684,7 +1745,7 @@ > Use these variables to override the choices made by `configure' or to help > it to find libraries and programs with nonstandard names/locations. > >-Report bugs to <lasse.collin@tukaani.org>. >+Report bugs to <xz@tukaani.org>. > XZ Utils home page: <https://tukaani.org/xz/>. > _ACEOF > ac_status=$? >@@ -1701,9 +1762,9 @@ > case "$ac_dir" in > .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; > *) >- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` >+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` > # A ".." for each directory in $ac_dir_suffix. >- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` >+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` > case $ac_top_builddir_sub in > "") ac_top_builddir_sub=. ac_top_build_prefix= ;; > *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; >@@ -1731,7 +1792,8 @@ > ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix > > cd "$ac_dir" || { ac_status=$?; continue; } >- # Check for guested configure. >+ # Check for configure.gnu first; this name is used for a wrapper for >+ # Metaconfig's "Configure" on case-insensitive file systems. > if test -f "$ac_srcdir/configure.gnu"; then > echo && > $SHELL "$ac_srcdir/configure.gnu" --help=recursive >@@ -1739,7 +1801,7 @@ > echo && > $SHELL "$ac_srcdir/configure" --help=recursive > else >- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 >+ printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 > fi || ac_status=$? > cd "$ac_pwd" || { ac_status=$?; break; } > done >@@ -1748,10 +1810,10 @@ > test -n "$ac_init_help" && exit $ac_status > if $ac_init_version; then > cat <<\_ACEOF >-XZ Utils configure 5.2.5 >-generated by GNU Autoconf 2.69 >+XZ Utils configure 5.4.3 >+generated by GNU Autoconf 2.71 > >-Copyright (C) 2012 Free Software Foundation, Inc. >+Copyright (C) 2021 Free Software Foundation, Inc. > This configure script is free software; the Free Software Foundation > gives unlimited permission to copy, distribute and modify it. > _ACEOF >@@ -1768,14 +1830,14 @@ > ac_fn_c_try_compile () > { > as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >- rm -f conftest.$ac_objext >+ rm -f conftest.$ac_objext conftest.beam > if { { ac_try="$ac_compile" > case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac > eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >-$as_echo "$ac_try_echo"; } >&5 >+printf "%s\n" "$ac_try_echo"; } >&5 > (eval "$ac_compile") 2>conftest.err > ac_status=$? > if test -s conftest.err; then >@@ -1783,14 +1845,15 @@ > cat conftest.er1 >&5 > mv -f conftest.er1 conftest.err > fi >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; } && { > test -z "$ac_c_werror_flag" || > test ! -s conftest.err >- } && test -s conftest.$ac_objext; then : >+ } && test -s conftest.$ac_objext >+then : > ac_retval=0 >-else >- $as_echo "$as_me: failed program was:" >&5 >+else $as_nop >+ printf "%s\n" "$as_me: failed program was:" >&5 > sed 's/^/| /' conftest.$ac_ext >&5 > > ac_retval=1 >@@ -1800,176 +1863,6 @@ > > } # ac_fn_c_try_compile > >-# ac_fn_c_try_cpp LINENO >-# ---------------------- >-# Try to preprocess conftest.$ac_ext, and return whether this succeeded. >-ac_fn_c_try_cpp () >-{ >- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >- if { { ac_try="$ac_cpp conftest.$ac_ext" >-case "(($ac_try" in >- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >- *) ac_try_echo=$ac_try;; >-esac >-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >-$as_echo "$ac_try_echo"; } >&5 >- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err >- ac_status=$? >- if test -s conftest.err; then >- grep -v '^ *+' conftest.err >conftest.er1 >- cat conftest.er1 >&5 >- mv -f conftest.er1 conftest.err >- fi >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >- test $ac_status = 0; } > conftest.i && { >- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || >- test ! -s conftest.err >- }; then : >- ac_retval=0 >-else >- $as_echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_retval=1 >-fi >- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno >- as_fn_set_status $ac_retval >- >-} # ac_fn_c_try_cpp >- >-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES >-# ------------------------------------------------------- >-# Tests whether HEADER exists, giving a warning if it cannot be compiled using >-# the include files in INCLUDES and setting the cache variable VAR >-# accordingly. >-ac_fn_c_check_header_mongrel () >-{ >- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >- if eval \${$3+:} false; then : >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 >-$as_echo_n "checking for $2... " >&6; } >-if eval \${$3+:} false; then : >- $as_echo_n "(cached) " >&6 >-fi >-eval ac_res=\$$3 >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >-$as_echo "$ac_res" >&6; } >-else >- # Is the header compilable? >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 >-$as_echo_n "checking $2 usability... " >&6; } >-cat confdefs.h - <<_ACEOF >conftest.$ac_ext >-/* end confdefs.h. */ >-$4 >-#include <$2> >-_ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >- ac_header_compiler=yes >-else >- ac_header_compiler=no >-fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 >-$as_echo "$ac_header_compiler" >&6; } >- >-# Is the header present? >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 >-$as_echo_n "checking $2 presence... " >&6; } >-cat confdefs.h - <<_ACEOF >conftest.$ac_ext >-/* end confdefs.h. */ >-#include <$2> >-_ACEOF >-if ac_fn_c_try_cpp "$LINENO"; then : >- ac_header_preproc=yes >-else >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.i conftest.$ac_ext >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 >-$as_echo "$ac_header_preproc" >&6; } >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( >- yes:no: ) >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 >-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 >-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} >- ;; >- no:yes:* ) >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 >-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 >-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 >-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 >-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 >-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} >-( $as_echo "## --------------------------------------- ## >-## Report this to lasse.collin@tukaani.org ## >-## --------------------------------------- ##" >- ) | sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 >-$as_echo_n "checking for $2... " >&6; } >-if eval \${$3+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >- eval "$3=\$ac_header_compiler" >-fi >-eval ac_res=\$$3 >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >-$as_echo "$ac_res" >&6; } >-fi >- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno >- >-} # ac_fn_c_check_header_mongrel >- >-# ac_fn_c_try_run LINENO >-# ---------------------- >-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes >-# that executables *can* be run. >-ac_fn_c_try_run () >-{ >- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >- if { { ac_try="$ac_link" >-case "(($ac_try" in >- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >- *) ac_try_echo=$ac_try;; >-esac >-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >-$as_echo "$ac_try_echo"; } >&5 >- (eval "$ac_link") 2>&5 >- ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' >- { { case "(($ac_try" in >- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >- *) ac_try_echo=$ac_try;; >-esac >-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >-$as_echo "$ac_try_echo"; } >&5 >- (eval "$ac_try") 2>&5 >- ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >- test $ac_status = 0; }; }; then : >- ac_retval=0 >-else >- $as_echo "$as_me: program exited with status $ac_status" >&5 >- $as_echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_retval=$ac_status >-fi >- rm -rf conftest.dSYM conftest_ipa8_conftest.oo >- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno >- as_fn_set_status $ac_retval >- >-} # ac_fn_c_try_run >- > # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES > # ------------------------------------------------------- > # Tests whether HEADER exists and can be compiled using the include files in >@@ -1977,26 +1870,28 @@ > ac_fn_c_check_header_compile () > { > as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 >-$as_echo_n "checking for $2... " >&6; } >-if eval \${$3+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 >+printf %s "checking for $2... " >&6; } >+if eval test \${$3+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > $4 > #include <$2> > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > eval "$3=yes" >-else >+else $as_nop > eval "$3=no" > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi > eval ac_res=\$$3 >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >-$as_echo "$ac_res" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >+printf "%s\n" "$ac_res" >&6; } > eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno > > } # ac_fn_c_check_header_compile >@@ -2007,14 +1902,14 @@ > ac_fn_c_try_link () > { > as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >- rm -f conftest.$ac_objext conftest$ac_exeext >+ rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext > if { { ac_try="$ac_link" > case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac > eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >-$as_echo "$ac_try_echo"; } >&5 >+printf "%s\n" "$ac_try_echo"; } >&5 > (eval "$ac_link") 2>conftest.err > ac_status=$? > if test -s conftest.err; then >@@ -2022,17 +1917,18 @@ > cat conftest.er1 >&5 > mv -f conftest.er1 conftest.err > fi >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; } && { > test -z "$ac_c_werror_flag" || > test ! -s conftest.err > } && test -s conftest$ac_exeext && { > test "$cross_compiling" = yes || > test -x conftest$ac_exeext >- }; then : >+ } >+then : > ac_retval=0 >-else >- $as_echo "$as_me: failed program was:" >&5 >+else $as_nop >+ printf "%s\n" "$as_me: failed program was:" >&5 > sed 's/^/| /' conftest.$ac_ext >&5 > > ac_retval=1 >@@ -2047,17 +1943,56 @@ > > } # ac_fn_c_try_link > >+# ac_fn_c_try_cpp LINENO >+# ---------------------- >+# Try to preprocess conftest.$ac_ext, and return whether this succeeded. >+ac_fn_c_try_cpp () >+{ >+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >+ if { { ac_try="$ac_cpp conftest.$ac_ext" >+case "(($ac_try" in >+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >+ *) ac_try_echo=$ac_try;; >+esac >+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >+printf "%s\n" "$ac_try_echo"; } >&5 >+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err >+ ac_status=$? >+ if test -s conftest.err; then >+ grep -v '^ *+' conftest.err >conftest.er1 >+ cat conftest.er1 >&5 >+ mv -f conftest.er1 conftest.err >+ fi >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ test $ac_status = 0; } > conftest.i && { >+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || >+ test ! -s conftest.err >+ } >+then : >+ ac_retval=0 >+else $as_nop >+ printf "%s\n" "$as_me: failed program was:" >&5 >+sed 's/^/| /' conftest.$ac_ext >&5 >+ >+ ac_retval=1 >+fi >+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno >+ as_fn_set_status $ac_retval >+ >+} # ac_fn_c_try_cpp >+ > # ac_fn_c_check_func LINENO FUNC VAR > # ---------------------------------- > # Tests whether FUNC exists, setting the cache variable VAR accordingly > ac_fn_c_check_func () > { > as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 >-$as_echo_n "checking for $2... " >&6; } >-if eval \${$3+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 >+printf %s "checking for $2... " >&6; } >+if eval test \${$3+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > /* Define $2 to an innocuous variant, in case <limits.h> declares $2. >@@ -2065,16 +2000,9 @@ > #define $2 innocuous_$2 > > /* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $2 (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >+ which can conflict with char $2 (); below. */ > >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >+#include <limits.h> > #undef $2 > > /* Override any GCC internal prototype to avoid an error. >@@ -2092,47 +2020,51 @@ > #endif > > int >-main () >+main (void) > { > return $2 (); > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > eval "$3=yes" >-else >+else $as_nop > eval "$3=no" > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > fi > eval ac_res=\$$3 >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >-$as_echo "$ac_res" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >+printf "%s\n" "$ac_res" >&6; } > eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno > > } # ac_fn_c_check_func > >-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES >-# --------------------------------------------- >+# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR >+# ------------------------------------------------------------------ > # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR >-# accordingly. >-ac_fn_c_check_decl () >+# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. >+ac_fn_check_decl () > { > as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack > as_decl_name=`echo $2|sed 's/ *(.*//'` >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 >+printf %s "checking whether $as_decl_name is declared... " >&6; } >+if eval test \${$3+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 >-$as_echo_n "checking whether $as_decl_name is declared... " >&6; } >-if eval \${$3+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ eval ac_save_FLAGS=\$$6 >+ as_fn_append $6 " $5" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > $4 > int >-main () >+main (void) > { > #ifndef $as_decl_name > #ifdef __cplusplus >@@ -2146,20 +2078,66 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > eval "$3=yes" >-else >+else $as_nop > eval "$3=no" > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext >+ eval $6=\$ac_save_FLAGS >+ > fi > eval ac_res=\$$3 >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >-$as_echo "$ac_res" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >+printf "%s\n" "$ac_res" >&6; } > eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno > >-} # ac_fn_c_check_decl >+} # ac_fn_check_decl > >+# ac_fn_c_try_run LINENO >+# ---------------------- >+# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that >+# executables *can* be run. >+ac_fn_c_try_run () >+{ >+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >+ if { { ac_try="$ac_link" >+case "(($ac_try" in >+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >+ *) ac_try_echo=$ac_try;; >+esac >+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >+printf "%s\n" "$ac_try_echo"; } >&5 >+ (eval "$ac_link") 2>&5 >+ ac_status=$? >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' >+ { { case "(($ac_try" in >+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >+ *) ac_try_echo=$ac_try;; >+esac >+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >+printf "%s\n" "$ac_try_echo"; } >&5 >+ (eval "$ac_try") 2>&5 >+ ac_status=$? >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ test $ac_status = 0; }; } >+then : >+ ac_retval=0 >+else $as_nop >+ printf "%s\n" "$as_me: program exited with status $ac_status" >&5 >+ printf "%s\n" "$as_me: failed program was:" >&5 >+sed 's/^/| /' conftest.$ac_ext >&5 >+ >+ ac_retval=$ac_status >+fi >+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo >+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno >+ as_fn_set_status $ac_retval >+ >+} # ac_fn_c_try_run >+ > # ac_fn_c_check_type LINENO TYPE VAR INCLUDES > # ------------------------------------------- > # Tests whether TYPE exists after having included INCLUDES, setting cache >@@ -2167,17 +2145,18 @@ > ac_fn_c_check_type () > { > as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 >-$as_echo_n "checking for $2... " >&6; } >-if eval \${$3+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 >+printf %s "checking for $2... " >&6; } >+if eval test \${$3+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > eval "$3=no" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > $4 > int >-main () >+main (void) > { > if (sizeof ($2)) > return 0; >@@ -2185,12 +2164,13 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > $4 > int >-main () >+main (void) > { > if (sizeof (($2))) > return 0; >@@ -2198,18 +2178,19 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > >-else >+else $as_nop > eval "$3=yes" > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi > eval ac_res=\$$3 >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >-$as_echo "$ac_res" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >+printf "%s\n" "$ac_res" >&6; } > eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno > > } # ac_fn_c_check_type >@@ -2221,11 +2202,12 @@ > ac_fn_c_find_uintX_t () > { > as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 >-$as_echo_n "checking for uint$2_t... " >&6; } >-if eval \${$3+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 >+printf %s "checking for uint$2_t... " >&6; } >+if eval test \${$3+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > eval "$3=no" > # Order is important - never check a type that is potentially smaller > # than half of the expected target width. >@@ -2235,7 +2217,7 @@ > /* end confdefs.h. */ > $ac_includes_default > int >-main () >+main (void) > { > static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; > test_array [0] = 0; >@@ -2245,7 +2227,8 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > case $ac_type in #( > uint$2_t) : > eval "$3=yes" ;; #( >@@ -2253,17 +2236,18 @@ > eval "$3=\$ac_type" ;; > esac > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >- if eval test \"x\$"$3"\" = x"no"; then : >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext >+ if eval test \"x\$"$3"\" = x"no" >+then : > >-else >+else $as_nop > break > fi > done > fi > eval ac_res=\$$3 >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >-$as_echo "$ac_res" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >+printf "%s\n" "$ac_res" >&6; } > eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno > > } # ac_fn_c_find_uintX_t >@@ -2275,11 +2259,12 @@ > ac_fn_c_find_intX_t () > { > as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 >-$as_echo_n "checking for int$2_t... " >&6; } >-if eval \${$3+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 >+printf %s "checking for int$2_t... " >&6; } >+if eval test \${$3+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > eval "$3=no" > # Order is important - never check a type that is potentially smaller > # than half of the expected target width. >@@ -2290,7 +2275,7 @@ > $ac_includes_default > enum { N = $2 / 2 - 1 }; > int >-main () >+main (void) > { > static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; > test_array [0] = 0; >@@ -2300,13 +2285,14 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > $ac_includes_default > enum { N = $2 / 2 - 1 }; > int >-main () >+main (void) > { > static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) > < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; >@@ -2317,9 +2303,10 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > >-else >+else $as_nop > case $ac_type in #( > int$2_t) : > eval "$3=yes" ;; #( >@@ -2327,19 +2314,20 @@ > eval "$3=\$ac_type" ;; > esac > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >- if eval test \"x\$"$3"\" = x"no"; then : >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext >+ if eval test \"x\$"$3"\" = x"no" >+then : > >-else >+else $as_nop > break > fi > done > fi > eval ac_res=\$$3 >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >-$as_echo "$ac_res" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >+printf "%s\n" "$ac_res" >&6; } > eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno > > } # ac_fn_c_find_intX_t >@@ -2358,7 +2346,7 @@ > /* end confdefs.h. */ > $4 > int >-main () >+main (void) > { > static int test_array [1 - 2 * !(($2) >= 0)]; > test_array [0] = 0; >@@ -2368,14 +2356,15 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_lo=0 ac_mid=0 > while :; do > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > $4 > int >-main () >+main (void) > { > static int test_array [1 - 2 * !(($2) <= $ac_mid)]; > test_array [0] = 0; >@@ -2385,9 +2374,10 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_hi=$ac_mid; break >-else >+else $as_nop > as_fn_arith $ac_mid + 1 && ac_lo=$as_val > if test $ac_lo -le $ac_mid; then > ac_lo= ac_hi= >@@ -2395,14 +2385,14 @@ > fi > as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > done >-else >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > $4 > int >-main () >+main (void) > { > static int test_array [1 - 2 * !(($2) < 0)]; > test_array [0] = 0; >@@ -2412,14 +2402,15 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_hi=-1 ac_mid=-1 > while :; do > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > $4 > int >-main () >+main (void) > { > static int test_array [1 - 2 * !(($2) >= $ac_mid)]; > test_array [0] = 0; >@@ -2429,9 +2420,10 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_lo=$ac_mid; break >-else >+else $as_nop > as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val > if test $ac_mid -le $ac_hi; then > ac_lo= ac_hi= >@@ -2439,14 +2431,14 @@ > fi > as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > done >-else >+else $as_nop > ac_lo= ac_hi= > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > # Binary search between lo and hi bounds. > while test "x$ac_lo" != "x$ac_hi"; do > as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val >@@ -2454,7 +2446,7 @@ > /* end confdefs.h. */ > $4 > int >-main () >+main (void) > { > static int test_array [1 - 2 * !(($2) <= $ac_mid)]; > test_array [0] = 0; >@@ -2464,12 +2456,13 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_hi=$ac_mid >-else >+else $as_nop > as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > done > case $ac_lo in #(( > ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; >@@ -2479,12 +2472,12 @@ > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > $4 >-static long int longval () { return $2; } >-static unsigned long int ulongval () { return $2; } >+static long int longval (void) { return $2; } >+static unsigned long int ulongval (void) { return $2; } > #include <stdio.h> > #include <stdlib.h> > int >-main () >+main (void) > { > > FILE *f = fopen ("conftest.val", "w"); >@@ -2512,9 +2505,10 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_run "$LINENO"; then : >+if ac_fn_c_try_run "$LINENO" >+then : > echo >>conftest.val; read $3 <conftest.val; ac_retval=0 >-else >+else $as_nop > ac_retval=1 > fi > rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ >@@ -2534,16 +2528,17 @@ > ac_fn_c_check_member () > { > as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 >-$as_echo_n "checking for $2.$3... " >&6; } >-if eval \${$4+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 >+printf %s "checking for $2.$3... " >&6; } >+if eval test \${$4+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > $5 > int >-main () >+main (void) > { > static $2 ac_aggr; > if (ac_aggr.$3) >@@ -2552,14 +2547,15 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > eval "$4=yes" >-else >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > $5 > int >-main () >+main (void) > { > static $2 ac_aggr; > if (sizeof ac_aggr.$3) >@@ -2568,29 +2564,50 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > eval "$4=yes" >-else >+else $as_nop > eval "$4=no" > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi > eval ac_res=\$$4 >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >-$as_echo "$ac_res" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >+printf "%s\n" "$ac_res" >&6; } > eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno > > } # ac_fn_c_check_member >+ac_configure_args_raw= >+for ac_arg >+do >+ case $ac_arg in >+ *\'*) >+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; >+ esac >+ as_fn_append ac_configure_args_raw " '$ac_arg'" >+done >+ >+case $ac_configure_args_raw in >+ *$as_nl*) >+ ac_safe_unquote= ;; >+ *) >+ ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. >+ ac_unsafe_a="$ac_unsafe_z#~" >+ ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" >+ ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; >+esac >+ > cat >config.log <<_ACEOF > This file contains any messages produced by compilers while > running configure, to aid debugging if configure makes a mistake. > >-It was created by XZ Utils $as_me 5.2.5, which was >-generated by GNU Autoconf 2.69. Invocation command line was >+It was created by XZ Utils $as_me 5.4.3, which was >+generated by GNU Autoconf 2.71. Invocation command line was > >- $ $0 $@ >+ $ $0$ac_configure_args_raw > > _ACEOF > exec 5>>config.log >@@ -2623,8 +2640,12 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- $as_echo "PATH: $as_dir" >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ printf "%s\n" "PATH: $as_dir" > done > IFS=$as_save_IFS > >@@ -2659,7 +2680,7 @@ > | -silent | --silent | --silen | --sile | --sil) > continue ;; > *\'*) >- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; >+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; > esac > case $ac_pass in > 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; >@@ -2694,11 +2715,13 @@ > # WARNING: Use '\'' to represent an apostrophe within the trap. > # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. > trap 'exit_status=$? >+ # Sanitize IFS. >+ IFS=" "" $as_nl" > # Save into config.log some information that might help in debugging. > { > echo > >- $as_echo "## ---------------- ## >+ printf "%s\n" "## ---------------- ## > ## Cache variables. ## > ## ---------------- ##" > echo >@@ -2709,8 +2732,8 @@ > case $ac_val in #( > *${as_nl}*) > case $ac_var in #( >- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 >-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; >+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 >+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; > esac > case $ac_var in #( > _ | IFS | as_nl) ;; #( >@@ -2734,7 +2757,7 @@ > ) > echo > >- $as_echo "## ----------------- ## >+ printf "%s\n" "## ----------------- ## > ## Output variables. ## > ## ----------------- ##" > echo >@@ -2742,14 +2765,14 @@ > do > eval ac_val=\$$ac_var > case $ac_val in >- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; >+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; > esac >- $as_echo "$ac_var='\''$ac_val'\''" >+ printf "%s\n" "$ac_var='\''$ac_val'\''" > done | sort > echo > > if test -n "$ac_subst_files"; then >- $as_echo "## ------------------- ## >+ printf "%s\n" "## ------------------- ## > ## File substitutions. ## > ## ------------------- ##" > echo >@@ -2757,15 +2780,15 @@ > do > eval ac_val=\$$ac_var > case $ac_val in >- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; >+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; > esac >- $as_echo "$ac_var='\''$ac_val'\''" >+ printf "%s\n" "$ac_var='\''$ac_val'\''" > done | sort > echo > fi > > if test -s confdefs.h; then >- $as_echo "## ----------- ## >+ printf "%s\n" "## ----------- ## > ## confdefs.h. ## > ## ----------- ##" > echo >@@ -2773,8 +2796,8 @@ > echo > fi > test "$ac_signal" != 0 && >- $as_echo "$as_me: caught signal $ac_signal" >- $as_echo "$as_me: exit $exit_status" >+ printf "%s\n" "$as_me: caught signal $ac_signal" >+ printf "%s\n" "$as_me: exit $exit_status" > } >&5 > rm -f core *.core core.conftest.* && > rm -f -r conftest* confdefs* conf$$* $ac_clean_files && >@@ -2788,63 +2811,48 @@ > # confdefs.h avoids OS command line length limits that DEFS can exceed. > rm -f -r conftest* confdefs.h > >-$as_echo "/* confdefs.h */" > confdefs.h >+printf "%s\n" "/* confdefs.h */" > confdefs.h > > # Predefined preprocessor variables. > >-cat >>confdefs.h <<_ACEOF >-#define PACKAGE_NAME "$PACKAGE_NAME" >-_ACEOF >+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h > >-cat >>confdefs.h <<_ACEOF >-#define PACKAGE_TARNAME "$PACKAGE_TARNAME" >-_ACEOF >+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h > >-cat >>confdefs.h <<_ACEOF >-#define PACKAGE_VERSION "$PACKAGE_VERSION" >-_ACEOF >+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h > >-cat >>confdefs.h <<_ACEOF >-#define PACKAGE_STRING "$PACKAGE_STRING" >-_ACEOF >+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h > >-cat >>confdefs.h <<_ACEOF >-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" >-_ACEOF >+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h > >-cat >>confdefs.h <<_ACEOF >-#define PACKAGE_URL "$PACKAGE_URL" >-_ACEOF >+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h > > > # Let the site file select an alternate cache file if it wants to. > # Prefer an explicitly selected file to automatically selected ones. >-ac_site_file1=NONE >-ac_site_file2=NONE > if test -n "$CONFIG_SITE"; then >- # We do not want a PATH search for config.site. >- case $CONFIG_SITE in #(( >- -*) ac_site_file1=./$CONFIG_SITE;; >- */*) ac_site_file1=$CONFIG_SITE;; >- *) ac_site_file1=./$CONFIG_SITE;; >- esac >+ ac_site_files="$CONFIG_SITE" > elif test "x$prefix" != xNONE; then >- ac_site_file1=$prefix/share/config.site >- ac_site_file2=$prefix/etc/config.site >+ ac_site_files="$prefix/share/config.site $prefix/etc/config.site" > else >- ac_site_file1=$ac_default_prefix/share/config.site >- ac_site_file2=$ac_default_prefix/etc/config.site >+ ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" > fi >-for ac_site_file in "$ac_site_file1" "$ac_site_file2" >+ >+for ac_site_file in $ac_site_files > do >- test "x$ac_site_file" = xNONE && continue >- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 >-$as_echo "$as_me: loading site script $ac_site_file" >&6;} >+ case $ac_site_file in #( >+ */*) : >+ ;; #( >+ *) : >+ ac_site_file=./$ac_site_file ;; >+esac >+ if test -f "$ac_site_file" && test -r "$ac_site_file"; then >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 >+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} > sed 's/^/| /' "$ac_site_file" >&5 > . "$ac_site_file" \ >- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} > as_fn_error $? "failed to load site script $ac_site_file > See \`config.log' for more details" "$LINENO" 5; } > fi >@@ -2854,20 +2862,437 @@ > # Some versions of bash will fail to source /dev/null (special files > # actually), so we avoid doing that. DJGPP emulates it as a regular file. > if test /dev/null != "$cache_file" && test -f "$cache_file"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 >-$as_echo "$as_me: loading cache $cache_file" >&6;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 >+printf "%s\n" "$as_me: loading cache $cache_file" >&6;} > case $cache_file in > [\\/]* | ?:[\\/]* ) . "$cache_file";; > *) . "./$cache_file";; > esac > fi > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 >-$as_echo "$as_me: creating cache $cache_file" >&6;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 >+printf "%s\n" "$as_me: creating cache $cache_file" >&6;} > >$cache_file > fi > >+# Test code for whether the C compiler supports C89 (global declarations) >+ac_c_conftest_c89_globals=' >+/* Does the compiler advertise C89 conformance? >+ Do not test the value of __STDC__, because some compilers set it to 0 >+ while being otherwise adequately conformant. */ >+#if !defined __STDC__ >+# error "Compiler does not advertise C89 conformance" >+#endif >+ >+#include <stddef.h> >+#include <stdarg.h> >+struct stat; >+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ >+struct buf { int x; }; >+struct buf * (*rcsopen) (struct buf *, struct stat *, int); >+static char *e (p, i) >+ char **p; >+ int i; >+{ >+ return p[i]; >+} >+static char *f (char * (*g) (char **, int), char **p, ...) >+{ >+ char *s; >+ va_list v; >+ va_start (v,p); >+ s = g (p, va_arg (v,int)); >+ va_end (v); >+ return s; >+} >+ >+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has >+ function prototypes and stuff, but not \xHH hex character constants. >+ These do not provoke an error unfortunately, instead are silently treated >+ as an "x". The following induces an error, until -std is added to get >+ proper ANSI mode. Curiously \x00 != x always comes out true, for an >+ array size at least. It is necessary to write \x00 == 0 to get something >+ that is true only with -std. */ >+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; >+ >+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters >+ inside strings and character constants. */ >+#define FOO(x) '\''x'\'' >+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; >+ >+int test (int i, double x); >+struct s1 {int (*f) (int a);}; >+struct s2 {int (*f) (double a);}; >+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), >+ int, int);' >+ >+# Test code for whether the C compiler supports C89 (body of main). >+ac_c_conftest_c89_main=' >+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); >+' >+ >+# Test code for whether the C compiler supports C99 (global declarations) >+ac_c_conftest_c99_globals=' >+// Does the compiler advertise C99 conformance? >+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L >+# error "Compiler does not advertise C99 conformance" >+#endif >+ >+#include <stdbool.h> >+extern int puts (const char *); >+extern int printf (const char *, ...); >+extern int dprintf (int, const char *, ...); >+extern void *malloc (size_t); >+ >+// Check varargs macros. These examples are taken from C99 6.10.3.5. >+// dprintf is used instead of fprintf to avoid needing to declare >+// FILE and stderr. >+#define debug(...) dprintf (2, __VA_ARGS__) >+#define showlist(...) puts (#__VA_ARGS__) >+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) >+static void >+test_varargs_macros (void) >+{ >+ int x = 1234; >+ int y = 5678; >+ debug ("Flag"); >+ debug ("X = %d\n", x); >+ showlist (The first, second, and third items.); >+ report (x>y, "x is %d but y is %d", x, y); >+} >+ >+// Check long long types. >+#define BIG64 18446744073709551615ull >+#define BIG32 4294967295ul >+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) >+#if !BIG_OK >+ #error "your preprocessor is broken" >+#endif >+#if BIG_OK >+#else >+ #error "your preprocessor is broken" >+#endif >+static long long int bignum = -9223372036854775807LL; >+static unsigned long long int ubignum = BIG64; >+ >+struct incomplete_array >+{ >+ int datasize; >+ double data[]; >+}; >+ >+struct named_init { >+ int number; >+ const wchar_t *name; >+ double average; >+}; >+ >+typedef const char *ccp; >+ >+static inline int >+test_restrict (ccp restrict text) >+{ >+ // See if C++-style comments work. >+ // Iterate through items via the restricted pointer. >+ // Also check for declarations in for loops. >+ for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) >+ continue; >+ return 0; >+} >+ >+// Check varargs and va_copy. >+static bool >+test_varargs (const char *format, ...) >+{ >+ va_list args; >+ va_start (args, format); >+ va_list args_copy; >+ va_copy (args_copy, args); >+ >+ const char *str = ""; >+ int number = 0; >+ float fnumber = 0; >+ >+ while (*format) >+ { >+ switch (*format++) >+ { >+ case '\''s'\'': // string >+ str = va_arg (args_copy, const char *); >+ break; >+ case '\''d'\'': // int >+ number = va_arg (args_copy, int); >+ break; >+ case '\''f'\'': // float >+ fnumber = va_arg (args_copy, double); >+ break; >+ default: >+ break; >+ } >+ } >+ va_end (args_copy); >+ va_end (args); >+ >+ return *str && number && fnumber; >+} >+' >+ >+# Test code for whether the C compiler supports C99 (body of main). >+ac_c_conftest_c99_main=' >+ // Check bool. >+ _Bool success = false; >+ success |= (argc != 0); >+ >+ // Check restrict. >+ if (test_restrict ("String literal") == 0) >+ success = true; >+ char *restrict newvar = "Another string"; >+ >+ // Check varargs. >+ success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); >+ test_varargs_macros (); >+ >+ // Check flexible array members. >+ struct incomplete_array *ia = >+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); >+ ia->datasize = 10; >+ for (int i = 0; i < ia->datasize; ++i) >+ ia->data[i] = i * 1.234; >+ >+ // Check named initializers. >+ struct named_init ni = { >+ .number = 34, >+ .name = L"Test wide string", >+ .average = 543.34343, >+ }; >+ >+ ni.number = 58; >+ >+ int dynamic_array[ni.number]; >+ dynamic_array[0] = argv[0][0]; >+ dynamic_array[ni.number - 1] = 543; >+ >+ // work around unused variable warnings >+ ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' >+ || dynamic_array[ni.number - 1] != 543); >+' >+ >+# Test code for whether the C compiler supports C11 (global declarations) >+ac_c_conftest_c11_globals=' >+// Does the compiler advertise C11 conformance? >+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L >+# error "Compiler does not advertise C11 conformance" >+#endif >+ >+// Check _Alignas. >+char _Alignas (double) aligned_as_double; >+char _Alignas (0) no_special_alignment; >+extern char aligned_as_int; >+char _Alignas (0) _Alignas (int) aligned_as_int; >+ >+// Check _Alignof. >+enum >+{ >+ int_alignment = _Alignof (int), >+ int_array_alignment = _Alignof (int[100]), >+ char_alignment = _Alignof (char) >+}; >+_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); >+ >+// Check _Noreturn. >+int _Noreturn does_not_return (void) { for (;;) continue; } >+ >+// Check _Static_assert. >+struct test_static_assert >+{ >+ int x; >+ _Static_assert (sizeof (int) <= sizeof (long int), >+ "_Static_assert does not work in struct"); >+ long int y; >+}; >+ >+// Check UTF-8 literals. >+#define u8 syntax error! >+char const utf8_literal[] = u8"happens to be ASCII" "another string"; >+ >+// Check duplicate typedefs. >+typedef long *long_ptr; >+typedef long int *long_ptr; >+typedef long_ptr long_ptr; >+ >+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. >+struct anonymous >+{ >+ union { >+ struct { int i; int j; }; >+ struct { int k; long int l; } w; >+ }; >+ int m; >+} v1; >+' >+ >+# Test code for whether the C compiler supports C11 (body of main). >+ac_c_conftest_c11_main=' >+ _Static_assert ((offsetof (struct anonymous, i) >+ == offsetof (struct anonymous, w.k)), >+ "Anonymous union alignment botch"); >+ v1.i = 2; >+ v1.w.k = 5; >+ ok |= v1.i != 5; >+' >+ >+# Test code for whether the C compiler supports C11 (complete). >+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} >+${ac_c_conftest_c99_globals} >+${ac_c_conftest_c11_globals} >+ >+int >+main (int argc, char **argv) >+{ >+ int ok = 0; >+ ${ac_c_conftest_c89_main} >+ ${ac_c_conftest_c99_main} >+ ${ac_c_conftest_c11_main} >+ return ok; >+} >+" >+ >+# Test code for whether the C compiler supports C99 (complete). >+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} >+${ac_c_conftest_c99_globals} >+ >+int >+main (int argc, char **argv) >+{ >+ int ok = 0; >+ ${ac_c_conftest_c89_main} >+ ${ac_c_conftest_c99_main} >+ return ok; >+} >+" >+ >+# Test code for whether the C compiler supports C89 (complete). >+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} >+ >+int >+main (int argc, char **argv) >+{ >+ int ok = 0; >+ ${ac_c_conftest_c89_main} >+ return ok; >+} >+" >+ >+as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" >+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" >+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" >+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" >+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" >+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" >+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" >+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" >+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" >+as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" >+as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" > gt_needs="$gt_needs " >+ >+# Auxiliary files required by this configure script. >+ac_aux_files="config.rpath ltmain.sh compile missing install-sh config.guess config.sub" >+ >+# Locations in which to look for auxiliary files. >+ac_aux_dir_candidates="${srcdir}/build-aux" >+ >+# Search for a directory containing all of the required auxiliary files, >+# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. >+# If we don't find one directory that contains all the files we need, >+# we report the set of missing files from the *first* directory in >+# $ac_aux_dir_candidates and give up. >+ac_missing_aux_files="" >+ac_first_candidate=: >+printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 >+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >+as_found=false >+for as_dir in $ac_aux_dir_candidates >+do >+ IFS=$as_save_IFS >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ as_found=: >+ >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 >+ ac_aux_dir_found=yes >+ ac_install_sh= >+ for ac_aux in $ac_aux_files >+ do >+ # As a special case, if "install-sh" is required, that requirement >+ # can be satisfied by any of "install-sh", "install.sh", or "shtool", >+ # and $ac_install_sh is set appropriately for whichever one is found. >+ if test x"$ac_aux" = x"install-sh" >+ then >+ if test -f "${as_dir}install-sh"; then >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 >+ ac_install_sh="${as_dir}install-sh -c" >+ elif test -f "${as_dir}install.sh"; then >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 >+ ac_install_sh="${as_dir}install.sh -c" >+ elif test -f "${as_dir}shtool"; then >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 >+ ac_install_sh="${as_dir}shtool install -c" >+ else >+ ac_aux_dir_found=no >+ if $ac_first_candidate; then >+ ac_missing_aux_files="${ac_missing_aux_files} install-sh" >+ else >+ break >+ fi >+ fi >+ else >+ if test -f "${as_dir}${ac_aux}"; then >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 >+ else >+ ac_aux_dir_found=no >+ if $ac_first_candidate; then >+ ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" >+ else >+ break >+ fi >+ fi >+ fi >+ done >+ if test "$ac_aux_dir_found" = yes; then >+ ac_aux_dir="$as_dir" >+ break >+ fi >+ ac_first_candidate=false >+ >+ as_found=false >+done >+IFS=$as_save_IFS >+if $as_found >+then : >+ >+else $as_nop >+ as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 >+fi >+ >+ >+# These three variables are undocumented and unsupported, >+# and are intended to be withdrawn in a future Autoconf release. >+# They can cause serious problems if a builder's source tree is in a directory >+# whose full name contains unusual characters. >+if test -f "${ac_aux_dir}config.guess"; then >+ ac_config_guess="$SHELL ${ac_aux_dir}config.guess" >+fi >+if test -f "${ac_aux_dir}config.sub"; then >+ ac_config_sub="$SHELL ${ac_aux_dir}config.sub" >+fi >+if test -f "$ac_aux_dir/configure"; then >+ ac_configure="$SHELL ${ac_aux_dir}configure" >+fi >+ > # Check that the precious variables saved in the cache have kept the same > # value. > ac_cache_corrupted=false >@@ -2878,12 +3303,12 @@ > eval ac_new_val=\$ac_env_${ac_var}_value > case $ac_old_set,$ac_new_set in > set,) >- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 >-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 >+printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} > ac_cache_corrupted=: ;; > ,set) >- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 >-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 >+printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} > ac_cache_corrupted=: ;; > ,);; > *) >@@ -2892,24 +3317,24 @@ > ac_old_val_w=`echo x $ac_old_val` > ac_new_val_w=`echo x $ac_new_val` > if test "$ac_old_val_w" != "$ac_new_val_w"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 >-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 >+printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} > ac_cache_corrupted=: > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 >-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 >+printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} > eval $ac_var=\$ac_old_val > fi >- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 >-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} >- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 >-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 >+printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 >+printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} > fi;; > esac > # Pass precious variables to config.status. > if test "$ac_new_set" = set; then > case $ac_new_val in >- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; >+ *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; > *) ac_arg=$ac_var=$ac_new_val ;; > esac > case " $ac_configure_args " in >@@ -2919,11 +3344,12 @@ > fi > done > if $ac_cache_corrupted; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 >-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} >- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 >+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} >+ as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' >+ and start over" "$LINENO" 5 > fi > ## -------------------- ## > ## Main body of script. ## >@@ -2937,36 +3363,8 @@ > > > >-ac_aux_dir= >-for ac_dir in build-aux "$srcdir"/build-aux; do >- if test -f "$ac_dir/install-sh"; then >- ac_aux_dir=$ac_dir >- ac_install_sh="$ac_aux_dir/install-sh -c" >- break >- elif test -f "$ac_dir/install.sh"; then >- ac_aux_dir=$ac_dir >- ac_install_sh="$ac_aux_dir/install.sh -c" >- break >- elif test -f "$ac_dir/shtool"; then >- ac_aux_dir=$ac_dir >- ac_install_sh="$ac_aux_dir/shtool install -c" >- break >- fi >-done >-if test -z "$ac_aux_dir"; then >- as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 >-fi > >-# These three variables are undocumented and unsupported, >-# and are intended to be withdrawn in a future Autoconf release. >-# They can cause serious problems if a builder's source tree is in a directory >-# whose full name contains unusual characters. >-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. >-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. >-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. > >- >- > ac_config_headers="$ac_config_headers config.h" > > >@@ -2976,26 +3374,30 @@ > echo > echo "System type:" > # This is needed to know if assembler optimizations can be used. >-# Make sure we can run config.sub. >-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || >- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 >-$as_echo_n "checking build system type... " >&6; } >-if ${ac_cv_build+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ >+ >+ # Make sure we can run config.sub. >+$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || >+ as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 >+ >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 >+printf %s "checking build system type... " >&6; } >+if test ${ac_cv_build+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_build_alias=$build_alias > test "x$ac_build_alias" = x && >- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` >+ ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` > test "x$ac_build_alias" = x && > as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 >-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || >- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 >+ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || >+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 >-$as_echo "$ac_cv_build" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 >+printf "%s\n" "$ac_cv_build" >&6; } > case $ac_cv_build in > *-*-*) ;; > *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; >@@ -3014,21 +3416,22 @@ > case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 >-$as_echo_n "checking host system type... " >&6; } >-if ${ac_cv_host+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 >+printf %s "checking host system type... " >&6; } >+if test ${ac_cv_host+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test "x$host_alias" = x; then > ac_cv_host=$ac_cv_build > else >- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || >- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 >+ ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || >+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 > fi > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 >-$as_echo "$ac_cv_host" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 >+printf "%s\n" "$ac_cv_host" >&6; } > case $ac_cv_host in > *-*-*) ;; > *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; >@@ -3087,24 +3490,25 @@ > # Debugging # > ############# > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if debugging code should be compiled" >&5 >-$as_echo_n "checking if debugging code should be compiled... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if debugging code should be compiled" >&5 >+printf %s "checking if debugging code should be compiled... " >&6; } > # Check whether --enable-debug was given. >-if test "${enable_debug+set}" = set; then : >+if test ${enable_debug+y} >+then : > enableval=$enable_debug; >-else >+else $as_nop > enable_debug=no > fi > > if test "x$enable_debug" = xyes; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > else > >-$as_echo "#define NDEBUG 1" >>confdefs.h >+printf "%s\n" "#define NDEBUG 1" >>confdefs.h > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -3139,24 +3543,28 @@ > enable_filter_armthumb=no > enable_encoder_armthumb=no > enable_decoder_armthumb=no >+enable_filter_arm64=no >+enable_encoder_arm64=no >+enable_decoder_arm64=no > enable_filter_sparc=no > enable_encoder_sparc=no > enable_decoder_sparc=no > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which encoders to build" >&5 >-$as_echo_n "checking which encoders to build... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which encoders to build" >&5 >+printf %s "checking which encoders to build... " >&6; } > # Check whether --enable-encoders was given. >-if test "${enable_encoders+set}" = set; then : >+if test ${enable_encoders+y} >+then : > enableval=$enable_encoders; >-else >- enable_encoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,sparc >+else $as_nop >+ enable_encoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc > fi > > enable_encoders=`echo "$enable_encoders" | sed 's/,/ /g'` > if test "x$enable_encoders" = xno || test "x$enable_encoders" = x; then > enable_encoders=no >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (none)" >&5 >-$as_echo "(none)" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (none)" >&5 >+printf "%s\n" "(none)" >&6; } > else > for arg in $enable_encoders > do >@@ -3165,93 +3573,101 @@ > enable_filter_lzma1=yes > enable_encoder_lzma1=yes > >-$as_echo "#define HAVE_ENCODER_LZMA1 1" >>confdefs.h >+printf "%s\n" "#define HAVE_ENCODER_LZMA1 1" >>confdefs.h > > ;; > lzma2) > enable_filter_lzma2=yes > enable_encoder_lzma2=yes > >-$as_echo "#define HAVE_ENCODER_LZMA2 1" >>confdefs.h >+printf "%s\n" "#define HAVE_ENCODER_LZMA2 1" >>confdefs.h > > ;; > delta) > enable_filter_delta=yes > enable_encoder_delta=yes > >-$as_echo "#define HAVE_ENCODER_DELTA 1" >>confdefs.h >+printf "%s\n" "#define HAVE_ENCODER_DELTA 1" >>confdefs.h > > ;; > x86) > enable_filter_x86=yes > enable_encoder_x86=yes > >-$as_echo "#define HAVE_ENCODER_X86 1" >>confdefs.h >+printf "%s\n" "#define HAVE_ENCODER_X86 1" >>confdefs.h > > ;; > powerpc) > enable_filter_powerpc=yes > enable_encoder_powerpc=yes > >-$as_echo "#define HAVE_ENCODER_POWERPC 1" >>confdefs.h >+printf "%s\n" "#define HAVE_ENCODER_POWERPC 1" >>confdefs.h > > ;; > ia64) > enable_filter_ia64=yes > enable_encoder_ia64=yes > >-$as_echo "#define HAVE_ENCODER_IA64 1" >>confdefs.h >+printf "%s\n" "#define HAVE_ENCODER_IA64 1" >>confdefs.h > > ;; > arm) > enable_filter_arm=yes > enable_encoder_arm=yes > >-$as_echo "#define HAVE_ENCODER_ARM 1" >>confdefs.h >+printf "%s\n" "#define HAVE_ENCODER_ARM 1" >>confdefs.h > > ;; > armthumb) > enable_filter_armthumb=yes > enable_encoder_armthumb=yes > >-$as_echo "#define HAVE_ENCODER_ARMTHUMB 1" >>confdefs.h >+printf "%s\n" "#define HAVE_ENCODER_ARMTHUMB 1" >>confdefs.h > > ;; >+ arm64) >+ enable_filter_arm64=yes >+ enable_encoder_arm64=yes >+ >+printf "%s\n" "#define HAVE_ENCODER_ARM64 1" >>confdefs.h >+ >+ ;; > sparc) > enable_filter_sparc=yes > enable_encoder_sparc=yes > >-$as_echo "#define HAVE_ENCODER_SPARC 1" >>confdefs.h >+printf "%s\n" "#define HAVE_ENCODER_SPARC 1" >>confdefs.h > > ;; > *) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 >-$as_echo "" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 >+printf "%s\n" "" >&6; } > as_fn_error $? "unknown filter: $arg" "$LINENO" 5 > ;; > esac > done > >-$as_echo "#define HAVE_ENCODERS 1" >>confdefs.h >+printf "%s\n" "#define HAVE_ENCODERS 1" >>confdefs.h > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_encoders" >&5 >-$as_echo "$enable_encoders" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_encoders" >&5 >+printf "%s\n" "$enable_encoders" >&6; } > fi > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which decoders to build" >&5 >-$as_echo_n "checking which decoders to build... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which decoders to build" >&5 >+printf %s "checking which decoders to build... " >&6; } > # Check whether --enable-decoders was given. >-if test "${enable_decoders+set}" = set; then : >+if test ${enable_decoders+y} >+then : > enableval=$enable_decoders; >-else >- enable_decoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,sparc >+else $as_nop >+ enable_decoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc > fi > > enable_decoders=`echo "$enable_decoders" | sed 's/,/ /g'` > if test "x$enable_decoders" = xno || test "x$enable_decoders" = x; then > enable_decoders=no >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (none)" >&5 >-$as_echo "(none)" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (none)" >&5 >+printf "%s\n" "(none)" >&6; } > else > for arg in $enable_decoders > do >@@ -3260,77 +3676,84 @@ > enable_filter_lzma1=yes > enable_decoder_lzma1=yes > >-$as_echo "#define HAVE_DECODER_LZMA1 1" >>confdefs.h >+printf "%s\n" "#define HAVE_DECODER_LZMA1 1" >>confdefs.h > > ;; > lzma2) > enable_filter_lzma2=yes > enable_decoder_lzma2=yes > >-$as_echo "#define HAVE_DECODER_LZMA2 1" >>confdefs.h >+printf "%s\n" "#define HAVE_DECODER_LZMA2 1" >>confdefs.h > > ;; > delta) > enable_filter_delta=yes > enable_decoder_delta=yes > >-$as_echo "#define HAVE_DECODER_DELTA 1" >>confdefs.h >+printf "%s\n" "#define HAVE_DECODER_DELTA 1" >>confdefs.h > > ;; > x86) > enable_filter_x86=yes > enable_decoder_x86=yes > >-$as_echo "#define HAVE_DECODER_X86 1" >>confdefs.h >+printf "%s\n" "#define HAVE_DECODER_X86 1" >>confdefs.h > > ;; > powerpc) > enable_filter_powerpc=yes > enable_decoder_powerpc=yes > >-$as_echo "#define HAVE_DECODER_POWERPC 1" >>confdefs.h >+printf "%s\n" "#define HAVE_DECODER_POWERPC 1" >>confdefs.h > > ;; > ia64) > enable_filter_ia64=yes > enable_decoder_ia64=yes > >-$as_echo "#define HAVE_DECODER_IA64 1" >>confdefs.h >+printf "%s\n" "#define HAVE_DECODER_IA64 1" >>confdefs.h > > ;; > arm) > enable_filter_arm=yes > enable_decoder_arm=yes > >-$as_echo "#define HAVE_DECODER_ARM 1" >>confdefs.h >+printf "%s\n" "#define HAVE_DECODER_ARM 1" >>confdefs.h > > ;; > armthumb) > enable_filter_armthumb=yes > enable_decoder_armthumb=yes > >-$as_echo "#define HAVE_DECODER_ARMTHUMB 1" >>confdefs.h >+printf "%s\n" "#define HAVE_DECODER_ARMTHUMB 1" >>confdefs.h > > ;; >+ arm64) >+ enable_filter_arm64=yes >+ enable_decoder_arm64=yes >+ >+printf "%s\n" "#define HAVE_DECODER_ARM64 1" >>confdefs.h >+ >+ ;; > sparc) > enable_filter_sparc=yes > enable_decoder_sparc=yes > >-$as_echo "#define HAVE_DECODER_SPARC 1" >>confdefs.h >+printf "%s\n" "#define HAVE_DECODER_SPARC 1" >>confdefs.h > > ;; > *) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 >-$as_echo "" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 >+printf "%s\n" "" >&6; } > as_fn_error $? "unknown filter: $arg" "$LINENO" 5 > ;; > esac > done > >-$as_echo "#define HAVE_DECODERS 1" >>confdefs.h >+printf "%s\n" "#define HAVE_DECODERS 1" >>confdefs.h > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_decoders" >&5 >-$as_echo "$enable_decoders" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_decoders" >&5 >+printf "%s\n" "$enable_decoders" >&6; } > fi > > if test "x$enable_encoder_lzma2$enable_encoder_lzma1" = xyesno \ >@@ -3547,6 +3970,30 @@ > COND_DECODER_ARMTHUMB_FALSE= > fi > >+ if test "x$enable_filter_arm64" = xyes; then >+ COND_FILTER_ARM64_TRUE= >+ COND_FILTER_ARM64_FALSE='#' >+else >+ COND_FILTER_ARM64_TRUE='#' >+ COND_FILTER_ARM64_FALSE= >+fi >+ >+ if test "x$enable_encoder_arm64" = xyes; then >+ COND_ENCODER_ARM64_TRUE= >+ COND_ENCODER_ARM64_FALSE='#' >+else >+ COND_ENCODER_ARM64_TRUE='#' >+ COND_ENCODER_ARM64_FALSE= >+fi >+ >+ if test "x$enable_decoder_arm64" = xyes; then >+ COND_DECODER_ARM64_TRUE= >+ COND_DECODER_ARM64_FALSE='#' >+else >+ COND_DECODER_ARM64_TRUE='#' >+ COND_DECODER_ARM64_FALSE= >+fi >+ > if test "x$enable_filter_sparc" = xyes; then > COND_FILTER_SPARC_TRUE= > COND_FILTER_SPARC_FALSE='#' >@@ -3591,6 +4038,9 @@ > test "x$enable_filter_armthumb" = xyes && enable_filter_simple=yes > test "x$enable_encoder_armthumb" = xyes && enable_encoder_simple=yes > test "x$enable_decoder_armthumb" = xyes && enable_decoder_simple=yes >+test "x$enable_filter_arm64" = xyes && enable_filter_simple=yes >+test "x$enable_encoder_arm64" = xyes && enable_encoder_simple=yes >+test "x$enable_decoder_arm64" = xyes && enable_decoder_simple=yes > test "x$enable_filter_sparc" = xyes && enable_filter_simple=yes > test "x$enable_encoder_sparc" = xyes && enable_encoder_simple=yes > test "x$enable_decoder_sparc" = xyes && enable_decoder_simple=yes >@@ -3668,62 +4118,67 @@ > enable_match_finder_bt4=no > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which match finders to build" >&5 >-$as_echo_n "checking which match finders to build... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which match finders to build" >&5 >+printf %s "checking which match finders to build... " >&6; } > # Check whether --enable-match-finders was given. >-if test "${enable_match_finders+set}" = set; then : >+if test ${enable_match_finders+y} >+then : > enableval=$enable_match_finders; >-else >+else $as_nop > enable_match_finders=hc3,hc4,bt2,bt3,bt4 > fi > > enable_match_finders=`echo "$enable_match_finders" | sed 's/,/ /g'` > if test "x$enable_encoder_lz" = xyes ; then >+ if test -z "$enable_match_finders"; then >+ as_fn_error $? "At least one match finder is required for an LZ-based encoder." "$LINENO" 5 >+ fi >+ > for arg in $enable_match_finders > do > case $arg in > hc3) > enable_match_finder_hc3=yes > >-$as_echo "#define HAVE_MF_HC3 1" >>confdefs.h >+printf "%s\n" "#define HAVE_MF_HC3 1" >>confdefs.h > > ;; > hc4) > enable_match_finder_hc4=yes > >-$as_echo "#define HAVE_MF_HC4 1" >>confdefs.h >+printf "%s\n" "#define HAVE_MF_HC4 1" >>confdefs.h > > ;; > bt2) > enable_match_finder_bt2=yes > >-$as_echo "#define HAVE_MF_BT2 1" >>confdefs.h >+printf "%s\n" "#define HAVE_MF_BT2 1" >>confdefs.h > > ;; > bt3) > enable_match_finder_bt3=yes > >-$as_echo "#define HAVE_MF_BT3 1" >>confdefs.h >+printf "%s\n" "#define HAVE_MF_BT3 1" >>confdefs.h > > ;; > bt4) > enable_match_finder_bt4=yes > >-$as_echo "#define HAVE_MF_BT4 1" >>confdefs.h >+printf "%s\n" "#define HAVE_MF_BT4 1" >>confdefs.h > > ;; > *) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 >-$as_echo "" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 >+printf "%s\n" "" >&6; } > as_fn_error $? "unknown match finder: $arg" "$LINENO" 5 > ;; > esac > done >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_match_finders" >&5 >-$as_echo "$enable_match_finders" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_match_finders" >&5 >+printf "%s\n" "$enable_match_finders" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (none because not building any LZ-based encoder)" >&5 >-$as_echo "(none because not building any LZ-based encoder)" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (none because not building any LZ-based encoder)" >&5 >+printf "%s\n" "(none because not building any LZ-based encoder)" >&6; } > fi > > >@@ -3737,19 +4192,20 @@ > enable_check_crc64=no > enable_check_sha256=no > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which integrity checks to build" >&5 >-$as_echo_n "checking which integrity checks to build... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which integrity checks to build" >&5 >+printf %s "checking which integrity checks to build... " >&6; } > # Check whether --enable-checks was given. >-if test "${enable_checks+set}" = set; then : >+if test ${enable_checks+y} >+then : > enableval=$enable_checks; >-else >+else $as_nop > enable_checks=crc32,crc64,sha256 > fi > > enable_checks=`echo "$enable_checks" | sed 's/,/ /g'` > if test "x$enable_checks" = xno || test "x$enable_checks" = x; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (none)" >&5 >-$as_echo "(none)" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (none)" >&5 >+printf "%s\n" "(none)" >&6; } > else > for arg in $enable_checks > do >@@ -3757,30 +4213,30 @@ > crc32) > enable_check_crc32=yes > >-$as_echo "#define HAVE_CHECK_CRC32 1" >>confdefs.h >+printf "%s\n" "#define HAVE_CHECK_CRC32 1" >>confdefs.h > > ;; > crc64) > enable_check_crc64=yes > >-$as_echo "#define HAVE_CHECK_CRC64 1" >>confdefs.h >+printf "%s\n" "#define HAVE_CHECK_CRC64 1" >>confdefs.h > > ;; > sha256) > enable_check_sha256=yes > >-$as_echo "#define HAVE_CHECK_SHA256 1" >>confdefs.h >+printf "%s\n" "#define HAVE_CHECK_SHA256 1" >>confdefs.h > > ;; > *) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 >-$as_echo "" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 >+printf "%s\n" "" >&6; } > as_fn_error $? "unknown integrity check: $arg" "$LINENO" 5 > ;; > esac > done >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_checks" >&5 >-$as_echo "$enable_checks" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_checks" >&5 >+printf "%s\n" "$enable_checks" >&6; } > fi > if test "x$enable_check_crc32" = xno ; then > as_fn_error $? "For now, the CRC32 check must always be enabled." "$LINENO" 5 >@@ -3811,12 +4267,13 @@ > fi > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if external SHA-256 should be used" >&5 >-$as_echo_n "checking if external SHA-256 should be used... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if external SHA-256 should be used" >&5 >+printf %s "checking if external SHA-256 should be used... " >&6; } > # Check whether --enable-external-sha256 was given. >-if test "${enable_external_sha256+set}" = set; then : >+if test ${enable_external_sha256+y} >+then : > enableval=$enable_external_sha256; >-else >+else $as_nop > enable_external_sha256=no > fi > >@@ -3824,24 +4281,98 @@ > enable_external_sha256=no > fi > if test "x$enable_external_sha256" = xyes; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >+############# >+# MicroLZMA # >+############# >+ >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if MicroLZMA support should be built" >&5 >+printf %s "checking if MicroLZMA support should be built... " >&6; } >+# Check whether --enable-microlzma was given. >+if test ${enable_microlzma+y} >+then : >+ enableval=$enable_microlzma; >+else $as_nop >+ enable_microlzma=yes >+fi >+ >+case $enable_microlzma in >+ yes | no) >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_microlzma" >&5 >+printf "%s\n" "$enable_microlzma" >&6; } >+ ;; >+ *) >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 >+printf "%s\n" "" >&6; } >+ as_fn_error $? "--enable-microlzma accepts only \`yes' or \`no'." "$LINENO" 5 >+ ;; >+esac >+ if test "x$enable_microlzma" = xyes; then >+ COND_MICROLZMA_TRUE= >+ COND_MICROLZMA_FALSE='#' >+else >+ COND_MICROLZMA_TRUE='#' >+ COND_MICROLZMA_FALSE= >+fi >+ >+ >+ >+############################# >+# .lz (lzip) format support # >+############################# >+ >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if .lz (lzip) decompression support should be built" >&5 >+printf %s "checking if .lz (lzip) decompression support should be built... " >&6; } >+# Check whether --enable-lzip-decoder was given. >+if test ${enable_lzip_decoder+y} >+then : >+ enableval=$enable_lzip_decoder; >+else $as_nop >+ enable_lzip_decoder=yes >+fi >+ >+if test "x$enable_decoder_lzma1" != xyes; then >+ enable_lzip_decoder=no >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no because LZMA1 decoder is disabled" >&5 >+printf "%s\n" "no because LZMA1 decoder is disabled" >&6; } >+elif test "x$enable_lzip_decoder" = xyes; then >+ >+printf "%s\n" "#define HAVE_LZIP_DECODER 1" >>confdefs.h >+ >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } >+else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } >+fi >+ if test "x$enable_lzip_decoder" = xyes; then >+ COND_LZIP_DECODER_TRUE= >+ COND_LZIP_DECODER_FALSE='#' >+else >+ COND_LZIP_DECODER_TRUE='#' >+ COND_LZIP_DECODER_FALSE= >+fi >+ >+ >+ > ########################### > # Assembler optimizations # > ########################### > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if assembler optimizations should be used" >&5 >-$as_echo_n "checking if assembler optimizations should be used... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if assembler optimizations should be used" >&5 >+printf %s "checking if assembler optimizations should be used... " >&6; } > # Check whether --enable-assembler was given. >-if test "${enable_assembler+set}" = set; then : >+if test ${enable_assembler+y} >+then : > enableval=$enable_assembler; >-else >+else $as_nop > enable_assembler=yes > fi > >@@ -3853,20 +4384,19 @@ > linux* | *bsd* | mingw* | cygwin | msys | *djgpp*) > case $host_cpu in > i?86) enable_assembler=x86 ;; >- x86_64) enable_assembler=x86_64 ;; > esac > ;; > esac > fi > case $enable_assembler in >- x86 | x86_64 | no) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_assembler" >&5 >-$as_echo "$enable_assembler" >&6; } >+ x86 | no) >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_assembler" >&5 >+printf "%s\n" "$enable_assembler" >&6; } > ;; > *) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 >-$as_echo "" >&6; } >- as_fn_error $? "--enable-assembler accepts only \`yes', \`no', \`x86', or \`x86_64'." "$LINENO" 5 >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 >+printf "%s\n" "" >&6; } >+ as_fn_error $? "--enable-assembler accepts only \`yes', \`no', or \`x86' (32-bit)." "$LINENO" 5 > ;; > esac > if test "x$enable_assembler" = xx86; then >@@ -3877,12 +4407,18 @@ > COND_ASM_X86_FALSE= > fi > >- if test "x$enable_assembler" = xx86_64; then >- COND_ASM_X86_64_TRUE= >- COND_ASM_X86_64_FALSE='#' >-else >- COND_ASM_X86_64_TRUE='#' >- COND_ASM_X86_64_FALSE= >+ >+ >+############# >+# CLMUL CRC # >+############# >+ >+# Check whether --enable-clmul-crc was given. >+if test ${enable_clmul_crc+y} >+then : >+ enableval=$enable_clmul_crc; >+else $as_nop >+ enable_clmul_crc=yes > fi > > >@@ -3891,26 +4427,27 @@ > # Size optimization # > ##################### > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if small size is preferred over speed" >&5 >-$as_echo_n "checking if small size is preferred over speed... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if small size is preferred over speed" >&5 >+printf %s "checking if small size is preferred over speed... " >&6; } > # Check whether --enable-small was given. >-if test "${enable_small+set}" = set; then : >+if test ${enable_small+y} >+then : > enableval=$enable_small; >-else >+else $as_nop > enable_small=no > fi > > if test "x$enable_small" = xyes; then > >-$as_echo "#define HAVE_SMALL 1" >>confdefs.h >+printf "%s\n" "#define HAVE_SMALL 1" >>confdefs.h > > elif test "x$enable_small" != xno; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 >-$as_echo "" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 >+printf "%s\n" "" >&6; } > as_fn_error $? "--enable-small accepts only \`yes' or \`no'" "$LINENO" 5 > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_small" >&5 >-$as_echo "$enable_small" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_small" >&5 >+printf "%s\n" "$enable_small" >&6; } > if test "x$enable_small" = xyes; then > COND_SMALL_TRUE= > COND_SMALL_FALSE='#' >@@ -3925,12 +4462,13 @@ > # Threading # > ############# > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if threading support is wanted" >&5 >-$as_echo_n "checking if threading support is wanted... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if threading support is wanted" >&5 >+printf %s "checking if threading support is wanted... " >&6; } > # Check whether --enable-threads was given. >-if test "${enable_threads+set}" = set; then : >+if test ${enable_threads+y} >+then : > enableval=$enable_threads; >-else >+else $as_nop > enable_threads=yes > fi > >@@ -3951,16 +4489,16 @@ > > case $enable_threads in > posix | win95 | vista) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, $enable_threads" >&5 >-$as_echo "yes, $enable_threads" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes, $enable_threads" >&5 >+printf "%s\n" "yes, $enable_threads" >&6; } > ;; > no) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > ;; > *) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 >-$as_echo "" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 >+printf "%s\n" "" >&6; } > as_fn_error $? "--enable-threads only accepts \`yes', \`no', \`posix', \`win95', or \`vista'" "$LINENO" 5 > ;; > esac >@@ -3984,27 +4522,26 @@ > # created with "xz -9". It would be slightly safer to guess a lower value, > # but most systems, on which we don't have any way to determine the amount > # of RAM, will probably have at least 128 MiB of RAM. >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how much RAM to assume if the real amount is unknown" >&5 >-$as_echo_n "checking how much RAM to assume if the real amount is unknown... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how much RAM to assume if the real amount is unknown" >&5 >+printf %s "checking how much RAM to assume if the real amount is unknown... " >&6; } > # Check whether --enable-assume-ram was given. >-if test "${enable_assume_ram+set}" = set; then : >+if test ${enable_assume_ram+y} >+then : > enableval=$enable_assume_ram; >-else >+else $as_nop > enable_assume_ram=128 > fi > > assume_ram_check=`echo "$enable_assume_ram" | tr -d 0123456789` > if test -z "$enable_assume_ram" || test -n "$assume_ram_check"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 >-$as_echo "" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 >+printf "%s\n" "" >&6; } > as_fn_error $? "--enable-assume-ram accepts only an integer argument" "$LINENO" 5 > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_assume_ram MiB" >&5 >-$as_echo "$enable_assume_ram MiB" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_assume_ram MiB" >&5 >+printf "%s\n" "$enable_assume_ram MiB" >&6; } > >-cat >>confdefs.h <<_ACEOF >-#define ASSUME_RAM $enable_assume_ram >-_ACEOF >+printf "%s\n" "#define ASSUME_RAM $enable_assume_ram" >>confdefs.h > > > >@@ -4013,9 +4550,10 @@ > ######################### > > # Check whether --enable-xz was given. >-if test "${enable_xz+set}" = set; then : >+if test ${enable_xz+y} >+then : > enableval=$enable_xz; >-else >+else $as_nop > enable_xz=yes > fi > >@@ -4029,9 +4567,10 @@ > > > # Check whether --enable-xzdec was given. >-if test "${enable_xzdec+set}" = set; then : >+if test ${enable_xzdec+y} >+then : > enableval=$enable_xzdec; >-else >+else $as_nop > enable_xzdec=yes > fi > >@@ -4046,9 +4585,10 @@ > > > # Check whether --enable-lzmadec was given. >-if test "${enable_lzmadec+set}" = set; then : >+if test ${enable_lzmadec+y} >+then : > enableval=$enable_lzmadec; >-else >+else $as_nop > enable_lzmadec=yes > fi > >@@ -4063,9 +4603,10 @@ > > > # Check whether --enable-lzmainfo was given. >-if test "${enable_lzmainfo+set}" = set; then : >+if test ${enable_lzmainfo+y} >+then : > enableval=$enable_lzmainfo; >-else >+else $as_nop > enable_lzmainfo=yes > fi > >@@ -4080,9 +4621,10 @@ > > > # Check whether --enable-lzma-links was given. >-if test "${enable_lzma_links+set}" = set; then : >+if test ${enable_lzma_links+y} >+then : > enableval=$enable_lzma_links; >-else >+else $as_nop > enable_lzma_links=yes > fi > >@@ -4096,9 +4638,10 @@ > > > # Check whether --enable-scripts was given. >-if test "${enable_scripts+set}" = set; then : >+if test ${enable_scripts+y} >+then : > enableval=$enable_scripts; >-else >+else $as_nop > enable_scripts=yes > fi > >@@ -4112,9 +4655,10 @@ > > > # Check whether --enable-doc was given. >-if test "${enable_doc+set}" = set; then : >+if test ${enable_doc+y} >+then : > enableval=$enable_doc; >-else >+else $as_nop > enable_doc=yes > fi > >@@ -4128,71 +4672,33 @@ > > > >-##################### >-# Symbol versioning # >-##################### >- >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if library symbol versioning should be used" >&5 >-$as_echo_n "checking if library symbol versioning should be used... " >&6; } >-# Check whether --enable-symbol-versions was given. >-if test "${enable_symbol_versions+set}" = set; then : >- enableval=$enable_symbol_versions; >-else >- enable_symbol_versions=auto >-fi >- >-if test "x$enable_symbol_versions" = xauto; then >- case $host_os in >- # NOTE: Even if one omits -gnu on GNU/Linux (e.g. >- # i486-slackware-linux), configure will (via config.sub) >- # append -gnu (e.g. i486-slackware-linux-gnu), and this >- # test will work correctly. >- gnu* | *-gnu* | freebsd*) >- enable_symbol_versions=yes >- ;; >- *) >- enable_symbol_versions=no >- ;; >- esac >-fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_symbol_versions" >&5 >-$as_echo "$enable_symbol_versions" >&6; } >- if test "x$enable_symbol_versions" = xyes; then >- COND_SYMVERS_TRUE= >- COND_SYMVERS_FALSE='#' >-else >- COND_SYMVERS_TRUE='#' >- COND_SYMVERS_FALSE= >-fi >- >- >- > ############## > # Sandboxing # > ############## > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if sandboxing should be used" >&5 >-$as_echo_n "checking if sandboxing should be used... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sandboxing should be used" >&5 >+printf %s "checking if sandboxing should be used... " >&6; } > # Check whether --enable-sandbox was given. >-if test "${enable_sandbox+set}" = set; then : >+if test ${enable_sandbox+y} >+then : > enableval=$enable_sandbox; >-else >+else $as_nop > enable_sandbox=auto > fi > > case $enable_sandbox in > auto) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: maybe (autodetect)" >&5 >-$as_echo "maybe (autodetect)" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: maybe (autodetect)" >&5 >+printf "%s\n" "maybe (autodetect)" >&6; } > ;; >- no | capsicum) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_sandbox" >&5 >-$as_echo "$enable_sandbox" >&6; } >+ no | capsicum | pledge) >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_sandbox" >&5 >+printf "%s\n" "$enable_sandbox" >&6; } > ;; > *) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 >-$as_echo "" >&6; } >- as_fn_error $? "--enable-sandbox only accepts \`auto', \`no', or \`capsicum'." "$LINENO" 5 >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 >+printf "%s\n" "" >&6; } >+ as_fn_error $? "--enable-sandbox only accepts \`auto', \`no', \`capsicum', or \`pledge'." "$LINENO" 5 > ;; > esac > >@@ -4204,9 +4710,10 @@ > # The scripts can add a prefix to the search PATH so that POSIX tools > # or the xz binary is always in the PATH. > # Check whether --enable-path-for-scripts was given. >-if test "${enable_path_for_scripts+set}" = set; then : >+if test ${enable_path_for_scripts+y} >+then : > enableval=$enable_path_for_scripts; >-else >+else $as_nop > > case $host_os in > solaris*) enable_path_for_scripts=/usr/xpg4/bin ;; >@@ -4239,11 +4746,12 @@ > ;; > esac > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a shell that conforms to POSIX" >&5 >-$as_echo_n "checking for a shell that conforms to POSIX... " >&6; } >-if ${gl_cv_posix_shell+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a shell that conforms to POSIX" >&5 >+printf %s "checking for a shell that conforms to POSIX... " >&6; } >+if test ${gl_cv_posix_shell+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > gl_test_posix_shell_script=' > func_return () { > (exit $1) >@@ -4280,8 +4788,8 @@ > esac > done > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_posix_shell" >&5 >-$as_echo "$gl_cv_posix_shell" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_posix_shell" >&5 >+printf "%s\n" "$gl_cv_posix_shell" >&6; } > > if test "$gl_cv_posix_shell" != no; then > POSIX_SHELL=$gl_cv_posix_shell >@@ -4302,12 +4810,13 @@ > > # We don't use "subdir-objects" yet because it breaks "make distclean" when > # dependencies are enabled (as of Automake 1.14.1) due to this bug: >-# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17354 >+# https://debbugs.gnu.org/cgi/bugreport.cgi?bug=17354 > # The -Wno-unsupported is used to silence warnings about missing > # "subdir-objects". > am__api_version='1.16' > >-# Find a good install program. We prefer a C program (faster), >+ >+ # Find a good install program. We prefer a C program (faster), > # so one script is as good as another. But avoid the broken or > # incompatible versions: > # SysV /etc/install, /usr/sbin/install >@@ -4321,20 +4830,25 @@ > # OS/2's system install, which has a completely different semantic > # ./install, which can be erroneously created by make from ./install.sh. > # Reject install programs that cannot install multiple files. >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 >-$as_echo_n "checking for a BSD-compatible install... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 >+printf %s "checking for a BSD-compatible install... " >&6; } > if test -z "$INSTALL"; then >-if ${ac_cv_path_install+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+if test ${ac_cv_path_install+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > as_save_IFS=$IFS; IFS=$PATH_SEPARATOR > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- # Account for people who put trailing slashes in PATH elements. >-case $as_dir/ in #(( >- ./ | .// | /[cC]/* | \ >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ # Account for fact that we put trailing slashes in our PATH walk. >+case $as_dir in #(( >+ ./ | /[cC]/* | \ > /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ > ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ > /usr/ucb/* ) ;; >@@ -4344,13 +4858,13 @@ > # by default. > for ac_prog in ginstall scoinst install; do > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then > if test $ac_prog = install && >- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then >+ grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then > # AIX install. It has an incompatible calling convention. > : > elif test $ac_prog = install && >- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then >+ grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then > # program-specific install script used by HP pwplus--don't use. > : > else >@@ -4358,12 +4872,12 @@ > echo one > conftest.one > echo two > conftest.two > mkdir conftest.dir >- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && >+ if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && > test -s conftest.one && test -s conftest.two && > test -s conftest.dir/conftest.one && > test -s conftest.dir/conftest.two > then >- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" >+ ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" > break 3 > fi > fi >@@ -4379,7 +4893,7 @@ > rm -rf conftest.one conftest.two conftest.dir > > fi >- if test "${ac_cv_path_install+set}" = set; then >+ if test ${ac_cv_path_install+y}; then > INSTALL=$ac_cv_path_install > else > # As a last resort, use the slow shell script. Don't cache a >@@ -4389,8 +4903,8 @@ > INSTALL=$ac_install_sh > fi > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 >-$as_echo "$INSTALL" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 >+printf "%s\n" "$INSTALL" >&6; } > > # Use test -z because SunOS4 sh mishandles braces in ${var-val}. > # It thinks the first close brace ends the variable substitution. >@@ -4400,8 +4914,8 @@ > > test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 >-$as_echo_n "checking whether build environment is sane... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 >+printf %s "checking whether build environment is sane... " >&6; } > # Reject unsafe characters in $srcdir or the absolute working directory > # name. Accept space and tab only in the latter. > am_lf=' >@@ -4455,8 +4969,8 @@ > as_fn_error $? "newly created file is older than distributed files! > Check your system clock" "$LINENO" 5 > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > # If we didn't sleep, we still need to ensure time stamps of config.status and > # generated files are strictly newer. > am_sleep_pid= >@@ -4475,26 +4989,23 @@ > # Double any \ or $. > # By default was `s,x,x', remove it if useless. > ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' >-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` >+program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` > >+ > # Expand $ac_aux_dir to an absolute path. > am_aux_dir=`cd "$ac_aux_dir" && pwd` > >-if test x"${MISSING+set}" != xset; then >- case $am_aux_dir in >- *\ * | *\ *) >- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; >- *) >- MISSING="\${SHELL} $am_aux_dir/missing" ;; >- esac >+ >+ if test x"${MISSING+set}" != xset; then >+ MISSING="\${SHELL} '$am_aux_dir/missing'" > fi > # Use eval to expand $SHELL > if eval "$MISSING --is-lightweight"; then > am_missing_run="$MISSING " > else > am_missing_run= >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 >-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 >+printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} > fi > > if test x"${install_sh+set}" != xset; then >@@ -4514,11 +5025,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. > set dummy ${ac_tool_prefix}strip; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_STRIP+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_STRIP+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$STRIP"; then > ac_cv_prog_STRIP="$STRIP" # Let the user override the test. > else >@@ -4526,11 +5038,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_STRIP="${ac_tool_prefix}strip" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -4541,11 +5057,11 @@ > fi > STRIP=$ac_cv_prog_STRIP > if test -n "$STRIP"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 >-$as_echo "$STRIP" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 >+printf "%s\n" "$STRIP" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -4554,11 +5070,12 @@ > ac_ct_STRIP=$STRIP > # Extract the first word of "strip", so it can be a program name with args. > set dummy strip; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_STRIP+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_STRIP+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_STRIP"; then > ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. > else >@@ -4566,11 +5083,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_STRIP="strip" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -4581,11 +5102,11 @@ > fi > ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP > if test -n "$ac_ct_STRIP"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 >-$as_echo "$ac_ct_STRIP" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 >+printf "%s\n" "$ac_ct_STRIP" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_STRIP" = x; then >@@ -4593,8 +5114,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > STRIP=$ac_ct_STRIP >@@ -4606,25 +5127,31 @@ > fi > INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 >-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } >+ >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 >+printf %s "checking for a race-free mkdir -p... " >&6; } > if test -z "$MKDIR_P"; then >- if ${ac_cv_path_mkdir+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ if test ${ac_cv_path_mkdir+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > as_save_IFS=$IFS; IFS=$PATH_SEPARATOR > for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_prog in mkdir gmkdir; do > for ac_exec_ext in '' $ac_executable_extensions; do >- as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue >- case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( >- 'mkdir (GNU coreutils) '* | \ >- 'mkdir (coreutils) '* | \ >+ as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue >+ case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( >+ 'mkdir ('*'coreutils) '* | \ >+ 'BusyBox '* | \ > 'mkdir (fileutils) '4.1*) >- ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext >+ ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext > break 3;; > esac > done >@@ -4635,7 +5162,7 @@ > fi > > test -d ./--version && rmdir ./--version >- if test "${ac_cv_path_mkdir+set}" = set; then >+ if test ${ac_cv_path_mkdir+y}; then > MKDIR_P="$ac_cv_path_mkdir -p" > else > # As a last resort, use the slow shell script. Don't cache a >@@ -4645,18 +5172,19 @@ > MKDIR_P="$ac_install_sh -d" > fi > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 >-$as_echo "$MKDIR_P" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 >+printf "%s\n" "$MKDIR_P" >&6; } > > for ac_prog in gawk mawk nawk awk > do > # Extract the first word of "$ac_prog", so it can be a program name with args. > set dummy $ac_prog; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_AWK+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_AWK+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$AWK"; then > ac_cv_prog_AWK="$AWK" # Let the user override the test. > else >@@ -4664,11 +5192,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_AWK="$ac_prog" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -4679,24 +5211,25 @@ > fi > AWK=$ac_cv_prog_AWK > if test -n "$AWK"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 >-$as_echo "$AWK" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 >+printf "%s\n" "$AWK" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > > test -n "$AWK" && break > done > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 >-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 >+printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } > set x ${MAKE-make} >-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` >-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` >+if eval test \${ac_cv_prog_make_${ac_make}_set+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat >conftest.make <<\_ACEOF > SHELL = /bin/sh > all: >@@ -4712,12 +5245,12 @@ > rm -f conftest.make > fi > if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > SET_MAKE= > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > SET_MAKE="MAKE=${MAKE-make}" > fi > >@@ -4731,7 +5264,8 @@ > rmdir .tst 2>/dev/null > > # Check whether --enable-silent-rules was given. >-if test "${enable_silent_rules+set}" = set; then : >+if test ${enable_silent_rules+y} >+then : > enableval=$enable_silent_rules; > fi > >@@ -4741,12 +5275,13 @@ > *) AM_DEFAULT_VERBOSITY=1;; > esac > am_make=${MAKE-make} >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 >-$as_echo_n "checking whether $am_make supports nested variables... " >&6; } >-if ${am_cv_make_support_nested_variables+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >- if $as_echo 'TRUE=$(BAR$(V)) >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 >+printf %s "checking whether $am_make supports nested variables... " >&6; } >+if test ${am_cv_make_support_nested_variables+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ if printf "%s\n" 'TRUE=$(BAR$(V)) > BAR0=false > BAR1=true > V=1 >@@ -4758,8 +5293,8 @@ > am_cv_make_support_nested_variables=no > fi > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 >-$as_echo "$am_cv_make_support_nested_variables" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 >+printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } > if test $am_cv_make_support_nested_variables = yes; then > AM_V='$(V)' > AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' >@@ -4791,17 +5326,13 @@ > > # Define the identity of the package. > PACKAGE='xz' >- VERSION='5.2.5' >+ VERSION='5.4.3' > > >-cat >>confdefs.h <<_ACEOF >-#define PACKAGE "$PACKAGE" >-_ACEOF >+printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h > > >-cat >>confdefs.h <<_ACEOF >-#define VERSION "$VERSION" >-_ACEOF >+printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h > > # Some tools Automake needs. > >@@ -4841,7 +5372,21 @@ > > > >+# Variables for tags utilities; see am/tags.am >+if test -z "$CTAGS"; then >+ CTAGS=ctags >+fi > >+if test -z "$ETAGS"; then >+ ETAGS=etags >+fi >+ >+if test -z "$CSCOPE"; then >+ CSCOPE=cscope >+fi >+ >+ >+ > # POSIX will say in a future version that running "rm -f" with no argument > # is OK; and we want to be able to make that assumption in our Makefile > # recipes. So use an aggressive probe to check that the usage we want is >@@ -4884,24 +5429,33 @@ > fi > fi > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 >-$as_echo_n "checking whether ln -s works... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 >+printf %s "checking whether ln -s works... " >&6; } > LN_S=$as_ln_s > if test "$LN_S" = "ln -s"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 >-$as_echo "no, using $LN_S" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 >+printf "%s\n" "no, using $LN_S" >&6; } > fi > > >+ >+ >+ >+ >+ >+ >+ >+ >+ > DEPDIR="${am__leading_dot}deps" > > ac_config_commands="$ac_config_commands depfiles" > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 >-$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 >+printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } > cat > confinc.mk << 'END' > am__doit: > @echo this is the am__doit target >confinc.out >@@ -4937,11 +5491,12 @@ > fi > done > rm -f confinc.* confmf.* >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 >-$as_echo "${_am_result}" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 >+printf "%s\n" "${_am_result}" >&6; } > > # Check whether --enable-dependency-tracking was given. >-if test "${enable_dependency_tracking+set}" = set; then : >+if test ${enable_dependency_tracking+y} >+then : > enableval=$enable_dependency_tracking; > fi > >@@ -4967,11 +5522,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. > set dummy ${ac_tool_prefix}gcc; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_CC+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_CC+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$CC"; then > ac_cv_prog_CC="$CC" # Let the user override the test. > else >@@ -4979,11 +5535,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_CC="${ac_tool_prefix}gcc" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -4994,11 +5554,11 @@ > fi > CC=$ac_cv_prog_CC > if test -n "$CC"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 >-$as_echo "$CC" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 >+printf "%s\n" "$CC" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -5007,11 +5567,12 @@ > ac_ct_CC=$CC > # Extract the first word of "gcc", so it can be a program name with args. > set dummy gcc; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_CC+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_CC+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_CC"; then > ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. > else >@@ -5019,11 +5580,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_CC="gcc" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -5034,11 +5599,11 @@ > fi > ac_ct_CC=$ac_cv_prog_ac_ct_CC > if test -n "$ac_ct_CC"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 >-$as_echo "$ac_ct_CC" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 >+printf "%s\n" "$ac_ct_CC" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_CC" = x; then >@@ -5046,8 +5611,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > CC=$ac_ct_CC >@@ -5060,11 +5625,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. > set dummy ${ac_tool_prefix}cc; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_CC+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_CC+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$CC"; then > ac_cv_prog_CC="$CC" # Let the user override the test. > else >@@ -5072,11 +5638,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_CC="${ac_tool_prefix}cc" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -5087,11 +5657,11 @@ > fi > CC=$ac_cv_prog_CC > if test -n "$CC"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 >-$as_echo "$CC" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 >+printf "%s\n" "$CC" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -5100,11 +5670,12 @@ > if test -z "$CC"; then > # Extract the first word of "cc", so it can be a program name with args. > set dummy cc; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_CC+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_CC+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$CC"; then > ac_cv_prog_CC="$CC" # Let the user override the test. > else >@@ -5113,15 +5684,19 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then >+ if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then > ac_prog_rejected=yes > continue > fi > ac_cv_prog_CC="cc" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -5137,18 +5712,18 @@ > # However, it has the same basename, so the bogon will be chosen > # first if we set CC to just the basename; use the full file name. > shift >- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" >+ ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" > fi > fi > fi > fi > CC=$ac_cv_prog_CC > if test -n "$CC"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 >-$as_echo "$CC" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 >+printf "%s\n" "$CC" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -5159,11 +5734,12 @@ > do > # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. > set dummy $ac_tool_prefix$ac_prog; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_CC+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_CC+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$CC"; then > ac_cv_prog_CC="$CC" # Let the user override the test. > else >@@ -5171,11 +5747,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_CC="$ac_tool_prefix$ac_prog" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -5186,11 +5766,11 @@ > fi > CC=$ac_cv_prog_CC > if test -n "$CC"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 >-$as_echo "$CC" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 >+printf "%s\n" "$CC" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -5203,11 +5783,12 @@ > do > # Extract the first word of "$ac_prog", so it can be a program name with args. > set dummy $ac_prog; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_CC+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_CC+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_CC"; then > ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. > else >@@ -5215,11 +5796,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_CC="$ac_prog" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -5230,11 +5815,11 @@ > fi > ac_ct_CC=$ac_cv_prog_ac_ct_CC > if test -n "$ac_ct_CC"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 >-$as_echo "$ac_ct_CC" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 >+printf "%s\n" "$ac_ct_CC" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -5246,8 +5831,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > CC=$ac_ct_CC >@@ -5255,25 +5840,129 @@ > fi > > fi >+if test -z "$CC"; then >+ if test -n "$ac_tool_prefix"; then >+ # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. >+set dummy ${ac_tool_prefix}clang; ac_word=$2 >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_CC+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ if test -n "$CC"; then >+ ac_cv_prog_CC="$CC" # Let the user override the test. >+else >+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >+for as_dir in $PATH >+do >+ IFS=$as_save_IFS >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ for ac_exec_ext in '' $ac_executable_extensions; do >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then >+ ac_cv_prog_CC="${ac_tool_prefix}clang" >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 >+ break 2 >+ fi >+done >+ done >+IFS=$as_save_IFS > >+fi >+fi >+CC=$ac_cv_prog_CC >+if test -n "$CC"; then >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 >+printf "%s\n" "$CC" >&6; } >+else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } >+fi > >-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+ >+fi >+if test -z "$ac_cv_prog_CC"; then >+ ac_ct_CC=$CC >+ # Extract the first word of "clang", so it can be a program name with args. >+set dummy clang; ac_word=$2 >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_CC+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ if test -n "$ac_ct_CC"; then >+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. >+else >+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >+for as_dir in $PATH >+do >+ IFS=$as_save_IFS >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ for ac_exec_ext in '' $ac_executable_extensions; do >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then >+ ac_cv_prog_ac_ct_CC="clang" >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 >+ break 2 >+ fi >+done >+ done >+IFS=$as_save_IFS >+ >+fi >+fi >+ac_ct_CC=$ac_cv_prog_ac_ct_CC >+if test -n "$ac_ct_CC"; then >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 >+printf "%s\n" "$ac_ct_CC" >&6; } >+else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } >+fi >+ >+ if test "x$ac_ct_CC" = x; then >+ CC="" >+ else >+ case $cross_compiling:$ac_tool_warned in >+yes:) >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+ac_tool_warned=yes ;; >+esac >+ CC=$ac_ct_CC >+ fi >+else >+ CC="$ac_cv_prog_CC" >+fi >+ >+fi >+ >+ >+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} > as_fn_error $? "no acceptable C compiler found in \$PATH > See \`config.log' for more details" "$LINENO" 5; } > > # Provide some information about the compiler. >-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 >+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 > set X $ac_compile > ac_compiler=$2 >-for ac_option in --version -v -V -qversion; do >+for ac_option in --version -v -V -qversion -version; do > { { ac_try="$ac_compiler $ac_option >&5" > case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac > eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >-$as_echo "$ac_try_echo"; } >&5 >+printf "%s\n" "$ac_try_echo"; } >&5 > (eval "$ac_compiler $ac_option >&5") 2>conftest.err > ac_status=$? > if test -s conftest.err; then >@@ -5283,7 +5972,7 @@ > cat conftest.er1 >&5 > fi > rm -f conftest.er1 conftest.err >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; } > done > >@@ -5291,7 +5980,7 @@ > /* end confdefs.h. */ > > int >-main () >+main (void) > { > > ; >@@ -5303,9 +5992,9 @@ > # Try to create an executable without -o first, disregard a.out. > # It will help us diagnose broken compilers, and finding out an intuition > # of exeext. >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 >-$as_echo_n "checking whether the C compiler works... " >&6; } >-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 >+printf %s "checking whether the C compiler works... " >&6; } >+ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` > > # The possible output files: > ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" >@@ -5326,11 +6015,12 @@ > *) ac_try_echo=$ac_try;; > esac > eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >-$as_echo "$ac_try_echo"; } >&5 >+printf "%s\n" "$ac_try_echo"; } >&5 > (eval "$ac_link_default") 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >- test $ac_status = 0; }; then : >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ test $ac_status = 0; } >+then : > # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. > # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' > # in a Makefile. We should not override ac_cv_exeext if it was cached, >@@ -5347,7 +6037,7 @@ > # certainly right. > break;; > *.* ) >- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; >+ if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; > then :; else > ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` > fi >@@ -5363,44 +6053,46 @@ > done > test "$ac_cv_exeext" = no && ac_cv_exeext= > >-else >+else $as_nop > ac_file='' > fi >-if test -z "$ac_file"; then : >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >-$as_echo "$as_me: failed program was:" >&5 >+if test -z "$ac_file" >+then : >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } >+printf "%s\n" "$as_me: failed program was:" >&5 > sed 's/^/| /' conftest.$ac_ext >&5 > >-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} > as_fn_error 77 "C compiler cannot create executables > See \`config.log' for more details" "$LINENO" 5; } >-else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+else $as_nop >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 >-$as_echo_n "checking for C compiler default output file name... " >&6; } >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 >-$as_echo "$ac_file" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 >+printf %s "checking for C compiler default output file name... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 >+printf "%s\n" "$ac_file" >&6; } > ac_exeext=$ac_cv_exeext > > rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out > ac_clean_files=$ac_clean_files_save >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 >-$as_echo_n "checking for suffix of executables... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 >+printf %s "checking for suffix of executables... " >&6; } > if { { ac_try="$ac_link" > case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac > eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >-$as_echo "$ac_try_echo"; } >&5 >+printf "%s\n" "$ac_try_echo"; } >&5 > (eval "$ac_link") 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >- test $ac_status = 0; }; then : >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ test $ac_status = 0; } >+then : > # If both `conftest.exe' and `conftest' are `present' (well, observable) > # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will > # work properly (i.e., refer to `conftest.exe'), while it won't with >@@ -5414,15 +6106,15 @@ > * ) break;; > esac > done >-else >- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+else $as_nop >+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} > as_fn_error $? "cannot compute suffix of executables: cannot compile and link > See \`config.log' for more details" "$LINENO" 5; } > fi > rm -f conftest conftest$ac_cv_exeext >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 >-$as_echo "$ac_cv_exeext" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 >+printf "%s\n" "$ac_cv_exeext" >&6; } > > rm -f conftest.$ac_ext > EXEEXT=$ac_cv_exeext >@@ -5431,7 +6123,7 @@ > /* end confdefs.h. */ > #include <stdio.h> > int >-main () >+main (void) > { > FILE *f = fopen ("conftest.out", "w"); > return ferror (f) || fclose (f) != 0; >@@ -5443,8 +6135,8 @@ > ac_clean_files="$ac_clean_files conftest.out" > # Check that the compiler produces executables we can run. If not, either > # the compiler is broken, or we cross compile. >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 >-$as_echo_n "checking whether we are cross compiling... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 >+printf %s "checking whether we are cross compiling... " >&6; } > if test "$cross_compiling" != yes; then > { { ac_try="$ac_link" > case "(($ac_try" in >@@ -5452,10 +6144,10 @@ > *) ac_try_echo=$ac_try;; > esac > eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >-$as_echo "$ac_try_echo"; } >&5 >+printf "%s\n" "$ac_try_echo"; } >&5 > (eval "$ac_link") 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; } > if { ac_try='./conftest$ac_cv_exeext' > { { case "(($ac_try" in >@@ -5463,39 +6155,40 @@ > *) ac_try_echo=$ac_try;; > esac > eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >-$as_echo "$ac_try_echo"; } >&5 >+printf "%s\n" "$ac_try_echo"; } >&5 > (eval "$ac_try") 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; }; }; then > cross_compiling=no > else > if test "$cross_compiling" = maybe; then > cross_compiling=yes > else >- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >-as_fn_error $? "cannot run C compiled programs. >+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} >+as_fn_error 77 "cannot run C compiled programs. > If you meant to cross compile, use \`--host'. > See \`config.log' for more details" "$LINENO" 5; } > fi > fi > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 >-$as_echo "$cross_compiling" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 >+printf "%s\n" "$cross_compiling" >&6; } > > rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out > ac_clean_files=$ac_clean_files_save >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 >-$as_echo_n "checking for suffix of object files... " >&6; } >-if ${ac_cv_objext+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 >+printf %s "checking for suffix of object files... " >&6; } >+if test ${ac_cv_objext+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > int >-main () >+main (void) > { > > ; >@@ -5509,11 +6202,12 @@ > *) ac_try_echo=$ac_try;; > esac > eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" >-$as_echo "$ac_try_echo"; } >&5 >+printf "%s\n" "$ac_try_echo"; } >&5 > (eval "$ac_compile") 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >- test $ac_status = 0; }; then : >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ test $ac_status = 0; } >+then : > for ac_file in conftest.o conftest.obj conftest.*; do > test -f "$ac_file" || continue; > case $ac_file in >@@ -5522,31 +6216,32 @@ > break;; > esac > done >-else >- $as_echo "$as_me: failed program was:" >&5 >+else $as_nop >+ printf "%s\n" "$as_me: failed program was:" >&5 > sed 's/^/| /' conftest.$ac_ext >&5 > >-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} > as_fn_error $? "cannot compute suffix of object files: cannot compile > See \`config.log' for more details" "$LINENO" 5; } > fi > rm -f conftest.$ac_cv_objext conftest.$ac_ext > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 >-$as_echo "$ac_cv_objext" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 >+printf "%s\n" "$ac_cv_objext" >&6; } > OBJEXT=$ac_cv_objext > ac_objext=$OBJEXT >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 >-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } >-if ${ac_cv_c_compiler_gnu+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 >+printf %s "checking whether the compiler supports GNU C... " >&6; } >+if test ${ac_cv_c_compiler_gnu+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > int >-main () >+main (void) > { > #ifndef __GNUC__ > choke me >@@ -5556,29 +6251,33 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_compiler_gnu=yes >-else >+else $as_nop > ac_compiler_gnu=no > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ac_cv_c_compiler_gnu=$ac_compiler_gnu > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 >-$as_echo "$ac_cv_c_compiler_gnu" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 >+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } >+ac_compiler_gnu=$ac_cv_c_compiler_gnu >+ > if test $ac_compiler_gnu = yes; then > GCC=yes > else > GCC= > fi >-ac_test_CFLAGS=${CFLAGS+set} >+ac_test_CFLAGS=${CFLAGS+y} > ac_save_CFLAGS=$CFLAGS >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 >-$as_echo_n "checking whether $CC accepts -g... " >&6; } >-if ${ac_cv_prog_cc_g+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 >+printf %s "checking whether $CC accepts -g... " >&6; } >+if test ${ac_cv_prog_cc_g+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_save_c_werror_flag=$ac_c_werror_flag > ac_c_werror_flag=yes > ac_cv_prog_cc_g=no >@@ -5587,57 +6286,60 @@ > /* end confdefs.h. */ > > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_cv_prog_cc_g=yes >-else >+else $as_nop > CFLAGS="" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > >-else >+else $as_nop > ac_c_werror_flag=$ac_save_c_werror_flag > CFLAGS="-g" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_cv_prog_cc_g=yes > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ac_c_werror_flag=$ac_save_c_werror_flag > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 >-$as_echo "$ac_cv_prog_cc_g" >&6; } >-if test "$ac_test_CFLAGS" = set; then >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 >+printf "%s\n" "$ac_cv_prog_cc_g" >&6; } >+if test $ac_test_CFLAGS; then > CFLAGS=$ac_save_CFLAGS > elif test $ac_cv_prog_cc_g = yes; then > if test "$GCC" = yes; then >@@ -5652,95 +6354,145 @@ > CFLAGS= > fi > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 >-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } >-if ${ac_cv_prog_cc_c89+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >- ac_cv_prog_cc_c89=no >+ac_prog_cc_stdc=no >+if test x$ac_prog_cc_stdc = xno >+then : >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 >+printf %s "checking for $CC option to enable C11 features... " >&6; } >+if test ${ac_cv_prog_cc_c11+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ ac_cv_prog_cc_c11=no > ac_save_CC=$CC > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >-#include <stdarg.h> >-#include <stdio.h> >-struct stat; >-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ >-struct buf { int x; }; >-FILE * (*rcsopen) (struct buf *, struct stat *, int); >-static char *e (p, i) >- char **p; >- int i; >-{ >- return p[i]; >-} >-static char *f (char * (*g) (char **, int), char **p, ...) >-{ >- char *s; >- va_list v; >- va_start (v,p); >- s = g (p, va_arg (v,int)); >- va_end (v); >- return s; >-} >+$ac_c_conftest_c11_program >+_ACEOF >+for ac_arg in '' -std=gnu11 >+do >+ CC="$ac_save_CC $ac_arg" >+ if ac_fn_c_try_compile "$LINENO" >+then : >+ ac_cv_prog_cc_c11=$ac_arg >+fi >+rm -f core conftest.err conftest.$ac_objext conftest.beam >+ test "x$ac_cv_prog_cc_c11" != "xno" && break >+done >+rm -f conftest.$ac_ext >+CC=$ac_save_CC >+fi > >-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has >- function prototypes and stuff, but not '\xHH' hex character constants. >- These don't provoke an error unfortunately, instead are silently treated >- as 'x'. The following induces an error, until -std is added to get >- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an >- array size at least. It's necessary to write '\x00'==0 to get something >- that's true only with -std. */ >-int osf4_cc_array ['\x00' == 0 ? 1 : -1]; >+if test "x$ac_cv_prog_cc_c11" = xno >+then : >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 >+printf "%s\n" "unsupported" >&6; } >+else $as_nop >+ if test "x$ac_cv_prog_cc_c11" = x >+then : >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 >+printf "%s\n" "none needed" >&6; } >+else $as_nop >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 >+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } >+ CC="$CC $ac_cv_prog_cc_c11" >+fi >+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 >+ ac_prog_cc_stdc=c11 >+fi >+fi >+if test x$ac_prog_cc_stdc = xno >+then : >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 >+printf %s "checking for $CC option to enable C99 features... " >&6; } >+if test ${ac_cv_prog_cc_c99+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ ac_cv_prog_cc_c99=no >+ac_save_CC=$CC >+cat confdefs.h - <<_ACEOF >conftest.$ac_ext >+/* end confdefs.h. */ >+$ac_c_conftest_c99_program >+_ACEOF >+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= >+do >+ CC="$ac_save_CC $ac_arg" >+ if ac_fn_c_try_compile "$LINENO" >+then : >+ ac_cv_prog_cc_c99=$ac_arg >+fi >+rm -f core conftest.err conftest.$ac_objext conftest.beam >+ test "x$ac_cv_prog_cc_c99" != "xno" && break >+done >+rm -f conftest.$ac_ext >+CC=$ac_save_CC >+fi > >-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters >- inside strings and character constants. */ >-#define FOO(x) 'x' >-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; >- >-int test (int i, double x); >-struct s1 {int (*f) (int a);}; >-struct s2 {int (*f) (double a);}; >-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); >-int argc; >-char **argv; >-int >-main () >-{ >-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; >- ; >- return 0; >-} >+if test "x$ac_cv_prog_cc_c99" = xno >+then : >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 >+printf "%s\n" "unsupported" >&6; } >+else $as_nop >+ if test "x$ac_cv_prog_cc_c99" = x >+then : >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 >+printf "%s\n" "none needed" >&6; } >+else $as_nop >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 >+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } >+ CC="$CC $ac_cv_prog_cc_c99" >+fi >+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 >+ ac_prog_cc_stdc=c99 >+fi >+fi >+if test x$ac_prog_cc_stdc = xno >+then : >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 >+printf %s "checking for $CC option to enable C89 features... " >&6; } >+if test ${ac_cv_prog_cc_c89+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ ac_cv_prog_cc_c89=no >+ac_save_CC=$CC >+cat confdefs.h - <<_ACEOF >conftest.$ac_ext >+/* end confdefs.h. */ >+$ac_c_conftest_c89_program > _ACEOF >-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ >- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" >+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" > do > CC="$ac_save_CC $ac_arg" >- if ac_fn_c_try_compile "$LINENO"; then : >+ if ac_fn_c_try_compile "$LINENO" >+then : > ac_cv_prog_cc_c89=$ac_arg > fi >-rm -f core conftest.err conftest.$ac_objext >+rm -f core conftest.err conftest.$ac_objext conftest.beam > test "x$ac_cv_prog_cc_c89" != "xno" && break > done > rm -f conftest.$ac_ext > CC=$ac_save_CC >- > fi >-# AC_CACHE_VAL >-case "x$ac_cv_prog_cc_c89" in >- x) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 >-$as_echo "none needed" >&6; } ;; >- xno) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 >-$as_echo "unsupported" >&6; } ;; >- *) >- CC="$CC $ac_cv_prog_cc_c89" >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 >-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; >-esac >-if test "x$ac_cv_prog_cc_c89" != xno; then : > >+if test "x$ac_cv_prog_cc_c89" = xno >+then : >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 >+printf "%s\n" "unsupported" >&6; } >+else $as_nop >+ if test "x$ac_cv_prog_cc_c89" = x >+then : >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 >+printf "%s\n" "none needed" >&6; } >+else $as_nop >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 >+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } >+ CC="$CC $ac_cv_prog_cc_c89" > fi >+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 >+ ac_prog_cc_stdc=c89 >+fi >+fi > > ac_ext=c > ac_cpp='$CPP $CPPFLAGS' >@@ -5748,21 +6500,23 @@ > ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' > ac_compiler_gnu=$ac_cv_c_compiler_gnu > >-ac_ext=c >+ >+ ac_ext=c > ac_cpp='$CPP $CPPFLAGS' > ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' > ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' > ac_compiler_gnu=$ac_cv_c_compiler_gnu >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 >-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } >-if ${am_cv_prog_cc_c_o+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 >+printf %s "checking whether $CC understands -c and -o together... " >&6; } >+if test ${am_cv_prog_cc_c_o+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > int >-main () >+main (void) > { > > ; >@@ -5790,8 +6544,8 @@ > rm -f core conftest* > unset am_i > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 >-$as_echo "$am_cv_prog_cc_c_o" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 >+printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } > if test "$am_cv_prog_cc_c_o" != yes; then > # Losing compiler, so override with the script. > # FIXME: It is wrong to rewrite CC. >@@ -5809,11 +6563,12 @@ > > depcc="$CC" am_compiler_list= > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 >-$as_echo_n "checking dependency style of $depcc... " >&6; } >-if ${am_cv_CC_dependencies_compiler_type+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 >+printf %s "checking dependency style of $depcc... " >&6; } >+if test ${am_cv_CC_dependencies_compiler_type+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then > # We make a subdir and do the tests there. Otherwise we can end up > # making bogus files that we don't know about and never remove. For >@@ -5920,8 +6675,8 @@ > fi > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 >-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 >+printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } > CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type > > if >@@ -5935,183 +6690,7 @@ > fi > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 >-$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } >-if ${ac_cv_prog_cc_c99+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >- ac_cv_prog_cc_c99=no >-ac_save_CC=$CC >-cat confdefs.h - <<_ACEOF >conftest.$ac_ext >-/* end confdefs.h. */ >-#include <stdarg.h> >-#include <stdbool.h> >-#include <stdlib.h> >-#include <wchar.h> >-#include <stdio.h> > >-// Check varargs macros. These examples are taken from C99 6.10.3.5. >-#define debug(...) fprintf (stderr, __VA_ARGS__) >-#define showlist(...) puts (#__VA_ARGS__) >-#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) >-static void >-test_varargs_macros (void) >-{ >- int x = 1234; >- int y = 5678; >- debug ("Flag"); >- debug ("X = %d\n", x); >- showlist (The first, second, and third items.); >- report (x>y, "x is %d but y is %d", x, y); >-} >- >-// Check long long types. >-#define BIG64 18446744073709551615ull >-#define BIG32 4294967295ul >-#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) >-#if !BIG_OK >- your preprocessor is broken; >-#endif >-#if BIG_OK >-#else >- your preprocessor is broken; >-#endif >-static long long int bignum = -9223372036854775807LL; >-static unsigned long long int ubignum = BIG64; >- >-struct incomplete_array >-{ >- int datasize; >- double data[]; >-}; >- >-struct named_init { >- int number; >- const wchar_t *name; >- double average; >-}; >- >-typedef const char *ccp; >- >-static inline int >-test_restrict (ccp restrict text) >-{ >- // See if C++-style comments work. >- // Iterate through items via the restricted pointer. >- // Also check for declarations in for loops. >- for (unsigned int i = 0; *(text+i) != '\0'; ++i) >- continue; >- return 0; >-} >- >-// Check varargs and va_copy. >-static void >-test_varargs (const char *format, ...) >-{ >- va_list args; >- va_start (args, format); >- va_list args_copy; >- va_copy (args_copy, args); >- >- const char *str; >- int number; >- float fnumber; >- >- while (*format) >- { >- switch (*format++) >- { >- case 's': // string >- str = va_arg (args_copy, const char *); >- break; >- case 'd': // int >- number = va_arg (args_copy, int); >- break; >- case 'f': // float >- fnumber = va_arg (args_copy, double); >- break; >- default: >- break; >- } >- } >- va_end (args_copy); >- va_end (args); >-} >- >-int >-main () >-{ >- >- // Check bool. >- _Bool success = false; >- >- // Check restrict. >- if (test_restrict ("String literal") == 0) >- success = true; >- char *restrict newvar = "Another string"; >- >- // Check varargs. >- test_varargs ("s, d' f .", "string", 65, 34.234); >- test_varargs_macros (); >- >- // Check flexible array members. >- struct incomplete_array *ia = >- malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); >- ia->datasize = 10; >- for (int i = 0; i < ia->datasize; ++i) >- ia->data[i] = i * 1.234; >- >- // Check named initializers. >- struct named_init ni = { >- .number = 34, >- .name = L"Test wide string", >- .average = 543.34343, >- }; >- >- ni.number = 58; >- >- int dynamic_array[ni.number]; >- dynamic_array[ni.number - 1] = 543; >- >- // work around unused variable warnings >- return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' >- || dynamic_array[ni.number - 1] != 543); >- >- ; >- return 0; >-} >-_ACEOF >-for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 >-do >- CC="$ac_save_CC $ac_arg" >- if ac_fn_c_try_compile "$LINENO"; then : >- ac_cv_prog_cc_c99=$ac_arg >-fi >-rm -f core conftest.err conftest.$ac_objext >- test "x$ac_cv_prog_cc_c99" != "xno" && break >-done >-rm -f conftest.$ac_ext >-CC=$ac_save_CC >- >-fi >-# AC_CACHE_VAL >-case "x$ac_cv_prog_cc_c99" in >- x) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 >-$as_echo "none needed" >&6; } ;; >- xno) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 >-$as_echo "unsupported" >&6; } ;; >- *) >- CC="$CC $ac_cv_prog_cc_c99" >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 >-$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; >-esac >-if test "x$ac_cv_prog_cc_c99" != xno; then : >- >-fi >- >- > if test x$ac_cv_prog_cc_c99 = xno ; then > as_fn_error $? "No C99 compiler was found." "$LINENO" 5 > fi >@@ -6126,11 +6705,12 @@ > > depcc="$CCAS" am_compiler_list= > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 >-$as_echo_n "checking dependency style of $depcc... " >&6; } >-if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 >+printf %s "checking dependency style of $depcc... " >&6; } >+if test ${am_cv_CCAS_dependencies_compiler_type+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then > # We make a subdir and do the tests there. Otherwise we can end up > # making bogus files that we don't know about and never remove. For >@@ -6235,8 +6815,8 @@ > fi > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 >-$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 >+printf "%s\n" "$am_cv_CCAS_dependencies_compiler_type" >&6; } > CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type > > if >@@ -6251,45 +6831,287 @@ > > > >+ac_header= ac_cache= >+for ac_item in $ac_header_c_list >+do >+ if test $ac_cache; then >+ ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" >+ if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then >+ printf "%s\n" "#define $ac_item 1" >> confdefs.h >+ fi >+ ac_header= ac_cache= >+ elif test $ac_header; then >+ ac_cache=$ac_item >+ else >+ ac_header=$ac_item >+ fi >+done >+ >+ >+ >+ >+ >+ >+ >+ >+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes >+then : >+ >+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h >+ >+fi >+ >+ >+ >+ >+ >+ >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 >+printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } >+if test ${ac_cv_safe_to_define___extensions__+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext >+/* end confdefs.h. */ >+ >+# define __EXTENSIONS__ 1 >+ $ac_includes_default >+int >+main (void) >+{ >+ >+ ; >+ return 0; >+} >+_ACEOF >+if ac_fn_c_try_compile "$LINENO" >+then : >+ ac_cv_safe_to_define___extensions__=yes >+else $as_nop >+ ac_cv_safe_to_define___extensions__=no >+fi >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext >+fi >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 >+printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } >+ >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 >+printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } >+if test ${ac_cv_should_define__xopen_source+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ ac_cv_should_define__xopen_source=no >+ if test $ac_cv_header_wchar_h = yes >+then : >+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext >+/* end confdefs.h. */ >+ >+ #include <wchar.h> >+ mbstate_t x; >+int >+main (void) >+{ >+ >+ ; >+ return 0; >+} >+_ACEOF >+if ac_fn_c_try_compile "$LINENO" >+then : >+ >+else $as_nop >+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext >+/* end confdefs.h. */ >+ >+ #define _XOPEN_SOURCE 500 >+ #include <wchar.h> >+ mbstate_t x; >+int >+main (void) >+{ >+ >+ ; >+ return 0; >+} >+_ACEOF >+if ac_fn_c_try_compile "$LINENO" >+then : >+ ac_cv_should_define__xopen_source=yes >+fi >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext >+fi >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext >+fi >+fi >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 >+printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } >+ >+ printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h >+ >+ printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h >+ >+ printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h >+ >+ printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h >+ >+ printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h >+ >+ printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h >+ >+ printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h >+ >+ printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h >+ >+ printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h >+ >+ printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h >+ >+ printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h >+ >+ printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h >+ >+ printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h >+ >+ printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h >+ >+ printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h >+ >+ if test $ac_cv_header_minix_config_h = yes >+then : >+ MINIX=yes >+ printf "%s\n" "#define _MINIX 1" >>confdefs.h >+ >+ printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h >+ >+ printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h >+ >+else $as_nop >+ MINIX= >+fi >+ if test $ac_cv_safe_to_define___extensions__ = yes >+then : >+ printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h >+ >+fi >+ if test $ac_cv_should_define__xopen_source = yes >+then : >+ printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h >+ >+fi >+ >+ >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 >+printf %s "checking for a sed that does not truncate output... " >&6; } >+if test ${ac_cv_path_SED+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ >+ for ac_i in 1 2 3 4 5 6 7; do >+ ac_script="$ac_script$as_nl$ac_script" >+ done >+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed >+ { ac_script=; unset ac_script;} >+ if test -z "$SED"; then >+ ac_path_SED_found=false >+ # Loop through the user's path and test for each of PROGNAME-LIST >+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >+for as_dir in $PATH >+do >+ IFS=$as_save_IFS >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ for ac_prog in sed gsed >+ do >+ for ac_exec_ext in '' $ac_executable_extensions; do >+ ac_path_SED="$as_dir$ac_prog$ac_exec_ext" >+ as_fn_executable_p "$ac_path_SED" || continue >+# Check for GNU ac_path_SED and select it if it is found. >+ # Check for GNU $ac_path_SED >+case `"$ac_path_SED" --version 2>&1` in >+*GNU*) >+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; >+*) >+ ac_count=0 >+ printf %s 0123456789 >"conftest.in" >+ while : >+ do >+ cat "conftest.in" "conftest.in" >"conftest.tmp" >+ mv "conftest.tmp" "conftest.in" >+ cp "conftest.in" "conftest.nl" >+ printf "%s\n" '' >> "conftest.nl" >+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break >+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break >+ as_fn_arith $ac_count + 1 && ac_count=$as_val >+ if test $ac_count -gt ${ac_path_SED_max-0}; then >+ # Best one so far, save it but keep looking for a better one >+ ac_cv_path_SED="$ac_path_SED" >+ ac_path_SED_max=$ac_count >+ fi >+ # 10*(2^10) chars as input seems more than enough >+ test $ac_count -gt 10 && break >+ done >+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; >+esac >+ >+ $ac_path_SED_found && break 3 >+ done >+ done >+ done >+IFS=$as_save_IFS >+ if test -z "$ac_cv_path_SED"; then >+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 >+ fi >+else >+ ac_cv_path_SED=$SED >+fi >+ >+fi >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 >+printf "%s\n" "$ac_cv_path_SED" >&6; } >+ SED="$ac_cv_path_SED" >+ rm -f conftest.sed >+ > ac_ext=c > ac_cpp='$CPP $CPPFLAGS' > ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' > ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' > ac_compiler_gnu=$ac_cv_c_compiler_gnu >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 >-$as_echo_n "checking how to run the C preprocessor... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 >+printf %s "checking how to run the C preprocessor... " >&6; } > # On Suns, sometimes $CPP names a directory. > if test -n "$CPP" && test -d "$CPP"; then > CPP= > fi > if test -z "$CPP"; then >- if ${ac_cv_prog_CPP+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >- # Double quotes because CPP needs to be expanded >- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" >+ if test ${ac_cv_prog_CPP+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ # Double quotes because $CC needs to be expanded >+ for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp > do > ac_preproc_ok=false > for ac_c_preproc_warn_flag in '' yes > do > # Use a header file that comes with gcc, so configuring glibc > # with a fresh cross-compiler works. >- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- # <limits.h> exists even on freestanding compilers. > # On the NeXT, cc -E runs the code through the compiler's parser, > # not just through cpp. "Syntax error" is here to catch this case. > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >+#include <limits.h> > Syntax error > _ACEOF >-if ac_fn_c_try_cpp "$LINENO"; then : >+if ac_fn_c_try_cpp "$LINENO" >+then : > >-else >+else $as_nop > # Broken: fails on valid input. > continue > fi >@@ -6301,10 +7123,11 @@ > /* end confdefs.h. */ > #include <ac_nonexistent.h> > _ACEOF >-if ac_fn_c_try_cpp "$LINENO"; then : >+if ac_fn_c_try_cpp "$LINENO" >+then : > # Broken: success on invalid input. > continue >-else >+else $as_nop > # Passes both tests. > ac_preproc_ok=: > break >@@ -6314,7 +7137,8 @@ > done > # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. > rm -f conftest.i conftest.err conftest.$ac_ext >-if $ac_preproc_ok; then : >+if $ac_preproc_ok >+then : > break > fi > >@@ -6326,29 +7150,24 @@ > else > ac_cv_prog_CPP=$CPP > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 >-$as_echo "$CPP" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 >+printf "%s\n" "$CPP" >&6; } > ac_preproc_ok=false > for ac_c_preproc_warn_flag in '' yes > do > # Use a header file that comes with gcc, so configuring glibc > # with a fresh cross-compiler works. >- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- # <limits.h> exists even on freestanding compilers. > # On the NeXT, cc -E runs the code through the compiler's parser, > # not just through cpp. "Syntax error" is here to catch this case. > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >+#include <limits.h> > Syntax error > _ACEOF >-if ac_fn_c_try_cpp "$LINENO"; then : >+if ac_fn_c_try_cpp "$LINENO" >+then : > >-else >+else $as_nop > # Broken: fails on valid input. > continue > fi >@@ -6360,10 +7179,11 @@ > /* end confdefs.h. */ > #include <ac_nonexistent.h> > _ACEOF >-if ac_fn_c_try_cpp "$LINENO"; then : >+if ac_fn_c_try_cpp "$LINENO" >+then : > # Broken: success on invalid input. > continue >-else >+else $as_nop > # Passes both tests. > ac_preproc_ok=: > break >@@ -6373,11 +7193,12 @@ > done > # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. > rm -f conftest.i conftest.err conftest.$ac_ext >-if $ac_preproc_ok; then : >+if $ac_preproc_ok >+then : > >-else >- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+else $as_nop >+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} > as_fn_error $? "C preprocessor \"$CPP\" fails sanity check > See \`config.log' for more details" "$LINENO" 5; } > fi >@@ -6389,11 +7210,12 @@ > ac_compiler_gnu=$ac_cv_c_compiler_gnu > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 >-$as_echo_n "checking for grep that handles long lines and -e... " >&6; } >-if ${ac_cv_path_GREP+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 >+printf %s "checking for grep that handles long lines and -e... " >&6; } >+if test ${ac_cv_path_GREP+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -z "$GREP"; then > ac_path_GREP_found=false > # Loop through the user's path and test for each of PROGNAME-LIST >@@ -6401,10 +7223,15 @@ > for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_prog in grep ggrep; do >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ for ac_prog in grep ggrep >+ do > for ac_exec_ext in '' $ac_executable_extensions; do >- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" >+ ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" > as_fn_executable_p "$ac_path_GREP" || continue > # Check for GNU ac_path_GREP and select it if it is found. > # Check for GNU $ac_path_GREP >@@ -6413,13 +7240,13 @@ > ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; > *) > ac_count=0 >- $as_echo_n 0123456789 >"conftest.in" >+ printf %s 0123456789 >"conftest.in" > while : > do > cat "conftest.in" "conftest.in" >"conftest.tmp" > mv "conftest.tmp" "conftest.in" > cp "conftest.in" "conftest.nl" >- $as_echo 'GREP' >> "conftest.nl" >+ printf "%s\n" 'GREP' >> "conftest.nl" > "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break > diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break > as_fn_arith $ac_count + 1 && ac_count=$as_val >@@ -6447,16 +7274,17 @@ > fi > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 >-$as_echo "$ac_cv_path_GREP" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 >+printf "%s\n" "$ac_cv_path_GREP" >&6; } > GREP="$ac_cv_path_GREP" > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 >-$as_echo_n "checking for egrep... " >&6; } >-if ${ac_cv_path_EGREP+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 >+printf %s "checking for egrep... " >&6; } >+if test ${ac_cv_path_EGREP+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 > then ac_cv_path_EGREP="$GREP -E" > else >@@ -6467,10 +7295,15 @@ > for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_prog in egrep; do >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ for ac_prog in egrep >+ do > for ac_exec_ext in '' $ac_executable_extensions; do >- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" >+ ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" > as_fn_executable_p "$ac_path_EGREP" || continue > # Check for GNU ac_path_EGREP and select it if it is found. > # Check for GNU $ac_path_EGREP >@@ -6479,13 +7312,13 @@ > ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; > *) > ac_count=0 >- $as_echo_n 0123456789 >"conftest.in" >+ printf %s 0123456789 >"conftest.in" > while : > do > cat "conftest.in" "conftest.in" >"conftest.tmp" > mv "conftest.tmp" "conftest.in" > cp "conftest.in" "conftest.nl" >- $as_echo 'EGREP' >> "conftest.nl" >+ printf "%s\n" 'EGREP' >> "conftest.nl" > "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break > diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break > as_fn_arith $ac_count + 1 && ac_count=$as_val >@@ -6514,279 +7347,100 @@ > > fi > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 >-$as_echo "$ac_cv_path_EGREP" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 >+printf "%s\n" "$ac_cv_path_EGREP" >&6; } > EGREP="$ac_cv_path_EGREP" > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 >-$as_echo_n "checking for ANSI C header files... " >&6; } >-if ${ac_cv_header_stdc+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >- cat confdefs.h - <<_ACEOF >conftest.$ac_ext >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 >+printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } >+if test ${ac_cv_c_undeclared_builtin_options+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ ac_save_CFLAGS=$CFLAGS >+ ac_cv_c_undeclared_builtin_options='cannot detect' >+ for ac_arg in '' -fno-builtin; do >+ CFLAGS="$ac_save_CFLAGS $ac_arg" >+ # This test program should *not* compile successfully. >+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >-#include <stdlib.h> >-#include <stdarg.h> >-#include <string.h> >-#include <float.h> > > int >-main () >+main (void) > { >- >+(void) strchr; > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >- ac_cv_header_stdc=yes >-else >- ac_cv_header_stdc=no >-fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+if ac_fn_c_try_compile "$LINENO" >+then : > >-if test $ac_cv_header_stdc = yes; then >- # SunOS 4.x string.h does not declare mem*, contrary to ANSI. >- cat confdefs.h - <<_ACEOF >conftest.$ac_ext >+else $as_nop >+ # This test program should compile successfully. >+ # No library function is consistently available on >+ # freestanding implementations, so test against a dummy >+ # declaration. Include always-available headers on the >+ # off chance that they somehow elicit warnings. >+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >-#include <string.h> >+#include <float.h> >+#include <limits.h> >+#include <stdarg.h> >+#include <stddef.h> >+extern void ac_decl (int, char *); > >-_ACEOF >-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | >- $EGREP "memchr" >/dev/null 2>&1; then : >- >-else >- ac_cv_header_stdc=no >-fi >-rm -f conftest* >- >-fi >- >-if test $ac_cv_header_stdc = yes; then >- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. >- cat confdefs.h - <<_ACEOF >conftest.$ac_ext >-/* end confdefs.h. */ >-#include <stdlib.h> >- >-_ACEOF >-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | >- $EGREP "free" >/dev/null 2>&1; then : >- >-else >- ac_cv_header_stdc=no >-fi >-rm -f conftest* >- >-fi >- >-if test $ac_cv_header_stdc = yes; then >- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. >- if test "$cross_compiling" = yes; then : >- : >-else >- cat confdefs.h - <<_ACEOF >conftest.$ac_ext >-/* end confdefs.h. */ >-#include <ctype.h> >-#include <stdlib.h> >-#if ((' ' & 0x0FF) == 0x020) >-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') >-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) >-#else >-# define ISLOWER(c) \ >- (('a' <= (c) && (c) <= 'i') \ >- || ('j' <= (c) && (c) <= 'r') \ >- || ('s' <= (c) && (c) <= 'z')) >-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) >-#endif >- >-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) > int >-main () >+main (void) > { >- int i; >- for (i = 0; i < 256; i++) >- if (XOR (islower (i), ISLOWER (i)) >- || toupper (i) != TOUPPER (i)) >- return 2; >+(void) ac_decl (0, (char *) 0); >+ (void) ac_decl; >+ >+ ; > return 0; > } > _ACEOF >-if ac_fn_c_try_run "$LINENO"; then : >- >-else >- ac_cv_header_stdc=no >+if ac_fn_c_try_compile "$LINENO" >+then : >+ if test x"$ac_arg" = x >+then : >+ ac_cv_c_undeclared_builtin_options='none needed' >+else $as_nop >+ ac_cv_c_undeclared_builtin_options=$ac_arg > fi >-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ >- conftest.$ac_objext conftest.beam conftest.$ac_ext >+ break > fi >- >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 >-$as_echo "$ac_cv_header_stdc" >&6; } >-if test $ac_cv_header_stdc = yes; then >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext >+ done >+ CFLAGS=$ac_save_CFLAGS > >-$as_echo "#define STDC_HEADERS 1" >>confdefs.h >- > fi >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 >+printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } >+ case $ac_cv_c_undeclared_builtin_options in #( >+ 'cannot detect') : >+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} >+as_fn_error $? "cannot make $CC report undeclared builtins >+See \`config.log' for more details" "$LINENO" 5; } ;; #( >+ 'none needed') : >+ ac_c_undeclared_builtin_options='' ;; #( >+ *) : >+ ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; >+esac > >-# On IRIX 5.3, sys/types and inttypes.h are conflicting. >-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ >- inttypes.h stdint.h unistd.h >-do : >- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` >-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default >-" >-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : >- cat >>confdefs.h <<_ACEOF >-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >+case $enable_threads in #( >+ posix) : > >-fi >- >-done >- >- >- >- ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" >-if test "x$ac_cv_header_minix_config_h" = xyes; then : >- MINIX=yes >-else >- MINIX= >-fi >- >- >- if test "$MINIX" = yes; then >- >-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h >- >- >-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h >- >- >-$as_echo "#define _MINIX 1" >>confdefs.h >- >- fi >- >- >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 >-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } >-if ${ac_cv_safe_to_define___extensions__+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >- cat confdefs.h - <<_ACEOF >conftest.$ac_ext >-/* end confdefs.h. */ >- >-# define __EXTENSIONS__ 1 >- $ac_includes_default >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >- ac_cv_safe_to_define___extensions__=yes >-else >- ac_cv_safe_to_define___extensions__=no >-fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 >-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } >- test $ac_cv_safe_to_define___extensions__ = yes && >- $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h >- >- $as_echo "#define _ALL_SOURCE 1" >>confdefs.h >- >- $as_echo "#define _GNU_SOURCE 1" >>confdefs.h >- >- $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h >- >- $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h >- >- >- >-case $enable_threads in >- posix) > echo > echo "POSIX threading support:" >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 >-$as_echo_n "checking for a sed that does not truncate output... " >&6; } >-if ${ac_cv_path_SED+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >- ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ >- for ac_i in 1 2 3 4 5 6 7; do >- ac_script="$ac_script$as_nl$ac_script" >- done >- echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed >- { ac_script=; unset ac_script;} >- if test -z "$SED"; then >- ac_path_SED_found=false >- # Loop through the user's path and test for each of PROGNAME-LIST >- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_prog in sed gsed; do >- for ac_exec_ext in '' $ac_executable_extensions; do >- ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" >- as_fn_executable_p "$ac_path_SED" || continue >-# Check for GNU ac_path_SED and select it if it is found. >- # Check for GNU $ac_path_SED >-case `"$ac_path_SED" --version 2>&1` in >-*GNU*) >- ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; >-*) >- ac_count=0 >- $as_echo_n 0123456789 >"conftest.in" >- while : >- do >- cat "conftest.in" "conftest.in" >"conftest.tmp" >- mv "conftest.tmp" "conftest.in" >- cp "conftest.in" "conftest.nl" >- $as_echo '' >> "conftest.nl" >- "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break >- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break >- as_fn_arith $ac_count + 1 && ac_count=$as_val >- if test $ac_count -gt ${ac_path_SED_max-0}; then >- # Best one so far, save it but keep looking for a better one >- ac_cv_path_SED="$ac_path_SED" >- ac_path_SED_max=$ac_count >- fi >- # 10*(2^10) chars as input seems more than enough >- test $ac_count -gt 10 && break >- done >- rm -f conftest.in conftest.tmp conftest.nl conftest.out;; >-esac > >- $ac_path_SED_found && break 3 >- done >- done >- done >-IFS=$as_save_IFS >- if test -z "$ac_cv_path_SED"; then >- as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 >- fi >-else >- ac_cv_path_SED=$SED >-fi > >-fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 >-$as_echo "$ac_cv_path_SED" >&6; } >- SED="$ac_cv_path_SED" >- rm -f conftest.sed > > >- >- >- > ac_ext=c > ac_cpp='$CPP $CPPFLAGS' > ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >@@ -6806,38 +7460,41 @@ > ax_pthread_save_CC="$CC" > ax_pthread_save_CFLAGS="$CFLAGS" > ax_pthread_save_LIBS="$LIBS" >- if test "x$PTHREAD_CC" != "x"; then : >+ if test "x$PTHREAD_CC" != "x" >+then : > CC="$PTHREAD_CC" > fi >+ if test "x$PTHREAD_CXX" != "x" >+then : >+ CXX="$PTHREAD_CXX" >+fi > CFLAGS="$CFLAGS $PTHREAD_CFLAGS" > LIBS="$PTHREAD_LIBS $LIBS" >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5 >-$as_echo_n "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5 >+printf %s "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; } > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > /* Override any GCC internal prototype to avoid an error. > Use char because int might match the return type of a GCC > builtin and then its argument prototype would still apply. */ >-#ifdef __cplusplus >-extern "C" >-#endif > char pthread_join (); > int >-main () >+main (void) > { > return pthread_join (); > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > ax_pthread_ok=yes > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 >-$as_echo "$ax_pthread_ok" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 >+printf "%s\n" "$ax_pthread_ok" >&6; } > if test "x$ax_pthread_ok" = "xno"; then > PTHREAD_LIBS="" > PTHREAD_CFLAGS="" >@@ -6915,11 +7572,12 @@ > > _ACEOF > if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | >- $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1; then : >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 >-$as_echo "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} >+ $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1 >+then : >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 >+printf "%s\n" "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} > fi >-rm -f conftest* >+rm -rf conftest* > > ;; > >@@ -6939,11 +7597,12 @@ > > # Are we compiling with Clang? > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5 >-$as_echo_n "checking whether $CC is Clang... " >&6; } >-if ${ax_cv_PTHREAD_CLANG+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5 >+printf %s "checking whether $CC is Clang... " >&6; } >+if test ${ax_cv_PTHREAD_CLANG+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ax_cv_PTHREAD_CLANG=no > # Note that Autoconf sets GCC=yes for Clang as well as GCC > if test "x$GCC" = "xyes"; then >@@ -6956,16 +7615,17 @@ > > _ACEOF > if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | >- $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1; then : >+ $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 >+then : > ax_cv_PTHREAD_CLANG=yes > fi >-rm -f conftest* >+rm -rf conftest* > > fi > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 >-$as_echo "$ax_cv_PTHREAD_CLANG" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 >+printf "%s\n" "$ax_cv_PTHREAD_CLANG" >&6; } > ax_pthread_clang="$ax_cv_PTHREAD_CLANG" > > >@@ -6979,13 +7639,15 @@ > # [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 > # To solve this, first try -pthread together with -lpthread for GCC > >-if test "x$GCC" = "xyes"; then : >+if test "x$GCC" = "xyes" >+then : > ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags" > fi > > # Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first > >-if test "x$ax_pthread_clang" = "xyes"; then : >+if test "x$ax_pthread_clang" = "xyes" >+then : > ax_pthread_flags="-pthread,-lpthread -pthread" > fi > >@@ -7007,9 +7669,10 @@ > ax_pthread_check_macro="--" > ;; > esac >-if test "x$ax_pthread_check_macro" = "x--"; then : >+if test "x$ax_pthread_check_macro" = "x--" >+then : > ax_pthread_check_cond=0 >-else >+else $as_nop > ax_pthread_check_cond="!defined($ax_pthread_check_macro)" > fi > >@@ -7019,31 +7682,32 @@ > > case $ax_pthread_try_flag in > none) >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 >-$as_echo_n "checking whether pthreads work without any flags... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 >+printf %s "checking whether pthreads work without any flags... " >&6; } > ;; > > *,*) > PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` > PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"" >&5 >-$as_echo_n "checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"" >&5 >+printf %s "checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"... " >&6; } > ;; > > -*) >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5 >-$as_echo_n "checking whether pthreads work with $ax_pthread_try_flag... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5 >+printf %s "checking whether pthreads work with $ax_pthread_try_flag... " >&6; } > PTHREAD_CFLAGS="$ax_pthread_try_flag" > ;; > > pthread-config) > # Extract the first word of "pthread-config", so it can be a program name with args. > set dummy pthread-config; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ax_pthread_config+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ax_pthread_config+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ax_pthread_config"; then > ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test. > else >@@ -7051,11 +7715,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ax_pthread_config="yes" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -7067,15 +7735,16 @@ > fi > ax_pthread_config=$ac_cv_prog_ax_pthread_config > if test -n "$ax_pthread_config"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 >-$as_echo "$ax_pthread_config" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 >+printf "%s\n" "$ax_pthread_config" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >- if test "x$ax_pthread_config" = "xno"; then : >+ if test "x$ax_pthread_config" = "xno" >+then : > continue > fi > PTHREAD_CFLAGS="`pthread-config --cflags`" >@@ -7083,8 +7752,8 @@ > ;; > > *) >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5 >-$as_echo_n "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5 >+printf %s "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } > PTHREAD_LIBS="-l$ax_pthread_try_flag" > ;; > esac >@@ -7119,7 +7788,7 @@ > } > static void *start_routine(void *a) { return a; } > int >-main () >+main (void) > { > pthread_t th; pthread_attr_t attr; > pthread_create(&th, 0, start_routine, 0); >@@ -7131,18 +7800,20 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > ax_pthread_ok=yes > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > > CFLAGS="$ax_pthread_save_CFLAGS" > LIBS="$ax_pthread_save_LIBS" > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 >-$as_echo "$ax_pthread_ok" >&6; } >- if test "x$ax_pthread_ok" = "xyes"; then : >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 >+printf "%s\n" "$ax_pthread_ok" >&6; } >+ if test "x$ax_pthread_ok" = "xyes" >+then : > break > fi > >@@ -7188,11 +7859,12 @@ > # that build with -Werror. So if the active version of Clang has > # this misfeature, we search for an option to squash it. > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5 >-$as_echo_n "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; } >-if ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5 >+printf %s "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; } >+if test ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown > # Create an alternate version of $ac_link that compiles and > # links in two steps (.c -> .o, .o -> exe) instead of one >@@ -7200,11 +7872,12 @@ > # step > ax_pthread_save_ac_link="$ac_link" > ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' >- ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"` >+ ax_pthread_link_step=`printf "%s\n" "$ac_link" | sed "$ax_pthread_sed"` > ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" > ax_pthread_save_CFLAGS="$CFLAGS" > for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do >- if test "x$ax_pthread_try" = "xunknown"; then : >+ if test "x$ax_pthread_try" = "xunknown" >+then : > break > fi > CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" >@@ -7213,32 +7886,35 @@ > /* end confdefs.h. */ > int main(void){return 0;} > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > ac_link="$ax_pthread_2step_ac_link" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > int main(void){return 0;} > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > break > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > done > ac_link="$ax_pthread_save_ac_link" > CFLAGS="$ax_pthread_save_CFLAGS" >- if test "x$ax_pthread_try" = "x"; then : >+ if test "x$ax_pthread_try" = "x" >+then : > ax_pthread_try=no > fi > ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 >-$as_echo "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 >+printf "%s\n" "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } > > case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in > no | unknown) ;; >@@ -7257,51 +7933,53 @@ > LIBS="$PTHREAD_LIBS $LIBS" > > # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 >-$as_echo_n "checking for joinable pthread attribute... " >&6; } >-if ${ax_cv_PTHREAD_JOINABLE_ATTR+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 >+printf %s "checking for joinable pthread attribute... " >&6; } >+if test ${ax_cv_PTHREAD_JOINABLE_ATTR+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ax_cv_PTHREAD_JOINABLE_ATTR=unknown > for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > #include <pthread.h> > int >-main () >+main (void) > { > int attr = $ax_pthread_attr; return attr /* ; */ > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > done > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 >-$as_echo "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 >+printf "%s\n" "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } > if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ > test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ >- test "x$ax_pthread_joinable_attr_defined" != "xyes"; then : >+ test "x$ax_pthread_joinable_attr_defined" != "xyes" >+then : > >-cat >>confdefs.h <<_ACEOF >-#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR >-_ACEOF >+printf "%s\n" "#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR" >>confdefs.h > > ax_pthread_joinable_attr_defined=yes > > fi > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5 >-$as_echo_n "checking whether more special flags are required for pthreads... " >&6; } >-if ${ax_cv_PTHREAD_SPECIAL_FLAGS+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5 >+printf %s "checking whether more special flags are required for pthreads... " >&6; } >+if test ${ax_cv_PTHREAD_SPECIAL_FLAGS+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ax_cv_PTHREAD_SPECIAL_FLAGS=no > case $host_os in > solaris*) >@@ -7310,24 +7988,26 @@ > esac > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 >-$as_echo "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 >+printf "%s\n" "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } > if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ >- test "x$ax_pthread_special_flags_added" != "xyes"; then : >+ test "x$ax_pthread_special_flags_added" != "xyes" >+then : > PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" > ax_pthread_special_flags_added=yes > fi > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 >-$as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; } >-if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 >+printf %s "checking for PTHREAD_PRIO_INHERIT... " >&6; } >+if test ${ax_cv_PTHREAD_PRIO_INHERIT+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > #include <pthread.h> > int >-main () >+main (void) > { > int i = PTHREAD_PRIO_INHERIT; > return i; >@@ -7335,21 +8015,23 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > ax_cv_PTHREAD_PRIO_INHERIT=yes >-else >+else $as_nop > ax_cv_PTHREAD_PRIO_INHERIT=no > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 >-$as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 >+printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } > if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ >- test "x$ax_pthread_prio_inherit_defined" != "xyes"; then : >+ test "x$ax_pthread_prio_inherit_defined" != "xyes" >+then : > >-$as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h >+printf "%s\n" "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h > > ax_pthread_prio_inherit_defined=yes > >@@ -7367,19 +8049,31 @@ > #handle absolute path differently from PATH based program lookup > case "x$CC" in #( > x/*) : >- if as_fn_executable_p ${CC}_r; then : >+ >+ if as_fn_executable_p ${CC}_r >+then : > PTHREAD_CC="${CC}_r" >-fi ;; #( >+fi >+ if test "x${CXX}" != "x" >+then : >+ if as_fn_executable_p ${CXX}_r >+then : >+ PTHREAD_CXX="${CXX}_r" >+fi >+fi >+ ;; #( > *) : >- for ac_prog in ${CC}_r >+ >+ for ac_prog in ${CC}_r > do > # Extract the first word of "$ac_prog", so it can be a program name with args. > set dummy $ac_prog; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_PTHREAD_CC+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_PTHREAD_CC+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$PTHREAD_CC"; then > ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. > else >@@ -7387,11 +8081,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_PTHREAD_CC="$ac_prog" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -7402,19 +8100,73 @@ > fi > PTHREAD_CC=$ac_cv_prog_PTHREAD_CC > if test -n "$PTHREAD_CC"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 >-$as_echo "$PTHREAD_CC" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 >+printf "%s\n" "$PTHREAD_CC" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > > test -n "$PTHREAD_CC" && break > done > test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" >- ;; >-esac ;; #( >+ >+ if test "x${CXX}" != "x" >+then : >+ for ac_prog in ${CXX}_r >+do >+ # Extract the first word of "$ac_prog", so it can be a program name with args. >+set dummy $ac_prog; ac_word=$2 >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_PTHREAD_CXX+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ if test -n "$PTHREAD_CXX"; then >+ ac_cv_prog_PTHREAD_CXX="$PTHREAD_CXX" # Let the user override the test. >+else >+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >+for as_dir in $PATH >+do >+ IFS=$as_save_IFS >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ for ac_exec_ext in '' $ac_executable_extensions; do >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then >+ ac_cv_prog_PTHREAD_CXX="$ac_prog" >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 >+ break 2 >+ fi >+done >+ done >+IFS=$as_save_IFS >+ >+fi >+fi >+PTHREAD_CXX=$ac_cv_prog_PTHREAD_CXX >+if test -n "$PTHREAD_CXX"; then >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CXX" >&5 >+printf "%s\n" "$PTHREAD_CXX" >&6; } >+else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } >+fi >+ >+ >+ test -n "$PTHREAD_CXX" && break >+done >+test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" >+ >+fi >+ >+ ;; >+esac >+ ;; #( > *) : > ;; > esac >@@ -7424,11 +8176,13 @@ > fi > > test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" >+test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" > > > > > >+ > # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: > if test "x$ax_pthread_ok" = "xyes"; then > : >@@ -7448,7 +8202,7 @@ > > > >-$as_echo "#define MYTHREAD_POSIX 1" >>confdefs.h >+printf "%s\n" "#define MYTHREAD_POSIX 1" >>confdefs.h > > > # These are nice to have but not mandatory. >@@ -7460,11 +8214,12 @@ > # needed by liblzma. > OLD_CFLAGS=$CFLAGS > CFLAGS="$CFLAGS $PTHREAD_CFLAGS" >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 >-$as_echo_n "checking for library containing clock_gettime... " >&6; } >-if ${ac_cv_search_clock_gettime+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 >+printf %s "checking for library containing clock_gettime... " >&6; } >+if test ${ac_cv_search_clock_gettime+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_func_search_save_LIBS=$LIBS > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >@@ -7472,86 +8227,90 @@ > /* Override any GCC internal prototype to avoid an error. > Use char because int might match the return type of a GCC > builtin and then its argument prototype would still apply. */ >-#ifdef __cplusplus >-extern "C" >-#endif > char clock_gettime (); > int >-main () >+main (void) > { > return clock_gettime (); > ; > return 0; > } > _ACEOF >-for ac_lib in '' rt; do >+for ac_lib in '' rt >+do > if test -z "$ac_lib"; then > ac_res="none required" > else > ac_res=-l$ac_lib > LIBS="-l$ac_lib $ac_func_search_save_LIBS" > fi >- if ac_fn_c_try_link "$LINENO"; then : >+ if ac_fn_c_try_link "$LINENO" >+then : > ac_cv_search_clock_gettime=$ac_res > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext >- if ${ac_cv_search_clock_gettime+:} false; then : >+ if test ${ac_cv_search_clock_gettime+y} >+then : > break > fi > done >-if ${ac_cv_search_clock_gettime+:} false; then : >+if test ${ac_cv_search_clock_gettime+y} >+then : > >-else >+else $as_nop > ac_cv_search_clock_gettime=no > fi > rm conftest.$ac_ext > LIBS=$ac_func_search_save_LIBS > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 >-$as_echo "$ac_cv_search_clock_gettime" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 >+printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } > ac_res=$ac_cv_search_clock_gettime >-if test "$ac_res" != no; then : >+if test "$ac_res" != no >+then : > test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" > > fi > >- for ac_func in clock_gettime pthread_condattr_setclock >-do : >- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` >-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" >-if eval test \"x\$"$as_ac_var"\" = x"yes"; then : >- cat >>confdefs.h <<_ACEOF >-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >+ ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" >+if test "x$ac_cv_func_clock_gettime" = xyes >+then : >+ printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h > > fi >-done >+ac_fn_c_check_func "$LINENO" "pthread_condattr_setclock" "ac_cv_func_pthread_condattr_setclock" >+if test "x$ac_cv_func_pthread_condattr_setclock" = xyes >+then : >+ printf "%s\n" "#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1" >>confdefs.h > >- ac_fn_c_check_decl "$LINENO" "CLOCK_MONOTONIC" "ac_cv_have_decl_CLOCK_MONOTONIC" "#include <time.h> >-" >-if test "x$ac_cv_have_decl_CLOCK_MONOTONIC" = xyes; then : >- ac_have_decl=1 >-else >- ac_have_decl=0 > fi > >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_CLOCK_MONOTONIC $ac_have_decl >-_ACEOF >+ ac_fn_check_decl "$LINENO" "CLOCK_MONOTONIC" "ac_cv_have_decl_CLOCK_MONOTONIC" "#include <time.h> >+" "$ac_c_undeclared_builtin_options" "CFLAGS" >+if test "x$ac_cv_have_decl_CLOCK_MONOTONIC" = xyes >+then : > >+printf "%s\n" "#define HAVE_CLOCK_MONOTONIC 1" >>confdefs.h >+ >+fi > CFLAGS=$OLD_CFLAGS >- ;; >- win95) >+ ;; #( >+ win95) : > >-$as_echo "#define MYTHREAD_WIN95 1" >>confdefs.h > >- ;; >- vista) >+printf "%s\n" "#define MYTHREAD_WIN95 1" >>confdefs.h > >-$as_echo "#define MYTHREAD_VISTA 1" >>confdefs.h >+ ;; #( >+ vista) : > >- ;; >+ >+printf "%s\n" "#define MYTHREAD_VISTA 1" >>confdefs.h >+ >+ >+ ;; #( >+ *) : >+ ;; > esac > if test "x$enable_threads" != xno; then > COND_THREADS_TRUE= >@@ -7567,14 +8326,14 @@ > > case `pwd` in > *\ * | *\ *) >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 >-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 >+printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; > esac > > > >-macro_version='2.4.6.42-b88ce-dirty' >-macro_revision='2.4.6.42' >+macro_version='2.4.7.4-1ec8f-dirty' >+macro_revision='2.4.7.4' > > > >@@ -7588,6 +8347,7 @@ > > > >+ > ltmain=$ac_aux_dir/ltmain.sh > > # Backslashify metacharacters that are still active within >@@ -7611,8 +8371,8 @@ > ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO > ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 >-$as_echo_n "checking how to print strings... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 >+printf %s "checking how to print strings... " >&6; } > # Test print first, because it will be a builtin if present. > if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ > test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then >@@ -7638,12 +8398,12 @@ > } > > case $ECHO in >- printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 >-$as_echo "printf" >&6; } ;; >- print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 >-$as_echo "print -r" >&6; } ;; >- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 >-$as_echo "cat" >&6; } ;; >+ printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 >+printf "%s\n" "printf" >&6; } ;; >+ print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 >+printf "%s\n" "print -r" >&6; } ;; >+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 >+printf "%s\n" "cat" >&6; } ;; > esac > > >@@ -7659,11 +8419,12 @@ > > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 >-$as_echo_n "checking for a sed that does not truncate output... " >&6; } >-if ${ac_cv_path_SED+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 >+printf %s "checking for a sed that does not truncate output... " >&6; } >+if test ${ac_cv_path_SED+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ > for ac_i in 1 2 3 4 5 6 7; do > ac_script="$ac_script$as_nl$ac_script" >@@ -7677,10 +8438,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_prog in sed gsed; do >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ for ac_prog in sed gsed >+ do > for ac_exec_ext in '' $ac_executable_extensions; do >- ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" >+ ac_path_SED="$as_dir$ac_prog$ac_exec_ext" > as_fn_executable_p "$ac_path_SED" || continue > # Check for GNU ac_path_SED and select it if it is found. > # Check for GNU $ac_path_SED >@@ -7689,13 +8455,13 @@ > ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; > *) > ac_count=0 >- $as_echo_n 0123456789 >"conftest.in" >+ printf %s 0123456789 >"conftest.in" > while : > do > cat "conftest.in" "conftest.in" >"conftest.tmp" > mv "conftest.tmp" "conftest.in" > cp "conftest.in" "conftest.nl" >- $as_echo '' >> "conftest.nl" >+ printf "%s\n" '' >> "conftest.nl" > "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break > diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break > as_fn_arith $ac_count + 1 && ac_count=$as_val >@@ -7723,8 +8489,8 @@ > fi > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 >-$as_echo "$ac_cv_path_SED" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 >+printf "%s\n" "$ac_cv_path_SED" >&6; } > SED="$ac_cv_path_SED" > rm -f conftest.sed > >@@ -7741,11 +8507,12 @@ > > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 >-$as_echo_n "checking for fgrep... " >&6; } >-if ${ac_cv_path_FGREP+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 >+printf %s "checking for fgrep... " >&6; } >+if test ${ac_cv_path_FGREP+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 > then ac_cv_path_FGREP="$GREP -F" > else >@@ -7756,10 +8523,15 @@ > for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_prog in fgrep; do >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ for ac_prog in fgrep >+ do > for ac_exec_ext in '' $ac_executable_extensions; do >- ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" >+ ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" > as_fn_executable_p "$ac_path_FGREP" || continue > # Check for GNU ac_path_FGREP and select it if it is found. > # Check for GNU $ac_path_FGREP >@@ -7768,13 +8540,13 @@ > ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; > *) > ac_count=0 >- $as_echo_n 0123456789 >"conftest.in" >+ printf %s 0123456789 >"conftest.in" > while : > do > cat "conftest.in" "conftest.in" >"conftest.tmp" > mv "conftest.tmp" "conftest.in" > cp "conftest.in" "conftest.nl" >- $as_echo 'FGREP' >> "conftest.nl" >+ printf "%s\n" 'FGREP' >> "conftest.nl" > "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break > diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break > as_fn_arith $ac_count + 1 && ac_count=$as_val >@@ -7803,8 +8575,8 @@ > > fi > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 >-$as_echo "$ac_cv_path_FGREP" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 >+printf "%s\n" "$ac_cv_path_FGREP" >&6; } > FGREP="$ac_cv_path_FGREP" > > >@@ -7829,17 +8601,18 @@ > > > # Check whether --with-gnu-ld was given. >-if test "${with_gnu_ld+set}" = set; then : >+if test ${with_gnu_ld+y} >+then : > withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes >-else >+else $as_nop > with_gnu_ld=no > fi > > ac_prog=ld > if test yes = "$GCC"; then > # Check if gcc -print-prog-name=ld gives a path. >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 >-$as_echo_n "checking for ld used by $CC... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 >+printf %s "checking for ld used by $CC... " >&6; } > case $host in > *-*-mingw*) > # gcc leaves a trailing carriage return, which upsets mingw >@@ -7868,15 +8641,16 @@ > ;; > esac > elif test yes = "$with_gnu_ld"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 >-$as_echo_n "checking for GNU ld... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 >+printf %s "checking for GNU ld... " >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 >-$as_echo_n "checking for non-GNU ld... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 >+printf %s "checking for non-GNU ld... " >&6; } > fi >-if ${lt_cv_path_LD+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+if test ${lt_cv_path_LD+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -z "$LD"; then > lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR > for ac_dir in $PATH; do >@@ -7905,18 +8679,19 @@ > > LD=$lt_cv_path_LD > if test -n "$LD"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 >-$as_echo "$LD" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 >+printf "%s\n" "$LD" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 >-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } >-if ${lt_cv_prog_gnu_ld+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 >+printf %s "checking if the linker ($LD) is GNU ld... " >&6; } >+if test ${lt_cv_prog_gnu_ld+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > # I'd rather use --version here, but apparently some GNU lds only accept -v. > case `$LD -v 2>&1 </dev/null` in > *GNU* | *'with BFD'*) >@@ -7927,8 +8702,8 @@ > ;; > esac > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 >-$as_echo "$lt_cv_prog_gnu_ld" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 >+printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } > with_gnu_ld=$lt_cv_prog_gnu_ld > > >@@ -7939,11 +8714,12 @@ > > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 >-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } >-if ${lt_cv_path_NM+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 >+printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } >+if test ${lt_cv_path_NM+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$NM"; then > # Let the user override the test. > lt_cv_path_NM=$NM >@@ -7968,13 +8744,13 @@ > mingw*) lt_bad_file=conftest.nm/nofile ;; > *) lt_bad_file=/dev/null ;; > esac >- case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in >+ case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in > *$lt_bad_file* | *'Invalid file or object type'*) > lt_cv_path_NM="$tmp_nm -B" > break 2 > ;; > *) >- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in >+ case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in > */dev/null*) > lt_cv_path_NM="$tmp_nm -p" > break 2 >@@ -7993,8 +8769,8 @@ > : ${lt_cv_path_NM=no} > fi > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 >-$as_echo "$lt_cv_path_NM" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 >+printf "%s\n" "$lt_cv_path_NM" >&6; } > if test no != "$lt_cv_path_NM"; then > NM=$lt_cv_path_NM > else >@@ -8007,11 +8783,12 @@ > do > # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. > set dummy $ac_tool_prefix$ac_prog; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_DUMPBIN+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_DUMPBIN+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$DUMPBIN"; then > ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. > else >@@ -8019,11 +8796,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -8034,11 +8815,11 @@ > fi > DUMPBIN=$ac_cv_prog_DUMPBIN > if test -n "$DUMPBIN"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 >-$as_echo "$DUMPBIN" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 >+printf "%s\n" "$DUMPBIN" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -8051,11 +8832,12 @@ > do > # Extract the first word of "$ac_prog", so it can be a program name with args. > set dummy $ac_prog; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_DUMPBIN+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_DUMPBIN"; then > ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. > else >@@ -8063,11 +8845,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -8078,11 +8864,11 @@ > fi > ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN > if test -n "$ac_ct_DUMPBIN"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 >-$as_echo "$ac_ct_DUMPBIN" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 >+printf "%s\n" "$ac_ct_DUMPBIN" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -8094,15 +8880,15 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > DUMPBIN=$ac_ct_DUMPBIN > fi > fi > >- case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in >+ case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in > *COFF*) > DUMPBIN="$DUMPBIN -symbols -headers" > ;; >@@ -8123,11 +8909,12 @@ > > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 >-$as_echo_n "checking the name lister ($NM) interface... " >&6; } >-if ${lt_cv_nm_interface+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 >+printf %s "checking the name lister ($NM) interface... " >&6; } >+if test ${lt_cv_nm_interface+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_nm_interface="BSD nm" > echo "int some_variable = 0;" > conftest.$ac_ext > (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) >@@ -8143,15 +8930,16 @@ > fi > rm -f conftest* > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 >-$as_echo "$lt_cv_nm_interface" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 >+printf "%s\n" "$lt_cv_nm_interface" >&6; } > > # find the maximum length of command line arguments >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 >-$as_echo_n "checking the maximum length of command line arguments... " >&6; } >-if ${lt_cv_sys_max_cmd_len+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 >+printf %s "checking the maximum length of command line arguments... " >&6; } >+if test ${lt_cv_sys_max_cmd_len+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > i=0 > teststring=ABCD > >@@ -8193,7 +8981,7 @@ > lt_cv_sys_max_cmd_len=8192; > ;; > >- bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) >+ bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) > # This has been around since 386BSD, at least. Likely further. > if test -x /sbin/sysctl; then > lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` >@@ -8236,7 +9024,7 @@ > sysv5* | sco5v6* | sysv4.2uw2*) > kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` > if test -n "$kargmax"; then >- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` >+ lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` > else > lt_cv_sys_max_cmd_len=32768 > fi >@@ -8278,11 +9066,11 @@ > fi > > if test -n "$lt_cv_sys_max_cmd_len"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 >-$as_echo "$lt_cv_sys_max_cmd_len" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 >+printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 >-$as_echo "none" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 >+printf "%s\n" "none" >&6; } > fi > max_cmd_len=$lt_cv_sys_max_cmd_len > >@@ -8326,11 +9114,12 @@ > > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 >-$as_echo_n "checking how to convert $build file names to $host format... " >&6; } >-if ${lt_cv_to_host_file_cmd+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 >+printf %s "checking how to convert $build file names to $host format... " >&6; } >+if test ${lt_cv_to_host_file_cmd+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > case $host in > *-*-mingw* ) > case $build in >@@ -8366,18 +9155,19 @@ > fi > > to_host_file_cmd=$lt_cv_to_host_file_cmd >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 >-$as_echo "$lt_cv_to_host_file_cmd" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 >+printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } > > > > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 >-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } >-if ${lt_cv_to_tool_file_cmd+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 >+printf %s "checking how to convert $build file names to toolchain format... " >&6; } >+if test ${lt_cv_to_tool_file_cmd+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > #assume ordinary cross tools, or native build. > lt_cv_to_tool_file_cmd=func_convert_file_noop > case $host in >@@ -8393,22 +9183,23 @@ > fi > > to_tool_file_cmd=$lt_cv_to_tool_file_cmd >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 >-$as_echo "$lt_cv_to_tool_file_cmd" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 >+printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } > > > > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 >-$as_echo_n "checking for $LD option to reload object files... " >&6; } >-if ${lt_cv_ld_reload_flag+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 >+printf %s "checking for $LD option to reload object files... " >&6; } >+if test ${lt_cv_ld_reload_flag+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_ld_reload_flag='-r' > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 >-$as_echo "$lt_cv_ld_reload_flag" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 >+printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } > reload_flag=$lt_cv_ld_reload_flag > case $reload_flag in > "" | " "*) ;; >@@ -8439,13 +9230,122 @@ > > > if test -n "$ac_tool_prefix"; then >+ # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args. >+set dummy ${ac_tool_prefix}file; ac_word=$2 >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_FILECMD+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ if test -n "$FILECMD"; then >+ ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. >+else >+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >+for as_dir in $PATH >+do >+ IFS=$as_save_IFS >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ for ac_exec_ext in '' $ac_executable_extensions; do >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then >+ ac_cv_prog_FILECMD="${ac_tool_prefix}file" >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 >+ break 2 >+ fi >+done >+ done >+IFS=$as_save_IFS >+ >+fi >+fi >+FILECMD=$ac_cv_prog_FILECMD >+if test -n "$FILECMD"; then >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 >+printf "%s\n" "$FILECMD" >&6; } >+else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } >+fi >+ >+ >+fi >+if test -z "$ac_cv_prog_FILECMD"; then >+ ac_ct_FILECMD=$FILECMD >+ # Extract the first word of "file", so it can be a program name with args. >+set dummy file; ac_word=$2 >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_FILECMD+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ if test -n "$ac_ct_FILECMD"; then >+ ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test. >+else >+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >+for as_dir in $PATH >+do >+ IFS=$as_save_IFS >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ for ac_exec_ext in '' $ac_executable_extensions; do >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then >+ ac_cv_prog_ac_ct_FILECMD="file" >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 >+ break 2 >+ fi >+done >+ done >+IFS=$as_save_IFS >+ >+fi >+fi >+ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD >+if test -n "$ac_ct_FILECMD"; then >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5 >+printf "%s\n" "$ac_ct_FILECMD" >&6; } >+else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } >+fi >+ >+ if test "x$ac_ct_FILECMD" = x; then >+ FILECMD=":" >+ else >+ case $cross_compiling:$ac_tool_warned in >+yes:) >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+ac_tool_warned=yes ;; >+esac >+ FILECMD=$ac_ct_FILECMD >+ fi >+else >+ FILECMD="$ac_cv_prog_FILECMD" >+fi >+ >+ >+ >+ >+ >+ >+ >+if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. > set dummy ${ac_tool_prefix}objdump; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_OBJDUMP+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_OBJDUMP+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$OBJDUMP"; then > ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. > else >@@ -8453,11 +9353,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -8468,11 +9372,11 @@ > fi > OBJDUMP=$ac_cv_prog_OBJDUMP > if test -n "$OBJDUMP"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 >-$as_echo "$OBJDUMP" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 >+printf "%s\n" "$OBJDUMP" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -8481,11 +9385,12 @@ > ac_ct_OBJDUMP=$OBJDUMP > # Extract the first word of "objdump", so it can be a program name with args. > set dummy objdump; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_OBJDUMP+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_OBJDUMP"; then > ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. > else >@@ -8493,11 +9398,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_OBJDUMP="objdump" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -8508,11 +9417,11 @@ > fi > ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP > if test -n "$ac_ct_OBJDUMP"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 >-$as_echo "$ac_ct_OBJDUMP" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 >+printf "%s\n" "$ac_ct_OBJDUMP" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_OBJDUMP" = x; then >@@ -8520,8 +9429,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > OBJDUMP=$ac_ct_OBJDUMP >@@ -8537,11 +9446,12 @@ > > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 >-$as_echo_n "checking how to recognize dependent libraries... " >&6; } >-if ${lt_cv_deplibs_check_method+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 >+printf %s "checking how to recognize dependent libraries... " >&6; } >+if test ${lt_cv_deplibs_check_method+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_file_magic_cmd='$MAGIC_CMD' > lt_cv_file_magic_test_file= > lt_cv_deplibs_check_method='unknown' >@@ -8567,7 +9477,7 @@ > > bsdi[45]*) > lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' >- lt_cv_file_magic_cmd='/usr/bin/file -L' >+ lt_cv_file_magic_cmd='$FILECMD -L' > lt_cv_file_magic_test_file=/shlib/libc.so > ;; > >@@ -8601,14 +9511,14 @@ > lt_cv_deplibs_check_method=pass_all > ;; > >-freebsd* | dragonfly*) >+freebsd* | dragonfly* | midnightbsd*) > if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then > case $host_cpu in > i*86 ) > # Not sure whether the presence of OpenBSD here was a mistake. > # Let's accept both of them until this is cleared up. > lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' >- lt_cv_file_magic_cmd=/usr/bin/file >+ lt_cv_file_magic_cmd=$FILECMD > lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` > ;; > esac >@@ -8622,7 +9532,7 @@ > ;; > > hpux10.20* | hpux11*) >- lt_cv_file_magic_cmd=/usr/bin/file >+ lt_cv_file_magic_cmd=$FILECMD > case $host_cpu in > ia64*) > lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' >@@ -8669,7 +9579,7 @@ > > newos6*) > lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' >- lt_cv_file_magic_cmd=/usr/bin/file >+ lt_cv_file_magic_cmd=$FILECMD > lt_cv_file_magic_test_file=/usr/lib/libnls.so > ;; > >@@ -8737,8 +9647,8 @@ > esac > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 >-$as_echo "$lt_cv_deplibs_check_method" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 >+printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } > > file_magic_glob= > want_nocaseglob=no >@@ -8782,11 +9692,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. > set dummy ${ac_tool_prefix}dlltool; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_DLLTOOL+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_DLLTOOL+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$DLLTOOL"; then > ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. > else >@@ -8794,11 +9705,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -8809,11 +9724,11 @@ > fi > DLLTOOL=$ac_cv_prog_DLLTOOL > if test -n "$DLLTOOL"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 >-$as_echo "$DLLTOOL" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 >+printf "%s\n" "$DLLTOOL" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -8822,11 +9737,12 @@ > ac_ct_DLLTOOL=$DLLTOOL > # Extract the first word of "dlltool", so it can be a program name with args. > set dummy dlltool; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_DLLTOOL+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_DLLTOOL"; then > ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. > else >@@ -8834,11 +9750,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_DLLTOOL="dlltool" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -8849,11 +9769,11 @@ > fi > ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL > if test -n "$ac_ct_DLLTOOL"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 >-$as_echo "$ac_ct_DLLTOOL" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 >+printf "%s\n" "$ac_ct_DLLTOOL" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_DLLTOOL" = x; then >@@ -8861,8 +9781,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > DLLTOOL=$ac_ct_DLLTOOL >@@ -8879,11 +9799,12 @@ > > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 >-$as_echo_n "checking how to associate runtime and link libraries... " >&6; } >-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 >+printf %s "checking how to associate runtime and link libraries... " >&6; } >+if test ${lt_cv_sharedlib_from_linklib_cmd+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_sharedlib_from_linklib_cmd='unknown' > > case $host_os in >@@ -8906,8 +9827,8 @@ > esac > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 >-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 >+printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } > sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd > test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO > >@@ -8922,11 +9843,12 @@ > do > # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. > set dummy $ac_tool_prefix$ac_prog; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_AR+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_AR+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$AR"; then > ac_cv_prog_AR="$AR" # Let the user override the test. > else >@@ -8934,11 +9856,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_AR="$ac_tool_prefix$ac_prog" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -8949,11 +9875,11 @@ > fi > AR=$ac_cv_prog_AR > if test -n "$AR"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 >-$as_echo "$AR" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 >+printf "%s\n" "$AR" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -8966,11 +9892,12 @@ > do > # Extract the first word of "$ac_prog", so it can be a program name with args. > set dummy $ac_prog; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_AR+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_AR+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_AR"; then > ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. > else >@@ -8978,11 +9905,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_AR="$ac_prog" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -8993,11 +9924,11 @@ > fi > ac_ct_AR=$ac_cv_prog_ac_ct_AR > if test -n "$ac_ct_AR"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 >-$as_echo "$ac_ct_AR" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 >+printf "%s\n" "$ac_ct_AR" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -9009,8 +9940,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > AR=$ac_ct_AR >@@ -9046,30 +9977,32 @@ > > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 >-$as_echo_n "checking for archiver @FILE support... " >&6; } >-if ${lt_cv_ar_at_file+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 >+printf %s "checking for archiver @FILE support... " >&6; } >+if test ${lt_cv_ar_at_file+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_ar_at_file=no > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > echo conftest.$ac_objext > conftest.lst > lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' > { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 > (eval $lt_ar_try) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; } > if test 0 -eq "$ac_status"; then > # Ensure the archiver fails upon bogus file names. >@@ -9077,7 +10010,7 @@ > { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 > (eval $lt_ar_try) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; } > if test 0 -ne "$ac_status"; then > lt_cv_ar_at_file=@ >@@ -9086,11 +10019,11 @@ > rm -f conftest.* libconftest.a > > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 >-$as_echo "$lt_cv_ar_at_file" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 >+printf "%s\n" "$lt_cv_ar_at_file" >&6; } > > if test no = "$lt_cv_ar_at_file"; then > archiver_list_spec= >@@ -9107,11 +10040,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. > set dummy ${ac_tool_prefix}strip; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_STRIP+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_STRIP+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$STRIP"; then > ac_cv_prog_STRIP="$STRIP" # Let the user override the test. > else >@@ -9119,11 +10053,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_STRIP="${ac_tool_prefix}strip" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -9134,11 +10072,11 @@ > fi > STRIP=$ac_cv_prog_STRIP > if test -n "$STRIP"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 >-$as_echo "$STRIP" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 >+printf "%s\n" "$STRIP" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -9147,11 +10085,12 @@ > ac_ct_STRIP=$STRIP > # Extract the first word of "strip", so it can be a program name with args. > set dummy strip; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_STRIP+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_STRIP+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_STRIP"; then > ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. > else >@@ -9159,11 +10098,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_STRIP="strip" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -9174,11 +10117,11 @@ > fi > ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP > if test -n "$ac_ct_STRIP"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 >-$as_echo "$ac_ct_STRIP" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 >+printf "%s\n" "$ac_ct_STRIP" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_STRIP" = x; then >@@ -9186,8 +10129,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > STRIP=$ac_ct_STRIP >@@ -9206,11 +10149,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. > set dummy ${ac_tool_prefix}ranlib; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_RANLIB+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_RANLIB+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$RANLIB"; then > ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. > else >@@ -9218,11 +10162,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -9233,11 +10181,11 @@ > fi > RANLIB=$ac_cv_prog_RANLIB > if test -n "$RANLIB"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 >-$as_echo "$RANLIB" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 >+printf "%s\n" "$RANLIB" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -9246,11 +10194,12 @@ > ac_ct_RANLIB=$RANLIB > # Extract the first word of "ranlib", so it can be a program name with args. > set dummy ranlib; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_RANLIB+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_RANLIB"; then > ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. > else >@@ -9258,11 +10207,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_RANLIB="ranlib" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -9273,11 +10226,11 @@ > fi > ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB > if test -n "$ac_ct_RANLIB"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 >-$as_echo "$ac_ct_RANLIB" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 >+printf "%s\n" "$ac_ct_RANLIB" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_RANLIB" = x; then >@@ -9285,8 +10238,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > RANLIB=$ac_ct_RANLIB >@@ -9375,11 +10328,12 @@ > > > # Check for command to grab the raw symbol name followed by C symbol from nm. >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 >-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } >-if ${lt_cv_sys_global_symbol_pipe+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 >+printf %s "checking command to parse $NM output from $compiler object... " >&6; } >+if test ${lt_cv_sys_global_symbol_pipe+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > > # These are sane defaults that work on at least a few old systems. > # [They come from Ultrix. What could be older than Ultrix?!! ;)] >@@ -9434,7 +10388,7 @@ > > if test "$lt_cv_nm_interface" = "MS dumpbin"; then > # Gets list of data symbols to import. >- lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" >+ lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" > # Adjust the below global symbol transforms to fixup imported variables. > lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" > lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" >@@ -9452,20 +10406,20 @@ > # Transform an extracted symbol line into a proper C declaration. > # Some systems (esp. on ia64) link data and code symbols differently, > # so use this general approach. >-lt_cv_sys_global_symbol_to_cdecl="sed -n"\ >+lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ > $lt_cdecl_hook\ > " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ > " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" > > # Transform an extracted symbol line into symbol name and symbol address >-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ >+lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ > $lt_c_name_hook\ > " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ > " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" > > # Transform an extracted symbol line into symbol name with lib prefix and > # symbol address. >-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ >+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ > $lt_c_name_lib_hook\ > " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ > " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ >@@ -9507,9 +10461,9 @@ > " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ > " ' prfx=^$ac_symprfx" > else >- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" >+ lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" > fi >- lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" >+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" > > # Check to see that the pipe works correctly. > pipe_works=no >@@ -9531,14 +10485,14 @@ > if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 > (eval $ac_compile) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; }; then > # Now try to grab the symbols. > nlist=conftest.nm > if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 > (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; } && test -s "$nlist"; then > # Try sorting and uniquifying the output. > if sort "$nlist" | uniq > "$nlist"T; then >@@ -9607,7 +10561,7 @@ > if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 > (eval $ac_link) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; } && test -s conftest$ac_exeext; then > pipe_works=yes > fi >@@ -9642,11 +10596,11 @@ > lt_cv_sys_global_symbol_to_cdecl= > fi > if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 >-$as_echo "failed" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 >+printf "%s\n" "failed" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 >-$as_echo "ok" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 >+printf "%s\n" "ok" >&6; } > fi > > # Response file support. >@@ -9692,13 +10646,14 @@ > > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 >-$as_echo_n "checking for sysroot... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 >+printf %s "checking for sysroot... " >&6; } > > # Check whether --with-sysroot was given. >-if test "${with_sysroot+set}" = set; then : >+if test ${with_sysroot+y} >+then : > withval=$with_sysroot; >-else >+else $as_nop > with_sysroot=no > fi > >@@ -9711,29 +10666,30 @@ > fi > ;; #( > /*) >- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` >+ lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` > ;; #( > no|'') > ;; #( > *) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 >-$as_echo "$with_sysroot" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 >+printf "%s\n" "$with_sysroot" >&6; } > as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 > ;; > esac > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 >-$as_echo "${lt_sysroot:-no}" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 >+printf "%s\n" "${lt_sysroot:-no}" >&6; } > > > > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 >-$as_echo_n "checking for a working dd... " >&6; } >-if ${ac_cv_path_lt_DD+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 >+printf %s "checking for a working dd... " >&6; } >+if test ${ac_cv_path_lt_DD+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > printf 0123456789abcdef0123456789abcdef >conftest.i > cat conftest.i conftest.i >conftest2.i > : ${lt_DD:=$DD} >@@ -9744,10 +10700,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_prog in dd; do >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ for ac_prog in dd >+ do > for ac_exec_ext in '' $ac_executable_extensions; do >- ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" >+ ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" > as_fn_executable_p "$ac_path_lt_DD" || continue > if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then > cmp -s conftest.i conftest.out \ >@@ -9767,15 +10728,16 @@ > > rm -f conftest.i conftest2.i conftest.out > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 >-$as_echo "$ac_cv_path_lt_DD" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 >+printf "%s\n" "$ac_cv_path_lt_DD" >&6; } > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 >-$as_echo_n "checking how to truncate binary pipes... " >&6; } >-if ${lt_cv_truncate_bin+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 >+printf %s "checking how to truncate binary pipes... " >&6; } >+if test ${lt_cv_truncate_bin+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > printf 0123456789abcdef0123456789abcdef >conftest.i > cat conftest.i conftest.i >conftest2.i > lt_cv_truncate_bin= >@@ -9786,8 +10748,8 @@ > rm -f conftest.i conftest2.i conftest.out > test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 >-$as_echo "$lt_cv_truncate_bin" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 >+printf "%s\n" "$lt_cv_truncate_bin" >&6; } > > > >@@ -9810,7 +10772,8 @@ > } > > # Check whether --enable-libtool-lock was given. >-if test "${enable_libtool_lock+set}" = set; then : >+if test ${enable_libtool_lock+y} >+then : > enableval=$enable_libtool_lock; > fi > >@@ -9826,9 +10789,9 @@ > if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 > (eval $ac_compile) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; }; then >- case `/usr/bin/file conftest.$ac_objext` in >+ case `$FILECMD conftest.$ac_objext` in > *ELF-32*) > HPUX_IA64_MODE=32 > ;; >@@ -9846,10 +10809,10 @@ > if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 > (eval $ac_compile) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; }; then > if test yes = "$lt_cv_prog_gnu_ld"; then >- case `/usr/bin/file conftest.$ac_objext` in >+ case `$FILECMD conftest.$ac_objext` in > *32-bit*) > LD="${LD-ld} -melf32bsmip" > ;; >@@ -9861,7 +10824,7 @@ > ;; > esac > else >- case `/usr/bin/file conftest.$ac_objext` in >+ case `$FILECMD conftest.$ac_objext` in > *32-bit*) > LD="${LD-ld} -32" > ;; >@@ -9884,10 +10847,10 @@ > if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 > (eval $ac_compile) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; }; then > emul=elf >- case `/usr/bin/file conftest.$ac_objext` in >+ case `$FILECMD conftest.$ac_objext` in > *32-bit*) > emul="${emul}32" > ;; >@@ -9895,7 +10858,7 @@ > emul="${emul}64" > ;; > esac >- case `/usr/bin/file conftest.$ac_objext` in >+ case `$FILECMD conftest.$ac_objext` in > *MSB*) > emul="${emul}btsmip" > ;; >@@ -9903,7 +10866,7 @@ > emul="${emul}ltsmip" > ;; > esac >- case `/usr/bin/file conftest.$ac_objext` in >+ case `$FILECMD conftest.$ac_objext` in > *N32*) > emul="${emul}n32" > ;; >@@ -9925,16 +10888,16 @@ > if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 > (eval $ac_compile) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; }; then >- case `/usr/bin/file conftest.o` in >+ case `$FILECMD conftest.o` in > *32-bit*) > case $host in > x86_64-*kfreebsd*-gnu) > LD="${LD-ld} -m elf_i386_fbsd" > ;; > x86_64-*linux*) >- case `/usr/bin/file conftest.o` in >+ case `$FILECMD conftest.o` in > *x86-64*) > LD="${LD-ld} -m elf32_x86_64" > ;; >@@ -9988,11 +10951,12 @@ > # On SCO OpenServer 5, we need -belf to get full-featured binaries. > SAVE_CFLAGS=$CFLAGS > CFLAGS="$CFLAGS -belf" >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 >-$as_echo_n "checking whether the C compiler needs -belf... " >&6; } >-if ${lt_cv_cc_needs_belf+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 >+printf %s "checking whether the C compiler needs -belf... " >&6; } >+if test ${lt_cv_cc_needs_belf+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_ext=c > ac_cpp='$CPP $CPPFLAGS' > ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >@@ -10003,19 +10967,20 @@ > /* end confdefs.h. */ > > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > lt_cv_cc_needs_belf=yes >-else >+else $as_nop > lt_cv_cc_needs_belf=no > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > ac_ext=c > ac_cpp='$CPP $CPPFLAGS' >@@ -10024,8 +10989,8 @@ > ac_compiler_gnu=$ac_cv_c_compiler_gnu > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 >-$as_echo "$lt_cv_cc_needs_belf" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 >+printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } > if test yes != "$lt_cv_cc_needs_belf"; then > # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf > CFLAGS=$SAVE_CFLAGS >@@ -10038,9 +11003,9 @@ > if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 > (eval $ac_compile) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; }; then >- case `/usr/bin/file conftest.o` in >+ case `$FILECMD conftest.o` in > *64-bit*) > case $lt_cv_prog_gnu_ld in > yes*) >@@ -10075,11 +11040,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. > set dummy ${ac_tool_prefix}mt; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_MANIFEST_TOOL+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$MANIFEST_TOOL"; then > ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. > else >@@ -10087,11 +11053,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10102,11 +11072,11 @@ > fi > MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL > if test -n "$MANIFEST_TOOL"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 >-$as_echo "$MANIFEST_TOOL" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 >+printf "%s\n" "$MANIFEST_TOOL" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -10115,11 +11085,12 @@ > ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL > # Extract the first word of "mt", so it can be a program name with args. > set dummy mt; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_MANIFEST_TOOL"; then > ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. > else >@@ -10127,11 +11098,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10142,11 +11117,11 @@ > fi > ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL > if test -n "$ac_ct_MANIFEST_TOOL"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 >-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 >+printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_MANIFEST_TOOL" = x; then >@@ -10154,8 +11129,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL >@@ -10165,11 +11140,12 @@ > fi > > test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 >-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } >-if ${lt_cv_path_mainfest_tool+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 >+printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } >+if test ${lt_cv_path_mainfest_tool+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_path_mainfest_tool=no > echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 > $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out >@@ -10179,8 +11155,8 @@ > fi > rm -f conftest* > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 >-$as_echo "$lt_cv_path_mainfest_tool" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 >+printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } > if test yes != "$lt_cv_path_mainfest_tool"; then > MANIFEST_TOOL=: > fi >@@ -10195,11 +11171,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. > set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_DSYMUTIL+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_DSYMUTIL+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$DSYMUTIL"; then > ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. > else >@@ -10207,11 +11184,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10222,11 +11203,11 @@ > fi > DSYMUTIL=$ac_cv_prog_DSYMUTIL > if test -n "$DSYMUTIL"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 >-$as_echo "$DSYMUTIL" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 >+printf "%s\n" "$DSYMUTIL" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -10235,11 +11216,12 @@ > ac_ct_DSYMUTIL=$DSYMUTIL > # Extract the first word of "dsymutil", so it can be a program name with args. > set dummy dsymutil; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_DSYMUTIL"; then > ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. > else >@@ -10247,11 +11229,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10262,11 +11248,11 @@ > fi > ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL > if test -n "$ac_ct_DSYMUTIL"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 >-$as_echo "$ac_ct_DSYMUTIL" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 >+printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_DSYMUTIL" = x; then >@@ -10274,8 +11260,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > DSYMUTIL=$ac_ct_DSYMUTIL >@@ -10287,11 +11273,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. > set dummy ${ac_tool_prefix}nmedit; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_NMEDIT+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_NMEDIT+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$NMEDIT"; then > ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. > else >@@ -10299,11 +11286,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10314,11 +11305,11 @@ > fi > NMEDIT=$ac_cv_prog_NMEDIT > if test -n "$NMEDIT"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 >-$as_echo "$NMEDIT" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 >+printf "%s\n" "$NMEDIT" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -10327,11 +11318,12 @@ > ac_ct_NMEDIT=$NMEDIT > # Extract the first word of "nmedit", so it can be a program name with args. > set dummy nmedit; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_NMEDIT+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_NMEDIT"; then > ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. > else >@@ -10339,11 +11331,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_NMEDIT="nmedit" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10354,11 +11350,11 @@ > fi > ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT > if test -n "$ac_ct_NMEDIT"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 >-$as_echo "$ac_ct_NMEDIT" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 >+printf "%s\n" "$ac_ct_NMEDIT" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_NMEDIT" = x; then >@@ -10366,8 +11362,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > NMEDIT=$ac_ct_NMEDIT >@@ -10379,11 +11375,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. > set dummy ${ac_tool_prefix}lipo; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_LIPO+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_LIPO+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$LIPO"; then > ac_cv_prog_LIPO="$LIPO" # Let the user override the test. > else >@@ -10391,11 +11388,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_LIPO="${ac_tool_prefix}lipo" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10406,11 +11407,11 @@ > fi > LIPO=$ac_cv_prog_LIPO > if test -n "$LIPO"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 >-$as_echo "$LIPO" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 >+printf "%s\n" "$LIPO" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -10419,11 +11420,12 @@ > ac_ct_LIPO=$LIPO > # Extract the first word of "lipo", so it can be a program name with args. > set dummy lipo; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_LIPO+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_LIPO+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_LIPO"; then > ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. > else >@@ -10431,11 +11433,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_LIPO="lipo" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10446,11 +11452,11 @@ > fi > ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO > if test -n "$ac_ct_LIPO"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 >-$as_echo "$ac_ct_LIPO" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 >+printf "%s\n" "$ac_ct_LIPO" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_LIPO" = x; then >@@ -10458,8 +11464,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > LIPO=$ac_ct_LIPO >@@ -10471,11 +11477,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. > set dummy ${ac_tool_prefix}otool; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_OTOOL+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_OTOOL+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$OTOOL"; then > ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. > else >@@ -10483,11 +11490,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_OTOOL="${ac_tool_prefix}otool" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10498,11 +11509,11 @@ > fi > OTOOL=$ac_cv_prog_OTOOL > if test -n "$OTOOL"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 >-$as_echo "$OTOOL" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 >+printf "%s\n" "$OTOOL" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -10511,11 +11522,12 @@ > ac_ct_OTOOL=$OTOOL > # Extract the first word of "otool", so it can be a program name with args. > set dummy otool; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_OTOOL+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_OTOOL"; then > ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. > else >@@ -10523,11 +11535,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_OTOOL="otool" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10538,11 +11554,11 @@ > fi > ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL > if test -n "$ac_ct_OTOOL"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 >-$as_echo "$ac_ct_OTOOL" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 >+printf "%s\n" "$ac_ct_OTOOL" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_OTOOL" = x; then >@@ -10550,8 +11566,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > OTOOL=$ac_ct_OTOOL >@@ -10563,11 +11579,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. > set dummy ${ac_tool_prefix}otool64; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_OTOOL64+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_OTOOL64+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$OTOOL64"; then > ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. > else >@@ -10575,11 +11592,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10590,11 +11611,11 @@ > fi > OTOOL64=$ac_cv_prog_OTOOL64 > if test -n "$OTOOL64"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 >-$as_echo "$OTOOL64" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 >+printf "%s\n" "$OTOOL64" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -10603,11 +11624,12 @@ > ac_ct_OTOOL64=$OTOOL64 > # Extract the first word of "otool64", so it can be a program name with args. > set dummy otool64; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_OTOOL64+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_OTOOL64"; then > ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. > else >@@ -10615,11 +11637,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_OTOOL64="otool64" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10630,11 +11656,11 @@ > fi > ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 > if test -n "$ac_ct_OTOOL64"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 >-$as_echo "$ac_ct_OTOOL64" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 >+printf "%s\n" "$ac_ct_OTOOL64" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_OTOOL64" = x; then >@@ -10642,8 +11668,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > OTOOL64=$ac_ct_OTOOL64 >@@ -10678,11 +11704,12 @@ > > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 >-$as_echo_n "checking for -single_module linker flag... " >&6; } >-if ${lt_cv_apple_cc_single_mod+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 >+printf %s "checking for -single_module linker flag... " >&6; } >+if test ${lt_cv_apple_cc_single_mod+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_apple_cc_single_mod=no > if test -z "$LT_MULTI_MODULE"; then > # By default we will add the -single_module flag. You can override >@@ -10711,14 +11738,15 @@ > rm -f conftest.* > fi > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 >-$as_echo "$lt_cv_apple_cc_single_mod" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 >+printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 >-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } >-if ${lt_cv_ld_exported_symbols_list+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 >+printf %s "checking for -exported_symbols_list linker flag... " >&6; } >+if test ${lt_cv_ld_exported_symbols_list+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_ld_exported_symbols_list=no > save_LDFLAGS=$LDFLAGS > echo "_main" > conftest.sym >@@ -10727,31 +11755,33 @@ > /* end confdefs.h. */ > > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > lt_cv_ld_exported_symbols_list=yes >-else >+else $as_nop > lt_cv_ld_exported_symbols_list=no > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > LDFLAGS=$save_LDFLAGS > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 >-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 >+printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 >-$as_echo_n "checking for -force_load linker flag... " >&6; } >-if ${lt_cv_ld_force_load+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 >+printf %s "checking for -force_load linker flag... " >&6; } >+if test ${lt_cv_ld_force_load+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_ld_force_load=no > cat > conftest.c << _LT_EOF > int forced_loaded() { return 2;} >@@ -10779,24 +11809,19 @@ > rm -rf conftest.dSYM > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 >-$as_echo "$lt_cv_ld_force_load" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 >+printf "%s\n" "$lt_cv_ld_force_load" >&6; } > case $host_os in > rhapsody* | darwin1.[012]) > _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; > darwin1.*) > _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; >- darwin*) # darwin 5.x on >- # if running on 10.5 or later, the deployment target defaults >- # to the OS version, if on x86, and 10.4, the deployment >- # target defaults to 10.4. Don't you love it? >- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in >- 10.0,*86*-darwin8*|10.0,*-darwin[91]*) >- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; >- 10.[012][,.]*) >- _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; >- 10.*) >- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; >+ darwin*) >+ case $MACOSX_DEPLOYMENT_TARGET,$host in >+ 10.[012],*|,*powerpc*-darwin[5-8]*) >+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; >+ *) >+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; > esac > ;; > esac >@@ -10851,23 +11876,18 @@ > esac > } > >-for ac_header in dlfcn.h >-do : >- ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default >+ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default > " >-if test "x$ac_cv_header_dlfcn_h" = xyes; then : >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DLFCN_H 1 >-_ACEOF >+if test "x$ac_cv_header_dlfcn_h" = xyes >+then : >+ printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h > > fi > >-done > > > > >- > # Set options > enable_win32_dll=yes > >@@ -10876,11 +11896,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. > set dummy ${ac_tool_prefix}as; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_AS+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_AS+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$AS"; then > ac_cv_prog_AS="$AS" # Let the user override the test. > else >@@ -10888,11 +11909,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_AS="${ac_tool_prefix}as" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10903,11 +11928,11 @@ > fi > AS=$ac_cv_prog_AS > if test -n "$AS"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 >-$as_echo "$AS" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 >+printf "%s\n" "$AS" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -10916,11 +11941,12 @@ > ac_ct_AS=$AS > # Extract the first word of "as", so it can be a program name with args. > set dummy as; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_AS+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_AS+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_AS"; then > ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. > else >@@ -10928,11 +11954,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_AS="as" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10943,11 +11973,11 @@ > fi > ac_ct_AS=$ac_cv_prog_ac_ct_AS > if test -n "$ac_ct_AS"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 >-$as_echo "$ac_ct_AS" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 >+printf "%s\n" "$ac_ct_AS" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_AS" = x; then >@@ -10955,8 +11985,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > AS=$ac_ct_AS >@@ -10968,11 +11998,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. > set dummy ${ac_tool_prefix}dlltool; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_DLLTOOL+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_DLLTOOL+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$DLLTOOL"; then > ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. > else >@@ -10980,11 +12011,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -10995,11 +12030,11 @@ > fi > DLLTOOL=$ac_cv_prog_DLLTOOL > if test -n "$DLLTOOL"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 >-$as_echo "$DLLTOOL" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 >+printf "%s\n" "$DLLTOOL" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -11008,11 +12043,12 @@ > ac_ct_DLLTOOL=$DLLTOOL > # Extract the first word of "dlltool", so it can be a program name with args. > set dummy dlltool; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_DLLTOOL+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_DLLTOOL"; then > ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. > else >@@ -11020,11 +12056,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_DLLTOOL="dlltool" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -11035,11 +12075,11 @@ > fi > ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL > if test -n "$ac_ct_DLLTOOL"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 >-$as_echo "$ac_ct_DLLTOOL" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 >+printf "%s\n" "$ac_ct_DLLTOOL" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_DLLTOOL" = x; then >@@ -11047,8 +12087,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > DLLTOOL=$ac_ct_DLLTOOL >@@ -11060,11 +12100,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. > set dummy ${ac_tool_prefix}objdump; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_OBJDUMP+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_OBJDUMP+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$OBJDUMP"; then > ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. > else >@@ -11072,11 +12113,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -11087,11 +12132,11 @@ > fi > OBJDUMP=$ac_cv_prog_OBJDUMP > if test -n "$OBJDUMP"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 >-$as_echo "$OBJDUMP" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 >+printf "%s\n" "$OBJDUMP" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -11100,11 +12145,12 @@ > ac_ct_OBJDUMP=$OBJDUMP > # Extract the first word of "objdump", so it can be a program name with args. > set dummy objdump; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_OBJDUMP+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_OBJDUMP"; then > ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. > else >@@ -11112,11 +12158,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_OBJDUMP="objdump" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -11127,11 +12177,11 @@ > fi > ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP > if test -n "$ac_ct_OBJDUMP"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 >-$as_echo "$ac_ct_OBJDUMP" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 >+printf "%s\n" "$ac_ct_OBJDUMP" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_OBJDUMP" = x; then >@@ -11139,8 +12189,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > OBJDUMP=$ac_ct_OBJDUMP >@@ -11177,7 +12227,8 @@ > > > # Check whether --enable-shared was given. >-if test "${enable_shared+set}" = set; then : >+if test ${enable_shared+y} >+then : > enableval=$enable_shared; p=${PACKAGE-default} > case $enableval in > yes) enable_shared=yes ;; >@@ -11195,7 +12246,7 @@ > IFS=$lt_save_ifs > ;; > esac >-else >+else $as_nop > enable_shared=yes > fi > >@@ -11208,7 +12259,8 @@ > > > # Check whether --enable-static was given. >-if test "${enable_static+set}" = set; then : >+if test ${enable_static+y} >+then : > enableval=$enable_static; p=${PACKAGE-default} > case $enableval in > yes) enable_static=yes ;; >@@ -11226,7 +12278,7 @@ > IFS=$lt_save_ifs > ;; > esac >-else >+else $as_nop > enable_static=yes > fi > >@@ -11240,7 +12292,8 @@ > > > # Check whether --with-pic was given. >-if test "${with_pic+set}" = set; then : >+if test ${with_pic+y} >+then : > withval=$with_pic; lt_p=${PACKAGE-default} > case $withval in > yes|no) pic_mode=$withval ;; >@@ -11257,7 +12310,7 @@ > IFS=$lt_save_ifs > ;; > esac >-else >+else $as_nop > pic_mode=default > fi > >@@ -11269,7 +12322,8 @@ > > > # Check whether --enable-fast-install was given. >-if test "${enable_fast_install+set}" = set; then : >+if test ${enable_fast_install+y} >+then : > enableval=$enable_fast_install; p=${PACKAGE-default} > case $enableval in > yes) enable_fast_install=yes ;; >@@ -11287,7 +12341,7 @@ > IFS=$lt_save_ifs > ;; > esac >-else >+else $as_nop > enable_fast_install=yes > fi > >@@ -11301,11 +12355,12 @@ > shared_archive_member_spec= > case $host,$enable_shared in > power*-*-aix[5-9]*,yes) >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 >-$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 >+printf %s "checking which variant of shared library versioning to provide... " >&6; } > > # Check whether --with-aix-soname was given. >-if test "${with_aix_soname+set}" = set; then : >+if test ${with_aix_soname+y} >+then : > withval=$with_aix_soname; case $withval in > aix|svr4|both) > ;; >@@ -11314,18 +12369,19 @@ > ;; > esac > lt_cv_with_aix_soname=$with_aix_soname >-else >- if ${lt_cv_with_aix_soname+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+else $as_nop >+ if test ${lt_cv_with_aix_soname+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_with_aix_soname=aix > fi > > with_aix_soname=$lt_cv_with_aix_soname > fi > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 >-$as_echo "$with_aix_soname" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 >+printf "%s\n" "$with_aix_soname" >&6; } > if test aix != "$with_aix_soname"; then > # For the AIX way of multilib, we name the shared archive member > # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', >@@ -11407,11 +12463,12 @@ > setopt NO_GLOB_SUBST > fi > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 >-$as_echo_n "checking for objdir... " >&6; } >-if ${lt_cv_objdir+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 >+printf %s "checking for objdir... " >&6; } >+if test ${lt_cv_objdir+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > rm -f .libs 2>/dev/null > mkdir .libs 2>/dev/null > if test -d .libs; then >@@ -11422,17 +12479,15 @@ > fi > rmdir .libs 2>/dev/null > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 >-$as_echo "$lt_cv_objdir" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 >+printf "%s\n" "$lt_cv_objdir" >&6; } > objdir=$lt_cv_objdir > > > > > >-cat >>confdefs.h <<_ACEOF >-#define LT_OBJDIR "$lt_cv_objdir/" >-_ACEOF >+printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h > > > >@@ -11478,11 +12533,12 @@ > case $deplibs_check_method in > file_magic*) > if test "$file_magic_cmd" = '$MAGIC_CMD'; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 >-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } >-if ${lt_cv_path_MAGIC_CMD+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 >+printf %s "checking for ${ac_tool_prefix}file... " >&6; } >+if test ${lt_cv_path_MAGIC_CMD+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > case $MAGIC_CMD in > [\\/*] | ?:[\\/]*) > lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. >@@ -11531,11 +12587,11 @@ > > MAGIC_CMD=$lt_cv_path_MAGIC_CMD > if test -n "$MAGIC_CMD"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 >-$as_echo "$MAGIC_CMD" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 >+printf "%s\n" "$MAGIC_CMD" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -11544,11 +12600,12 @@ > > if test -z "$lt_cv_path_MAGIC_CMD"; then > if test -n "$ac_tool_prefix"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 >-$as_echo_n "checking for file... " >&6; } >-if ${lt_cv_path_MAGIC_CMD+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 >+printf %s "checking for file... " >&6; } >+if test ${lt_cv_path_MAGIC_CMD+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > case $MAGIC_CMD in > [\\/*] | ?:[\\/]*) > lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. >@@ -11597,11 +12654,11 @@ > > MAGIC_CMD=$lt_cv_path_MAGIC_CMD > if test -n "$MAGIC_CMD"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 >-$as_echo "$MAGIC_CMD" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 >+printf "%s\n" "$MAGIC_CMD" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -11686,11 +12743,12 @@ > lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; > esac > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 >-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } >-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 >+printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } >+if test ${lt_cv_prog_compiler_rtti_exceptions+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_prog_compiler_rtti_exceptions=no > ac_outfile=conftest.$ac_objext > echo "$lt_simple_compile_test_code" > conftest.$ac_ext >@@ -11721,8 +12779,8 @@ > $RM conftest* > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 >-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 >+printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } > > if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then > lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" >@@ -11963,7 +13021,7 @@ > lt_prog_compiler_static='-qstaticlink' > ;; > *) >- case `$CC -V 2>&1 | sed 5q` in >+ case `$CC -V 2>&1 | $SED 5q` in > *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) > # Sun Fortran 8.3 passes all unrecognized flags to the linker > lt_prog_compiler_pic='-KPIC' >@@ -12079,26 +13137,28 @@ > ;; > esac > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 >-$as_echo_n "checking for $compiler option to produce PIC... " >&6; } >-if ${lt_cv_prog_compiler_pic+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 >+printf %s "checking for $compiler option to produce PIC... " >&6; } >+if test ${lt_cv_prog_compiler_pic+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_prog_compiler_pic=$lt_prog_compiler_pic > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 >-$as_echo "$lt_cv_prog_compiler_pic" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 >+printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } > lt_prog_compiler_pic=$lt_cv_prog_compiler_pic > > # > # Check to make sure the PIC flag actually works. > # > if test -n "$lt_prog_compiler_pic"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 >-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } >-if ${lt_cv_prog_compiler_pic_works+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 >+printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } >+if test ${lt_cv_prog_compiler_pic_works+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_prog_compiler_pic_works=no > ac_outfile=conftest.$ac_objext > echo "$lt_simple_compile_test_code" > conftest.$ac_ext >@@ -12129,8 +13189,8 @@ > $RM conftest* > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 >-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 >+printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } > > if test yes = "$lt_cv_prog_compiler_pic_works"; then > case $lt_prog_compiler_pic in >@@ -12158,11 +13218,12 @@ > # Check to make sure the static flag actually works. > # > wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 >-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } >-if ${lt_cv_prog_compiler_static_works+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 >+printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } >+if test ${lt_cv_prog_compiler_static_works+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_prog_compiler_static_works=no > save_LDFLAGS=$LDFLAGS > LDFLAGS="$LDFLAGS $lt_tmp_static_flag" >@@ -12186,8 +13247,8 @@ > LDFLAGS=$save_LDFLAGS > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 >-$as_echo "$lt_cv_prog_compiler_static_works" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 >+printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } > > if test yes = "$lt_cv_prog_compiler_static_works"; then > : >@@ -12201,11 +13262,12 @@ > > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 >-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } >-if ${lt_cv_prog_compiler_c_o+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 >+printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } >+if test ${lt_cv_prog_compiler_c_o+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_prog_compiler_c_o=no > $RM -r conftest 2>/dev/null > mkdir conftest >@@ -12248,19 +13310,20 @@ > $RM conftest* > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 >-$as_echo "$lt_cv_prog_compiler_c_o" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 >+printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } > > > > > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 >-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } >-if ${lt_cv_prog_compiler_c_o+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 >+printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } >+if test ${lt_cv_prog_compiler_c_o+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_prog_compiler_c_o=no > $RM -r conftest 2>/dev/null > mkdir conftest >@@ -12303,8 +13366,8 @@ > $RM conftest* > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 >-$as_echo "$lt_cv_prog_compiler_c_o" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 >+printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } > > > >@@ -12312,19 +13375,19 @@ > hard_links=nottested > if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then > # do not overwrite the value of need_locks provided by the user >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 >-$as_echo_n "checking if we can lock with hard links... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 >+printf %s "checking if we can lock with hard links... " >&6; } > hard_links=yes > $RM conftest* > ln conftest.a conftest.b 2>/dev/null && hard_links=no > touch conftest.a > ln conftest.a conftest.b 2>&5 || hard_links=no > ln conftest.a conftest.b 2>/dev/null && hard_links=no >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 >-$as_echo "$hard_links" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 >+printf "%s\n" "$hard_links" >&6; } > if test no = "$hard_links"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 >-$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 >+printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} > need_locks=warn > fi > else >@@ -12336,8 +13399,8 @@ > > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 >-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 >+printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } > > runpath_var= > allow_undefined_flag= >@@ -12441,7 +13504,7 @@ > whole_archive_flag_spec= > fi > supports_anon_versioning=no >- case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in >+ case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in > *GNU\ gold*) supports_anon_versioning=yes ;; > *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 > *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... >@@ -12568,7 +13631,7 @@ > # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link > # time. Moving up from 0x10000000 also allows more sbrk(2) space. > archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' >- archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' >+ archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' > ;; > > gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) >@@ -12611,7 +13674,7 @@ > compiler_needs_object=yes > ;; > esac >- case `$CC -V 2>&1 | sed 5q` in >+ case `$CC -V 2>&1 | $SED 5q` in > *Sun\ C*) # Sun C 5.9 > whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' > compiler_needs_object=yes >@@ -12623,7 +13686,7 @@ > > if test yes = "$supports_anon_versioning"; then > archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ >- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ >+ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ > echo "local: *; };" >> $output_objdir/$libname.ver~ > $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' > fi >@@ -12639,7 +13702,7 @@ > archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' > if test yes = "$supports_anon_versioning"; then > archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ >- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ >+ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ > echo "local: *; };" >> $output_objdir/$libname.ver~ > $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' > fi >@@ -12893,21 +13956,23 @@ > if test set = "${lt_cv_aix_libpath+set}"; then > aix_libpath=$lt_cv_aix_libpath > else >- if ${lt_cv_aix_libpath_+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ if test ${lt_cv_aix_libpath_+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > > lt_aix_libpath_sed=' > /Import File Strings/,/^$/ { >@@ -12922,7 +13987,7 @@ > lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` > fi > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > if test -z "$lt_cv_aix_libpath_"; then > lt_cv_aix_libpath_=/usr/lib:/lib >@@ -12946,21 +14011,23 @@ > if test set = "${lt_cv_aix_libpath+set}"; then > aix_libpath=$lt_cv_aix_libpath > else >- if ${lt_cv_aix_libpath_+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ if test ${lt_cv_aix_libpath_+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > > lt_aix_libpath_sed=' > /Import File Strings/,/^$/ { >@@ -12975,7 +14042,7 @@ > lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` > fi > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > if test -z "$lt_cv_aix_libpath_"; then > lt_cv_aix_libpath_=/usr/lib:/lib >@@ -13125,8 +14192,8 @@ > output_verbose_link_cmd=func_echo_all > archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" > module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" >- archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" >- module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" >+ archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" >+ module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" > > else > ld_shlibs=no >@@ -13160,7 +14227,7 @@ > ;; > > # FreeBSD 3 and greater uses gcc -shared to do shared libraries. >- freebsd* | dragonfly*) >+ freebsd* | dragonfly* | midnightbsd*) > archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' > hardcode_libdir_flag_spec='-R$libdir' > hardcode_direct=yes >@@ -13226,11 +14293,12 @@ > > # Older versions of the 11.00 compiler do not understand -b yet > # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 >-$as_echo_n "checking if $CC understands -b... " >&6; } >-if ${lt_cv_prog_compiler__b+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 >+printf %s "checking if $CC understands -b... " >&6; } >+if test ${lt_cv_prog_compiler__b+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_prog_compiler__b=no > save_LDFLAGS=$LDFLAGS > LDFLAGS="$LDFLAGS -b" >@@ -13254,8 +14322,8 @@ > LDFLAGS=$save_LDFLAGS > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 >-$as_echo "$lt_cv_prog_compiler__b" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 >+printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } > > if test yes = "$lt_cv_prog_compiler__b"; then > archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' >@@ -13295,28 +14363,30 @@ > # work, assume that -exports_file does not work either and > # implicitly export all symbols. > # This should be the same for all languages, so no per-tag cache variable. >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 >-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } >-if ${lt_cv_irix_exported_symbol+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 >+printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } >+if test ${lt_cv_irix_exported_symbol+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > save_LDFLAGS=$LDFLAGS > LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > int foo (void) { return 0; } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > lt_cv_irix_exported_symbol=yes >-else >+else $as_nop > lt_cv_irix_exported_symbol=no > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > LDFLAGS=$save_LDFLAGS > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 >-$as_echo "$lt_cv_irix_exported_symbol" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 >+printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } > if test yes = "$lt_cv_irix_exported_symbol"; then > archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' > fi >@@ -13597,8 +14667,8 @@ > fi > fi > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 >-$as_echo "$ld_shlibs" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 >+printf "%s\n" "$ld_shlibs" >&6; } > test no = "$ld_shlibs" && can_build_shared=no > > with_gnu_ld=$with_gnu_ld >@@ -13634,18 +14704,19 @@ > # Test whether the compiler implicitly links with -lc since on some > # systems, -lgcc has to come before -lc. If gcc already passes -lc > # to ld, don't add -lc before -lgcc. >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 >-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } >-if ${lt_cv_archive_cmds_need_lc+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 >+printf %s "checking whether -lc should be explicitly linked in... " >&6; } >+if test ${lt_cv_archive_cmds_need_lc+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > $RM conftest* > echo "$lt_simple_compile_test_code" > conftest.$ac_ext > > if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 > (eval $ac_compile) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; } 2>conftest.err; then > soname=conftest > lib=conftest >@@ -13663,7 +14734,7 @@ > if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 > (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; } > then > lt_cv_archive_cmds_need_lc=no >@@ -13677,8 +14748,8 @@ > $RM conftest* > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 >-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 >+printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } > archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc > ;; > esac >@@ -13837,8 +14908,8 @@ > > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 >-$as_echo_n "checking dynamic linker characteristics... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 >+printf %s "checking dynamic linker characteristics... " >&6; } > > if test yes = "$GCC"; then > case $host_os in >@@ -14100,7 +15171,7 @@ > case $host_os in > cygwin*) > # Cygwin DLLs use 'cyg' prefix rather than 'lib' >- soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' >+ soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' > > sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" > ;; >@@ -14110,7 +15181,7 @@ > ;; > pw32*) > # pw32 DLLs use 'pw' prefix rather than 'lib' >- library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' >+ library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' > ;; > esac > dynamic_linker='Win32 ld.exe' >@@ -14136,7 +15207,7 @@ > done > IFS=$lt_save_ifs > # Convert to MSYS style. >- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` >+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` > ;; > cygwin*) > # Convert to unix form, then to dos form, then back to unix form >@@ -14206,7 +15277,7 @@ > shlibpath_var=LD_LIBRARY_PATH > ;; > >-freebsd* | dragonfly*) >+freebsd* | dragonfly* | midnightbsd*) > # DragonFly does not have aout. When/if they implement a new > # versioning mechanism, adjust this. > if test -x /usr/bin/objformat; then >@@ -14399,9 +15470,10 @@ > shlibpath_overrides_runpath=no > > # Some binutils ld are patched to set DT_RUNPATH >- if ${lt_cv_shlibpath_overrides_runpath+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ if test ${lt_cv_shlibpath_overrides_runpath+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > lt_cv_shlibpath_overrides_runpath=no > save_LDFLAGS=$LDFLAGS > save_libdir=$libdir >@@ -14411,19 +15483,21 @@ > /* end confdefs.h. */ > > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >- if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : >+if ac_fn_c_try_link "$LINENO" >+then : >+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null >+then : > lt_cv_shlibpath_overrides_runpath=yes > fi > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > LDFLAGS=$save_LDFLAGS > libdir=$save_libdir >@@ -14655,8 +15729,8 @@ > dynamic_linker=no > ;; > esac >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 >-$as_echo "$dynamic_linker" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 >+printf "%s\n" "$dynamic_linker" >&6; } > test no = "$dynamic_linker" && can_build_shared=no > > variables_saved_for_relink="PATH $shlibpath_var $runpath_var" >@@ -14777,8 +15851,8 @@ > > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 >-$as_echo_n "checking how to hardcode library paths into programs... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 >+printf %s "checking how to hardcode library paths into programs... " >&6; } > hardcode_action= > if test -n "$hardcode_libdir_flag_spec" || > test -n "$runpath_var" || >@@ -14802,8 +15876,8 @@ > # directories. > hardcode_action=unsupported > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 >-$as_echo "$hardcode_action" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 >+printf "%s\n" "$hardcode_action" >&6; } > > if test relink = "$hardcode_action" || > test yes = "$inherit_rpath"; then >@@ -14847,11 +15921,12 @@ > > darwin*) > # if libdl is installed we need to link against it >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 >-$as_echo_n "checking for dlopen in -ldl... " >&6; } >-if ${ac_cv_lib_dl_dlopen+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 >+printf %s "checking for dlopen in -ldl... " >&6; } >+if test ${ac_cv_lib_dl_dlopen+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_check_lib_save_LIBS=$LIBS > LIBS="-ldl $LIBS" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -14860,32 +15935,31 @@ > /* Override any GCC internal prototype to avoid an error. > Use char because int might match the return type of a GCC > builtin and then its argument prototype would still apply. */ >-#ifdef __cplusplus >-extern "C" >-#endif > char dlopen (); > int >-main () >+main (void) > { > return dlopen (); > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > ac_cv_lib_dl_dlopen=yes >-else >+else $as_nop > ac_cv_lib_dl_dlopen=no > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > LIBS=$ac_check_lib_save_LIBS > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 >-$as_echo "$ac_cv_lib_dl_dlopen" >&6; } >-if test "x$ac_cv_lib_dl_dlopen" = xyes; then : >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 >+printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } >+if test "x$ac_cv_lib_dl_dlopen" = xyes >+then : > lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl >-else >+else $as_nop > > lt_cv_dlopen=dyld > lt_cv_dlopen_libs= >@@ -14905,14 +15979,16 @@ > > *) > ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" >-if test "x$ac_cv_func_shl_load" = xyes; then : >+if test "x$ac_cv_func_shl_load" = xyes >+then : > lt_cv_dlopen=shl_load >-else >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 >-$as_echo_n "checking for shl_load in -ldld... " >&6; } >-if ${ac_cv_lib_dld_shl_load+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+else $as_nop >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 >+printf %s "checking for shl_load in -ldld... " >&6; } >+if test ${ac_cv_lib_dld_shl_load+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_check_lib_save_LIBS=$LIBS > LIBS="-ldld $LIBS" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -14921,41 +15997,42 @@ > /* Override any GCC internal prototype to avoid an error. > Use char because int might match the return type of a GCC > builtin and then its argument prototype would still apply. */ >-#ifdef __cplusplus >-extern "C" >-#endif > char shl_load (); > int >-main () >+main (void) > { > return shl_load (); > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > ac_cv_lib_dld_shl_load=yes >-else >+else $as_nop > ac_cv_lib_dld_shl_load=no > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > LIBS=$ac_check_lib_save_LIBS > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 >-$as_echo "$ac_cv_lib_dld_shl_load" >&6; } >-if test "x$ac_cv_lib_dld_shl_load" = xyes; then : >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 >+printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } >+if test "x$ac_cv_lib_dld_shl_load" = xyes >+then : > lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld >-else >+else $as_nop > ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" >-if test "x$ac_cv_func_dlopen" = xyes; then : >+if test "x$ac_cv_func_dlopen" = xyes >+then : > lt_cv_dlopen=dlopen >-else >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 >-$as_echo_n "checking for dlopen in -ldl... " >&6; } >-if ${ac_cv_lib_dl_dlopen+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+else $as_nop >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 >+printf %s "checking for dlopen in -ldl... " >&6; } >+if test ${ac_cv_lib_dl_dlopen+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_check_lib_save_LIBS=$LIBS > LIBS="-ldl $LIBS" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -14964,37 +16041,37 @@ > /* Override any GCC internal prototype to avoid an error. > Use char because int might match the return type of a GCC > builtin and then its argument prototype would still apply. */ >-#ifdef __cplusplus >-extern "C" >-#endif > char dlopen (); > int >-main () >+main (void) > { > return dlopen (); > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > ac_cv_lib_dl_dlopen=yes >-else >+else $as_nop > ac_cv_lib_dl_dlopen=no > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > LIBS=$ac_check_lib_save_LIBS > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 >-$as_echo "$ac_cv_lib_dl_dlopen" >&6; } >-if test "x$ac_cv_lib_dl_dlopen" = xyes; then : >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 >+printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } >+if test "x$ac_cv_lib_dl_dlopen" = xyes >+then : > lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl >-else >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 >-$as_echo_n "checking for dlopen in -lsvld... " >&6; } >-if ${ac_cv_lib_svld_dlopen+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+else $as_nop >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 >+printf %s "checking for dlopen in -lsvld... " >&6; } >+if test ${ac_cv_lib_svld_dlopen+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_check_lib_save_LIBS=$LIBS > LIBS="-lsvld $LIBS" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -15003,37 +16080,37 @@ > /* Override any GCC internal prototype to avoid an error. > Use char because int might match the return type of a GCC > builtin and then its argument prototype would still apply. */ >-#ifdef __cplusplus >-extern "C" >-#endif > char dlopen (); > int >-main () >+main (void) > { > return dlopen (); > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > ac_cv_lib_svld_dlopen=yes >-else >+else $as_nop > ac_cv_lib_svld_dlopen=no > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > LIBS=$ac_check_lib_save_LIBS > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 >-$as_echo "$ac_cv_lib_svld_dlopen" >&6; } >-if test "x$ac_cv_lib_svld_dlopen" = xyes; then : >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 >+printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } >+if test "x$ac_cv_lib_svld_dlopen" = xyes >+then : > lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld >-else >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 >-$as_echo_n "checking for dld_link in -ldld... " >&6; } >-if ${ac_cv_lib_dld_dld_link+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+else $as_nop >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 >+printf %s "checking for dld_link in -ldld... " >&6; } >+if test ${ac_cv_lib_dld_dld_link+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_check_lib_save_LIBS=$LIBS > LIBS="-ldld $LIBS" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -15042,30 +16119,29 @@ > /* Override any GCC internal prototype to avoid an error. > Use char because int might match the return type of a GCC > builtin and then its argument prototype would still apply. */ >-#ifdef __cplusplus >-extern "C" >-#endif > char dld_link (); > int >-main () >+main (void) > { > return dld_link (); > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > ac_cv_lib_dld_dld_link=yes >-else >+else $as_nop > ac_cv_lib_dld_dld_link=no > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > LIBS=$ac_check_lib_save_LIBS > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 >-$as_echo "$ac_cv_lib_dld_dld_link" >&6; } >-if test "x$ac_cv_lib_dld_dld_link" = xyes; then : >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 >+printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } >+if test "x$ac_cv_lib_dld_dld_link" = xyes >+then : > lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld > fi > >@@ -15104,11 +16180,12 @@ > save_LIBS=$LIBS > LIBS="$lt_cv_dlopen_libs $LIBS" > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 >-$as_echo_n "checking whether a program can dlopen itself... " >&6; } >-if ${lt_cv_dlopen_self+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 >+printf %s "checking whether a program can dlopen itself... " >&6; } >+if test ${lt_cv_dlopen_self+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test yes = "$cross_compiling"; then : > lt_cv_dlopen_self=cross > else >@@ -15187,7 +16264,7 @@ > if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 > (eval $ac_link) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then > (./conftest; exit; ) >&5 2>/dev/null > lt_status=$? >@@ -15205,16 +16282,17 @@ > > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 >-$as_echo "$lt_cv_dlopen_self" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 >+printf "%s\n" "$lt_cv_dlopen_self" >&6; } > > if test yes = "$lt_cv_dlopen_self"; then > wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 >-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } >-if ${lt_cv_dlopen_self_static+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 >+printf %s "checking whether a statically linked program can dlopen itself... " >&6; } >+if test ${lt_cv_dlopen_self_static+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test yes = "$cross_compiling"; then : > lt_cv_dlopen_self_static=cross > else >@@ -15293,7 +16371,7 @@ > if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 > (eval $ac_link) 2>&5 > ac_status=$? >- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then > (./conftest; exit; ) >&5 2>/dev/null > lt_status=$? >@@ -15311,8 +16389,8 @@ > > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 >-$as_echo "$lt_cv_dlopen_self_static" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 >+printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } > fi > > CPPFLAGS=$save_CPPFLAGS >@@ -15350,40 +16428,40 @@ > > striplib= > old_striplib= >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 >-$as_echo_n "checking whether stripping libraries is possible... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 >+printf %s "checking whether stripping libraries is possible... " >&6; } > if test -z "$STRIP"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > else > if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then > old_striplib="$STRIP --strip-debug" > striplib="$STRIP --strip-unneeded" >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > else > case $host_os in > darwin*) > # FIXME - insert some real tests, host_os isn't really good enough > striplib="$STRIP -x" > old_striplib="$STRIP -S" >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > ;; > freebsd*) > if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then > old_striplib="$STRIP --strip-debug" > striplib="$STRIP --strip-unneeded" >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > ;; > *) >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > ;; > esac > fi >@@ -15401,13 +16479,13 @@ > > > # Report what library types will actually be built >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 >-$as_echo_n "checking if libtool supports shared libraries... " >&6; } >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 >-$as_echo "$can_build_shared" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 >+printf %s "checking if libtool supports shared libraries... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 >+printf "%s\n" "$can_build_shared" >&6; } > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 >-$as_echo_n "checking whether to build shared libraries... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 >+printf %s "checking whether to build shared libraries... " >&6; } > test no = "$can_build_shared" && enable_shared=no > > # On AIX, shared libraries and static libraries use the same namespace, and >@@ -15431,15 +16509,15 @@ > fi > ;; > esac >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 >-$as_echo "$enable_shared" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 >+printf "%s\n" "$enable_shared" >&6; } > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 >-$as_echo_n "checking whether to build static libraries... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 >+printf %s "checking whether to build static libraries... " >&6; } > # Make sure either enable_shared or enable_static is yes. > test yes = "$enable_shared" || enable_static=yes >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 >-$as_echo "$enable_static" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 >+printf "%s\n" "$enable_static" >&6; } > > > >@@ -15478,11 +16556,12 @@ > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. > set dummy ${ac_tool_prefix}windres; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_RC+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_RC+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$RC"; then > ac_cv_prog_RC="$RC" # Let the user override the test. > else >@@ -15490,11 +16569,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_RC="${ac_tool_prefix}windres" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -15505,11 +16588,11 @@ > fi > RC=$ac_cv_prog_RC > if test -n "$RC"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RC" >&5 >-$as_echo "$RC" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RC" >&5 >+printf "%s\n" "$RC" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -15518,11 +16601,12 @@ > ac_ct_RC=$RC > # Extract the first word of "windres", so it can be a program name with args. > set dummy windres; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_prog_ac_ct_RC+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_prog_ac_ct_RC+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$ac_ct_RC"; then > ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test. > else >@@ -15530,11 +16614,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then > ac_cv_prog_ac_ct_RC="windres" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -15545,11 +16633,11 @@ > fi > ac_ct_RC=$ac_cv_prog_ac_ct_RC > if test -n "$ac_ct_RC"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RC" >&5 >-$as_echo "$ac_ct_RC" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RC" >&5 >+printf "%s\n" "$ac_ct_RC" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > if test "x$ac_ct_RC" = x; then >@@ -15557,8 +16645,8 @@ > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 >+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > RC=$ac_ct_RC >@@ -15659,7 +16747,124 @@ > fi > > >+##################### >+# Symbol versioning # >+##################### > >+# NOTE: This checks if we are building shared or static library >+# and if --with-pic or --without-pic was used. Thus this check >+# must be after Libtool initialization. >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if library symbol versioning should be used" >&5 >+printf %s "checking if library symbol versioning should be used... " >&6; } >+# Check whether --enable-symbol-versions was given. >+if test ${enable_symbol_versions+y} >+then : >+ enableval=$enable_symbol_versions; >+else $as_nop >+ enable_symbol_versions=auto >+fi >+ >+if test "x$enable_symbol_versions" = xauto; then >+ case $host_os in >+ # NOTE: Even if one omits -gnu on GNU/Linux (e.g. >+ # i486-slackware-linux), configure will (via config.sub) >+ # append -gnu (e.g. i486-slackware-linux-gnu), and this >+ # test will work correctly. >+ gnu* | *-gnu* | freebsd*) >+ enable_symbol_versions=yes >+ ;; >+ *) >+ enable_symbol_versions=no >+ ;; >+ esac >+fi >+ >+# There are two variants for symbol versioning. >+# See src/liblzma/validate_map.sh for details. >+# >+# On GNU/Linux, extra symbols are added in the C code. These extra symbols >+# must not be put into a static library as they can cause problems (and >+# even if they didn't cause problems, they would be useless). On other >+# systems symbol versioning may be used too but there is no problem as only >+# a linker script is specified in src/liblzma/Makefile.am and that isn't >+# used when creating a static library. >+# >+# Libtool always uses -DPIC when building shared libraries by default and >+# doesn't use it for static libs by default. This can be overriden with >+# --with-pic and --without-pic though. As long as neither --with-pic nor >+# --without-pic is used then we can use #ifdef PIC to detect if the file is >+# being built for a shared library. >+if test "x$enable_symbol_versions" = xno ; then >+ enable_symbol_versions=no >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } >+elif test "x$enable_shared" = xno ; then >+ enable_symbol_versions=no >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (not building a shared library)" >&5 >+printf "%s\n" "no (not building a shared library)" >&6; } >+else >+ case "$host_cpu-$host_os" in >+ microblaze*) >+ # GCC 12 on MicroBlaze doesn't support __symver__ >+ # attribute. It's simplest and safest to use the >+ # generic version on that platform since then only >+ # the linker script is needed. The RHEL/CentOS 7 >+ # compatibility symbols don't matter on MicroBlaze. >+ enable_symbol_versions=generic >+ ;; >+ *-linux*) >+ case "$pic_mode-$enable_static" in >+ default-*) >+ # Use symvers if PIC is defined. >+ have_symbol_versions_linux=2 >+ ;; >+ *-no) >+ # Not building static library. >+ # Use symvers unconditionally. >+ have_symbol_versions_linux=1 >+ ;; >+ *) >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 >+printf "%s\n" "" >&6; } >+ as_fn_error $? " >+ On GNU/Linux, building both shared and static library at the same time >+ is not supported if --with-pic or --without-pic is used. >+ Use either --disable-shared or --disable-static to build one type >+ of library at a time. If both types are needed, build one at a time, >+ possibly picking only src/liblzma/.libs/liblzma.a from the static build." "$LINENO" 5 >+ ;; >+ esac >+ enable_symbol_versions=linux >+ >+printf "%s\n" "#define HAVE_SYMBOL_VERSIONS_LINUX $have_symbol_versions_linux" >>confdefs.h >+ >+ ;; >+ *) >+ enable_symbol_versions=generic >+ ;; >+ esac >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($enable_symbol_versions)" >&5 >+printf "%s\n" "yes ($enable_symbol_versions)" >&6; } >+fi >+ >+ if test "x$enable_symbol_versions" = xlinux; then >+ COND_SYMVERS_LINUX_TRUE= >+ COND_SYMVERS_LINUX_FALSE='#' >+else >+ COND_SYMVERS_LINUX_TRUE='#' >+ COND_SYMVERS_LINUX_FALSE= >+fi >+ >+ if test "x$enable_symbol_versions" = xgeneric; then >+ COND_SYMVERS_GENERIC_TRUE= >+ COND_SYMVERS_GENERIC_FALSE='#' >+else >+ COND_SYMVERS_GENERIC_TRUE='#' >+ COND_SYMVERS_GENERIC_FALSE= >+fi >+ >+ >+ > ############################################################################### > # Checks for libraries. > ############################################################################### >@@ -15669,17 +16874,18 @@ > > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 >-$as_echo_n "checking whether NLS is requested... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 >+printf %s "checking whether NLS is requested... " >&6; } > # Check whether --enable-nls was given. >-if test "${enable_nls+set}" = set; then : >+if test ${enable_nls+y} >+then : > enableval=$enable_nls; USE_NLS=$enableval >-else >+else $as_nop > USE_NLS=yes > fi > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 >-$as_echo "$USE_NLS" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 >+printf "%s\n" "$USE_NLS" >&6; } > > > >@@ -15718,11 +16924,12 @@ > > # Extract the first word of "msgfmt", so it can be a program name with args. > set dummy msgfmt; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_path_MSGFMT+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_path_MSGFMT+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > case "$MSGFMT" in > [\\/]* | ?:[\\/]*) > ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. >@@ -15750,20 +16957,21 @@ > fi > MSGFMT="$ac_cv_path_MSGFMT" > if test "$MSGFMT" != ":"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 >-$as_echo "$MSGFMT" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 >+printf "%s\n" "$MSGFMT" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > # Extract the first word of "gmsgfmt", so it can be a program name with args. > set dummy gmsgfmt; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_path_GMSGFMT+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_path_GMSGFMT+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > case $GMSGFMT in > [\\/]* | ?:[\\/]*) > ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. >@@ -15773,11 +16981,15 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac > for ac_exec_ext in '' $ac_executable_extensions; do >- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" >- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then >+ ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -15790,11 +17002,11 @@ > fi > GMSGFMT=$ac_cv_path_GMSGFMT > if test -n "$GMSGFMT"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 >-$as_echo "$GMSGFMT" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 >+printf "%s\n" "$GMSGFMT" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -15835,11 +17047,12 @@ > > # Extract the first word of "xgettext", so it can be a program name with args. > set dummy xgettext; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_path_XGETTEXT+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_path_XGETTEXT+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > case "$XGETTEXT" in > [\\/]* | ?:[\\/]*) > ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. >@@ -15867,11 +17080,11 @@ > fi > XGETTEXT="$ac_cv_path_XGETTEXT" > if test "$XGETTEXT" != ":"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 >-$as_echo "$XGETTEXT" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 >+printf "%s\n" "$XGETTEXT" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > rm -f messages.po >@@ -15912,11 +17125,12 @@ > > # Extract the first word of "msgmerge", so it can be a program name with args. > set dummy msgmerge; ac_word=$2 >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >-$as_echo_n "checking for $ac_word... " >&6; } >-if ${ac_cv_path_MSGMERGE+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 >+printf %s "checking for $ac_word... " >&6; } >+if test ${ac_cv_path_MSGMERGE+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > case "$MSGMERGE" in > [\\/]* | ?:[\\/]*) > ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. >@@ -15943,11 +17157,11 @@ > fi > MSGMERGE="$ac_cv_path_MSGMERGE" > if test "$MSGMERGE" != ":"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 >-$as_echo "$MSGMERGE" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 >+printf "%s\n" "$MSGMERGE" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > > >@@ -15987,9 +17201,10 @@ > > > # Check whether --with-gnu-ld was given. >-if test "${with_gnu_ld+set}" = set; then : >+if test ${with_gnu_ld+y} >+then : > withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes >-else >+else $as_nop > with_gnu_ld=no > fi > >@@ -16007,25 +17222,26 @@ > fi > > if test -n "$LD"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld" >&5 >-$as_echo_n "checking for ld... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld" >&5 >+printf %s "checking for ld... " >&6; } > elif test "$GCC" = yes; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 >-$as_echo_n "checking for ld used by $CC... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 >+printf %s "checking for ld used by $CC... " >&6; } > elif test "$with_gnu_ld" = yes; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 >-$as_echo_n "checking for GNU ld... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 >+printf %s "checking for GNU ld... " >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 >-$as_echo_n "checking for non-GNU ld... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 >+printf %s "checking for non-GNU ld... " >&6; } > fi > if test -n "$LD"; then > # Let the user override the test with a path. > : > else >- if ${acl_cv_path_LD+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ if test ${acl_cv_path_LD+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > > acl_cv_path_LD= # Final result of this test > ac_prog=ld # Program to search in $PATH >@@ -16087,14 +17303,15 @@ > *-*-aix*) > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >-#if defined __powerpc64__ || defined _ARCH_PPC64 >+#if defined __powerpc64__ || defined __LP64__ > int ok; > #else > error fail > #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > # The compiler produces 64-bit code. Add option '-b64' so that the > # linker groks 64-bit object files. > case "$acl_cv_path_LD " in >@@ -16103,7 +17320,7 @@ > esac > > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ;; > sparc64-*-netbsd*) > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -16115,9 +17332,10 @@ > #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > >-else >+else $as_nop > # The compiler produces 32-bit code. Add option '-m elf32_sparc' > # so that the linker groks 32-bit object files. > case "$acl_cv_path_LD " in >@@ -16126,7 +17344,7 @@ > esac > > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ;; > esac > >@@ -16135,18 +17353,19 @@ > LD="$acl_cv_path_LD" > fi > if test -n "$LD"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 >-$as_echo "$LD" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 >+printf "%s\n" "$LD" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 >-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } >-if ${acl_cv_prog_gnu_ld+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 >+printf %s "checking if the linker ($LD) is GNU ld... " >&6; } >+if test ${acl_cv_prog_gnu_ld+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > # I'd rather use --version here, but apparently some GNU lds only accept -v. > case `$LD -v 2>&1 </dev/null` in > *GNU* | *'with BFD'*) >@@ -16157,19 +17376,21 @@ > ;; > esac > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5 >-$as_echo "$acl_cv_prog_gnu_ld" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5 >+printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } > with_gnu_ld=$acl_cv_prog_gnu_ld > > > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 >-$as_echo_n "checking for shared library run path origin... " >&6; } >-if ${acl_cv_rpath+:} false; then : >- $as_echo_n "(cached) " >&6 >-else > >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 >+printf %s "checking for shared library run path origin... " >&6; } >+if test ${acl_cv_rpath+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ > CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ > ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh > . ./conftest.sh >@@ -16177,8 +17398,8 @@ > acl_cv_rpath=done > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 >-$as_echo "$acl_cv_rpath" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 >+printf "%s\n" "$acl_cv_rpath" >&6; } > wl="$acl_cv_wl" > acl_libext="$acl_cv_libext" > acl_shlibext="$acl_cv_shlibext" >@@ -16189,34 +17410,64 @@ > acl_hardcode_direct="$acl_cv_hardcode_direct" > acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" > # Check whether --enable-rpath was given. >-if test "${enable_rpath+set}" = set; then : >+if test ${enable_rpath+y} >+then : > enableval=$enable_rpath; : >-else >+else $as_nop > enable_rpath=yes > fi > > > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5 >-$as_echo_n "checking 32-bit host C ABI... " >&6; } >-if ${gl_cv_host_cpu_c_abi_32bit+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5 >+printf %s "checking 32-bit host C ABI... " >&6; } >+if test ${gl_cv_host_cpu_c_abi_32bit+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > if test -n "$gl_cv_host_cpu_c_abi"; then > case "$gl_cv_host_cpu_c_abi" in > i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc) > gl_cv_host_cpu_c_abi_32bit=yes ;; >- *) >+ x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 ) > gl_cv_host_cpu_c_abi_32bit=no ;; >+ *) >+ gl_cv_host_cpu_c_abi_32bit=unknown ;; > esac > else > case "$host_cpu" in > >- i[4567]86 ) >+ # CPUs that only support a 32-bit ABI. >+ arc \ >+ | bfin \ >+ | cris* \ >+ | csky \ >+ | epiphany \ >+ | ft32 \ >+ | h8300 \ >+ | m68k \ >+ | microblaze | microblazeel \ >+ | nds32 | nds32le | nds32be \ >+ | nios2 | nios2eb | nios2el \ >+ | or1k* \ >+ | or32 \ >+ | sh | sh1234 | sh1234elb \ >+ | tic6x \ >+ | xtensa* ) > gl_cv_host_cpu_c_abi_32bit=yes > ;; > >+ # CPUs that only support a 64-bit ABI. >+ alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \ >+ | mmix ) >+ gl_cv_host_cpu_c_abi_32bit=no >+ ;; >+ >+ i[34567]86 ) >+ gl_cv_host_cpu_c_abi_32bit=yes >+ ;; >+ > x86_64 ) > # On x86_64 systems, the C compiler may be generating code in one of > # these ABIs: >@@ -16236,12 +17487,13 @@ > #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > gl_cv_host_cpu_c_abi_32bit=no >-else >+else $as_nop > gl_cv_host_cpu_c_abi_32bit=yes > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ;; > > arm* | aarch64 ) >@@ -16260,12 +17512,13 @@ > #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > gl_cv_host_cpu_c_abi_32bit=no >-else >+else $as_nop > gl_cv_host_cpu_c_abi_32bit=yes > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ;; > > hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) >@@ -16280,12 +17533,13 @@ > #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > gl_cv_host_cpu_c_abi_32bit=no >-else >+else $as_nop > gl_cv_host_cpu_c_abi_32bit=yes > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ;; > > ia64* ) >@@ -16300,12 +17554,13 @@ > #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > gl_cv_host_cpu_c_abi_32bit=yes >-else >+else $as_nop > gl_cv_host_cpu_c_abi_32bit=no > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ;; > > mips* ) >@@ -16320,12 +17575,13 @@ > #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > gl_cv_host_cpu_c_abi_32bit=no >-else >+else $as_nop > gl_cv_host_cpu_c_abi_32bit=yes > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ;; > > powerpc* ) >@@ -16337,19 +17593,20 @@ > # be generating 64-bit code. > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >-#if defined __powerpc64__ || defined _ARCH_PPC64 >+#if defined __powerpc64__ || defined __LP64__ > int ok; > #else > error fail > #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > gl_cv_host_cpu_c_abi_32bit=no >-else >+else $as_nop > gl_cv_host_cpu_c_abi_32bit=yes > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ;; > > rs6000 ) >@@ -16368,12 +17625,13 @@ > #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > gl_cv_host_cpu_c_abi_32bit=no >-else >+else $as_nop > gl_cv_host_cpu_c_abi_32bit=yes > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ;; > > s390* ) >@@ -16388,12 +17646,13 @@ > #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > gl_cv_host_cpu_c_abi_32bit=no >-else >+else $as_nop > gl_cv_host_cpu_c_abi_32bit=yes > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ;; > > sparc | sparc64 ) >@@ -16408,23 +17667,24 @@ > #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > gl_cv_host_cpu_c_abi_32bit=no >-else >+else $as_nop > gl_cv_host_cpu_c_abi_32bit=yes > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ;; > > *) >- gl_cv_host_cpu_c_abi_32bit=no >+ gl_cv_host_cpu_c_abi_32bit=unknown > ;; > esac > fi > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5 >-$as_echo "$gl_cv_host_cpu_c_abi_32bit" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5 >+printf "%s\n" "$gl_cv_host_cpu_c_abi_32bit" >&6; } > > HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit" > >@@ -16432,90 +17692,156 @@ > > > >- case "$host_os" in >- solaris*) >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 >-$as_echo_n "checking for 64-bit host... " >&6; } >-if ${gl_cv_solaris_64bit+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ELF binary format" >&5 >+printf %s "checking for ELF binary format... " >&6; } >+if test ${gl_cv_elf+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >-#ifdef _LP64 >- int ok; >- #else >- error fail >- #endif >+#if defined __ELF__ || (defined __linux__ && defined __EDG__) >+ Extensible Linking Format >+ #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >- gl_cv_solaris_64bit=yes >-else >- gl_cv_solaris_64bit=no >+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | >+ $EGREP "Extensible Linking Format" >/dev/null 2>&1 >+then : >+ gl_cv_elf=yes >+else $as_nop >+ gl_cv_elf=no > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -rf conftest* > >+ > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 >-$as_echo "$gl_cv_solaris_64bit" >&6; };; >- esac >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_elf" >&5 >+printf "%s\n" "$gl_cv_elf" >&6; } >+ if test $gl_cv_elf = yes; then >+ # Extract the ELF class of a file (5th byte) in decimal. >+ # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header >+ if od -A x < /dev/null >/dev/null 2>/dev/null; then >+ # Use POSIX od. >+ func_elfclass () >+ { >+ od -A n -t d1 -j 4 -N 1 >+ } >+ else >+ # Use BSD hexdump. >+ func_elfclass () >+ { >+ dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' >+ echo >+ } >+ fi >+ # Use 'expr', not 'test', to compare the values of func_elfclass, because on >+ # Solaris 11 OpenIndiana and Solaris 11 OmniOS, the result is 001 or 002, >+ # not 1 or 2. >+ case $HOST_CPU_C_ABI_32BIT in >+ yes) >+ # 32-bit ABI. >+ acl_is_expected_elfclass () >+ { >+ expr "`func_elfclass | sed -e 's/[ ]//g'`" = 1 > /dev/null >+ } >+ ;; >+ no) >+ # 64-bit ABI. >+ acl_is_expected_elfclass () >+ { >+ expr "`func_elfclass | sed -e 's/[ ]//g'`" = 2 > /dev/null >+ } >+ ;; >+ *) >+ # Unknown. >+ acl_is_expected_elfclass () >+ { >+ : >+ } >+ ;; >+ esac >+ else >+ acl_is_expected_elfclass () >+ { >+ : >+ } >+ fi > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5 >-$as_echo_n "checking for the common suffixes of directories in the library search path... " >&6; } >-if ${acl_cv_libdirstems+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >- acl_libdirstem=lib >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5 >+printf %s "checking for the common suffixes of directories in the library search path... " >&6; } >+if test ${acl_cv_libdirstems+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ acl_libdirstem=lib > acl_libdirstem2= >+ acl_libdirstem3= > case "$host_os" in > solaris*) >- if test $gl_cv_solaris_64bit = yes; then >- acl_libdirstem=lib/64 >+ if test $HOST_CPU_C_ABI_32BIT = no; then >+ acl_libdirstem2=lib/64 > case "$host_cpu" in >- sparc*) acl_libdirstem2=lib/sparcv9 ;; >- i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; >+ sparc*) acl_libdirstem3=lib/sparcv9 ;; >+ i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; > esac > fi > ;; > *) >- if test "$HOST_CPU_C_ABI_32BIT" != yes; then >- searchpath=`(if test -f /usr/bin/gcc \ >- && LC_ALL=C /usr/bin/gcc -print-search-dirs >/dev/null 2>/dev/null; then \ >- LC_ALL=C /usr/bin/gcc -print-search-dirs; \ >- else \ >- LC_ALL=C $CC -print-search-dirs; \ >- fi) 2>/dev/null \ >- | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` >- if test -n "$searchpath"; then >- acl_save_IFS="${IFS= }"; IFS=":" >- for searchdir in $searchpath; do >- if test -d "$searchdir"; then >- case "$searchdir" in >- */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; >- */../ | */.. ) >- # Better ignore directories of this form. They are misleading. >- ;; >- *) searchdir=`cd "$searchdir" && pwd` >- case "$searchdir" in >- */lib64 ) acl_libdirstem=lib64 ;; >- esac ;; >- esac >- fi >- done >- IFS="$acl_save_IFS" >+ searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ >+ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` >+ if test $HOST_CPU_C_ABI_32BIT != no; then >+ # 32-bit or unknown ABI. >+ if test -d /usr/lib32; then >+ acl_libdirstem2=lib32 > fi > fi >+ if test $HOST_CPU_C_ABI_32BIT != yes; then >+ # 64-bit or unknown ABI. >+ if test -d /usr/lib64; then >+ acl_libdirstem3=lib64 >+ fi >+ fi >+ if test -n "$searchpath"; then >+ acl_save_IFS="${IFS= }"; IFS=":" >+ for searchdir in $searchpath; do >+ if test -d "$searchdir"; then >+ case "$searchdir" in >+ */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; >+ */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; >+ */../ | */.. ) >+ # Better ignore directories of this form. They are misleading. >+ ;; >+ *) searchdir=`cd "$searchdir" && pwd` >+ case "$searchdir" in >+ */lib32 ) acl_libdirstem2=lib32 ;; >+ */lib64 ) acl_libdirstem3=lib64 ;; >+ esac ;; >+ esac >+ fi >+ done >+ IFS="$acl_save_IFS" >+ if test $HOST_CPU_C_ABI_32BIT = yes; then >+ # 32-bit ABI. >+ acl_libdirstem3= >+ fi >+ if test $HOST_CPU_C_ABI_32BIT = no; then >+ # 64-bit ABI. >+ acl_libdirstem2= >+ fi >+ fi > ;; > esac > test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" >- acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2" >+ test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" >+ acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5 >-$as_echo "$acl_cv_libdirstems" >&6; } >- # Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2. >- acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` >- acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'` >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5 >+printf "%s\n" "$acl_cv_libdirstems" >&6; } >+ acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` >+ acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` >+ acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` > > > >@@ -16536,13 +17862,16 @@ > > eval additional_includedir=\"$includedir\" > eval additional_libdir=\"$libdir\" >+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" >+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" > > exec_prefix="$acl_save_exec_prefix" > prefix="$acl_save_prefix" > > > # Check whether --with-libiconv-prefix was given. >-if test "${with_libiconv_prefix+set}" = set; then : >+if test ${with_libiconv_prefix+y} >+then : > withval=$with_libiconv_prefix; > if test "X$withval" = "Xno"; then > use_additional=no >@@ -16556,6 +17885,8 @@ > > eval additional_includedir=\"$includedir\" > eval additional_libdir=\"$libdir\" >+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" >+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" > > exec_prefix="$acl_save_exec_prefix" > prefix="$acl_save_prefix" >@@ -16563,15 +17894,19 @@ > else > additional_includedir="$withval/include" > additional_libdir="$withval/$acl_libdirstem" >- if test "$acl_libdirstem2" != "$acl_libdirstem" \ >- && test ! -d "$withval/$acl_libdirstem"; then >- additional_libdir="$withval/$acl_libdirstem2" >- fi >+ additional_libdir2="$withval/$acl_libdirstem2" >+ additional_libdir3="$withval/$acl_libdirstem3" > fi > fi > > fi > >+ if test "X$additional_libdir2" = "X$additional_libdir"; then >+ additional_libdir2= >+ fi >+ if test "X$additional_libdir3" = "X$additional_libdir"; then >+ additional_libdir3= >+ fi > LIBICONV= > LTLIBICONV= > INCICONV= >@@ -16617,45 +17952,51 @@ > shrext= > fi > if test $use_additional = yes; then >- dir="$additional_libdir" >- if test -n "$acl_shlibext"; then >- if test -f "$dir/$libname$shrext"; then >- found_dir="$dir" >- found_so="$dir/$libname$shrext" >- else >- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then >- ver=`(cd "$dir" && \ >- for f in "$libname$shrext".*; do echo "$f"; done \ >- | sed -e "s,^$libname$shrext\\\\.,," \ >- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ >- | sed 1q ) 2>/dev/null` >- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then >- found_dir="$dir" >- found_so="$dir/$libname$shrext.$ver" >+ for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do >+ if test "X$found_dir" = "X"; then >+ eval dir=\$$additional_libdir_variable >+ if test -n "$dir"; then >+ if test -n "$acl_shlibext"; then >+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then >+ found_dir="$dir" >+ found_so="$dir/$libname$shrext" >+ else >+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then >+ ver=`(cd "$dir" && \ >+ for f in "$libname$shrext".*; do echo "$f"; done \ >+ | sed -e "s,^$libname$shrext\\\\.,," \ >+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ >+ | sed 1q ) 2>/dev/null` >+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then >+ found_dir="$dir" >+ found_so="$dir/$libname$shrext.$ver" >+ fi >+ else >+ eval library_names=\"$acl_library_names_spec\" >+ for f in $library_names; do >+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then >+ found_dir="$dir" >+ found_so="$dir/$f" >+ break >+ fi >+ done >+ fi >+ fi > fi >- else >- eval library_names=\"$acl_library_names_spec\" >- for f in $library_names; do >- if test -f "$dir/$f"; then >+ if test "X$found_dir" = "X"; then >+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then > found_dir="$dir" >- found_so="$dir/$f" >- break >+ found_a="$dir/$libname.$acl_libext" > fi >- done >+ fi >+ if test "X$found_dir" != "X"; then >+ if test -f "$dir/$libname.la"; then >+ found_la="$dir/$libname.la" >+ fi >+ fi > fi > fi >- fi >- if test "X$found_dir" = "X"; then >- if test -f "$dir/$libname.$acl_libext"; then >- found_dir="$dir" >- found_a="$dir/$libname.$acl_libext" >- fi >- fi >- if test "X$found_dir" != "X"; then >- if test -f "$dir/$libname.la"; then >- found_la="$dir/$libname.la" >- fi >- fi >+ done > fi > if test "X$found_dir" = "X"; then > for x in $LDFLAGS $LTLIBICONV; do >@@ -16672,7 +18013,7 @@ > -L*) > dir=`echo "X$x" | sed -e 's/^X-L//'` > if test -n "$acl_shlibext"; then >- if test -f "$dir/$libname$shrext"; then >+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then > found_dir="$dir" > found_so="$dir/$libname$shrext" > else >@@ -16682,14 +18023,14 @@ > | sed -e "s,^$libname$shrext\\\\.,," \ > | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ > | sed 1q ) 2>/dev/null` >- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then >+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then > found_dir="$dir" > found_so="$dir/$libname$shrext.$ver" > fi > else > eval library_names=\"$acl_library_names_spec\" > for f in $library_names; do >- if test -f "$dir/$f"; then >+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then > found_dir="$dir" > found_so="$dir/$f" > break >@@ -16699,7 +18040,7 @@ > fi > fi > if test "X$found_dir" = "X"; then >- if test -f "$dir/$libname.$acl_libext"; then >+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then > found_dir="$dir" > found_a="$dir/$libname.$acl_libext" > fi >@@ -16721,7 +18062,8 @@ > if test "X$found_so" != "X"; then > if test "$enable_rpath" = no \ > || test "X$found_dir" = "X/usr/$acl_libdirstem" \ >- || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then >+ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ >+ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then > LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" > else > haveit= >@@ -16800,6 +18142,13 @@ > fi > additional_includedir="$basedir/include" > ;; >+ */$acl_libdirstem3 | */$acl_libdirstem3/) >+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` >+ if test "$name" = 'iconv'; then >+ LIBICONV_PREFIX="$basedir" >+ fi >+ additional_includedir="$basedir/include" >+ ;; > esac > if test "X$additional_includedir" != "X"; then > if test "X$additional_includedir" != "X/usr/include"; then >@@ -16845,12 +18194,14 @@ > for dep in $dependency_libs; do > case "$dep" in > -L*) >- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` >- if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ >- && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then >+ dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` >+ if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ >+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ >+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then > haveit= >- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ >- || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then >+ if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ >+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ >+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then > if test -n "$GCC"; then > case $host_os in > linux* | gnu* | k*bsd*-gnu) haveit=yes;; >@@ -16869,14 +18220,14 @@ > exec_prefix="$acl_save_exec_prefix" > prefix="$acl_save_prefix" > >- if test "X$x" = "X-L$additional_libdir"; then >+ if test "X$x" = "X-L$dependency_libdir"; then > haveit=yes > break > fi > done > if test -z "$haveit"; then >- if test -d "$additional_libdir"; then >- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" >+ if test -d "$dependency_libdir"; then >+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$dependency_libdir" > fi > fi > haveit= >@@ -16890,14 +18241,14 @@ > exec_prefix="$acl_save_exec_prefix" > prefix="$acl_save_prefix" > >- if test "X$x" = "X-L$additional_libdir"; then >+ if test "X$x" = "X-L$dependency_libdir"; then > haveit=yes > break > fi > done > if test -z "$haveit"; then >- if test -d "$additional_libdir"; then >- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" >+ if test -d "$dependency_libdir"; then >+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$dependency_libdir" > fi > fi > fi >@@ -16929,7 +18280,14 @@ > fi > ;; > -l*) >- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` >+ dep=`echo "X$dep" | sed -e 's/^X-l//'` >+ if test "X$dep" != Xc \ >+ || case $host_os in >+ linux* | gnu* | k*bsd*-gnu) false ;; >+ *) true ;; >+ esac; then >+ names_next_round="$names_next_round $dep" >+ fi > ;; > *.la) > names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` >@@ -17004,111 +18362,80 @@ > > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 >-$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } >-if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 >+printf %s "checking for CFPreferencesCopyAppValue... " >&6; } >+if test ${gt_cv_func_CFPreferencesCopyAppValue+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > gt_save_LIBS="$LIBS" > LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > #include <CoreFoundation/CFPreferences.h> > int >-main () >+main (void) > { > CFPreferencesCopyAppValue(NULL, NULL) > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > gt_cv_func_CFPreferencesCopyAppValue=yes >-else >+else $as_nop > gt_cv_func_CFPreferencesCopyAppValue=no > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > LIBS="$gt_save_LIBS" > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 >-$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 >+printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } > if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then > >-$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h >+printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h > > fi >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 >-$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } >-if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5 >+printf %s "checking for CFLocaleCopyPreferredLanguages... " >&6; } >+if test ${gt_cv_func_CFLocaleCopyPreferredLanguages+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > gt_save_LIBS="$LIBS" > LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > #include <CoreFoundation/CFLocale.h> > int >-main () >+main (void) > { >-CFLocaleCopyCurrent(); >- ; >- return 0; >-} >-_ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >- gt_cv_func_CFLocaleCopyCurrent=yes >-else >- gt_cv_func_CFLocaleCopyCurrent=no >-fi >-rm -f core conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- LIBS="$gt_save_LIBS" >-fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 >-$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } >- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then >- >-$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h >- >- fi >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5 >-$as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; } >-if ${gt_cv_func_CFLocaleCopyPreferredLanguages+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >- gt_save_LIBS="$LIBS" >- LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" >- cat confdefs.h - <<_ACEOF >conftest.$ac_ext >-/* end confdefs.h. */ >-#include <CoreFoundation/CFLocale.h> >-int >-main () >-{ > CFLocaleCopyPreferredLanguages(); > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > gt_cv_func_CFLocaleCopyPreferredLanguages=yes >-else >+else $as_nop > gt_cv_func_CFLocaleCopyPreferredLanguages=no > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > LIBS="$gt_save_LIBS" > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 >-$as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 >+printf "%s\n" "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } > if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then > >-$as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h >+printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h > > fi > INTL_MACOSX_LIBS= > if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ >- || test $gt_cv_func_CFLocaleCopyCurrent = yes \ > || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then > INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" > fi >@@ -17150,11 +18477,12 @@ > gt_expression_test_code= > fi > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 >-$as_echo_n "checking for GNU gettext in libc... " >&6; } >-if eval \${$gt_func_gnugettext_libc+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 >+printf %s "checking for GNU gettext in libc... " >&6; } >+if eval test \${$gt_func_gnugettext_libc+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > >@@ -17169,7 +18497,7 @@ > $gt_revision_test_code > > int >-main () >+main (void) > { > > bindtextdomain ("", ""); >@@ -17179,17 +18507,18 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > eval "$gt_func_gnugettext_libc=yes" >-else >+else $as_nop > eval "$gt_func_gnugettext_libc=no" > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > fi > eval ac_res=\$$gt_func_gnugettext_libc >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >-$as_echo "$ac_res" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >+printf "%s\n" "$ac_res" >&6; } > > if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then > >@@ -17222,11 +18551,12 @@ > done > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 >-$as_echo_n "checking for iconv... " >&6; } >-if ${am_cv_func_iconv+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 >+printf %s "checking for iconv... " >&6; } >+if test ${am_cv_func_iconv+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > > am_cv_func_iconv="no, consider installing GNU libiconv" > am_cv_lib_iconv=no >@@ -17237,7 +18567,7 @@ > #include <iconv.h> > > int >-main () >+main (void) > { > iconv_t cd = iconv_open("",""); > iconv(cd,NULL,NULL,NULL,NULL); >@@ -17246,10 +18576,11 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > am_cv_func_iconv=yes > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > if test "$am_cv_func_iconv" != yes; then > am_save_LIBS="$LIBS" >@@ -17261,7 +18592,7 @@ > #include <iconv.h> > > int >-main () >+main (void) > { > iconv_t cd = iconv_open("",""); > iconv(cd,NULL,NULL,NULL,NULL); >@@ -17270,24 +18601,26 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > am_cv_lib_iconv=yes > am_cv_func_iconv=yes > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > LIBS="$am_save_LIBS" > fi > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 >-$as_echo "$am_cv_func_iconv" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 >+printf "%s\n" "$am_cv_func_iconv" >&6; } > if test "$am_cv_func_iconv" = yes; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 >-$as_echo_n "checking for working iconv... " >&6; } >-if ${am_cv_func_iconv_works+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 >+printf %s "checking for working iconv... " >&6; } >+if test ${am_cv_func_iconv_works+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > > am_save_LIBS="$LIBS" > if test $am_cv_lib_iconv = yes; then >@@ -17295,12 +18628,13 @@ > fi > am_cv_func_iconv_works=no > for ac_iconv_const in '' 'const'; do >- if test "$cross_compiling" = yes; then : >+ if test "$cross_compiling" = yes >+then : > case "$host_os" in > aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; > *) am_cv_func_iconv_works="guessing yes" ;; > esac >-else >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > >@@ -17312,11 +18646,12 @@ > #endif > > int >-main () >+main (void) > { > int result = 0; >- /* Test against AIX 5.1 bug: Failures are not distinguishable from successful >- returns. */ >+ /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from >+ successful returns. This is even documented in >+ <https://www.ibm.com/support/knowledgecenter/ssw_aix_72/i_bostechref/iconv.html> */ > { > iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); > if (cd_utf8_to_88591 != (iconv_t)(-1)) >@@ -17424,7 +18759,8 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_run "$LINENO"; then : >+if ac_fn_c_try_run "$LINENO" >+then : > am_cv_func_iconv_works=yes > fi > rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ >@@ -17436,8 +18772,8 @@ > LIBS="$am_save_LIBS" > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 >-$as_echo "$am_cv_func_iconv_works" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 >+printf "%s\n" "$am_cv_func_iconv_works" >&6; } > case "$am_cv_func_iconv_works" in > *no) am_func_iconv=no am_cv_lib_iconv=no ;; > *) am_func_iconv=yes ;; >@@ -17447,14 +18783,14 @@ > fi > if test "$am_func_iconv" = yes; then > >-$as_echo "#define HAVE_ICONV 1" >>confdefs.h >+printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h > > fi > if test "$am_cv_lib_iconv" = yes; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 >-$as_echo_n "checking how to link with libiconv... " >&6; } >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 >-$as_echo "$LIBICONV" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 >+printf %s "checking how to link with libiconv... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 >+printf "%s\n" "$LIBICONV" >&6; } > else > CPPFLAGS="$am_save_CPPFLAGS" > LIBICONV= >@@ -17479,13 +18815,16 @@ > > eval additional_includedir=\"$includedir\" > eval additional_libdir=\"$libdir\" >+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" >+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" > > exec_prefix="$acl_save_exec_prefix" > prefix="$acl_save_prefix" > > > # Check whether --with-libintl-prefix was given. >-if test "${with_libintl_prefix+set}" = set; then : >+if test ${with_libintl_prefix+y} >+then : > withval=$with_libintl_prefix; > if test "X$withval" = "Xno"; then > use_additional=no >@@ -17499,6 +18838,8 @@ > > eval additional_includedir=\"$includedir\" > eval additional_libdir=\"$libdir\" >+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" >+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" > > exec_prefix="$acl_save_exec_prefix" > prefix="$acl_save_prefix" >@@ -17506,15 +18847,19 @@ > else > additional_includedir="$withval/include" > additional_libdir="$withval/$acl_libdirstem" >- if test "$acl_libdirstem2" != "$acl_libdirstem" \ >- && test ! -d "$withval/$acl_libdirstem"; then >- additional_libdir="$withval/$acl_libdirstem2" >- fi >+ additional_libdir2="$withval/$acl_libdirstem2" >+ additional_libdir3="$withval/$acl_libdirstem3" > fi > fi > > fi > >+ if test "X$additional_libdir2" = "X$additional_libdir"; then >+ additional_libdir2= >+ fi >+ if test "X$additional_libdir3" = "X$additional_libdir"; then >+ additional_libdir3= >+ fi > LIBINTL= > LTLIBINTL= > INCINTL= >@@ -17560,45 +18905,51 @@ > shrext= > fi > if test $use_additional = yes; then >- dir="$additional_libdir" >- if test -n "$acl_shlibext"; then >- if test -f "$dir/$libname$shrext"; then >- found_dir="$dir" >- found_so="$dir/$libname$shrext" >- else >- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then >- ver=`(cd "$dir" && \ >- for f in "$libname$shrext".*; do echo "$f"; done \ >- | sed -e "s,^$libname$shrext\\\\.,," \ >- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ >- | sed 1q ) 2>/dev/null` >- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then >- found_dir="$dir" >- found_so="$dir/$libname$shrext.$ver" >+ for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do >+ if test "X$found_dir" = "X"; then >+ eval dir=\$$additional_libdir_variable >+ if test -n "$dir"; then >+ if test -n "$acl_shlibext"; then >+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then >+ found_dir="$dir" >+ found_so="$dir/$libname$shrext" >+ else >+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then >+ ver=`(cd "$dir" && \ >+ for f in "$libname$shrext".*; do echo "$f"; done \ >+ | sed -e "s,^$libname$shrext\\\\.,," \ >+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ >+ | sed 1q ) 2>/dev/null` >+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then >+ found_dir="$dir" >+ found_so="$dir/$libname$shrext.$ver" >+ fi >+ else >+ eval library_names=\"$acl_library_names_spec\" >+ for f in $library_names; do >+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then >+ found_dir="$dir" >+ found_so="$dir/$f" >+ break >+ fi >+ done >+ fi >+ fi > fi >- else >- eval library_names=\"$acl_library_names_spec\" >- for f in $library_names; do >- if test -f "$dir/$f"; then >+ if test "X$found_dir" = "X"; then >+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then > found_dir="$dir" >- found_so="$dir/$f" >- break >+ found_a="$dir/$libname.$acl_libext" > fi >- done >+ fi >+ if test "X$found_dir" != "X"; then >+ if test -f "$dir/$libname.la"; then >+ found_la="$dir/$libname.la" >+ fi >+ fi > fi > fi >- fi >- if test "X$found_dir" = "X"; then >- if test -f "$dir/$libname.$acl_libext"; then >- found_dir="$dir" >- found_a="$dir/$libname.$acl_libext" >- fi >- fi >- if test "X$found_dir" != "X"; then >- if test -f "$dir/$libname.la"; then >- found_la="$dir/$libname.la" >- fi >- fi >+ done > fi > if test "X$found_dir" = "X"; then > for x in $LDFLAGS $LTLIBINTL; do >@@ -17615,7 +18966,7 @@ > -L*) > dir=`echo "X$x" | sed -e 's/^X-L//'` > if test -n "$acl_shlibext"; then >- if test -f "$dir/$libname$shrext"; then >+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then > found_dir="$dir" > found_so="$dir/$libname$shrext" > else >@@ -17625,14 +18976,14 @@ > | sed -e "s,^$libname$shrext\\\\.,," \ > | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ > | sed 1q ) 2>/dev/null` >- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then >+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then > found_dir="$dir" > found_so="$dir/$libname$shrext.$ver" > fi > else > eval library_names=\"$acl_library_names_spec\" > for f in $library_names; do >- if test -f "$dir/$f"; then >+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then > found_dir="$dir" > found_so="$dir/$f" > break >@@ -17642,7 +18993,7 @@ > fi > fi > if test "X$found_dir" = "X"; then >- if test -f "$dir/$libname.$acl_libext"; then >+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then > found_dir="$dir" > found_a="$dir/$libname.$acl_libext" > fi >@@ -17664,7 +19015,8 @@ > if test "X$found_so" != "X"; then > if test "$enable_rpath" = no \ > || test "X$found_dir" = "X/usr/$acl_libdirstem" \ >- || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then >+ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ >+ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then > LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" > else > haveit= >@@ -17743,6 +19095,13 @@ > fi > additional_includedir="$basedir/include" > ;; >+ */$acl_libdirstem3 | */$acl_libdirstem3/) >+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` >+ if test "$name" = 'intl'; then >+ LIBINTL_PREFIX="$basedir" >+ fi >+ additional_includedir="$basedir/include" >+ ;; > esac > if test "X$additional_includedir" != "X"; then > if test "X$additional_includedir" != "X/usr/include"; then >@@ -17788,12 +19147,14 @@ > for dep in $dependency_libs; do > case "$dep" in > -L*) >- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` >- if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ >- && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then >+ dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` >+ if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ >+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ >+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then > haveit= >- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ >- || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then >+ if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ >+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ >+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then > if test -n "$GCC"; then > case $host_os in > linux* | gnu* | k*bsd*-gnu) haveit=yes;; >@@ -17812,14 +19173,14 @@ > exec_prefix="$acl_save_exec_prefix" > prefix="$acl_save_prefix" > >- if test "X$x" = "X-L$additional_libdir"; then >+ if test "X$x" = "X-L$dependency_libdir"; then > haveit=yes > break > fi > done > if test -z "$haveit"; then >- if test -d "$additional_libdir"; then >- LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" >+ if test -d "$dependency_libdir"; then >+ LIBINTL="${LIBINTL}${LIBINTL:+ }-L$dependency_libdir" > fi > fi > haveit= >@@ -17833,14 +19194,14 @@ > exec_prefix="$acl_save_exec_prefix" > prefix="$acl_save_prefix" > >- if test "X$x" = "X-L$additional_libdir"; then >+ if test "X$x" = "X-L$dependency_libdir"; then > haveit=yes > break > fi > done > if test -z "$haveit"; then >- if test -d "$additional_libdir"; then >- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" >+ if test -d "$dependency_libdir"; then >+ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$dependency_libdir" > fi > fi > fi >@@ -17872,7 +19233,14 @@ > fi > ;; > -l*) >- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` >+ dep=`echo "X$dep" | sed -e 's/^X-l//'` >+ if test "X$dep" != Xc \ >+ || case $host_os in >+ linux* | gnu* | k*bsd*-gnu) false ;; >+ *) true ;; >+ esac; then >+ names_next_round="$names_next_round $dep" >+ fi > ;; > *.la) > names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` >@@ -17923,11 +19291,12 @@ > > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 >-$as_echo_n "checking for GNU gettext in libintl... " >&6; } >-if eval \${$gt_func_gnugettext_libintl+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 >+printf %s "checking for GNU gettext in libintl... " >&6; } >+if eval test \${$gt_func_gnugettext_libintl+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > gt_save_CPPFLAGS="$CPPFLAGS" > CPPFLAGS="$CPPFLAGS $INCINTL" > gt_save_LIBS="$LIBS" >@@ -17950,7 +19319,7 @@ > $gt_revision_test_code > > int >-main () >+main (void) > { > > bindtextdomain ("", ""); >@@ -17960,12 +19329,13 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > eval "$gt_func_gnugettext_libintl=yes" >-else >+else $as_nop > eval "$gt_func_gnugettext_libintl=no" > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then > LIBS="$LIBS $LIBICONV" >@@ -17987,7 +19357,7 @@ > $gt_revision_test_code > > int >-main () >+main (void) > { > > bindtextdomain ("", ""); >@@ -17997,21 +19367,22 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > LIBINTL="$LIBINTL $LIBICONV" > LTLIBINTL="$LTLIBINTL $LTLIBICONV" > eval "$gt_func_gnugettext_libintl=yes" > > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > fi > CPPFLAGS="$gt_save_CPPFLAGS" > LIBS="$gt_save_LIBS" > fi > eval ac_res=\$$gt_func_gnugettext_libintl >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >-$as_echo "$ac_res" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 >+printf "%s\n" "$ac_res" >&6; } > fi > > if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ >@@ -18038,20 +19409,20 @@ > if test "$gt_use_preinstalled_gnugettext" = "yes" \ > || test "$nls_cv_use_gnu_gettext" = "yes"; then > >-$as_echo "#define ENABLE_NLS 1" >>confdefs.h >+printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h > > else > USE_NLS=no > fi > fi > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 >-$as_echo_n "checking whether to use NLS... " >&6; } >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 >-$as_echo "$USE_NLS" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 >+printf %s "checking whether to use NLS... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 >+printf "%s\n" "$USE_NLS" >&6; } > if test "$USE_NLS" = "yes"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 >-$as_echo_n "checking where the gettext function comes from... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 >+printf %s "checking where the gettext function comes from... " >&6; } > if test "$gt_use_preinstalled_gnugettext" = "yes"; then > if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then > gt_source="external libintl" >@@ -18061,18 +19432,18 @@ > else > gt_source="included intl directory" > fi >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 >-$as_echo "$gt_source" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 >+printf "%s\n" "$gt_source" >&6; } > fi > > if test "$USE_NLS" = "yes"; then > > if test "$gt_use_preinstalled_gnugettext" = "yes"; then > if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 >-$as_echo_n "checking how to link with libintl... " >&6; } >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 >-$as_echo "$LIBINTL" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 >+printf %s "checking how to link with libintl... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 >+printf "%s\n" "$LIBINTL" >&6; } > > for element in $INCINTL; do > haveit= >@@ -18099,10 +19470,10 @@ > fi > > >-$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h >+printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h > > >-$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h >+printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h > > fi > >@@ -18129,132 +19500,182 @@ > > # There is currently no workarounds in this package if some of > # these headers are missing. >-for ac_header in fcntl.h limits.h sys/time.h >+ for ac_header in fcntl.h limits.h sys/time.h > do : >- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` >-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" >-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : >+ as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` >+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" >+if eval test \"x\$"$as_ac_Header"\" = x"yes" >+then : > cat >>confdefs.h <<_ACEOF >-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 >+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 > _ACEOF > >-else >+else $as_nop > as_fn_error $? "Required header file(s) are missing." "$LINENO" 5 > fi > > done > >+# immintrin.h allows the use of the intrinsic functions if they are available. >+# cpuid.h may be used for detecting x86 processor features at runtime. >+ac_fn_c_check_header_compile "$LINENO" "immintrin.h" "ac_cv_header_immintrin_h" "$ac_includes_default" >+if test "x$ac_cv_header_immintrin_h" = xyes >+then : >+ printf "%s\n" "#define HAVE_IMMINTRIN_H 1" >>confdefs.h > >-# This allows the use of the intrinsic functions if they are available. >-for ac_header in immintrin.h >-do : >- ac_fn_c_check_header_mongrel "$LINENO" "immintrin.h" "ac_cv_header_immintrin_h" "$ac_includes_default" >-if test "x$ac_cv_header_immintrin_h" = xyes; then : >- cat >>confdefs.h <<_ACEOF >-#define HAVE_IMMINTRIN_H 1 >-_ACEOF >+fi >+ac_fn_c_check_header_compile "$LINENO" "cpuid.h" "ac_cv_header_cpuid_h" "$ac_includes_default" >+if test "x$ac_cv_header_cpuid_h" = xyes >+then : >+ printf "%s\n" "#define HAVE_CPUID_H 1" >>confdefs.h > > fi > >-done > > >- > ############################################################################### > # Checks for typedefs, structures, and compiler characteristics. > ############################################################################### > >+ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" >+if test "x$ac_cv_type__Bool" = xyes >+then : > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 >-$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } >-if ${ac_cv_header_stdbool_h+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+printf "%s\n" "#define HAVE__BOOL 1" >>confdefs.h >+ >+ >+fi >+ >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 >+printf %s "checking for stdbool.h that conforms to C99... " >&6; } >+if test ${ac_cv_header_stdbool_h+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >+#include <stdbool.h> > >- #include <stdbool.h> >- #ifndef bool >- "error: bool is not defined" >+ #ifndef __bool_true_false_are_defined >+ #error "__bool_true_false_are_defined is not defined" > #endif >- #ifndef false >- "error: false is not defined" >+ char a[__bool_true_false_are_defined == 1 ? 1 : -1]; >+ >+ /* Regardless of whether this is C++ or "_Bool" is a >+ valid type name, "true" and "false" should be usable >+ in #if expressions and integer constant expressions, >+ and "bool" should be a valid type name. */ >+ >+ #if !true >+ #error "'true' is not true" > #endif >- #if false >- "error: false is not 0" >- #endif >- #ifndef true >- "error: true is not defined" >- #endif > #if true != 1 >- "error: true is not 1" >+ #error "'true' is not equal to 1" > #endif >- #ifndef __bool_true_false_are_defined >- "error: __bool_true_false_are_defined is not defined" >+ char b[true == 1 ? 1 : -1]; >+ char c[true]; >+ >+ #if false >+ #error "'false' is not false" > #endif >+ #if false != 0 >+ #error "'false' is not equal to 0" >+ #endif >+ char d[false == 0 ? 1 : -1]; > >- struct s { _Bool s: 1; _Bool t; } s; >+ enum { e = false, f = true, g = false * true, h = true * 256 }; > >- char a[true == 1 ? 1 : -1]; >- char b[false == 0 ? 1 : -1]; >- char c[__bool_true_false_are_defined == 1 ? 1 : -1]; >- char d[(bool) 0.5 == true ? 1 : -1]; >- /* See body of main program for 'e'. */ >- char f[(_Bool) 0.0 == false ? 1 : -1]; >- char g[true]; >- char h[sizeof (_Bool)]; >- char i[sizeof s.t]; >- enum { j = false, k = true, l = false * true, m = true * 256 }; >+ char i[(bool) 0.5 == true ? 1 : -1]; >+ char j[(bool) 0.0 == false ? 1 : -1]; >+ char k[sizeof (bool) > 0 ? 1 : -1]; >+ >+ struct sb { bool s: 1; bool t; } s; >+ char l[sizeof s.t > 0 ? 1 : -1]; >+ > /* The following fails for > HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ >- _Bool n[m]; >- char o[sizeof n == m * sizeof n[0] ? 1 : -1]; >- char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; >+ bool m[h]; >+ char n[sizeof m == h * sizeof m[0] ? 1 : -1]; >+ char o[-1 - (bool) 0 < 0 ? 1 : -1]; > /* Catch a bug in an HP-UX C compiler. See >- http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html >- http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html >+ https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html >+ https://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html > */ >- _Bool q = true; >- _Bool *pq = &q; >+ bool p = true; >+ bool *pp = &p; > >+ /* C 1999 specifies that bool, true, and false are to be >+ macros, but C++ 2011 and later overrule this. */ >+ #if __cplusplus < 201103 >+ #ifndef bool >+ #error "bool is not defined" >+ #endif >+ #ifndef false >+ #error "false is not defined" >+ #endif >+ #ifndef true >+ #error "true is not defined" >+ #endif >+ #endif >+ >+ /* If _Bool is available, repeat with it all the tests >+ above that used bool. */ >+ #ifdef HAVE__BOOL >+ struct sB { _Bool s: 1; _Bool t; } t; >+ >+ char q[(_Bool) 0.5 == true ? 1 : -1]; >+ char r[(_Bool) 0.0 == false ? 1 : -1]; >+ char u[sizeof (_Bool) > 0 ? 1 : -1]; >+ char v[sizeof t.t > 0 ? 1 : -1]; >+ >+ _Bool w[h]; >+ char x[sizeof m == h * sizeof m[0] ? 1 : -1]; >+ char y[-1 - (_Bool) 0 < 0 ? 1 : -1]; >+ _Bool z = true; >+ _Bool *pz = &p; >+ #endif >+ > int >-main () >+main (void) > { > >- bool e = &s; >- *pq |= q; >- *pq |= ! q; >- /* Refer to every declared value, to avoid compiler optimizations. */ >- return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l >- + !m + !n + !o + !p + !q + !pq); >+ bool ps = &s; >+ *pp |= p; >+ *pp |= ! p; > >+ #ifdef HAVE__BOOL >+ _Bool pt = &t; >+ *pz |= z; >+ *pz |= ! z; >+ #endif >+ >+ /* Refer to every declared value, so they cannot be >+ discarded as unused. */ >+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !j + !k >+ + !l + !m + !n + !o + !p + !pp + !ps >+ #ifdef HAVE__BOOL >+ + !q + !r + !u + !v + !w + !x + !y + !z + !pt >+ #endif >+ ); >+ > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_cv_header_stdbool_h=yes >-else >+else $as_nop > ac_cv_header_stdbool_h=no > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 >-$as_echo "$ac_cv_header_stdbool_h" >&6; } >- ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" >-if test "x$ac_cv_type__Bool" = xyes; then : >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 >+printf "%s\n" "$ac_cv_header_stdbool_h" >&6; } > >-cat >>confdefs.h <<_ACEOF >-#define HAVE__BOOL 1 >-_ACEOF >- >- >-fi >- >- > if test $ac_cv_header_stdbool_h = yes; then > >-$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h >+printf "%s\n" "#define HAVE_STDBOOL_H 1" >>confdefs.h > > fi > >@@ -18264,12 +19685,10 @@ > no|yes) ;; #( > *) > >-$as_echo "#define _UINT8_T 1" >>confdefs.h >+printf "%s\n" "#define _UINT8_T 1" >>confdefs.h > > >-cat >>confdefs.h <<_ACEOF >-#define uint8_t $ac_cv_c_uint8_t >-_ACEOF >+printf "%s\n" "#define uint8_t $ac_cv_c_uint8_t" >>confdefs.h > ;; > esac > >@@ -18279,9 +19698,7 @@ > *) > > >-cat >>confdefs.h <<_ACEOF >-#define uint16_t $ac_cv_c_uint16_t >-_ACEOF >+printf "%s\n" "#define uint16_t $ac_cv_c_uint16_t" >>confdefs.h > ;; > esac > >@@ -18290,9 +19707,7 @@ > no|yes) ;; #( > *) > >-cat >>confdefs.h <<_ACEOF >-#define int32_t $ac_cv_c_int32_t >-_ACEOF >+printf "%s\n" "#define int32_t $ac_cv_c_int32_t" >>confdefs.h > ;; > esac > >@@ -18301,12 +19716,10 @@ > no|yes) ;; #( > *) > >-$as_echo "#define _UINT32_T 1" >>confdefs.h >+printf "%s\n" "#define _UINT32_T 1" >>confdefs.h > > >-cat >>confdefs.h <<_ACEOF >-#define uint32_t $ac_cv_c_uint32_t >-_ACEOF >+printf "%s\n" "#define uint32_t $ac_cv_c_uint32_t" >>confdefs.h > ;; > esac > >@@ -18315,9 +19728,7 @@ > no|yes) ;; #( > *) > >-cat >>confdefs.h <<_ACEOF >-#define int64_t $ac_cv_c_int64_t >-_ACEOF >+printf "%s\n" "#define int64_t $ac_cv_c_int64_t" >>confdefs.h > ;; > esac > >@@ -18326,29 +19737,28 @@ > no|yes) ;; #( > *) > >-$as_echo "#define _UINT64_T 1" >>confdefs.h >+printf "%s\n" "#define _UINT64_T 1" >>confdefs.h > > >-cat >>confdefs.h <<_ACEOF >-#define uint64_t $ac_cv_c_uint64_t >-_ACEOF >+printf "%s\n" "#define uint64_t $ac_cv_c_uint64_t" >>confdefs.h > ;; > esac > > > ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default" >-if test "x$ac_cv_type_uintptr_t" = xyes; then : >+if test "x$ac_cv_type_uintptr_t" = xyes >+then : > >-$as_echo "#define HAVE_UINTPTR_T 1" >>confdefs.h >+printf "%s\n" "#define HAVE_UINTPTR_T 1" >>confdefs.h > >-else >+else $as_nop > for ac_type in 'unsigned int' 'unsigned long int' \ > 'unsigned long long int'; do > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > $ac_includes_default > int >-main () >+main (void) > { > static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))]; > test_array [0] = 0; >@@ -18358,15 +19768,14 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > >-cat >>confdefs.h <<_ACEOF >-#define uintptr_t $ac_type >-_ACEOF >+printf "%s\n" "#define uintptr_t $ac_type" >>confdefs.h > > ac_type= > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > test -z "$ac_type" && break > done > fi >@@ -18377,17 +19786,19 @@ > # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects > # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. > # This bug is HP SR number 8606223364. >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 >-$as_echo_n "checking size of size_t... " >&6; } >-if ${ac_cv_sizeof_size_t+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 >+printf %s "checking size of size_t... " >&6; } >+if test ${ac_cv_sizeof_size_t+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop >+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default" >+then : > >-else >+else $as_nop > if test "$ac_cv_type_size_t" = yes; then >- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} > as_fn_error 77 "cannot compute sizeof (size_t) > See \`config.log' for more details" "$LINENO" 5; } > else >@@ -18396,14 +19807,12 @@ > fi > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 >-$as_echo "$ac_cv_sizeof_size_t" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 >+printf "%s\n" "$ac_cv_sizeof_size_t" >&6; } > > > >-cat >>confdefs.h <<_ACEOF >-#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t >-_ACEOF >+printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h > > > >@@ -18411,64 +19820,61 @@ > # information is available in struct stat. Otherwise one second accuracy > # is used. > ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.tv_nsec" "ac_cv_member_struct_stat_st_atim_tv_nsec" "$ac_includes_default" >-if test "x$ac_cv_member_struct_stat_st_atim_tv_nsec" = xyes; then : >+if test "x$ac_cv_member_struct_stat_st_atim_tv_nsec" = xyes >+then : > >-cat >>confdefs.h <<_ACEOF >-#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1 >-_ACEOF >+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1" >>confdefs.h > > > fi > ac_fn_c_check_member "$LINENO" "struct stat" "st_atimespec.tv_nsec" "ac_cv_member_struct_stat_st_atimespec_tv_nsec" "$ac_includes_default" >-if test "x$ac_cv_member_struct_stat_st_atimespec_tv_nsec" = xyes; then : >+if test "x$ac_cv_member_struct_stat_st_atimespec_tv_nsec" = xyes >+then : > >-cat >>confdefs.h <<_ACEOF >-#define HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC 1 >-_ACEOF >+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC 1" >>confdefs.h > > > fi > ac_fn_c_check_member "$LINENO" "struct stat" "st_atimensec" "ac_cv_member_struct_stat_st_atimensec" "$ac_includes_default" >-if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes; then : >+if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes >+then : > >-cat >>confdefs.h <<_ACEOF >-#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1 >-_ACEOF >+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1" >>confdefs.h > > > fi > ac_fn_c_check_member "$LINENO" "struct stat" "st_uatime" "ac_cv_member_struct_stat_st_uatime" "$ac_includes_default" >-if test "x$ac_cv_member_struct_stat_st_uatime" = xyes; then : >+if test "x$ac_cv_member_struct_stat_st_uatime" = xyes >+then : > >-cat >>confdefs.h <<_ACEOF >-#define HAVE_STRUCT_STAT_ST_UATIME 1 >-_ACEOF >+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_UATIME 1" >>confdefs.h > > > fi > ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.st__tim.tv_nsec" "ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" "$ac_includes_default" >-if test "x$ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" = xyes; then : >+if test "x$ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" = xyes >+then : > >-cat >>confdefs.h <<_ACEOF >-#define HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC 1 >-_ACEOF >+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC 1" >>confdefs.h > > > fi > > > # Check whether --enable-largefile was given. >-if test "${enable_largefile+set}" = set; then : >+if test ${enable_largefile+y} >+then : > enableval=$enable_largefile; > fi > > if test "$enable_largefile" != no; then > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 >-$as_echo_n "checking for special C compiler options needed for large files... " >&6; } >-if ${ac_cv_sys_largefile_CC+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 >+printf %s "checking for special C compiler options needed for large files... " >&6; } >+if test ${ac_cv_sys_largefile_CC+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_cv_sys_largefile_CC=no > if test "$GCC" != yes; then > ac_save_CC=$CC >@@ -18482,44 +19888,47 @@ > We can't simply define LARGE_OFF_T to be 9223372036854775807, > since some C++ compilers masquerading as C compilers > incorrectly reject 9223372036854775807. */ >-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) >+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) > int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 > && LARGE_OFF_T % 2147483647 == 1) > ? 1 : -1]; > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >- if ac_fn_c_try_compile "$LINENO"; then : >+ if ac_fn_c_try_compile "$LINENO" >+then : > break > fi >-rm -f core conftest.err conftest.$ac_objext >+rm -f core conftest.err conftest.$ac_objext conftest.beam > CC="$CC -n32" >- if ac_fn_c_try_compile "$LINENO"; then : >+ if ac_fn_c_try_compile "$LINENO" >+then : > ac_cv_sys_largefile_CC=' -n32'; break > fi >-rm -f core conftest.err conftest.$ac_objext >+rm -f core conftest.err conftest.$ac_objext conftest.beam > break > done > CC=$ac_save_CC > rm -f conftest.$ac_ext > fi > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 >-$as_echo "$ac_cv_sys_largefile_CC" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 >+printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; } > if test "$ac_cv_sys_largefile_CC" != no; then > CC=$CC$ac_cv_sys_largefile_CC > fi > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 >-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } >-if ${ac_cv_sys_file_offset_bits+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 >+printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } >+if test ${ac_cv_sys_file_offset_bits+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > while :; do > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >@@ -18528,22 +19937,23 @@ > We can't simply define LARGE_OFF_T to be 9223372036854775807, > since some C++ compilers masquerading as C compilers > incorrectly reject 9223372036854775807. */ >-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) >+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) > int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 > && LARGE_OFF_T % 2147483647 == 1) > ? 1 : -1]; > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_cv_sys_file_offset_bits=no; break > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > #define _FILE_OFFSET_BITS 64 >@@ -18552,43 +19962,43 @@ > We can't simply define LARGE_OFF_T to be 9223372036854775807, > since some C++ compilers masquerading as C compilers > incorrectly reject 9223372036854775807. */ >-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) >+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) > int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 > && LARGE_OFF_T % 2147483647 == 1) > ? 1 : -1]; > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_cv_sys_file_offset_bits=64; break > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ac_cv_sys_file_offset_bits=unknown > break > done > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 >-$as_echo "$ac_cv_sys_file_offset_bits" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 >+printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; } > case $ac_cv_sys_file_offset_bits in #( > no | unknown) ;; > *) >-cat >>confdefs.h <<_ACEOF >-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits >-_ACEOF >+printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h > ;; > esac > rm -rf conftest* > if test $ac_cv_sys_file_offset_bits = unknown; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 >-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } >-if ${ac_cv_sys_large_files+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 >+printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } >+if test ${ac_cv_sys_large_files+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > while :; do > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >@@ -18597,22 +20007,23 @@ > We can't simply define LARGE_OFF_T to be 9223372036854775807, > since some C++ compilers masquerading as C compilers > incorrectly reject 9223372036854775807. */ >-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) >+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) > int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 > && LARGE_OFF_T % 2147483647 == 1) > ? 1 : -1]; > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_cv_sys_large_files=no; break > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > #define _LARGE_FILES 1 >@@ -18621,47 +20032,45 @@ > We can't simply define LARGE_OFF_T to be 9223372036854775807, > since some C++ compilers masquerading as C compilers > incorrectly reject 9223372036854775807. */ >-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) >+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) > int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 > && LARGE_OFF_T % 2147483647 == 1) > ? 1 : -1]; > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_cv_sys_large_files=1; break > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ac_cv_sys_large_files=unknown > break > done > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 >-$as_echo "$ac_cv_sys_large_files" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 >+printf "%s\n" "$ac_cv_sys_large_files" >&6; } > case $ac_cv_sys_large_files in #( > no | unknown) ;; > *) >-cat >>confdefs.h <<_ACEOF >-#define _LARGE_FILES $ac_cv_sys_large_files >-_ACEOF >+printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h > ;; > esac > rm -rf conftest* > fi >- >- > fi > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 >-$as_echo_n "checking whether byte ordering is bigendian... " >&6; } >-if ${ac_cv_c_bigendian+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 >+printf %s "checking whether byte ordering is bigendian... " >&6; } >+if test ${ac_cv_c_bigendian+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_cv_c_bigendian=unknown > # See if we're dealing with a universal compiler. > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -18672,7 +20081,8 @@ > typedef int dummy; > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > > # Check for potential -arch flags. It is not universal unless > # there are at least two -arch flags with different values. >@@ -18696,7 +20106,7 @@ > fi > done > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > if test $ac_cv_c_bigendian = unknown; then > # See if sys/param.h defines the BYTE_ORDER macro. > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -18705,7 +20115,7 @@ > #include <sys/param.h> > > int >-main () >+main (void) > { > #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ > && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ >@@ -18717,7 +20127,8 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > # It does; now see whether it defined to BIG_ENDIAN or not. > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >@@ -18725,7 +20136,7 @@ > #include <sys/param.h> > > int >-main () >+main (void) > { > #if BYTE_ORDER != BIG_ENDIAN > not big endian >@@ -18735,14 +20146,15 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_cv_c_bigendian=yes >-else >+else $as_nop > ac_cv_c_bigendian=no > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi > if test $ac_cv_c_bigendian = unknown; then > # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). >@@ -18751,7 +20163,7 @@ > #include <limits.h> > > int >-main () >+main (void) > { > #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) > bogus endian macros >@@ -18761,14 +20173,15 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > # It does; now see whether it defined to _BIG_ENDIAN or not. > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > #include <limits.h> > > int >-main () >+main (void) > { > #ifndef _BIG_ENDIAN > not big endian >@@ -18778,31 +20191,33 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > ac_cv_c_bigendian=yes >-else >+else $as_nop > ac_cv_c_bigendian=no > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi > if test $ac_cv_c_bigendian = unknown; then > # Compile a test program. >- if test "$cross_compiling" = yes; then : >+ if test "$cross_compiling" = yes >+then : > # Try to guess by grepping values from an object file. > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >-short int ascii_mm[] = >+unsigned short int ascii_mm[] = > { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; >- short int ascii_ii[] = >+ unsigned short int ascii_ii[] = > { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; > int use_ascii (int i) { > return ascii_mm[i] + ascii_ii[i]; > } >- short int ebcdic_ii[] = >+ unsigned short int ebcdic_ii[] = > { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; >- short int ebcdic_mm[] = >+ unsigned short int ebcdic_mm[] = > { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; > int use_ebcdic (int i) { > return ebcdic_mm[i] + ebcdic_ii[i]; >@@ -18810,14 +20225,15 @@ > extern int foo; > > int >-main () >+main (void) > { > return use_ascii (foo) == use_ebcdic (foo); > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then > ac_cv_c_bigendian=yes > fi >@@ -18830,13 +20246,13 @@ > fi > fi > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >-else >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > $ac_includes_default > int >-main () >+main (void) > { > > /* Are we little or big endian? From Harbison&Steele. */ >@@ -18852,9 +20268,10 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_run "$LINENO"; then : >+if ac_fn_c_try_run "$LINENO" >+then : > ac_cv_c_bigendian=no >-else >+else $as_nop > ac_cv_c_bigendian=yes > fi > rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ >@@ -18863,17 +20280,17 @@ > > fi > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 >-$as_echo "$ac_cv_c_bigendian" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 >+printf "%s\n" "$ac_cv_c_bigendian" >&6; } > case $ac_cv_c_bigendian in #( > yes) >- $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h >+ printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h > ;; #( > no) > ;; #( > universal) > >-$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h >+printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h > > ;; #( > *) >@@ -18882,7 +20299,43 @@ > esac > > >+# __attribute__((__constructor__)) can be used for one-time initializations. >+# Use -Werror because some compilers accept unknown attributes and just >+# give a warning. If it works this should give no warnings, even >+# clang -Weverything should be fine. >+# dnl This doesn't need AC_LANG_SOURCE, minimal code is enough. >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if __attribute__((__constructor__)) can be used" >&5 >+printf %s "checking if __attribute__((__constructor__)) can be used... " >&6; } >+have_func_attribute_constructor=no >+OLD_CFLAGS="$CFLAGS" >+CFLAGS="$CFLAGS -Werror" >+cat confdefs.h - <<_ACEOF >conftest.$ac_ext >+/* end confdefs.h. */ > >+ __attribute__((__constructor__)) >+ static void my_constructor_func(void) { return; } >+ >+_ACEOF >+if ac_fn_c_try_compile "$LINENO" >+then : >+ >+ >+printf "%s\n" "#define HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR 1" >>confdefs.h >+ >+ have_func_attribute_constructor=yes >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } >+ >+else $as_nop >+ >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } >+ >+fi >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext >+CFLAGS="$OLD_CFLAGS" >+ >+ > ############################################################################### > # Checks for library functions. > ############################################################################### >@@ -18890,53 +20343,52 @@ > # Gnulib replacements as needed > > if test -z "$GETOPT_H"; then >- for ac_header in getopt.h >+ for ac_header in getopt.h > do : >- ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" >-if test "x$ac_cv_header_getopt_h" = xyes; then : >- cat >>confdefs.h <<_ACEOF >-#define HAVE_GETOPT_H 1 >-_ACEOF >+ ac_fn_c_check_header_compile "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" >+if test "x$ac_cv_header_getopt_h" = xyes >+then : >+ printf "%s\n" "#define HAVE_GETOPT_H 1" >>confdefs.h > >-else >+else $as_nop > GETOPT_H=getopt.h > fi > > done >- > fi > > if test -z "$GETOPT_H"; then >- for ac_func in getopt_long >+ >+ for ac_func in getopt_long > do : > ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long" >-if test "x$ac_cv_func_getopt_long" = xyes; then : >- cat >>confdefs.h <<_ACEOF >-#define HAVE_GETOPT_LONG 1 >-_ACEOF >+if test "x$ac_cv_func_getopt_long" = xyes >+then : >+ printf "%s\n" "#define HAVE_GETOPT_LONG 1" >>confdefs.h > >-else >+else $as_nop > GETOPT_H=getopt.h > fi >-done > >+done > fi > > if test -z "$GETOPT_H"; then >- ac_fn_c_check_decl "$LINENO" "optreset" "ac_cv_have_decl_optreset" "#include <getopt.h> >-" >-if test "x$ac_cv_have_decl_optreset" = xyes; then : >+ ac_fn_check_decl "$LINENO" "optreset" "ac_cv_have_decl_optreset" "#include <getopt.h> >+" "$ac_c_undeclared_builtin_options" "CFLAGS" >+if test "x$ac_cv_have_decl_optreset" = xyes >+then : > >-$as_echo "#define HAVE_OPTRESET 1" >>confdefs.h >+printf "%s\n" "#define HAVE_OPTRESET 1" >>confdefs.h > > fi >- > fi > > > > >- if test -n "$GETOPT_H"; then : >+ if test -n "$GETOPT_H" >+then : > > case " $LIBOBJS " in > *" getopt.$ac_objext "* ) ;; >@@ -18953,7 +20405,7 @@ > > GETOPT_H=getopt.h > >-$as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h >+printf "%s\n" "#define __GETOPT_PREFIX rpl_" >>confdefs.h > > > >@@ -18962,30 +20414,28 @@ > > > # Find the best function to set timestamps. >-for ac_func in futimens futimes futimesat utimes _futime utime >+ >+ for ac_func in futimens futimes futimesat utimes _futime utime > do : >- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` >+ as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` > ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" >-if eval test \"x\$"$as_ac_var"\" = x"yes"; then : >+if eval test \"x\$"$as_ac_var"\" = x"yes" >+then : > cat >>confdefs.h <<_ACEOF >-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 >+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 > _ACEOF > break > fi >+ > done > >- > # This is nice to have but not mandatory. >-for ac_func in posix_fadvise >-do : >- ac_fn_c_check_func "$LINENO" "posix_fadvise" "ac_cv_func_posix_fadvise" >-if test "x$ac_cv_func_posix_fadvise" = xyes; then : >- cat >>confdefs.h <<_ACEOF >-#define HAVE_POSIX_FADVISE 1 >-_ACEOF >+ac_fn_c_check_func "$LINENO" "posix_fadvise" "ac_cv_func_posix_fadvise" >+if test "x$ac_cv_func_posix_fadvise" = xyes >+then : >+ printf "%s\n" "#define HAVE_POSIX_FADVISE 1" >>confdefs.h > > fi >-done > > > >@@ -18995,30 +20445,26 @@ > > > >-ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include <errno.h> >-" >-if test "x$ac_cv_have_decl_program_invocation_name" = xyes; then : >- ac_have_decl=1 >-else >- ac_have_decl=0 >-fi >+ac_fn_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include <errno.h> >+" "$ac_c_undeclared_builtin_options" "CFLAGS" >+if test "x$ac_cv_have_decl_program_invocation_name" = xyes >+then : > >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_PROGRAM_INVOCATION_NAME $ac_have_decl >-_ACEOF >+printf "%s\n" "#define HAVE_PROGRAM_INVOCATION_NAME 1" >>confdefs.h > >+fi > > > > > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if __builtin_bswap16/32/64 are supported" >&5 >-$as_echo_n "checking if __builtin_bswap16/32/64 are supported... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if __builtin_bswap16/32/64 are supported" >&5 >+printf %s "checking if __builtin_bswap16/32/64 are supported... " >&6; } > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > int >-main () >+main (void) > { > __builtin_bswap16(1); > __builtin_bswap32(1); >@@ -19027,39 +20473,40 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > > >-$as_echo "#define HAVE___BUILTIN_BSWAPXX 1" >>confdefs.h >+printf "%s\n" "#define HAVE___BUILTIN_BSWAPXX 1" >>confdefs.h > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > >-else >+else $as_nop > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > > # Look for other byteswapping methods. >- for ac_header in byteswap.h sys/endian.h sys/byteorder.h >+ for ac_header in byteswap.h sys/endian.h sys/byteorder.h > do : >- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` >-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" >-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : >+ as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` >+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" >+if eval test \"x\$"$as_ac_Header"\" = x"yes" >+then : > cat >>confdefs.h <<_ACEOF >-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 >+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 > _ACEOF > break > fi > > done > >- > # Even if we have byteswap.h we may lack the specific macros/functions. > if test x$ac_cv_header_byteswap_h = xyes ; then > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if bswap_16 is available" >&5 >-$as_echo_n "checking if bswap_16 is available... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if bswap_16 is available" >&5 >+printf %s "checking if bswap_16 is available... " >&6; } > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > >@@ -19072,24 +20519,25 @@ > } > > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > > >-$as_echo "#define HAVE_BSWAP_16 1" >>confdefs.h >+printf "%s\n" "#define HAVE_BSWAP_16 1" >>confdefs.h > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > >-else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+else $as_nop >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if bswap_32 is available" >&5 >-$as_echo_n "checking if bswap_32 is available... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if bswap_32 is available" >&5 >+printf %s "checking if bswap_32 is available... " >&6; } > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > >@@ -19102,24 +20550,25 @@ > } > > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > > >-$as_echo "#define HAVE_BSWAP_32 1" >>confdefs.h >+printf "%s\n" "#define HAVE_BSWAP_32 1" >>confdefs.h > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > >-else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+else $as_nop >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if bswap_64 is available" >&5 >-$as_echo_n "checking if bswap_64 is available... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if bswap_64 is available" >&5 >+printf %s "checking if bswap_64 is available... " >&6; } > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > >@@ -19132,33 +20581,35 @@ > } > > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > > >-$as_echo "#define HAVE_BSWAP_64 1" >>confdefs.h >+printf "%s\n" "#define HAVE_BSWAP_64 1" >>confdefs.h > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > >-else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+else $as_nop >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > > fi > > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if unaligned memory access should be used" >&5 >-$as_echo_n "checking if unaligned memory access should be used... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if unaligned memory access should be used" >&5 >+printf %s "checking if unaligned memory access should be used... " >&6; } > # Check whether --enable-unaligned-access was given. >-if test "${enable_unaligned_access+set}" = set; then : >+if test ${enable_unaligned_access+y} >+then : > enableval=$enable_unaligned_access; >-else >+else $as_nop > enable_unaligned_access=auto > fi > >@@ -19169,6 +20620,27 @@ > i?86|x86_64|powerpc|powerpc64) > enable_unaligned_access=yes > ;; >+ arm*|aarch64*) >+ # On 32-bit and 64-bit ARM, GCC and Clang >+ # #define __ARM_FEATURE_UNALIGNED if >+ # unaligned access is supported. >+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext >+/* end confdefs.h. */ >+ >+#ifndef __ARM_FEATURE_UNALIGNED >+compile error >+#endif >+int main(void) { return 0; } >+ >+_ACEOF >+if ac_fn_c_try_compile "$LINENO" >+then : >+ enable_unaligned_access=yes >+else $as_nop >+ enable_unaligned_access=no >+fi >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext >+ ;; > *) > enable_unaligned_access=no > ;; >@@ -19176,89 +20648,87 @@ > fi > if test "x$enable_unaligned_access" = xyes ; then > >-$as_echo "#define TUKLIB_FAST_UNALIGNED_ACCESS 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_FAST_UNALIGNED_ACCESS 1" >>confdefs.h > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if unsafe type punning should be used" >&5 >-$as_echo_n "checking if unsafe type punning should be used... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if unsafe type punning should be used" >&5 >+printf %s "checking if unsafe type punning should be used... " >&6; } > # Check whether --enable-unsafe-type-punning was given. >-if test "${enable_unsafe_type_punning+set}" = set; then : >+if test ${enable_unsafe_type_punning+y} >+then : > enableval=$enable_unsafe_type_punning; >-else >+else $as_nop > enable_unsafe_type_punning=no > fi > > if test "x$enable_unsafe_type_punning" = xyes ; then > >-$as_echo "#define TUKLIB_USE_UNSAFE_TYPE_PUNNING 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_USE_UNSAFE_TYPE_PUNNING 1" >>confdefs.h > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > fi > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if __builtin_assume_aligned is supported" >&5 >-$as_echo_n "checking if __builtin_assume_aligned is supported... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if __builtin_assume_aligned is supported" >&5 >+printf %s "checking if __builtin_assume_aligned is supported... " >&6; } > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > int >-main () >+main (void) > { > __builtin_assume_aligned("", 1); > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > > >-$as_echo "#define HAVE___BUILTIN_ASSUME_ALIGNED 1" >>confdefs.h >+printf "%s\n" "#define HAVE___BUILTIN_ASSUME_ALIGNED 1" >>confdefs.h > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > >-else >+else $as_nop > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > > > > > # sys/param.h might be needed by sys/sysctl.h. >-for ac_header in sys/param.h >-do : >- ac_fn_c_check_header_mongrel "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" >-if test "x$ac_cv_header_sys_param_h" = xyes; then : >- cat >>confdefs.h <<_ACEOF >-#define HAVE_SYS_PARAM_H 1 >-_ACEOF >+ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" >+if test "x$ac_cv_header_sys_param_h" = xyes >+then : >+ printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h > > fi > >-done > >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to detect the amount of physical memory" >&5 >+printf %s "checking how to detect the amount of physical memory... " >&6; } >+if test ${tuklib_cv_physmem_method+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to detect the amount of physical memory" >&5 >-$as_echo_n "checking how to detect the amount of physical memory... " >&6; } >-if ${tuklib_cv_physmem_method+:} false; then : >- $as_echo_n "(cached) " >&6 >-else > >- > # Maybe checking $host_os would be enough but this matches what > # tuklib_physmem.c does. > # >@@ -19276,9 +20746,10 @@ > #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > tuklib_cv_physmem_method=special >-else >+else $as_nop > > > # Look for AIX-specific solution before sysconf(), because the test >@@ -19297,9 +20768,10 @@ > } > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > tuklib_cv_physmem_method=aix >-else >+else $as_nop > > > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -19316,15 +20788,15 @@ > } > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > tuklib_cv_physmem_method=sysconf >-else >+else $as_nop > > > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > >-#include <sys/types.h> > #ifdef HAVE_SYS_PARAM_H > # include <sys/param.h> > #endif >@@ -19340,9 +20812,10 @@ > } > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > tuklib_cv_physmem_method=sysctl >-else >+else $as_nop > > > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -19361,9 +20834,10 @@ > } > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > tuklib_cv_physmem_method=getsysinfo >-else >+else $as_nop > > > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -19383,9 +20857,10 @@ > } > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > tuklib_cv_physmem_method=pstat_getstatic >-else >+else $as_nop > > > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -19403,9 +20878,10 @@ > } > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > tuklib_cv_physmem_method=getinvent_r >-else >+else $as_nop > > > # This version of sysinfo() is Linux-specific. Some non-Linux systems have >@@ -19425,16 +20901,17 @@ > } > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > > tuklib_cv_physmem_method=sysinfo > >-else >+else $as_nop > > tuklib_cv_physmem_method=unknown > > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > ;; > *) > tuklib_cv_physmem_method=unknown >@@ -19442,57 +20919,57 @@ > esac > > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tuklib_cv_physmem_method" >&5 >-$as_echo "$tuklib_cv_physmem_method" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tuklib_cv_physmem_method" >&5 >+printf "%s\n" "$tuklib_cv_physmem_method" >&6; } > > case $tuklib_cv_physmem_method in > aix) > >-$as_echo "#define TUKLIB_PHYSMEM_AIX 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_PHYSMEM_AIX 1" >>confdefs.h > > ;; > sysconf) > >-$as_echo "#define TUKLIB_PHYSMEM_SYSCONF 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_PHYSMEM_SYSCONF 1" >>confdefs.h > > ;; > sysctl) > >-$as_echo "#define TUKLIB_PHYSMEM_SYSCTL 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_PHYSMEM_SYSCTL 1" >>confdefs.h > > ;; > getsysinfo) > >-$as_echo "#define TUKLIB_PHYSMEM_GETSYSINFO 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_PHYSMEM_GETSYSINFO 1" >>confdefs.h > > ;; > pstat_getstatic) > >-$as_echo "#define TUKLIB_PHYSMEM_PSTAT_GETSTATIC 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_PHYSMEM_PSTAT_GETSTATIC 1" >>confdefs.h > > ;; > getinvent_r) > >-$as_echo "#define TUKLIB_PHYSMEM_GETINVENT_R 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_PHYSMEM_GETINVENT_R 1" >>confdefs.h > > ;; > sysinfo) > >-$as_echo "#define TUKLIB_PHYSMEM_SYSINFO 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_PHYSMEM_SYSINFO 1" >>confdefs.h > > ;; > esac >@@ -19501,26 +20978,22 @@ > > > # sys/param.h might be needed by sys/sysctl.h. >-for ac_header in sys/param.h >-do : >- ac_fn_c_check_header_mongrel "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" >-if test "x$ac_cv_header_sys_param_h" = xyes; then : >- cat >>confdefs.h <<_ACEOF >-#define HAVE_SYS_PARAM_H 1 >-_ACEOF >+ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" >+if test "x$ac_cv_header_sys_param_h" = xyes >+then : >+ printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h > > fi > >-done > >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to detect the number of available CPU cores" >&5 >+printf %s "checking how to detect the number of available CPU cores... " >&6; } >+if test ${tuklib_cv_cpucores_method+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to detect the number of available CPU cores" >&5 >-$as_echo_n "checking how to detect the number of available CPU cores... " >&6; } >-if ${tuklib_cv_cpucores_method+:} false; then : >- $as_echo_n "(cached) " >&6 >-else > >- > # Maybe checking $host_os would be enough but this matches what > # tuklib_cpucores.c does. > # >@@ -19536,9 +21009,10 @@ > #endif > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > tuklib_cv_cpucores_method=special >-else >+else $as_nop > > > # glibc-based systems (GNU/Linux and GNU/kFreeBSD) have sched_getaffinity(). >@@ -19559,9 +21033,10 @@ > } > > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > tuklib_cv_cpucores_method=sched_getaffinity >-else >+else $as_nop > > > # FreeBSD has both cpuset and sysctl. Look for cpuset first because >@@ -19587,9 +21062,10 @@ > } > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > tuklib_cv_cpucores_method=cpuset >-else >+else $as_nop > > > # On OS/2, both sysconf() and sysctl() pass the tests in this file, >@@ -19605,7 +21081,6 @@ > #ifdef __QNX__ > compile error > #endif >-#include <sys/types.h> > #ifdef HAVE_SYS_PARAM_H > # include <sys/param.h> > #endif >@@ -19613,7 +21088,12 @@ > int > main(void) > { >+#ifdef HW_NCPUONLINE >+ /* This is preferred on OpenBSD, see tuklib_cpucores.c. */ >+ int name[2] = { CTL_HW, HW_NCPUONLINE }; >+#else > int name[2] = { CTL_HW, HW_NCPU }; >+#endif > int cpus; > size_t cpus_size = sizeof(cpus); > sysctl(name, 2, &cpus, &cpus_size, NULL, 0); >@@ -19621,9 +21101,10 @@ > } > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > tuklib_cv_cpucores_method=sysctl >-else >+else $as_nop > > > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -19645,9 +21126,10 @@ > } > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > tuklib_cv_cpucores_method=sysconf >-else >+else $as_nop > > > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -19666,54 +21148,55 @@ > } > > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > tuklib_cv_cpucores_method=pstat_getdynamic >-else >+else $as_nop > > > tuklib_cv_cpucores_method=unknown > > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tuklib_cv_cpucores_method" >&5 >-$as_echo "$tuklib_cv_cpucores_method" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tuklib_cv_cpucores_method" >&5 >+printf "%s\n" "$tuklib_cv_cpucores_method" >&6; } > > case $tuklib_cv_cpucores_method in > sched_getaffinity) > >-$as_echo "#define TUKLIB_CPUCORES_SCHED_GETAFFINITY 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_CPUCORES_SCHED_GETAFFINITY 1" >>confdefs.h > > ;; > cpuset) > >-$as_echo "#define TUKLIB_CPUCORES_CPUSET 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_CPUCORES_CPUSET 1" >>confdefs.h > > ;; > sysctl) > >-$as_echo "#define TUKLIB_CPUCORES_SYSCTL 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_CPUCORES_SYSCTL 1" >>confdefs.h > > ;; > sysconf) > >-$as_echo "#define TUKLIB_CPUCORES_SYSCONF 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_CPUCORES_SYSCONF 1" >>confdefs.h > > ;; > pstat_getdynamic) > >-$as_echo "#define TUKLIB_CPUCORES_PSTAT_GETDYNAMIC 1" >>confdefs.h >+printf "%s\n" "#define TUKLIB_CPUCORES_PSTAT_GETDYNAMIC 1" >>confdefs.h > > ;; > esac >@@ -19721,16 +21204,17 @@ > > > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5 >-$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; } >-if ${ac_cv_func_mbrtowc+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5 >+printf %s "checking whether mbrtowc and mbstate_t are properly declared... " >&6; } >+if test ${ac_cv_func_mbrtowc+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > #include <wchar.h> > int >-main () >+main (void) > { > wchar_t wc; > char const s[] = ""; >@@ -19741,32 +21225,29 @@ > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > ac_cv_func_mbrtowc=yes >-else >+else $as_nop > ac_cv_func_mbrtowc=no > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5 >-$as_echo "$ac_cv_func_mbrtowc" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5 >+printf "%s\n" "$ac_cv_func_mbrtowc" >&6; } > if test $ac_cv_func_mbrtowc = yes; then > >-$as_echo "#define HAVE_MBRTOWC 1" >>confdefs.h >+printf "%s\n" "#define HAVE_MBRTOWC 1" >>confdefs.h > > fi > >-for ac_func in wcwidth >-do : >- ac_fn_c_check_func "$LINENO" "wcwidth" "ac_cv_func_wcwidth" >-if test "x$ac_cv_func_wcwidth" = xyes; then : >- cat >>confdefs.h <<_ACEOF >-#define HAVE_WCWIDTH 1 >-_ACEOF >+ac_fn_c_check_func "$LINENO" "wcwidth" "ac_cv_func_wcwidth" >+if test "x$ac_cv_func_wcwidth" = xyes >+then : >+ printf "%s\n" "#define HAVE_WCWIDTH 1" >>confdefs.h > > fi >-done > > > >@@ -19787,24 +21268,26 @@ > sha256_header_found=no > sha256_type_found=no > sha256_func_found=no >-if test "x$enable_external_sha256" = "xyes"; then >+if test "x$enable_external_sha256" = "xyes" >+then : >+ > # Test for Common Crypto before others, because Darwin has sha256.h > # too and we don't want to use that, because on older versions it > # uses OpenSSL functions, whose SHA256_Init is not guaranteed to > # succeed. >- for ac_header in CommonCrypto/CommonDigest.h sha256.h sha2.h >+ for ac_header in CommonCrypto/CommonDigest.h sha256.h sha2.h > do : >- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` >-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" >-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : >+ as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` >+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" >+if eval test \"x\$"$as_ac_Header"\" = x"yes" >+then : > cat >>confdefs.h <<_ACEOF >-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 >+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 > _ACEOF > sha256_header_found=yes ; break > fi > > done >- > if test "x$sha256_header_found" = xyes; then > ac_fn_c_check_type "$LINENO" "CC_SHA256_CTX" "ac_cv_type_CC_SHA256_CTX" "#ifdef HAVE_SYS_TYPES_H > # include <sys/types.h> >@@ -19819,11 +21302,10 @@ > # include <sha2.h> > #endif > " >-if test "x$ac_cv_type_CC_SHA256_CTX" = xyes; then : >+if test "x$ac_cv_type_CC_SHA256_CTX" = xyes >+then : > >-cat >>confdefs.h <<_ACEOF >-#define HAVE_CC_SHA256_CTX 1 >-_ACEOF >+printf "%s\n" "#define HAVE_CC_SHA256_CTX 1" >>confdefs.h > > sha256_type_found=yes > fi >@@ -19840,11 +21322,10 @@ > # include <sha2.h> > #endif > " >-if test "x$ac_cv_type_SHA256_CTX" = xyes; then : >+if test "x$ac_cv_type_SHA256_CTX" = xyes >+then : > >-cat >>confdefs.h <<_ACEOF >-#define HAVE_SHA256_CTX 1 >-_ACEOF >+printf "%s\n" "#define HAVE_SHA256_CTX 1" >>confdefs.h > > sha256_type_found=yes > fi >@@ -19861,21 +21342,21 @@ > # include <sha2.h> > #endif > " >-if test "x$ac_cv_type_SHA2_CTX" = xyes; then : >+if test "x$ac_cv_type_SHA2_CTX" = xyes >+then : > >-cat >>confdefs.h <<_ACEOF >-#define HAVE_SHA2_CTX 1 >-_ACEOF >+printf "%s\n" "#define HAVE_SHA2_CTX 1" >>confdefs.h > > sha256_type_found=yes > fi > > if test "x$sha256_type_found" = xyes ; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SHA256Init" >&5 >-$as_echo_n "checking for library containing SHA256Init... " >&6; } >-if ${ac_cv_search_SHA256Init+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing SHA256Init" >&5 >+printf %s "checking for library containing SHA256Init... " >&6; } >+if test ${ac_cv_search_SHA256Init+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_func_search_save_LIBS=$LIBS > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >@@ -19883,55 +21364,58 @@ > /* Override any GCC internal prototype to avoid an error. > Use char because int might match the return type of a GCC > builtin and then its argument prototype would still apply. */ >-#ifdef __cplusplus >-extern "C" >-#endif > char SHA256Init (); > int >-main () >+main (void) > { > return SHA256Init (); > ; > return 0; > } > _ACEOF >-for ac_lib in '' md; do >+for ac_lib in '' md >+do > if test -z "$ac_lib"; then > ac_res="none required" > else > ac_res=-l$ac_lib > LIBS="-l$ac_lib $ac_func_search_save_LIBS" > fi >- if ac_fn_c_try_link "$LINENO"; then : >+ if ac_fn_c_try_link "$LINENO" >+then : > ac_cv_search_SHA256Init=$ac_res > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext >- if ${ac_cv_search_SHA256Init+:} false; then : >+ if test ${ac_cv_search_SHA256Init+y} >+then : > break > fi > done >-if ${ac_cv_search_SHA256Init+:} false; then : >+if test ${ac_cv_search_SHA256Init+y} >+then : > >-else >+else $as_nop > ac_cv_search_SHA256Init=no > fi > rm conftest.$ac_ext > LIBS=$ac_func_search_save_LIBS > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SHA256Init" >&5 >-$as_echo "$ac_cv_search_SHA256Init" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SHA256Init" >&5 >+printf "%s\n" "$ac_cv_search_SHA256Init" >&6; } > ac_res=$ac_cv_search_SHA256Init >-if test "$ac_res" != no; then : >+if test "$ac_res" != no >+then : > test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" > > fi > >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SHA256_Init" >&5 >-$as_echo_n "checking for library containing SHA256_Init... " >&6; } >-if ${ac_cv_search_SHA256_Init+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing SHA256_Init" >&5 >+printf %s "checking for library containing SHA256_Init... " >&6; } >+if test ${ac_cv_search_SHA256_Init+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_func_search_save_LIBS=$LIBS > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ >@@ -19939,64 +21423,69 @@ > /* Override any GCC internal prototype to avoid an error. > Use char because int might match the return type of a GCC > builtin and then its argument prototype would still apply. */ >-#ifdef __cplusplus >-extern "C" >-#endif > char SHA256_Init (); > int >-main () >+main (void) > { > return SHA256_Init (); > ; > return 0; > } > _ACEOF >-for ac_lib in '' md; do >+for ac_lib in '' md >+do > if test -z "$ac_lib"; then > ac_res="none required" > else > ac_res=-l$ac_lib > LIBS="-l$ac_lib $ac_func_search_save_LIBS" > fi >- if ac_fn_c_try_link "$LINENO"; then : >+ if ac_fn_c_try_link "$LINENO" >+then : > ac_cv_search_SHA256_Init=$ac_res > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext >- if ${ac_cv_search_SHA256_Init+:} false; then : >+ if test ${ac_cv_search_SHA256_Init+y} >+then : > break > fi > done >-if ${ac_cv_search_SHA256_Init+:} false; then : >+if test ${ac_cv_search_SHA256_Init+y} >+then : > >-else >+else $as_nop > ac_cv_search_SHA256_Init=no > fi > rm conftest.$ac_ext > LIBS=$ac_func_search_save_LIBS > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SHA256_Init" >&5 >-$as_echo "$ac_cv_search_SHA256_Init" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SHA256_Init" >&5 >+printf "%s\n" "$ac_cv_search_SHA256_Init" >&6; } > ac_res=$ac_cv_search_SHA256_Init >-if test "$ac_res" != no; then : >+if test "$ac_res" != no >+then : > test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" > > fi > >- for ac_func in CC_SHA256_Init SHA256Init SHA256_Init >+ >+ for ac_func in CC_SHA256_Init SHA256Init SHA256_Init > do : >- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` >+ as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` > ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" >-if eval test \"x\$"$as_ac_var"\" = x"yes"; then : >+if eval test \"x\$"$as_ac_var"\" = x"yes" >+then : > cat >>confdefs.h <<_ACEOF >-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 >+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 > _ACEOF > sha256_func_found=yes ; break > fi >-done > >+done > fi > fi >+ > fi > if test "x$sha256_func_found" = xno; then > COND_INTERNAL_SHA256_TRUE= >@@ -20010,48 +21499,116 @@ > as_fn_error $? "--enable-external-sha256 was specified but no supported external SHA-256 implementation was found" "$LINENO" 5 > fi > >-# Check for SSE2 intrinsics. >-ac_fn_c_check_decl "$LINENO" "_mm_movemask_epi8" "ac_cv_have_decl__mm_movemask_epi8" "#ifdef HAVE_IMMINTRIN_H >+# Check for SSE2 intrinsics. There is no run-time detection for SSE2 so if >+# compiler options enable SSE2 then SSE2 support is required by the binaries. >+# The compile-time check for SSE2 is done with #ifdefs because some compilers >+# (ICC, MSVC) allow SSE2 intrinsics even when SSE2 isn't enabled. >+ac_fn_check_decl "$LINENO" "_mm_movemask_epi8" "ac_cv_have_decl__mm_movemask_epi8" "#ifdef HAVE_IMMINTRIN_H > #include <immintrin.h> > #endif >-" >-if test "x$ac_cv_have_decl__mm_movemask_epi8" = xyes; then : >+" "$ac_c_undeclared_builtin_options" "CFLAGS" >+if test "x$ac_cv_have_decl__mm_movemask_epi8" = xyes >+then : > >-$as_echo "#define HAVE__MM_MOVEMASK_EPI8 1" >>confdefs.h >+printf "%s\n" "#define HAVE__MM_MOVEMASK_EPI8 1" >>confdefs.h > > fi > >+# For faster CRC on 32/64-bit x86 and E2K (see also crc64_fast.c): >+# >+# - Check for the CLMUL intrinsic _mm_clmulepi64_si128 in <immintrin.h>. >+# Check also for _mm_set_epi64x for consistency with CMake build >+# where it's needed to disable CLMUL with VS2013. >+# >+# - Check that __attribute__((__target__("ssse3,sse4.1,pclmul"))) works >+# together with _mm_clmulepi64_si128 from <immintrin.h>. The attribute >+# was added in GCC 4.4 but some GCC 4.x versions don't allow intrinsics >+# with it. Exception: it must be not be used with EDG-based compilers >+# like ICC and the compiler on E2K. >+# >+# If everything above is supported, runtime detection will be used to keep the >+# binaries working on systems that don't support the required extensions. >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _mm_clmulepi64_si128 is usable" >&5 >+printf %s "checking if _mm_clmulepi64_si128 is usable... " >&6; } >+if test "x$enable_clmul_crc" = xno >+then : > >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, --disable-clmul-crc was used" >&5 >+printf "%s\n" "no, --disable-clmul-crc was used" >&6; } >+ >+else $as_nop >+ >+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext >+/* end confdefs.h. */ >+ >+#include <immintrin.h> >+ >+// CLMUL works on older E2K instruction set but it is slow due to emulation. >+#if defined(__e2k__) && __iset__ < 6 >+# error >+#endif >+ >+// Intel's old compiler (ICC) can define __GNUC__ but the attribute must not >+// be used with it. The new Clang-based ICX needs the attribute. >+// Checking for !defined(__EDG__) catches ICC and other EDG-based compilers. >+#if (defined(__GNUC__) || defined(__clang__)) && !defined(__EDG__) >+__attribute__((__target__("ssse3,sse4.1,pclmul"))) >+#endif >+__m128i my_clmul(__m128i a) >+{ >+ const __m128i b = _mm_set_epi64x(1, 2); >+ return _mm_clmulepi64_si128(a, b, 0); >+} >+ >+_ACEOF >+if ac_fn_c_try_compile "$LINENO" >+then : >+ >+ >+printf "%s\n" "#define HAVE_USABLE_CLMUL 1" >>confdefs.h >+ >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } >+ >+else $as_nop >+ >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } >+ >+fi >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext >+ >+fi >+ > # Check for sandbox support. If one is found, set enable_sandbox=found. >-case $enable_sandbox in >- auto | capsicum) >+case $enable_sandbox in #( >+ auto | capsicum) : > >+ > # On FreeBSD >= 11.x and Linux, Capsicum is uses <sys/capsicum.h>. > # If this header is found, it is assumed to be the right one. > capsicum_header_found=no >-for ac_header in sys/capsicum.h >+ for ac_header in sys/capsicum.h > do : >- ac_fn_c_check_header_mongrel "$LINENO" "sys/capsicum.h" "ac_cv_header_sys_capsicum_h" "$ac_includes_default" >-if test "x$ac_cv_header_sys_capsicum_h" = xyes; then : >- cat >>confdefs.h <<_ACEOF >-#define HAVE_SYS_CAPSICUM_H 1 >-_ACEOF >+ ac_fn_c_check_header_compile "$LINENO" "sys/capsicum.h" "ac_cv_header_sys_capsicum_h" "$ac_includes_default" >+if test "x$ac_cv_header_sys_capsicum_h" = xyes >+then : >+ printf "%s\n" "#define HAVE_SYS_CAPSICUM_H 1" >>confdefs.h > capsicum_header_found=yes > fi > > done >- > if test "$capsicum_header_found" = no ; then > # On FreeBSD 10.x Capsicum uses <sys/capability.h>. Such a header exists > # on Linux too but it describes POSIX.1e capabilities. Look for the > # declaration of cap_rights_limit to check if <sys/capability.h> is > # a Capsicum header. >- ac_fn_c_check_decl "$LINENO" "cap_rights_limit" "ac_cv_have_decl_cap_rights_limit" "#include <sys/capability.h> >-" >-if test "x$ac_cv_have_decl_cap_rights_limit" = xyes; then : >+ ac_fn_check_decl "$LINENO" "cap_rights_limit" "ac_cv_have_decl_cap_rights_limit" "#include <sys/capability.h> >+" "$ac_c_undeclared_builtin_options" "CFLAGS" >+if test "x$ac_cv_have_decl_cap_rights_limit" = xyes >+then : > capsicum_header_found=yes > fi >- > fi > > capsicum_lib_found=no >@@ -20070,29 +21627,28 @@ > /* Override any GCC internal prototype to avoid an error. > Use char because int might match the return type of a GCC > builtin and then its argument prototype would still apply. */ >-#ifdef __cplusplus >-extern "C" >-#endif > char cap_rights_limit (); > int >-main () >+main (void) > { > return cap_rights_limit (); > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > capsicum_lib_found=yes > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > # Linux has Capsicum functions in libcaprights. >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cap_rights_limit in -lcaprights" >&5 >-$as_echo_n "checking for cap_rights_limit in -lcaprights... " >&6; } >-if ${ac_cv_lib_caprights_cap_rights_limit+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cap_rights_limit in -lcaprights" >&5 >+printf %s "checking for cap_rights_limit in -lcaprights... " >&6; } >+if test ${ac_cv_lib_caprights_cap_rights_limit+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > ac_check_lib_save_LIBS=$LIBS > LIBS="-lcaprights $LIBS" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext >@@ -20101,30 +21657,29 @@ > /* Override any GCC internal prototype to avoid an error. > Use char because int might match the return type of a GCC > builtin and then its argument prototype would still apply. */ >-#ifdef __cplusplus >-extern "C" >-#endif > char cap_rights_limit (); > int >-main () >+main (void) > { > return cap_rights_limit (); > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_link "$LINENO"; then : >+if ac_fn_c_try_link "$LINENO" >+then : > ac_cv_lib_caprights_cap_rights_limit=yes >-else >+else $as_nop > ac_cv_lib_caprights_cap_rights_limit=no > fi >-rm -f core conftest.err conftest.$ac_objext \ >+rm -f core conftest.err conftest.$ac_objext conftest.beam \ > conftest$ac_exeext conftest.$ac_ext > LIBS=$ac_check_lib_save_LIBS > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_caprights_cap_rights_limit" >&5 >-$as_echo "$ac_cv_lib_caprights_cap_rights_limit" >&6; } >-if test "x$ac_cv_lib_caprights_cap_rights_limit" = xyes; then : >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_caprights_cap_rights_limit" >&5 >+printf "%s\n" "$ac_cv_lib_caprights_cap_rights_limit" >&6; } >+if test "x$ac_cv_lib_caprights_cap_rights_limit" = xyes >+then : > CAPSICUM_LIB=-lcaprights > capsicum_lib_found=yes > fi >@@ -20140,15 +21695,37 @@ > > if test "$capsicum_lib_found" = yes ; then > >-$as_echo "#define HAVE_CAPSICUM 1" >>confdefs.h >+printf "%s\n" "#define HAVE_CAPSICUM 1" >>confdefs.h > > enable_sandbox=found > else > : > fi >- ;; >+ >+ ;; #( >+ *) : >+ ;; > esac >+case $enable_sandbox in #( >+ auto | pledge) : > >+ >+ for ac_func in pledge >+do : >+ ac_fn_c_check_func "$LINENO" "pledge" "ac_cv_func_pledge" >+if test "x$ac_cv_func_pledge" = xyes >+then : >+ printf "%s\n" "#define HAVE_PLEDGE 1" >>confdefs.h >+ enable_sandbox=found ; break >+fi >+ >+done >+ >+ ;; #( >+ *) : >+ ;; >+esac >+ > # If a specific sandboxing method was explicitly requested and it wasn't > # found, give an error. > case $enable_sandbox in >@@ -20176,40 +21753,43 @@ > CFLAG_VISIBILITY= > HAVE_VISIBILITY=0 > if test -n "$GCC"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 >-$as_echo_n "checking whether the -Werror option is usable... " >&6; } >-if ${gl_cv_cc_vis_werror+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 >+printf %s "checking whether the -Werror option is usable... " >&6; } >+if test ${gl_cv_cc_vis_werror+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > gl_save_CFLAGS="$CFLAGS" > CFLAGS="$CFLAGS -Werror" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > gl_cv_cc_vis_werror=yes >-else >+else $as_nop > gl_cv_cc_vis_werror=no > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > CFLAGS="$gl_save_CFLAGS" > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5 >-$as_echo "$gl_cv_cc_vis_werror" >&6; } >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 >-$as_echo_n "checking for simple visibility declarations... " >&6; } >-if ${gl_cv_cc_visibility+:} false; then : >- $as_echo_n "(cached) " >&6 >-else >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5 >+printf "%s\n" "$gl_cv_cc_vis_werror" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 >+printf %s "checking for simple visibility declarations... " >&6; } >+if test ${gl_cv_cc_visibility+y} >+then : >+ printf %s "(cached) " >&6 >+else $as_nop > gl_save_CFLAGS="$CFLAGS" > CFLAGS="$CFLAGS -fvisibility=hidden" > if test $gl_cv_cc_vis_werror = yes; then >@@ -20224,24 +21804,25 @@ > void dummyfunc (void) {} > > int >-main () >+main (void) > { > > ; > return 0; > } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > gl_cv_cc_visibility=yes >-else >+else $as_nop > gl_cv_cc_visibility=no > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > CFLAGS="$gl_save_CFLAGS" > > fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 >-$as_echo "$gl_cv_cc_visibility" >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 >+printf "%s\n" "$gl_cv_cc_visibility" >&6; } > if test $gl_cv_cc_visibility = yes; then > CFLAG_VISIBILITY="-fvisibility=hidden" > HAVE_VISIBILITY=1 >@@ -20250,85 +21831,113 @@ > > > >-cat >>confdefs.h <<_ACEOF >-#define HAVE_VISIBILITY $HAVE_VISIBILITY >-_ACEOF >+printf "%s\n" "#define HAVE_VISIBILITY $HAVE_VISIBILITY" >>confdefs.h > > > if test -n "$CFLAG_VISIBILITY" && test "$is_w32" = no; then > AM_CFLAGS="$AM_CFLAGS $CFLAG_VISIBILITY" > fi > >-if test "$GCC" = yes ; then >+if test "$GCC" = yes >+then : >+ > # Enable as much warnings as possible. These commented warnings won't > # work for this package though: > # * -Wunreachable-code breaks several assert(0) cases, which are > # backed up with "return LZMA_PROG_ERROR". > # * -Wcast-qual would break various things where we need a non-const > # pointer although we don't modify anything through it. >- # * -Wcast-align breaks optimized CRC32 and CRC64 implementation >- # on some architectures (not on x86), where this warning is bogus, >- # because we take care of correct alignment. > # * -Winline, -Wdisabled-optimization, -Wunsafe-loop-optimizations > # don't seem so useful here; at least the last one gives some > # warnings which are not bugs. >+ # * -Wconversion still shows too many warnings. >+ # >+ # The flags before the empty line are for GCC and many of them >+ # are supported by Clang too. The flags after the empty line are >+ # for Clang. > for NEW_FLAG in \ > -Wall \ > -Wextra \ > -Wvla \ >+ -Wc99-c11-compat \ > -Wformat=2 \ > -Winit-self \ > -Wmissing-include-dirs \ >- -Wstrict-aliasing \ >+ -Wshift-overflow=2 \ >+ -Wstrict-overflow=3 \ >+ -Walloc-zero \ >+ -Wduplicated-cond \ > -Wfloat-equal \ > -Wundef \ > -Wshadow \ > -Wpointer-arith \ > -Wbad-function-cast \ > -Wwrite-strings \ >+ -Wdate-time \ >+ -Wsign-conversion \ >+ -Wfloat-conversion \ > -Wlogical-op \ > -Waggregate-return \ > -Wstrict-prototypes \ > -Wold-style-definition \ > -Wmissing-prototypes \ > -Wmissing-declarations \ >- -Wmissing-noreturn \ >- -Wredundant-decls >+ -Wredundant-decls \ >+ \ >+ -Wc99-compat \ >+ -Wc11-extensions \ >+ -Wc2x-compat \ >+ -Wc2x-extensions \ >+ -Wpre-c2x-compat \ >+ -Warray-bounds-pointer-arithmetic \ >+ -Wassign-enum \ >+ -Wconditional-uninitialized \ >+ -Wdocumentation \ >+ -Wduplicate-enum \ >+ -Wempty-translation-unit \ >+ -Wflexible-array-extensions \ >+ -Wmissing-variable-declarations \ >+ -Wnewline-eof \ >+ -Wshift-sign-overflow \ >+ -Wstring-conversion > do >- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts $NEW_FLAG" >&5 >-$as_echo_n "checking if $CC accepts $NEW_FLAG... " >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC accepts $NEW_FLAG" >&5 >+printf %s "checking if $CC accepts $NEW_FLAG... " >&6; } > OLD_CFLAGS="$CFLAGS" > CFLAGS="$CFLAGS $NEW_FLAG -Werror" > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > void foo(void); void foo(void) { } > _ACEOF >-if ac_fn_c_try_compile "$LINENO"; then : >+if ac_fn_c_try_compile "$LINENO" >+then : > > AM_CFLAGS="$AM_CFLAGS $NEW_FLAG" >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >-$as_echo "yes" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 >+printf "%s\n" "yes" >&6; } > >-else >+else $as_nop > >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 >-$as_echo "no" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 >+printf "%s\n" "no" >&6; } > > fi >-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext > CFLAGS="$OLD_CFLAGS" > done > > # Check whether --enable-werror was given. >-if test "${enable_werror+set}" = set; then : >+if test ${enable_werror+y} >+then : > enableval=$enable_werror; >-else >+else $as_nop > enable_werror=no > fi > > if test "x$enable_werror" = "xyes"; then > AM_CFLAGS="$AM_CFLAGS -Werror" > fi >+ > fi > > >@@ -20356,7 +21965,7 @@ > xz=`echo xz | sed "$program_transform_name"` > > >-ac_config_files="$ac_config_files Doxyfile Makefile po/Makefile.in lib/Makefile src/Makefile src/liblzma/Makefile src/liblzma/api/Makefile src/xz/Makefile src/xzdec/Makefile src/lzmainfo/Makefile src/scripts/Makefile tests/Makefile debug/Makefile" >+ac_config_files="$ac_config_files Makefile po/Makefile.in lib/Makefile src/Makefile src/liblzma/Makefile src/liblzma/api/Makefile src/xz/Makefile src/xzdec/Makefile src/lzmainfo/Makefile src/scripts/Makefile tests/Makefile debug/Makefile" > > ac_config_files="$ac_config_files src/scripts/xzdiff" > >@@ -20394,8 +22003,8 @@ > case $ac_val in #( > *${as_nl}*) > case $ac_var in #( >- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 >-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; >+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 >+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; > esac > case $ac_var in #( > _ | IFS | as_nl) ;; #( >@@ -20425,15 +22034,15 @@ > /^ac_cv_env_/b end > t clear > :clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >+ s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ > t end > s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ > :end' >>confcache > if diff "$cache_file" confcache >/dev/null 2>&1; then :; else > if test -w "$cache_file"; then > if test "x$cache_file" != "x/dev/null"; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 >-$as_echo "$as_me: updating cache $cache_file" >&6;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 >+printf "%s\n" "$as_me: updating cache $cache_file" >&6;} > if test ! -f "$cache_file" || test -h "$cache_file"; then > cat confcache >"$cache_file" > else >@@ -20447,8 +22056,8 @@ > fi > fi > else >- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 >-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 >+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} > fi > fi > rm -f confcache >@@ -20465,7 +22074,7 @@ > for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue > # 1. Remove the extension, and $U if already installed. > ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' >- ac_i=`$as_echo "$ac_i" | sed "$ac_script"` >+ ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` > # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR > # will be set to the directory where LIBOBJS objects are built. > as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" >@@ -20584,6 +22193,18 @@ > as_fn_error $? "conditional \"COND_DECODER_ARMTHUMB\" was never defined. > Usually this means the macro was only invoked conditionally." "$LINENO" 5 > fi >+if test -z "${COND_FILTER_ARM64_TRUE}" && test -z "${COND_FILTER_ARM64_FALSE}"; then >+ as_fn_error $? "conditional \"COND_FILTER_ARM64\" was never defined. >+Usually this means the macro was only invoked conditionally." "$LINENO" 5 >+fi >+if test -z "${COND_ENCODER_ARM64_TRUE}" && test -z "${COND_ENCODER_ARM64_FALSE}"; then >+ as_fn_error $? "conditional \"COND_ENCODER_ARM64\" was never defined. >+Usually this means the macro was only invoked conditionally." "$LINENO" 5 >+fi >+if test -z "${COND_DECODER_ARM64_TRUE}" && test -z "${COND_DECODER_ARM64_FALSE}"; then >+ as_fn_error $? "conditional \"COND_DECODER_ARM64\" was never defined. >+Usually this means the macro was only invoked conditionally." "$LINENO" 5 >+fi > if test -z "${COND_FILTER_SPARC_TRUE}" && test -z "${COND_FILTER_SPARC_FALSE}"; then > as_fn_error $? "conditional \"COND_FILTER_SPARC\" was never defined. > Usually this means the macro was only invoked conditionally." "$LINENO" 5 >@@ -20632,14 +22253,18 @@ > as_fn_error $? "conditional \"COND_CHECK_SHA256\" was never defined. > Usually this means the macro was only invoked conditionally." "$LINENO" 5 > fi >-if test -z "${COND_ASM_X86_TRUE}" && test -z "${COND_ASM_X86_FALSE}"; then >- as_fn_error $? "conditional \"COND_ASM_X86\" was never defined. >+if test -z "${COND_MICROLZMA_TRUE}" && test -z "${COND_MICROLZMA_FALSE}"; then >+ as_fn_error $? "conditional \"COND_MICROLZMA\" was never defined. > Usually this means the macro was only invoked conditionally." "$LINENO" 5 > fi >-if test -z "${COND_ASM_X86_64_TRUE}" && test -z "${COND_ASM_X86_64_FALSE}"; then >- as_fn_error $? "conditional \"COND_ASM_X86_64\" was never defined. >+if test -z "${COND_LZIP_DECODER_TRUE}" && test -z "${COND_LZIP_DECODER_FALSE}"; then >+ as_fn_error $? "conditional \"COND_LZIP_DECODER\" was never defined. > Usually this means the macro was only invoked conditionally." "$LINENO" 5 > fi >+if test -z "${COND_ASM_X86_TRUE}" && test -z "${COND_ASM_X86_FALSE}"; then >+ as_fn_error $? "conditional \"COND_ASM_X86\" was never defined. >+Usually this means the macro was only invoked conditionally." "$LINENO" 5 >+fi > if test -z "${COND_SMALL_TRUE}" && test -z "${COND_SMALL_FALSE}"; then > as_fn_error $? "conditional \"COND_SMALL\" was never defined. > Usually this means the macro was only invoked conditionally." "$LINENO" 5 >@@ -20672,18 +22297,14 @@ > as_fn_error $? "conditional \"COND_DOC\" was never defined. > Usually this means the macro was only invoked conditionally." "$LINENO" 5 > fi >-if test -z "${COND_SYMVERS_TRUE}" && test -z "${COND_SYMVERS_FALSE}"; then >- as_fn_error $? "conditional \"COND_SYMVERS\" was never defined. >-Usually this means the macro was only invoked conditionally." "$LINENO" 5 >-fi >-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 >-$as_echo_n "checking that generated files are newer than configure... " >&6; } >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 >+printf %s "checking that generated files are newer than configure... " >&6; } > if test -n "$am_sleep_pid"; then > # Hide warnings about reused PIDs. > wait $am_sleep_pid 2>/dev/null > fi >- { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 >-$as_echo "done" >&6; } >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 >+printf "%s\n" "done" >&6; } > if test -n "$EXEEXT"; then > am__EXEEXT_TRUE= > am__EXEEXT_FALSE='#' >@@ -20712,6 +22333,14 @@ > as_fn_error $? "conditional \"COND_SHARED\" was never defined. > Usually this means the macro was only invoked conditionally." "$LINENO" 5 > fi >+if test -z "${COND_SYMVERS_LINUX_TRUE}" && test -z "${COND_SYMVERS_LINUX_FALSE}"; then >+ as_fn_error $? "conditional \"COND_SYMVERS_LINUX\" was never defined. >+Usually this means the macro was only invoked conditionally." "$LINENO" 5 >+fi >+if test -z "${COND_SYMVERS_GENERIC_TRUE}" && test -z "${COND_SYMVERS_GENERIC_FALSE}"; then >+ as_fn_error $? "conditional \"COND_SYMVERS_GENERIC\" was never defined. >+Usually this means the macro was only invoked conditionally." "$LINENO" 5 >+fi > > if test -z "${COND_INTERNAL_SHA256_TRUE}" && test -z "${COND_INTERNAL_SHA256_FALSE}"; then > as_fn_error $? "conditional \"COND_INTERNAL_SHA256\" was never defined. >@@ -20726,8 +22355,8 @@ > ac_write_fail=0 > ac_clean_files_save=$ac_clean_files > ac_clean_files="$ac_clean_files $CONFIG_STATUS" >-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 >-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} >+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 >+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} > as_write_fail=0 > cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 > #! $SHELL >@@ -20750,14 +22379,16 @@ > > # Be more Bourne compatible > DUALCASE=1; export DUALCASE # for MKS sh >-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : >+as_nop=: >+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 >+then : > emulate sh > NULLCMD=: > # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which > # is contrary to our usage. Disable this feature. > alias -g '${1+"$@"}'='"$@"' > setopt NO_GLOB_SUBST >-else >+else $as_nop > case `(set -o) 2>/dev/null` in #( > *posix*) : > set -o posix ;; #( >@@ -20767,46 +22398,46 @@ > fi > > >+ >+# Reset variables that may have inherited troublesome values from >+# the environment. >+ >+# IFS needs to be set, to space, tab, and newline, in precisely that order. >+# (If _AS_PATH_WALK were called with IFS unset, it would have the >+# side effect of setting IFS to empty, thus disabling word splitting.) >+# Quoting is to prevent editors from complaining about space-tab. > as_nl=' > ' > export as_nl >-# Printing a long string crashes Solaris 7 /usr/bin/printf. >-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' >-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo >-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo >-# Prefer a ksh shell builtin over an external printf program on Solaris, >-# but without wasting forks for bash or zsh. >-if test -z "$BASH_VERSION$ZSH_VERSION" \ >- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then >- as_echo='print -r --' >- as_echo_n='print -rn --' >-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then >- as_echo='printf %s\n' >- as_echo_n='printf %s' >-else >- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then >- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' >- as_echo_n='/usr/ucb/echo -n' >- else >- as_echo_body='eval expr "X$1" : "X\\(.*\\)"' >- as_echo_n_body='eval >- arg=$1; >- case $arg in #( >- *"$as_nl"*) >- expr "X$arg" : "X\\(.*\\)$as_nl"; >- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; >- esac; >- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" >- ' >- export as_echo_n_body >- as_echo_n='sh -c $as_echo_n_body as_echo' >- fi >- export as_echo_body >- as_echo='sh -c $as_echo_body as_echo' >-fi >+IFS=" "" $as_nl" > >+PS1='$ ' >+PS2='> ' >+PS4='+ ' >+ >+# Ensure predictable behavior from utilities with locale-dependent output. >+LC_ALL=C >+export LC_ALL >+LANGUAGE=C >+export LANGUAGE >+ >+# We cannot yet rely on "unset" to work, but we need these variables >+# to be unset--not just set to an empty or harmless value--now, to >+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct >+# also avoids known problems related to "unset" and subshell syntax >+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). >+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH >+do eval test \${$as_var+y} \ >+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : >+done >+ >+# Ensure that fds 0, 1, and 2 are open. >+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi >+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi >+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi >+ > # The user is always right. >-if test "${PATH_SEPARATOR+set}" != set; then >+if ${PATH_SEPARATOR+false} :; then > PATH_SEPARATOR=: > (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { > (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || >@@ -20815,13 +22446,6 @@ > fi > > >-# IFS >-# We need space, tab and new line, in precisely that order. Quoting is >-# there to prevent editors from complaining about space-tab. >-# (If _AS_PATH_WALK were called with IFS unset, it would disable word >-# splitting by setting IFS to empty value.) >-IFS=" "" $as_nl" >- > # Find who we are. Look in the path if we contain no directory separator. > as_myself= > case $0 in #(( >@@ -20830,8 +22454,12 @@ > for as_dir in $PATH > do > IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break >+ case $as_dir in #((( >+ '') as_dir=./ ;; >+ */) ;; >+ *) as_dir=$as_dir/ ;; >+ esac >+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break > done > IFS=$as_save_IFS > >@@ -20843,32 +22471,12 @@ > as_myself=$0 > fi > if test ! -f "$as_myself"; then >- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 >+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 > exit 1 > fi > >-# Unset variables that we do not need and which cause bugs (e.g. in >-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" >-# suppresses any "Segmentation fault" message there. '((' could >-# trigger a bug in pdksh 5.2.14. >-for as_var in BASH_ENV ENV MAIL MAILPATH >-do eval test x\${$as_var+set} = xset \ >- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : >-done >-PS1='$ ' >-PS2='> ' >-PS4='+ ' > >-# NLS nuisances. >-LC_ALL=C >-export LC_ALL >-LANGUAGE=C >-export LANGUAGE > >-# CDPATH. >-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH >- >- > # as_fn_error STATUS ERROR [LINENO LOG_FD] > # ---------------------------------------- > # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are >@@ -20879,13 +22487,14 @@ > as_status=$1; test $as_status -eq 0 && as_status=1 > if test "$4"; then > as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack >- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 >+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 > fi >- $as_echo "$as_me: error: $2" >&2 >+ printf "%s\n" "$as_me: error: $2" >&2 > as_fn_exit $as_status > } # as_fn_error > > >+ > # as_fn_set_status STATUS > # ----------------------- > # Set $? to STATUS, without forking. >@@ -20912,18 +22521,20 @@ > { eval $1=; unset $1;} > } > as_unset=as_fn_unset >+ > # as_fn_append VAR VALUE > # ---------------------- > # Append the text in VALUE to the end of the definition contained in VAR. Take > # advantage of any shell optimizations that allow amortized linear growth over > # repeated appends, instead of the typical quadratic growth present in naive > # implementations. >-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : >+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null >+then : > eval 'as_fn_append () > { > eval $1+=\$2 > }' >-else >+else $as_nop > as_fn_append () > { > eval $1=\$$1\$2 >@@ -20935,12 +22546,13 @@ > # Perform arithmetic evaluation on the ARGs, and store the result in the > # global $as_val. Take advantage of shells that can avoid forks. The arguments > # must be portable across $(()) and expr. >-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : >+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null >+then : > eval 'as_fn_arith () > { > as_val=$(( $* )) > }' >-else >+else $as_nop > as_fn_arith () > { > as_val=`expr "$@" || test $? -eq 1` >@@ -20971,7 +22583,7 @@ > $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ > X"$0" : 'X\(//\)$' \| \ > X"$0" : 'X\(/\)' \| . 2>/dev/null || >-$as_echo X/"$0" | >+printf "%s\n" X/"$0" | > sed '/^.*\/\([^/][^/]*\)\/*$/{ > s//\1/ > q >@@ -20993,6 +22605,10 @@ > as_cr_digits='0123456789' > as_cr_alnum=$as_cr_Letters$as_cr_digits > >+ >+# Determine whether it's possible to make 'echo' print without a newline. >+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed >+# for compatibility with existing Makefiles. > ECHO_C= ECHO_N= ECHO_T= > case `echo -n x` in #((((( > -n*) >@@ -21006,6 +22622,12 @@ > ECHO_N='-n';; > esac > >+# For backward compatibility with old third-party macros, we provide >+# the shell variables $as_echo and $as_echo_n. New code should use >+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. >+as_echo='printf %s\n' >+as_echo_n='printf %s' >+ > rm -f conf$$ conf$$.exe conf$$.file > if test -d conf$$.dir; then > rm -f conf$$.dir/conf$$.file >@@ -21047,7 +22669,7 @@ > as_dirs= > while :; do > case $as_dir in #( >- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( >+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( > *) as_qdir=$as_dir;; > esac > as_dirs="'$as_qdir' $as_dirs" >@@ -21056,7 +22678,7 @@ > X"$as_dir" : 'X\(//\)[^/]' \| \ > X"$as_dir" : 'X\(//\)$' \| \ > X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || >-$as_echo X"$as_dir" | >+printf "%s\n" X"$as_dir" | > sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ > s//\1/ > q >@@ -21118,8 +22740,8 @@ > # report actual input values of CONFIG_FILES etc. instead of their > # values after options handling. > ac_log=" >-This file was extended by XZ Utils $as_me 5.2.5, which was >-generated by GNU Autoconf 2.69. Invocation command line was >+This file was extended by XZ Utils $as_me 5.4.3, which was >+generated by GNU Autoconf 2.71. Invocation command line was > > CONFIG_FILES = $CONFIG_FILES > CONFIG_HEADERS = $CONFIG_HEADERS >@@ -21178,18 +22800,20 @@ > Configuration commands: > $config_commands > >-Report bugs to <lasse.collin@tukaani.org>. >+Report bugs to <xz@tukaani.org>. > XZ Utils home page: <https://tukaani.org/xz/>." > > _ACEOF >+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` >+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` > cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 >-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" >+ac_cs_config='$ac_cs_config_escaped' > ac_cs_version="\\ >-XZ Utils config.status 5.2.5 >-configured by $0, generated by GNU Autoconf 2.69, >+XZ Utils config.status 5.4.3 >+configured by $0, generated by GNU Autoconf 2.71, > with options \\"\$ac_cs_config\\" > >-Copyright (C) 2012 Free Software Foundation, Inc. >+Copyright (C) 2021 Free Software Foundation, Inc. > This config.status script is free software; the Free Software Foundation > gives unlimited permission to copy, distribute and modify it." > >@@ -21229,15 +22853,15 @@ > -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) > ac_cs_recheck=: ;; > --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) >- $as_echo "$ac_cs_version"; exit ;; >+ printf "%s\n" "$ac_cs_version"; exit ;; > --config | --confi | --conf | --con | --co | --c ) >- $as_echo "$ac_cs_config"; exit ;; >+ printf "%s\n" "$ac_cs_config"; exit ;; > --debug | --debu | --deb | --de | --d | -d ) > debug=: ;; > --file | --fil | --fi | --f ) > $ac_shift > case $ac_optarg in >- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; >+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; > '') as_fn_error $? "missing file argument" ;; > esac > as_fn_append CONFIG_FILES " '$ac_optarg'" >@@ -21245,7 +22869,7 @@ > --header | --heade | --head | --hea ) > $ac_shift > case $ac_optarg in >- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; >+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; > esac > as_fn_append CONFIG_HEADERS " '$ac_optarg'" > ac_need_defaults=false;; >@@ -21254,7 +22878,7 @@ > as_fn_error $? "ambiguous option: \`$1' > Try \`$0 --help' for more information.";; > --help | --hel | -h ) >- $as_echo "$ac_cs_usage"; exit ;; >+ printf "%s\n" "$ac_cs_usage"; exit ;; > -q | -quiet | --quiet | --quie | --qui | --qu | --q \ > | -silent | --silent | --silen | --sile | --sil | --si | --s) > ac_cs_silent=: ;; >@@ -21282,7 +22906,7 @@ > if \$ac_cs_recheck; then > set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion > shift >- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 >+ \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 > CONFIG_SHELL='$SHELL' > export CONFIG_SHELL > exec "\$@" >@@ -21296,7 +22920,7 @@ > sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX > ## Running $as_me. ## > _ASBOX >- $as_echo "$ac_log" >+ printf "%s\n" "$ac_log" > } >&5 > > _ACEOF >@@ -21351,6 +22975,7 @@ > lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' > reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' > reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' >+FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' > deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' > file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' > file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' >@@ -21523,6 +23148,7 @@ > lt_SP2NL \ > lt_NL2SP \ > reload_flag \ >+FILECMD \ > deplibs_check_method \ > file_magic_cmd \ > file_magic_glob \ >@@ -21683,7 +23309,6 @@ > "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; > "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; > "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; >- "Doxyfile") CONFIG_FILES="$CONFIG_FILES Doxyfile" ;; > "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; > "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; > "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; >@@ -21711,9 +23336,9 @@ > # We use the long form for the default assignment because of an extremely > # bizarre bug on SunOS 4.1.3. > if $ac_need_defaults; then >- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files >- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers >- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands >+ test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files >+ test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers >+ test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands > fi > > # Have a temporary directory for convenience. Make it in the build tree >@@ -22049,7 +23674,7 @@ > esac || > as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; > esac >- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac >+ case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac > as_fn_append ac_file_inputs " '$ac_f'" > done > >@@ -22057,17 +23682,17 @@ > # use $as_me), people would be surprised to read: > # /* config.h. Generated by config.status. */ > configure_input='Generated from '` >- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' >+ printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' > `' by configure.' > if test x"$ac_file" != x-; then > configure_input="$ac_file. $configure_input" >- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 >-$as_echo "$as_me: creating $ac_file" >&6;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 >+printf "%s\n" "$as_me: creating $ac_file" >&6;} > fi > # Neutralize special characters interpreted by sed in replacement strings. > case $configure_input in #( > *\&* | *\|* | *\\* ) >- ac_sed_conf_input=`$as_echo "$configure_input" | >+ ac_sed_conf_input=`printf "%s\n" "$configure_input" | > sed 's/[\\\\&|]/\\\\&/g'`;; #( > *) ac_sed_conf_input=$configure_input;; > esac >@@ -22084,7 +23709,7 @@ > X"$ac_file" : 'X\(//\)[^/]' \| \ > X"$ac_file" : 'X\(//\)$' \| \ > X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || >-$as_echo X"$ac_file" | >+printf "%s\n" X"$ac_file" | > sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ > s//\1/ > q >@@ -22108,9 +23733,9 @@ > case "$ac_dir" in > .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; > *) >- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` >+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` > # A ".." for each directory in $ac_dir_suffix. >- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` >+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` > case $ac_top_builddir_sub in > "") ac_top_builddir_sub=. ac_top_build_prefix= ;; > *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; >@@ -22172,8 +23797,8 @@ > case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in > *datarootdir*) ac_datarootdir_seen=yes;; > *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 >-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 >+printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} > _ACEOF > cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 > ac_datarootdir_hack=' >@@ -22217,9 +23842,9 @@ > { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && > { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ > "$ac_tmp/out"`; test -z "$ac_out"; } && >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' > which seems to be undefined. Please make sure it is defined" >&5 >-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' >+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' > which seems to be undefined. Please make sure it is defined" >&2;} > > rm -f "$ac_tmp/stdin" >@@ -22235,20 +23860,20 @@ > # > if test x"$ac_file" != x-; then > { >- $as_echo "/* $configure_input */" \ >+ printf "%s\n" "/* $configure_input */" >&1 \ > && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" > } >"$ac_tmp/config.h" \ > || as_fn_error $? "could not create $ac_file" "$LINENO" 5 > if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 >-$as_echo "$as_me: $ac_file is unchanged" >&6;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 >+printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} > else > rm -f "$ac_file" > mv "$ac_tmp/config.h" "$ac_file" \ > || as_fn_error $? "could not create $ac_file" "$LINENO" 5 > fi > else >- $as_echo "/* $configure_input */" \ >+ printf "%s\n" "/* $configure_input */" >&1 \ > && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ > || as_fn_error $? "could not create -" "$LINENO" 5 > fi >@@ -22268,7 +23893,7 @@ > X"$_am_arg" : 'X\(//\)[^/]' \| \ > X"$_am_arg" : 'X\(//\)$' \| \ > X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || >-$as_echo X"$_am_arg" | >+printf "%s\n" X"$_am_arg" | > sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ > s//\1/ > q >@@ -22288,8 +23913,8 @@ > s/.*/./; q'`/stamp-h$_am_stamp_count > ;; > >- :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 >-$as_echo "$as_me: executing $ac_file commands" >&6;} >+ :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 >+printf "%s\n" "$as_me: executing $ac_file commands" >&6;} > ;; > esac > >@@ -22315,7 +23940,7 @@ > for am_mf > do > # Strip MF so we end up with the name of the file. >- am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` >+ am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` > # Check whether this is an Automake generated Makefile which includes > # dependency-tracking related rules and includes. > # Grep'ing the whole file directly is not great: AIX grep has a line >@@ -22327,7 +23952,7 @@ > X"$am_mf" : 'X\(//\)[^/]' \| \ > X"$am_mf" : 'X\(//\)$' \| \ > X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || >-$as_echo X"$am_mf" | >+printf "%s\n" X"$am_mf" | > sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ > s//\1/ > q >@@ -22349,7 +23974,7 @@ > $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ > X"$am_mf" : 'X\(//\)$' \| \ > X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || >-$as_echo X/"$am_mf" | >+printf "%s\n" X/"$am_mf" | > sed '/^.*\/\([^/][^/]*\)\/*$/{ > s//\1/ > q >@@ -22374,10 +23999,12 @@ > (exit $ac_status); } || am_rc=$? > done > if test $am_rc -ne 0; then >- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 >+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} > as_fn_error $? "Something went wrong bootstrapping makefile fragments >- for automatic dependency tracking. Try re-running configure with the >+ for automatic dependency tracking. If GNU make was not used, consider >+ re-running the configure script with MAKE=\"gmake\" (or whatever is >+ necessary). You can also try re-running configure with the > '--disable-dependency-tracking' option to at least be able to build > the package (albeit without support for automatic dependency tracking). > See \`config.log' for more details" "$LINENO" 5; } >@@ -22532,6 +24159,9 @@ > # convert \$build files to toolchain format. > to_tool_file_cmd=$lt_cv_to_tool_file_cmd > >+# A file(cmd) program that detects file types. >+FILECMD=$lt_FILECMD >+ > # Method to check whether dependent libraries are shared objects. > deplibs_check_method=$lt_deplibs_check_method > >@@ -22922,6 +24552,7 @@ > esac > > >+ > ltmain=$ac_aux_dir/ltmain.sh > > >@@ -22929,7 +24560,7 @@ > # if finds mixed CR/LF and LF-only lines. Since sed operates in > # text mode, it properly converts lines to CR/LF. This bash problem > # is reportedly fixed, but why not run on old versions too? >- sed '$q' "$ltmain" >> "$cfgfile" \ >+ $SED '$q' "$ltmain" >> "$cfgfile" \ > || (rm -f "$cfgfile"; exit 1) > > mv -f "$cfgfile" "$ofile" || >@@ -23159,7 +24790,9 @@ > # presentlang can be used as a fallback for messages > # which are not translated in the desiredlang catalog). > case "$desiredlang" in >- "$presentlang"*) useit=yes;; >+ "$presentlang" | "$presentlang"_* | "$presentlang".* | "$presentlang"@*) >+ useit=yes >+ ;; > esac > done > if test $useit = yes; then >@@ -23225,8 +24858,8 @@ > $ac_cs_success || as_fn_exit 1 > fi > if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then >- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 >-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} >+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 >+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} > fi > > >@@ -23245,9 +24878,12 @@ > echo "No supported method to detect the number of CPU cores." > fi > >-if test "x$enable_threads$enable_small" = xnoyes; then >+if test "x$enable_threads$enable_small$have_func_attribute_constructor" \ >+ = xnoyesno; then > echo > echo "NOTE:" >- echo "liblzma will be thread unsafe due the combination" >- echo "of --disable-threads --enable-small." >+ echo "liblzma will be thread-unsafe due to the combination" >+ echo "of --disable-threads --enable-small when using a compiler" >+ echo "that doesn't support __attribute__((__constructor__))." > fi >+ >diff -ur xz-5.2.5/configure.ac xz-5.4.3/configure.ac >--- xz-5.2.5/configure.ac 2020-03-17 17:28:50 >+++ xz-5.4.3/configure.ac 2023-05-04 17:21:05 >@@ -18,11 +18,11 @@ > AC_PREREQ([2.69]) > > AC_INIT([XZ Utils], m4_esyscmd([/bin/sh build-aux/version.sh]), >- [lasse.collin@tukaani.org], [xz], [https://tukaani.org/xz/]) >+ [xz@tukaani.org], [xz], [https://tukaani.org/xz/]) > AC_CONFIG_SRCDIR([src/liblzma/common/common.h]) > AC_CONFIG_AUX_DIR([build-aux]) > AC_CONFIG_MACRO_DIR([m4]) >-AC_CONFIG_HEADER([config.h]) >+AC_CONFIG_HEADERS([config.h]) > > echo > echo "$PACKAGE_STRING" >@@ -79,8 +79,8 @@ > # Filters # > ########### > >-m4_define([SUPPORTED_FILTERS], [lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,sparc])dnl >-m4_define([SIMPLE_FILTERS], [x86,powerpc,ia64,arm,armthumb,sparc]) >+m4_define([SUPPORTED_FILTERS], [lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc])dnl >+m4_define([SIMPLE_FILTERS], [x86,powerpc,ia64,arm,armthumb,arm64,sparc]) > m4_define([LZ_FILTERS], [lzma1,lzma2]) > > m4_foreach([NAME], [SUPPORTED_FILTERS], >@@ -210,6 +210,10 @@ > [enable_match_finders=SUPPORTED_MATCH_FINDERS]) > enable_match_finders=`echo "$enable_match_finders" | sed 's/,/ /g'` > if test "x$enable_encoder_lz" = xyes ; then >+ if test -z "$enable_match_finders"; then >+ AC_MSG_ERROR([At least one match finder is required for an LZ-based encoder.]) >+ fi >+ > for arg in $enable_match_finders > do > case $arg in m4_foreach([NAME], [SUPPORTED_MATCH_FINDERS], [ >@@ -290,6 +294,49 @@ > fi > > >+############# >+# MicroLZMA # >+############# >+ >+AC_MSG_CHECKING([if MicroLZMA support should be built]) >+AC_ARG_ENABLE([microlzma], AS_HELP_STRING([--disable-microlzma], >+ [Do not build MicroLZMA encoder and decoder. >+ It is needed by specific applications only, >+ for example, erofs-utils.]), >+ [], [enable_microlzma=yes]) >+case $enable_microlzma in >+ yes | no) >+ AC_MSG_RESULT([$enable_microlzma]) >+ ;; >+ *) >+ AC_MSG_RESULT([]) >+ AC_MSG_ERROR([--enable-microlzma accepts only `yes' or `no'.]) >+ ;; >+esac >+AM_CONDITIONAL(COND_MICROLZMA, test "x$enable_microlzma" = xyes) >+ >+ >+############################# >+# .lz (lzip) format support # >+############################# >+ >+AC_MSG_CHECKING([if .lz (lzip) decompression support should be built]) >+AC_ARG_ENABLE([lzip-decoder], AS_HELP_STRING([--disable-lzip-decoder], >+ [Disable decompression support for .lz (lzip) files.]), >+ [], [enable_lzip_decoder=yes]) >+if test "x$enable_decoder_lzma1" != xyes; then >+ enable_lzip_decoder=no >+ AC_MSG_RESULT([no because LZMA1 decoder is disabled]) >+elif test "x$enable_lzip_decoder" = xyes; then >+ AC_DEFINE([HAVE_LZIP_DECODER], [1], >+ [Define to 1 if .lz (lzip) decompression support is enabled.]) >+ AC_MSG_RESULT([yes]) >+else >+ AC_MSG_RESULT([no]) >+fi >+AM_CONDITIONAL(COND_LZIP_DECODER, test "x$enable_lzip_decoder" = xyes) >+ >+ > ########################### > # Assembler optimizations # > ########################### >@@ -307,24 +354,32 @@ > linux* | *bsd* | mingw* | cygwin | msys | *djgpp*) > case $host_cpu in > i?86) enable_assembler=x86 ;; >- x86_64) enable_assembler=x86_64 ;; > esac > ;; > esac > fi > case $enable_assembler in >- x86 | x86_64 | no) >+ x86 | no) > AC_MSG_RESULT([$enable_assembler]) > ;; > *) > AC_MSG_RESULT([]) >- AC_MSG_ERROR([--enable-assembler accepts only `yes', `no', `x86', or `x86_64'.]) >+ AC_MSG_ERROR([--enable-assembler accepts only `yes', `no', or `x86' (32-bit).]) > ;; > esac > AM_CONDITIONAL(COND_ASM_X86, test "x$enable_assembler" = xx86) >-AM_CONDITIONAL(COND_ASM_X86_64, test "x$enable_assembler" = xx86_64) > > >+############# >+# CLMUL CRC # >+############# >+ >+AC_ARG_ENABLE([clmul-crc], AS_HELP_STRING([--disable-clmul-crc], >+ [Do not use carryless multiplication for CRC calculation >+ even if support for it is detected.]), >+ [], [enable_clmul_crc=yes]) >+ >+ > ##################### > # Size optimization # > ##################### >@@ -465,40 +520,14 @@ > AM_CONDITIONAL([COND_DOC], [test x$enable_doc != xno]) > > >-##################### >-# Symbol versioning # >-##################### >- >-AC_MSG_CHECKING([if library symbol versioning should be used]) >-AC_ARG_ENABLE([symbol-versions], [AS_HELP_STRING([--enable-symbol-versions], >- [Use symbol versioning for liblzma. Enabled by default on >- GNU/Linux, other GNU-based systems, and FreeBSD.])], >- [], [enable_symbol_versions=auto]) >-if test "x$enable_symbol_versions" = xauto; then >- case $host_os in >- # NOTE: Even if one omits -gnu on GNU/Linux (e.g. >- # i486-slackware-linux), configure will (via config.sub) >- # append -gnu (e.g. i486-slackware-linux-gnu), and this >- # test will work correctly. >- gnu* | *-gnu* | freebsd*) >- enable_symbol_versions=yes >- ;; >- *) >- enable_symbol_versions=no >- ;; >- esac >-fi >-AC_MSG_RESULT([$enable_symbol_versions]) >-AM_CONDITIONAL([COND_SYMVERS], [test "x$enable_symbol_versions" = xyes]) >- >- > ############## > # Sandboxing # > ############## > > AC_MSG_CHECKING([if sandboxing should be used]) > AC_ARG_ENABLE([sandbox], [AS_HELP_STRING([--enable-sandbox=METHOD], >- [Sandboxing METHOD can be `auto', `no', or `capsicum'. >+ [Sandboxing METHOD can be >+ `auto', `no', `capsicum', or `pledge'. > The default is `auto' which enables sandboxing if > a supported sandboxing method is found.])], > [], [enable_sandbox=auto]) >@@ -506,12 +535,12 @@ > auto) > AC_MSG_RESULT([maybe (autodetect)]) > ;; >- no | capsicum) >+ no | capsicum | pledge) > AC_MSG_RESULT([$enable_sandbox]) > ;; > *) > AC_MSG_RESULT([]) >- AC_MSG_ERROR([--enable-sandbox only accepts `auto', `no', or `capsicum'.]) >+ AC_MSG_ERROR([--enable-sandbox only accepts `auto', `no', `capsicum', or `pledge'.]) > ;; > esac > >@@ -567,12 +596,15 @@ > > # We don't use "subdir-objects" yet because it breaks "make distclean" when > # dependencies are enabled (as of Automake 1.14.1) due to this bug: >-# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17354 >+# https://debbugs.gnu.org/cgi/bugreport.cgi?bug=17354 > # The -Wno-unsupported is used to silence warnings about missing > # "subdir-objects". >-AM_INIT_AUTOMAKE([1.12 foreign tar-v7 filename-length-max=99 serial-tests -Wno-unsupported]) >+AM_INIT_AUTOMAKE([1.12 foreign tar-v7 filename-length-max=99 -Wno-unsupported]) > AC_PROG_LN_S > >+dnl # Autoconf >= 2.70 warns that AC_PROG_CC_C99 is obsolete. However, >+dnl # we have to keep using AC_PROG_CC_C99 instead of AC_PROG_CC >+dnl # as long as we try to be compatible with Autoconf 2.69. > AC_PROG_CC_C99 > if test x$ac_cv_prog_cc_c99 = xno ; then > AC_MSG_ERROR([No C99 compiler was found.]) >@@ -582,8 +614,8 @@ > AM_PROG_AS > AC_USE_SYSTEM_EXTENSIONS > >-case $enable_threads in >- posix) >+AS_CASE([$enable_threads], >+ [posix], [ > echo > echo "POSIX threading support:" > AX_PTHREAD([:]) dnl We don't need the HAVE_PTHREAD macro. >@@ -609,21 +641,24 @@ > CFLAGS="$CFLAGS $PTHREAD_CFLAGS" > AC_SEARCH_LIBS([clock_gettime], [rt]) > AC_CHECK_FUNCS([clock_gettime pthread_condattr_setclock]) >- AC_CHECK_DECLS([CLOCK_MONOTONIC], [], [], [[#include <time.h>]]) >+ AC_CHECK_DECL([CLOCK_MONOTONIC], [AC_DEFINE( >+ [HAVE_CLOCK_MONOTONIC], [1], [Define to 1 if >+ `CLOCK_MONOTONIC' is declared in <time.h>.])], [], >+ [[#include <time.h>]]) > CFLAGS=$OLD_CFLAGS >- ;; >- win95) >+ ], >+ [win95], [ > AC_DEFINE([MYTHREAD_WIN95], [1], [Define to 1 when using > Windows 95 (and thus XP) compatible threads. > This avoids use of features that were added in > Windows Vista.]) >- ;; >- vista) >+ ], >+ [vista], [ > AC_DEFINE([MYTHREAD_VISTA], [1], [Define to 1 when using > Windows Vista compatible threads. This uses > features that are not available on Windows XP.]) >- ;; >-esac >+ ] >+) > AM_CONDITIONAL([COND_THREADS], [test "x$enable_threads" != xno]) > > echo >@@ -638,7 +673,110 @@ > # libs as shared. > AM_CONDITIONAL([COND_SHARED], [test "x$enable_shared" != xno]) > >+##################### >+# Symbol versioning # >+##################### > >+# NOTE: This checks if we are building shared or static library >+# and if --with-pic or --without-pic was used. Thus this check >+# must be after Libtool initialization. >+AC_MSG_CHECKING([if library symbol versioning should be used]) >+AC_ARG_ENABLE([symbol-versions], [AS_HELP_STRING([--enable-symbol-versions], >+ [Use symbol versioning for liblzma. Enabled by default on >+ GNU/Linux, other GNU-based systems, and FreeBSD.])], >+ [], [enable_symbol_versions=auto]) >+if test "x$enable_symbol_versions" = xauto; then >+ case $host_os in >+ # NOTE: Even if one omits -gnu on GNU/Linux (e.g. >+ # i486-slackware-linux), configure will (via config.sub) >+ # append -gnu (e.g. i486-slackware-linux-gnu), and this >+ # test will work correctly. >+ gnu* | *-gnu* | freebsd*) >+ enable_symbol_versions=yes >+ ;; >+ *) >+ enable_symbol_versions=no >+ ;; >+ esac >+fi >+ >+# There are two variants for symbol versioning. >+# See src/liblzma/validate_map.sh for details. >+# >+# On GNU/Linux, extra symbols are added in the C code. These extra symbols >+# must not be put into a static library as they can cause problems (and >+# even if they didn't cause problems, they would be useless). On other >+# systems symbol versioning may be used too but there is no problem as only >+# a linker script is specified in src/liblzma/Makefile.am and that isn't >+# used when creating a static library. >+# >+# Libtool always uses -DPIC when building shared libraries by default and >+# doesn't use it for static libs by default. This can be overriden with >+# --with-pic and --without-pic though. As long as neither --with-pic nor >+# --without-pic is used then we can use #ifdef PIC to detect if the file is >+# being built for a shared library. >+if test "x$enable_symbol_versions" = xno ; then >+ enable_symbol_versions=no >+ AC_MSG_RESULT([no]) >+elif test "x$enable_shared" = xno ; then >+ enable_symbol_versions=no >+ AC_MSG_RESULT([no (not building a shared library)]) >+else >+ case "$host_cpu-$host_os" in >+ microblaze*) >+ # GCC 12 on MicroBlaze doesn't support __symver__ >+ # attribute. It's simplest and safest to use the >+ # generic version on that platform since then only >+ # the linker script is needed. The RHEL/CentOS 7 >+ # compatibility symbols don't matter on MicroBlaze. >+ enable_symbol_versions=generic >+ ;; >+ *-linux*) >+ case "$pic_mode-$enable_static" in >+ default-*) >+ # Use symvers if PIC is defined. >+ have_symbol_versions_linux=2 >+ ;; >+ *-no) >+ # Not building static library. >+ # Use symvers unconditionally. >+ have_symbol_versions_linux=1 >+ ;; >+ *) >+ AC_MSG_RESULT([]) >+ AC_MSG_ERROR([ >+ On GNU/Linux, building both shared and static library at the same time >+ is not supported if --with-pic or --without-pic is used. >+ Use either --disable-shared or --disable-static to build one type >+ of library at a time. If both types are needed, build one at a time, >+ possibly picking only src/liblzma/.libs/liblzma.a from the static build.]) >+ ;; >+ esac >+ enable_symbol_versions=linux >+ AC_DEFINE_UNQUOTED([HAVE_SYMBOL_VERSIONS_LINUX], >+ [$have_symbol_versions_linux], >+ [Define to 1 to if GNU/Linux-specific details >+ are unconditionally wanted for symbol >+ versioning. Define to 2 to if these are wanted >+ only if also PIC is defined (allows building >+ both shared and static liblzma at the same >+ time with Libtool if neither --with-pic nor >+ --without-pic is used). This define must be >+ used together with liblzma_linux.map.]) >+ ;; >+ *) >+ enable_symbol_versions=generic >+ ;; >+ esac >+ AC_MSG_RESULT([yes ($enable_symbol_versions)]) >+fi >+ >+AM_CONDITIONAL([COND_SYMVERS_LINUX], >+ [test "x$enable_symbol_versions" = xlinux]) >+AM_CONDITIONAL([COND_SYMVERS_GENERIC], >+ [test "x$enable_symbol_versions" = xgeneric]) >+ >+ > ############################################################################### > # Checks for libraries. > ############################################################################### >@@ -666,18 +804,15 @@ > [], > [AC_MSG_ERROR([Required header file(s) are missing.])]) > >-# This allows the use of the intrinsic functions if they are available. >-AC_CHECK_HEADERS([immintrin.h]) >+# immintrin.h allows the use of the intrinsic functions if they are available. >+# cpuid.h may be used for detecting x86 processor features at runtime. >+AC_CHECK_HEADERS([immintrin.h cpuid.h]) > > > ############################################################################### > # Checks for typedefs, structures, and compiler characteristics. > ############################################################################### > >-dnl We don't need these as long as we need a C99 compiler anyway. >-dnl AC_C_INLINE >-dnl AC_C_RESTRICT >- > AC_HEADER_STDBOOL > > AC_TYPE_UINT8_T >@@ -703,7 +838,30 @@ > AC_SYS_LARGEFILE > AC_C_BIGENDIAN > >+# __attribute__((__constructor__)) can be used for one-time initializations. >+# Use -Werror because some compilers accept unknown attributes and just >+# give a warning. If it works this should give no warnings, even >+# clang -Weverything should be fine. >+# dnl This doesn't need AC_LANG_SOURCE, minimal code is enough. >+AC_MSG_CHECKING([if __attribute__((__constructor__)) can be used]) >+have_func_attribute_constructor=no >+OLD_CFLAGS="$CFLAGS" >+CFLAGS="$CFLAGS -Werror" >+AC_COMPILE_IFELSE([ >+ __attribute__((__constructor__)) >+ static void my_constructor_func(void) { return; } >+], [ >+ AC_DEFINE([HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR], [1], >+ [Define to 1 if __attribute__((__constructor__)) >+ is supported for functions.]) >+ have_func_attribute_constructor=yes >+ AC_MSG_RESULT([yes]) >+], [ >+ AC_MSG_RESULT([no]) >+]) >+CFLAGS="$OLD_CFLAGS" > >+ > ############################################################################### > # Checks for library functions. > ############################################################################### >@@ -740,7 +898,7 @@ > sha256_header_found=no > sha256_type_found=no > sha256_func_found=no >-if test "x$enable_external_sha256" = "xyes"; then >+AS_IF([test "x$enable_external_sha256" = "xyes"], [ > # Test for Common Crypto before others, because Darwin has sha256.h > # too and we don't want to use that, because on older versions it > # uses OpenSSL functions, whose SHA256_Init is not guaranteed to >@@ -770,13 +928,16 @@ > [sha256_func_found=yes ; break]) > fi > fi >-fi >+]) > AM_CONDITIONAL([COND_INTERNAL_SHA256], [test "x$sha256_func_found" = xno]) > if test "x$enable_external_sha256$sha256_func_found" = xyesno; then > AC_MSG_ERROR([--enable-external-sha256 was specified but no supported external SHA-256 implementation was found]) > fi > >-# Check for SSE2 intrinsics. >+# Check for SSE2 intrinsics. There is no run-time detection for SSE2 so if >+# compiler options enable SSE2 then SSE2 support is required by the binaries. >+# The compile-time check for SSE2 is done with #ifdefs because some compilers >+# (ICC, MSVC) allow SSE2 intrinsics even when SSE2 isn't enabled. > AC_CHECK_DECL([_mm_movemask_epi8], > [AC_DEFINE([HAVE__MM_MOVEMASK_EPI8], [1], > [Define to 1 if _mm_movemask_epi8 is available.])], >@@ -785,12 +946,65 @@ > #include <immintrin.h> > #endif]) > >+# For faster CRC on 32/64-bit x86 and E2K (see also crc64_fast.c): >+# >+# - Check for the CLMUL intrinsic _mm_clmulepi64_si128 in <immintrin.h>. >+# Check also for _mm_set_epi64x for consistency with CMake build >+# where it's needed to disable CLMUL with VS2013. >+# >+# - Check that __attribute__((__target__("ssse3,sse4.1,pclmul"))) works >+# together with _mm_clmulepi64_si128 from <immintrin.h>. The attribute >+# was added in GCC 4.4 but some GCC 4.x versions don't allow intrinsics >+# with it. Exception: it must be not be used with EDG-based compilers >+# like ICC and the compiler on E2K. >+# >+# If everything above is supported, runtime detection will be used to keep the >+# binaries working on systems that don't support the required extensions. >+AC_MSG_CHECKING([if _mm_clmulepi64_si128 is usable]) >+AS_IF([test "x$enable_clmul_crc" = xno], [ >+ AC_MSG_RESULT([no, --disable-clmul-crc was used]) >+], [ >+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ >+#include <immintrin.h> >+ >+// CLMUL works on older E2K instruction set but it is slow due to emulation. >+#if defined(__e2k__) && __iset__ < 6 >+# error >+#endif >+ >+// Intel's old compiler (ICC) can define __GNUC__ but the attribute must not >+// be used with it. The new Clang-based ICX needs the attribute. >+// Checking for !defined(__EDG__) catches ICC and other EDG-based compilers. >+#if (defined(__GNUC__) || defined(__clang__)) && !defined(__EDG__) >+__attribute__((__target__("ssse3,sse4.1,pclmul"))) >+#endif >+__m128i my_clmul(__m128i a) >+{ >+ const __m128i b = _mm_set_epi64x(1, 2); >+ return _mm_clmulepi64_si128(a, b, 0); >+} >+ ]])], [ >+ AC_DEFINE([HAVE_USABLE_CLMUL], [1], >+ [Define to 1 if _mm_set_epi64x and >+ _mm_clmulepi64_si128 are usable. >+ See configure.ac for details.]) >+ AC_MSG_RESULT([yes]) >+ ], [ >+ AC_MSG_RESULT([no]) >+ ]) >+]) >+ > # Check for sandbox support. If one is found, set enable_sandbox=found. >-case $enable_sandbox in >- auto | capsicum) >+AS_CASE([$enable_sandbox], >+ [auto | capsicum], [ > AX_CHECK_CAPSICUM([enable_sandbox=found], [:]) >- ;; >-esac >+ ] >+) >+AS_CASE([$enable_sandbox], >+ [auto | pledge], [ >+ AC_CHECK_FUNCS([pledge], [enable_sandbox=found ; break]) >+ ] >+) > > # If a specific sandboxing method was explicitly requested and it wasn't > # found, give an error. >@@ -819,41 +1033,66 @@ > AM_CFLAGS="$AM_CFLAGS $CFLAG_VISIBILITY" > fi > >-if test "$GCC" = yes ; then >+AS_IF([test "$GCC" = yes], [ > # Enable as much warnings as possible. These commented warnings won't > # work for this package though: > # * -Wunreachable-code breaks several assert(0) cases, which are > # backed up with "return LZMA_PROG_ERROR". > # * -Wcast-qual would break various things where we need a non-const > # pointer although we don't modify anything through it. >- # * -Wcast-align breaks optimized CRC32 and CRC64 implementation >- # on some architectures (not on x86), where this warning is bogus, >- # because we take care of correct alignment. > # * -Winline, -Wdisabled-optimization, -Wunsafe-loop-optimizations > # don't seem so useful here; at least the last one gives some > # warnings which are not bugs. >+ # * -Wconversion still shows too many warnings. >+ # >+ # The flags before the empty line are for GCC and many of them >+ # are supported by Clang too. The flags after the empty line are >+ # for Clang. > for NEW_FLAG in \ > -Wall \ > -Wextra \ > -Wvla \ >+ -Wc99-c11-compat \ > -Wformat=2 \ > -Winit-self \ > -Wmissing-include-dirs \ >- -Wstrict-aliasing \ >+ -Wshift-overflow=2 \ >+ -Wstrict-overflow=3 \ >+ -Walloc-zero \ >+ -Wduplicated-cond \ > -Wfloat-equal \ > -Wundef \ > -Wshadow \ > -Wpointer-arith \ > -Wbad-function-cast \ > -Wwrite-strings \ >+ -Wdate-time \ >+ -Wsign-conversion \ >+ -Wfloat-conversion \ > -Wlogical-op \ > -Waggregate-return \ > -Wstrict-prototypes \ > -Wold-style-definition \ > -Wmissing-prototypes \ > -Wmissing-declarations \ >- -Wmissing-noreturn \ >- -Wredundant-decls >+ -Wredundant-decls \ >+ \ >+ -Wc99-compat \ >+ -Wc11-extensions \ >+ -Wc2x-compat \ >+ -Wc2x-extensions \ >+ -Wpre-c2x-compat \ >+ -Warray-bounds-pointer-arithmetic \ >+ -Wassign-enum \ >+ -Wconditional-uninitialized \ >+ -Wdocumentation \ >+ -Wduplicate-enum \ >+ -Wempty-translation-unit \ >+ -Wflexible-array-extensions \ >+ -Wmissing-variable-declarations \ >+ -Wnewline-eof \ >+ -Wshift-sign-overflow \ >+ -Wstring-conversion > do > AC_MSG_CHECKING([if $CC accepts $NEW_FLAG]) > OLD_CFLAGS="$CFLAGS" >@@ -875,7 +1114,7 @@ > if test "x$enable_werror" = "xyes"; then > AM_CFLAGS="$AM_CFLAGS -Werror" > fi >-fi >+]) > > > ############################################################################### >@@ -896,7 +1135,6 @@ > AC_SUBST([xz]) > > AC_CONFIG_FILES([ >- Doxyfile > Makefile > po/Makefile.in > lib/Makefile >@@ -932,9 +1170,11 @@ > echo "No supported method to detect the number of CPU cores." > fi > >-if test "x$enable_threads$enable_small" = xnoyes; then >+if test "x$enable_threads$enable_small$have_func_attribute_constructor" \ >+ = xnoyesno; then > echo > echo "NOTE:" >- echo "liblzma will be thread unsafe due the combination" >- echo "of --disable-threads --enable-small." >+ echo "liblzma will be thread-unsafe due to the combination" >+ echo "of --disable-threads --enable-small when using a compiler" >+ echo "that doesn't support __attribute__((__constructor__))." > fi >diff -ur xz-5.2.5/debug/Makefile.in xz-5.4.3/debug/Makefile.in >--- xz-5.2.5/debug/Makefile.in 2020-03-17 17:29:35 >+++ xz-5.4.3/debug/Makefile.in 2023-05-04 17:31:30 >@@ -1,7 +1,7 @@ >-# Makefile.in generated by automake 1.16.1 from Makefile.am. >+# Makefile.in generated by automake 1.16.5 from Makefile.am. > # @configure_input@ > >-# Copyright (C) 1994-2018 Free Software Foundation, Inc. >+# Copyright (C) 1994-2021 Free Software Foundation, Inc. > > # This Makefile.in is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -223,8 +223,6 @@ > unique=`for i in $$list; do \ > if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ > done | $(am__uniquify_input)` >-ETAGS = etags >-CTAGS = ctags > am__DIST_COMMON = $(srcdir)/Makefile.in \ > $(top_srcdir)/build-aux/depcomp README > DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) >@@ -248,6 +246,8 @@ > CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ > CPP = @CPP@ > CPPFLAGS = @CPPFLAGS@ >+CSCOPE = @CSCOPE@ >+CTAGS = @CTAGS@ > CYGPATH_W = @CYGPATH_W@ > DEFS = @DEFS@ > DEPDIR = @DEPDIR@ >@@ -258,8 +258,10 @@ > ECHO_N = @ECHO_N@ > ECHO_T = @ECHO_T@ > EGREP = @EGREP@ >+ETAGS = @ETAGS@ > EXEEXT = @EXEEXT@ > FGREP = @FGREP@ >+FILECMD = @FILECMD@ > GETOPT_H = @GETOPT_H@ > GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ > GMSGFMT = @GMSGFMT@ >@@ -312,6 +314,7 @@ > PREFERABLY_POSIX_SHELL = @PREFERABLY_POSIX_SHELL@ > PTHREAD_CC = @PTHREAD_CC@ > PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ >+PTHREAD_CXX = @PTHREAD_CXX@ > PTHREAD_LIBS = @PTHREAD_LIBS@ > RANLIB = @RANLIB@ > RC = @RC@ >@@ -370,6 +373,7 @@ > prefix = @prefix@ > program_transform_name = @program_transform_name@ > psdir = @psdir@ >+runstatedir = @runstatedir@ > sbindir = @sbindir@ > sharedstatedir = @sharedstatedir@ > srcdir = @srcdir@ >@@ -557,7 +561,6 @@ > > distclean-tags: > -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags >- > distdir: $(BUILT_SOURCES) > $(MAKE) $(AM_MAKEFLAGS) distdir-am > >Only in xz-5.4.3/doc: api >diff -ur xz-5.2.5/doc/examples/01_compress_easy.c xz-5.4.3/doc/examples/01_compress_easy.c >--- xz-5.2.5/doc/examples/01_compress_easy.c 2020-03-17 17:28:50 >+++ xz-5.4.3/doc/examples/01_compress_easy.c 2023-05-04 17:21:05 >@@ -173,7 +173,7 @@ > lzma_ret ret = lzma_code(strm, action); > > // If the output buffer is full or if the compression finished >- // successfully, write the data from the output bufffer to >+ // successfully, write the data from the output buffer to > // the output file. > if (strm->avail_out == 0 || ret == LZMA_STREAM_END) { > // When lzma_code() has returned LZMA_STREAM_END, >diff -ur xz-5.2.5/doc/examples/Makefile xz-5.4.3/doc/examples/Makefile >--- xz-5.2.5/doc/examples/Makefile 2020-03-17 17:28:54 >+++ xz-5.4.3/doc/examples/Makefile 2023-05-04 17:21:05 >@@ -13,7 +13,8 @@ > 01_compress_easy \ > 02_decompress \ > 03_compress_custom \ >- 04_compress_easy_mt >+ 04_compress_easy_mt \ >+ 11_file_info > > all: $(PROGS) > >diff -ur xz-5.2.5/doc/faq.txt xz-5.4.3/doc/faq.txt >--- xz-5.2.5/doc/faq.txt 2020-03-17 17:28:50 >+++ xz-5.4.3/doc/faq.txt 2023-05-04 17:21:05 >@@ -33,7 +33,7 @@ > LZMA Utils. > > There are several other projects using LZMA. Most are more or less >- based on LZMA SDK. See <http://7-zip.org/links.html>. >+ based on LZMA SDK. See <https://7-zip.org/links.html>. > > > Q: Why is liblzma named liblzma if its primary file format is .xz? >@@ -115,7 +115,6 @@ > > A: BCJ filter is called "x86" in liblzma. BCJ2 is not included, > because it requires using more than one encoded output stream. >- A streamable version of BCJ2-style filtering is planned. > > > Q: I need to use a script that runs "xz -9". On a system with 256 MiB >@@ -154,19 +153,15 @@ > dictionary doesn't increase memory usage. > > >-Q: Will xz support threaded compression? >+Q: How is multi-threaded compression implemented in XZ Utils? > >-A: It is planned and has been taken into account when designing >- the .xz file format. Eventually there will probably be three types >- of threading, each method having its own advantages and disadvantages. >- >- The simplest method is splitting the uncompressed data into blocks >+A: The simplest method is splitting the uncompressed data into blocks > and compressing them in parallel independent from each other. >+ This is currently the only threading method supported in XZ Utils. > Since the blocks are compressed independently, they can also be > decompressed independently. Together with the index feature in .xz, > this allows using threads to create .xz files for random-access >- reading. This also makes threaded decompression possible, although >- it is not clear if threaded decompression will ever be implemented. >+ reading. This also makes threaded decompression possible. > > The independent blocks method has a couple of disadvantages too. It > will compress worse than a single-block method. Often the difference >@@ -174,15 +169,17 @@ > the memory usage of the compressor increases linearly when adding > threads. > >- Match finder parallelization is another threading method. It has >- been in 7-Zip for ages. It doesn't affect compression ratio or >- memory usage significantly. Among the three threading methods, only >- this is useful when compressing small files (files that are not >- significantly bigger than the dictionary). Unfortunately this method >- scales only to about two CPU cores. >+ At least two other threading methods are possible but these haven't >+ been implemented in XZ Utils: > >+ Match finder parallelization has been in 7-Zip for ages. It doesn't >+ affect compression ratio or memory usage significantly. Among the >+ three threading methods, only this is useful when compressing small >+ files (files that are not significantly bigger than the dictionary). >+ Unfortunately this method scales only to about two CPU cores. >+ > The third method is pigz-style threading (I use that name, because >- pigz <http://www.zlib.net/pigz/> uses that method). It doesn't >+ pigz <https://www.zlib.net/pigz/> uses that method). It doesn't > affect compression ratio significantly and scales to many cores. > The memory usage scales linearly when threads are added. This isn't > significant with pigz, because Deflate uses only a 32 KiB dictionary, >@@ -193,12 +190,35 @@ > cores the overhead is not a big deal anymore. > > Combining the threading methods will be possible and also useful. >- E.g. combining match finder parallelization with pigz-style threading >- can cut the memory usage by 50 %. >+ For example, combining match finder parallelization with pigz-style >+ threading or independent-blocks-threading can cut the memory usage >+ by 50 %. > >- It is possible that the single-threaded method will be modified to >- create files identical to the pigz-style method. We'll see once >- pigz-style threading has been implemented in liblzma. >+ >+Q: I told xz to use many threads but it is using only one or two >+ processor cores. What is wrong? >+ >+A: Since multi-threaded compression is done by splitting the data into >+ blocks that are compressed individually, if the input file is too >+ small for the block size, then many threads cannot be used. The >+ default block size increases when the compression level is >+ increased. For example, xz -6 uses 8 MiB LZMA2 dictionary and >+ 24 MiB blocks, and xz -9 uses 64 MiB LZMA dictionary and 192 MiB >+ blocks. If the input file is 100 MiB, xz -6 can use five threads >+ of which one will finish quickly as it has only 4 MiB to compress. >+ However, for the same file, xz -9 can only use one thread. >+ >+ One can adjust block size with --block-size=SIZE but making the >+ block size smaller than LZMA2 dictionary is waste of RAM: using >+ xz -9 with 6 MiB blocks isn't any better than using xz -6 with >+ 6 MiB blocks. The default settings use a block size bigger than >+ the LZMA2 dictionary size because this was seen as a reasonable >+ compromise between RAM usage and compression ratio. >+ >+ When decompressing, the ability to use threads depends on how the >+ file was created. If it was created in multi-threaded mode then >+ it can be decompressed in multi-threaded mode too if there are >+ multiple blocks in the file. > > > Q: How do I build a program that needs liblzmadec (lzmadec.h)? >diff -ur xz-5.2.5/doc/lzma-file-format.txt xz-5.4.3/doc/lzma-file-format.txt >--- xz-5.2.5/doc/lzma-file-format.txt 2020-03-17 17:28:50 >+++ xz-5.4.3/doc/lzma-file-format.txt 2023-05-04 17:21:05 >@@ -40,9 +40,13 @@ > > 0.2. Changes > >- Last modified: 2011-04-12 11:55+0300 >+ Last modified: 2022-07-13 21:00+0300 > >+ Compared to the previous version (2011-04-12 11:55+0300) >+ the section 1.1.3 was modified to allow End of Payload Marker >+ with a known Uncompressed Size. > >+ > 1. File Format > > +-+-+-+-+-+-+-+-+-+-+-+-+-+==========================+ >@@ -129,7 +133,10 @@ > Uncompressed Size is stored as unsigned 64-bit little endian > integer. A special value of 0xFFFF_FFFF_FFFF_FFFF indicates > that Uncompressed Size is unknown. End of Payload Marker (*) >- is used if and only if Uncompressed Size is unknown. >+ is used if Uncompressed Size is unknown. End of Payload Marker >+ is allowed but rarely used if Uncompressed Size is known. >+ XZ Utils 5.2.5 and older don't support .lzma files that have >+ End of Payload Marker together with a known Uncompressed Size. > > XZ Utils rejects files whose Uncompressed Size field specifies > a known size that is 256 GiB or more. This is to reject false >Binary files xz-5.2.5/doc/man/pdf-a4/lzmainfo-a4.pdf and xz-5.4.3/doc/man/pdf-a4/lzmainfo-a4.pdf differ >Binary files xz-5.2.5/doc/man/pdf-a4/xz-a4.pdf and xz-5.4.3/doc/man/pdf-a4/xz-a4.pdf differ >Binary files xz-5.2.5/doc/man/pdf-a4/xzdec-a4.pdf and xz-5.4.3/doc/man/pdf-a4/xzdec-a4.pdf differ >Binary files xz-5.2.5/doc/man/pdf-a4/xzdiff-a4.pdf and xz-5.4.3/doc/man/pdf-a4/xzdiff-a4.pdf differ >Binary files xz-5.2.5/doc/man/pdf-a4/xzgrep-a4.pdf and xz-5.4.3/doc/man/pdf-a4/xzgrep-a4.pdf differ >Binary files xz-5.2.5/doc/man/pdf-a4/xzless-a4.pdf and xz-5.4.3/doc/man/pdf-a4/xzless-a4.pdf differ >Binary files xz-5.2.5/doc/man/pdf-a4/xzmore-a4.pdf and xz-5.4.3/doc/man/pdf-a4/xzmore-a4.pdf differ >Binary files xz-5.2.5/doc/man/pdf-letter/lzmainfo-letter.pdf and xz-5.4.3/doc/man/pdf-letter/lzmainfo-letter.pdf differ >Binary files xz-5.2.5/doc/man/pdf-letter/xz-letter.pdf and xz-5.4.3/doc/man/pdf-letter/xz-letter.pdf differ >Binary files xz-5.2.5/doc/man/pdf-letter/xzdec-letter.pdf and xz-5.4.3/doc/man/pdf-letter/xzdec-letter.pdf differ >Binary files xz-5.2.5/doc/man/pdf-letter/xzdiff-letter.pdf and xz-5.4.3/doc/man/pdf-letter/xzdiff-letter.pdf differ >Binary files xz-5.2.5/doc/man/pdf-letter/xzgrep-letter.pdf and xz-5.4.3/doc/man/pdf-letter/xzgrep-letter.pdf differ >Binary files xz-5.2.5/doc/man/pdf-letter/xzless-letter.pdf and xz-5.4.3/doc/man/pdf-letter/xzless-letter.pdf differ >Binary files xz-5.2.5/doc/man/pdf-letter/xzmore-letter.pdf and xz-5.4.3/doc/man/pdf-letter/xzmore-letter.pdf differ >diff -ur xz-5.2.5/doc/man/txt/xz.txt xz-5.4.3/doc/man/txt/xz.txt >--- xz-5.2.5/doc/man/txt/xz.txt 2020-03-17 17:31:43 >+++ xz-5.4.3/doc/man/txt/xz.txt 2023-05-04 17:33:11 >@@ -24,164 +24,166 @@ > xz is a general-purpose data compression tool with command line syntax > similar to gzip(1) and bzip2(1). The native file format is the .xz > format, but the legacy .lzma format used by LZMA Utils and raw com- >- pressed streams with no container format headers are also supported. >+ pressed streams with no container format headers are also supported. >+ In addition, decompression of the .lz format used by lzip is supported. > > xz compresses or decompresses each file according to the selected oper- > ation mode. If no files are given or file is -, xz reads from standard > input and writes the processed data to standard output. xz will refuse >- (display an error and skip the file) to write compressed data to stan- >- dard output if it is a terminal. Similarly, xz will refuse to read >+ (display an error and skip the file) to write compressed data to stan- >+ dard output if it is a terminal. Similarly, xz will refuse to read > compressed data from standard input if it is a terminal. > >- Unless --stdout is specified, files other than - are written to a new >+ Unless --stdout is specified, files other than - are written to a new > file whose name is derived from the source file name: > >- o When compressing, the suffix of the target file format (.xz or >- .lzma) is appended to the source filename to get the target file- >+ o When compressing, the suffix of the target file format (.xz or >+ .lzma) is appended to the source filename to get the target file- > name. > >- o When decompressing, the .xz or .lzma suffix is removed from the >- filename to get the target filename. xz also recognizes the suf- >- fixes .txz and .tlz, and replaces them with the .tar suffix. >+ o When decompressing, the .xz, .lzma, or .lz suffix is removed from >+ the filename to get the target filename. xz also recognizes the >+ suffixes .txz and .tlz, and replaces them with the .tar suffix. > >- If the target file already exists, an error is displayed and the file >+ If the target file already exists, an error is displayed and the file > is skipped. > >- Unless writing to standard output, xz will display a warning and skip >+ Unless writing to standard output, xz will display a warning and skip > the file if any of the following applies: > >- o File is not a regular file. Symbolic links are not followed, and >+ o File is not a regular file. Symbolic links are not followed, and > thus they are not considered to be regular files. > > o File has more than one hard link. > > o File has setuid, setgid, or sticky bit set. > >- o The operation mode is set to compress and the file already has a >- suffix of the target file format (.xz or .txz when compressing to >+ o The operation mode is set to compress and the file already has a >+ suffix of the target file format (.xz or .txz when compressing to > the .xz format, and .lzma or .tlz when compressing to the .lzma for- > mat). > >- o The operation mode is set to decompress and the file doesn't have a >- suffix of any of the supported file formats (.xz, .txz, .lzma, or >- .tlz). >+ o The operation mode is set to decompress and the file doesn't have a >+ suffix of any of the supported file formats (.xz, .txz, .lzma, .tlz, >+ or .lz). > > After successfully compressing or decompressing the file, xz copies the >- owner, group, permissions, access time, and modification time from the >- source file to the target file. If copying the group fails, the per- >+ owner, group, permissions, access time, and modification time from the >+ source file to the target file. If copying the group fails, the per- > missions are modified so that the target file doesn't become accessible >- to users who didn't have permission to access the source file. xz >+ to users who didn't have permission to access the source file. xz > doesn't support copying other metadata like access control lists or ex- > tended attributes yet. > >- Once the target file has been successfully closed, the source file is >- removed unless --keep was specified. The source file is never removed >- if the output is written to standard output. >+ Once the target file has been successfully closed, the source file is >+ removed unless --keep was specified. The source file is never removed >+ if the output is written to standard output or if an error occurs. > >- Sending SIGINFO or SIGUSR1 to the xz process makes it print progress >- information to standard error. This has only limited use since when >+ Sending SIGINFO or SIGUSR1 to the xz process makes it print progress >+ information to standard error. This has only limited use since when > standard error is a terminal, using --verbose will display an automati- > cally updating progress indicator. > > Memory usage >- The memory usage of xz varies from a few hundred kilobytes to several >- gigabytes depending on the compression settings. The settings used >+ The memory usage of xz varies from a few hundred kilobytes to several >+ gigabytes depending on the compression settings. The settings used > when compressing a file determine the memory requirements of the decom- > pressor. Typically the decompressor needs 5 % to 20 % of the amount of > memory that the compressor needed when creating the file. For example, >- decompressing a file created with xz -9 currently requires 65 MiB of >- memory. Still, it is possible to have .xz files that require several >+ decompressing a file created with xz -9 currently requires 65 MiB of >+ memory. Still, it is possible to have .xz files that require several > gigabytes of memory to decompress. > >- Especially users of older systems may find the possibility of very >- large memory usage annoying. To prevent uncomfortable surprises, xz >- has a built-in memory usage limiter, which is disabled by default. >- While some operating systems provide ways to limit the memory usage of >- processes, relying on it wasn't deemed to be flexible enough (e.g. us- >- ing ulimit(1) to limit virtual memory tends to cripple mmap(2)). >+ Especially users of older systems may find the possibility of very >+ large memory usage annoying. To prevent uncomfortable surprises, xz >+ has a built-in memory usage limiter, which is disabled by default. >+ While some operating systems provide ways to limit the memory usage of >+ processes, relying on it wasn't deemed to be flexible enough (for exam- >+ ple, using ulimit(1) to limit virtual memory tends to cripple mmap(2)). > >- The memory usage limiter can be enabled with the command line option >+ The memory usage limiter can be enabled with the command line option > --memlimit=limit. Often it is more convenient to enable the limiter by >- default by setting the environment variable XZ_DEFAULTS, e.g. XZ_DE- >- FAULTS=--memlimit=150MiB. It is possible to set the limits separately >- for compression and decompression by using --memlimit-compress=limit >- and --memlimit-decompress=limit. Using these two options outside >- XZ_DEFAULTS is rarely useful because a single run of xz cannot do both >- compression and decompression and --memlimit=limit (or -M limit) is >- shorter to type on the command line. >+ default by setting the environment variable XZ_DEFAULTS, for example, >+ XZ_DEFAULTS=--memlimit=150MiB. It is possible to set the limits sepa- >+ rately for compression and decompression by using --memlimit-com- >+ press=limit and --memlimit-decompress=limit. Using these two options >+ outside XZ_DEFAULTS is rarely useful because a single run of xz cannot >+ do both compression and decompression and --memlimit=limit (or -M >+ limit) is shorter to type on the command line. > >- If the specified memory usage limit is exceeded when decompressing, xz >- will display an error and decompressing the file will fail. If the >- limit is exceeded when compressing, xz will try to scale the settings >- down so that the limit is no longer exceeded (except when using --for- >- mat=raw or --no-adjust). This way the operation won't fail unless the >+ If the specified memory usage limit is exceeded when decompressing, xz >+ will display an error and decompressing the file will fail. If the >+ limit is exceeded when compressing, xz will try to scale the settings >+ down so that the limit is no longer exceeded (except when using --for- >+ mat=raw or --no-adjust). This way the operation won't fail unless the > limit is very small. The scaling of the settings is done in steps that >- don't match the compression level presets, e.g. if the limit is only >- slightly less than the amount required for xz -9, the settings will be >- scaled down only a little, not all the way down to xz -8. >+ don't match the compression level presets, for example, if the limit is >+ only slightly less than the amount required for xz -9, the settings >+ will be scaled down only a little, not all the way down to xz -8. > > Concatenation and padding with .xz files > It is possible to concatenate .xz files as is. xz will decompress such > files as if they were a single .xz file. > >- It is possible to insert padding between the concatenated parts or af- >+ It is possible to insert padding between the concatenated parts or af- > ter the last part. The padding must consist of null bytes and the size >- of the padding must be a multiple of four bytes. This can be useful >- e.g. if the .xz file is stored on a medium that measures file sizes in >- 512-byte blocks. >+ of the padding must be a multiple of four bytes. This can be useful, >+ for example, if the .xz file is stored on a medium that measures file >+ sizes in 512-byte blocks. > >- Concatenation and padding are not allowed with .lzma files or raw >+ Concatenation and padding are not allowed with .lzma files or raw > streams. > > OPTIONS > Integer suffixes and special values >- In most places where an integer argument is expected, an optional suf- >- fix is supported to easily indicate large integers. There must be no >+ In most places where an integer argument is expected, an optional suf- >+ fix is supported to easily indicate large integers. There must be no > space between the integer and the suffix. > >- KiB Multiply the integer by 1,024 (2^10). Ki, k, kB, K, and KB are >+ KiB Multiply the integer by 1,024 (2^10). Ki, k, kB, K, and KB are > accepted as synonyms for KiB. > >- MiB Multiply the integer by 1,048,576 (2^20). Mi, m, M, and MB are >+ MiB Multiply the integer by 1,048,576 (2^20). Mi, m, M, and MB are > accepted as synonyms for MiB. > >- GiB Multiply the integer by 1,073,741,824 (2^30). Gi, g, G, and GB >+ GiB Multiply the integer by 1,073,741,824 (2^30). Gi, g, G, and GB > are accepted as synonyms for GiB. > > The special value max can be used to indicate the maximum integer value > supported by the option. > > Operation mode >- If multiple operation mode options are given, the last one takes ef- >+ If multiple operation mode options are given, the last one takes ef- > fect. > > -z, --compress >- Compress. This is the default operation mode when no operation >- mode option is specified and no other operation mode is implied >+ Compress. This is the default operation mode when no operation >+ mode option is specified and no other operation mode is implied > from the command name (for example, unxz implies --decompress). > > -d, --decompress, --uncompress > Decompress. > > -t, --test >- Test the integrity of compressed files. This option is equiva- >- lent to --decompress --stdout except that the decompressed data >- is discarded instead of being written to standard output. No >+ Test the integrity of compressed files. This option is equiva- >+ lent to --decompress --stdout except that the decompressed data >+ is discarded instead of being written to standard output. No > files are created or removed. > > -l, --list >- Print information about compressed files. No uncompressed out- >- put is produced, and no files are created or removed. In list >- mode, the program cannot read the compressed data from standard >+ Print information about compressed files. No uncompressed out- >+ put is produced, and no files are created or removed. In list >+ mode, the program cannot read the compressed data from standard > input or from other unseekable sources. > >- The default listing shows basic information about files, one >- file per line. To get more detailed information, use also the >- --verbose option. For even more information, use --verbose >- twice, but note that this may be slow, because getting all the >- extra information requires many seeks. The width of verbose >- output exceeds 80 characters, so piping the output to e.g. >- less -S may be convenient if the terminal isn't wide enough. >+ The default listing shows basic information about files, one >+ file per line. To get more detailed information, use also the >+ --verbose option. For even more information, use --verbose >+ twice, but note that this may be slow, because getting all the >+ extra information requires many seeks. The width of verbose >+ output exceeds 80 characters, so piping the output to, for exam- >+ ple, less -S may be convenient if the terminal isn't wide >+ enough. > > The exact output may vary between xz versions and different lo- > cales. For machine-readable output, --robot --list should be >@@ -191,25 +193,32 @@ > -k, --keep > Don't delete the input files. > >+ Since xz 5.2.6, this option also makes xz compress or decompress >+ even if the input is a symbolic link to a regular file, has more >+ than one hard link, or has the setuid, setgid, or sticky bit >+ set. The setuid, setgid, and sticky bits are not copied to the >+ target file. In earlier versions this was only done with >+ --force. >+ > -f, --force > This option has several effects: > > o If the target file already exists, delete it before compress- > ing or decompressing. > >- o Compress or decompress even if the input is a symbolic link >- to a regular file, has more than one hard link, or has the >- setuid, setgid, or sticky bit set. The setuid, setgid, and >+ o Compress or decompress even if the input is a symbolic link >+ to a regular file, has more than one hard link, or has the >+ setuid, setgid, or sticky bit set. The setuid, setgid, and > sticky bits are not copied to the target file. > >- o When used with --decompress --stdout and xz cannot recognize >- the type of the source file, copy the source file as is to >- standard output. This allows xzcat --force to be used like >+ o When used with --decompress --stdout and xz cannot recognize >+ the type of the source file, copy the source file as is to >+ standard output. This allows xzcat --force to be used like > cat(1) for files that have not been compressed with xz. Note > that in future, xz might support new compressed file formats, >- which may make xz decompress more types of files instead of >- copying them as is to standard output. --format=format can >- be used to restrict xz to decompress only a single file for- >+ which may make xz decompress more types of files instead of >+ copying them as is to standard output. --format=format can >+ be used to restrict xz to decompress only a single file for- > mat. > > -c, --stdout, --to-stdout >@@ -218,108 +227,124 @@ > > --single-stream > Decompress only the first .xz stream, and silently ignore possi- >- ble remaining input data following the stream. Normally such >+ ble remaining input data following the stream. Normally such > trailing garbage makes xz display an error. > >- xz never decompresses more than one stream from .lzma files or >- raw streams, but this option still makes xz ignore the possible >+ xz never decompresses more than one stream from .lzma files or >+ raw streams, but this option still makes xz ignore the possible > trailing data after the .lzma file or raw stream. > >- This option has no effect if the operation mode is not --decom- >+ This option has no effect if the operation mode is not --decom- > press or --test. > > --no-sparse >- Disable creation of sparse files. By default, if decompressing >+ Disable creation of sparse files. By default, if decompressing > into a regular file, xz tries to make the file sparse if the de- >- compressed data contains long sequences of binary zeros. It >- also works when writing to standard output as long as standard >- output is connected to a regular file and certain additional >- conditions are met to make it safe. Creating sparse files may >- save disk space and speed up the decompression by reducing the >+ compressed data contains long sequences of binary zeros. It >+ also works when writing to standard output as long as standard >+ output is connected to a regular file and certain additional >+ conditions are met to make it safe. Creating sparse files may >+ save disk space and speed up the decompression by reducing the > amount of disk I/O. > > -S .suf, --suffix=.suf > When compressing, use .suf as the suffix for the target file in- >- stead of .xz or .lzma. If not writing to standard output and >- the source file already has the suffix .suf, a warning is dis- >+ stead of .xz or .lzma. If not writing to standard output and >+ the source file already has the suffix .suf, a warning is dis- > played and the file is skipped. > >- When decompressing, recognize files with the suffix .suf in ad- >- dition to files with the .xz, .txz, .lzma, or .tlz suffix. If >- the source file has the suffix .suf, the suffix is removed to >+ When decompressing, recognize files with the suffix .suf in ad- >+ dition to files with the .xz, .txz, .lzma, .tlz, or .lz suffix. >+ If the source file has the suffix .suf, the suffix is removed to > get the target filename. > >- When compressing or decompressing raw streams (--format=raw), >- the suffix must always be specified unless writing to standard >+ When compressing or decompressing raw streams (--format=raw), >+ the suffix must always be specified unless writing to standard > output, because there is no default suffix for raw streams. > > --files[=file] >- Read the filenames to process from file; if file is omitted, >- filenames are read from standard input. Filenames must be ter- >- minated with the newline character. A dash (-) is taken as a >- regular filename; it doesn't mean standard input. If filenames >+ Read the filenames to process from file; if file is omitted, >+ filenames are read from standard input. Filenames must be ter- >+ minated with the newline character. A dash (-) is taken as a >+ regular filename; it doesn't mean standard input. If filenames > are given also as command line arguments, they are processed be- > fore the filenames read from file. > > --files0[=file] >- This is identical to --files[=file] except that each filename >+ This is identical to --files[=file] except that each filename > must be terminated with the null character. > > Basic file format and compression options > -F format, --format=format > Specify the file format to compress or decompress: > >- auto This is the default. When compressing, auto is equiva- >- lent to xz. When decompressing, the format of the input >- file is automatically detected. Note that raw streams >+ auto This is the default. When compressing, auto is equiva- >+ lent to xz. When decompressing, the format of the input >+ file is automatically detected. Note that raw streams > (created with --format=raw) cannot be auto-detected. > > xz Compress to the .xz file format, or accept only .xz files > when decompressing. > > lzma, alone >- Compress to the legacy .lzma file format, or accept only >- .lzma files when decompressing. The alternative name >- alone is provided for backwards compatibility with LZMA >+ Compress to the legacy .lzma file format, or accept only >+ .lzma files when decompressing. The alternative name >+ alone is provided for backwards compatibility with LZMA > Utils. > >- raw Compress or uncompress a raw stream (no headers). This >+ lzip Accept only .lz files when decompressing. Compression is >+ not supported. >+ >+ The .lz format version 0 and the unextended version 1 are >+ supported. Version 0 files were produced by lzip 1.3 and >+ older. Such files aren't common but may be found from >+ file archives as a few source packages were released in >+ this format. People might have old personal files in >+ this format too. Decompression support for the format >+ version 0 was removed in lzip 1.18. >+ >+ lzip 1.4 and later create files in the format version 1. >+ The sync flush marker extension to the format version 1 >+ was added in lzip 1.6. This extension is rarely used and >+ isn't supported by xz (diagnosed as corrupt input). >+ >+ raw Compress or uncompress a raw stream (no headers). This > is meant for advanced users only. To decode raw streams, > you need use --format=raw and explicitly specify the fil- >- ter chain, which normally would have been stored in the >+ ter chain, which normally would have been stored in the > container headers. > > -C check, --check=check >- Specify the type of the integrity check. The check is calcu- >- lated from the uncompressed data and stored in the .xz file. >- This option has an effect only when compressing into the .xz >- format; the .lzma format doesn't support integrity checks. The >+ Specify the type of the integrity check. The check is calcu- >+ lated from the uncompressed data and stored in the .xz file. >+ This option has an effect only when compressing into the .xz >+ format; the .lzma format doesn't support integrity checks. The > integrity check (if any) is verified when the .xz file is decom- > pressed. > > Supported check types: > >- none Don't calculate an integrity check at all. This is usu- >- ally a bad idea. This can be useful when integrity of >+ none Don't calculate an integrity check at all. This is usu- >+ ally a bad idea. This can be useful when integrity of > the data is verified by other means anyway. > >- crc32 Calculate CRC32 using the polynomial from IEEE-802.3 >+ crc32 Calculate CRC32 using the polynomial from IEEE-802.3 > (Ethernet). > > crc64 Calculate CRC64 using the polynomial from ECMA-182. This > is the default, since it is slightly better than CRC32 at >- detecting damaged files and the speed difference is neg- >+ detecting damaged files and the speed difference is neg- > ligible. > >- sha256 Calculate SHA-256. This is somewhat slower than CRC32 >+ sha256 Calculate SHA-256. This is somewhat slower than CRC32 > and CRC64. > >- Integrity of the .xz headers is always verified with CRC32. It >+ Integrity of the .xz headers is always verified with CRC32. It > is not possible to change or disable it. > > --ignore-check > Don't verify the integrity check of the compressed data when de- >- compressing. The CRC32 values in the .xz headers will still be >+ compressing. The CRC32 values in the .xz headers will still be > verified normally. > > Do not use this option unless you know what you are doing. Pos- >@@ -327,50 +352,50 @@ > > o Trying to recover data from a corrupt .xz file. > >- o Speeding up decompression. This matters mostly with SHA-256 >+ o Speeding up decompression. This matters mostly with SHA-256 > or with files that have compressed extremely well. It's rec- >- ommended to not use this option for this purpose unless the >+ ommended to not use this option for this purpose unless the > file integrity is verified externally in some other way. > > -0 ... -9 >- Select a compression preset level. The default is -6. If mul- >- tiple preset levels are specified, the last one takes effect. >- If a custom filter chain was already specified, setting a com- >+ Select a compression preset level. The default is -6. If mul- >+ tiple preset levels are specified, the last one takes effect. >+ If a custom filter chain was already specified, setting a com- > pression preset level clears the custom filter chain. > >- The differences between the presets are more significant than >- with gzip(1) and bzip2(1). The selected compression settings >- determine the memory requirements of the decompressor, thus us- >- ing a too high preset level might make it painful to decompress >- the file on an old system with little RAM. Specifically, it's >- not a good idea to blindly use -9 for everything like it often >+ The differences between the presets are more significant than >+ with gzip(1) and bzip2(1). The selected compression settings >+ determine the memory requirements of the decompressor, thus us- >+ ing a too high preset level might make it painful to decompress >+ the file on an old system with little RAM. Specifically, it's >+ not a good idea to blindly use -9 for everything like it often > is with gzip(1) and bzip2(1). > > -0 ... -3 >- These are somewhat fast presets. -0 is sometimes faster >- than gzip -9 while compressing much better. The higher >- ones often have speed comparable to bzip2(1) with compa- >- rable or better compression ratio, although the results >+ These are somewhat fast presets. -0 is sometimes faster >+ than gzip -9 while compressing much better. The higher >+ ones often have speed comparable to bzip2(1) with compa- >+ rable or better compression ratio, although the results > depend a lot on the type of data being compressed. > > -4 ... -6 >- Good to very good compression while keeping decompressor >- memory usage reasonable even for old systems. -6 is the >- default, which is usually a good choice e.g. for dis- >- tributing files that need to be decompressible even on >- systems with only 16 MiB RAM. (-5e or -6e may be worth >- considering too. See --extreme.) >+ Good to very good compression while keeping decompressor >+ memory usage reasonable even for old systems. -6 is the >+ default, which is usually a good choice for distributing >+ files that need to be decompressible even on systems with >+ only 16 MiB RAM. (-5e or -6e may be worth considering >+ too. See --extreme.) > > -7 ... -9 >- These are like -6 but with higher compressor and decom- >- pressor memory requirements. These are useful only when >- compressing files bigger than 8 MiB, 16 MiB, and 32 MiB, >+ These are like -6 but with higher compressor and decom- >+ pressor memory requirements. These are useful only when >+ compressing files bigger than 8 MiB, 16 MiB, and 32 MiB, > respectively. > > On the same hardware, the decompression speed is approximately a >- constant number of bytes of compressed data per second. In >- other words, the better the compression, the faster the decom- >- pression will usually be. This also means that the amount of >+ constant number of bytes of compressed data per second. In >+ other words, the better the compression, the faster the decom- >+ pression will usually be. This also means that the amount of > uncompressed output produced per second can vary a lot. > > The following table summarises the features of the presets: >@@ -390,40 +415,40 @@ > Column descriptions: > > o DictSize is the LZMA2 dictionary size. It is waste of memory >- to use a dictionary bigger than the size of the uncompressed >- file. This is why it is good to avoid using the presets -7 >- ... -9 when there's no real need for them. At -6 and lower, >+ to use a dictionary bigger than the size of the uncompressed >+ file. This is why it is good to avoid using the presets -7 >+ ... -9 when there's no real need for them. At -6 and lower, > the amount of memory wasted is usually low enough to not mat- > ter. > >- o CompCPU is a simplified representation of the LZMA2 settings >- that affect compression speed. The dictionary size affects >+ o CompCPU is a simplified representation of the LZMA2 settings >+ that affect compression speed. The dictionary size affects > speed too, so while CompCPU is the same for levels -6 ... -9, >- higher levels still tend to be a little slower. To get even >+ higher levels still tend to be a little slower. To get even > slower and thus possibly better compression, see --extreme. > >- o CompMem contains the compressor memory requirements in the >- single-threaded mode. It may vary slightly between xz ver- >- sions. Memory requirements of some of the future multi- >- threaded modes may be dramatically higher than that of the >+ o CompMem contains the compressor memory requirements in the >+ single-threaded mode. It may vary slightly between xz ver- >+ sions. Memory requirements of some of the future multi- >+ threaded modes may be dramatically higher than that of the > single-threaded mode. > >- o DecMem contains the decompressor memory requirements. That >- is, the compression settings determine the memory require- >+ o DecMem contains the decompressor memory requirements. That >+ is, the compression settings determine the memory require- > ments of the decompressor. The exact decompressor memory us- >- age is slightly more than the LZMA2 dictionary size, but the >- values in the table have been rounded up to the next full >+ age is slightly more than the LZMA2 dictionary size, but the >+ values in the table have been rounded up to the next full > MiB. > > -e, --extreme >- Use a slower variant of the selected compression preset level >+ Use a slower variant of the selected compression preset level > (-0 ... -9) to hopefully get a little bit better compression ra- >- tio, but with bad luck this can also make it worse. Decompres- >- sor memory usage is not affected, but compressor memory usage >+ tio, but with bad luck this can also make it worse. Decompres- >+ sor memory usage is not affected, but compressor memory usage > increases a little at preset levels -0 ... -3. > >- Since there are two presets with dictionary sizes 4 MiB and >- 8 MiB, the presets -3e and -5e use slightly faster settings >+ Since there are two presets with dictionary sizes 4 MiB and >+ 8 MiB, the presets -3e and -5e use slightly faster settings > (lower CompCPU) than -4e and -6e, respectively. That way no two > presets are identical. > >@@ -439,100 +464,109 @@ > -8e 32 MiB 8 370 MiB 33 MiB > -9e 64 MiB 8 674 MiB 65 MiB > >- For example, there are a total of four presets that use 8 MiB >- dictionary, whose order from the fastest to the slowest is -5, >+ For example, there are a total of four presets that use 8 MiB >+ dictionary, whose order from the fastest to the slowest is -5, > -6, -5e, and -6e. > > --fast >- --best These are somewhat misleading aliases for -0 and -9, respec- >- tively. These are provided only for backwards compatibility >+ --best These are somewhat misleading aliases for -0 and -9, respec- >+ tively. These are provided only for backwards compatibility > with LZMA Utils. Avoid using these options. > > --block-size=size >- When compressing to the .xz format, split the input data into >- blocks of size bytes. The blocks are compressed independently >+ When compressing to the .xz format, split the input data into >+ blocks of size bytes. The blocks are compressed independently > from each other, which helps with multi-threading and makes lim- > ited random-access decompression possible. This option is typi- >- cally used to override the default block size in multi-threaded >+ cally used to override the default block size in multi-threaded > mode, but this option can be used in single-threaded mode too. > >- In multi-threaded mode about three times size bytes will be al- >- located in each thread for buffering input and output. The de- >- fault size is three times the LZMA2 dictionary size or 1 MiB, >+ In multi-threaded mode about three times size bytes will be al- >+ located in each thread for buffering input and output. The de- >+ fault size is three times the LZMA2 dictionary size or 1 MiB, > whichever is more. Typically a good value is 2-4 times the size > of the LZMA2 dictionary or at least 1 MiB. Using size less than > the LZMA2 dictionary size is waste of RAM because then the LZMA2 >- dictionary buffer will never get fully used. The sizes of the >- blocks are stored in the block headers, which a future version >+ dictionary buffer will never get fully used. The sizes of the >+ blocks are stored in the block headers, which a future version > of xz will use for multi-threaded decompression. > >- In single-threaded mode no block splitting is done by default. >+ In single-threaded mode no block splitting is done by default. > Setting this option doesn't affect memory usage. No size infor- > mation is stored in block headers, thus files created in single- >- threaded mode won't be identical to files created in multi- >- threaded mode. The lack of size information also means that a >- future version of xz won't be able decompress the files in >+ threaded mode won't be identical to files created in multi- >+ threaded mode. The lack of size information also means that a >+ future version of xz won't be able decompress the files in > multi-threaded mode. > > --block-list=sizes >- When compressing to the .xz format, start a new block after the >+ When compressing to the .xz format, start a new block after the > given intervals of uncompressed data. > >- The uncompressed sizes of the blocks are specified as a comma- >- separated list. Omitting a size (two or more consecutive com- >+ The uncompressed sizes of the blocks are specified as a comma- >+ separated list. Omitting a size (two or more consecutive com- > mas) is a shorthand to use the size of the previous block. > >- If the input file is bigger than the sum of sizes, the last >+ If the input file is bigger than the sum of sizes, the last > value in sizes is repeated until the end of the file. A special >- value of 0 may be used as the last value to indicate that the >+ value of 0 may be used as the last value to indicate that the > rest of the file should be encoded as a single block. > > If one specifies sizes that exceed the encoder's block size (ei- >- ther the default value in threaded mode or the value specified >- with --block-size=size), the encoder will create additional >+ ther the default value in threaded mode or the value specified >+ with --block-size=size), the encoder will create additional > blocks while keeping the boundaries specified in sizes. For ex- >- ample, if one specifies --block-size=10MiB >- --block-list=5MiB,10MiB,8MiB,12MiB,24MiB and the input file is >- 80 MiB, one will get 11 blocks: 5, 10, 8, 10, 2, 10, 10, 4, 10, >+ ample, if one specifies --block-size=10MiB >+ --block-list=5MiB,10MiB,8MiB,12MiB,24MiB and the input file is >+ 80 MiB, one will get 11 blocks: 5, 10, 8, 10, 2, 10, 10, 4, 10, > 10, and 1 MiB. > > In multi-threaded mode the sizes of the blocks are stored in the >- block headers. This isn't done in single-threaded mode, so the >- encoded output won't be identical to that of the multi-threaded >+ block headers. This isn't done in single-threaded mode, so the >+ encoded output won't be identical to that of the multi-threaded > mode. > > --flush-timeout=timeout >- When compressing, if more than timeout milliseconds (a positive >- integer) has passed since the previous flush and reading more >- input would block, all the pending input data is flushed from >- the encoder and made available in the output stream. This can >+ When compressing, if more than timeout milliseconds (a positive >+ integer) has passed since the previous flush and reading more >+ input would block, all the pending input data is flushed from >+ the encoder and made available in the output stream. This can > be useful if xz is used to compress data that is streamed over a >- network. Small timeout values make the data available at the >- receiving end with a small delay, but large timeout values give >+ network. Small timeout values make the data available at the >+ receiving end with a small delay, but large timeout values give > better compression ratio. > >- This feature is disabled by default. If this option is speci- >- fied more than once, the last one takes effect. The special >- timeout value of 0 can be used to explicitly disable this fea- >+ This feature is disabled by default. If this option is speci- >+ fied more than once, the last one takes effect. The special >+ timeout value of 0 can be used to explicitly disable this fea- > ture. > > This feature is not available on non-POSIX systems. > >- This feature is still experimental. Currently xz is unsuitable >- for decompressing the stream in real time due to how xz does >+ This feature is still experimental. Currently xz is unsuitable >+ for decompressing the stream in real time due to how xz does > buffering. > > --memlimit-compress=limit >- Set a memory usage limit for compression. If this option is >+ Set a memory usage limit for compression. If this option is > specified multiple times, the last one takes effect. > >- If the compression settings exceed the limit, xz will adjust the >- settings downwards so that the limit is no longer exceeded and >- display a notice that automatic adjustment was done. Such ad- >- justments are not made when compressing with --format=raw or if >- --no-adjust has been specified. In those cases, an error is >- displayed and xz will exit with exit status 1. >+ If the compression settings exceed the limit, xz will attempt to >+ adjust the settings downwards so that the limit is no longer ex- >+ ceeded and display a notice that automatic adjustment was done. >+ The adjustments are done in this order: reducing the number of >+ threads, switching to single-threaded mode if even one thread in >+ multi-threaded mode exceeds the limit, and finally reducing the >+ LZMA2 dictionary size. > >+ When compressing with --format=raw or if --no-adjust has been >+ specified, only the number of threads may be reduced since it >+ can be done without affecting the compressed output. >+ >+ If the limit cannot be met even with the adjustments described >+ above, an error is displayed and xz will exit with exit status >+ 1. >+ > The limit can be specified in multiple ways: > > o The limit can be an absolute value in bytes. Using an inte- >@@ -548,17 +582,15 @@ > > o The limit can be reset back to its default value by setting > it to 0. This is currently equivalent to setting the limit >- to max (no memory usage limit). Once multithreading support >- has been implemented, there may be a difference between 0 and >- max for the multithreaded case, so it is recommended to use 0 >- instead of max until the details have been decided. >+ to max (no memory usage limit). > >- For 32-bit xz there is a special case: if the limit would be >- over 4020 MiB, the limit is set to 4020 MiB. (The values 0 and >- max aren't affected by this. A similar feature doesn't exist >- for decompression.) This can be helpful when a 32-bit exe- >- cutable has access to 4 GiB address space while hopefully doing >- no harm in other situations. >+ For 32-bit xz there is a special case: if the limit would be >+ over 4020 MiB, the limit is set to 4020 MiB. On MIPS32 2000 MiB >+ is used instead. (The values 0 and max aren't affected by this. >+ A similar feature doesn't exist for decompression.) This can be >+ helpful when a 32-bit executable has access to 4 GiB address >+ space (2 GiB on MIPS32) while hopefully doing no harm in other >+ situations. > > See also the section Memory usage. > >@@ -569,35 +601,96 @@ > the file will fail. See --memlimit-compress=limit for possible > ways to specify the limit. > >+ --memlimit-mt-decompress=limit >+ Set a memory usage limit for multi-threaded decompression. This >+ can only affect the number of threads; this will never make xz >+ refuse to decompress a file. If limit is too low to allow any >+ multi-threading, the limit is ignored and xz will continue in >+ single-threaded mode. Note that if also --memlimit-decompress >+ is used, it will always apply to both single-threaded and multi- >+ threaded modes, and so the effective limit for multi-threading >+ will never be higher than the limit set with --memlimit-decom- >+ press. >+ >+ In contrast to the other memory usage limit options, --mem- >+ limit-mt-decompress=limit has a system-specific default limit. >+ xz --info-memory can be used to see the current value. >+ >+ This option and its default value exist because without any >+ limit the threaded decompressor could end up allocating an in- >+ sane amount of memory with some input files. If the default >+ limit is too low on your system, feel free to increase the limit >+ but never set it to a value larger than the amount of usable RAM >+ as with appropriate input files xz will attempt to use that >+ amount of memory even with a low number of threads. Running out >+ of memory or swapping will not improve decompression perfor- >+ mance. >+ >+ See --memlimit-compress=limit for possible ways to specify the >+ limit. Setting limit to 0 resets the limit to the default sys- >+ tem-specific value. >+ >+ >+ > -M limit, --memlimit=limit, --memory=limit > This is equivalent to specifying --memlimit-compress=limit >- --memlimit-decompress=limit. >+ --memlimit-decompress=limit --memlimit-mt-decompress=limit. > > --no-adjust >- Display an error and exit if the compression settings exceed the >- memory usage limit. The default is to adjust the settings down- >- wards so that the memory usage limit is not exceeded. Automatic >- adjusting is always disabled when creating raw streams (--for- >- mat=raw). >+ Display an error and exit if the memory usage limit cannot be >+ met without adjusting settings that affect the compressed out- >+ put. That is, this prevents xz from switching the encoder from >+ multi-threaded mode to single-threaded mode and from reducing >+ the LZMA2 dictionary size. Even when this option is used the >+ number of threads may be reduced to meet the memory usage limit >+ as that won't affect the compressed output. > >+ Automatic adjusting is always disabled when creating raw streams >+ (--format=raw). >+ > -T threads, --threads=threads > Specify the number of worker threads to use. Setting threads to >- a special value 0 makes xz use as many threads as there are CPU >- cores on the system. The actual number of threads can be less >- than threads if the input file is not big enough for threading >- with the given settings or if using more threads would exceed >- the memory usage limit. >+ a special value 0 makes xz use up to as many threads as the pro- >+ cessor(s) on the system support. The actual number of threads >+ can be fewer than threads if the input file is not big enough >+ for threading with the given settings or if using more threads >+ would exceed the memory usage limit. > >+ The single-threaded and multi-threaded compressors produce dif- >+ ferent output. Single-threaded compressor will give the small- >+ est file size but only the output from the multi-threaded com- >+ pressor can be decompressed using multiple threads. Setting >+ threads to 1 will use the single-threaded mode. Setting threads >+ to any other value, including 0, will use the multi-threaded >+ compressor even if the system supports only one hardware thread. >+ (xz 5.2.x used single-threaded mode in this situation.) >+ >+ To use multi-threaded mode with only one thread, set threads to >+ +1. The + prefix has no effect with values other than 1. A >+ memory usage limit can still make xz switch to single-threaded >+ mode unless --no-adjust is used. Support for the + prefix was >+ added in xz 5.4.0. >+ >+ If an automatic number of threads has been requested and no mem- >+ ory usage limit has been specified, then a system-specific de- >+ fault soft limit will be used to possibly limit the number of >+ threads. It is a soft limit in sense that it is ignored if the >+ number of threads becomes one, thus a soft limit will never stop >+ xz from compressing or decompressing. This default soft limit >+ will not make xz switch from multi-threaded mode to single- >+ threaded mode. The active limits can be seen with xz >+ --info-memory. >+ > Currently the only threading method is to split the input into > blocks and compress them independently from each other. The de- > fault block size depends on the compression level and can be > overridden with the --block-size=size option. > >- Threaded decompression hasn't been implemented yet. It will >- only work on files that contain multiple blocks with size infor- >- mation in block headers. All files compressed in multi-threaded >- mode meet this condition, but files compressed in single- >- threaded mode don't even if --block-size=size is used. >+ Threaded decompression only works on files that contain multiple >+ blocks with size information in block headers. All large enough >+ files compressed in multi-threaded mode meet this condition, but >+ files compressed in single-threaded mode don't even if >+ --block-size=size has been used. > > Custom compressor filter chains > A custom filter chain allows specifying the compression settings in de- >@@ -695,19 +788,19 @@ > > The literal coding makes an assumption that the highest > lc bits of the previous uncompressed byte correlate with >- the next byte. E.g. in typical English text, an upper- >- case letter is often followed by a lower-case letter, and >- a lower-case letter is usually followed by another lower- >- case letter. In the US-ASCII character set, the highest >- three bits are 010 for upper-case letters and 011 for >- lower-case letters. When lc is at least 3, the literal >- coding can take advantage of this property in the uncom- >- pressed data. >+ the next byte. For example, in typical English text, an >+ upper-case letter is often followed by a lower-case let- >+ ter, and a lower-case letter is usually followed by an- >+ other lower-case letter. In the US-ASCII character set, >+ the highest three bits are 010 for upper-case letters and >+ 011 for lower-case letters. When lc is at least 3, the >+ literal coding can take advantage of this property in the >+ uncompressed data. > > The default value (3) is usually good. If you want maxi- > mum compression, test lc=4. Sometimes it helps a little, > and sometimes it makes compression worse. If it makes it >- worse, test e.g. lc=2 too. >+ worse, test lc=2 too. > > lp=lp Specify the number of literal position bits. The minimum > is 0 and the maximum is 4; the default is 0. >@@ -724,12 +817,12 @@ > alignment (2^pb=2^2=4), which is often a good choice when > there's no better guess. > >- When the aligment is known, setting pb accordingly may >- reduce the file size a little. E.g. with text files hav- >- ing one-byte alignment (US-ASCII, ISO-8859-*, UTF-8), >- setting pb=0 can improve compression slightly. For >- UTF-16 text, pb=1 is a good choice. If the alignment is >- an odd number like 3 bytes, pb=0 might be the best >+ When the alignment is known, setting pb accordingly may >+ reduce the file size a little. For example, with text >+ files having one-byte alignment (US-ASCII, ISO-8859-*, >+ UTF-8), setting pb=0 can improve compression slightly. >+ For UTF-16 text, pb=1 is a good choice. If the alignment >+ is an odd number like 3 bytes, pb=0 might be the best > choice. > > Even though the assumed alignment can be adjusted with pb >@@ -811,10 +904,11 @@ > dictionary size. LZMA1 needs also lc, lp, and pb. > > --x86[=options] >- --powerpc[=options] >- --ia64[=options] > --arm[=options] > --armthumb[=options] >+ --arm64[=options] >+ --powerpc[=options] >+ --ia64[=options] > --sparc[=options] > Add a branch/call/jump (BCJ) filter to the filter chain. These > filters can be used only as a non-last filter in the filter >@@ -822,89 +916,77 @@ > > A BCJ filter converts relative addresses in the machine code to > their absolute counterparts. This doesn't change the size of >- the data, but it increases redundancy, which can help LZMA2 to >+ the data but it increases redundancy, which can help LZMA2 to > produce 0-15 % smaller .xz file. The BCJ filters are always re- > versible, so using a BCJ filter for wrong type of data doesn't > cause any data loss, although it may make the compression ratio >- slightly worse. >+ slightly worse. The BCJ filters are very fast and use an in- >+ significant amount of memory. > >- It is fine to apply a BCJ filter on a whole executable; there's >- no need to apply it only on the executable section. Applying a >- BCJ filter on an archive that contains both executable and non- >- executable files may or may not give good results, so it gener- >- ally isn't good to blindly apply a BCJ filter when compressing >- binary packages for distribution. >- >- These BCJ filters are very fast and use insignificant amount of >- memory. If a BCJ filter improves compression ratio of a file, >- it can improve decompression speed at the same time. This is >- because, on the same hardware, the decompression speed of LZMA2 >- is roughly a fixed number of bytes of compressed data per sec- >- ond. >- > These BCJ filters have known problems related to the compression > ratio: > >- o Some types of files containing executable code (e.g. object >- files, static libraries, and Linux kernel modules) have the >- addresses in the instructions filled with filler values. >- These BCJ filters will still do the address conversion, which >- will make the compression worse with these files. >+ o Some types of files containing executable code (for example, >+ object files, static libraries, and Linux kernel modules) >+ have the addresses in the instructions filled with filler >+ values. These BCJ filters will still do the address conver- >+ sion, which will make the compression worse with these files. > >- o Applying a BCJ filter on an archive containing multiple simi- >- lar executables can make the compression ratio worse than not >- using a BCJ filter. This is because the BCJ filter doesn't >- detect the boundaries of the executable files, and doesn't >- reset the address conversion counter for each executable. >+ o If a BCJ filter is applied on an archive, it is possible that >+ it makes the compression ratio worse than not using a BCJ >+ filter. For example, if there are similar or even identical >+ executables then filtering will likely make the files less >+ similar and thus compression is worse. The contents of non- >+ executable files in the same archive can matter too. In >+ practice one has to try with and without a BCJ filter to see >+ which is better in each situation. > >- Both of the above problems will be fixed in the future in a new >- filter. The old BCJ filters will still be useful in embedded >- systems, because the decoder of the new filter will be bigger >- and use more memory. >+ Different instruction sets have different alignment: the exe- >+ cutable file must be aligned to a multiple of this value in the >+ input data to make the filter work. > >- Different instruction sets have different alignment: >- > Filter Alignment Notes > x86 1 32-bit or 64-bit x86 >+ ARM 4 >+ ARM-Thumb 2 >+ ARM64 4 4096-byte alignment is best > PowerPC 4 Big endian only >- ARM 4 Little endian only >- ARM-Thumb 2 Little endian only >- IA-64 16 Big or little endian >- SPARC 4 Big or little endian >+ IA-64 16 Itanium >+ SPARC 4 > >- Since the BCJ-filtered data is usually compressed with LZMA2, >- the compression ratio may be improved slightly if the LZMA2 op- >+ Since the BCJ-filtered data is usually compressed with LZMA2, >+ the compression ratio may be improved slightly if the LZMA2 op- > tions are set to match the alignment of the selected BCJ filter. >- For example, with the IA-64 filter, it's good to set pb=4 with >- LZMA2 (2^4=16). The x86 filter is an exception; it's usually >- good to stick to LZMA2's default four-byte alignment when com- >- pressing x86 executables. >+ For example, with the IA-64 filter, it's good to set pb=4 or >+ even pb=4,lp=4,lc=0 with LZMA2 (2^4=16). The x86 filter is an >+ exception; it's usually good to stick to LZMA2's default four- >+ byte alignment when compressing x86 executables. > > All BCJ filters support the same options: > > start=offset > Specify the start offset that is used when converting be- >- tween relative and absolute addresses. The offset must >+ tween relative and absolute addresses. The offset must > be a multiple of the alignment of the filter (see the ta- >- ble above). The default is zero. In practice, the de- >+ ble above). The default is zero. In practice, the de- > fault is good; specifying a custom offset is almost never > useful. > > --delta[=options] >- Add the Delta filter to the filter chain. The Delta filter can >+ Add the Delta filter to the filter chain. The Delta filter can > be only used as a non-last filter in the filter chain. > >- Currently only simple byte-wise delta calculation is supported. >- It can be useful when compressing e.g. uncompressed bitmap im- >- ages or uncompressed PCM audio. However, special purpose algo- >- rithms may give significantly better results than Delta + LZMA2. >- This is true especially with audio, which compresses faster and >- better e.g. with flac(1). >+ Currently only simple byte-wise delta calculation is supported. >+ It can be useful when compressing, for example, uncompressed >+ bitmap images or uncompressed PCM audio. However, special pur- >+ pose algorithms may give significantly better results than Delta >+ + LZMA2. This is true especially with audio, which compresses >+ faster and better, for example, with flac(1). > > Supported options: > > dist=distance >- Specify the distance of the delta calculation in bytes. >+ Specify the distance of the delta calculation in bytes. > distance must be 1-256. The default is 1. > > For example, with dist=2 and eight-byte input A1 B1 A2 B3 >@@ -912,52 +994,53 @@ > > Other options > -q, --quiet >- Suppress warnings and notices. Specify this twice to suppress >+ Suppress warnings and notices. Specify this twice to suppress > errors too. This option has no effect on the exit status. That >- is, even if a warning was suppressed, the exit status to indi- >+ is, even if a warning was suppressed, the exit status to indi- > cate a warning is still used. > > -v, --verbose >- Be verbose. If standard error is connected to a terminal, xz >- will display a progress indicator. Specifying --verbose twice >+ Be verbose. If standard error is connected to a terminal, xz >+ will display a progress indicator. Specifying --verbose twice > will give even more verbose output. > > The progress indicator shows the following information: > >- o Completion percentage is shown if the size of the input file >+ o Completion percentage is shown if the size of the input file > is known. That is, the percentage cannot be shown in pipes. > >- o Amount of compressed data produced (compressing) or consumed >+ o Amount of compressed data produced (compressing) or consumed > (decompressing). > >- o Amount of uncompressed data consumed (compressing) or pro- >+ o Amount of uncompressed data consumed (compressing) or pro- > duced (decompressing). > > o Compression ratio, which is calculated by dividing the amount >- of compressed data processed so far by the amount of uncom- >+ of compressed data processed so far by the amount of uncom- > pressed data processed so far. > >- o Compression or decompression speed. This is measured as the >- amount of uncompressed data consumed (compression) or pro- >- duced (decompression) per second. It is shown after a few >+ o Compression or decompression speed. This is measured as the >+ amount of uncompressed data consumed (compression) or pro- >+ duced (decompression) per second. It is shown after a few > seconds have passed since xz started processing the file. > > o Elapsed time in the format M:SS or H:MM:SS. > >- o Estimated remaining time is shown only when the size of the >- input file is known and a couple of seconds have already >- passed since xz started processing the file. The time is >- shown in a less precise format which never has any colons, >- e.g. 2 min 30 s. >+ o Estimated remaining time is shown only when the size of the >+ input file is known and a couple of seconds have already >+ passed since xz started processing the file. The time is >+ shown in a less precise format which never has any colons, >+ for example, 2 min 30 s. > >- When standard error is not a terminal, --verbose will make xz >+ When standard error is not a terminal, --verbose will make xz > print the filename, compressed size, uncompressed size, compres- >- sion ratio, and possibly also the speed and elapsed time on a >+ sion ratio, and possibly also the speed and elapsed time on a > single line to standard error after compressing or decompressing > the file. The speed and elapsed time are included only when the >- operation took at least a few seconds. If the operation didn't >- finish, e.g. due to user interruption, also the completion per- >- centage is printed if the size of the input file is known. >+ operation took at least a few seconds. If the operation didn't >+ finish, for example, due to user interruption, also the comple- >+ tion percentage is printed if the size of the input file is >+ known. > > -Q, --no-warn > Don't set the exit status to 2 even if a condition worth a warn- >@@ -974,26 +1057,27 @@ > > --info-memory > Display, in human-readable format, how much physical memory >- (RAM) xz thinks the system has and the memory usage limits for >- compression and decompression, and exit successfully. >+ (RAM) and how many processor threads xz thinks the system has >+ and the memory usage limits for compression and decompression, >+ and exit successfully. > > -h, --help >- Display a help message describing the most commonly used op- >+ Display a help message describing the most commonly used op- > tions, and exit successfully. > > -H, --long-help >- Display a help message describing all features of xz, and exit >+ Display a help message describing all features of xz, and exit > successfully > > -V, --version >- Display the version number of xz and liblzma in human readable >- format. To get machine-parsable output, specify --robot before >+ Display the version number of xz and liblzma in human readable >+ format. To get machine-parsable output, specify --robot before > --version. > > ROBOT MODE > The robot mode is activated with the --robot option. It makes the out- > put of xz easier to parse by other programs. Currently --robot is sup- >- ported only together with --version, --info-memory, and --list. It >+ ported only together with --version, --info-memory, and --list. It > will be supported for compression and decompression in the future. > > Version >@@ -1005,10 +1089,10 @@ > > X Major version. > >- YYY Minor version. Even numbers are stable. Odd numbers are alpha >+ YYY Minor version. Even numbers are stable. Odd numbers are alpha > or beta versions. > >- ZZZ Patch level for stable releases or just a counter for develop- >+ ZZZ Patch level for stable releases or just a counter for develop- > ment releases. > > S Stability. 0 is alpha, 1 is beta, and 2 is stable. S should be >@@ -1020,19 +1104,34 @@ > Examples: 4.999.9beta is 49990091 and 5.0.0 is 50000002. > > Memory limit information >- xz --robot --info-memory prints a single line with three tab-separated >+ xz --robot --info-memory prints a single line with three tab-separated > columns: > >- 1. Total amount of physical memory (RAM) in bytes >+ 1. Total amount of physical memory (RAM) in bytes. > >- 2. Memory usage limit for compression in bytes. A special value of >- zero indicates the default setting, which for single-threaded mode >- is the same as no limit. >+ 2. Memory usage limit for compression in bytes (--memlimit-compress). >+ A special value of 0 indicates the default setting which for sin- >+ gle-threaded mode is the same as no limit. > >- 3. Memory usage limit for decompression in bytes. A special value of >- zero indicates the default setting, which for single-threaded mode >- is the same as no limit. >+ 3. Memory usage limit for decompression in bytes (--memlimit-decom- >+ press). A special value of 0 indicates the default setting which >+ for single-threaded mode is the same as no limit. > >+ 4. Since xz 5.3.4alpha: Memory usage for multi-threaded decompression >+ in bytes (--memlimit-mt-decompress). This is never zero because a >+ system-specific default value shown in the column 5 is used if no >+ limit has been specified explicitly. This is also never greater >+ than the value in the column 3 even if a larger value has been >+ specified with --memlimit-mt-decompress. >+ >+ 5. Since xz 5.3.4alpha: A system-specific default memory usage limit >+ that is used to limit the number of threads when compressing with >+ an automatic number of threads (--threads=0) and no memory usage >+ limit has been specified (--memlimit-compress). This is also used >+ as the default value for --memlimit-mt-decompress. >+ >+ 6. Since xz 5.3.4alpha: Number of available processor threads. >+ > In the future, the output of xz --robot --info-memory may have more > columns, but never more than a single line. > >@@ -1069,7 +1168,7 @@ > 3. Total number of blocks in the stream(s) > 4. Compressed size of the file > 5. Uncompressed size of the file >- 6. Compression ratio, for example 0.123. If ratio is over >+ 6. Compression ratio, for example, 0.123. If ratio is over > 9.999, three dashes (---) are displayed instead of the ra- > tio. > 7. Comma-separated list of integrity check names. The follow- >@@ -1183,14 +1282,14 @@ > > XZ_OPT This is for passing options to xz when it is not possible to set > the options directly on the xz command line. This is the case >- e.g. when xz is run by a script or tool, e.g. GNU tar(1): >+ when xz is run by a script or tool, for example, GNU tar(1): > > XZ_OPT=-2v tar caf foo.tar.xz foo > >- Scripts may use XZ_OPT e.g. to set script-specific default com- >- pression options. It is still recommended to allow users to >- override XZ_OPT if that is reasonable, e.g. in sh(1) scripts one >- may use something like this: >+ Scripts may use XZ_OPT, for example, to set script-specific de- >+ fault compression options. It is still recommended to allow >+ users to override XZ_OPT if that is reasonable. For example, in >+ sh(1) scripts one may use something like this: > > XZ_OPT=${XZ_OPT-"-7e"} > export XZ_OPT >@@ -1244,8 +1343,8 @@ > LZMA Utils does that when compressing regular files. The alternative > is to mark that uncompressed size is unknown and use end-of-payload > marker to indicate where the decompressor should stop. LZMA Utils uses >- this method when uncompressed size isn't known, which is the case for >- example in pipes. >+ this method when uncompressed size isn't known, which is the case, for >+ example, in pipes. > > xz supports decompressing .lzma files with or without end-of-payload > marker, but all .lzma files created by xz will use end-of-payload >@@ -1327,8 +1426,8 @@ > xz -dk bar.xz > > Create baz.tar.xz with the preset -4e (-4 --extreme), which is slower >- than e.g. the default -6, but needs less memory for compression and de- >- compression (48 MiB and 5 MiB, respectively): >+ than the default -6, but needs less memory for compression and decom- >+ pression (48 MiB and 5 MiB, respectively): > > tar cf - baz | xz -4e > baz.tar.xz > >@@ -1392,6 +1491,7 @@ > > Preset CompCPU > -0 0 >+ > -1 1 > -2 2 > -3 3 >@@ -1401,10 +1501,10 @@ > -5e 7 > -6e 8 > >- If you know that a file requires somewhat big dictionary (e.g. 32 MiB) >- to compress well, but you want to compress it quicker than xz -8 would >- do, a preset with a low CompCPU value (e.g. 1) can be modified to use a >- bigger dictionary: >+ If you know that a file requires somewhat big dictionary (for example, >+ 32 MiB) to compress well, but you want to compress it quicker than xz >+ -8 would do, a preset with a low CompCPU value (for example, 1) can be >+ modified to use a bigger dictionary: > > xz --lzma2=preset=1,dict=32MiB foo.tar > >@@ -1431,27 +1531,27 @@ > files. > > Sometimes the compression time doesn't matter, but the decompressor >- memory usage has to be kept low e.g. to make it possible to decompress >- the file on an embedded system. The following command uses -6e (-6 >- --extreme) as a base and sets the dictionary to only 64 KiB. The re- >- sulting file can be decompressed with XZ Embedded (that's why there is >- --check=crc32) using about 100 KiB of memory. >+ memory usage has to be kept low, for example, to make it possible to >+ decompress the file on an embedded system. The following command uses >+ -6e (-6 --extreme) as a base and sets the dictionary to only 64 KiB. >+ The resulting file can be decompressed with XZ Embedded (that's why >+ there is --check=crc32) using about 100 KiB of memory. > > xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo > > If you want to squeeze out as many bytes as possible, adjusting the > number of literal context bits (lc) and number of position bits (pb) > can sometimes help. Adjusting the number of literal position bits (lp) >- might help too, but usually lc and pb are more important. E.g. a >- source code archive contains mostly US-ASCII text, so something like >+ might help too, but usually lc and pb are more important. For example, >+ a source code archive contains mostly US-ASCII text, so something like > the following might give slightly (like 0.1 %) smaller file than xz -6e > (try also without lc=4): > > xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar > > Using another filter together with LZMA2 can improve compression with >- certain file types. E.g. to compress a x86-32 or x86-64 shared library >- using the x86 BCJ filter: >+ certain file types. For example, to compress a x86-32 or x86-64 shared >+ library using the x86 BCJ filter: > > xz --x86 --lzma2 libfoo.so > >@@ -1464,17 +1564,17 @@ > images. It should usually beat PNG, which has a few more advanced fil- > ters than simple delta but uses Deflate for the actual compression. > >- The image has to be saved in uncompressed format, e.g. as uncompressed >- TIFF. The distance parameter of the Delta filter is set to match the >- number of bytes per pixel in the image. E.g. 24-bit RGB bitmap needs >- dist=3, and it is also good to pass pb=0 to LZMA2 to accommodate the >- three-byte alignment: >+ The image has to be saved in uncompressed format, for example, as un- >+ compressed TIFF. The distance parameter of the Delta filter is set to >+ match the number of bytes per pixel in the image. For example, 24-bit >+ RGB bitmap needs dist=3, and it is also good to pass pb=0 to LZMA2 to >+ accommodate the three-byte alignment: > > xz --delta=dist=3 --lzma2=pb=0 foo.tiff > >- If multiple images have been put into a single archive (e.g. .tar), the >- Delta filter will work on that too as long as all images have the same >- number of bytes per pixel. >+ If multiple images have been put into a single archive (for example, >+ .tar), the Delta filter will work on that too as long as all images >+ have the same number of bytes per pixel. > > SEE ALSO > xzdec(1), xzdiff(1), xzgrep(1), xzless(1), xzmore(1), gzip(1), >@@ -1482,8 +1582,8 @@ > > XZ Utils: <https://tukaani.org/xz/> > XZ Embedded: <https://tukaani.org/xz/embedded.html> >- LZMA SDK: <http://7-zip.org/sdk.html> >+ LZMA SDK: <https://7-zip.org/sdk.html> > > > >-Tukaani 2020-02-01 XZ(1) >+Tukaani 2022-12-01 XZ(1) >diff -ur xz-5.2.5/doc/man/txt/xzdiff.txt xz-5.4.3/doc/man/txt/xzdiff.txt >--- xz-5.2.5/doc/man/txt/xzdiff.txt 2020-03-17 17:31:44 >+++ xz-5.4.3/doc/man/txt/xzdiff.txt 2023-05-04 17:33:11 >@@ -13,24 +13,25 @@ > > DESCRIPTION > xzcmp and xzdiff invoke cmp(1) or diff(1) on files compressed with >- xz(1), lzma(1), gzip(1), bzip2(1), or lzop(1). All options specified >- are passed directly to cmp(1) or diff(1). If only one file is speci- >- fied, then the files compared are file1 (which must have a suffix of a >- supported compression format) and file1 from which the compression for- >- mat suffix has been stripped. If two files are specified, then they >- are uncompressed if necessary and fed to cmp(1) or diff(1). The exit >- status from cmp(1) or diff(1) is preserved. >+ xz(1), lzma(1), gzip(1), bzip2(1), lzop(1), or zstd(1). All options >+ specified are passed directly to cmp(1) or diff(1). If only one file >+ is specified, then the files compared are file1 (which must have a suf- >+ fix of a supported compression format) and file1 from which the com- >+ pression format suffix has been stripped. If two files are specified, >+ then they are uncompressed if necessary and fed to cmp(1) or diff(1). >+ The exit status from cmp(1) or diff(1) is preserved unless a decompres- >+ sion error occurs; then exit status is 2. > > The names lzcmp and lzdiff are provided for backward compatibility with > LZMA Utils. > > SEE ALSO >- cmp(1), diff(1), xz(1), gzip(1), bzip2(1), lzop(1), zdiff(1) >+ cmp(1), diff(1), xz(1), gzip(1), bzip2(1), lzop(1), zstd(1), zdiff(1) > > BUGS >- Messages from the cmp(1) or diff(1) programs refer to temporary file- >+ Messages from the cmp(1) or diff(1) programs refer to temporary file- > names instead of those specified. > > > >-Tukaani 2011-03-19 XZDIFF(1) >+Tukaani 2021-06-04 XZDIFF(1) >diff -ur xz-5.2.5/doc/man/txt/xzgrep.txt xz-5.4.3/doc/man/txt/xzgrep.txt >--- xz-5.2.5/doc/man/txt/xzgrep.txt 2020-03-17 17:31:44 >+++ xz-5.4.3/doc/man/txt/xzgrep.txt 2023-05-04 17:33:12 >@@ -6,7 +6,7 @@ > xzgrep - search compressed files for a regular expression > > SYNOPSIS >- xzgrep [grep_options] [-e] pattern file... >+ xzgrep [grep_options] [-e] pattern [file...] > xzegrep ... > xzfgrep ... > lzgrep ... >@@ -15,25 +15,35 @@ > > DESCRIPTION > xzgrep invokes grep(1) on files which may be either uncompressed or >- compressed with xz(1), lzma(1), gzip(1), bzip2(1), or lzop(1). All op- >- tions specified are passed directly to grep(1). >+ compressed with xz(1), lzma(1), gzip(1), bzip2(1), lzop(1), or zstd(1). >+ All options specified are passed directly to grep(1). > > If no file is specified, then standard input is decompressed if neces- > sary and fed to grep(1). When reading from standard input, gzip(1), >- bzip2(1), and lzop(1) compressed files are not supported. >+ bzip2(1), lzop(1), and zstd(1) compressed files are not supported. > >- If xzgrep is invoked as xzegrep or xzfgrep then egrep(1) or fgrep(1) is >+ If xzgrep is invoked as xzegrep or xzfgrep then grep -E or grep -F is > used instead of grep(1). The same applies to names lzgrep, lzegrep, > and lzfgrep, which are provided for backward compatibility with LZMA > Utils. > >+EXIT STATUS >+ 0 At least one match was found from at least one of the input >+ files. No errors occurred. >+ >+ 1 No matches were found from any of the input files. No errors >+ occurred. >+ >+ >1 One or more errors occurred. It is unknown if matches were >+ found. >+ > ENVIRONMENT >- GREP If the GREP environment variable is set, xzgrep uses it instead >- of grep(1), egrep(1), or fgrep(1). >+ GREP If the GREP environment variable is set, xzgrep uses it instead >+ of grep(1), grep -E, or grep -F. > > SEE ALSO >- grep(1), xz(1), gzip(1), bzip2(1), lzop(1), zgrep(1) >+ grep(1), xz(1), gzip(1), bzip2(1), lzop(1), zstd(1), zgrep(1) > > > >-Tukaani 2011-03-19 XZGREP(1) >+Tukaani 2022-07-19 XZGREP(1) >diff -ur xz-5.2.5/doc/xz-file-format.txt xz-5.4.3/doc/xz-file-format.txt >--- xz-5.2.5/doc/xz-file-format.txt 2020-03-17 17:28:50 >+++ xz-5.4.3/doc/xz-file-format.txt 2023-05-04 17:21:05 >@@ -2,7 +2,7 @@ > The .xz File Format > =================== > >-Version 1.0.4 (2009-08-27) >+Version 1.1.0 (2022-12-11) > > > 0. Preface >@@ -93,6 +93,10 @@ > > Version Date Description > >+ 1.1.0 2022-12-11 Added ARM64 filter and clarified 32-bit >+ ARM endianness in Section 5.3.2, >+ language improvements in Section 5.4 >+ > 1.0.4 2009-08-27 Language improvements in Sections 1.2, > 2.1.1.2, 3.1.1, 3.1.2, and 5.3.1 > >@@ -915,10 +919,21 @@ > 0x04 1 byte x86 filter (BCJ) > 0x05 4 bytes PowerPC (big endian) filter > 0x06 16 bytes IA64 filter >- 0x07 4 bytes ARM (little endian) filter >- 0x08 2 bytes ARM Thumb (little endian) filter >+ 0x07 4 bytes ARM filter [1] >+ 0x08 2 bytes ARM Thumb filter [1] > 0x09 4 bytes SPARC filter >+ 0x0A 4 bytes ARM64 filter [2] > >+ [1] These are for little endian instruction encoding. >+ This must not be confused with data endianness. >+ A processor configured for big endian data access >+ may still use little endian instruction encoding. >+ The filters don't care about the data endianness. >+ >+ [2] 4096-byte alignment gives the best results >+ because the address in the ADRP instruction >+ is a multiple of 4096 bytes. >+ > If the size of Filter Properties is four bytes, the Filter > Properties field contains the start offset used for address > conversions. It is stored as an unsigned 32-bit little endian >@@ -987,12 +1002,12 @@ > > 5.4. Custom Filter IDs > >- If a developer wants to use custom Filter IDs, he has two >+ If a developer wants to use custom Filter IDs, there are two > choices. The first choice is to contact Lasse Collin and ask > him to allocate a range of IDs for the developer. > >- The second choice is to generate a 40-bit random integer, >- which the developer can use as his personal Developer ID. >+ The second choice is to generate a 40-bit random integer >+ which the developer can use as a personal Developer ID. > To minimize the risk of collisions, Developer ID has to be > a randomly generated integer, not manually selected "hex word". > The following command, which works on many free operating >@@ -1000,7 +1015,7 @@ > > dd if=/dev/urandom bs=5 count=1 | hexdump > >- The developer can then use his Developer ID to create unique >+ The developer can then use the Developer ID to create unique > (well, hopefully unique) Filter IDs. > > Bits Mask Description >diff -ur xz-5.2.5/dos/INSTALL.txt xz-5.4.3/dos/INSTALL.txt >--- xz-5.2.5/dos/INSTALL.txt 2020-03-17 17:28:50 >+++ xz-5.4.3/dos/INSTALL.txt 2023-05-04 17:21:05 >@@ -17,7 +17,7 @@ > > Getting and Installing DJGPP > >- You may use <http://www.delorie.com/djgpp/zip-picker.html> to help >+ You may use <https://www.delorie.com/djgpp/zip-picker.html> to help > deciding what to download. If you are only interested in building > XZ Utils, the zip-picker may list files that you don't strictly > need. However, using the zip-picker can still be worth it to get a >@@ -25,7 +25,7 @@ > from readme.1st too). > > For a more manual method, first select a mirror from >- <http://www.delorie.com/djgpp/getting.html> and go the >+ <https://www.delorie.com/djgpp/getting.html> and go the > subdirectory named "current". You need the following files: > > unzip32.exe (if you don't already have a LFN-capable unzipper) >diff -ur xz-5.2.5/dos/Makefile xz-5.4.3/dos/Makefile >--- xz-5.2.5/dos/Makefile 2020-03-17 17:28:54 >+++ xz-5.4.3/dos/Makefile 2023-05-04 17:21:05 >@@ -62,6 +62,7 @@ > ../src/liblzma/common/block_header_encoder.c \ > ../src/liblzma/common/block_util.c \ > ../src/liblzma/common/common.c \ >+ ../src/liblzma/common/file_info.c \ > ../src/liblzma/common/filter_common.c \ > ../src/liblzma/common/filter_decoder.c \ > ../src/liblzma/common/filter_encoder.c \ >@@ -72,11 +73,13 @@ > ../src/liblzma/common/index_decoder.c \ > ../src/liblzma/common/index_encoder.c \ > ../src/liblzma/common/index_hash.c \ >+ ../src/liblzma/common/lzip_decoder.c \ > ../src/liblzma/common/stream_decoder.c \ > ../src/liblzma/common/stream_encoder.c \ > ../src/liblzma/common/stream_flags_common.c \ > ../src/liblzma/common/stream_flags_decoder.c \ > ../src/liblzma/common/stream_flags_encoder.c \ >+ ../src/liblzma/common/string_conversion.c \ > ../src/liblzma/common/vli_decoder.c \ > ../src/liblzma/common/vli_encoder.c \ > ../src/liblzma/common/vli_size.c \ >@@ -96,6 +99,7 @@ > ../src/liblzma/lzma/lzma_encoder_presets.c \ > ../src/liblzma/rangecoder/price_table.c \ > ../src/liblzma/simple/arm.c \ >+ ../src/liblzma/simple/arm64.c \ > ../src/liblzma/simple/armthumb.c \ > ../src/liblzma/simple/ia64.c \ > ../src/liblzma/simple/powerpc.c \ >diff -ur xz-5.2.5/dos/config.h xz-5.4.3/dos/config.h >--- xz-5.2.5/dos/config.h 2020-03-17 17:28:50 >+++ xz-5.4.3/dos/config.h 2023-05-04 17:21:05 >@@ -16,6 +16,9 @@ > /* Define to 1 if arm decoder is enabled. */ > #define HAVE_DECODER_ARM 1 > >+/* Define to 1 if arm64 decoder is enabled. */ >+#define HAVE_DECODER_ARM64 1 >+ > /* Define to 1 if armthumb decoder is enabled. */ > #define HAVE_DECODER_ARMTHUMB 1 > >@@ -46,6 +49,9 @@ > /* Define to 1 if arm encoder is enabled. */ > #define HAVE_ENCODER_ARM 1 > >+/* Define to 1 if arm64 encoder is enabled. */ >+#define HAVE_ENCODER_ARM64 1 >+ > /* Define to 1 if armthumb encoder is enabled. */ > #define HAVE_ENCODER_ARMTHUMB 1 > >@@ -76,6 +82,9 @@ > /* Define to 1 if you have the <limits.h> header file. */ > #define HAVE_LIMITS_H 1 > >+/* Define to 1 if .lz (lzip) decompression support is enabled. */ >+#define HAVE_LZIP_DECODER 1 >+ > /* Define to 1 to enable bt2 match finder. */ > #define HAVE_MF_BT2 1 > >@@ -128,7 +137,7 @@ > #define NDEBUG 1 > > /* Define to the address where bug reports for this package should be sent. */ >-#define PACKAGE_BUGREPORT "lasse.collin@tukaani.org" >+#define PACKAGE_BUGREPORT "xz@tukaani.org" > > /* Define to the full name of this package. */ > #define PACKAGE_NAME "XZ Utils" >Only in xz-5.4.3: doxygen >diff -ur xz-5.2.5/lib/Makefile.in xz-5.4.3/lib/Makefile.in >--- xz-5.2.5/lib/Makefile.in 2020-03-17 17:29:35 >+++ xz-5.4.3/lib/Makefile.in 2023-05-04 17:31:30 >@@ -1,7 +1,7 @@ >-# Makefile.in generated by automake 1.16.1 from Makefile.am. >+# Makefile.in generated by automake 1.16.5 from Makefile.am. > # @configure_input@ > >-# Copyright (C) 1994-2018 Free Software Foundation, Inc. >+# Copyright (C) 1994-2021 Free Software Foundation, Inc. > > # This Makefile.in is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -193,6 +193,8 @@ > CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ > CPP = @CPP@ > CPPFLAGS = @CPPFLAGS@ >+CSCOPE = @CSCOPE@ >+CTAGS = @CTAGS@ > CYGPATH_W = @CYGPATH_W@ > DEFS = @DEFS@ > DEPDIR = @DEPDIR@ >@@ -203,8 +205,10 @@ > ECHO_N = @ECHO_N@ > ECHO_T = @ECHO_T@ > EGREP = @EGREP@ >+ETAGS = @ETAGS@ > EXEEXT = @EXEEXT@ > FGREP = @FGREP@ >+FILECMD = @FILECMD@ > GETOPT_H = @GETOPT_H@ > GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ > GMSGFMT = @GMSGFMT@ >@@ -257,6 +261,7 @@ > PREFERABLY_POSIX_SHELL = @PREFERABLY_POSIX_SHELL@ > PTHREAD_CC = @PTHREAD_CC@ > PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ >+PTHREAD_CXX = @PTHREAD_CXX@ > PTHREAD_LIBS = @PTHREAD_LIBS@ > RANLIB = @RANLIB@ > RC = @RC@ >@@ -315,6 +320,7 @@ > prefix = @prefix@ > program_transform_name = @program_transform_name@ > psdir = @psdir@ >+runstatedir = @runstatedir@ > sbindir = @sbindir@ > sharedstatedir = @sharedstatedir@ > srcdir = @srcdir@ >@@ -421,7 +427,6 @@ > > cscope cscopelist: > >- > distdir: $(BUILT_SOURCES) > $(MAKE) $(AM_MAKEFLAGS) distdir-am > >@@ -462,7 +467,8 @@ > installdirs: > install: $(BUILT_SOURCES) > $(MAKE) $(AM_MAKEFLAGS) install-am >-install-exec: install-exec-am >+install-exec: $(BUILT_SOURCES) >+ $(MAKE) $(AM_MAKEFLAGS) install-exec-am > install-data: install-data-am > uninstall: uninstall-am > >@@ -565,7 +571,7 @@ > > uninstall-am: > >-.MAKE: all check install install-am install-strip >+.MAKE: all check install install-am install-exec install-strip > > .PHONY: all all-am am--depfiles check check-am clean clean-generic \ > clean-libtool clean-noinstLIBRARIES cscopelist-am ctags-am \ >diff -ur xz-5.2.5/m4/ax_pthread.m4 xz-5.4.3/m4/ax_pthread.m4 >--- xz-5.2.5/m4/ax_pthread.m4 2020-03-17 17:28:50 >+++ xz-5.4.3/m4/ax_pthread.m4 2023-05-04 17:21:05 >@@ -14,20 +14,24 @@ > # flags that are needed. (The user can also force certain compiler > # flags/libs to be tested by setting these environment variables.) > # >-# Also sets PTHREAD_CC to any special C compiler that is needed for >-# multi-threaded programs (defaults to the value of CC otherwise). (This >-# is necessary on AIX to use the special cc_r compiler alias.) >+# Also sets PTHREAD_CC and PTHREAD_CXX to any special C compiler that is >+# needed for multi-threaded programs (defaults to the value of CC >+# respectively CXX otherwise). (This is necessary on e.g. AIX to use the >+# special cc_r/CC_r compiler alias.) > # > # NOTE: You are assumed to not only compile your program with these flags, > # but also to link with them as well. For example, you might link with > # $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS >+# $PTHREAD_CXX $CXXFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS > # > # If you are only building threaded programs, you may wish to use these > # variables in your default LIBS, CFLAGS, and CC: > # > # LIBS="$PTHREAD_LIBS $LIBS" > # CFLAGS="$CFLAGS $PTHREAD_CFLAGS" >+# CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" > # CC="$PTHREAD_CC" >+# CXX="$PTHREAD_CXX" > # > # In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant > # has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to >@@ -83,7 +87,7 @@ > # modified version of the Autoconf Macro, you may extend this special > # exception to the GPL to apply to your modified version as well. > >-#serial 27 >+#serial 31 > > AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) > AC_DEFUN([AX_PTHREAD], [ >@@ -105,6 +109,7 @@ > ax_pthread_save_CFLAGS="$CFLAGS" > ax_pthread_save_LIBS="$LIBS" > AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) >+ AS_IF([test "x$PTHREAD_CXX" != "x"], [CXX="$PTHREAD_CXX"]) > CFLAGS="$CFLAGS $PTHREAD_CFLAGS" > LIBS="$PTHREAD_LIBS $LIBS" > AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) >@@ -386,7 +391,7 @@ > # step > ax_pthread_save_ac_link="$ac_link" > ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' >- ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"` >+ ax_pthread_link_step=`AS_ECHO(["$ac_link"]) | sed "$ax_pthread_sed"` > ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" > ax_pthread_save_CFLAGS="$CFLAGS" > for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do >@@ -482,18 +487,28 @@ > [#handle absolute path differently from PATH based program lookup > AS_CASE(["x$CC"], > [x/*], >- [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])], >- [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])]) >+ [ >+ AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"]) >+ AS_IF([test "x${CXX}" != "x"], [AS_IF([AS_EXECUTABLE_P([${CXX}_r])],[PTHREAD_CXX="${CXX}_r"])]) >+ ], >+ [ >+ AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC]) >+ AS_IF([test "x${CXX}" != "x"], [AC_CHECK_PROGS([PTHREAD_CXX],[${CXX}_r],[$CXX])]) >+ ] >+ ) >+ ]) > ;; > esac > fi > fi > > test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" >+test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" > > AC_SUBST([PTHREAD_LIBS]) > AC_SUBST([PTHREAD_CFLAGS]) > AC_SUBST([PTHREAD_CC]) >+AC_SUBST([PTHREAD_CXX]) > > # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: > if test "x$ax_pthread_ok" = "xyes"; then >diff -ur xz-5.2.5/m4/gettext.m4 xz-5.4.3/m4/gettext.m4 >--- xz-5.2.5/m4/gettext.m4 2020-03-17 17:29:25 >+++ xz-5.4.3/m4/gettext.m4 2023-05-04 17:27:40 >@@ -1,15 +1,15 @@ >-# gettext.m4 serial 70 (gettext-0.20) >-dnl Copyright (C) 1995-2014, 2016, 2018 Free Software Foundation, Inc. >+# gettext.m4 serial 72 (gettext-0.21.1) >+dnl Copyright (C) 1995-2014, 2016, 2018-2020 Free Software Foundation, Inc. > dnl This file is free software; the Free Software Foundation > dnl gives unlimited permission to copy and/or distribute it, > dnl with or without modifications, as long as this notice is preserved. > dnl > dnl This file can be used in projects which are not available under >-dnl the GNU General Public License or the GNU Library General Public >+dnl the GNU General Public License or the GNU Lesser General Public > dnl License but which still want to provide support for the GNU gettext > dnl functionality. > dnl Please note that the actual code of the GNU gettext library is covered >-dnl by the GNU Library General Public License, and the rest of the GNU >+dnl by the GNU Lesser General Public License, and the rest of the GNU > dnl gettext package is covered by the GNU General Public License. > dnl They are *not* in the public domain. > >@@ -55,22 +55,22 @@ > AC_DEFUN([AM_GNU_GETTEXT], > [ > dnl Argument checking. >- ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [use-libtool], , >+ m4_if([$1], [], , [m4_if([$1], [external], , [m4_if([$1], [use-libtool], , > [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT > ])])])]) >- ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], >+ m4_if(m4_if([$1], [], [old])[]m4_if([$1], [no-libtool], [old]), [old], > [errprint([ERROR: Use of AM_GNU_GETTEXT without [external] argument is no longer supported. > ])]) >- ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , >+ m4_if([$2], [], , [m4_if([$2], [need-ngettext], , [m4_if([$2], [need-formatstring-macros], , > [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT > ])])])]) > define([gt_included_intl], >- ifelse([$1], [external], [no], [yes])) >+ m4_if([$1], [external], [no], [yes])) > gt_NEEDS_INIT > AM_GNU_GETTEXT_NEED([$2]) > > AC_REQUIRE([AM_PO_SUBDIRS])dnl >- ifelse(gt_included_intl, yes, [ >+ m4_if(gt_included_intl, yes, [ > AC_REQUIRE([AM_INTL_SUBDIR])dnl > ]) > >@@ -88,7 +88,7 @@ > dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. > dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. > dnl Since AC_PROVIDE_IFELSE is not documented, we avoid it. >- ifelse(gt_included_intl, yes, , [ >+ m4_if(gt_included_intl, yes, , [ > AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) > ]) > >@@ -98,7 +98,7 @@ > dnl Set USE_NLS. > AC_REQUIRE([AM_NLS]) > >- ifelse(gt_included_intl, yes, [ >+ m4_if(gt_included_intl, yes, [ > BUILD_INCLUDED_LIBINTL=no > USE_INCLUDED_LIBINTL=no > ]) >@@ -118,7 +118,7 @@ > dnl If we use NLS figure out what method > if test "$USE_NLS" = "yes"; then > gt_use_preinstalled_gnugettext=no >- ifelse(gt_included_intl, yes, [ >+ m4_if(gt_included_intl, yes, [ > AC_MSG_CHECKING([whether included gettext is requested]) > AC_ARG_WITH([included-gettext], > [ --with-included-gettext use the GNU gettext library included here], >@@ -174,7 +174,7 @@ > > if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then > dnl Sometimes libintl requires libiconv, so first search for libiconv. >- ifelse(gt_included_intl, yes, , [ >+ m4_if(gt_included_intl, yes, , [ > AM_ICONV_LINK > ]) > dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL >@@ -261,7 +261,7 @@ > INCINTL= > fi > >- ifelse(gt_included_intl, yes, [ >+ m4_if(gt_included_intl, yes, [ > if test "$gt_use_preinstalled_gnugettext" != "yes"; then > dnl GNU gettext is not found in the C library. > dnl Fall back on included GNU gettext library. >@@ -273,8 +273,8 @@ > dnl Mark actions used to generate GNU NLS library. > BUILD_INCLUDED_LIBINTL=yes > USE_INCLUDED_LIBINTL=yes >- LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD" >- LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LTLIBICONV $LTLIBTHREAD" >+ LIBINTL="m4_if([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD" >+ LTLIBINTL="m4_if([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LTLIBICONV $LTLIBTHREAD" > LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` > fi > >@@ -341,7 +341,7 @@ > POSUB=po > fi > >- ifelse(gt_included_intl, yes, [ >+ m4_if(gt_included_intl, yes, [ > dnl In GNU gettext we have to set BUILD_INCLUDED_LIBINTL to 'yes' > dnl because some of the testsuite requires it. > BUILD_INCLUDED_LIBINTL=yes >diff -ur xz-5.2.5/m4/host-cpu-c-abi.m4 xz-5.4.3/m4/host-cpu-c-abi.m4 >--- xz-5.2.5/m4/host-cpu-c-abi.m4 2020-03-17 17:29:25 >+++ xz-5.4.3/m4/host-cpu-c-abi.m4 2023-05-04 17:27:40 >@@ -1,5 +1,5 @@ >-# host-cpu-c-abi.m4 serial 11 >-dnl Copyright (C) 2002-2019 Free Software Foundation, Inc. >+# host-cpu-c-abi.m4 serial 15 >+dnl Copyright (C) 2002-2022 Free Software Foundation, Inc. > dnl This file is free software; the Free Software Foundation > dnl gives unlimited permission to copy and/or distribute it, > dnl with or without modifications, as long as this notice is preserved. >@@ -55,7 +55,7 @@ > [case "$host_cpu" in > > changequote(,)dnl >- i[4567]86 ) >+ i[34567]86 ) > changequote([,])dnl > gl_cv_host_cpu_c_abi=i386 > ;; >@@ -211,7 +211,7 @@ > # be generating 64-bit code. > AC_COMPILE_IFELSE( > [AC_LANG_SOURCE( >- [[#if defined __powerpc64__ || defined _ARCH_PPC64 >+ [[#if defined __powerpc64__ || defined __LP64__ > int ok; > #else > error fail >@@ -382,6 +382,9 @@ > #ifndef __ia64__ > #undef __ia64__ > #endif >+#ifndef __loongarch64__ >+#undef __loongarch64__ >+#endif > #ifndef __m68k__ > #undef __m68k__ > #endif >@@ -457,7 +460,8 @@ > > > dnl Sets the HOST_CPU_C_ABI_32BIT variable to 'yes' if the C language ABI >-dnl (application binary interface) is a 32-bit one, or to 'no' otherwise. >+dnl (application binary interface) is a 32-bit one, to 'no' if it is a 64-bit >+dnl one, or to 'unknown' if unknown. > dnl This is a simplified variant of gl_HOST_CPU_C_ABI. > AC_DEFUN([gl_HOST_CPU_C_ABI_32BIT], > [ >@@ -467,15 +471,45 @@ > case "$gl_cv_host_cpu_c_abi" in > i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc) > gl_cv_host_cpu_c_abi_32bit=yes ;; >- *) >+ x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 ) > gl_cv_host_cpu_c_abi_32bit=no ;; >+ *) >+ gl_cv_host_cpu_c_abi_32bit=unknown ;; > esac > else > case "$host_cpu" in > >+ # CPUs that only support a 32-bit ABI. >+ arc \ >+ | bfin \ >+ | cris* \ >+ | csky \ >+ | epiphany \ >+ | ft32 \ >+ | h8300 \ >+ | m68k \ >+ | microblaze | microblazeel \ >+ | nds32 | nds32le | nds32be \ >+ | nios2 | nios2eb | nios2el \ >+ | or1k* \ >+ | or32 \ >+ | sh | sh[1234] | sh[1234]e[lb] \ >+ | tic6x \ >+ | xtensa* ) >+ gl_cv_host_cpu_c_abi_32bit=yes >+ ;; >+ >+ # CPUs that only support a 64-bit ABI. > changequote(,)dnl >- i[4567]86 ) >+ alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \ >+ | mmix ) > changequote([,])dnl >+ gl_cv_host_cpu_c_abi_32bit=no >+ ;; >+ >+changequote(,)dnl >+ i[34567]86 ) >+changequote([,])dnl > gl_cv_host_cpu_c_abi_32bit=yes > ;; > >@@ -574,7 +608,7 @@ > # be generating 64-bit code. > AC_COMPILE_IFELSE( > [AC_LANG_SOURCE( >- [[#if defined __powerpc64__ || defined _ARCH_PPC64 >+ [[#if defined __powerpc64__ || defined __LP64__ > int ok; > #else > error fail >@@ -634,7 +668,7 @@ > ;; > > *) >- gl_cv_host_cpu_c_abi_32bit=no >+ gl_cv_host_cpu_c_abi_32bit=unknown > ;; > esac > fi >diff -ur xz-5.2.5/m4/iconv.m4 xz-5.4.3/m4/iconv.m4 >--- xz-5.2.5/m4/iconv.m4 2020-03-17 17:29:25 >+++ xz-5.4.3/m4/iconv.m4 2023-05-04 17:27:40 >@@ -1,5 +1,5 @@ >-# iconv.m4 serial 21 >-dnl Copyright (C) 2000-2002, 2007-2014, 2016-2019 Free Software Foundation, >+# iconv.m4 serial 24 >+dnl Copyright (C) 2000-2002, 2007-2014, 2016-2022 Free Software Foundation, > dnl Inc. > dnl This file is free software; the Free Software Foundation > dnl gives unlimited permission to copy and/or distribute it, >@@ -7,6 +7,12 @@ > > dnl From Bruno Haible. > >+AC_PREREQ([2.64]) >+ >+dnl Note: AM_ICONV is documented in the GNU gettext manual >+dnl <https://www.gnu.org/software/gettext/manual/html_node/AM_005fICONV.html>. >+dnl Don't make changes that are incompatible with that documentation! >+ > AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], > [ > dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. >@@ -86,8 +92,9 @@ > #endif > ]], > [[int result = 0; >- /* Test against AIX 5.1 bug: Failures are not distinguishable from successful >- returns. */ >+ /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from >+ successful returns. This is even documented in >+ <https://www.ibm.com/support/knowledgecenter/ssw_aix_72/i_bostechref/iconv.html> */ > { > iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); > if (cd_utf8_to_88591 != (iconv_t)(-1)) >@@ -225,8 +232,7 @@ > AC_SUBST([LTLIBICONV]) > ]) > >-dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to >-dnl avoid warnings like >+dnl Define AM_ICONV using AC_DEFUN_ONCE, in order to avoid warnings like > dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". > dnl This is tricky because of the way 'aclocal' is implemented: > dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. >@@ -234,54 +240,43 @@ > dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. > dnl Otherwise aclocal would emit many "Use of uninitialized value $1" > dnl warnings. >-m4_define([gl_iconv_AC_DEFUN], >- m4_version_prereq([2.64], >- [[AC_DEFUN_ONCE( >- [$1], [$2])]], >- [m4_ifdef([gl_00GNULIB], >- [[AC_DEFUN_ONCE( >- [$1], [$2])]], >- [[AC_DEFUN( >- [$1], [$2])]])])) >-gl_iconv_AC_DEFUN([AM_ICONV], >+AC_DEFUN_ONCE([AM_ICONV], > [ > AM_ICONV_LINK > if test "$am_cv_func_iconv" = yes; then >- AC_MSG_CHECKING([for iconv declaration]) >- AC_CACHE_VAL([am_cv_proto_iconv], [ >- AC_COMPILE_IFELSE( >- [AC_LANG_PROGRAM( >- [[ >+ AC_CACHE_CHECK([whether iconv is compatible with its POSIX signature], >+ [gl_cv_iconv_nonconst], >+ [AC_COMPILE_IFELSE( >+ [AC_LANG_PROGRAM( >+ [[ > #include <stdlib.h> > #include <iconv.h> > extern > #ifdef __cplusplus > "C" > #endif >-#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) > size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); >-#else >-size_t iconv(); >-#endif >- ]], >- [[]])], >- [am_cv_proto_iconv_arg1=""], >- [am_cv_proto_iconv_arg1="const"]) >- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) >- am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` >- AC_MSG_RESULT([ >- $am_cv_proto_iconv]) >+ ]], >+ [[]])], >+ [gl_cv_iconv_nonconst=yes], >+ [gl_cv_iconv_nonconst=no]) >+ ]) > else > dnl When compiling GNU libiconv on a system that does not have iconv yet, > dnl pick the POSIX compliant declaration without 'const'. >- am_cv_proto_iconv_arg1="" >+ gl_cv_iconv_nonconst=yes > fi >- AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], >+ if test $gl_cv_iconv_nonconst = yes; then >+ iconv_arg1="" >+ else >+ iconv_arg1="const" >+ fi >+ AC_DEFINE_UNQUOTED([ICONV_CONST], [$iconv_arg1], > [Define as const if the declaration of iconv() needs const.]) > dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>. > m4_ifdef([gl_ICONV_H_DEFAULTS], > [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) >- if test -n "$am_cv_proto_iconv_arg1"; then >+ if test $gl_cv_iconv_nonconst != yes; then > ICONV_CONST="const" > fi > ]) >diff -ur xz-5.2.5/m4/intlmacosx.m4 xz-5.4.3/m4/intlmacosx.m4 >--- xz-5.2.5/m4/intlmacosx.m4 2020-03-17 17:29:25 >+++ xz-5.4.3/m4/intlmacosx.m4 2023-05-04 17:27:40 >@@ -1,15 +1,15 @@ >-# intlmacosx.m4 serial 6 (gettext-0.20) >-dnl Copyright (C) 2004-2014, 2016, 2019 Free Software Foundation, Inc. >+# intlmacosx.m4 serial 8 (gettext-0.20.2) >+dnl Copyright (C) 2004-2014, 2016, 2019-2022 Free Software Foundation, Inc. > dnl This file is free software; the Free Software Foundation > dnl gives unlimited permission to copy and/or distribute it, > dnl with or without modifications, as long as this notice is preserved. > dnl > dnl This file can be used in projects which are not available under >-dnl the GNU General Public License or the GNU Library General Public >+dnl the GNU General Public License or the GNU Lesser General Public > dnl License but which still want to provide support for the GNU gettext > dnl functionality. > dnl Please note that the actual code of the GNU gettext library is covered >-dnl by the GNU Library General Public License, and the rest of the GNU >+dnl by the GNU Lesser General Public License, and the rest of the GNU > dnl gettext package is covered by the GNU General Public License. > dnl They are *not* in the public domain. > >@@ -33,21 +33,15 @@ > AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], > [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) > fi >- dnl Check for API introduced in Mac OS X 10.5. >- AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], >- [gt_save_LIBS="$LIBS" >- LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" >- AC_LINK_IFELSE( >- [AC_LANG_PROGRAM( >- [[#include <CoreFoundation/CFLocale.h>]], >- [[CFLocaleCopyCurrent();]])], >- [gt_cv_func_CFLocaleCopyCurrent=yes], >- [gt_cv_func_CFLocaleCopyCurrent=no]) >- LIBS="$gt_save_LIBS"]) >- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then >- AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], >- [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) >- fi >+ dnl Don't check for the API introduced in Mac OS X 10.5, CFLocaleCopyCurrent, >+ dnl because in macOS 10.13.4 it has the following behaviour: >+ dnl When two or more languages are specified in the >+ dnl "System Preferences > Language & Region > Preferred Languages" panel, >+ dnl it returns en_CC where CC is the territory (even when English is not among >+ dnl the preferred languages!). What we want instead is what >+ dnl CFLocaleCopyCurrent returned in earlier macOS releases and what >+ dnl CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the >+ dnl first among the preferred languages and CC is the territory. > AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages], > [gt_save_LIBS="$LIBS" > LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" >@@ -64,7 +58,6 @@ > fi > INTL_MACOSX_LIBS= > if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ >- || test $gt_cv_func_CFLocaleCopyCurrent = yes \ > || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then > INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" > fi >diff -ur xz-5.2.5/m4/lib-ld.m4 xz-5.4.3/m4/lib-ld.m4 >--- xz-5.2.5/m4/lib-ld.m4 2020-03-17 17:29:26 >+++ xz-5.4.3/m4/lib-ld.m4 2023-05-04 17:27:40 >@@ -1,5 +1,5 @@ >-# lib-ld.m4 serial 9 >-dnl Copyright (C) 1996-2003, 2009-2019 Free Software Foundation, Inc. >+# lib-ld.m4 serial 10 >+dnl Copyright (C) 1996-2003, 2009-2022 Free Software Foundation, Inc. > dnl This file is free software; the Free Software Foundation > dnl gives unlimited permission to copy and/or distribute it, > dnl with or without modifications, as long as this notice is preserved. >@@ -122,7 +122,7 @@ > *-*-aix*) > AC_COMPILE_IFELSE( > [AC_LANG_SOURCE( >- [[#if defined __powerpc64__ || defined _ARCH_PPC64 >+ [[#if defined __powerpc64__ || defined __LP64__ > int ok; > #else > error fail >diff -ur xz-5.2.5/m4/lib-link.m4 xz-5.4.3/m4/lib-link.m4 >--- xz-5.2.5/m4/lib-link.m4 2020-03-17 17:29:26 >+++ xz-5.4.3/m4/lib-link.m4 2023-05-04 17:27:40 >@@ -1,5 +1,5 @@ >-# lib-link.m4 serial 28 >-dnl Copyright (C) 2001-2019 Free Software Foundation, Inc. >+# lib-link.m4 serial 33 >+dnl Copyright (C) 2001-2022 Free Software Foundation, Inc. > dnl This file is free software; the Free Software Foundation > dnl gives unlimited permission to copy and/or distribute it, > dnl with or without modifications, as long as this notice is preserved. >@@ -192,10 +192,12 @@ > AC_LIB_WITH_FINAL_PREFIX([ > eval additional_includedir=\"$includedir\" > eval additional_libdir=\"$libdir\" >+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" >+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" > ]) > AC_ARG_WITH(PACK[-prefix], >-[[ --with-]]PACK[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib >- --without-]]PACK[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], >+[[ --with-]]PACK[[-prefix[=DIR] search for ]]PACKLIBS[[ in DIR/include and DIR/lib >+ --without-]]PACK[[-prefix don't search for ]]PACKLIBS[[ in includedir and libdir]], > [ > if test "X$withval" = "Xno"; then > use_additional=no >@@ -204,17 +206,23 @@ > AC_LIB_WITH_FINAL_PREFIX([ > eval additional_includedir=\"$includedir\" > eval additional_libdir=\"$libdir\" >+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" >+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" > ]) > else > additional_includedir="$withval/include" > additional_libdir="$withval/$acl_libdirstem" >- if test "$acl_libdirstem2" != "$acl_libdirstem" \ >- && test ! -d "$withval/$acl_libdirstem"; then >- additional_libdir="$withval/$acl_libdirstem2" >- fi >+ additional_libdir2="$withval/$acl_libdirstem2" >+ additional_libdir3="$withval/$acl_libdirstem3" > fi > fi > ]) >+ if test "X$additional_libdir2" = "X$additional_libdir"; then >+ additional_libdir2= >+ fi >+ if test "X$additional_libdir3" = "X$additional_libdir"; then >+ additional_libdir3= >+ fi > dnl Search the library and its dependencies in $additional_libdir and > dnl $LDFLAGS. Using breadth-first-seach. > LIB[]NAME= >@@ -270,48 +278,54 @@ > shrext= > fi > if test $use_additional = yes; then >- dir="$additional_libdir" >- dnl The same code as in the loop below: >- dnl First look for a shared library. >- if test -n "$acl_shlibext"; then >- if test -f "$dir/$libname$shrext"; then >- found_dir="$dir" >- found_so="$dir/$libname$shrext" >- else >- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then >- ver=`(cd "$dir" && \ >- for f in "$libname$shrext".*; do echo "$f"; done \ >- | sed -e "s,^$libname$shrext\\\\.,," \ >- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ >- | sed 1q ) 2>/dev/null` >- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then >- found_dir="$dir" >- found_so="$dir/$libname$shrext.$ver" >+ for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do >+ if test "X$found_dir" = "X"; then >+ eval dir=\$$additional_libdir_variable >+ if test -n "$dir"; then >+ dnl The same code as in the loop below: >+ dnl First look for a shared library. >+ if test -n "$acl_shlibext"; then >+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then >+ found_dir="$dir" >+ found_so="$dir/$libname$shrext" >+ else >+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then >+ ver=`(cd "$dir" && \ >+ for f in "$libname$shrext".*; do echo "$f"; done \ >+ | sed -e "s,^$libname$shrext\\\\.,," \ >+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ >+ | sed 1q ) 2>/dev/null` >+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then >+ found_dir="$dir" >+ found_so="$dir/$libname$shrext.$ver" >+ fi >+ else >+ eval library_names=\"$acl_library_names_spec\" >+ for f in $library_names; do >+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then >+ found_dir="$dir" >+ found_so="$dir/$f" >+ break >+ fi >+ done >+ fi >+ fi > fi >- else >- eval library_names=\"$acl_library_names_spec\" >- for f in $library_names; do >- if test -f "$dir/$f"; then >+ dnl Then look for a static library. >+ if test "X$found_dir" = "X"; then >+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then > found_dir="$dir" >- found_so="$dir/$f" >- break >+ found_a="$dir/$libname.$acl_libext" > fi >- done >+ fi >+ if test "X$found_dir" != "X"; then >+ if test -f "$dir/$libname.la"; then >+ found_la="$dir/$libname.la" >+ fi >+ fi > fi > fi >- fi >- dnl Then look for a static library. >- if test "X$found_dir" = "X"; then >- if test -f "$dir/$libname.$acl_libext"; then >- found_dir="$dir" >- found_a="$dir/$libname.$acl_libext" >- fi >- fi >- if test "X$found_dir" != "X"; then >- if test -f "$dir/$libname.la"; then >- found_la="$dir/$libname.la" >- fi >- fi >+ done > fi > if test "X$found_dir" = "X"; then > for x in $LDFLAGS $LTLIB[]NAME; do >@@ -321,7 +335,7 @@ > dir=`echo "X$x" | sed -e 's/^X-L//'` > dnl First look for a shared library. > if test -n "$acl_shlibext"; then >- if test -f "$dir/$libname$shrext"; then >+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then > found_dir="$dir" > found_so="$dir/$libname$shrext" > else >@@ -331,14 +345,14 @@ > | sed -e "s,^$libname$shrext\\\\.,," \ > | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ > | sed 1q ) 2>/dev/null` >- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then >+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then > found_dir="$dir" > found_so="$dir/$libname$shrext.$ver" > fi > else > eval library_names=\"$acl_library_names_spec\" > for f in $library_names; do >- if test -f "$dir/$f"; then >+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then > found_dir="$dir" > found_so="$dir/$f" > break >@@ -349,7 +363,7 @@ > fi > dnl Then look for a static library. > if test "X$found_dir" = "X"; then >- if test -f "$dir/$libname.$acl_libext"; then >+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then > found_dir="$dir" > found_a="$dir/$libname.$acl_libext" > fi >@@ -375,7 +389,8 @@ > dnl standard /usr/lib. > if test "$enable_rpath" = no \ > || test "X$found_dir" = "X/usr/$acl_libdirstem" \ >- || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then >+ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ >+ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then > dnl No hardcoding is needed. > LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" > else >@@ -475,6 +490,13 @@ > fi > additional_includedir="$basedir/include" > ;; >+ */$acl_libdirstem3 | */$acl_libdirstem3/) >+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` >+ if test "$name" = '$1'; then >+ LIB[]NAME[]_PREFIX="$basedir" >+ fi >+ additional_includedir="$basedir/include" >+ ;; > esac > if test "X$additional_includedir" != "X"; then > dnl Potentially add $additional_includedir to $INCNAME. >@@ -525,19 +547,21 @@ > for dep in $dependency_libs; do > case "$dep" in > -L*) >- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` >- dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. >+ dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` >+ dnl Potentially add $dependency_libdir to $LIBNAME and $LTLIBNAME. > dnl But don't add it > dnl 1. if it's the standard /usr/lib, > dnl 2. if it's /usr/local/lib and we are using GCC on Linux, > dnl 3. if it's already present in $LDFLAGS or the already > dnl constructed $LIBNAME, > dnl 4. if it doesn't exist as a directory. >- if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ >- && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then >+ if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ >+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ >+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then > haveit= >- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ >- || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then >+ if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ >+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ >+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then > if test -n "$GCC"; then > case $host_os in > linux* | gnu* | k*bsd*-gnu) haveit=yes;; >@@ -548,29 +572,29 @@ > haveit= > for x in $LDFLAGS $LIB[]NAME; do > AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) >- if test "X$x" = "X-L$additional_libdir"; then >+ if test "X$x" = "X-L$dependency_libdir"; then > haveit=yes > break > fi > done > if test -z "$haveit"; then >- if test -d "$additional_libdir"; then >- dnl Really add $additional_libdir to $LIBNAME. >- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" >+ if test -d "$dependency_libdir"; then >+ dnl Really add $dependency_libdir to $LIBNAME. >+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$dependency_libdir" > fi > fi > haveit= > for x in $LDFLAGS $LTLIB[]NAME; do > AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) >- if test "X$x" = "X-L$additional_libdir"; then >+ if test "X$x" = "X-L$dependency_libdir"; then > haveit=yes > break > fi > done > if test -z "$haveit"; then >- if test -d "$additional_libdir"; then >- dnl Really add $additional_libdir to $LTLIBNAME. >- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" >+ if test -d "$dependency_libdir"; then >+ dnl Really add $dependency_libdir to $LTLIBNAME. >+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$dependency_libdir" > fi > fi > fi >@@ -607,7 +631,20 @@ > ;; > -l*) > dnl Handle this in the next round. >- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` >+ dnl But on GNU systems, ignore -lc options, because >+ dnl - linking with libc is the default anyway, >+ dnl - linking with libc.a may produce an error >+ dnl "/usr/bin/ld: dynamic STT_GNU_IFUNC symbol `strcmp' with pointer equality in `/usr/lib/libc.a(strcmp.o)' can not be used when making an executable; recompile with -fPIE and relink with -pie" >+ dnl or may produce an executable that always crashes, see >+ dnl <https://lists.gnu.org/archive/html/grep-devel/2020-09/msg00052.html>. >+ dep=`echo "X$dep" | sed -e 's/^X-l//'` >+ if test "X$dep" != Xc \ >+ || case $host_os in >+ linux* | gnu* | k*bsd*-gnu) false ;; >+ *) true ;; >+ esac; then >+ names_next_round="$names_next_round $dep" >+ fi > ;; > *.la) > dnl Handle this in the next round. Throw away the .la's >@@ -718,7 +755,8 @@ > dir="$next" > dnl No need to hardcode the standard /usr/lib. > if test "X$dir" != "X/usr/$acl_libdirstem" \ >- && test "X$dir" != "X/usr/$acl_libdirstem2"; then >+ && test "X$dir" != "X/usr/$acl_libdirstem2" \ >+ && test "X$dir" != "X/usr/$acl_libdirstem3"; then > rpathdirs="$rpathdirs $dir" > fi > next= >@@ -728,7 +766,8 @@ > -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` > dnl No need to hardcode the standard /usr/lib. > if test "X$dir" != "X/usr/$acl_libdirstem" \ >- && test "X$dir" != "X/usr/$acl_libdirstem2"; then >+ && test "X$dir" != "X/usr/$acl_libdirstem2" \ >+ && test "X$dir" != "X/usr/$acl_libdirstem3"; then > rpathdirs="$rpathdirs $dir" > fi > next= ;; >diff -ur xz-5.2.5/m4/lib-prefix.m4 xz-5.4.3/m4/lib-prefix.m4 >--- xz-5.2.5/m4/lib-prefix.m4 2020-03-17 17:29:26 >+++ xz-5.4.3/m4/lib-prefix.m4 2023-05-04 17:27:40 >@@ -1,5 +1,5 @@ >-# lib-prefix.m4 serial 14 >-dnl Copyright (C) 2001-2005, 2008-2019 Free Software Foundation, Inc. >+# lib-prefix.m4 serial 20 >+dnl Copyright (C) 2001-2005, 2008-2022 Free Software Foundation, Inc. > dnl This file is free software; the Free Software Foundation > dnl gives unlimited permission to copy and/or distribute it, > dnl with or without modifications, as long as this notice is preserved. >@@ -147,21 +147,24 @@ > ]) > > dnl AC_LIB_PREPARE_MULTILIB creates >-dnl - a variable acl_libdirstem, containing the basename of the libdir, either >-dnl "lib" or "lib64" or "lib/64", >-dnl - a variable acl_libdirstem2, as a secondary possible value for >-dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or >-dnl "lib/amd64". >+dnl - a function acl_is_expected_elfclass, that tests whether standard input >+dn; has a 32-bit or 64-bit ELF header, depending on the host CPU ABI, >+dnl - 3 variables acl_libdirstem, acl_libdirstem2, acl_libdirstem3, containing >+dnl the basename of the libdir to try in turn, either "lib" or "lib64" or >+dnl "lib/64" or "lib32" or "lib/sparcv9" or "lib/amd64" or similar. > AC_DEFUN([AC_LIB_PREPARE_MULTILIB], > [ >- dnl There is no formal standard regarding lib and lib64. >- dnl On glibc systems, the current practice is that on a system supporting >+ dnl There is no formal standard regarding lib, lib32, and lib64. >+ dnl On most glibc systems, the current practice is that on a system supporting > dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under >- dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine >- dnl the compiler's default mode by looking at the compiler's library search >- dnl path. If at least one of its elements ends in /lib64 or points to a >- dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. >- dnl Otherwise we use the default, namely "lib". >+ dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. However, on >+ dnl Arch Linux based distributions, it's the opposite: 32-bit libraries go >+ dnl under $prefix/lib32 and 64-bit libraries go under $prefix/lib. >+ dnl We determine the compiler's default mode by looking at the compiler's >+ dnl library search path. If at least one of its elements ends in /lib64 or >+ dnl points to a directory whose absolute pathname ends in /lib64, we use that >+ dnl for 64-bit ABIs. Similarly for 32-bit ABIs. Otherwise we use the default, >+ dnl namely "lib". > dnl On Solaris systems, the current practice is that on a system supporting > dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under > dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or >@@ -169,27 +172,75 @@ > AC_REQUIRE([AC_CANONICAL_HOST]) > AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT]) > >- case "$host_os" in >- solaris*) >- AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], >- [AC_COMPILE_IFELSE( >- [AC_LANG_SOURCE( >- [[#ifdef _LP64 >- int ok; >- #else >- error fail >- #endif >- ]])], >- [gl_cv_solaris_64bit=yes], >- [gl_cv_solaris_64bit=no]) >- ]);; >- esac >+ AC_CACHE_CHECK([for ELF binary format], [gl_cv_elf], >+ [AC_EGREP_CPP([Extensible Linking Format], >+ [#if defined __ELF__ || (defined __linux__ && defined __EDG__) >+ Extensible Linking Format >+ #endif >+ ], >+ [gl_cv_elf=yes], >+ [gl_cv_elf=no]) >+ ]) >+ if test $gl_cv_elf = yes; then >+ # Extract the ELF class of a file (5th byte) in decimal. >+ # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header >+ if od -A x < /dev/null >/dev/null 2>/dev/null; then >+ # Use POSIX od. >+ func_elfclass () >+ { >+ od -A n -t d1 -j 4 -N 1 >+ } >+ else >+ # Use BSD hexdump. >+ func_elfclass () >+ { >+ dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' >+ echo >+ } >+ fi >+ # Use 'expr', not 'test', to compare the values of func_elfclass, because on >+ # Solaris 11 OpenIndiana and Solaris 11 OmniOS, the result is 001 or 002, >+ # not 1 or 2. >+changequote(,)dnl >+ case $HOST_CPU_C_ABI_32BIT in >+ yes) >+ # 32-bit ABI. >+ acl_is_expected_elfclass () >+ { >+ expr "`func_elfclass | sed -e 's/[ ]//g'`" = 1 > /dev/null >+ } >+ ;; >+ no) >+ # 64-bit ABI. >+ acl_is_expected_elfclass () >+ { >+ expr "`func_elfclass | sed -e 's/[ ]//g'`" = 2 > /dev/null >+ } >+ ;; >+ *) >+ # Unknown. >+ acl_is_expected_elfclass () >+ { >+ : >+ } >+ ;; >+ esac >+changequote([,])dnl >+ else >+ acl_is_expected_elfclass () >+ { >+ : >+ } >+ fi > > dnl Allow the user to override the result by setting acl_cv_libdirstems. > AC_CACHE_CHECK([for the common suffixes of directories in the library search path], > [acl_cv_libdirstems], >- [acl_libdirstem=lib >+ [dnl Try 'lib' first, because that's the default for libdir in GNU, see >+ dnl <https://www.gnu.org/prep/standards/html_node/Directory-Variables.html>. >+ acl_libdirstem=lib > acl_libdirstem2= >+ acl_libdirstem3= > case "$host_os" in > solaris*) > dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment >@@ -197,53 +248,76 @@ > dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." > dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the > dnl symlink is missing, so we set acl_libdirstem2 too. >- if test $gl_cv_solaris_64bit = yes; then >- acl_libdirstem=lib/64 >+ if test $HOST_CPU_C_ABI_32BIT = no; then >+ acl_libdirstem2=lib/64 > case "$host_cpu" in >- sparc*) acl_libdirstem2=lib/sparcv9 ;; >- i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; >+ sparc*) acl_libdirstem3=lib/sparcv9 ;; >+ i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; > esac > fi > ;; > *) > dnl If $CC generates code for a 32-bit ABI, the libraries are >- dnl surely under $prefix/lib, not $prefix/lib64. >- if test "$HOST_CPU_C_ABI_32BIT" != yes; then >- dnl The result is a property of the system. However, non-system >- dnl compilers sometimes have odd library search paths. Therefore >- dnl prefer asking /usr/bin/gcc, if available, rather than $CC. >- searchpath=`(if test -f /usr/bin/gcc \ >- && LC_ALL=C /usr/bin/gcc -print-search-dirs >/dev/null 2>/dev/null; then \ >- LC_ALL=C /usr/bin/gcc -print-search-dirs; \ >- else \ >- LC_ALL=C $CC -print-search-dirs; \ >- fi) 2>/dev/null \ >- | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` >- if test -n "$searchpath"; then >- acl_save_IFS="${IFS= }"; IFS=":" >- for searchdir in $searchpath; do >- if test -d "$searchdir"; then >- case "$searchdir" in >- */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; >- */../ | */.. ) >- # Better ignore directories of this form. They are misleading. >- ;; >- *) searchdir=`cd "$searchdir" && pwd` >- case "$searchdir" in >- */lib64 ) acl_libdirstem=lib64 ;; >- esac ;; >- esac >- fi >- done >- IFS="$acl_save_IFS" >+ dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64. >+ dnl Similarly, if $CC generates code for a 64-bit ABI, the libraries >+ dnl are surely under $prefix/lib or $prefix/lib64, not $prefix/lib32. >+ dnl Find the compiler's search path. However, non-system compilers >+ dnl sometimes have odd library search paths. But we can't simply invoke >+ dnl '/usr/bin/gcc -print-search-dirs' because that would not take into >+ dnl account the -m32/-m31 or -m64 options from the $CC or $CFLAGS. >+ searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ >+ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` >+ if test $HOST_CPU_C_ABI_32BIT != no; then >+ # 32-bit or unknown ABI. >+ if test -d /usr/lib32; then >+ acl_libdirstem2=lib32 > fi > fi >+ if test $HOST_CPU_C_ABI_32BIT != yes; then >+ # 64-bit or unknown ABI. >+ if test -d /usr/lib64; then >+ acl_libdirstem3=lib64 >+ fi >+ fi >+ if test -n "$searchpath"; then >+ acl_save_IFS="${IFS= }"; IFS=":" >+ for searchdir in $searchpath; do >+ if test -d "$searchdir"; then >+ case "$searchdir" in >+ */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; >+ */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; >+ */../ | */.. ) >+ # Better ignore directories of this form. They are misleading. >+ ;; >+ *) searchdir=`cd "$searchdir" && pwd` >+ case "$searchdir" in >+ */lib32 ) acl_libdirstem2=lib32 ;; >+ */lib64 ) acl_libdirstem3=lib64 ;; >+ esac ;; >+ esac >+ fi >+ done >+ IFS="$acl_save_IFS" >+ if test $HOST_CPU_C_ABI_32BIT = yes; then >+ # 32-bit ABI. >+ acl_libdirstem3= >+ fi >+ if test $HOST_CPU_C_ABI_32BIT = no; then >+ # 64-bit ABI. >+ acl_libdirstem2= >+ fi >+ fi > ;; > esac > test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" >- acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2" >+ test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" >+ acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" > ]) >- # Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2. >+ dnl Decompose acl_cv_libdirstems into acl_libdirstem, acl_libdirstem2, and >+ dnl acl_libdirstem3. >+changequote(,)dnl > acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` >- acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'` >+ acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` >+ acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` >+changequote([,])dnl > ]) >diff -ur xz-5.2.5/m4/libtool.m4 xz-5.4.3/m4/libtool.m4 >--- xz-5.2.5/m4/libtool.m4 2020-03-17 17:29:27 >+++ xz-5.4.3/m4/libtool.m4 2023-05-04 17:31:27 >@@ -1,6 +1,7 @@ > # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- > # >-# Copyright (C) 1996-2001, 2003-2018 Free Software Foundation, Inc. >+# Copyright (C) 1996-2001, 2003-2019, 2021-2022 Free Software >+# Foundation, Inc. > # Written by Gordon Matzigkeit, 1996 > # > # This file is free software; the Free Software Foundation gives >@@ -31,7 +32,7 @@ > # along with this program. If not, see <http://www.gnu.org/licenses/>. > ]) > >-# serial 58 LT_INIT >+# serial 59 LT_INIT > > > # LT_PREREQ(VERSION) >@@ -181,6 +182,7 @@ > m4_require([_LT_CHECK_SHELL_FEATURES])dnl > m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl > m4_require([_LT_CMD_RELOAD])dnl >+m4_require([_LT_DECL_FILECMD])dnl > m4_require([_LT_CHECK_MAGIC_METHOD])dnl > m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl > m4_require([_LT_CMD_OLD_ARCHIVE])dnl >@@ -777,7 +779,7 @@ > # if finds mixed CR/LF and LF-only lines. Since sed operates in > # text mode, it properly converts lines to CR/LF. This bash problem > # is reportedly fixed, but why not run on old versions too? >- sed '$q' "$ltmain" >> "$cfgfile" \ >+ $SED '$q' "$ltmain" >> "$cfgfile" \ > || (rm -f "$cfgfile"; exit 1) > > mv -f "$cfgfile" "$ofile" || >@@ -1066,17 +1068,12 @@ > _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; > darwin1.*) > _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; >- darwin*) # darwin 5.x on >- # if running on 10.5 or later, the deployment target defaults >- # to the OS version, if on x86, and 10.4, the deployment >- # target defaults to 10.4. Don't you love it? >- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in >- 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) >- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; >- 10.[[012]][[,.]]*) >- _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; >- 10.*) >- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; >+ darwin*) >+ case $MACOSX_DEPLOYMENT_TARGET,$host in >+ 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) >+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; >+ *) >+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; > esac > ;; > esac >@@ -1125,12 +1122,12 @@ > output_verbose_link_cmd=func_echo_all > _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" > _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" >- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" >- _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" >+ _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" >+ _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" > m4_if([$1], [CXX], > [ if test yes != "$lt_cv_apple_cc_single_mod"; then > _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" >- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" >+ _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" > fi > ],[]) > else >@@ -1244,7 +1241,8 @@ > # _LT_WITH_SYSROOT > # ---------------- > AC_DEFUN([_LT_WITH_SYSROOT], >-[AC_MSG_CHECKING([for sysroot]) >+[m4_require([_LT_DECL_SED])dnl >+AC_MSG_CHECKING([for sysroot]) > AC_ARG_WITH([sysroot], > [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], > [Search for dependent libraries within DIR (or the compiler's sysroot >@@ -1261,7 +1259,7 @@ > fi > ;; #( > /*) >- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` >+ lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` > ;; #( > no|'') > ;; #( >@@ -1291,7 +1289,7 @@ > # options accordingly. > echo 'int i;' > conftest.$ac_ext > if AC_TRY_EVAL(ac_compile); then >- case `/usr/bin/file conftest.$ac_objext` in >+ case `$FILECMD conftest.$ac_objext` in > *ELF-32*) > HPUX_IA64_MODE=32 > ;; >@@ -1308,7 +1306,7 @@ > echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext > if AC_TRY_EVAL(ac_compile); then > if test yes = "$lt_cv_prog_gnu_ld"; then >- case `/usr/bin/file conftest.$ac_objext` in >+ case `$FILECMD conftest.$ac_objext` in > *32-bit*) > LD="${LD-ld} -melf32bsmip" > ;; >@@ -1320,7 +1318,7 @@ > ;; > esac > else >- case `/usr/bin/file conftest.$ac_objext` in >+ case `$FILECMD conftest.$ac_objext` in > *32-bit*) > LD="${LD-ld} -32" > ;; >@@ -1342,7 +1340,7 @@ > echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext > if AC_TRY_EVAL(ac_compile); then > emul=elf >- case `/usr/bin/file conftest.$ac_objext` in >+ case `$FILECMD conftest.$ac_objext` in > *32-bit*) > emul="${emul}32" > ;; >@@ -1350,7 +1348,7 @@ > emul="${emul}64" > ;; > esac >- case `/usr/bin/file conftest.$ac_objext` in >+ case `$FILECMD conftest.$ac_objext` in > *MSB*) > emul="${emul}btsmip" > ;; >@@ -1358,7 +1356,7 @@ > emul="${emul}ltsmip" > ;; > esac >- case `/usr/bin/file conftest.$ac_objext` in >+ case `$FILECMD conftest.$ac_objext` in > *N32*) > emul="${emul}n32" > ;; >@@ -1378,14 +1376,14 @@ > # not appear in the list. > echo 'int i;' > conftest.$ac_ext > if AC_TRY_EVAL(ac_compile); then >- case `/usr/bin/file conftest.o` in >+ case `$FILECMD conftest.o` in > *32-bit*) > case $host in > x86_64-*kfreebsd*-gnu) > LD="${LD-ld} -m elf_i386_fbsd" > ;; > x86_64-*linux*) >- case `/usr/bin/file conftest.o` in >+ case `$FILECMD conftest.o` in > *x86-64*) > LD="${LD-ld} -m elf32_x86_64" > ;; >@@ -1453,7 +1451,7 @@ > # options accordingly. > echo 'int i;' > conftest.$ac_ext > if AC_TRY_EVAL(ac_compile); then >- case `/usr/bin/file conftest.o` in >+ case `$FILECMD conftest.o` in > *64-bit*) > case $lt_cv_prog_gnu_ld in > yes*) >@@ -1726,7 +1724,7 @@ > lt_cv_sys_max_cmd_len=8192; > ;; > >- bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) >+ bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) > # This has been around since 386BSD, at least. Likely further. > if test -x /sbin/sysctl; then > lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` >@@ -1769,7 +1767,7 @@ > sysv5* | sco5v6* | sysv4.2uw2*) > kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` > if test -n "$kargmax"; then >- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` >+ lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` > else > lt_cv_sys_max_cmd_len=32768 > fi >@@ -2570,7 +2568,7 @@ > case $host_os in > cygwin*) > # Cygwin DLLs use 'cyg' prefix rather than 'lib' >- soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' >+ soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' > m4_if([$1], [],[ > sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) > ;; >@@ -2580,7 +2578,7 @@ > ;; > pw32*) > # pw32 DLLs use 'pw' prefix rather than 'lib' >- library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' >+ library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' > ;; > esac > dynamic_linker='Win32 ld.exe' >@@ -2606,7 +2604,7 @@ > done > IFS=$lt_save_ifs > # Convert to MSYS style. >- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` >+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` > ;; > cygwin*) > # Convert to unix form, then to dos form, then back to unix form >@@ -2676,7 +2674,7 @@ > shlibpath_var=LD_LIBRARY_PATH > ;; > >-freebsd* | dragonfly*) >+freebsd* | dragonfly* | midnightbsd*) > # DragonFly does not have aout. When/if they implement a new > # versioning mechanism, adjust this. > if test -x /usr/bin/objformat; then >@@ -3475,7 +3473,7 @@ > > bsdi[[45]]*) > lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' >- lt_cv_file_magic_cmd='/usr/bin/file -L' >+ lt_cv_file_magic_cmd='$FILECMD -L' > lt_cv_file_magic_test_file=/shlib/libc.so > ;; > >@@ -3509,14 +3507,14 @@ > lt_cv_deplibs_check_method=pass_all > ;; > >-freebsd* | dragonfly*) >+freebsd* | dragonfly* | midnightbsd*) > if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then > case $host_cpu in > i*86 ) > # Not sure whether the presence of OpenBSD here was a mistake. > # Let's accept both of them until this is cleared up. > lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' >- lt_cv_file_magic_cmd=/usr/bin/file >+ lt_cv_file_magic_cmd=$FILECMD > lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` > ;; > esac >@@ -3530,7 +3528,7 @@ > ;; > > hpux10.20* | hpux11*) >- lt_cv_file_magic_cmd=/usr/bin/file >+ lt_cv_file_magic_cmd=$FILECMD > case $host_cpu in > ia64*) > lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' >@@ -3577,7 +3575,7 @@ > > newos6*) > lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' >- lt_cv_file_magic_cmd=/usr/bin/file >+ lt_cv_file_magic_cmd=$FILECMD > lt_cv_file_magic_test_file=/usr/lib/libnls.so > ;; > >@@ -3704,13 +3702,13 @@ > mingw*) lt_bad_file=conftest.nm/nofile ;; > *) lt_bad_file=/dev/null ;; > esac >- case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in >+ case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in > *$lt_bad_file* | *'Invalid file or object type'*) > lt_cv_path_NM="$tmp_nm -B" > break 2 > ;; > *) >- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in >+ case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in > */dev/null*) > lt_cv_path_NM="$tmp_nm -p" > break 2 >@@ -3736,7 +3734,7 @@ > # Let the user override the test. > else > AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) >- case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in >+ case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in > *COFF*) > DUMPBIN="$DUMPBIN -symbols -headers" > ;; >@@ -3976,7 +3974,7 @@ > > if test "$lt_cv_nm_interface" = "MS dumpbin"; then > # Gets list of data symbols to import. >- lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" >+ lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" > # Adjust the below global symbol transforms to fixup imported variables. > lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" > lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" >@@ -3994,20 +3992,20 @@ > # Transform an extracted symbol line into a proper C declaration. > # Some systems (esp. on ia64) link data and code symbols differently, > # so use this general approach. >-lt_cv_sys_global_symbol_to_cdecl="sed -n"\ >+lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ > $lt_cdecl_hook\ > " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ > " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" > > # Transform an extracted symbol line into symbol name and symbol address >-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ >+lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ > $lt_c_name_hook\ > " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ > " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" > > # Transform an extracted symbol line into symbol name with lib prefix and > # symbol address. >-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ >+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ > $lt_c_name_lib_hook\ > " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ > " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ >@@ -4049,9 +4047,9 @@ > " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ > " ' prfx=^$ac_symprfx]" > else >- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" >+ lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" > fi >- lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" >+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" > > # Check to see that the pipe works correctly. > pipe_works=no >@@ -4338,7 +4336,7 @@ > ;; > esac > ;; >- freebsd* | dragonfly*) >+ freebsd* | dragonfly* | midnightbsd*) > # FreeBSD uses GNU C++ > ;; > hpux9* | hpux10* | hpux11*) >@@ -4421,7 +4419,7 @@ > _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' > ;; > *) >- case `$CC -V 2>&1 | sed 5q` in >+ case `$CC -V 2>&1 | $SED 5q` in > *Sun\ C*) > # Sun C++ 5.9 > _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' >@@ -4757,7 +4755,7 @@ > _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' > ;; > *) >- case `$CC -V 2>&1 | sed 5q` in >+ case `$CC -V 2>&1 | $SED 5q` in > *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) > # Sun Fortran 8.3 passes all unrecognized flags to the linker > _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' >@@ -5065,7 +5063,7 @@ > _LT_TAGVAR(whole_archive_flag_spec, $1)= > fi > supports_anon_versioning=no >- case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in >+ case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in > *GNU\ gold*) supports_anon_versioning=yes ;; > *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 > *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... >@@ -5192,7 +5190,7 @@ > # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link > # time. Moving up from 0x10000000 also allows more sbrk(2) space. > _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' >- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' >+ _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' > ;; > > gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) >@@ -5235,7 +5233,7 @@ > _LT_TAGVAR(compiler_needs_object, $1)=yes > ;; > esac >- case `$CC -V 2>&1 | sed 5q` in >+ case `$CC -V 2>&1 | $SED 5q` in > *Sun\ C*) # Sun C 5.9 > _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' > _LT_TAGVAR(compiler_needs_object, $1)=yes >@@ -5247,7 +5245,7 @@ > > if test yes = "$supports_anon_versioning"; then > _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ >- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ >+ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ > echo "local: *; };" >> $output_objdir/$libname.ver~ > $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' > fi >@@ -5263,7 +5261,7 @@ > _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' > if test yes = "$supports_anon_versioning"; then > _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ >- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ >+ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ > echo "local: *; };" >> $output_objdir/$libname.ver~ > $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' > fi >@@ -5672,7 +5670,7 @@ > ;; > > # FreeBSD 3 and greater uses gcc -shared to do shared libraries. >- freebsd* | dragonfly*) >+ freebsd* | dragonfly* | midnightbsd*) > _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' > _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' > _LT_TAGVAR(hardcode_direct, $1)=yes >@@ -6784,7 +6782,7 @@ > _LT_TAGVAR(archive_cmds_need_lc, $1)=no > ;; > >- freebsd* | dragonfly*) >+ freebsd* | dragonfly* | midnightbsd*) > # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF > # conventions > _LT_TAGVAR(ld_shlibs, $1)=yes >@@ -6921,7 +6919,7 @@ > # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link > # time. Moving up from 0x10000000 also allows more sbrk(2) space. > _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' >- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' >+ _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' > ;; > irix5* | irix6*) > case $cc_basename in >@@ -7061,13 +7059,13 @@ > _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' > if test yes = "$supports_anon_versioning"; then > _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ >- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ >+ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ > echo "local: *; };" >> $output_objdir/$libname.ver~ > $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' > fi > ;; > *) >- case `$CC -V 2>&1 | sed 5q` in >+ case `$CC -V 2>&1 | $SED 5q` in > *Sun\ C*) > # Sun C++ 5.9 > _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' >@@ -8212,6 +8210,14 @@ > _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) > AC_SUBST([DLLTOOL]) > ]) >+ >+# _LT_DECL_FILECMD >+# ---------------- >+# Check for a file(cmd) program that can be used to detect file type and magic >+m4_defun([_LT_DECL_FILECMD], >+[AC_CHECK_TOOL([FILECMD], [file], [:]) >+_LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) >+])# _LD_DECL_FILECMD > > # _LT_DECL_SED > # ------------ >diff -ur xz-5.2.5/m4/ltoptions.m4 xz-5.4.3/m4/ltoptions.m4 >--- xz-5.2.5/m4/ltoptions.m4 2020-03-17 17:29:27 >+++ xz-5.4.3/m4/ltoptions.m4 2023-05-04 17:31:28 >@@ -1,7 +1,7 @@ > # Helper functions for option handling. -*- Autoconf -*- > # >-# Copyright (C) 2004-2005, 2007-2009, 2011-2018 Free Software >-# Foundation, Inc. >+# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2022 Free >+# Software Foundation, Inc. > # Written by Gary V. Vaughan, 2004 > # > # This file is free software; the Free Software Foundation gives >diff -ur xz-5.2.5/m4/ltsugar.m4 xz-5.4.3/m4/ltsugar.m4 >--- xz-5.2.5/m4/ltsugar.m4 2020-03-17 17:29:27 >+++ xz-5.4.3/m4/ltsugar.m4 2023-05-04 17:31:28 >@@ -1,6 +1,6 @@ > # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- > # >-# Copyright (C) 2004-2005, 2007-2008, 2011-2018 Free Software >+# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2022 Free Software > # Foundation, Inc. > # Written by Gary V. Vaughan, 2004 > # >diff -ur xz-5.2.5/m4/ltversion.m4 xz-5.4.3/m4/ltversion.m4 >--- xz-5.2.5/m4/ltversion.m4 2020-03-17 17:29:27 >+++ xz-5.4.3/m4/ltversion.m4 2023-05-04 17:31:28 >@@ -1,6 +1,7 @@ > # ltversion.m4 -- version numbers -*- Autoconf -*- > # >-# Copyright (C) 2004, 2011-2018 Free Software Foundation, Inc. >+# Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation, >+# Inc. > # Written by Scott James Remnant, 2004 > # > # This file is free software; the Free Software Foundation gives >@@ -9,15 +10,15 @@ > > # @configure_input@ > >-# serial 4221 ltversion.m4 >+# serial 4249 ltversion.m4 > # This file is part of GNU Libtool > >-m4_define([LT_PACKAGE_VERSION], [2.4.6.42-b88ce-dirty]) >-m4_define([LT_PACKAGE_REVISION], [2.4.6.42]) >+m4_define([LT_PACKAGE_VERSION], [2.4.7.4-1ec8f-dirty]) >+m4_define([LT_PACKAGE_REVISION], [2.4.7.4]) > > AC_DEFUN([LTVERSION_VERSION], >-[macro_version='2.4.6.42-b88ce-dirty' >-macro_revision='2.4.6.42' >+[macro_version='2.4.7.4-1ec8f-dirty' >+macro_revision='2.4.7.4' > _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) > _LT_DECL(, macro_revision, 0) > ]) >diff -ur xz-5.2.5/m4/lt~obsolete.m4 xz-5.4.3/m4/lt~obsolete.m4 >--- xz-5.2.5/m4/lt~obsolete.m4 2020-03-17 17:29:27 >+++ xz-5.4.3/m4/lt~obsolete.m4 2023-05-04 17:31:28 >@@ -1,7 +1,7 @@ > # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- > # >-# Copyright (C) 2004-2005, 2007, 2009, 2011-2018 Free Software >-# Foundation, Inc. >+# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2022 Free >+# Software Foundation, Inc. > # Written by Scott James Remnant, 2004. > # > # This file is free software; the Free Software Foundation gives >diff -ur xz-5.2.5/m4/nls.m4 xz-5.4.3/m4/nls.m4 >--- xz-5.2.5/m4/nls.m4 2020-03-17 17:29:26 >+++ xz-5.4.3/m4/nls.m4 2023-05-04 17:27:40 >@@ -1,16 +1,16 @@ >-# nls.m4 serial 5 (gettext-0.18) >-dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019 Free Software >-dnl Foundation, Inc. >+# nls.m4 serial 6 (gettext-0.20.2) >+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019-2022 Free >+dnl Software Foundation, Inc. > dnl This file is free software; the Free Software Foundation > dnl gives unlimited permission to copy and/or distribute it, > dnl with or without modifications, as long as this notice is preserved. > dnl > dnl This file can be used in projects which are not available under >-dnl the GNU General Public License or the GNU Library General Public >+dnl the GNU General Public License or the GNU Lesser General Public > dnl License but which still want to provide support for the GNU gettext > dnl functionality. > dnl Please note that the actual code of the GNU gettext library is covered >-dnl by the GNU Library General Public License, and the rest of the GNU >+dnl by the GNU Lesser General Public License, and the rest of the GNU > dnl gettext package is covered by the GNU General Public License. > dnl They are *not* in the public domain. > >diff -ur xz-5.2.5/m4/po.m4 xz-5.4.3/m4/po.m4 >--- xz-5.2.5/m4/po.m4 2020-03-17 17:29:26 >+++ xz-5.4.3/m4/po.m4 2023-05-04 17:27:40 >@@ -1,15 +1,15 @@ >-# po.m4 serial 30 (gettext-0.20) >-dnl Copyright (C) 1995-2014, 2016, 2018-2019 Free Software Foundation, Inc. >+# po.m4 serial 32 (gettext-0.21.1) >+dnl Copyright (C) 1995-2014, 2016, 2018-2022 Free Software Foundation, Inc. > dnl This file is free software; the Free Software Foundation > dnl gives unlimited permission to copy and/or distribute it, > dnl with or without modifications, as long as this notice is preserved. > dnl > dnl This file can be used in projects which are not available under >-dnl the GNU General Public License or the GNU Library General Public >+dnl the GNU General Public License or the GNU Lesser General Public > dnl License but which still want to provide support for the GNU gettext > dnl functionality. > dnl Please note that the actual code of the GNU gettext library is covered >-dnl by the GNU Library General Public License, and the rest of the GNU >+dnl by the GNU Lesser General Public License, and the rest of the GNU > dnl gettext package is covered by the GNU General Public License. > dnl They are *not* in the public domain. > >@@ -179,7 +179,9 @@ > # presentlang can be used as a fallback for messages > # which are not translated in the desiredlang catalog). > case "$desiredlang" in >- "$presentlang"*) useit=yes;; >+ "$presentlang" | "$presentlang"_* | "$presentlang".* | "$presentlang"@*) >+ useit=yes >+ ;; > esac > done > if test $useit = yes; then >@@ -379,7 +381,9 @@ > # presentlang can be used as a fallback for messages > # which are not translated in the desiredlang catalog). > case "$desiredlang" in >- "$presentlang"*) useit=yes;; >+ "$presentlang" | "$presentlang"_* | "$presentlang".* | "$presentlang"@*) >+ useit=yes >+ ;; > esac > done > if test $useit = yes; then >diff -ur xz-5.2.5/m4/progtest.m4 xz-5.4.3/m4/progtest.m4 >--- xz-5.2.5/m4/progtest.m4 2020-03-17 17:29:26 >+++ xz-5.4.3/m4/progtest.m4 2023-05-04 17:27:40 >@@ -1,22 +1,22 @@ >-# progtest.m4 serial 7 (gettext-0.18.2) >-dnl Copyright (C) 1996-2003, 2005, 2008-2019 Free Software Foundation, Inc. >+# progtest.m4 serial 9 (gettext-0.21.1) >+dnl Copyright (C) 1996-2003, 2005, 2008-2022 Free Software Foundation, Inc. > dnl This file is free software; the Free Software Foundation > dnl gives unlimited permission to copy and/or distribute it, > dnl with or without modifications, as long as this notice is preserved. > dnl > dnl This file can be used in projects which are not available under >-dnl the GNU General Public License or the GNU Library General Public >+dnl the GNU General Public License or the GNU Lesser General Public > dnl License but which still want to provide support for the GNU gettext > dnl functionality. > dnl Please note that the actual code of the GNU gettext library is covered >-dnl by the GNU Library General Public License, and the rest of the GNU >+dnl by the GNU Lesser General Public License, and the rest of the GNU > dnl gettext package is covered by the GNU General Public License. > dnl They are *not* in the public domain. > > dnl Authors: > dnl Ulrich Drepper <drepper@cygnus.com>, 1996. > >-AC_PREREQ([2.50]) >+AC_PREREQ([2.53]) > > # Search path for a program which passes the given test. > >@@ -61,7 +61,7 @@ > ;; > *) > ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR >- for ac_dir in ifelse([$5], , $PATH, [$5]); do >+ for ac_dir in m4_if([$5], , $PATH, [$5]); do > IFS="$ac_save_IFS" > test -z "$ac_dir" && ac_dir=. > for ac_exec_ext in '' $ac_executable_extensions; do >@@ -77,12 +77,12 @@ > IFS="$ac_save_IFS" > dnl If no 4th arg is given, leave the cache variable unset, > dnl so AC_PATH_PROGS will keep looking. >-ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" >+m4_if([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" > ])dnl > ;; > esac])dnl > $1="$ac_cv_path_$1" >-if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then >+if test m4_if([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then > AC_MSG_RESULT([$][$1]) > else > AC_MSG_RESULT([no]) >diff -ur xz-5.2.5/m4/tuklib_cpucores.m4 xz-5.4.3/m4/tuklib_cpucores.m4 >--- xz-5.2.5/m4/tuklib_cpucores.m4 2020-03-17 17:28:54 >+++ xz-5.4.3/m4/tuklib_cpucores.m4 2023-05-04 17:21:05 >@@ -95,7 +95,6 @@ > #ifdef __QNX__ > compile error > #endif >-#include <sys/types.h> > #ifdef HAVE_SYS_PARAM_H > # include <sys/param.h> > #endif >@@ -103,7 +102,12 @@ > int > main(void) > { >+#ifdef HW_NCPUONLINE >+ /* This is preferred on OpenBSD, see tuklib_cpucores.c. */ >+ int name[2] = { CTL_HW, HW_NCPUONLINE }; >+#else > int name[2] = { CTL_HW, HW_NCPU }; >+#endif > int cpus; > size_t cpus_size = sizeof(cpus); > sysctl(name, 2, &cpus, &cpus_size, NULL, 0); >diff -ur xz-5.2.5/m4/tuklib_integer.m4 xz-5.4.3/m4/tuklib_integer.m4 >--- xz-5.2.5/m4/tuklib_integer.m4 2020-03-17 17:28:54 >+++ xz-5.4.3/m4/tuklib_integer.m4 2023-05-04 17:21:05 >@@ -8,8 +8,8 @@ > # Checks for tuklib_integer.h: > # - Endianness > # - Does the compiler or the operating system provide byte swapping macros >-# - Does the hardware support fast unaligned access to 16-bit >-# and 32-bit integers >+# - Does the hardware support fast unaligned access to 16-bit, 32-bit, >+# and 64-bit integers > # > # COPYING > # >@@ -64,8 +64,9 @@ > AC_MSG_CHECKING([if unaligned memory access should be used]) > AC_ARG_ENABLE([unaligned-access], AS_HELP_STRING([--enable-unaligned-access], > [Enable if the system supports *fast* unaligned memory access >- with 16-bit and 32-bit integers. By default, this is enabled >- only on x86, x86_64, and big endian PowerPC.]), >+ with 16-bit, 32-bit, and 64-bit integers. By default, >+ this is enabled only on x86, x86_64, big endian PowerPC, >+ and some ARM systems.]), > [], [enable_unaligned_access=auto]) > if test "x$enable_unaligned_access" = xauto ; then > # TODO: There may be other architectures, on which unaligned access >@@ -74,6 +75,17 @@ > i?86|x86_64|powerpc|powerpc64) > enable_unaligned_access=yes > ;; >+ arm*|aarch64*) >+ # On 32-bit and 64-bit ARM, GCC and Clang >+ # #define __ARM_FEATURE_UNALIGNED if >+ # unaligned access is supported. >+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([ >+#ifndef __ARM_FEATURE_UNALIGNED >+compile error >+#endif >+int main(void) { return 0; } >+])], [enable_unaligned_access=yes], [enable_unaligned_access=no]) >+ ;; > *) > enable_unaligned_access=no > ;; >@@ -81,8 +93,8 @@ > fi > if test "x$enable_unaligned_access" = xyes ; then > AC_DEFINE([TUKLIB_FAST_UNALIGNED_ACCESS], [1], [Define to 1 if >- the system supports fast unaligned access to 16-bit and >- 32-bit integers.]) >+ the system supports fast unaligned access to 16-bit, >+ 32-bit, and 64-bit integers.]) > AC_MSG_RESULT([yes]) > else > AC_MSG_RESULT([no]) >diff -ur xz-5.2.5/m4/tuklib_physmem.m4 xz-5.4.3/m4/tuklib_physmem.m4 >--- xz-5.2.5/m4/tuklib_physmem.m4 2020-03-17 17:28:54 >+++ xz-5.4.3/m4/tuklib_physmem.m4 2023-05-04 17:21:05 >@@ -88,7 +88,6 @@ > ]])], [tuklib_cv_physmem_method=sysconf], [ > > AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ >-#include <sys/types.h> > #ifdef HAVE_SYS_PARAM_H > # include <sys/param.h> > #endif >diff -ur xz-5.2.5/m4/tuklib_progname.m4 xz-5.4.3/m4/tuklib_progname.m4 >--- xz-5.2.5/m4/tuklib_progname.m4 2020-03-17 17:28:50 >+++ xz-5.4.3/m4/tuklib_progname.m4 2023-05-04 17:21:05 >@@ -21,5 +21,8 @@ > > AC_DEFUN_ONCE([TUKLIB_PROGNAME], [ > AC_REQUIRE([TUKLIB_COMMON]) >-AC_CHECK_DECLS([program_invocation_name], [], [], [#include <errno.h>]) >+AC_CHECK_DECL([program_invocation_name], [AC_DEFINE( >+ [HAVE_PROGRAM_INVOCATION_NAME], [1], >+ [Define to 1 if `program_invocation_name' is declared in <errno.h>.])], >+ [], [#include <errno.h>]) > ])dnl >diff -ur xz-5.2.5/po/LINGUAS xz-5.4.3/po/LINGUAS >--- xz-5.2.5/po/LINGUAS 2020-03-17 17:28:54 >+++ xz-5.4.3/po/LINGUAS 2023-05-04 17:21:05 >@@ -1,12 +1,23 @@ >+ca > cs > da > de >+eo >+es > fi > fr >+hr > hu > it >+ko > pl >+pt > pt_BR >+ro >+sr >+sv >+tr >+uk > vi > zh_CN > zh_TW >diff -ur xz-5.2.5/po/Makefile.in.in xz-5.4.3/po/Makefile.in.in >--- xz-5.2.5/po/Makefile.in.in 2020-03-17 17:29:26 >+++ xz-5.4.3/po/Makefile.in.in 2023-05-04 17:27:40 >@@ -1,13 +1,13 @@ > # Makefile for PO directory in any package using GNU gettext. > # Copyright (C) 1995-2000 Ulrich Drepper <drepper@gnu.ai.mit.edu> >-# Copyright (C) 2000-2019 Free Software Foundation, Inc. >+# Copyright (C) 2000-2020 Free Software Foundation, Inc. > # > # Copying and distribution of this file, with or without modification, > # are permitted in any medium without royalty provided the copyright > # notice and this notice are preserved. This file is offered as-is, > # without any warranty. > # >-# Origin: gettext-0.20 >+# Origin: gettext-0.21 > GETTEXT_MACRO_VERSION = 0.20 > > PACKAGE = @PACKAGE@ >@@ -90,6 +90,9 @@ > > # Makevars gets inserted here. (Don't remove this line!) > >+all: all-@USE_NLS@ >+ >+ > .SUFFIXES: > .SUFFIXES: .po .gmo .sed .sin .nop .po-create .po-update > >@@ -107,7 +110,8 @@ > # the .pot file. This eliminates the need to update the .po files when the > # .pot file has changed, which would be troublesome if the .po files are put > # under version control. >-.po.gmo: $(srcdir)/$(DOMAIN).pot >+$(GMOFILES): $(srcdir)/$(DOMAIN).pot >+.po.gmo: > @lang=`echo $* | sed -e 's,.*/,,'`; \ > test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ > echo "$${cdcmd}rm -f $${lang}.gmo && $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.1po && rm -f $${lang}.1po"; \ >@@ -123,8 +127,6 @@ > mv t-$@ $@ > > >-all: all-@USE_NLS@ >- > all-yes: $(srcdir)/stamp-po > all-no: > >@@ -413,12 +415,17 @@ > @$(MAKE) dist2 > # This is a separate target because 'update-po' must be executed before. > dist2: $(srcdir)/stamp-po $(DISTFILES) >- dists="$(DISTFILES)"; \ >+ @dists="$(DISTFILES)"; \ > if test "$(PACKAGE)" = "gettext-tools"; then \ > dists="$$dists Makevars.template"; \ > fi; \ > if test -f $(srcdir)/$(DOMAIN).pot; then \ > dists="$$dists $(DOMAIN).pot stamp-po"; \ >+ else \ >+ case $(XGETTEXT) in \ >+ :) echo "Warning: Creating a tarball without '$(DOMAIN).pot', because a suitable 'xgettext' program was not found in PATH." 1>&2;; \ >+ *) echo "Warning: Creating a tarball without '$(DOMAIN).pot', because 'xgettext' found no strings to extract. Check the contents of the POTFILES.in file and the XGETTEXT_OPTIONS in the Makevars file." 1>&2;; \ >+ esac; \ > fi; \ > if test -f $(srcdir)/ChangeLog; then \ > dists="$$dists ChangeLog"; \ >Only in xz-5.4.3/po: ca.gmo >Only in xz-5.4.3/po: ca.po >Binary files xz-5.2.5/po/cs.gmo and xz-5.4.3/po/cs.gmo differ >diff -ur xz-5.2.5/po/cs.po xz-5.4.3/po/cs.po >--- xz-5.2.5/po/cs.po 2020-03-17 17:29:58 >+++ xz-5.4.3/po/cs.po 2023-05-04 17:32:20 >@@ -5,8 +5,8 @@ > msgid "" > msgstr "" > "Project-Id-Version: xz-utils\n" >-"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >+"Report-Msgid-Bugs-To: xz@tukaani.org\n" >+"POT-Creation-Date: 2023-05-04 22:32+0800\n" > "PO-Revision-Date: 2010-12-03 11:32+0100\n" > "Last-Translator: Marek Äernocký <marek@manet.cz>\n" > "Language-Team: Czech <diskuze@lists.l10n.cz>\n" >@@ -18,99 +18,121 @@ > "X-Poedit-Language: Czech\n" > "X-Poedit-SourceCharset: utf-8\n" > >-#: src/xz/args.c:63 >+#: src/xz/args.c:77 > #, c-format > msgid "%s: Invalid argument to --block-list" > msgstr "" > >-#: src/xz/args.c:73 >+#: src/xz/args.c:87 > #, c-format > msgid "%s: Too many arguments to --block-list" > msgstr "" > >-#: src/xz/args.c:102 >+#: src/xz/args.c:116 > msgid "0 can only be used as the last element in --block-list" > msgstr "" > >-#: src/xz/args.c:406 >+#: src/xz/args.c:451 > #, c-format > msgid "%s: Unknown file format type" > msgstr "%s: Neznámý typ formátu souboru" > >-#: src/xz/args.c:429 src/xz/args.c:437 >+#: src/xz/args.c:474 src/xz/args.c:482 > #, c-format > msgid "%s: Unsupported integrity check type" > msgstr "%s: Neznámý typ kontroly integrity" > >-#: src/xz/args.c:473 >+#: src/xz/args.c:518 > msgid "Only one file can be specified with `--files' or `--files0'." > msgstr "Spolu s pÅepÃnaÄi â--filesâ nebo â--files0â může být zadán pouze jeden soubor" > >-#: src/xz/args.c:541 >+#: src/xz/args.c:586 > #, c-format > msgid "The environment variable %s contains too many arguments" > msgstr "PromÄnná prostÅedà %s obsahuje pÅÃliÅ¡ mnoho argumentů" > >-#: src/xz/args.c:643 >+#: src/xz/args.c:688 > msgid "Compression support was disabled at build time" > msgstr "" > >-#: src/xz/args.c:650 >+#: src/xz/args.c:695 > msgid "Decompression support was disabled at build time" > msgstr "" > >-#: src/xz/coder.c:110 >+#: src/xz/args.c:701 >+msgid "Compression of lzip files (.lz) is not supported" >+msgstr "" >+ >+#: src/xz/args.c:732 >+#, fuzzy >+#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgstr "%s: S pÅepÃnaÄem --format=raw je vyžadován --sufix=.PRIP, vyjma zápisu do standardnÃho výstupu" >+ >+#: src/xz/coder.c:115 > msgid "Maximum number of filters is four" > msgstr "Maximálnà poÄet filtrů je ÄtyÅi" > >-#: src/xz/coder.c:129 >+#: src/xz/coder.c:134 > msgid "Memory usage limit is too low for the given filter setup." > msgstr "Omezenà použitelné pamÄti je pÅÃliÅ¡ malé pro dané nastavenà filtru." > >-#: src/xz/coder.c:159 >+#: src/xz/coder.c:169 > msgid "Using a preset in raw mode is discouraged." > msgstr "Použità pÅednastavenà v režimu raw je nevhodné." > >-#: src/xz/coder.c:161 >+#: src/xz/coder.c:171 > msgid "The exact options of the presets may vary between software versions." > msgstr "PÅesné volby u pÅednastavenà se mohou liÅ¡it mezi různými verzemi softwaru." > >-#: src/xz/coder.c:184 >+#: src/xz/coder.c:194 > msgid "The .lzma format supports only the LZMA1 filter" > msgstr "Formát .lzma podporuje pouze filtr LZMA1" > >-#: src/xz/coder.c:192 >+#: src/xz/coder.c:202 > msgid "LZMA1 cannot be used with the .xz format" > msgstr "LZMA1 nelze použÃt s formátem .xz" > >-#: src/xz/coder.c:209 >+#: src/xz/coder.c:219 > msgid "The filter chain is incompatible with --flush-timeout" > msgstr "" > >-#: src/xz/coder.c:215 >+#: src/xz/coder.c:225 > msgid "Switching to single-threaded mode due to --flush-timeout" > msgstr "" > >-#: src/xz/coder.c:235 >+#: src/xz/coder.c:249 > #, c-format > msgid "Using up to %<PRIu32> threads." > msgstr "" > >-#: src/xz/coder.c:251 >+#: src/xz/coder.c:265 > msgid "Unsupported filter chain or filter options" > msgstr "Nepodporovaný omezujÃcà filtr nebo volby filtru" > >-#: src/xz/coder.c:263 >+#: src/xz/coder.c:277 > #, c-format > msgid "Decompression will need %s MiB of memory." > msgstr "Dekomprimace bude vyžadovat %s MiB pamÄti." > >-#: src/xz/coder.c:300 >+#: src/xz/coder.c:309 >+#, fuzzy, c-format >+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgstr "PÅizpůsobit velikost slovnÃku LZMA%c z %s MiB na %s MiB, tak aby nebylo pÅekroÄeno omezenà použitelné pamÄti %s MiB" >+ >+#: src/xz/coder.c:329 > #, c-format >-msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway." > msgstr "" > >-#: src/xz/coder.c:354 >+#: src/xz/coder.c:356 >+#, fuzzy, c-format >+#| msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" >+msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB" >+msgstr "PÅizpůsobit velikost slovnÃku LZMA%c z %s MiB na %s MiB, tak aby nebylo pÅekroÄeno omezenà použitelné pamÄti %s MiB" >+ >+#: src/xz/coder.c:411 > #, c-format > msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" > msgstr "PÅizpůsobit velikost slovnÃku LZMA%c z %s MiB na %s MiB, tak aby nebylo pÅekroÄeno omezenà použitelné pamÄti %s MiB" >@@ -120,11 +142,11 @@ > msgid "Error creating a pipe: %s" > msgstr "" > >-#: src/xz/file_io.c:224 >+#: src/xz/file_io.c:252 > msgid "Failed to enable the sandbox" > msgstr "" > >-#: src/xz/file_io.c:266 >+#: src/xz/file_io.c:294 > #, c-format > msgid "%s: poll() failed: %s" > msgstr "" >@@ -139,195 +161,341 @@ > #. it is possible that the user has put a new file in place > #. of the original file, and in that case it obviously > #. shouldn't be removed. >-#: src/xz/file_io.c:333 >+#: src/xz/file_io.c:361 > #, c-format > msgid "%s: File seems to have been moved, not removing" > msgstr "%s: Vypadá to, že soubor byl pÅesunut, proto nebude odstranÄn" > >-#: src/xz/file_io.c:340 src/xz/file_io.c:882 >+#: src/xz/file_io.c:368 src/xz/file_io.c:924 > #, c-format > msgid "%s: Cannot remove: %s" > msgstr "%s: Nelze odstranit: %s" > >-#: src/xz/file_io.c:366 >+#: src/xz/file_io.c:394 > #, c-format > msgid "%s: Cannot set the file owner: %s" > msgstr "%s: Nelze nastavit vlastnÃka souboru: %s" > >-#: src/xz/file_io.c:372 >+#: src/xz/file_io.c:407 > #, c-format > msgid "%s: Cannot set the file group: %s" > msgstr "%s: Nelze nastavit skupinu souboru: %s" > >-#: src/xz/file_io.c:391 >+#: src/xz/file_io.c:426 > #, c-format > msgid "%s: Cannot set the file permissions: %s" > msgstr "%s: Nelze nastavit oprávnÄnà souboru: %s" > >-#: src/xz/file_io.c:517 >+#: src/xz/file_io.c:552 > #, c-format > msgid "Error getting the file status flags from standard input: %s" > msgstr "" > >-#: src/xz/file_io.c:574 src/xz/file_io.c:636 >+#: src/xz/file_io.c:610 src/xz/file_io.c:672 > #, c-format > msgid "%s: Is a symbolic link, skipping" > msgstr "%s: Jedná se o symbolický odkaz, vynechává se" > >-#: src/xz/file_io.c:665 >+#: src/xz/file_io.c:701 > #, c-format > msgid "%s: Is a directory, skipping" > msgstr "%s: Jedná se o složku, vynechává se" > >-#: src/xz/file_io.c:671 >+#: src/xz/file_io.c:707 > #, c-format > msgid "%s: Not a regular file, skipping" > msgstr "%s: Nejedná se o bÄžný soubor, vynechává se" > >-#: src/xz/file_io.c:688 >+#: src/xz/file_io.c:724 > #, c-format > msgid "%s: File has setuid or setgid bit set, skipping" > msgstr "%s: Soubor má nastavený bit setuid nebo setgid, vynechává se" > >-#: src/xz/file_io.c:695 >+#: src/xz/file_io.c:731 > #, c-format > msgid "%s: File has sticky bit set, skipping" > msgstr "%s: Soubor má nastavený bit sticky, vynechává se" > >-#: src/xz/file_io.c:702 >+#: src/xz/file_io.c:738 > #, c-format > msgid "%s: Input file has more than one hard link, skipping" > msgstr "%s: Vstupnà soubor má vÃce než jeden pevný odkaz, vynechává se" > >-#: src/xz/file_io.c:792 >+#: src/xz/file_io.c:780 >+msgid "Empty filename, skipping" >+msgstr "Prázdný název souboru, vynechává se" >+ >+#: src/xz/file_io.c:834 > #, c-format > msgid "Error restoring the status flags to standard input: %s" > msgstr "" > >-#: src/xz/file_io.c:840 >+#: src/xz/file_io.c:882 > #, c-format > msgid "Error getting the file status flags from standard output: %s" > msgstr "" > >-#: src/xz/file_io.c:1018 >+#: src/xz/file_io.c:1060 > #, c-format > msgid "Error restoring the O_APPEND flag to standard output: %s" > msgstr "Chyba pÅi obnovenà pÅÃznaku O_APPEND na standardnà výstup: %s" > >-#: src/xz/file_io.c:1030 >+#: src/xz/file_io.c:1072 > #, c-format > msgid "%s: Closing the file failed: %s" > msgstr "%s: Selhalo zavÅenà souboru: %s" > >-#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 >+#: src/xz/file_io.c:1108 src/xz/file_io.c:1371 > #, c-format > msgid "%s: Seeking failed when trying to create a sparse file: %s" > msgstr "%s: Selhalo nastavenà pozice pÅi pokusu o vytvoÅenà souboru ÅÃdké matice: %s" > >-#: src/xz/file_io.c:1167 >+#: src/xz/file_io.c:1209 > #, c-format > msgid "%s: Read error: %s" > msgstr "%s: Chyba ÄtenÃ: %s" > >-#: src/xz/file_io.c:1191 >+#: src/xz/file_io.c:1239 > #, c-format > msgid "%s: Error seeking the file: %s" > msgstr "%s: Chyba pÅi posunu v rámci souboru: %s" > >-#: src/xz/file_io.c:1201 >+#: src/xz/file_io.c:1263 > #, c-format > msgid "%s: Unexpected end of file" > msgstr "%s: NeoÄekávaný konec souboru" > >-#: src/xz/file_io.c:1260 >+#: src/xz/file_io.c:1322 > #, c-format > msgid "%s: Write error: %s" > msgstr "%s: Chyba zápisu: %s" > >-#: src/xz/hardware.c:137 >+#: src/xz/hardware.c:238 > msgid "Disabled" > msgstr "Vypnuto" > >-#. TRANSLATORS: Test with "xz --info-memory" to see if >-#. the alignment looks nice. >-#: src/xz/hardware.c:156 >-msgid "Total amount of physical memory (RAM): " >+#: src/xz/hardware.c:269 >+#, fuzzy >+#| msgid "Total amount of physical memory (RAM): " >+msgid "Amount of physical memory (RAM):" > msgstr "Celkové množstvà fyzické pamÄti (RAM): " > >-#: src/xz/hardware.c:158 >-msgid "Memory usage limit for compression: " >-msgstr "Omezenà použitelné pamÄti pro komprimaci: " >+#: src/xz/hardware.c:270 >+msgid "Number of processor threads:" >+msgstr "" > >-#: src/xz/hardware.c:160 >-msgid "Memory usage limit for decompression: " >+#: src/xz/hardware.c:271 >+msgid "Compression:" >+msgstr "" >+ >+#: src/xz/hardware.c:272 >+msgid "Decompression:" >+msgstr "" >+ >+#: src/xz/hardware.c:273 >+#, fuzzy >+#| msgid "Memory usage limit for decompression: " >+msgid "Multi-threaded decompression:" > msgstr "Omezenà použitelné pamÄti pro dekomprimaci:" > >+#: src/xz/hardware.c:274 >+msgid "Default for -T0:" >+msgstr "" >+ >+#: src/xz/hardware.c:292 >+msgid "Hardware information:" >+msgstr "" >+ >+#: src/xz/hardware.c:299 >+#, fuzzy >+#| msgid "Memory usage limit reached" >+msgid "Memory usage limits:" >+msgstr "Dosaženo omezenà použitelné pamÄti" >+ >+#: src/xz/list.c:68 >+msgid "Streams:" >+msgstr "" >+ >+#: src/xz/list.c:69 >+msgid "Blocks:" >+msgstr "" >+ >+#: src/xz/list.c:70 >+#, fuzzy >+#| msgid " Compressed size: %s\n" >+msgid "Compressed size:" >+msgstr " Komprimovaná velikost: %s\n" >+ >+#: src/xz/list.c:71 >+#, fuzzy >+#| msgid " Uncompressed size: %s\n" >+msgid "Uncompressed size:" >+msgstr " Nekomprimovaná velikost: %s\n" >+ >+#: src/xz/list.c:72 >+msgid "Ratio:" >+msgstr "" >+ >+#: src/xz/list.c:73 >+msgid "Check:" >+msgstr "" >+ >+#: src/xz/list.c:74 >+#, fuzzy >+#| msgid " Stream padding: %s\n" >+msgid "Stream Padding:" >+msgstr " Zarovnánà proudu: %s\n" >+ >+#: src/xz/list.c:75 >+#, fuzzy >+#| msgid " Memory needed: %s MiB\n" >+msgid "Memory needed:" >+msgstr " PotÅebná pamÄÅ¥: %s MiB\n" >+ >+#: src/xz/list.c:76 >+#, fuzzy >+#| msgid " Sizes in headers: %s\n" >+msgid "Sizes in headers:" >+msgstr " Velikosti v hlaviÄkách: %s\n" >+ >+#: src/xz/list.c:79 >+#, fuzzy >+#| msgid " Number of files: %s\n" >+msgid "Number of files:" >+msgstr " PoÄet souborů: %s\n" >+ >+#: src/xz/list.c:122 >+msgid "Stream" >+msgstr "" >+ >+#: src/xz/list.c:123 >+msgid "Block" >+msgstr "" >+ >+#: src/xz/list.c:124 >+msgid "Blocks" >+msgstr "" >+ >+#: src/xz/list.c:125 >+msgid "CompOffset" >+msgstr "" >+ >+#: src/xz/list.c:126 >+msgid "UncompOffset" >+msgstr "" >+ >+#: src/xz/list.c:127 >+msgid "CompSize" >+msgstr "" >+ >+#: src/xz/list.c:128 >+msgid "UncompSize" >+msgstr "" >+ >+#: src/xz/list.c:129 >+#, fuzzy >+#| msgid "Totals:" >+msgid "TotalSize" >+msgstr "Celkem:" >+ >+#: src/xz/list.c:130 >+msgid "Ratio" >+msgstr "" >+ >+#: src/xz/list.c:131 >+msgid "Check" >+msgstr "" >+ >+#: src/xz/list.c:132 >+msgid "CheckVal" >+msgstr "" >+ >+#: src/xz/list.c:133 >+msgid "Padding" >+msgstr "" >+ >+#: src/xz/list.c:134 >+msgid "Header" >+msgstr "" >+ >+#: src/xz/list.c:135 >+msgid "Flags" >+msgstr "" >+ >+#: src/xz/list.c:136 >+msgid "MemUsage" >+msgstr "" >+ >+#: src/xz/list.c:137 >+msgid "Filters" >+msgstr "" >+ > #. TRANSLATORS: Indicates that there is no integrity check. >-#. This string is used in tables, so the width must not >-#. exceed ten columns with a fixed-width font. >-#: src/xz/list.c:65 >+#. This string is used in tables. In older xz version this >+#. string was limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:169 > msgid "None" > msgstr "žádná" > > #. TRANSLATORS: Indicates that integrity check name is not known, >-#. but the Check ID is known (here 2). This and other "Unknown-N" >-#. strings are used in tables, so the width must not exceed ten >-#. columns with a fixed-width font. It's OK to omit the dash if >-#. you need space for one extra letter, but don't use spaces. >-#: src/xz/list.c:72 >+#. but the Check ID is known (here 2). In older xz version these >+#. strings were limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:175 > msgid "Unknown-2" > msgstr "neznámá-2" > >-#: src/xz/list.c:73 >+#: src/xz/list.c:176 > msgid "Unknown-3" > msgstr "neznámá-3" > >-#: src/xz/list.c:75 >+#: src/xz/list.c:178 > msgid "Unknown-5" > msgstr "neznámá-5" > >-#: src/xz/list.c:76 >+#: src/xz/list.c:179 > msgid "Unknown-6" > msgstr "neznámá-6" > >-#: src/xz/list.c:77 >+#: src/xz/list.c:180 > msgid "Unknown-7" > msgstr "neznámá-7" > >-#: src/xz/list.c:78 >+#: src/xz/list.c:181 > msgid "Unknown-8" > msgstr "neznámá-8" > >-#: src/xz/list.c:79 >+#: src/xz/list.c:182 > msgid "Unknown-9" > msgstr "neznámá-9" > >-#: src/xz/list.c:81 >+#: src/xz/list.c:184 > msgid "Unknown-11" > msgstr "neznámá-11" > >-#: src/xz/list.c:82 >+#: src/xz/list.c:185 > msgid "Unknown-12" > msgstr "neznámá-12" > >-#: src/xz/list.c:83 >+#: src/xz/list.c:186 > msgid "Unknown-13" > msgstr "neznámá-13" > >-#: src/xz/list.c:84 >+#: src/xz/list.c:187 > msgid "Unknown-14" > msgstr "neznámá-14" > >-#: src/xz/list.c:85 >+#: src/xz/list.c:188 > msgid "Unknown-15" > msgstr "neznámá-15" > >-#: src/xz/list.c:153 >+#: src/xz/list.c:351 > #, c-format > msgid "%s: File is empty" > msgstr "%s: Soubor je prázdný" > >-#: src/xz/list.c:158 >+#: src/xz/list.c:356 > #, c-format > msgid "%s: Too small to be a valid .xz file" > msgstr "%s: Je pÅÃliÅ¡ malý na to, aby to mohl být platný soubor .xz" >@@ -336,105 +504,26 @@ > #. to Ratio, the columns are right aligned. Check and Filename > #. are left aligned. If you need longer words, it's OK to > #. use two lines here. Test with "xz -l foo.xz". >-#: src/xz/list.c:677 >+#: src/xz/list.c:730 > msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" > msgstr "Proud Bloky Komprim Nekomprim PomÄr Kontrl Název souboru" > >-#: src/xz/list.c:717 >-#, c-format >-msgid " Streams: %s\n" >-msgstr " Proudů: %s\n" >- >-#: src/xz/list.c:719 >-#, c-format >-msgid " Blocks: %s\n" >-msgstr " Bloků: %s\n" >- >-#: src/xz/list.c:721 >-#, c-format >-msgid " Compressed size: %s\n" >-msgstr " Komprimovaná velikost: %s\n" >- >-#: src/xz/list.c:724 >-#, c-format >-msgid " Uncompressed size: %s\n" >-msgstr " Nekomprimovaná velikost: %s\n" >- >-#: src/xz/list.c:727 >-#, c-format >-msgid " Ratio: %s\n" >-msgstr " PomÄr komprimace: %s\n" >- >-#: src/xz/list.c:729 >-#, c-format >-msgid " Check: %s\n" >-msgstr " Typ kontroly: %s\n" >- >-#: src/xz/list.c:730 >-#, c-format >-msgid " Stream padding: %s\n" >-msgstr " Zarovnánà proudu: %s\n" >- >-#. TRANSLATORS: The second line is column headings. All except >-#. Check are right aligned; Check is left aligned. Test with >-#. "xz -lv foo.xz". >-#: src/xz/list.c:758 >-msgid "" >-" Streams:\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >-msgstr "" >-" Proudy:\n" >-" Proud Bloky KomprPozice NekomprPozice KomprVelikost NekomprVelikost PomÄr Kontrola ZarovnánÃ" >- >-#. TRANSLATORS: The second line is column headings. All >-#. except Check are right aligned; Check is left aligned. >-#: src/xz/list.c:813 >-#, c-format >-msgid "" >-" Blocks:\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >-msgstr "" >-" Bloky:\n" >-" Proud Blok KomprPozice NekomprPozice CelkVelikost NekomprVelikost PomÄr Kontrola" >- >-#. TRANSLATORS: These are additional column headings >-#. for the most verbose listing mode. CheckVal >-#. (Check value), Flags, and Filters are left aligned. >-#. Header (Block Header Size), CompSize, and MemUsage >-#. are right aligned. %*s is replaced with 0-120 >-#. spaces to make the CheckVal column wide enough. >-#. Test with "xz -lvv foo.xz". >-#: src/xz/list.c:825 >-#, c-format >-msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >-msgstr " KontrHod %*s HlaviÄ PÅÃznaky KomprVel PoužiPam Filtry" >- >-#: src/xz/list.c:903 src/xz/list.c:1078 >-#, c-format >-msgid " Memory needed: %s MiB\n" >-msgstr " PotÅebná pamÄÅ¥: %s MiB\n" >- >-#: src/xz/list.c:905 src/xz/list.c:1080 >-#, c-format >-msgid " Sizes in headers: %s\n" >-msgstr " Velikosti v hlaviÄkách: %s\n" >- >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "Yes" > msgstr "Ano" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "No" > msgstr "Ne" > >-#: src/xz/list.c:907 src/xz/list.c:1082 >+#: src/xz/list.c:1027 src/xz/list.c:1205 > #, c-format > msgid " Minimum XZ Utils version: %s\n" > msgstr "" > > #. TRANSLATORS: %s is an integer. Only the plural form of this > #. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz". >-#: src/xz/list.c:1057 >+#: src/xz/list.c:1178 > #, c-format > msgid "%s file\n" > msgid_plural "%s files\n" >@@ -442,20 +531,15 @@ > msgstr[1] "%s soubory\n" > msgstr[2] "%s souborů\n" > >-#: src/xz/list.c:1070 >+#: src/xz/list.c:1191 > msgid "Totals:" > msgstr "Celkem:" > >-#: src/xz/list.c:1071 >-#, c-format >-msgid " Number of files: %s\n" >-msgstr " PoÄet souborů: %s\n" >- >-#: src/xz/list.c:1146 >+#: src/xz/list.c:1269 > msgid "--list works only on .xz files (--format=xz or --format=auto)" > msgstr "--list pracuje pouze se soubory .xz (--format=xz nebo --format=auto)" > >-#: src/xz/list.c:1152 >+#: src/xz/list.c:1275 > msgid "--list does not support reading from standard input" > msgstr "--list nepodporuje Ätenà ze standardnÃho vstupu" > >@@ -474,11 +558,11 @@ > msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" > msgstr "%s: Byl nalezen nulový znak pÅi Ätenà názvů souborů; nechtÄli jste náhodou použÃt â--files0â mÃsto â--filesâ?" > >-#: src/xz/main.c:174 >+#: src/xz/main.c:188 > msgid "Compression and decompression with --robot are not supported yet." > msgstr "Komprimace a dekomprimace s pÅepÃnaÄem --robot nenà zatÃm podporovaná." > >-#: src/xz/main.c:252 >+#: src/xz/main.c:266 > msgid "Cannot read data from standard input when reading filenames from standard input" > msgstr "Ze standardnÃho vstupu nelze ÄÃst data, když se ze standardnÃho vstupu naÄÃtajà názvy souborů" > >@@ -486,68 +570,68 @@ > #. of the line in messages. Usually it becomes "xz: ". > #. This is a translatable string because French needs > #. a space before a colon. >-#: src/xz/message.c:728 >+#: src/xz/message.c:725 > #, c-format > msgid "%s: " > msgstr "" > >-#: src/xz/message.c:791 src/xz/message.c:841 >+#: src/xz/message.c:797 src/xz/message.c:856 > msgid "Internal error (bug)" > msgstr "Internà chyba" > >-#: src/xz/message.c:798 >+#: src/xz/message.c:804 > msgid "Cannot establish signal handlers" > msgstr "Nelze ustanovit ovladaÄ signálu" > >-#: src/xz/message.c:807 >+#: src/xz/message.c:813 > msgid "No integrity check; not verifying file integrity" > msgstr "Žádná kontrola integrity; integrita souboru se nebude ovÄÅovat" > >-#: src/xz/message.c:810 >+#: src/xz/message.c:816 > msgid "Unsupported type of integrity check; not verifying file integrity" > msgstr "Nepodporovaný typ kontroly integrity; integrita souboru se nebude ovÄÅovat" > >-#: src/xz/message.c:817 >+#: src/xz/message.c:823 > msgid "Memory usage limit reached" > msgstr "Dosaženo omezenà použitelné pamÄti" > >-#: src/xz/message.c:820 >+#: src/xz/message.c:826 > msgid "File format not recognized" > msgstr "Formát souboru nebyl rozpoznán" > >-#: src/xz/message.c:823 >+#: src/xz/message.c:829 > msgid "Unsupported options" > msgstr "Nepodporovaná volba" > >-#: src/xz/message.c:826 >+#: src/xz/message.c:832 > msgid "Compressed data is corrupt" > msgstr "Komprimovaná data jsou poÅ¡kozená" > >-#: src/xz/message.c:829 >+#: src/xz/message.c:835 > msgid "Unexpected end of input" > msgstr "NeoÄekávaný konec vstupu" > >-#: src/xz/message.c:862 >+#: src/xz/message.c:877 > #, c-format > msgid "%s MiB of memory is required. The limiter is disabled." > msgstr "" > >-#: src/xz/message.c:890 >+#: src/xz/message.c:905 > #, c-format > msgid "%s MiB of memory is required. The limit is %s." > msgstr "Je vyžadováno %s MiB pamÄti. Limit je %s." > >-#: src/xz/message.c:1057 >+#: src/xz/message.c:924 > #, c-format > msgid "%s: Filter chain: %s\n" > msgstr "%s: OmezujÃcà filtr: %s\n" > >-#: src/xz/message.c:1067 >+#: src/xz/message.c:935 > #, c-format > msgid "Try `%s --help' for more information." > msgstr "Zkuste â%s --helpâ pro vÃce informacÃ" > >-#: src/xz/message.c:1093 >+#: src/xz/message.c:961 > #, c-format > msgid "" > "Usage: %s [OPTION]... [FILE]...\n" >@@ -558,15 +642,15 @@ > "Komprimuje nebo dekomprimuje SOUBORy ve formátu xz.\n" > "\n" > >-#: src/xz/message.c:1100 >+#: src/xz/message.c:968 > msgid "Mandatory arguments to long options are mandatory for short options too.\n" > msgstr "Povinné argumenty pro dlouhé pÅepÃnaÄe jsou povinné rovnÄž pro krátké pÅepÃnaÄe.\n" > >-#: src/xz/message.c:1104 >+#: src/xz/message.c:972 > msgid " Operation mode:\n" > msgstr "OperaÄnà režim:\n" > >-#: src/xz/message.c:1107 >+#: src/xz/message.c:975 > msgid "" > " -z, --compress force compression\n" > " -d, --decompress force decompression\n" >@@ -578,7 +662,7 @@ > " -t, --test testovat integritu komprimovaného souboru\n" > " -l, --list vypsat informace o souborech .xz" > >-#: src/xz/message.c:1113 >+#: src/xz/message.c:981 > msgid "" > "\n" > " Operation modifiers:\n" >@@ -586,7 +670,7 @@ > "\n" > "Modifikátory operacÃ:\n" > >-#: src/xz/message.c:1116 >+#: src/xz/message.c:984 > msgid "" > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" >@@ -596,13 +680,13 @@ > " -f, --force vynutit pÅepis výstupnÃho souboru a de/komprimovat odkazy\n" > " -c, --stdout zapisovat na standardnà výstup a nemazat vstupnà soubory" > >-#: src/xz/message.c:1122 >+#: src/xz/message.c:993 > msgid "" > " --single-stream decompress only the first stream, and silently\n" > " ignore possible remaining input data" > msgstr "" > >-#: src/xz/message.c:1125 >+#: src/xz/message.c:996 > msgid "" > " --no-sparse do not create sparse files when decompressing\n" > " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" >@@ -618,7 +702,7 @@ > " názvy souborů musà být zakonÄeny znakem nového Åádku\n" > " --files0[=SOUBOR] stejné jako --files, ale použÃt k zakonÄovánà nulový znak" > >-#: src/xz/message.c:1134 >+#: src/xz/message.c:1005 > msgid "" > "\n" > " Basic file format and compression options:\n" >@@ -626,10 +710,16 @@ > "\n" > "Základnà pÅepÃnaÄe pro formát souboru a komprimaci:\n" > >-#: src/xz/message.c:1136 >+#: src/xz/message.c:1007 >+#, fuzzy >+#| msgid "" >+#| " -F, --format=FMT file format to encode or decode; possible values are\n" >+#| " `auto' (default), `xz', `lzma', and `raw'\n" >+#| " -C, --check=CHECK integrity check type: `none' (use with caution),\n" >+#| " `crc32', `crc64' (default), or `sha256'" > msgid "" > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'" > msgstr "" >@@ -638,11 +728,11 @@ > " -C, --check=KONTROLA typ kontroly integrity: ânoneâ (použÃvejte s rozmyslem),\n" > " âcrc32â, âcrc64â (výchozÃ) nebo âsha256â" > >-#: src/xz/message.c:1141 >+#: src/xz/message.c:1012 > msgid " --ignore-check don't verify the integrity check when decompressing" > msgstr "" > >-#: src/xz/message.c:1145 >+#: src/xz/message.c:1016 > msgid "" > " -0 ... -9 compression preset; default is 6; take compressor *and*\n" > " decompressor memory usage into account before using 7-9!" >@@ -650,7 +740,7 @@ > " -0 .. -9 pÅednastavenà komprimace; výchozà je 6; než použijete\n" > " hodnoty 7 â 9, vezmÄte do úvahy množstvà použité pamÄti" > >-#: src/xz/message.c:1149 >+#: src/xz/message.c:1020 > msgid "" > " -e, --extreme try to improve compression ratio by using more CPU time;\n" > " does not affect decompressor memory requirements" >@@ -658,27 +748,27 @@ > " -e, --extreme zkusit zlepÅ¡it pomÄr komprimace využitÃm vÃce Äasu\n" > " procesoru; nemá vliv na pamÄÅ¥ové nároky dekomprimace" > >-#: src/xz/message.c:1153 >+#: src/xz/message.c:1024 > msgid "" > " -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" > " to use as many threads as there are processor cores" > msgstr "" > >-#: src/xz/message.c:1158 >+#: src/xz/message.c:1029 > msgid "" > " --block-size=SIZE\n" > " start a new .xz block after every SIZE bytes of input;\n" > " use this to set the block size for threaded compression" > msgstr "" > >-#: src/xz/message.c:1162 >+#: src/xz/message.c:1033 > msgid "" > " --block-list=SIZES\n" > " start a new .xz block after the given comma-separated\n" > " intervals of uncompressed data" > msgstr "" > >-#: src/xz/message.c:1166 >+#: src/xz/message.c:1037 > msgid "" > " --flush-timeout=TIMEOUT\n" > " when compressing, if more than TIMEOUT milliseconds has\n" >@@ -686,14 +776,22 @@ > " would block, all pending data is flushed out" > msgstr "" > >-#: src/xz/message.c:1172 >-#, no-c-format >+#: src/xz/message.c:1043 >+#, fuzzy, no-c-format >+#| msgid "" >+#| " --memlimit-compress=LIMIT\n" >+#| " --memlimit-decompress=LIMIT\n" >+#| " -M, --memlimit=LIMIT\n" >+#| " set memory usage limit for compression, decompression,\n" >+#| " or both; LIMIT is in bytes, % of RAM, or 0 for defaults" > msgid "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults" > msgstr "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >@@ -702,7 +800,7 @@ > " dekomprimaci nebo obojÃ; LIMIT je v bajtech, % z pamÄti\n" > " RAM nebo 0 pro výchozÃ" > >-#: src/xz/message.c:1179 >+#: src/xz/message.c:1052 > msgid "" > " --no-adjust if compression settings exceed the memory usage limit,\n" > " give an error instead of adjusting the settings downwards" >@@ -710,7 +808,7 @@ > " --no-adjust pokud nastavenà komprimace pÅesáhne omezenà použitelné\n" > " pamÄti, pÅedat chybu namÃsto snÞenà nastavenÃ" > >-#: src/xz/message.c:1185 >+#: src/xz/message.c:1058 > msgid "" > "\n" > " Custom filter chain for compression (alternative for using presets):" >@@ -718,7 +816,7 @@ > "\n" > "Vlastnà omezujÃcà filtr pro komprimaci (alternativa k použità pÅednastavených):" > >-#: src/xz/message.c:1194 >+#: src/xz/message.c:1067 > msgid "" > "\n" > " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" >@@ -747,14 +845,26 @@ > " depth=POÄ maximálnà hloubka prohledávánÃ;\n" > " 0 = automaticky (výchozÃ)" > >-#: src/xz/message.c:1209 >+#: src/xz/message.c:1082 >+#, fuzzy >+#| msgid "" >+#| "\n" >+#| " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+#| " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" >+#| " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >+#| " --arm[=OPTS] ARM BCJ filter (little endian only)\n" >+#| " --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" >+#| " --sparc[=OPTS] SPARC BCJ filter\n" >+#| " Valid OPTS for all BCJ filters:\n" >+#| " start=NUM start offset for conversions (default=0)" > msgid "" > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)" >@@ -769,7 +879,7 @@ > " Platné volby pro vÅ¡echny filtry BCJ:\n" > " start=POÄ poÄáteÄnà posun pro pÅevody (výchozÃ=0)" > >-#: src/xz/message.c:1221 >+#: src/xz/message.c:1095 > msgid "" > "\n" > " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" >@@ -781,7 +891,7 @@ > " dist=POÄ vzdálenost mezi bajty, které jsou odeÄÃtány\n" > " jeden od druhého (1 â 256; 1)" > >-#: src/xz/message.c:1229 >+#: src/xz/message.c:1103 > msgid "" > "\n" > " Other options:\n" >@@ -789,7 +899,7 @@ > "\n" > " Ostatnà pÅepÃnaÄe:\n" > >-#: src/xz/message.c:1232 >+#: src/xz/message.c:1106 > msgid "" > " -q, --quiet suppress warnings; specify twice to suppress errors too\n" > " -v, --verbose be verbose; specify twice for even more verbose" >@@ -798,17 +908,17 @@ > " -v, --verbose podrobnÄjÅ¡Ã zprávy; zadánÃm dvakrát, budou jeÅ¡tÄ\n" > " podrobnÄjÅ¡Ã" > >-#: src/xz/message.c:1237 >+#: src/xz/message.c:1111 > msgid " -Q, --no-warn make warnings not affect the exit status" > msgstr " -Q, --no-warn způsobÃ, že varovánà neovlivnà stav ukonÄenÃ" > >-#: src/xz/message.c:1239 >+#: src/xz/message.c:1113 > msgid " --robot use machine-parsable messages (useful for scripts)" > msgstr "" > " --robot použÃt strojovÄ analyzovatelné zprávy (užiteÄné pro\n" > " skripty)" > >-#: src/xz/message.c:1242 >+#: src/xz/message.c:1116 > msgid "" > " --info-memory display the total amount of RAM and the currently active\n" > " memory usage limits, and exit" >@@ -816,7 +926,7 @@ > " --info-memory zobrazit celkové množstvà pamÄti RAM a souÄasné aktivnÃ\n" > " omezenà použitelné pamÄti a skonÄit" > >-#: src/xz/message.c:1245 >+#: src/xz/message.c:1119 > msgid "" > " -h, --help display the short help (lists only the basic options)\n" > " -H, --long-help display this long help and exit" >@@ -824,7 +934,7 @@ > " -h, --help zobrazit krátkou nápovÄdu (vypÃÅ¡e jen základnà pÅepÃnaÄe)\n" > " -H, --long-help zobrazit tuto úplnou nápovÄdu a skonÄit" > >-#: src/xz/message.c:1249 >+#: src/xz/message.c:1123 > msgid "" > " -h, --help display this short help and exit\n" > " -H, --long-help display the long help (lists also the advanced options)" >@@ -832,11 +942,11 @@ > " -h, --help zobrazit tuto zkrácenou nápovÄdu a skonÄit\n" > " -H, --long-help zobrazit úplnou nápovÄdu (vypÃÅ¡e i pokroÄilé pÅepÃnaÄe)" > >-#: src/xz/message.c:1254 >+#: src/xz/message.c:1128 > msgid " -V, --version display the version number and exit" > msgstr " -V, --version zobrazit ÄÃslo verze a skonÄit" > >-#: src/xz/message.c:1256 >+#: src/xz/message.c:1130 > msgid "" > "\n" > "With no FILE, or when FILE is -, read standard input.\n" >@@ -848,17 +958,17 @@ > #. for this package. Please add _another line_ saying > #. "Report translation bugs to <...>\n" with the email or WWW > #. address for translation bugs. Thanks. >-#: src/xz/message.c:1262 >+#: src/xz/message.c:1136 > #, c-format > msgid "Report bugs to <%s> (in English or Finnish).\n" > msgstr "Chyby hlaste na <%s> (v angliÄtinÄ nebo finÅ¡tinÄ).\n" > >-#: src/xz/message.c:1264 >+#: src/xz/message.c:1138 > #, c-format > msgid "%s home page: <%s>\n" > msgstr "Domovská stránka %s: <%s>\n" > >-#: src/xz/message.c:1268 >+#: src/xz/message.c:1142 > msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." > msgstr "" > >@@ -886,27 +996,17 @@ > msgid "The sum of lc and lp must not exceed 4" > msgstr "SouÄet lc a lp nesmà pÅekroÄit hodnotu 4" > >-#: src/xz/options.c:359 >+#: src/xz/suffix.c:160 > #, c-format >-msgid "The selected match finder requires at least nice=%<PRIu32>" >-msgstr "Vybraný vyhledávaÄ shod vyžaduje minimálnÄ nice=%<PRIu32>" >- >-#: src/xz/suffix.c:133 src/xz/suffix.c:258 >-#, c-format >-msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >-msgstr "%s: S pÅepÃnaÄem --format=raw je vyžadován --sufix=.PRIP, vyjma zápisu do standardnÃho výstupu" >- >-#: src/xz/suffix.c:164 >-#, c-format > msgid "%s: Filename has an unknown suffix, skipping" > msgstr "%s: Název souboru má neznámou pÅÃponu, vynechává se" > >-#: src/xz/suffix.c:185 >+#: src/xz/suffix.c:181 > #, c-format > msgid "%s: File already has `%s' suffix, skipping" > msgstr "%s: Soubor již má pÅÃponu â%sâ, vynechává se" > >-#: src/xz/suffix.c:393 >+#: src/xz/suffix.c:388 > #, c-format > msgid "%s: Invalid filename suffix" > msgstr "%s: Neplatná pÅÃpona názvu souboru" >@@ -930,15 +1030,11 @@ > msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]" > msgstr "Hodnota volby â%sâ musà být v rozsahu [%<PRIu64>, %<PRIu64>]" > >-#: src/xz/util.c:267 >-msgid "Empty filename, skipping" >-msgstr "Prázdný název souboru, vynechává se" >- >-#: src/xz/util.c:281 >+#: src/xz/util.c:269 > msgid "Compressed data cannot be read from a terminal" > msgstr "Z terminálu nelze ÄÃst komprimovaná data" > >-#: src/xz/util.c:294 >+#: src/xz/util.c:282 > msgid "Compressed data cannot be written to a terminal" > msgstr "Do terminálu nelze zapisovat komprimovaná data" > >@@ -949,6 +1045,48 @@ > #: src/common/tuklib_exit.c:43 > msgid "Unknown error" > msgstr "Neznámá chyba" >+ >+#~ msgid "Memory usage limit for compression: " >+#~ msgstr "Omezenà použitelné pamÄti pro komprimaci: " >+ >+#, c-format >+#~ msgid " Streams: %s\n" >+#~ msgstr " Proudů: %s\n" >+ >+#, c-format >+#~ msgid " Blocks: %s\n" >+#~ msgstr " Bloků: %s\n" >+ >+#, c-format >+#~ msgid " Ratio: %s\n" >+#~ msgstr " PomÄr komprimace: %s\n" >+ >+#, c-format >+#~ msgid " Check: %s\n" >+#~ msgstr " Typ kontroly: %s\n" >+ >+#~ msgid "" >+#~ " Streams:\n" >+#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >+#~ msgstr "" >+#~ " Proudy:\n" >+#~ " Proud Bloky KomprPozice NekomprPozice KomprVelikost NekomprVelikost PomÄr Kontrola ZarovnánÃ" >+ >+#, c-format >+#~ msgid "" >+#~ " Blocks:\n" >+#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >+#~ msgstr "" >+#~ " Bloky:\n" >+#~ " Proud Blok KomprPozice NekomprPozice CelkVelikost NekomprVelikost PomÄr Kontrola" >+ >+#, c-format >+#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >+#~ msgstr " KontrHod %*s HlaviÄ PÅÃznaky KomprVel PoužiPam Filtry" >+ >+#, c-format >+#~ msgid "The selected match finder requires at least nice=%<PRIu32>" >+#~ msgstr "Vybraný vyhledávaÄ shod vyžaduje minimálnÄ nice=%<PRIu32>" > > #~ msgid "Limit was %s MiB, but %s MiB would have been needed" > #~ msgstr "Limit byl %s MiB, ale bylo by zapotÅebà %s MiB" >Binary files xz-5.2.5/po/da.gmo and xz-5.4.3/po/da.gmo differ >diff -ur xz-5.2.5/po/da.po xz-5.4.3/po/da.po >--- xz-5.2.5/po/da.po 2020-03-17 17:29:58 >+++ xz-5.4.3/po/da.po 2023-05-04 17:32:20 >@@ -5,8 +5,8 @@ > msgid "" > msgstr "" > "Project-Id-Version: xz 5.2.4\n" >-"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >+"Report-Msgid-Bugs-To: xz@tukaani.org\n" >+"POT-Creation-Date: 2023-05-04 22:32+0800\n" > "PO-Revision-Date: 2019-03-04 23:08+0100\n" > "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n" > "Language-Team: Danish <dansk@dansk-gruppen.dk>\n" >@@ -17,99 +17,121 @@ > "X-Bugs: Report translation errors to the Language-Team address.\n" > "Plural-Forms: nplurals=2; plural=(n != 1);\n" > >-#: src/xz/args.c:63 >+#: src/xz/args.c:77 > #, c-format > msgid "%s: Invalid argument to --block-list" > msgstr "%s: Ugyldigt parameter til --block-list" > >-#: src/xz/args.c:73 >+#: src/xz/args.c:87 > #, c-format > msgid "%s: Too many arguments to --block-list" > msgstr "%s: For mange argumenter til --block-list" > >-#: src/xz/args.c:102 >+#: src/xz/args.c:116 > msgid "0 can only be used as the last element in --block-list" > msgstr "0 kan kun bruges som det sidste element i --block-list" > >-#: src/xz/args.c:406 >+#: src/xz/args.c:451 > #, c-format > msgid "%s: Unknown file format type" > msgstr "%s: Ukendt filformattype" > >-#: src/xz/args.c:429 src/xz/args.c:437 >+#: src/xz/args.c:474 src/xz/args.c:482 > #, c-format > msgid "%s: Unsupported integrity check type" > msgstr "%s: Typen for integritetkontrol er ikke understøttet" > >-#: src/xz/args.c:473 >+#: src/xz/args.c:518 > msgid "Only one file can be specified with `--files' or `--files0'." > msgstr "Kun en fil kan angives med »--files« eller »--files0«." > >-#: src/xz/args.c:541 >+#: src/xz/args.c:586 > #, c-format > msgid "The environment variable %s contains too many arguments" > msgstr "Miljøvariablen %s indeholder for mange argumenter" > >-#: src/xz/args.c:643 >+#: src/xz/args.c:688 > msgid "Compression support was disabled at build time" > msgstr "Komprimeringsunderstøttelse blev deaktiveret pÃ¥ byggetidspunktet" > >-#: src/xz/args.c:650 >+#: src/xz/args.c:695 > msgid "Decompression support was disabled at build time" > msgstr "Dekomprimeringsunderstøttelse blev deaktiveret pÃ¥ byggetidspunktet" > >-#: src/xz/coder.c:110 >+#: src/xz/args.c:701 >+msgid "Compression of lzip files (.lz) is not supported" >+msgstr "" >+ >+#: src/xz/args.c:732 >+#, fuzzy >+#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgstr "%s: med --format=raw, --suffix=.SUF er krævet med mindre der skrives til standardud" >+ >+#: src/xz/coder.c:115 > msgid "Maximum number of filters is four" > msgstr "Maksimalt antal filtre er fire" > >-#: src/xz/coder.c:129 >+#: src/xz/coder.c:134 > msgid "Memory usage limit is too low for the given filter setup." > msgstr "Begræsningen for brug af hukommelse er for lav for den givne filteropsætning." > >-#: src/xz/coder.c:159 >+#: src/xz/coder.c:169 > msgid "Using a preset in raw mode is discouraged." > msgstr "Det frarÃ¥des at bruge en forhÃ¥ndskonfiguration i rÃ¥ tilstand (raw mode)." > >-#: src/xz/coder.c:161 >+#: src/xz/coder.c:171 > msgid "The exact options of the presets may vary between software versions." > msgstr "De præcise indstillinger for forhÃ¥ndskonfigurationerne kan variere mellem programversioner." > >-#: src/xz/coder.c:184 >+#: src/xz/coder.c:194 > msgid "The .lzma format supports only the LZMA1 filter" > msgstr "Formatet .lzma understøtter kun LZMA1-filteret" > >-#: src/xz/coder.c:192 >+#: src/xz/coder.c:202 > msgid "LZMA1 cannot be used with the .xz format" > msgstr "LZMA1 kan ikke bruges med .xz-formatet" > >-#: src/xz/coder.c:209 >+#: src/xz/coder.c:219 > msgid "The filter chain is incompatible with --flush-timeout" > msgstr "Filterkæden er ikke kompatibel med --flush-timeout" > >-#: src/xz/coder.c:215 >+#: src/xz/coder.c:225 > msgid "Switching to single-threaded mode due to --flush-timeout" > msgstr "Skifter til enkelt trÃ¥det tilstand pÃ¥ grund af --flush-timeout" > >-#: src/xz/coder.c:235 >+#: src/xz/coder.c:249 > #, c-format > msgid "Using up to %<PRIu32> threads." > msgstr "Bruger op til %<PRIu32> trÃ¥de." > >-#: src/xz/coder.c:251 >+#: src/xz/coder.c:265 > msgid "Unsupported filter chain or filter options" > msgstr "Filterkæde eller filterindstillinger er ikke understøttet" > >-#: src/xz/coder.c:263 >+#: src/xz/coder.c:277 > #, c-format > msgid "Decompression will need %s MiB of memory." > msgstr "Dekomprimering vil kræve %s MiB hukommelse." > >-#: src/xz/coder.c:300 >+#: src/xz/coder.c:309 >+#, fuzzy, c-format >+#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgstr "Justerede antallet af trÃ¥de fra %s til %s for ikke at overskride begræsningen pÃ¥ brug af hukommelse pÃ¥ %s MiB" >+ >+#: src/xz/coder.c:329 > #, c-format >-msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway." >+msgstr "" >+ >+#: src/xz/coder.c:356 >+#, fuzzy, c-format >+#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB" > msgstr "Justerede antallet af trÃ¥de fra %s til %s for ikke at overskride begræsningen pÃ¥ brug af hukommelse pÃ¥ %s MiB" > >-#: src/xz/coder.c:354 >+#: src/xz/coder.c:411 > #, c-format > msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" > msgstr "Justerede LZMA%c-ordbogsstørrelsen fra %s MiB til %s MiB for ikke at overskride begrænsningen pÃ¥ brug af hukommelse pÃ¥ %s MiB" >@@ -119,11 +141,11 @@ > msgid "Error creating a pipe: %s" > msgstr "Det opstod en fejl under oprettelse af en datakanal: %s" > >-#: src/xz/file_io.c:224 >+#: src/xz/file_io.c:252 > msgid "Failed to enable the sandbox" > msgstr "Kunne ikke aktivere sandkassen" > >-#: src/xz/file_io.c:266 >+#: src/xz/file_io.c:294 > #, c-format > msgid "%s: poll() failed: %s" > msgstr "%s: poll() mislykkedes: %s" >@@ -138,195 +160,341 @@ > #. it is possible that the user has put a new file in place > #. of the original file, and in that case it obviously > #. shouldn't be removed. >-#: src/xz/file_io.c:333 >+#: src/xz/file_io.c:361 > #, c-format > msgid "%s: File seems to have been moved, not removing" > msgstr "%s: Filen er vist blevet flyttet, sletter ikke" > >-#: src/xz/file_io.c:340 src/xz/file_io.c:882 >+#: src/xz/file_io.c:368 src/xz/file_io.c:924 > #, c-format > msgid "%s: Cannot remove: %s" > msgstr "%s: Kan ikke fjerne: %s" > >-#: src/xz/file_io.c:366 >+#: src/xz/file_io.c:394 > #, c-format > msgid "%s: Cannot set the file owner: %s" > msgstr "%s: Kan ikke angive filejeren: %s" > >-#: src/xz/file_io.c:372 >+#: src/xz/file_io.c:407 > #, c-format > msgid "%s: Cannot set the file group: %s" > msgstr "%s: Kan ikke angive filgruppen: %s" > >-#: src/xz/file_io.c:391 >+#: src/xz/file_io.c:426 > #, c-format > msgid "%s: Cannot set the file permissions: %s" > msgstr "%s: Kan ikke angive filtilladelser: %s" > >-#: src/xz/file_io.c:517 >+#: src/xz/file_io.c:552 > #, c-format > msgid "Error getting the file status flags from standard input: %s" > msgstr "Der opstod en fejl under indhentelse af filstatusflag fra standardind: %s" > >-#: src/xz/file_io.c:574 src/xz/file_io.c:636 >+#: src/xz/file_io.c:610 src/xz/file_io.c:672 > #, c-format > msgid "%s: Is a symbolic link, skipping" > msgstr "%s: Er en symbolsk henvisning, udelader" > >-#: src/xz/file_io.c:665 >+#: src/xz/file_io.c:701 > #, c-format > msgid "%s: Is a directory, skipping" > msgstr "%s: Er en mappe, udelader" > >-#: src/xz/file_io.c:671 >+#: src/xz/file_io.c:707 > #, c-format > msgid "%s: Not a regular file, skipping" > msgstr "%s: Er ikke en normal fil, udelader" > >-#: src/xz/file_io.c:688 >+#: src/xz/file_io.c:724 > #, c-format > msgid "%s: File has setuid or setgid bit set, skipping" > msgstr "%s: Filen har setuid- eller setgid-bitsæt, udelader" > >-#: src/xz/file_io.c:695 >+#: src/xz/file_io.c:731 > #, c-format > msgid "%s: File has sticky bit set, skipping" > msgstr "%s: Fil har klæbende bitsæt, udelader" > >-#: src/xz/file_io.c:702 >+#: src/xz/file_io.c:738 > #, c-format > msgid "%s: Input file has more than one hard link, skipping" > msgstr "%s: Inddatafil har mere end en hÃ¥rd henvisning, udelader" > >-#: src/xz/file_io.c:792 >+#: src/xz/file_io.c:780 >+msgid "Empty filename, skipping" >+msgstr "Tomt filnavn, udelader" >+ >+#: src/xz/file_io.c:834 > #, c-format > msgid "Error restoring the status flags to standard input: %s" > msgstr "Der opstod en fejl under gendannelse af statusflagene til standardind: %s" > >-#: src/xz/file_io.c:840 >+#: src/xz/file_io.c:882 > #, c-format > msgid "Error getting the file status flags from standard output: %s" > msgstr "Der opstod en fejl under indhentelse af filstatusflag fra standardud: %s" > >-#: src/xz/file_io.c:1018 >+#: src/xz/file_io.c:1060 > #, c-format > msgid "Error restoring the O_APPEND flag to standard output: %s" > msgstr "Der opstod en fejl under gendannelse af flaget O_APPEND til standardud: %s" > >-#: src/xz/file_io.c:1030 >+#: src/xz/file_io.c:1072 > #, c-format > msgid "%s: Closing the file failed: %s" > msgstr "%s: Lukning af filen fejlede: %s" > >-#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 >+#: src/xz/file_io.c:1108 src/xz/file_io.c:1371 > #, c-format > msgid "%s: Seeking failed when trying to create a sparse file: %s" > msgstr "%s: Søgning fejlede under forsøg pÃ¥ at oprette en tynd fil: %s" > >-#: src/xz/file_io.c:1167 >+#: src/xz/file_io.c:1209 > #, c-format > msgid "%s: Read error: %s" > msgstr "%s: Læsefejl: %s" > >-#: src/xz/file_io.c:1191 >+#: src/xz/file_io.c:1239 > #, c-format > msgid "%s: Error seeking the file: %s" > msgstr "%s: Der opstod en fejl under søgning efter filen: %s" > >-#: src/xz/file_io.c:1201 >+#: src/xz/file_io.c:1263 > #, c-format > msgid "%s: Unexpected end of file" > msgstr "%s: Uventet filafslutning" > >-#: src/xz/file_io.c:1260 >+#: src/xz/file_io.c:1322 > #, c-format > msgid "%s: Write error: %s" > msgstr "%s: Skrivefejl: %s" > >-#: src/xz/hardware.c:137 >+#: src/xz/hardware.c:238 > msgid "Disabled" > msgstr "Deaktiveret" > >-#. TRANSLATORS: Test with "xz --info-memory" to see if >-#. the alignment looks nice. >-#: src/xz/hardware.c:156 >-msgid "Total amount of physical memory (RAM): " >+#: src/xz/hardware.c:269 >+#, fuzzy >+#| msgid "Total amount of physical memory (RAM): " >+msgid "Amount of physical memory (RAM):" > msgstr "Samlet mængde fysisk hukommelse (RAM): " > >-#: src/xz/hardware.c:158 >-msgid "Memory usage limit for compression: " >-msgstr "Grænse for hukommelsesforbrug til komprimering: " >+#: src/xz/hardware.c:270 >+msgid "Number of processor threads:" >+msgstr "" > >-#: src/xz/hardware.c:160 >-msgid "Memory usage limit for decompression: " >+#: src/xz/hardware.c:271 >+msgid "Compression:" >+msgstr "" >+ >+#: src/xz/hardware.c:272 >+msgid "Decompression:" >+msgstr "" >+ >+#: src/xz/hardware.c:273 >+#, fuzzy >+#| msgid "Memory usage limit for decompression: " >+msgid "Multi-threaded decompression:" > msgstr "Grænse for hukommelsesforbug til dekomprimering: " > >+#: src/xz/hardware.c:274 >+msgid "Default for -T0:" >+msgstr "" >+ >+#: src/xz/hardware.c:292 >+msgid "Hardware information:" >+msgstr "" >+ >+#: src/xz/hardware.c:299 >+#, fuzzy >+#| msgid "Memory usage limit reached" >+msgid "Memory usage limits:" >+msgstr "Begrænsning pÃ¥ brug af hukommelse er nÃ¥et" >+ >+#: src/xz/list.c:68 >+msgid "Streams:" >+msgstr "" >+ >+#: src/xz/list.c:69 >+msgid "Blocks:" >+msgstr "" >+ >+#: src/xz/list.c:70 >+#, fuzzy >+#| msgid " Compressed size: %s\n" >+msgid "Compressed size:" >+msgstr " Komprimeret str.: %s\n" >+ >+#: src/xz/list.c:71 >+#, fuzzy >+#| msgid " Uncompressed size: %s\n" >+msgid "Uncompressed size:" >+msgstr " Ukomprimeret str.: %s\n" >+ >+#: src/xz/list.c:72 >+msgid "Ratio:" >+msgstr "" >+ >+#: src/xz/list.c:73 >+msgid "Check:" >+msgstr "" >+ >+#: src/xz/list.c:74 >+#, fuzzy >+#| msgid " Stream padding: %s\n" >+msgid "Stream Padding:" >+msgstr " Strømfyld: %s\n" >+ >+#: src/xz/list.c:75 >+#, fuzzy >+#| msgid " Memory needed: %s MiB\n" >+msgid "Memory needed:" >+msgstr " Hukommelse krævet: %s MiB\n" >+ >+#: src/xz/list.c:76 >+#, fuzzy >+#| msgid " Sizes in headers: %s\n" >+msgid "Sizes in headers:" >+msgstr " Størrelser i teksthoveder: %s\n" >+ >+#: src/xz/list.c:79 >+#, fuzzy >+#| msgid " Number of files: %s\n" >+msgid "Number of files:" >+msgstr " Antal filer: %s\n" >+ >+#: src/xz/list.c:122 >+msgid "Stream" >+msgstr "" >+ >+#: src/xz/list.c:123 >+msgid "Block" >+msgstr "" >+ >+#: src/xz/list.c:124 >+msgid "Blocks" >+msgstr "" >+ >+#: src/xz/list.c:125 >+msgid "CompOffset" >+msgstr "" >+ >+#: src/xz/list.c:126 >+msgid "UncompOffset" >+msgstr "" >+ >+#: src/xz/list.c:127 >+msgid "CompSize" >+msgstr "" >+ >+#: src/xz/list.c:128 >+msgid "UncompSize" >+msgstr "" >+ >+#: src/xz/list.c:129 >+#, fuzzy >+#| msgid "Totals:" >+msgid "TotalSize" >+msgstr "I alt:" >+ >+#: src/xz/list.c:130 >+msgid "Ratio" >+msgstr "" >+ >+#: src/xz/list.c:131 >+msgid "Check" >+msgstr "" >+ >+#: src/xz/list.c:132 >+msgid "CheckVal" >+msgstr "" >+ >+#: src/xz/list.c:133 >+msgid "Padding" >+msgstr "" >+ >+#: src/xz/list.c:134 >+msgid "Header" >+msgstr "" >+ >+#: src/xz/list.c:135 >+msgid "Flags" >+msgstr "" >+ >+#: src/xz/list.c:136 >+msgid "MemUsage" >+msgstr "" >+ >+#: src/xz/list.c:137 >+msgid "Filters" >+msgstr "" >+ > #. TRANSLATORS: Indicates that there is no integrity check. >-#. This string is used in tables, so the width must not >-#. exceed ten columns with a fixed-width font. >-#: src/xz/list.c:65 >+#. This string is used in tables. In older xz version this >+#. string was limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:169 > msgid "None" > msgstr "Ingen" > > #. TRANSLATORS: Indicates that integrity check name is not known, >-#. but the Check ID is known (here 2). This and other "Unknown-N" >-#. strings are used in tables, so the width must not exceed ten >-#. columns with a fixed-width font. It's OK to omit the dash if >-#. you need space for one extra letter, but don't use spaces. >-#: src/xz/list.c:72 >+#. but the Check ID is known (here 2). In older xz version these >+#. strings were limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:175 > msgid "Unknown-2" > msgstr "Ukendt-2" > >-#: src/xz/list.c:73 >+#: src/xz/list.c:176 > msgid "Unknown-3" > msgstr "Ukendt-3" > >-#: src/xz/list.c:75 >+#: src/xz/list.c:178 > msgid "Unknown-5" > msgstr "Ukendt-5" > >-#: src/xz/list.c:76 >+#: src/xz/list.c:179 > msgid "Unknown-6" > msgstr "Ukendt-6" > >-#: src/xz/list.c:77 >+#: src/xz/list.c:180 > msgid "Unknown-7" > msgstr "Ukendt-7" > >-#: src/xz/list.c:78 >+#: src/xz/list.c:181 > msgid "Unknown-8" > msgstr "Ukendt-8" > >-#: src/xz/list.c:79 >+#: src/xz/list.c:182 > msgid "Unknown-9" > msgstr "Ukendt-9" > >-#: src/xz/list.c:81 >+#: src/xz/list.c:184 > msgid "Unknown-11" > msgstr "Ukendt-11" > >-#: src/xz/list.c:82 >+#: src/xz/list.c:185 > msgid "Unknown-12" > msgstr "Ukendt-12" > >-#: src/xz/list.c:83 >+#: src/xz/list.c:186 > msgid "Unknown-13" > msgstr "Ukendt-13" > >-#: src/xz/list.c:84 >+#: src/xz/list.c:187 > msgid "Unknown-14" > msgstr "Ukendt-14" > >-#: src/xz/list.c:85 >+#: src/xz/list.c:188 > msgid "Unknown-15" > msgstr "Ukendt-15" > >-#: src/xz/list.c:153 >+#: src/xz/list.c:351 > #, c-format > msgid "%s: File is empty" > msgstr "%s: Filen er tom" > >-#: src/xz/list.c:158 >+#: src/xz/list.c:356 > #, c-format > msgid "%s: Too small to be a valid .xz file" > msgstr "%s: For lille til at være en gyldig .xz-fil" >@@ -335,125 +503,41 @@ > #. to Ratio, the columns are right aligned. Check and Filename > #. are left aligned. If you need longer words, it's OK to > #. use two lines here. Test with "xz -l foo.xz". >-#: src/xz/list.c:677 >+#: src/xz/list.c:730 > msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" > msgstr "" > >-#: src/xz/list.c:717 >-#, c-format >-msgid " Streams: %s\n" >-msgstr " Strømme: %s\n" >- >-#: src/xz/list.c:719 >-#, c-format >-msgid " Blocks: %s\n" >-msgstr " Blokke: %s\n" >- >-#: src/xz/list.c:721 >-#, c-format >-msgid " Compressed size: %s\n" >-msgstr " Komprimeret str.: %s\n" >- >-#: src/xz/list.c:724 >-#, c-format >-msgid " Uncompressed size: %s\n" >-msgstr " Ukomprimeret str.: %s\n" >- >-#: src/xz/list.c:727 >-#, c-format >-msgid " Ratio: %s\n" >-msgstr " Pakkeforhold: %s\n" >- >-#: src/xz/list.c:729 >-#, c-format >-msgid " Check: %s\n" >-msgstr " Kontrol: %s\n" >- >-#: src/xz/list.c:730 >-#, c-format >-msgid " Stream padding: %s\n" >-msgstr " Strømfyld: %s\n" >- >-#. TRANSLATORS: The second line is column headings. All except >-#. Check are right aligned; Check is left aligned. Test with >-#. "xz -lv foo.xz". >-#: src/xz/list.c:758 >-msgid "" >-" Streams:\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >-msgstr "" >-" Strømme:\n" >-" Strøm Blokke KompForsk. DekompForsk. KompStr. DekompStr. Forh. Kontrol Fyld" >- >-#. TRANSLATORS: The second line is column headings. All >-#. except Check are right aligned; Check is left aligned. >-#: src/xz/list.c:813 >-#, c-format >-msgid "" >-" Blocks:\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >-msgstr "" >-" Blokke:\n" >-" Strøm Blok KompForsk. DekompForsk. Ialtstr. DekompStr. Forh. Kontrol" >- >-#. TRANSLATORS: These are additional column headings >-#. for the most verbose listing mode. CheckVal >-#. (Check value), Flags, and Filters are left aligned. >-#. Header (Block Header Size), CompSize, and MemUsage >-#. are right aligned. %*s is replaced with 0-120 >-#. spaces to make the CheckVal column wide enough. >-#. Test with "xz -lvv foo.xz". >-#: src/xz/list.c:825 >-#, c-format >-msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >-msgstr " KontrolVær %*sTeksth Flag Kompstr. HukForb. Filtre" >- >-#: src/xz/list.c:903 src/xz/list.c:1078 >-#, c-format >-msgid " Memory needed: %s MiB\n" >-msgstr " Hukommelse krævet: %s MiB\n" >- >-#: src/xz/list.c:905 src/xz/list.c:1080 >-#, c-format >-msgid " Sizes in headers: %s\n" >-msgstr " Størrelser i teksthoveder: %s\n" >- >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "Yes" > msgstr "Ja" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "No" > msgstr "Nej" > >-#: src/xz/list.c:907 src/xz/list.c:1082 >+#: src/xz/list.c:1027 src/xz/list.c:1205 > #, c-format > msgid " Minimum XZ Utils version: %s\n" > msgstr " Minimum for XZ Utils-version: %s\n" > > #. TRANSLATORS: %s is an integer. Only the plural form of this > #. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz". >-#: src/xz/list.c:1057 >+#: src/xz/list.c:1178 > #, c-format > msgid "%s file\n" > msgid_plural "%s files\n" > msgstr[0] "%s fil\n" > msgstr[1] "%s filer\n" > >-#: src/xz/list.c:1070 >+#: src/xz/list.c:1191 > msgid "Totals:" > msgstr "I alt:" > >-#: src/xz/list.c:1071 >-#, c-format >-msgid " Number of files: %s\n" >-msgstr " Antal filer: %s\n" >- >-#: src/xz/list.c:1146 >+#: src/xz/list.c:1269 > msgid "--list works only on .xz files (--format=xz or --format=auto)" > msgstr "" > >-#: src/xz/list.c:1152 >+#: src/xz/list.c:1275 > msgid "--list does not support reading from standard input" > msgstr "--list understøtter ikke læsning fra standardind" > >@@ -472,11 +556,11 @@ > msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" > msgstr "" > >-#: src/xz/main.c:174 >+#: src/xz/main.c:188 > msgid "Compression and decompression with --robot are not supported yet." > msgstr "Komprimering og dekomprimering med --robot er endnu ikke understøttet." > >-#: src/xz/main.c:252 >+#: src/xz/main.c:266 > msgid "Cannot read data from standard input when reading filenames from standard input" > msgstr "" > >@@ -484,68 +568,68 @@ > #. of the line in messages. Usually it becomes "xz: ". > #. This is a translatable string because French needs > #. a space before a colon. >-#: src/xz/message.c:728 >+#: src/xz/message.c:725 > #, c-format > msgid "%s: " > msgstr "%s: " > >-#: src/xz/message.c:791 src/xz/message.c:841 >+#: src/xz/message.c:797 src/xz/message.c:856 > msgid "Internal error (bug)" > msgstr "Intern fejl (fejl)" > >-#: src/xz/message.c:798 >+#: src/xz/message.c:804 > msgid "Cannot establish signal handlers" > msgstr "Kan ikke etbalere signalhÃ¥ndteringer" > >-#: src/xz/message.c:807 >+#: src/xz/message.c:813 > msgid "No integrity check; not verifying file integrity" > msgstr "Ingen integritetkontrol; verificerer ikke filintegritet" > >-#: src/xz/message.c:810 >+#: src/xz/message.c:816 > msgid "Unsupported type of integrity check; not verifying file integrity" > msgstr "" > >-#: src/xz/message.c:817 >+#: src/xz/message.c:823 > msgid "Memory usage limit reached" > msgstr "Begrænsning pÃ¥ brug af hukommelse er nÃ¥et" > >-#: src/xz/message.c:820 >+#: src/xz/message.c:826 > msgid "File format not recognized" > msgstr "Filformatet blev ikke genkendt" > >-#: src/xz/message.c:823 >+#: src/xz/message.c:829 > msgid "Unsupported options" > msgstr "Tilvalg er ikke understøttede" > >-#: src/xz/message.c:826 >+#: src/xz/message.c:832 > msgid "Compressed data is corrupt" > msgstr "Komprimerede data er ødelagte" > >-#: src/xz/message.c:829 >+#: src/xz/message.c:835 > msgid "Unexpected end of input" > msgstr "Uventet afslutning pÃ¥ inddata" > >-#: src/xz/message.c:862 >+#: src/xz/message.c:877 > #, c-format > msgid "%s MiB of memory is required. The limiter is disabled." > msgstr "%s MiB hukommelse er krævet. Begrænseren er deaktiveret." > >-#: src/xz/message.c:890 >+#: src/xz/message.c:905 > #, c-format > msgid "%s MiB of memory is required. The limit is %s." > msgstr "%s MiB hukommelse er krævet. Begrænsningen er %s." > >-#: src/xz/message.c:1057 >+#: src/xz/message.c:924 > #, c-format > msgid "%s: Filter chain: %s\n" > msgstr "%s: Filterkæde: %s\n" > >-#: src/xz/message.c:1067 >+#: src/xz/message.c:935 > #, c-format > msgid "Try `%s --help' for more information." > msgstr "Prøv »%s --help« for yderligere information." > >-#: src/xz/message.c:1093 >+#: src/xz/message.c:961 > #, c-format > msgid "" > "Usage: %s [OPTION]... [FILE]...\n" >@@ -553,17 +637,17 @@ > "\n" > msgstr "" > >-#: src/xz/message.c:1100 >+#: src/xz/message.c:968 > msgid "Mandatory arguments to long options are mandatory for short options too.\n" > msgstr "" > "Obligatoriske argumenter til lange tilvalg er ogsÃ¥ obligatoriske for korte\n" > "tilvalg.\n" > >-#: src/xz/message.c:1104 >+#: src/xz/message.c:972 > msgid " Operation mode:\n" > msgstr " Operationstilstand:\n" > >-#: src/xz/message.c:1107 >+#: src/xz/message.c:975 > msgid "" > " -z, --compress force compression\n" > " -d, --decompress force decompression\n" >@@ -571,7 +655,7 @@ > " -l, --list list information about .xz files" > msgstr "" > >-#: src/xz/message.c:1113 >+#: src/xz/message.c:981 > msgid "" > "\n" > " Operation modifiers:\n" >@@ -579,20 +663,20 @@ > "\n" > "Operationsændrere:\n" > >-#: src/xz/message.c:1116 >+#: src/xz/message.c:984 > msgid "" > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" > " -c, --stdout write to standard output and don't delete input files" > msgstr "" > >-#: src/xz/message.c:1122 >+#: src/xz/message.c:993 > msgid "" > " --single-stream decompress only the first stream, and silently\n" > " ignore possible remaining input data" > msgstr "" > >-#: src/xz/message.c:1125 >+#: src/xz/message.c:996 > msgid "" > " --no-sparse do not create sparse files when decompressing\n" > " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" >@@ -602,57 +686,57 @@ > " --files0[=FILE] like --files but use the null character as terminator" > msgstr "" > >-#: src/xz/message.c:1134 >+#: src/xz/message.c:1005 > msgid "" > "\n" > " Basic file format and compression options:\n" > msgstr "" > >-#: src/xz/message.c:1136 >+#: src/xz/message.c:1007 > msgid "" > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'" > msgstr "" > >-#: src/xz/message.c:1141 >+#: src/xz/message.c:1012 > msgid " --ignore-check don't verify the integrity check when decompressing" > msgstr "" > >-#: src/xz/message.c:1145 >+#: src/xz/message.c:1016 > msgid "" > " -0 ... -9 compression preset; default is 6; take compressor *and*\n" > " decompressor memory usage into account before using 7-9!" > msgstr "" > >-#: src/xz/message.c:1149 >+#: src/xz/message.c:1020 > msgid "" > " -e, --extreme try to improve compression ratio by using more CPU time;\n" > " does not affect decompressor memory requirements" > msgstr "" > >-#: src/xz/message.c:1153 >+#: src/xz/message.c:1024 > msgid "" > " -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" > " to use as many threads as there are processor cores" > msgstr "" > >-#: src/xz/message.c:1158 >+#: src/xz/message.c:1029 > msgid "" > " --block-size=SIZE\n" > " start a new .xz block after every SIZE bytes of input;\n" > " use this to set the block size for threaded compression" > msgstr "" > >-#: src/xz/message.c:1162 >+#: src/xz/message.c:1033 > msgid "" > " --block-list=SIZES\n" > " start a new .xz block after the given comma-separated\n" > " intervals of uncompressed data" > msgstr "" > >-#: src/xz/message.c:1166 >+#: src/xz/message.c:1037 > msgid "" > " --flush-timeout=TIMEOUT\n" > " when compressing, if more than TIMEOUT milliseconds has\n" >@@ -660,29 +744,31 @@ > " would block, all pending data is flushed out" > msgstr "" > >-#: src/xz/message.c:1172 >+#: src/xz/message.c:1043 > #, no-c-format > msgid "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults" > msgstr "" > >-#: src/xz/message.c:1179 >+#: src/xz/message.c:1052 > msgid "" > " --no-adjust if compression settings exceed the memory usage limit,\n" > " give an error instead of adjusting the settings downwards" > msgstr "" > >-#: src/xz/message.c:1185 >+#: src/xz/message.c:1058 > msgid "" > "\n" > " Custom filter chain for compression (alternative for using presets):" > msgstr "" > >-#: src/xz/message.c:1194 >+#: src/xz/message.c:1067 > msgid "" > "\n" > " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" >@@ -698,20 +784,21 @@ > " depth=NUM maximum search depth; 0=automatic (default)" > msgstr "" > >-#: src/xz/message.c:1209 >+#: src/xz/message.c:1082 > msgid "" > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)" > msgstr "" > >-#: src/xz/message.c:1221 >+#: src/xz/message.c:1095 > msgid "" > "\n" > " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" >@@ -719,7 +806,7 @@ > " from each other (1-256; 1)" > msgstr "" > >-#: src/xz/message.c:1229 >+#: src/xz/message.c:1103 > msgid "" > "\n" > " Other options:\n" >@@ -727,29 +814,29 @@ > "\n" > "Andre tilvalg:\n" > >-#: src/xz/message.c:1232 >+#: src/xz/message.c:1106 > msgid "" > " -q, --quiet suppress warnings; specify twice to suppress errors too\n" > " -v, --verbose be verbose; specify twice for even more verbose" > msgstr "" > >-#: src/xz/message.c:1237 >+#: src/xz/message.c:1111 > msgid " -Q, --no-warn make warnings not affect the exit status" > msgstr "" > >-#: src/xz/message.c:1239 >+#: src/xz/message.c:1113 > msgid " --robot use machine-parsable messages (useful for scripts)" > msgstr "" > " --robot brug beskeder der kan fortolkes maskinelt (nyttigt\n" > " for skripter)" > >-#: src/xz/message.c:1242 >+#: src/xz/message.c:1116 > msgid "" > " --info-memory display the total amount of RAM and the currently active\n" > " memory usage limits, and exit" > msgstr "" > >-#: src/xz/message.c:1245 >+#: src/xz/message.c:1119 > msgid "" > " -h, --help display the short help (lists only the basic options)\n" > " -H, --long-help display this long help and exit" >@@ -758,7 +845,7 @@ > " tilvalg)\n" > " -H, --long-help vis den lange hjælpetekst og afslut" > >-#: src/xz/message.c:1249 >+#: src/xz/message.c:1123 > msgid "" > " -h, --help display this short help and exit\n" > " -H, --long-help display the long help (lists also the advanced options)" >@@ -767,11 +854,11 @@ > " -H, --long-help vis den lange hjælpetekst (viser ogsÃ¥ de avancerede\n" > " tilvalg)" > >-#: src/xz/message.c:1254 >+#: src/xz/message.c:1128 > msgid " -V, --version display the version number and exit" > msgstr " -V, --version vis versionsnummer og afslut" > >-#: src/xz/message.c:1256 >+#: src/xz/message.c:1130 > msgid "" > "\n" > "With no FILE, or when FILE is -, read standard input.\n" >@@ -783,19 +870,19 @@ > #. for this package. Please add _another line_ saying > #. "Report translation bugs to <...>\n" with the email or WWW > #. address for translation bugs. Thanks. >-#: src/xz/message.c:1262 >+#: src/xz/message.c:1136 > #, c-format > msgid "Report bugs to <%s> (in English or Finnish).\n" > msgstr "" > "Rapporter fejl til <%s> (pÃ¥ engelsk eller finsk).\n" > "Rapporter oversættelsesfejl til <dansk@dansk-gruppen.dk>.\n" > >-#: src/xz/message.c:1264 >+#: src/xz/message.c:1138 > #, c-format > msgid "%s home page: <%s>\n" > msgstr "%s hjemmeside: <%s>\n" > >-#: src/xz/message.c:1268 >+#: src/xz/message.c:1142 > msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." > msgstr "DETTE ER EN UDVIKLINGSVERSION - BRUG IKKE I PRODUKTION." > >@@ -823,27 +910,17 @@ > msgid "The sum of lc and lp must not exceed 4" > msgstr "Summen af lc og lp mÃ¥ ikke være højere end 4" > >-#: src/xz/options.c:359 >+#: src/xz/suffix.c:160 > #, c-format >-msgid "The selected match finder requires at least nice=%<PRIu32>" >-msgstr "Den valgte matchfinder kræver mindst nice=%<PRIu32>" >- >-#: src/xz/suffix.c:133 src/xz/suffix.c:258 >-#, c-format >-msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >-msgstr "%s: med --format=raw, --suffix=.SUF er krævet med mindre der skrives til standardud" >- >-#: src/xz/suffix.c:164 >-#, c-format > msgid "%s: Filename has an unknown suffix, skipping" > msgstr "%s: Filnavn har ukendt endelse, udelader" > >-#: src/xz/suffix.c:185 >+#: src/xz/suffix.c:181 > #, c-format > msgid "%s: File already has `%s' suffix, skipping" > msgstr "%s: Filen har allrede endelsen »%s«, udelader." > >-#: src/xz/suffix.c:393 >+#: src/xz/suffix.c:388 > #, c-format > msgid "%s: Invalid filename suffix" > msgstr "%s: Ugyldig filnavnendelse" >@@ -867,15 +944,11 @@ > msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]" > msgstr "Værdien for tilvalget »%s« skal være i intervallet [%<PRIu64>, %<PRIu64>]" > >-#: src/xz/util.c:267 >-msgid "Empty filename, skipping" >-msgstr "Tomt filnavn, udelader" >- >-#: src/xz/util.c:281 >+#: src/xz/util.c:269 > msgid "Compressed data cannot be read from a terminal" > msgstr "Komprimerede data kan ikke læses fra en terminal" > >-#: src/xz/util.c:294 >+#: src/xz/util.c:282 > msgid "Compressed data cannot be written to a terminal" > msgstr "Komprimerede data kan ikke skrives til en terminal" > >@@ -892,3 +965,45 @@ > > #~ msgid "Sandbox was successfully enabled" > #~ msgstr "Sandkassen blev aktiveret" >+ >+#~ msgid "Memory usage limit for compression: " >+#~ msgstr "Grænse for hukommelsesforbrug til komprimering: " >+ >+#, c-format >+#~ msgid " Streams: %s\n" >+#~ msgstr " Strømme: %s\n" >+ >+#, c-format >+#~ msgid " Blocks: %s\n" >+#~ msgstr " Blokke: %s\n" >+ >+#, c-format >+#~ msgid " Ratio: %s\n" >+#~ msgstr " Pakkeforhold: %s\n" >+ >+#, c-format >+#~ msgid " Check: %s\n" >+#~ msgstr " Kontrol: %s\n" >+ >+#~ msgid "" >+#~ " Streams:\n" >+#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >+#~ msgstr "" >+#~ " Strømme:\n" >+#~ " Strøm Blokke KompForsk. DekompForsk. KompStr. DekompStr. Forh. Kontrol Fyld" >+ >+#, c-format >+#~ msgid "" >+#~ " Blocks:\n" >+#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >+#~ msgstr "" >+#~ " Blokke:\n" >+#~ " Strøm Blok KompForsk. DekompForsk. Ialtstr. DekompStr. Forh. Kontrol" >+ >+#, c-format >+#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >+#~ msgstr " KontrolVær %*sTeksth Flag Kompstr. HukForb. Filtre" >+ >+#, c-format >+#~ msgid "The selected match finder requires at least nice=%<PRIu32>" >+#~ msgstr "Den valgte matchfinder kræver mindst nice=%<PRIu32>" >Binary files xz-5.2.5/po/de.gmo and xz-5.4.3/po/de.gmo differ >diff -ur xz-5.2.5/po/de.po xz-5.4.3/po/de.po >--- xz-5.2.5/po/de.po 2020-03-17 17:29:58 >+++ xz-5.4.3/po/de.po 2023-05-04 17:32:20 >@@ -3,13 +3,13 @@ > # > # André Noll <maan@tuebingen.mpg.de>, 2010. > # Anna Henningsen <sqrt@entless.org>, 2015. >-# Mario Blättermann <mario.blaettermann@gmail.com>, 2019. >+# Mario Blättermann <mario.blaettermann@gmail.com>, 2019, 2022. > msgid "" > msgstr "" >-"Project-Id-Version: xz 5.2.4\n" >-"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >-"PO-Revision-Date: 2019-04-12 11:00+0200\n" >+"Project-Id-Version: xz 5.4.0-pre2\n" >+"Report-Msgid-Bugs-To: xz@tukaani.org\n" >+"POT-Creation-Date: 2023-05-04 22:32+0800\n" >+"PO-Revision-Date: 2022-12-05 18:55+0100\n" > "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n" > "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" > "Language: de\n" >@@ -18,102 +18,122 @@ > "Content-Transfer-Encoding: 8bit\n" > "X-Bugs: Report translation errors to the Language-Team address.\n" > "Plural-Forms: nplurals=2; plural=(n != 1);\n" >-"X-Generator: Lokalize 18.12.3\n" >+"X-Generator: Lokalize 22.08.3\n" > >-#: src/xz/args.c:63 >+#: src/xz/args.c:77 > #, c-format > msgid "%s: Invalid argument to --block-list" > msgstr "%s: Ungültiges Argument für --block-list" > >-#: src/xz/args.c:73 >+#: src/xz/args.c:87 > #, c-format > msgid "%s: Too many arguments to --block-list" > msgstr "%s: Zu viele Argumente für --block-list" > >-#: src/xz/args.c:102 >+#: src/xz/args.c:116 > msgid "0 can only be used as the last element in --block-list" > msgstr "0 kann nur das letzte Element in --block-list sein" > >-#: src/xz/args.c:406 >+#: src/xz/args.c:451 > #, c-format > msgid "%s: Unknown file format type" > msgstr "%s: Unbekanntes Dateiformat" > >-#: src/xz/args.c:429 src/xz/args.c:437 >+#: src/xz/args.c:474 src/xz/args.c:482 > #, c-format > msgid "%s: Unsupported integrity check type" > msgstr "%s: Integritätsprüfungstyp nicht unterstützt" > >-#: src/xz/args.c:473 >+#: src/xz/args.c:518 > msgid "Only one file can be specified with `--files' or `--files0'." > msgstr "Nur eine Datei kann als Argument für »--files« oder »--files0« angegeben werden." > >-#: src/xz/args.c:541 >+#: src/xz/args.c:586 > #, c-format > msgid "The environment variable %s contains too many arguments" > msgstr "Die Umgebungsvariable %s enthält zu viele Argumente" > >-#: src/xz/args.c:643 >+#: src/xz/args.c:688 > msgid "Compression support was disabled at build time" > msgstr "Die Unterstützung für Kompression wurde zum Zeitpunkt der Erstellung deaktiviert" > >-#: src/xz/args.c:650 >+#: src/xz/args.c:695 > msgid "Decompression support was disabled at build time" > msgstr "Die Unterstützung für Dekompression wurde zum Zeitpunkt der Erstellung deaktiviert" > >-#: src/xz/coder.c:110 >+#: src/xz/args.c:701 >+msgid "Compression of lzip files (.lz) is not supported" >+msgstr "Kompression von lzip-Dateien (.lz) wird nicht unterstützt" >+ >+#: src/xz/args.c:732 >+#, fuzzy >+#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgstr "%s: Mit --format=raw ist --suffix=.SUF notwendig, falls nicht in die Standardausgabe geschrieben wird" >+ >+#: src/xz/coder.c:115 > msgid "Maximum number of filters is four" > msgstr "Maximal vier Filter möglich" > >-#: src/xz/coder.c:129 >+#: src/xz/coder.c:134 > msgid "Memory usage limit is too low for the given filter setup." > msgstr "Die Speicherbedarfsbegrenzung ist für die gegebene Filter-Konfiguration zu niedrig." > >-#: src/xz/coder.c:159 >+#: src/xz/coder.c:169 > msgid "Using a preset in raw mode is discouraged." > msgstr "Verwendung einer Voreinstellung im Roh-Modus wird nicht empfohlen." > >-#: src/xz/coder.c:161 >+#: src/xz/coder.c:171 > msgid "The exact options of the presets may vary between software versions." > msgstr "Die genauen Optionen der Voreinstellung können zwischen Softwareversionen variieren." > >-#: src/xz/coder.c:184 >+#: src/xz/coder.c:194 > msgid "The .lzma format supports only the LZMA1 filter" > msgstr "Das .lzma-Format unterstützt nur den LZMA1-Filter" > >-#: src/xz/coder.c:192 >+#: src/xz/coder.c:202 > msgid "LZMA1 cannot be used with the .xz format" > msgstr "LZMA1 kann nicht mit dem .xz-Format verwendet werden" > >-#: src/xz/coder.c:209 >+#: src/xz/coder.c:219 > msgid "The filter chain is incompatible with --flush-timeout" > msgstr "Diese Filterkette ist inkompatibel zu --flush-timeout" > >-#: src/xz/coder.c:215 >+#: src/xz/coder.c:225 > msgid "Switching to single-threaded mode due to --flush-timeout" > msgstr "Wegen --flush-timeout wird auf den Einzelthread-Modus umgeschaltet" > >-#: src/xz/coder.c:235 >+#: src/xz/coder.c:249 > #, c-format > msgid "Using up to %<PRIu32> threads." > msgstr "Bis zu %<PRIu32> Threads werden benutzt." > >-#: src/xz/coder.c:251 >+#: src/xz/coder.c:265 > msgid "Unsupported filter chain or filter options" > msgstr "Filterkette oder Filteroptionen werden nicht unterstützt" > >-#: src/xz/coder.c:263 >+#: src/xz/coder.c:277 > #, c-format > msgid "Decompression will need %s MiB of memory." > msgstr "Dekompression wird %s MiB Speicher brauchen." > >-#: src/xz/coder.c:300 >+#: src/xz/coder.c:309 > #, c-format >-msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >-msgstr "Anzahl der Threads wurde von %s auf %s angepasst, um die Speicherbedarfsbegrenzung von %s MiB nicht zu übersteigen" >+msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgstr "Anzahl der Threads wurde von %s auf %s reduziert, um die Speicherbedarfsbegrenzung von %s MiB nicht zu übersteigen" > >-#: src/xz/coder.c:354 >+#: src/xz/coder.c:329 > #, c-format >+msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway." >+msgstr "Anzahl der Threads wurde von %s auf einen reduziert. Die automatische Begrenzung des Speicherverbrauchs auf %s MiB wird immer noch überschritten. %s MiB an Speicher sind erforderlich. Es wird dennoch fortgesetzt." >+ >+#: src/xz/coder.c:356 >+#, c-format >+msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB" >+msgstr "Es wurde in den Einzelthread-Modus gewechselt, um die Speicherbedarfsbegrenzung von %s MiB nicht zu übersteigen" >+ >+#: src/xz/coder.c:411 >+#, c-format > msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" > msgstr "Die LZMA%c-WörterbuchgröÃe wurde von %s MiB auf %s MiB angepasst, um die Speicherbedarfsbegrenzung von %s MiB nicht zu übersteigen" > >@@ -122,11 +142,11 @@ > msgid "Error creating a pipe: %s" > msgstr "Fehler beim Erzeugen der Pipeline: %s" > >-#: src/xz/file_io.c:224 >+#: src/xz/file_io.c:252 > msgid "Failed to enable the sandbox" > msgstr "Sandbox konnte nicht aktiviert werden" > >-#: src/xz/file_io.c:266 >+#: src/xz/file_io.c:294 > #, c-format > msgid "%s: poll() failed: %s" > msgstr "%s: poll() ist fehlgeschlagen: %s" >@@ -141,195 +161,321 @@ > #. it is possible that the user has put a new file in place > #. of the original file, and in that case it obviously > #. shouldn't be removed. >-#: src/xz/file_io.c:333 >+#: src/xz/file_io.c:361 > #, c-format > msgid "%s: File seems to have been moved, not removing" > msgstr "%s: Datei scheint verschoben worden zu sein, daher wird sie nicht gelöscht" > >-#: src/xz/file_io.c:340 src/xz/file_io.c:882 >+#: src/xz/file_io.c:368 src/xz/file_io.c:924 > #, c-format > msgid "%s: Cannot remove: %s" > msgstr "%s: Löschen nicht möglich: %s" > >-#: src/xz/file_io.c:366 >+#: src/xz/file_io.c:394 > #, c-format > msgid "%s: Cannot set the file owner: %s" > msgstr "%s: Dateieigentümer kann nicht gesetzt werden: %s" > >-#: src/xz/file_io.c:372 >+#: src/xz/file_io.c:407 > #, c-format > msgid "%s: Cannot set the file group: %s" > msgstr "%s: Dateigruppe kann nicht gesetzt werden: %s" > >-#: src/xz/file_io.c:391 >+#: src/xz/file_io.c:426 > #, c-format > msgid "%s: Cannot set the file permissions: %s" > msgstr "%s: Zugriffsrechte können nicht gesetzt werden: %s" > >-#: src/xz/file_io.c:517 >+#: src/xz/file_io.c:552 > #, c-format > msgid "Error getting the file status flags from standard input: %s" > msgstr "Dateistatus-Markierungen können nicht aus der Standardeingabe ermittelt werden: %s" > >-#: src/xz/file_io.c:574 src/xz/file_io.c:636 >+#: src/xz/file_io.c:610 src/xz/file_io.c:672 > #, c-format > msgid "%s: Is a symbolic link, skipping" > msgstr "%s: Ist ein symbolischer Link, wird übersprungen" > >-#: src/xz/file_io.c:665 >+#: src/xz/file_io.c:701 > #, c-format > msgid "%s: Is a directory, skipping" > msgstr "%s: Ist ein Verzeichnis, wird übersprungen" > >-#: src/xz/file_io.c:671 >+#: src/xz/file_io.c:707 > #, c-format > msgid "%s: Not a regular file, skipping" > msgstr "%s: Keine reguläre Datei, wird übersprungen" > >-#: src/xz/file_io.c:688 >+#: src/xz/file_io.c:724 > #, c-format > msgid "%s: File has setuid or setgid bit set, skipping" > msgstr "%s: Datei hat das setuid- oder setgid-Bit gesetzt, wird übersprungen" > >-#: src/xz/file_io.c:695 >+#: src/xz/file_io.c:731 > #, c-format > msgid "%s: File has sticky bit set, skipping" > msgstr "%s: Datei hat sticky-Bit gesetzt, wird übersprungen" > >-#: src/xz/file_io.c:702 >+#: src/xz/file_io.c:738 > #, c-format > msgid "%s: Input file has more than one hard link, skipping" > msgstr "%s: Eingabedatei hat mehr als einen harten Link, wird übersprungen" > >-#: src/xz/file_io.c:792 >+#: src/xz/file_io.c:780 >+msgid "Empty filename, skipping" >+msgstr "Leerer Dateiname, wird übersprungen" >+ >+#: src/xz/file_io.c:834 > #, c-format > msgid "Error restoring the status flags to standard input: %s" > msgstr "Fehler beim Wiederherstellen der Status-Markierungen für die Standardeingabe: %s" > >-#: src/xz/file_io.c:840 >+#: src/xz/file_io.c:882 > #, c-format > msgid "Error getting the file status flags from standard output: %s" > msgstr "Status-Markierungen der Standardausgabe können nicht ermittelt werden: %s" > >-#: src/xz/file_io.c:1018 >+#: src/xz/file_io.c:1060 > #, c-format > msgid "Error restoring the O_APPEND flag to standard output: %s" > msgstr "Fehler beim Wiederherstellen der O_APPEND-Markierungen für die Standardausgabe: %s" > >-#: src/xz/file_io.c:1030 >+#: src/xz/file_io.c:1072 > #, c-format > msgid "%s: Closing the file failed: %s" > msgstr "%s: Fehler beim SchlieÃen der Datei: %s" > >-#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 >+#: src/xz/file_io.c:1108 src/xz/file_io.c:1371 > #, c-format > msgid "%s: Seeking failed when trying to create a sparse file: %s" > msgstr "%s: Positionierungsfehler beim Versuch, eine Sparse-Datei (dünnbesetzte Datei) zu erzeugen: %s" > >-#: src/xz/file_io.c:1167 >+#: src/xz/file_io.c:1209 > #, c-format > msgid "%s: Read error: %s" > msgstr "%s: Lesefehler: %s" > >-#: src/xz/file_io.c:1191 >+#: src/xz/file_io.c:1239 > #, c-format > msgid "%s: Error seeking the file: %s" > msgstr "%s: Fehler beim Durchsuchen der Datei: %s" > >-#: src/xz/file_io.c:1201 >+#: src/xz/file_io.c:1263 > #, c-format > msgid "%s: Unexpected end of file" > msgstr "%s: Unerwartetes Ende der Datei" > >-#: src/xz/file_io.c:1260 >+#: src/xz/file_io.c:1322 > #, c-format > msgid "%s: Write error: %s" > msgstr "%s: Schreibfehler: %s" > >-#: src/xz/hardware.c:137 >+#: src/xz/hardware.c:238 > msgid "Disabled" > msgstr "Deaktiviert" > >-#. TRANSLATORS: Test with "xz --info-memory" to see if >-#. the alignment looks nice. >-#: src/xz/hardware.c:156 >-msgid "Total amount of physical memory (RAM): " >-msgstr "Gesamtmenge physischer Speicher (RAM): " >+#: src/xz/hardware.c:269 >+msgid "Amount of physical memory (RAM):" >+msgstr "Gesamtmenge physischer Speicher (RAM):" > >-#: src/xz/hardware.c:158 >-msgid "Memory usage limit for compression: " >-msgstr "Speicherbedarfsbegrenzung für Kompression: " >+#: src/xz/hardware.c:270 >+msgid "Number of processor threads:" >+msgstr "Anzahl der Prozessor-Threads:" > >-#: src/xz/hardware.c:160 >-msgid "Memory usage limit for decompression: " >-msgstr "Speicherbedarfsbegrenzung für Dekompression: " >+#: src/xz/hardware.c:271 >+msgid "Compression:" >+msgstr "Kompression:" > >+#: src/xz/hardware.c:272 >+msgid "Decompression:" >+msgstr "Dekompression:" >+ >+#: src/xz/hardware.c:273 >+msgid "Multi-threaded decompression:" >+msgstr "Multithread-Dekompression:" >+ >+#: src/xz/hardware.c:274 >+msgid "Default for -T0:" >+msgstr "Vorgabe für -T0:" >+ >+#: src/xz/hardware.c:292 >+msgid "Hardware information:" >+msgstr "Hardware-Information:" >+ >+#: src/xz/hardware.c:299 >+msgid "Memory usage limits:" >+msgstr "Speicherbedarfsbegrenzung:" >+ >+#: src/xz/list.c:68 >+msgid "Streams:" >+msgstr "Datenströme:" >+ >+#: src/xz/list.c:69 >+msgid "Blocks:" >+msgstr "Blöcke:" >+ >+#: src/xz/list.c:70 >+msgid "Compressed size:" >+msgstr "GröÃe komprimiert:" >+ >+#: src/xz/list.c:71 >+msgid "Uncompressed size:" >+msgstr "GröÃe unkomprimiert:" >+ >+#: src/xz/list.c:72 >+msgid "Ratio:" >+msgstr "Verhältnis:" >+ >+#: src/xz/list.c:73 >+msgid "Check:" >+msgstr "Prüfung:" >+ >+#: src/xz/list.c:74 >+msgid "Stream Padding:" >+msgstr "Datenstromauffüllung:" >+ >+#: src/xz/list.c:75 >+msgid "Memory needed:" >+msgstr "Benötigter Speicher:" >+ >+#: src/xz/list.c:76 >+msgid "Sizes in headers:" >+msgstr "GröÃe in Köpfen:" >+ >+#: src/xz/list.c:79 >+msgid "Number of files:" >+msgstr "Anzahl Dateien:" >+ >+#: src/xz/list.c:122 >+msgid "Stream" >+msgstr "Datenstrom" >+ >+#: src/xz/list.c:123 >+msgid "Block" >+msgstr "Block" >+ >+#: src/xz/list.c:124 >+msgid "Blocks" >+msgstr "Blöcke" >+ >+#: src/xz/list.c:125 >+msgid "CompOffset" >+msgstr "KompVers" >+ >+#: src/xz/list.c:126 >+msgid "UncompOffset" >+msgstr "UnkompVers" >+ >+#: src/xz/list.c:127 >+msgid "CompSize" >+msgstr "KompGröÃe" >+ >+#: src/xz/list.c:128 >+msgid "UncompSize" >+msgstr "UnkompGröÃe" >+ >+#: src/xz/list.c:129 >+msgid "TotalSize" >+msgstr "Gesamt" >+ >+#: src/xz/list.c:130 >+msgid "Ratio" >+msgstr "Verhältnis" >+ >+#: src/xz/list.c:131 >+msgid "Check" >+msgstr "Prüfung" >+ >+#: src/xz/list.c:132 >+msgid "CheckVal" >+msgstr "Prüfwert" >+ >+#: src/xz/list.c:133 >+msgid "Padding" >+msgstr "Auffüllung" >+ >+#: src/xz/list.c:134 >+msgid "Header" >+msgstr "Kopf" >+ >+#: src/xz/list.c:135 >+msgid "Flags" >+msgstr "Flags" >+ >+#: src/xz/list.c:136 >+msgid "MemUsage" >+msgstr "SpeichVerb" >+ >+#: src/xz/list.c:137 >+msgid "Filters" >+msgstr "Filter" >+ > #. TRANSLATORS: Indicates that there is no integrity check. >-#. This string is used in tables, so the width must not >-#. exceed ten columns with a fixed-width font. >-#: src/xz/list.c:65 >+#. This string is used in tables. In older xz version this >+#. string was limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:169 > msgid "None" > msgstr "Keine" > > #. TRANSLATORS: Indicates that integrity check name is not known, >-#. but the Check ID is known (here 2). This and other "Unknown-N" >-#. strings are used in tables, so the width must not exceed ten >-#. columns with a fixed-width font. It's OK to omit the dash if >-#. you need space for one extra letter, but don't use spaces. >-#: src/xz/list.c:72 >+#. but the Check ID is known (here 2). In older xz version these >+#. strings were limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:175 > msgid "Unknown-2" > msgstr "Unbek.2" > >-#: src/xz/list.c:73 >+#: src/xz/list.c:176 > msgid "Unknown-3" > msgstr "Unbek.3" > >-#: src/xz/list.c:75 >+#: src/xz/list.c:178 > msgid "Unknown-5" > msgstr "Unbek.5" > >-#: src/xz/list.c:76 >+#: src/xz/list.c:179 > msgid "Unknown-6" > msgstr "Unbek.6" > >-#: src/xz/list.c:77 >+#: src/xz/list.c:180 > msgid "Unknown-7" > msgstr "Unbek.7" > >-#: src/xz/list.c:78 >+#: src/xz/list.c:181 > msgid "Unknown-8" > msgstr "Unbek.8" > >-#: src/xz/list.c:79 >+#: src/xz/list.c:182 > msgid "Unknown-9" > msgstr "Unbek.9" > >-#: src/xz/list.c:81 >+#: src/xz/list.c:184 > msgid "Unknown-11" > msgstr "Unbek.11" > >-#: src/xz/list.c:82 >+#: src/xz/list.c:185 > msgid "Unknown-12" > msgstr "Unbek.12" > >-#: src/xz/list.c:83 >+#: src/xz/list.c:186 > msgid "Unknown-13" > msgstr "Unbek.13" > >-#: src/xz/list.c:84 >+#: src/xz/list.c:187 > msgid "Unknown-14" > msgstr "Unbek.14" > >-#: src/xz/list.c:85 >+#: src/xz/list.c:188 > msgid "Unknown-15" > msgstr "Unbek.15" > >-#: src/xz/list.c:153 >+#: src/xz/list.c:351 > #, c-format > msgid "%s: File is empty" > msgstr "%s: Datei ist leer" > >-#: src/xz/list.c:158 >+#: src/xz/list.c:356 > #, c-format > msgid "%s: Too small to be a valid .xz file" > msgstr "%s: Zu klein, um eine gültige .xz-Datei zu sein" >@@ -338,125 +484,41 @@ > #. to Ratio, the columns are right aligned. Check and Filename > #. are left aligned. If you need longer words, it's OK to > #. use two lines here. Test with "xz -l foo.xz". >-#: src/xz/list.c:677 >+#: src/xz/list.c:730 > msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" > msgstr " Str. Blöcke Kompr. Unkompr. Verh. Check Dateiname" > >-#: src/xz/list.c:717 >-#, c-format >-msgid " Streams: %s\n" >-msgstr " Datenströme: %s\n" >- >-#: src/xz/list.c:719 >-#, c-format >-msgid " Blocks: %s\n" >-msgstr " Blöcke: %s\n" >- >-#: src/xz/list.c:721 >-#, c-format >-msgid " Compressed size: %s\n" >-msgstr " GröÃe komprimiert: %s\n" >- >-#: src/xz/list.c:724 >-#, c-format >-msgid " Uncompressed size: %s\n" >-msgstr " GröÃe unkomprimiert: %s\n" >- >-#: src/xz/list.c:727 >-#, c-format >-msgid " Ratio: %s\n" >-msgstr " Verhältnis: %s\n" >- >-#: src/xz/list.c:729 >-#, c-format >-msgid " Check: %s\n" >-msgstr " Check: %s\n" >- >-#: src/xz/list.c:730 >-#, c-format >-msgid " Stream padding: %s\n" >-msgstr " Datenstromauffüllung: %s\n" >- >-#. TRANSLATORS: The second line is column headings. All except >-#. Check are right aligned; Check is left aligned. Test with >-#. "xz -lv foo.xz". >-#: src/xz/list.c:758 >-msgid "" >-" Streams:\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >-msgstr "" >-" Datenströme:\n" >-" D.Strom Blöcke KompOffset UnkompOffset KompGröÃe UnkompGröÃe Verh. Check Auffüllung" >- >-#. TRANSLATORS: The second line is column headings. All >-#. except Check are right aligned; Check is left aligned. >-#: src/xz/list.c:813 >-#, c-format >-msgid "" >-" Blocks:\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >-msgstr "" >-" Blöcke:\n" >-" Strom Block KompOffset UnkompOffset TotalGröÃe UnkompGröÃe Verh. Check" >- >-#. TRANSLATORS: These are additional column headings >-#. for the most verbose listing mode. CheckVal >-#. (Check value), Flags, and Filters are left aligned. >-#. Header (Block Header Size), CompSize, and MemUsage >-#. are right aligned. %*s is replaced with 0-120 >-#. spaces to make the CheckVal column wide enough. >-#. Test with "xz -lvv foo.xz". >-#: src/xz/list.c:825 >-#, c-format >-msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >-msgstr " PrüfWert %*s Kopf Schalter KompGröÃe Speicher Filter" >- >-#: src/xz/list.c:903 src/xz/list.c:1078 >-#, c-format >-msgid " Memory needed: %s MiB\n" >-msgstr " Benötigter Speicher: %s MiB\n" >- >-#: src/xz/list.c:905 src/xz/list.c:1080 >-#, c-format >-msgid " Sizes in headers: %s\n" >-msgstr " GröÃe in Köpfen: %s\n" >- >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "Yes" > msgstr "Ja" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "No" > msgstr "Nein" > >-#: src/xz/list.c:907 src/xz/list.c:1082 >+#: src/xz/list.c:1027 src/xz/list.c:1205 > #, c-format > msgid " Minimum XZ Utils version: %s\n" > msgstr " Minimal erforderliche XZ Utils-Version: %s\n" > > #. TRANSLATORS: %s is an integer. Only the plural form of this > #. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz". >-#: src/xz/list.c:1057 >+#: src/xz/list.c:1178 > #, c-format > msgid "%s file\n" > msgid_plural "%s files\n" > msgstr[0] "%s Datei\n" > msgstr[1] "%s Dateien\n" > >-#: src/xz/list.c:1070 >+#: src/xz/list.c:1191 > msgid "Totals:" > msgstr "Gesamt:" > >-#: src/xz/list.c:1071 >-#, c-format >-msgid " Number of files: %s\n" >-msgstr " Anzahl Dateien: %s\n" >- >-#: src/xz/list.c:1146 >+#: src/xz/list.c:1269 > msgid "--list works only on .xz files (--format=xz or --format=auto)" > msgstr "--list funktioniert nur mit .xz-Dateien (--format=xz oder --format=auto)" > >-#: src/xz/list.c:1152 >+#: src/xz/list.c:1275 > msgid "--list does not support reading from standard input" > msgstr "--list unterstützt kein Lesen aus der Standardeingabe" > >@@ -475,11 +537,11 @@ > msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" > msgstr "%s: Null-Zeichen beim Lesen der Dateinamen gefunden; meinten Sie »--files0« statt »--files«?" > >-#: src/xz/main.c:174 >+#: src/xz/main.c:188 > msgid "Compression and decompression with --robot are not supported yet." > msgstr "Kompression und Dekompression mit --robot wird noch nicht unterstützt." > >-#: src/xz/main.c:252 >+#: src/xz/main.c:266 > msgid "Cannot read data from standard input when reading filenames from standard input" > msgstr "Lesen der Daten aus der Standardeingabe ist nicht möglich, wenn die Dateinamen auch aus der Standardeingabe gelesen werden" > >@@ -487,68 +549,68 @@ > #. of the line in messages. Usually it becomes "xz: ". > #. This is a translatable string because French needs > #. a space before a colon. >-#: src/xz/message.c:728 >+#: src/xz/message.c:725 > #, c-format > msgid "%s: " > msgstr "%s: " > >-#: src/xz/message.c:791 src/xz/message.c:841 >+#: src/xz/message.c:797 src/xz/message.c:856 > msgid "Internal error (bug)" > msgstr "Interner Fehler (Bug)" > >-#: src/xz/message.c:798 >+#: src/xz/message.c:804 > msgid "Cannot establish signal handlers" > msgstr "Signalroutine kann nicht gesetzt werden" > >-#: src/xz/message.c:807 >+#: src/xz/message.c:813 > msgid "No integrity check; not verifying file integrity" > msgstr "Keine Integritätsprüfung; Integrität der Datei wird nicht überprüft" > >-#: src/xz/message.c:810 >+#: src/xz/message.c:816 > msgid "Unsupported type of integrity check; not verifying file integrity" > msgstr "Typ der Integritätsprüfung wird nicht unterstützt; Integrität der Datei wird nicht überprüft" > >-#: src/xz/message.c:817 >+#: src/xz/message.c:823 > msgid "Memory usage limit reached" > msgstr "Speicherbedarfsbegrenzung erreicht" > >-#: src/xz/message.c:820 >+#: src/xz/message.c:826 > msgid "File format not recognized" > msgstr "Dateiformat nicht erkannt" > >-#: src/xz/message.c:823 >+#: src/xz/message.c:829 > msgid "Unsupported options" > msgstr "Optionen nicht unterstützt" > >-#: src/xz/message.c:826 >+#: src/xz/message.c:832 > msgid "Compressed data is corrupt" > msgstr "Komprimierte Daten sind beschädigt" > >-#: src/xz/message.c:829 >+#: src/xz/message.c:835 > msgid "Unexpected end of input" > msgstr "Unerwartetes Ende der Eingabe" > >-#: src/xz/message.c:862 >+#: src/xz/message.c:877 > #, c-format > msgid "%s MiB of memory is required. The limiter is disabled." > msgstr "%s MiB Speicher wird benötigt. Die Begrenzung ist deaktiviert." > >-#: src/xz/message.c:890 >+#: src/xz/message.c:905 > #, c-format > msgid "%s MiB of memory is required. The limit is %s." > msgstr "%s MiB Speicher wird benötigt. Die Begrenzung ist %s." > >-#: src/xz/message.c:1057 >+#: src/xz/message.c:924 > #, c-format > msgid "%s: Filter chain: %s\n" > msgstr "%s: Filterkette: %s\n" > >-#: src/xz/message.c:1067 >+#: src/xz/message.c:935 > #, c-format > msgid "Try `%s --help' for more information." > msgstr "Versuchen Sie »%s --help« für mehr Informationen." > >-#: src/xz/message.c:1093 >+#: src/xz/message.c:961 > #, c-format > msgid "" > "Usage: %s [OPTION]... [FILE]...\n" >@@ -559,17 +621,17 @@ > "Komprimiert oder dekomprimiert .xz-DATEI(EN).\n" > "\n" > >-#: src/xz/message.c:1100 >+#: src/xz/message.c:968 > msgid "Mandatory arguments to long options are mandatory for short options too.\n" > msgstr "" > "Obligatorische Argumente für lange Optionen sind auch für kurze Optionen\n" > "zwingend.\n" > >-#: src/xz/message.c:1104 >+#: src/xz/message.c:972 > msgid " Operation mode:\n" > msgstr " Aktionsmodus:\n" > >-#: src/xz/message.c:1107 >+#: src/xz/message.c:975 > msgid "" > " -z, --compress force compression\n" > " -d, --decompress force decompression\n" >@@ -581,7 +643,7 @@ > " -t, --test Dateiintegrität überprüfen\n" > " -l, --list Dateiinformationen anzeigen" > >-#: src/xz/message.c:1113 >+#: src/xz/message.c:981 > msgid "" > "\n" > " Operation modifiers:\n" >@@ -589,7 +651,7 @@ > "\n" > " Aktionsmodifikatoren:\n" > >-#: src/xz/message.c:1116 >+#: src/xz/message.c:984 > msgid "" > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" >@@ -601,7 +663,7 @@ > " -c, --stdout In die Standardausgabe schreiben und die\n" > " Eingabedateien nicht löschen" > >-#: src/xz/message.c:1122 >+#: src/xz/message.c:993 > msgid "" > " --single-stream decompress only the first stream, and silently\n" > " ignore possible remaining input data" >@@ -610,7 +672,7 @@ > " stillschweigend mögliche weitere Eingabedaten\n" > " ignorieren" > >-#: src/xz/message.c:1125 >+#: src/xz/message.c:996 > msgid "" > " --no-sparse do not create sparse files when decompressing\n" > " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" >@@ -631,7 +693,7 @@ > " --files0=[DATEI] Wie --files, aber das Null-Zeichen wird als\n" > " Trenner benutzt" > >-#: src/xz/message.c:1134 >+#: src/xz/message.c:1005 > msgid "" > "\n" > " Basic file format and compression options:\n" >@@ -639,26 +701,26 @@ > "\n" > " Grundlegende Optionen für Dateiformat und Kompression:\n" > >-#: src/xz/message.c:1136 >+#: src/xz/message.c:1007 > msgid "" > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'" > msgstr "" > " -F, --format=FMT Dateiformat zur Kodierung oder Dekodierung; mögliche\n" >-" Werte sind »auto« (Voreinstellung), »xz«, »lzma« und\n" >-" »raw«\n" >+" Werte sind »auto« (Voreinstellung), »xz«, »lzma«,\n" >+" »lzip« und »raw«\n" > " -C, --check=PRÃFUNG Typ der Integritätsprüfung: »none« (Vorsicht),\n" > " »crc32«, »crc64« (Voreinstellung) oder »sha256«" > >-#: src/xz/message.c:1141 >+#: src/xz/message.c:1012 > msgid " --ignore-check don't verify the integrity check when decompressing" > msgstr "" > " --ignore-check Integritätsprüfung beim Dekomprimieren\n" > " nicht ausführen" > >-#: src/xz/message.c:1145 >+#: src/xz/message.c:1016 > msgid "" > " -0 ... -9 compression preset; default is 6; take compressor *and*\n" > " decompressor memory usage into account before using 7-9!" >@@ -667,7 +729,7 @@ > " Beachten Sie den Speicherbedarf des Kompressors\n" > " *und* des Dekompressors, wenn Sie 7-9 benutzen!" > >-#: src/xz/message.c:1149 >+#: src/xz/message.c:1020 > msgid "" > " -e, --extreme try to improve compression ratio by using more CPU time;\n" > " does not affect decompressor memory requirements" >@@ -676,7 +738,7 @@ > " Kompressionsverhältnis zu verbessern. Dies beeinflusst\n" > " den Speicherbedarf des Dekompressors nicht." > >-#: src/xz/message.c:1153 >+#: src/xz/message.c:1024 > msgid "" > " -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" > " to use as many threads as there are processor cores" >@@ -686,7 +748,7 @@ > " wird, dann werden so viele Threads erzeugt, wie\n" > " Prozessorkerne vorhanden sind" > >-#: src/xz/message.c:1158 >+#: src/xz/message.c:1029 > msgid "" > " --block-size=SIZE\n" > " start a new .xz block after every SIZE bytes of input;\n" >@@ -698,7 +760,7 @@ > " Option, um die BlockgröÃe für die Kompression mit\n" > " mehreren Threads zu setzen" > >-#: src/xz/message.c:1162 >+#: src/xz/message.c:1033 > msgid "" > " --block-list=SIZES\n" > " start a new .xz block after the given comma-separated\n" >@@ -709,7 +771,7 @@ > " Kommata getrennten Intervalle an unkomprimierten\n" > " Daten beginnen" > >-#: src/xz/message.c:1166 >+#: src/xz/message.c:1037 > msgid "" > " --flush-timeout=TIMEOUT\n" > " when compressing, if more than TIMEOUT milliseconds has\n" >@@ -723,17 +785,20 @@ > " Eingabedaten den Prozess blockieren würde, dann werden\n" > " alle noch ausstehenden Daten geschrieben" > >-#: src/xz/message.c:1172 >+#: src/xz/message.c:1043 > #, no-c-format > msgid "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults" > msgstr "" > " --memlimit-compress=BEGRENZUNG\n" > " --memlimit-decompress=BEGRENZUNG\n" >+" --memlimit-mt-decompress=BEGRENZUNG\n" > " -M, --memlimit=BEGRENZUNG\n" > " Speicherbedarfsbegrenzung für Kompression,\n" > " Dekompression oder beides setzen; die BEGRENZUNG\n" >@@ -741,7 +806,7 @@ > " Geben Sie 0 an, um die Grundeinstellungen zu\n" > " verwenden." > >-#: src/xz/message.c:1179 >+#: src/xz/message.c:1052 > msgid "" > " --no-adjust if compression settings exceed the memory usage limit,\n" > " give an error instead of adjusting the settings downwards" >@@ -751,7 +816,7 @@ > " Fehler ausgegeben, statt die Einstellungen\n" > " nach unten anzupassen." > >-#: src/xz/message.c:1185 >+#: src/xz/message.c:1058 > msgid "" > "\n" > " Custom filter chain for compression (alternative for using presets):" >@@ -759,7 +824,7 @@ > "\n" > " Benutzerdefinierte Filterkette für Kompression (alternativ zu Voreinstellung):" > >-#: src/xz/message.c:1194 >+#: src/xz/message.c:1067 > msgid "" > "\n" > " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" >@@ -784,38 +849,40 @@ > " lc=ZAHL Anzahl der Literal-Kontext-Bits (0-4; 3)\n" > " lp=ZAHL Anzahl der Literal-Positions-Bits (0-4; 0)\n" > " pb=ZAHL Anzahl der Positions-Bits (0-4; 2)\n" >-" mode=MODUS Kompressionsmodus (fast, normal; normal)\n" >-" nice=ZAHL Nice-Länge eines Treffers (2-273; 64)\n" >-" mf=NAME Algorithmus zum Auffinden von\n" >-" Ãbereinstimmungen\n" >-" (hc3, hc4, bt2, bt3, bt4; bt4)\n" >-" depth=ZAHL Maximale Suchtiefe; 0=automatisch\n" >-" (Voreinstellung)" >+" mode=MODUS Kompressionsmodus (fast, normal; normal)\n" >+" nice=ZAHL Nice-Länge eines Treffers (2-273; 64)\n" >+" mf=NAME Algorithmus zum Auffinden von\n" >+" Ãbereinstimmungen (hc3, hc4, bt2, bt3, bt4;\n" >+" bt4)\n" >+" depth=ZAHL Maximale Suchtiefe; 0=automatisch\n" >+" (Voreinstellung)" > >-#: src/xz/message.c:1209 >+#: src/xz/message.c:1082 > msgid "" > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)" > msgstr "" > "\n" > " --x86[=OPTIONEN] x86 BCJ-Filter (32-bit und 64-bit)\n" >+" --arm[=OPTIONEN] ARM-BCJ-Filter\n" >+" --armthumb[=OPTIONEN] ARM-Thumb-BCJ-Filter\n" >+" --arm64[=OPTIONEN] ARM64-BCJ-Filter\n" > " --powerpc[=OPTIONEN] PowerPC-BCJ-Filter (nur Big Endian)\n" > " --ia64[=OPTIONEN] IA64-(Itanium-)BCJ-Filter\n" >-" --arm[=OPTIONEN] ARM-BCJ-Filter (nur Little Endian)\n" >-" --armthumb[=OPTIONEN] ARM-Thumb-BCJ-Filter (nur Little Endian)\n" > " --sparc[=OPTIONEN] SPARC-BCJ-Filter\n" > " Zulässige Optionen für alle BCJ-Filter:\n" > " start=ZAHL Startversatz für Konversion\n" > " (Voreinstellung=0)" > >-#: src/xz/message.c:1221 >+#: src/xz/message.c:1095 > msgid "" > "\n" > " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" >@@ -828,7 +895,7 @@ > " dist=NUM Abstand zwischen den Bytes, die voneinander\n" > " subtrahiert werden (1-256; 1)" > >-#: src/xz/message.c:1229 >+#: src/xz/message.c:1103 > msgid "" > "\n" > " Other options:\n" >@@ -836,7 +903,7 @@ > "\n" > " Andere Optionen:\n" > >-#: src/xz/message.c:1232 >+#: src/xz/message.c:1106 > msgid "" > " -q, --quiet suppress warnings; specify twice to suppress errors too\n" > " -v, --verbose be verbose; specify twice for even more verbose" >@@ -846,17 +913,17 @@ > " -v, --verbose Ausführlicher Modus; wird diese Option zweimal\n" > " angegeben, erfolgen noch ausführlichere Ausgaben" > >-#: src/xz/message.c:1237 >+#: src/xz/message.c:1111 > msgid " -Q, --no-warn make warnings not affect the exit status" > msgstr " -Q, --no-warn Warnungen verändern nicht den Exit-Status" > >-#: src/xz/message.c:1239 >+#: src/xz/message.c:1113 > msgid " --robot use machine-parsable messages (useful for scripts)" > msgstr "" > " --robot Maschinenlesbare Meldungen ausgeben (nützlich für\n" > " Skripte)" > >-#: src/xz/message.c:1242 >+#: src/xz/message.c:1116 > msgid "" > " --info-memory display the total amount of RAM and the currently active\n" > " memory usage limits, and exit" >@@ -865,7 +932,7 @@ > " Speicherbedarfsbegrenzung anzeigen\n" > " und das Programm beenden" > >-#: src/xz/message.c:1245 >+#: src/xz/message.c:1119 > msgid "" > " -h, --help display the short help (lists only the basic options)\n" > " -H, --long-help display this long help and exit" >@@ -874,7 +941,7 @@ > " Optionen)\n" > " -H, --long-help Diese lange Hilfe anzeigen und das Programm beenden" > >-#: src/xz/message.c:1249 >+#: src/xz/message.c:1123 > msgid "" > " -h, --help display this short help and exit\n" > " -H, --long-help display the long help (lists also the advanced options)" >@@ -883,11 +950,11 @@ > " -H, --long-help Die lange Hilfe (und damit auch fortgeschrittene\n" > " Optionen) anzeigen" > >-#: src/xz/message.c:1254 >+#: src/xz/message.c:1128 > msgid " -V, --version display the version number and exit" > msgstr " -V, --version Versionsnummer anzeigen und beenden" > >-#: src/xz/message.c:1256 >+#: src/xz/message.c:1130 > msgid "" > "\n" > "With no FILE, or when FILE is -, read standard input.\n" >@@ -900,17 +967,17 @@ > #. for this package. Please add _another line_ saying > #. "Report translation bugs to <...>\n" with the email or WWW > #. address for translation bugs. Thanks. >-#: src/xz/message.c:1262 >+#: src/xz/message.c:1136 > #, c-format > msgid "Report bugs to <%s> (in English or Finnish).\n" > msgstr "Melden Sie Fehler an <%s> (auf Englisch oder Finnisch).\n" > >-#: src/xz/message.c:1264 >+#: src/xz/message.c:1138 > #, c-format > msgid "%s home page: <%s>\n" > msgstr "%s-Homepage: <%s>\n" > >-#: src/xz/message.c:1268 >+#: src/xz/message.c:1142 > msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." > msgstr "DIES IST EINE NICHT FÃR DEN PRODUKTIVBETRIEB GEEIGNETE ENTWICKLERVERSION." > >@@ -938,27 +1005,17 @@ > msgid "The sum of lc and lp must not exceed 4" > msgstr "Die Summe aus lc und lp darf höchstens 4 sein" > >-#: src/xz/options.c:359 >+#: src/xz/suffix.c:160 > #, c-format >-msgid "The selected match finder requires at least nice=%<PRIu32>" >-msgstr "Der ausgewählte Algorithmus zum Auffinden von Ãbereinstimmungen braucht mindestens nice=%<PRIu32>" >- >-#: src/xz/suffix.c:133 src/xz/suffix.c:258 >-#, c-format >-msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >-msgstr "%s: Mit --format=raw ist --suffix=.SUF notwendig, falls nicht in die Standardausgabe geschrieben wird" >- >-#: src/xz/suffix.c:164 >-#, c-format > msgid "%s: Filename has an unknown suffix, skipping" > msgstr "%s: Dateiname hat unbekanntes Suffix, wird übersprungen" > >-#: src/xz/suffix.c:185 >+#: src/xz/suffix.c:181 > #, c-format > msgid "%s: File already has `%s' suffix, skipping" > msgstr "%s: Datei hat bereits das Suffix »%s«, wird übersprungen" > >-#: src/xz/suffix.c:393 >+#: src/xz/suffix.c:388 > #, c-format > msgid "%s: Invalid filename suffix" > msgstr "%s: Ungültige Dateiendung" >@@ -982,15 +1039,11 @@ > msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]" > msgstr "Wert der Option »%s« muss im Bereich [%<PRIu64>, %<PRIu64>] sein" > >-#: src/xz/util.c:267 >-msgid "Empty filename, skipping" >-msgstr "Leerer Dateiname, wird übersprungen" >- >-#: src/xz/util.c:281 >+#: src/xz/util.c:269 > msgid "Compressed data cannot be read from a terminal" > msgstr "Komprimierte Daten können nicht vom Terminal gelesen werden" > >-#: src/xz/util.c:294 >+#: src/xz/util.c:282 > msgid "Compressed data cannot be written to a terminal" > msgstr "Komprimierte Daten können nicht auf das Terminal geschrieben werden" > >@@ -1001,9 +1054,3 @@ > #: src/common/tuklib_exit.c:43 > msgid "Unknown error" > msgstr "Unbekannter Fehler" >- >-#~ msgid "Sandbox is disabled due to incompatible command line arguments" >-#~ msgstr "Sandbox ist wegen inkompatibler Befehlszeilenargumente deaktiviert" >- >-#~ msgid "Sandbox was successfully enabled" >-#~ msgstr "Sandbox wurde erfolgreich aktiviert" >Only in xz-5.4.3/po: eo.gmo >Only in xz-5.4.3/po: eo.po >Only in xz-5.4.3/po: es.gmo >Only in xz-5.4.3/po: es.po >Binary files xz-5.2.5/po/fi.gmo and xz-5.4.3/po/fi.gmo differ >diff -ur xz-5.2.5/po/fi.po xz-5.4.3/po/fi.po >--- xz-5.2.5/po/fi.po 2020-03-17 17:29:58 >+++ xz-5.4.3/po/fi.po 2023-05-04 17:32:20 >@@ -1,118 +1,138 @@ > # Finnish translations for xz package > # Suomenkielinen käännös xz-paketille. > # This file is put in the public domain. >-# Lauri Nurmi <lanurmi@iki.fi>, 2019, 2020. >+# Lauri Nurmi <lanurmi@iki.fi>, 2019, 2020, 2022. > # > msgid "" > msgstr "" >-"Project-Id-Version: xz 5.2.4\n" >-"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >-"PO-Revision-Date: 2020-02-14 18:33+0200\n" >+"Project-Id-Version: xz 5.4.0-pre1\n" >+"Report-Msgid-Bugs-To: xz@tukaani.org\n" >+"POT-Creation-Date: 2023-05-04 22:32+0800\n" >+"PO-Revision-Date: 2022-11-10 16:17+0200\n" > "Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n" > "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n" > "Language: fi\n" > "MIME-Version: 1.0\n" > "Content-Type: text/plain; charset=UTF-8\n" > "Content-Transfer-Encoding: 8bit\n" >-"X-Bugs: Report translation errors to the Language-Team address.\n" > "Plural-Forms: nplurals=2; plural=(n != 1);\n" >-"X-Generator: Poedit 2.2.4\n" >+"X-Bugs: Report translation errors to the Language-Team address.\n" >+"X-Generator: Poedit 3.2\n" > >-#: src/xz/args.c:63 >+#: src/xz/args.c:77 > #, c-format > msgid "%s: Invalid argument to --block-list" > msgstr "%s: Virheellinen argumentti valitsimelle --block-list" > >-#: src/xz/args.c:73 >+#: src/xz/args.c:87 > #, c-format > msgid "%s: Too many arguments to --block-list" > msgstr "%s: Liian monta argumenttia valitsimelle --block-list" > >-#: src/xz/args.c:102 >+#: src/xz/args.c:116 > msgid "0 can only be used as the last element in --block-list" > msgstr "0:aa voi käyttää vain viimeisenä alkiona valitsimen --block-list kanssa" > >-#: src/xz/args.c:406 >+#: src/xz/args.c:451 > #, c-format > msgid "%s: Unknown file format type" > msgstr "%s: Tuntematon tiedostomuototyyppi" > >-#: src/xz/args.c:429 src/xz/args.c:437 >+#: src/xz/args.c:474 src/xz/args.c:482 > #, c-format > msgid "%s: Unsupported integrity check type" > msgstr "%s: Eheystarkistuksen tyyppiä ei tueta" > >-#: src/xz/args.c:473 >+#: src/xz/args.c:518 > msgid "Only one file can be specified with `--files' or `--files0'." > msgstr "Vain yksi tiedosto voidaan antaa valitsimille â--filesâ ja â--files0â." > >-#: src/xz/args.c:541 >+#: src/xz/args.c:586 > #, c-format > msgid "The environment variable %s contains too many arguments" > msgstr "Ympäristömuuttuja %s sisältää liian monta argumenttia" > >-#: src/xz/args.c:643 >+#: src/xz/args.c:688 > msgid "Compression support was disabled at build time" > msgstr "Tiivistämistuki on poistettu käytöstä käännösaikana" > >-#: src/xz/args.c:650 >+#: src/xz/args.c:695 > msgid "Decompression support was disabled at build time" > msgstr "Purkutuki on poistettu käytöstä käännösaikana" > >-#: src/xz/coder.c:110 >+#: src/xz/args.c:701 >+msgid "Compression of lzip files (.lz) is not supported" >+msgstr "Lzip-tiedostojen (.lz) pakkaamista ei tueta" >+ >+#: src/xz/args.c:732 >+#, fuzzy >+#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgstr "%s: --format=raw vaatii, että --suffix=.PÃÃTE on annettu, ellei kirjoiteta vakiotulosteeseen" >+ >+#: src/xz/coder.c:115 > msgid "Maximum number of filters is four" > msgstr "Suodattimien enimmäismäärä on neljä" > >-#: src/xz/coder.c:129 >+#: src/xz/coder.c:134 > msgid "Memory usage limit is too low for the given filter setup." > msgstr "Muistinkäytön raja on liian matala valituille suotimille." > >-#: src/xz/coder.c:159 >+#: src/xz/coder.c:169 > msgid "Using a preset in raw mode is discouraged." > msgstr "Esiasetusten käyttö raw-tilassa ei ole suositeltavaa." > >-#: src/xz/coder.c:161 >+#: src/xz/coder.c:171 > msgid "The exact options of the presets may vary between software versions." > msgstr "Esiasetusten tarkat asetukset saattavat vaihdella ohjelmistoversioiden välillä." > >-#: src/xz/coder.c:184 >+#: src/xz/coder.c:194 > msgid "The .lzma format supports only the LZMA1 filter" > msgstr ".lzma-muoto tukee vain LZMA1-suodinta" > >-#: src/xz/coder.c:192 >+#: src/xz/coder.c:202 > msgid "LZMA1 cannot be used with the .xz format" > msgstr "LZMA1:tä ei voi käyttää .xz-muodon kanssa" > >-#: src/xz/coder.c:209 >+#: src/xz/coder.c:219 > msgid "The filter chain is incompatible with --flush-timeout" > msgstr "Suodinketju on yhteensopimaton valitsimen --flush-timeout kanssa" > >-#: src/xz/coder.c:215 >+#: src/xz/coder.c:225 > msgid "Switching to single-threaded mode due to --flush-timeout" > msgstr "Vaihdetaan yksisäikeiseen tilaan valitsimen --flush-timeout vuoksi" > >-#: src/xz/coder.c:235 >+#: src/xz/coder.c:249 > #, c-format > msgid "Using up to %<PRIu32> threads." > msgstr "Käytetään enintään %<PRIu32> säiettä." > >-#: src/xz/coder.c:251 >+#: src/xz/coder.c:265 > msgid "Unsupported filter chain or filter options" > msgstr "Ei-tuettu suodinketju tai suotimen asetukset" > >-#: src/xz/coder.c:263 >+#: src/xz/coder.c:277 > #, c-format > msgid "Decompression will need %s MiB of memory." > msgstr "Purkaminen vaatii %s MiB muistia." > >-#: src/xz/coder.c:300 >+#: src/xz/coder.c:309 > #, c-format >-msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" > msgstr "Pudotettiin säikeiden määrä %s säikeestä %s:een, jottei ylitettäisi %s MiB:n rajaa muistinkäytölle" > >-#: src/xz/coder.c:354 >+#: src/xz/coder.c:329 > #, c-format >+msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway." >+msgstr "Pudotettiin säikeiden määrä %s säikeestä yhteen. Automaattinen %s MiB:n raja muistinkäytölle ylittyy silti. Vaaditaan %s MiB muistia. Jatketaan kaikesta huolimatta." >+ >+#: src/xz/coder.c:356 >+#, c-format >+msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB" >+msgstr "Siirrytään yhden säikeen tilaan, jottei ylitettäisi %s MiB:n rajaa muistinkäytölle" >+ >+#: src/xz/coder.c:411 >+#, c-format > msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" > msgstr "Pudotettiin LZMA%c-sanaston koko %s MiB:stä %s MiB:hen, jottei ylitettäisi %s MiB:n rajaa muistinkäytölle" > >@@ -121,11 +141,11 @@ > msgid "Error creating a pipe: %s" > msgstr "Virhe putkea luodessa: %s" > >-#: src/xz/file_io.c:224 >+#: src/xz/file_io.c:252 > msgid "Failed to enable the sandbox" > msgstr "Hiekkalaatikon ottaminen käyttöön epäonnistui" > >-#: src/xz/file_io.c:266 >+#: src/xz/file_io.c:294 > #, c-format > msgid "%s: poll() failed: %s" > msgstr "%s: poll()-kutsu epäonnistui: %s" >@@ -140,195 +160,321 @@ > #. it is possible that the user has put a new file in place > #. of the original file, and in that case it obviously > #. shouldn't be removed. >-#: src/xz/file_io.c:333 >+#: src/xz/file_io.c:361 > #, c-format > msgid "%s: File seems to have been moved, not removing" > msgstr "%s: Tiedosto on nähtävästi siirretty, ei poisteta" > >-#: src/xz/file_io.c:340 src/xz/file_io.c:882 >+#: src/xz/file_io.c:368 src/xz/file_io.c:924 > #, c-format > msgid "%s: Cannot remove: %s" > msgstr "%s: Ei voi poistaa: %s" > >-#: src/xz/file_io.c:366 >+#: src/xz/file_io.c:394 > #, c-format > msgid "%s: Cannot set the file owner: %s" > msgstr "%s: Tiedoston omistajaa ei voi asettaa: %s" > >-#: src/xz/file_io.c:372 >+#: src/xz/file_io.c:407 > #, c-format > msgid "%s: Cannot set the file group: %s" > msgstr "%s: Tiedoston ryhmää ei voi asettaa: %s" > >-#: src/xz/file_io.c:391 >+#: src/xz/file_io.c:426 > #, c-format > msgid "%s: Cannot set the file permissions: %s" > msgstr "%s: Tiedoston oikeuksia ei voi asettaa: %s" > >-#: src/xz/file_io.c:517 >+#: src/xz/file_io.c:552 > #, c-format > msgid "Error getting the file status flags from standard input: %s" > msgstr "Virhe tiedoston tilalippujen noutamisessa vakiosyötteelle: %s" > >-#: src/xz/file_io.c:574 src/xz/file_io.c:636 >+#: src/xz/file_io.c:610 src/xz/file_io.c:672 > #, c-format > msgid "%s: Is a symbolic link, skipping" > msgstr "%s: On symbolinen linkki, ohitetaan" > >-#: src/xz/file_io.c:665 >+#: src/xz/file_io.c:701 > #, c-format > msgid "%s: Is a directory, skipping" > msgstr "%s: On hakemisto, ohitetaan" > >-#: src/xz/file_io.c:671 >+#: src/xz/file_io.c:707 > #, c-format > msgid "%s: Not a regular file, skipping" > msgstr "%s: Ei ole tavallinen tiedosto, ohitetaan" > >-#: src/xz/file_io.c:688 >+#: src/xz/file_io.c:724 > #, c-format > msgid "%s: File has setuid or setgid bit set, skipping" > msgstr "%s: Tiedostolla on setuid- tai setgid-bitti, ohitetaan" > >-#: src/xz/file_io.c:695 >+#: src/xz/file_io.c:731 > #, c-format > msgid "%s: File has sticky bit set, skipping" > msgstr "%s: Tiedostolla on sticky-bitti, ohitetaan" > >-#: src/xz/file_io.c:702 >+#: src/xz/file_io.c:738 > #, c-format > msgid "%s: Input file has more than one hard link, skipping" > msgstr "%s: Syötetiedostoon on yli yksi kova linkki, ohitetaan" > >-#: src/xz/file_io.c:792 >+#: src/xz/file_io.c:780 >+msgid "Empty filename, skipping" >+msgstr "Tyhjä tiedostonimi, ohitetaan" >+ >+#: src/xz/file_io.c:834 > #, c-format > msgid "Error restoring the status flags to standard input: %s" > msgstr "Virhe tilalippujen palauttamisessa vakiosyötteelle: %s" > >-#: src/xz/file_io.c:840 >+#: src/xz/file_io.c:882 > #, c-format > msgid "Error getting the file status flags from standard output: %s" > msgstr "Virhe tiedoston tilalippujen noutamisessa vakiotulosteelle: %s" > >-#: src/xz/file_io.c:1018 >+#: src/xz/file_io.c:1060 > #, c-format > msgid "Error restoring the O_APPEND flag to standard output: %s" > msgstr "Virhe O_APPEND-lipun palauttamisessa vakiosyötteelle: %s" > >-#: src/xz/file_io.c:1030 >+#: src/xz/file_io.c:1072 > #, c-format > msgid "%s: Closing the file failed: %s" > msgstr "%s: Tiedoston sulkeminen epäonnistui: %s" > >-#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 >+#: src/xz/file_io.c:1108 src/xz/file_io.c:1371 > #, c-format > msgid "%s: Seeking failed when trying to create a sparse file: %s" > msgstr "%s: Siirtyminen epäonnistui yritettäessä luoda hajanaista tiedostoa: %s" > >-#: src/xz/file_io.c:1167 >+#: src/xz/file_io.c:1209 > #, c-format > msgid "%s: Read error: %s" > msgstr "%s: Lukuvirhe: %s" > >-#: src/xz/file_io.c:1191 >+#: src/xz/file_io.c:1239 > #, c-format > msgid "%s: Error seeking the file: %s" > msgstr "%s: Virhe tiedostossa siirtymisessä: %s" > >-#: src/xz/file_io.c:1201 >+#: src/xz/file_io.c:1263 > #, c-format > msgid "%s: Unexpected end of file" > msgstr "%s: Odottamaton tiedoston loppu" > >-#: src/xz/file_io.c:1260 >+#: src/xz/file_io.c:1322 > #, c-format > msgid "%s: Write error: %s" > msgstr "%s: Kirjoitusvirhe: %s" > >-#: src/xz/hardware.c:137 >+#: src/xz/hardware.c:238 > msgid "Disabled" > msgstr "Pois käytöstä" > >-#. TRANSLATORS: Test with "xz --info-memory" to see if >-#. the alignment looks nice. >-#: src/xz/hardware.c:156 >-msgid "Total amount of physical memory (RAM): " >-msgstr "Fyysisen muistin kokonaismäärä (RAM): " >+#: src/xz/hardware.c:269 >+msgid "Amount of physical memory (RAM):" >+msgstr "Fyysisen muistin kokonaismäärä (RAM):" > >-#: src/xz/hardware.c:158 >-msgid "Memory usage limit for compression: " >-msgstr "Muistinkäytön raja tiivistykselle: " >+#: src/xz/hardware.c:270 >+msgid "Number of processor threads:" >+msgstr "Suoritinsäikeiden määrä:" > >-#: src/xz/hardware.c:160 >-msgid "Memory usage limit for decompression: " >-msgstr "Muistinkäytön raja purkamiselle: " >+#: src/xz/hardware.c:271 >+msgid "Compression:" >+msgstr "Tiivistys:" > >+#: src/xz/hardware.c:272 >+msgid "Decompression:" >+msgstr "Purku:" >+ >+#: src/xz/hardware.c:273 >+msgid "Multi-threaded decompression:" >+msgstr "Monisäikeinen purku:" >+ >+#: src/xz/hardware.c:274 >+msgid "Default for -T0:" >+msgstr "-T0:n oletusarvo:" >+ >+#: src/xz/hardware.c:292 >+msgid "Hardware information:" >+msgstr "Laitteiston tiedot:" >+ >+#: src/xz/hardware.c:299 >+msgid "Memory usage limits:" >+msgstr "Muistinkäytön rajat:" >+ >+#: src/xz/list.c:68 >+msgid "Streams:" >+msgstr "Virrat:" >+ >+#: src/xz/list.c:69 >+msgid "Blocks:" >+msgstr "Lohkot:" >+ >+#: src/xz/list.c:70 >+msgid "Compressed size:" >+msgstr "Tiivistetty koko:" >+ >+#: src/xz/list.c:71 >+msgid "Uncompressed size:" >+msgstr "Tiivistämätön koko:" >+ >+#: src/xz/list.c:72 >+msgid "Ratio:" >+msgstr "Suhde:" >+ >+#: src/xz/list.c:73 >+msgid "Check:" >+msgstr "Tarkistus:" >+ >+#: src/xz/list.c:74 >+msgid "Stream Padding:" >+msgstr "Virran tasaus:" >+ >+#: src/xz/list.c:75 >+msgid "Memory needed:" >+msgstr "Tarvittava muisti:" >+ >+#: src/xz/list.c:76 >+msgid "Sizes in headers:" >+msgstr "Koot otsakkeissa:" >+ >+#: src/xz/list.c:79 >+msgid "Number of files:" >+msgstr "Tiedostojen määrä:" >+ >+#: src/xz/list.c:122 >+msgid "Stream" >+msgstr "Virta" >+ >+#: src/xz/list.c:123 >+msgid "Block" >+msgstr "Lohko" >+ >+#: src/xz/list.c:124 >+msgid "Blocks" >+msgstr "Lohkot" >+ >+#: src/xz/list.c:125 >+msgid "CompOffset" >+msgstr "TiivSiirr." >+ >+#: src/xz/list.c:126 >+msgid "UncompOffset" >+msgstr "Tv:tönSiirr." >+ >+#: src/xz/list.c:127 >+msgid "CompSize" >+msgstr "TiivKoko" >+ >+#: src/xz/list.c:128 >+msgid "UncompSize" >+msgstr "Tv:tönKoko" >+ >+#: src/xz/list.c:129 >+msgid "TotalSize" >+msgstr "Yht.Koko" >+ >+#: src/xz/list.c:130 >+msgid "Ratio" >+msgstr "Suhde" >+ >+#: src/xz/list.c:131 >+msgid "Check" >+msgstr "Tark." >+ >+#: src/xz/list.c:132 >+msgid "CheckVal" >+msgstr "Tark.arvo" >+ >+#: src/xz/list.c:133 >+msgid "Padding" >+msgstr "Tasaus" >+ >+#: src/xz/list.c:134 >+msgid "Header" >+msgstr "Otsake" >+ >+#: src/xz/list.c:135 >+msgid "Flags" >+msgstr "Liput" >+ >+#: src/xz/list.c:136 >+msgid "MemUsage" >+msgstr "Muist.käyt." >+ >+#: src/xz/list.c:137 >+msgid "Filters" >+msgstr "Suodattimet" >+ > #. TRANSLATORS: Indicates that there is no integrity check. >-#. This string is used in tables, so the width must not >-#. exceed ten columns with a fixed-width font. >-#: src/xz/list.c:65 >+#. This string is used in tables. In older xz version this >+#. string was limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:169 > msgid "None" > msgstr "Ei mitään" > > #. TRANSLATORS: Indicates that integrity check name is not known, >-#. but the Check ID is known (here 2). This and other "Unknown-N" >-#. strings are used in tables, so the width must not exceed ten >-#. columns with a fixed-width font. It's OK to omit the dash if >-#. you need space for one extra letter, but don't use spaces. >-#: src/xz/list.c:72 >+#. but the Check ID is known (here 2). In older xz version these >+#. strings were limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:175 > msgid "Unknown-2" > msgstr "Tuntematon-2" > >-#: src/xz/list.c:73 >+#: src/xz/list.c:176 > msgid "Unknown-3" > msgstr "Tuntematon-3" > >-#: src/xz/list.c:75 >+#: src/xz/list.c:178 > msgid "Unknown-5" > msgstr "Tuntematon-5" > >-#: src/xz/list.c:76 >+#: src/xz/list.c:179 > msgid "Unknown-6" > msgstr "Tuntematon-6" > >-#: src/xz/list.c:77 >+#: src/xz/list.c:180 > msgid "Unknown-7" > msgstr "Tuntematon-7" > >-#: src/xz/list.c:78 >+#: src/xz/list.c:181 > msgid "Unknown-8" > msgstr "Tuntematon-8" > >-#: src/xz/list.c:79 >+#: src/xz/list.c:182 > msgid "Unknown-9" > msgstr "Tuntematon-9" > >-#: src/xz/list.c:81 >+#: src/xz/list.c:184 > msgid "Unknown-11" > msgstr "Tuntematon-11" > >-#: src/xz/list.c:82 >+#: src/xz/list.c:185 > msgid "Unknown-12" > msgstr "Tuntematon-12" > >-#: src/xz/list.c:83 >+#: src/xz/list.c:186 > msgid "Unknown-13" > msgstr "Tuntematon-13" > >-#: src/xz/list.c:84 >+#: src/xz/list.c:187 > msgid "Unknown-14" > msgstr "Tuntematon-14" > >-#: src/xz/list.c:85 >+#: src/xz/list.c:188 > msgid "Unknown-15" > msgstr "Tuntematon-15" > >-#: src/xz/list.c:153 >+#: src/xz/list.c:351 > #, c-format > msgid "%s: File is empty" > msgstr "%s: Tiedosto on tyhjä" > >-#: src/xz/list.c:158 >+#: src/xz/list.c:356 > #, c-format > msgid "%s: Too small to be a valid .xz file" > msgstr "%s: Liian pieni kelvolliseksi .xz-tiedostoksi" >@@ -337,125 +483,41 @@ > #. to Ratio, the columns are right aligned. Check and Filename > #. are left aligned. If you need longer words, it's OK to > #. use two lines here. Test with "xz -l foo.xz". >-#: src/xz/list.c:677 >+#: src/xz/list.c:730 > msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" > msgstr "Virrat Lohkot Tiivist. Tiivistämätön Suhde Tark. Tiedostonimi" > >-#: src/xz/list.c:717 >-#, c-format >-msgid " Streams: %s\n" >-msgstr " Virrat: %s\n" >- >-#: src/xz/list.c:719 >-#, c-format >-msgid " Blocks: %s\n" >-msgstr " Lohkot: %s\n" >- >-#: src/xz/list.c:721 >-#, c-format >-msgid " Compressed size: %s\n" >-msgstr " Tiivistetty koko: %s\n" >- >-#: src/xz/list.c:724 >-#, c-format >-msgid " Uncompressed size: %s\n" >-msgstr " Tiivistämätön koko: %s\n" >- >-#: src/xz/list.c:727 >-#, c-format >-msgid " Ratio: %s\n" >-msgstr " Suhde: %s\n" >- >-#: src/xz/list.c:729 >-#, c-format >-msgid " Check: %s\n" >-msgstr " Tarkistus: %s\n" >- >-#: src/xz/list.c:730 >-#, c-format >-msgid " Stream padding: %s\n" >-msgstr " Virran tasaus: %s\n" >- >-#. TRANSLATORS: The second line is column headings. All except >-#. Check are right aligned; Check is left aligned. Test with >-#. "xz -lv foo.xz". >-#: src/xz/list.c:758 >-msgid "" >-" Streams:\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >-msgstr "" >-" Virrat:\n" >-" Virta Lohkot TiivSiirr. Tv:tönSiirr. TiivKoko Tv:tönKoko Suhde Tark. Tasaus" >- >-#. TRANSLATORS: The second line is column headings. All >-#. except Check are right aligned; Check is left aligned. >-#: src/xz/list.c:813 >-#, c-format >-msgid "" >-" Blocks:\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >-msgstr "" >-" Lohkot:\n" >-" Virta Lohko TiivSiirr. Tv:tönSiirr. Yht.Koko Tv:tönKoko Suhde Tark." >- >-#. TRANSLATORS: These are additional column headings >-#. for the most verbose listing mode. CheckVal >-#. (Check value), Flags, and Filters are left aligned. >-#. Header (Block Header Size), CompSize, and MemUsage >-#. are right aligned. %*s is replaced with 0-120 >-#. spaces to make the CheckVal column wide enough. >-#. Test with "xz -lvv foo.xz". >-#: src/xz/list.c:825 >-#, c-format >-msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >-msgstr " Tark.arvo%*s Otsake Liput TiivKoko Muist.käyt. Suotimet" >- >-#: src/xz/list.c:903 src/xz/list.c:1078 >-#, c-format >-msgid " Memory needed: %s MiB\n" >-msgstr " Tarvittava muisti: %s MiB\n" >- >-#: src/xz/list.c:905 src/xz/list.c:1080 >-#, c-format >-msgid " Sizes in headers: %s\n" >-msgstr " Koot otsakkeissa: %s\n" >- >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "Yes" > msgstr "Kyllä" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "No" > msgstr "Ei" > >-#: src/xz/list.c:907 src/xz/list.c:1082 >+#: src/xz/list.c:1027 src/xz/list.c:1205 > #, c-format > msgid " Minimum XZ Utils version: %s\n" > msgstr " XZ Utilsin vähimmäisversio: %s\n" > > #. TRANSLATORS: %s is an integer. Only the plural form of this > #. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz". >-#: src/xz/list.c:1057 >+#: src/xz/list.c:1178 > #, c-format > msgid "%s file\n" > msgid_plural "%s files\n" > msgstr[0] "%s tiedosto\n" > msgstr[1] "%s tiedostoa\n" > >-#: src/xz/list.c:1070 >+#: src/xz/list.c:1191 > msgid "Totals:" > msgstr "Yhteensä:" > >-#: src/xz/list.c:1071 >-#, c-format >-msgid " Number of files: %s\n" >-msgstr " Tiedostojen määrä: %s\n" >- >-#: src/xz/list.c:1146 >+#: src/xz/list.c:1269 > msgid "--list works only on .xz files (--format=xz or --format=auto)" > msgstr "--list toimii vain .xz-tiedostoille (--format=xz tai --format=auto)" > >-#: src/xz/list.c:1152 >+#: src/xz/list.c:1275 > msgid "--list does not support reading from standard input" > msgstr "--list ei tue lukemista vakiosyötteestä" > >@@ -474,11 +536,11 @@ > msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" > msgstr "%s: Nul-merkki kohdattiin tiedostonimiä lukiessa; oliko tarkoitus antaa valitsin â--files0â eikä â--filesâ?" > >-#: src/xz/main.c:174 >+#: src/xz/main.c:188 > msgid "Compression and decompression with --robot are not supported yet." > msgstr "Tiivistys ja purku --robot -valitsimen kanssa eivät ole vielä tuettuja." > >-#: src/xz/main.c:252 >+#: src/xz/main.c:266 > msgid "Cannot read data from standard input when reading filenames from standard input" > msgstr "Dataa ei voi lukea vakiosyötteestä kun tiedostonimiä luetaan vakiosyötteestä" > >@@ -486,68 +548,68 @@ > #. of the line in messages. Usually it becomes "xz: ". > #. This is a translatable string because French needs > #. a space before a colon. >-#: src/xz/message.c:728 >+#: src/xz/message.c:725 > #, c-format > msgid "%s: " > msgstr "%s: " > >-#: src/xz/message.c:791 src/xz/message.c:841 >+#: src/xz/message.c:797 src/xz/message.c:856 > msgid "Internal error (bug)" > msgstr "Sisäinen virhe (ohjelmistovika)" > >-#: src/xz/message.c:798 >+#: src/xz/message.c:804 > msgid "Cannot establish signal handlers" > msgstr "Signaalinkäsittelimiä ei voi muodostaa" > >-#: src/xz/message.c:807 >+#: src/xz/message.c:813 > msgid "No integrity check; not verifying file integrity" > msgstr "Ei eheystarkastusta; ei varmenneta tiedoston eheyttä" > >-#: src/xz/message.c:810 >+#: src/xz/message.c:816 > msgid "Unsupported type of integrity check; not verifying file integrity" > msgstr "Ei-tuettu eheystarkastuksen tyyppi; ei varmenneta tiedoston eheyttä" > >-#: src/xz/message.c:817 >+#: src/xz/message.c:823 > msgid "Memory usage limit reached" > msgstr "Muistinkäytön raja saavutettu" > >-#: src/xz/message.c:820 >+#: src/xz/message.c:826 > msgid "File format not recognized" > msgstr "Tiedostomuotoa ei tunnistettu" > >-#: src/xz/message.c:823 >+#: src/xz/message.c:829 > msgid "Unsupported options" > msgstr "Ei-tuetut valitsimet" > >-#: src/xz/message.c:826 >+#: src/xz/message.c:832 > msgid "Compressed data is corrupt" > msgstr "Tiivistetty data on turmeltunut" > >-#: src/xz/message.c:829 >+#: src/xz/message.c:835 > msgid "Unexpected end of input" > msgstr "Odottamaton syötteen loppu" > >-#: src/xz/message.c:862 >+#: src/xz/message.c:877 > #, c-format > msgid "%s MiB of memory is required. The limiter is disabled." > msgstr "%s MiB muistia vaaditaan. Rajoitin on poistettu käytöstä." > >-#: src/xz/message.c:890 >+#: src/xz/message.c:905 > #, c-format > msgid "%s MiB of memory is required. The limit is %s." > msgstr "%s MiB muistia vaaditaan. Raja on %s." > >-#: src/xz/message.c:1057 >+#: src/xz/message.c:924 > #, c-format > msgid "%s: Filter chain: %s\n" > msgstr "%s: Suodinketju: %s\n" > >-#: src/xz/message.c:1067 >+#: src/xz/message.c:935 > #, c-format > msgid "Try `%s --help' for more information." > msgstr "Komento â%s --helpâ antaa lisää tietoa." > >-#: src/xz/message.c:1093 >+#: src/xz/message.c:961 > #, c-format > msgid "" > "Usage: %s [OPTION]... [FILE]...\n" >@@ -558,15 +620,15 @@ > "Tiivistä tai pura .xz-muotoisia TIEDOSTOja.\n" > "\n" > >-#: src/xz/message.c:1100 >+#: src/xz/message.c:968 > msgid "Mandatory arguments to long options are mandatory for short options too.\n" > msgstr "Pitkien valitsinten pakolliset argumentit ovat pakollisia myös lyhyille.\n" > >-#: src/xz/message.c:1104 >+#: src/xz/message.c:972 > msgid " Operation mode:\n" > msgstr " Toimintatila:\n" > >-#: src/xz/message.c:1107 >+#: src/xz/message.c:975 > msgid "" > " -z, --compress force compression\n" > " -d, --decompress force decompression\n" >@@ -578,7 +640,7 @@ > " -t, --test testaa tiivistetyn tiedoston eheys\n" > " -l, --list näytä tietoja .xz-tiedostoista" > >-#: src/xz/message.c:1113 >+#: src/xz/message.c:981 > msgid "" > "\n" > " Operation modifiers:\n" >@@ -586,7 +648,7 @@ > "\n" > " Toimintomääreet:\n" > >-#: src/xz/message.c:1116 >+#: src/xz/message.c:984 > msgid "" > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" >@@ -597,7 +659,7 @@ > " linkit\n" > " -c, --stdout kirjoita vakiotulosteeseen äläkä poista syötetiedostoja" > >-#: src/xz/message.c:1122 >+#: src/xz/message.c:993 > msgid "" > " --single-stream decompress only the first stream, and silently\n" > " ignore possible remaining input data" >@@ -605,7 +667,7 @@ > " --single-stream pura vain ensimmäinen virta, ja ohita\n" > " hiljaisesti mahdollinen jäljellä oleva syötedata" > >-#: src/xz/message.c:1125 >+#: src/xz/message.c:996 > msgid "" > " --no-sparse do not create sparse files when decompressing\n" > " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" >@@ -621,7 +683,7 @@ > " tiedostonimet on päätettävä rivinvaihtomerkillä\n" > " --files0[=TIED] kuten --files mutta käytä päättämiseen nul-merkkiä" > >-#: src/xz/message.c:1134 >+#: src/xz/message.c:1005 > msgid "" > "\n" > " Basic file format and compression options:\n" >@@ -629,23 +691,23 @@ > "\n" > " Tiedostomuodon ja tiivistyksen perusvalitsimet:\n" > >-#: src/xz/message.c:1136 >+#: src/xz/message.c:1007 > msgid "" > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'" > msgstr "" >-" -F, --format=MUOTO tuotettava tai luettava tiedostomuotoa; vaihtoehdot\n" >-" ovat âautoâ (oletus), âxzâ, âlzmaâ ja ârawâ\n" >+" -F, --format=MUOTO tuotettava tai luettava tiedostomuoto; vaihtoehdot\n" >+" ovat âautoâ (oletus), âxzâ, âlzmaâ, âlzipâ ja ârawâ\n" > " -C, --check=CHECK eheystarkastuksen tyyppi: ânoneâ (käytä varoen),\n" > " âcrc32â, âcrc64â (oletus) tai âsha256â" > >-#: src/xz/message.c:1141 >+#: src/xz/message.c:1012 > msgid " --ignore-check don't verify the integrity check when decompressing" > msgstr " --ignore-check älä suorita eheystarkastusta purettaessa" > >-#: src/xz/message.c:1145 >+#: src/xz/message.c:1016 > msgid "" > " -0 ... -9 compression preset; default is 6; take compressor *and*\n" > " decompressor memory usage into account before using 7-9!" >@@ -654,7 +716,7 @@ > " *ja* purun muistinkäyttö huomioon ennen kuin käytät\n" > " arvoja 7â9!" > >-#: src/xz/message.c:1149 >+#: src/xz/message.c:1020 > msgid "" > " -e, --extreme try to improve compression ratio by using more CPU time;\n" > " does not affect decompressor memory requirements" >@@ -662,7 +724,7 @@ > " -e, --extreme yritä parantaa tiivistyssuhdetta käyttämällä enemmän\n" > " suoritinaikaa; ei vaikuta purkimen muistivaatimuksiin" > >-#: src/xz/message.c:1153 >+#: src/xz/message.c:1024 > msgid "" > " -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" > " to use as many threads as there are processor cores" >@@ -670,7 +732,7 @@ > " -T, --threads=MÃÃRà käytä enintää MÃÃRÃä säiettä; oletus on 1; asettamalla\n" > " 0:ksi käytetään suoritinytimien määrän verran säikeitä" > >-#: src/xz/message.c:1158 >+#: src/xz/message.c:1029 > msgid "" > " --block-size=SIZE\n" > " start a new .xz block after every SIZE bytes of input;\n" >@@ -680,7 +742,7 @@ > " aloita uusi .xz-lohko aina KOKO syötetavun jälkeen; käytä\n" > " tätä säikeistetyn tiivistyksen lohkokoon asettamiseen" > >-#: src/xz/message.c:1162 >+#: src/xz/message.c:1033 > msgid "" > " --block-list=SIZES\n" > " start a new .xz block after the given comma-separated\n" >@@ -691,7 +753,7 @@ > " käsitelty pilkuilla erotellut tavumäärät" > > # FIXME: tarvitaan kiva suomenkielinen termi block-verbille tässä merkityksessä >-#: src/xz/message.c:1166 >+#: src/xz/message.c:1037 > msgid "" > " --flush-timeout=TIMEOUT\n" > " when compressing, if more than TIMEOUT milliseconds has\n" >@@ -703,23 +765,25 @@ > " edellisestä huuhtomisesta ja syötteen lukemisen\n" > " jatkaminen pysähtyisi, kaikki odottava data huuhdellaan" > >-#: src/xz/message.c:1172 >+#: src/xz/message.c:1043 > #, no-c-format > msgid "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults" > msgstr "" > " --memlimit-compress=RAJA\n" > " --memlimit-decompress=RAJA\n" > " -M, --memlimit=RAJA\n" >-" aseta muistinkäytön raja tiivistykselle, purkamiselle\n" >-" tai molemmille; RAJA on tavuja, %-osuus RAM-muistista\n" >-" tai 0 oletusarvojen käyttämiseksi" >+" aseta muistinkäytön raja tiivistykselle, purkamiselle,\n" >+" säikeistetylle purkamisella tai näille kaikille; RAJA\n" >+" on tavuja, %-osuus RAMista tai 0 oletusarvoille" > >-#: src/xz/message.c:1179 >+#: src/xz/message.c:1052 > msgid "" > " --no-adjust if compression settings exceed the memory usage limit,\n" > " give an error instead of adjusting the settings downwards" >@@ -727,7 +791,7 @@ > " --no-adjust jos tiivistysasetukset ylittävät muistinkäytön rajan,\n" > " anna virhe äläkä pudota asetuksia alaspäin" > >-#: src/xz/message.c:1185 >+#: src/xz/message.c:1058 > msgid "" > "\n" > " Custom filter chain for compression (alternative for using presets):" >@@ -735,7 +799,7 @@ > "\n" > " Mukautettu suodinketju tiivistykselle (vaihtoehto esiasetuksille):" > >-#: src/xz/message.c:1194 >+#: src/xz/message.c:1067 > msgid "" > "\n" > " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" >@@ -765,29 +829,31 @@ > " bt4; bt4)\n" > " depth=LUKU enimmäishakusyvyys; 0=automaattinen (oletus)" > >-#: src/xz/message.c:1209 >+#: src/xz/message.c:1082 > msgid "" > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)" > msgstr "" > "\n" > " --x86[=ASET] x86:n BCJ-suodin (32- ja 64-bittiset)\n" >+" --arm[=ASET] ARMin BCJ-suodin\n" >+" --armthumb[=ASET] ARM-Thumbin BCJ-suodin\n" >+" --arm64[=ASET] ARM64:n BCJ-suodin\n" > " --powerpc[=ASET] PowerPC:n BCJ-suodin (vain big endian)\n" > " --ia64[=ASET] IA-64:n (Itanium) BCJ-suodin\n" >-" --arm[=ASET] ARMin BCJ-suodin (vain little endian)\n" >-" --armthumb[=ASET] ARM-Thumbin BCJ-suodin (vain little endian)\n" > " --sparc[=ASET] SPARCin BCJ-suodin\n" > " Kelvolliset ASETukset kaikille BCJ-suotimille:\n" > " start=LUKU muunnoksien aloitussiirtymä (oletus=0)" > >-#: src/xz/message.c:1221 >+#: src/xz/message.c:1095 > msgid "" > "\n" > " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" >@@ -799,7 +865,7 @@ > " dist=LUKU toisistaan vähennettävien tavujen\n" > " välinen etäisyys (1â256; 1)" > >-#: src/xz/message.c:1229 >+#: src/xz/message.c:1103 > msgid "" > "\n" > " Other options:\n" >@@ -807,7 +873,7 @@ > "\n" > " Muut valitsimet:\n" > >-#: src/xz/message.c:1232 >+#: src/xz/message.c:1106 > msgid "" > " -q, --quiet suppress warnings; specify twice to suppress errors too\n" > " -v, --verbose be verbose; specify twice for even more verbose" >@@ -815,15 +881,15 @@ > " -q, --quiet vaienna varoitukset; kahdesti antamalla myös virheet\n" > " -v, --verbose ole lavea; kahdesti antamalla vieläkin laveampi" > >-#: src/xz/message.c:1237 >+#: src/xz/message.c:1111 > msgid " -Q, --no-warn make warnings not affect the exit status" > msgstr " -Q, --no-warn älkööt varoitukset vaikuttako paluuarvoon" > >-#: src/xz/message.c:1239 >+#: src/xz/message.c:1113 > msgid " --robot use machine-parsable messages (useful for scripts)" > msgstr " --robot käytä koneluettavia viestejä (sopii skripteihin)" > >-#: src/xz/message.c:1242 >+#: src/xz/message.c:1116 > msgid "" > " --info-memory display the total amount of RAM and the currently active\n" > " memory usage limits, and exit" >@@ -831,7 +897,7 @@ > " --info-memory näytä RAM-muistin kokonaismäärä ja parhaillaan\n" > " vallitsevat muistinkäytön rajat, ja poistu" > >-#: src/xz/message.c:1245 >+#: src/xz/message.c:1119 > msgid "" > " -h, --help display the short help (lists only the basic options)\n" > " -H, --long-help display this long help and exit" >@@ -839,7 +905,7 @@ > " -h, --help näytä lyhyt ohje (kertoo vain perusvalitsimet)\n" > " -H, --long-help näytä tämä pitkä ohje ja poistu" > >-#: src/xz/message.c:1249 >+#: src/xz/message.c:1123 > msgid "" > " -h, --help display this short help and exit\n" > " -H, --long-help display the long help (lists also the advanced options)" >@@ -847,11 +913,11 @@ > " -h, --help näytä tämä lyhyt ohje ja poistu\n" > " -H, --long-help näytä pitkä ohje (kertoo myös lisävalitsimet)" > >-#: src/xz/message.c:1254 >+#: src/xz/message.c:1128 > msgid " -V, --version display the version number and exit" > msgstr " -V, --version näytä versionumero ja poistu" > >-#: src/xz/message.c:1256 >+#: src/xz/message.c:1130 > msgid "" > "\n" > "With no FILE, or when FILE is -, read standard input.\n" >@@ -863,17 +929,17 @@ > #. for this package. Please add _another line_ saying > #. "Report translation bugs to <...>\n" with the email or WWW > #. address for translation bugs. Thanks. >-#: src/xz/message.c:1262 >+#: src/xz/message.c:1136 > #, c-format > msgid "Report bugs to <%s> (in English or Finnish).\n" > msgstr "Ilmoita ohjelmistovioista (suomeksi) osoitteeseen <%s>.\n" > >-#: src/xz/message.c:1264 >+#: src/xz/message.c:1138 > #, c-format > msgid "%s home page: <%s>\n" > msgstr "%s -kotisivu: <%s>\n" > >-#: src/xz/message.c:1268 >+#: src/xz/message.c:1142 > msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." > msgstr "TÃMà ON KEHITYSVERSIO, JOTA EI OLE TARKOITETTU TUOTANTOKÃYTTÃÃN." > >@@ -901,27 +967,17 @@ > msgid "The sum of lc and lp must not exceed 4" > msgstr "lc:n ja lp:n summa ei saa olla yli 4" > >-#: src/xz/options.c:359 >+#: src/xz/suffix.c:160 > #, c-format >-msgid "The selected match finder requires at least nice=%<PRIu32>" >-msgstr "Valittu täsmäävyydenetsin vaatii vähintään nice-arvon=%<PRIu32>" >- >-#: src/xz/suffix.c:133 src/xz/suffix.c:258 >-#, c-format >-msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >-msgstr "%s: --format=raw vaatii, että --suffix=.PÃÃTE on annettu, ellei kirjoiteta vakiotulosteeseen" >- >-#: src/xz/suffix.c:164 >-#, c-format > msgid "%s: Filename has an unknown suffix, skipping" > msgstr "%s: Tiedostonimen pääte on tuntematon, ohitetaan" > >-#: src/xz/suffix.c:185 >+#: src/xz/suffix.c:181 > #, c-format > msgid "%s: File already has `%s' suffix, skipping" > msgstr "%s: Tiedostolla on jo â%sâ-pääte, ohitetaan" > >-#: src/xz/suffix.c:393 >+#: src/xz/suffix.c:388 > #, c-format > msgid "%s: Invalid filename suffix" > msgstr "%s: Virheellinen tiedostonimen pääte" >@@ -945,15 +1001,11 @@ > msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]" > msgstr "Valitsimen â%sâ arvon on oltava välillä [%<PRIu64>, %<PRIu64>]" > >-#: src/xz/util.c:267 >-msgid "Empty filename, skipping" >-msgstr "Tyhjä tiedostonimi, ohitetaan" >- >-#: src/xz/util.c:281 >+#: src/xz/util.c:269 > msgid "Compressed data cannot be read from a terminal" > msgstr "Tiivistettyä dataa ei voi lukea päätteestä" > >-#: src/xz/util.c:294 >+#: src/xz/util.c:282 > msgid "Compressed data cannot be written to a terminal" > msgstr "Tiivistettyä dataa ei voi kirjoittaa päätteeseen" > >@@ -965,8 +1017,44 @@ > msgid "Unknown error" > msgstr "Tuntematon virhe" > >+#, c-format >+#~ msgid "The selected match finder requires at least nice=%<PRIu32>" >+#~ msgstr "Valittu täsmäävyydenetsin vaatii vähintään nice-arvon=%<PRIu32>" >+ > #~ msgid "Sandbox is disabled due to incompatible command line arguments" > #~ msgstr "Hiekkalaatikko on poistettu käytöstä yhteensopimattomien komentoriviargumenttien vuoksi" > > #~ msgid "Sandbox was successfully enabled" > #~ msgstr "Hiekkalaatikko otettiin onnistuneesti käyttöön" >+ >+#~ msgid "Memory usage limit for compression: " >+#~ msgstr "Muistinkäytön raja tiivistykselle: " >+ >+#~ msgid " Streams: %s\n" >+#~ msgstr " Virrat: %s\n" >+ >+#~ msgid " Blocks: %s\n" >+#~ msgstr " Lohkot: %s\n" >+ >+#~ msgid " Ratio: %s\n" >+#~ msgstr " Suhde: %s\n" >+ >+#~ msgid " Check: %s\n" >+#~ msgstr " Tarkistus: %s\n" >+ >+#~ msgid "" >+#~ " Streams:\n" >+#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >+#~ msgstr "" >+#~ " Virrat:\n" >+#~ " Virta Lohkot TiivSiirr. Tv:tönSiirr. TiivKoko Tv:tönKoko Suhde Tark. Tasaus" >+ >+#~ msgid "" >+#~ " Blocks:\n" >+#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >+#~ msgstr "" >+#~ " Lohkot:\n" >+#~ " Virta Lohko TiivSiirr. Tv:tönSiirr. Yht.Koko Tv:tönKoko Suhde Tark." >+ >+#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >+#~ msgstr " Tark.arvo%*s Otsake Liput TiivKoko Muist.käyt. Suotimet" >Binary files xz-5.2.5/po/fr.gmo and xz-5.4.3/po/fr.gmo differ >diff -ur xz-5.2.5/po/fr.po xz-5.4.3/po/fr.po >--- xz-5.2.5/po/fr.po 2020-03-17 17:29:58 >+++ xz-5.4.3/po/fr.po 2023-05-04 17:32:20 >@@ -6,8 +6,8 @@ > msgid "" > msgstr "" > "Project-Id-Version: xz-5.2.4\n" >-"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >+"Report-Msgid-Bugs-To: xz@tukaani.org\n" >+"POT-Creation-Date: 2023-05-04 22:32+0800\n" > "PO-Revision-Date: 2019-05-12 05:46+0200\n" > "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n" > "Language-Team: French <traduc@traduc.org>\n" >@@ -18,99 +18,121 @@ > "X-Bugs: Report translation errors to the Language-Team address.\n" > "Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" > >-#: src/xz/args.c:63 >+#: src/xz/args.c:77 > #, c-format > msgid "%s: Invalid argument to --block-list" > msgstr "%s : argument de l'option --block-list invalide" > >-#: src/xz/args.c:73 >+#: src/xz/args.c:87 > #, c-format > msgid "%s: Too many arguments to --block-list" > msgstr "%s : trop d'arguments pour l'option --block-list" > >-#: src/xz/args.c:102 >+#: src/xz/args.c:116 > msgid "0 can only be used as the last element in --block-list" > msgstr "0 peut seulement être utilisé en dernier élément de --block-list" > >-#: src/xz/args.c:406 >+#: src/xz/args.c:451 > #, c-format > msgid "%s: Unknown file format type" > msgstr "%s : Format de fichier inconnu" > >-#: src/xz/args.c:429 src/xz/args.c:437 >+#: src/xz/args.c:474 src/xz/args.c:482 > #, c-format > msgid "%s: Unsupported integrity check type" > msgstr "%s : Type de vérification d'intégrité inconnu" > >-#: src/xz/args.c:473 >+#: src/xz/args.c:518 > msgid "Only one file can be specified with `--files' or `--files0'." > msgstr "Un seul fichier peut être spécifié avec `--files' ou `--files0'." > >-#: src/xz/args.c:541 >+#: src/xz/args.c:586 > #, c-format > msgid "The environment variable %s contains too many arguments" > msgstr "La variable d'environnement %s contient trop d'arguments" > >-#: src/xz/args.c:643 >+#: src/xz/args.c:688 > msgid "Compression support was disabled at build time" > msgstr "Le support de la compression à était désactivé lors de la compilaton" > >-#: src/xz/args.c:650 >+#: src/xz/args.c:695 > msgid "Decompression support was disabled at build time" > msgstr "Le support de la décompression a été désactivé lors de la compilation" > >-#: src/xz/coder.c:110 >+#: src/xz/args.c:701 >+msgid "Compression of lzip files (.lz) is not supported" >+msgstr "" >+ >+#: src/xz/args.c:732 >+#, fuzzy >+#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgstr "%s : Avec --format=raw, --suffix=.SUF est nécessaire sauf lors de l'écriture vers stdout" >+ >+#: src/xz/coder.c:115 > msgid "Maximum number of filters is four" > msgstr "Le nombre maximal de filtres est quatre" > >-#: src/xz/coder.c:129 >+#: src/xz/coder.c:134 > msgid "Memory usage limit is too low for the given filter setup." > msgstr "La limite d'utilisation mémoire est trop basse pour la configuration de filtres donnée." > >-#: src/xz/coder.c:159 >+#: src/xz/coder.c:169 > msgid "Using a preset in raw mode is discouraged." > msgstr "Utiliser un préréglage en mode `raw' est déconseillé." > >-#: src/xz/coder.c:161 >+#: src/xz/coder.c:171 > msgid "The exact options of the presets may vary between software versions." > msgstr "Le détail des préréglages peut varier entre différentes versions du logiciel." > >-#: src/xz/coder.c:184 >+#: src/xz/coder.c:194 > msgid "The .lzma format supports only the LZMA1 filter" > msgstr "Le format .lzma ne prend en charge que le filtre LZMA1" > >-#: src/xz/coder.c:192 >+#: src/xz/coder.c:202 > msgid "LZMA1 cannot be used with the .xz format" > msgstr "Le filtre LZMA1 ne peut être utilisé avec le format .xz" > >-#: src/xz/coder.c:209 >+#: src/xz/coder.c:219 > msgid "The filter chain is incompatible with --flush-timeout" > msgstr "La Chaine de filtre est incompatible avec --flush-timeout" > >-#: src/xz/coder.c:215 >+#: src/xz/coder.c:225 > msgid "Switching to single-threaded mode due to --flush-timeout" > msgstr "Bascule en mode mono-processus à cause de --flush-timeout" > >-#: src/xz/coder.c:235 >+#: src/xz/coder.c:249 > #, c-format > msgid "Using up to %<PRIu32> threads." > msgstr "Jusqu'à %<PRIu32> threads seront utilisés." > >-#: src/xz/coder.c:251 >+#: src/xz/coder.c:265 > msgid "Unsupported filter chain or filter options" > msgstr "Enchaînement ou options de filtres non pris en charge" > >-#: src/xz/coder.c:263 >+#: src/xz/coder.c:277 > #, c-format > msgid "Decompression will need %s MiB of memory." > msgstr "La décompression nécessitera %s MiB de mémoire." > >-#: src/xz/coder.c:300 >+#: src/xz/coder.c:309 >+#, fuzzy, c-format >+#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgstr "Nombre de threads réduit de %s à %s pour ne pas dépasser la limite d'utilisation mémoire de %s MiB" >+ >+#: src/xz/coder.c:329 > #, c-format >-msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway." >+msgstr "" >+ >+#: src/xz/coder.c:356 >+#, fuzzy, c-format >+#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB" > msgstr "Nombre de threads réduit de %s à %s pour ne pas dépasser la limite d'utilisation mémoire de %s MiB" > >-#: src/xz/coder.c:354 >+#: src/xz/coder.c:411 > #, c-format > msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" > msgstr "Taille du dictionnaire LZMA%c réduite de %s MiB à %s MiB pour ne pas dépasser la limite d'utilisation mémoire de %s MiB" >@@ -120,11 +142,11 @@ > msgid "Error creating a pipe: %s" > msgstr "Impossible de créer un tube anonyme (pipe) : %s" > >-#: src/xz/file_io.c:224 >+#: src/xz/file_io.c:252 > msgid "Failed to enable the sandbox" > msgstr "Echec de l'activation de la sandboxe" > >-#: src/xz/file_io.c:266 >+#: src/xz/file_io.c:294 > #, c-format > msgid "%s: poll() failed: %s" > msgstr "%s : L'appel à la fonction poll() a échoué : %s" >@@ -139,27 +161,27 @@ > #. it is possible that the user has put a new file in place > #. of the original file, and in that case it obviously > #. shouldn't be removed. >-#: src/xz/file_io.c:333 >+#: src/xz/file_io.c:361 > #, c-format > msgid "%s: File seems to have been moved, not removing" > msgstr "%s : Le fichier a apparemment été déplacé, suppression annulée" > >-#: src/xz/file_io.c:340 src/xz/file_io.c:882 >+#: src/xz/file_io.c:368 src/xz/file_io.c:924 > #, c-format > msgid "%s: Cannot remove: %s" > msgstr "%s : Impossible de supprimer : %s" > >-#: src/xz/file_io.c:366 >+#: src/xz/file_io.c:394 > #, c-format > msgid "%s: Cannot set the file owner: %s" > msgstr "%s : Impossible de modifier le propriétaire du fichier : %s" > >-#: src/xz/file_io.c:372 >+#: src/xz/file_io.c:407 > #, c-format > msgid "%s: Cannot set the file group: %s" > msgstr "%s : Impossible de modifier le groupe propriétaire du fichier : %s" > >-#: src/xz/file_io.c:391 >+#: src/xz/file_io.c:426 > #, c-format > msgid "%s: Cannot set the file permissions: %s" > msgstr "%s : Impossible de modifier les permissions du fichier : %s" >@@ -172,172 +194,318 @@ > # - 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. >-#: src/xz/file_io.c:517 >+#: src/xz/file_io.c:552 > #, c-format > msgid "Error getting the file status flags from standard input: %s" > msgstr "Echec de la lecture du drapeau d'état du fichier depuis la sortie standard : %s" > >-#: src/xz/file_io.c:574 src/xz/file_io.c:636 >+#: src/xz/file_io.c:610 src/xz/file_io.c:672 > #, c-format > msgid "%s: Is a symbolic link, skipping" > msgstr "%s est un lien symbolique : ignoré" > >-#: src/xz/file_io.c:665 >+#: src/xz/file_io.c:701 > #, c-format > msgid "%s: Is a directory, skipping" > msgstr "%s est un répertoire : ignoré" > >-#: src/xz/file_io.c:671 >+#: src/xz/file_io.c:707 > #, c-format > msgid "%s: Not a regular file, skipping" > msgstr "%s n'est pas un fichier régulier : ignoré" > >-#: src/xz/file_io.c:688 >+#: src/xz/file_io.c:724 > #, c-format > msgid "%s: File has setuid or setgid bit set, skipping" > msgstr "%s : Le fichier possède les bits `setuid' ou `setgid' : ignoré" > >-#: src/xz/file_io.c:695 >+#: src/xz/file_io.c:731 > #, c-format > msgid "%s: File has sticky bit set, skipping" > msgstr "%s : Le fichier possède le bit `sticky' : ignoré" > >-#: src/xz/file_io.c:702 >+#: src/xz/file_io.c:738 > #, c-format > msgid "%s: Input file has more than one hard link, skipping" > msgstr "%s : Le fichier d'entrée a plus d'un lien matériel : ignoré" > >+#: src/xz/file_io.c:780 >+msgid "Empty filename, skipping" >+msgstr "Nom de fichier vide, ignoré" >+ > # See note from translator above titled "file status flags". >-#: src/xz/file_io.c:792 >+#: src/xz/file_io.c:834 > #, c-format > msgid "Error restoring the status flags to standard input: %s" > msgstr "Erreur de restauration du drapeau d'état de l'entrée standard : %s" > > # See note from translator above titled "file status flags". >-#: src/xz/file_io.c:840 >+#: src/xz/file_io.c:882 > #, c-format > msgid "Error getting the file status flags from standard output: %s" > msgstr "Erreur de lecture du drapeau d'état du fichier depuis la sortie standard : %s" > >-#: src/xz/file_io.c:1018 >+#: src/xz/file_io.c:1060 > #, c-format > msgid "Error restoring the O_APPEND flag to standard output: %s" > msgstr "Impossible de rétablir le drapeau O_APPEND sur la sortie standard : %s" > >-#: src/xz/file_io.c:1030 >+#: src/xz/file_io.c:1072 > #, c-format > msgid "%s: Closing the file failed: %s" > msgstr "%s : Impossible de fermer le fichier : %s" > >-#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 >+#: src/xz/file_io.c:1108 src/xz/file_io.c:1371 > #, c-format > msgid "%s: Seeking failed when trying to create a sparse file: %s" > msgstr "%s : Impossible de se déplacer dans le fichier pour créer un 'sparse file' : %s" > >-#: src/xz/file_io.c:1167 >+#: src/xz/file_io.c:1209 > #, c-format > msgid "%s: Read error: %s" > msgstr "%s : Erreur d'écriture : %s" > >-#: src/xz/file_io.c:1191 >+#: src/xz/file_io.c:1239 > #, c-format > msgid "%s: Error seeking the file: %s" > msgstr "%s : Impossible de se déplacer dans le fichier : %s" > >-#: src/xz/file_io.c:1201 >+#: src/xz/file_io.c:1263 > #, c-format > msgid "%s: Unexpected end of file" > msgstr "%s : Fin de fichier inattendue" > >-#: src/xz/file_io.c:1260 >+#: src/xz/file_io.c:1322 > #, c-format > msgid "%s: Write error: %s" > msgstr "%s : Erreur d'écriture : %s" > >-#: src/xz/hardware.c:137 >+#: src/xz/hardware.c:238 > msgid "Disabled" > msgstr "Désactivé" > >-#. TRANSLATORS: Test with "xz --info-memory" to see if >-#. the alignment looks nice. >-#: src/xz/hardware.c:156 >-msgid "Total amount of physical memory (RAM): " >+#: src/xz/hardware.c:269 >+#, fuzzy >+#| msgid "Total amount of physical memory (RAM): " >+msgid "Amount of physical memory (RAM):" > msgstr "Quantité totale de mémoire physique (RAM) : " > >-#: src/xz/hardware.c:158 >-msgid "Memory usage limit for compression: " >-msgstr "Limite d'utilisation pour la compression : " >+#: src/xz/hardware.c:270 >+msgid "Number of processor threads:" >+msgstr "" > >-#: src/xz/hardware.c:160 >-msgid "Memory usage limit for decompression: " >+#: src/xz/hardware.c:271 >+msgid "Compression:" >+msgstr "" >+ >+#: src/xz/hardware.c:272 >+msgid "Decompression:" >+msgstr "" >+ >+#: src/xz/hardware.c:273 >+#, fuzzy >+#| msgid "Memory usage limit for decompression: " >+msgid "Multi-threaded decompression:" > msgstr "Limite d'utilisation pour la décompression : " > >+#: src/xz/hardware.c:274 >+msgid "Default for -T0:" >+msgstr "" >+ >+#: src/xz/hardware.c:292 >+msgid "Hardware information:" >+msgstr "" >+ >+#: src/xz/hardware.c:299 >+#, fuzzy >+#| msgid "Memory usage limit reached" >+msgid "Memory usage limits:" >+msgstr "Limite d'utilisation mémoire atteinte" >+ >+#: src/xz/list.c:68 >+msgid "Streams:" >+msgstr "" >+ >+#: src/xz/list.c:69 >+msgid "Blocks:" >+msgstr "" >+ >+#: src/xz/list.c:70 >+#, fuzzy >+#| msgid " Compressed size: %s\n" >+msgid "Compressed size:" >+msgstr " Taille données avec compression : %s\n" >+ >+#: src/xz/list.c:71 >+#, fuzzy >+#| msgid " Uncompressed size: %s\n" >+msgid "Uncompressed size:" >+msgstr " Taille données sans compression : %s\n" >+ >+#: src/xz/list.c:72 >+msgid "Ratio:" >+msgstr "" >+ >+#: src/xz/list.c:73 >+msgid "Check:" >+msgstr "" >+ >+#: src/xz/list.c:74 >+#, fuzzy >+#| msgid " Stream padding: %s\n" >+msgid "Stream Padding:" >+msgstr " Octets de rembourrage du flux : %s\n" >+ >+#: src/xz/list.c:75 >+#, fuzzy >+#| msgid " Memory needed: %s MiB\n" >+msgid "Memory needed:" >+msgstr " Mémoire nécessaire : %s MiB\n" >+ >+#: src/xz/list.c:76 >+#, fuzzy >+#| msgid " Sizes in headers: %s\n" >+msgid "Sizes in headers:" >+msgstr " Tailles stockées dans l'en-tête : %s\n" >+ >+#: src/xz/list.c:79 >+#, fuzzy >+#| msgid " Number of files: %s\n" >+msgid "Number of files:" >+msgstr " Nombre de fichiers : %s\n" >+ >+#: src/xz/list.c:122 >+msgid "Stream" >+msgstr "" >+ >+#: src/xz/list.c:123 >+msgid "Block" >+msgstr "" >+ >+#: src/xz/list.c:124 >+msgid "Blocks" >+msgstr "" >+ >+#: src/xz/list.c:125 >+msgid "CompOffset" >+msgstr "" >+ >+#: src/xz/list.c:126 >+msgid "UncompOffset" >+msgstr "" >+ >+#: src/xz/list.c:127 >+msgid "CompSize" >+msgstr "" >+ >+#: src/xz/list.c:128 >+msgid "UncompSize" >+msgstr "" >+ >+#: src/xz/list.c:129 >+#, fuzzy >+#| msgid "Totals:" >+msgid "TotalSize" >+msgstr "Totaux :" >+ >+#: src/xz/list.c:130 >+msgid "Ratio" >+msgstr "" >+ >+#: src/xz/list.c:131 >+msgid "Check" >+msgstr "" >+ >+#: src/xz/list.c:132 >+msgid "CheckVal" >+msgstr "" >+ >+#: src/xz/list.c:133 >+msgid "Padding" >+msgstr "" >+ >+#: src/xz/list.c:134 >+msgid "Header" >+msgstr "" >+ >+#: src/xz/list.c:135 >+msgid "Flags" >+msgstr "" >+ >+#: src/xz/list.c:136 >+msgid "MemUsage" >+msgstr "" >+ >+#: src/xz/list.c:137 >+msgid "Filters" >+msgstr "" >+ > #. TRANSLATORS: Indicates that there is no integrity check. >-#. This string is used in tables, so the width must not >-#. exceed ten columns with a fixed-width font. >-#: src/xz/list.c:65 >+#. This string is used in tables. In older xz version this >+#. string was limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:169 > msgid "None" > msgstr "Aucune" > > #. TRANSLATORS: Indicates that integrity check name is not known, >-#. but the Check ID is known (here 2). This and other "Unknown-N" >-#. strings are used in tables, so the width must not exceed ten >-#. columns with a fixed-width font. It's OK to omit the dash if >-#. you need space for one extra letter, but don't use spaces. >-#: src/xz/list.c:72 >+#. but the Check ID is known (here 2). In older xz version these >+#. strings were limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:175 > msgid "Unknown-2" > msgstr "Inconnue-2" > >-#: src/xz/list.c:73 >+#: src/xz/list.c:176 > msgid "Unknown-3" > msgstr "Inconnue-3" > >-#: src/xz/list.c:75 >+#: src/xz/list.c:178 > msgid "Unknown-5" > msgstr "Inconnue-5" > >-#: src/xz/list.c:76 >+#: src/xz/list.c:179 > msgid "Unknown-6" > msgstr "Inconnue-6" > >-#: src/xz/list.c:77 >+#: src/xz/list.c:180 > msgid "Unknown-7" > msgstr "Inconnue-7" > >-#: src/xz/list.c:78 >+#: src/xz/list.c:181 > msgid "Unknown-8" > msgstr "Inconnue-8" > >-#: src/xz/list.c:79 >+#: src/xz/list.c:182 > msgid "Unknown-9" > msgstr "Inconnue-9" > >-#: src/xz/list.c:81 >+#: src/xz/list.c:184 > msgid "Unknown-11" > msgstr "Inconnue-11" > >-#: src/xz/list.c:82 >+#: src/xz/list.c:185 > msgid "Unknown-12" > msgstr "Inconnue-12" > >-#: src/xz/list.c:83 >+#: src/xz/list.c:186 > msgid "Unknown-13" > msgstr "Inconnue-13" > >-#: src/xz/list.c:84 >+#: src/xz/list.c:187 > msgid "Unknown-14" > msgstr "Inconnue-14" > >-#: src/xz/list.c:85 >+#: src/xz/list.c:188 > msgid "Unknown-15" > msgstr "Inconnue-15" > >-#: src/xz/list.c:153 >+#: src/xz/list.c:351 > #, c-format > msgid "%s: File is empty" > msgstr "%s : Le fichier est vide" > >-#: src/xz/list.c:158 >+#: src/xz/list.c:356 > #, c-format > msgid "%s: Too small to be a valid .xz file" > msgstr "%s : Trop petit pour être un fichier xz valide." >@@ -346,125 +514,41 @@ > #. to Ratio, the columns are right aligned. Check and Filename > #. are left aligned. If you need longer words, it's OK to > #. use two lines here. Test with "xz -l foo.xz". >-#: src/xz/list.c:677 >+#: src/xz/list.c:730 > msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" > msgstr "Flux Blocs Compressé Décompressé Ratio Vérif. Nom de fichier" > >-#: src/xz/list.c:717 >-#, c-format >-msgid " Streams: %s\n" >-msgstr " Flux : %s\n" >- >-#: src/xz/list.c:719 >-#, c-format >-msgid " Blocks: %s\n" >-msgstr " Blocs : %s\n" >- >-#: src/xz/list.c:721 >-#, c-format >-msgid " Compressed size: %s\n" >-msgstr " Taille données avec compression : %s\n" >- >-#: src/xz/list.c:724 >-#, c-format >-msgid " Uncompressed size: %s\n" >-msgstr " Taille données sans compression : %s\n" >- >-#: src/xz/list.c:727 >-#, c-format >-msgid " Ratio: %s\n" >-msgstr " Ratio : %s\n" >- >-#: src/xz/list.c:729 >-#, c-format >-msgid " Check: %s\n" >-msgstr " Vérification : %s\n" >- >-#: src/xz/list.c:730 >-#, c-format >-msgid " Stream padding: %s\n" >-msgstr " Octets de rembourrage du flux : %s\n" >- >-#. TRANSLATORS: The second line is column headings. All except >-#. Check are right aligned; Check is left aligned. Test with >-#. "xz -lv foo.xz". >-#: src/xz/list.c:758 >-msgid "" >-" Streams:\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >-msgstr "" >-" Flux :\n" >-" Flux Blocs PositionComp PositionDécomp TailleComp TailleDécomp Ratio Vérif. Bourrage" >- >-#. TRANSLATORS: The second line is column headings. All >-#. except Check are right aligned; Check is left aligned. >-#: src/xz/list.c:813 >-#, c-format >-msgid "" >-" Blocks:\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >-msgstr "" >-" Blocs :\n" >-" Flux Bloc PositionComp PositionDécomp TailleTot TailleDécomp Ratio Vérif." >- >-#. TRANSLATORS: These are additional column headings >-#. for the most verbose listing mode. CheckVal >-#. (Check value), Flags, and Filters are left aligned. >-#. Header (Block Header Size), CompSize, and MemUsage >-#. are right aligned. %*s is replaced with 0-120 >-#. spaces to make the CheckVal column wide enough. >-#. Test with "xz -lvv foo.xz". >-#: src/xz/list.c:825 >-#, c-format >-msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >-msgstr " ValVérif %*sEn-tête Drapeaux TailleComp UtilMém Filtres" >- >-#: src/xz/list.c:903 src/xz/list.c:1078 >-#, c-format >-msgid " Memory needed: %s MiB\n" >-msgstr " Mémoire nécessaire : %s MiB\n" >- >-#: src/xz/list.c:905 src/xz/list.c:1080 >-#, c-format >-msgid " Sizes in headers: %s\n" >-msgstr " Tailles stockées dans l'en-tête : %s\n" >- >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "Yes" > msgstr "Oui" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "No" > msgstr "Non" > >-#: src/xz/list.c:907 src/xz/list.c:1082 >+#: src/xz/list.c:1027 src/xz/list.c:1205 > #, c-format > msgid " Minimum XZ Utils version: %s\n" > msgstr " Version minimale de XZ Utils : %s\n" > > #. TRANSLATORS: %s is an integer. Only the plural form of this > #. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz". >-#: src/xz/list.c:1057 >+#: src/xz/list.c:1178 > #, c-format > msgid "%s file\n" > msgid_plural "%s files\n" > msgstr[0] "%s fichier\n" > msgstr[1] "%s fichiers\n" > >-#: src/xz/list.c:1070 >+#: src/xz/list.c:1191 > msgid "Totals:" > msgstr "Totaux :" > >-#: src/xz/list.c:1071 >-#, c-format >-msgid " Number of files: %s\n" >-msgstr " Nombre de fichiers : %s\n" >- >-#: src/xz/list.c:1146 >+#: src/xz/list.c:1269 > msgid "--list works only on .xz files (--format=xz or --format=auto)" > msgstr "--list ne marche que sur les fichiers .xz (--format=xz ou --format=auto)" > >-#: src/xz/list.c:1152 >+#: src/xz/list.c:1275 > msgid "--list does not support reading from standard input" > msgstr "--list est incompatible avec la lecture sur l'entrée standard" > >@@ -483,11 +567,11 @@ > msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" > msgstr "%s : Caractère NULL détecté lors de la lecture des noms de fichiers ; peut-être pensiez-vous à `--files0' plutot qu'a `--files' ?" > >-#: src/xz/main.c:174 >+#: src/xz/main.c:188 > msgid "Compression and decompression with --robot are not supported yet." > msgstr "La compression et la décompression ne marchent pas encore avec --robot." > >-#: src/xz/main.c:252 >+#: src/xz/main.c:266 > msgid "Cannot read data from standard input when reading filenames from standard input" > msgstr "Impossible de lire à la fois les données et les noms de fichiers depuis l'entrée standard" > >@@ -495,68 +579,68 @@ > #. of the line in messages. Usually it becomes "xz: ". > #. This is a translatable string because French needs > #. a space before a colon. >-#: src/xz/message.c:728 >+#: src/xz/message.c:725 > #, c-format > msgid "%s: " > msgstr "%s : " > >-#: src/xz/message.c:791 src/xz/message.c:841 >+#: src/xz/message.c:797 src/xz/message.c:856 > msgid "Internal error (bug)" > msgstr "Erreur interne (bug)" > >-#: src/xz/message.c:798 >+#: src/xz/message.c:804 > msgid "Cannot establish signal handlers" > msgstr "Impossible d'installer le gestionnaire de signaux" > >-#: src/xz/message.c:807 >+#: src/xz/message.c:813 > msgid "No integrity check; not verifying file integrity" > msgstr "Pas de données de vérification d'intégrité ; vérification non effectuée" > >-#: src/xz/message.c:810 >+#: src/xz/message.c:816 > msgid "Unsupported type of integrity check; not verifying file integrity" > msgstr "Méthode de vérification d'intégrité non prise en charge ; vérification non effectuée" > >-#: src/xz/message.c:817 >+#: src/xz/message.c:823 > msgid "Memory usage limit reached" > msgstr "Limite d'utilisation mémoire atteinte" > >-#: src/xz/message.c:820 >+#: src/xz/message.c:826 > msgid "File format not recognized" > msgstr "Format de fichier inconnu" > >-#: src/xz/message.c:823 >+#: src/xz/message.c:829 > msgid "Unsupported options" > msgstr "Options non prises en charge" > >-#: src/xz/message.c:826 >+#: src/xz/message.c:832 > msgid "Compressed data is corrupt" > msgstr "Les données compressées sont corrompues" > >-#: src/xz/message.c:829 >+#: src/xz/message.c:835 > msgid "Unexpected end of input" > msgstr "Fin des données inattendue " > >-#: src/xz/message.c:862 >+#: src/xz/message.c:877 > #, c-format > msgid "%s MiB of memory is required. The limiter is disabled." > msgstr "%s MiB de mémoire sont nécessaires. La limite est désactivée." > >-#: src/xz/message.c:890 >+#: src/xz/message.c:905 > #, c-format > msgid "%s MiB of memory is required. The limit is %s." > msgstr "%s MiB de mémoire sont nécessaires, la limite étant %s." > >-#: src/xz/message.c:1057 >+#: src/xz/message.c:924 > #, c-format > msgid "%s: Filter chain: %s\n" > msgstr "%s : Enchaînement de filtres : %s\n" > >-#: src/xz/message.c:1067 >+#: src/xz/message.c:935 > #, c-format > msgid "Try `%s --help' for more information." > msgstr "Ãxécutez `%s --help' pour obtenir davantage d'informations." > >-#: src/xz/message.c:1093 >+#: src/xz/message.c:961 > #, c-format > msgid "" > "Usage: %s [OPTION]... [FILE]...\n" >@@ -567,17 +651,17 @@ > "Compresse ou decompresse FICHIER(s) au format .xz.\n" > "\n" > >-#: src/xz/message.c:1100 >+#: src/xz/message.c:968 > msgid "Mandatory arguments to long options are mandatory for short options too.\n" > msgstr "" > "Les arguments obligatoires pour les options longues le sont aussi pour les\n" > "options courtes.\n" > >-#: src/xz/message.c:1104 >+#: src/xz/message.c:972 > msgid " Operation mode:\n" > msgstr " Mode d'opération :\n" > >-#: src/xz/message.c:1107 >+#: src/xz/message.c:975 > msgid "" > " -z, --compress force compression\n" > " -d, --decompress force decompression\n" >@@ -589,7 +673,7 @@ > " -t, --test tester l'intégrité du fichier compressé\n" > " -l, --list lister les informations sur les fichiers .xz" > >-#: src/xz/message.c:1113 >+#: src/xz/message.c:981 > msgid "" > "\n" > " Operation modifiers:\n" >@@ -597,7 +681,7 @@ > "\n" > " Modificateurs :\n" > >-#: src/xz/message.c:1116 >+#: src/xz/message.c:984 > msgid "" > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" >@@ -609,7 +693,7 @@ > " -c, --stdout écrire sur la sortie standard et ne pas supprimer les\n" > " fichiers d'entrée" > >-#: src/xz/message.c:1122 >+#: src/xz/message.c:993 > msgid "" > " --single-stream decompress only the first stream, and silently\n" > " ignore possible remaining input data" >@@ -617,7 +701,7 @@ > " --single-stream décompresser uniquement le premier flux et ignorer\n" > " silencieusement les données éventuellement restantes" > >-#: src/xz/message.c:1125 >+#: src/xz/message.c:996 > msgid "" > " --no-sparse do not create sparse files when decompressing\n" > " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" >@@ -633,7 +717,7 @@ > " et doivent être suivis d'un caractère retour à la ligne\n" > " --files0[=FILE] comme --files mais avec un caractère null comme séparateur" > >-#: src/xz/message.c:1134 >+#: src/xz/message.c:1005 > msgid "" > "\n" > " Basic file format and compression options:\n" >@@ -641,10 +725,16 @@ > "\n" > " Options basiques de format de fichier et de compression :\n" > >-#: src/xz/message.c:1136 >+#: src/xz/message.c:1007 >+#, fuzzy >+#| msgid "" >+#| " -F, --format=FMT file format to encode or decode; possible values are\n" >+#| " `auto' (default), `xz', `lzma', and `raw'\n" >+#| " -C, --check=CHECK integrity check type: `none' (use with caution),\n" >+#| " `crc32', `crc64' (default), or `sha256'" > msgid "" > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'" > msgstr "" >@@ -653,13 +743,13 @@ > " -C, --check=CHECK type de vérification d'intégrité : `none' (à utiliser avec\n" > " précaution), `crc32', `crc64' (par défaut) ou `sha256'" > >-#: src/xz/message.c:1141 >+#: src/xz/message.c:1012 > msgid " --ignore-check don't verify the integrity check when decompressing" > msgstr "" > " --ignore-check ne pas vérifier l'intégrité des données lors de\n" > " la décompression" > >-#: src/xz/message.c:1145 >+#: src/xz/message.c:1016 > msgid "" > " -0 ... -9 compression preset; default is 6; take compressor *and*\n" > " decompressor memory usage into account before using 7-9!" >@@ -668,7 +758,7 @@ > " l'utilisation mémoire du compresseur *et* du décompresseur\n" > " avant d'utiliser 7, 8 ou 9 !" > >-#: src/xz/message.c:1149 >+#: src/xz/message.c:1020 > msgid "" > " -e, --extreme try to improve compression ratio by using more CPU time;\n" > " does not affect decompressor memory requirements" >@@ -677,7 +767,7 @@ > " de temps processeur ;\n" > " n'affecte pas les besoins mémoire du décompresseur" > >-#: src/xz/message.c:1153 >+#: src/xz/message.c:1024 > msgid "" > " -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" > " to use as many threads as there are processor cores" >@@ -686,7 +776,7 @@ > " valeur 0 est spéciale et équivaut au nombre de processeurs\n" > " de la machine" > >-#: src/xz/message.c:1158 >+#: src/xz/message.c:1029 > msgid "" > " --block-size=SIZE\n" > " start a new .xz block after every SIZE bytes of input;\n" >@@ -696,7 +786,7 @@ > " débuter un bloc XZ après chaque TAILLE octets de données\n" > " d'entrée ; ce réglage sert pour la compression paralléle" > >-#: src/xz/message.c:1162 >+#: src/xz/message.c:1033 > msgid "" > " --block-list=SIZES\n" > " start a new .xz block after the given comma-separated\n" >@@ -706,7 +796,7 @@ > " débuter des blocs XZ après les TAILLES octets de données\n" > " spécifiées avec des virgules pour séparateur" > >-#: src/xz/message.c:1166 >+#: src/xz/message.c:1037 > msgid "" > " --flush-timeout=TIMEOUT\n" > " when compressing, if more than TIMEOUT milliseconds has\n" >@@ -718,14 +808,22 @@ > " depuis le dernier flush et que la lecture est bloquée,\n" > " toutes les données en attente snt écrites" > >-#: src/xz/message.c:1172 >-#, no-c-format >+#: src/xz/message.c:1043 >+#, fuzzy, no-c-format >+#| msgid "" >+#| " --memlimit-compress=LIMIT\n" >+#| " --memlimit-decompress=LIMIT\n" >+#| " -M, --memlimit=LIMIT\n" >+#| " set memory usage limit for compression, decompression,\n" >+#| " or both; LIMIT is in bytes, % of RAM, or 0 for defaults" > msgid "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults" > msgstr "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >@@ -734,7 +832,7 @@ > " décompression ou les deux ; LIMIT est en octets,\n" > " pourcentage de RAM, ou 0 pour la valeur par défaut" > >-#: src/xz/message.c:1179 >+#: src/xz/message.c:1052 > msgid "" > " --no-adjust if compression settings exceed the memory usage limit,\n" > " give an error instead of adjusting the settings downwards" >@@ -743,7 +841,7 @@ > " d'utilisation mémoire, renvoyer une erreur plutôt que de\n" > " diminuer les réglages" > >-#: src/xz/message.c:1185 >+#: src/xz/message.c:1058 > msgid "" > "\n" > " Custom filter chain for compression (alternative for using presets):" >@@ -751,7 +849,7 @@ > "\n" > " Chaîne de filtres de compression personnalisée (en lieu des préréglages) :" > >-#: src/xz/message.c:1194 >+#: src/xz/message.c:1067 > msgid "" > "\n" > " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" >@@ -780,14 +878,26 @@ > " depth=NUM profondeur de recherche maximale ;\n" > " 0=automatique (par défaut)" > >-#: src/xz/message.c:1209 >+#: src/xz/message.c:1082 >+#, fuzzy >+#| msgid "" >+#| "\n" >+#| " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+#| " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" >+#| " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >+#| " --arm[=OPTS] ARM BCJ filter (little endian only)\n" >+#| " --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" >+#| " --sparc[=OPTS] SPARC BCJ filter\n" >+#| " Valid OPTS for all BCJ filters:\n" >+#| " start=NUM start offset for conversions (default=0)" > msgid "" > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)" >@@ -802,7 +912,7 @@ > " OPTS valides pour tous les filtres BCJ :\n" > " start=NUM position de début de la conversion (défaut=0)" > >-#: src/xz/message.c:1221 >+#: src/xz/message.c:1095 > msgid "" > "\n" > " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" >@@ -814,7 +924,7 @@ > " dist=NUM distance entre les octets soustraits les\n" > " uns aux autres (1-256 ; 1)" > >-#: src/xz/message.c:1229 >+#: src/xz/message.c:1103 > msgid "" > "\n" > " Other options:\n" >@@ -822,7 +932,7 @@ > "\n" > " Autres options :\n" > >-#: src/xz/message.c:1232 >+#: src/xz/message.c:1106 > msgid "" > " -q, --quiet suppress warnings; specify twice to suppress errors too\n" > " -v, --verbose be verbose; specify twice for even more verbose" >@@ -831,17 +941,17 @@ > " aussi masquer les erreurs\n" > " -v, --verbose être bavard ; spécifier deux fois pour l'être davantage" > >-#: src/xz/message.c:1237 >+#: src/xz/message.c:1111 > msgid " -Q, --no-warn make warnings not affect the exit status" > msgstr " -Q, --no-warn les avertissements ne modifient pas le code de sortie" > >-#: src/xz/message.c:1239 >+#: src/xz/message.c:1113 > msgid " --robot use machine-parsable messages (useful for scripts)" > msgstr "" > " --robot utiliser des messages lisibles par un programme\n" > " (utile pour les scripts)" > >-#: src/xz/message.c:1242 >+#: src/xz/message.c:1116 > msgid "" > " --info-memory display the total amount of RAM and the currently active\n" > " memory usage limits, and exit" >@@ -849,7 +959,7 @@ > " --info-memory afficher la quantité totale de RAM ainsi que la limite\n" > " actuelle d'utilisation mémoire puis quitter" > >-#: src/xz/message.c:1245 >+#: src/xz/message.c:1119 > msgid "" > " -h, --help display the short help (lists only the basic options)\n" > " -H, --long-help display this long help and exit" >@@ -857,7 +967,7 @@ > " -h, --help afficher l'aide courte (ne liste que les options de base)\n" > " -H, --long-help afficher l'aide longue (ceci) puis quitter" > >-#: src/xz/message.c:1249 >+#: src/xz/message.c:1123 > msgid "" > " -h, --help display this short help and exit\n" > " -H, --long-help display the long help (lists also the advanced options)" >@@ -865,11 +975,11 @@ > " -h, --help afficher l'aide courte (ceci) puis quitter\n" > " -H, --long-help afficher l'aide longue (liste aussi les options avancées)" > >-#: src/xz/message.c:1254 >+#: src/xz/message.c:1128 > msgid " -V, --version display the version number and exit" > msgstr " -V, --version afficher le numéro de version puis quitter" > >-#: src/xz/message.c:1256 >+#: src/xz/message.c:1130 > msgid "" > "\n" > "With no FILE, or when FILE is -, read standard input.\n" >@@ -881,19 +991,19 @@ > #. for this package. Please add _another line_ saying > #. "Report translation bugs to <...>\n" with the email or WWW > #. address for translation bugs. Thanks. >-#: src/xz/message.c:1262 >+#: src/xz/message.c:1136 > #, c-format > msgid "Report bugs to <%s> (in English or Finnish).\n" > msgstr "" > "Signaler les bogues à <%s> (en anglais ou en finnois).\n" > "Signaler les bogues de traduction à <lkppo@free.fr>.\n" > >-#: src/xz/message.c:1264 >+#: src/xz/message.c:1138 > #, c-format > msgid "%s home page: <%s>\n" > msgstr "Page du projet %s : <%s>\n" > >-#: src/xz/message.c:1268 >+#: src/xz/message.c:1142 > msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." > msgstr "CECI EST UNE VERSION DE DEVELOPPEMENT QUI NE DOIT PAS ÃTRE UTILISEE EN PRODUCTION." > >@@ -921,27 +1031,17 @@ > msgid "The sum of lc and lp must not exceed 4" > msgstr "La somme de lc et lp ne doit pas dépasser 4" > >-#: src/xz/options.c:359 >+#: src/xz/suffix.c:160 > #, c-format >-msgid "The selected match finder requires at least nice=%<PRIu32>" >-msgstr "Le `match finder' choisi nécessite au moins nice=%<PRIu32>" >- >-#: src/xz/suffix.c:133 src/xz/suffix.c:258 >-#, c-format >-msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >-msgstr "%s : Avec --format=raw, --suffix=.SUF est nécessaire sauf lors de l'écriture vers stdout" >- >-#: src/xz/suffix.c:164 >-#, c-format > msgid "%s: Filename has an unknown suffix, skipping" > msgstr "%s : Le fichier a un suffixe inconnu, ignoré" > >-#: src/xz/suffix.c:185 >+#: src/xz/suffix.c:181 > #, c-format > msgid "%s: File already has `%s' suffix, skipping" > msgstr "%s : Le fichier a déjà le suffixe '%s', ignoré" > >-#: src/xz/suffix.c:393 >+#: src/xz/suffix.c:388 > #, c-format > msgid "%s: Invalid filename suffix" > msgstr "%s: Suffixe de nom de fichier invalide" >@@ -965,15 +1065,11 @@ > msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]" > msgstr "La valeur de l'option '%s' doit être inclue entre %<PRIu64> et %<PRIu64>" > >-#: src/xz/util.c:267 >-msgid "Empty filename, skipping" >-msgstr "Nom de fichier vide, ignoré" >- >-#: src/xz/util.c:281 >+#: src/xz/util.c:269 > msgid "Compressed data cannot be read from a terminal" > msgstr "Les données compressées ne peuvent pas être lues depuis un terminal" > >-#: src/xz/util.c:294 >+#: src/xz/util.c:282 > msgid "Compressed data cannot be written to a terminal" > msgstr "Les données compressées ne peuvent pas être écrites dans un terminal" > >@@ -990,6 +1086,48 @@ > > #~ msgid "Sandbox was successfully enabled" > #~ msgstr "La sandboxe a été activée avec succès" >+ >+#~ msgid "Memory usage limit for compression: " >+#~ msgstr "Limite d'utilisation pour la compression : " >+ >+#, c-format >+#~ msgid " Streams: %s\n" >+#~ msgstr " Flux : %s\n" >+ >+#, c-format >+#~ msgid " Blocks: %s\n" >+#~ msgstr " Blocs : %s\n" >+ >+#, c-format >+#~ msgid " Ratio: %s\n" >+#~ msgstr " Ratio : %s\n" >+ >+#, c-format >+#~ msgid " Check: %s\n" >+#~ msgstr " Vérification : %s\n" >+ >+#~ msgid "" >+#~ " Streams:\n" >+#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >+#~ msgstr "" >+#~ " Flux :\n" >+#~ " Flux Blocs PositionComp PositionDécomp TailleComp TailleDécomp Ratio Vérif. Bourrage" >+ >+#, c-format >+#~ msgid "" >+#~ " Blocks:\n" >+#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >+#~ msgstr "" >+#~ " Blocs :\n" >+#~ " Flux Bloc PositionComp PositionDécomp TailleTot TailleDécomp Ratio Vérif." >+ >+#, c-format >+#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >+#~ msgstr " ValVérif %*sEn-tête Drapeaux TailleComp UtilMém Filtres" >+ >+#, c-format >+#~ msgid "The selected match finder requires at least nice=%<PRIu32>" >+#~ msgstr "Le `match finder' choisi nécessite au moins nice=%<PRIu32>" > > #~ msgid "Error setting O_NONBLOCK on standard input: %s" > #~ msgstr "Impossible d'établir le drapeau O_NONBLOCK sur la sortie standard : %s" >Only in xz-5.4.3/po: hr.gmo >Only in xz-5.4.3/po: hr.po >Binary files xz-5.2.5/po/hu.gmo and xz-5.4.3/po/hu.gmo differ >diff -ur xz-5.2.5/po/hu.po xz-5.4.3/po/hu.po >--- xz-5.2.5/po/hu.po 2020-03-17 17:29:58 >+++ xz-5.4.3/po/hu.po 2023-05-04 17:32:20 >@@ -1,117 +1,137 @@ > # Hungarian translation for xz. > # This file is put in the public domain. > # >-# Meskó Balázs <mesko.balazs@fsf.hu>, 2019. >+# Meskó Balázs <mesko.balazs@fsf.hu>, 2019, 2022. > msgid "" > msgstr "" >-"Project-Id-Version: xz 5.2.4\n" >-"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >-"PO-Revision-Date: 2019-11-18 09:57+0100\n" >+"Project-Id-Version: xz 5.4.0-pre1\n" >+"Report-Msgid-Bugs-To: xz@tukaani.org\n" >+"POT-Creation-Date: 2023-05-04 22:32+0800\n" >+"PO-Revision-Date: 2022-11-10 12:13+0100\n" > "Last-Translator: Meskó Balázs <mesko.balazs@fsf.hu>\n" > "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n" > "Language: hu\n" > "MIME-Version: 1.0\n" > "Content-Type: text/plain; charset=UTF-8\n" > "Content-Transfer-Encoding: 8bit\n" >+"plural-forms: nplurals=2; plural=(n != 1);\n" > "X-Bugs: Report translation errors to the Language-Team address.\n" >-"Plural-Forms: nplurals=2; plural=(n != 1);\n" >-"X-Generator: Lokalize 19.08.2\n" >+"X-Generator: Poedit 3.1.1\n" > >-#: src/xz/args.c:63 >+#: src/xz/args.c:77 > #, c-format > msgid "%s: Invalid argument to --block-list" > msgstr "%s: Ãrvénytelen argumentum a --block-list kapcsolóhoz" > >-#: src/xz/args.c:73 >+#: src/xz/args.c:87 > #, c-format > msgid "%s: Too many arguments to --block-list" > msgstr "%s: Túl sok argumentum a --block-list kapcsolóhoz" > >-#: src/xz/args.c:102 >+#: src/xz/args.c:116 > msgid "0 can only be used as the last element in --block-list" > msgstr "A 0 csak utolsó elemként használható a --block-list kapcsolónál" > >-#: src/xz/args.c:406 >+#: src/xz/args.c:451 > #, c-format > msgid "%s: Unknown file format type" > msgstr "%s: Ismeretlen fájlformátumtÃpus" > >-#: src/xz/args.c:429 src/xz/args.c:437 >+#: src/xz/args.c:474 src/xz/args.c:482 > #, c-format > msgid "%s: Unsupported integrity check type" > msgstr "%s: Nem támogatott integritás-ellenÅrzési tÃpus" > >-#: src/xz/args.c:473 >+#: src/xz/args.c:518 > msgid "Only one file can be specified with `--files' or `--files0'." > msgstr "Csak egy fájl adható meg a â--filesâ vagy â--files0â kapcsolóknál." > >-#: src/xz/args.c:541 >+#: src/xz/args.c:586 > #, c-format > msgid "The environment variable %s contains too many arguments" > msgstr "A(z) %s környezeti változó túl sok argumentumot tartalmaz" > >-#: src/xz/args.c:643 >+#: src/xz/args.c:688 > msgid "Compression support was disabled at build time" > msgstr "A tömörÃtési támogatás ki lett kapcsolva fordÃtási idÅben" > >-#: src/xz/args.c:650 >+#: src/xz/args.c:695 > msgid "Decompression support was disabled at build time" > msgstr "A kibontási támogatás ki lett kapcsolva fordÃtási idÅben" > >-#: src/xz/coder.c:110 >+#: src/xz/args.c:701 >+msgid "Compression of lzip files (.lz) is not supported" >+msgstr "Az lzip-fájlok (.lz) tömörÃtése nem támogatott" >+ >+#: src/xz/args.c:732 >+#, fuzzy >+#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgstr "%s: --format=raw esetén, --suffix=.SUF szükséges, hacsak nem a szabványosra kimenetre Ãr" >+ >+#: src/xz/coder.c:115 > msgid "Maximum number of filters is four" > msgstr "A szűrÅk legnagyobb száma négy" > >-#: src/xz/coder.c:129 >+#: src/xz/coder.c:134 > msgid "Memory usage limit is too low for the given filter setup." > msgstr "A memóriahasználat túl alacsony a megadott szűrÅbeállÃtásokhoz." > >-#: src/xz/coder.c:159 >+#: src/xz/coder.c:169 > msgid "Using a preset in raw mode is discouraged." > msgstr "Az elÅbeállÃtások használata nyers módban nem javasolt." > >-#: src/xz/coder.c:161 >+#: src/xz/coder.c:171 > msgid "The exact options of the presets may vary between software versions." > msgstr "Az elÅbeállÃtások pontos beállÃtásai különbözhetnek a szoftververziók között." > >-#: src/xz/coder.c:184 >+#: src/xz/coder.c:194 > msgid "The .lzma format supports only the LZMA1 filter" > msgstr "Az .lzma formátum csak az LZMA1 szűrÅt támogatja" > >-#: src/xz/coder.c:192 >+#: src/xz/coder.c:202 > msgid "LZMA1 cannot be used with the .xz format" > msgstr "Az LZMA1 nem használható az .xz formátummal" > >-#: src/xz/coder.c:209 >+#: src/xz/coder.c:219 > msgid "The filter chain is incompatible with --flush-timeout" > msgstr "A szűrÅlánc nem kompatibilis a --flush-timeout kapcsolóval" > >-#: src/xz/coder.c:215 >+#: src/xz/coder.c:225 > msgid "Switching to single-threaded mode due to --flush-timeout" > msgstr "Egyszálú módra váltás a --flush-timeout kapcsoló miatt" > >-#: src/xz/coder.c:235 >+#: src/xz/coder.c:249 > #, c-format > msgid "Using up to %<PRIu32> threads." > msgstr "Legfeljebb %<PRIu32> szál használata." > >-#: src/xz/coder.c:251 >+#: src/xz/coder.c:265 > msgid "Unsupported filter chain or filter options" > msgstr "Nem támogatott szűrÅlánc vagy szűrÅkapcsolók" > >-#: src/xz/coder.c:263 >+#: src/xz/coder.c:277 > #, c-format > msgid "Decompression will need %s MiB of memory." > msgstr "A kibontáshoz %s MiB memória szükséges." > >-#: src/xz/coder.c:300 >+#: src/xz/coder.c:309 > #, c-format >-msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >-msgstr "A szálak számának módosÃtása errÅl: %s, erre: %s, hogy ne lépje túl a(z) %s MiB-os korlátot" >+msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgstr "A szálak számának csökkentése errÅl: %s, erre: %s, hogy ne lépje túl a(z) %s MiB-os korlátot" > >-#: src/xz/coder.c:354 >+#: src/xz/coder.c:329 > #, c-format >+msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway." >+msgstr "A szálak számának csökkentése errÅl: %s, egyre. A(z) %s MiB-os automatikus memóriahasználati korlát Ãgy is túl lett lépve. %s MiB memória szükséges. Ennek ellenére folytatás mindenképpen." >+ >+#: src/xz/coder.c:356 >+#, c-format >+msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB" >+msgstr "Egyszálú módra váltás, hogy ne lépje túl a(z) %s MiB-os memóriahasználati korlátot" >+ >+#: src/xz/coder.c:411 >+#, c-format > msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" > msgstr "Az LZMA%c szótár méretének módosÃtása errÅl: %s MiB, erre: %s MiB, hogy ne lépje túl a(z) %s MiB-os korlátot" > >@@ -120,11 +140,11 @@ > msgid "Error creating a pipe: %s" > msgstr "Hiba a csÅvezeték létrehozásakor: %s" > >-#: src/xz/file_io.c:224 >+#: src/xz/file_io.c:252 > msgid "Failed to enable the sandbox" > msgstr "A homokozó engedélyezése sikertelen" > >-#: src/xz/file_io.c:266 >+#: src/xz/file_io.c:294 > #, c-format > msgid "%s: poll() failed: %s" > msgstr "%s: poll() sikertelen: %s" >@@ -139,195 +159,321 @@ > #. it is possible that the user has put a new file in place > #. of the original file, and in that case it obviously > #. shouldn't be removed. >-#: src/xz/file_io.c:333 >+#: src/xz/file_io.c:361 > #, c-format > msgid "%s: File seems to have been moved, not removing" > msgstr "%s: Ãgy tűnik, hogy a fájl át lett helyezve, nincs eltávolÃtás" > >-#: src/xz/file_io.c:340 src/xz/file_io.c:882 >+#: src/xz/file_io.c:368 src/xz/file_io.c:924 > #, c-format > msgid "%s: Cannot remove: %s" > msgstr "%s: Nem távolÃtható el: %s" > >-#: src/xz/file_io.c:366 >+#: src/xz/file_io.c:394 > #, c-format > msgid "%s: Cannot set the file owner: %s" > msgstr "%s: A fájl tulajdonosa nem adható meg: %s" > >-#: src/xz/file_io.c:372 >+#: src/xz/file_io.c:407 > #, c-format > msgid "%s: Cannot set the file group: %s" > msgstr "%s: A fájl csoportja nem adható meg: %s" > >-#: src/xz/file_io.c:391 >+#: src/xz/file_io.c:426 > #, c-format > msgid "%s: Cannot set the file permissions: %s" > msgstr "%s: A fájl jogosultságai nem adhatók meg: %s" > >-#: src/xz/file_io.c:517 >+#: src/xz/file_io.c:552 > #, c-format > msgid "Error getting the file status flags from standard input: %s" > msgstr "Hiba a fájl állapotjelzÅinek lekérdezésekor a szabványos bemenetrÅl: %s" > >-#: src/xz/file_io.c:574 src/xz/file_io.c:636 >+#: src/xz/file_io.c:610 src/xz/file_io.c:672 > #, c-format > msgid "%s: Is a symbolic link, skipping" > msgstr "%s: Szimbolikus link, kihagyás" > >-#: src/xz/file_io.c:665 >+#: src/xz/file_io.c:701 > #, c-format > msgid "%s: Is a directory, skipping" > msgstr "%s: Könyvtár, kihagyás" > >-#: src/xz/file_io.c:671 >+#: src/xz/file_io.c:707 > #, c-format > msgid "%s: Not a regular file, skipping" > msgstr "%s: Nem szabályos fájl, kihagyás" > >-#: src/xz/file_io.c:688 >+#: src/xz/file_io.c:724 > #, c-format > msgid "%s: File has setuid or setgid bit set, skipping" > msgstr "%s: A fájlon setuid vagy setgid bit van beállÃtva, kihagyás" > >-#: src/xz/file_io.c:695 >+#: src/xz/file_io.c:731 > #, c-format > msgid "%s: File has sticky bit set, skipping" > msgstr "%s: A fájlon sticky bit van beállÃtva, kihagyás" > >-#: src/xz/file_io.c:702 >+#: src/xz/file_io.c:738 > #, c-format > msgid "%s: Input file has more than one hard link, skipping" > msgstr "%s: A bemeneti fájlhoz több mint egy hard link tartozik, kihagyás" > >-#: src/xz/file_io.c:792 >+#: src/xz/file_io.c:780 >+msgid "Empty filename, skipping" >+msgstr "Ãres fájlnév, kihagyás" >+ >+#: src/xz/file_io.c:834 > #, c-format > msgid "Error restoring the status flags to standard input: %s" > msgstr "Hiba a fájl állapotjelzÅinek visszaállÃtásakor a szabványos bemenetre: %s" > >-#: src/xz/file_io.c:840 >+#: src/xz/file_io.c:882 > #, c-format > msgid "Error getting the file status flags from standard output: %s" > msgstr "Hiba a fájl állapotjelzÅinek lekérdezésekor a szabványos kimenetrÅl: %s" > >-#: src/xz/file_io.c:1018 >+#: src/xz/file_io.c:1060 > #, c-format > msgid "Error restoring the O_APPEND flag to standard output: %s" > msgstr "Hiba az O_APPEND visszaállÃtásakor a szabványos kimenetre: %s" > >-#: src/xz/file_io.c:1030 >+#: src/xz/file_io.c:1072 > #, c-format > msgid "%s: Closing the file failed: %s" > msgstr "%s: A fájl lezárása sikertelen: %s" > >-#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 >+#: src/xz/file_io.c:1108 src/xz/file_io.c:1371 > #, c-format > msgid "%s: Seeking failed when trying to create a sparse file: %s" > msgstr "%s: A pozÃcionálás sikertelen a ritka fájl létrehozásának kÃsérletekor: %s" > >-#: src/xz/file_io.c:1167 >+#: src/xz/file_io.c:1209 > #, c-format > msgid "%s: Read error: %s" > msgstr "%s: Olvasási hiba: %s" > >-#: src/xz/file_io.c:1191 >+#: src/xz/file_io.c:1239 > #, c-format > msgid "%s: Error seeking the file: %s" > msgstr "%s: Hiba a fájlban pozÃcionáláskor: %s" > >-#: src/xz/file_io.c:1201 >+#: src/xz/file_io.c:1263 > #, c-format > msgid "%s: Unexpected end of file" > msgstr "%s: Váratlan fájlvég" > >-#: src/xz/file_io.c:1260 >+#: src/xz/file_io.c:1322 > #, c-format > msgid "%s: Write error: %s" > msgstr "%s: Ãrási hiba: %s" > >-#: src/xz/hardware.c:137 >+#: src/xz/hardware.c:238 > msgid "Disabled" > msgstr "Letiltva" > >-#. TRANSLATORS: Test with "xz --info-memory" to see if >-#. the alignment looks nice. >-#: src/xz/hardware.c:156 >-msgid "Total amount of physical memory (RAM): " >-msgstr "Az összes fizikai memória (RAM): " >+#: src/xz/hardware.c:269 >+msgid "Amount of physical memory (RAM):" >+msgstr "Fizikai memória (RAM) mennyisége:" > >-#: src/xz/hardware.c:158 >-msgid "Memory usage limit for compression: " >-msgstr "Memóriahasználat korlátja tömörÃtéskor: " >+#: src/xz/hardware.c:270 >+msgid "Number of processor threads:" >+msgstr "Processzorszálak száma:" > >-#: src/xz/hardware.c:160 >-msgid "Memory usage limit for decompression: " >-msgstr "Memóriahasználat korlátja kibontáskor: " >+#: src/xz/hardware.c:271 >+msgid "Compression:" >+msgstr "TömörÃtés:" > >+#: src/xz/hardware.c:272 >+msgid "Decompression:" >+msgstr "Kibontás:" >+ >+#: src/xz/hardware.c:273 >+msgid "Multi-threaded decompression:" >+msgstr "Többszálás kibontás:" >+ >+#: src/xz/hardware.c:274 >+msgid "Default for -T0:" >+msgstr "A -T0 alapértelmezése:" >+ >+#: src/xz/hardware.c:292 >+msgid "Hardware information:" >+msgstr "HardverjellemzÅk:" >+ >+#: src/xz/hardware.c:299 >+msgid "Memory usage limits:" >+msgstr "Memóriahasználat korlátja:" >+ >+#: src/xz/list.c:68 >+msgid "Streams:" >+msgstr "Adatfolyamok:" >+ >+#: src/xz/list.c:69 >+msgid "Blocks:" >+msgstr "Blokkok:" >+ >+#: src/xz/list.c:70 >+msgid "Compressed size:" >+msgstr "TömörÃtett méret:" >+ >+#: src/xz/list.c:71 >+msgid "Uncompressed size:" >+msgstr "Kibontott méret:" >+ >+#: src/xz/list.c:72 >+msgid "Ratio:" >+msgstr "Arány:" >+ >+#: src/xz/list.c:73 >+msgid "Check:" >+msgstr "EllenÅrzés:" >+ >+#: src/xz/list.c:74 >+msgid "Stream Padding:" >+msgstr "Adatfolyam kerete:" >+ >+#: src/xz/list.c:75 >+msgid "Memory needed:" >+msgstr "Szükséges memória:" >+ >+#: src/xz/list.c:76 >+msgid "Sizes in headers:" >+msgstr "Méretek a fejlécekben:" >+ >+#: src/xz/list.c:79 >+msgid "Number of files:" >+msgstr "Fájlok száma:" >+ >+#: src/xz/list.c:122 >+msgid "Stream" >+msgstr "Adatfolyam" >+ >+#: src/xz/list.c:123 >+msgid "Block" >+msgstr "Blokk" >+ >+#: src/xz/list.c:124 >+msgid "Blocks" >+msgstr "Blokkok" >+ >+#: src/xz/list.c:125 >+msgid "CompOffset" >+msgstr "TömörÃtett eltolás" >+ >+#: src/xz/list.c:126 >+msgid "UncompOffset" >+msgstr "Kibontott eltolás" >+ >+#: src/xz/list.c:127 >+msgid "CompSize" >+msgstr "TömörÃtett méret" >+ >+#: src/xz/list.c:128 >+msgid "UncompSize" >+msgstr "Kibontott méret" >+ >+#: src/xz/list.c:129 >+msgid "TotalSize" >+msgstr "Teljes méret" >+ >+#: src/xz/list.c:130 >+msgid "Ratio" >+msgstr "Arány" >+ >+#: src/xz/list.c:131 >+msgid "Check" >+msgstr "EllenÅrzés" >+ >+#: src/xz/list.c:132 >+msgid "CheckVal" >+msgstr "EllenÅrzÅérték" >+ >+#: src/xz/list.c:133 >+msgid "Padding" >+msgstr "Keret" >+ >+#: src/xz/list.c:134 >+msgid "Header" >+msgstr "Fejléc" >+ >+#: src/xz/list.c:135 >+msgid "Flags" >+msgstr "JelzÅk" >+ >+#: src/xz/list.c:136 >+msgid "MemUsage" >+msgstr "Memóriahasználat" >+ >+#: src/xz/list.c:137 >+msgid "Filters" >+msgstr "SzűrÅk" >+ > #. TRANSLATORS: Indicates that there is no integrity check. >-#. This string is used in tables, so the width must not >-#. exceed ten columns with a fixed-width font. >-#: src/xz/list.c:65 >+#. This string is used in tables. In older xz version this >+#. string was limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:169 > msgid "None" > msgstr "Nincs" > > #. TRANSLATORS: Indicates that integrity check name is not known, >-#. but the Check ID is known (here 2). This and other "Unknown-N" >-#. strings are used in tables, so the width must not exceed ten >-#. columns with a fixed-width font. It's OK to omit the dash if >-#. you need space for one extra letter, but don't use spaces. >-#: src/xz/list.c:72 >+#. but the Check ID is known (here 2). In older xz version these >+#. strings were limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:175 > msgid "Unknown-2" > msgstr "Névtelen-2" > >-#: src/xz/list.c:73 >+#: src/xz/list.c:176 > msgid "Unknown-3" > msgstr "Névtelen-3" > >-#: src/xz/list.c:75 >+#: src/xz/list.c:178 > msgid "Unknown-5" > msgstr "Névtelen-5" > >-#: src/xz/list.c:76 >+#: src/xz/list.c:179 > msgid "Unknown-6" > msgstr "Névtelen-6" > >-#: src/xz/list.c:77 >+#: src/xz/list.c:180 > msgid "Unknown-7" > msgstr "Névtelen-7" > >-#: src/xz/list.c:78 >+#: src/xz/list.c:181 > msgid "Unknown-8" > msgstr "Névtelen-8" > >-#: src/xz/list.c:79 >+#: src/xz/list.c:182 > msgid "Unknown-9" > msgstr "Névtelen-9" > >-#: src/xz/list.c:81 >+#: src/xz/list.c:184 > msgid "Unknown-11" > msgstr "Névtelen-11" > >-#: src/xz/list.c:82 >+#: src/xz/list.c:185 > msgid "Unknown-12" > msgstr "Névtelen-12" > >-#: src/xz/list.c:83 >+#: src/xz/list.c:186 > msgid "Unknown-13" > msgstr "Névtelen-13" > >-#: src/xz/list.c:84 >+#: src/xz/list.c:187 > msgid "Unknown-14" > msgstr "Névtelen-14" > >-#: src/xz/list.c:85 >+#: src/xz/list.c:188 > msgid "Unknown-15" > msgstr "Névtelen-15" > >-#: src/xz/list.c:153 >+#: src/xz/list.c:351 > #, c-format > msgid "%s: File is empty" > msgstr "%s: A fájl üres" > >-#: src/xz/list.c:158 >+#: src/xz/list.c:356 > #, c-format > msgid "%s: Too small to be a valid .xz file" > msgstr "%s: Túl kicsi, hogy érvényes .xz fájl legyen" >@@ -336,125 +482,41 @@ > #. to Ratio, the columns are right aligned. Check and Filename > #. are left aligned. If you need longer words, it's OK to > #. use two lines here. Test with "xz -l foo.xz". >-#: src/xz/list.c:677 >+#: src/xz/list.c:730 > msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" > msgstr "Folyam Blokkok TömörÃtett Kibontott Arány EllenÅrzés Fájlnév" > >-#: src/xz/list.c:717 >-#, c-format >-msgid " Streams: %s\n" >-msgstr " Adatfolyamok: %s\n" >- >-#: src/xz/list.c:719 >-#, c-format >-msgid " Blocks: %s\n" >-msgstr " Blokkok: %s\n" >- >-#: src/xz/list.c:721 >-#, c-format >-msgid " Compressed size: %s\n" >-msgstr " TömörÃtett méret: %s\n" >- >-#: src/xz/list.c:724 >-#, c-format >-msgid " Uncompressed size: %s\n" >-msgstr " Kibontott méret: %s\n" >- >-#: src/xz/list.c:727 >-#, c-format >-msgid " Ratio: %s\n" >-msgstr " Arány: %s\n" >- >-#: src/xz/list.c:729 >-#, c-format >-msgid " Check: %s\n" >-msgstr " EllenÅrzés: %s\n" >- >-#: src/xz/list.c:730 >-#, c-format >-msgid " Stream padding: %s\n" >-msgstr " Adatfolyam kerete: %s\n" >- >-#. TRANSLATORS: The second line is column headings. All except >-#. Check are right aligned; Check is left aligned. Test with >-#. "xz -lv foo.xz". >-#: src/xz/list.c:758 >-msgid "" >-" Streams:\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >-msgstr "" >-" Adatfolyamok:\n" >-" Folyam Blokkok TömEltolás KibEltolás TömMéret KibMéret Arány EllenÅrzés Keret" >- >-#. TRANSLATORS: The second line is column headings. All >-#. except Check are right aligned; Check is left aligned. >-#: src/xz/list.c:813 >-#, c-format >-msgid "" >-" Blocks:\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >-msgstr "" >-" Blokkok:\n" >-" Folyam Blokkok TömEltolás KibEltolás TömMéret KibMéret Arány EllenÅrzés" >- >-#. TRANSLATORS: These are additional column headings >-#. for the most verbose listing mode. CheckVal >-#. (Check value), Flags, and Filters are left aligned. >-#. Header (Block Header Size), CompSize, and MemUsage >-#. are right aligned. %*s is replaced with 0-120 >-#. spaces to make the CheckVal column wide enough. >-#. Test with "xz -lvv foo.xz". >-#: src/xz/list.c:825 >-#, c-format >-msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >-msgstr " ÃrtékEll %*s Fejléc JelzÅk TömMéret MemHasználat SzűrÅk" >- >-#: src/xz/list.c:903 src/xz/list.c:1078 >-#, c-format >-msgid " Memory needed: %s MiB\n" >-msgstr " Szükséges memória: %s MiB\n" >- >-#: src/xz/list.c:905 src/xz/list.c:1080 >-#, c-format >-msgid " Sizes in headers: %s\n" >-msgstr " Méretek a fejlécekben: %s\n" >- >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "Yes" > msgstr "Igen" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "No" > msgstr "Nem" > >-#: src/xz/list.c:907 src/xz/list.c:1082 >+#: src/xz/list.c:1027 src/xz/list.c:1205 > #, c-format > msgid " Minimum XZ Utils version: %s\n" > msgstr " Legkisebb XZ Utils verzió: %s\n" > > #. TRANSLATORS: %s is an integer. Only the plural form of this > #. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz". >-#: src/xz/list.c:1057 >+#: src/xz/list.c:1178 > #, c-format > msgid "%s file\n" > msgid_plural "%s files\n" > msgstr[0] "%s fájl\n" > msgstr[1] "%s fájl\n" > >-#: src/xz/list.c:1070 >+#: src/xz/list.c:1191 > msgid "Totals:" > msgstr "Ãsszesen:" > >-#: src/xz/list.c:1071 >-#, c-format >-msgid " Number of files: %s\n" >-msgstr " Fájlok száma: %s\n" >- >-#: src/xz/list.c:1146 >+#: src/xz/list.c:1269 > msgid "--list works only on .xz files (--format=xz or --format=auto)" > msgstr "A --list csak .xz fájlokkal működik (--format=xz vagy --format=auto)" > >-#: src/xz/list.c:1152 >+#: src/xz/list.c:1275 > msgid "--list does not support reading from standard input" > msgstr "A --list nem támogatja a szabványos bemenetrÅl beolvasást" > >@@ -473,11 +535,11 @@ > msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" > msgstr "%s: Null karakter található a fájlnevek olvasásakor; talán a â--files0â kapcsolóra gondolt a â--filesâ helyett?" > >-#: src/xz/main.c:174 >+#: src/xz/main.c:188 > msgid "Compression and decompression with --robot are not supported yet." > msgstr "A tömörÃtés és kibontás még nem támogatott a --robot kapcsolóval." > >-#: src/xz/main.c:252 >+#: src/xz/main.c:266 > msgid "Cannot read data from standard input when reading filenames from standard input" > msgstr "Az adatok nem olvashatók be a szabványos bemenetrÅl a fájlnevek olvasásakor" > >@@ -485,68 +547,68 @@ > #. of the line in messages. Usually it becomes "xz: ". > #. This is a translatable string because French needs > #. a space before a colon. >-#: src/xz/message.c:728 >+#: src/xz/message.c:725 > #, c-format > msgid "%s: " > msgstr "%s: " > >-#: src/xz/message.c:791 src/xz/message.c:841 >+#: src/xz/message.c:797 src/xz/message.c:856 > msgid "Internal error (bug)" > msgstr "BelsÅ hiba (bug)" > >-#: src/xz/message.c:798 >+#: src/xz/message.c:804 > msgid "Cannot establish signal handlers" > msgstr "A szignálkezelÅk nem hozhatók létre" > >-#: src/xz/message.c:807 >+#: src/xz/message.c:813 > msgid "No integrity check; not verifying file integrity" > msgstr "Nincs integritás-ellenÅrzés; a fájl épsége nem lesz ellenÅrizve" > >-#: src/xz/message.c:810 >+#: src/xz/message.c:816 > msgid "Unsupported type of integrity check; not verifying file integrity" > msgstr "Nem támogatott integritás-ellenÅrzési tÃpus; a fájl épsége nem lesz ellenÅrizve" > >-#: src/xz/message.c:817 >+#: src/xz/message.c:823 > msgid "Memory usage limit reached" > msgstr "Memóriahasználat korlátja elérve" > >-#: src/xz/message.c:820 >+#: src/xz/message.c:826 > msgid "File format not recognized" > msgstr "A fájlformátum nem felismert" > >-#: src/xz/message.c:823 >+#: src/xz/message.c:829 > msgid "Unsupported options" > msgstr "Nem támogatott kapcsolók" > >-#: src/xz/message.c:826 >+#: src/xz/message.c:832 > msgid "Compressed data is corrupt" > msgstr "A tömörÃtett adatok megsérültek" > >-#: src/xz/message.c:829 >+#: src/xz/message.c:835 > msgid "Unexpected end of input" > msgstr "A bemenet váratlanul véget ért" > >-#: src/xz/message.c:862 >+#: src/xz/message.c:877 > #, c-format > msgid "%s MiB of memory is required. The limiter is disabled." > msgstr "%s MiB memória szükséges. A korlátozás letiltva." > >-#: src/xz/message.c:890 >+#: src/xz/message.c:905 > #, c-format > msgid "%s MiB of memory is required. The limit is %s." > msgstr "%s MiB memória szükséges. A korlát %s." > >-#: src/xz/message.c:1057 >+#: src/xz/message.c:924 > #, c-format > msgid "%s: Filter chain: %s\n" > msgstr "%s: SzűrÅlánc: %s\n" > >-#: src/xz/message.c:1067 >+#: src/xz/message.c:935 > #, c-format > msgid "Try `%s --help' for more information." > msgstr "További információkért adja ki a következÅ parancsot: â%s --helpâ." > >-#: src/xz/message.c:1093 >+#: src/xz/message.c:961 > #, c-format > msgid "" > "Usage: %s [OPTION]... [FILE]...\n" >@@ -557,15 +619,15 @@ > ".xz formátumú FÃJLok tömörÃtése vagy kibontása.\n" > "\n" > >-#: src/xz/message.c:1100 >+#: src/xz/message.c:968 > msgid "Mandatory arguments to long options are mandatory for short options too.\n" > msgstr "A hosszú kapcsolók kötelezÅ argumentumai a rövid kapcsolók esetén is kötelezÅk.\n" > >-#: src/xz/message.c:1104 >+#: src/xz/message.c:972 > msgid " Operation mode:\n" > msgstr " Működési mód:\n" > >-#: src/xz/message.c:1107 >+#: src/xz/message.c:975 > msgid "" > " -z, --compress force compression\n" > " -d, --decompress force decompression\n" >@@ -577,7 +639,7 @@ > " -t, --test tömörÃtett fájl épségének tesztelése\n" > " -l, --list információk kiÃrása az .xz fájlokról" > >-#: src/xz/message.c:1113 >+#: src/xz/message.c:981 > msgid "" > "\n" > " Operation modifiers:\n" >@@ -585,7 +647,7 @@ > "\n" > " Műveleti módosÃtók:\n" > >-#: src/xz/message.c:1116 >+#: src/xz/message.c:984 > msgid "" > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" >@@ -597,7 +659,7 @@ > " -c, --stdout Ãrás a szabványos kimenetre Ãrás, és nem törli a\n" > " bemeneti fájlokat" > >-#: src/xz/message.c:1122 >+#: src/xz/message.c:993 > msgid "" > " --single-stream decompress only the first stream, and silently\n" > " ignore possible remaining input data" >@@ -605,7 +667,7 @@ > " --single-stream csak az elsÅ adatfolyam kibontása, és a\n" > " lehetséges hátralévÅ bemeneti adatok mellÅzése" > >-#: src/xz/message.c:1125 >+#: src/xz/message.c:996 > msgid "" > " --no-sparse do not create sparse files when decompressing\n" > " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" >@@ -616,13 +678,14 @@ > msgstr "" > " --no-sparse ne hozzon létre ritka fájlokat kibontáskor\n" > " -S, --suffix=.SUF a â.SUFâ utótag használata a tömörÃtett fájlokon\n" >-" --files[=FÃJL] fájlnevek beolvasása a FÃJLból; ha a FÃJL nincs megadva,\n" >-" akkor a fájlnevek a szabványos bemenetrÅl lesznek\n" >-" beolvasva; a fájlneveket újsor karakterrel kell zárni\n" >-" --files0[=FÃJL] mint a --files, de a null karakter használata\n" >-" elválasztóként" >+" --files[=FÃJL] fájlnevek beolvasása a FÃJLból; ha a FÃJL nincs\n" >+" megadva, akkor a fájlnevek a szabványos bemenetrÅl\n" >+" lesznek beolvasva; a fájlneveket újsor karakterrel\n" >+" kell zárni\n" >+" --files0[=FÃJL] mint a --files, de a null karaktert használja\n" >+" használja elválasztóként" > >-#: src/xz/message.c:1134 >+#: src/xz/message.c:1005 > msgid "" > "\n" > " Basic file format and compression options:\n" >@@ -630,24 +693,24 @@ > "\n" > " AlapvetÅ fájlformátum és tömörÃtési beállÃtások:\n" > >-#: src/xz/message.c:1136 >+#: src/xz/message.c:1007 > msgid "" > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'" > msgstr "" > " -F, --format=FMT a kódoláshoz vagy dekódoláshoz használt fájlformátum;\n" > " lehetséges értékek âautoâ (alapértelmezett), âxzâ,\n" >-" âlzmaâ és ârawâ\n" >+" âlzmaâ, âlzipâ és ârawâ\n" > " -C, --check=ELL integritás-ellenÅrzés tÃpusa: ânoneâ (óvatosan használja),\n" > " âcrc32â, âcrc64â (alapértelmezett) vagy âsha256â" > >-#: src/xz/message.c:1141 >+#: src/xz/message.c:1012 > msgid " --ignore-check don't verify the integrity check when decompressing" > msgstr " --ignore-check kibontáskor ne ellenÅrizze az épséget" > >-#: src/xz/message.c:1145 >+#: src/xz/message.c:1016 > msgid "" > " -0 ... -9 compression preset; default is 6; take compressor *and*\n" > " decompressor memory usage into account before using 7-9!" >@@ -656,7 +719,7 @@ > " a 7-9 használata elÅtt vegye figyelembe a tömörÃtÅ\n" > " *és* kibontó memóriahasználatát!" > >-#: src/xz/message.c:1149 >+#: src/xz/message.c:1020 > msgid "" > " -e, --extreme try to improve compression ratio by using more CPU time;\n" > " does not affect decompressor memory requirements" >@@ -664,7 +727,7 @@ > " -e, --extreme a tömörÃtési arány javÃtási kÃsérlete több CPU-idÅ\n" > " használatával; nincs hatással a kibontó memóriaigényére" > >-#: src/xz/message.c:1153 >+#: src/xz/message.c:1024 > msgid "" > " -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" > " to use as many threads as there are processor cores" >@@ -673,7 +736,7 @@ > " állÃtsa 0-ra, hogy annyi szálat használjon, amennyi\n" > " processzormag áll rendelkezésre" > >-#: src/xz/message.c:1158 >+#: src/xz/message.c:1029 > msgid "" > " --block-size=SIZE\n" > " start a new .xz block after every SIZE bytes of input;\n" >@@ -683,7 +746,7 @@ > " új .xz blokk indÃtása minden MÃRETnyi bájt bemenet után;\n" > " a többszálas tömörÃtés blokkméretének megadásához" > >-#: src/xz/message.c:1162 >+#: src/xz/message.c:1033 > msgid "" > " --block-list=SIZES\n" > " start a new .xz block after the given comma-separated\n" >@@ -693,7 +756,7 @@ > " új .xz blokk indÃtása a vesszÅkkel felsorolva megadott\n" > " méretű tömörÃtetlen adatszakaszok után" > >-#: src/xz/message.c:1166 >+#: src/xz/message.c:1037 > msgid "" > " --flush-timeout=TIMEOUT\n" > " when compressing, if more than TIMEOUT milliseconds has\n" >@@ -705,23 +768,27 @@ > " telt el az elÅzÅ kiÃrástól, és a bemenetolvasás\n" > " blokkolna, akkor minden adat ki lesz Ãrva" > >-#: src/xz/message.c:1172 >+#: src/xz/message.c:1043 > #, no-c-format > msgid "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults" > msgstr "" > " --memlimit-compress=KORLÃT\n" > " --memlimit-decompress=KORLÃT\n" >+" --memlimit-mt-decompress=KORLÃT\n" > " -M, --memlimit=KORLÃT\n" > " a memóriahasználati korlát megadása tömörÃtéshez,\n" >-" kibontáshoz vagy mindkettÅhöz; a KORLÃT bájtokban van\n" >-" megadva, a RAM %-ában, vagy 0 az alapértelmezéshez" >+" kibontáshoz, többszálú kibontású vagy mindháromhoz; a\n" >+" KORLÃT bájtokban van megadva, a RAM %-ában, vagy 0 az\n" >+" alapértelmezéshez" > >-#: src/xz/message.c:1179 >+#: src/xz/message.c:1052 > msgid "" > " --no-adjust if compression settings exceed the memory usage limit,\n" > " give an error instead of adjusting the settings downwards" >@@ -730,7 +797,7 @@ > " korlátot, akkor hibát fog adni a beállÃtások lefelé\n" > " állÃtása helyett" > >-#: src/xz/message.c:1185 >+#: src/xz/message.c:1058 > msgid "" > "\n" > " Custom filter chain for compression (alternative for using presets):" >@@ -738,7 +805,7 @@ > "\n" > " Egyéni szűrÅlánc a tömörÃtéshez (alternatÃva az elÅbeállÃtásokra):" > >-#: src/xz/message.c:1194 >+#: src/xz/message.c:1067 > msgid "" > "\n" > " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" >@@ -768,30 +835,32 @@ > " depth=SZÃM legnagyobb keresési mélység; 0=automatikus\n" > " (alapértelmezett)" > >-#: src/xz/message.c:1209 >+#: src/xz/message.c:1082 > msgid "" > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)" > msgstr "" > "\n" > " --x86[=KAPCS] x86 BCJ szűrÅ (32 bites és 64 bites)\n" >+" --arm[=KAPCS] ARM BCJ szűrÅ\n" >+" --armthumb[=KAPCS] ARM-Thumb BCJ szűrÅ\n" >+" --arm64[=KAPCS] ARM64 BCJ szűrÅ\n" > " --powerpc[=KAPCS] PowerPC BCJ szűrÅ (csak big endian esetén)\n" > " --ia64[=KAPCS] IA-64 (Itanium) BCJ szűrÅ\n" >-" --arm[=KAPCS] ARM BCJ szűrÅ (csak little endian esetén)\n" >-" --armthumb[=KAPCS] ARM-Thumb BCJ szűrÅ (csak little endian esetén)\n" > " --sparc[=KAPCS] SPARC BCJ szűrÅ\n" > " Ãrvényes KAPCS az összes BCJ szűrÅhöz:\n" > " start=SZÃM kezdési eltolás az átalakÃtásokhoz\n" >-" (alapértelmezett=0)" >+" (alapértelmezett=0)" > >-#: src/xz/message.c:1221 >+#: src/xz/message.c:1095 > msgid "" > "\n" > " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" >@@ -804,7 +873,7 @@ > " dist=SZÃM az egymásból kivont bájtok közti\n" > " távolság (1-256; 1)" > >-#: src/xz/message.c:1229 >+#: src/xz/message.c:1103 > msgid "" > "\n" > " Other options:\n" >@@ -812,7 +881,7 @@ > "\n" > " Egyéb kapcsolók:\n" > >-#: src/xz/message.c:1232 >+#: src/xz/message.c:1106 > msgid "" > " -q, --quiet suppress warnings; specify twice to suppress errors too\n" > " -v, --verbose be verbose; specify twice for even more verbose" >@@ -822,19 +891,19 @@ > " -v, --verbose legyen bÅbeszédű; adja meg kétszer, hogy még bÅbeszédűbb\n" > " legyen" > >-#: src/xz/message.c:1237 >+#: src/xz/message.c:1111 > msgid " -Q, --no-warn make warnings not affect the exit status" > msgstr "" > " -Q, --no-warn a figyelmeztetések nem befolyásolják a kilépési\n" > " állapotkódot" > >-#: src/xz/message.c:1239 >+#: src/xz/message.c:1113 > msgid " --robot use machine-parsable messages (useful for scripts)" > msgstr "" > " --robot géppel értelmezhetŠüzenetek használata\n" > " (parancsfájlok esetén hasznos)" > >-#: src/xz/message.c:1242 >+#: src/xz/message.c:1116 > msgid "" > " --info-memory display the total amount of RAM and the currently active\n" > " memory usage limits, and exit" >@@ -842,7 +911,7 @@ > " --info-memory az összes RAM mennyiségének és a jelenlegi\n" > " memóriahasználati korlátok megjelenÃtése, és kilépés" > >-#: src/xz/message.c:1245 >+#: src/xz/message.c:1119 > msgid "" > " -h, --help display the short help (lists only the basic options)\n" > " -H, --long-help display this long help and exit" >@@ -850,7 +919,7 @@ > " -h, --help a rövid súgó megjelenÃtése (csak az alapvetÅ kapcsolók)\n" > " -H, --long-help ezen hosszú súgó megjelenÃtése, és kilépés" > >-#: src/xz/message.c:1249 >+#: src/xz/message.c:1123 > msgid "" > " -h, --help display this short help and exit\n" > " -H, --long-help display the long help (lists also the advanced options)" >@@ -858,11 +927,11 @@ > " -h, --help ezen rövid súgó megjelenÃtése, és kilépés\n" > " -H, --long-help a hosszú súgó megjelenÃtése (speciális kapcsolókhoz)" > >-#: src/xz/message.c:1254 >+#: src/xz/message.c:1128 > msgid " -V, --version display the version number and exit" > msgstr " -V, --version a verziószám kiÃrása és kilépés" > >-#: src/xz/message.c:1256 >+#: src/xz/message.c:1130 > msgid "" > "\n" > "With no FILE, or when FILE is -, read standard input.\n" >@@ -874,17 +943,17 @@ > #. for this package. Please add _another line_ saying > #. "Report translation bugs to <...>\n" with the email or WWW > #. address for translation bugs. Thanks. >-#: src/xz/message.c:1262 >+#: src/xz/message.c:1136 > #, c-format > msgid "Report bugs to <%s> (in English or Finnish).\n" > msgstr "Ide jelentse a hibákat: <%s> (angolul vagy finnül).\n" > >-#: src/xz/message.c:1264 >+#: src/xz/message.c:1138 > #, c-format > msgid "%s home page: <%s>\n" > msgstr "%s honlap: <%s>\n" > >-#: src/xz/message.c:1268 >+#: src/xz/message.c:1142 > msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." > msgstr "EZ EGY FEJLESZTÅI VÃLTOZAT, NEM ÃLES HASZNÃLATRA SZÃNT." > >@@ -912,27 +981,17 @@ > msgid "The sum of lc and lp must not exceed 4" > msgstr "Az lc és lp összege nem haladhatja meg a 4-et" > >-#: src/xz/options.c:359 >+#: src/xz/suffix.c:160 > #, c-format >-msgid "The selected match finder requires at least nice=%<PRIu32>" >-msgstr "A kiválasztott egyezéskeresÅhöz legalább nice=%<PRIu32> szükséges" >- >-#: src/xz/suffix.c:133 src/xz/suffix.c:258 >-#, c-format >-msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >-msgstr "%s: --format=raw esetén, --suffix=.SUF szükséges, hacsak nem a szabványosra kimenetre Ãr" >- >-#: src/xz/suffix.c:164 >-#, c-format > msgid "%s: Filename has an unknown suffix, skipping" > msgstr "%s: A fájlnév utótagja ismeretlen, kihagyás" > >-#: src/xz/suffix.c:185 >+#: src/xz/suffix.c:181 > #, c-format > msgid "%s: File already has `%s' suffix, skipping" > msgstr "%s: A(z) â%sâ fájlnak már van utótagja, kihagyás" > >-#: src/xz/suffix.c:393 >+#: src/xz/suffix.c:388 > #, c-format > msgid "%s: Invalid filename suffix" > msgstr "%s: Ãrvénytelen fájlnév utótag" >@@ -956,15 +1015,11 @@ > msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]" > msgstr "A(z) â%sâ kapcsoló értékének a(z) [%<PRIu64>, %<PRIu64>] tartományban kell lennie" > >-#: src/xz/util.c:267 >-msgid "Empty filename, skipping" >-msgstr "Ãres fájlnév, kihagyás" >- >-#: src/xz/util.c:281 >+#: src/xz/util.c:269 > msgid "Compressed data cannot be read from a terminal" > msgstr "A tömörÃtett adatokat nem lehet beolvasni a terminálból" > >-#: src/xz/util.c:294 >+#: src/xz/util.c:282 > msgid "Compressed data cannot be written to a terminal" > msgstr "A tömörÃtett adatokat nem lehet kiÃrni a terminálba" > >@@ -976,8 +1031,44 @@ > msgid "Unknown error" > msgstr "Ismeretlen hiba" > >+#, c-format >+#~ msgid "The selected match finder requires at least nice=%<PRIu32>" >+#~ msgstr "A kiválasztott egyezéskeresÅhöz legalább nice=%<PRIu32> szükséges" >+ > #~ msgid "Sandbox is disabled due to incompatible command line arguments" > #~ msgstr "A homokozó ki lett kapcsolva a nem kompatibilis parancssori argumentumok miatt" > > #~ msgid "Sandbox was successfully enabled" > #~ msgstr "A homokozó sikeresen engedélyezve" >+ >+#~ msgid "Memory usage limit for compression: " >+#~ msgstr "Memóriahasználat korlátja tömörÃtéskor: " >+ >+#~ msgid " Streams: %s\n" >+#~ msgstr " Adatfolyamok: %s\n" >+ >+#~ msgid " Blocks: %s\n" >+#~ msgstr " Blokkok: %s\n" >+ >+#~ msgid " Ratio: %s\n" >+#~ msgstr " Arány: %s\n" >+ >+#~ msgid " Check: %s\n" >+#~ msgstr " EllenÅrzés: %s\n" >+ >+#~ msgid "" >+#~ " Streams:\n" >+#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >+#~ msgstr "" >+#~ " Adatfolyamok:\n" >+#~ " Folyam Blokkok TömEltolás KibEltolás TömMéret KibMéret Arány EllenÅrzés Keret" >+ >+#~ msgid "" >+#~ " Blocks:\n" >+#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >+#~ msgstr "" >+#~ " Blokkok:\n" >+#~ " Folyam Blokkok TömEltolás KibEltolás TömMéret KibMéret Arány EllenÅrzés" >+ >+#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >+#~ msgstr " ÃrtékEll %*s Fejléc JelzÅk TömMéret MemHasználat SzűrÅk" >Binary files xz-5.2.5/po/it.gmo and xz-5.4.3/po/it.gmo differ >diff -ur xz-5.2.5/po/it.po xz-5.4.3/po/it.po >--- xz-5.2.5/po/it.po 2020-03-17 17:29:58 >+++ xz-5.4.3/po/it.po 2023-05-04 17:32:20 >@@ -7,8 +7,8 @@ > msgid "" > msgstr "" > "Project-Id-Version: xz 5.2.4\n" >-"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >+"Report-Msgid-Bugs-To: xz@tukaani.org\n" >+"POT-Creation-Date: 2023-05-04 22:32+0800\n" > "PO-Revision-Date: 2019-03-04 14:21+0100\n" > "Last-Translator: Milo Casagrande <milo@milo.name>\n" > "Language-Team: Italian <tp@lists.linux.it>\n" >@@ -21,99 +21,121 @@ > "X-Generator: Poedit 2.2.1\n" > "Plural-Forms: nplurals=2; plural=(n != 1);\n" > >-#: src/xz/args.c:63 >+#: src/xz/args.c:77 > #, c-format > msgid "%s: Invalid argument to --block-list" > msgstr "%s: argomento non valido per --block-list" > >-#: src/xz/args.c:73 >+#: src/xz/args.c:87 > #, c-format > msgid "%s: Too many arguments to --block-list" > msgstr "%s: troppi argomenti per --block-list" > >-#: src/xz/args.c:102 >+#: src/xz/args.c:116 > msgid "0 can only be used as the last element in --block-list" > msgstr "0 può essere usato solo come ultimo elemento in --block-list" > >-#: src/xz/args.c:406 >+#: src/xz/args.c:451 > #, c-format > msgid "%s: Unknown file format type" > msgstr "%s: tipo di formato del file sconosciuto" > >-#: src/xz/args.c:429 src/xz/args.c:437 >+#: src/xz/args.c:474 src/xz/args.c:482 > #, c-format > msgid "%s: Unsupported integrity check type" > msgstr "%s: tipo di controllo integrità non supportato" > >-#: src/xz/args.c:473 >+#: src/xz/args.c:518 > msgid "Only one file can be specified with `--files' or `--files0'." > msgstr "Solo un file può essere specificato con \"--files\" o \"--files0\"." > >-#: src/xz/args.c:541 >+#: src/xz/args.c:586 > #, c-format > msgid "The environment variable %s contains too many arguments" > msgstr "La variabile d'ambiente %s contiene troppi argomenti" > >-#: src/xz/args.c:643 >+#: src/xz/args.c:688 > msgid "Compression support was disabled at build time" > msgstr "Il supporto alla compressione è stato disabilitato in fase di compilazione" > >-#: src/xz/args.c:650 >+#: src/xz/args.c:695 > msgid "Decompression support was disabled at build time" > msgstr "Il supporto alla decompressione è stato disabilitato in fase di compilazione" > >-#: src/xz/coder.c:110 >+#: src/xz/args.c:701 >+msgid "Compression of lzip files (.lz) is not supported" >+msgstr "" >+ >+#: src/xz/args.c:732 >+#, fuzzy >+#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgstr "%s: con --format=raw, --suffix=.SUF è richiesto a meno che non si scriva sullo stdout" >+ >+#: src/xz/coder.c:115 > msgid "Maximum number of filters is four" > msgstr "Il numero massimo di filtri è quattro" > >-#: src/xz/coder.c:129 >+#: src/xz/coder.c:134 > msgid "Memory usage limit is too low for the given filter setup." > msgstr "Il limite dell'uso della memoria è troppo basso per l'impostazione del filtro dato." > >-#: src/xz/coder.c:159 >+#: src/xz/coder.c:169 > msgid "Using a preset in raw mode is discouraged." > msgstr "Non è consigliato usare un preset nella modalità raw." > >-#: src/xz/coder.c:161 >+#: src/xz/coder.c:171 > msgid "The exact options of the presets may vary between software versions." > msgstr "Le opzioni esatte per i preset possono variare tra le versioni del software." > >-#: src/xz/coder.c:184 >+#: src/xz/coder.c:194 > msgid "The .lzma format supports only the LZMA1 filter" > msgstr "Il formato .lzma supporta solo il filtro LZMA1" > >-#: src/xz/coder.c:192 >+#: src/xz/coder.c:202 > msgid "LZMA1 cannot be used with the .xz format" > msgstr "LZMA1 non può essere usato con il formato .xz" > >-#: src/xz/coder.c:209 >+#: src/xz/coder.c:219 > msgid "The filter chain is incompatible with --flush-timeout" > msgstr "La catena di filtri non è compatibile con --flush-timeout" > >-#: src/xz/coder.c:215 >+#: src/xz/coder.c:225 > msgid "Switching to single-threaded mode due to --flush-timeout" > msgstr "Passaggio a modalità singolo thread poiché viene usato --flush-timeout" > >-#: src/xz/coder.c:235 >+#: src/xz/coder.c:249 > #, c-format > msgid "Using up to %<PRIu32> threads." > msgstr "Vengono usati circa %<PRIu32> thread." > >-#: src/xz/coder.c:251 >+#: src/xz/coder.c:265 > msgid "Unsupported filter chain or filter options" > msgstr "Catena di filtri od opzioni del filtro non supportata" > >-#: src/xz/coder.c:263 >+#: src/xz/coder.c:277 > #, c-format > msgid "Decompression will need %s MiB of memory." > msgstr "L'estrazione necessita di %s MiB di memoria." > >-#: src/xz/coder.c:300 >+#: src/xz/coder.c:309 >+#, fuzzy, c-format >+#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgstr "Regolato il numero di thread da %s a %s per non eccedere il limite di utilizzo della memoria di %s MiB" >+ >+#: src/xz/coder.c:329 > #, c-format >-msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway." >+msgstr "" >+ >+#: src/xz/coder.c:356 >+#, fuzzy, c-format >+#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB" > msgstr "Regolato il numero di thread da %s a %s per non eccedere il limite di utilizzo della memoria di %s MiB" > >-#: src/xz/coder.c:354 >+#: src/xz/coder.c:411 > #, c-format > msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" > msgstr "Regolata la dimensione del dizionario LZMA%c da %s MiB a %s MiB per non superare il limite dell'uso della memoria di %s MiB" >@@ -123,11 +145,11 @@ > msgid "Error creating a pipe: %s" > msgstr "Errore nel creare una pipe: %s" > >-#: src/xz/file_io.c:224 >+#: src/xz/file_io.c:252 > msgid "Failed to enable the sandbox" > msgstr "Abilitazione modalità sandbox non riuscita" > >-#: src/xz/file_io.c:266 >+#: src/xz/file_io.c:294 > #, c-format > msgid "%s: poll() failed: %s" > msgstr "%s: poll() non riuscita: %s" >@@ -142,195 +164,341 @@ > #. it is possible that the user has put a new file in place > #. of the original file, and in that case it obviously > #. shouldn't be removed. >-#: src/xz/file_io.c:333 >+#: src/xz/file_io.c:361 > #, c-format > msgid "%s: File seems to have been moved, not removing" > msgstr "%s: sembra che il file sia stato spostato, non viene rimosso" > >-#: src/xz/file_io.c:340 src/xz/file_io.c:882 >+#: src/xz/file_io.c:368 src/xz/file_io.c:924 > #, c-format > msgid "%s: Cannot remove: %s" > msgstr "%s: impossibile rimuovere: %s" > >-#: src/xz/file_io.c:366 >+#: src/xz/file_io.c:394 > #, c-format > msgid "%s: Cannot set the file owner: %s" > msgstr "%s: impossibile impostare il proprietario del file: %s" > >-#: src/xz/file_io.c:372 >+#: src/xz/file_io.c:407 > #, c-format > msgid "%s: Cannot set the file group: %s" > msgstr "%s: impossibile impostare il gruppo del file: %s" > >-#: src/xz/file_io.c:391 >+#: src/xz/file_io.c:426 > #, c-format > msgid "%s: Cannot set the file permissions: %s" > msgstr "%s: impossibile impostare i permessi del file: %s" > >-#: src/xz/file_io.c:517 >+#: src/xz/file_io.c:552 > #, c-format > msgid "Error getting the file status flags from standard input: %s" > msgstr "Errore nel recuperare le flag di stato del file dallo standard input: %s" > >-#: src/xz/file_io.c:574 src/xz/file_io.c:636 >+#: src/xz/file_io.c:610 src/xz/file_io.c:672 > #, c-format > msgid "%s: Is a symbolic link, skipping" > msgstr "%s: è un collegamento simbolico, viene saltato" > >-#: src/xz/file_io.c:665 >+#: src/xz/file_io.c:701 > #, c-format > msgid "%s: Is a directory, skipping" > msgstr "%s: è una directory, viene saltata" > >-#: src/xz/file_io.c:671 >+#: src/xz/file_io.c:707 > #, c-format > msgid "%s: Not a regular file, skipping" > msgstr "%s: non è un file regolare, viene saltato" > >-#: src/xz/file_io.c:688 >+#: src/xz/file_io.c:724 > #, c-format > msgid "%s: File has setuid or setgid bit set, skipping" > msgstr "%s: il file ha il bit setuid o setgid impostato, viene saltato" > >-#: src/xz/file_io.c:695 >+#: src/xz/file_io.c:731 > #, c-format > msgid "%s: File has sticky bit set, skipping" > msgstr "%s: il file ha lo sticky bit impostato, viene saltato" > >-#: src/xz/file_io.c:702 >+#: src/xz/file_io.c:738 > #, c-format > msgid "%s: Input file has more than one hard link, skipping" > msgstr "%s: il file di input ha più di un collegamento fisico, viene saltato" > >-#: src/xz/file_io.c:792 >+#: src/xz/file_io.c:780 >+msgid "Empty filename, skipping" >+msgstr "Nome file vuoto, viene saltato" >+ >+#: src/xz/file_io.c:834 > #, c-format > msgid "Error restoring the status flags to standard input: %s" > msgstr "Errore nel ripristinare le flag di stato sullo standard input: %s" > >-#: src/xz/file_io.c:840 >+#: src/xz/file_io.c:882 > #, c-format > msgid "Error getting the file status flags from standard output: %s" > msgstr "Errore nel recuperare le flag di stato del file dallo standard output: %s" > >-#: src/xz/file_io.c:1018 >+#: src/xz/file_io.c:1060 > #, c-format > msgid "Error restoring the O_APPEND flag to standard output: %s" > msgstr "Errore nel ripristinare la flag O_APPEND sullo standard output: %s" > >-#: src/xz/file_io.c:1030 >+#: src/xz/file_io.c:1072 > #, c-format > msgid "%s: Closing the file failed: %s" > msgstr "%s: chiusura del file non riuscita: %s" > >-#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 >+#: src/xz/file_io.c:1108 src/xz/file_io.c:1371 > #, c-format > msgid "%s: Seeking failed when trying to create a sparse file: %s" > msgstr "%s: posizionamento non riuscito nel tentativo di creare un file sparso: %s" > >-#: src/xz/file_io.c:1167 >+#: src/xz/file_io.c:1209 > #, c-format > msgid "%s: Read error: %s" > msgstr "%s: errore di lettura: %s" > >-#: src/xz/file_io.c:1191 >+#: src/xz/file_io.c:1239 > #, c-format > msgid "%s: Error seeking the file: %s" > msgstr "%s: errore nel cercare il file: %s" > >-#: src/xz/file_io.c:1201 >+#: src/xz/file_io.c:1263 > #, c-format > msgid "%s: Unexpected end of file" > msgstr "%s: fine del file inaspettata" > >-#: src/xz/file_io.c:1260 >+#: src/xz/file_io.c:1322 > #, c-format > msgid "%s: Write error: %s" > msgstr "%s: errore di scrittura: %s" > >-#: src/xz/hardware.c:137 >+#: src/xz/hardware.c:238 > msgid "Disabled" > msgstr "Disabilitato" > >-#. TRANSLATORS: Test with "xz --info-memory" to see if >-#. the alignment looks nice. >-#: src/xz/hardware.c:156 >-msgid "Total amount of physical memory (RAM): " >+#: src/xz/hardware.c:269 >+#, fuzzy >+#| msgid "Total amount of physical memory (RAM): " >+msgid "Amount of physical memory (RAM):" > msgstr "Quantità totale di memoria fisica (RAM): " > >-#: src/xz/hardware.c:158 >-msgid "Memory usage limit for compression: " >-msgstr "Limite utilizzo memoria per la compressione: " >+#: src/xz/hardware.c:270 >+msgid "Number of processor threads:" >+msgstr "" > >-#: src/xz/hardware.c:160 >-msgid "Memory usage limit for decompression: " >+#: src/xz/hardware.c:271 >+msgid "Compression:" >+msgstr "" >+ >+#: src/xz/hardware.c:272 >+msgid "Decompression:" >+msgstr "" >+ >+#: src/xz/hardware.c:273 >+#, fuzzy >+#| msgid "Memory usage limit for decompression: " >+msgid "Multi-threaded decompression:" > msgstr "Limite utilizzo memoria per l'estrazione: " > >+#: src/xz/hardware.c:274 >+msgid "Default for -T0:" >+msgstr "" >+ >+#: src/xz/hardware.c:292 >+msgid "Hardware information:" >+msgstr "" >+ >+#: src/xz/hardware.c:299 >+#, fuzzy >+#| msgid "Memory usage limit reached" >+msgid "Memory usage limits:" >+msgstr "Limite di utilizzo della memoria raggiunto" >+ >+#: src/xz/list.c:68 >+msgid "Streams:" >+msgstr "" >+ >+#: src/xz/list.c:69 >+msgid "Blocks:" >+msgstr "" >+ >+#: src/xz/list.c:70 >+#, fuzzy >+#| msgid " Compressed size: %s\n" >+msgid "Compressed size:" >+msgstr " Dim. compresso: %s\n" >+ >+#: src/xz/list.c:71 >+#, fuzzy >+#| msgid " Uncompressed size: %s\n" >+msgid "Uncompressed size:" >+msgstr " Dim. estratto: %s\n" >+ >+#: src/xz/list.c:72 >+msgid "Ratio:" >+msgstr "" >+ >+#: src/xz/list.c:73 >+msgid "Check:" >+msgstr "" >+ >+#: src/xz/list.c:74 >+#, fuzzy >+#| msgid " Stream padding: %s\n" >+msgid "Stream Padding:" >+msgstr " Padding dello stream: %s\n" >+ >+#: src/xz/list.c:75 >+#, fuzzy >+#| msgid " Memory needed: %s MiB\n" >+msgid "Memory needed:" >+msgstr " Memoria necessaria: %s MiB\n" >+ >+#: src/xz/list.c:76 >+#, fuzzy >+#| msgid " Sizes in headers: %s\n" >+msgid "Sizes in headers:" >+msgstr " Dim. negli header: %s\n" >+ >+#: src/xz/list.c:79 >+#, fuzzy >+#| msgid " Number of files: %s\n" >+msgid "Number of files:" >+msgstr " Numero di file: %s\n" >+ >+#: src/xz/list.c:122 >+msgid "Stream" >+msgstr "" >+ >+#: src/xz/list.c:123 >+msgid "Block" >+msgstr "" >+ >+#: src/xz/list.c:124 >+msgid "Blocks" >+msgstr "" >+ >+#: src/xz/list.c:125 >+msgid "CompOffset" >+msgstr "" >+ >+#: src/xz/list.c:126 >+msgid "UncompOffset" >+msgstr "" >+ >+#: src/xz/list.c:127 >+msgid "CompSize" >+msgstr "" >+ >+#: src/xz/list.c:128 >+msgid "UncompSize" >+msgstr "" >+ >+#: src/xz/list.c:129 >+#, fuzzy >+#| msgid "Totals:" >+msgid "TotalSize" >+msgstr "Totali:" >+ >+#: src/xz/list.c:130 >+msgid "Ratio" >+msgstr "" >+ >+#: src/xz/list.c:131 >+msgid "Check" >+msgstr "" >+ >+#: src/xz/list.c:132 >+msgid "CheckVal" >+msgstr "" >+ >+#: src/xz/list.c:133 >+msgid "Padding" >+msgstr "" >+ >+#: src/xz/list.c:134 >+msgid "Header" >+msgstr "" >+ >+#: src/xz/list.c:135 >+msgid "Flags" >+msgstr "" >+ >+#: src/xz/list.c:136 >+msgid "MemUsage" >+msgstr "" >+ >+#: src/xz/list.c:137 >+msgid "Filters" >+msgstr "" >+ > #. TRANSLATORS: Indicates that there is no integrity check. >-#. This string is used in tables, so the width must not >-#. exceed ten columns with a fixed-width font. >-#: src/xz/list.c:65 >+#. This string is used in tables. In older xz version this >+#. string was limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:169 > msgid "None" > msgstr "Nessuno" > > #. TRANSLATORS: Indicates that integrity check name is not known, >-#. but the Check ID is known (here 2). This and other "Unknown-N" >-#. strings are used in tables, so the width must not exceed ten >-#. columns with a fixed-width font. It's OK to omit the dash if >-#. you need space for one extra letter, but don't use spaces. >-#: src/xz/list.c:72 >+#. but the Check ID is known (here 2). In older xz version these >+#. strings were limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:175 > msgid "Unknown-2" > msgstr "Sconosc2" > >-#: src/xz/list.c:73 >+#: src/xz/list.c:176 > msgid "Unknown-3" > msgstr "Sconosc3" > >-#: src/xz/list.c:75 >+#: src/xz/list.c:178 > msgid "Unknown-5" > msgstr "Sconosc5" > >-#: src/xz/list.c:76 >+#: src/xz/list.c:179 > msgid "Unknown-6" > msgstr "Sconosc6" > >-#: src/xz/list.c:77 >+#: src/xz/list.c:180 > msgid "Unknown-7" > msgstr "Sconosc7" > >-#: src/xz/list.c:78 >+#: src/xz/list.c:181 > msgid "Unknown-8" > msgstr "Sconosc8" > >-#: src/xz/list.c:79 >+#: src/xz/list.c:182 > msgid "Unknown-9" > msgstr "Sconosc9" > >-#: src/xz/list.c:81 >+#: src/xz/list.c:184 > msgid "Unknown-11" > msgstr "Sconosc11" > >-#: src/xz/list.c:82 >+#: src/xz/list.c:185 > msgid "Unknown-12" > msgstr "Sconosc12" > >-#: src/xz/list.c:83 >+#: src/xz/list.c:186 > msgid "Unknown-13" > msgstr "Sconosc13" > >-#: src/xz/list.c:84 >+#: src/xz/list.c:187 > msgid "Unknown-14" > msgstr "Sconosc14" > >-#: src/xz/list.c:85 >+#: src/xz/list.c:188 > msgid "Unknown-15" > msgstr "Sconosc15" > >-#: src/xz/list.c:153 >+#: src/xz/list.c:351 > #, c-format > msgid "%s: File is empty" > msgstr "%s: il file è vuoto" > >-#: src/xz/list.c:158 >+#: src/xz/list.c:356 > #, c-format > msgid "%s: Too small to be a valid .xz file" > msgstr "%s: troppo piccolo per essere un file .xz valido" >@@ -339,125 +507,41 @@ > #. to Ratio, the columns are right aligned. Check and Filename > #. are left aligned. If you need longer words, it's OK to > #. use two lines here. Test with "xz -l foo.xz". >-#: src/xz/list.c:677 >+#: src/xz/list.c:730 > msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" > msgstr " Strm Blocc. Compresso Estratto Rapp. Contr Nome file" > >-#: src/xz/list.c:717 >-#, c-format >-msgid " Streams: %s\n" >-msgstr " Stream: %s\n" >- >-#: src/xz/list.c:719 >-#, c-format >-msgid " Blocks: %s\n" >-msgstr " Blocchi: %s\n" >- >-#: src/xz/list.c:721 >-#, c-format >-msgid " Compressed size: %s\n" >-msgstr " Dim. compresso: %s\n" >- >-#: src/xz/list.c:724 >-#, c-format >-msgid " Uncompressed size: %s\n" >-msgstr " Dim. estratto: %s\n" >- >-#: src/xz/list.c:727 >-#, c-format >-msgid " Ratio: %s\n" >-msgstr " Rapporto: %s\n" >- >-#: src/xz/list.c:729 >-#, c-format >-msgid " Check: %s\n" >-msgstr " Controllo: %s\n" >- >-#: src/xz/list.c:730 >-#, c-format >-msgid " Stream padding: %s\n" >-msgstr " Padding dello stream: %s\n" >- >-#. TRANSLATORS: The second line is column headings. All except >-#. Check are right aligned; Check is left aligned. Test with >-#. "xz -lv foo.xz". >-#: src/xz/list.c:758 >-msgid "" >-" Streams:\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >-msgstr "" >-"Stream:\n" >-" Stream Blocc. Offset comp. Offset estr. Dim. comp. Dim. estratto Rapp. Contr Padding" >- >-#. TRANSLATORS: The second line is column headings. All >-#. except Check are right aligned; Check is left aligned. >-#: src/xz/list.c:813 >-#, c-format >-msgid "" >-" Blocks:\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >-msgstr "" >-" Blocchi:\n" >-" Stream Blocc. Offset comp. Offset estratto Dim. tot. Dim. estratto Rapp. Contr" >- >-#. TRANSLATORS: These are additional column headings >-#. for the most verbose listing mode. CheckVal >-#. (Check value), Flags, and Filters are left aligned. >-#. Header (Block Header Size), CompSize, and MemUsage >-#. are right aligned. %*s is replaced with 0-120 >-#. spaces to make the CheckVal column wide enough. >-#. Test with "xz -lvv foo.xz". >-#: src/xz/list.c:825 >-#, c-format >-msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >-msgstr " Val.cont %*s Header Flag Dim.compr. Uso mem. Filtri" >- >-#: src/xz/list.c:903 src/xz/list.c:1078 >-#, c-format >-msgid " Memory needed: %s MiB\n" >-msgstr " Memoria necessaria: %s MiB\n" >- >-#: src/xz/list.c:905 src/xz/list.c:1080 >-#, c-format >-msgid " Sizes in headers: %s\n" >-msgstr " Dim. negli header: %s\n" >- >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "Yes" > msgstr "Sì" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "No" > msgstr "No" > >-#: src/xz/list.c:907 src/xz/list.c:1082 >+#: src/xz/list.c:1027 src/xz/list.c:1205 > #, c-format > msgid " Minimum XZ Utils version: %s\n" > msgstr " Versione \"XZ Utils\" minima: %s\n" > > #. TRANSLATORS: %s is an integer. Only the plural form of this > #. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz". >-#: src/xz/list.c:1057 >+#: src/xz/list.c:1178 > #, c-format > msgid "%s file\n" > msgid_plural "%s files\n" > msgstr[0] "%s file\n" > msgstr[1] "%s file\n" > >-#: src/xz/list.c:1070 >+#: src/xz/list.c:1191 > msgid "Totals:" > msgstr "Totali:" > >-#: src/xz/list.c:1071 >-#, c-format >-msgid " Number of files: %s\n" >-msgstr " Numero di file: %s\n" >- >-#: src/xz/list.c:1146 >+#: src/xz/list.c:1269 > msgid "--list works only on .xz files (--format=xz or --format=auto)" > msgstr "--list funziona solamente con file .xz (--format=xz o --format=auto)" > >-#: src/xz/list.c:1152 >+#: src/xz/list.c:1275 > msgid "--list does not support reading from standard input" > msgstr "--list non è in grado di leggere dallo standard input" > >@@ -476,11 +560,11 @@ > msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" > msgstr "%s: nessun carattere trovato durante la lettura dei nomi dei file; forse si intendeva usare \"--files0\" invece di \"--files\"?" > >-#: src/xz/main.c:174 >+#: src/xz/main.c:188 > msgid "Compression and decompression with --robot are not supported yet." > msgstr "La compressione e l'estrazione con --robot non sono ancora supportate." > >-#: src/xz/main.c:252 >+#: src/xz/main.c:266 > msgid "Cannot read data from standard input when reading filenames from standard input" > msgstr "Impossibile leggere i dati dallo standard input durante la lettura dei nomi dei file dallo standard input" > >@@ -488,68 +572,68 @@ > #. of the line in messages. Usually it becomes "xz: ". > #. This is a translatable string because French needs > #. a space before a colon. >-#: src/xz/message.c:728 >+#: src/xz/message.c:725 > #, c-format > msgid "%s: " > msgstr "%s: " > >-#: src/xz/message.c:791 src/xz/message.c:841 >+#: src/xz/message.c:797 src/xz/message.c:856 > msgid "Internal error (bug)" > msgstr "Errore interno (bug)" > >-#: src/xz/message.c:798 >+#: src/xz/message.c:804 > msgid "Cannot establish signal handlers" > msgstr "Impossibile stabilire i gestori dei segnali" > >-#: src/xz/message.c:807 >+#: src/xz/message.c:813 > msgid "No integrity check; not verifying file integrity" > msgstr "Nessun controllo d'integrità ; l'integrità del file non viene verificata" > >-#: src/xz/message.c:810 >+#: src/xz/message.c:816 > msgid "Unsupported type of integrity check; not verifying file integrity" > msgstr "Tipo di controllo di integrità non supportato; l'integrità del file non viene verificata" > >-#: src/xz/message.c:817 >+#: src/xz/message.c:823 > msgid "Memory usage limit reached" > msgstr "Limite di utilizzo della memoria raggiunto" > >-#: src/xz/message.c:820 >+#: src/xz/message.c:826 > msgid "File format not recognized" > msgstr "Formato di file non riconosciuto" > >-#: src/xz/message.c:823 >+#: src/xz/message.c:829 > msgid "Unsupported options" > msgstr "Opzioni non supportate" > >-#: src/xz/message.c:826 >+#: src/xz/message.c:832 > msgid "Compressed data is corrupt" > msgstr "I dati compressi sono danneggiati" > >-#: src/xz/message.c:829 >+#: src/xz/message.c:835 > msgid "Unexpected end of input" > msgstr "Fine dell'input non attesa" > >-#: src/xz/message.c:862 >+#: src/xz/message.c:877 > #, c-format > msgid "%s MiB of memory is required. The limiter is disabled." > msgstr "%s MiB di memoria sono richiesti. Il limite è disabilitato." > >-#: src/xz/message.c:890 >+#: src/xz/message.c:905 > #, c-format > msgid "%s MiB of memory is required. The limit is %s." > msgstr "%s MiB di memoria sono richiesti. Il limite è %s." > >-#: src/xz/message.c:1057 >+#: src/xz/message.c:924 > #, c-format > msgid "%s: Filter chain: %s\n" > msgstr "%s: catena di filtri: %s\n" > >-#: src/xz/message.c:1067 >+#: src/xz/message.c:935 > #, c-format > msgid "Try `%s --help' for more information." > msgstr "Provare \"%s --help\" per maggiori informazioni." > >-#: src/xz/message.c:1093 >+#: src/xz/message.c:961 > #, c-format > msgid "" > "Usage: %s [OPTION]... [FILE]...\n" >@@ -560,15 +644,15 @@ > "Comprime o estrae i FILE nel formato .xz.\n" > "\n" > >-#: src/xz/message.c:1100 >+#: src/xz/message.c:968 > msgid "Mandatory arguments to long options are mandatory for short options too.\n" > msgstr "Gli argomenti obbligatori per le opzioni lunghe lo sono anche per quelle brevi.\n" > >-#: src/xz/message.c:1104 >+#: src/xz/message.c:972 > msgid " Operation mode:\n" > msgstr " Modalità di operazione:\n" > >-#: src/xz/message.c:1107 >+#: src/xz/message.c:975 > msgid "" > " -z, --compress force compression\n" > " -d, --decompress force decompression\n" >@@ -580,7 +664,7 @@ > " -t, --test Verifica l'integrità dei file compressi\n" > " -l, --list Elenca informazioni sui file .xz" > >-#: src/xz/message.c:1113 >+#: src/xz/message.c:981 > msgid "" > "\n" > " Operation modifiers:\n" >@@ -588,7 +672,7 @@ > "\n" > " Modificatori di operazioni:\n" > >-#: src/xz/message.c:1116 >+#: src/xz/message.c:984 > msgid "" > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" >@@ -599,7 +683,7 @@ > " collegamenti\n" > " -c, --stdout Scrive sullo standard output e non elimina i file di input" > >-#: src/xz/message.c:1122 >+#: src/xz/message.c:993 > msgid "" > " --single-stream decompress only the first stream, and silently\n" > " ignore possible remaining input data" >@@ -607,7 +691,7 @@ > " --single-stream Decomprime solamente il primo stream e ignora\n" > " silenziosamente i restanti dati di input" > >-#: src/xz/message.c:1125 >+#: src/xz/message.c:996 > msgid "" > " --no-sparse do not create sparse files when decompressing\n" > " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" >@@ -624,7 +708,7 @@ > " di newline\n" > " --files0=[FILE] Come --files ma usa il carattere null come terminatore" > >-#: src/xz/message.c:1134 >+#: src/xz/message.c:1005 > msgid "" > "\n" > " Basic file format and compression options:\n" >@@ -632,10 +716,16 @@ > "\n" > " Formato file di base e opzioni di compressione:\n" > >-#: src/xz/message.c:1136 >+#: src/xz/message.c:1007 >+#, fuzzy >+#| msgid "" >+#| " -F, --format=FMT file format to encode or decode; possible values are\n" >+#| " `auto' (default), `xz', `lzma', and `raw'\n" >+#| " -C, --check=CHECK integrity check type: `none' (use with caution),\n" >+#| " `crc32', `crc64' (default), or `sha256'" > msgid "" > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'" > msgstr "" >@@ -644,11 +734,11 @@ > " -C, --check=CHECK Tipo di verifica integrità : \"none\" (usare con attenzione),\n" > " \"crc32\", \"crc64\" (predefinito) o \"sha256\"" > >-#: src/xz/message.c:1141 >+#: src/xz/message.c:1012 > msgid " --ignore-check don't verify the integrity check when decompressing" > msgstr " --ignore-check Non verifica il codice di integrità quando decomprime" > >-#: src/xz/message.c:1145 >+#: src/xz/message.c:1016 > msgid "" > " -0 ... -9 compression preset; default is 6; take compressor *and*\n" > " decompressor memory usage into account before using 7-9!" >@@ -657,7 +747,7 @@ > " l'utilizzo di memoria per comprimere ed estrarre prima\n" > " di usare 7-9" > >-#: src/xz/message.c:1149 >+#: src/xz/message.c:1020 > msgid "" > " -e, --extreme try to improve compression ratio by using more CPU time;\n" > " does not affect decompressor memory requirements" >@@ -666,7 +756,7 @@ > " utilizzando più tempo di CPU; non cambia i requisiti di\n" > " memoria in fase di estrazione" > >-#: src/xz/message.c:1153 >+#: src/xz/message.c:1024 > msgid "" > " -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" > " to use as many threads as there are processor cores" >@@ -675,7 +765,7 @@ > " impostare a 0 per usare tanti thread quanti core la CPU\n" > " ha a disposizione" > >-#: src/xz/message.c:1158 >+#: src/xz/message.c:1029 > msgid "" > " --block-size=SIZE\n" > " start a new .xz block after every SIZE bytes of input;\n" >@@ -686,7 +776,7 @@ > " usare per impostare la dimensione del blocco durante la\n" > " compressione con thread" > >-#: src/xz/message.c:1162 >+#: src/xz/message.c:1033 > msgid "" > " --block-list=SIZES\n" > " start a new .xz block after the given comma-separated\n" >@@ -696,7 +786,7 @@ > " Avvia un nuovo blocco .xz dopo gli intervalli, sperati\n" > " da virgole, di dati non compressi" > >-#: src/xz/message.c:1166 >+#: src/xz/message.c:1037 > msgid "" > " --flush-timeout=TIMEOUT\n" > " when compressing, if more than TIMEOUT milliseconds has\n" >@@ -709,14 +799,22 @@ > " ulteriore input risulterebbe bloccata, viene eseguito il\n" > " flush di tutti i dati pendenti" > >-#: src/xz/message.c:1172 >-#, no-c-format >+#: src/xz/message.c:1043 >+#, fuzzy, no-c-format >+#| msgid "" >+#| " --memlimit-compress=LIMIT\n" >+#| " --memlimit-decompress=LIMIT\n" >+#| " -M, --memlimit=LIMIT\n" >+#| " set memory usage limit for compression, decompression,\n" >+#| " or both; LIMIT is in bytes, % of RAM, or 0 for defaults" > msgid "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults" > msgstr "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >@@ -725,7 +823,7 @@ > " compressione, l'estrazione o entrambe; LIMIT è in byte,\n" > " % della memoria RAM oppure 0 per il valore predefinito" > >-#: src/xz/message.c:1179 >+#: src/xz/message.c:1052 > msgid "" > " --no-adjust if compression settings exceed the memory usage limit,\n" > " give an error instead of adjusting the settings downwards" >@@ -734,7 +832,7 @@ > " utilizzo della memoria, lancia un errore invece di\n" > " utilizzare valori più piccoli" > >-#: src/xz/message.c:1185 >+#: src/xz/message.c:1058 > msgid "" > "\n" > " Custom filter chain for compression (alternative for using presets):" >@@ -743,7 +841,7 @@ > " Catena di filtri personalizzati per la compressione (alternative per\n" > " l'utilizzo di preset):" > >-#: src/xz/message.c:1194 >+#: src/xz/message.c:1067 > msgid "" > "\n" > " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" >@@ -776,14 +874,26 @@ > " depth=NUM Profondità massima di ricerca; 0=automatica\n" > " (predefinito)" > >-#: src/xz/message.c:1209 >+#: src/xz/message.c:1082 >+#, fuzzy >+#| msgid "" >+#| "\n" >+#| " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+#| " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" >+#| " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >+#| " --arm[=OPTS] ARM BCJ filter (little endian only)\n" >+#| " --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" >+#| " --sparc[=OPTS] SPARC BCJ filter\n" >+#| " Valid OPTS for all BCJ filters:\n" >+#| " start=NUM start offset for conversions (default=0)" > msgid "" > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)" >@@ -799,7 +909,7 @@ > " start=NUM Offset iniziale per le conversioni\n" > " (predefinito=0)" > >-#: src/xz/message.c:1221 >+#: src/xz/message.c:1095 > msgid "" > "\n" > " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" >@@ -811,7 +921,7 @@ > " dist=NUM Distanza tra byte sottratti\n" > " gli uni dagli altri (1-256; 1)" > >-#: src/xz/message.c:1229 >+#: src/xz/message.c:1103 > msgid "" > "\n" > " Other options:\n" >@@ -819,7 +929,7 @@ > "\n" > " Altre opzioni:\n" > >-#: src/xz/message.c:1232 >+#: src/xz/message.c:1106 > msgid "" > " -q, --quiet suppress warnings; specify twice to suppress errors too\n" > " -v, --verbose be verbose; specify twice for even more verbose" >@@ -829,15 +939,15 @@ > " -v, --verbose Output prolisso; specificare due volte per output ancora\n" > " più prolisso" > >-#: src/xz/message.c:1237 >+#: src/xz/message.c:1111 > msgid " -Q, --no-warn make warnings not affect the exit status" > msgstr " -Q, --no-warn Gli avvisi non influenzano lo stato d'uscita" > >-#: src/xz/message.c:1239 >+#: src/xz/message.c:1113 > msgid " --robot use machine-parsable messages (useful for scripts)" > msgstr " --robot Usa messaggi analizzabili (utile per gli script)" > >-#: src/xz/message.c:1242 >+#: src/xz/message.c:1116 > msgid "" > " --info-memory display the total amount of RAM and the currently active\n" > " memory usage limits, and exit" >@@ -845,7 +955,7 @@ > " --info-memory Visualizza la quantità totale di RAM, il limite attuale\n" > " attivo di utilizzo della memore ed esce" > >-#: src/xz/message.c:1245 >+#: src/xz/message.c:1119 > msgid "" > " -h, --help display the short help (lists only the basic options)\n" > " -H, --long-help display this long help and exit" >@@ -853,7 +963,7 @@ > " -h, --help Stampa l'aiuto breve (elenca solo le opzioni di base)\n" > " -H, --long-help Stampa questo lungo aiuto ed esce" > >-#: src/xz/message.c:1249 >+#: src/xz/message.c:1123 > msgid "" > " -h, --help display this short help and exit\n" > " -H, --long-help display the long help (lists also the advanced options)" >@@ -861,11 +971,11 @@ > " -h, --help Stampa questo breve aiuto ed esce\n" > " -H, --long-help Stampa l'aiuto lungo (elenca anche le opzioni avanzate)" > >-#: src/xz/message.c:1254 >+#: src/xz/message.c:1128 > msgid " -V, --version display the version number and exit" > msgstr " -V, --version Stampa il numero della versione ed esce" > >-#: src/xz/message.c:1256 >+#: src/xz/message.c:1130 > msgid "" > "\n" > "With no FILE, or when FILE is -, read standard input.\n" >@@ -877,19 +987,19 @@ > #. for this package. Please add _another line_ saying > #. "Report translation bugs to <...>\n" with the email or WWW > #. address for translation bugs. Thanks. >-#: src/xz/message.c:1262 >+#: src/xz/message.c:1136 > #, c-format > msgid "Report bugs to <%s> (in English or Finnish).\n" > msgstr "" > "Segnalare i bug a <%s> (in inglese o finlandese).\n" > "Segnalare i bug di traduzione a <tp@lists.linux.it>.\n" > >-#: src/xz/message.c:1264 >+#: src/xz/message.c:1138 > #, c-format > msgid "%s home page: <%s>\n" > msgstr "Sito web di %s: <%s>\n" > >-#: src/xz/message.c:1268 >+#: src/xz/message.c:1142 > msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." > msgstr "Questa è una versione di sviluppo non adatta per utilizzi in produzione." > >@@ -917,27 +1027,17 @@ > msgid "The sum of lc and lp must not exceed 4" > msgstr "La somma di lc e lp non deve superare 4" > >-#: src/xz/options.c:359 >+#: src/xz/suffix.c:160 > #, c-format >-msgid "The selected match finder requires at least nice=%<PRIu32>" >-msgstr "Lo strumento per cercare corrispondenze selezionato richiede almeno nice=%<PRIu32>" >- >-#: src/xz/suffix.c:133 src/xz/suffix.c:258 >-#, c-format >-msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >-msgstr "%s: con --format=raw, --suffix=.SUF è richiesto a meno che non si scriva sullo stdout" >- >-#: src/xz/suffix.c:164 >-#, c-format > msgid "%s: Filename has an unknown suffix, skipping" > msgstr "%s: il nome del file ha un suffisso sconosciuto, viene saltato" > >-#: src/xz/suffix.c:185 >+#: src/xz/suffix.c:181 > #, c-format > msgid "%s: File already has `%s' suffix, skipping" > msgstr "%s: il file ha già il suffisso \"%s\", viene saltato" > >-#: src/xz/suffix.c:393 >+#: src/xz/suffix.c:388 > #, c-format > msgid "%s: Invalid filename suffix" > msgstr "%s: suffisso del nome del file non valido" >@@ -961,15 +1061,11 @@ > msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]" > msgstr "Il valore dell'opzione \"%s\" deve essere nell'intervallo [%<PRIu64>, %<PRIu64>]" > >-#: src/xz/util.c:267 >-msgid "Empty filename, skipping" >-msgstr "Nome file vuoto, viene saltato" >- >-#: src/xz/util.c:281 >+#: src/xz/util.c:269 > msgid "Compressed data cannot be read from a terminal" > msgstr "I dati compressi non possono essere letti da un terminale" > >-#: src/xz/util.c:294 >+#: src/xz/util.c:282 > msgid "Compressed data cannot be written to a terminal" > msgstr "I dati compressi non possono essere scritti ad un terminale" > >@@ -986,3 +1082,45 @@ > > #~ msgid "Sandbox was successfully enabled" > #~ msgstr "Sandbox abilitata con successo" >+ >+#~ msgid "Memory usage limit for compression: " >+#~ msgstr "Limite utilizzo memoria per la compressione: " >+ >+#, c-format >+#~ msgid " Streams: %s\n" >+#~ msgstr " Stream: %s\n" >+ >+#, c-format >+#~ msgid " Blocks: %s\n" >+#~ msgstr " Blocchi: %s\n" >+ >+#, c-format >+#~ msgid " Ratio: %s\n" >+#~ msgstr " Rapporto: %s\n" >+ >+#, c-format >+#~ msgid " Check: %s\n" >+#~ msgstr " Controllo: %s\n" >+ >+#~ msgid "" >+#~ " Streams:\n" >+#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >+#~ msgstr "" >+#~ "Stream:\n" >+#~ " Stream Blocc. Offset comp. Offset estr. Dim. comp. Dim. estratto Rapp. Contr Padding" >+ >+#, c-format >+#~ msgid "" >+#~ " Blocks:\n" >+#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >+#~ msgstr "" >+#~ " Blocchi:\n" >+#~ " Stream Blocc. Offset comp. Offset estratto Dim. tot. Dim. estratto Rapp. Contr" >+ >+#, c-format >+#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >+#~ msgstr " Val.cont %*s Header Flag Dim.compr. Uso mem. Filtri" >+ >+#, c-format >+#~ msgid "The selected match finder requires at least nice=%<PRIu32>" >+#~ msgstr "Lo strumento per cercare corrispondenze selezionato richiede almeno nice=%<PRIu32>" >Only in xz-5.4.3/po: ko.gmo >Only in xz-5.4.3/po: ko.po >Binary files xz-5.2.5/po/pl.gmo and xz-5.4.3/po/pl.gmo differ >diff -ur xz-5.2.5/po/pl.po xz-5.4.3/po/pl.po >--- xz-5.2.5/po/pl.po 2020-03-17 17:29:58 >+++ xz-5.4.3/po/pl.po 2023-05-04 17:32:20 >@@ -1,13 +1,13 @@ > # Polish translation for xz. > # This file is put in the public domain. >-# Jakub Bogusz <qboosh@pld-linux.org>, 2011-2019. >+# Jakub Bogusz <qboosh@pld-linux.org>, 2011-2022. > # > msgid "" > msgstr "" >-"Project-Id-Version: xz 5.2.4\n" >-"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >-"PO-Revision-Date: 2019-03-05 05:30+0100\n" >+"Project-Id-Version: xz 5.4.0-pre1\n" >+"Report-Msgid-Bugs-To: xz@tukaani.org\n" >+"POT-Creation-Date: 2023-05-04 22:32+0800\n" >+"PO-Revision-Date: 2022-11-10 18:02+0100\n" > "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n" > "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" > "Language: pl\n" >@@ -17,100 +17,120 @@ > "X-Bugs: Report translation errors to the Language-Team address.\n" > "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" > >-#: src/xz/args.c:63 >+#: src/xz/args.c:77 > #, c-format > msgid "%s: Invalid argument to --block-list" > msgstr "%s: BÅÄdny argument dla --block-list" > >-#: src/xz/args.c:73 >+#: src/xz/args.c:87 > #, c-format > msgid "%s: Too many arguments to --block-list" > msgstr "%s: Zbyt dużo argumentów dla --block-list" > >-#: src/xz/args.c:102 >+#: src/xz/args.c:116 > msgid "0 can only be used as the last element in --block-list" > msgstr "0 w --block-list może byÄ użyte wyÅÄ cznie jako ostatni element" > >-#: src/xz/args.c:406 >+#: src/xz/args.c:451 > #, c-format > msgid "%s: Unknown file format type" > msgstr "%s: Nieznany typ formatu pliku" > >-#: src/xz/args.c:429 src/xz/args.c:437 >+#: src/xz/args.c:474 src/xz/args.c:482 > #, c-format > msgid "%s: Unsupported integrity check type" > msgstr "%s: NieobsÅugiwany typ kontroli spójnoÅci" > >-#: src/xz/args.c:473 >+#: src/xz/args.c:518 > msgid "Only one file can be specified with `--files' or `--files0'." > msgstr "Wraz z opcjÄ `--files' lub `--files0' można podaÄ tylko jeden plik." > >-#: src/xz/args.c:541 >+#: src/xz/args.c:586 > #, c-format > msgid "The environment variable %s contains too many arguments" > msgstr "Zmienna Årodowiskowa %s zawiera zbyt dużo argumentów" > >-#: src/xz/args.c:643 >+#: src/xz/args.c:688 > msgid "Compression support was disabled at build time" > msgstr "ObsÅuga kompresji zostaÅa wyÅÄ czona na etapie budowania" > >-#: src/xz/args.c:650 >+#: src/xz/args.c:695 > msgid "Decompression support was disabled at build time" > msgstr "ObsÅuga dekompresji zostaÅa wyÅÄ czona na etapie budowania" > >-#: src/xz/coder.c:110 >+#: src/xz/args.c:701 >+msgid "Compression of lzip files (.lz) is not supported" >+msgstr "Kompresja plików lzip (.lz) nie jest osbÅugiwana" >+ >+#: src/xz/args.c:732 >+#, fuzzy >+#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgstr "%s: Przy --format=raw i zapisie do pliku wymagana jest opcja --suffix=.ROZ" >+ >+#: src/xz/coder.c:115 > msgid "Maximum number of filters is four" > msgstr "Maksymalna liczba filtrów to cztery" > >-#: src/xz/coder.c:129 >+#: src/xz/coder.c:134 > msgid "Memory usage limit is too low for the given filter setup." > msgstr "Limit użycia pamiÄci jest zbyt maÅy dla podanej konfiguracji filtra." > >-#: src/xz/coder.c:159 >+#: src/xz/coder.c:169 > msgid "Using a preset in raw mode is discouraged." > msgstr "Użycie ustawieÅ predefiniowanych w trybie surowym jest odradzane." > >-#: src/xz/coder.c:161 >+#: src/xz/coder.c:171 > msgid "The exact options of the presets may vary between software versions." > msgstr "DokÅadne opcje ustawieÅ predefiniowanych mogÄ różniÄ siÄ miÄdzy wersjami oprogramowania." > >-#: src/xz/coder.c:184 >+#: src/xz/coder.c:194 > msgid "The .lzma format supports only the LZMA1 filter" > msgstr "Format .lzma obsÅuguje tylko filtr LZMA1" > >-#: src/xz/coder.c:192 >+#: src/xz/coder.c:202 > msgid "LZMA1 cannot be used with the .xz format" > msgstr "LZMA1 nie może byÄ używany z formatem .xz" > >-#: src/xz/coder.c:209 >+#: src/xz/coder.c:219 > msgid "The filter chain is incompatible with --flush-timeout" > msgstr "ÅaÅcuch filtrów jest niezgodny z --flush-timeout" > >-#: src/xz/coder.c:215 >+#: src/xz/coder.c:225 > msgid "Switching to single-threaded mode due to --flush-timeout" > msgstr "PrzeÅÄ czanie w tryb jednowÄ tkowy z powodu --flush-timeout" > >-#: src/xz/coder.c:235 >+#: src/xz/coder.c:249 > #, c-format > msgid "Using up to %<PRIu32> threads." > msgstr "Maksymalna liczba używanych wÄ tków: %<PRIu32>." > >-#: src/xz/coder.c:251 >+#: src/xz/coder.c:265 > msgid "Unsupported filter chain or filter options" > msgstr "NieobsÅugiwany ÅaÅcuch filtrów lub opcje filtra" > >-#: src/xz/coder.c:263 >+#: src/xz/coder.c:277 > #, c-format > msgid "Decompression will need %s MiB of memory." > msgstr "Dekompresja bÄdzie wymagaÅa %s MiB pamiÄci." > >-#: src/xz/coder.c:300 >+#: src/xz/coder.c:309 > #, c-format >-msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >-msgstr "Skorygowano liczbÄ wÄ tków z %s do %s, aby nie przekroczyÄ limitu użycia pamiÄci %s MiB" >+msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgstr "Zmniejszono liczbÄ wÄ tków z %s do %s, aby nie przekroczyÄ limitu użycia pamiÄci %s MiB" > >-#: src/xz/coder.c:354 >+#: src/xz/coder.c:329 > #, c-format >+msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway." >+msgstr "Zmniejszono liczbÄ wÄ tków z %s do jednego. Automatyczny limit użycia pamiÄci %s MiB jest nadal przekroczony - wymagane jest %s MiB. Kontynuacja mimo to." >+ >+#: src/xz/coder.c:356 >+#, c-format >+msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB" >+msgstr "PrzeÅÄ czenie w tryb jednowÄ tkowy, aby nie przekroczyÄ limitu użycia pamiÄci %s MiB" >+ >+#: src/xz/coder.c:411 >+#, c-format > msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" > msgstr "Skorygowano rozmiar sÅownika LZMA%c z %s MiB do %s MiB aby nie przekroczyÄ limitu użycia pamiÄci %s MiB" > >@@ -119,11 +139,11 @@ > msgid "Error creating a pipe: %s" > msgstr "BÅÄ d tworzenia potoku: %s" > >-#: src/xz/file_io.c:224 >+#: src/xz/file_io.c:252 > msgid "Failed to enable the sandbox" > msgstr "Nie udaÅo siÄ wÅÄ czyÄ piaskownicy" > >-#: src/xz/file_io.c:266 >+#: src/xz/file_io.c:294 > #, c-format > msgid "%s: poll() failed: %s" > msgstr "%s: poll() nie powiodÅo siÄ: %s" >@@ -138,195 +158,321 @@ > #. it is possible that the user has put a new file in place > #. of the original file, and in that case it obviously > #. shouldn't be removed. >-#: src/xz/file_io.c:333 >+#: src/xz/file_io.c:361 > #, c-format > msgid "%s: File seems to have been moved, not removing" > msgstr "%s: Plik wyglÄ da na przeniesiony, nie zostanie usuniÄty" > >-#: src/xz/file_io.c:340 src/xz/file_io.c:882 >+#: src/xz/file_io.c:368 src/xz/file_io.c:924 > #, c-format > msgid "%s: Cannot remove: %s" > msgstr "%s: Nie można usunÄ Ä: %s" > >-#: src/xz/file_io.c:366 >+#: src/xz/file_io.c:394 > #, c-format > msgid "%s: Cannot set the file owner: %s" > msgstr "%s: Nie można ustawiÄ wÅaÅciciela pliku: %s" > >-#: src/xz/file_io.c:372 >+#: src/xz/file_io.c:407 > #, c-format > msgid "%s: Cannot set the file group: %s" > msgstr "%s: Nie można ustawiÄ grupy pliku: %s" > >-#: src/xz/file_io.c:391 >+#: src/xz/file_io.c:426 > #, c-format > msgid "%s: Cannot set the file permissions: %s" > msgstr "%s: Nie można ustawiÄ uprawnieÅ pliku: %s" > >-#: src/xz/file_io.c:517 >+#: src/xz/file_io.c:552 > #, c-format > msgid "Error getting the file status flags from standard input: %s" > msgstr "BÅÄ d podczas pobierania flag stanu pliku ze standardowego wejÅcia: %s" > >-#: src/xz/file_io.c:574 src/xz/file_io.c:636 >+#: src/xz/file_io.c:610 src/xz/file_io.c:672 > #, c-format > msgid "%s: Is a symbolic link, skipping" > msgstr "%s: Jest dowiÄ zaniem symbolicznym, pominiÄto" > >-#: src/xz/file_io.c:665 >+#: src/xz/file_io.c:701 > #, c-format > msgid "%s: Is a directory, skipping" > msgstr "%s: Jest katalogiem, pominiÄto" > >-#: src/xz/file_io.c:671 >+#: src/xz/file_io.c:707 > #, c-format > msgid "%s: Not a regular file, skipping" > msgstr "%s: Nie jest zwykÅym plikiem, pominiÄto" > >-#: src/xz/file_io.c:688 >+#: src/xz/file_io.c:724 > #, c-format > msgid "%s: File has setuid or setgid bit set, skipping" > msgstr "%s: Plik ma ustawiony bit setuid lub setgid, pominiÄto" > >-#: src/xz/file_io.c:695 >+#: src/xz/file_io.c:731 > #, c-format > msgid "%s: File has sticky bit set, skipping" > msgstr "%s: Plik ma ustawiony bit sticky, pominiÄto" > >-#: src/xz/file_io.c:702 >+#: src/xz/file_io.c:738 > #, c-format > msgid "%s: Input file has more than one hard link, skipping" > msgstr "%s: Plik wejÅciowy ma wiÄcej niż jedno dowiÄ zanie zwykÅe, pominiÄto" > >-#: src/xz/file_io.c:792 >+#: src/xz/file_io.c:780 >+msgid "Empty filename, skipping" >+msgstr "Pusta nazwa pliku, pominiÄto" >+ >+#: src/xz/file_io.c:834 > #, c-format > msgid "Error restoring the status flags to standard input: %s" > msgstr "BÅÄ d podczas odtwarzania flag stanu dla standardowego wejÅcia: %s" > >-#: src/xz/file_io.c:840 >+#: src/xz/file_io.c:882 > #, c-format > msgid "Error getting the file status flags from standard output: %s" > msgstr "BÅÄ d podczas pobierania flag stanu pliku ze standardowego wyjÅcia: %s" > >-#: src/xz/file_io.c:1018 >+#: src/xz/file_io.c:1060 > #, c-format > msgid "Error restoring the O_APPEND flag to standard output: %s" > msgstr "BÅÄ d podczas odtwarzania flagi O_APPEND dla standardowego wyjÅcia: %s" > >-#: src/xz/file_io.c:1030 >+#: src/xz/file_io.c:1072 > #, c-format > msgid "%s: Closing the file failed: %s" > msgstr "%s: ZamkniÄcie pliku nie powiodÅo siÄ: %s" > >-#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 >+#: src/xz/file_io.c:1108 src/xz/file_io.c:1371 > #, c-format > msgid "%s: Seeking failed when trying to create a sparse file: %s" > msgstr "%s: Zmiana pozycji nie powiodÅa siÄ podczas próby utworzenia pliku rzadkiego: %s" > >-#: src/xz/file_io.c:1167 >+#: src/xz/file_io.c:1209 > #, c-format > msgid "%s: Read error: %s" > msgstr "%s: BÅÄ d odczytu: %s" > >-#: src/xz/file_io.c:1191 >+#: src/xz/file_io.c:1239 > #, c-format > msgid "%s: Error seeking the file: %s" > msgstr "%s: BÅÄ d podczas zmiany pozycji w pliku: %s" > >-#: src/xz/file_io.c:1201 >+#: src/xz/file_io.c:1263 > #, c-format > msgid "%s: Unexpected end of file" > msgstr "%s: Nieoczekiwany koniec pliku" > >-#: src/xz/file_io.c:1260 >+#: src/xz/file_io.c:1322 > #, c-format > msgid "%s: Write error: %s" > msgstr "%s: BÅÄ d zapisu: %s" > >-#: src/xz/hardware.c:137 >+#: src/xz/hardware.c:238 > msgid "Disabled" > msgstr "WyÅÄ czony" > >-#. TRANSLATORS: Test with "xz --info-memory" to see if >-#. the alignment looks nice. >-#: src/xz/hardware.c:156 >-msgid "Total amount of physical memory (RAM): " >-msgstr "CaÅkowita iloÅÄ pamiÄci fizycznej (RAM): " >+#: src/xz/hardware.c:269 >+msgid "Amount of physical memory (RAM):" >+msgstr "Rozmiar pamiÄci fizycznej (RAM):" > >-#: src/xz/hardware.c:158 >-msgid "Memory usage limit for compression: " >-msgstr "Limit użycia pamiÄci dla kompresji: " >+#: src/xz/hardware.c:270 >+msgid "Number of processor threads:" >+msgstr "Liczba wÄ tków procesora:" > >-#: src/xz/hardware.c:160 >-msgid "Memory usage limit for decompression: " >-msgstr "Limit użycia pamiÄci dla dekompresji: " >+#: src/xz/hardware.c:271 >+msgid "Compression:" >+msgstr "Kompresja:" > >+#: src/xz/hardware.c:272 >+msgid "Decompression:" >+msgstr "Dekompresja:" >+ >+#: src/xz/hardware.c:273 >+msgid "Multi-threaded decompression:" >+msgstr "Dekompresja wielowÄ tkowa:" >+ >+#: src/xz/hardware.c:274 >+msgid "Default for -T0:" >+msgstr "DomyÅlnie dla -T0:" >+ >+#: src/xz/hardware.c:292 >+msgid "Hardware information:" >+msgstr "Informacje o sprzÄcie:" >+ >+#: src/xz/hardware.c:299 >+msgid "Memory usage limits:" >+msgstr "Limity użycia pamiÄci" >+ >+#: src/xz/list.c:68 >+msgid "Streams:" >+msgstr "Strumienie:" >+ >+#: src/xz/list.c:69 >+msgid "Blocks:" >+msgstr "Bloki:" >+ >+#: src/xz/list.c:70 >+msgid "Compressed size:" >+msgstr "Rozmiar spakowany:" >+ >+#: src/xz/list.c:71 >+msgid "Uncompressed size:" >+msgstr "Rozmiar rozpakowany:" >+ >+#: src/xz/list.c:72 >+msgid "Ratio:" >+msgstr "WspóÅczynnik:" >+ >+#: src/xz/list.c:73 >+msgid "Check:" >+msgstr "Kontrola spójnoÅci:" >+ >+#: src/xz/list.c:74 >+msgid "Stream Padding:" >+msgstr "Wyrównanie strumienia:" >+ >+#: src/xz/list.c:75 >+msgid "Memory needed:" >+msgstr "Wymagana pamiÄÄ:" >+ >+#: src/xz/list.c:76 >+msgid "Sizes in headers:" >+msgstr "Rozmiar w nagÅówkach:" >+ >+#: src/xz/list.c:79 >+msgid "Number of files:" >+msgstr "Liczba plików:" >+ >+#: src/xz/list.c:122 >+msgid "Stream" >+msgstr "StrumieÅ" >+ >+#: src/xz/list.c:123 >+msgid "Block" >+msgstr "Blok" >+ >+#: src/xz/list.c:124 >+msgid "Blocks" >+msgstr "Bloki" >+ >+#: src/xz/list.c:125 >+msgid "CompOffset" >+msgstr "Offset spak." >+ >+#: src/xz/list.c:126 >+msgid "UncompOffset" >+msgstr "Offset rozp." >+ >+#: src/xz/list.c:127 >+msgid "CompSize" >+msgstr "Rozm.spak." >+ >+#: src/xz/list.c:128 >+msgid "UncompSize" >+msgstr "Rozm.rozp." >+ >+#: src/xz/list.c:129 >+msgid "TotalSize" >+msgstr "Rozm.caÅk." >+ >+#: src/xz/list.c:130 >+msgid "Ratio" >+msgstr "Wsp." >+ >+#: src/xz/list.c:131 >+msgid "Check" >+msgstr "Kontrola" >+ >+#: src/xz/list.c:132 >+msgid "CheckVal" >+msgstr "S.kontr." >+ >+#: src/xz/list.c:133 >+msgid "Padding" >+msgstr "Wyrównanie" >+ >+#: src/xz/list.c:134 >+msgid "Header" >+msgstr "NagÅówek" >+ >+#: src/xz/list.c:135 >+msgid "Flags" >+msgstr "Flagi" >+ >+#: src/xz/list.c:136 >+msgid "MemUsage" >+msgstr "Uż.pamiÄci" >+ >+#: src/xz/list.c:137 >+msgid "Filters" >+msgstr "Filtry" >+ > #. TRANSLATORS: Indicates that there is no integrity check. >-#. This string is used in tables, so the width must not >-#. exceed ten columns with a fixed-width font. >-#: src/xz/list.c:65 >+#. This string is used in tables. In older xz version this >+#. string was limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:169 > msgid "None" > msgstr "Brak" > > #. TRANSLATORS: Indicates that integrity check name is not known, >-#. but the Check ID is known (here 2). This and other "Unknown-N" >-#. strings are used in tables, so the width must not exceed ten >-#. columns with a fixed-width font. It's OK to omit the dash if >-#. you need space for one extra letter, but don't use spaces. >-#: src/xz/list.c:72 >+#. but the Check ID is known (here 2). In older xz version these >+#. strings were limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:175 > msgid "Unknown-2" > msgstr "Nieznany-2" > >-#: src/xz/list.c:73 >+#: src/xz/list.c:176 > msgid "Unknown-3" > msgstr "Nieznany-3" > >-#: src/xz/list.c:75 >+#: src/xz/list.c:178 > msgid "Unknown-5" > msgstr "Nieznany-5" > >-#: src/xz/list.c:76 >+#: src/xz/list.c:179 > msgid "Unknown-6" > msgstr "Nieznany-6" > >-#: src/xz/list.c:77 >+#: src/xz/list.c:180 > msgid "Unknown-7" > msgstr "Nieznany-7" > >-#: src/xz/list.c:78 >+#: src/xz/list.c:181 > msgid "Unknown-8" > msgstr "Nieznany-8" > >-#: src/xz/list.c:79 >+#: src/xz/list.c:182 > msgid "Unknown-9" > msgstr "Nieznany-9" > >-#: src/xz/list.c:81 >+#: src/xz/list.c:184 > msgid "Unknown-11" > msgstr "Nieznany11" > >-#: src/xz/list.c:82 >+#: src/xz/list.c:185 > msgid "Unknown-12" > msgstr "Nieznany12" > >-#: src/xz/list.c:83 >+#: src/xz/list.c:186 > msgid "Unknown-13" > msgstr "Nieznany13" > >-#: src/xz/list.c:84 >+#: src/xz/list.c:187 > msgid "Unknown-14" > msgstr "Nieznany14" > >-#: src/xz/list.c:85 >+#: src/xz/list.c:188 > msgid "Unknown-15" > msgstr "Nieznany15" > >-#: src/xz/list.c:153 >+#: src/xz/list.c:351 > #, c-format > msgid "%s: File is empty" > msgstr "%s: Plik jest pusty" > >-#: src/xz/list.c:158 >+#: src/xz/list.c:356 > #, c-format > msgid "%s: Too small to be a valid .xz file" > msgstr "%s: Za maÅy na poprawny plik .xz" >@@ -335,105 +481,26 @@ > #. to Ratio, the columns are right aligned. Check and Filename > #. are left aligned. If you need longer words, it's OK to > #. use two lines here. Test with "xz -l foo.xz". >-#: src/xz/list.c:677 >+#: src/xz/list.c:730 > msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" > msgstr "Strum. Bloki Spakowany Rozpakowany Wsp. Kontrola Nazwa pliku" > >-#: src/xz/list.c:717 >-#, c-format >-msgid " Streams: %s\n" >-msgstr " Strumienie: %s\n" >- >-#: src/xz/list.c:719 >-#, c-format >-msgid " Blocks: %s\n" >-msgstr " Bloki: %s\n" >- >-#: src/xz/list.c:721 >-#, c-format >-msgid " Compressed size: %s\n" >-msgstr " Rozmiar spakowany: %s\n" >- >-#: src/xz/list.c:724 >-#, c-format >-msgid " Uncompressed size: %s\n" >-msgstr " Rozmiar rozpakowany: %s\n" >- >-#: src/xz/list.c:727 >-#, c-format >-msgid " Ratio: %s\n" >-msgstr " WspóÅczynnik: %s\n" >- >-#: src/xz/list.c:729 >-#, c-format >-msgid " Check: %s\n" >-msgstr " Kontrola spójnoÅci: %s\n" >- >-#: src/xz/list.c:730 >-#, c-format >-msgid " Stream padding: %s\n" >-msgstr " Wyrównanie strumienia: %s\n" >- >-#. TRANSLATORS: The second line is column headings. All except >-#. Check are right aligned; Check is left aligned. Test with >-#. "xz -lv foo.xz". >-#: src/xz/list.c:758 >-msgid "" >-" Streams:\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >-msgstr "" >-" Strumienie:\n" >-" StrumieÅ Bloki Offset spak. Offset rozp. Rozm.spak. Rozm.rozp. Wsp. Kontrola Wyrównanie" >- >-#. TRANSLATORS: The second line is column headings. All >-#. except Check are right aligned; Check is left aligned. >-#: src/xz/list.c:813 >-#, c-format >-msgid "" >-" Blocks:\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >-msgstr "" >-" Bloki:\n" >-" StrumieÅ Blok Offset spak. Offset rozp. Rozm.caÅkowity Rozm.rozp. Wsp. Kontrola" >- >-#. TRANSLATORS: These are additional column headings >-#. for the most verbose listing mode. CheckVal >-#. (Check value), Flags, and Filters are left aligned. >-#. Header (Block Header Size), CompSize, and MemUsage >-#. are right aligned. %*s is replaced with 0-120 >-#. spaces to make the CheckVal column wide enough. >-#. Test with "xz -lvv foo.xz". >-#: src/xz/list.c:825 >-#, c-format >-msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >-msgstr " S.kontr. %*sNagÅówek Flagi Rozm. spak. Uż.pamiÄci Filtry" >- >-#: src/xz/list.c:903 src/xz/list.c:1078 >-#, c-format >-msgid " Memory needed: %s MiB\n" >-msgstr " Wymagana pamiÄÄ: %s MiB\n" >- >-#: src/xz/list.c:905 src/xz/list.c:1080 >-#, c-format >-msgid " Sizes in headers: %s\n" >-msgstr " Rozmiar w nagÅówkach: %s\n" >- >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "Yes" > msgstr "Tak" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "No" > msgstr "Nie" > >-#: src/xz/list.c:907 src/xz/list.c:1082 >+#: src/xz/list.c:1027 src/xz/list.c:1205 > #, c-format > msgid " Minimum XZ Utils version: %s\n" > msgstr " Minimalna wersja XZ Utils: %s\n" > > #. TRANSLATORS: %s is an integer. Only the plural form of this > #. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz". >-#: src/xz/list.c:1057 >+#: src/xz/list.c:1178 > #, c-format > msgid "%s file\n" > msgid_plural "%s files\n" >@@ -441,20 +508,15 @@ > msgstr[1] "%s pliki\n" > msgstr[2] "%s plików\n" > >-#: src/xz/list.c:1070 >+#: src/xz/list.c:1191 > msgid "Totals:" > msgstr "Sumarycznie:" > >-#: src/xz/list.c:1071 >-#, c-format >-msgid " Number of files: %s\n" >-msgstr " Liczba plików: %s\n" >- >-#: src/xz/list.c:1146 >+#: src/xz/list.c:1269 > msgid "--list works only on .xz files (--format=xz or --format=auto)" > msgstr "--list dziaÅa tylko z plikami .xz (--format=xz lub --format=auto)" > >-#: src/xz/list.c:1152 >+#: src/xz/list.c:1275 > msgid "--list does not support reading from standard input" > msgstr "--list nie obsÅuguje odczytu ze standardowego wejÅcia" > >@@ -473,11 +535,11 @@ > msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" > msgstr "%s: Napotkano znak NUL podczas odczytu nazw plików; może miaÅo byÄ `--files0' zamiast `--files'?" > >-#: src/xz/main.c:174 >+#: src/xz/main.c:188 > msgid "Compression and decompression with --robot are not supported yet." > msgstr "Kompresja i dekompresja z opcjÄ --robot nie jest jeszcze obsÅugiwana." > >-#: src/xz/main.c:252 >+#: src/xz/main.c:266 > msgid "Cannot read data from standard input when reading filenames from standard input" > msgstr "Nie można odczytaÄ danych ze standardowego wejÅcia przy czytaniu nazw plików ze standardowego wejÅcia" > >@@ -485,68 +547,68 @@ > #. of the line in messages. Usually it becomes "xz: ". > #. This is a translatable string because French needs > #. a space before a colon. >-#: src/xz/message.c:728 >+#: src/xz/message.c:725 > #, c-format > msgid "%s: " > msgstr "%s: " > >-#: src/xz/message.c:791 src/xz/message.c:841 >+#: src/xz/message.c:797 src/xz/message.c:856 > msgid "Internal error (bug)" > msgstr "BÅÄ d wewnÄtrzny" > >-#: src/xz/message.c:798 >+#: src/xz/message.c:804 > msgid "Cannot establish signal handlers" > msgstr "Nie można ustawiÄ obsÅugi sygnaÅów" > >-#: src/xz/message.c:807 >+#: src/xz/message.c:813 > msgid "No integrity check; not verifying file integrity" > msgstr "Brak kontroli spójnoÅci; poprawnoÅÄ plików nie bÄdzie weryfikowana" > >-#: src/xz/message.c:810 >+#: src/xz/message.c:816 > msgid "Unsupported type of integrity check; not verifying file integrity" > msgstr "NieobsÅugiwany typ kontroli spójnoÅci; poprawnoÅÄ plików nie bÄdzie weryfikowana" > >-#: src/xz/message.c:817 >+#: src/xz/message.c:823 > msgid "Memory usage limit reached" > msgstr "OsiÄ gniÄto limit użycia pamiÄci" > >-#: src/xz/message.c:820 >+#: src/xz/message.c:826 > msgid "File format not recognized" > msgstr "Nie rozpoznany format pliku" > >-#: src/xz/message.c:823 >+#: src/xz/message.c:829 > msgid "Unsupported options" > msgstr "NieobsÅugiwane opcje" > >-#: src/xz/message.c:826 >+#: src/xz/message.c:832 > msgid "Compressed data is corrupt" > msgstr "Dane skompresowane sÄ uszkodzone" > >-#: src/xz/message.c:829 >+#: src/xz/message.c:835 > msgid "Unexpected end of input" > msgstr "Nieoczekiwany koniec wejÅcia" > >-#: src/xz/message.c:862 >+#: src/xz/message.c:877 > #, c-format > msgid "%s MiB of memory is required. The limiter is disabled." > msgstr "Wymagane jest %s MiB pamiÄci. Limit jest wyÅÄ czony." > >-#: src/xz/message.c:890 >+#: src/xz/message.c:905 > #, c-format > msgid "%s MiB of memory is required. The limit is %s." > msgstr "Wymagane jest %s MiB pamiÄci. Limit to %s." > >-#: src/xz/message.c:1057 >+#: src/xz/message.c:924 > #, c-format > msgid "%s: Filter chain: %s\n" > msgstr "%s: ÅaÅcuch filtrów: %s\n" > >-#: src/xz/message.c:1067 >+#: src/xz/message.c:935 > #, c-format > msgid "Try `%s --help' for more information." > msgstr "Polecenie `%s --help' pokaże wiÄcej informacji." > >-#: src/xz/message.c:1093 >+#: src/xz/message.c:961 > #, c-format > msgid "" > "Usage: %s [OPTION]... [FILE]...\n" >@@ -557,17 +619,17 @@ > "Kompresja lub dekompresja PLIKÃW w formacie .xz.\n" > "\n" > >-#: src/xz/message.c:1100 >+#: src/xz/message.c:968 > msgid "Mandatory arguments to long options are mandatory for short options too.\n" > msgstr "" > "Argumenty obowiÄ zkowe dla opcji dÅugich sÄ obowiÄ zkowe również dla opcji\n" > "krótkich.\n" > >-#: src/xz/message.c:1104 >+#: src/xz/message.c:972 > msgid " Operation mode:\n" > msgstr " Tryb pracy:\n" > >-#: src/xz/message.c:1107 >+#: src/xz/message.c:975 > msgid "" > " -z, --compress force compression\n" > " -d, --decompress force decompression\n" >@@ -579,7 +641,7 @@ > " -t, --test sprawdzenie spójnoÅci plików skompresowanych\n" > " -l, --list wypisanie informacji o plikach .xz" > >-#: src/xz/message.c:1113 >+#: src/xz/message.c:981 > msgid "" > "\n" > " Operation modifiers:\n" >@@ -587,7 +649,7 @@ > "\n" > " Modyfikatory operacji:\n" > >-#: src/xz/message.c:1116 >+#: src/xz/message.c:984 > msgid "" > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" >@@ -597,7 +659,7 @@ > " -f, --force nadpisywanie plików wyjÅciowych i (de)kompresja dowiÄ zaÅ\n" > " -c, --stdout zapis na standardowe wyjÅcie, nieusuwanie plików wej." > >-#: src/xz/message.c:1122 >+#: src/xz/message.c:993 > msgid "" > " --single-stream decompress only the first stream, and silently\n" > " ignore possible remaining input data" >@@ -605,7 +667,7 @@ > " --single-stream dekompresja tylko pierwszego strumienia, ciche\n" > " zignorowanie pozostaÅych danych wejÅciowych" > >-#: src/xz/message.c:1125 >+#: src/xz/message.c:996 > msgid "" > " --no-sparse do not create sparse files when decompressing\n" > " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" >@@ -621,7 +683,7 @@ > " wejÅcia; muszÄ byÄ zakoÅczone znakiem nowej linii\n" > " --files0[=PLIK] podobnie do --files, ale znakiem koÅczÄ cym musi byÄ NUL" > >-#: src/xz/message.c:1134 >+#: src/xz/message.c:1005 > msgid "" > "\n" > " Basic file format and compression options:\n" >@@ -629,23 +691,23 @@ > "\n" > " Podstawowe opcje formatu pliku i kompresji:\n" > >-#: src/xz/message.c:1136 >+#: src/xz/message.c:1007 > msgid "" > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'" > msgstr "" > " -F, --format=FORM format pliki do kodowania lub dekodowania; możliwe to\n" >-" `auto' (domyÅlny), `xz', 'lzma' i `raw'\n" >+" `auto' (domyÅlny), `xz', 'lzma', `lzip' i `raw'\n" > " -C, --check=TEST typ kontroli spójnoÅci: `none' (ostrożnie!),\n" > " `crc32', `crc64' (domyÅlny) lub `sha256'" > >-#: src/xz/message.c:1141 >+#: src/xz/message.c:1012 > msgid " --ignore-check don't verify the integrity check when decompressing" > msgstr " --ignore-check bez kontroli sprawdzania integralnoÅci przy dekompresji" > >-#: src/xz/message.c:1145 >+#: src/xz/message.c:1016 > msgid "" > " -0 ... -9 compression preset; default is 6; take compressor *and*\n" > " decompressor memory usage into account before using 7-9!" >@@ -654,7 +716,7 @@ > " użyciem wartoÅci 7-9 należy wziÄ Ä pod uwagÄ wykorzystanie\n" > " pamiÄci przy kompresji *oraz* dekompresji!" > >-#: src/xz/message.c:1149 >+#: src/xz/message.c:1020 > msgid "" > " -e, --extreme try to improve compression ratio by using more CPU time;\n" > " does not affect decompressor memory requirements" >@@ -663,7 +725,7 @@ > " iloÅci czasu procesora; nie wpÅywa na wymagania\n" > " pamiÄciowe dekompresora" > >-#: src/xz/message.c:1153 >+#: src/xz/message.c:1024 > msgid "" > " -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" > " to use as many threads as there are processor cores" >@@ -671,7 +733,7 @@ > " -T, --threads=ILE użycie maksymalnie ILU wÄ tków; domyÅlnie 1; 0 oznacza\n" > " tyle, ile jest rdzeni procesorów" > >-#: src/xz/message.c:1158 >+#: src/xz/message.c:1029 > msgid "" > " --block-size=SIZE\n" > " start a new .xz block after every SIZE bytes of input;\n" >@@ -682,7 +744,7 @@ > " opcja sÅuży do ustawienia rozmiaru bloku dla kompresji\n" > " wielowÄ tkowej" > >-#: src/xz/message.c:1162 >+#: src/xz/message.c:1033 > msgid "" > " --block-list=SIZES\n" > " start a new .xz block after the given comma-separated\n" >@@ -692,7 +754,7 @@ > " rozpoczÄcie nowego bloku .xz po rozdzielonych przecinkiem\n" > " przedziaÅach danych nieskompresowanych" > >-#: src/xz/message.c:1166 >+#: src/xz/message.c:1037 > msgid "" > " --flush-timeout=TIMEOUT\n" > " when compressing, if more than TIMEOUT milliseconds has\n" >@@ -704,23 +766,26 @@ > " ostatniegu zapisu bloku, a odczyt kolejnych danych byÅby\n" > " blokujÄ cy, wszystkie gotowe dane sÄ zapisywane" > >-#: src/xz/message.c:1172 >+#: src/xz/message.c:1043 > #, no-c-format > msgid "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults" > msgstr "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " ustawienie limitu użycia pamiÄci dla kompresji,\n" >-" dekompresji lub obu; LIMIT jest w bajtach, % RAM lub 0\n" >-" dla limitów domyÅlnych" >+" dekompresji, dekompresji wielowÄ tkowej lub wszystkich;\n" >+" LIMIT jest w bajtach, % RAM lub 0 dla limitów domyÅlnych" > >-#: src/xz/message.c:1179 >+#: src/xz/message.c:1052 > msgid "" > " --no-adjust if compression settings exceed the memory usage limit,\n" > " give an error instead of adjusting the settings downwards" >@@ -729,7 +794,7 @@ > " pamiÄci, zostanie zgÅoszony bÅÄ d zamiast zmniejszania\n" > " ustawieÅ" > >-#: src/xz/message.c:1185 >+#: src/xz/message.c:1058 > msgid "" > "\n" > " Custom filter chain for compression (alternative for using presets):" >@@ -737,7 +802,7 @@ > "\n" > " ÅaÅcuch wÅasnych filtrów do kompresji (alternatywa do używania -0 .. -9):" > >-#: src/xz/message.c:1194 >+#: src/xz/message.c:1067 > msgid "" > "\n" > " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" >@@ -766,29 +831,31 @@ > " mf=NAZWA dopasowywacz (hc3, hc4, bt2, bt3, bt4; bt4)\n" > " depth=ILE maks. gÅÄbokoÅÄ szukania; 0=auto (domyÅlne)" > >-#: src/xz/message.c:1209 >+#: src/xz/message.c:1082 > msgid "" > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)" > msgstr "" > "\n" > " --x86[=OPCJE] Filtr BCJ x86 (32-bitowy lub 64-bitowy)\n" >+" --arm[=OPCJE] Filtr BCJ ARM\n" >+" --armthumb[=OPCJE] Filtr BCJ ARM-Thumb\n" >+" --arm64[=OPCJE] Filtr BCJ ARM64\n" > " --powerpc[=OPCJE] Filtr BCJ PowerPC (tylko big-endian)\n" > " --ia64[=OPCJE] Filtr BCJ IA-64 (Itanium)\n" >-" --arm[=OPCJE] Filtr BCJ ARM (tylko little-endian)\n" >-" --armthumb[=OPCJE] Filtr BCJ ARM-Thumb (tylko little-endian)\n" > " --sparc[=OPCJE] Filtr BCJ SPARC\n" > " Poprawne OPCJE dla wszystkich filtrów BCJ:\n" > " start=ILE offset poczÄ tku konwersji (domyÅlnie=0)" > >-#: src/xz/message.c:1221 >+#: src/xz/message.c:1095 > msgid "" > "\n" > " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" >@@ -800,7 +867,7 @@ > " dist=ILE odlegÅoÅÄ miÄdzy bajtami odejmowanymi od\n" > " siebie (1-256; 1)" > >-#: src/xz/message.c:1229 >+#: src/xz/message.c:1103 > msgid "" > "\n" > " Other options:\n" >@@ -808,7 +875,7 @@ > "\n" > " Inne opcje:\n" > >-#: src/xz/message.c:1232 >+#: src/xz/message.c:1106 > msgid "" > " -q, --quiet suppress warnings; specify twice to suppress errors too\n" > " -v, --verbose be verbose; specify twice for even more verbose" >@@ -816,15 +883,15 @@ > " -q, --quiet pominiÄcie ostrzeżeÅ; dwukrotne podanie pomija też bÅÄdy\n" > " -v, --verbose wiÄcej informacji; dwukrotne podanie to jeszcze wiÄcej" > >-#: src/xz/message.c:1237 >+#: src/xz/message.c:1111 > msgid " -Q, --no-warn make warnings not affect the exit status" > msgstr " -Q, --no-warn ostrzeżenia nie majÄ wpÅywu na status zakoÅczenia" > >-#: src/xz/message.c:1239 >+#: src/xz/message.c:1113 > msgid " --robot use machine-parsable messages (useful for scripts)" > msgstr " --robot komunikaty w formacie dla maszyny (do skryptów)" > >-#: src/xz/message.c:1242 >+#: src/xz/message.c:1116 > msgid "" > " --info-memory display the total amount of RAM and the currently active\n" > " memory usage limits, and exit" >@@ -832,7 +899,7 @@ > " --info-memory wyÅwietlenie caÅkowitej iloÅci pamiÄci RAM oraz aktualnie\n" > " aktywnych limitów pamiÄci i zakoÅczenie pracy" > >-#: src/xz/message.c:1245 >+#: src/xz/message.c:1119 > msgid "" > " -h, --help display the short help (lists only the basic options)\n" > " -H, --long-help display this long help and exit" >@@ -840,7 +907,7 @@ > " -h, --help wyÅwietlenie krótkiego opisu (tylko podstawowe opcje)\n" > " -H, --long-help wyÅwietlenie tego dÅugiego opisu i zakoÅczenie" > >-#: src/xz/message.c:1249 >+#: src/xz/message.c:1123 > msgid "" > " -h, --help display this short help and exit\n" > " -H, --long-help display the long help (lists also the advanced options)" >@@ -848,11 +915,11 @@ > " -h, --help wyÅwietlenie tego krótkiego opisu i zakoÅczenie\n" > " -H, --long-help wyÅwietlenie dÅugiego opisu (także opcje zaawansowane)" > >-#: src/xz/message.c:1254 >+#: src/xz/message.c:1128 > msgid " -V, --version display the version number and exit" > msgstr " -V, --version wyÅwietlenie informacji o wersji i zakoÅczenie" > >-#: src/xz/message.c:1256 >+#: src/xz/message.c:1130 > msgid "" > "\n" > "With no FILE, or when FILE is -, read standard input.\n" >@@ -864,7 +931,7 @@ > #. for this package. Please add _another line_ saying > #. "Report translation bugs to <...>\n" with the email or WWW > #. address for translation bugs. Thanks. >-#: src/xz/message.c:1262 >+#: src/xz/message.c:1136 > #, c-format > msgid "Report bugs to <%s> (in English or Finnish).\n" > msgstr "" >@@ -873,12 +940,12 @@ > "BÅÄdy w tÅumaczeniu prosimy zgÅaszaÄ na adres\n" > "<translation-team-pl@lists.sourceforge.net>.\n" > >-#: src/xz/message.c:1264 >+#: src/xz/message.c:1138 > #, c-format > msgid "%s home page: <%s>\n" > msgstr "Strona domowa %s: <%s>\n" > >-#: src/xz/message.c:1268 >+#: src/xz/message.c:1142 > msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." > msgstr "TA WERSJA JEST ROZWOJOWA, NIE PRZEZNACZONA DO UÅ»YTKU PRODUKCYJNEGO." > >@@ -906,27 +973,17 @@ > msgid "The sum of lc and lp must not exceed 4" > msgstr "Suma lc i lp nie może przekroczyÄ 4" > >-#: src/xz/options.c:359 >+#: src/xz/suffix.c:160 > #, c-format >-msgid "The selected match finder requires at least nice=%<PRIu32>" >-msgstr "Wybrany dopasowywacz wymaga przynajmniej nice=%<PRIu32>" >- >-#: src/xz/suffix.c:133 src/xz/suffix.c:258 >-#, c-format >-msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >-msgstr "%s: Przy --format=raw i zapisie do pliku wymagana jest opcja --suffix=.ROZ" >- >-#: src/xz/suffix.c:164 >-#, c-format > msgid "%s: Filename has an unknown suffix, skipping" > msgstr "%s: Nazwa pliku ma nieznane rozszerzenie, pominiÄto" > >-#: src/xz/suffix.c:185 >+#: src/xz/suffix.c:181 > #, c-format > msgid "%s: File already has `%s' suffix, skipping" > msgstr "%s: Plik już ma rozszerzenie `%s', pominiÄto" > >-#: src/xz/suffix.c:393 >+#: src/xz/suffix.c:388 > #, c-format > msgid "%s: Invalid filename suffix" > msgstr "%s: BÅÄdne rozszerzenie nazwy pliku" >@@ -950,15 +1007,11 @@ > msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]" > msgstr "WartoÅÄ opcji `%s' musi byÄ w przedziale [%<PRIu64>, %<PRIu64>]" > >-#: src/xz/util.c:267 >-msgid "Empty filename, skipping" >-msgstr "Pusta nazwa pliku, pominiÄto" >- >-#: src/xz/util.c:281 >+#: src/xz/util.c:269 > msgid "Compressed data cannot be read from a terminal" > msgstr "Dane skompresowane nie mogÄ byÄ czytane z terminala" > >-#: src/xz/util.c:294 >+#: src/xz/util.c:282 > msgid "Compressed data cannot be written to a terminal" > msgstr "Dane skompresowane nie mogÄ byÄ zapisywane na terminal" > >@@ -970,8 +1023,6 @@ > msgid "Unknown error" > msgstr "Nieznany bÅÄ d" > >-#~ msgid "Sandbox is disabled due to incompatible command line arguments" >-#~ msgstr "Piaskownica jest wyÅÄ czona ze wzglÄdu na niezgodne opcje linii poleceÅ" >- >-#~ msgid "Sandbox was successfully enabled" >-#~ msgstr "Piaskownica zostaÅa wÅÄ czona" >+#, c-format >+#~ msgid "The selected match finder requires at least nice=%<PRIu32>" >+#~ msgstr "Wybrany dopasowywacz wymaga przynajmniej nice=%<PRIu32>" >Only in xz-5.4.3/po: pt.gmo >Only in xz-5.4.3/po: pt.po >Binary files xz-5.2.5/po/pt_BR.gmo and xz-5.4.3/po/pt_BR.gmo differ >diff -ur xz-5.2.5/po/pt_BR.po xz-5.4.3/po/pt_BR.po >--- xz-5.2.5/po/pt_BR.po 2020-03-17 17:29:58 >+++ xz-5.4.3/po/pt_BR.po 2023-05-04 17:32:20 >@@ -1,13 +1,14 @@ > # Brazilian Portuguese translations for xz package > # Traduções em português brasileiro para o pacote xz. > # This file is put in the public domain. >-# Rafael Fontenelle <rafaelff@gnome.org>, 2019. >+# Rafael Fontenelle <rafaelff@gnome.org>, 2019-2023. >+# > msgid "" > msgstr "" >-"Project-Id-Version: xz 5.2.4\n" >-"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >-"PO-Revision-Date: 2019-03-05 20:30-0200\n" >+"Project-Id-Version: xz 5.4.0-pre2\n" >+"Report-Msgid-Bugs-To: xz@tukaani.org\n" >+"POT-Creation-Date: 2023-05-04 22:32+0800\n" >+"PO-Revision-Date: 2023-01-12 14:40-0300\n" > "Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n" > "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n" > "Language: pt_BR\n" >@@ -15,103 +16,123 @@ > "Content-Type: text/plain; charset=UTF-8\n" > "Content-Transfer-Encoding: 8bit\n" > "X-Bugs: Report translation errors to the Language-Team address.\n" >-"Plural-Forms: nplurals=2; plural=(n > 1);\n" >-"X-Generator: Virtaal 1.0.0-beta1\n" >+"Plural-Forms: nplurals=2; plural=(n > 1)\n" >+"X-Generator: Gtranslator 42.0\n" > >-#: src/xz/args.c:63 >+#: src/xz/args.c:77 > #, c-format > msgid "%s: Invalid argument to --block-list" > msgstr "%s: Argumento inválido para --block-list" > >-#: src/xz/args.c:73 >+#: src/xz/args.c:87 > #, c-format > msgid "%s: Too many arguments to --block-list" > msgstr "%s: Argumentos demais para --block-list" > >-#: src/xz/args.c:102 >+#: src/xz/args.c:116 > msgid "0 can only be used as the last element in --block-list" > msgstr "0 só pode ser usado como o último elemento em --block-list" > >-#: src/xz/args.c:406 >+#: src/xz/args.c:451 > #, c-format > msgid "%s: Unknown file format type" > msgstr "%s: Tipo de formato de arquivo desconhecido" > >-#: src/xz/args.c:429 src/xz/args.c:437 >+#: src/xz/args.c:474 src/xz/args.c:482 > #, c-format > msgid "%s: Unsupported integrity check type" > msgstr "%s: Tipo de verificação de integridade sem suporte" > >-#: src/xz/args.c:473 >+#: src/xz/args.c:518 > msgid "Only one file can be specified with `--files' or `--files0'." > msgstr "Somente um arquivo pode ser especificado com \"--files\" ou \"--files0\"." > >-#: src/xz/args.c:541 >+#: src/xz/args.c:586 > #, c-format > msgid "The environment variable %s contains too many arguments" > msgstr "A variável de ambiente %s contém argumentos demais" > >-#: src/xz/args.c:643 >+#: src/xz/args.c:688 > msgid "Compression support was disabled at build time" > msgstr "Suporte a compressão foi desabilitado em tempo de compilação" > >-#: src/xz/args.c:650 >+#: src/xz/args.c:695 > msgid "Decompression support was disabled at build time" > msgstr "Suporte a descompressão foi desabilitado em tempo de compilação" > >-#: src/xz/coder.c:110 >+#: src/xz/args.c:701 >+msgid "Compression of lzip files (.lz) is not supported" >+msgstr "A compactação de arquivos lzip (.lz) não é suportada" >+ >+#: src/xz/args.c:732 >+#, fuzzy >+#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgstr "%s: Com --format=raw, --suffix=.SUF é exigido, a menos que esteja escrevendo para stdout" >+ >+#: src/xz/coder.c:115 > msgid "Maximum number of filters is four" > msgstr "O número máximo de filtros é quatro" > >-#: src/xz/coder.c:129 >+#: src/xz/coder.c:134 > msgid "Memory usage limit is too low for the given filter setup." > msgstr "O limite de uso de memória é baixo demais para a configuração de filtro dada." > >-#: src/xz/coder.c:159 >+#: src/xz/coder.c:169 > msgid "Using a preset in raw mode is discouraged." > msgstr "O uso de uma predefinição em modo bruto é desencorajado." > >-#: src/xz/coder.c:161 >+#: src/xz/coder.c:171 > msgid "The exact options of the presets may vary between software versions." > msgstr "As opções exatas de predefinições podem variar entre versões do software." > >-#: src/xz/coder.c:184 >+#: src/xz/coder.c:194 > msgid "The .lzma format supports only the LZMA1 filter" > msgstr "O formato .lzma possui suporte apenas ao filtro LZMA1" > >-#: src/xz/coder.c:192 >+#: src/xz/coder.c:202 > msgid "LZMA1 cannot be used with the .xz format" > msgstr "LZMA1 não pode ser usado com o formato .xz" > >-#: src/xz/coder.c:209 >+#: src/xz/coder.c:219 > msgid "The filter chain is incompatible with --flush-timeout" > msgstr "A cadeia de filtros é incompatÃvel com --flush-timeout" > >-#: src/xz/coder.c:215 >+#: src/xz/coder.c:225 > msgid "Switching to single-threaded mode due to --flush-timeout" > msgstr "Alternando para o modo de thread única por causa de --flush-timeout" > >-#: src/xz/coder.c:235 >+#: src/xz/coder.c:249 > #, c-format > msgid "Using up to %<PRIu32> threads." > msgstr "Usando até %<PRIu32> threads." > >-#: src/xz/coder.c:251 >+#: src/xz/coder.c:265 > msgid "Unsupported filter chain or filter options" > msgstr "Opções de filtro ou cadeia de filtros sem suporte" > >-#: src/xz/coder.c:263 >+#: src/xz/coder.c:277 > #, c-format > msgid "Decompression will need %s MiB of memory." > msgstr "A descompressão precisará de %s MiB de memória." > >-#: src/xz/coder.c:300 >+#: src/xz/coder.c:309 > #, c-format >-msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >-msgstr "Ajustado o número de threads de %s de %s para não exceder o limite de uso de memória de %s MiB" >+msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgstr "Reduzido o número de threads de %s para %s para não exceder o limite de uso de memória de %s MiB" > >-#: src/xz/coder.c:354 >+#: src/xz/coder.c:329 > #, c-format >+msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway." >+msgstr "Reduzido o número de threads de %s para um. O limite de uso de memória automática de %s MiB ainda está sendo excedido. %s MiB de memória é necessário. Continuando de qualquer maneira." >+ >+#: src/xz/coder.c:356 >+#, c-format >+msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB" >+msgstr "Alternando para o modo de thread única para não exceder o limite de uso de memória de %s MiB" >+ >+#: src/xz/coder.c:411 >+#, c-format > msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" > msgstr "Ajustado o tamanho de dicionário de LZMA%c de %s MiB para %s MiB para não exceder o limite de uso de memória de %s MiB" > >@@ -120,11 +141,11 @@ > msgid "Error creating a pipe: %s" > msgstr "Erro ao criar um pipe: %s" > >-#: src/xz/file_io.c:224 >+#: src/xz/file_io.c:252 > msgid "Failed to enable the sandbox" > msgstr "Falha ao habilitar o sandbox" > >-#: src/xz/file_io.c:266 >+#: src/xz/file_io.c:294 > #, c-format > msgid "%s: poll() failed: %s" > msgstr "%s: poll() falhou: %s" >@@ -139,209 +160,332 @@ > #. it is possible that the user has put a new file in place > #. of the original file, and in that case it obviously > #. shouldn't be removed. >-#: src/xz/file_io.c:333 >+#: src/xz/file_io.c:361 > #, c-format > msgid "%s: File seems to have been moved, not removing" > msgstr "%s: O arquivo parece ter sido movido, não será removido" > >-#: src/xz/file_io.c:340 src/xz/file_io.c:882 >+#: src/xz/file_io.c:368 src/xz/file_io.c:924 > #, c-format > msgid "%s: Cannot remove: %s" > msgstr "%s: Não foi possÃvel remover: %s" > >-#: src/xz/file_io.c:366 >+#: src/xz/file_io.c:394 > #, c-format > msgid "%s: Cannot set the file owner: %s" > msgstr "%s: Não foi possÃvel definir o dono do arquivo: %s" > >-#: src/xz/file_io.c:372 >+#: src/xz/file_io.c:407 > #, c-format > msgid "%s: Cannot set the file group: %s" > msgstr "%s: Não foi possÃvel definir o grupo do arquivo: %s" > >-#: src/xz/file_io.c:391 >+#: src/xz/file_io.c:426 > #, c-format > msgid "%s: Cannot set the file permissions: %s" > msgstr "%s: Não foi possÃvel definir as permissões do arquivo: %s" > >-#: src/xz/file_io.c:517 >+#: src/xz/file_io.c:552 > #, c-format > msgid "Error getting the file status flags from standard input: %s" > msgstr "Erro ao obter os sinalizadores de status da entrada padrão: %s" > >-#: src/xz/file_io.c:574 src/xz/file_io.c:636 >+#: src/xz/file_io.c:610 src/xz/file_io.c:672 > #, c-format > msgid "%s: Is a symbolic link, skipping" > msgstr "%s: à um link simbólico, ignorando" > >-#: src/xz/file_io.c:665 >+#: src/xz/file_io.c:701 > #, c-format > msgid "%s: Is a directory, skipping" > msgstr "%s: à um diretório, ignorando" > >-#: src/xz/file_io.c:671 >+#: src/xz/file_io.c:707 > #, c-format > msgid "%s: Not a regular file, skipping" > msgstr "%s: Não é um arquivo comum, ignorando" > >-#: src/xz/file_io.c:688 >+#: src/xz/file_io.c:724 > #, c-format > msgid "%s: File has setuid or setgid bit set, skipping" > msgstr "%s: O arquivo possui o bit setuid ou setgid definido, ignorando" > >-#: src/xz/file_io.c:695 >+#: src/xz/file_io.c:731 > #, c-format > msgid "%s: File has sticky bit set, skipping" > msgstr "%s: O arquivo possui o bit sticky definido, ignorando" > >-#: src/xz/file_io.c:702 >+#: src/xz/file_io.c:738 > #, c-format > msgid "%s: Input file has more than one hard link, skipping" >-msgstr "%s: O arquivo de entrada possui mais de um link absoluto, ignorando" >+msgstr "%s: O arquivo de entrada possui mais de um link fÃsico, ignorando" > >-#: src/xz/file_io.c:792 >+#: src/xz/file_io.c:780 >+msgid "Empty filename, skipping" >+msgstr "Nome de arquivo vazio, ignorando" >+ >+#: src/xz/file_io.c:834 > #, c-format > msgid "Error restoring the status flags to standard input: %s" > msgstr "Erro ao restaurar os sinalizadores de status para entrada padrão: %s" > >-#: src/xz/file_io.c:840 >+#: src/xz/file_io.c:882 > #, c-format > msgid "Error getting the file status flags from standard output: %s" > msgstr "Erro ao obter os sinalizadores de status de arquivo da saÃda padrão: %s" > >-#: src/xz/file_io.c:1018 >+#: src/xz/file_io.c:1060 > #, c-format > msgid "Error restoring the O_APPEND flag to standard output: %s" > msgstr "Erro ao restaurar o sinalizador O_APPEND para a saÃda padrão: %s" > >-#: src/xz/file_io.c:1030 >+#: src/xz/file_io.c:1072 > #, c-format > msgid "%s: Closing the file failed: %s" > msgstr "%s: Fechamento do arquivo falhou: %s" > >-#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 >+#: src/xz/file_io.c:1108 src/xz/file_io.c:1371 > #, c-format > msgid "%s: Seeking failed when trying to create a sparse file: %s" > msgstr "%s: Busca falhou ao tentar criar um arquivo esparso: %s" > >-#: src/xz/file_io.c:1167 >+#: src/xz/file_io.c:1209 > #, c-format > msgid "%s: Read error: %s" > msgstr "%s: Erro de leitura: %s" > >-#: src/xz/file_io.c:1191 >+#: src/xz/file_io.c:1239 > #, c-format > msgid "%s: Error seeking the file: %s" > msgstr "%s: Erro ao buscar o arquivo: %s" > >-#: src/xz/file_io.c:1201 >+#: src/xz/file_io.c:1263 > #, c-format > msgid "%s: Unexpected end of file" > msgstr "%s: Fim de arquivo inesperado" > >-#: src/xz/file_io.c:1260 >+#: src/xz/file_io.c:1322 > #, c-format > msgid "%s: Write error: %s" > msgstr "%s: Erro de escrita: %s" > >-#: src/xz/hardware.c:137 >+#: src/xz/hardware.c:238 > msgid "Disabled" > msgstr "Desabilitado" > >-# Espaços adicionados para manter alinhamento com mensagens adjacentes -- Rafael >-#. TRANSLATORS: Test with "xz --info-memory" to see if >-#. the alignment looks nice. >-#: src/xz/hardware.c:156 >-msgid "Total amount of physical memory (RAM): " >-msgstr "Quantidade total de memória fÃsica (RAM): " >+#: src/xz/hardware.c:269 >+msgid "Amount of physical memory (RAM):" >+msgstr "Quantidade total de memória fÃsica (RAM):" > >-# Espaços adicionados para manter alinhamento com mensagens adjacentes -- Rafael >-#: src/xz/hardware.c:158 >-msgid "Memory usage limit for compression: " >-msgstr "Limite de uso de memória para compressão: " >+#: src/xz/hardware.c:270 >+msgid "Number of processor threads:" >+msgstr "Número de threads de processador:" > >-# Espaços reduzidos para manter alinhamento com mensagens adjacentes -- Rafael >-#: src/xz/hardware.c:160 >-msgid "Memory usage limit for decompression: " >-msgstr "Limite de uso de memória para descompressão: " >+#: src/xz/hardware.c:271 >+msgid "Compression:" >+msgstr "Compactação:" > >+#: src/xz/hardware.c:272 >+msgid "Decompression:" >+msgstr "Descompactação:" >+ >+#: src/xz/hardware.c:273 >+msgid "Multi-threaded decompression:" >+msgstr "Descompactação com várias threads:" >+ >+#: src/xz/hardware.c:274 >+msgid "Default for -T0:" >+msgstr "Padrão para -T0:" >+ >+#: src/xz/hardware.c:292 >+msgid "Hardware information:" >+msgstr "Informações de hardware:" >+ >+#: src/xz/hardware.c:299 >+msgid "Memory usage limits:" >+msgstr "Memory usage limits:" >+ >+#: src/xz/list.c:68 >+msgid "Streams:" >+msgstr "Fluxos:" >+ >+#: src/xz/list.c:69 >+msgid "Blocks:" >+msgstr "Blocos:" >+ >+#: src/xz/list.c:70 >+msgid "Compressed size:" >+msgstr "Tamanho compactado:" >+ >+#: src/xz/list.c:71 >+msgid "Uncompressed size:" >+msgstr "Tamanho não compactado:" >+ >+#: src/xz/list.c:72 >+msgid "Ratio:" >+msgstr "Proporção:" >+ >+#: src/xz/list.c:73 >+msgid "Check:" >+msgstr "Verificação:" >+ >+#: src/xz/list.c:74 >+msgid "Stream Padding:" >+msgstr "Ajuste do fluxo:" >+ >+#: src/xz/list.c:75 >+msgid "Memory needed:" >+msgstr "Memória exigida:" >+ >+#: src/xz/list.c:76 >+msgid "Sizes in headers:" >+msgstr "Tamanhos nos cabeçalhos:" >+ >+#: src/xz/list.c:79 >+msgid "Number of files:" >+msgstr "Número de arquivos:" >+ >+#: src/xz/list.c:122 >+msgid "Stream" >+msgstr "Fluxo" >+ >+#: src/xz/list.c:123 >+msgid "Block" >+msgstr "Bloco" >+ >+#: src/xz/list.c:124 >+msgid "Blocks" >+msgstr "Blocos" >+ >+#: src/xz/list.c:125 >+msgid "CompOffset" >+msgstr "DeslocComp" >+ >+#: src/xz/list.c:126 >+msgid "UncompOffset" >+msgstr "DeslocDescomp" >+ >+#: src/xz/list.c:127 >+msgid "CompSize" >+msgstr "TamComp" >+ >+#: src/xz/list.c:128 >+msgid "UncompSize" >+msgstr "TamDescomp" >+ >+#: src/xz/list.c:129 >+msgid "TotalSize" >+msgstr "TamTotal" >+ >+#: src/xz/list.c:130 >+msgid "Ratio" >+msgstr "Proporção" >+ >+#: src/xz/list.c:131 >+msgid "Check" >+msgstr "Verificação" >+ >+#: src/xz/list.c:132 >+msgid "CheckVal" >+msgstr "ValorVerific." >+ >+#: src/xz/list.c:133 >+msgid "Padding" >+msgstr "Preench." >+ >+#: src/xz/list.c:134 >+msgid "Header" >+msgstr "Cabeçalho" >+ >+#: src/xz/list.c:135 >+msgid "Flags" >+msgstr "Sinalizadores" >+ >+#: src/xz/list.c:136 >+msgid "MemUsage" >+msgstr "UsoMem" >+ >+#: src/xz/list.c:137 >+msgid "Filters" >+msgstr "Filtros" >+ > #. TRANSLATORS: Indicates that there is no integrity check. >-#. This string is used in tables, so the width must not >-#. exceed ten columns with a fixed-width font. >-#: src/xz/list.c:65 >+#. This string is used in tables. In older xz version this >+#. string was limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:169 > msgid "None" > msgstr "Nenhuma" > > #. TRANSLATORS: Indicates that integrity check name is not known, >-#. but the Check ID is known (here 2). This and other "Unknown-N" >-#. strings are used in tables, so the width must not exceed ten >-#. columns with a fixed-width font. It's OK to omit the dash if >-#. you need space for one extra letter, but don't use spaces. >-#: src/xz/list.c:72 >+#. but the Check ID is known (here 2). In older xz version these >+#. strings were limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:175 > msgid "Unknown-2" > msgstr "Incógnito2" > > # Não exceder 10 caracteres e espaços não são permitidos -- Rafael >-#: src/xz/list.c:73 >+#: src/xz/list.c:176 > msgid "Unknown-3" > msgstr "Incógnito3" > > # Não exceder 10 caracteres e espaços não são permitidos -- Rafael >-#: src/xz/list.c:75 >+#: src/xz/list.c:178 > msgid "Unknown-5" > msgstr "Incógnito5" > > # Não exceder 10 caracteres e espaços não são permitidos -- Rafael >-#: src/xz/list.c:76 >+#: src/xz/list.c:179 > msgid "Unknown-6" > msgstr "Incógnito6" > > # Não exceder 10 caracteres e espaços não são permitidos -- Rafael >-#: src/xz/list.c:77 >+#: src/xz/list.c:180 > msgid "Unknown-7" > msgstr "Incógnito7" > > # Não exceder 10 caracteres e espaços não são permitidos -- Rafael >-#: src/xz/list.c:78 >+#: src/xz/list.c:181 > msgid "Unknown-8" > msgstr "Incógnito8" > > # Não exceder 10 caracteres e espaços não são permitidos -- Rafael >-#: src/xz/list.c:79 >+#: src/xz/list.c:182 > msgid "Unknown-9" > msgstr "Incógnito9" > > # Não exceder 10 caracteres e espaços não são permitidos -- Rafael >-#: src/xz/list.c:81 >+#: src/xz/list.c:184 > msgid "Unknown-11" > msgstr "Incógnito11" > > # Não exceder 10 caracteres e espaços não são permitidos -- Rafael >-#: src/xz/list.c:82 >+#: src/xz/list.c:185 > msgid "Unknown-12" > msgstr "Incógnito12" > > # Não exceder 10 caracteres e espaços não são permitidos -- Rafael >-#: src/xz/list.c:83 >+#: src/xz/list.c:186 > msgid "Unknown-13" > msgstr "Incógnito13" > > # Não exceder 10 caracteres e espaços não são permitidos -- Rafael >-#: src/xz/list.c:84 >+#: src/xz/list.c:187 > msgid "Unknown-14" > msgstr "Incógnito14" > > # Não exceder 10 caracteres e espaços não são permitidos -- Rafael >-#: src/xz/list.c:85 >+#: src/xz/list.c:188 > msgid "Unknown-15" > msgstr "Incógnito15" > >-#: src/xz/list.c:153 >+#: src/xz/list.c:351 > #, c-format > msgid "%s: File is empty" > msgstr "%s: O arquivo está vazio" > >-#: src/xz/list.c:158 >+#: src/xz/list.c:356 > #, c-format > msgid "%s: Too small to be a valid .xz file" > msgstr "%s: Pequeno demais para ser um arquivo .xz válido" >@@ -350,126 +494,41 @@ > #. to Ratio, the columns are right aligned. Check and Filename > #. are left aligned. If you need longer words, it's OK to > #. use two lines here. Test with "xz -l foo.xz". >-#: src/xz/list.c:677 >+#: src/xz/list.c:730 > msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" > msgstr "Fluxos Blocos Comprimido Descomprimid Propo Verif Nome de Arquivo" > >-#: src/xz/list.c:717 >-#, c-format >-msgid " Streams: %s\n" >-msgstr " Fluxos: %s\n" >- >-#: src/xz/list.c:719 >-#, c-format >-msgid " Blocks: %s\n" >-msgstr " Blocos: %s\n" >- >-#: src/xz/list.c:721 >-#, c-format >-msgid " Compressed size: %s\n" >-msgstr " Tam. comprimido: %s\n" >- >-#: src/xz/list.c:724 >-#, c-format >-msgid " Uncompressed size: %s\n" >-msgstr " Tam. descomprimido: %s\n" >- >-#: src/xz/list.c:727 >-#, c-format >-msgid " Ratio: %s\n" >-msgstr " Proporção: %s\n" >- >-#: src/xz/list.c:729 >-#, c-format >-msgid " Check: %s\n" >-msgstr " Verificação: %s\n" >- >-#: src/xz/list.c:730 >-#, c-format >-msgid " Stream padding: %s\n" >-msgstr " Ajuste do fluxo: %s\n" >- >-#. TRANSLATORS: The second line is column headings. All except >-#. Check are right aligned; Check is left aligned. Test with >-#. "xz -lv foo.xz". >-#: src/xz/list.c:758 >-msgid "" >-" Streams:\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >-msgstr "" >-" Fluxos:\n" >-" Fluxo Blocos DeslocComp DeslocDescomp TamanhoComp TamanhoDescomp Propo Verif Ajuste" >- >-#. TRANSLATORS: The second line is column headings. All >-#. except Check are right aligned; Check is left aligned. >-#: src/xz/list.c:813 >-#, c-format >-msgid "" >-" Blocks:\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >-msgstr "" >-" Blocos:\n" >-" Fluxo Bloco DeslocComp DeslocDescomp TamanhoTotal TamanhoDecomp Propo Verif" >- >-#. TRANSLATORS: These are additional column headings >-#. for the most verbose listing mode. CheckVal >-#. (Check value), Flags, and Filters are left aligned. >-#. Header (Block Header Size), CompSize, and MemUsage >-#. are right aligned. %*s is replaced with 0-120 >-#. spaces to make the CheckVal column wide enough. >-#. Test with "xz -lvv foo.xz". >-#: src/xz/list.c:825 >-#, c-format >-msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >-msgstr " ValVerif %*s Cabeç Sinaliz TamComp UsoMem Filtros" >- >-#: src/xz/list.c:903 src/xz/list.c:1078 >-#, c-format >-msgid " Memory needed: %s MiB\n" >-msgstr " Memória exigida: %s MiB\n" >- >-# Espaço adicionado para promover alinhamento, vide "xz -lvv foo.xz" >-#: src/xz/list.c:905 src/xz/list.c:1080 >-#, c-format >-msgid " Sizes in headers: %s\n" >-msgstr " Tam. cabeçalhos: %s\n" >- >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "Yes" > msgstr "Sim" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "No" > msgstr "Não" > >-#: src/xz/list.c:907 src/xz/list.c:1082 >+#: src/xz/list.c:1027 src/xz/list.c:1205 > #, c-format > msgid " Minimum XZ Utils version: %s\n" > msgstr " Versão mÃnima do XZ Utils: %s\n" > > #. TRANSLATORS: %s is an integer. Only the plural form of this > #. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz". >-#: src/xz/list.c:1057 >+#: src/xz/list.c:1178 > #, c-format > msgid "%s file\n" > msgid_plural "%s files\n" > msgstr[0] "%s arquivo\n" > msgstr[1] "%s arquivos\n" > >-#: src/xz/list.c:1070 >+#: src/xz/list.c:1191 > msgid "Totals:" > msgstr "Totais:" > >-#: src/xz/list.c:1071 >-#, c-format >-msgid " Number of files: %s\n" >-msgstr " Núm. de arquivos: %s\n" >- >-#: src/xz/list.c:1146 >+#: src/xz/list.c:1269 > msgid "--list works only on .xz files (--format=xz or --format=auto)" > msgstr "--list funciona apenas em arquivos .xz (--format=xz ou --format=auto)" > >-#: src/xz/list.c:1152 >+#: src/xz/list.c:1275 > msgid "--list does not support reading from standard input" > msgstr "--list não possui suporte a leitura da entrada padrão" > >@@ -488,11 +547,11 @@ > msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" > msgstr "%s: Caractere nulo encontrado ao ler nomes de arquivos; talvez você queria usar \"--files0\" em vez de \"--files\"?" > >-#: src/xz/main.c:174 >+#: src/xz/main.c:188 > msgid "Compression and decompression with --robot are not supported yet." > msgstr "Ainda não há suporte a compressão e descompressão com --robot." > >-#: src/xz/main.c:252 >+#: src/xz/main.c:266 > msgid "Cannot read data from standard input when reading filenames from standard input" > msgstr "Não é possÃvel ler dados da entrada padrão ao ler nomes de arquivos da entrada padrão" > >@@ -500,68 +559,68 @@ > #. of the line in messages. Usually it becomes "xz: ". > #. This is a translatable string because French needs > #. a space before a colon. >-#: src/xz/message.c:728 >+#: src/xz/message.c:725 > #, c-format > msgid "%s: " > msgstr "%s: " > >-#: src/xz/message.c:791 src/xz/message.c:841 >+#: src/xz/message.c:797 src/xz/message.c:856 > msgid "Internal error (bug)" > msgstr "Erro interno (bug)" > >-#: src/xz/message.c:798 >+#: src/xz/message.c:804 > msgid "Cannot establish signal handlers" > msgstr "Não foi possÃvel estabelecer manipuladores de sinais" > >-#: src/xz/message.c:807 >+#: src/xz/message.c:813 > msgid "No integrity check; not verifying file integrity" > msgstr "Sem verificação de integridade; não será verificada a integridade do arquivo" > >-#: src/xz/message.c:810 >+#: src/xz/message.c:816 > msgid "Unsupported type of integrity check; not verifying file integrity" > msgstr "Tipo de verificação de integridade sem suporte; não será verificada a integridade do arquivo" > >-#: src/xz/message.c:817 >+#: src/xz/message.c:823 > msgid "Memory usage limit reached" > msgstr "Limite de uso de memória alcançado" > >-#: src/xz/message.c:820 >+#: src/xz/message.c:826 > msgid "File format not recognized" > msgstr "Formato de arquivo não reconhecido" > >-#: src/xz/message.c:823 >+#: src/xz/message.c:829 > msgid "Unsupported options" > msgstr "Opções sem suporte" > >-#: src/xz/message.c:826 >+#: src/xz/message.c:832 > msgid "Compressed data is corrupt" > msgstr "Os dados comprimidos estão corrompidos" > >-#: src/xz/message.c:829 >+#: src/xz/message.c:835 > msgid "Unexpected end of input" > msgstr "Fim da entrada inesperado" > >-#: src/xz/message.c:862 >+#: src/xz/message.c:877 > #, c-format > msgid "%s MiB of memory is required. The limiter is disabled." > msgstr "%s MiB de memória é necessário. O limitador está desabilitado." > >-#: src/xz/message.c:890 >+#: src/xz/message.c:905 > #, c-format > msgid "%s MiB of memory is required. The limit is %s." > msgstr "%s MiB de memória é necessário. O limite é %s." > >-#: src/xz/message.c:1057 >+#: src/xz/message.c:924 > #, c-format > msgid "%s: Filter chain: %s\n" > msgstr "%s: Cadeia de filtros: %s\n" > >-#: src/xz/message.c:1067 >+#: src/xz/message.c:935 > #, c-format > msgid "Try `%s --help' for more information." > msgstr "Tente \"%s --help\" para mais informações." > >-#: src/xz/message.c:1093 >+#: src/xz/message.c:961 > #, c-format > msgid "" > "Usage: %s [OPTION]... [FILE]...\n" >@@ -572,15 +631,15 @@ > "Comprime e descomprime ARQUIVOs no formato .xz.\n" > "\n" > >-#: src/xz/message.c:1100 >+#: src/xz/message.c:968 > msgid "Mandatory arguments to long options are mandatory for short options too.\n" > msgstr "Argumentos obrigatórios para opções longas também o são para opções curtas.\n" > >-#: src/xz/message.c:1104 >+#: src/xz/message.c:972 > msgid " Operation mode:\n" > msgstr " Modo de operação:\n" > >-#: src/xz/message.c:1107 >+#: src/xz/message.c:975 > msgid "" > " -z, --compress force compression\n" > " -d, --decompress force decompression\n" >@@ -592,7 +651,7 @@ > " -t, --test testa a integridade do arquivo comprimido\n" > " -l, --list lista informações sobre arquivos .xz" > >-#: src/xz/message.c:1113 >+#: src/xz/message.c:981 > msgid "" > "\n" > " Operation modifiers:\n" >@@ -600,7 +659,7 @@ > "\n" > " Modificadores de opções:\n" > >-#: src/xz/message.c:1116 >+#: src/xz/message.c:984 > msgid "" > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" >@@ -612,7 +671,7 @@ > " -c, --stdout escreve a entrada padrão e não exclui os arquivos\n" > " de entrada" > >-#: src/xz/message.c:1122 >+#: src/xz/message.c:993 > msgid "" > " --single-stream decompress only the first stream, and silently\n" > " ignore possible remaining input data" >@@ -620,7 +679,7 @@ > " --single-stream descomprime apenas o primeiro fluxo, e ignora de forma\n" > " silenciosa possÃveis dados de entrada restantes" > >-#: src/xz/message.c:1125 >+#: src/xz/message.c:996 > msgid "" > " --no-sparse do not create sparse files when decompressing\n" > " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" >@@ -640,7 +699,7 @@ > " similar a --files, mas usa o caractere nulo como\n" > " terminador" > >-#: src/xz/message.c:1134 >+#: src/xz/message.c:1005 > msgid "" > "\n" > " Basic file format and compression options:\n" >@@ -648,24 +707,24 @@ > "\n" > " Opções básicas de formato de arquivo e compressão:\n" > >-#: src/xz/message.c:1136 >+#: src/xz/message.c:1007 > msgid "" > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'" > msgstr "" > " -F, --format=FMT formato de arquivo para codificar ou decodificar;\n" > " valores possÃveis são\n" >-" \"auto\" (padrão), \"xz\", \"lzma\" e \"raw\"\n" >+" \"auto\" (padrão), \"xz\", \"lzma\", \"lzip\" e \"raw\"\n" > " -C, --check=VERIF tipo de verificação de integridade: \"none\" (cuidado!),\n" > " \"crc32\", \"crc64\" (padrão) ou \"sha256\"" > >-#: src/xz/message.c:1141 >+#: src/xz/message.c:1012 > msgid " --ignore-check don't verify the integrity check when decompressing" > msgstr " --ignore-check não faz a verificação de integridade ao descomprimir" > >-#: src/xz/message.c:1145 >+#: src/xz/message.c:1016 > msgid "" > " -0 ... -9 compression preset; default is 6; take compressor *and*\n" > " decompressor memory usage into account before using 7-9!" >@@ -674,7 +733,7 @@ > " memória do compressor *e* descompressor em conta\n" > " antes de usar 7-9!" > >-#: src/xz/message.c:1149 >+#: src/xz/message.c:1020 > msgid "" > " -e, --extreme try to improve compression ratio by using more CPU time;\n" > " does not affect decompressor memory requirements" >@@ -683,7 +742,7 @@ > " tempo de CPU; não afeta os requisitos de memória do\n" > " descompressor" > >-#: src/xz/message.c:1153 >+#: src/xz/message.c:1024 > msgid "" > " -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" > " to use as many threads as there are processor cores" >@@ -692,7 +751,7 @@ > " 0 para usar o máximo de threads que há de núcleos de\n" > " processador" > >-#: src/xz/message.c:1158 >+#: src/xz/message.c:1029 > msgid "" > " --block-size=SIZE\n" > " start a new .xz block after every SIZE bytes of input;\n" >@@ -703,7 +762,7 @@ > " use isso para definido o tamanho de bloco para\n" > " compressão com threads" > >-#: src/xz/message.c:1162 >+#: src/xz/message.c:1033 > msgid "" > " --block-list=SIZES\n" > " start a new .xz block after the given comma-separated\n" >@@ -713,7 +772,7 @@ > " inicia um novo bloco .xz após os intervalos dados,\n" > " separados por vÃrgula, de dados descomprimidos" > >-#: src/xz/message.c:1166 >+#: src/xz/message.c:1037 > msgid "" > " --flush-timeout=TIMEOUT\n" > " when compressing, if more than TIMEOUT milliseconds has\n" >@@ -726,23 +785,26 @@ > " de mais entrada bloquearia, todos os dados pendentes\n" > " serão liberados" > >-#: src/xz/message.c:1172 >+#: src/xz/message.c:1043 > #, no-c-format > msgid "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults" > msgstr "" > " --memlimit-compress=LIMITE\n" > " --memlimit-decompress=LIMITE\n" >+" --memlimit-mt-decompress=LIMITE\n" > " -M, --memlimit=LIMITE\n" > " define o limite de uso de memória para compressão,\n" >-" descompressão ou ambos; LIMITE é em bytes, % de RAM\n" >-" ou 0 para padrões" >+" descompressão, compactação em threads ou todas essas;\n" >+" LIMITE é em bytes, % de RAM ou 0 para padrões" > >-#: src/xz/message.c:1179 >+#: src/xz/message.c:1052 > msgid "" > " --no-adjust if compression settings exceed the memory usage limit,\n" > " give an error instead of adjusting the settings downwards" >@@ -751,7 +813,7 @@ > " de uso de memória, fornece um erro em vez de\n" > " ajustar as configurações para baixo" > >-#: src/xz/message.c:1185 >+#: src/xz/message.c:1058 > msgid "" > "\n" > " Custom filter chain for compression (alternative for using presets):" >@@ -759,7 +821,7 @@ > "\n" > " Cadeia de filtros personalizada para compressão (alternativa à predefinição):" > >-#: src/xz/message.c:1194 >+#: src/xz/message.c:1067 > msgid "" > "\n" > " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" >@@ -789,30 +851,32 @@ > " depth=NUM máximo de profundidade de pesquisa;\n" > " 0=automatic (padrão)" > >-#: src/xz/message.c:1209 >+#: src/xz/message.c:1082 > msgid "" > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)" > msgstr "" > "\n" > " --x86[=OPÃÃES] filtro BCJ x86 (32 bits e 64 bits)\n" >+" --arm[=OPÃÃES] filtro BCJ ARM\n" >+" --armthumb[=OPÃÃES] filtro BCJ ARM-Thumb\n" >+" --arm64[=OPÃÃES] filtro BCJ ARM64\n" > " --powerpc[=OPÃÃES] filtro BCJ PowerPC (big endian apenas)\n" > " --ia64[=OPÃÃES] filtro BCJ IA-64 (Itanium)\n" >-" --arm[=OPÃÃES] filtro BCJ ARM (little endian apenas)\n" >-" --armthumb[=OPÃÃES] filtro BCJ ARM-Thumb (little endian apenas)\n" > " --sparc[=OPÃÃES] filtro BCJ SPARC\n" > " OPÃÃES válidas para todos os filtros BCJ:\n" > " start=NUM deslocamento inicial para conversões\n" >-" (default=0)" >+" (padrão=0)" > >-#: src/xz/message.c:1221 >+#: src/xz/message.c:1095 > msgid "" > "\n" > " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" >@@ -824,7 +888,7 @@ > " dist=NÃM distância entre bytes sendo subtraÃdo\n" > " de cada um (1-256; 1)" > >-#: src/xz/message.c:1229 >+#: src/xz/message.c:1103 > msgid "" > "\n" > " Other options:\n" >@@ -832,7 +896,7 @@ > "\n" > " Outras opções:\n" > >-#: src/xz/message.c:1232 >+#: src/xz/message.c:1106 > msgid "" > " -q, --quiet suppress warnings; specify twice to suppress errors too\n" > " -v, --verbose be verbose; specify twice for even more verbose" >@@ -840,15 +904,15 @@ > " -q, --quiet suprime avisos, use duas vezes para suprimir erros também\n" > " -v, --verbose ser detalhado; use duas vezes para ainda mais detalhes" > >-#: src/xz/message.c:1237 >+#: src/xz/message.c:1111 > msgid " -Q, --no-warn make warnings not affect the exit status" > msgstr " -Q, --no-warn faz os avisos não afetarem o status de saÃda" > >-#: src/xz/message.c:1239 >+#: src/xz/message.c:1113 > msgid " --robot use machine-parsable messages (useful for scripts)" > msgstr " --robot usa mensagens analisáveis por máquina (útil p/ scripts)" > >-#: src/xz/message.c:1242 >+#: src/xz/message.c:1116 > msgid "" > " --info-memory display the total amount of RAM and the currently active\n" > " memory usage limits, and exit" >@@ -856,7 +920,7 @@ > " --info-memory exibe a quantidade total de RAM e os limites de uso\n" > " de memória atualmente ativos e sai" > >-#: src/xz/message.c:1245 >+#: src/xz/message.c:1119 > msgid "" > " -h, --help display the short help (lists only the basic options)\n" > " -H, --long-help display this long help and exit" >@@ -864,7 +928,7 @@ > " -h, --help exibe a ajuda curto (lista apenas as opções básicas)\n" > " -H, --long-help exibe essa ajuda longa e sai" > >-#: src/xz/message.c:1249 >+#: src/xz/message.c:1123 > msgid "" > " -h, --help display this short help and exit\n" > " -H, --long-help display the long help (lists also the advanced options)" >@@ -872,11 +936,11 @@ > " -h, --help exibe essa ajuda curta e sai\n" > " -H, --long-help exibe a ajuda longa (lista também as opções avançadas)" > >-#: src/xz/message.c:1254 >+#: src/xz/message.c:1128 > msgid " -V, --version display the version number and exit" > msgstr " -V, --version exibe o número de versão e sai" > >-#: src/xz/message.c:1256 >+#: src/xz/message.c:1130 > msgid "" > "\n" > "With no FILE, or when FILE is -, read standard input.\n" >@@ -888,19 +952,19 @@ > #. for this package. Please add _another line_ saying > #. "Report translation bugs to <...>\n" with the email or WWW > #. address for translation bugs. Thanks. >-#: src/xz/message.c:1262 >+#: src/xz/message.c:1136 > #, c-format > msgid "Report bugs to <%s> (in English or Finnish).\n" > msgstr "" > "Relate erros para <%s> (em inglês ou finlandês).\n" > "Relate erros de tradução para <https://translationproject.org/team/pt_BR.html>.\n" > >-#: src/xz/message.c:1264 >+#: src/xz/message.c:1138 > #, c-format > msgid "%s home page: <%s>\n" > msgstr "Site do %s: <%s>\n" > >-#: src/xz/message.c:1268 >+#: src/xz/message.c:1142 > msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." > msgstr "ESSA à UMA VERSÃO DE DESENVOLVIMENTO, NÃO DESTINADA PARA USO EM PRODUÃÃO." > >@@ -928,27 +992,17 @@ > msgid "The sum of lc and lp must not exceed 4" > msgstr "A soma de lc e lp não deve exceder 4" > >-#: src/xz/options.c:359 >+#: src/xz/suffix.c:160 > #, c-format >-msgid "The selected match finder requires at least nice=%<PRIu32>" >-msgstr "O localizador de correspondência selecionado requer pelo menos nice=%<PRIu32>" >- >-#: src/xz/suffix.c:133 src/xz/suffix.c:258 >-#, c-format >-msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >-msgstr "%s: Com --format=raw, --suffix=.SUF é exigido, a menos que esteja escrevendo para stdout" >- >-#: src/xz/suffix.c:164 >-#, c-format > msgid "%s: Filename has an unknown suffix, skipping" > msgstr "%s: O nome de arquivo tem um sufixo desconhecido, ignorando" > >-#: src/xz/suffix.c:185 >+#: src/xz/suffix.c:181 > #, c-format > msgid "%s: File already has `%s' suffix, skipping" > msgstr "%s: O arquivo já tem o sufixo \"%s\", ignorando" > >-#: src/xz/suffix.c:393 >+#: src/xz/suffix.c:388 > #, c-format > msgid "%s: Invalid filename suffix" > msgstr "%s: Sufixo de nome de arquivo inválido" >@@ -972,15 +1026,11 @@ > msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]" > msgstr "O valor da opção \"%s\" deve estar no intervalo [%<PRIu64>, %<PRIu64>]" > >-#: src/xz/util.c:267 >-msgid "Empty filename, skipping" >-msgstr "Nome de arquivo vazio, ignorando" >- >-#: src/xz/util.c:281 >+#: src/xz/util.c:269 > msgid "Compressed data cannot be read from a terminal" > msgstr "Dados comprimidos não podem ser lidos de um terminal" > >-#: src/xz/util.c:294 >+#: src/xz/util.c:282 > msgid "Compressed data cannot be written to a terminal" > msgstr "Dados comprimidos não podem ser escrito para um terminal" > >@@ -997,3 +1047,39 @@ > > #~ msgid "Sandbox was successfully enabled" > #~ msgstr "Sandbox foi habilitado com sucesso" >+ >+# Espaços adicionados para manter alinhamento com mensagens adjacentes -- Rafael >+#~ msgid "Memory usage limit for compression: " >+#~ msgstr "Limite de uso de memória para compressão: " >+ >+#~ msgid " Streams: %s\n" >+#~ msgstr " Fluxos: %s\n" >+ >+#~ msgid " Blocks: %s\n" >+#~ msgstr " Blocos: %s\n" >+ >+#~ msgid " Ratio: %s\n" >+#~ msgstr " Proporção: %s\n" >+ >+#~ msgid " Check: %s\n" >+#~ msgstr " Verificação: %s\n" >+ >+#~ msgid "" >+#~ " Streams:\n" >+#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >+#~ msgstr "" >+#~ " Fluxos:\n" >+#~ " Fluxo Blocos DeslocComp DeslocDescomp TamanhoComp TamanhoDescomp Propo Verif Ajuste" >+ >+#~ msgid "" >+#~ " Blocks:\n" >+#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >+#~ msgstr "" >+#~ " Blocos:\n" >+#~ " Fluxo Bloco DeslocComp DeslocDescomp TamanhoTotal TamanhoDecomp Propo Verif" >+ >+#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >+#~ msgstr " ValVerif %*s Cabeç Sinaliz TamComp UsoMem Filtros" >+ >+#~ msgid "The selected match finder requires at least nice=%<PRIu32>" >+#~ msgstr "O localizador de correspondência selecionado requer pelo menos nice=%<PRIu32>" >Only in xz-5.4.3/po: ro.gmo >Only in xz-5.4.3/po: ro.po >Only in xz-5.4.3/po: sr.gmo >Only in xz-5.4.3/po: sr.po >Only in xz-5.4.3/po: sv.gmo >Only in xz-5.4.3/po: sv.po >Only in xz-5.4.3/po: tr.gmo >Only in xz-5.4.3/po: tr.po >Only in xz-5.4.3/po: uk.gmo >Only in xz-5.4.3/po: uk.po >Binary files xz-5.2.5/po/vi.gmo and xz-5.4.3/po/vi.gmo differ >diff -ur xz-5.2.5/po/vi.po xz-5.4.3/po/vi.po >--- xz-5.2.5/po/vi.po 2020-03-17 17:29:58 >+++ xz-5.4.3/po/vi.po 2023-05-04 17:32:21 >@@ -6,8 +6,8 @@ > msgid "" > msgstr "" > "Project-Id-Version: xz 5.1.4beta\n" >-"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >+"Report-Msgid-Bugs-To: xz@tukaani.org\n" >+"POT-Creation-Date: 2023-05-04 22:32+0800\n" > "PO-Revision-Date: 2014-09-25 09:06+0700\n" > "Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n" > "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" >@@ -18,99 +18,121 @@ > "Plural-Forms: nplurals=1; plural=0;\n" > "X-Poedit-Basepath: ../\n" > >-#: src/xz/args.c:63 >+#: src/xz/args.c:77 > #, c-format > msgid "%s: Invalid argument to --block-list" > msgstr "%s: Äá»i sá» cho --block-list không hợp lá»" > >-#: src/xz/args.c:73 >+#: src/xz/args.c:87 > #, c-format > msgid "%s: Too many arguments to --block-list" > msgstr "%s: Quá nhiá»u Äá»i sá» cho --block-list" > >-#: src/xz/args.c:102 >+#: src/xz/args.c:116 > msgid "0 can only be used as the last element in --block-list" > msgstr "0 chá» có thá» dùng nhÆ° là phần tá» cuá»i trong --block-list" > >-#: src/xz/args.c:406 >+#: src/xz/args.c:451 > #, c-format > msgid "%s: Unknown file format type" > msgstr "%s: Không hiá»u kiá»u Äá»nh dạng táºp tin" > >-#: src/xz/args.c:429 src/xz/args.c:437 >+#: src/xz/args.c:474 src/xz/args.c:482 > #, c-format > msgid "%s: Unsupported integrity check type" > msgstr "%s: Không há» trợ kiá»u kiá»m tra toà n vẹn" > >-#: src/xz/args.c:473 >+#: src/xz/args.c:518 > msgid "Only one file can be specified with `--files' or `--files0'." > msgstr "Chá» Äược ÄÆ°a ra má»t táºp tin cho â--filesâ hay â--files0â." > >-#: src/xz/args.c:541 >+#: src/xz/args.c:586 > #, c-format > msgid "The environment variable %s contains too many arguments" > msgstr "Biến môi trÆ°á»ng %s chứa quá nhiá»u Äá»i sá»" > >-#: src/xz/args.c:643 >+#: src/xz/args.c:688 > msgid "Compression support was disabled at build time" > msgstr "" > >-#: src/xz/args.c:650 >+#: src/xz/args.c:695 > msgid "Decompression support was disabled at build time" > msgstr "" > >-#: src/xz/coder.c:110 >+#: src/xz/args.c:701 >+msgid "Compression of lzip files (.lz) is not supported" >+msgstr "" >+ >+#: src/xz/args.c:732 >+#, fuzzy >+#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgstr "%s: Nếu --format=raw, --suffix=.SUF sẽ Äược yêu cầu trừ trÆ°á»ng hợp ghi ra Äầu ra tiêu chuẩn" >+ >+#: src/xz/coder.c:115 > msgid "Maximum number of filters is four" > msgstr "Sá» lượng bá» lá»c tá»i Äa là bá»n" > >-#: src/xz/coder.c:129 >+#: src/xz/coder.c:134 > msgid "Memory usage limit is too low for the given filter setup." > msgstr "Mức giá»i hạn dùng bá» nhá» là quá thấp cho viá»c cà i Äặt bá» lá»c Äã cho." > >-#: src/xz/coder.c:159 >+#: src/xz/coder.c:169 > msgid "Using a preset in raw mode is discouraged." > msgstr "Dùng hiá»n tại trong chế Äá» thô là ngá» ngẩn." > >-#: src/xz/coder.c:161 >+#: src/xz/coder.c:171 > msgid "The exact options of the presets may vary between software versions." > msgstr "Các tùy chá»n trÃch xuất của chá»nh trÆ°á»c có thá» biến Äá»i phụ thuá»c và o phiên bản." > >-#: src/xz/coder.c:184 >+#: src/xz/coder.c:194 > msgid "The .lzma format supports only the LZMA1 filter" > msgstr "Äá»nh dạng .lzma chá» há» trợ bá» lá»c LZMA1" > >-#: src/xz/coder.c:192 >+#: src/xz/coder.c:202 > msgid "LZMA1 cannot be used with the .xz format" > msgstr "LZMA1 không thá» Äược dùng vá»i Äá»nh dạng .xz" > >-#: src/xz/coder.c:209 >+#: src/xz/coder.c:219 > msgid "The filter chain is incompatible with --flush-timeout" > msgstr "Móc xÃch lá»c là không tÆ°Æ¡ng thÃch vá»i --flush-timeout" > >-#: src/xz/coder.c:215 >+#: src/xz/coder.c:225 > msgid "Switching to single-threaded mode due to --flush-timeout" > msgstr "Chuyá»n sang chế Äá» ÄÆ¡n tuyến trình bá»i vì --flush-timeout" > >-#: src/xz/coder.c:235 >+#: src/xz/coder.c:249 > #, c-format > msgid "Using up to %<PRIu32> threads." > msgstr "Dùng Äến %<PRIu32> tuyến trình." > >-#: src/xz/coder.c:251 >+#: src/xz/coder.c:265 > msgid "Unsupported filter chain or filter options" > msgstr "Không há» trợ lá»c móc xÃch hay tùy chá»n lá»c" > >-#: src/xz/coder.c:263 >+#: src/xz/coder.c:277 > #, c-format > msgid "Decompression will need %s MiB of memory." > msgstr "Giải nén sẽ cần %s MiB bá» nhá»." > >-#: src/xz/coder.c:300 >+#: src/xz/coder.c:309 >+#, fuzzy, c-format >+#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgstr "Chá»nh sá» lượng tuyến trình từ %s thà nh %s Äá» không vượt quá giá»i hạn tiêu dùng bá» nhá» là %s MiB" >+ >+#: src/xz/coder.c:329 > #, c-format >-msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway." >+msgstr "" >+ >+#: src/xz/coder.c:356 >+#, fuzzy, c-format >+#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB" > msgstr "Chá»nh sá» lượng tuyến trình từ %s thà nh %s Äá» không vượt quá giá»i hạn tiêu dùng bá» nhá» là %s MiB" > >-#: src/xz/coder.c:354 >+#: src/xz/coder.c:411 > #, c-format > msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" > msgstr "Chá»nh cỡ từ Äiá»n LZMA%c từ %s MiB thà nh %s MiB Äá» không vượt quá giá»i hạn tiêu dùng bá» nhá» là %s MiB" >@@ -120,11 +142,11 @@ > msgid "Error creating a pipe: %s" > msgstr "Gặp lá»i khi tạo má»t á»ng dẫn: %s" > >-#: src/xz/file_io.c:224 >+#: src/xz/file_io.c:252 > msgid "Failed to enable the sandbox" > msgstr "" > >-#: src/xz/file_io.c:266 >+#: src/xz/file_io.c:294 > #, c-format > msgid "%s: poll() failed: %s" > msgstr "%s: hà m poll() bá» lá»i: %s" >@@ -139,195 +161,341 @@ > #. it is possible that the user has put a new file in place > #. of the original file, and in that case it obviously > #. shouldn't be removed. >-#: src/xz/file_io.c:333 >+#: src/xz/file_io.c:361 > #, c-format > msgid "%s: File seems to have been moved, not removing" > msgstr "%s: Táºp tin có lẽ Äã bá» di chuyá»n, không phải gỡ bá»" > >-#: src/xz/file_io.c:340 src/xz/file_io.c:882 >+#: src/xz/file_io.c:368 src/xz/file_io.c:924 > #, c-format > msgid "%s: Cannot remove: %s" > msgstr "%s: Không thá» gỡ bá»: %s" > >-#: src/xz/file_io.c:366 >+#: src/xz/file_io.c:394 > #, c-format > msgid "%s: Cannot set the file owner: %s" > msgstr "%s: Không thá» Äặt chủ sá» hữu táºp tin: %s" > >-#: src/xz/file_io.c:372 >+#: src/xz/file_io.c:407 > #, c-format > msgid "%s: Cannot set the file group: %s" > msgstr "%s: Không thá» Äặt nhóm táºp tin: %s" > >-#: src/xz/file_io.c:391 >+#: src/xz/file_io.c:426 > #, c-format > msgid "%s: Cannot set the file permissions: %s" > msgstr "%s: Không thá» Äặt chế Äá» Äá»c ghi cho táºp tin: %s" > >-#: src/xz/file_io.c:517 >+#: src/xz/file_io.c:552 > #, c-format > msgid "Error getting the file status flags from standard input: %s" > msgstr "Gặp lá»i khi lấy các cá» trạng thái táºp tin từ Äầu và o tiêu chuẩn: %s" > >-#: src/xz/file_io.c:574 src/xz/file_io.c:636 >+#: src/xz/file_io.c:610 src/xz/file_io.c:672 > #, c-format > msgid "%s: Is a symbolic link, skipping" > msgstr "%s: Là má»t liên kết má»m nên bá» qua" > >-#: src/xz/file_io.c:665 >+#: src/xz/file_io.c:701 > #, c-format > msgid "%s: Is a directory, skipping" > msgstr "%s: Không phải là má»t thÆ° mục nên bá» qua" > >-#: src/xz/file_io.c:671 >+#: src/xz/file_io.c:707 > #, c-format > msgid "%s: Not a regular file, skipping" > msgstr "%s: Không phải là táºp tin thÆ°á»ng nên bá» qua" > >-#: src/xz/file_io.c:688 >+#: src/xz/file_io.c:724 > #, c-format > msgid "%s: File has setuid or setgid bit set, skipping" > msgstr "%s: Táºp tin có Äặt bÃt setuid hoặc setgid nên bá» qua" > >-#: src/xz/file_io.c:695 >+#: src/xz/file_io.c:731 > #, c-format > msgid "%s: File has sticky bit set, skipping" > msgstr "%s: Táºp tin có bÃt sticky nên bá» qua" > >-#: src/xz/file_io.c:702 >+#: src/xz/file_io.c:738 > #, c-format > msgid "%s: Input file has more than one hard link, skipping" > msgstr "%s: Táºp tin Äầu và o có nhiá»u hÆ¡n má»t liên kết cứng nên bá» qua" > >-#: src/xz/file_io.c:792 >+#: src/xz/file_io.c:780 >+msgid "Empty filename, skipping" >+msgstr "Tên táºp tin trá»ng rá»ng nên bá» qua" >+ >+#: src/xz/file_io.c:834 > #, c-format > msgid "Error restoring the status flags to standard input: %s" > msgstr "Gặp lá»i khi phục há»i các cá» trạng thái tá»i Äầu và o tiêu chuẩn: %s" > >-#: src/xz/file_io.c:840 >+#: src/xz/file_io.c:882 > #, c-format > msgid "Error getting the file status flags from standard output: %s" > msgstr "Gặp lá»i khi lấy các cá» trạng thái táºp tin từ Äầu và o tiêu chuẩn: %s" > >-#: src/xz/file_io.c:1018 >+#: src/xz/file_io.c:1060 > #, c-format > msgid "Error restoring the O_APPEND flag to standard output: %s" > msgstr "Gặp lá»i khi phục há»i cá» O_APPEND trên Äầu ra tiêu chuẩn: %s" > >-#: src/xz/file_io.c:1030 >+#: src/xz/file_io.c:1072 > #, c-format > msgid "%s: Closing the file failed: %s" > msgstr "%s: Gặp lá»i khi Äóng táºp tin: %s" > >-#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 >+#: src/xz/file_io.c:1108 src/xz/file_io.c:1371 > #, c-format > msgid "%s: Seeking failed when trying to create a sparse file: %s" > msgstr "%s: Gặp lá»i khi di chuyá»n vá» trà Äá»c khi cá» tạo má»t táºp tin rải rác: %s" > >-#: src/xz/file_io.c:1167 >+#: src/xz/file_io.c:1209 > #, c-format > msgid "%s: Read error: %s" > msgstr "%s: Lá»i Äá»c: %s" > >-#: src/xz/file_io.c:1191 >+#: src/xz/file_io.c:1239 > #, c-format > msgid "%s: Error seeking the file: %s" > msgstr "%s: Gặp lá»i khi di chuyá»n vá» trà Äá»c táºp tin: %s" > >-#: src/xz/file_io.c:1201 >+#: src/xz/file_io.c:1263 > #, c-format > msgid "%s: Unexpected end of file" > msgstr "%s: Kết thúc táºp tin bất ngá»" > >-#: src/xz/file_io.c:1260 >+#: src/xz/file_io.c:1322 > #, c-format > msgid "%s: Write error: %s" > msgstr "%s: Lá»i ghi: %s" > >-#: src/xz/hardware.c:137 >+#: src/xz/hardware.c:238 > msgid "Disabled" > msgstr "Bá» tắt" > >-#. TRANSLATORS: Test with "xz --info-memory" to see if >-#. the alignment looks nice. >-#: src/xz/hardware.c:156 >-msgid "Total amount of physical memory (RAM): " >+#: src/xz/hardware.c:269 >+#, fuzzy >+#| msgid "Total amount of physical memory (RAM): " >+msgid "Amount of physical memory (RAM):" > msgstr "Tá»ng dung lượng bá» nhá» váºt lý (RAM): " > >-#: src/xz/hardware.c:158 >-msgid "Memory usage limit for compression: " >-msgstr "Mức giá»i hạn dùng bá» nhá» cho nén: " >+#: src/xz/hardware.c:270 >+msgid "Number of processor threads:" >+msgstr "" > >-#: src/xz/hardware.c:160 >-msgid "Memory usage limit for decompression: " >+#: src/xz/hardware.c:271 >+msgid "Compression:" >+msgstr "" >+ >+#: src/xz/hardware.c:272 >+msgid "Decompression:" >+msgstr "" >+ >+#: src/xz/hardware.c:273 >+#, fuzzy >+#| msgid "Memory usage limit for decompression: " >+msgid "Multi-threaded decompression:" > msgstr "Mức giá»i hạn dùng bá» nhá» cho giải nén:" > >+#: src/xz/hardware.c:274 >+msgid "Default for -T0:" >+msgstr "" >+ >+#: src/xz/hardware.c:292 >+msgid "Hardware information:" >+msgstr "" >+ >+#: src/xz/hardware.c:299 >+#, fuzzy >+#| msgid "Memory usage limit reached" >+msgid "Memory usage limits:" >+msgstr "Äã chạm má»c giá»i hạn sá» dụng bá» nhá»" >+ >+#: src/xz/list.c:68 >+msgid "Streams:" >+msgstr "" >+ >+#: src/xz/list.c:69 >+msgid "Blocks:" >+msgstr "" >+ >+#: src/xz/list.c:70 >+#, fuzzy >+#| msgid " Compressed size: %s\n" >+msgid "Compressed size:" >+msgstr " Cỡ khi bá» nén: %s\n" >+ >+#: src/xz/list.c:71 >+#, fuzzy >+#| msgid " Uncompressed size: %s\n" >+msgid "Uncompressed size:" >+msgstr " Cỡ sau giải nén: %s\n" >+ >+#: src/xz/list.c:72 >+msgid "Ratio:" >+msgstr "" >+ >+#: src/xz/list.c:73 >+msgid "Check:" >+msgstr "" >+ >+#: src/xz/list.c:74 >+#, fuzzy >+#| msgid " Stream padding: %s\n" >+msgid "Stream Padding:" >+msgstr " Äá»m luá»ng dữ liá»u: %s\n" >+ >+#: src/xz/list.c:75 >+#, fuzzy >+#| msgid " Memory needed: %s MiB\n" >+msgid "Memory needed:" >+msgstr " Bá» nhá» cần: %s MiB\n" >+ >+#: src/xz/list.c:76 >+#, fuzzy >+#| msgid " Sizes in headers: %s\n" >+msgid "Sizes in headers:" >+msgstr " KÃch cỡ phần Äầu: %s\n" >+ >+#: src/xz/list.c:79 >+#, fuzzy >+#| msgid " Number of files: %s\n" >+msgid "Number of files:" >+msgstr " Sá» táºp tin: %s\n" >+ >+#: src/xz/list.c:122 >+msgid "Stream" >+msgstr "" >+ >+#: src/xz/list.c:123 >+msgid "Block" >+msgstr "" >+ >+#: src/xz/list.c:124 >+msgid "Blocks" >+msgstr "" >+ >+#: src/xz/list.c:125 >+msgid "CompOffset" >+msgstr "" >+ >+#: src/xz/list.c:126 >+msgid "UncompOffset" >+msgstr "" >+ >+#: src/xz/list.c:127 >+msgid "CompSize" >+msgstr "" >+ >+#: src/xz/list.c:128 >+msgid "UncompSize" >+msgstr "" >+ >+#: src/xz/list.c:129 >+#, fuzzy >+#| msgid "Totals:" >+msgid "TotalSize" >+msgstr "Tá»ng cá»ng:" >+ >+#: src/xz/list.c:130 >+msgid "Ratio" >+msgstr "" >+ >+#: src/xz/list.c:131 >+msgid "Check" >+msgstr "" >+ >+#: src/xz/list.c:132 >+msgid "CheckVal" >+msgstr "" >+ >+#: src/xz/list.c:133 >+msgid "Padding" >+msgstr "" >+ >+#: src/xz/list.c:134 >+msgid "Header" >+msgstr "" >+ >+#: src/xz/list.c:135 >+msgid "Flags" >+msgstr "" >+ >+#: src/xz/list.c:136 >+msgid "MemUsage" >+msgstr "" >+ >+#: src/xz/list.c:137 >+msgid "Filters" >+msgstr "" >+ > #. TRANSLATORS: Indicates that there is no integrity check. >-#. This string is used in tables, so the width must not >-#. exceed ten columns with a fixed-width font. >-#: src/xz/list.c:65 >+#. This string is used in tables. In older xz version this >+#. string was limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:169 > msgid "None" > msgstr "Không" > > #. TRANSLATORS: Indicates that integrity check name is not known, >-#. but the Check ID is known (here 2). This and other "Unknown-N" >-#. strings are used in tables, so the width must not exceed ten >-#. columns with a fixed-width font. It's OK to omit the dash if >-#. you need space for one extra letter, but don't use spaces. >-#: src/xz/list.c:72 >+#. but the Check ID is known (here 2). In older xz version these >+#. strings were limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:175 > msgid "Unknown-2" > msgstr "ChÆ°a_biết2" > >-#: src/xz/list.c:73 >+#: src/xz/list.c:176 > msgid "Unknown-3" > msgstr "ChÆ°a_biết3" > >-#: src/xz/list.c:75 >+#: src/xz/list.c:178 > msgid "Unknown-5" > msgstr "ChÆ°a_biết5" > >-#: src/xz/list.c:76 >+#: src/xz/list.c:179 > msgid "Unknown-6" > msgstr "ChÆ°a_biết6" > >-#: src/xz/list.c:77 >+#: src/xz/list.c:180 > msgid "Unknown-7" > msgstr "ChÆ°a_biết7" > >-#: src/xz/list.c:78 >+#: src/xz/list.c:181 > msgid "Unknown-8" > msgstr "ChÆ°a_biết8" > >-#: src/xz/list.c:79 >+#: src/xz/list.c:182 > msgid "Unknown-9" > msgstr "ChÆ°a_biết9" > >-#: src/xz/list.c:81 >+#: src/xz/list.c:184 > msgid "Unknown-11" > msgstr "ChÆ°aBiết11" > >-#: src/xz/list.c:82 >+#: src/xz/list.c:185 > msgid "Unknown-12" > msgstr "ChÆ°aBiết12" > >-#: src/xz/list.c:83 >+#: src/xz/list.c:186 > msgid "Unknown-13" > msgstr "ChÆ°aBiết13" > >-#: src/xz/list.c:84 >+#: src/xz/list.c:187 > msgid "Unknown-14" > msgstr "ChÆ°aBiết14" > >-#: src/xz/list.c:85 >+#: src/xz/list.c:188 > msgid "Unknown-15" > msgstr "ChÆ°aBiết15" > >-#: src/xz/list.c:153 >+#: src/xz/list.c:351 > #, c-format > msgid "%s: File is empty" > msgstr "%s: Táºp tin trá»ng rá»ng" > >-#: src/xz/list.c:158 >+#: src/xz/list.c:356 > #, c-format > msgid "%s: Too small to be a valid .xz file" > msgstr "%s: Là quá nhá» Äá»i vá»i táºp tin .xz hợp lá»" >@@ -336,124 +504,40 @@ > #. to Ratio, the columns are right aligned. Check and Filename > #. are left aligned. If you need longer words, it's OK to > #. use two lines here. Test with "xz -l foo.xz". >-#: src/xz/list.c:677 >+#: src/xz/list.c:730 > msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" > msgstr "Luá»ng Khá»i Nén Giải nén Tá»· lá» Ktra Táºp tin" > >-#: src/xz/list.c:717 >-#, c-format >-msgid " Streams: %s\n" >-msgstr " Luá»ng dữ liá»u: %s\n" >- >-#: src/xz/list.c:719 >-#, c-format >-msgid " Blocks: %s\n" >-msgstr " Khá»i: %s\n" >- >-#: src/xz/list.c:721 >-#, c-format >-msgid " Compressed size: %s\n" >-msgstr " Cỡ khi bá» nén: %s\n" >- >-#: src/xz/list.c:724 >-#, c-format >-msgid " Uncompressed size: %s\n" >-msgstr " Cỡ sau giải nén: %s\n" >- >-#: src/xz/list.c:727 >-#, c-format >-msgid " Ratio: %s\n" >-msgstr " Tá»· lá» nén: %s\n" >- >-#: src/xz/list.c:729 >-#, c-format >-msgid " Check: %s\n" >-msgstr " Kiá»m tra: %s\n" >- >-#: src/xz/list.c:730 >-#, c-format >-msgid " Stream padding: %s\n" >-msgstr " Äá»m luá»ng dữ liá»u: %s\n" >- >-#. TRANSLATORS: The second line is column headings. All except >-#. Check are right aligned; Check is left aligned. Test with >-#. "xz -lv foo.xz". >-#: src/xz/list.c:758 >-msgid "" >-" Streams:\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >-msgstr "" >-" Luá»ng dữ liá»u:\n" >-" Luá»ng Khá»i BùNén BùGiảiNén CỡNén CỡGiảiNén Tá»·Lá» Ktra Äá»m" >- >-#. TRANSLATORS: The second line is column headings. All >-#. except Check are right aligned; Check is left aligned. >-#: src/xz/list.c:813 >-#, c-format >-msgid "" >-" Blocks:\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >-msgstr "" >-" Khá»i:\n" >-" Luá»ng Khá»i BùNén BùGiảiNén CỡTá»ng CỡGiảiNén Tá»·Lá» Ktra" >- >-#. TRANSLATORS: These are additional column headings >-#. for the most verbose listing mode. CheckVal >-#. (Check value), Flags, and Filters are left aligned. >-#. Header (Block Header Size), CompSize, and MemUsage >-#. are right aligned. %*s is replaced with 0-120 >-#. spaces to make the CheckVal column wide enough. >-#. Test with "xz -lvv foo.xz". >-#: src/xz/list.c:825 >-#, c-format >-msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >-msgstr " GTrá»Kiá»m %*s Äầu Cá» CỡNén DùngRAM Bá»Lá»c" >- >-#: src/xz/list.c:903 src/xz/list.c:1078 >-#, c-format >-msgid " Memory needed: %s MiB\n" >-msgstr " Bá» nhá» cần: %s MiB\n" >- >-#: src/xz/list.c:905 src/xz/list.c:1080 >-#, c-format >-msgid " Sizes in headers: %s\n" >-msgstr " KÃch cỡ phần Äầu: %s\n" >- >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "Yes" > msgstr "Có" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "No" > msgstr "Không" > >-#: src/xz/list.c:907 src/xz/list.c:1082 >+#: src/xz/list.c:1027 src/xz/list.c:1205 > #, c-format > msgid " Minimum XZ Utils version: %s\n" > msgstr " Phiên bản âXZ Utilsâ tá»i thiá»u: %s\n" > > #. TRANSLATORS: %s is an integer. Only the plural form of this > #. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz". >-#: src/xz/list.c:1057 >+#: src/xz/list.c:1178 > #, c-format > msgid "%s file\n" > msgid_plural "%s files\n" > msgstr[0] "%s táºp tin\n" > >-#: src/xz/list.c:1070 >+#: src/xz/list.c:1191 > msgid "Totals:" > msgstr "Tá»ng cá»ng:" > >-#: src/xz/list.c:1071 >-#, c-format >-msgid " Number of files: %s\n" >-msgstr " Sá» táºp tin: %s\n" >- >-#: src/xz/list.c:1146 >+#: src/xz/list.c:1269 > msgid "--list works only on .xz files (--format=xz or --format=auto)" > msgstr "--list chá» hoạt Äá»ng trên các táºp tin .xz (--format=xz hay --format=auto)" > >-#: src/xz/list.c:1152 >+#: src/xz/list.c:1275 > msgid "--list does not support reading from standard input" > msgstr "--list không há» trợ Äá»c từ Äầu và o tiêu chuẩn" > >@@ -472,11 +556,11 @@ > msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" > msgstr "%s: Gặp ký hiá»u Null khi Äá»c tên táºp tin; có lẽ ý bạn muá»n là dùng â--files0â chứ không phải â--files'?" > >-#: src/xz/main.c:174 >+#: src/xz/main.c:188 > msgid "Compression and decompression with --robot are not supported yet." > msgstr "Nén và giải nén vá»i --robot vẫn chÆ°a Äược há» trợ." > >-#: src/xz/main.c:252 >+#: src/xz/main.c:266 > msgid "Cannot read data from standard input when reading filenames from standard input" > msgstr "Không thá» Äá»c dữ liá»u từ Äầu và o tiêu chuẩn khi Äá»c táºp tin từ Äầu và o tiêu chuẩn" > >@@ -484,68 +568,68 @@ > #. of the line in messages. Usually it becomes "xz: ". > #. This is a translatable string because French needs > #. a space before a colon. >-#: src/xz/message.c:728 >+#: src/xz/message.c:725 > #, c-format > msgid "%s: " > msgstr "%s: " > >-#: src/xz/message.c:791 src/xz/message.c:841 >+#: src/xz/message.c:797 src/xz/message.c:856 > msgid "Internal error (bug)" > msgstr "Lá»i ná»i bá» (lá»i)" > >-#: src/xz/message.c:798 >+#: src/xz/message.c:804 > msgid "Cannot establish signal handlers" > msgstr "Không thá» thiết láºp bá» xá» lý tÃn hiá»u" > >-#: src/xz/message.c:807 >+#: src/xz/message.c:813 > msgid "No integrity check; not verifying file integrity" > msgstr "Không có kiá»m tra toà n vẹn nên không thá» thẩm tra tÃnh toà n vẹn của táºp tin" > >-#: src/xz/message.c:810 >+#: src/xz/message.c:816 > msgid "Unsupported type of integrity check; not verifying file integrity" > msgstr "Kiá»u kiá»m tra toà n vẹn chÆ°a Äược há» trợ; nên không thá» thẩm tra tÃnh toà n vẹn của táºp tin" > >-#: src/xz/message.c:817 >+#: src/xz/message.c:823 > msgid "Memory usage limit reached" > msgstr "Äã chạm má»c giá»i hạn sá» dụng bá» nhá»" > >-#: src/xz/message.c:820 >+#: src/xz/message.c:826 > msgid "File format not recognized" > msgstr "Không nháºn ra Äá»nh dạng táºp tin" > >-#: src/xz/message.c:823 >+#: src/xz/message.c:829 > msgid "Unsupported options" > msgstr "Tùy chá»n không Äược há» trợ" > >-#: src/xz/message.c:826 >+#: src/xz/message.c:832 > msgid "Compressed data is corrupt" > msgstr "Dữ liá»u Äã nén bá» há»ng" > >-#: src/xz/message.c:829 >+#: src/xz/message.c:835 > msgid "Unexpected end of input" > msgstr "Gặp kết thúc Äầu và o bất ngá»" > >-#: src/xz/message.c:862 >+#: src/xz/message.c:877 > #, c-format > msgid "%s MiB of memory is required. The limiter is disabled." > msgstr "Yêu cầu cần có %s MiB bá» nhá». NhÆ°ng giá»i hạn bá» tắt." > >-#: src/xz/message.c:890 >+#: src/xz/message.c:905 > #, c-format > msgid "%s MiB of memory is required. The limit is %s." > msgstr "Yêu cầu cần có %s MiB bá» nhá». NhÆ°ng giá»i hạn là %s." > >-#: src/xz/message.c:1057 >+#: src/xz/message.c:924 > #, c-format > msgid "%s: Filter chain: %s\n" > msgstr "%s: Móc xÃch lá»c: %s\n" > >-#: src/xz/message.c:1067 >+#: src/xz/message.c:935 > #, c-format > msgid "Try `%s --help' for more information." > msgstr "Hãy chạy lá»nh â%s --helpâ Äá» xem thông tin thêm." > >-#: src/xz/message.c:1093 >+#: src/xz/message.c:961 > #, c-format > msgid "" > "Usage: %s [OPTION]... [FILE]...\n" >@@ -556,15 +640,15 @@ > "Nén hoặc giải nén các TẬP TIN có Äá»nh dạng .xz.\n" > "\n" > >-#: src/xz/message.c:1100 >+#: src/xz/message.c:968 > msgid "Mandatory arguments to long options are mandatory for short options too.\n" > msgstr "Các tùy chá»n dà i bắt buá»c phải có Äá»i sá» thì vá»i tùy chá»n ngắn cÅ©ng váºy.\n" > >-#: src/xz/message.c:1104 >+#: src/xz/message.c:972 > msgid " Operation mode:\n" > msgstr " Chế Äá» thao tác:\n" > >-#: src/xz/message.c:1107 >+#: src/xz/message.c:975 > msgid "" > " -z, --compress force compression\n" > " -d, --decompress force decompression\n" >@@ -576,7 +660,7 @@ > " -t, --test kiá»m tra tÃnh toà n vẹn của táºp tin nén\n" > " -l, --list liá»t kê các thông tin vá» táºp tin .xz" > >-#: src/xz/message.c:1113 >+#: src/xz/message.c:981 > msgid "" > "\n" > " Operation modifiers:\n" >@@ -584,7 +668,7 @@ > "\n" > " Bá» chá»nh sá»a thao tác:\n" > >-#: src/xz/message.c:1116 >+#: src/xz/message.c:984 > msgid "" > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" >@@ -594,7 +678,7 @@ > " -f, --force buá»c ghi Äè táºp tin Äầu ra và (giải) nén các liên kết\n" > " -c, --stdout ghi ra Äầu ra tiêu chuẩn và không xóa táºp tin Äầu và o" > >-#: src/xz/message.c:1122 >+#: src/xz/message.c:993 > msgid "" > " --single-stream decompress only the first stream, and silently\n" > " ignore possible remaining input data" >@@ -602,7 +686,7 @@ > " --single-stream chá» giải nén luá»ng dữ liá»u Äầu, và bá» qua\n" > " dữ liá»u Äầu và o còn lại có thá»" > >-#: src/xz/message.c:1125 >+#: src/xz/message.c:996 > msgid "" > " --no-sparse do not create sparse files when decompressing\n" > " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" >@@ -618,7 +702,7 @@ > " chuẩn; chúng phải Äược kết thúc bằng ký tá»± dòng má»i\n" > " --files0[=TẬP-TIN] giá»ng --files nhÆ°ng ký tá»± kết thúc là null" > >-#: src/xz/message.c:1134 >+#: src/xz/message.c:1005 > msgid "" > "\n" > " Basic file format and compression options:\n" >@@ -626,10 +710,16 @@ > "\n" > " Các tùy chá»n vá» Äá»nh dạng và nén cÆ¡ bản:\n" > >-#: src/xz/message.c:1136 >+#: src/xz/message.c:1007 >+#, fuzzy >+#| msgid "" >+#| " -F, --format=FMT file format to encode or decode; possible values are\n" >+#| " `auto' (default), `xz', `lzma', and `raw'\n" >+#| " -C, --check=CHECK integrity check type: `none' (use with caution),\n" >+#| " `crc32', `crc64' (default), or `sha256'" > msgid "" > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'" > msgstr "" >@@ -638,11 +728,11 @@ > " -C, --check=KIá»M kiá»u kiá»m tra toà n vẹn: ânoneâ (tháºn trá»ng khi dùng),\n" > " âcrc32â, âcrc64â (mặc Äá»nh), hay âsha256â" > >-#: src/xz/message.c:1141 >+#: src/xz/message.c:1012 > msgid " --ignore-check don't verify the integrity check when decompressing" > msgstr " --ignore-check không thẩm tra tÃnh toà n vẹn khi giải nén" > >-#: src/xz/message.c:1145 >+#: src/xz/message.c:1016 > msgid "" > " -0 ... -9 compression preset; default is 6; take compressor *and*\n" > " decompressor memory usage into account before using 7-9!" >@@ -650,7 +740,7 @@ > " -0 ... -9 Äặt mức nén; mặc Äá»nh là 6; tiêu dùng nhiá»u bá» nhá» khi nén\n" > " và giải nén, nên tÃnh toán trÆ°á»c khi dùng 7-9!" > >-#: src/xz/message.c:1149 >+#: src/xz/message.c:1020 > msgid "" > " -e, --extreme try to improve compression ratio by using more CPU time;\n" > " does not affect decompressor memory requirements" >@@ -658,7 +748,7 @@ > " -e, --extreme cá» gắng nâng cao mức nén bằng cách dùng nhiá»u CPU hÆ¡n;\n" > " nhÆ°ng không yêu cần nhiá»u bá» nhá» khi giải nén" > >-#: src/xz/message.c:1153 >+#: src/xz/message.c:1024 > msgid "" > " -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" > " to use as many threads as there are processor cores" >@@ -666,7 +756,7 @@ > " -T, --threads=Sá» dùng tá»i Äa là Sá» tuyến trình; mặc Äá»nh là 1; Äặt\n" > " thà nh 0 Äá» dùng sá» lượng bằng sá» lõi vi xá» lý" > >-#: src/xz/message.c:1158 >+#: src/xz/message.c:1029 > msgid "" > " --block-size=SIZE\n" > " start a new .xz block after every SIZE bytes of input;\n" >@@ -676,7 +766,7 @@ > " bắt Äầu má»t khá»i .xz má»i sau má»i Cá» byte của Äầu và o;\n" > " dùng tùy chá»n nà y Äá» Äặt cỡ khá»i cho nén tuyến trình" > >-#: src/xz/message.c:1162 >+#: src/xz/message.c:1033 > msgid "" > " --block-list=SIZES\n" > " start a new .xz block after the given comma-separated\n" >@@ -686,7 +776,7 @@ > " bắt Äầu má»t khá»i .xz má»i sau má»t danh sách ngÄn\n" > " cách bằng dấu phẩy nhá»p dữ của dữ liá»u chÆ°a nén" > >-#: src/xz/message.c:1166 >+#: src/xz/message.c:1037 > msgid "" > " --flush-timeout=TIMEOUT\n" > " when compressing, if more than TIMEOUT milliseconds has\n" >@@ -698,14 +788,22 @@ > " ká» từ lần Äẩy dữ liá»u lên ÄÄ©a trÆ°á»c Äó và Äang Äá»c thêm\n" > " khá»i nữa, má»i dữ liá»u Äang chá» sẽ Äược ghi lên ÄÄ©a" > >-#: src/xz/message.c:1172 >-#, no-c-format >+#: src/xz/message.c:1043 >+#, fuzzy, no-c-format >+#| msgid "" >+#| " --memlimit-compress=LIMIT\n" >+#| " --memlimit-decompress=LIMIT\n" >+#| " -M, --memlimit=LIMIT\n" >+#| " set memory usage limit for compression, decompression,\n" >+#| " or both; LIMIT is in bytes, % of RAM, or 0 for defaults" > msgid "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults" > msgstr "" > " --memlimit-compress=GIá»I_HẠN\n" > " --memlimit-decompress=GIá»I_HẠN\n" >@@ -714,7 +812,7 @@ > " hoặc cả hai; GIá»I_HẠN có ÄÆ¡n vá» là byte, % của RAM,\n" > " hay 0 cho mặc Äá»nh" > >-#: src/xz/message.c:1179 >+#: src/xz/message.c:1052 > msgid "" > " --no-adjust if compression settings exceed the memory usage limit,\n" > " give an error instead of adjusting the settings downwards" >@@ -722,7 +820,7 @@ > " --no-adjust nếu các cà i Äặt nén vượt quá giá»i hạn dùng bá» nhá»,\n" > " ÄÆ°a ra má»t lá»i thay vì sá»a Äá»i các cà i Äặt xuá»ng" > >-#: src/xz/message.c:1185 >+#: src/xz/message.c:1058 > msgid "" > "\n" > " Custom filter chain for compression (alternative for using presets):" >@@ -730,7 +828,7 @@ > "\n" > " Móc xÃch lá»c tùy chá»nh cho nén (thay cho viá»c dùng chá»nh trÆ°á»c):" > >-#: src/xz/message.c:1194 >+#: src/xz/message.c:1067 > msgid "" > "\n" > " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" >@@ -758,14 +856,26 @@ > " mf=TÃN bá» tìm khá»p (hc3, hc4, bt2, bt3, bt4; bt4)\n" > " depth=Sá» mức sâu tìm kiếm tá»i Äa; 0=tá»± Äá»ng (mặc Äá»nh)" > >-#: src/xz/message.c:1209 >+#: src/xz/message.c:1082 >+#, fuzzy >+#| msgid "" >+#| "\n" >+#| " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+#| " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" >+#| " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >+#| " --arm[=OPTS] ARM BCJ filter (little endian only)\n" >+#| " --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" >+#| " --sparc[=OPTS] SPARC BCJ filter\n" >+#| " Valid OPTS for all BCJ filters:\n" >+#| " start=NUM start offset for conversions (default=0)" > msgid "" > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)" >@@ -780,7 +890,7 @@ > " các tùy chá»n hợp lá» cho má»i bá» lá»c BCJ:\n" > " start=Sá» khoảng bù khá»i Äầu cho chuyá»n Äá»i (mặc Äá»nh=0)" > >-#: src/xz/message.c:1221 >+#: src/xz/message.c:1095 > msgid "" > "\n" > " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" >@@ -793,7 +903,7 @@ > " dist=Sá» khoảng cách giữa các byte Äược trừ từ\n" > " những cái khác (1-256; 1)" > >-#: src/xz/message.c:1229 >+#: src/xz/message.c:1103 > msgid "" > "\n" > " Other options:\n" >@@ -801,7 +911,7 @@ > "\n" > " Tùy chá»n khác:\n" > >-#: src/xz/message.c:1232 >+#: src/xz/message.c:1106 > msgid "" > " -q, --quiet suppress warnings; specify twice to suppress errors too\n" > " -v, --verbose be verbose; specify twice for even more verbose" >@@ -810,17 +920,17 @@ > " chá» Äá»nh hai lần nến bạn muá»n chặn cả báo lá»i\n" > " -v, --verbose thông báo chi tiết; dùng hai lần nếu muá»n chi tiết hÆ¡n" > >-#: src/xz/message.c:1237 >+#: src/xz/message.c:1111 > msgid " -Q, --no-warn make warnings not affect the exit status" > msgstr " -Q, --no-warn là m cho các cảnh báo không ảnh hÆ°á»ng Äến trạng thái thoát" > >-#: src/xz/message.c:1239 >+#: src/xz/message.c:1113 > msgid " --robot use machine-parsable messages (useful for scripts)" > msgstr "" > " --robot dùng các thông Äiá»p máy có thá» phân tÃch\n" > " (hữu dụng vá»i scripts)" > >-#: src/xz/message.c:1242 >+#: src/xz/message.c:1116 > msgid "" > " --info-memory display the total amount of RAM and the currently active\n" > " memory usage limits, and exit" >@@ -828,7 +938,7 @@ > " --info-memory hiá»n thá» tá»ng lượng RAM và mức giá»i hạn tiêu dùng\n" > " bá» nhá» hiá»n tại, rá»i thoát" > >-#: src/xz/message.c:1245 >+#: src/xz/message.c:1119 > msgid "" > " -h, --help display the short help (lists only the basic options)\n" > " -H, --long-help display this long help and exit" >@@ -837,7 +947,7 @@ > " (chá» liá»t kê các tùy chá»n cÆ¡ bản)\n" > " -H, --long-help hiá»n thá» trợ giúp Äầy Äủ rá»i thoát" > >-#: src/xz/message.c:1249 >+#: src/xz/message.c:1123 > msgid "" > " -h, --help display this short help and exit\n" > " -H, --long-help display the long help (lists also the advanced options)" >@@ -846,11 +956,11 @@ > " -H, --long-help hiá»n thá» trợ giúp Äầy Äủ\n" > " (liá»t kê cả những tùy chá»n cấp cao)" > >-#: src/xz/message.c:1254 >+#: src/xz/message.c:1128 > msgid " -V, --version display the version number and exit" > msgstr " -V, --version hiá»n thá» sá» phiên bản và thoát" > >-#: src/xz/message.c:1256 >+#: src/xz/message.c:1130 > msgid "" > "\n" > "With no FILE, or when FILE is -, read standard input.\n" >@@ -862,19 +972,19 @@ > #. for this package. Please add _another line_ saying > #. "Report translation bugs to <...>\n" with the email or WWW > #. address for translation bugs. Thanks. >-#: src/xz/message.c:1262 >+#: src/xz/message.c:1136 > #, c-format > msgid "Report bugs to <%s> (in English or Finnish).\n" > msgstr "" > "Hãy báo cáo lá»i cho <%s> (bằng tiếng Anh hoặc Phần Lan).\n" > "Thông báo lá»i dá»ch cho: <http://translationproject.org/team/vi.html>.\n" > >-#: src/xz/message.c:1264 >+#: src/xz/message.c:1138 > #, c-format > msgid "%s home page: <%s>\n" > msgstr "Trang chủ %s: <%s>.\n" > >-#: src/xz/message.c:1268 >+#: src/xz/message.c:1142 > msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." > msgstr "ÄÃY Là PHIÃN BẢN PHÃT TRIá»N Và Nà KHÃNG PHà HỢP Vá»I MỤC ÄÃCH SẢN XUẤT." > >@@ -902,27 +1012,17 @@ > msgid "The sum of lc and lp must not exceed 4" > msgstr "Tá»ng sá» lượng lc và lp không Äược vượt quá 4" > >-#: src/xz/options.c:359 >+#: src/xz/suffix.c:160 > #, c-format >-msgid "The selected match finder requires at least nice=%<PRIu32>" >-msgstr "Bá» tìm khá»p Äã chá»n yêu cầu mức âtá»tâ Ãt nhất là nice=%<PRIu32>" >- >-#: src/xz/suffix.c:133 src/xz/suffix.c:258 >-#, c-format >-msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >-msgstr "%s: Nếu --format=raw, --suffix=.SUF sẽ Äược yêu cầu trừ trÆ°á»ng hợp ghi ra Äầu ra tiêu chuẩn" >- >-#: src/xz/suffix.c:164 >-#, c-format > msgid "%s: Filename has an unknown suffix, skipping" > msgstr "%s: Tên táºp tin có phần háºu tá» chÆ°a biết nên bá» qua" > >-#: src/xz/suffix.c:185 >+#: src/xz/suffix.c:181 > #, c-format > msgid "%s: File already has `%s' suffix, skipping" > msgstr "%s: Táºp tin Äã sẵn có háºu tá» â%sâ nên bá» qua" > >-#: src/xz/suffix.c:393 >+#: src/xz/suffix.c:388 > #, c-format > msgid "%s: Invalid filename suffix" > msgstr "%s: Háºu tá» tên táºp tin không hợp lá»" >@@ -946,15 +1046,11 @@ > msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]" > msgstr "Giá trá» cuả tùy chá»n â%sâ phải nằm trong vùng [%<PRIu64>, %<PRIu64>]" > >-#: src/xz/util.c:267 >-msgid "Empty filename, skipping" >-msgstr "Tên táºp tin trá»ng rá»ng nên bá» qua" >- >-#: src/xz/util.c:281 >+#: src/xz/util.c:269 > msgid "Compressed data cannot be read from a terminal" > msgstr "Dữ liá»u Äã nén không thá» Äá»c từ thiết bá» cuá»i" > >-#: src/xz/util.c:294 >+#: src/xz/util.c:282 > msgid "Compressed data cannot be written to a terminal" > msgstr "Dữ liá»u Äã nén không thá» ghi ra thiết bá» cuá»i" > >@@ -965,6 +1061,48 @@ > #: src/common/tuklib_exit.c:43 > msgid "Unknown error" > msgstr "Lá»i chÆ°a biết" >+ >+#~ msgid "Memory usage limit for compression: " >+#~ msgstr "Mức giá»i hạn dùng bá» nhá» cho nén: " >+ >+#, c-format >+#~ msgid " Streams: %s\n" >+#~ msgstr " Luá»ng dữ liá»u: %s\n" >+ >+#, c-format >+#~ msgid " Blocks: %s\n" >+#~ msgstr " Khá»i: %s\n" >+ >+#, c-format >+#~ msgid " Ratio: %s\n" >+#~ msgstr " Tá»· lá» nén: %s\n" >+ >+#, c-format >+#~ msgid " Check: %s\n" >+#~ msgstr " Kiá»m tra: %s\n" >+ >+#~ msgid "" >+#~ " Streams:\n" >+#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >+#~ msgstr "" >+#~ " Luá»ng dữ liá»u:\n" >+#~ " Luá»ng Khá»i BùNén BùGiảiNén CỡNén CỡGiảiNén Tá»·Lá» Ktra Äá»m" >+ >+#, c-format >+#~ msgid "" >+#~ " Blocks:\n" >+#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >+#~ msgstr "" >+#~ " Khá»i:\n" >+#~ " Luá»ng Khá»i BùNén BùGiảiNén CỡTá»ng CỡGiảiNén Tá»·Lá» Ktra" >+ >+#, c-format >+#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >+#~ msgstr " GTrá»Kiá»m %*s Äầu Cá» CỡNén DùngRAM Bá»Lá»c" >+ >+#, c-format >+#~ msgid "The selected match finder requires at least nice=%<PRIu32>" >+#~ msgstr "Bá» tìm khá»p Äã chá»n yêu cầu mức âtá»tâ Ãt nhất là nice=%<PRIu32>" > > #~ msgid "Error setting O_NONBLOCK on standard input: %s" > #~ msgstr "Lá»i cà i Äặt O_NONBLOCK trên Äầu và o tiêu chuẩn: %s" >diff -ur xz-5.2.5/po/xz.pot xz-5.4.3/po/xz.pot >--- xz-5.2.5/po/xz.pot 2020-03-17 17:29:58 >+++ xz-5.4.3/po/xz.pot 2023-05-04 17:32:20 >@@ -5,9 +5,9 @@ > #, fuzzy > msgid "" > msgstr "" >-"Project-Id-Version: xz 5.2.5\n" >-"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >+"Project-Id-Version: xz 5.4.3\n" >+"Report-Msgid-Bugs-To: xz@tukaani.org\n" >+"POT-Creation-Date: 2023-05-04 22:32+0800\n" > "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" > "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" > "Language-Team: LANGUAGE <LL@li.org>\n" >@@ -17,100 +17,118 @@ > "Content-Transfer-Encoding: 8bit\n" > "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" > >-#: src/xz/args.c:63 >+#: src/xz/args.c:77 > #, c-format > msgid "%s: Invalid argument to --block-list" > msgstr "" > >-#: src/xz/args.c:73 >+#: src/xz/args.c:87 > #, c-format > msgid "%s: Too many arguments to --block-list" > msgstr "" > >-#: src/xz/args.c:102 >+#: src/xz/args.c:116 > msgid "0 can only be used as the last element in --block-list" > msgstr "" > >-#: src/xz/args.c:406 >+#: src/xz/args.c:451 > #, c-format > msgid "%s: Unknown file format type" > msgstr "" > >-#: src/xz/args.c:429 src/xz/args.c:437 >+#: src/xz/args.c:474 src/xz/args.c:482 > #, c-format > msgid "%s: Unsupported integrity check type" > msgstr "" > >-#: src/xz/args.c:473 >+#: src/xz/args.c:518 > msgid "Only one file can be specified with `--files' or `--files0'." > msgstr "" > >-#: src/xz/args.c:541 >+#: src/xz/args.c:586 > #, c-format > msgid "The environment variable %s contains too many arguments" > msgstr "" > >-#: src/xz/args.c:643 >+#: src/xz/args.c:688 > msgid "Compression support was disabled at build time" > msgstr "" > >-#: src/xz/args.c:650 >+#: src/xz/args.c:695 > msgid "Decompression support was disabled at build time" > msgstr "" > >-#: src/xz/coder.c:110 >+#: src/xz/args.c:701 >+msgid "Compression of lzip files (.lz) is not supported" >+msgstr "" >+ >+#: src/xz/args.c:732 >+msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgstr "" >+ >+#: src/xz/coder.c:115 > msgid "Maximum number of filters is four" > msgstr "" > >-#: src/xz/coder.c:129 >+#: src/xz/coder.c:134 > msgid "Memory usage limit is too low for the given filter setup." > msgstr "" > >-#: src/xz/coder.c:159 >+#: src/xz/coder.c:169 > msgid "Using a preset in raw mode is discouraged." > msgstr "" > >-#: src/xz/coder.c:161 >+#: src/xz/coder.c:171 > msgid "The exact options of the presets may vary between software versions." > msgstr "" > >-#: src/xz/coder.c:184 >+#: src/xz/coder.c:194 > msgid "The .lzma format supports only the LZMA1 filter" > msgstr "" > >-#: src/xz/coder.c:192 >+#: src/xz/coder.c:202 > msgid "LZMA1 cannot be used with the .xz format" > msgstr "" > >-#: src/xz/coder.c:209 >+#: src/xz/coder.c:219 > msgid "The filter chain is incompatible with --flush-timeout" > msgstr "" > >-#: src/xz/coder.c:215 >+#: src/xz/coder.c:225 > msgid "Switching to single-threaded mode due to --flush-timeout" > msgstr "" > >-#: src/xz/coder.c:235 >+#: src/xz/coder.c:249 > #, c-format > msgid "Using up to %<PRIu32> threads." > msgstr "" > >-#: src/xz/coder.c:251 >+#: src/xz/coder.c:265 > msgid "Unsupported filter chain or filter options" > msgstr "" > >-#: src/xz/coder.c:263 >+#: src/xz/coder.c:277 > #, c-format > msgid "Decompression will need %s MiB of memory." > msgstr "" > >-#: src/xz/coder.c:300 >+#: src/xz/coder.c:309 > #, c-format >-msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" > msgstr "" > >-#: src/xz/coder.c:354 >+#: src/xz/coder.c:329 > #, c-format >+msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway." >+msgstr "" >+ >+#: src/xz/coder.c:356 >+#, c-format >+msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB" >+msgstr "" >+ >+#: src/xz/coder.c:411 >+#, c-format > msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" > msgstr "" > >@@ -119,11 +137,11 @@ > msgid "Error creating a pipe: %s" > msgstr "" > >-#: src/xz/file_io.c:224 >+#: src/xz/file_io.c:252 > msgid "Failed to enable the sandbox" > msgstr "" > >-#: src/xz/file_io.c:266 >+#: src/xz/file_io.c:294 > #, c-format > msgid "%s: poll() failed: %s" > msgstr "" >@@ -138,318 +156,364 @@ > #. it is possible that the user has put a new file in place > #. of the original file, and in that case it obviously > #. shouldn't be removed. >-#: src/xz/file_io.c:333 >+#: src/xz/file_io.c:361 > #, c-format > msgid "%s: File seems to have been moved, not removing" > msgstr "" > >-#: src/xz/file_io.c:340 src/xz/file_io.c:882 >+#: src/xz/file_io.c:368 src/xz/file_io.c:924 > #, c-format > msgid "%s: Cannot remove: %s" > msgstr "" > >-#: src/xz/file_io.c:366 >+#: src/xz/file_io.c:394 > #, c-format > msgid "%s: Cannot set the file owner: %s" > msgstr "" > >-#: src/xz/file_io.c:372 >+#: src/xz/file_io.c:407 > #, c-format > msgid "%s: Cannot set the file group: %s" > msgstr "" > >-#: src/xz/file_io.c:391 >+#: src/xz/file_io.c:426 > #, c-format > msgid "%s: Cannot set the file permissions: %s" > msgstr "" > >-#: src/xz/file_io.c:517 >+#: src/xz/file_io.c:552 > #, c-format > msgid "Error getting the file status flags from standard input: %s" > msgstr "" > >-#: src/xz/file_io.c:574 src/xz/file_io.c:636 >+#: src/xz/file_io.c:610 src/xz/file_io.c:672 > #, c-format > msgid "%s: Is a symbolic link, skipping" > msgstr "" > >-#: src/xz/file_io.c:665 >+#: src/xz/file_io.c:701 > #, c-format > msgid "%s: Is a directory, skipping" > msgstr "" > >-#: src/xz/file_io.c:671 >+#: src/xz/file_io.c:707 > #, c-format > msgid "%s: Not a regular file, skipping" > msgstr "" > >-#: src/xz/file_io.c:688 >+#: src/xz/file_io.c:724 > #, c-format > msgid "%s: File has setuid or setgid bit set, skipping" > msgstr "" > >-#: src/xz/file_io.c:695 >+#: src/xz/file_io.c:731 > #, c-format > msgid "%s: File has sticky bit set, skipping" > msgstr "" > >-#: src/xz/file_io.c:702 >+#: src/xz/file_io.c:738 > #, c-format > msgid "%s: Input file has more than one hard link, skipping" > msgstr "" > >-#: src/xz/file_io.c:792 >+#: src/xz/file_io.c:780 >+msgid "Empty filename, skipping" >+msgstr "" >+ >+#: src/xz/file_io.c:834 > #, c-format > msgid "Error restoring the status flags to standard input: %s" > msgstr "" > >-#: src/xz/file_io.c:840 >+#: src/xz/file_io.c:882 > #, c-format > msgid "Error getting the file status flags from standard output: %s" > msgstr "" > >-#: src/xz/file_io.c:1018 >+#: src/xz/file_io.c:1060 > #, c-format > msgid "Error restoring the O_APPEND flag to standard output: %s" > msgstr "" > >-#: src/xz/file_io.c:1030 >+#: src/xz/file_io.c:1072 > #, c-format > msgid "%s: Closing the file failed: %s" > msgstr "" > >-#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 >+#: src/xz/file_io.c:1108 src/xz/file_io.c:1371 > #, c-format > msgid "%s: Seeking failed when trying to create a sparse file: %s" > msgstr "" > >-#: src/xz/file_io.c:1167 >+#: src/xz/file_io.c:1209 > #, c-format > msgid "%s: Read error: %s" > msgstr "" > >-#: src/xz/file_io.c:1191 >+#: src/xz/file_io.c:1239 > #, c-format > msgid "%s: Error seeking the file: %s" > msgstr "" > >-#: src/xz/file_io.c:1201 >+#: src/xz/file_io.c:1263 > #, c-format > msgid "%s: Unexpected end of file" > msgstr "" > >-#: src/xz/file_io.c:1260 >+#: src/xz/file_io.c:1322 > #, c-format > msgid "%s: Write error: %s" > msgstr "" > >-#: src/xz/hardware.c:137 >+#: src/xz/hardware.c:238 > msgid "Disabled" > msgstr "" > >-#. TRANSLATORS: Test with "xz --info-memory" to see if >-#. the alignment looks nice. >-#: src/xz/hardware.c:156 >-msgid "Total amount of physical memory (RAM): " >+#: src/xz/hardware.c:269 >+msgid "Amount of physical memory (RAM):" > msgstr "" > >-#: src/xz/hardware.c:158 >-msgid "Memory usage limit for compression: " >+#: src/xz/hardware.c:270 >+msgid "Number of processor threads:" > msgstr "" > >-#: src/xz/hardware.c:160 >-msgid "Memory usage limit for decompression: " >+#: src/xz/hardware.c:271 >+msgid "Compression:" > msgstr "" > >-#. TRANSLATORS: Indicates that there is no integrity check. >-#. This string is used in tables, so the width must not >-#. exceed ten columns with a fixed-width font. >-#: src/xz/list.c:65 >-msgid "None" >+#: src/xz/hardware.c:272 >+msgid "Decompression:" > msgstr "" > >-#. TRANSLATORS: Indicates that integrity check name is not known, >-#. but the Check ID is known (here 2). This and other "Unknown-N" >-#. strings are used in tables, so the width must not exceed ten >-#. columns with a fixed-width font. It's OK to omit the dash if >-#. you need space for one extra letter, but don't use spaces. >+#: src/xz/hardware.c:273 >+msgid "Multi-threaded decompression:" >+msgstr "" >+ >+#: src/xz/hardware.c:274 >+msgid "Default for -T0:" >+msgstr "" >+ >+#: src/xz/hardware.c:292 >+msgid "Hardware information:" >+msgstr "" >+ >+#: src/xz/hardware.c:299 >+msgid "Memory usage limits:" >+msgstr "" >+ >+#: src/xz/list.c:68 >+msgid "Streams:" >+msgstr "" >+ >+#: src/xz/list.c:69 >+msgid "Blocks:" >+msgstr "" >+ >+#: src/xz/list.c:70 >+msgid "Compressed size:" >+msgstr "" >+ >+#: src/xz/list.c:71 >+msgid "Uncompressed size:" >+msgstr "" >+ > #: src/xz/list.c:72 >-msgid "Unknown-2" >+msgid "Ratio:" > msgstr "" > > #: src/xz/list.c:73 >-msgid "Unknown-3" >+msgid "Check:" > msgstr "" > >+#: src/xz/list.c:74 >+msgid "Stream Padding:" >+msgstr "" >+ > #: src/xz/list.c:75 >-msgid "Unknown-5" >+msgid "Memory needed:" > msgstr "" > > #: src/xz/list.c:76 >-msgid "Unknown-6" >+msgid "Sizes in headers:" > msgstr "" > >-#: src/xz/list.c:77 >-msgid "Unknown-7" >+#: src/xz/list.c:79 >+msgid "Number of files:" > msgstr "" > >-#: src/xz/list.c:78 >-msgid "Unknown-8" >+#: src/xz/list.c:122 >+msgid "Stream" > msgstr "" > >-#: src/xz/list.c:79 >-msgid "Unknown-9" >+#: src/xz/list.c:123 >+msgid "Block" > msgstr "" > >-#: src/xz/list.c:81 >-msgid "Unknown-11" >+#: src/xz/list.c:124 >+msgid "Blocks" > msgstr "" > >-#: src/xz/list.c:82 >-msgid "Unknown-12" >+#: src/xz/list.c:125 >+msgid "CompOffset" > msgstr "" > >-#: src/xz/list.c:83 >-msgid "Unknown-13" >+#: src/xz/list.c:126 >+msgid "UncompOffset" > msgstr "" > >-#: src/xz/list.c:84 >-msgid "Unknown-14" >+#: src/xz/list.c:127 >+msgid "CompSize" > msgstr "" > >-#: src/xz/list.c:85 >-msgid "Unknown-15" >+#: src/xz/list.c:128 >+msgid "UncompSize" > msgstr "" > >-#: src/xz/list.c:153 >-#, c-format >-msgid "%s: File is empty" >+#: src/xz/list.c:129 >+msgid "TotalSize" > msgstr "" > >-#: src/xz/list.c:158 >-#, c-format >-msgid "%s: Too small to be a valid .xz file" >+#: src/xz/list.c:130 >+msgid "Ratio" > msgstr "" > >-#. TRANSLATORS: These are column headings. From Strms (Streams) >-#. to Ratio, the columns are right aligned. Check and Filename >-#. are left aligned. If you need longer words, it's OK to >-#. use two lines here. Test with "xz -l foo.xz". >-#: src/xz/list.c:677 >-msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" >+#: src/xz/list.c:131 >+msgid "Check" > msgstr "" > >-#: src/xz/list.c:717 >-#, c-format >-msgid " Streams: %s\n" >+#: src/xz/list.c:132 >+msgid "CheckVal" > msgstr "" > >-#: src/xz/list.c:719 >-#, c-format >-msgid " Blocks: %s\n" >+#: src/xz/list.c:133 >+msgid "Padding" > msgstr "" > >-#: src/xz/list.c:721 >-#, c-format >-msgid " Compressed size: %s\n" >+#: src/xz/list.c:134 >+msgid "Header" > msgstr "" > >-#: src/xz/list.c:724 >-#, c-format >-msgid " Uncompressed size: %s\n" >+#: src/xz/list.c:135 >+msgid "Flags" > msgstr "" > >-#: src/xz/list.c:727 >-#, c-format >-msgid " Ratio: %s\n" >+#: src/xz/list.c:136 >+msgid "MemUsage" > msgstr "" > >-#: src/xz/list.c:729 >-#, c-format >-msgid " Check: %s\n" >+#: src/xz/list.c:137 >+msgid "Filters" > msgstr "" > >-#: src/xz/list.c:730 >-#, c-format >-msgid " Stream padding: %s\n" >+#. TRANSLATORS: Indicates that there is no integrity check. >+#. This string is used in tables. In older xz version this >+#. string was limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:169 >+msgid "None" > msgstr "" > >-#. TRANSLATORS: The second line is column headings. All except >-#. Check are right aligned; Check is left aligned. Test with >-#. "xz -lv foo.xz". >-#: src/xz/list.c:758 >-msgid "" >-" Streams:\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >+#. TRANSLATORS: Indicates that integrity check name is not known, >+#. but the Check ID is known (here 2). In older xz version these >+#. strings were limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:175 >+msgid "Unknown-2" > msgstr "" > >-#. TRANSLATORS: The second line is column headings. All >-#. except Check are right aligned; Check is left aligned. >-#: src/xz/list.c:813 >-#, c-format >-msgid "" >-" Blocks:\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >+#: src/xz/list.c:176 >+msgid "Unknown-3" > msgstr "" > >-#. TRANSLATORS: These are additional column headings >-#. for the most verbose listing mode. CheckVal >-#. (Check value), Flags, and Filters are left aligned. >-#. Header (Block Header Size), CompSize, and MemUsage >-#. are right aligned. %*s is replaced with 0-120 >-#. spaces to make the CheckVal column wide enough. >-#. Test with "xz -lvv foo.xz". >-#: src/xz/list.c:825 >-#, c-format >-msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >+#: src/xz/list.c:178 >+msgid "Unknown-5" > msgstr "" > >-#: src/xz/list.c:903 src/xz/list.c:1078 >+#: src/xz/list.c:179 >+msgid "Unknown-6" >+msgstr "" >+ >+#: src/xz/list.c:180 >+msgid "Unknown-7" >+msgstr "" >+ >+#: src/xz/list.c:181 >+msgid "Unknown-8" >+msgstr "" >+ >+#: src/xz/list.c:182 >+msgid "Unknown-9" >+msgstr "" >+ >+#: src/xz/list.c:184 >+msgid "Unknown-11" >+msgstr "" >+ >+#: src/xz/list.c:185 >+msgid "Unknown-12" >+msgstr "" >+ >+#: src/xz/list.c:186 >+msgid "Unknown-13" >+msgstr "" >+ >+#: src/xz/list.c:187 >+msgid "Unknown-14" >+msgstr "" >+ >+#: src/xz/list.c:188 >+msgid "Unknown-15" >+msgstr "" >+ >+#: src/xz/list.c:351 > #, c-format >-msgid " Memory needed: %s MiB\n" >+msgid "%s: File is empty" > msgstr "" > >-#: src/xz/list.c:905 src/xz/list.c:1080 >+#: src/xz/list.c:356 > #, c-format >-msgid " Sizes in headers: %s\n" >+msgid "%s: Too small to be a valid .xz file" > msgstr "" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#. TRANSLATORS: These are column headings. From Strms (Streams) >+#. to Ratio, the columns are right aligned. Check and Filename >+#. are left aligned. If you need longer words, it's OK to >+#. use two lines here. Test with "xz -l foo.xz". >+#: src/xz/list.c:730 >+msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" >+msgstr "" >+ >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "Yes" > msgstr "" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "No" > msgstr "" > >-#: src/xz/list.c:907 src/xz/list.c:1082 >+#: src/xz/list.c:1027 src/xz/list.c:1205 > #, c-format > msgid " Minimum XZ Utils version: %s\n" > msgstr "" > > #. TRANSLATORS: %s is an integer. Only the plural form of this > #. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz". >-#: src/xz/list.c:1057 >+#: src/xz/list.c:1178 > #, c-format > msgid "%s file\n" > msgid_plural "%s files\n" > msgstr[0] "" > msgstr[1] "" > >-#: src/xz/list.c:1070 >+#: src/xz/list.c:1191 > msgid "Totals:" > msgstr "" > >-#: src/xz/list.c:1071 >-#, c-format >-msgid " Number of files: %s\n" >-msgstr "" >- >-#: src/xz/list.c:1146 >+#: src/xz/list.c:1269 > msgid "--list works only on .xz files (--format=xz or --format=auto)" > msgstr "" > >-#: src/xz/list.c:1152 >+#: src/xz/list.c:1275 > msgid "--list does not support reading from standard input" > msgstr "" > >@@ -468,11 +532,11 @@ > msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" > msgstr "" > >-#: src/xz/main.c:174 >+#: src/xz/main.c:188 > msgid "Compression and decompression with --robot are not supported yet." > msgstr "" > >-#: src/xz/main.c:252 >+#: src/xz/main.c:266 > msgid "Cannot read data from standard input when reading filenames from standard input" > msgstr "" > >@@ -480,68 +544,68 @@ > #. of the line in messages. Usually it becomes "xz: ". > #. This is a translatable string because French needs > #. a space before a colon. >-#: src/xz/message.c:728 >+#: src/xz/message.c:725 > #, c-format > msgid "%s: " > msgstr "" > >-#: src/xz/message.c:791 src/xz/message.c:841 >+#: src/xz/message.c:797 src/xz/message.c:856 > msgid "Internal error (bug)" > msgstr "" > >-#: src/xz/message.c:798 >+#: src/xz/message.c:804 > msgid "Cannot establish signal handlers" > msgstr "" > >-#: src/xz/message.c:807 >+#: src/xz/message.c:813 > msgid "No integrity check; not verifying file integrity" > msgstr "" > >-#: src/xz/message.c:810 >+#: src/xz/message.c:816 > msgid "Unsupported type of integrity check; not verifying file integrity" > msgstr "" > >-#: src/xz/message.c:817 >+#: src/xz/message.c:823 > msgid "Memory usage limit reached" > msgstr "" > >-#: src/xz/message.c:820 >+#: src/xz/message.c:826 > msgid "File format not recognized" > msgstr "" > >-#: src/xz/message.c:823 >+#: src/xz/message.c:829 > msgid "Unsupported options" > msgstr "" > >-#: src/xz/message.c:826 >+#: src/xz/message.c:832 > msgid "Compressed data is corrupt" > msgstr "" > >-#: src/xz/message.c:829 >+#: src/xz/message.c:835 > msgid "Unexpected end of input" > msgstr "" > >-#: src/xz/message.c:862 >+#: src/xz/message.c:877 > #, c-format > msgid "%s MiB of memory is required. The limiter is disabled." > msgstr "" > >-#: src/xz/message.c:890 >+#: src/xz/message.c:905 > #, c-format > msgid "%s MiB of memory is required. The limit is %s." > msgstr "" > >-#: src/xz/message.c:1057 >+#: src/xz/message.c:924 > #, c-format > msgid "%s: Filter chain: %s\n" > msgstr "" > >-#: src/xz/message.c:1067 >+#: src/xz/message.c:935 > #, c-format > msgid "Try `%s --help' for more information." > msgstr "" > >-#: src/xz/message.c:1093 >+#: src/xz/message.c:961 > #, c-format > msgid "" > "Usage: %s [OPTION]... [FILE]...\n" >@@ -549,15 +613,15 @@ > "\n" > msgstr "" > >-#: src/xz/message.c:1100 >+#: src/xz/message.c:968 > msgid "Mandatory arguments to long options are mandatory for short options too.\n" > msgstr "" > >-#: src/xz/message.c:1104 >+#: src/xz/message.c:972 > msgid " Operation mode:\n" > msgstr "" > >-#: src/xz/message.c:1107 >+#: src/xz/message.c:975 > msgid "" > " -z, --compress force compression\n" > " -d, --decompress force decompression\n" >@@ -565,26 +629,26 @@ > " -l, --list list information about .xz files" > msgstr "" > >-#: src/xz/message.c:1113 >+#: src/xz/message.c:981 > msgid "" > "\n" > " Operation modifiers:\n" > msgstr "" > >-#: src/xz/message.c:1116 >+#: src/xz/message.c:984 > msgid "" > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" > " -c, --stdout write to standard output and don't delete input files" > msgstr "" > >-#: src/xz/message.c:1122 >+#: src/xz/message.c:993 > msgid "" > " --single-stream decompress only the first stream, and silently\n" > " ignore possible remaining input data" > msgstr "" > >-#: src/xz/message.c:1125 >+#: src/xz/message.c:996 > msgid "" > " --no-sparse do not create sparse files when decompressing\n" > " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" >@@ -594,57 +658,57 @@ > " --files0[=FILE] like --files but use the null character as terminator" > msgstr "" > >-#: src/xz/message.c:1134 >+#: src/xz/message.c:1005 > msgid "" > "\n" > " Basic file format and compression options:\n" > msgstr "" > >-#: src/xz/message.c:1136 >+#: src/xz/message.c:1007 > msgid "" > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'" > msgstr "" > >-#: src/xz/message.c:1141 >+#: src/xz/message.c:1012 > msgid " --ignore-check don't verify the integrity check when decompressing" > msgstr "" > >-#: src/xz/message.c:1145 >+#: src/xz/message.c:1016 > msgid "" > " -0 ... -9 compression preset; default is 6; take compressor *and*\n" > " decompressor memory usage into account before using 7-9!" > msgstr "" > >-#: src/xz/message.c:1149 >+#: src/xz/message.c:1020 > msgid "" > " -e, --extreme try to improve compression ratio by using more CPU time;\n" > " does not affect decompressor memory requirements" > msgstr "" > >-#: src/xz/message.c:1153 >+#: src/xz/message.c:1024 > msgid "" > " -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" > " to use as many threads as there are processor cores" > msgstr "" > >-#: src/xz/message.c:1158 >+#: src/xz/message.c:1029 > msgid "" > " --block-size=SIZE\n" > " start a new .xz block after every SIZE bytes of input;\n" > " use this to set the block size for threaded compression" > msgstr "" > >-#: src/xz/message.c:1162 >+#: src/xz/message.c:1033 > msgid "" > " --block-list=SIZES\n" > " start a new .xz block after the given comma-separated\n" > " intervals of uncompressed data" > msgstr "" > >-#: src/xz/message.c:1166 >+#: src/xz/message.c:1037 > msgid "" > " --flush-timeout=TIMEOUT\n" > " when compressing, if more than TIMEOUT milliseconds has\n" >@@ -652,29 +716,31 @@ > " would block, all pending data is flushed out" > msgstr "" > >-#: src/xz/message.c:1172 >+#: src/xz/message.c:1043 > #, no-c-format > msgid "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults" > msgstr "" > >-#: src/xz/message.c:1179 >+#: src/xz/message.c:1052 > msgid "" > " --no-adjust if compression settings exceed the memory usage limit,\n" > " give an error instead of adjusting the settings downwards" > msgstr "" > >-#: src/xz/message.c:1185 >+#: src/xz/message.c:1058 > msgid "" > "\n" > " Custom filter chain for compression (alternative for using presets):" > msgstr "" > >-#: src/xz/message.c:1194 >+#: src/xz/message.c:1067 > msgid "" > "\n" > " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" >@@ -690,20 +756,21 @@ > " depth=NUM maximum search depth; 0=automatic (default)" > msgstr "" > >-#: src/xz/message.c:1209 >+#: src/xz/message.c:1082 > msgid "" > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)" > msgstr "" > >-#: src/xz/message.c:1221 >+#: src/xz/message.c:1095 > msgid "" > "\n" > " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" >@@ -711,49 +778,49 @@ > " from each other (1-256; 1)" > msgstr "" > >-#: src/xz/message.c:1229 >+#: src/xz/message.c:1103 > msgid "" > "\n" > " Other options:\n" > msgstr "" > >-#: src/xz/message.c:1232 >+#: src/xz/message.c:1106 > msgid "" > " -q, --quiet suppress warnings; specify twice to suppress errors too\n" > " -v, --verbose be verbose; specify twice for even more verbose" > msgstr "" > >-#: src/xz/message.c:1237 >+#: src/xz/message.c:1111 > msgid " -Q, --no-warn make warnings not affect the exit status" > msgstr "" > >-#: src/xz/message.c:1239 >+#: src/xz/message.c:1113 > msgid " --robot use machine-parsable messages (useful for scripts)" > msgstr "" > >-#: src/xz/message.c:1242 >+#: src/xz/message.c:1116 > msgid "" > " --info-memory display the total amount of RAM and the currently active\n" > " memory usage limits, and exit" > msgstr "" > >-#: src/xz/message.c:1245 >+#: src/xz/message.c:1119 > msgid "" > " -h, --help display the short help (lists only the basic options)\n" > " -H, --long-help display this long help and exit" > msgstr "" > >-#: src/xz/message.c:1249 >+#: src/xz/message.c:1123 > msgid "" > " -h, --help display this short help and exit\n" > " -H, --long-help display the long help (lists also the advanced options)" > msgstr "" > >-#: src/xz/message.c:1254 >+#: src/xz/message.c:1128 > msgid " -V, --version display the version number and exit" > msgstr "" > >-#: src/xz/message.c:1256 >+#: src/xz/message.c:1130 > msgid "" > "\n" > "With no FILE, or when FILE is -, read standard input.\n" >@@ -763,17 +830,17 @@ > #. for this package. Please add _another line_ saying > #. "Report translation bugs to <...>\n" with the email or WWW > #. address for translation bugs. Thanks. >-#: src/xz/message.c:1262 >+#: src/xz/message.c:1136 > #, c-format > msgid "Report bugs to <%s> (in English or Finnish).\n" > msgstr "" > >-#: src/xz/message.c:1264 >+#: src/xz/message.c:1138 > #, c-format > msgid "%s home page: <%s>\n" > msgstr "" > >-#: src/xz/message.c:1268 >+#: src/xz/message.c:1142 > msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." > msgstr "" > >@@ -801,27 +868,17 @@ > msgid "The sum of lc and lp must not exceed 4" > msgstr "" > >-#: src/xz/options.c:359 >+#: src/xz/suffix.c:160 > #, c-format >-msgid "The selected match finder requires at least nice=%<PRIu32>" >-msgstr "" >- >-#: src/xz/suffix.c:133 src/xz/suffix.c:258 >-#, c-format >-msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >-msgstr "" >- >-#: src/xz/suffix.c:164 >-#, c-format > msgid "%s: Filename has an unknown suffix, skipping" > msgstr "" > >-#: src/xz/suffix.c:185 >+#: src/xz/suffix.c:181 > #, c-format > msgid "%s: File already has `%s' suffix, skipping" > msgstr "" > >-#: src/xz/suffix.c:393 >+#: src/xz/suffix.c:388 > #, c-format > msgid "%s: Invalid filename suffix" > msgstr "" >@@ -845,15 +902,11 @@ > msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]" > msgstr "" > >-#: src/xz/util.c:267 >-msgid "Empty filename, skipping" >-msgstr "" >- >-#: src/xz/util.c:281 >+#: src/xz/util.c:269 > msgid "Compressed data cannot be read from a terminal" > msgstr "" > >-#: src/xz/util.c:294 >+#: src/xz/util.c:282 > msgid "Compressed data cannot be written to a terminal" > msgstr "" > >Binary files xz-5.2.5/po/zh_CN.gmo and xz-5.4.3/po/zh_CN.gmo differ >diff -ur xz-5.2.5/po/zh_CN.po xz-5.4.3/po/zh_CN.po >--- xz-5.2.5/po/zh_CN.po 2020-03-17 17:29:58 >+++ xz-5.4.3/po/zh_CN.po 2023-05-04 17:32:21 >@@ -1,118 +1,138 @@ > # Chinese translations for xz package > # xz 软件å çç®ä½ä¸æç¿»è¯ã > # This file is put in the public domain. >-# Boyuan Yang <073plan@gmail.com>, 2019. >+# Boyuan Yang <073plan@gmail.com>, 2019, 2022. > # > msgid "" > msgstr "" >-"Project-Id-Version: xz 5.2.4\n" >-"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >-"PO-Revision-Date: 2019-03-20 15:25-0400\n" >+"Project-Id-Version: xz 5.4.0-pre1\n" >+"Report-Msgid-Bugs-To: xz@tukaani.org\n" >+"POT-Creation-Date: 2023-05-04 22:32+0800\n" >+"PO-Revision-Date: 2022-11-30 13:31-0500\n" > "Last-Translator: Boyuan Yang <073plan@gmail.com>\n" > "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" > "Language: zh_CN\n" > "MIME-Version: 1.0\n" > "Content-Type: text/plain; charset=UTF-8\n" > "Content-Transfer-Encoding: 8bit\n" >-"X-Bugs: Report translation errors to the Language-Team address.\n" > "Plural-Forms: nplurals=1; plural=0;\n" >-"X-Generator: Poedit 2.2.1\n" >+"X-Bugs: Report translation errors to the Language-Team address.\n" >+"X-Generator: Poedit 3.2\n" > >-#: src/xz/args.c:63 >+#: src/xz/args.c:77 > #, c-format > msgid "%s: Invalid argument to --block-list" > msgstr "%sï¼--block-list çæ æåæ°" > >-#: src/xz/args.c:73 >+#: src/xz/args.c:87 > #, c-format > msgid "%s: Too many arguments to --block-list" > msgstr "%sï¼--block-list å¾å°è¿å¤åæ°" > >-#: src/xz/args.c:102 >+#: src/xz/args.c:116 > msgid "0 can only be used as the last element in --block-list" > msgstr "0 ä» å¯ç¨äº --block-list çæåä¸ä¸ªå ç´ " > >-#: src/xz/args.c:406 >+#: src/xz/args.c:451 > #, c-format > msgid "%s: Unknown file format type" > msgstr "%sï¼ä½ç½®æä»¶æ ¼å¼ç±»å" > >-#: src/xz/args.c:429 src/xz/args.c:437 >+#: src/xz/args.c:474 src/xz/args.c:482 > #, c-format > msgid "%s: Unsupported integrity check type" > msgstr "%sï¼ä¸æ¯æçå®æ´æ§æ£æ¥ç±»å" > >-#: src/xz/args.c:473 >+#: src/xz/args.c:518 > msgid "Only one file can be specified with `--files' or `--files0'." > msgstr "ä» å¯ä½¿ç¨â--filesâæâ--files0âæå®ä¸ä¸ªæ件ã" > >-#: src/xz/args.c:541 >+#: src/xz/args.c:586 > #, c-format > msgid "The environment variable %s contains too many arguments" > msgstr "ç¯å¢åé %s å å«è¿å¤åæ°" > >-#: src/xz/args.c:643 >+#: src/xz/args.c:688 > msgid "Compression support was disabled at build time" > msgstr "å缩æ¯æå·²å¨æ建æ¶ç¦ç¨" > >-#: src/xz/args.c:650 >+#: src/xz/args.c:695 > msgid "Decompression support was disabled at build time" > msgstr "解åæ¯æå·²å¨æ建æ¶ç¦ç¨" > >-#: src/xz/coder.c:110 >+#: src/xz/args.c:701 >+msgid "Compression of lzip files (.lz) is not supported" >+msgstr "ä¸æ¯æ对 lzip æ件 (.lz) çå缩" >+ >+#: src/xz/args.c:732 >+#, fuzzy >+#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgstr "%sï¼å¨å¯ç¨ --format-raw é项æ¶ï¼å¿ é¡»æå® --suffix=.SUF è·ç¥åå ¥è³æ åè¾åº" >+ >+#: src/xz/coder.c:115 > msgid "Maximum number of filters is four" > msgstr "è¿æ»¤å¨æå¤æ°é为å" > >-#: src/xz/coder.c:129 >+#: src/xz/coder.c:134 > msgid "Memory usage limit is too low for the given filter setup." > msgstr "å åç¨ééå¶å¯¹æå®è¿æ»¤å¨è®¾ç½®è¿ä½ã" > >-#: src/xz/coder.c:159 >+#: src/xz/coder.c:169 > msgid "Using a preset in raw mode is discouraged." > msgstr "ä¸æ¨èå¨ raw 模å¼ä½¿ç¨é¢è®¾ç级ã" > >-#: src/xz/coder.c:161 >+#: src/xz/coder.c:171 > msgid "The exact options of the presets may vary between software versions." > msgstr "å个é¢è®¾ç级æ使ç¨çåç¡®é项å表å¨ä¸å软件çæ¬ä¹é´å¯è½ä¸åã" > >-#: src/xz/coder.c:184 >+#: src/xz/coder.c:194 > msgid "The .lzma format supports only the LZMA1 filter" > msgstr ".lzma æ ¼å¼åªæ¯æ LZMA1 è¿æ»¤å¨" > >-#: src/xz/coder.c:192 >+#: src/xz/coder.c:202 > msgid "LZMA1 cannot be used with the .xz format" > msgstr "LZMA1 æ æ³ç¨äº .xz æ ¼å¼" > >-#: src/xz/coder.c:209 >+#: src/xz/coder.c:219 > msgid "The filter chain is incompatible with --flush-timeout" > msgstr "è¿æ»¤å¨é¾å --flush-timeout ä¸å ¼å®¹" > >-#: src/xz/coder.c:215 >+#: src/xz/coder.c:225 > msgid "Switching to single-threaded mode due to --flush-timeout" > msgstr "å --flush-timeout èåæ¢è³å线ç¨æ¨¡å¼" > >-#: src/xz/coder.c:235 >+#: src/xz/coder.c:249 > #, c-format > msgid "Using up to %<PRIu32> threads." > msgstr "使ç¨æå¤ %<PRIu32> 个线ç¨ã" > >-#: src/xz/coder.c:251 >+#: src/xz/coder.c:265 > msgid "Unsupported filter chain or filter options" > msgstr "ä¸æ¯æçè¿æ»¤å¨é¾æè¿æ»¤å¨é项" > >-#: src/xz/coder.c:263 >+#: src/xz/coder.c:277 > #, c-format > msgid "Decompression will need %s MiB of memory." > msgstr "解å缩éè¦ %s MiB çå åã" > >-#: src/xz/coder.c:300 >+#: src/xz/coder.c:309 > #, c-format >-msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >-msgstr "å·²å°æ使ç¨ç线ç¨æ°ä» %s è°æ´ä¸º %sï¼ä»¥ä¸è¶ åº %s MiB çå åç¨ééå¶" >+msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgstr "å·²å°æ使ç¨ç线ç¨æ°ä» %s åå°ä¸º %sï¼ä»¥ä¸è¶ åº %s MiB çå åç¨ééå¶" > >-#: src/xz/coder.c:354 >+#: src/xz/coder.c:329 > #, c-format >+msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway." >+msgstr "å·²å°æ使ç¨ç线ç¨æ°ä» %s åå°ä¸º 1ãè¿ä»ç¶è¶ åºäºèªå¨çå å使ç¨éå¶ %s MiBãéè¦ %s MiB çå åã继ç»æä½ã" >+ >+#: src/xz/coder.c:356 >+#, c-format >+msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB" >+msgstr "æ£å¨åæ¢å°å线ç¨æ¨¡å¼ä»¥ä¸è¶ åº %s MiB çå åç¨ééå¶" >+ >+#: src/xz/coder.c:411 >+#, c-format > msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" > msgstr "å·²è°æ´ LZMA%c åå ¸å¤§å°ï¼ä» %s MiB è°æ´ä¸º %s MiBï¼ï¼ä»¥ä¸è¶ åº %s MiB çå åç¨ééå¶" > >@@ -121,11 +141,11 @@ > msgid "Error creating a pipe: %s" > msgstr "å建管éæ¶åºéï¼%s" > >-#: src/xz/file_io.c:224 >+#: src/xz/file_io.c:252 > msgid "Failed to enable the sandbox" > msgstr "æ²çå¯ç¨å¤±è´¥" > >-#: src/xz/file_io.c:266 >+#: src/xz/file_io.c:294 > #, c-format > msgid "%s: poll() failed: %s" > msgstr "%sï¼poll() 失败ï¼%s" >@@ -140,195 +160,321 @@ > #. it is possible that the user has put a new file in place > #. of the original file, and in that case it obviously > #. shouldn't be removed. >-#: src/xz/file_io.c:333 >+#: src/xz/file_io.c:361 > #, c-format > msgid "%s: File seems to have been moved, not removing" > msgstr "%sï¼æ件似ä¹å·²ç§»å¨ï¼ä¸åè¿è¡å é¤æä½" > >-#: src/xz/file_io.c:340 src/xz/file_io.c:882 >+#: src/xz/file_io.c:368 src/xz/file_io.c:924 > #, c-format > msgid "%s: Cannot remove: %s" > msgstr "%sï¼æ æ³å é¤ï¼%s" > >-#: src/xz/file_io.c:366 >+#: src/xz/file_io.c:394 > #, c-format > msgid "%s: Cannot set the file owner: %s" > msgstr "%sï¼æ æ³è®¾ç½®æ件ææè ï¼%s" > >-#: src/xz/file_io.c:372 >+#: src/xz/file_io.c:407 > #, c-format > msgid "%s: Cannot set the file group: %s" > msgstr "%sï¼æ æ³è®¾ç½®æ件ææç»ï¼%s" > >-#: src/xz/file_io.c:391 >+#: src/xz/file_io.c:426 > #, c-format > msgid "%s: Cannot set the file permissions: %s" > msgstr "%sï¼æ æ³è®¾ç½®æ件æéï¼%s" > >-#: src/xz/file_io.c:517 >+#: src/xz/file_io.c:552 > #, c-format > msgid "Error getting the file status flags from standard input: %s" > msgstr "ä»æ åè¾å ¥è·åæ件ç¶ææ å¿åºéï¼%s" > >-#: src/xz/file_io.c:574 src/xz/file_io.c:636 >+#: src/xz/file_io.c:610 src/xz/file_io.c:672 > #, c-format > msgid "%s: Is a symbolic link, skipping" > msgstr "%sï¼æ¯ç¬¦å·é¾æ¥ï¼è·³è¿" > >-#: src/xz/file_io.c:665 >+#: src/xz/file_io.c:701 > #, c-format > msgid "%s: Is a directory, skipping" > msgstr "%sï¼æ¯ç®å½ï¼è·³è¿" > >-#: src/xz/file_io.c:671 >+#: src/xz/file_io.c:707 > #, c-format > msgid "%s: Not a regular file, skipping" > msgstr "%sï¼ä¸æ¯æ åæ件ï¼è·³è¿" > >-#: src/xz/file_io.c:688 >+#: src/xz/file_io.c:724 > #, c-format > msgid "%s: File has setuid or setgid bit set, skipping" > msgstr "%sï¼æ件æ设置ç¨æ·IDæ设置ç»IDæ è¯ï¼è·³è¿" > >-#: src/xz/file_io.c:695 >+#: src/xz/file_io.c:731 > #, c-format > msgid "%s: File has sticky bit set, skipping" > msgstr "%sï¼æ件æç²æ»ä½æ è¯ï¼è·³è¿" > >-#: src/xz/file_io.c:702 >+#: src/xz/file_io.c:738 > #, c-format > msgid "%s: Input file has more than one hard link, skipping" > msgstr "%sï¼è¾å ¥æ件æå¤äºä¸ä¸ªç¡¬é¾æ¥ï¼è·³è¿" > >-#: src/xz/file_io.c:792 >+#: src/xz/file_io.c:780 >+msgid "Empty filename, skipping" >+msgstr "空æ件åï¼è·³è¿" >+ >+#: src/xz/file_io.c:834 > #, c-format > msgid "Error restoring the status flags to standard input: %s" > msgstr "åå¤æ åè¾å ¥çç¶ææ å¿æ¶åºéï¼%s" > >-#: src/xz/file_io.c:840 >+#: src/xz/file_io.c:882 > #, c-format > msgid "Error getting the file status flags from standard output: %s" > msgstr "è·åæ åè¾åºçæ件ç¶ææ å¿æ¶åºéï¼%s" > >-#: src/xz/file_io.c:1018 >+#: src/xz/file_io.c:1060 > #, c-format > msgid "Error restoring the O_APPEND flag to standard output: %s" > msgstr "æ¢å¤æ åè¾åºç O_APPEND æ å¿æ¶åºéï¼%s" > >-#: src/xz/file_io.c:1030 >+#: src/xz/file_io.c:1072 > #, c-format > msgid "%s: Closing the file failed: %s" > msgstr "%sï¼å ³éæ件失败ï¼%s" > >-#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 >+#: src/xz/file_io.c:1108 src/xz/file_io.c:1371 > #, c-format > msgid "%s: Seeking failed when trying to create a sparse file: %s" > msgstr "%sï¼å°è¯å建ç¨çæä»¶æ¶ seek 失败ï¼%s" > >-#: src/xz/file_io.c:1167 >+#: src/xz/file_io.c:1209 > #, c-format > msgid "%s: Read error: %s" > msgstr "%sï¼è¯»åé误ï¼%s" > >-#: src/xz/file_io.c:1191 >+#: src/xz/file_io.c:1239 > #, c-format > msgid "%s: Error seeking the file: %s" > msgstr "%sï¼seek æ件æ¶åºéï¼%s" > >-#: src/xz/file_io.c:1201 >+#: src/xz/file_io.c:1263 > #, c-format > msgid "%s: Unexpected end of file" > msgstr "%sï¼æªé¢æçæ件ç»æ" > >-#: src/xz/file_io.c:1260 >+#: src/xz/file_io.c:1322 > #, c-format > msgid "%s: Write error: %s" > msgstr "%sï¼åå ¥é误ï¼%s" > >-#: src/xz/hardware.c:137 >+#: src/xz/hardware.c:238 > msgid "Disabled" > msgstr "å·²ç¦ç¨" > >-#. TRANSLATORS: Test with "xz --info-memory" to see if >-#. the alignment looks nice. >-#: src/xz/hardware.c:156 >-msgid "Total amount of physical memory (RAM): " >-msgstr "ç©çå åï¼RAMï¼æ»éï¼ " >+#: src/xz/hardware.c:269 >+msgid "Amount of physical memory (RAM):" >+msgstr "ç©çå åï¼RAMï¼ç¨éï¼" > >-#: src/xz/hardware.c:158 >-msgid "Memory usage limit for compression: " >-msgstr "ç¨äºå缩çå åç¨ééå¶ï¼ " >+#: src/xz/hardware.c:270 >+msgid "Number of processor threads:" >+msgstr "å¤çå¨çº¿ç¨æ°ï¼" > >-#: src/xz/hardware.c:160 >-msgid "Memory usage limit for decompression: " >-msgstr "ç¨äºè§£å缩çå åç¨ééå¶ï¼ " >+#: src/xz/hardware.c:271 >+msgid "Compression:" >+msgstr "å缩ï¼" > >+#: src/xz/hardware.c:272 >+msgid "Decompression:" >+msgstr "解å缩ï¼" >+ >+#: src/xz/hardware.c:273 >+msgid "Multi-threaded decompression:" >+msgstr "å¤çº¿ç¨è§£å缩ï¼" >+ >+#: src/xz/hardware.c:274 >+msgid "Default for -T0:" >+msgstr "-T0 çé»è®¤å¼ï¼" >+ >+#: src/xz/hardware.c:292 >+msgid "Hardware information:" >+msgstr "硬件信æ¯ï¼" >+ >+#: src/xz/hardware.c:299 >+msgid "Memory usage limits:" >+msgstr "å å使ç¨éå¶ï¼" >+ >+#: src/xz/list.c:68 >+msgid "Streams:" >+msgstr "æµï¼" >+ >+#: src/xz/list.c:69 >+msgid "Blocks:" >+msgstr "åï¼" >+ >+#: src/xz/list.c:70 >+msgid "Compressed size:" >+msgstr "å缩å大å°ï¼" >+ >+#: src/xz/list.c:71 >+msgid "Uncompressed size:" >+msgstr "解å缩大å°ï¼" >+ >+#: src/xz/list.c:72 >+msgid "Ratio:" >+msgstr "æ¯ä¾ï¼" >+ >+#: src/xz/list.c:73 >+msgid "Check:" >+msgstr "æ ¡éªï¼" >+ >+#: src/xz/list.c:74 >+msgid "Stream Padding:" >+msgstr "æµå¡«å 大å°ï¼" >+ >+#: src/xz/list.c:75 >+msgid "Memory needed:" >+msgstr "æéå åï¼" >+ >+#: src/xz/list.c:76 >+msgid "Sizes in headers:" >+msgstr "头é¨åæ¾å¤§å°ï¼" >+ >+#: src/xz/list.c:79 >+msgid "Number of files:" >+msgstr "æ件æ°éï¼" >+ >+#: src/xz/list.c:122 >+msgid "Stream" >+msgstr "æµ" >+ >+#: src/xz/list.c:123 >+msgid "Block" >+msgstr "å" >+ >+#: src/xz/list.c:124 >+msgid "Blocks" >+msgstr "å" >+ >+#: src/xz/list.c:125 >+msgid "CompOffset" >+msgstr "å缩å移é" >+ >+#: src/xz/list.c:126 >+msgid "UncompOffset" >+msgstr "解åå移é" >+ >+#: src/xz/list.c:127 >+msgid "CompSize" >+msgstr "å缩å大å°" >+ >+#: src/xz/list.c:128 >+msgid "UncompSize" >+msgstr "解å缩大å°" >+ >+#: src/xz/list.c:129 >+msgid "TotalSize" >+msgstr "æ»å¤§å°" >+ >+#: src/xz/list.c:130 >+msgid "Ratio" >+msgstr "æ¯ä¾" >+ >+#: src/xz/list.c:131 >+msgid "Check" >+msgstr "æ ¡éª" >+ >+#: src/xz/list.c:132 >+msgid "CheckVal" >+msgstr "æ ¡éªå¼" >+ >+#: src/xz/list.c:133 >+msgid "Padding" >+msgstr "å¡«å " >+ >+#: src/xz/list.c:134 >+msgid "Header" >+msgstr "头é¨" >+ >+#: src/xz/list.c:135 >+msgid "Flags" >+msgstr "æ å¿" >+ >+#: src/xz/list.c:136 >+msgid "MemUsage" >+msgstr "å åç¨é" >+ >+#: src/xz/list.c:137 >+msgid "Filters" >+msgstr "è¿æ»¤å¨" >+ > #. TRANSLATORS: Indicates that there is no integrity check. >-#. This string is used in tables, so the width must not >-#. exceed ten columns with a fixed-width font. >-#: src/xz/list.c:65 >+#. This string is used in tables. In older xz version this >+#. string was limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:169 > msgid "None" > msgstr "æ " > > #. TRANSLATORS: Indicates that integrity check name is not known, >-#. but the Check ID is known (here 2). This and other "Unknown-N" >-#. strings are used in tables, so the width must not exceed ten >-#. columns with a fixed-width font. It's OK to omit the dash if >-#. you need space for one extra letter, but don't use spaces. >-#: src/xz/list.c:72 >+#. but the Check ID is known (here 2). In older xz version these >+#. strings were limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:175 > msgid "Unknown-2" > msgstr "æªç¥-2" > >-#: src/xz/list.c:73 >+#: src/xz/list.c:176 > msgid "Unknown-3" > msgstr "æªç¥-3" > >-#: src/xz/list.c:75 >+#: src/xz/list.c:178 > msgid "Unknown-5" > msgstr "æªç¥-5" > >-#: src/xz/list.c:76 >+#: src/xz/list.c:179 > msgid "Unknown-6" > msgstr "æªç¥-6" > >-#: src/xz/list.c:77 >+#: src/xz/list.c:180 > msgid "Unknown-7" > msgstr "æªç¥-7" > >-#: src/xz/list.c:78 >+#: src/xz/list.c:181 > msgid "Unknown-8" > msgstr "æªç¥-8" > >-#: src/xz/list.c:79 >+#: src/xz/list.c:182 > msgid "Unknown-9" > msgstr "æªç¥-9" > >-#: src/xz/list.c:81 >+#: src/xz/list.c:184 > msgid "Unknown-11" > msgstr "æªç¥-11" > >-#: src/xz/list.c:82 >+#: src/xz/list.c:185 > msgid "Unknown-12" > msgstr "æªç¥-12" > >-#: src/xz/list.c:83 >+#: src/xz/list.c:186 > msgid "Unknown-13" > msgstr "æªç¥-13" > >-#: src/xz/list.c:84 >+#: src/xz/list.c:187 > msgid "Unknown-14" > msgstr "æªç¥-14" > >-#: src/xz/list.c:85 >+#: src/xz/list.c:188 > msgid "Unknown-15" > msgstr "æªç¥-15" > >-#: src/xz/list.c:153 >+#: src/xz/list.c:351 > #, c-format > msgid "%s: File is empty" > msgstr "%sï¼æ件为空" > >-#: src/xz/list.c:158 >+#: src/xz/list.c:356 > #, c-format > msgid "%s: Too small to be a valid .xz file" > msgstr "%sï¼è¿å°èä¸æ¯ææç .xz æ件" >@@ -337,124 +483,40 @@ > #. to Ratio, the columns are right aligned. Check and Filename > #. are left aligned. If you need longer words, it's OK to > #. use two lines here. Test with "xz -l foo.xz". >-#: src/xz/list.c:677 >+#: src/xz/list.c:730 > msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" > msgstr " æµ å åç¼©å¤§å° è§£åå¤§å° æ¯ä¾ æ ¡éª æ件å" > >-#: src/xz/list.c:717 >-#, c-format >-msgid " Streams: %s\n" >-msgstr " æµï¼ %s\n" >- >-#: src/xz/list.c:719 >-#, c-format >-msgid " Blocks: %s\n" >-msgstr " åï¼ %s\n" >- >-#: src/xz/list.c:721 >-#, c-format >-msgid " Compressed size: %s\n" >-msgstr " å缩å大å°ï¼ %s\n" >- >-#: src/xz/list.c:724 >-#, c-format >-msgid " Uncompressed size: %s\n" >-msgstr " 解å缩大å°ï¼ %s\n" >- >-#: src/xz/list.c:727 >-#, c-format >-msgid " Ratio: %s\n" >-msgstr " å缩æ¯ï¼ %s\n" >- >-#: src/xz/list.c:729 >-#, c-format >-msgid " Check: %s\n" >-msgstr " æ ¡éªæ¹å¼ï¼ %s\n" >- >-#: src/xz/list.c:730 >-#, c-format >-msgid " Stream padding: %s\n" >-msgstr " æµå¡«å 大å°ï¼ %s\n" >- >-#. TRANSLATORS: The second line is column headings. All except >-#. Check are right aligned; Check is left aligned. Test with >-#. "xz -lv foo.xz". >-#: src/xz/list.c:758 >-msgid "" >-" Streams:\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >-msgstr "" >-" æµï¼\n" >-" æµ å å缩å移é 解åå移é åç¼©å¤§å° è§£åå¤§å° æ¯ä¾ æ ¡éª å¡«å " >- >-#. TRANSLATORS: The second line is column headings. All >-#. except Check are right aligned; Check is left aligned. >-#: src/xz/list.c:813 >-#, c-format >-msgid "" >-" Blocks:\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >-msgstr "" >-" åï¼\n" >-" æµ å å缩å移é 解åå移é æ»è®¡å¤§å° 解åå¤§å° æ¯ä¾ æ ¡éª" >- >-#. TRANSLATORS: These are additional column headings >-#. for the most verbose listing mode. CheckVal >-#. (Check value), Flags, and Filters are left aligned. >-#. Header (Block Header Size), CompSize, and MemUsage >-#. are right aligned. %*s is replaced with 0-120 >-#. spaces to make the CheckVal column wide enough. >-#. Test with "xz -lvv foo.xz". >-#: src/xz/list.c:825 >-#, c-format >-msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >-msgstr " CheckVal %*s å¤´é¨ æ è®° åç¼©å¤§å° å åä½¿ç¨ è¿æ»¤å¨" >- >-#: src/xz/list.c:903 src/xz/list.c:1078 >-#, c-format >-msgid " Memory needed: %s MiB\n" >-msgstr " æéå åï¼ %s MiB\n" >- >-#: src/xz/list.c:905 src/xz/list.c:1080 >-#, c-format >-msgid " Sizes in headers: %s\n" >-msgstr " 头é¨åæ¾å¤§å°ï¼ %s\n" >- >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "Yes" > msgstr "æ¯" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "No" > msgstr "å¦" > >-#: src/xz/list.c:907 src/xz/list.c:1082 >+#: src/xz/list.c:1027 src/xz/list.c:1205 > #, c-format > msgid " Minimum XZ Utils version: %s\n" > msgstr " æä½ XZ Utils çæ¬ï¼%s\n" > > #. TRANSLATORS: %s is an integer. Only the plural form of this > #. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz". >-#: src/xz/list.c:1057 >+#: src/xz/list.c:1178 > #, c-format > msgid "%s file\n" > msgid_plural "%s files\n" > msgstr[0] "%s æ件\n" > >-#: src/xz/list.c:1070 >+#: src/xz/list.c:1191 > msgid "Totals:" > msgstr "æ»è®¡ï¼" > >-#: src/xz/list.c:1071 >-#, c-format >-msgid " Number of files: %s\n" >-msgstr " æ件æ°éï¼ %s\n" >- >-#: src/xz/list.c:1146 >+#: src/xz/list.c:1269 > msgid "--list works only on .xz files (--format=xz or --format=auto)" > msgstr "--list ä» éç¨äº .xz æ件ï¼--format=xz æ --format=autoï¼" > >-#: src/xz/list.c:1152 >+#: src/xz/list.c:1275 > msgid "--list does not support reading from standard input" > msgstr "--list ä¸æ¯æä»æ åè¾å ¥è¯»å" > >@@ -473,11 +535,11 @@ > msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" > msgstr "%sï¼è¯»åæ件åå表æ¶è·å¾äºç©ºå符ï¼æ¨å¯è½æ³è¦ä½¿ç¨â--files0âèéâ--filesâï¼" > >-#: src/xz/main.c:174 >+#: src/xz/main.c:188 > msgid "Compression and decompression with --robot are not supported yet." > msgstr "å°ä¸æ¯æ带 --robot çå缩å解å缩ã" > >-#: src/xz/main.c:252 >+#: src/xz/main.c:266 > msgid "Cannot read data from standard input when reading filenames from standard input" > msgstr "æ æ³åæ¶ä»æ åè¾å ¥è¯»åæ°æ®åæ件åå表" > >@@ -485,68 +547,68 @@ > #. of the line in messages. Usually it becomes "xz: ". > #. This is a translatable string because French needs > #. a space before a colon. >-#: src/xz/message.c:728 >+#: src/xz/message.c:725 > #, c-format > msgid "%s: " > msgstr "%sï¼" > >-#: src/xz/message.c:791 src/xz/message.c:841 >+#: src/xz/message.c:797 src/xz/message.c:856 > msgid "Internal error (bug)" > msgstr "å é¨é误ï¼bugï¼" > >-#: src/xz/message.c:798 >+#: src/xz/message.c:804 > msgid "Cannot establish signal handlers" > msgstr "æ æ³å»ºç«ä¿¡å·å¤çå¨" > >-#: src/xz/message.c:807 >+#: src/xz/message.c:813 > msgid "No integrity check; not verifying file integrity" > msgstr "æ å®æ´æ§æ£æ¥ï¼å°ä¸éªè¯æ件å®æ´æ§" > >-#: src/xz/message.c:810 >+#: src/xz/message.c:816 > msgid "Unsupported type of integrity check; not verifying file integrity" > msgstr "ä¸æ¯æçå®æ´æ§æ£æ¥ç±»åï¼å°ä¸éªè¯æ件å®æ´æ§" > >-#: src/xz/message.c:817 >+#: src/xz/message.c:823 > msgid "Memory usage limit reached" > msgstr "è¾¾å°å å使ç¨éå¶" > >-#: src/xz/message.c:820 >+#: src/xz/message.c:826 > msgid "File format not recognized" > msgstr "æ æ³è¯å«æä»¶æ ¼å¼" > >-#: src/xz/message.c:823 >+#: src/xz/message.c:829 > msgid "Unsupported options" > msgstr "ä¸æ¯æçé项" > >-#: src/xz/message.c:826 >+#: src/xz/message.c:832 > msgid "Compressed data is corrupt" > msgstr "å缩æ°æ®å·²æå" > >-#: src/xz/message.c:829 >+#: src/xz/message.c:835 > msgid "Unexpected end of input" > msgstr "è¾å ¥æå¤ç»æ" > >-#: src/xz/message.c:862 >+#: src/xz/message.c:877 > #, c-format > msgid "%s MiB of memory is required. The limiter is disabled." > msgstr "éè¦ %s MiB çå å空é´ãéå¶å·²ç¦ç¨ã" > >-#: src/xz/message.c:890 >+#: src/xz/message.c:905 > #, c-format > msgid "%s MiB of memory is required. The limit is %s." > msgstr "éè¦ %s MiB çå å空é´ãéå¶ä¸º %sã" > >-#: src/xz/message.c:1057 >+#: src/xz/message.c:924 > #, c-format > msgid "%s: Filter chain: %s\n" > msgstr "%sï¼è¿æ»¤å¨é¾ï¼%s\n" > >-#: src/xz/message.c:1067 >+#: src/xz/message.c:935 > #, c-format > msgid "Try `%s --help' for more information." > msgstr "请å°è¯æ§è¡â%s --helpâæ¥è·åæ´å¤ä¿¡æ¯ã" > >-#: src/xz/message.c:1093 >+#: src/xz/message.c:961 > #, c-format > msgid "" > "Usage: %s [OPTION]... [FILE]...\n" >@@ -557,15 +619,15 @@ > "ä½¿ç¨ .xz æ ¼å¼å缩æ解å缩æ件ã\n" > "\n" > >-#: src/xz/message.c:1100 >+#: src/xz/message.c:968 > msgid "Mandatory arguments to long options are mandatory for short options too.\n" > msgstr "å¿ éåæ°å¯¹é¿çé项åæ¶éç¨ã\n" > >-#: src/xz/message.c:1104 >+#: src/xz/message.c:972 > msgid " Operation mode:\n" > msgstr " æä½æ¨¡å¼ï¼\n" > >-#: src/xz/message.c:1107 >+#: src/xz/message.c:975 > msgid "" > " -z, --compress force compression\n" > " -d, --decompress force decompression\n" >@@ -577,7 +639,7 @@ > " -t, --test æµè¯å缩æ件å®æ´æ§\n" > " -l, --list ååº .xz æ件çä¿¡æ¯" > >-#: src/xz/message.c:1113 >+#: src/xz/message.c:981 > msgid "" > "\n" > " Operation modifiers:\n" >@@ -585,7 +647,7 @@ > "\n" > " æä½ä¿®é¥°ç¬¦ï¼\n" > >-#: src/xz/message.c:1116 >+#: src/xz/message.c:984 > msgid "" > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" >@@ -595,13 +657,13 @@ > " -f, --force 强å¶è¦åè¾åºæ件åï¼è§£ï¼å缩é¾æ¥\n" > " -c, --stdout åæ åè¾åºåå ¥ï¼åæ¶ä¸è¦å é¤è¾å ¥æ件" > >-#: src/xz/message.c:1122 >+#: src/xz/message.c:993 > msgid "" > " --single-stream decompress only the first stream, and silently\n" > " ignore possible remaining input data" > msgstr " --single-stream ä» è§£å缩第ä¸ä¸ªæµï¼å¿½ç¥å ¶åå¯è½ç»§ç»åºç°çè¾å ¥æ°æ®" > >-#: src/xz/message.c:1125 >+#: src/xz/message.c:996 > msgid "" > " --no-sparse do not create sparse files when decompressing\n" > " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" >@@ -616,7 +678,7 @@ > " å°ä»æ åè¾å ¥è¯»åæ件åå表ï¼æ件åå¿ é¡»ä½¿ç¨æ¢è¡ç¬¦åé\n" > " --files0[=æ件] 类似 --filesï¼ä½ä½¿ç¨ç©ºå符è¿è¡åé" > >-#: src/xz/message.c:1134 >+#: src/xz/message.c:1005 > msgid "" > "\n" > " Basic file format and compression options:\n" >@@ -624,23 +686,24 @@ > "\n" > " åºæ¬æä»¶æ ¼å¼åå缩é项ï¼\n" > >-#: src/xz/message.c:1136 >+#: src/xz/message.c:1007 > msgid "" > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'" > msgstr "" > " -F, --format=æ ¼å¼ è¦ç¼ç æ解ç çæä»¶æ ¼å¼ï¼å¯è½çå¼å æ¬\n" >-" âautoâï¼é»è®¤ï¼ãâxzâãâlzmaâåârawâ\n" >+" âautoâï¼é»è®¤ï¼ãâxzâãâlzmaâã\n" >+" âlzipâåârawâ\n" > " -C, --check=ç±»å å®æ´æ§æ£æ¥ç±»åï¼ânoneâï¼è¯·è°¨æ 使ç¨ï¼ã\n" > " âcrc32âãâcrc64âï¼é»è®¤ï¼æâsha256â" > >-#: src/xz/message.c:1141 >+#: src/xz/message.c:1012 > msgid " --ignore-check don't verify the integrity check when decompressing" > msgstr " --ignore-check 解å缩æ¶ä¸è¦è¿è¡å®æ´æ§æ£æ¥éªè¯" > >-#: src/xz/message.c:1145 >+#: src/xz/message.c:1016 > msgid "" > " -0 ... -9 compression preset; default is 6; take compressor *and*\n" > " decompressor memory usage into account before using 7-9!" >@@ -648,7 +711,7 @@ > " -0 ... -9 å缩é¢è®¾ç级ï¼é»è®¤ä¸º 6ï¼ä½¿ç¨ 7-9 çç级ä¹åï¼è¯·å èè\n" > " å缩å解å缩æéçå åç¨éï¼ï¼ä¼å ç¨å¤§éå å空é´ï¼" > >-#: src/xz/message.c:1149 >+#: src/xz/message.c:1020 > msgid "" > " -e, --extreme try to improve compression ratio by using more CPU time;\n" > " does not affect decompressor memory requirements" >@@ -656,7 +719,7 @@ > " -e, --extreme å°è¯ä½¿ç¨æ´å¤ CPU æ¶é´æ¥æ¹è¿å缩æ¯çï¼\n" > " ä¸ä¼å½±å解å缩çå åéæ±é" > >-#: src/xz/message.c:1153 >+#: src/xz/message.c:1024 > msgid "" > " -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" > " to use as many threads as there are processor cores" >@@ -664,7 +727,7 @@ > " -T, --threads=æ°é 使ç¨æå¤æå®æ°éç线ç¨ï¼é»è®¤å¼ä¸º 1ï¼è®¾ç½®ä¸º 0\n" > " å¯ä»¥ä½¿ç¨ä¸å¤çå¨å æ ¸æ°éç¸åç线ç¨æ°" > >-#: src/xz/message.c:1158 >+#: src/xz/message.c:1029 > msgid "" > " --block-size=SIZE\n" > " start a new .xz block after every SIZE bytes of input;\n" >@@ -674,7 +737,7 @@ > " è¾å ¥æ¯è¯»åæå®å大å°çæ°æ®åå³å¼å§ä¸ä¸ªæ°ç .xz åï¼\n" > " 使ç¨è¯¥é项å¯ä»¥è®¾ç½®å¤çº¿ç¨å缩ä¸çå大å°" > >-#: src/xz/message.c:1162 >+#: src/xz/message.c:1033 > msgid "" > " --block-list=SIZES\n" > " start a new .xz block after the given comma-separated\n" >@@ -684,7 +747,7 @@ > " å¨æç»åºçæªå缩æ°æ®é´é大å°çæ°æ®ä¹åå¼å§ä¸ä¸ªæ°ç\n" > " .xz åï¼ä½¿ç¨éå·åéï¼" > >-#: src/xz/message.c:1166 >+#: src/xz/message.c:1037 > msgid "" > " --flush-timeout=TIMEOUT\n" > " when compressing, if more than TIMEOUT milliseconds has\n" >@@ -695,29 +758,32 @@ > " è¿è¡å缩æ¶ï¼å¦æä»ä¸æ¬¡å·æ´è¾åºä¹åç»è¿äºæå®çè¶ æ¶æ¶é´\n" > " ä¸è¯»åæ´å¤æ°æ®ä¼è¢«é»å¡ï¼åå·æ´è¾åºææç¼å²æ°æ®" > >-#: src/xz/message.c:1172 >+#: src/xz/message.c:1043 > #, no-c-format > msgid "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults" > msgstr "" > " --memlimit-compress=éå¶ç¨é\n" > " --memlimit-decompress=éå¶ç¨é\n" >+" --memlimit-mt-decompress=éå¶ç¨é\n" > " -M, --memlimit=éå¶ç¨é\n" >-" 设置å缩ã解å缩æè 两è å ±åçå åç¨ééå¶ï¼\n" >+" 设置å缩ã解å缩ãå¤çº¿ç¨è§£å缩æè å ±åçå åç¨ééå¶ï¼\n" > " ææå®éå¶éåä½ä¸ºåèï¼æ以ç¾åå· % ç»å°¾è¡¨ç¤ºå åæ¯ä¾ï¼\n" > " æè æå® 0 å软件é»è®¤å¼" > >-#: src/xz/message.c:1179 >+#: src/xz/message.c:1052 > msgid "" > " --no-adjust if compression settings exceed the memory usage limit,\n" > " give an error instead of adjusting the settings downwards" > msgstr " --no-adjust å¦æåç¼©è®¾ç½®è¶ åºå åç¨ééå¶ï¼ä¸è°æ´è®¾ç½®èç´æ¥æ¥é" > >-#: src/xz/message.c:1185 >+#: src/xz/message.c:1058 > msgid "" > "\n" > " Custom filter chain for compression (alternative for using presets):" >@@ -725,7 +791,7 @@ > "\n" > " ç¨äºå缩çèªå®ä¹è¿æ»¤å¨é¾ï¼ä¸ä½¿ç¨é¢è®¾ç级æ¶çå¤éç¨æ³ï¼ï¼" > >-#: src/xz/message.c:1194 >+#: src/xz/message.c:1067 > msgid "" > "\n" > " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" >@@ -754,29 +820,31 @@ > " (hc3, hc4, bt2, bt3, bt4; bt4)\n" > " depth=æ°å æ大æç´¢æ·±åº¦ï¼ 0=èªå¨ï¼é»è®¤ï¼" > >-#: src/xz/message.c:1209 >+#: src/xz/message.c:1082 > msgid "" > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)" > msgstr "" > "\n" > " --x86[=é项] x86 BCJ è¿æ»¤å¨ï¼32 ä½å 64 ä½ï¼\n" >+" --arm[=é项] ARM BCJ è¿æ»¤å¨\n" >+" --armthumb[=é项] ARM-Thumb BCJ è¿æ»¤å¨\n" >+" --arm64[=é项] ARM64 BCJ è¿æ»¤å¨\n" > " --powerpc[=é项] PowerPC BCJ è¿æ»¤å¨ï¼ä» 大端åºï¼\n" > " --ia64[=é项] IA-64 (Itaniumï¼å®è ¾) BCJ è¿æ»¤å¨\n" >-" --arm[=é项] ARM BCJ è¿æ»¤å¨ï¼ä» å°ç«¯åºï¼\n" >-" --armthumb[=é项] ARM-Thumb BCJ è¿æ»¤å¨ï¼ä» å°ç«¯åºï¼\n" > " --sparc[=é项] SPARC BCJ è¿æ»¤å¨\n" > " ææè¿æ»¤å¨å¯ç¨é项ï¼\n" > " start=æ°å 转æ¢çèµ·å§å移éï¼é»è®¤=0ï¼" > >-#: src/xz/message.c:1221 >+#: src/xz/message.c:1095 > msgid "" > "\n" > " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" >@@ -787,7 +855,7 @@ > " --delta[=é项] å¢éè¿æ»¤å¨ï¼ææé项ï¼ææå¼ï¼é»è®¤å¼ï¼ï¼\n" > " dist=NUM ç¸åçåèä¹é´çè·ç¦» (1-256; 1)" > >-#: src/xz/message.c:1229 >+#: src/xz/message.c:1103 > msgid "" > "\n" > " Other options:\n" >@@ -795,7 +863,7 @@ > "\n" > " å ¶å®é项ï¼\n" > >-#: src/xz/message.c:1232 >+#: src/xz/message.c:1106 > msgid "" > " -q, --quiet suppress warnings; specify twice to suppress errors too\n" > " -v, --verbose be verbose; specify twice for even more verbose" >@@ -803,21 +871,21 @@ > " -q, --quiet ä¸æ¾ç¤ºè¦åä¿¡æ¯ï¼æå®ä¸¤æ¬¡å¯ä¸æ¾ç¤ºé误信æ¯\n" > " -v, --verbose è¾åºè¯¦ç»ä¿¡æ¯ï¼æå®ä¸¤æ¬¡å¯ä»¥è¾åºæ´è¯¦ç»çä¿¡æ¯" > >-#: src/xz/message.c:1237 >+#: src/xz/message.c:1111 > msgid " -Q, --no-warn make warnings not affect the exit status" > msgstr " -Q, --no-warn 使å¾è¦åä¿¡æ¯ä¸å½±åç¨åºéåºè¿åå¼" > >-#: src/xz/message.c:1239 >+#: src/xz/message.c:1113 > msgid " --robot use machine-parsable messages (useful for scripts)" > msgstr " --robot 使ç¨æºå¨å¯è§£æçä¿¡æ¯ï¼å¯¹äºèæ¬æç¨ï¼" > >-#: src/xz/message.c:1242 >+#: src/xz/message.c:1116 > msgid "" > " --info-memory display the total amount of RAM and the currently active\n" > " memory usage limits, and exit" > msgstr " --info-memory æ¾ç¤º RAM æ»éåå½åé ç½®çå åç¨ééå¶ï¼ç¶åéåº" > >-#: src/xz/message.c:1245 >+#: src/xz/message.c:1119 > msgid "" > " -h, --help display the short help (lists only the basic options)\n" > " -H, --long-help display this long help and exit" >@@ -825,7 +893,7 @@ > " -h, --help æ¾ç¤ºç帮å©ä¿¡æ¯ï¼ä» ååºåºæ¬é项ï¼\n" > " -H, --long-help æ¾ç¤ºæ¬é¿å¸®å©ä¿¡æ¯" > >-#: src/xz/message.c:1249 >+#: src/xz/message.c:1123 > msgid "" > " -h, --help display this short help and exit\n" > " -H, --long-help display the long help (lists also the advanced options)" >@@ -833,11 +901,11 @@ > " -h, --help æ¾ç¤ºæ¬ç帮å©ä¿¡æ¯å¹¶éåº\n" > " -H, --long-help æ¾ç¤ºé¿å¸®å©ä¿¡æ¯ï¼åæ¶ååºé«çº§é项ï¼" > >-#: src/xz/message.c:1254 >+#: src/xz/message.c:1128 > msgid " -V, --version display the version number and exit" > msgstr " -V, --version æ¾ç¤ºè½¯ä»¶çæ¬å·å¹¶éåº" > >-#: src/xz/message.c:1256 >+#: src/xz/message.c:1130 > msgid "" > "\n" > "With no FILE, or when FILE is -, read standard input.\n" >@@ -849,7 +917,7 @@ > #. for this package. Please add _another line_ saying > #. "Report translation bugs to <...>\n" with the email or WWW > #. address for translation bugs. Thanks. >-#: src/xz/message.c:1262 >+#: src/xz/message.c:1136 > #, c-format > msgid "Report bugs to <%s> (in English or Finnish).\n" > msgstr "" >@@ -857,12 +925,12 @@ > "请使ç¨ä¸æå TP ç®ä½ä¸æç¿»è¯å¢é <i18n-zh@googlegroups.com>\n" > "æ¥å软件çç®ä½ä¸æç¿»è¯é误ã\n" > >-#: src/xz/message.c:1264 >+#: src/xz/message.c:1138 > #, c-format > msgid "%s home page: <%s>\n" > msgstr "%s 主页ï¼<%s>\n" > >-#: src/xz/message.c:1268 >+#: src/xz/message.c:1142 > msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." > msgstr "è¿æ¯å¼åçæ¬ï¼ä¸éç¨äºç产ç¯å¢ä½¿ç¨ã" > >@@ -890,27 +958,17 @@ > msgid "The sum of lc and lp must not exceed 4" > msgstr "lc å lp çåå¿ é¡»ä¸å¤§äº 4" > >-#: src/xz/options.c:359 >+#: src/xz/suffix.c:160 > #, c-format >-msgid "The selected match finder requires at least nice=%<PRIu32>" >-msgstr "æéä¸çå¹é æç´¢å¨ï¼match finderï¼è³å°éè¦ nice=%<PRIu32>" >- >-#: src/xz/suffix.c:133 src/xz/suffix.c:258 >-#, c-format >-msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >-msgstr "%sï¼å¨å¯ç¨ --format-raw é项æ¶ï¼å¿ é¡»æå® --suffix=.SUF è·ç¥åå ¥è³æ åè¾åº" >- >-#: src/xz/suffix.c:164 >-#, c-format > msgid "%s: Filename has an unknown suffix, skipping" > msgstr "%sï¼æ件åææªç¥åç¼ï¼è·³è¿" > >-#: src/xz/suffix.c:185 >+#: src/xz/suffix.c:181 > #, c-format > msgid "%s: File already has `%s' suffix, skipping" > msgstr "%sï¼æ件已æâ%sâåç¼åï¼è·³è¿" > >-#: src/xz/suffix.c:393 >+#: src/xz/suffix.c:388 > #, c-format > msgid "%s: Invalid filename suffix" > msgstr "%sï¼æ æçæ件ååç¼" >@@ -934,15 +992,11 @@ > msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]" > msgstr "é项â%sâçå¼å¿ é¡»ä½äº [%<PRIu64>, %<PRIu64>] èå´å " > >-#: src/xz/util.c:267 >-msgid "Empty filename, skipping" >-msgstr "空æ件åï¼è·³è¿" >- >-#: src/xz/util.c:281 >+#: src/xz/util.c:269 > msgid "Compressed data cannot be read from a terminal" > msgstr "å缩æ°æ®ä¸è½ä»ç»ç«¯è¯»å" > >-#: src/xz/util.c:294 >+#: src/xz/util.c:282 > msgid "Compressed data cannot be written to a terminal" > msgstr "å缩æ°æ®ä¸è½åç»ç«¯åå ¥" > >@@ -954,8 +1008,44 @@ > msgid "Unknown error" > msgstr "æªç¥é误" > >+#, c-format >+#~ msgid "The selected match finder requires at least nice=%<PRIu32>" >+#~ msgstr "æéä¸çå¹é æç´¢å¨ï¼match finderï¼è³å°éè¦ nice=%<PRIu32>" >+ > #~ msgid "Sandbox is disabled due to incompatible command line arguments" > #~ msgstr "æ²çå·²å ä¸å ¼å®¹çå½ä»¤è¡åæ°èç¦ç¨" > > #~ msgid "Sandbox was successfully enabled" > #~ msgstr "å·²æåå¯ç¨æ²ç" >+ >+#~ msgid "Memory usage limit for compression: " >+#~ msgstr "ç¨äºå缩çå åç¨ééå¶ï¼ " >+ >+#~ msgid " Streams: %s\n" >+#~ msgstr " æµï¼ %s\n" >+ >+#~ msgid " Blocks: %s\n" >+#~ msgstr " åï¼ %s\n" >+ >+#~ msgid " Ratio: %s\n" >+#~ msgstr " å缩æ¯ï¼ %s\n" >+ >+#~ msgid " Check: %s\n" >+#~ msgstr " æ ¡éªæ¹å¼ï¼ %s\n" >+ >+#~ msgid "" >+#~ " Streams:\n" >+#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >+#~ msgstr "" >+#~ " æµï¼\n" >+#~ " æµ å å缩å移é 解åå移é åç¼©å¤§å° è§£åå¤§å° æ¯ä¾ æ ¡éª å¡«å " >+ >+#~ msgid "" >+#~ " Blocks:\n" >+#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >+#~ msgstr "" >+#~ " åï¼\n" >+#~ " æµ å å缩å移é 解åå移é æ»è®¡å¤§å° 解åå¤§å° æ¯ä¾ æ ¡éª" >+ >+#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >+#~ msgstr " CheckVal %*s å¤´é¨ æ è®° åç¼©å¤§å° å åä½¿ç¨ è¿æ»¤å¨" >Binary files xz-5.2.5/po/zh_TW.gmo and xz-5.4.3/po/zh_TW.gmo differ >diff -ur xz-5.2.5/po/zh_TW.po xz-5.4.3/po/zh_TW.po >--- xz-5.2.5/po/zh_TW.po 2020-03-17 17:29:58 >+++ xz-5.4.3/po/zh_TW.po 2023-05-04 17:32:21 >@@ -5,8 +5,8 @@ > msgid "" > msgstr "" > "Project-Id-Version: xz 5.2.4\n" >-"Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >+"Report-Msgid-Bugs-To: xz@tukaani.org\n" >+"POT-Creation-Date: 2023-05-04 22:32+0800\n" > "PO-Revision-Date: 2019-04-23 22:00+0800\n" > "Last-Translator: pan93412 <pan93412@gmail.com>\n" > "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n" >@@ -19,99 +19,121 @@ > "X-Generator: Poedit 2.2.1\n" > "X-Poedit-SourceCharset: UTF-8\n" > >-#: src/xz/args.c:63 >+#: src/xz/args.c:77 > #, c-format > msgid "%s: Invalid argument to --block-list" > msgstr "%sï¼å³å ¥ --block-list çåæ¸ç¡æ" > >-#: src/xz/args.c:73 >+#: src/xz/args.c:87 > #, c-format > msgid "%s: Too many arguments to --block-list" > msgstr "%sï¼å³å ¥ --block-list çåæ¸éå¤" > >-#: src/xz/args.c:102 >+#: src/xz/args.c:116 > msgid "0 can only be used as the last element in --block-list" > msgstr "0 åªè½ä½çº --block-list çæå¾ä¸åå ç´ " > >-#: src/xz/args.c:406 >+#: src/xz/args.c:451 > #, c-format > msgid "%s: Unknown file format type" > msgstr "%sï¼æªç¥æªæ¡æ ¼å¼é¡å" > >-#: src/xz/args.c:429 src/xz/args.c:437 >+#: src/xz/args.c:474 src/xz/args.c:482 > #, c-format > msgid "%s: Unsupported integrity check type" > msgstr "%sï¼ä¸æ¯æ´çå®æ´æ§æª¢æ¥é¡å" > >-#: src/xz/args.c:473 >+#: src/xz/args.c:518 > msgid "Only one file can be specified with `--files' or `--files0'." > msgstr "ã--filesãæã--files0ãåªè½æå®ä¸åæªæ¡ã" > >-#: src/xz/args.c:541 >+#: src/xz/args.c:586 > #, c-format > msgid "The environment variable %s contains too many arguments" > msgstr "%s ç°å¢è®æ¸å å«éå¤åæ¸" > >-#: src/xz/args.c:643 >+#: src/xz/args.c:688 > msgid "Compression support was disabled at build time" > msgstr "å·²å¨ç·¨è¯æåç¨å£ç¸®æ¯æ´" > >-#: src/xz/args.c:650 >+#: src/xz/args.c:695 > msgid "Decompression support was disabled at build time" > msgstr "å·²å¨ç·¨è¯æåç¨è§£å£ç¸®æ¯æ´" > >-#: src/xz/coder.c:110 >+#: src/xz/args.c:701 >+msgid "Compression of lzip files (.lz) is not supported" >+msgstr "" >+ >+#: src/xz/args.c:732 >+#, fuzzy >+#| msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgid "With --format=raw, --suffix=.SUF is required unless writing to stdout" >+msgstr "%sï¼æé --format=raw æï¼é¤éå¯«å ¥æ¨æºè¼¸åºï¼å¦åéè¦ --suffix=.SUF" >+ >+#: src/xz/coder.c:115 > msgid "Maximum number of filters is four" > msgstr "æå¤åªè½æå® 4 å篩é¸å¨" > >-#: src/xz/coder.c:129 >+#: src/xz/coder.c:134 > msgid "Memory usage limit is too low for the given filter setup." > msgstr "è¨æ¶é«ç¨ééå¶éä½ï¼ä¸è¶³ä»¥è¨å®æå®ç篩é¸å¨ã" > >-#: src/xz/coder.c:159 >+#: src/xz/coder.c:169 > msgid "Using a preset in raw mode is discouraged." > msgstr "ä¸å»ºè°å¨ Raw 模å¼ä½¿ç¨è¨å®æªã" > >-#: src/xz/coder.c:161 >+#: src/xz/coder.c:171 > msgid "The exact options of the presets may vary between software versions." > msgstr "è¨å®æªçé¸é å¯è½å è»é«çæ¬èæç°ã" > >-#: src/xz/coder.c:184 >+#: src/xz/coder.c:194 > msgid "The .lzma format supports only the LZMA1 filter" > msgstr ".lzma æ ¼å¼å æ¯æ´ LZMA1 篩é¸å¨" > >-#: src/xz/coder.c:192 >+#: src/xz/coder.c:202 > msgid "LZMA1 cannot be used with the .xz format" > msgstr "LZMA1 ä¸è½è .xz æ ¼å¼ä¸å使ç¨" > >-#: src/xz/coder.c:209 >+#: src/xz/coder.c:219 > msgid "The filter chain is incompatible with --flush-timeout" > msgstr "篩é¸éä¸ç¸å®¹ --flush-timeout" > >-#: src/xz/coder.c:215 >+#: src/xz/coder.c:225 > msgid "Switching to single-threaded mode due to --flush-timeout" > msgstr "å æå® --flush-timeoutï¼å æ¤åæå°å®å·è¡ç·æ¨¡å¼" > >-#: src/xz/coder.c:235 >+#: src/xz/coder.c:249 > #, c-format > msgid "Using up to %<PRIu32> threads." > msgstr "使ç¨æå¤ %<PRIu32> åå·è¡ç·ã" > >-#: src/xz/coder.c:251 >+#: src/xz/coder.c:265 > msgid "Unsupported filter chain or filter options" > msgstr "ä¸æ¯æ´ç篩é¸éæ篩é¸å¨é¸é " > >-#: src/xz/coder.c:263 >+#: src/xz/coder.c:277 > #, c-format > msgid "Decompression will need %s MiB of memory." > msgstr "解å£ç¸®å°éè¦ %s MiB çè¨æ¶é«ã" > >-#: src/xz/coder.c:300 >+#: src/xz/coder.c:309 >+#, fuzzy, c-format >+#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgstr "å·²å° %s åå·è¡ç·èª¿æ´è³ %sï¼ä»¥ä¸è¶ éè¨æ¶é«ç¨éç %s MiB éå¶" >+ >+#: src/xz/coder.c:329 > #, c-format >-msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Reduced the number of threads from %s to one. The automatic memory usage limit of %s MiB is still being exceeded. %s MiB of memory is required. Continuing anyway." >+msgstr "" >+ >+#: src/xz/coder.c:356 >+#, fuzzy, c-format >+#| msgid "Adjusted the number of threads from %s to %s to not exceed the memory usage limit of %s MiB" >+msgid "Switching to single-threaded mode to not exceed the memory usage limit of %s MiB" > msgstr "å·²å° %s åå·è¡ç·èª¿æ´è³ %sï¼ä»¥ä¸è¶ éè¨æ¶é«ç¨éç %s MiB éå¶" > >-#: src/xz/coder.c:354 >+#: src/xz/coder.c:411 > #, c-format > msgid "Adjusted LZMA%c dictionary size from %s MiB to %s MiB to not exceed the memory usage limit of %s MiB" > msgstr "å·²å° LZMA%c çåå ¸å¤§å°å¾ %s MiB 調æ´è³ %s MiBï¼ä»¥ä¸è¶ éè¨æ¶é«ç¨éç %s MiB éå¶" >@@ -121,11 +143,11 @@ > msgid "Error creating a pipe: %s" > msgstr "建ç«ç®¡ç·æç¼çé¯èª¤ï¼%s" > >-#: src/xz/file_io.c:224 >+#: src/xz/file_io.c:252 > msgid "Failed to enable the sandbox" > msgstr "ç¡æ³åç¨æ²ç" > >-#: src/xz/file_io.c:266 >+#: src/xz/file_io.c:294 > #, c-format > msgid "%s: poll() failed: %s" > msgstr "%sï¼poll() 失æï¼%s" >@@ -140,195 +162,341 @@ > #. it is possible that the user has put a new file in place > #. of the original file, and in that case it obviously > #. shouldn't be removed. >-#: src/xz/file_io.c:333 >+#: src/xz/file_io.c:361 > #, c-format > msgid "%s: File seems to have been moved, not removing" > msgstr "%sï¼æªæ¡ä¼¼ä¹å·²ç¶é·ç§»ï¼ä¸ç§»é¤" > >-#: src/xz/file_io.c:340 src/xz/file_io.c:882 >+#: src/xz/file_io.c:368 src/xz/file_io.c:924 > #, c-format > msgid "%s: Cannot remove: %s" > msgstr "%sï¼ç¡æ³ç§»é¤ï¼%s" > >-#: src/xz/file_io.c:366 >+#: src/xz/file_io.c:394 > #, c-format > msgid "%s: Cannot set the file owner: %s" > msgstr "%sï¼ç¡æ³è¨å®æªæ¡ææè ï¼%s" > >-#: src/xz/file_io.c:372 >+#: src/xz/file_io.c:407 > #, c-format > msgid "%s: Cannot set the file group: %s" > msgstr "%sï¼ç¡æ³è¨å®æªæ¡ç¾¤çµï¼%s" > >-#: src/xz/file_io.c:391 >+#: src/xz/file_io.c:426 > #, c-format > msgid "%s: Cannot set the file permissions: %s" > msgstr "%sï¼ç¡æ³è¨å®æªæ¡æ¬éï¼%s" > >-#: src/xz/file_io.c:517 >+#: src/xz/file_io.c:552 > #, c-format > msgid "Error getting the file status flags from standard input: %s" > msgstr "å¾æ¨æºè¼¸å ¥åå¾æªæ¡çæ ææ¨æç¼çé¯èª¤ï¼%s" > >-#: src/xz/file_io.c:574 src/xz/file_io.c:636 >+#: src/xz/file_io.c:610 src/xz/file_io.c:672 > #, c-format > msgid "%s: Is a symbolic link, skipping" > msgstr "%sï¼æ¯å符èé£çµï¼è·³é" > >-#: src/xz/file_io.c:665 >+#: src/xz/file_io.c:701 > #, c-format > msgid "%s: Is a directory, skipping" > msgstr "%sï¼æ¯åç®éï¼è·³é" > >-#: src/xz/file_io.c:671 >+#: src/xz/file_io.c:707 > #, c-format > msgid "%s: Not a regular file, skipping" > msgstr "%sï¼ä¸æ¯ä¸è¬æªæ¡ï¼è·³é" > >-#: src/xz/file_io.c:688 >+#: src/xz/file_io.c:724 > #, c-format > msgid "%s: File has setuid or setgid bit set, skipping" > msgstr "%sï¼æªæ¡å·²è¨å® setuid æ setgid ä½å ï¼è·³é" > >-#: src/xz/file_io.c:695 >+#: src/xz/file_io.c:731 > #, c-format > msgid "%s: File has sticky bit set, skipping" > msgstr "%sï¼æªæ¡å·²è¨å®é»æ§ä½å ï¼sticky bitï¼ï¼è·³é" > >-#: src/xz/file_io.c:702 >+#: src/xz/file_io.c:738 > #, c-format > msgid "%s: Input file has more than one hard link, skipping" > msgstr "%sï¼è¼¸å ¥æªæè¶ éä¸å實éé£çµ (hard link)ï¼è·³é" > >-#: src/xz/file_io.c:792 >+#: src/xz/file_io.c:780 >+msgid "Empty filename, skipping" >+msgstr "空æªåï¼è·³é" >+ >+#: src/xz/file_io.c:834 > #, c-format > msgid "Error restoring the status flags to standard input: %s" > msgstr "å°çæ ææ¨éåå°æ¨æºè¼¸å ¥æç¼çé¯èª¤ï¼%s" > >-#: src/xz/file_io.c:840 >+#: src/xz/file_io.c:882 > #, c-format > msgid "Error getting the file status flags from standard output: %s" > msgstr "å¾æ¨æºè¼¸åºåå¾æªæ¡çæ ææ¨æç¼çé¯èª¤ï¼%s" > >-#: src/xz/file_io.c:1018 >+#: src/xz/file_io.c:1060 > #, c-format > msgid "Error restoring the O_APPEND flag to standard output: %s" > msgstr "å° O_APPEND ææ¨éåå°æ¨æºè¼¸åºæç¼çé¯èª¤ï¼%s" > >-#: src/xz/file_io.c:1030 >+#: src/xz/file_io.c:1072 > #, c-format > msgid "%s: Closing the file failed: %s" > msgstr "%sï¼ééæªæ¡å¤±æï¼%s" > >-#: src/xz/file_io.c:1066 src/xz/file_io.c:1309 >+#: src/xz/file_io.c:1108 src/xz/file_io.c:1371 > #, c-format > msgid "%s: Seeking failed when trying to create a sparse file: %s" > msgstr "%sï¼å試建ç«çé¬æªæ¡æç¼çæå°å¤±æï¼%s" > >-#: src/xz/file_io.c:1167 >+#: src/xz/file_io.c:1209 > #, c-format > msgid "%s: Read error: %s" > msgstr "%sï¼è®åæç¼çé¯èª¤ï¼%s" > >-#: src/xz/file_io.c:1191 >+#: src/xz/file_io.c:1239 > #, c-format > msgid "%s: Error seeking the file: %s" > msgstr "%sï¼æå°æªæ¡æç¼çé¯èª¤ï¼%s" > >-#: src/xz/file_io.c:1201 >+#: src/xz/file_io.c:1263 > #, c-format > msgid "%s: Unexpected end of file" > msgstr "%sï¼éææçæªæ¡çµå°¾" > >-#: src/xz/file_io.c:1260 >+#: src/xz/file_io.c:1322 > #, c-format > msgid "%s: Write error: %s" > msgstr "%sï¼å¯«å ¥æç¼çé¯èª¤ï¼%s" > >-#: src/xz/hardware.c:137 >+#: src/xz/hardware.c:238 > msgid "Disabled" > msgstr "å·²åç¨" > >-#. TRANSLATORS: Test with "xz --info-memory" to see if >-#. the alignment looks nice. >-#: src/xz/hardware.c:156 >-msgid "Total amount of physical memory (RAM): " >+#: src/xz/hardware.c:269 >+#, fuzzy >+#| msgid "Total amount of physical memory (RAM): " >+msgid "Amount of physical memory (RAM):" > msgstr "實é«è¨æ¶é« (RAM) 總éï¼" > >-#: src/xz/hardware.c:158 >-msgid "Memory usage limit for compression: " >-msgstr "å£ç¸®è¨æ¶é«éå¶ï¼ " >+#: src/xz/hardware.c:270 >+msgid "Number of processor threads:" >+msgstr "" > >-#: src/xz/hardware.c:160 >-msgid "Memory usage limit for decompression: " >+#: src/xz/hardware.c:271 >+msgid "Compression:" >+msgstr "" >+ >+#: src/xz/hardware.c:272 >+msgid "Decompression:" >+msgstr "" >+ >+#: src/xz/hardware.c:273 >+#, fuzzy >+#| msgid "Memory usage limit for decompression: " >+msgid "Multi-threaded decompression:" > msgstr "解å£ç¸®è¨æ¶é«éå¶ï¼ " > >+#: src/xz/hardware.c:274 >+msgid "Default for -T0:" >+msgstr "" >+ >+#: src/xz/hardware.c:292 >+msgid "Hardware information:" >+msgstr "" >+ >+#: src/xz/hardware.c:299 >+#, fuzzy >+#| msgid "Memory usage limit reached" >+msgid "Memory usage limits:" >+msgstr "éå°è¨æ¶é«ç¨éä¸é" >+ >+#: src/xz/list.c:68 >+msgid "Streams:" >+msgstr "" >+ >+#: src/xz/list.c:69 >+msgid "Blocks:" >+msgstr "" >+ >+#: src/xz/list.c:70 >+#, fuzzy >+#| msgid " Compressed size: %s\n" >+msgid "Compressed size:" >+msgstr " å£ç¸®å¤§å°ï¼ããããããã%s\n" >+ >+#: src/xz/list.c:71 >+#, fuzzy >+#| msgid " Uncompressed size: %s\n" >+msgid "Uncompressed size:" >+msgstr " æªå£ç¸®å¤§å°ï¼ãããããã%s\n" >+ >+#: src/xz/list.c:72 >+msgid "Ratio:" >+msgstr "" >+ >+#: src/xz/list.c:73 >+msgid "Check:" >+msgstr "" >+ >+#: src/xz/list.c:74 >+#, fuzzy >+#| msgid " Stream padding: %s\n" >+msgid "Stream Padding:" >+msgstr " 串æµå¡«å ï¼ããããããã%s\n" >+ >+#: src/xz/list.c:75 >+#, fuzzy >+#| msgid " Memory needed: %s MiB\n" >+msgid "Memory needed:" >+msgstr " æéè¨æ¶é«éï¼ããããã%s MiB\n" >+ >+#: src/xz/list.c:76 >+#, fuzzy >+#| msgid " Sizes in headers: %s\n" >+msgid "Sizes in headers:" >+msgstr " æªé ä¸æ¨ç¤ºå¤§å°ï¼ãããã%s\n" >+ >+#: src/xz/list.c:79 >+#, fuzzy >+#| msgid " Number of files: %s\n" >+msgid "Number of files:" >+msgstr " æªæ¡æ¸ï¼ãããããããã%s\n" >+ >+#: src/xz/list.c:122 >+msgid "Stream" >+msgstr "" >+ >+#: src/xz/list.c:123 >+msgid "Block" >+msgstr "" >+ >+#: src/xz/list.c:124 >+msgid "Blocks" >+msgstr "" >+ >+#: src/xz/list.c:125 >+msgid "CompOffset" >+msgstr "" >+ >+#: src/xz/list.c:126 >+msgid "UncompOffset" >+msgstr "" >+ >+#: src/xz/list.c:127 >+msgid "CompSize" >+msgstr "" >+ >+#: src/xz/list.c:128 >+msgid "UncompSize" >+msgstr "" >+ >+#: src/xz/list.c:129 >+#, fuzzy >+#| msgid "Totals:" >+msgid "TotalSize" >+msgstr "總è¨ï¼" >+ >+#: src/xz/list.c:130 >+msgid "Ratio" >+msgstr "" >+ >+#: src/xz/list.c:131 >+msgid "Check" >+msgstr "" >+ >+#: src/xz/list.c:132 >+msgid "CheckVal" >+msgstr "" >+ >+#: src/xz/list.c:133 >+msgid "Padding" >+msgstr "" >+ >+#: src/xz/list.c:134 >+msgid "Header" >+msgstr "" >+ >+#: src/xz/list.c:135 >+msgid "Flags" >+msgstr "" >+ >+#: src/xz/list.c:136 >+msgid "MemUsage" >+msgstr "" >+ >+#: src/xz/list.c:137 >+msgid "Filters" >+msgstr "" >+ > #. TRANSLATORS: Indicates that there is no integrity check. >-#. This string is used in tables, so the width must not >-#. exceed ten columns with a fixed-width font. >-#: src/xz/list.c:65 >+#. This string is used in tables. In older xz version this >+#. string was limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:169 > msgid "None" > msgstr "ç¡" > > #. TRANSLATORS: Indicates that integrity check name is not known, >-#. but the Check ID is known (here 2). This and other "Unknown-N" >-#. strings are used in tables, so the width must not exceed ten >-#. columns with a fixed-width font. It's OK to omit the dash if >-#. you need space for one extra letter, but don't use spaces. >-#: src/xz/list.c:72 >+#. but the Check ID is known (here 2). In older xz version these >+#. strings were limited to ten columns in a fixed-width font, but >+#. nowadays there is no strict length restriction anymore. >+#: src/xz/list.c:175 > msgid "Unknown-2" > msgstr "æªç¥-2" > >-#: src/xz/list.c:73 >+#: src/xz/list.c:176 > msgid "Unknown-3" > msgstr "æªç¥-3" > >-#: src/xz/list.c:75 >+#: src/xz/list.c:178 > msgid "Unknown-5" > msgstr "æªç¥-5" > >-#: src/xz/list.c:76 >+#: src/xz/list.c:179 > msgid "Unknown-6" > msgstr "æªç¥-6" > >-#: src/xz/list.c:77 >+#: src/xz/list.c:180 > msgid "Unknown-7" > msgstr "æªç¥-7" > >-#: src/xz/list.c:78 >+#: src/xz/list.c:181 > msgid "Unknown-8" > msgstr "æªç¥-8" > >-#: src/xz/list.c:79 >+#: src/xz/list.c:182 > msgid "Unknown-9" > msgstr "æªç¥-9" > >-#: src/xz/list.c:81 >+#: src/xz/list.c:184 > msgid "Unknown-11" > msgstr "æªç¥-11" > >-#: src/xz/list.c:82 >+#: src/xz/list.c:185 > msgid "Unknown-12" > msgstr "æªç¥-12" > >-#: src/xz/list.c:83 >+#: src/xz/list.c:186 > msgid "Unknown-13" > msgstr "æªç¥-13" > >-#: src/xz/list.c:84 >+#: src/xz/list.c:187 > msgid "Unknown-14" > msgstr "æªç¥-14" > >-#: src/xz/list.c:85 >+#: src/xz/list.c:188 > msgid "Unknown-15" > msgstr "æªç¥-15" > >-#: src/xz/list.c:153 >+#: src/xz/list.c:351 > #, c-format > msgid "%s: File is empty" > msgstr "%sï¼æªæ¡æ¯ç©ºç" > >-#: src/xz/list.c:158 >+#: src/xz/list.c:356 > #, c-format > msgid "%s: Too small to be a valid .xz file" > msgstr "%sï¼å éå°èä¸èªçºæ¯åææ .xz æª" >@@ -337,127 +505,40 @@ > #. to Ratio, the columns are right aligned. Check and Filename > #. are left aligned. If you need longer words, it's OK to > #. use two lines here. Test with "xz -l foo.xz". >-#: src/xz/list.c:677 >+#: src/xz/list.c:730 > msgid "Strms Blocks Compressed Uncompressed Ratio Check Filename" > msgstr " 串æµããåå¡ããã å·²å£ç¸®ããã æªå£ç¸®ã æ¯ä¾ã檢é©ç¢¼ãæªå" > >-#: src/xz/list.c:717 >-#, c-format >-msgid " Streams: %s\n" >-msgstr " 串æµï¼ããããããããã%s\n" >- >-#: src/xz/list.c:719 >-#, c-format >-msgid " Blocks: %s\n" >-msgstr " åå¡ï¼ããããããããã%s\n" >- >-#: src/xz/list.c:721 >-#, c-format >-msgid " Compressed size: %s\n" >-msgstr " å£ç¸®å¤§å°ï¼ããããããã%s\n" >- >-#: src/xz/list.c:724 >-#, c-format >-msgid " Uncompressed size: %s\n" >-msgstr " æªå£ç¸®å¤§å°ï¼ãããããã%s\n" >- >-#: src/xz/list.c:727 >-#, c-format >-msgid " Ratio: %s\n" >-msgstr " å£ç¸®æ¯ï¼ãããããããã%s\n" >- >-#: src/xz/list.c:729 >-#, c-format >-msgid " Check: %s\n" >-msgstr " 檢é©ç¢¼ï¼ãããããããã%s\n" >- >-#: src/xz/list.c:730 >-#, c-format >-msgid " Stream padding: %s\n" >-msgstr " 串æµå¡«å ï¼ããããããã%s\n" >- >-# ä¸æ¹çæåå æçæä¸äºéç¤ï¼å æ¤æ«æä¸çä»ã >-#. TRANSLATORS: The second line is column headings. All except >-#. Check are right aligned; Check is left aligned. Test with >-#. "xz -lv foo.xz". >-#: src/xz/list.c:758 >-msgid "" >-" Streams:\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >-msgstr "" >-" 串æµï¼\n" >-" Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >- >-# ä¸æ¹çæåå æçæä¸äºéç¤ï¼å æ¤æ«æä¸çä»ã >-#. TRANSLATORS: The second line is column headings. All >-#. except Check are right aligned; Check is left aligned. >-#: src/xz/list.c:813 >-#, c-format >-msgid "" >-" Blocks:\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >-msgstr "" >-" åå¡ï¼\n" >-" Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >- >-# ä¸æ¹çæåå æçæä¸äºéç¤ï¼å æ¤æ«æä¸çä»ã >-#. TRANSLATORS: These are additional column headings >-#. for the most verbose listing mode. CheckVal >-#. (Check value), Flags, and Filters are left aligned. >-#. Header (Block Header Size), CompSize, and MemUsage >-#. are right aligned. %*s is replaced with 0-120 >-#. spaces to make the CheckVal column wide enough. >-#. Test with "xz -lvv foo.xz". >-#: src/xz/list.c:825 >-#, c-format >-msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >-msgstr " CheckVal %*s Header Flags CompSize MemUsage Filters" >- >-#: src/xz/list.c:903 src/xz/list.c:1078 >-#, c-format >-msgid " Memory needed: %s MiB\n" >-msgstr " æéè¨æ¶é«éï¼ããããã%s MiB\n" >- >-#: src/xz/list.c:905 src/xz/list.c:1080 >-#, c-format >-msgid " Sizes in headers: %s\n" >-msgstr " æªé ä¸æ¨ç¤ºå¤§å°ï¼ãããã%s\n" >- >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "Yes" > msgstr "æ¯" > >-#: src/xz/list.c:906 src/xz/list.c:1081 >+#: src/xz/list.c:1025 src/xz/list.c:1203 > msgid "No" > msgstr "å¦" > >-#: src/xz/list.c:907 src/xz/list.c:1082 >+#: src/xz/list.c:1027 src/xz/list.c:1205 > #, c-format > msgid " Minimum XZ Utils version: %s\n" > msgstr " æå° XZ å·¥å ·ç¨å¼çæ¬ï¼ã%s\n" > > #. TRANSLATORS: %s is an integer. Only the plural form of this > #. message is used (e.g. "2 files"). Test with "xz -l foo.xz bar.xz". >-#: src/xz/list.c:1057 >+#: src/xz/list.c:1178 > #, c-format > msgid "%s file\n" > msgid_plural "%s files\n" > msgstr[0] "%s åæªæ¡\n" > >-#: src/xz/list.c:1070 >+#: src/xz/list.c:1191 > msgid "Totals:" > msgstr "總è¨ï¼" > >-#: src/xz/list.c:1071 >-#, c-format >-msgid " Number of files: %s\n" >-msgstr " æªæ¡æ¸ï¼ãããããããã%s\n" >- >-#: src/xz/list.c:1146 >+#: src/xz/list.c:1269 > msgid "--list works only on .xz files (--format=xz or --format=auto)" > msgstr "--list åªè½å¨ .xz æªä½¿ç¨ï¼--format=xz æ --format=autoï¼" > >-#: src/xz/list.c:1152 >+#: src/xz/list.c:1275 > msgid "--list does not support reading from standard input" > msgstr "--list ä¸æ¯æ´å¾æ¨æºè¼¸å ¥è®å" > >@@ -476,11 +557,11 @@ > msgid "%s: Null character found when reading filenames; maybe you meant to use `--files0' instead of `--files'?" > msgstr "%sï¼è®åæªåæç¼ç¾ç©ºåå ï¼æ許æ¨æ³ä½¿ç¨ã--files0ãèéã--filesãï¼" > >-#: src/xz/main.c:174 >+#: src/xz/main.c:188 > msgid "Compression and decompression with --robot are not supported yet." > msgstr "å°æªæ¯æ´æé --robot å£ç¸®å解å£ç¸®ã" > >-#: src/xz/main.c:252 >+#: src/xz/main.c:266 > msgid "Cannot read data from standard input when reading filenames from standard input" > msgstr "å¾æ¨æºè¼¸å ¥è®åæªåæï¼ç¡æ³å¾æ¨æºè¼¸å ¥è®åè³æ" > >@@ -488,68 +569,68 @@ > #. of the line in messages. Usually it becomes "xz: ". > #. This is a translatable string because French needs > #. a space before a colon. >-#: src/xz/message.c:728 >+#: src/xz/message.c:725 > #, c-format > msgid "%s: " > msgstr "%sï¼" > >-#: src/xz/message.c:791 src/xz/message.c:841 >+#: src/xz/message.c:797 src/xz/message.c:856 > msgid "Internal error (bug)" > msgstr "å §é¨é¯èª¤ï¼èè²ï¼" > >-#: src/xz/message.c:798 >+#: src/xz/message.c:804 > msgid "Cannot establish signal handlers" > msgstr "ç¡æ³ç¢ºç«ä¿¡èèçå¨" > >-#: src/xz/message.c:807 >+#: src/xz/message.c:813 > msgid "No integrity check; not verifying file integrity" > msgstr "æ²æå®æ´æ§æª¢æ¥ï¼ä¸é©èæªæ¡å®æ´æ§" > >-#: src/xz/message.c:810 >+#: src/xz/message.c:816 > msgid "Unsupported type of integrity check; not verifying file integrity" > msgstr "æªç¥å®æ´æ§æª¢æ¥é¡åï¼ä¸é©èæªæ¡å®æ´æ§" > >-#: src/xz/message.c:817 >+#: src/xz/message.c:823 > msgid "Memory usage limit reached" > msgstr "éå°è¨æ¶é«ç¨éä¸é" > >-#: src/xz/message.c:820 >+#: src/xz/message.c:826 > msgid "File format not recognized" > msgstr "ç¡æ³èå¥æªæ¡æ ¼å¼" > >-#: src/xz/message.c:823 >+#: src/xz/message.c:829 > msgid "Unsupported options" > msgstr "ä¸æ¯æ´çé¸é " > >-#: src/xz/message.c:826 >+#: src/xz/message.c:832 > msgid "Compressed data is corrupt" > msgstr "å£ç¸®è³ææ¯æå£ç" > >-#: src/xz/message.c:829 >+#: src/xz/message.c:835 > msgid "Unexpected end of input" > msgstr "éå°éé æè¼¸å ¥çµå°¾" > >-#: src/xz/message.c:862 >+#: src/xz/message.c:877 > #, c-format > msgid "%s MiB of memory is required. The limiter is disabled." > msgstr "éè¦ %s MiB çè¨æ¶é«ãå·²åç¨è¨æ¶é«éå¶å¨ã" > >-#: src/xz/message.c:890 >+#: src/xz/message.c:905 > #, c-format > msgid "%s MiB of memory is required. The limit is %s." > msgstr "éè¦ %s MiB çè¨æ¶é«ãè¨æ¶é«éå¶çº %sã" > >-#: src/xz/message.c:1057 >+#: src/xz/message.c:924 > #, c-format > msgid "%s: Filter chain: %s\n" > msgstr "%sï¼ç¯©é¸éï¼%s\n" > >-#: src/xz/message.c:1067 >+#: src/xz/message.c:935 > #, c-format > msgid "Try `%s --help' for more information." > msgstr "å試ã%s --helpãåå¾æ´å¤è³è¨ã" > >-#: src/xz/message.c:1093 >+#: src/xz/message.c:961 > #, c-format > msgid "" > "Usage: %s [OPTION]... [FILE]...\n" >@@ -560,15 +641,15 @@ > "ç¨ .xz æ ¼å¼å£ç¸®ï¼æ解å£ç¸® .xz æ ¼å¼ä¸ç <æªæ¡>ã\n" > "\n" > >-#: src/xz/message.c:1100 >+#: src/xz/message.c:968 > msgid "Mandatory arguments to long options are mandatory for short options too.\n" > msgstr "é·é¸é çå¿ å¡«åæ¸ï¼å°çé¸é ä¹æ¯å¿ å¡«ã\n" > >-#: src/xz/message.c:1104 >+#: src/xz/message.c:972 > msgid " Operation mode:\n" > msgstr " æä½æ¨¡å¼ï¼\n" > >-#: src/xz/message.c:1107 >+#: src/xz/message.c:975 > msgid "" > " -z, --compress force compression\n" > " -d, --decompress force decompression\n" >@@ -580,7 +661,7 @@ > " -t, --test 測試å£ç¸®æªå®æ´æ§\n" > " -l, --list ååº .xz æªçè³è¨" > >-#: src/xz/message.c:1113 >+#: src/xz/message.c:981 > msgid "" > "\n" > " Operation modifiers:\n" >@@ -588,7 +669,7 @@ > "\n" > " æä½ä¿®é£¾è©ï¼\n" > >-#: src/xz/message.c:1116 >+#: src/xz/message.c:984 > msgid "" > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" >@@ -598,7 +679,7 @@ > " -f, --force å¼·å¶è¦å¯«è¼¸åºæªä¸¦ï¼è§£ï¼å£ç¸®é£çµ\n" > " -c, --stdout å¯«å ¥æ¨æºè¼¸åºä¸¦ä¸åªé¤è¼¸å ¥æª" > >-#: src/xz/message.c:1122 >+#: src/xz/message.c:993 > msgid "" > " --single-stream decompress only the first stream, and silently\n" > " ignore possible remaining input data" >@@ -606,7 +687,7 @@ > " --single-stream å 解å£ç¸®ç¬¬ä¸å串æµï¼å\n" > " å®éå°å¿½ç¥å¯è½å©é¤çè¼¸å ¥æª" > >-#: src/xz/message.c:1125 >+#: src/xz/message.c:996 > msgid "" > " --no-sparse do not create sparse files when decompressing\n" > " -S, --suffix=.SUF use the suffix `.SUF' on compressed files\n" >@@ -621,7 +702,7 @@ > " åå¾æ¨æºè¼¸å ¥è®åæªåï¼æªåå¿ é 以æè¡åå ä½çºçµå°¾\n" > " --files0[=æªæ¡] é¡ä¼¼ --files ä½æ¯ä»¥ null 空åå ä½çµå°¾" > >-#: src/xz/message.c:1134 >+#: src/xz/message.c:1005 > msgid "" > "\n" > " Basic file format and compression options:\n" >@@ -629,10 +710,16 @@ > "\n" > " åºæ¬æªæ¡æ ¼å¼èå£ç¸®é¸é ï¼\n" > >-#: src/xz/message.c:1136 >+#: src/xz/message.c:1007 >+#, fuzzy >+#| msgid "" >+#| " -F, --format=FMT file format to encode or decode; possible values are\n" >+#| " `auto' (default), `xz', `lzma', and `raw'\n" >+#| " -C, --check=CHECK integrity check type: `none' (use with caution),\n" >+#| " `crc32', `crc64' (default), or `sha256'" > msgid "" > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'" > msgstr "" >@@ -641,11 +728,11 @@ > " -C, --check=檢æ¥ç¢¼ å®æ´æ§æª¢æ¥é¡åï¼ãnoneãï¼è«å°å¿ä½¿ç¨ï¼ããcrc32ãã\n" > " ãcrc64ãï¼é è¨å¼ï¼æãsha256ã" > >-#: src/xz/message.c:1141 >+#: src/xz/message.c:1012 > msgid " --ignore-check don't verify the integrity check when decompressing" > msgstr " --ignore-check ä¸å¨è§£å£ç¸®æé©èå®æ´æ§" > >-#: src/xz/message.c:1145 >+#: src/xz/message.c:1016 > msgid "" > " -0 ... -9 compression preset; default is 6; take compressor *and*\n" > " decompressor memory usage into account before using 7-9!" >@@ -653,7 +740,7 @@ > " -0 ... -9 å£ç¸®è¨å®æªï¼é è¨å¼çº 6ï¼ä½¿ç¨ 7-9 åè«èæ ®\n" > " å£ç¸®å解å£ç¸®æ使ç¨çè¨æ¶é«ï¼" > >-#: src/xz/message.c:1149 >+#: src/xz/message.c:1020 > msgid "" > " -e, --extreme try to improve compression ratio by using more CPU time;\n" > " does not affect decompressor memory requirements" >@@ -661,7 +748,7 @@ > " -e, --extreme 使ç¨æ´å¤ CPU æé以å試æ¹åå£ç¸®æ¯ï¼\n" > " ä¸å½±é¿è§£å£ç¸®å¨çè¨æ¶é«éæ±" > >-#: src/xz/message.c:1153 >+#: src/xz/message.c:1024 > msgid "" > " -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n" > " to use as many threads as there are processor cores" >@@ -669,7 +756,7 @@ > " -T, --threads=NUM 使ç¨æå¤ NUM åå·è¡ç·ï¼é è¨çº 1ï¼è¨æ 0 å使ç¨ææç\n" > " èçæ©æ ¸å¿" > >-#: src/xz/message.c:1158 >+#: src/xz/message.c:1029 > msgid "" > " --block-size=SIZE\n" > " start a new .xz block after every SIZE bytes of input;\n" >@@ -679,14 +766,14 @@ > " è¼¸å ¥æ¯ <大å°> ä½å çµå¾ï¼éå§ä¸åæ° .xz åå¡ï¼\n" > " 使ç¨æ¤åè½ä»¥è¨å®å¤å·è¡ç·å£ç¸®çåå¡å¤§å°" > >-#: src/xz/message.c:1162 >+#: src/xz/message.c:1033 > msgid "" > " --block-list=SIZES\n" > " start a new .xz block after the given comma-separated\n" > " intervals of uncompressed data" > msgstr "" > >-#: src/xz/message.c:1166 >+#: src/xz/message.c:1037 > msgid "" > " --flush-timeout=TIMEOUT\n" > " when compressing, if more than TIMEOUT milliseconds has\n" >@@ -694,14 +781,22 @@ > " would block, all pending data is flushed out" > msgstr "" > >-#: src/xz/message.c:1172 >-#, no-c-format >+#: src/xz/message.c:1043 >+#, fuzzy, no-c-format >+#| msgid "" >+#| " --memlimit-compress=LIMIT\n" >+#| " --memlimit-decompress=LIMIT\n" >+#| " -M, --memlimit=LIMIT\n" >+#| " set memory usage limit for compression, decompression,\n" >+#| " or both; LIMIT is in bytes, % of RAM, or 0 for defaults" > msgid "" > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults" >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults" > msgstr "" > " --memlimit-compress=éå¶\n" > " --memlimit-decompress=éå¶\n" >@@ -709,7 +804,7 @@ > " éå¶å£ç¸®ã解å£ç¸®æå ©è çè¨æ¶é«ç¨éä¸éï¼\n" > " <éå¶> å¯ä»¥æ¯ä½å çµãè¨æ¶é«ç¾åæ¯ (%)ãæ 0ï¼é è¨å¼ï¼" > >-#: src/xz/message.c:1179 >+#: src/xz/message.c:1052 > msgid "" > " --no-adjust if compression settings exceed the memory usage limit,\n" > " give an error instead of adjusting the settings downwards" >@@ -717,7 +812,7 @@ > " --no-adjust è¥å£ç¸®è¨å®è¶ éè¨æ¶é«ç¨éä¸éï¼è«çµ¦åº\n" > " é¯èª¤èéä¸èª¿è¨å®" > >-#: src/xz/message.c:1185 >+#: src/xz/message.c:1058 > msgid "" > "\n" > " Custom filter chain for compression (alternative for using presets):" >@@ -725,7 +820,7 @@ > "\n" > " èªè¨å£ç¸®ç¯©é¸éï¼ä½¿ç¨è¨å®æªæé¸ç¨ï¼ï¼" > >-#: src/xz/message.c:1194 >+#: src/xz/message.c:1067 > msgid "" > "\n" > " --lzma1[=OPTS] LZMA1 or LZMA2; OPTS is a comma-separated list of zero or\n" >@@ -753,14 +848,26 @@ > " mf=å稱 å°æ¾ç¬¦åæå°å¨ (hc3, hc4, bt2, bt3, bt4; bt4)\n" > " depth=NUM æ大æå°æ·±åº¦ï¼0=èªåï¼é è¨ï¼" > >-#: src/xz/message.c:1209 >+#: src/xz/message.c:1082 >+#, fuzzy >+#| msgid "" >+#| "\n" >+#| " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+#| " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" >+#| " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >+#| " --arm[=OPTS] ARM BCJ filter (little endian only)\n" >+#| " --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" >+#| " --sparc[=OPTS] SPARC BCJ filter\n" >+#| " Valid OPTS for all BCJ filters:\n" >+#| " start=NUM start offset for conversions (default=0)" > msgid "" > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)" >@@ -775,7 +882,7 @@ > " ææ BCJ 篩é¸å¨å¯ç¨ç OPTSï¼\n" > " start=NUM è½æèµ·å§ä½ç§»ï¼é è¨å¼=0ï¼" > >-#: src/xz/message.c:1221 >+#: src/xz/message.c:1095 > msgid "" > "\n" > " --delta[=OPTS] Delta filter; valid OPTS (valid values; default):\n" >@@ -783,7 +890,7 @@ > " from each other (1-256; 1)" > msgstr "" > >-#: src/xz/message.c:1229 >+#: src/xz/message.c:1103 > msgid "" > "\n" > " Other options:\n" >@@ -791,7 +898,7 @@ > "\n" > " å ¶ä»é¸é ï¼\n" > >-#: src/xz/message.c:1232 >+#: src/xz/message.c:1106 > msgid "" > " -q, --quiet suppress warnings; specify twice to suppress errors too\n" > " -v, --verbose be verbose; specify twice for even more verbose" >@@ -799,21 +906,21 @@ > " -q, --quiet é±èè¦åè¨æ¯ï¼æå®å ©æ¬¡ä¹ä¸ä½µé±èé¯èª¤è¨æ¯\n" > " -v, --verbose 輸åºè¼è©³ç´°å §å®¹ï¼æå®å ©æ¬¡æ´è©³ç´°è¼¸åº" > >-#: src/xz/message.c:1237 >+#: src/xz/message.c:1111 > msgid " -Q, --no-warn make warnings not affect the exit status" > msgstr " -Q, --no-warn å³ä½¿æè¦åï¼éåºçæ 碼ä»ä¸è®" > >-#: src/xz/message.c:1239 >+#: src/xz/message.c:1113 > msgid " --robot use machine-parsable messages (useful for scripts)" > msgstr " --robot 使ç¨æ©å¨å¯è§£æè¨æ¯ï¼é©åç¨æ¼æ令稿ï¼" > >-#: src/xz/message.c:1242 >+#: src/xz/message.c:1116 > msgid "" > " --info-memory display the total amount of RAM and the currently active\n" > " memory usage limits, and exit" > msgstr " --info-memory 顯示è¨æ¶é«ç¸½éå使ç¨ä¸çè¨æ¶é«ç¨ééå¶å¾éåº" > >-#: src/xz/message.c:1245 >+#: src/xz/message.c:1119 > msgid "" > " -h, --help display the short help (lists only the basic options)\n" > " -H, --long-help display this long help and exit" >@@ -821,7 +928,7 @@ > " -h, --help 顯示è¼ç說æï¼å ååºåºæ¬é¸é ï¼\n" > " -H, --long-help 顯示è¼é·èªªæå¾éåº" > >-#: src/xz/message.c:1249 >+#: src/xz/message.c:1123 > msgid "" > " -h, --help display this short help and exit\n" > " -H, --long-help display the long help (lists also the advanced options)" >@@ -829,11 +936,11 @@ > " -h, --help 顯示è¼ç說æå¾éåº\n" > " -H, --long-help 顯示è¼é·èªªæï¼ä¹ååºé²éé¸é ï¼" > >-#: src/xz/message.c:1254 >+#: src/xz/message.c:1128 > msgid " -V, --version display the version number and exit" > msgstr " -V, --version 顯示çæ¬è碼å¾éåº" > >-#: src/xz/message.c:1256 >+#: src/xz/message.c:1130 > msgid "" > "\n" > "With no FILE, or when FILE is -, read standard input.\n" >@@ -845,17 +952,17 @@ > #. for this package. Please add _another line_ saying > #. "Report translation bugs to <...>\n" with the email or WWW > #. address for translation bugs. Thanks. >-#: src/xz/message.c:1262 >+#: src/xz/message.c:1136 > #, c-format > msgid "Report bugs to <%s> (in English or Finnish).\n" > msgstr "è«åå ±èè²è³ <%s>ï¼ä½¿ç¨è±ææè¬èèªï¼ã\n" > >-#: src/xz/message.c:1264 >+#: src/xz/message.c:1138 > #, c-format > msgid "%s home page: <%s>\n" > msgstr "%s é¦é ï¼<%s>\n" > >-#: src/xz/message.c:1268 >+#: src/xz/message.c:1142 > msgid "THIS IS A DEVELOPMENT VERSION NOT INTENDED FOR PRODUCTION USE." > msgstr "æ¤çºéç¼çæ¬ï¼ä¸æç®å¨çç¢ç°å¢ä½¿ç¨ã" > >@@ -883,27 +990,17 @@ > msgid "The sum of lc and lp must not exceed 4" > msgstr "lc å lp ç總åä¸è½è¶ é 4" > >-#: src/xz/options.c:359 >+#: src/xz/suffix.c:160 > #, c-format >-msgid "The selected match finder requires at least nice=%<PRIu32>" >-msgstr "é¸åç符åæå°å·¥å ·éè¦è³å° nice=%<PRIu32>" >- >-#: src/xz/suffix.c:133 src/xz/suffix.c:258 >-#, c-format >-msgid "%s: With --format=raw, --suffix=.SUF is required unless writing to stdout" >-msgstr "%sï¼æé --format=raw æï¼é¤éå¯«å ¥æ¨æºè¼¸åºï¼å¦åéè¦ --suffix=.SUF" >- >-#: src/xz/suffix.c:164 >-#, c-format > msgid "%s: Filename has an unknown suffix, skipping" > msgstr "%sï¼æªåææªç¥å¾ç¶´ï¼è·³é" > >-#: src/xz/suffix.c:185 >+#: src/xz/suffix.c:181 > #, c-format > msgid "%s: File already has `%s' suffix, skipping" > msgstr "%sï¼æªæ¡å·²æã%sãå¾ç¶´ï¼è·³é" > >-#: src/xz/suffix.c:393 >+#: src/xz/suffix.c:388 > #, c-format > msgid "%s: Invalid filename suffix" > msgstr "%sï¼æªåå¾ç¶´ç¡æ" >@@ -927,15 +1024,11 @@ > msgid "Value of the option `%s' must be in the range [%<PRIu64>, %<PRIu64>]" > msgstr "é¸é ã%sãçæ¸å¼å¿ é å¨ [%<PRIu64>, %<PRIu64>] ç¯åå §" > >-#: src/xz/util.c:267 >-msgid "Empty filename, skipping" >-msgstr "空æªåï¼è·³é" >- >-#: src/xz/util.c:281 >+#: src/xz/util.c:269 > msgid "Compressed data cannot be read from a terminal" > msgstr "ä¸è½å¾çµç«¯æ©è®å ¥å·²å£ç¸®è³æ" > >-#: src/xz/util.c:294 >+#: src/xz/util.c:282 > msgid "Compressed data cannot be written to a terminal" > msgstr "ä¸è½å°å·²å£ç¸®è³æå¯«å ¥çµç«¯æ©" > >@@ -952,3 +1045,48 @@ > > #~ msgid "Sandbox was successfully enabled" > #~ msgstr "å·²æååç¨æ²ç" >+ >+#~ msgid "Memory usage limit for compression: " >+#~ msgstr "å£ç¸®è¨æ¶é«éå¶ï¼ " >+ >+#, c-format >+#~ msgid " Streams: %s\n" >+#~ msgstr " 串æµï¼ããããããããã%s\n" >+ >+#, c-format >+#~ msgid " Blocks: %s\n" >+#~ msgstr " åå¡ï¼ããããããããã%s\n" >+ >+#, c-format >+#~ msgid " Ratio: %s\n" >+#~ msgstr " å£ç¸®æ¯ï¼ãããããããã%s\n" >+ >+#, c-format >+#~ msgid " Check: %s\n" >+#~ msgstr " 檢é©ç¢¼ï¼ãããããããã%s\n" >+ >+# ä¸æ¹çæåå æçæä¸äºéç¤ï¼å æ¤æ«æä¸çä»ã >+#~ msgid "" >+#~ " Streams:\n" >+#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >+#~ msgstr "" >+#~ " 串æµï¼\n" >+#~ " Stream Blocks CompOffset UncompOffset CompSize UncompSize Ratio Check Padding" >+ >+# ä¸æ¹çæåå æçæä¸äºéç¤ï¼å æ¤æ«æä¸çä»ã >+#, c-format >+#~ msgid "" >+#~ " Blocks:\n" >+#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >+#~ msgstr "" >+#~ " åå¡ï¼\n" >+#~ " Stream Block CompOffset UncompOffset TotalSize UncompSize Ratio Check" >+ >+# ä¸æ¹çæåå æçæä¸äºéç¤ï¼å æ¤æ«æä¸çä»ã >+#, c-format >+#~ msgid " CheckVal %*s Header Flags CompSize MemUsage Filters" >+#~ msgstr " CheckVal %*s Header Flags CompSize MemUsage Filters" >+ >+#, c-format >+#~ msgid "The selected match finder requires at least nice=%<PRIu32>" >+#~ msgstr "é¸åç符åæå°å·¥å ·éè¦è³å° nice=%<PRIu32>" >diff -ur xz-5.2.5/po4a/de.po xz-5.4.3/po4a/de.po >--- xz-5.2.5/po4a/de.po 2020-03-17 17:29:36 >+++ xz-5.4.3/po4a/de.po 2023-05-04 17:27:44 >@@ -1,13 +1,13 @@ > # XZ Utils man pages German translation > # This file is put in the public domain. > # >-# Mario Blättermann <mario.blaettermann@gmail.com>, 2015, 2019-2020. >+# Mario Blättermann <mario.blaettermann@gmail.com>, 2015, 2019-2020, 2022. > msgid "" > msgstr "" >-"Project-Id-Version: xz 5.2.5\n" >+"Project-Id-Version: xz-man 5.4.0-pre2\n" > "Report-Msgid-Bugs-To: lasse.collin@tukaani.org\n" >-"POT-Creation-Date: 2020-03-17 16:29+0200\n" >-"PO-Revision-Date: 2020-02-14 18:40+0100\n" >+"POT-Creation-Date: 2023-05-04 22:27+0800\n" >+"PO-Revision-Date: 2022-12-07 20:17+0100\n" > "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n" > "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" > "Language: de\n" >@@ -16,7 +16,7 @@ > "Content-Transfer-Encoding: 8bit\n" > "X-Bugs: Report translation errors to the Language-Team address.\n" > "Plural-Forms: nplurals=2; plural=(n != 1);\n" >-"X-Generator: Lokalize 19.12.2\n" >+"X-Generator: Lokalize 22.08.3\n" > > #. type: TH > #: ../src/xz/xz.1:8 >@@ -27,8 +27,8 @@ > #. type: TH > #: ../src/xz/xz.1:8 > #, no-wrap >-msgid "2020-02-01" >-msgstr "1. Februar 2020" >+msgid "2022-12-01" >+msgstr "1. Dezember 2022" > > #. type: TH > #: ../src/xz/xz.1:8 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7 >@@ -128,21 +128,23 @@ > msgstr "BESCHREIBUNG" > > #. type: Plain text >-#: ../src/xz/xz.1:65 >+#: ../src/xz/xz.1:70 > msgid "" > "B<xz> is a general-purpose data compression tool with command line syntax " > "similar to B<gzip>(1) and B<bzip2>(1). The native file format is the B<." > "xz> format, but the legacy B<.lzma> format used by LZMA Utils and raw " >-"compressed streams with no container format headers are also supported." >+"compressed streams with no container format headers are also supported. In " >+"addition, decompression of the B<.lz> format used by B<lzip> is supported." > msgstr "" > "B<xz> ist ein Allzweckwerkzeug zur Datenkompression, dessen " > "Befehlszeilensyntax denen von B<gzip>(1) und B<bzip2>(1) ähnelt. Das native " > "Dateiformat ist das B<.xz>-Format, aber das veraltete, von den LZMA-" > "Dienstprogrammen verwendete Format sowie komprimierte Rohdatenströme ohne " >-"Containerformat-Header werden ebenfalls unterstützt." >+"Containerformat-Header werden ebenfalls unterstützt. AuÃerdem wird die " >+"Dekompression des von B<lzip> verwendeten B<.lz>-Formats unterstützt." > > #. type: Plain text >-#: ../src/xz/xz.1:87 >+#: ../src/xz/xz.1:92 > msgid "" > "B<xz> compresses or decompresses each I<file> according to the selected " > "operation mode. If no I<files> are given or I<file> is B<->, B<xz> reads " >@@ -161,7 +163,7 @@ > "diese ein Terminal ist." > > #. type: Plain text >-#: ../src/xz/xz.1:97 >+#: ../src/xz/xz.1:102 > msgid "" > "Unless B<--stdout> is specified, I<files> other than B<-> are written to a " > "new file whose name is derived from the source I<file> name:" >@@ -171,20 +173,20 @@ > "(auÃer wenn B<--stdout> angegeben ist):" > > #. type: IP >-#: ../src/xz/xz.1:97 ../src/xz/xz.1:103 ../src/xz/xz.1:127 ../src/xz/xz.1:132 >-#: ../src/xz/xz.1:135 ../src/xz/xz.1:138 ../src/xz/xz.1:154 ../src/xz/xz.1:395 >-#: ../src/xz/xz.1:398 ../src/xz/xz.1:405 ../src/xz/xz.1:621 ../src/xz/xz.1:623 >-#: ../src/xz/xz.1:722 ../src/xz/xz.1:733 ../src/xz/xz.1:742 ../src/xz/xz.1:750 >-#: ../src/xz/xz.1:965 ../src/xz/xz.1:974 ../src/xz/xz.1:986 ../src/xz/xz.1:1552 >-#: ../src/xz/xz.1:1558 ../src/xz/xz.1:1674 ../src/xz/xz.1:1678 >-#: ../src/xz/xz.1:1681 ../src/xz/xz.1:1684 ../src/xz/xz.1:1688 >-#: ../src/xz/xz.1:1695 ../src/xz/xz.1:1697 >+#: ../src/xz/xz.1:102 ../src/xz/xz.1:108 ../src/xz/xz.1:133 ../src/xz/xz.1:138 >+#: ../src/xz/xz.1:141 ../src/xz/xz.1:144 ../src/xz/xz.1:160 ../src/xz/xz.1:421 >+#: ../src/xz/xz.1:424 ../src/xz/xz.1:431 ../src/xz/xz.1:676 ../src/xz/xz.1:678 >+#: ../src/xz/xz.1:777 ../src/xz/xz.1:788 ../src/xz/xz.1:797 ../src/xz/xz.1:805 >+#: ../src/xz/xz.1:1033 ../src/xz/xz.1:1042 ../src/xz/xz.1:1054 >+#: ../src/xz/xz.1:1729 ../src/xz/xz.1:1735 ../src/xz/xz.1:1853 >+#: ../src/xz/xz.1:1857 ../src/xz/xz.1:1860 ../src/xz/xz.1:1863 >+#: ../src/xz/xz.1:1867 ../src/xz/xz.1:1874 ../src/xz/xz.1:1876 > #, no-wrap > msgid "\\(bu" > msgstr "\\(bu" > > #. type: Plain text >-#: ../src/xz/xz.1:103 >+#: ../src/xz/xz.1:108 > msgid "" > "When compressing, the suffix of the target file format (B<.xz> or B<.lzma>) " > "is appended to the source filename to get the target filename." >@@ -194,18 +196,18 @@ > "Zieldatei gebildet." > > #. type: Plain text >-#: ../src/xz/xz.1:117 >+#: ../src/xz/xz.1:123 > msgid "" >-"When decompressing, the B<.xz> or B<.lzma> suffix is removed from the " >-"filename to get the target filename. B<xz> also recognizes the suffixes B<." >-"txz> and B<.tlz>, and replaces them with the B<.tar> suffix." >+"When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from " >+"the filename to get the target filename. B<xz> also recognizes the suffixes " >+"B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix." > msgstr "" >-"Bei der Dekompression wird das Suffix B<.xz> oder B<.lzma> vom Dateinamen " >-"entfernt und so der Name der Zieldatei gebildet. AuÃerdem erkennt B<xz> die " >-"Suffixe B<.txz> und B<.tlz> und ersetzt diese durch B<.tar>." >+"Bei der Dekompression wird das Suffix B<.xz>, B<.lzma> oder B<.lz> vom " >+"Dateinamen entfernt und so der Name der Zieldatei gebildet. AuÃerdem erkennt " >+"B<xz> die Suffixe B<.txz> und B<.tlz> und ersetzt diese durch B<.tar>." > > #. type: Plain text >-#: ../src/xz/xz.1:121 >+#: ../src/xz/xz.1:127 > msgid "" > "If the target file already exists, an error is displayed and the I<file> is " > "skipped." >@@ -214,7 +216,7 @@ > "die I<Datei> übersprungen." > > #. type: Plain text >-#: ../src/xz/xz.1:127 >+#: ../src/xz/xz.1:133 > msgid "" > "Unless writing to standard output, B<xz> will display a warning and skip the " > "I<file> if any of the following applies:" >@@ -223,7 +225,7 @@ > "überspringt die I<Datei>, wenn eine der folgenden Bedingungen zutreffend ist:" > > #. type: Plain text >-#: ../src/xz/xz.1:132 >+#: ../src/xz/xz.1:138 > msgid "" > "I<File> is not a regular file. Symbolic links are not followed, and thus " > "they are not considered to be regular files." >@@ -232,18 +234,18 @@ > "gefolgt und daher nicht zu den regulären Dateien gezählt." > > #. type: Plain text >-#: ../src/xz/xz.1:135 >+#: ../src/xz/xz.1:141 > msgid "I<File> has more than one hard link." > msgstr "Die I<Datei> hat mehr als eine harte Verknüpfung." > > #. type: Plain text >-#: ../src/xz/xz.1:138 >+#: ../src/xz/xz.1:144 > msgid "I<File> has setuid, setgid, or sticky bit set." > msgstr "" > "Für die I<Datei> ist das »setuid«-, »setgid«- oder »sticky«-Bit gesetzt." > > #. type: Plain text >-#: ../src/xz/xz.1:154 >+#: ../src/xz/xz.1:160 > msgid "" > "The operation mode is set to compress and the I<file> already has a suffix " > "of the target file format (B<.xz> or B<.txz> when compressing to the B<.xz> " >@@ -255,18 +257,18 @@ > "lzma>-Format)." > > #. type: Plain text >-#: ../src/xz/xz.1:163 >+#: ../src/xz/xz.1:170 > msgid "" > "The operation mode is set to decompress and the I<file> doesn't have a " >-"suffix of any of the supported file formats (B<.xz>, B<.txz>, B<.lzma>, or " >-"B<.tlz>)." >+"suffix of any of the supported file formats (B<.xz>, B<.txz>, B<.lzma>, B<." >+"tlz>, or B<.lz>)." > msgstr "" > "Der Aktionsmodus wird auf Dekompression gesetzt und die I<Datei> hat nicht " > "das Suffix eines der unterstützten Zieldateiformate (B<.xz>, B<.txz>, B<." >-"lzma> oder B<.tlz>)." >+"lzma>, B<.tlz> oder B<.lz>)." > > #. type: Plain text >-#: ../src/xz/xz.1:178 >+#: ../src/xz/xz.1:185 > msgid "" > "After successfully compressing or decompressing the I<file>, B<xz> copies " > "the owner, group, permissions, access time, and modification time from the " >@@ -286,19 +288,19 @@ > "unterstützt." > > #. type: Plain text >-#: ../src/xz/xz.1:187 >+#: ../src/xz/xz.1:195 > msgid "" > "Once the target file has been successfully closed, the source I<file> is " > "removed unless B<--keep> was specified. The source I<file> is never removed " >-"if the output is written to standard output." >+"if the output is written to standard output or if an error occurs." > msgstr "" > "Sobald die Zieldatei erfolgreich geschlossen wurde, wird die Ursprungs-" > "I<Datei> entfernt. Dies wird durch die Option B<--keep> verhindert. Die " > "Ursprungs-I<Datei> wird niemals entfernt, wenn die Ausgabe in die " >-"Standardausgabe geschrieben wird." >+"Standardausgabe geschrieben wird oder falls ein Fehler auftritt." > > #. type: Plain text >-#: ../src/xz/xz.1:199 >+#: ../src/xz/xz.1:207 > msgid "" > "Sending B<SIGINFO> or B<SIGUSR1> to the B<xz> process makes it print " > "progress information to standard error. This has only limited use since " >@@ -312,13 +314,13 @@ > "automatisch aktualisierter Fortschrittsanzeiger angezeigt." > > #. type: SS >-#: ../src/xz/xz.1:200 >+#: ../src/xz/xz.1:208 > #, no-wrap > msgid "Memory usage" > msgstr "Speicherbedarf" > > #. type: Plain text >-#: ../src/xz/xz.1:216 >+#: ../src/xz/xz.1:224 > msgid "" > "The memory usage of B<xz> varies from a few hundred kilobytes to several " > "gigabytes depending on the compression settings. The settings used when " >@@ -330,7 +332,7 @@ > "gigabytes of memory to decompress." > msgstr "" > "In Abhängigkeit von den gewählten Kompressionseinstellungen bewegt sich der " >-"Speicherverbrauch zwischen wenigen hundert Kilobyte und mehrere Gigabyte. " >+"Speicherverbrauch zwischen wenigen hundert Kilobyte und mehreren Gigabyte. " > "Die Einstellungen bei der Kompression einer Datei bestimmen dabei den " > "Speicherbedarf bei der Dekompression. Die Dekompression benötigt " > "üblicherweise zwischen 5\\ % und 20\\ % des Speichers, der bei der " >@@ -341,14 +343,14 @@ > > # cripple â lahmlegen...? War mir hier zu sehr StraÃenslang. > #. type: Plain text >-#: ../src/xz/xz.1:228 >+#: ../src/xz/xz.1:236 > msgid "" > "Especially users of older systems may find the possibility of very large " > "memory usage annoying. To prevent uncomfortable surprises, B<xz> has a " > "built-in memory usage limiter, which is disabled by default. While some " > "operating systems provide ways to limit the memory usage of processes, " >-"relying on it wasn't deemed to be flexible enough (e.g. using B<ulimit>(1) " >-"to limit virtual memory tends to cripple B<mmap>(2))." >+"relying on it wasn't deemed to be flexible enough (for example, using " >+"B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))." > msgstr "" > "Insbesondere für Benutzer älterer Systeme wird eventuell ein sehr groÃer " > "Speicherbedarf ärgerlich sein. Um unangenehme Ãberraschungen zu vermeiden, " >@@ -360,11 +362,11 @@ > "beeinträchtigen)." > > #. type: Plain text >-#: ../src/xz/xz.1:248 >+#: ../src/xz/xz.1:258 > msgid "" > "The memory usage limiter can be enabled with the command line option B<--" > "memlimit=>I<limit>. Often it is more convenient to enable the limiter by " >-"default by setting the environment variable B<XZ_DEFAULTS>, e.g.\\& " >+"default by setting the environment variable B<XZ_DEFAULTS>, for example, " > "B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits " > "separately for compression and decompression by using B<--memlimit-" > "compress=>I<limit> and B<--memlimit-decompress=>I<limit>. Using these two " >@@ -386,7 +388,7 @@ > "in der Befehlszeile eingeben." > > #. type: Plain text >-#: ../src/xz/xz.1:265 >+#: ../src/xz/xz.1:277 > msgid "" > "If the specified memory usage limit is exceeded when decompressing, B<xz> " > "will display an error and decompressing the file will fail. If the limit is " >@@ -394,9 +396,9 @@ > "the limit is no longer exceeded (except when using B<--format=raw> or B<--no-" > "adjust>). This way the operation won't fail unless the limit is very " > "small. The scaling of the settings is done in steps that don't match the " >-"compression level presets, e.g. if the limit is only slightly less than the " >-"amount required for B<xz -9>, the settings will be scaled down only a " >-"little, not all the way down to B<xz -8>." >+"compression level presets, for example, if the limit is only slightly less " >+"than the amount required for B<xz -9>, the settings will be scaled down only " >+"a little, not all the way down to B<xz -8>." > msgstr "" > "Wenn die angegebene Speicherbegrenzung bei der Dekompression überschritten " > "wird, schlägt der Vorgang fehl und B<xz> zeigt eine Fehlermeldung an. Wird " >@@ -411,13 +413,13 @@ > "nicht vollständig herunter zu den Werten für B<xz -8>" > > #. type: SS >-#: ../src/xz/xz.1:266 >+#: ../src/xz/xz.1:278 > #, no-wrap > msgid "Concatenation and padding with .xz files" > msgstr "Verkettung und Auffüllung von .xz-Dateien" > > #. type: Plain text >-#: ../src/xz/xz.1:274 >+#: ../src/xz/xz.1:286 > msgid "" > "It is possible to concatenate B<.xz> files as is. B<xz> will decompress " > "such files as if they were a single B<.xz> file." >@@ -426,12 +428,13 @@ > "von B<xz> genauso dekomprimiert wie eine einzelne B<.xz>-Datei." > > #. type: Plain text >-#: ../src/xz/xz.1:283 >+#: ../src/xz/xz.1:295 > msgid "" > "It is possible to insert padding between the concatenated parts or after the " > "last part. The padding must consist of null bytes and the size of the " >-"padding must be a multiple of four bytes. This can be useful e.g. if the B<." >-"xz> file is stored on a medium that measures file sizes in 512-byte blocks." >+"padding must be a multiple of four bytes. This can be useful, for example, " >+"if the B<.xz> file is stored on a medium that measures file sizes in 512-" >+"byte blocks." > msgstr "" > "Es ist weiterhin möglich, eine Auffüllung zwischen den verketteten Teilen " > "oder nach dem letzten Teil einzufügen. Die Auffüllung muss aus Null-Bytes " >@@ -441,7 +444,7 @@ > "Blöcken speichert." > > #. type: Plain text >-#: ../src/xz/xz.1:287 >+#: ../src/xz/xz.1:299 > msgid "" > "Concatenation and padding are not allowed with B<.lzma> files or raw streams." > msgstr "" >@@ -449,19 +452,19 @@ > "nicht erlaubt." > > #. type: SH >-#: ../src/xz/xz.1:288 ../src/xzdec/xzdec.1:61 >+#: ../src/xz/xz.1:300 ../src/xzdec/xzdec.1:61 > #, no-wrap > msgid "OPTIONS" > msgstr "OPTIONEN" > > #. type: SS >-#: ../src/xz/xz.1:290 >+#: ../src/xz/xz.1:302 > #, no-wrap > msgid "Integer suffixes and special values" > msgstr "Ganzzahlige Suffixe und spezielle Werte" > > #. type: Plain text >-#: ../src/xz/xz.1:294 >+#: ../src/xz/xz.1:306 > msgid "" > "In most places where an integer argument is expected, an optional suffix is " > "supported to easily indicate large integers. There must be no space between " >@@ -472,13 +475,13 @@ > "Ganzzahl und dem Suffix dürfen sich keine Leerzeichen befinden." > > #. type: TP >-#: ../src/xz/xz.1:294 >+#: ../src/xz/xz.1:306 > #, no-wrap > msgid "B<KiB>" > msgstr "B<KiB>" > > #. type: Plain text >-#: ../src/xz/xz.1:305 >+#: ../src/xz/xz.1:317 > msgid "" > "Multiply the integer by 1,024 (2^10). B<Ki>, B<k>, B<kB>, B<K>, and B<KB> " > "are accepted as synonyms for B<KiB>." >@@ -487,13 +490,13 @@ > "B<KB> werden als Synonyme für B<KiB> akzeptiert." > > #. type: TP >-#: ../src/xz/xz.1:305 >+#: ../src/xz/xz.1:317 > #, no-wrap > msgid "B<MiB>" > msgstr "B<MiB>" > > #. type: Plain text >-#: ../src/xz/xz.1:315 >+#: ../src/xz/xz.1:327 > msgid "" > "Multiply the integer by 1,048,576 (2^20). B<Mi>, B<m>, B<M>, and B<MB> are " > "accepted as synonyms for B<MiB>." >@@ -502,13 +505,13 @@ > "werden als Synonyme für B<MiB> akzeptiert." > > #. type: TP >-#: ../src/xz/xz.1:315 >+#: ../src/xz/xz.1:327 > #, no-wrap > msgid "B<GiB>" > msgstr "B<GiB>" > > #. type: Plain text >-#: ../src/xz/xz.1:325 >+#: ../src/xz/xz.1:337 > msgid "" > "Multiply the integer by 1,073,741,824 (2^30). B<Gi>, B<g>, B<G>, and B<GB> " > "are accepted as synonyms for B<GiB>." >@@ -517,7 +520,7 @@ > "B<GB> werden als Synonyme für B<GiB> akzeptiert." > > #. type: Plain text >-#: ../src/xz/xz.1:330 >+#: ../src/xz/xz.1:342 > msgid "" > "The special value B<max> can be used to indicate the maximum integer value " > "supported by the option." >@@ -526,13 +529,13 @@ > "jeweiligen Option akzeptierten maximalen Ganzzahlwert anzugeben." > > #. type: SS >-#: ../src/xz/xz.1:331 >+#: ../src/xz/xz.1:343 > #, no-wrap > msgid "Operation mode" > msgstr "Aktionsmodus" > > #. type: Plain text >-#: ../src/xz/xz.1:334 >+#: ../src/xz/xz.1:346 > msgid "" > "If multiple operation mode options are given, the last one takes effect." > msgstr "" >@@ -540,13 +543,13 @@ > "verwendet." > > #. type: TP >-#: ../src/xz/xz.1:334 >+#: ../src/xz/xz.1:346 > #, no-wrap > msgid "B<-z>, B<--compress>" > msgstr "B<-z>, B<--compress>" > > #. type: Plain text >-#: ../src/xz/xz.1:343 >+#: ../src/xz/xz.1:355 > msgid "" > "Compress. This is the default operation mode when no operation mode option " > "is specified and no other operation mode is implied from the command name " >@@ -557,24 +560,24 @@ > "werden kann (der Befehl B<unxz> impliziert zum Beispiel B<--decompress>)." > > #. type: TP >-#: ../src/xz/xz.1:343 ../src/xzdec/xzdec.1:62 >+#: ../src/xz/xz.1:355 ../src/xzdec/xzdec.1:62 > #, no-wrap > msgid "B<-d>, B<--decompress>, B<--uncompress>" > msgstr "B<-d>, B<--decompress>, B<--uncompress>" > > #. type: Plain text >-#: ../src/xz/xz.1:346 >+#: ../src/xz/xz.1:358 > msgid "Decompress." > msgstr "dekomprimpiert." > > #. type: TP >-#: ../src/xz/xz.1:346 >+#: ../src/xz/xz.1:358 > #, no-wrap > msgid "B<-t>, B<--test>" > msgstr "B<-t>, B<--test>" > > #. type: Plain text >-#: ../src/xz/xz.1:355 >+#: ../src/xz/xz.1:367 > msgid "" > "Test the integrity of compressed I<files>. This option is equivalent to B<--" > "decompress --stdout> except that the decompressed data is discarded instead " >@@ -586,13 +589,13 @@ > "werden keine Dateien erstellt oder entfernt." > > #. type: TP >-#: ../src/xz/xz.1:355 >+#: ../src/xz/xz.1:367 > #, no-wrap > msgid "B<-l>, B<--list>" > msgstr "B<-l>, B<--list>" > > #. type: Plain text >-#: ../src/xz/xz.1:364 >+#: ../src/xz/xz.1:376 > msgid "" > "Print information about compressed I<files>. No uncompressed output is " > "produced, and no files are created or removed. In list mode, the program " >@@ -605,14 +608,14 @@ > "Standardeingabe oder anderen nicht durchsuchbaren Quellen lesen." > > #. type: Plain text >-#: ../src/xz/xz.1:379 >+#: ../src/xz/xz.1:391 > msgid "" > "The default listing shows basic information about I<files>, one file per " > "line. To get more detailed information, use also the B<--verbose> option. " > "For even more information, use B<--verbose> twice, but note that this may be " > "slow, because getting all the extra information requires many seeks. The " >-"width of verbose output exceeds 80 characters, so piping the output to e.g." >-"\\& B<less\\ -S> may be convenient if the terminal isn't wide enough." >+"width of verbose output exceeds 80 characters, so piping the output to, for " >+"example, B<less\\ -S> may be convenient if the terminal isn't wide enough." > msgstr "" > "Die Liste zeigt in der Standardeinstellung grundlegende Informationen zu den " > "I<Dateien> an, zeilenweise pro Datei. Detailliertere Informationen erhalten " >@@ -625,7 +628,7 @@ > "Terminal nicht breit genug ist." > > #. type: Plain text >-#: ../src/xz/xz.1:386 >+#: ../src/xz/xz.1:398 > msgid "" > "The exact output may vary between B<xz> versions and different locales. For " > "machine-readable output, B<--robot --list> should be used." >@@ -635,35 +638,50 @@ > "Ausgabe gewünscht ist, dann sollten Sie B<--robot --list> verwenden." > > #. type: SS >-#: ../src/xz/xz.1:387 >+#: ../src/xz/xz.1:399 > #, no-wrap > msgid "Operation modifiers" > msgstr "Aktionsattribute" > > #. type: TP >-#: ../src/xz/xz.1:388 ../src/xzdec/xzdec.1:69 >+#: ../src/xz/xz.1:400 ../src/xzdec/xzdec.1:69 > #, no-wrap > msgid "B<-k>, B<--keep>" > msgstr "B<-k>, B<--keep>" > > #. type: Plain text >-#: ../src/xz/xz.1:391 >+#: ../src/xz/xz.1:403 > msgid "Don't delete the input files." > msgstr "verhindert das Löschen der Eingabedateien." > >+#. type: Plain text >+#: ../src/xz/xz.1:417 >+msgid "" >+"Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even " >+"if the input is a symbolic link to a regular file, has more than one hard " >+"link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and " >+"sticky bits are not copied to the target file. In earlier versions this was " >+"only done with B<--force>." >+msgstr "" >+"Seit der B<xz>-Version 5.2.6 wird die Kompression oder Dekompression auch " >+"dann ausgeführt, wenn die Eingabe ein symbolischer Link zu einer regulären " >+"Datei ist, mehr als einen harten Link hat oder das »setuid«-, »setgid«- oder " >+"»sticky«-Bit gesetzt ist. Die genannten Bits werden nicht in die Zieldatei " >+"kopiert. In früheren Versionen geschah dies nur mit B<--force>." >+ > #. type: TP >-#: ../src/xz/xz.1:391 >+#: ../src/xz/xz.1:417 > #, no-wrap > msgid "B<-f>, B<--force>" > msgstr "B<-f>, B<--force>" > > #. type: Plain text >-#: ../src/xz/xz.1:394 >+#: ../src/xz/xz.1:420 > msgid "This option has several effects:" > msgstr "Diese Option hat verschiedene Auswirkungen:" > > #. type: Plain text >-#: ../src/xz/xz.1:398 >+#: ../src/xz/xz.1:424 > msgid "" > "If the target file already exists, delete it before compressing or " > "decompressing." >@@ -672,7 +690,7 @@ > "Dekompression gelöscht." > > #. type: Plain text >-#: ../src/xz/xz.1:405 >+#: ../src/xz/xz.1:431 > msgid "" > "Compress or decompress even if the input is a symbolic link to a regular " > "file, has more than one hard link, or has the setuid, setgid, or sticky bit " >@@ -684,7 +702,7 @@ > "Die genannten Bits werden nicht in die Zieldatei kopiert." > > #. type: Plain text >-#: ../src/xz/xz.1:430 >+#: ../src/xz/xz.1:456 > msgid "" > "When used with B<--decompress> B<--stdout> and B<xz> cannot recognize the " > "type of the source file, copy the source file as is to standard output. " >@@ -705,13 +723,13 @@ > "können Sie B<xz> anweisen, nur ein einzelnes Dateiformat zu dekomprimieren." > > #. type: TP >-#: ../src/xz/xz.1:431 ../src/xzdec/xzdec.1:76 >+#: ../src/xz/xz.1:457 ../src/xzdec/xzdec.1:76 > #, no-wrap > msgid "B<-c>, B<--stdout>, B<--to-stdout>" > msgstr "B<-c>, B<--stdout>, B<--to-stdout>" > > #. type: Plain text >-#: ../src/xz/xz.1:437 >+#: ../src/xz/xz.1:463 > msgid "" > "Write the compressed or decompressed data to standard output instead of a " > "file. This implies B<--keep>." >@@ -720,13 +738,13 @@ > "anstatt in eine Datei. Dies impliziert B<--keep>." > > #. type: TP >-#: ../src/xz/xz.1:437 >+#: ../src/xz/xz.1:463 > #, no-wrap > msgid "B<--single-stream>" > msgstr "B<--single-stream>" > > #. type: Plain text >-#: ../src/xz/xz.1:446 >+#: ../src/xz/xz.1:472 > msgid "" > "Decompress only the first B<.xz> stream, and silently ignore possible " > "remaining input data following the stream. Normally such trailing garbage " >@@ -738,7 +756,7 @@ > "Fehlermeldung ausgibt." > > #. type: Plain text >-#: ../src/xz/xz.1:455 >+#: ../src/xz/xz.1:481 > msgid "" > "B<xz> never decompresses more than one stream from B<.lzma> files or raw " > "streams, but this option still makes B<xz> ignore the possible trailing data " >@@ -750,7 +768,7 @@ > "ignoriert." > > #. type: Plain text >-#: ../src/xz/xz.1:460 >+#: ../src/xz/xz.1:486 > msgid "" > "This option has no effect if the operation mode is not B<--decompress> or " > "B<--test>." >@@ -759,13 +777,13 @@ > "oder B<--test> ist." > > #. type: TP >-#: ../src/xz/xz.1:460 >+#: ../src/xz/xz.1:486 > #, no-wrap > msgid "B<--no-sparse>" > msgstr "B<--no-sparse>" > > #. type: Plain text >-#: ../src/xz/xz.1:472 >+#: ../src/xz/xz.1:498 > msgid "" > "Disable creation of sparse files. By default, if decompressing into a " > "regular file, B<xz> tries to make the file sparse if the decompressed data " >@@ -785,13 +803,13 @@ > "durch Verringerung der Ein-/Ausgaben der Platte." > > #. type: TP >-#: ../src/xz/xz.1:472 >+#: ../src/xz/xz.1:498 > #, no-wrap > msgid "B<-S> I<.suf>, B<--suffix=>I<.suf>" > msgstr "B<-S> I<.suf>, B<--suffix=>I<.suf>" > > #. type: Plain text >-#: ../src/xz/xz.1:484 >+#: ../src/xz/xz.1:510 > msgid "" > "When compressing, use I<.suf> as the suffix for the target file instead of " > "B<.xz> or B<.lzma>. If not writing to standard output and the source file " >@@ -804,20 +822,20 @@ > "angezeigt und die Datei übersprungen." > > #. type: Plain text >-#: ../src/xz/xz.1:497 >+#: ../src/xz/xz.1:524 > msgid "" > "When decompressing, recognize files with the suffix I<.suf> in addition to " >-"files with the B<.xz>, B<.txz>, B<.lzma>, or B<.tlz> suffix. If the source " >-"file has the suffix I<.suf>, the suffix is removed to get the target " >+"files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the " >+"source file has the suffix I<.suf>, the suffix is removed to get the target " > "filename." > msgstr "" > "berücksichtigt bei der Dekompression zusätzlich zu Dateien mit den Suffixen " >-"B<.xz>, B<.txz>, B<.lzma> oder B<.tlz> auch jene mit dem Suffix I<.suf>. " >-"Falls die Quelldatei das Suffix I<.suf> hat, wird dieses entfernt und so der " >-"Name der Zieldatei abgeleitet." >+"B<.xz>, B<.txz>, B<.lzma>, B<.tlz> oder B<.lz> auch jene mit dem Suffix I<." >+"suf>. Falls die Quelldatei das Suffix I<.suf> hat, wird dieses entfernt und " >+"so der Name der Zieldatei abgeleitet." > > #. type: Plain text >-#: ../src/xz/xz.1:503 >+#: ../src/xz/xz.1:530 > msgid "" > "When compressing or decompressing raw streams (B<--format=raw>), the suffix " > "must always be specified unless writing to standard output, because there is " >@@ -829,13 +847,13 @@ > "vorgegebenes Suffix für Rohdatenströme gibt." > > #. type: TP >-#: ../src/xz/xz.1:503 >+#: ../src/xz/xz.1:530 > #, no-wrap > msgid "B<--files>[B<=>I<file>]" > msgstr "B<--files>[B<=>I<Datei>]" > > #. type: Plain text >-#: ../src/xz/xz.1:517 >+#: ../src/xz/xz.1:544 > msgid "" > "Read the filenames to process from I<file>; if I<file> is omitted, filenames " > "are read from standard input. Filenames must be terminated with the newline " >@@ -851,13 +869,13 @@ > "angegeben sind, werden diese vor den Dateinamen aus der I<Datei> verarbeitet." > > #. type: TP >-#: ../src/xz/xz.1:517 >+#: ../src/xz/xz.1:544 > #, no-wrap > msgid "B<--files0>[B<=>I<file>]" > msgstr "B<--files0>[B<=>I<Datei>]" > > #. type: Plain text >-#: ../src/xz/xz.1:521 >+#: ../src/xz/xz.1:548 > msgid "" > "This is identical to B<--files>[B<=>I<file>] except that each filename must " > "be terminated with the null character." >@@ -866,31 +884,31 @@ > "Dateiname mit einem Null-Zeichen abgeschlossen werden muss." > > #. type: SS >-#: ../src/xz/xz.1:522 >+#: ../src/xz/xz.1:549 > #, no-wrap > msgid "Basic file format and compression options" > msgstr "Grundlegende Dateiformat- und Kompressionsoptionen" > > #. type: TP >-#: ../src/xz/xz.1:523 >+#: ../src/xz/xz.1:550 > #, no-wrap > msgid "B<-F> I<format>, B<--format=>I<format>" > msgstr "B<-F> I<Format>, B<--format=>I<Format>" > > #. type: Plain text >-#: ../src/xz/xz.1:528 >+#: ../src/xz/xz.1:555 > msgid "Specify the file I<format> to compress or decompress:" > msgstr "" > "gibt das I<Format> der zu komprimierenden oder dekomprimierenden Datei an:" > > #. type: TP >-#: ../src/xz/xz.1:529 >+#: ../src/xz/xz.1:556 > #, no-wrap > msgid "B<auto>" > msgstr "B<auto>" > > #. type: Plain text >-#: ../src/xz/xz.1:541 >+#: ../src/xz/xz.1:568 > msgid "" > "This is the default. When compressing, B<auto> is equivalent to B<xz>. " > "When decompressing, the format of the input file is automatically detected. " >@@ -903,13 +921,13 @@ > "format=raw> erzeugt werden, nicht automatisch erkannt werden können." > > #. type: TP >-#: ../src/xz/xz.1:541 >+#: ../src/xz/xz.1:568 > #, no-wrap > msgid "B<xz>" > msgstr "B<xz>" > > #. type: Plain text >-#: ../src/xz/xz.1:548 >+#: ../src/xz/xz.1:575 > msgid "" > "Compress to the B<.xz> file format, or accept only B<.xz> files when " > "decompressing." >@@ -918,13 +936,13 @@ > "Dateien bei der Dekompression." > > #. type: TP >-#: ../src/xz/xz.1:548 >+#: ../src/xz/xz.1:575 > #, no-wrap > msgid "B<lzma>, B<alone>" > msgstr "B<lzma>, B<alone>" > > #. type: Plain text >-#: ../src/xz/xz.1:558 >+#: ../src/xz/xz.1:585 > msgid "" > "Compress to the legacy B<.lzma> file format, or accept only B<.lzma> files " > "when decompressing. The alternative name B<alone> is provided for backwards " >@@ -935,13 +953,58 @@ > "B<alone> dient der Abwärtskompatibilität zu den LZMA-Dienstprogrammen." > > #. type: TP >-#: ../src/xz/xz.1:558 >+#: ../src/xz/xz.1:585 > #, no-wrap >+msgid "B<lzip>" >+msgstr "B<lzip>" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:591 >+msgid "" >+"Accept only B<.lz> files when decompressing. Compression is not supported." >+msgstr "" >+"Akzeptiert nur B<.lz>-Dateien bei der Dekompression. Kompression wird nicht " >+"unterstützt." >+ >+#. type: Plain text >+#: ../src/xz/xz.1:604 >+msgid "" >+"The B<.lz> format version 0 and the unextended version 1 are supported. " >+"Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't " >+"common but may be found from file archives as a few source packages were " >+"released in this format. People might have old personal files in this " >+"format too. Decompression support for the format version 0 was removed in " >+"B<lzip> 1.18." >+msgstr "" >+"Das B<.lz>-Format wird in Version 0 und der unerweiterten Version 1 " >+"unterstützt. Dateien der Version 0 wurden B<lzip> 1.3 und älter erstellt. " >+"Solche Dateien sind nicht sehr weit verbreitet, können aber in Dateiarchiven " >+"gefunden werden, da einige Quellpakete in diesem Format veröffentlicht " >+"wurden. Es ist auch möglich, dass Benutzer alte persönliche Dateien in " >+"diesem Format haben. Die Dekompressionsunterstützung für das Format der " >+"Version 0 wurde mit der Version 1.18 aus B<lzip> entfernt." >+ >+#. type: Plain text >+#: ../src/xz/xz.1:613 >+msgid "" >+"B<lzip> 1.4 and later create files in the format version 1. The sync flush " >+"marker extension to the format version 1 was added in B<lzip> 1.6. This " >+"extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt " >+"input)." >+msgstr "" >+"B<lzip>-Versionen ab 1.4 erstellen Dateien im Format der Version 0. Die " >+"Erweiterung »Sync Flush Marker« zur Formatversion 1 wurde in B<lzip> 1.6 " >+"hinzugefügt. Diese Erweiterung wird sehr selten verwendet und wird von B<xz> " >+"nicht unterstützt (die Eingabe wird als beschädigt erkannt)." >+ >+#. type: TP >+#: ../src/xz/xz.1:613 >+#, no-wrap > msgid "B<raw>" > msgstr "B<raw>" > > #. type: Plain text >-#: ../src/xz/xz.1:566 >+#: ../src/xz/xz.1:621 > msgid "" > "Compress or uncompress a raw stream (no headers). This is meant for " > "advanced users only. To decode raw streams, you need use B<--format=raw> " >@@ -955,13 +1018,13 @@ > "Container-Headern gespeichert worden wäre." > > #. type: TP >-#: ../src/xz/xz.1:567 >+#: ../src/xz/xz.1:622 > #, no-wrap > msgid "B<-C> I<check>, B<--check=>I<check>" > msgstr "B<-C> I<Prüfung>, B<--check=>I<Prüfung>" > > #. type: Plain text >-#: ../src/xz/xz.1:582 >+#: ../src/xz/xz.1:637 > msgid "" > "Specify the type of the integrity check. The check is calculated from the " > "uncompressed data and stored in the B<.xz> file. This option has an effect " >@@ -977,18 +1040,18 @@ > "dekomprimiert wird." > > #. type: Plain text >-#: ../src/xz/xz.1:586 >+#: ../src/xz/xz.1:641 > msgid "Supported I<check> types:" > msgstr "Folgende Typen von I<Prüfungen> werden unterstützt:" > > #. type: TP >-#: ../src/xz/xz.1:587 >+#: ../src/xz/xz.1:642 > #, no-wrap > msgid "B<none>" > msgstr "B<none>" > > #. type: Plain text >-#: ../src/xz/xz.1:593 >+#: ../src/xz/xz.1:648 > msgid "" > "Don't calculate an integrity check at all. This is usually a bad idea. " > "This can be useful when integrity of the data is verified by other means " >@@ -999,25 +1062,25 @@ > "Weise sichergestellt werden kann." > > #. type: TP >-#: ../src/xz/xz.1:593 >+#: ../src/xz/xz.1:648 > #, no-wrap > msgid "B<crc32>" > msgstr "B<crc32>" > > #. type: Plain text >-#: ../src/xz/xz.1:596 >+#: ../src/xz/xz.1:651 > msgid "Calculate CRC32 using the polynomial from IEEE-802.3 (Ethernet)." > msgstr "" > "berechnet die CRC32-Prüfsumme anhand des Polynoms aus IEEE-802.3 (Ethernet)." > > #. type: TP >-#: ../src/xz/xz.1:596 >+#: ../src/xz/xz.1:651 > #, no-wrap > msgid "B<crc64>" > msgstr "B<crc64>" > > #. type: Plain text >-#: ../src/xz/xz.1:601 >+#: ../src/xz/xz.1:656 > msgid "" > "Calculate CRC64 using the polynomial from ECMA-182. This is the default, " > "since it is slightly better than CRC32 at detecting damaged files and the " >@@ -1028,20 +1091,20 @@ > "werden und die Geschwindigkeitsdifferenz unerheblich ist." > > #. type: TP >-#: ../src/xz/xz.1:601 >+#: ../src/xz/xz.1:656 > #, no-wrap > msgid "B<sha256>" > msgstr "B<sha256>" > > #. type: Plain text >-#: ../src/xz/xz.1:605 >+#: ../src/xz/xz.1:660 > msgid "Calculate SHA-256. This is somewhat slower than CRC32 and CRC64." > msgstr "" > "berechnet die SHA-256-Prüfsumme. Dies ist etwas langsamer als CRC32 und " > "CRC64." > > #. type: Plain text >-#: ../src/xz/xz.1:611 >+#: ../src/xz/xz.1:666 > msgid "" > "Integrity of the B<.xz> headers is always verified with CRC32. It is not " > "possible to change or disable it." >@@ -1050,13 +1113,13 @@ > "möglich, dies zu ändern oder zu deaktivieren." > > #. type: TP >-#: ../src/xz/xz.1:611 >+#: ../src/xz/xz.1:666 > #, no-wrap > msgid "B<--ignore-check>" > msgstr "B<--ignore-check>" > > #. type: Plain text >-#: ../src/xz/xz.1:617 >+#: ../src/xz/xz.1:672 > msgid "" > "Don't verify the integrity check of the compressed data when decompressing. " > "The CRC32 values in the B<.xz> headers will still be verified normally." >@@ -1066,7 +1129,7 @@ > "normal verifiziert." > > #. type: Plain text >-#: ../src/xz/xz.1:620 >+#: ../src/xz/xz.1:675 > msgid "" > "B<Do not use this option unless you know what you are doing.> Possible " > "reasons to use this option:" >@@ -1075,13 +1138,13 @@ > "Gründe, diese Option zu verwenden:" > > #. type: Plain text >-#: ../src/xz/xz.1:623 >+#: ../src/xz/xz.1:678 > msgid "Trying to recover data from a corrupt .xz file." > msgstr "Versuchen, Daten aus einer beschädigten .xz-Datei wiederherzustellen." > > # Irgendwie ist mir »extrem gut komprimiert« hier zu diffus. Was soll »gut« hier bedeuten? Besonders stark, besonders clever, was auch immer... > #. type: Plain text >-#: ../src/xz/xz.1:629 >+#: ../src/xz/xz.1:684 > msgid "" > "Speeding up decompression. This matters mostly with SHA-256 or with files " > "that have compressed extremely well. It's recommended to not use this " >@@ -1094,13 +1157,13 @@ > "denn, die Integrität der Datei wird extern auf andere Weise überprüft." > > #. type: TP >-#: ../src/xz/xz.1:630 >+#: ../src/xz/xz.1:685 > #, no-wrap > msgid "B<-0> ... B<-9>" > msgstr "B<-0> ⦠B<-9>" > > #. type: Plain text >-#: ../src/xz/xz.1:639 >+#: ../src/xz/xz.1:694 > msgid "" > "Select a compression preset level. The default is B<-6>. If multiple " > "preset levels are specified, the last one takes effect. If a custom filter " >@@ -1113,7 +1176,7 @@ > "angegeben wurde, wird diese durch die Festlegung der Voreinstellung geleert." > > #. type: Plain text >-#: ../src/xz/xz.1:654 >+#: ../src/xz/xz.1:709 > msgid "" > "The differences between the presets are more significant than with " > "B<gzip>(1) and B<bzip2>(1). The selected compression settings determine " >@@ -1131,13 +1194,13 @@ > "B<bzip2>(1) gehandhabt wird." > > #. type: TP >-#: ../src/xz/xz.1:655 >+#: ../src/xz/xz.1:710 > #, no-wrap > msgid "B<-0> ... B<-3>" > msgstr "B<-0> ⦠B<-3>" > > #. type: Plain text >-#: ../src/xz/xz.1:667 >+#: ../src/xz/xz.1:722 > msgid "" > "These are somewhat fast presets. B<-0> is sometimes faster than B<gzip -9> " > "while compressing much better. The higher ones often have speed comparable " >@@ -1152,35 +1215,35 @@ > "komprimierenden Daten abhängig ist." > > #. type: TP >-#: ../src/xz/xz.1:667 >+#: ../src/xz/xz.1:722 > #, no-wrap > msgid "B<-4> ... B<-6>" > msgstr "B<-4> ⦠B<-6>" > > #. type: Plain text >-#: ../src/xz/xz.1:681 >+#: ../src/xz/xz.1:736 > msgid "" > "Good to very good compression while keeping decompressor memory usage " > "reasonable even for old systems. B<-6> is the default, which is usually a " >-"good choice e.g. for distributing files that need to be decompressible even " >-"on systems with only 16\\ MiB RAM. (B<-5e> or B<-6e> may be worth " >-"considering too. See B<--extreme>.)" >+"good choice for distributing files that need to be decompressible even on " >+"systems with only 16\\ MiB RAM. (B<-5e> or B<-6e> may be worth considering " >+"too. See B<--extreme>.)" > msgstr "" > "Gute bis sehr gute Kompression, wobei der Speicherbedarf für die " > "Dekompression selbst auf alten Systemen akzeptabel ist. B<-6> ist die " >-"Voreinstellung, welche üblicherweise eine gute Wahl ist, zum Beispiel für " >-"die Verteilung von Dateien, die selbst noch auf Systemen mit nur 16\\ MiB " >-"Arbeitsspeicher dekomprimiert werden müssen (B<-5e> oder B<-6e> sind " >-"ebenfalls eine Ãberlegung wert. Siehe B<--extreme>)." >+"Voreinstellung, welche üblicherweise eine gute Wahl für die Verteilung von " >+"Dateien ist, die selbst noch auf Systemen mit nur 16\\ MiB Arbeitsspeicher " >+"dekomprimiert werden müssen (B<-5e> oder B<-6e> sind ebenfalls eine " >+"Ãberlegung wert. Siehe B<--extreme>)." > > #. type: TP >-#: ../src/xz/xz.1:681 >+#: ../src/xz/xz.1:736 > #, no-wrap > msgid "B<-7 ... -9>" > msgstr "B<-7 ⦠-9>" > > #. type: Plain text >-#: ../src/xz/xz.1:688 >+#: ../src/xz/xz.1:743 > msgid "" > "These are like B<-6> but with higher compressor and decompressor memory " > "requirements. These are useful only when compressing files bigger than 8\\ " >@@ -1191,7 +1254,7 @@ > "sollen, die gröÃer als 8\\ MiB, 16\\ MiB beziehungsweise 32\\ MiB sind." > > #. type: Plain text >-#: ../src/xz/xz.1:696 >+#: ../src/xz/xz.1:751 > msgid "" > "On the same hardware, the decompression speed is approximately a constant " > "number of bytes of compressed data per second. In other words, the better " >@@ -1206,282 +1269,283 @@ > "ausgegebenen unkomprimierten Daten stark variieren kann." > > #. type: Plain text >-#: ../src/xz/xz.1:698 >+#: ../src/xz/xz.1:753 > msgid "The following table summarises the features of the presets:" > msgstr "" > "Die folgende Tabelle fasst die Eigenschaften der Voreinstellungen zusammen:" > > #. type: tbl table >-#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 ../src/xz/xz.1:2623 >+#: ../src/xz/xz.1:760 ../src/xz/xz.1:841 ../src/xz/xz.1:2839 > #, no-wrap > msgid "Preset" >-msgstr "Voreinstellung" >+msgstr "Voreinst." > > #. type: tbl table >-#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 >+#: ../src/xz/xz.1:760 ../src/xz/xz.1:841 > #, no-wrap > msgid "DictSize" >-msgstr "DictGröÃe" >+msgstr "Wörtb.Gr" > > #. type: tbl table >-#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 ../src/xz/xz.1:2623 >+#: ../src/xz/xz.1:760 ../src/xz/xz.1:841 ../src/xz/xz.1:2839 > #, no-wrap > msgid "CompCPU" >-msgstr "KompCPU" >+msgstr "KomprCPU" > > #. type: tbl table >-#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 >+#: ../src/xz/xz.1:760 ../src/xz/xz.1:841 > #, no-wrap > msgid "CompMem" >-msgstr "KompSpeicher" >+msgstr "KompSpeich" > > #. type: tbl table >-#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 >+#: ../src/xz/xz.1:760 ../src/xz/xz.1:841 > #, no-wrap > msgid "DecMem" >-msgstr "DekSpeicher" >+msgstr "DekompSpeich" > > #. type: tbl table >-#: ../src/xz/xz.1:706 ../src/xz/xz.1:2234 ../src/xz/xz.1:2259 >-#: ../src/xz/xz.1:2624 >+#: ../src/xz/xz.1:761 ../src/xz/xz.1:2450 ../src/xz/xz.1:2475 >+#: ../src/xz/xz.1:2840 > #, no-wrap > msgid "-0" > msgstr "-0" > > #. type: tbl table >-#: ../src/xz/xz.1:706 ../src/xz/xz.1:787 ../src/xz/xz.1:2234 >+#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2450 > #, no-wrap > msgid "256 KiB" > msgstr "256 KiB" > >-#. type: tbl table >-#: ../src/xz/xz.1:706 ../src/xz/xz.1:2624 >+#. type: TP >+#: ../src/xz/xz.1:761 ../src/xz/xz.1:2840 ../src/scripts/xzgrep.1:82 > #, no-wrap > msgid "0" > msgstr "0" > > #. type: tbl table >-#: ../src/xz/xz.1:706 ../src/xz/xz.1:708 ../src/xz/xz.1:789 ../src/xz/xz.1:2259 >+#: ../src/xz/xz.1:761 ../src/xz/xz.1:763 ../src/xz/xz.1:844 ../src/xz/xz.1:2475 > #, no-wrap > msgid "3 MiB" > msgstr "3 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:706 ../src/xz/xz.1:707 ../src/xz/xz.1:787 ../src/xz/xz.1:788 >-#: ../src/xz/xz.1:2235 ../src/xz/xz.1:2236 ../src/xz/xz.1:2238 >+#: ../src/xz/xz.1:761 ../src/xz/xz.1:762 ../src/xz/xz.1:842 ../src/xz/xz.1:843 >+#: ../src/xz/xz.1:2451 ../src/xz/xz.1:2452 ../src/xz/xz.1:2454 > #, no-wrap > msgid "1 MiB" > msgstr "1 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:707 ../src/xz/xz.1:2235 ../src/xz/xz.1:2260 >-#: ../src/xz/xz.1:2625 >+#: ../src/xz/xz.1:762 ../src/xz/xz.1:2451 ../src/xz/xz.1:2476 >+#: ../src/xz/xz.1:2841 > #, no-wrap > msgid "-1" > msgstr "-1" > >-#. type: tbl table >-#: ../src/xz/xz.1:707 ../src/xz/xz.1:1582 ../src/xz/xz.1:2625 >+#. type: TP >+#: ../src/xz/xz.1:762 ../src/xz/xz.1:1758 ../src/xz/xz.1:2841 >+#: ../src/scripts/xzgrep.1:86 > #, no-wrap > msgid "1" > msgstr "1" > > #. type: tbl table >-#: ../src/xz/xz.1:707 ../src/xz/xz.1:711 ../src/xz/xz.1:712 ../src/xz/xz.1:792 >-#: ../src/xz/xz.1:793 ../src/xz/xz.1:2260 >+#: ../src/xz/xz.1:762 ../src/xz/xz.1:766 ../src/xz/xz.1:767 ../src/xz/xz.1:847 >+#: ../src/xz/xz.1:848 ../src/xz/xz.1:2476 > #, no-wrap > msgid "9 MiB" > msgstr "9 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:707 ../src/xz/xz.1:708 ../src/xz/xz.1:788 ../src/xz/xz.1:789 >-#: ../src/xz/xz.1:2236 ../src/xz/xz.1:2239 ../src/xz/xz.1:2260 >+#: ../src/xz/xz.1:762 ../src/xz/xz.1:763 ../src/xz/xz.1:843 ../src/xz/xz.1:844 >+#: ../src/xz/xz.1:2452 ../src/xz/xz.1:2455 ../src/xz/xz.1:2476 > #, no-wrap > msgid "2 MiB" > msgstr "2 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:708 ../src/xz/xz.1:2236 ../src/xz/xz.1:2261 >-#: ../src/xz/xz.1:2626 >+#: ../src/xz/xz.1:763 ../src/xz/xz.1:2452 ../src/xz/xz.1:2477 >+#: ../src/xz/xz.1:2842 > #, no-wrap > msgid "-2" > msgstr "-2" > > #. type: tbl table >-#: ../src/xz/xz.1:708 ../src/xz/xz.1:1585 ../src/xz/xz.1:2626 >+#: ../src/xz/xz.1:763 ../src/xz/xz.1:1760 ../src/xz/xz.1:2842 > #, no-wrap > msgid "2" > msgstr "2" > > #. type: tbl table >-#: ../src/xz/xz.1:708 ../src/xz/xz.1:713 ../src/xz/xz.1:794 ../src/xz/xz.1:2261 >+#: ../src/xz/xz.1:763 ../src/xz/xz.1:768 ../src/xz/xz.1:849 ../src/xz/xz.1:2477 > #, no-wrap > msgid "17 MiB" > msgstr "17 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:709 ../src/xz/xz.1:2237 ../src/xz/xz.1:2262 >-#: ../src/xz/xz.1:2627 >+#: ../src/xz/xz.1:764 ../src/xz/xz.1:2453 ../src/xz/xz.1:2478 >+#: ../src/xz/xz.1:2843 > #, no-wrap > msgid "-3" > msgstr "-3" > > #. type: tbl table >-#: ../src/xz/xz.1:709 ../src/xz/xz.1:710 ../src/xz/xz.1:787 ../src/xz/xz.1:790 >-#: ../src/xz/xz.1:791 ../src/xz/xz.1:2237 ../src/xz/xz.1:2238 >-#: ../src/xz/xz.1:2240 >+#: ../src/xz/xz.1:764 ../src/xz/xz.1:765 ../src/xz/xz.1:842 ../src/xz/xz.1:845 >+#: ../src/xz/xz.1:846 ../src/xz/xz.1:2453 ../src/xz/xz.1:2454 >+#: ../src/xz/xz.1:2456 > #, no-wrap > msgid "4 MiB" > msgstr "4 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:709 ../src/xz/xz.1:2627 >+#: ../src/xz/xz.1:764 ../src/xz/xz.1:2843 > #, no-wrap > msgid "3" > msgstr "3" > > #. type: tbl table >-#: ../src/xz/xz.1:709 ../src/xz/xz.1:714 ../src/xz/xz.1:795 ../src/xz/xz.1:2242 >-#: ../src/xz/xz.1:2243 ../src/xz/xz.1:2262 >+#: ../src/xz/xz.1:764 ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2458 >+#: ../src/xz/xz.1:2459 ../src/xz/xz.1:2478 > #, no-wrap > msgid "32 MiB" > msgstr "32 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:709 ../src/xz/xz.1:710 ../src/xz/xz.1:790 ../src/xz/xz.1:791 >+#: ../src/xz/xz.1:764 ../src/xz/xz.1:765 ../src/xz/xz.1:845 ../src/xz/xz.1:846 > #, no-wrap > msgid "5 MiB" > msgstr "5 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:710 ../src/xz/xz.1:2238 ../src/xz/xz.1:2263 >-#: ../src/xz/xz.1:2628 >+#: ../src/xz/xz.1:765 ../src/xz/xz.1:2454 ../src/xz/xz.1:2479 >+#: ../src/xz/xz.1:2844 > #, no-wrap > msgid "-4" > msgstr "-4" > > #. type: tbl table >-#: ../src/xz/xz.1:710 ../src/xz/xz.1:1583 ../src/xz/xz.1:1584 >-#: ../src/xz/xz.1:1587 ../src/xz/xz.1:2628 >+#: ../src/xz/xz.1:765 ../src/xz/xz.1:1759 ../src/xz/xz.1:1761 >+#: ../src/xz/xz.1:1762 ../src/xz/xz.1:1764 ../src/xz/xz.1:2844 > #, no-wrap > msgid "4" > msgstr "4" > > #. type: tbl table >-#: ../src/xz/xz.1:710 ../src/xz/xz.1:790 ../src/xz/xz.1:791 ../src/xz/xz.1:2263 >+#: ../src/xz/xz.1:765 ../src/xz/xz.1:845 ../src/xz/xz.1:846 ../src/xz/xz.1:2479 > #, no-wrap > msgid "48 MiB" > msgstr "48 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:711 ../src/xz/xz.1:2239 ../src/xz/xz.1:2264 >-#: ../src/xz/xz.1:2629 >+#: ../src/xz/xz.1:766 ../src/xz/xz.1:2455 ../src/xz/xz.1:2480 >+#: ../src/xz/xz.1:2845 > #, no-wrap > msgid "-5" > msgstr "-5" > > #. type: tbl table >-#: ../src/xz/xz.1:711 ../src/xz/xz.1:712 ../src/xz/xz.1:792 ../src/xz/xz.1:793 >-#: ../src/xz/xz.1:2239 ../src/xz/xz.1:2240 ../src/xz/xz.1:2241 >+#: ../src/xz/xz.1:766 ../src/xz/xz.1:767 ../src/xz/xz.1:847 ../src/xz/xz.1:848 >+#: ../src/xz/xz.1:2455 ../src/xz/xz.1:2456 ../src/xz/xz.1:2457 > #, no-wrap > msgid "8 MiB" > msgstr "8 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:711 ../src/xz/xz.1:2629 >+#: ../src/xz/xz.1:766 ../src/xz/xz.1:2845 > #, no-wrap > msgid "5" > msgstr "5" > > #. type: tbl table >-#: ../src/xz/xz.1:711 ../src/xz/xz.1:712 ../src/xz/xz.1:792 ../src/xz/xz.1:793 >-#: ../src/xz/xz.1:2264 ../src/xz/xz.1:2265 >+#: ../src/xz/xz.1:766 ../src/xz/xz.1:767 ../src/xz/xz.1:847 ../src/xz/xz.1:848 >+#: ../src/xz/xz.1:2480 ../src/xz/xz.1:2481 > #, no-wrap > msgid "94 MiB" > msgstr "94 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:712 ../src/xz/xz.1:2240 ../src/xz/xz.1:2265 >-#: ../src/xz/xz.1:2630 >+#: ../src/xz/xz.1:767 ../src/xz/xz.1:2456 ../src/xz/xz.1:2481 >+#: ../src/xz/xz.1:2846 > #, no-wrap > msgid "-6" > msgstr "-6" > > #. type: tbl table >-#: ../src/xz/xz.1:712 ../src/xz/xz.1:713 ../src/xz/xz.1:714 ../src/xz/xz.1:715 >-#: ../src/xz/xz.1:2630 >+#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:769 ../src/xz/xz.1:770 >+#: ../src/xz/xz.1:2846 > #, no-wrap > msgid "6" > msgstr "6" > > #. type: tbl table >-#: ../src/xz/xz.1:713 ../src/xz/xz.1:2241 ../src/xz/xz.1:2266 >+#: ../src/xz/xz.1:768 ../src/xz/xz.1:2457 ../src/xz/xz.1:2482 > #, no-wrap > msgid "-7" > msgstr "-7" > > #. type: tbl table >-#: ../src/xz/xz.1:713 ../src/xz/xz.1:794 ../src/xz/xz.1:2241 >-#: ../src/xz/xz.1:2242 ../src/xz/xz.1:2263 >+#: ../src/xz/xz.1:768 ../src/xz/xz.1:849 ../src/xz/xz.1:2457 >+#: ../src/xz/xz.1:2458 ../src/xz/xz.1:2479 > #, no-wrap > msgid "16 MiB" > msgstr "16 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:713 ../src/xz/xz.1:794 ../src/xz/xz.1:2266 >+#: ../src/xz/xz.1:768 ../src/xz/xz.1:849 ../src/xz/xz.1:2482 > #, no-wrap > msgid "186 MiB" > msgstr "186 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:714 ../src/xz/xz.1:2242 ../src/xz/xz.1:2267 >+#: ../src/xz/xz.1:769 ../src/xz/xz.1:2458 ../src/xz/xz.1:2483 > #, no-wrap > msgid "-8" > msgstr "-8" > > #. type: tbl table >-#: ../src/xz/xz.1:714 ../src/xz/xz.1:795 ../src/xz/xz.1:2267 >+#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2483 > #, no-wrap > msgid "370 MiB" > msgstr "370 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:714 ../src/xz/xz.1:795 >+#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 > #, no-wrap > msgid "33 MiB" > msgstr "33 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:715 ../src/xz/xz.1:2243 ../src/xz/xz.1:2268 >+#: ../src/xz/xz.1:770 ../src/xz/xz.1:2459 ../src/xz/xz.1:2484 > #, no-wrap > msgid "-9" > msgstr "-9" > > #. type: tbl table >-#: ../src/xz/xz.1:715 ../src/xz/xz.1:796 ../src/xz/xz.1:2243 >+#: ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2459 > #, no-wrap > msgid "64 MiB" > msgstr "64 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:715 ../src/xz/xz.1:796 ../src/xz/xz.1:2268 >+#: ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2484 > #, no-wrap > msgid "674 MiB" > msgstr "674 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:715 ../src/xz/xz.1:796 >+#: ../src/xz/xz.1:770 ../src/xz/xz.1:851 > #, no-wrap > msgid "65 MiB" > msgstr "65 MiB" > > #. type: Plain text >-#: ../src/xz/xz.1:721 >+#: ../src/xz/xz.1:776 > msgid "Column descriptions:" > msgstr "Spaltenbeschreibungen:" > > #. type: Plain text >-#: ../src/xz/xz.1:733 >+#: ../src/xz/xz.1:788 > msgid "" > "DictSize is the LZMA2 dictionary size. It is waste of memory to use a " > "dictionary bigger than the size of the uncompressed file. This is why it is " >@@ -1489,15 +1553,15 @@ > "for them. At B<-6> and lower, the amount of memory wasted is usually low " > "enough to not matter." > msgstr "" >-"DictGröÃe ist die GröÃe des LZMA2-Wörterbuchs. Es ist Speicherverschwendung, " >-"ein Wörterbuch zu verwenden, das gröÃer als die unkomprimierte Datei ist. " >-"Daher ist es besser, die Voreinstellungen B<-7> ⦠B<-9> zu vermeiden, falls " >-"es keinen wirklichen Bedarf dafür gibt. Mit B<-6> und weniger wird " >-"üblicherweise so wenig Speicher verschwendet, dass dies nicht ins Gewicht " >-"fällt." >+"Wörtb.GröÃe ist die GröÃe des LZMA2-Wörterbuchs. Es ist " >+"Speicherverschwendung, ein Wörterbuch zu verwenden, das gröÃer als die " >+"unkomprimierte Datei ist. Daher ist es besser, die Voreinstellungen B<-7> ⦠" >+"B<-9> zu vermeiden, falls es keinen wirklichen Bedarf dafür gibt. Mit B<-6> " >+"und weniger wird üblicherweise so wenig Speicher verschwendet, dass dies " >+"nicht ins Gewicht fällt." > > #. type: Plain text >-#: ../src/xz/xz.1:742 >+#: ../src/xz/xz.1:797 > msgid "" > "CompCPU is a simplified representation of the LZMA2 settings that affect " > "compression speed. The dictionary size affects speed too, so while CompCPU " >@@ -1505,28 +1569,28 @@ > "little slower. To get even slower and thus possibly better compression, see " > "B<--extreme>." > msgstr "" >-"KompCPU ist eine vereinfachte Repräsentation der LZMA2-Einstellungen, welche " >-"die Kompressionsgeschwindigkeit beeinflussen. Die WörterbuchgröÃe wirkt sich " >-"ebenfalls auf die Geschwindigkeit aus. Während KompCPU für die Stufen B<-6> " >-"bis B<-9> gleich ist, tendieren höhere Stufen dazu, etwas langsamer zu sein. " >-"Um eine noch langsamere, aber möglicherweise bessere Kompression zu " >-"erhalten, siehe B<--extreme>." >+"KomprCPU ist eine vereinfachte Repräsentation der LZMA2-Einstellungen, " >+"welche die Kompressionsgeschwindigkeit beeinflussen. Die WörterbuchgröÃe " >+"wirkt sich ebenfalls auf die Geschwindigkeit aus. Während KompCPU für die " >+"Stufen B<-6> bis B<-9> gleich ist, tendieren höhere Stufen dazu, etwas " >+"langsamer zu sein. Um eine noch langsamere, aber möglicherweise bessere " >+"Kompression zu erhalten, siehe B<--extreme>." > > #. type: Plain text >-#: ../src/xz/xz.1:750 >+#: ../src/xz/xz.1:805 > msgid "" > "CompMem contains the compressor memory requirements in the single-threaded " > "mode. It may vary slightly between B<xz> versions. Memory requirements of " > "some of the future multithreaded modes may be dramatically higher than that " > "of the single-threaded mode." > msgstr "" >-"KompSpeicher enthält den Speicherbedarf des Kompressors im Einzel-Thread-" >+"KompSpeich enthält den Speicherbedarf des Kompressors im Einzel-Thread-" > "Modus. Dieser kann zwischen den B<xz>-Versionen leicht variieren. Der " > "Speicherbedarf einiger der zukünftigen Multithread-Modi kann dramatisch " > "höher sein als im Einzel-Thread-Modus." > > #. type: Plain text >-#: ../src/xz/xz.1:757 >+#: ../src/xz/xz.1:812 > msgid "" > "DecMem contains the decompressor memory requirements. That is, the " > "compression settings determine the memory requirements of the decompressor. " >@@ -1534,20 +1598,20 @@ > "dictionary size, but the values in the table have been rounded up to the " > "next full MiB." > msgstr "" >-"DekSpeicher enthält den Speicherbedarf für die Dekompression. Das bedeutet, " >+"DekompSpeich enthält den Speicherbedarf für die Dekompression. Das bedeutet, " > "dass die Kompressionseinstellungen den Speicherbedarf bei der Dekompression " > "bestimmen. Der exakte Speicherbedarf bei der Dekompression ist geringfügig " > "gröÃer als die GröÃe des LZMA2-Wörterbuchs, aber die Werte in der Tabelle " > "wurden auf ganze MiB aufgerundet." > > #. type: TP >-#: ../src/xz/xz.1:758 >+#: ../src/xz/xz.1:813 > #, no-wrap > msgid "B<-e>, B<--extreme>" > msgstr "B<-e>, B<--extreme>" > > #. type: Plain text >-#: ../src/xz/xz.1:767 >+#: ../src/xz/xz.1:822 > msgid "" > "Use a slower variant of the selected compression preset level (B<-0> ... " > "B<-9>) to hopefully get a little bit better compression ratio, but with bad " >@@ -1560,10 +1624,10 @@ > "Kompressionsverhältnis zu erreichen, das aber in ungünstigen Fällen auch " > "schlechter werden kann. Der Speicherverbrauch bei der Dekompression wird " > "dabei nicht beeinflusst, aber der Speicherverbrauch der Kompression steigt " >-"in der Voreinstellungsstufen B<-0> bis B<-3> geringfügig an." >+"in den Voreinstellungsstufen B<-0> bis B<-3> geringfügig an." > > #. type: Plain text >-#: ../src/xz/xz.1:779 >+#: ../src/xz/xz.1:834 > msgid "" > "Since there are two presets with dictionary sizes 4\\ MiB and 8\\ MiB, the " > "presets B<-3e> and B<-5e> use slightly faster settings (lower CompCPU) than " >@@ -1575,93 +1639,93 @@ > "diese Weise sind zwei Voreinstellungen nie identisch." > > #. type: tbl table >-#: ../src/xz/xz.1:787 >+#: ../src/xz/xz.1:842 > #, no-wrap > msgid "-0e" > msgstr "-0e" > > #. type: tbl table >-#: ../src/xz/xz.1:787 ../src/xz/xz.1:788 ../src/xz/xz.1:789 ../src/xz/xz.1:791 >-#: ../src/xz/xz.1:793 ../src/xz/xz.1:794 ../src/xz/xz.1:795 ../src/xz/xz.1:796 >-#: ../src/xz/xz.1:2632 >+#: ../src/xz/xz.1:842 ../src/xz/xz.1:843 ../src/xz/xz.1:844 ../src/xz/xz.1:846 >+#: ../src/xz/xz.1:848 ../src/xz/xz.1:849 ../src/xz/xz.1:850 ../src/xz/xz.1:851 >+#: ../src/xz/xz.1:2848 > #, no-wrap > msgid "8" > msgstr "8" > > #. type: tbl table >-#: ../src/xz/xz.1:788 >+#: ../src/xz/xz.1:843 > #, no-wrap > msgid "-1e" > msgstr "-1e" > > #. type: tbl table >-#: ../src/xz/xz.1:788 >+#: ../src/xz/xz.1:843 > #, no-wrap > msgid "13 MiB" > msgstr "13 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:789 >+#: ../src/xz/xz.1:844 > #, no-wrap > msgid "-2e" > msgstr "-2e" > > #. type: tbl table >-#: ../src/xz/xz.1:789 >+#: ../src/xz/xz.1:844 > #, no-wrap > msgid "25 MiB" > msgstr "25 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:790 >+#: ../src/xz/xz.1:845 > #, no-wrap > msgid "-3e" > msgstr "-3e" > > #. type: tbl table >-#: ../src/xz/xz.1:790 ../src/xz/xz.1:792 ../src/xz/xz.1:2631 >+#: ../src/xz/xz.1:845 ../src/xz/xz.1:847 ../src/xz/xz.1:2847 > #, no-wrap > msgid "7" > msgstr "7" > > #. type: tbl table >-#: ../src/xz/xz.1:791 >+#: ../src/xz/xz.1:846 > #, no-wrap > msgid "-4e" > msgstr "-4e" > > #. type: tbl table >-#: ../src/xz/xz.1:792 ../src/xz/xz.1:2631 >+#: ../src/xz/xz.1:847 ../src/xz/xz.1:2847 > #, no-wrap > msgid "-5e" > msgstr "-5e" > > #. type: tbl table >-#: ../src/xz/xz.1:793 ../src/xz/xz.1:2632 >+#: ../src/xz/xz.1:848 ../src/xz/xz.1:2848 > #, no-wrap > msgid "-6e" > msgstr "-6e" > > #. type: tbl table >-#: ../src/xz/xz.1:794 >+#: ../src/xz/xz.1:849 > #, no-wrap > msgid "-7e" > msgstr "-7e" > > #. type: tbl table >-#: ../src/xz/xz.1:795 >+#: ../src/xz/xz.1:850 > #, no-wrap > msgid "-8e" > msgstr "-8e" > > #. type: tbl table >-#: ../src/xz/xz.1:796 >+#: ../src/xz/xz.1:851 > #, no-wrap > msgid "-9e" > msgstr "-9e" > > #. type: Plain text >-#: ../src/xz/xz.1:808 >+#: ../src/xz/xz.1:863 > msgid "" > "For example, there are a total of four presets that use 8\\ MiB dictionary, " > "whose order from the fastest to the slowest is B<-5>, B<-6>, B<-5e>, and " >@@ -1672,19 +1736,19 @@ > "B<-5>, B<-6>, B<-5e> und B<-6e> ist." > > #. type: TP >-#: ../src/xz/xz.1:808 >+#: ../src/xz/xz.1:863 > #, no-wrap > msgid "B<--fast>" > msgstr "B<--fast>" > > #. type: TP >-#: ../src/xz/xz.1:811 >+#: ../src/xz/xz.1:866 > #, no-wrap > msgid "B<--best>" > msgstr "B<--best>" > > #. type: Plain text >-#: ../src/xz/xz.1:822 >+#: ../src/xz/xz.1:877 > msgid "" > "These are somewhat misleading aliases for B<-0> and B<-9>, respectively. " > "These are provided only for backwards compatibility with LZMA Utils. Avoid " >@@ -1695,14 +1759,14 @@ > "bereitgestellt. Sie sollten diese Optionen besser nicht verwenden." > > #. type: TP >-#: ../src/xz/xz.1:822 >+#: ../src/xz/xz.1:877 > #, no-wrap > msgid "B<--block-size=>I<size>" > msgstr "B<--block-size=>I<GröÃe>" > > # CHECK multi-threading and makes limited random-access > #. type: Plain text >-#: ../src/xz/xz.1:835 >+#: ../src/xz/xz.1:890 > msgid "" > "When compressing to the B<.xz> format, split the input data into blocks of " > "I<size> bytes. The blocks are compressed independently from each other, " >@@ -1719,16 +1783,16 @@ > "sie kann auch im Einzel-Thread-Modus angewendet werden." > > #. type: Plain text >-#: ../src/xz/xz.1:853 >+#: ../src/xz/xz.1:908 > msgid "" > "In multi-threaded mode about three times I<size> bytes will be allocated in " > "each thread for buffering input and output. The default I<size> is three " > "times the LZMA2 dictionary size or 1 MiB, whichever is more. Typically a " >-"good value is 2-4 times the size of the LZMA2 dictionary or at least 1 MiB. " >-"Using I<size> less than the LZMA2 dictionary size is waste of RAM because " >-"then the LZMA2 dictionary buffer will never get fully used. The sizes of " >-"the blocks are stored in the block headers, which a future version of B<xz> " >-"will use for multi-threaded decompression." >+"good value is 2\\(en4 times the size of the LZMA2 dictionary or at least 1 " >+"MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM " >+"because then the LZMA2 dictionary buffer will never get fully used. The " >+"sizes of the blocks are stored in the block headers, which a future version " >+"of B<xz> will use for multi-threaded decompression." > msgstr "" > "Im Multi-Thread-Modus wird etwa die dreifache I<GröÃe> in jedem Thread zur " > "Pufferung der Ein- und Ausgabe belegt. Die vorgegebene I<GröÃe> ist das " >@@ -1741,7 +1805,7 @@ > "Version von B<xz> für eine Multi-Thread-Dekompression genutzt wird." > > #. type: Plain text >-#: ../src/xz/xz.1:862 >+#: ../src/xz/xz.1:917 > msgid "" > "In single-threaded mode no block splitting is done by default. Setting this " > "option doesn't affect memory usage. No size information is stored in block " >@@ -1759,13 +1823,13 @@ > "die Dateien im Multi-Thread-Modus zu dekomprimieren." > > #. type: TP >-#: ../src/xz/xz.1:862 >+#: ../src/xz/xz.1:917 > #, no-wrap > msgid "B<--block-list=>I<sizes>" > msgstr "B<--block-list=>I<GröÃen>" > > #. type: Plain text >-#: ../src/xz/xz.1:868 >+#: ../src/xz/xz.1:923 > msgid "" > "When compressing to the B<.xz> format, start a new block after the given " > "intervals of uncompressed data." >@@ -1774,7 +1838,7 @@ > "Intervallen unkomprimierter Daten einen neuen Block." > > #. type: Plain text >-#: ../src/xz/xz.1:874 >+#: ../src/xz/xz.1:929 > msgid "" > "The uncompressed I<sizes> of the blocks are specified as a comma-separated " > "list. Omitting a size (two or more consecutive commas) is a shorthand to " >@@ -1786,7 +1850,7 @@ > "Blocks zu verwenden." > > #. type: Plain text >-#: ../src/xz/xz.1:884 >+#: ../src/xz/xz.1:939 > msgid "" > "If the input file is bigger than the sum of I<sizes>, the last value in " > "I<sizes> is repeated until the end of the file. A special value of B<0> may " >@@ -1800,7 +1864,7 @@ > > # FIXME encoder â compressor > #. type: Plain text >-#: ../src/xz/xz.1:899 >+#: ../src/xz/xz.1:954 > msgid "" > "If one specifies I<sizes> that exceed the encoder's block size (either the " > "default value in threaded mode or the value specified with B<--block-" >@@ -1819,7 +1883,7 @@ > "ist, erhalten Sie 11 Blöcke: 5, 10, 8, 10, 2, 10, 10, 4, 10, 10 und 1 MiB." > > #. type: Plain text >-#: ../src/xz/xz.1:905 >+#: ../src/xz/xz.1:960 > msgid "" > "In multi-threaded mode the sizes of the blocks are stored in the block " > "headers. This isn't done in single-threaded mode, so the encoded output " >@@ -1830,13 +1894,13 @@ > "kodierte Ausgabe zu der im Multi-Thread-Modus nicht identisch sein." > > #. type: TP >-#: ../src/xz/xz.1:905 >+#: ../src/xz/xz.1:960 > #, no-wrap > msgid "B<--flush-timeout=>I<timeout>" > msgstr "B<--flush-timeout=>I<Zeit>" > > #. type: Plain text >-#: ../src/xz/xz.1:922 >+#: ../src/xz/xz.1:977 > msgid "" > "When compressing, if more than I<timeout> milliseconds (a positive integer) " > "has passed since the previous flush and reading more input would block, all " >@@ -1856,7 +1920,7 @@ > "ein besseres Kompressionsverhältnis bewirken." > > #. type: Plain text >-#: ../src/xz/xz.1:930 >+#: ../src/xz/xz.1:985 > msgid "" > "This feature is disabled by default. If this option is specified more than " > "once, the last one takes effect. The special I<timeout> value of B<0> can " >@@ -1868,14 +1932,14 @@ > "Funktionsmerkmal explizit zu deaktivieren." > > #. type: Plain text >-#: ../src/xz/xz.1:932 >+#: ../src/xz/xz.1:987 > msgid "This feature is not available on non-POSIX systems." > msgstr "" > "Dieses Funktionsmerkmal ist auÃerhalb von POSIX-Systemen nicht verfügbar." > > #. FIXME > #. type: Plain text >-#: ../src/xz/xz.1:940 >+#: ../src/xz/xz.1:995 > msgid "" > "B<This feature is still experimental.> Currently B<xz> is unsuitable for " > "decompressing the stream in real time due to how B<xz> does buffering." >@@ -1885,13 +1949,13 @@ > "ungeeignet." > > #. type: TP >-#: ../src/xz/xz.1:940 >+#: ../src/xz/xz.1:995 > #, no-wrap > msgid "B<--memlimit-compress=>I<limit>" > msgstr "B<--memlimit-compress=>I<Grenze>" > > #. type: Plain text >-#: ../src/xz/xz.1:945 >+#: ../src/xz/xz.1:1000 > msgid "" > "Set a memory usage limit for compression. If this option is specified " > "multiple times, the last one takes effect." >@@ -1900,31 +1964,53 @@ > "diese Option mehrmals angegeben wird, ist die zuletzt angegebene wirksam." > > #. type: Plain text >-#: ../src/xz/xz.1:960 >+#: ../src/xz/xz.1:1013 > msgid "" >-"If the compression settings exceed the I<limit>, B<xz> will adjust the " >-"settings downwards so that the limit is no longer exceeded and display a " >-"notice that automatic adjustment was done. Such adjustments are not made " >-"when compressing with B<--format=raw> or if B<--no-adjust> has been " >-"specified. In those cases, an error is displayed and B<xz> will exit with " >-"exit status 1." >+"If the compression settings exceed the I<limit>, B<xz> will attempt to " >+"adjust the settings downwards so that the limit is no longer exceeded and " >+"display a notice that automatic adjustment was done. The adjustments are " >+"done in this order: reducing the number of threads, switching to single-" >+"threaded mode if even one thread in multi-threaded mode exceeds the " >+"I<limit>, and finally reducing the LZMA2 dictionary size." > msgstr "" >-"Falls die Kompressionseinstellungen die I<Grenze> überschreiten, passt B<xz> " >-"die Einstellungen nach unten an, so dass die Grenze nicht mehr überschritten " >-"wird und zeigt einen Hinweis an, dass eine automatische Anpassung " >-"vorgenommen wurde. Solche Anpassungen erfolgen nicht, wenn mit B<--" >-"format=raw> komprimiert wird oder wenn B<--no-adjust> angegeben wurde. In " >-"diesen Fällen wird eine Fehlermeldung mit dem Exit-Status 1 ausgegeben und " >-"B<xz> mit dem Exit-Status 1 beendet." >+"Falls die Kompressionseinstellungen die I<Grenze> überschreiten, versucht " >+"B<xz>, die Einstellungen nach unten anzupassen, so dass die Grenze nicht " >+"mehr überschritten wird und zeigt einen Hinweis an, dass eine automatische " >+"Anpassung vorgenommen wurde. Die Anpassungen werden in folgender Reihenfolge " >+"angewendet: Reduzierung der Anzahl der Threads, Wechsel in den Einzelthread-" >+"Modus, falls sogar ein einziger Thread im Multithread-Modus die I<Grenze> " >+"überschreitet, und schlussendlich die Reduzierung der GröÃe des LZMA2-" >+"Wörterbuchs." > > #. type: Plain text >-#: ../src/xz/xz.1:964 >+#: ../src/xz/xz.1:1021 >+msgid "" >+"When compressing with B<--format=raw> or if B<--no-adjust> has been " >+"specified, only the number of threads may be reduced since it can be done " >+"without affecting the compressed output." >+msgstr "" >+"Beim Komprimieren mit B<--format=raw> oder falls B<--no-adjust> angegeben " >+"wurde, wird nur die Anzahl der Threads reduziert, da nur so die komprimierte " >+"Ausgabe nicht beeinflusst wird." >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1028 >+msgid "" >+"If the I<limit> cannot be met even with the adjustments described above, an " >+"error is displayed and B<xz> will exit with exit status 1." >+msgstr "" >+"Falls die I<Grenze> nicht anhand der vorstehend beschriebenen Anpassungen " >+"gesetzt werden kann, wird ein Fehler angezeigt und B<xz> wird mit dem Exit-" >+"Status 1 beendet." >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1032 > msgid "The I<limit> can be specified in multiple ways:" > msgstr "Die I<Grenze> kann auf verschiedene Arten angegeben werden:" > > # FIXME integer suffix > #. type: Plain text >-#: ../src/xz/xz.1:974 >+#: ../src/xz/xz.1:1042 > msgid "" > "The I<limit> can be an absolute value in bytes. Using an integer suffix " > "like B<MiB> can be useful. Example: B<--memlimit-compress=80MiB>" >@@ -1933,7 +2019,7 @@ > "kann dabei hilfreich sein. Beispiel: B<--memlimit-compress=80MiB>." > > #. type: Plain text >-#: ../src/xz/xz.1:986 >+#: ../src/xz/xz.1:1054 > msgid "" > "The I<limit> can be specified as a percentage of total physical memory " > "(RAM). This can be useful especially when setting the B<XZ_DEFAULTS> " >@@ -1949,52 +2035,48 @@ > "compress=70%>" > > #. type: Plain text >-#: ../src/xz/xz.1:1006 >+#: ../src/xz/xz.1:1064 > msgid "" > "The I<limit> can be reset back to its default value by setting it to B<0>. " > "This is currently equivalent to setting the I<limit> to B<max> (no memory " >-"usage limit). Once multithreading support has been implemented, there may " >-"be a difference between B<0> and B<max> for the multithreaded case, so it is " >-"recommended to use B<0> instead of B<max> until the details have been " >-"decided." >+"usage limit)." > msgstr "" > "Mit B<0> kann die I<Grenze> auf den Standardwert zurückgesetzt werden. Dies " > "ist gegenwärtig gleichbedeutend mit dem Setzen der I<Grenze> auf B<max> " >-"(keine Speicherbegrenzung). Sobald die Unterstützung für Multi-Threading " >-"implementiert wurde, kann es im Multi-Thread-Fall einen Unterschied zwischen " >-"B<0> und B<max> geben, daher wird empfohlen, B<0> anstelle von B<max> zu " >-"verwenden, bis die Einzelheiten hierzu geklärt sind." >+"(keine Speicherbegrenzung)." > > #. type: Plain text >-#: ../src/xz/xz.1:1026 >+#: ../src/xz/xz.1:1088 > msgid "" > "For 32-bit B<xz> there is a special case: if the I<limit> would be over " >-"B<4020\\ MiB>, the I<limit> is set to B<4020\\ MiB>. (The values B<0> and " >-"B<max> aren't affected by this. A similar feature doesn't exist for " >-"decompression.) This can be helpful when a 32-bit executable has access to " >-"4\\ GiB address space while hopefully doing no harm in other situations." >+"B<4020\\ MiB>, the I<limit> is set to B<4020\\ MiB>. On MIPS32 B<2000\\ " >+"MiB> is used instead. (The values B<0> and B<max> aren't affected by this. " >+"A similar feature doesn't exist for decompression.) This can be helpful " >+"when a 32-bit executable has access to 4\\ GiB address space (2 GiB on " >+"MIPS32) while hopefully doing no harm in other situations." > msgstr "" > "Für die 32-Bit-Version von B<xz> gibt es einen Spezialfall: Falls die Grenze " >-"über B<4020\\ MiB> liegt, wird die I<Grenze> auf B<4020\\ MiB> gesetzt (die " >-"Werte B<0> und B<max> werden hiervon nicht beeinflusst; für die " >-"Dekompression gibt es keine vergleichbare Funktion). Dies kann hilfreich " >-"sein, wenn ein 32-Bit-Executable auf einen 4\\ GiB groÃen Adressraum " >-"zugreifen kann, wobei wir hoffen wollen, dass es in anderen Situationen " >-"keine negativen Effekte hat." >+"über B<4020\\ MiB> liegt, wird die I<Grenze> auf B<4020\\ MiB> gesetzt. Auf " >+"MIPS32 wird stattdessen B<2000\\ MB> verwendet (die Werte B<0> und B<max> " >+"werden hiervon nicht beeinflusst; für die Dekompression gibt es keine " >+"vergleichbare Funktion). Dies kann hilfreich sein, wenn ein 32-Bit-" >+"Executable auf einen 4\\ GiB groÃen Adressraum (2 GiB auf MIPS32) zugreifen " >+"kann, wobei wir hoffen wollen, dass es in anderen Situationen keine " >+"negativen Effekte hat." > > #. type: Plain text >-#: ../src/xz/xz.1:1029 >+#: ../src/xz/xz.1:1091 > msgid "See also the section B<Memory usage>." > msgstr "Siehe auch den Abschnitt B<Speicherbedarf>." > > #. type: TP >-#: ../src/xz/xz.1:1029 >+#: ../src/xz/xz.1:1091 > #, no-wrap > msgid "B<--memlimit-decompress=>I<limit>" > msgstr "B<--memlimit-decompress=>I<Grenze>" > > #. type: Plain text >-#: ../src/xz/xz.1:1043 >+#: ../src/xz/xz.1:1105 > msgid "" > "Set a memory usage limit for decompression. This also affects the B<--list> " > "mode. If the operation is not possible without exceeding the I<limit>, " >@@ -2008,65 +2090,208 @@ > "zu möglichen Wegen, die I<Grenze> anzugeben." > > #. type: TP >-#: ../src/xz/xz.1:1043 >+#: ../src/xz/xz.1:1105 > #, no-wrap >+msgid "B<--memlimit-mt-decompress=>I<limit>" >+msgstr "B<--memlimit-mt-decompress=>I<Grenze>" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1127 >+msgid "" >+"Set a memory usage limit for multi-threaded decompression. This can only " >+"affect the number of threads; this will never make B<xz> refuse to " >+"decompress a file. If I<limit> is too low to allow any multi-threading, the " >+"I<limit> is ignored and B<xz> will continue in single-threaded mode. Note " >+"that if also B<--memlimit-decompress> is used, it will always apply to both " >+"single-threaded and multi-threaded modes, and so the effective I<limit> for " >+"multi-threading will never be higher than the limit set with B<--memlimit-" >+"decompress>." >+msgstr "" >+"legt eine Begrenzung des Speicherverbrauchs für Multithread-Dekompression " >+"fest. Dies beeinflusst lediglich die Anzahl der Threads; B<xz> wird dadurch " >+"niemals die Dekompression einer Datei verweigern. Falls die I<Grenze> für " >+"jegliches Multithreading zu niedrig ist, wird sie ignoriert und B<xz> setzt " >+"im Einzelthread-modus fort. Beachten Sie auch, dass bei der Verwendung von " >+"B<--memlimit-decompress> dies stets sowohl auf den Einzelthread-als auch auf " >+"den Multithread-Modus angewendet wird und so die effektive I<Grenze> für den " >+"Multithread-Modus niemals höher sein wird als die mit B<--memlimit-" >+"decompress> gesetzte Grenze." >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1134 >+msgid "" >+"In contrast to the other memory usage limit options, B<--memlimit-mt-" >+"decompress=>I<limit> has a system-specific default I<limit>. B<xz --info-" >+"memory> can be used to see the current value." >+msgstr "" >+"Im Gegensatz zu anderen Optionen zur Begrenzung des Speicherverbrauchs hat " >+"B<--memlimit-mt-decompress=>I<Grenze> eine systemspezifisch vorgegebene " >+"I<Grenze>. Mit B<xz --info-memory> können Sie deren aktuellen Wert anzeigen " >+"lassen." >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1150 >+msgid "" >+"This option and its default value exist because without any limit the " >+"threaded decompressor could end up allocating an insane amount of memory " >+"with some input files. If the default I<limit> is too low on your system, " >+"feel free to increase the I<limit> but never set it to a value larger than " >+"the amount of usable RAM as with appropriate input files B<xz> will attempt " >+"to use that amount of memory even with a low number of threads. Running out " >+"of memory or swapping will not improve decompression performance." >+msgstr "" >+"Diese Option und ihr Standardwert existieren, weil die unbegrenzte " >+"threadbezogene Dekompression bei einigen Eingabedateien zu unglaublich " >+"groÃem Speicherverbrauch führen würde. Falls die vorgegebene I<Grenze> auf " >+"Ihrem System zu niedrig ist, können Sie die I<Grenze> durchaus erhöhen, aber " >+"setzen Sie sie niemals auf einen Wert gröÃer als die Menge des nutzbaren " >+"Speichers, da B<xz> bei entsprechenden Eingabedateien versuchen wird, diese " >+"Menge an Speicher auch bei einer geringen Anzahl von Threads zu verwnden. " >+"Speichermangel oder Auslagerung verbessern die Dekomprimierungsleistung " >+"nicht." >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1162 >+msgid "" >+"See B<--memlimit-compress=>I<limit> for possible ways to specify the " >+"I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default " >+"system-specific value." >+msgstr "" >+"Siehe B<--memlimit-compress=>I<Grenze> für mögliche Wege zur Angabe der " >+"I<Grenze>. Sezen der I<Grenze> auf B<0> setzt die I<Grenze> auf den " >+"vorgegebenen systemspezifischen Wert zurück." >+ >+#. type: TP >+#: ../src/xz/xz.1:1163 >+#, no-wrap > msgid "B<-M> I<limit>, B<--memlimit=>I<limit>, B<--memory=>I<limit>" > msgstr "B<-M> I<Grenze>, B<--memlimit=>I<Grenze>, B<--memory=>I<Grenze>" > > #. type: Plain text >-#: ../src/xz/xz.1:1047 >+#: ../src/xz/xz.1:1169 > msgid "" >-"This is equivalent to specifying B<--memlimit-compress=>I<limit >B<--" >-"memlimit-decompress=>I<limit>." >+"This is equivalent to specifying B<--memlimit-compress=>I<limit> B<--" >+"memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>." > msgstr "" >-"Dies ist gleichbedeutend mit B<--memlimit-compress=>I<Grenze >B<--memlimit-" >-"decompress=>I<Grenze>." >+"Dies ist gleichbedeutend mit B<--memlimit-compress=>I<Grenze> B<--memlimit-" >+"decompress=>I<Grenze> B<--memlimit-mt-decompress=>I<Grenze>." > > #. type: TP >-#: ../src/xz/xz.1:1047 >+#: ../src/xz/xz.1:1169 > #, no-wrap > msgid "B<--no-adjust>" > msgstr "B<--no-adjust>" > > #. type: Plain text >-#: ../src/xz/xz.1:1055 >+#: ../src/xz/xz.1:1179 > msgid "" >-"Display an error and exit if the compression settings exceed the memory " >-"usage limit. The default is to adjust the settings downwards so that the " >-"memory usage limit is not exceeded. Automatic adjusting is always disabled " >-"when creating raw streams (B<--format=raw>)." >+"Display an error and exit if the memory usage limit cannot be met without " >+"adjusting settings that affect the compressed output. That is, this " >+"prevents B<xz> from switching the encoder from multi-threaded mode to single-" >+"threaded mode and from reducing the LZMA2 dictionary size. Even when this " >+"option is used the number of threads may be reduced to meet the memory usage " >+"limit as that won't affect the compressed output." > msgstr "" >-"zeigt einen Fehler an und bricht die Ausführung ab, falls die " >-"Kompressionseinstellungen die Begrenzung der Speichernutzung überschreiten. " >-"StandardmäÃig werden die Einstellungen nach unten korrigiert, so dass diese " >-"Grenze nicht überschritten wird. Bei der Erzeugung von Rohdatenströmen (B<--" >-"format=raw>) ist die automatische Korrektur stets deaktiviert." >+"zeigt einen Fehler an und beendet, falls die Grenze der Speichernutzung " >+"nicht ohne Ãnderung der Einstellungen, welche die komprimierte Ausgabe " >+"beeinflussen, berücksichtigt werden kann. Das bedeutet, dass B<xz> daran " >+"gehindert wird, den Encoder vom Multithread-Modus in den Einzelthread-Modus " >+"zu versetzen und die GröÃe des LZMA2-Wörterbuchs zu reduzieren. Allerdings " >+"kann bei Verwendung dieser Option dennoch die Anzahl der Threads reduziert " >+"werden, um die Grenze der Speichernutzung zu halten, sofern dies die " >+"komprimierte Ausgabe nicht beeinflusst." > >+#. type: Plain text >+#: ../src/xz/xz.1:1182 >+msgid "" >+"Automatic adjusting is always disabled when creating raw streams (B<--" >+"format=raw>)." >+msgstr "" >+"Die automatische Anpassung ist beim Erzeugen von Rohdatenströmen (B<--" >+"format=raw>) immer deaktiviert." >+ > #. type: TP >-#: ../src/xz/xz.1:1055 >+#: ../src/xz/xz.1:1182 > #, no-wrap > msgid "B<-T> I<threads>, B<--threads=>I<threads>" > msgstr "B<-T> I<Threads>, B<--threads=>I<Threads>" > > #. type: Plain text >-#: ../src/xz/xz.1:1070 >+#: ../src/xz/xz.1:1197 > msgid "" > "Specify the number of worker threads to use. Setting I<threads> to a " >-"special value B<0> makes B<xz> use as many threads as there are CPU cores on " >-"the system. The actual number of threads can be less than I<threads> if the " >-"input file is not big enough for threading with the given settings or if " >-"using more threads would exceed the memory usage limit." >+"special value B<0> makes B<xz> use up to as many threads as the processor(s) " >+"on the system support. The actual number of threads can be fewer than " >+"I<threads> if the input file is not big enough for threading with the given " >+"settings or if using more threads would exceed the memory usage limit." > msgstr "" > "gibt die Anzahl der zu verwendenden Arbeits-Threads an. Wenn Sie I<Threads> " >-"auf einen speziellen Wert B<0> setzen, verwendet B<xz> so viele Threads, wie " >-"Prozessorkerne im System verfügbar sind. Die tatsächliche Anzahl kann " >-"geringer sein als die angegebenen I<Threads>, wenn die Eingabedatei nicht " >-"groà genug für Threading mit den gegebenen Einstellungen ist oder wenn mehr " >-"Threads die Speicherbegrenzung übersteigen würden." >+"auf einen speziellen Wert B<0> setzen, verwendet B<xz> maximal so viele " >+"Threads, wie der/die Prozessor(en) im System untestützen. Die tatsächliche " >+"Anzahl kann geringer sein als die angegebenen I<Threads>, wenn die " >+"Eingabedatei nicht groà genug für Threading mit den gegebenen Einstellungen " >+"ist oder wenn mehr Threads die Speicherbegrenzung übersteigen würden." > > #. type: Plain text >-#: ../src/xz/xz.1:1077 >+#: ../src/xz/xz.1:1216 > msgid "" >+"The single-threaded and multi-threaded compressors produce different " >+"output. Single-threaded compressor will give the smallest file size but " >+"only the output from the multi-threaded compressor can be decompressed using " >+"multiple threads. Setting I<threads> to B<1> will use the single-threaded " >+"mode. Setting I<threads> to any other value, including B<0>, will use the " >+"multi-threaded compressor even if the system supports only one hardware " >+"thread. (B<xz> 5.2.x used single-threaded mode in this situation.)" >+msgstr "" >+"Die Multithread- bzw. Einzelthread-Kompressoren erzeugen unterschiedliche " >+"Ausgaben. Der Einzelthread-Kompressor erzeugt die geringste DateigröÃe, aber " >+"nur die Ausgabe des Multithread-Kompressors kann mit mehreren Threads wieder " >+"dekomprimiert werden. Das Setzen der Anzahl der I<Threads> auf B<1> wird den " >+"Einzelthread-Modus verwenden. Das Setzen der Anzahl der I<Threads> auf " >+"einen anderen Wert einschlieÃlich B<0> verwendet den Multithread-Kompressor, " >+"und zwar sogar dann, wenn das System nur einen einzigen Hardware-Thread " >+"unterstützt (B<xz> 5.2.x verwendete in diesem Fall noch den Einzelthread-" >+"Modus)." >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1235 >+msgid "" >+"To use multi-threaded mode with only one thread, set I<threads> to B<+1>. " >+"The B<+> prefix has no effect with values other than B<1>. A memory usage " >+"limit can still make B<xz> switch to single-threaded mode unless B<--no-" >+"adjust> is used. Support for the B<+> prefix was added in B<xz> 5.4.0." >+msgstr "" >+"Um den Multithread-Modus mit nur einem einzigen Thread zu verwenden, setzen " >+"Sie die Anzahl der I<Threads> auf B<+1>. Das Präfix B<+> hat mit Werten " >+"verschieden von B<1> keinen Effekt. Eine Begrenzung des Speicherverbrauchs " >+"kann B<xz> dennoch veranlassen, den Einzelthread-Modus zu verwenden, auÃer " >+"wenn B<--no-adjust> verwendet wird. Die Unterstützung für das Präfix B<+> " >+"wurde in B<xz> 5.4.0 hinzugefügt." >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1250 >+msgid "" >+"If an automatic number of threads has been requested and no memory usage " >+"limit has been specified, then a system-specific default soft limit will be " >+"used to possibly limit the number of threads. It is a soft limit in sense " >+"that it is ignored if the number of threads becomes one, thus a soft limit " >+"will never stop B<xz> from compressing or decompressing. This default soft " >+"limit will not make B<xz> switch from multi-threaded mode to single-threaded " >+"mode. The active limits can be seen with B<xz --info-memory>." >+msgstr "" >+"Falls das automatische Setzen der Anzahl der Threads angefordert und keine " >+"Speicherbegrenzung angegeben wurde, dann wird eine systemspezifisch " >+"vorgegebene weiche Grenze verwendet, um eventuell die Anzahl der Threads zu " >+"begrenzen. Es ist eine weiche Grenze im Sinne davon, dass sie ignoriert " >+"wird, falls die Anzahl der Threads 1 ist; daher wird eine weiche Grenze " >+"B<xz> niemals an der Kompression oder Dekompression hindern. Diese " >+"vorgegebene weiche Grenze veranlasst B<xz> nicht, vom Multithread-Modus in " >+"den Einzelthread-Modus zu wechseln. Die aktiven Grenzen können Sie mit dem " >+"Befehl B<xz --info-memory> anzeigen lassen." >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1257 >+msgid "" > "Currently the only threading method is to split the input into blocks and " > "compress them independently from each other. The default block size depends " > "on the compression level and can be overridden with the B<--block-" >@@ -2078,33 +2303,31 @@ > "size=>I<GröÃe> auÃer Kraft gesetzt werden." > > #. type: Plain text >-#: ../src/xz/xz.1:1085 >+#: ../src/xz/xz.1:1265 > msgid "" >-"Threaded decompression hasn't been implemented yet. It will only work on " >-"files that contain multiple blocks with size information in block headers. " >-"All files compressed in multi-threaded mode meet this condition, but files " >-"compressed in single-threaded mode don't even if B<--block-size=>I<size> is " >-"used." >+"Threaded decompression only works on files that contain multiple blocks with " >+"size information in block headers. All large enough files compressed in " >+"multi-threaded mode meet this condition, but files compressed in single-" >+"threaded mode don't even if B<--block-size=>I<size> has been used." > msgstr "" >-"Eine thread-basierte Dekompression wurde bislang noch nicht implementiert. " >-"Sie wird nur bei Dateien funktionieren, die mehrere Blöcke mit " >-"GröÃeninformationen in deren Headern enthalten. Alle im Multi-Thread-Modus " >-"komprimierten Dateien erfüllen diese Bedingung, im Einzel-Thread-Modus " >-"komprimierte Dateien dagegen nicht, selbst wenn B<--block-size=>I<GröÃe> " >-"verwendet wird." >+"Eine thread-basierte Dekompression wird nur bei Dateien funktionieren, die " >+"mehrere Blöcke mit GröÃeninformationen in deren Headern enthalten. Alle im " >+"Multi-Thread-Modus komprimierten Dateien, die groà genug sind, erfüllen " >+"diese Bedingung, im Einzel-Thread-Modus komprimierte Dateien dagegen nicht, " >+"selbst wenn B<--block-size=>I<GröÃe> verwendet wurde." > > #. type: SS >-#: ../src/xz/xz.1:1086 ../src/xz/xz.1:2603 >+#: ../src/xz/xz.1:1266 ../src/xz/xz.1:2819 > #, no-wrap > msgid "Custom compressor filter chains" > msgstr "Benutzerdefinierte Filterketten für die Kompression" > > #. type: Plain text >-#: ../src/xz/xz.1:1097 >+#: ../src/xz/xz.1:1282 > msgid "" > "A custom filter chain allows specifying the compression settings in detail " > "instead of relying on the settings associated to the presets. When a custom " >-"filter chain is specified, preset options (B<-0> ... B<-9> and B<--" >+"filter chain is specified, preset options (B<-0> \\&...\\& B<-9> and B<--" > "extreme>) earlier on the command line are forgotten. If a preset option is " > "specified after one or more custom filter chain options, the new preset " > "takes effect and the custom filter chain options specified earlier are " >@@ -2120,7 +2343,7 @@ > "Filterkettenoptionen werden auÃer Kraft gesetzt." > > #. type: Plain text >-#: ../src/xz/xz.1:1104 >+#: ../src/xz/xz.1:1289 > msgid "" > "A filter chain is comparable to piping on the command line. When " > "compressing, the uncompressed input goes to the first filter, whose output " >@@ -2137,7 +2360,7 @@ > "oder zwei Filtern." > > #. type: Plain text >-#: ../src/xz/xz.1:1112 >+#: ../src/xz/xz.1:1297 > msgid "" > "Many filters have limitations on where they can be in the filter chain: some " > "filters can work only as the last filter in the chain, some only as a non-" >@@ -2153,7 +2376,7 @@ > "Sicherheitsgründen vorhanden." > > #. type: Plain text >-#: ../src/xz/xz.1:1120 >+#: ../src/xz/xz.1:1305 > msgid "" > "A custom filter chain is specified by using one or more filter options in " > "the order they are wanted in the filter chain. That is, the order of filter " >@@ -2169,7 +2392,7 @@ > "bei der Kompression." > > #. type: Plain text >-#: ../src/xz/xz.1:1129 >+#: ../src/xz/xz.1:1314 > msgid "" > "Filters take filter-specific I<options> as a comma-separated list. Extra " > "commas in I<options> are ignored. Every option has a default value, so you " >@@ -2181,7 +2404,7 @@ > "die Sie ändern wollen." > > #. type: Plain text >-#: ../src/xz/xz.1:1138 >+#: ../src/xz/xz.1:1323 > msgid "" > "To see the whole filter chain and I<options>, use B<xz -vv> (that is, use " > "B<--verbose> twice). This works also for viewing the filter chain options " >@@ -2193,19 +2416,19 @@ > "verwendeten Filterkettenoptionen." > > #. type: TP >-#: ../src/xz/xz.1:1138 >+#: ../src/xz/xz.1:1323 > #, no-wrap > msgid "B<--lzma1>[B<=>I<options>]" > msgstr "B<--lzma1>[B<=>I<Optionen>]" > > #. type: TP >-#: ../src/xz/xz.1:1141 >+#: ../src/xz/xz.1:1326 > #, no-wrap > msgid "B<--lzma2>[B<=>I<options>]" > msgstr "B<--lzma2>[B<=>I<Optionen>]" > > #. type: Plain text >-#: ../src/xz/xz.1:1146 >+#: ../src/xz/xz.1:1331 > msgid "" > "Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used " > "only as the last filter in the chain." >@@ -2214,7 +2437,7 @@ > "als letzte Filter in der Kette verwendet werden." > > #. type: Plain text >-#: ../src/xz/xz.1:1158 >+#: ../src/xz/xz.1:1343 > msgid "" > "LZMA1 is a legacy filter, which is supported almost solely due to the legacy " > "B<.lzma> file format, which supports only LZMA1. LZMA2 is an updated " >@@ -2230,23 +2453,23 @@ > "praktisch gleich." > > #. type: Plain text >-#: ../src/xz/xz.1:1161 >+#: ../src/xz/xz.1:1346 > msgid "LZMA1 and LZMA2 share the same set of I<options>:" > msgstr "LZMA1 und LZMA2 haben die gleichen I<Optionen>:" > > #. type: TP >-#: ../src/xz/xz.1:1162 >+#: ../src/xz/xz.1:1347 > #, no-wrap > msgid "B<preset=>I<preset>" > msgstr "B<preset=>I<Voreinstellung>" > > #. type: Plain text >-#: ../src/xz/xz.1:1186 >+#: ../src/xz/xz.1:1374 > msgid "" > "Reset all LZMA1 or LZMA2 I<options> to I<preset>. I<Preset> consist of an " > "integer, which may be followed by single-letter preset modifiers. The " >-"integer can be from B<0> to B<9>, matching the command line options " >-"B<-0> ... B<-9>. The only supported modifier is currently B<e>, which " >+"integer can be from B<0> to B<9>, matching the command line options B<-0> " >+"\\&...\\& B<-9>. The only supported modifier is currently B<e>, which " > "matches B<--extreme>. If no B<preset> is specified, the default values of " > "LZMA1 or LZMA2 I<options> are taken from the preset B<6>." > msgstr "" >@@ -2260,14 +2483,14 @@ > "LZMA2-I<Optionen> der Voreinstellung B<6> entnommen." > > #. type: TP >-#: ../src/xz/xz.1:1186 >+#: ../src/xz/xz.1:1374 > #, no-wrap > msgid "B<dict=>I<size>" > msgstr "B<dict=>I<GröÃe>" > > # FIXME Dezimaltrenner in 1.5 GB > #. type: Plain text >-#: ../src/xz/xz.1:1201 >+#: ../src/xz/xz.1:1389 > msgid "" > "Dictionary (history buffer) I<size> indicates how many bytes of the " > "recently processed uncompressed data is kept in memory. The algorithm tries " >@@ -2289,7 +2512,7 @@ > "Speicherverschwendung." > > #. type: Plain text >-#: ../src/xz/xz.1:1210 >+#: ../src/xz/xz.1:1398 > msgid "" > "Typical dictionary I<size> is from 64\\ KiB to 64\\ MiB. The minimum is 4\\ " > "KiB. The maximum for compression is currently 1.5\\ GiB (1536\\ MiB). The " >@@ -2303,7 +2526,7 @@ > "für die LZMA1- und LZMA2-Datenstromformate ist." > > #. type: Plain text >-#: ../src/xz/xz.1:1237 >+#: ../src/xz/xz.1:1425 > msgid "" > "Dictionary I<size> and match finder (I<mf>) together determine the memory " > "usage of the LZMA1 or LZMA2 encoder. The same (or bigger) dictionary " >@@ -2325,13 +2548,13 @@ > "werden beim Speichern in den B<.xz>-Headern aufgerundet." > > #. type: TP >-#: ../src/xz/xz.1:1237 >+#: ../src/xz/xz.1:1425 > #, no-wrap > msgid "B<lc=>I<lc>" > msgstr "B<lc=>I<lc>" > > #. type: Plain text >-#: ../src/xz/xz.1:1246 >+#: ../src/xz/xz.1:1434 > msgid "" > "Specify the number of literal context bits. The minimum is 0 and the " > "maximum is 4; the default is 3. In addition, the sum of I<lc> and I<lp> " >@@ -2342,7 +2565,7 @@ > "I<lp> nicht gröÃer als 4 sein." > > #. type: Plain text >-#: ../src/xz/xz.1:1251 >+#: ../src/xz/xz.1:1439 > msgid "" > "All bytes that cannot be encoded as matches are encoded as literals. That " > "is, literals are simply 8-bit bytes that are encoded one at a time." >@@ -2352,15 +2575,16 @@ > "für sich kodiert werden." > > #. type: Plain text >-#: ../src/xz/xz.1:1265 >+#: ../src/xz/xz.1:1453 > msgid "" > "The literal coding makes an assumption that the highest I<lc> bits of the " >-"previous uncompressed byte correlate with the next byte. E.g. in typical " >-"English text, an upper-case letter is often followed by a lower-case letter, " >-"and a lower-case letter is usually followed by another lower-case letter. " >-"In the US-ASCII character set, the highest three bits are 010 for upper-case " >-"letters and 011 for lower-case letters. When I<lc> is at least 3, the " >-"literal coding can take advantage of this property in the uncompressed data." >+"previous uncompressed byte correlate with the next byte. For example, in " >+"typical English text, an upper-case letter is often followed by a lower-case " >+"letter, and a lower-case letter is usually followed by another lower-case " >+"letter. In the US-ASCII character set, the highest three bits are 010 for " >+"upper-case letters and 011 for lower-case letters. When I<lc> is at least " >+"3, the literal coding can take advantage of this property in the " >+"uncompressed data." > msgstr "" > "Bei der Literalkodierung wird angenommen, dass die höchsten I<lc>-Bits des " > "zuvor unkomprimierten Bytes mit dem nächsten Byte in Beziehung stehen. Zum " >@@ -2372,11 +2596,11 @@ > "unkomprimierten Daten ausnutzen." > > #. type: Plain text >-#: ../src/xz/xz.1:1274 >+#: ../src/xz/xz.1:1462 > msgid "" > "The default value (3) is usually good. If you want maximum compression, " > "test B<lc=4>. Sometimes it helps a little, and sometimes it makes " >-"compression worse. If it makes it worse, test e.g.\\& B<lc=2> too." >+"compression worse. If it makes it worse, test B<lc=2> too." > msgstr "" > "Der Vorgabewert (3) ist üblicherweise gut. Wenn Sie die maximale Kompression " > "erreichen wollen, versuchen Sie B<lc=4>. Manchmal hilft es ein wenig, doch " >@@ -2384,13 +2608,13 @@ > "zum Beispiel auch\\& B<lc=2>." > > #. type: TP >-#: ../src/xz/xz.1:1274 >+#: ../src/xz/xz.1:1462 > #, no-wrap > msgid "B<lp=>I<lp>" > msgstr "B<lp=>I<lp>" > > #. type: Plain text >-#: ../src/xz/xz.1:1278 >+#: ../src/xz/xz.1:1466 > msgid "" > "Specify the number of literal position bits. The minimum is 0 and the " > "maximum is 4; the default is 0." >@@ -2399,7 +2623,7 @@ > "Maximum 4; die Vorgabe ist 0." > > #. type: Plain text >-#: ../src/xz/xz.1:1285 >+#: ../src/xz/xz.1:1473 > msgid "" > "I<Lp> affects what kind of alignment in the uncompressed data is assumed " > "when encoding literals. See I<pb> below for more information about " >@@ -2410,13 +2634,13 @@ > "Informationen zur Ausrichtung." > > #. type: TP >-#: ../src/xz/xz.1:1285 >+#: ../src/xz/xz.1:1473 > #, no-wrap > msgid "B<pb=>I<pb>" > msgstr "B<pb=>I<Anzahl>" > > #. type: Plain text >-#: ../src/xz/xz.1:1289 >+#: ../src/xz/xz.1:1477 > msgid "" > "Specify the number of position bits. The minimum is 0 and the maximum is 4; " > "the default is 2." >@@ -2425,7 +2649,7 @@ > "4; Standard ist 2." > > #. type: Plain text >-#: ../src/xz/xz.1:1296 >+#: ../src/xz/xz.1:1484 > msgid "" > "I<Pb> affects what kind of alignment in the uncompressed data is assumed in " > "general. The default means four-byte alignment (2^I<pb>=2^2=4), which is " >@@ -2437,13 +2661,13 @@ > "bessere Schätzung gibt." > > #. type: Plain text >-#: ../src/xz/xz.1:1310 >+#: ../src/xz/xz.1:1498 > msgid "" >-"When the aligment is known, setting I<pb> accordingly may reduce the file " >-"size a little. E.g. with text files having one-byte alignment (US-ASCII, " >-"ISO-8859-*, UTF-8), setting B<pb=0> can improve compression slightly. For " >-"UTF-16 text, B<pb=1> is a good choice. If the alignment is an odd number " >-"like 3 bytes, B<pb=0> might be the best choice." >+"When the alignment is known, setting I<pb> accordingly may reduce the file " >+"size a little. For example, with text files having one-byte alignment (US-" >+"ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression " >+"slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is " >+"an odd number like 3 bytes, B<pb=0> might be the best choice." > msgstr "" > "Wenn die Ausrichtung bekannt ist, kann das entsprechende Setzen von I<pb> " > "die DateigröÃe ein wenig verringern. Wenn Textdateien zum Beispiel eine Ein-" >@@ -2453,7 +2677,7 @@ > "ist, könnte B<pb=0> die beste Wahl sein." > > #. type: Plain text >-#: ../src/xz/xz.1:1318 >+#: ../src/xz/xz.1:1506 > msgid "" > "Even though the assumed alignment can be adjusted with I<pb> and I<lp>, " > "LZMA1 and LZMA2 still slightly favor 16-byte alignment. It might be worth " >@@ -2466,18 +2690,18 @@ > "wahrscheinlich oft mit LZMA1 oder LZMA2 komprimiert werden." > > #. type: TP >-#: ../src/xz/xz.1:1318 >+#: ../src/xz/xz.1:1506 > #, no-wrap > msgid "B<mf=>I<mf>" > msgstr "B<mf=>I<Ãf>" > > #. type: Plain text >-#: ../src/xz/xz.1:1333 >+#: ../src/xz/xz.1:1521 > msgid "" > "Match finder has a major effect on encoder speed, memory usage, and " > "compression ratio. Usually Hash Chain match finders are faster than Binary " > "Tree match finders. The default depends on the I<preset>: 0 uses B<hc3>, " >-"1-3 use B<hc4>, and the rest use B<bt4>." >+"1\\(en3 use B<hc4>, and the rest use B<bt4>." > msgstr "" > "Der Ãbereinstimmungsfinder hat einen groÃen Einfluss auf die Geschwindigkeit " > "des Kodierers, den Speicherbedarf und das Kompressionsverhältnis. " >@@ -2487,7 +2711,7 @@ > "Rest verwendet B<bt4>." > > #. type: Plain text >-#: ../src/xz/xz.1:1339 >+#: ../src/xz/xz.1:1527 > msgid "" > "The following match finders are supported. The memory usage formulas below " > "are rough approximations, which are closest to the reality when I<dict> is a " >@@ -2498,138 +2722,138 @@ > "am nächsten kommen, wenn I<Wörterbuch> eine Zweierpotenz ist." > > #. type: TP >-#: ../src/xz/xz.1:1340 >+#: ../src/xz/xz.1:1528 > #, no-wrap > msgid "B<hc3>" > msgstr "B<hc3>" > > #. type: Plain text >-#: ../src/xz/xz.1:1343 >+#: ../src/xz/xz.1:1531 > msgid "Hash Chain with 2- and 3-byte hashing" > msgstr "Hash-Kette mit 2- und 3-Byte-Hashing" > > #. type: Plain text >-#: ../src/xz/xz.1:1347 ../src/xz/xz.1:1396 >+#: ../src/xz/xz.1:1535 ../src/xz/xz.1:1584 > msgid "Minimum value for I<nice>: 3" > msgstr "Minimalwert für I<nice>: 3" > > #. type: Plain text >-#: ../src/xz/xz.1:1349 ../src/xz/xz.1:1368 ../src/xz/xz.1:1398 >-#: ../src/xz/xz.1:1417 >+#: ../src/xz/xz.1:1537 ../src/xz/xz.1:1556 ../src/xz/xz.1:1586 >+#: ../src/xz/xz.1:1605 > msgid "Memory usage:" > msgstr "Speicherbedarf:" > > #. type: Plain text >-#: ../src/xz/xz.1:1354 >+#: ../src/xz/xz.1:1542 > msgid "I<dict> * 7.5 (if I<dict> E<lt>= 16 MiB);" > msgstr "I<dict> * 7,5 (falls I<dict> E<lt>= 16 MiB);" > > #. type: Plain text >-#: ../src/xz/xz.1:1359 >+#: ../src/xz/xz.1:1547 > msgid "I<dict> * 5.5 + 64 MiB (if I<dict> E<gt> 16 MiB)" > msgstr "I<dict> * 5,5 + 64 MiB (falls I<dict> E<gt> 16 MiB)" > > #. type: TP >-#: ../src/xz/xz.1:1359 >+#: ../src/xz/xz.1:1547 > #, no-wrap > msgid "B<hc4>" > msgstr "B<hc4>" > > #. type: Plain text >-#: ../src/xz/xz.1:1362 >+#: ../src/xz/xz.1:1550 > msgid "Hash Chain with 2-, 3-, and 4-byte hashing" > msgstr "Hash-Kette mit 2-, 3- und 4-Byte-Hashing" > > #. type: Plain text >-#: ../src/xz/xz.1:1366 ../src/xz/xz.1:1415 >+#: ../src/xz/xz.1:1554 ../src/xz/xz.1:1603 > msgid "Minimum value for I<nice>: 4" > msgstr "Minimaler Wert für I<nice>: 4" > > #. type: Plain text >-#: ../src/xz/xz.1:1373 >+#: ../src/xz/xz.1:1561 > msgid "I<dict> * 7.5 (if I<dict> E<lt>= 32 MiB);" > msgstr "I<dict> * 7,5 (falls I<dict> E<lt>= 32 MiB ist);" > > #. type: Plain text >-#: ../src/xz/xz.1:1378 >+#: ../src/xz/xz.1:1566 > msgid "I<dict> * 6.5 (if I<dict> E<gt> 32 MiB)" > msgstr "I<dict> * 6,5 (falls I<dict> E<gt> 32 MiB ist)" > > #. type: TP >-#: ../src/xz/xz.1:1378 >+#: ../src/xz/xz.1:1566 > #, no-wrap > msgid "B<bt2>" > msgstr "B<bt2>" > > #. type: Plain text >-#: ../src/xz/xz.1:1381 >+#: ../src/xz/xz.1:1569 > msgid "Binary Tree with 2-byte hashing" > msgstr "Binärbaum mit 2-Byte-Hashing" > > #. type: Plain text >-#: ../src/xz/xz.1:1385 >+#: ../src/xz/xz.1:1573 > msgid "Minimum value for I<nice>: 2" > msgstr "Minimaler Wert für I<nice>: 2" > > #. type: Plain text >-#: ../src/xz/xz.1:1389 >+#: ../src/xz/xz.1:1577 > msgid "Memory usage: I<dict> * 9.5" > msgstr "Speicherverbrauch: I<dict> * 9.5" > > #. type: TP >-#: ../src/xz/xz.1:1389 >+#: ../src/xz/xz.1:1577 > #, no-wrap > msgid "B<bt3>" > msgstr "B<bt3>" > > #. type: Plain text >-#: ../src/xz/xz.1:1392 >+#: ../src/xz/xz.1:1580 > msgid "Binary Tree with 2- and 3-byte hashing" > msgstr "Binärbaum mit 2- und 3-Byte-Hashing" > > #. type: Plain text >-#: ../src/xz/xz.1:1403 >+#: ../src/xz/xz.1:1591 > msgid "I<dict> * 11.5 (if I<dict> E<lt>= 16 MiB);" > msgstr "I<dict> * 11,5 (falls I<dict> E<lt>= 16 MiB ist);" > > #. type: Plain text >-#: ../src/xz/xz.1:1408 >+#: ../src/xz/xz.1:1596 > msgid "I<dict> * 9.5 + 64 MiB (if I<dict> E<gt> 16 MiB)" > msgstr "I<dict> * 9,5 + 64 MiB (falls I<dict> E<gt> 16 MiB ist)" > > #. type: TP >-#: ../src/xz/xz.1:1408 >+#: ../src/xz/xz.1:1596 > #, no-wrap > msgid "B<bt4>" > msgstr "B<bt4>" > > #. type: Plain text >-#: ../src/xz/xz.1:1411 >+#: ../src/xz/xz.1:1599 > msgid "Binary Tree with 2-, 3-, and 4-byte hashing" > msgstr "Binärbaum mit 2-, 3- und 4-Byte-Hashing" > > #. type: Plain text >-#: ../src/xz/xz.1:1422 >+#: ../src/xz/xz.1:1610 > msgid "I<dict> * 11.5 (if I<dict> E<lt>= 32 MiB);" > msgstr "I<dict> * 11,5 (falls I<dict> E<lt>= 32 MiB ist);" > > #. type: Plain text >-#: ../src/xz/xz.1:1427 >+#: ../src/xz/xz.1:1615 > msgid "I<dict> * 10.5 (if I<dict> E<gt> 32 MiB)" > msgstr "I<dict> * 10,5 (falls I<dict> E<gt> 32 MiB ist)" > > #. type: TP >-#: ../src/xz/xz.1:1428 >+#: ../src/xz/xz.1:1616 > #, no-wrap > msgid "B<mode=>I<mode>" > msgstr "B<mode=>I<Modus>" > > #. type: Plain text >-#: ../src/xz/xz.1:1449 >+#: ../src/xz/xz.1:1637 > msgid "" > "Compression I<mode> specifies the method to analyze the data produced by the " > "match finder. Supported I<modes> are B<fast> and B<normal>. The default is " >-"B<fast> for I<presets> 0-3 and B<normal> for I<presets> 4-9." >+"B<fast> for I<presets> 0\\(en3 and B<normal> for I<presets> 4\\(en9." > msgstr "" > "gibt die Methode zum Analysieren der vom Ãbereinstimmungsfinder gelieferten " > "Daten an. Als I<Modi> werden B<fast> und B<normal> unterstützt. Die Vorgabe " >@@ -2637,7 +2861,7 @@ > "I<Voreinstellungsstufen> 4-9." > > #. type: Plain text >-#: ../src/xz/xz.1:1458 >+#: ../src/xz/xz.1:1646 > msgid "" > "Usually B<fast> is used with Hash Chain match finders and B<normal> with " > "Binary Tree match finders. This is also what the I<presets> do." >@@ -2647,13 +2871,13 @@ > "machen es auch die I<Voreinstellungsstufen>." > > #. type: TP >-#: ../src/xz/xz.1:1458 >+#: ../src/xz/xz.1:1646 > #, no-wrap > msgid "B<nice=>I<nice>" > msgstr "B<nice=>I<nice>" > > #. type: Plain text >-#: ../src/xz/xz.1:1465 >+#: ../src/xz/xz.1:1653 > msgid "" > "Specify what is considered to be a nice length for a match. Once a match of " > "at least I<nice> bytes is found, the algorithm stops looking for possibly " >@@ -2664,23 +2888,24 @@ > "Wert hat, sucht der Algorithmus nicht weiter nach besseren Ãbereinstimmungen." > > #. type: Plain text >-#: ../src/xz/xz.1:1472 >+#: ../src/xz/xz.1:1660 > msgid "" >-"I<Nice> can be 2-273 bytes. Higher values tend to give better compression " >-"ratio at the expense of speed. The default depends on the I<preset>." >+"I<Nice> can be 2\\(en273 bytes. Higher values tend to give better " >+"compression ratio at the expense of speed. The default depends on the " >+"I<preset>." > msgstr "" > "Der I<nice>-Wert kann 2-273 Byte sein. Höhere Werte tendieren zu einem " > "besseren Kompressionsverhältnis, aber auf Kosten der Geschwindigkeit. Die " > "Vorgabe hängt von der I<Voreinstellungsstufe> ab." > > #. type: TP >-#: ../src/xz/xz.1:1472 >+#: ../src/xz/xz.1:1660 > #, no-wrap > msgid "B<depth=>I<depth>" > msgstr "B<depth=>I<Tiefe>" > > #. type: Plain text >-#: ../src/xz/xz.1:1482 >+#: ../src/xz/xz.1:1670 > msgid "" > "Specify the maximum search depth in the match finder. The default is the " > "special value of 0, which makes the compressor determine a reasonable " >@@ -2691,12 +2916,12 @@ > "für I<Tiefe> aus I<Ãf> und I<nice>-Wert zu bestimmen." > > #. type: Plain text >-#: ../src/xz/xz.1:1493 >+#: ../src/xz/xz.1:1681 > msgid "" >-"Reasonable I<depth> for Hash Chains is 4-100 and 16-1000 for Binary Trees. " >-"Using very high values for I<depth> can make the encoder extremely slow with " >-"some files. Avoid setting the I<depth> over 1000 unless you are prepared to " >-"interrupt the compression in case it is taking far too long." >+"Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary " >+"Trees. Using very high values for I<depth> can make the encoder extremely " >+"slow with some files. Avoid setting the I<depth> over 1000 unless you are " >+"prepared to interrupt the compression in case it is taking far too long." > msgstr "" > "Die angemessene I<Tiefe> für Hash-Ketten ist 4-100 und 16-1000 für " > "Binärbäume. Hohe Werte für die I<Tiefe> können den Kodierer bei einigen " >@@ -2705,7 +2930,7 @@ > "abzubrechen, wenn sie zu lange dauert." > > #. type: Plain text >-#: ../src/xz/xz.1:1504 >+#: ../src/xz/xz.1:1692 > msgid "" > "When decoding raw streams (B<--format=raw>), LZMA2 needs only the dictionary " > "I<size>. LZMA1 needs also I<lc>, I<lp>, and I<pb>." >@@ -2714,43 +2939,49 @@ > "Wörterbuch-I<GröÃe>. LZMA1 benötigt auÃerdem I<lc>, I<lp> und I<pb>." > > #. type: TP >-#: ../src/xz/xz.1:1504 >+#: ../src/xz/xz.1:1692 > #, no-wrap > msgid "B<--x86>[B<=>I<options>]" > msgstr "B<--x86>[B<=>I<Optionen>]" > > #. type: TP >-#: ../src/xz/xz.1:1507 >+#: ../src/xz/xz.1:1695 > #, no-wrap >-msgid "B<--powerpc>[B<=>I<options>]" >-msgstr "B<--powerpc>[B<=>I<Optionen>]" >+msgid "B<--arm>[B<=>I<options>]" >+msgstr "B<--arm>[B<=>I<Optionen>]" > > #. type: TP >-#: ../src/xz/xz.1:1509 >+#: ../src/xz/xz.1:1697 > #, no-wrap >-msgid "B<--ia64>[B<=>I<options>]" >-msgstr "B<--ia64>[B<=>I<Optionen>]" >+msgid "B<--armthumb>[B<=>I<options>]" >+msgstr "B<--armthumb>[B<=>I<Optionen>]" > > #. type: TP >-#: ../src/xz/xz.1:1511 >+#: ../src/xz/xz.1:1699 > #, no-wrap >-msgid "B<--arm>[B<=>I<options>]" >-msgstr "B<--arm>[B<=>I<Optionen>]" >+msgid "B<--arm64>[B<=>I<options>]" >+msgstr "B<--arm64>[B<=>I<Optionen>]" > > #. type: TP >-#: ../src/xz/xz.1:1513 >+#: ../src/xz/xz.1:1701 > #, no-wrap >-msgid "B<--armthumb>[B<=>I<options>]" >-msgstr "B<--armthumb>[B<=>I<Optionen>]" >+msgid "B<--powerpc>[B<=>I<options>]" >+msgstr "B<--powerpc>[B<=>I<Optionen>]" > > #. type: TP >-#: ../src/xz/xz.1:1515 >+#: ../src/xz/xz.1:1703 > #, no-wrap >+msgid "B<--ia64>[B<=>I<options>]" >+msgstr "B<--ia64>[B<=>I<Optionen>]" >+ >+#. type: TP >+#: ../src/xz/xz.1:1705 >+#, no-wrap > msgid "B<--sparc>[B<=>I<options>]" > msgstr "B<--sparc>[B<=>I<Optionen>]" > > #. type: Plain text >-#: ../src/xz/xz.1:1521 >+#: ../src/xz/xz.1:1711 > msgid "" > "Add a branch/call/jump (BCJ) filter to the filter chain. These filters can " > "be used only as a non-last filter in the filter chain." >@@ -2759,14 +2990,15 @@ > "können nicht als letzter Filter in der Filterkette verwendet werden." > > #. type: Plain text >-#: ../src/xz/xz.1:1533 >+#: ../src/xz/xz.1:1725 > msgid "" > "A BCJ filter converts relative addresses in the machine code to their " >-"absolute counterparts. This doesn't change the size of the data, but it " >-"increases redundancy, which can help LZMA2 to produce 0-15\\ % smaller B<." >-"xz> file. The BCJ filters are always reversible, so using a BCJ filter for " >-"wrong type of data doesn't cause any data loss, although it may make the " >-"compression ratio slightly worse." >+"absolute counterparts. This doesn't change the size of the data but it " >+"increases redundancy, which can help LZMA2 to produce 0\\(en15\\ % smaller " >+"B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter " >+"for wrong type of data doesn't cause any data loss, although it may make the " >+"compression ratio slightly worse. The BCJ filters are very fast and use an " >+"insignificant amount of memory." > msgstr "" > "Ein BCJ-Filter wandelt relative Adressen im Maschinencode in deren absolute " > "Gegenstücke um. Die DatengröÃe wird dadurch nicht geändert, aber die " >@@ -2774,53 +3006,22 @@ > "B<.xz>-Datei zu erstellen. Die BCJ-Filter sind immer reversibel, daher " > "verursacht die Anwendung eines BCJ-Filters auf den falschen Datentyp keinen " > "Datenverlust, wobei aber das Kompressionsverhältnis etwas schlechter werden " >-"könnte." >+"könnte. Die BCJ-Filter sind sehr schnell und verbrauchen nur wenig mehr " >+"Speicher." > > #. type: Plain text >-#: ../src/xz/xz.1:1540 >-msgid "" >-"It is fine to apply a BCJ filter on a whole executable; there's no need to " >-"apply it only on the executable section. Applying a BCJ filter on an " >-"archive that contains both executable and non-executable files may or may " >-"not give good results, so it generally isn't good to blindly apply a BCJ " >-"filter when compressing binary packages for distribution." >-msgstr "" >-"Es ist in Ordnung, einen BCJ-Filter auf eine gesamte Binärdatei anzuwenden; " >-"es ist nicht nötig, dies nur auf den binären Bereich zu beschränken. Die " >-"Anwendung eines BCJ-Filters auf ein Archiv, das sowohl binäre als auch nicht-" >-"binäre Dateien enthält, kann gute Ergebnisse liefern, muss es aber nicht. " >-"Daher ist es generell nicht gut, einen BCJ-Filter blindlings anzuwenden, " >-"wenn Sie Binärpakete zwecks Weitergabe komprimieren wollen." >- >-#. type: Plain text >-#: ../src/xz/xz.1:1548 >-msgid "" >-"These BCJ filters are very fast and use insignificant amount of memory. If " >-"a BCJ filter improves compression ratio of a file, it can improve " >-"decompression speed at the same time. This is because, on the same " >-"hardware, the decompression speed of LZMA2 is roughly a fixed number of " >-"bytes of compressed data per second." >-msgstr "" >-"Diese BCJ-Filter sind sehr schnell und erhöhen den Speicherbedarf nur " >-"unerheblich. Wenn ein BCJ-Filter das Kompressionsverhältnis einer Datei " >-"verbessert, kann er auch gleichzeitig die Dekompressionsgeschwindigkeit " >-"verbessern. Das kommt daher, dass auf der gleichen Hardware die " >-"Dekompressionsgeschwindigkeit von LZMA2 ungefähr eine feste Anzahl Byte an " >-"komprimierten Daten pro Sekunde ist." >- >-#. type: Plain text >-#: ../src/xz/xz.1:1551 >+#: ../src/xz/xz.1:1728 > msgid "These BCJ filters have known problems related to the compression ratio:" > msgstr "" > "Diese BCJ-Filter haben bekannte Probleme mit dem Kompressionsverhältnis:" > > #. type: Plain text >-#: ../src/xz/xz.1:1558 >+#: ../src/xz/xz.1:1735 > msgid "" >-"Some types of files containing executable code (e.g. object files, static " >-"libraries, and Linux kernel modules) have the addresses in the instructions " >-"filled with filler values. These BCJ filters will still do the address " >-"conversion, which will make the compression worse with these files." >+"Some types of files containing executable code (for example, object files, " >+"static libraries, and Linux kernel modules) have the addresses in the " >+"instructions filled with filler values. These BCJ filters will still do the " >+"address conversion, which will make the compression worse with these files." > msgstr "" > "In einigen Dateitypen, die ausführbaren Code enthalten (zum Beispiel " > "Objektdateien, statische Bibliotheken und Linux-Kernelmodule), sind die " >@@ -2829,152 +3030,157 @@ > "schlechter wird." > > #. type: Plain text >-#: ../src/xz/xz.1:1565 >+#: ../src/xz/xz.1:1745 > msgid "" >-"Applying a BCJ filter on an archive containing multiple similar executables " >-"can make the compression ratio worse than not using a BCJ filter. This is " >-"because the BCJ filter doesn't detect the boundaries of the executable " >-"files, and doesn't reset the address conversion counter for each executable." >+"If a BCJ filter is applied on an archive, it is possible that it makes the " >+"compression ratio worse than not using a BCJ filter. For example, if there " >+"are similar or even identical executables then filtering will likely make " >+"the files less similar and thus compression is worse. The contents of non-" >+"executable files in the same archive can matter too. In practice one has to " >+"try with and without a BCJ filter to see which is better in each situation." > msgstr "" >-"Bei der Anwendung eines BCJ-Filters auf ein Archiv, das mehrere ähnliche " >-"Binärdateien enthält, kann das Kompressionsverhältnis schlechter sein als " >-"ohne BCJ-Filter. Das kommt daher, weil der BCJ-Filter die Grenzen der " >-"Binärdateien nicht erkennt und den Zähler der Adressumwandlung für jede " >-"Binärdatei nicht zurücksetzt." >+"Falls ein BCJ-Filter auf ein Archiv angewendet wird, ist es möglich, dass " >+"das Kompressionsverhältnis schlechter als ohne Filter wird. Falls es " >+"beispielsweise ähnliche oder sogar identische ausführbare Dateien gibt, dann " >+"werden diese durch die Filterung wahrscheinlich »unähnlicher« und " >+"verschlechtern dadurch das Kompressionsverhältnis. Der Inhalt nicht-" >+"ausführbarer Dateien im gleichen Archiv kann sich ebenfalls darauf " >+"auswirken. In der Praxis werden Sie durch Versuche mit oder ohne BCJ-Filter " >+"selbst herausfinden müssen, was situationsbezogen besser ist." > > #. type: Plain text >-#: ../src/xz/xz.1:1572 >+#: ../src/xz/xz.1:1750 > msgid "" >-"Both of the above problems will be fixed in the future in a new filter. The " >-"old BCJ filters will still be useful in embedded systems, because the " >-"decoder of the new filter will be bigger and use more memory." >+"Different instruction sets have different alignment: the executable file " >+"must be aligned to a multiple of this value in the input data to make the " >+"filter work." > msgstr "" >-"Beide der oben genannten Probleme werden in der Zukunft in einem neuen " >-"Filter nicht mehr auftreten. Die alten BCJ-Filter werden noch in " >-"eingebetteten Systemen von Nutzen sein, weil der Dekoder des neuen Filters " >-"gröÃer sein und mehr Speicher beanspruchen wird." >+"Verschiedene Befehlssätze haben unterschiedliche Ausrichtungen: Die " >+"ausführbare Datei muss in den Eingabedateien einem Vielfachen dieses Wertes " >+"entsprechen, damit dieser Filter funktioniert." > >-# FIXME have have >-#. type: Plain text >-#: ../src/xz/xz.1:1574 >-msgid "Different instruction sets have different alignment:" >-msgstr "Verschiedene Befehlssätze haben unterschiedliche Ausrichtungen:" >- > #. type: tbl table >-#: ../src/xz/xz.1:1581 >+#: ../src/xz/xz.1:1757 > #, no-wrap > msgid "Filter" > msgstr "Filter" > > #. type: tbl table >-#: ../src/xz/xz.1:1581 >+#: ../src/xz/xz.1:1757 > #, no-wrap > msgid "Alignment" > msgstr "Ausrichtung" > > #. type: tbl table >-#: ../src/xz/xz.1:1581 >+#: ../src/xz/xz.1:1757 > #, no-wrap > msgid "Notes" > msgstr "Hinweise" > > #. type: tbl table >-#: ../src/xz/xz.1:1582 >+#: ../src/xz/xz.1:1758 > #, no-wrap > msgid "x86" > msgstr "x86" > > #. type: tbl table >-#: ../src/xz/xz.1:1582 >+#: ../src/xz/xz.1:1758 > #, no-wrap > msgid "32-bit or 64-bit x86" > msgstr "32-Bit oder 64-Bit x86" > > #. type: tbl table >-#: ../src/xz/xz.1:1583 >+#: ../src/xz/xz.1:1759 > #, no-wrap >-msgid "PowerPC" >-msgstr "PowerPC" >+msgid "ARM" >+msgstr "ARM" > > #. type: tbl table >-#: ../src/xz/xz.1:1583 >+#: ../src/xz/xz.1:1760 > #, no-wrap >-msgid "Big endian only" >-msgstr "Nur Big Endian" >+msgid "ARM-Thumb" >+msgstr "ARM-Thumb" > > #. type: tbl table >-#: ../src/xz/xz.1:1584 >+#: ../src/xz/xz.1:1761 > #, no-wrap >-msgid "ARM" >-msgstr "ARM" >+msgid "ARM64" >+msgstr "ARM64" > > #. type: tbl table >-#: ../src/xz/xz.1:1584 ../src/xz/xz.1:1585 >+#: ../src/xz/xz.1:1761 > #, no-wrap >-msgid "Little endian only" >-msgstr "Nur Little Endian" >+msgid "4096-byte alignment is best" >+msgstr "4096-Byte-Ausrichtung ist optimal" > > #. type: tbl table >-#: ../src/xz/xz.1:1585 >+#: ../src/xz/xz.1:1762 > #, no-wrap >-msgid "ARM-Thumb" >-msgstr "ARM-Thumb" >+msgid "PowerPC" >+msgstr "PowerPC" > > #. type: tbl table >-#: ../src/xz/xz.1:1586 >+#: ../src/xz/xz.1:1762 > #, no-wrap >+msgid "Big endian only" >+msgstr "Nur Big Endian" >+ >+#. type: tbl table >+#: ../src/xz/xz.1:1763 >+#, no-wrap > msgid "IA-64" > msgstr "IA-64" > > #. type: tbl table >-#: ../src/xz/xz.1:1586 >+#: ../src/xz/xz.1:1763 > #, no-wrap > msgid "16" > msgstr "16" > > #. type: tbl table >-#: ../src/xz/xz.1:1586 ../src/xz/xz.1:1587 >+#: ../src/xz/xz.1:1763 > #, no-wrap >-msgid "Big or little endian" >-msgstr "Big oder Little Endian" >+msgid "Itanium" >+msgstr "Itanium" > > #. type: tbl table >-#: ../src/xz/xz.1:1587 >+#: ../src/xz/xz.1:1764 > #, no-wrap > msgid "SPARC" > msgstr "SPARC" > > #. type: Plain text >-#: ../src/xz/xz.1:1602 >+#: ../src/xz/xz.1:1781 > msgid "" > "Since the BCJ-filtered data is usually compressed with LZMA2, the " > "compression ratio may be improved slightly if the LZMA2 options are set to " > "match the alignment of the selected BCJ filter. For example, with the IA-64 " >-"filter, it's good to set B<pb=4> with LZMA2 (2^4=16). The x86 filter is an " >-"exception; it's usually good to stick to LZMA2's default four-byte alignment " >-"when compressing x86 executables." >+"filter, it's good to set B<pb=4> or even B<pb=4,lp=4,lc=0> with LZMA2 " >+"(2^4=16). The x86 filter is an exception; it's usually good to stick to " >+"LZMA2's default four-byte alignment when compressing x86 executables." > msgstr "" > "Da die BCJ-gefilterten Daten üblicherweise mit LZMA2 komprimiert sind, kann " > "das Kompressionsverhältnis dadurch etwas verbessert werden, dass die LZMA2-" > "Optionen so gesetzt werden, dass sie der Ausrichtung des gewählten BCJ-" > "Filters entsprechen. Zum Beispiel ist es beim IA-64-Filter eine gute Wahl, " >-"B<pb=4> mit LZMA2 zu setzen (2^4=16). Der x86-Filter bildet dabei eine " >-"Ausnahme; Sie sollten bei der für LZMA2 voreingestellten 4-Byte-Ausrichtung " >-"bleiben, wenn Sie x86-Binärdateien komprimieren." >+"B<pb=4> oder sogar B<pb=4,lp=4,lc=0> mit LZMA2 zu setzen (2^4=16). Der x86-" >+"Filter bildet dabei eine Ausnahme; Sie sollten bei der für LZMA2 " >+"voreingestellten 4-Byte-Ausrichtung bleiben, wenn Sie x86-Binärdateien " >+"komprimieren." > > #. type: Plain text >-#: ../src/xz/xz.1:1605 >+#: ../src/xz/xz.1:1784 > msgid "All BCJ filters support the same I<options>:" > msgstr "Alle BCJ-Filter unterstützen die gleichen I<Optionen>:" > > #. type: TP >-#: ../src/xz/xz.1:1606 >+#: ../src/xz/xz.1:1785 > #, no-wrap > msgid "B<start=>I<offset>" > msgstr "B<start=>I<Versatz>" > > #. type: Plain text >-#: ../src/xz/xz.1:1620 >+#: ../src/xz/xz.1:1799 > msgid "" > "Specify the start I<offset> that is used when converting between relative " > "and absolute addresses. The I<offset> must be a multiple of the alignment " >@@ -2988,13 +3194,13 @@ > "I<Versatzes> ist fast immer unnütz." > > #. type: TP >-#: ../src/xz/xz.1:1621 >+#: ../src/xz/xz.1:1800 > #, no-wrap > msgid "B<--delta>[B<=>I<options>]" > msgstr "B<--delta>[B<=>I<Optionen>]" > > #. type: Plain text >-#: ../src/xz/xz.1:1626 >+#: ../src/xz/xz.1:1805 > msgid "" > "Add the Delta filter to the filter chain. The Delta filter can be only used " > "as a non-last filter in the filter chain." >@@ -3003,13 +3209,13 @@ > "letzter Filter in der Filterkette verwendet werden." > > #. type: Plain text >-#: ../src/xz/xz.1:1635 >+#: ../src/xz/xz.1:1814 > msgid "" > "Currently only simple byte-wise delta calculation is supported. It can be " >-"useful when compressing e.g. uncompressed bitmap images or uncompressed PCM " >-"audio. However, special purpose algorithms may give significantly better " >-"results than Delta + LZMA2. This is true especially with audio, which " >-"compresses faster and better e.g. with B<flac>(1)." >+"useful when compressing, for example, uncompressed bitmap images or " >+"uncompressed PCM audio. However, special purpose algorithms may give " >+"significantly better results than Delta + LZMA2. This is true especially " >+"with audio, which compresses faster and better, for example, with B<flac>(1)." > msgstr "" > "Gegenwärtig wird nur eine einfache, Byte-bezogene Delta-Berechnung " > "unterstützt. Beim Komprimieren von zum Beispiel unkomprimierten Bitmap-" >@@ -3020,27 +3226,27 @@ > "komprimieren lassen." > > #. type: Plain text >-#: ../src/xz/xz.1:1638 >+#: ../src/xz/xz.1:1817 > msgid "Supported I<options>:" > msgstr "Unterstützte I<Optionen>:" > > #. type: TP >-#: ../src/xz/xz.1:1639 >+#: ../src/xz/xz.1:1818 > #, no-wrap > msgid "B<dist=>I<distance>" > msgstr "B<dist=>I<Abstand>" > > #. type: Plain text >-#: ../src/xz/xz.1:1647 >+#: ../src/xz/xz.1:1826 > msgid "" > "Specify the I<distance> of the delta calculation in bytes. I<distance> must " >-"be 1-256. The default is 1." >+"be 1\\(en256. The default is 1." > msgstr "" > "gibt den I<Abstand> der Delta-Berechnung in Byte an. Zulässige Werte für den " > "I<Abstand> sind 1 bis 256. Der Vorgabewert ist 1." > > #. type: Plain text >-#: ../src/xz/xz.1:1652 >+#: ../src/xz/xz.1:1831 > msgid "" > "For example, with B<dist=2> and eight-byte input A1 B1 A2 B3 A3 B5 A4 B7, " > "the output will be A1 B1 01 02 01 02 01 02." >@@ -3049,19 +3255,19 @@ > "B7 die Ausgabe A1 B1 01 02 01 02 01 02 sein." > > #. type: SS >-#: ../src/xz/xz.1:1654 >+#: ../src/xz/xz.1:1833 > #, no-wrap > msgid "Other options" > msgstr "Andere Optionen" > > #. type: TP >-#: ../src/xz/xz.1:1655 ../src/xzdec/xzdec.1:83 >+#: ../src/xz/xz.1:1834 ../src/xzdec/xzdec.1:83 > #, no-wrap > msgid "B<-q>, B<--quiet>" > msgstr "B<-q>, B<--quiet>" > > #. type: Plain text >-#: ../src/xz/xz.1:1662 >+#: ../src/xz/xz.1:1841 > msgid "" > "Suppress warnings and notices. Specify this twice to suppress errors too. " > "This option has no effect on the exit status. That is, even if a warning " >@@ -3073,13 +3279,13 @@ > "Exit-Status zur Anzeige einer Warnung dennoch verwendet wird." > > #. type: TP >-#: ../src/xz/xz.1:1662 >+#: ../src/xz/xz.1:1841 > #, no-wrap > msgid "B<-v>, B<--verbose>" > msgstr "B<-v>, B<--verbose>" > > #. type: Plain text >-#: ../src/xz/xz.1:1671 >+#: ../src/xz/xz.1:1850 > msgid "" > "Be verbose. If standard error is connected to a terminal, B<xz> will " > "display a progress indicator. Specifying B<--verbose> twice will give even " >@@ -3090,12 +3296,12 @@ > "Angabe von B<--verbose> wird die Ausgabe noch ausführlicher." > > #. type: Plain text >-#: ../src/xz/xz.1:1673 >+#: ../src/xz/xz.1:1852 > msgid "The progress indicator shows the following information:" > msgstr "Der Fortschrittsanzeiger stellt die folgenden Informationen dar:" > > #. type: Plain text >-#: ../src/xz/xz.1:1678 >+#: ../src/xz/xz.1:1857 > msgid "" > "Completion percentage is shown if the size of the input file is known. That " > "is, the percentage cannot be shown in pipes." >@@ -3105,7 +3311,7 @@ > "Weiterleitungen (Pipes) nicht angezeigt werden kann." > > #. type: Plain text >-#: ../src/xz/xz.1:1681 >+#: ../src/xz/xz.1:1860 > msgid "" > "Amount of compressed data produced (compressing) or consumed " > "(decompressing)." >@@ -3114,7 +3320,7 @@ > "verarbeiteten Daten (bei der Dekompression)." > > #. type: Plain text >-#: ../src/xz/xz.1:1684 >+#: ../src/xz/xz.1:1863 > msgid "" > "Amount of uncompressed data consumed (compressing) or produced " > "(decompressing)." >@@ -3123,7 +3329,7 @@ > "erzeugten Daten (bei der Dekompression)." > > #. type: Plain text >-#: ../src/xz/xz.1:1688 >+#: ../src/xz/xz.1:1867 > msgid "" > "Compression ratio, which is calculated by dividing the amount of compressed " > "data processed so far by the amount of uncompressed data processed so far." >@@ -3133,7 +3339,7 @@ > "Daten ermittelt wird." > > #. type: Plain text >-#: ../src/xz/xz.1:1695 >+#: ../src/xz/xz.1:1874 > msgid "" > "Compression or decompression speed. This is measured as the amount of " > "uncompressed data consumed (compression) or produced (decompression) per " >@@ -3147,17 +3353,17 @@ > "begonnen hat." > > #. type: Plain text >-#: ../src/xz/xz.1:1697 >+#: ../src/xz/xz.1:1876 > msgid "Elapsed time in the format M:SS or H:MM:SS." > msgstr "Die vergangene Zeit im Format M:SS oder H:MM:SS." > > #. type: Plain text >-#: ../src/xz/xz.1:1705 >+#: ../src/xz/xz.1:1884 > msgid "" > "Estimated remaining time is shown only when the size of the input file is " > "known and a couple of seconds have already passed since B<xz> started " > "processing the file. The time is shown in a less precise format which never " >-"has any colons, e.g. 2 min 30 s." >+"has any colons, for example, 2 min 30 s." > msgstr "" > "Die geschätzte verbleibende Zeit wird nur angezeigt, wenn die GröÃe der " > "Eingabedatei bekannt ist und bereits einige Sekunden vergangen sind, nachdem " >@@ -3165,15 +3371,15 @@ > "weniger präzisen Format ohne Doppelpunkte angezeigt, zum Beispiel 2 min 30 s." > > #. type: Plain text >-#: ../src/xz/xz.1:1720 >+#: ../src/xz/xz.1:1899 > msgid "" > "When standard error is not a terminal, B<--verbose> will make B<xz> print " > "the filename, compressed size, uncompressed size, compression ratio, and " > "possibly also the speed and elapsed time on a single line to standard error " > "after compressing or decompressing the file. The speed and elapsed time are " > "included only when the operation took at least a few seconds. If the " >-"operation didn't finish, e.g. due to user interruption, also the completion " >-"percentage is printed if the size of the input file is known." >+"operation didn't finish, for example, due to user interruption, also the " >+"completion percentage is printed if the size of the input file is known." > msgstr "" > "Wenn die Standardfehlerausgabe kein Terminal ist, schreibt B<xz> mit B<--" > "verbose> nach dem Komprimieren oder Dekomprimieren der Datei in einer " >@@ -3187,13 +3393,13 @@ > "Eingabedatei bekannt ist." > > #. type: TP >-#: ../src/xz/xz.1:1720 ../src/xzdec/xzdec.1:89 >+#: ../src/xz/xz.1:1899 ../src/xzdec/xzdec.1:89 > #, no-wrap > msgid "B<-Q>, B<--no-warn>" > msgstr "B<-Q>, B<--no-warn>" > > #. type: Plain text >-#: ../src/xz/xz.1:1730 >+#: ../src/xz/xz.1:1909 > msgid "" > "Don't set the exit status to 2 even if a condition worth a warning was " > "detected. This option doesn't affect the verbosity level, thus both B<--" >@@ -3207,13 +3413,13 @@ > "andererseits auch den Exit-Status nicht zu ändern." > > #. type: TP >-#: ../src/xz/xz.1:1730 >+#: ../src/xz/xz.1:1909 > #, no-wrap > msgid "B<--robot>" > msgstr "B<--robot>" > > #. type: Plain text >-#: ../src/xz/xz.1:1742 >+#: ../src/xz/xz.1:1921 > msgid "" > "Print messages in a machine-parsable format. This is intended to ease " > "writing frontends that want to use B<xz> instead of liblzma, which may be " >@@ -3229,30 +3435,31 @@ > "B<ROBOTER-MODUS>." > > #. type: TP >-#: ../src/xz/xz.1:1742 >+#: ../src/xz/xz.1:1921 > #, no-wrap > msgid "B<--info-memory>" > msgstr "B<--info-memory>" > > #. type: Plain text >-#: ../src/xz/xz.1:1748 >+#: ../src/xz/xz.1:1928 > msgid "" >-"Display, in human-readable format, how much physical memory (RAM) B<xz> " >-"thinks the system has and the memory usage limits for compression and " >-"decompression, and exit successfully." >+"Display, in human-readable format, how much physical memory (RAM) and how " >+"many processor threads B<xz> thinks the system has and the memory usage " >+"limits for compression and decompression, and exit successfully." > msgstr "" > "zeigt in einem menschenlesbaren Format an, wieviel physischen Speicher (RAM) " >-"das System nach Annahme von B<xz> hat, sowie die Speicherbedarfsbegrenzung " >-"für Kompression und Dekompression, und beendet das Programm erfolgreich." >+"und wie viele Prozessor-Threads das System nach Annahme von B<xz> hat, sowie " >+"die Speicherbedarfsbegrenzung für Kompression und Dekompression, und beendet " >+"das Programm erfolgreich." > > #. type: TP >-#: ../src/xz/xz.1:1748 ../src/xzdec/xzdec.1:96 >+#: ../src/xz/xz.1:1928 ../src/xzdec/xzdec.1:96 > #, no-wrap > msgid "B<-h>, B<--help>" > msgstr "B<-h>, B<--help>" > > #. type: Plain text >-#: ../src/xz/xz.1:1752 >+#: ../src/xz/xz.1:1932 > msgid "" > "Display a help message describing the most commonly used options, and exit " > "successfully." >@@ -3261,14 +3468,14 @@ > "beendet das Programm erfolgreich." > > #. type: TP >-#: ../src/xz/xz.1:1752 >+#: ../src/xz/xz.1:1932 > #, no-wrap > msgid "B<-H>, B<--long-help>" > msgstr "B<-H>, B<--long-help>" > > # FIXME Satzpunkt fehlt > #. type: Plain text >-#: ../src/xz/xz.1:1757 >+#: ../src/xz/xz.1:1937 > msgid "" > "Display a help message describing all features of B<xz>, and exit " > "successfully" >@@ -3277,13 +3484,13 @@ > "und beendet das Programm erfolgreich." > > #. type: TP >-#: ../src/xz/xz.1:1757 ../src/xzdec/xzdec.1:99 >+#: ../src/xz/xz.1:1937 ../src/xzdec/xzdec.1:99 > #, no-wrap > msgid "B<-V>, B<--version>" > msgstr "B<-V>, B<--version>" > > #. type: Plain text >-#: ../src/xz/xz.1:1766 >+#: ../src/xz/xz.1:1946 > msgid "" > "Display the version number of B<xz> and liblzma in human readable format. " > "To get machine-parsable output, specify B<--robot> before B<--version>." >@@ -3293,13 +3500,13 @@ > "robot> vor B<--version> an." > > #. type: SH >-#: ../src/xz/xz.1:1767 >+#: ../src/xz/xz.1:1947 > #, no-wrap > msgid "ROBOT MODE" > msgstr "ROBOTER-MODUS" > > #. type: Plain text >-#: ../src/xz/xz.1:1783 >+#: ../src/xz/xz.1:1963 > msgid "" > "The robot mode is activated with the B<--robot> option. It makes the output " > "of B<xz> easier to parse by other programs. Currently B<--robot> is " >@@ -3313,13 +3520,13 @@ > "Kompression und Dekompression unterstützt." > > #. type: SS >-#: ../src/xz/xz.1:1784 >+#: ../src/xz/xz.1:1964 > #, no-wrap > msgid "Version" > msgstr "Version" > > #. type: Plain text >-#: ../src/xz/xz.1:1789 >+#: ../src/xz/xz.1:1969 > msgid "" > "B<xz --robot --version> will print the version number of B<xz> and liblzma " > "in the following format:" >@@ -3328,34 +3535,34 @@ > "folgenden Format aus:" > > #. type: Plain text >-#: ../src/xz/xz.1:1791 >+#: ../src/xz/xz.1:1971 > msgid "B<XZ_VERSION=>I<XYYYZZZS>" > msgstr "B<XZ_VERSION=>I<XYYYZZZS>" > > #. type: Plain text >-#: ../src/xz/xz.1:1793 >+#: ../src/xz/xz.1:1973 > msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>" > msgstr "B<LIBLZMA_VERSION=>I<XYYYZZZS>" > > #. type: TP >-#: ../src/xz/xz.1:1793 >+#: ../src/xz/xz.1:1973 > #, no-wrap > msgid "I<X>" > msgstr "I<X>" > > #. type: Plain text >-#: ../src/xz/xz.1:1796 >+#: ../src/xz/xz.1:1976 > msgid "Major version." > msgstr "Hauptversion." > > #. type: TP >-#: ../src/xz/xz.1:1796 >+#: ../src/xz/xz.1:1976 > #, no-wrap > msgid "I<YYY>" > msgstr "I<YYY>" > > #. type: Plain text >-#: ../src/xz/xz.1:1801 >+#: ../src/xz/xz.1:1981 > msgid "" > "Minor version. Even numbers are stable. Odd numbers are alpha or beta " > "versions." >@@ -3364,13 +3571,13 @@ > "bezeichnen Alpha- oder Betaversionen." > > #. type: TP >-#: ../src/xz/xz.1:1801 >+#: ../src/xz/xz.1:1981 > #, no-wrap > msgid "I<ZZZ>" > msgstr "I<ZZZ>" > > #. type: Plain text >-#: ../src/xz/xz.1:1805 >+#: ../src/xz/xz.1:1985 > msgid "" > "Patch level for stable releases or just a counter for development releases." > msgstr "" >@@ -3378,13 +3585,13 @@ > "Entwicklungsversionen." > > #. type: TP >-#: ../src/xz/xz.1:1805 >+#: ../src/xz/xz.1:1985 > #, no-wrap > msgid "I<S>" > msgstr "I<S>" > > #. type: Plain text >-#: ../src/xz/xz.1:1813 >+#: ../src/xz/xz.1:1993 > msgid "" > "Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 " > "when I<YYY> is even." >@@ -3393,7 +3600,7 @@ > "sein, wenn I<YYY> eine gerade Zahl ist." > > #. type: Plain text >-#: ../src/xz/xz.1:1818 >+#: ../src/xz/xz.1:1998 > msgid "" > "I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the " > "same XZ Utils release." >@@ -3402,18 +3609,18 @@ > "gleichen Veröffentlichung der XZ-Utils stammen." > > #. type: Plain text >-#: ../src/xz/xz.1:1824 >+#: ../src/xz/xz.1:2004 > msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>." > msgstr "Beispiele: 4.999.9beta ist B<49990091> und 5.0.0 is B<50000002>." > > #. type: SS >-#: ../src/xz/xz.1:1825 >+#: ../src/xz/xz.1:2005 > #, no-wrap > msgid "Memory limit information" > msgstr "Informationen zur Speicherbedarfsbegrenzung" > > #. type: Plain text >-#: ../src/xz/xz.1:1828 >+#: ../src/xz/xz.1:2008 > msgid "" > "B<xz --robot --info-memory> prints a single line with three tab-separated " > "columns:" >@@ -3422,55 +3629,115 @@ > "Tabulatoren getrennten Spalten aus:" > > #. type: IP >-#: ../src/xz/xz.1:1828 >+#: ../src/xz/xz.1:2008 > #, no-wrap > msgid "1." > msgstr "1." > > #. type: Plain text >-#: ../src/xz/xz.1:1830 >-msgid "Total amount of physical memory (RAM) in bytes" >-msgstr "Gesamter physischer Speicher (RAM) in Byte" >+#: ../src/xz/xz.1:2010 >+msgid "Total amount of physical memory (RAM) in bytes." >+msgstr "Gesamter physischer Speicher (RAM) in Byte." > > #. type: IP >-#: ../src/xz/xz.1:1830 ../src/xz/xz.1:1910 ../src/xz/xz.1:1947 >-#: ../src/xz/xz.1:1973 ../src/xz/xz.1:2043 ../src/xz/xz.1:2070 >+#: ../src/xz/xz.1:2010 ../src/xz/xz.1:2125 ../src/xz/xz.1:2162 >+#: ../src/xz/xz.1:2188 ../src/xz/xz.1:2258 ../src/xz/xz.1:2285 > #, no-wrap > msgid "2." > msgstr "2." > > #. type: Plain text >-#: ../src/xz/xz.1:1834 >+#: ../src/xz/xz.1:2017 > msgid "" >-"Memory usage limit for compression in bytes. A special value of zero " >-"indicates the default setting, which for single-threaded mode is the same as " >-"no limit." >+"Memory usage limit for compression in bytes (B<--memlimit-compress>). A " >+"special value of B<0> indicates the default setting which for single-" >+"threaded mode is the same as no limit." > msgstr "" >-"Speicherbedarfsbegrenzung für die Kompression in Byte. Ein spezieller Wert " >-"von Null bezeichnet die Standardeinstellung, die im Einzelthread-Modus " >-"bedeutet, dass keine Begrenzung vorhanden ist." >+"Speicherbedarfsbegrenzung für die Kompression in Byte (B<--memlimit-" >+"compress>). Ein spezieller Wert von B<0> bezeichnet die Standardeinstellung, " >+"die im Einzelthread-Modus bedeutet, dass keine Begrenzung vorhanden ist." > > #. type: IP >-#: ../src/xz/xz.1:1834 ../src/xz/xz.1:1912 ../src/xz/xz.1:1949 >-#: ../src/xz/xz.1:1975 ../src/xz/xz.1:2048 ../src/xz/xz.1:2072 >+#: ../src/xz/xz.1:2017 ../src/xz/xz.1:2127 ../src/xz/xz.1:2164 >+#: ../src/xz/xz.1:2190 ../src/xz/xz.1:2263 ../src/xz/xz.1:2287 > #, no-wrap > msgid "3." > msgstr "3." > > #. type: Plain text >-#: ../src/xz/xz.1:1838 >+#: ../src/xz/xz.1:2024 > msgid "" >-"Memory usage limit for decompression in bytes. A special value of zero " >-"indicates the default setting, which for single-threaded mode is the same as " >-"no limit." >+"Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A " >+"special value of B<0> indicates the default setting which for single-" >+"threaded mode is the same as no limit." > msgstr "" >-"Speicherbedarfsbegrenzung für die Dekompression in Byte. Ein spezieller Wert " >-"von Null bezeichnet die Standardeinstellung, die im Einzelthread-Modus " >-"bedeutet, dass keine Begrenzung vorhanden ist." >+"Speicherbedarfsbegrenzung für die Dekompression in Byte (B<--memlimit-" >+"decompress>). Ein spezieller Wert von B<0> bezeichnet die " >+"Standardeinstellung, die im Einzelthread-Modus bedeutet, dass keine " >+"Begrenzung vorhanden ist." > >+#. type: IP >+#: ../src/xz/xz.1:2024 ../src/xz/xz.1:2129 ../src/xz/xz.1:2166 >+#: ../src/xz/xz.1:2193 ../src/xz/xz.1:2273 ../src/xz/xz.1:2289 >+#, no-wrap >+msgid "4." >+msgstr "4." >+ > #. type: Plain text >-#: ../src/xz/xz.1:1842 >+#: ../src/xz/xz.1:2036 > msgid "" >+"Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in " >+"bytes (B<--memlimit-mt-decompress>). This is never zero because a system-" >+"specific default value shown in the column 5 is used if no limit has been " >+"specified explicitly. This is also never greater than the value in the " >+"column 3 even if a larger value has been specified with B<--memlimit-mt-" >+"decompress>." >+msgstr "" >+"Seit B<xz> 5.3.4alpha: Die Speichernutzung für Multithread-Dekompression in " >+"Byte (B<--memlimit-mt-decompress>). Dies ist niemals B<0>, da ein " >+"systemspezifischer Vorgabewert (gezeigt in Spalte 5) verwendet wird, falls " >+"keine Grenze ausdrücklich angegeben wurde. Dies ist auÃerdem niemals gröÃer " >+"als der Wert in in Spalte 3, selbst wenn mit B<--memlimit-mt-decompress> ein " >+"gröÃerer Wert angegeben wurde." >+ >+#. type: IP >+#: ../src/xz/xz.1:2036 ../src/xz/xz.1:2131 ../src/xz/xz.1:2168 >+#: ../src/xz/xz.1:2195 ../src/xz/xz.1:2291 >+#, no-wrap >+msgid "5." >+msgstr "5." >+ >+#. type: Plain text >+#: ../src/xz/xz.1:2048 >+msgid "" >+"Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is " >+"used to limit the number of threads when compressing with an automatic " >+"number of threads (B<--threads=0>) and no memory usage limit has been " >+"specified (B<--memlimit-compress>). This is also used as the default value " >+"for B<--memlimit-mt-decompress>." >+msgstr "" >+"Seit B<xz> 5.3.4alpha: Eine systemspezifisch vorgegebene Begrenzung des " >+"Speicherverbrauchs, die zur Begrenzung der Anzahl der Threads beim " >+"Komprimieren mit automatischer Anzahl der Threads (B<--threads=0>) und wenn " >+"keine Speicherbedarfsbegrenzung angegeben wurde (B<--memlimit-compress>) " >+"verwendet wird. Dies wird auch als Standardwert für B<--memlimit-mt-" >+"decompress> verwendet." >+ >+#. type: IP >+#: ../src/xz/xz.1:2048 ../src/xz/xz.1:2133 ../src/xz/xz.1:2170 >+#: ../src/xz/xz.1:2197 ../src/xz/xz.1:2293 >+#, no-wrap >+msgid "6." >+msgstr "6." >+ >+#. type: Plain text >+#: ../src/xz/xz.1:2053 >+msgid "Since B<xz> 5.3.4alpha: Number of available processor threads." >+msgstr "Seit B<xz> 5.3.4alpha: Anzahl der verfügbaren Prozessorthreads." >+ >+#. type: Plain text >+#: ../src/xz/xz.1:2057 >+msgid "" > "In the future, the output of B<xz --robot --info-memory> may have more " > "columns, but never more than a single line." > msgstr "" >@@ -3478,13 +3745,13 @@ > "Spalten enthalten, aber niemals mehr als eine einzelne Zeile." > > #. type: SS >-#: ../src/xz/xz.1:1843 >+#: ../src/xz/xz.1:2058 > #, no-wrap > msgid "List mode" > msgstr "Listenmodus" > > #. type: Plain text >-#: ../src/xz/xz.1:1848 >+#: ../src/xz/xz.1:2063 > msgid "" > "B<xz --robot --list> uses tab-separated output. The first column of every " > "line has a string that indicates the type of the information found on that " >@@ -3495,13 +3762,13 @@ > "Information, die in dieser Zeile enthalten ist:" > > #. type: TP >-#: ../src/xz/xz.1:1848 >+#: ../src/xz/xz.1:2063 > #, no-wrap > msgid "B<name>" > msgstr "B<name>" > > #. type: Plain text >-#: ../src/xz/xz.1:1852 >+#: ../src/xz/xz.1:2067 > msgid "" > "This is always the first line when starting to list a file. The second " > "column on the line is the filename." >@@ -3510,14 +3777,14 @@ > "Spalte in der Zeile enthält den Dateinamen." > > #. type: TP >-#: ../src/xz/xz.1:1852 >+#: ../src/xz/xz.1:2067 > #, no-wrap > msgid "B<file>" > msgstr "B<file>" > > # CHECK overall > #. type: Plain text >-#: ../src/xz/xz.1:1860 >+#: ../src/xz/xz.1:2075 > msgid "" > "This line contains overall information about the B<.xz> file. This line is " > "always printed after the B<name> line." >@@ -3526,13 +3793,13 @@ > "wird stets nach der B<name>-Zeile ausgegeben." > > #. type: TP >-#: ../src/xz/xz.1:1860 >+#: ../src/xz/xz.1:2075 > #, no-wrap > msgid "B<stream>" > msgstr "B<stream>" > > #. type: Plain text >-#: ../src/xz/xz.1:1870 >+#: ../src/xz/xz.1:2085 > msgid "" > "This line type is used only when B<--verbose> was specified. There are as " > "many B<stream> lines as there are streams in the B<.xz> file." >@@ -3542,13 +3809,13 @@ > "enthalten sind." > > #. type: TP >-#: ../src/xz/xz.1:1870 >+#: ../src/xz/xz.1:2085 > #, no-wrap > msgid "B<block>" > msgstr "B<block>" > > #. type: Plain text >-#: ../src/xz/xz.1:1885 >+#: ../src/xz/xz.1:2100 > msgid "" > "This line type is used only when B<--verbose> was specified. There are as " > "many B<block> lines as there are blocks in the B<.xz> file. The B<block> " >@@ -3561,13 +3828,13 @@ > "Zeilentypen werden nicht verschachtelt." > > #. type: TP >-#: ../src/xz/xz.1:1885 >+#: ../src/xz/xz.1:2100 > #, no-wrap > msgid "B<summary>" > msgstr "B<summary>" > > #. type: Plain text >-#: ../src/xz/xz.1:1900 >+#: ../src/xz/xz.1:2115 > msgid "" > "This line type is used only when B<--verbose> was specified twice. This " > "line is printed after all B<block> lines. Like the B<file> line, the " >@@ -3579,13 +3846,13 @@ > "xz>-Datei." > > #. type: TP >-#: ../src/xz/xz.1:1900 >+#: ../src/xz/xz.1:2115 > #, no-wrap > msgid "B<totals>" > msgstr "B<totals>" > > #. type: Plain text >-#: ../src/xz/xz.1:1904 >+#: ../src/xz/xz.1:2119 > msgid "" > "This line is always the very last line of the list output. It shows the " > "total counts and sizes." >@@ -3594,55 +3861,34 @@ > "Gesamtanzahlen und -gröÃen an." > > #. type: Plain text >-#: ../src/xz/xz.1:1908 >+#: ../src/xz/xz.1:2123 > msgid "The columns of the B<file> lines:" > msgstr "Die Spalten der B<file>-Zeilen:" > > #. type: Plain text >-#: ../src/xz/xz.1:1912 >+#: ../src/xz/xz.1:2127 > msgid "Number of streams in the file" > msgstr "Anzahl der Datenströme in der Datei" > > #. type: Plain text >-#: ../src/xz/xz.1:1914 >+#: ../src/xz/xz.1:2129 > msgid "Total number of blocks in the stream(s)" > msgstr "Gesamtanzahl der Blöcke in den Datenströmen" > >-#. type: IP >-#: ../src/xz/xz.1:1914 ../src/xz/xz.1:1951 ../src/xz/xz.1:1978 >-#: ../src/xz/xz.1:2058 ../src/xz/xz.1:2074 >-#, no-wrap >-msgid "4." >-msgstr "4." >- > #. type: Plain text >-#: ../src/xz/xz.1:1916 >+#: ../src/xz/xz.1:2131 > msgid "Compressed size of the file" > msgstr "Komprimierte GröÃe der Datei" > >-#. type: IP >-#: ../src/xz/xz.1:1916 ../src/xz/xz.1:1953 ../src/xz/xz.1:1980 >-#: ../src/xz/xz.1:2076 >-#, no-wrap >-msgid "5." >-msgstr "5." >- > #. type: Plain text >-#: ../src/xz/xz.1:1918 >+#: ../src/xz/xz.1:2133 > msgid "Uncompressed size of the file" > msgstr "Unkomprimierte GröÃe der Datei" > >-#. type: IP >-#: ../src/xz/xz.1:1918 ../src/xz/xz.1:1955 ../src/xz/xz.1:1982 >-#: ../src/xz/xz.1:2078 >-#, no-wrap >-msgid "6." >-msgstr "6." >- > #. type: Plain text >-#: ../src/xz/xz.1:1924 >+#: ../src/xz/xz.1:2139 > msgid "" >-"Compression ratio, for example B<0.123.> If ratio is over 9.999, three " >+"Compression ratio, for example, B<0.123>. If ratio is over 9.999, three " > "dashes (B<--->) are displayed instead of the ratio." > msgstr "" > "Das Kompressionsverhältnis, zum Beispiel B<0.123>. Wenn das Verhältnis über " >@@ -3650,14 +3896,14 @@ > "Kompressionsverhältnisses angezeigt." > > #. type: IP >-#: ../src/xz/xz.1:1924 ../src/xz/xz.1:1957 ../src/xz/xz.1:1984 >-#: ../src/xz/xz.1:2080 >+#: ../src/xz/xz.1:2139 ../src/xz/xz.1:2172 ../src/xz/xz.1:2199 >+#: ../src/xz/xz.1:2295 > #, no-wrap > msgid "7." > msgstr "7." > > #. type: Plain text >-#: ../src/xz/xz.1:1937 >+#: ../src/xz/xz.1:2152 > msgid "" > "Comma-separated list of integrity check names. The following strings are " > "used for the known check types: B<None>, B<CRC32>, B<CRC64>, and " >@@ -3671,117 +3917,117 @@ > "zweistellig)." > > #. type: IP >-#: ../src/xz/xz.1:1937 ../src/xz/xz.1:1959 ../src/xz/xz.1:1986 >-#: ../src/xz/xz.1:2083 >+#: ../src/xz/xz.1:2152 ../src/xz/xz.1:2174 ../src/xz/xz.1:2201 >+#: ../src/xz/xz.1:2298 > #, no-wrap > msgid "8." > msgstr "8." > > #. type: Plain text >-#: ../src/xz/xz.1:1939 >+#: ../src/xz/xz.1:2154 > msgid "Total size of stream padding in the file" > msgstr "GesamtgröÃe der Datenstromauffüllung in der Datei" > > #. type: Plain text >-#: ../src/xz/xz.1:1945 >+#: ../src/xz/xz.1:2160 > msgid "The columns of the B<stream> lines:" > msgstr "Die Spalten der B<stream>-Zeilen:" > > #. type: Plain text >-#: ../src/xz/xz.1:1949 >+#: ../src/xz/xz.1:2164 > msgid "Stream number (the first stream is 1)" > msgstr "Datenstromnummer (der erste Datenstrom ist 1)" > > #. type: Plain text >-#: ../src/xz/xz.1:1951 >+#: ../src/xz/xz.1:2166 > msgid "Number of blocks in the stream" > msgstr "Anzahl der Blöcke im Datenstrom" > > #. type: Plain text >-#: ../src/xz/xz.1:1953 >+#: ../src/xz/xz.1:2168 > msgid "Compressed start offset" > msgstr "Komprimierte Startposition" > > #. type: Plain text >-#: ../src/xz/xz.1:1955 >+#: ../src/xz/xz.1:2170 > msgid "Uncompressed start offset" > msgstr "Unkomprimierte Startposition" > > #. type: Plain text >-#: ../src/xz/xz.1:1957 >+#: ../src/xz/xz.1:2172 > msgid "Compressed size (does not include stream padding)" > msgstr "Komprimierte GröÃe (schlieÃt die Datenstromauffüllung nicht mit ein)" > > #. type: Plain text >-#: ../src/xz/xz.1:1959 ../src/xz/xz.1:1988 ../src/xz/xz.1:2078 >+#: ../src/xz/xz.1:2174 ../src/xz/xz.1:2203 ../src/xz/xz.1:2293 > msgid "Uncompressed size" > msgstr "Unkomprimierte GröÃe" > > #. type: Plain text >-#: ../src/xz/xz.1:1961 ../src/xz/xz.1:1990 >+#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2205 > msgid "Compression ratio" > msgstr "Kompressionsverhältnis" > > #. type: IP >-#: ../src/xz/xz.1:1961 ../src/xz/xz.1:1988 ../src/xz/xz.1:2085 >+#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2203 ../src/xz/xz.1:2300 > #, no-wrap > msgid "9." > msgstr "9." > > #. type: Plain text >-#: ../src/xz/xz.1:1963 ../src/xz/xz.1:1992 >+#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2207 > msgid "Name of the integrity check" > msgstr "Name der Integritätsprüfung" > > #. type: IP >-#: ../src/xz/xz.1:1963 ../src/xz/xz.1:1990 ../src/xz/xz.1:2101 >+#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2205 ../src/xz/xz.1:2316 > #, no-wrap > msgid "10." > msgstr "10." > > #. type: Plain text >-#: ../src/xz/xz.1:1965 >+#: ../src/xz/xz.1:2180 > msgid "Size of stream padding" > msgstr "GröÃe der Datenstromauffüllung" > > #. type: Plain text >-#: ../src/xz/xz.1:1971 >+#: ../src/xz/xz.1:2186 > msgid "The columns of the B<block> lines:" > msgstr "Die Spalten der B<block>-Zeilen:" > > #. type: Plain text >-#: ../src/xz/xz.1:1975 >+#: ../src/xz/xz.1:2190 > msgid "Number of the stream containing this block" > msgstr "Anzahl der in diesem Block enthaltenen Datenströme" > > #. type: Plain text >-#: ../src/xz/xz.1:1978 >+#: ../src/xz/xz.1:2193 > msgid "" > "Block number relative to the beginning of the stream (the first block is 1)" > msgstr "Blocknummer relativ zum Anfang des Datenstroms (der erste Block ist 1)" > > #. type: Plain text >-#: ../src/xz/xz.1:1980 >+#: ../src/xz/xz.1:2195 > msgid "Block number relative to the beginning of the file" > msgstr "Blocknummer relativ zum Anfang der Datei" > > #. type: Plain text >-#: ../src/xz/xz.1:1982 >+#: ../src/xz/xz.1:2197 > msgid "Compressed start offset relative to the beginning of the file" > msgstr "Komprimierter Startversatz relativ zum Beginn der Datei" > > #. type: Plain text >-#: ../src/xz/xz.1:1984 >+#: ../src/xz/xz.1:2199 > msgid "Uncompressed start offset relative to the beginning of the file" > msgstr "Unkomprimierter Startversatz relativ zum Beginn der Datei" > > #. type: Plain text >-#: ../src/xz/xz.1:1986 >+#: ../src/xz/xz.1:2201 > msgid "Total compressed size of the block (includes headers)" > msgstr "Komprimierte GesamtgröÃe des Blocks (einschlieÃlich Header)" > > #. type: Plain text >-#: ../src/xz/xz.1:2004 >+#: ../src/xz/xz.1:2219 > msgid "" > "If B<--verbose> was specified twice, additional columns are included on the " > "B<block> lines. These are not displayed with a single B<--verbose>, because " >@@ -3793,35 +4039,35 @@ > "erfordert und daher recht langsam sein kann:" > > #. type: IP >-#: ../src/xz/xz.1:2006 ../src/xz/xz.1:2106 >+#: ../src/xz/xz.1:2221 ../src/xz/xz.1:2321 > #, no-wrap > msgid "11." > msgstr "11." > > #. type: Plain text >-#: ../src/xz/xz.1:2008 >+#: ../src/xz/xz.1:2223 > msgid "Value of the integrity check in hexadecimal" > msgstr "Wert der Integritätsprüfung in hexadezimaler Notation" > > #. type: IP >-#: ../src/xz/xz.1:2008 ../src/xz/xz.1:2116 >+#: ../src/xz/xz.1:2223 ../src/xz/xz.1:2331 > #, no-wrap > msgid "12." > msgstr "12." > > #. type: Plain text >-#: ../src/xz/xz.1:2010 >+#: ../src/xz/xz.1:2225 > msgid "Block header size" > msgstr "Block-Header-GröÃe" > > #. type: IP >-#: ../src/xz/xz.1:2010 >+#: ../src/xz/xz.1:2225 > #, no-wrap > msgid "13." > msgstr "13." > > #. type: Plain text >-#: ../src/xz/xz.1:2020 >+#: ../src/xz/xz.1:2235 > msgid "" > "Block flags: B<c> indicates that compressed size is present, and B<u> " > "indicates that uncompressed size is present. If the flag is not set, a dash " >@@ -3835,13 +4081,13 @@ > "neue Schalter am Ende der Zeichenkette hinzugefügt werden." > > #. type: IP >-#: ../src/xz/xz.1:2020 >+#: ../src/xz/xz.1:2235 > #, no-wrap > msgid "14." > msgstr "14." > > #. type: Plain text >-#: ../src/xz/xz.1:2023 >+#: ../src/xz/xz.1:2238 > msgid "" > "Size of the actual compressed data in the block (this excludes the block " > "header, block padding, and check fields)" >@@ -3850,13 +4096,13 @@ > "hierbei die Block-Header, die Blockauffüllung und die Prüffelder." > > #. type: IP >-#: ../src/xz/xz.1:2023 >+#: ../src/xz/xz.1:2238 > #, no-wrap > msgid "15." > msgstr "15." > > #. type: Plain text >-#: ../src/xz/xz.1:2028 >+#: ../src/xz/xz.1:2243 > msgid "" > "Amount of memory (in bytes) required to decompress this block with this " > "B<xz> version" >@@ -3865,13 +4111,13 @@ > "dieser B<xz>-Version benötigt wird." > > #. type: IP >-#: ../src/xz/xz.1:2028 >+#: ../src/xz/xz.1:2243 > #, no-wrap > msgid "16." > msgstr "16." > > #. type: Plain text >-#: ../src/xz/xz.1:2035 >+#: ../src/xz/xz.1:2250 > msgid "" > "Filter chain. Note that most of the options used at compression time cannot " > "be known, because only the options that are needed for decompression are " >@@ -3882,12 +4128,12 @@ > "die für die Dekompression erforderlichen Optionen gespeichert sind." > > #. type: Plain text >-#: ../src/xz/xz.1:2041 >+#: ../src/xz/xz.1:2256 > msgid "The columns of the B<summary> lines:" > msgstr "Die Spalten der B<summary>-Zeilen:" > > #. type: Plain text >-#: ../src/xz/xz.1:2048 >+#: ../src/xz/xz.1:2263 > msgid "" > "Amount of memory (in bytes) required to decompress this file with this B<xz> " > "version" >@@ -3896,7 +4142,7 @@ > "dieser B<xz>-Version benötigt wird." > > #. type: Plain text >-#: ../src/xz/xz.1:2054 ../src/xz/xz.1:2112 >+#: ../src/xz/xz.1:2269 ../src/xz/xz.1:2327 > msgid "" > "B<yes> or B<no> indicating if all block headers have both compressed size " > "and uncompressed size stored in them" >@@ -3905,43 +4151,43 @@ > "komprimierte als auch die unkomprimierte GröÃe gespeichert ist." > > #. type: Plain text >-#: ../src/xz/xz.1:2058 ../src/xz/xz.1:2116 >+#: ../src/xz/xz.1:2273 ../src/xz/xz.1:2331 > msgid "I<Since> B<xz> I<5.1.2alpha:>" > msgstr "I<Seit> B<xz> I<5.1.2alpha:>" > > #. type: Plain text >-#: ../src/xz/xz.1:2062 ../src/xz/xz.1:2120 >+#: ../src/xz/xz.1:2277 ../src/xz/xz.1:2335 > msgid "Minimum B<xz> version required to decompress the file" > msgstr "" > "Minimale B<xz>-Version, die zur Dekompression der Datei erforderlich ist" > > #. type: Plain text >-#: ../src/xz/xz.1:2068 >+#: ../src/xz/xz.1:2283 > msgid "The columns of the B<totals> line:" > msgstr "Die Spalten der B<totals>-Zeile:" > > #. type: Plain text >-#: ../src/xz/xz.1:2072 >+#: ../src/xz/xz.1:2287 > msgid "Number of streams" > msgstr "Anzahl der Datenströme" > > #. type: Plain text >-#: ../src/xz/xz.1:2074 >+#: ../src/xz/xz.1:2289 > msgid "Number of blocks" > msgstr "Anzahl der Blöcke" > > #. type: Plain text >-#: ../src/xz/xz.1:2076 >+#: ../src/xz/xz.1:2291 > msgid "Compressed size" > msgstr "Komprimierte GröÃe" > > #. type: Plain text >-#: ../src/xz/xz.1:2080 >+#: ../src/xz/xz.1:2295 > msgid "Average compression ratio" > msgstr "Durchschnittliches Kompressionsverhältnis" > > #. type: Plain text >-#: ../src/xz/xz.1:2083 >+#: ../src/xz/xz.1:2298 > msgid "" > "Comma-separated list of integrity check names that were present in the files" > msgstr "" >@@ -3949,12 +4195,12 @@ > "Dateien präsent waren." > > #. type: Plain text >-#: ../src/xz/xz.1:2085 >+#: ../src/xz/xz.1:2300 > msgid "Stream padding size" > msgstr "GröÃe der Datenstromauffüllung" > > #. type: Plain text >-#: ../src/xz/xz.1:2091 >+#: ../src/xz/xz.1:2306 > msgid "" > "Number of files. This is here to keep the order of the earlier columns the " > "same as on B<file> lines." >@@ -3963,7 +4209,7 @@ > "die in den B<file>-Zeilen anzugleichen." > > #. type: Plain text >-#: ../src/xz/xz.1:2099 >+#: ../src/xz/xz.1:2314 > msgid "" > "If B<--verbose> was specified twice, additional columns are included on the " > "B<totals> line:" >@@ -3972,7 +4218,7 @@ > "B<totals>-Zeile eingefügt:" > > #. type: Plain text >-#: ../src/xz/xz.1:2106 >+#: ../src/xz/xz.1:2321 > msgid "" > "Maximum amount of memory (in bytes) required to decompress the files with " > "this B<xz> version" >@@ -3981,7 +4227,7 @@ > "mit dieser B<xz>-Version benötigt wird." > > #. type: Plain text >-#: ../src/xz/xz.1:2126 >+#: ../src/xz/xz.1:2341 > msgid "" > "Future versions may add new line types and new columns can be added to the " > "existing line types, but the existing columns won't be changed." >@@ -3991,48 +4237,49 @@ > "die existierenden Spalten werden nicht geändert." > > #. type: SH >-#: ../src/xz/xz.1:2127 ../src/xzdec/xzdec.1:104 ../src/lzmainfo/lzmainfo.1:44 >+#: ../src/xz/xz.1:2342 ../src/xzdec/xzdec.1:104 ../src/lzmainfo/lzmainfo.1:44 >+#: ../src/scripts/xzgrep.1:81 > #, no-wrap > msgid "EXIT STATUS" > msgstr "EXIT-STATUS" > > #. type: TP >-#: ../src/xz/xz.1:2128 ../src/xzdec/xzdec.1:105 ../src/lzmainfo/lzmainfo.1:45 >+#: ../src/xz/xz.1:2343 ../src/xzdec/xzdec.1:105 ../src/lzmainfo/lzmainfo.1:45 > #, no-wrap > msgid "B<0>" > msgstr "B<0>" > > #. type: Plain text >-#: ../src/xz/xz.1:2131 ../src/lzmainfo/lzmainfo.1:48 >+#: ../src/xz/xz.1:2346 ../src/lzmainfo/lzmainfo.1:48 > msgid "All is good." > msgstr "Alles ist in Ordnung." > > #. type: TP >-#: ../src/xz/xz.1:2131 ../src/xzdec/xzdec.1:108 ../src/lzmainfo/lzmainfo.1:48 >+#: ../src/xz/xz.1:2346 ../src/xzdec/xzdec.1:108 ../src/lzmainfo/lzmainfo.1:48 > #, no-wrap > msgid "B<1>" > msgstr "B<1>" > > #. type: Plain text >-#: ../src/xz/xz.1:2134 ../src/xzdec/xzdec.1:111 ../src/lzmainfo/lzmainfo.1:51 >+#: ../src/xz/xz.1:2349 ../src/xzdec/xzdec.1:111 ../src/lzmainfo/lzmainfo.1:51 > msgid "An error occurred." > msgstr "Ein Fehler ist aufgetreten." > > #. type: TP >-#: ../src/xz/xz.1:2134 >+#: ../src/xz/xz.1:2349 > #, no-wrap > msgid "B<2>" > msgstr "B<2>" > > #. type: Plain text >-#: ../src/xz/xz.1:2138 >+#: ../src/xz/xz.1:2353 > msgid "Something worth a warning occurred, but no actual errors occurred." > msgstr "" > "Es ist etwas passiert, das eine Warnung rechtfertigt, aber es sind keine " > "tatsächlichen Fehler aufgetreten." > > #. type: Plain text >-#: ../src/xz/xz.1:2141 >+#: ../src/xz/xz.1:2356 > msgid "" > "Notices (not warnings or errors) printed on standard error don't affect the " > "exit status." >@@ -4041,13 +4288,13 @@ > "welche den Exit-Status nicht beeinflussen." > > #. type: SH >-#: ../src/xz/xz.1:2142 ../src/scripts/xzgrep.1:80 ../src/scripts/xzless.1:52 >+#: ../src/xz/xz.1:2357 ../src/scripts/xzgrep.1:94 ../src/scripts/xzless.1:52 > #, no-wrap > msgid "ENVIRONMENT" > msgstr "UMGEBUNGSVARIABLEN" > > #. type: Plain text >-#: ../src/xz/xz.1:2155 >+#: ../src/xz/xz.1:2370 > msgid "" > "B<xz> parses space-separated lists of options from the environment variables " > "B<XZ_DEFAULTS> and B<XZ_OPT>, in this order, before parsing the options from " >@@ -4064,13 +4311,13 @@ > "die Befehlszeilenargumente verwendet wird." > > #. type: TP >-#: ../src/xz/xz.1:2155 >+#: ../src/xz/xz.1:2370 > #, no-wrap > msgid "B<XZ_DEFAULTS>" > msgstr "B<XZ_DEFAULTS>" > > #. type: Plain text >-#: ../src/xz/xz.1:2164 >+#: ../src/xz/xz.1:2379 > msgid "" > "User-specific or system-wide default options. Typically this is set in a " > "shell initialization script to enable B<xz>'s memory usage limiter by " >@@ -4085,36 +4332,36 @@ > "werden." > > #. type: TP >-#: ../src/xz/xz.1:2164 >+#: ../src/xz/xz.1:2379 > #, no-wrap > msgid "B<XZ_OPT>" > msgstr "B<XZ_OPT>" > > #. type: Plain text >-#: ../src/xz/xz.1:2175 >+#: ../src/xz/xz.1:2390 > msgid "" > "This is for passing options to B<xz> when it is not possible to set the " >-"options directly on the B<xz> command line. This is the case e.g. when " >-"B<xz> is run by a script or tool, e.g. GNU B<tar>(1):" >+"options directly on the B<xz> command line. This is the case when B<xz> is " >+"run by a script or tool, for example, GNU B<tar>(1):" > msgstr "" > "Dies dient der Ãbergabe von Optionen an B<xz>, wenn es nicht möglich ist, " >-"die Optionen direkt in der Befehlszeile von B<xz> zu übergeben. Dies ist " >-"beispielsweise der Fall, wenn B<xz> von einem Skript oder Dienstprogramm " >-"ausgeführt wird, zum Beispiel GNU B<tar>(1):" >+"die Optionen direkt in der Befehlszeile von B<xz> zu übergeben. Dies ist der " >+"Fall, wenn B<xz> von einem Skript oder Dienstprogramm ausgeführt wird, zum " >+"Beispiel GNU B<tar>(1):" > > #. type: Plain text >-#: ../src/xz/xz.1:2181 >+#: ../src/xz/xz.1:2396 > #, no-wrap > msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n" > msgstr "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2194 >+#: ../src/xz/xz.1:2410 > msgid "" >-"Scripts may use B<XZ_OPT> e.g. to set script-specific default compression " >-"options. It is still recommended to allow users to override B<XZ_OPT> if " >-"that is reasonable, e.g. in B<sh>(1) scripts one may use something like " >-"this:" >+"Scripts may use B<XZ_OPT>, for example, to set script-specific default " >+"compression options. It is still recommended to allow users to override " >+"B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may " >+"use something like this:" > msgstr "" > "Skripte können B<XZ_OPT> zum Beispiel zum Setzen skriptspezifischer Standard-" > "Kompressionsoptionen verwenden. Es ist weiterhin empfehlenswert, Benutzern " >@@ -4122,7 +4369,7 @@ > "Zum Beispiel könnte in B<sh>(1)-Skripten Folgendes stehen:" > > #. type: Plain text >-#: ../src/xz/xz.1:2201 >+#: ../src/xz/xz.1:2417 > #, no-wrap > msgid "" > "CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n" >@@ -4132,13 +4379,13 @@ > "export XZ_OPT>\n" > > #. type: SH >-#: ../src/xz/xz.1:2206 >+#: ../src/xz/xz.1:2422 > #, no-wrap > msgid "LZMA UTILS COMPATIBILITY" > msgstr "KOMPATIBILITÃT ZU DEN LZMA-UTILS" > > #. type: Plain text >-#: ../src/xz/xz.1:2219 >+#: ../src/xz/xz.1:2435 > msgid "" > "The command line syntax of B<xz> is practically a superset of B<lzma>, " > "B<unlzma>, and B<lzcat> as found from LZMA Utils 4.32.x. In most cases, it " >@@ -4153,13 +4400,13 @@ > "einige Inkompatibilitäten, die manchmal Probleme verursachen können." > > #. type: SS >-#: ../src/xz/xz.1:2220 >+#: ../src/xz/xz.1:2436 > #, no-wrap > msgid "Compression preset levels" > msgstr "Voreinstellungsstufen zur Kompression" > > #. type: Plain text >-#: ../src/xz/xz.1:2227 >+#: ../src/xz/xz.1:2443 > msgid "" > "The numbering of the compression level presets is not identical in B<xz> and " > "LZMA Utils. The most important difference is how dictionary sizes are " >@@ -4172,43 +4419,43 @@ > "WörterbuchgröÃe ist etwa gleich dem Speicherbedarf bei der Dekompression." > > #. type: tbl table >-#: ../src/xz/xz.1:2233 ../src/xz/xz.1:2258 >+#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474 > #, no-wrap > msgid "Level" > msgstr "Stufe" > > #. type: tbl table >-#: ../src/xz/xz.1:2233 ../src/xz/xz.1:2258 >+#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474 > #, no-wrap > msgid "xz" > msgstr "xz" > > #. type: tbl table >-#: ../src/xz/xz.1:2233 >+#: ../src/xz/xz.1:2449 > #, no-wrap > msgid "LZMA Utils" > msgstr "LZMA-Utils" > > #. type: tbl table >-#: ../src/xz/xz.1:2234 ../src/xz/xz.1:2259 >+#: ../src/xz/xz.1:2450 ../src/xz/xz.1:2475 > #, no-wrap > msgid "N/A" > msgstr "nicht verfügbar" > > #. type: tbl table >-#: ../src/xz/xz.1:2235 >+#: ../src/xz/xz.1:2451 > #, no-wrap > msgid "64 KiB" > msgstr "64 KiB" > > #. type: tbl table >-#: ../src/xz/xz.1:2237 >+#: ../src/xz/xz.1:2453 > #, no-wrap > msgid "512 KiB" > msgstr "512 KiB" > > #. type: Plain text >-#: ../src/xz/xz.1:2252 >+#: ../src/xz/xz.1:2468 > msgid "" > "The dictionary size differences affect the compressor memory usage too, but " > "there are some other differences between LZMA Utils and XZ Utils, which make " >@@ -4219,49 +4466,49 @@ > "den LZMA-Utils und den XZ-Utils, die die Kluft noch vergröÃern:" > > #. type: tbl table >-#: ../src/xz/xz.1:2258 >+#: ../src/xz/xz.1:2474 > #, no-wrap > msgid "LZMA Utils 4.32.x" > msgstr "LZMA-Utils 4.32.x" > > #. type: tbl table >-#: ../src/xz/xz.1:2261 ../src/xz/xz.1:2262 >+#: ../src/xz/xz.1:2477 ../src/xz/xz.1:2478 > #, no-wrap > msgid "12 MiB" > msgstr "12 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:2264 >+#: ../src/xz/xz.1:2480 > #, no-wrap > msgid "26 MiB" > msgstr "26 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:2265 >+#: ../src/xz/xz.1:2481 > #, no-wrap > msgid "45 MiB" > msgstr "45 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:2266 >+#: ../src/xz/xz.1:2482 > #, no-wrap > msgid "83 MiB" > msgstr "83 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:2267 >+#: ../src/xz/xz.1:2483 > #, no-wrap > msgid "159 MiB" > msgstr "159 MiB" > > #. type: tbl table >-#: ../src/xz/xz.1:2268 >+#: ../src/xz/xz.1:2484 > #, no-wrap > msgid "311 MiB" > msgstr "311 MiB" > > #. type: Plain text >-#: ../src/xz/xz.1:2277 >+#: ../src/xz/xz.1:2493 > msgid "" > "The default preset level in LZMA Utils is B<-7> while in XZ Utils it is " > "B<-6>, so both use an 8 MiB dictionary by default." >@@ -4271,19 +4518,19 @@ > "MiB groÃes Wörterbuch." > > #. type: SS >-#: ../src/xz/xz.1:2278 >+#: ../src/xz/xz.1:2494 > #, no-wrap > msgid "Streamed vs. non-streamed .lzma files" > msgstr "Vor- und Nachteile von .lzma-Dateien als Datenströme" > > #. type: Plain text >-#: ../src/xz/xz.1:2288 >+#: ../src/xz/xz.1:2504 > msgid "" > "The uncompressed size of the file can be stored in the B<.lzma> header. " > "LZMA Utils does that when compressing regular files. The alternative is to " > "mark that uncompressed size is unknown and use end-of-payload marker to " > "indicate where the decompressor should stop. LZMA Utils uses this method " >-"when uncompressed size isn't known, which is the case for example in pipes." >+"when uncompressed size isn't known, which is the case, for example, in pipes." > msgstr "" > "Die unkomprimierte GröÃe der Datei kann in den B<.lzma>-Headern gespeichert " > "werden. Die LZMA-Utils tun das beim Komprimieren gewöhnlicher Dateien. Als " >@@ -4294,7 +4541,7 @@ > "(Befehlsverkettungen) der Fall ist." > > #. type: Plain text >-#: ../src/xz/xz.1:2309 >+#: ../src/xz/xz.1:2525 > msgid "" > "B<xz> supports decompressing B<.lzma> files with or without end-of-payload " > "marker, but all B<.lzma> files created by B<xz> will use end-of-payload " >@@ -4315,13 +4562,13 @@ > "lzma>-Dateien mit bekannter unkomprimierter GröÃe zu erzeugen." > > #. type: SS >-#: ../src/xz/xz.1:2310 >+#: ../src/xz/xz.1:2526 > #, no-wrap > msgid "Unsupported .lzma files" > msgstr "Nicht unterstützte .lzma-Dateien" > > #. type: Plain text >-#: ../src/xz/xz.1:2333 >+#: ../src/xz/xz.1:2549 > msgid "" > "The B<.lzma> format allows I<lc> values up to 8, and I<lp> values up to 4. " > "LZMA Utils can decompress files with any I<lc> and I<lp>, but always creates " >@@ -4335,7 +4582,7 @@ > "möglich." > > #. type: Plain text >-#: ../src/xz/xz.1:2344 >+#: ../src/xz/xz.1:2560 > msgid "" > "The implementation of the LZMA1 filter in liblzma requires that the sum of " > "I<lc> and I<lp> must not exceed 4. Thus, B<.lzma> files, which exceed this " >@@ -4346,7 +4593,7 @@ > "welche diese Begrenzung überschreiten, mit B<xz> nicht dekomprimiert werden." > > #. type: Plain text >-#: ../src/xz/xz.1:2359 >+#: ../src/xz/xz.1:2575 > msgid "" > "LZMA Utils creates only B<.lzma> files which have a dictionary size of " > "2^I<n> (a power of 2) but accepts files with any dictionary size. liblzma " >@@ -4361,7 +4608,7 @@ > "Verringern von Fehlalarmen beim Erkennen von B<.lzma>-Dateien." > > #. type: Plain text >-#: ../src/xz/xz.1:2364 >+#: ../src/xz/xz.1:2580 > msgid "" > "These limitations shouldn't be a problem in practice, since practically all " > "B<.lzma> files have been compressed with settings that liblzma will accept." >@@ -4371,13 +4618,13 @@ > "akzeptieren wird." > > #. type: SS >-#: ../src/xz/xz.1:2365 >+#: ../src/xz/xz.1:2581 > #, no-wrap > msgid "Trailing garbage" > msgstr "Angehängter Datenmüll" > > #. type: Plain text >-#: ../src/xz/xz.1:2375 >+#: ../src/xz/xz.1:2591 > msgid "" > "When decompressing, LZMA Utils silently ignore everything after the first B<." > "lzma> stream. In most situations, this is a bug. This also means that LZMA " >@@ -4389,7 +4636,7 @@ > "B<.lzma>-Dateien nicht unterstützen." > > #. type: Plain text >-#: ../src/xz/xz.1:2385 >+#: ../src/xz/xz.1:2601 > msgid "" > "If there is data left after the first B<.lzma> stream, B<xz> considers the " > "file to be corrupt unless B<--single-stream> was used. This may break " >@@ -4401,19 +4648,19 @@ > "ausgehen, dass angehängter Datenmüll ignoriert wird." > > #. type: SH >-#: ../src/xz/xz.1:2386 ../src/xzdec/xzdec.1:117 >+#: ../src/xz/xz.1:2602 ../src/xzdec/xzdec.1:117 > #, no-wrap > msgid "NOTES" > msgstr "ANMERKUNGEN" > > #. type: SS >-#: ../src/xz/xz.1:2388 >+#: ../src/xz/xz.1:2604 > #, no-wrap > msgid "Compressed output may vary" > msgstr "Die komprimierte Ausgabe kann variieren" > > #. type: Plain text >-#: ../src/xz/xz.1:2399 >+#: ../src/xz/xz.1:2615 > msgid "" > "The exact compressed output produced from the same uncompressed input file " > "may vary between XZ Utils versions even if compression options are " >@@ -4432,7 +4679,7 @@ > "Binärprogramms unterschiedliche Optionen verwendet wurden." > > #. type: Plain text >-#: ../src/xz/xz.1:2409 >+#: ../src/xz/xz.1:2625 > msgid "" > "The above means that once B<--rsyncable> has been implemented, the resulting " > "files won't necessarily be rsyncable unless both old and new files have been " >@@ -4448,13 +4695,13 @@ > "B<xz>-Versionsgrenzen hinweg stabil zu halten." > > #. type: SS >-#: ../src/xz/xz.1:2410 >+#: ../src/xz/xz.1:2626 > #, no-wrap > msgid "Embedded .xz decompressors" > msgstr "Eingebettete .xz-Dekompressoren" > > #. type: Plain text >-#: ../src/xz/xz.1:2427 >+#: ../src/xz/xz.1:2643 > msgid "" > "Embedded B<.xz> decompressor implementations like XZ Embedded don't " > "necessarily support files created with integrity I<check> types other than " >@@ -4468,7 +4715,7 @@ > "check=crc32> verwenden, wenn Sie Dateien für eingebettete Systeme erstellen." > > #. type: Plain text >-#: ../src/xz/xz.1:2437 >+#: ../src/xz/xz.1:2653 > msgid "" > "Outside embedded systems, all B<.xz> format decompressors support all the " > "I<check> types, or at least are able to decompress the file without " >@@ -4480,7 +4727,7 @@ > "I<Prüfung> nicht verfügbar ist." > > #. type: Plain text >-#: ../src/xz/xz.1:2440 >+#: ../src/xz/xz.1:2656 > msgid "" > "XZ Embedded supports BCJ filters, but only with the default start offset." > msgstr "" >@@ -4488,19 +4735,19 @@ > "Startversatz." > > #. type: SH >-#: ../src/xz/xz.1:2441 >+#: ../src/xz/xz.1:2657 > #, no-wrap > msgid "EXAMPLES" > msgstr "BEISPIELE" > > #. type: SS >-#: ../src/xz/xz.1:2443 >+#: ../src/xz/xz.1:2659 > #, no-wrap > msgid "Basics" > msgstr "Grundlagen" > > #. type: Plain text >-#: ../src/xz/xz.1:2453 >+#: ../src/xz/xz.1:2669 > msgid "" > "Compress the file I<foo> into I<foo.xz> using the default compression level " > "(B<-6>), and remove I<foo> if compression is successful:" >@@ -4509,13 +4756,13 @@ > "I<foo.xz> und entfernt I<foo> nach erfolgreicher Kompression:" > > #. type: Plain text >-#: ../src/xz/xz.1:2458 >+#: ../src/xz/xz.1:2674 > #, no-wrap > msgid "CW<xz foo>\n" > msgstr "CW<xz foo>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2469 >+#: ../src/xz/xz.1:2685 > msgid "" > "Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if " > "decompression is successful:" >@@ -4524,31 +4771,30 @@ > "wenn die Dekompression erfolgreich war:" > > #. type: Plain text >-#: ../src/xz/xz.1:2474 >+#: ../src/xz/xz.1:2690 > #, no-wrap > msgid "CW<xz -dk bar.xz>\n" > msgstr "CW<xz -dk bar.xz>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2487 >+#: ../src/xz/xz.1:2703 > msgid "" > "Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is " >-"slower than e.g. the default B<-6>, but needs less memory for compression " >-"and decompression (48\\ MiB and 5\\ MiB, respectively):" >+"slower than the default B<-6>, but needs less memory for compression and " >+"decompression (48\\ MiB and 5\\ MiB, respectively):" > msgstr "" > "I<baz.tar.xz> mit der Voreinstellung B<-4e> (B<-4 --extreme>) erzeugen, was " >-"langsamer ist als beispielsweise die Vorgabe B<-6>, aber weniger Speicher " >-"für Kompression und Dekompression benötigt (48\\ MiB beziehungsweise 5\\ " >-"MiB):" >+"langsamer ist als die Vorgabe B<-6>, aber weniger Speicher für Kompression " >+"und Dekompression benötigt (48\\ MiB beziehungsweise 5\\ MiB):" > > #. type: Plain text >-#: ../src/xz/xz.1:2492 >+#: ../src/xz/xz.1:2708 > #, no-wrap > msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n" > msgstr "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2498 >+#: ../src/xz/xz.1:2714 > msgid "" > "A mix of compressed and uncompressed files can be decompressed to standard " > "output with a single command:" >@@ -4557,19 +4803,19 @@ > "einzelnen Befehl dekomprimiert in die Standardausgabe geschrieben werden:" > > #. type: Plain text >-#: ../src/xz/xz.1:2503 >+#: ../src/xz/xz.1:2719 > #, no-wrap > msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n" > msgstr "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n" > > #. type: SS >-#: ../src/xz/xz.1:2507 >+#: ../src/xz/xz.1:2723 > #, no-wrap > msgid "Parallel compression of many files" > msgstr "Parallele Kompression von vielen Dateien" > > #. type: Plain text >-#: ../src/xz/xz.1:2513 >+#: ../src/xz/xz.1:2729 > msgid "" > "On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize " > "compression of many files:" >@@ -4578,7 +4824,7 @@ > "Parallelisieren der Kompression vieler Dateien verwendet werden:" > > #. type: Plain text >-#: ../src/xz/xz.1:2519 >+#: ../src/xz/xz.1:2735 > #, no-wrap > msgid "" > "CW<find . -type f \\e! -name '*.xz' -print0 \\e\n" >@@ -4588,7 +4834,7 @@ > " | xargs -0r -P4 -n16 xz -T1>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2541 >+#: ../src/xz/xz.1:2757 > msgid "" > "The B<-P> option to B<xargs>(1) sets the number of parallel B<xz> " > "processes. The best value for the B<-n> option depends on how many files " >@@ -4605,7 +4851,7 @@ > "Prozesse zu beschränken, die B<xargs>(1) schlieÃlich erzeugen wird." > > #. type: Plain text >-#: ../src/xz/xz.1:2549 >+#: ../src/xz/xz.1:2765 > msgid "" > "The option B<-T1> for B<xz> is there to force it to single-threaded mode, " > "because B<xargs>(1) is used to control the amount of parallelization." >@@ -4614,13 +4860,13 @@ > "da B<xargs>(1) zur Steuerung des Umfangs der Parallelisierung verwendet wird." > > #. type: SS >-#: ../src/xz/xz.1:2550 >+#: ../src/xz/xz.1:2766 > #, no-wrap > msgid "Robot mode" > msgstr "Roboter-Modus" > > #. type: Plain text >-#: ../src/xz/xz.1:2553 >+#: ../src/xz/xz.1:2769 > msgid "" > "Calculate how many bytes have been saved in total after compressing multiple " > "files:" >@@ -4629,13 +4875,13 @@ > "eingespart wurden:" > > #. type: Plain text >-#: ../src/xz/xz.1:2558 >+#: ../src/xz/xz.1:2774 > #, no-wrap > msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n" > msgstr "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2573 >+#: ../src/xz/xz.1:2789 > msgid "" > "A script may want to know that it is using new enough B<xz>. The following " > "B<sh>(1) script checks that the version number of the B<xz> tool is at " >@@ -4648,7 +4894,7 @@ > "Versionen kompatibel, welche die Option B<--robot> nicht unterstützen:" > > #. type: Plain text >-#: ../src/xz/xz.1:2582 >+#: ../src/xz/xz.1:2798 > #, no-wrap > msgid "" > "CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n" >@@ -4664,7 +4910,7 @@ > "unset XZ_VERSION LIBLZMA_VERSION>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2589 >+#: ../src/xz/xz.1:2805 > msgid "" > "Set a memory usage limit for decompression using B<XZ_OPT>, but if a limit " > "has already been set, don't increase it:" >@@ -4673,17 +4919,17 @@ > "aber eine bereits gesetzte Begrenzung nicht erhöhen:" > > #. type: Plain text >-#: ../src/xz/xz.1:2599 >+#: ../src/xz/xz.1:2815 > #, no-wrap > msgid "" >-"CW<NEWLIM=$((123 E<lt>E<lt> 20)) # 123 MiB\n" >+"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n" > "OLDLIM=$(xz --robot --info-memory | cut -f3)\n" > "if [ $OLDLIM -eq 0 -o $OLDLIM -gt $NEWLIM ]; then\n" > " XZ_OPT=\"$XZ_OPT --memlimit-decompress=$NEWLIM\"\n" > " export XZ_OPT\n" > "fi>\n" > msgstr "" >-"CW<NEWLIM=$((123 E<lt>E<lt> 20)) # 123 MiB\n" >+"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n" > "OLDLIM=$(xz --robot --info-memory | cut -f3)\n" > "if [ $OLDLIM -eq 0 -o $OLDLIM -gt $NEWLIM ]; then\n" > " XZ_OPT=\"$XZ_OPT --memlimit-decompress=$NEWLIM\"\n" >@@ -4691,7 +4937,7 @@ > "fi>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2609 >+#: ../src/xz/xz.1:2825 > msgid "" > "The simplest use for custom filter chains is customizing a LZMA2 preset. " > "This can be useful, because the presets cover only a subset of the " >@@ -4703,7 +4949,7 @@ > "Kompressionseinstellungen abdecken." > > #. type: Plain text >-#: ../src/xz/xz.1:2617 >+#: ../src/xz/xz.1:2833 > msgid "" > "The CompCPU columns of the tables from the descriptions of the options " > "B<-0> ... B<-9> and B<--extreme> are useful when customizing LZMA2 presets. " >@@ -4714,12 +4960,12 @@ > "nützlich. Diese sind die relevanten Teile aus diesen zwei Tabellen:" > > #. type: Plain text >-#: ../src/xz/xz.1:2642 >+#: ../src/xz/xz.1:2858 > msgid "" >-"If you know that a file requires somewhat big dictionary (e.g. 32 MiB) to " >-"compress well, but you want to compress it quicker than B<xz -8> would do, a " >-"preset with a low CompCPU value (e.g. 1) can be modified to use a bigger " >-"dictionary:" >+"If you know that a file requires somewhat big dictionary (for example, 32\\ " >+"MiB) to compress well, but you want to compress it quicker than B<xz -8> " >+"would do, a preset with a low CompCPU value (for example, 1) can be " >+"modified to use a bigger dictionary:" > msgstr "" > "Wenn Sie wissen, dass eine Datei für eine gute Kompression ein etwas " > "gröÃeres Wörterbuch benötigt (zum Beispiel 32 MiB), aber Sie sie schneller " >@@ -4728,13 +4974,13 @@ > "angepasst werden, ein gröÃeres Wörterbuch zu verwenden:" > > #. type: Plain text >-#: ../src/xz/xz.1:2647 >+#: ../src/xz/xz.1:2863 > #, no-wrap > msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n" > msgstr "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2663 >+#: ../src/xz/xz.1:2879 > msgid "" > "With certain files, the above command may be faster than B<xz -6> while " > "compressing significantly better. However, it must be emphasized that only " >@@ -4756,7 +5002,7 @@ > "folgenden Dateien zieht." > > #. type: Plain text >-#: ../src/xz/xz.1:2670 >+#: ../src/xz/xz.1:2886 > msgid "" > "If very high compressor and decompressor memory usage is fine, and the file " > "being compressed is at least several hundred megabytes, it may be useful to " >@@ -4768,13 +5014,13 @@ > "MiB, die mit B<xz -9> verwendet werden würden:" > > #. type: Plain text >-#: ../src/xz/xz.1:2675 >+#: ../src/xz/xz.1:2891 > #, no-wrap > msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n" > msgstr "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2688 >+#: ../src/xz/xz.1:2904 > msgid "" > "Using B<-vv> (B<--verbose --verbose>) like in the above example can be " > "useful to see the memory requirements of the compressor and decompressor. " >@@ -4788,14 +5034,14 @@ > "Befehl für kleine Dateien nicht sinnvoll." > > #. type: Plain text >-#: ../src/xz/xz.1:2701 >+#: ../src/xz/xz.1:2916 > msgid "" > "Sometimes the compression time doesn't matter, but the decompressor memory " >-"usage has to be kept low e.g. to make it possible to decompress the file on " >-"an embedded system. The following command uses B<-6e> (B<-6 --extreme>) as " >-"a base and sets the dictionary to only 64\\ KiB. The resulting file can be " >-"decompressed with XZ Embedded (that's why there is B<--check=crc32>) using " >-"about 100\\ KiB of memory." >+"usage has to be kept low, for example, to make it possible to decompress the " >+"file on an embedded system. The following command uses B<-6e> (B<-6 --" >+"extreme>) as a base and sets the dictionary to only 64\\ KiB. The " >+"resulting file can be decompressed with XZ Embedded (that's why there is B<--" >+"check=crc32>) using about 100\\ KiB of memory." > msgstr "" > "Manchmal spielt die Kompressionszeit keine Rolle, aber der Speicherbedarf " > "bei der Dekompression muss gering gehalten werden, zum Beispiel um die Datei " >@@ -4806,21 +5052,21 @@ > "dekomprimiert werden." > > #. type: Plain text >-#: ../src/xz/xz.1:2706 >+#: ../src/xz/xz.1:2921 > #, no-wrap > msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n" > msgstr "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2729 >+#: ../src/xz/xz.1:2944 > msgid "" > "If you want to squeeze out as many bytes as possible, adjusting the number " > "of literal context bits (I<lc>) and number of position bits (I<pb>) can " > "sometimes help. Adjusting the number of literal position bits (I<lp>) " >-"might help too, but usually I<lc> and I<pb> are more important. E.g. a " >-"source code archive contains mostly US-ASCII text, so something like the " >-"following might give slightly (like 0.1\\ %) smaller file than B<xz -6e> " >-"(try also without B<lc=4>):" >+"might help too, but usually I<lc> and I<pb> are more important. For " >+"example, a source code archive contains mostly US-ASCII text, so something " >+"like the following might give slightly (like 0.1\\ %) smaller file than B<xz " >+"-6e> (try also without B<lc=4>):" > msgstr "" > "Wenn Sie so viele Byte wie möglich herausquetschen wollen, kann die " > "Anpassung der Anzahl der literalen Kontextbits (I<lc>) und der Anzahl der " >@@ -4832,17 +5078,17 @@ > "es auch B<lc=4>):" > > #. type: Plain text >-#: ../src/xz/xz.1:2734 >+#: ../src/xz/xz.1:2949 > #, no-wrap > msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n" > msgstr "CW<xz --lzma2=preset=6e,pb=0,lc=4 Quellcode.tar>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2742 >+#: ../src/xz/xz.1:2957 > msgid "" > "Using another filter together with LZMA2 can improve compression with " >-"certain file types. E.g. to compress a x86-32 or x86-64 shared library " >-"using the x86 BCJ filter:" >+"certain file types. For example, to compress a x86-32 or x86-64 shared " >+"library using the x86 BCJ filter:" > msgstr "" > "Die Verwendung eines anderen Filters mit LZMA2 kann die Kompression bei " > "verschiedenen Dateitypen verbessern. So könnten Sie eine gemeinsam genutzte " >@@ -4850,13 +5096,13 @@ > "komprimieren:" > > #. type: Plain text >-#: ../src/xz/xz.1:2747 >+#: ../src/xz/xz.1:2962 > #, no-wrap > msgid "CW<xz --x86 --lzma2 libfoo.so>\n" > msgstr "CW<xz --x86 --lzma2 libfoo.so>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2761 >+#: ../src/xz/xz.1:2976 > msgid "" > "Note that the order of the filter options is significant. If B<--x86> is " > "specified after B<--lzma2>, B<xz> will give an error, because there cannot " >@@ -4869,7 +5115,7 @@ > "für x86 nicht als letzter Filter in der Filterkette gesetzt werden darf." > > #. type: Plain text >-#: ../src/xz/xz.1:2767 >+#: ../src/xz/xz.1:2982 > msgid "" > "The Delta filter together with LZMA2 can give good results with bitmap " > "images. It should usually beat PNG, which has a few more advanced filters " >@@ -4881,13 +5127,13 @@ > "eigentliche Kompression »Deflate« verwendet." > > #. type: Plain text >-#: ../src/xz/xz.1:2777 >+#: ../src/xz/xz.1:2992 > msgid "" >-"The image has to be saved in uncompressed format, e.g. as uncompressed " >-"TIFF. The distance parameter of the Delta filter is set to match the number " >-"of bytes per pixel in the image. E.g. 24-bit RGB bitmap needs B<dist=3>, " >-"and it is also good to pass B<pb=0> to LZMA2 to accommodate the three-byte " >-"alignment:" >+"The image has to be saved in uncompressed format, for example, as " >+"uncompressed TIFF. The distance parameter of the Delta filter is set to " >+"match the number of bytes per pixel in the image. For example, 24-bit RGB " >+"bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to " >+"accommodate the three-byte alignment:" > msgstr "" > "Das Bild muss in einem unkomprimierten Format gespeichert werden, zum " > "Beispiel als unkomprimiertes TIFF. Der Abstandsparameter des Delta-Filters " >@@ -4897,32 +5143,32 @@ > "berücksichtigen:" > > #. type: Plain text >-#: ../src/xz/xz.1:2782 >+#: ../src/xz/xz.1:2997 > #, no-wrap > msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n" > msgstr "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n" > > #. type: Plain text >-#: ../src/xz/xz.1:2790 >+#: ../src/xz/xz.1:3005 > msgid "" >-"If multiple images have been put into a single archive (e.g.\\& B<.tar>), " >-"the Delta filter will work on that too as long as all images have the same " >-"number of bytes per pixel." >+"If multiple images have been put into a single archive (for example, B<." >+"tar>), the Delta filter will work on that too as long as all images have the " >+"same number of bytes per pixel." > msgstr "" > "Wenn sich mehrere Bilder in einem einzelnen Archiv befinden (zum Beispiel\\& " > "B<.tar>), funktioniert der Delta-Filter damit auch, sofern alle Bilder im " > "Archiv die gleiche Anzahl Bytes pro Pixel haben." > > #. type: SH >-#: ../src/xz/xz.1:2791 ../src/xzdec/xzdec.1:143 ../src/lzmainfo/lzmainfo.1:59 >-#: ../src/scripts/xzdiff.1:64 ../src/scripts/xzgrep.1:92 >+#: ../src/xz/xz.1:3006 ../src/xzdec/xzdec.1:143 ../src/lzmainfo/lzmainfo.1:59 >+#: ../src/scripts/xzdiff.1:65 ../src/scripts/xzgrep.1:106 > #: ../src/scripts/xzless.1:65 ../src/scripts/xzmore.1:51 > #, no-wrap > msgid "SEE ALSO" > msgstr "SIEHE AUCH" > > #. type: Plain text >-#: ../src/xz/xz.1:2800 >+#: ../src/xz/xz.1:3015 > msgid "" > "B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), " > "B<gzip>(1), B<bzip2>(1), B<7z>(1)" >@@ -4931,18 +5177,20 @@ > "B<gzip>(1), B<bzip2>(1), B<7z>(1)" > > #. type: Plain text >-#: ../src/xz/xz.1:2802 >+#: ../src/xz/xz.1:3017 > msgid "XZ Utils: E<lt>https://tukaani.org/xz/E<gt>" > msgstr "XZ Utils: E<lt>https://tukaani.org/xz/E<gt>" > > #. type: Plain text >-#: ../src/xz/xz.1:2804 ../src/xzdec/xzdec.1:146 >+#: ../src/xz/xz.1:3019 ../src/xzdec/xzdec.1:146 > msgid "XZ Embedded: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>" > msgstr "XZ Embedded: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>" > > #. type: Plain text >-#: ../src/xz/xz.1:2805 >-msgid "LZMA SDK: E<lt>http://7-zip.org/sdk.htmlE<gt>" >+#: ../src/xz/xz.1:3020 >+#, fuzzy >+#| msgid "LZMA SDK: E<lt>http://7-zip.org/sdk.htmlE<gt>" >+msgid "LZMA SDK: E<lt>https://7-zip.org/sdk.htmlE<gt>" > msgstr "LZMA-SDK: E<lt>http://7-zip.org/sdk.htmlE<gt>" > > #. type: TH >@@ -5170,7 +5418,7 @@ > "zu den LZMA-Dienstprogrammen enthalten." > > #. type: SH >-#: ../src/lzmainfo/lzmainfo.1:51 ../src/scripts/xzdiff.1:72 >+#: ../src/lzmainfo/lzmainfo.1:51 ../src/scripts/xzdiff.1:74 > #, no-wrap > msgid "BUGS" > msgstr "FEHLER" >@@ -5192,10 +5440,10 @@ > msgstr "XZDIFF" > > #. type: TH >-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9 >+#: ../src/scripts/xzdiff.1:9 > #, no-wrap >-msgid "2011-03-19" >-msgstr "19. März 2011" >+msgid "2021-06-04" >+msgstr "4. Juni 2021" > > #. type: Plain text > #: ../src/scripts/xzdiff.1:12 >@@ -5223,30 +5471,32 @@ > msgstr "B<lzdiff> [I<diff-Optionen>] I<Datei1> [I<Datei2>]" > > #. type: Plain text >-#: ../src/scripts/xzdiff.1:58 >+#: ../src/scripts/xzdiff.1:59 > msgid "" > "B<xzcmp> and B<xzdiff> invoke B<cmp>(1) or B<diff>(1) on files compressed " >-"with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), or B<lzop>(1). All " >-"options specified are passed directly to B<cmp>(1) or B<diff>(1). If only " >-"one file is specified, then the files compared are I<file1> (which must have " >-"a suffix of a supported compression format) and I<file1> from which the " >-"compression format suffix has been stripped. If two files are specified, " >-"then they are uncompressed if necessary and fed to B<cmp>(1) or " >-"B<diff>(1). The exit status from B<cmp>(1) or B<diff>(1) is preserved." >+"with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), or " >+"B<zstd>(1). All options specified are passed directly to B<cmp>(1) or " >+"B<diff>(1). If only one file is specified, then the files compared are " >+"I<file1> (which must have a suffix of a supported compression format) and " >+"I<file1> from which the compression format suffix has been stripped. If two " >+"files are specified, then they are uncompressed if necessary and fed to " >+"B<cmp>(1) or B<diff>(1). The exit status from B<cmp>(1) or B<diff>(1) is " >+"preserved unless a decompression error occurs; then exit status is 2." > msgstr "" > "Die Dienstprogramme B<xzcmp> und B<xzdiff> führen die Programme B<cmp>(1) " > "beziehungsweise B<diff>(1) mit Dateien aus, die mittels B<xz>(1), " >-"B<lzma>(1), B<gzip>(1), B<bzip2>(1) oder B<lzop>(1) komprimiert wurden. Alle " >-"angegebenen Optionen werden direkt an B<cmp>(1) oder B<diff>(1) übergeben. " >-"Wird nur eine Datei angegeben, wird diese I<Datei1> (die eine Endung " >-"entsprechend eines der unterstützten Kompressionsformate haben muss) mit der " >-"I<Datei1> verglichen, von der die Kompressionsformat-Endung entfernt wird. " >-"Werden zwei Dateien angegeben, dann werden deren Inhalte (falls nötig, " >+"B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1) oder B<zstd> komprimiert " >+"wurden. Alle angegebenen Optionen werden direkt an B<cmp>(1) oder B<diff>(1) " >+"übergeben. Wird nur eine Datei angegeben, wird diese I<Datei1> (die eine " >+"Endung entsprechend eines der unterstützten Kompressionsformate haben muss) " >+"mit der I<Datei1> verglichen, von der die Kompressionsformat-Endung entfernt " >+"wird. Werden zwei Dateien angegeben, dann werden deren Inhalte (falls nötig, " > "unkomprimiert) an B<cmp>(1) oder B<diff>(1) weitergeleitet. Der Exit-Status " >-"von B<cmp>(1) oder B<diff>(1) wird dabei bewahrt." >+"von B<cmp>(1) oder B<diff>(1) wird dabei bewahrt (sofern kein " >+"Dekompressionsfehler auftrat; in diesem Fall ist der Exit-Status 2)." > > #. type: Plain text >-#: ../src/scripts/xzdiff.1:64 >+#: ../src/scripts/xzdiff.1:65 > msgid "" > "The names B<lzcmp> and B<lzdiff> are provided for backward compatibility " > "with LZMA Utils." >@@ -5255,16 +5505,16 @@ > "LZMA-Dienstprogrammen." > > #. type: Plain text >-#: ../src/scripts/xzdiff.1:72 >+#: ../src/scripts/xzdiff.1:74 > msgid "" > "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), " >-"B<zdiff>(1)" >+"B<zstd>(1), B<zdiff>(1)" > msgstr "" > "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), " >-"B<zdiff>(1)" >+"B<zstd>(1), B<zdiff>(1)" > > #. type: Plain text >-#: ../src/scripts/xzdiff.1:77 >+#: ../src/scripts/xzdiff.1:79 > msgid "" > "Messages from the B<cmp>(1) or B<diff>(1) programs refer to temporary " > "filenames instead of those specified." >@@ -5278,6 +5528,12 @@ > msgid "XZGREP" > msgstr "XZGREP" > >+#. type: TH >+#: ../src/scripts/xzgrep.1:9 >+#, no-wrap >+msgid "2022-07-19" >+msgstr "19. Juli 2022" >+ > #. type: Plain text > #: ../src/scripts/xzgrep.1:12 > msgid "xzgrep - search compressed files for a regular expression" >@@ -5286,90 +5542,124 @@ > > #. type: Plain text > #: ../src/scripts/xzgrep.1:18 >-msgid "B<xzgrep> [I<grep_options>] [B<-e>] I<pattern> I<file>..." >-msgstr "B<xzgrep> [I<grep-Optionen>] [B<-e>] I<Muster> I<Dateiname> â¦" >+msgid "B<xzgrep> [I<grep_options>] [B<-e>] I<pattern> [I<file...>]" >+msgstr "B<xzgrep> [I<grep_Optionen>] [B<-e>] I<Muster> [I<Datei â¦>]" > > #. type: Plain text > #: ../src/scripts/xzgrep.1:21 >-msgid "B<xzegrep> ..." >+msgid "B<xzegrep> \\&..." > msgstr "B<xzegrep> â¦" > > #. type: Plain text > #: ../src/scripts/xzgrep.1:24 >-msgid "B<xzfgrep> ..." >+msgid "B<xzfgrep> \\&..." > msgstr "B<xzfgrep> â¦" > > #. type: Plain text > #: ../src/scripts/xzgrep.1:27 >-msgid "B<lzgrep> ..." >+msgid "B<lzgrep> \\&..." > msgstr "B<lzgrep> â¦" > > #. type: Plain text > #: ../src/scripts/xzgrep.1:30 >-msgid "B<lzegrep> ..." >+msgid "B<lzegrep> \\&..." > msgstr "B<lzegrep> â¦" > > #. type: Plain text > #: ../src/scripts/xzgrep.1:33 >-msgid "B<lzfgrep> ..." >+msgid "B<lzfgrep> \\&..." > msgstr "B<lzfgrep> â¦" > > #. type: Plain text >-#: ../src/scripts/xzgrep.1:48 >+#: ../src/scripts/xzgrep.1:49 > msgid "" > "B<xzgrep> invokes B<grep>(1) on I<files> which may be either uncompressed " >-"or compressed with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), or " >-"B<lzop>(1). All options specified are passed directly to B<grep>(1)." >+"or compressed with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), " >+"B<lzop>(1), or B<zstd>(1). All options specified are passed directly to " >+"B<grep>(1)." > msgstr "" > "B<xzgrep> wendet B<grep>(1) auf I<Dateien> an, die entweder unkomprimiert " >-"oder mit B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1) oder B<lzop>(1) " >-"komprimiert sein können. Alle angegebenen Optionen werden direkt an " >+"oder mit B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1) oder " >+"B<zstd> komprimiert sein können. Alle angegebenen Optionen werden direkt an " > "B<grep>(1) übergeben." > > #. type: Plain text >-#: ../src/scripts/xzgrep.1:60 >+#: ../src/scripts/xzgrep.1:62 > msgid "" > "If no I<file> is specified, then standard input is decompressed if necessary " > "and fed to B<grep>(1). When reading from standard input, B<gzip>(1), " >-"B<bzip2>(1), and B<lzop>(1) compressed files are not supported." >+"B<bzip2>(1), B<lzop>(1), and B<zstd>(1) compressed files are not supported." > msgstr "" > "Wenn keine I<Datei> angegeben ist, wird die Standardeingabe dekomprimiert " > "(falls nötig) und an B<grep> übergeben. Beim Lesen aus der Standardeingabe " >-"keine Dateien unterstützt, die mit B<gzip>(1), B<bzip2>(1) oder B<lzop>(1) " >-"komprimiert sind." >+"keine Dateien unterstützt, die mit B<gzip>(1), B<bzip2>(1), B<lzop>(1) oder " >+"B<zstd> komprimiert sind." > > #. type: Plain text >-#: ../src/scripts/xzgrep.1:79 >+#: ../src/scripts/xzgrep.1:81 > msgid "" >-"If B<xzgrep> is invoked as B<xzegrep> or B<xzfgrep> then B<egrep>(1) or " >-"B<fgrep>(1) is used instead of B<grep>(1). The same applies to names " >+"If B<xzgrep> is invoked as B<xzegrep> or B<xzfgrep> then B<grep -E> or " >+"B<grep -F> is used instead of B<grep>(1). The same applies to names " > "B<lzgrep>, B<lzegrep>, and B<lzfgrep>, which are provided for backward " > "compatibility with LZMA Utils." > msgstr "" > "Wenn B<xzgrep> als B<xzegrep> oder B<xzfgrep> aufgerufen wird, dann wird " >-"B<egrep>(1) oder B<fgrep>(1) anstelle von B<grep>(1) verwendet. Genauso " >+"B<grep -E> oder B<grep -F> anstelle von B<grep>(1) verwendet. Genauso " > "verhalten sich die Befehle B<lzgrep>, B<lzegrep> und B<lzfgrep>, die die " > "Abwärtskompatibilität zu den LZMA-Dienstprogrammen gewährleisten." > >+#. type: Plain text >+#: ../src/scripts/xzgrep.1:86 >+msgid "" >+"At least one match was found from at least one of the input files. No " >+"errors occurred." >+msgstr "" >+"In mindestens einer der Eingabedateien wurde mindestens ein Treffer " >+"gefunden. Es sind keine Fehler aufgetreten." >+ >+#. type: Plain text >+#: ../src/scripts/xzgrep.1:90 >+msgid "No matches were found from any of the input files. No errors occurred." >+msgstr "" >+"In keiner der Eingabedateien wurde ein Treffer gefunden. Es sind keine " >+"Fehler aufgetreten." >+ > #. type: TP >-#: ../src/scripts/xzgrep.1:81 >+#: ../src/scripts/xzgrep.1:90 > #, no-wrap >+msgid "E<gt>1" >+msgstr "E<gt>1" >+ >+#. type: Plain text >+#: ../src/scripts/xzgrep.1:94 >+msgid "One or more errors occurred. It is unknown if matches were found." >+msgstr "" >+"Ein oder mehrere Fehler sind aufgetreten. Es ist unbekannt, ob Treffer " >+"gefunden wurden." >+ >+#. type: TP >+#: ../src/scripts/xzgrep.1:95 >+#, no-wrap > msgid "B<GREP>" > msgstr "B<GREP>" > > #. type: Plain text >-#: ../src/scripts/xzgrep.1:92 >+#: ../src/scripts/xzgrep.1:106 > msgid "" > "If the B<GREP> environment variable is set, B<xzgrep> uses it instead of " >-"B<grep>(1), B<egrep>(1), or B<fgrep>(1)." >+"B<grep>(1), B<grep -E>, or B<grep -F>." > msgstr "" > "Wenn die Umgebungsvariable B<GREP> gesetzt ist, verwendet B<xzgrep> deren " >-"Inhalt anstelle von B<grep>(1), B<egrep>(1) oder B<fgrep>(1)." >+"Inhalt anstelle von B<grep>(1), B<grep -E> oder B<grep -F>." > > #. type: Plain text >-#: ../src/scripts/xzgrep.1:98 >-msgid "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zgrep>(1)" >-msgstr "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zgrep>(1)" >+#: ../src/scripts/xzgrep.1:113 >+msgid "" >+"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), " >+"B<zgrep>(1)" >+msgstr "" >+"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), " >+"B<zgrep>(1)" > > #. type: TH > #: ../src/scripts/xzless.1:10 >@@ -5557,3 +5847,81 @@ > #: ../src/scripts/xzmore.1:55 > msgid "B<more>(1), B<xz>(1), B<xzless>(1), B<zmore>(1)" > msgstr "B<more>(1), B<xz>(1), B<xzless>(1), B<zmore>(1)" >+ >+#~ msgid "2020-02-01" >+#~ msgstr "1. Februar 2020" >+ >+#~ msgid "" >+#~ "Display an error and exit if the compression settings exceed the memory " >+#~ "usage limit. The default is to adjust the settings downwards so that the " >+#~ "memory usage limit is not exceeded. Automatic adjusting is always " >+#~ "disabled when creating raw streams (B<--format=raw>)." >+#~ msgstr "" >+#~ "zeigt einen Fehler an und bricht die Ausführung ab, falls die " >+#~ "Kompressionseinstellungen die Begrenzung der Speichernutzung " >+#~ "überschreiten. StandardmäÃig werden die Einstellungen nach unten " >+#~ "korrigiert, so dass diese Grenze nicht überschritten wird. Bei der " >+#~ "Erzeugung von Rohdatenströmen (B<--format=raw>) ist die automatische " >+#~ "Korrektur stets deaktiviert." >+ >+#~ msgid "" >+#~ "It is fine to apply a BCJ filter on a whole executable; there's no need " >+#~ "to apply it only on the executable section. Applying a BCJ filter on an " >+#~ "archive that contains both executable and non-executable files may or may " >+#~ "not give good results, so it generally isn't good to blindly apply a BCJ " >+#~ "filter when compressing binary packages for distribution." >+#~ msgstr "" >+#~ "Es ist in Ordnung, einen BCJ-Filter auf eine gesamte Binärdatei " >+#~ "anzuwenden; es ist nicht nötig, dies nur auf den binären Bereich zu " >+#~ "beschränken. Die Anwendung eines BCJ-Filters auf ein Archiv, das sowohl " >+#~ "binäre als auch nicht-binäre Dateien enthält, kann gute Ergebnisse " >+#~ "liefern, muss es aber nicht. Daher ist es generell nicht gut, einen BCJ-" >+#~ "Filter blindlings anzuwenden, wenn Sie Binärpakete zwecks Weitergabe " >+#~ "komprimieren wollen." >+ >+#~ msgid "" >+#~ "These BCJ filters are very fast and use insignificant amount of memory. " >+#~ "If a BCJ filter improves compression ratio of a file, it can improve " >+#~ "decompression speed at the same time. This is because, on the same " >+#~ "hardware, the decompression speed of LZMA2 is roughly a fixed number of " >+#~ "bytes of compressed data per second." >+#~ msgstr "" >+#~ "Diese BCJ-Filter sind sehr schnell und erhöhen den Speicherbedarf nur " >+#~ "unerheblich. Wenn ein BCJ-Filter das Kompressionsverhältnis einer Datei " >+#~ "verbessert, kann er auch gleichzeitig die Dekompressionsgeschwindigkeit " >+#~ "verbessern. Das kommt daher, dass auf der gleichen Hardware die " >+#~ "Dekompressionsgeschwindigkeit von LZMA2 ungefähr eine feste Anzahl Byte " >+#~ "an komprimierten Daten pro Sekunde ist." >+ >+#~ msgid "" >+#~ "Applying a BCJ filter on an archive containing multiple similar " >+#~ "executables can make the compression ratio worse than not using a BCJ " >+#~ "filter. This is because the BCJ filter doesn't detect the boundaries of " >+#~ "the executable files, and doesn't reset the address conversion counter " >+#~ "for each executable." >+#~ msgstr "" >+#~ "Bei der Anwendung eines BCJ-Filters auf ein Archiv, das mehrere ähnliche " >+#~ "Binärdateien enthält, kann das Kompressionsverhältnis schlechter sein als " >+#~ "ohne BCJ-Filter. Das kommt daher, weil der BCJ-Filter die Grenzen der " >+#~ "Binärdateien nicht erkennt und den Zähler der Adressumwandlung für jede " >+#~ "Binärdatei nicht zurücksetzt." >+ >+#~ msgid "" >+#~ "Both of the above problems will be fixed in the future in a new filter. " >+#~ "The old BCJ filters will still be useful in embedded systems, because the " >+#~ "decoder of the new filter will be bigger and use more memory." >+#~ msgstr "" >+#~ "Beide der oben genannten Probleme werden in der Zukunft in einem neuen " >+#~ "Filter nicht mehr auftreten. Die alten BCJ-Filter werden noch in " >+#~ "eingebetteten Systemen von Nutzen sein, weil der Dekoder des neuen " >+#~ "Filters gröÃer sein und mehr Speicher beanspruchen wird." >+ >+# FIXME have have >+#~ msgid "Different instruction sets have different alignment:" >+#~ msgstr "Verschiedene Befehlssätze haben unterschiedliche Ausrichtungen:" >+ >+#~ msgid "Little endian only" >+#~ msgstr "Nur Little Endian" >+ >+#~ msgid "Big or little endian" >+#~ msgstr "Big oder Little Endian" >Only in xz-5.4.3/po4a: fr.po >Only in xz-5.4.3/po4a: ko.po >diff -ur xz-5.2.5/po4a/man/de/xz.1 xz-5.4.3/po4a/man/de/xz.1 >--- xz-5.2.5/po4a/man/de/xz.1 2020-03-17 17:31:37 >+++ xz-5.4.3/po4a/man/de/xz.1 2023-05-04 17:33:07 >@@ -10,7 +10,7 @@ > .\" This file was generated with po4a. Translate the source file. > .\" > .\"******************************************************************* >-.TH XZ 1 "1. Februar 2020" Tukaani XZ\-Dienstprogramme >+.TH XZ 1 "1. Dezember 2022" Tukaani XZ\-Dienstprogramme > . > .SH BEZEICHNUNG > xz, unxz, xzcat, lzma, unlzma, lzcat \- .xz\- und .lzma\-Dateien komprimieren >@@ -39,7 +39,8 @@ > Befehlszeilensyntax denen von \fBgzip\fP(1) und \fBbzip2\fP(1) ähnelt. Das native > Dateiformat ist das \fB.xz\fP\-Format, aber das veraltete, von den > LZMA\-Dienstprogrammen verwendete Format sowie komprimierte Rohdatenströme >-ohne Containerformat\-Header werden ebenfalls unterstützt. >+ohne Containerformat\-Header werden ebenfalls unterstützt. AuÃerdem wird die >+Dekompression des von \fBlzip\fP verwendeten \fB.lz\fP\-Formats unterstützt. > .PP > \fBxz\fP komprimiert oder dekomprimierte jede \fIDatei\fP entsprechend des > gewählten Vorgangsmodus. Falls entweder \fB\-\fP oder keine Datei angegeben ist, >@@ -58,9 +59,9 @@ > \&\fB.lzma\fP) an den Namen der Quelldatei angehängt und so der Name der > Zieldatei gebildet. > .IP \(bu 3 >-Bei der Dekompression wird das Suffix \fB.xz\fP oder \fB.lzma\fP vom Dateinamen >-entfernt und so der Name der Zieldatei gebildet. AuÃerdem erkennt \fBxz\fP die >-Suffixe \fB.txz\fP und \fB.tlz\fP und ersetzt diese durch \fB.tar\fP. >+Bei der Dekompression wird das Suffix \fB.xz\fP, \fB.lzma\fP oder \fB.lz\fP vom >+Dateinamen entfernt und so der Name der Zieldatei gebildet. AuÃerdem erkennt >+\fBxz\fP die Suffixe \fB.txz\fP und \fB.tlz\fP und ersetzt diese durch \fB.tar\fP. > .PP > Wenn die Zieldatei bereits existiert, wird eine Fehlermeldung angezeigt und > die \fIDatei\fP übersprungen. >@@ -83,7 +84,7 @@ > .IP \(bu 3 > Der Aktionsmodus wird auf Dekompression gesetzt und die \fIDatei\fP hat nicht > das Suffix eines der unterstützten Zieldateiformate (\fB.xz\fP, \fB.txz\fP, >-\&\fB.lzma\fP oder \fB.tlz\fP). >+\&\fB.lzma\fP, \fB.tlz\fP oder \fB.lz\fP). > .PP > Nach erfolgreicher Kompression oder Dekompression der \fIDatei\fP kopiert \fBxz\fP > Eigentümer, Gruppe, Zugriffsrechte, Zugriffszeit und Ãnderungszeit aus der >@@ -97,7 +98,7 @@ > Sobald die Zieldatei erfolgreich geschlossen wurde, wird die > Ursprungs\-\fIDatei\fP entfernt. Dies wird durch die Option \fB\-\-keep\fP > verhindert. Die Ursprungs\-\fIDatei\fP wird niemals entfernt, wenn die Ausgabe >-in die Standardausgabe geschrieben wird. >+in die Standardausgabe geschrieben wird oder falls ein Fehler auftritt. > .PP > Durch Senden der Signale \fBSIGINFO\fP oder \fBSIGUSR1\fP an den \fBxz\fP\-Prozess > werden Fortschrittsinformationen in den Fehlerkanal der Standardausgabe >@@ -107,7 +108,7 @@ > . > .SS Speicherbedarf > In Abhängigkeit von den gewählten Kompressionseinstellungen bewegt sich der >-Speicherverbrauch zwischen wenigen hundert Kilobyte und mehrere >+Speicherverbrauch zwischen wenigen hundert Kilobyte und mehreren > Gigabyte. Die Einstellungen bei der Kompression einer Datei bestimmen dabei > den Speicherbedarf bei der Dekompression. Die Dekompression benötigt > üblicherweise zwischen 5\ % und 20\ % des Speichers, der bei der Kompression >@@ -227,6 +228,12 @@ > .TP > \fB\-k\fP, \fB\-\-keep\fP > verhindert das Löschen der Eingabedateien. >+.IP "" >+Seit der \fBxz\fP\-Version 5.2.6 wird die Kompression oder Dekompression auch >+dann ausgeführt, wenn die Eingabe ein symbolischer Link zu einer regulären >+Datei ist, mehr als einen harten Link hat oder das »setuid«\-, »setgid«\- oder >+»sticky«\-Bit gesetzt ist. Die genannten Bits werden nicht in die Zieldatei >+kopiert. In früheren Versionen geschah dies nur mit \fB\-\-force\fP. > .TP > \fB\-f\fP, \fB\-\-force\fP > Diese Option hat verschiedene Auswirkungen: >@@ -285,7 +292,7 @@ > angezeigt und die Datei übersprungen. > .IP "" > berücksichtigt bei der Dekompression zusätzlich zu Dateien mit den Suffixen >-\&\fB.xz\fP, \fB.txz\fP, \fB.lzma\fP oder \fB.tlz\fP auch jene mit dem Suffix >+\&\fB.xz\fP, \fB.txz\fP, \fB.lzma\fP, \fB.tlz\fP oder \fB.lz\fP auch jene mit dem Suffix > \&\fI.suf\fP. Falls die Quelldatei das Suffix \fI.suf\fP hat, wird dieses entfernt > und so der Name der Zieldatei abgeleitet. > .IP "" >@@ -328,6 +335,23 @@ > akzeptiert nur \fB.lzma\fP\-Dateien bei der Dekompression. Der alternative Name > \fBalone\fP dient der Abwärtskompatibilität zu den LZMA\-Dienstprogrammen. > .TP >+\fBlzip\fP >+Akzeptiert nur \fB.lz\fP\-Dateien bei der Dekompression. Kompression wird nicht >+unterstützt. >+.IP "" >+Das \fB.lz\fP\-Format wird in Version 0 und der unerweiterten Version 1 >+unterstützt. Dateien der Version 0 wurden \fBlzip\fP 1.3 und älter >+erstellt. Solche Dateien sind nicht sehr weit verbreitet, können aber in >+Dateiarchiven gefunden werden, da einige Quellpakete in diesem Format >+veröffentlicht wurden. Es ist auch möglich, dass Benutzer alte persönliche >+Dateien in diesem Format haben. Die Dekompressionsunterstützung für das >+Format der Version 0 wurde mit der Version 1.18 aus \fBlzip\fP entfernt. >+.IP "" >+\fBlzip\fP\-Versionen ab 1.4 erstellen Dateien im Format der Version 0. Die >+Erweiterung »Sync Flush Marker« zur Formatversion 1 wurde in \fBlzip\fP 1.6 >+hinzugefügt. Diese Erweiterung wird sehr selten verwendet und wird von \fBxz\fP >+nicht unterstützt (die Eingabe wird als beschädigt erkannt). >+.TP > \fBraw\fP > Komprimiert oder dekomprimiert einen Rohdatenstrom (ohne Header). Diese > Option ist nur für fortgeschrittene Benutzer bestimmt. Zum Dekodieren von >@@ -396,8 +420,7 @@ > \fBgzip\fP(1) und \fBbzip2\fP(1). Die gewählten Kompressionseinstellungen > bestimmen den Speicherbedarf bei der Dekompression, daher ist es auf älteren > Systemen mit wenig Speicher bei einer zu hoch gewählten Voreinstellung >-schwer, eine Datei zu dekomprimieren. Insbesondere \fBist es keine gute Idee, >-blindlings \-9 für alles\fP zu verwenden, wie dies häufig mit \fBgzip\fP(1) und >+schwer, eine Datei zu dekomprimieren. Insbesondere \fBist es keine gute Idee, blindlings \-9 für alles\fP zu verwenden, wie dies häufig mit \fBgzip\fP(1) und > \fBbzip2\fP(1) gehandhabt wird. > .RS > .TP >@@ -412,10 +435,10 @@ > \fB\-4\fP ⦠\fB\-6\fP > Gute bis sehr gute Kompression, wobei der Speicherbedarf für die > Dekompression selbst auf alten Systemen akzeptabel ist. \fB\-6\fP ist die >-Voreinstellung, welche üblicherweise eine gute Wahl ist, zum Beispiel für >-die Verteilung von Dateien, die selbst noch auf Systemen mit nur 16\ MiB >-Arbeitsspeicher dekomprimiert werden müssen (\fB\-5e\fP oder \fB\-6e\fP sind >-ebenfalls eine Ãberlegung wert. Siehe \fB\-\-extreme\fP). >+Voreinstellung, welche üblicherweise eine gute Wahl für die Verteilung von >+Dateien ist, die selbst noch auf Systemen mit nur 16\ MiB Arbeitsspeicher >+dekomprimiert werden müssen (\fB\-5e\fP oder \fB\-6e\fP sind ebenfalls eine >+Ãberlegung wert. Siehe \fB\-\-extreme\fP). > .TP > \fB\-7 ⦠\-9\fP > Ãhnlich wie \fB\-6\fP, aber mit einem höheren Speicherbedarf für die Kompression >@@ -437,7 +460,7 @@ > tab(;); > c c c c c > n n n n n. >-Voreinstellung;DictGröÃe;KompCPU;KompSpeicher;DekSpeicher >+Voreinst.;Wörtb.Gr;KomprCPU;KompSpeich;DekompSpeich > \-0;256 KiB;0;3 MiB;1 MiB > \-1;1 MiB;1;9 MiB;2 MiB > \-2;2 MiB;2;17 MiB;3 MiB >@@ -455,26 +478,26 @@ > Spaltenbeschreibungen: > .RS > .IP \(bu 3 >-DictGröÃe ist die GröÃe des LZMA2\-Wörterbuchs. Es ist Speicherverschwendung, >-ein Wörterbuch zu verwenden, das gröÃer als die unkomprimierte Datei >-ist. Daher ist es besser, die Voreinstellungen \fB\-7\fP ⦠\fB\-9\fP zu vermeiden, >-falls es keinen wirklichen Bedarf dafür gibt. Mit \fB\-6\fP und weniger wird >-üblicherweise so wenig Speicher verschwendet, dass dies nicht ins Gewicht >-fällt. >+Wörtb.GröÃe ist die GröÃe des LZMA2\-Wörterbuchs. Es ist >+Speicherverschwendung, ein Wörterbuch zu verwenden, das gröÃer als die >+unkomprimierte Datei ist. Daher ist es besser, die Voreinstellungen \fB\-7\fP ⦠>+\fB\-9\fP zu vermeiden, falls es keinen wirklichen Bedarf dafür gibt. Mit \fB\-6\fP >+und weniger wird üblicherweise so wenig Speicher verschwendet, dass dies >+nicht ins Gewicht fällt. > .IP \(bu 3 >-KompCPU ist eine vereinfachte Repräsentation der LZMA2\-Einstellungen, welche >-die Kompressionsgeschwindigkeit beeinflussen. Die WörterbuchgröÃe wirkt sich >-ebenfalls auf die Geschwindigkeit aus. Während KompCPU für die Stufen \fB\-6\fP >-bis \fB\-9\fP gleich ist, tendieren höhere Stufen dazu, etwas langsamer zu >-sein. Um eine noch langsamere, aber möglicherweise bessere Kompression zu >-erhalten, siehe \fB\-\-extreme\fP. >+KomprCPU ist eine vereinfachte Repräsentation der LZMA2\-Einstellungen, >+welche die Kompressionsgeschwindigkeit beeinflussen. Die WörterbuchgröÃe >+wirkt sich ebenfalls auf die Geschwindigkeit aus. Während KompCPU für die >+Stufen \fB\-6\fP bis \fB\-9\fP gleich ist, tendieren höhere Stufen dazu, etwas >+langsamer zu sein. Um eine noch langsamere, aber möglicherweise bessere >+Kompression zu erhalten, siehe \fB\-\-extreme\fP. > .IP \(bu 3 >-KompSpeicher enthält den Speicherbedarf des Kompressors im >+KompSpeich enthält den Speicherbedarf des Kompressors im > Einzel\-Thread\-Modus. Dieser kann zwischen den \fBxz\fP\-Versionen leicht > variieren. Der Speicherbedarf einiger der zukünftigen Multithread\-Modi kann > dramatisch höher sein als im Einzel\-Thread\-Modus. > .IP \(bu 3 >-DekSpeicher enthält den Speicherbedarf für die Dekompression. Das bedeutet, >+DekompSpeich enthält den Speicherbedarf für die Dekompression. Das bedeutet, > dass die Kompressionseinstellungen den Speicherbedarf bei der Dekompression > bestimmen. Der exakte Speicherbedarf bei der Dekompression ist geringfügig > gröÃer als die GröÃe des LZMA2\-Wörterbuchs, aber die Werte in der Tabelle >@@ -487,7 +510,7 @@ > besseres Kompressionsverhältnis zu erreichen, das aber in ungünstigen Fällen > auch schlechter werden kann. Der Speicherverbrauch bei der Dekompression > wird dabei nicht beeinflusst, aber der Speicherverbrauch der Kompression >-steigt in der Voreinstellungsstufen \fB\-0\fP bis \fB\-3\fP geringfügig an. >+steigt in den Voreinstellungsstufen \fB\-0\fP bis \fB\-3\fP geringfügig an. > .IP "" > Da es zwei Voreinstellungen mit den WörterbuchgröÃen 4\ MiB und 8\ MiB gibt, > verwenden die Voreinstellungsstufen \fB\-3e\fP und \fB\-5e\fP etwas schnellere >@@ -500,7 +523,7 @@ > tab(;); > c c c c c > n n n n n. >-Voreinstellung;DictGröÃe;KompCPU;KompSpeicher;DekSpeicher >+Voreinst.;Wörtb.Gr;KomprCPU;KompSpeich;DekompSpeich > \-0e;256 KiB;8;4 MiB;1 MiB > \-1e;1 MiB;8;13 MiB;2 MiB > \-2e;2 MiB;8;25 MiB;3 MiB >@@ -608,14 +631,23 @@ > legt eine Grenze für die Speichernutzung bei der Kompression fest. Wenn > diese Option mehrmals angegeben wird, ist die zuletzt angegebene wirksam. > .IP "" >-Falls die Kompressionseinstellungen die \fIGrenze\fP überschreiten, passt \fBxz\fP >-die Einstellungen nach unten an, so dass die Grenze nicht mehr überschritten >-wird und zeigt einen Hinweis an, dass eine automatische Anpassung >-vorgenommen wurde. Solche Anpassungen erfolgen nicht, wenn mit >-\fB\-\-format=raw\fP komprimiert wird oder wenn \fB\-\-no\-adjust\fP angegeben >-wurde. In diesen Fällen wird eine Fehlermeldung mit dem Exit\-Status 1 >-ausgegeben und \fBxz\fP mit dem Exit\-Status 1 beendet. >+Falls die Kompressionseinstellungen die \fIGrenze\fP überschreiten, versucht >+\fBxz\fP, die Einstellungen nach unten anzupassen, so dass die Grenze nicht >+mehr überschritten wird und zeigt einen Hinweis an, dass eine automatische >+Anpassung vorgenommen wurde. Die Anpassungen werden in folgender Reihenfolge >+angewendet: Reduzierung der Anzahl der Threads, Wechsel in den >+Einzelthread\-Modus, falls sogar ein einziger Thread im Multithread\-Modus die >+\fIGrenze\fP überschreitet, und schlussendlich die Reduzierung der GröÃe des >+LZMA2\-Wörterbuchs. > .IP "" >+Beim Komprimieren mit \fB\-\-format=raw\fP oder falls \fB\-\-no\-adjust\fP angegeben >+wurde, wird nur die Anzahl der Threads reduziert, da nur so die komprimierte >+Ausgabe nicht beeinflusst wird. >+.IP "" >+Falls die \fIGrenze\fP nicht anhand der vorstehend beschriebenen Anpassungen >+gesetzt werden kann, wird ein Fehler angezeigt und \fBxz\fP wird mit dem >+Exit\-Status 1 beendet. >+.IP "" > Die \fIGrenze\fP kann auf verschiedene Arten angegeben werden: > .RS > .IP \(bu 3 >@@ -631,17 +663,15 @@ > .IP \(bu 3 > Mit \fB0\fP kann die \fIGrenze\fP auf den Standardwert zurückgesetzt werden. Dies > ist gegenwärtig gleichbedeutend mit dem Setzen der \fIGrenze\fP auf \fBmax\fP >-(keine Speicherbegrenzung). Sobald die Unterstützung für Multi\-Threading >-implementiert wurde, kann es im Multi\-Thread\-Fall einen Unterschied zwischen >-\fB0\fP und \fBmax\fP geben, daher wird empfohlen, \fB0\fP anstelle von \fBmax\fP zu >-verwenden, bis die Einzelheiten hierzu geklärt sind. >+(keine Speicherbegrenzung). > .RE > .IP "" > Für die 32\-Bit\-Version von \fBxz\fP gibt es einen Spezialfall: Falls die Grenze >-über \fB4020\ MiB\fP liegt, wird die \fIGrenze\fP auf \fB4020\ MiB\fP gesetzt (die >-Werte \fB0\fP und \fBmax\fP werden hiervon nicht beeinflusst; für die >-Dekompression gibt es keine vergleichbare Funktion). Dies kann hilfreich >-sein, wenn ein 32\-Bit\-Executable auf einen 4\ GiB groÃen Adressraum >+über \fB4020\ MiB\fP liegt, wird die \fIGrenze\fP auf \fB4020\ MiB\fP gesetzt. Auf >+MIPS32 wird stattdessen \fB2000\ MB\fP verwendet (die Werte \fB0\fP und \fBmax\fP >+werden hiervon nicht beeinflusst; für die Dekompression gibt es keine >+vergleichbare Funktion). Dies kann hilfreich sein, wenn ein >+32\-Bit\-Executable auf einen 4\ GiB groÃen Adressraum (2 GiB auf MIPS32) > zugreifen kann, wobei wir hoffen wollen, dass es in anderen Situationen > keine negativen Effekte hat. > .IP "" >@@ -654,37 +684,99 @@ > die Dekompression wird fehlschlagen. Siehe \fB\-\-memlimit\-compress=\fP\fIGrenze\fP > zu möglichen Wegen, die \fIGrenze\fP anzugeben. > .TP >+\fB\-\-memlimit\-mt\-decompress=\fP\fIGrenze\fP >+legt eine Begrenzung des Speicherverbrauchs für Multithread\-Dekompression >+fest. Dies beeinflusst lediglich die Anzahl der Threads; \fBxz\fP wird dadurch >+niemals die Dekompression einer Datei verweigern. Falls die \fIGrenze\fP für >+jegliches Multithreading zu niedrig ist, wird sie ignoriert und \fBxz\fP setzt >+im Einzelthread\-modus fort. Beachten Sie auch, dass bei der Verwendung von >+\fB\-\-memlimit\-decompress\fP dies stets sowohl auf den Einzelthread\-als auch auf >+den Multithread\-Modus angewendet wird und so die effektive \fIGrenze\fP für den >+Multithread\-Modus niemals höher sein wird als die mit >+\fB\-\-memlimit\-decompress\fP gesetzte Grenze. >+.IP "" >+Im Gegensatz zu anderen Optionen zur Begrenzung des Speicherverbrauchs hat >+\fB\-\-memlimit\-mt\-decompress=\fP\fIGrenze\fP eine systemspezifisch vorgegebene >+\fIGrenze\fP. Mit \fBxz \-\-info\-memory\fP können Sie deren aktuellen Wert anzeigen >+lassen. >+.IP "" >+Diese Option und ihr Standardwert existieren, weil die unbegrenzte >+threadbezogene Dekompression bei einigen Eingabedateien zu unglaublich >+groÃem Speicherverbrauch führen würde. Falls die vorgegebene \fIGrenze\fP auf >+Ihrem System zu niedrig ist, können Sie die \fIGrenze\fP durchaus erhöhen, aber >+setzen Sie sie niemals auf einen Wert gröÃer als die Menge des nutzbaren >+Speichers, da \fBxz\fP bei entsprechenden Eingabedateien versuchen wird, diese >+Menge an Speicher auch bei einer geringen Anzahl von Threads zu >+verwnden. Speichermangel oder Auslagerung verbessern die >+Dekomprimierungsleistung nicht. >+.IP "" >+Siehe \fB\-\-memlimit\-compress=\fP\fIGrenze\fP für mögliche Wege zur Angabe der >+\fIGrenze\fP. Sezen der \fIGrenze\fP auf \fB0\fP setzt die \fIGrenze\fP auf den >+vorgegebenen systemspezifischen Wert zurück. >+.IP "" >+.TP > \fB\-M\fP \fIGrenze\fP, \fB\-\-memlimit=\fP\fIGrenze\fP, \fB\-\-memory=\fP\fIGrenze\fP >-Dies ist gleichbedeutend mit \fB\-\-memlimit\-compress=\fP\fIGrenze >-\fP\fB\-\-memlimit\-decompress=\fP\fIGrenze\fP. >+Dies ist gleichbedeutend mit \fB\-\-memlimit\-compress=\fP\fIGrenze\fP >+\fB\-\-memlimit\-decompress=\fP\fIGrenze\fP \fB\-\-memlimit\-mt\-decompress=\fP\fIGrenze\fP. > .TP > \fB\-\-no\-adjust\fP >-zeigt einen Fehler an und bricht die Ausführung ab, falls die >-Kompressionseinstellungen die Begrenzung der Speichernutzung >-überschreiten. StandardmäÃig werden die Einstellungen nach unten korrigiert, >-so dass diese Grenze nicht überschritten wird. Bei der Erzeugung von >-Rohdatenströmen (\fB\-\-format=raw\fP) ist die automatische Korrektur stets >-deaktiviert. >+zeigt einen Fehler an und beendet, falls die Grenze der Speichernutzung >+nicht ohne Ãnderung der Einstellungen, welche die komprimierte Ausgabe >+beeinflussen, berücksichtigt werden kann. Das bedeutet, dass \fBxz\fP daran >+gehindert wird, den Encoder vom Multithread\-Modus in den Einzelthread\-Modus >+zu versetzen und die GröÃe des LZMA2\-Wörterbuchs zu reduzieren. Allerdings >+kann bei Verwendung dieser Option dennoch die Anzahl der Threads reduziert >+werden, um die Grenze der Speichernutzung zu halten, sofern dies die >+komprimierte Ausgabe nicht beeinflusst. >+.IP "" >+Die automatische Anpassung ist beim Erzeugen von Rohdatenströmen >+(\fB\-\-format=raw\fP) immer deaktiviert. > .TP > \fB\-T\fP \fIThreads\fP, \fB\-\-threads=\fP\fIThreads\fP > gibt die Anzahl der zu verwendenden Arbeits\-Threads an. Wenn Sie \fIThreads\fP >-auf einen speziellen Wert \fB0\fP setzen, verwendet \fBxz\fP so viele Threads, wie >-Prozessorkerne im System verfügbar sind. Die tatsächliche Anzahl kann >-geringer sein als die angegebenen \fIThreads\fP, wenn die Eingabedatei nicht >-groà genug für Threading mit den gegebenen Einstellungen ist oder wenn mehr >-Threads die Speicherbegrenzung übersteigen würden. >+auf einen speziellen Wert \fB0\fP setzen, verwendet \fBxz\fP maximal so viele >+Threads, wie der/die Prozessor(en) im System untestützen. Die tatsächliche >+Anzahl kann geringer sein als die angegebenen \fIThreads\fP, wenn die >+Eingabedatei nicht groà genug für Threading mit den gegebenen Einstellungen >+ist oder wenn mehr Threads die Speicherbegrenzung übersteigen würden. > .IP "" >+Die Multithread\- bzw. Einzelthread\-Kompressoren erzeugen unterschiedliche >+Ausgaben. Der Einzelthread\-Kompressor erzeugt die geringste DateigröÃe, aber >+nur die Ausgabe des Multithread\-Kompressors kann mit mehreren Threads wieder >+dekomprimiert werden. Das Setzen der Anzahl der \fIThreads\fP auf \fB1\fP wird den >+Einzelthread\-Modus verwenden. Das Setzen der Anzahl der \fIThreads\fP auf >+einen anderen Wert einschlieÃlich \fB0\fP verwendet den Multithread\-Kompressor, >+und zwar sogar dann, wenn das System nur einen einzigen Hardware\-Thread >+unterstützt (\fBxz\fP 5.2.x verwendete in diesem Fall noch den >+Einzelthread\-Modus). >+.IP "" >+Um den Multithread\-Modus mit nur einem einzigen Thread zu verwenden, setzen >+Sie die Anzahl der \fIThreads\fP auf \fB+1\fP. Das Präfix \fB+\fP hat mit Werten >+verschieden von \fB1\fP keinen Effekt. Eine Begrenzung des Speicherverbrauchs >+kann \fBxz\fP dennoch veranlassen, den Einzelthread\-Modus zu verwenden, auÃer >+wenn \fB\-\-no\-adjust\fP verwendet wird. Die Unterstützung für das Präfix \fB+\fP >+wurde in \fBxz\fP 5.4.0 hinzugefügt. >+.IP "" >+Falls das automatische Setzen der Anzahl der Threads angefordert und keine >+Speicherbegrenzung angegeben wurde, dann wird eine systemspezifisch >+vorgegebene weiche Grenze verwendet, um eventuell die Anzahl der Threads zu >+begrenzen. Es ist eine weiche Grenze im Sinne davon, dass sie ignoriert >+wird, falls die Anzahl der Threads 1 ist; daher wird eine weiche Grenze >+\fBxz\fP niemals an der Kompression oder Dekompression hindern. Diese >+vorgegebene weiche Grenze veranlasst \fBxz\fP nicht, vom Multithread\-Modus in >+den Einzelthread\-Modus zu wechseln. Die aktiven Grenzen können Sie mit dem >+Befehl \fBxz \-\-info\-memory\fP anzeigen lassen. >+.IP "" > Die gegenwärtig einzige Threading\-Methode teilt die Eingabe in Blöcke und > komprimiert diese unabhängig voneinander. Die vorgegebene BlockgröÃe ist von > der Kompressionsstufe abhängig und kann mit der Option > \fB\-\-block\-size=\fP\fIGröÃe\fP auÃer Kraft gesetzt werden. > .IP "" >-Eine thread\-basierte Dekompression wurde bislang noch nicht >-implementiert. Sie wird nur bei Dateien funktionieren, die mehrere Blöcke >-mit GröÃeninformationen in deren Headern enthalten. Alle im >-Multi\-Thread\-Modus komprimierten Dateien erfüllen diese Bedingung, im >-Einzel\-Thread\-Modus komprimierte Dateien dagegen nicht, selbst wenn >-\fB\-\-block\-size=\fP\fIGröÃe\fP verwendet wird. >+Eine thread\-basierte Dekompression wird nur bei Dateien funktionieren, die >+mehrere Blöcke mit GröÃeninformationen in deren Headern enthalten. Alle im >+Multi\-Thread\-Modus komprimierten Dateien, die groà genug sind, erfüllen >+diese Bedingung, im Einzel\-Thread\-Modus komprimierte Dateien dagegen nicht, >+selbst wenn \fB\-\-block\-size=\fP\fIGröÃe\fP verwendet wurde. > . > .SS "Benutzerdefinierte Filterketten für die Kompression" > Eine benutzerdefinierte Filterkette ermöglicht die Angabe detaillierter >@@ -723,8 +815,7 @@ > ignoriert. Jede Option hat einen Standardwert, daher brauchen Sie nur jene > anzugeben, die Sie ändern wollen. > .PP >-Um die gesamte Filterkette und die \fIOptionen\fP anzuzeigen, rufen Sie \fBxz >-\-vv\fP auf (was gleichbedeutend mit der zweimaligen Angabe von \fB\-\-verbose\fP >+Um die gesamte Filterkette und die \fIOptionen\fP anzuzeigen, rufen Sie \fBxz \-vv\fP auf (was gleichbedeutend mit der zweimaligen Angabe von \fB\-\-verbose\fP > ist). Dies funktioniert auch zum Betrachten der von den Voreinstellungen > verwendeten Filterkettenoptionen. > .TP >@@ -939,14 +1030,16 @@ > \fB\-\-x86\fP[\fB=\fP\fIOptionen\fP] > .PD 0 > .TP >-\fB\-\-powerpc\fP[\fB=\fP\fIOptionen\fP] >-.TP >-\fB\-\-ia64\fP[\fB=\fP\fIOptionen\fP] >-.TP > \fB\-\-arm\fP[\fB=\fP\fIOptionen\fP] > .TP > \fB\-\-armthumb\fP[\fB=\fP\fIOptionen\fP] > .TP >+\fB\-\-arm64\fP[\fB=\fP\fIOptionen\fP] >+.TP >+\fB\-\-powerpc\fP[\fB=\fP\fIOptionen\fP] >+.TP >+\fB\-\-ia64\fP[\fB=\fP\fIOptionen\fP] >+.TP > \fB\-\-sparc\fP[\fB=\fP\fIOptionen\fP] > .PD > fügt ein »Branch/Call/Jump«\-(BCJ\-)Filter zur Filterkette hinzu. Diese Filter >@@ -958,22 +1051,9 @@ > \&\fB.xz\fP\-Datei zu erstellen. Die BCJ\-Filter sind immer reversibel, daher > verursacht die Anwendung eines BCJ\-Filters auf den falschen Datentyp keinen > Datenverlust, wobei aber das Kompressionsverhältnis etwas schlechter werden >-könnte. >+könnte. Die BCJ\-Filter sind sehr schnell und verbrauchen nur wenig mehr >+Speicher. > .IP "" >-Es ist in Ordnung, einen BCJ\-Filter auf eine gesamte Binärdatei anzuwenden; >-es ist nicht nötig, dies nur auf den binären Bereich zu beschränken. Die >-Anwendung eines BCJ\-Filters auf ein Archiv, das sowohl binäre als auch >-nicht\-binäre Dateien enthält, kann gute Ergebnisse liefern, muss es aber >-nicht. Daher ist es generell nicht gut, einen BCJ\-Filter blindlings >-anzuwenden, wenn Sie Binärpakete zwecks Weitergabe komprimieren wollen. >-.IP "" >-Diese BCJ\-Filter sind sehr schnell und erhöhen den Speicherbedarf nur >-unerheblich. Wenn ein BCJ\-Filter das Kompressionsverhältnis einer Datei >-verbessert, kann er auch gleichzeitig die Dekompressionsgeschwindigkeit >-verbessern. Das kommt daher, dass auf der gleichen Hardware die >-Dekompressionsgeschwindigkeit von LZMA2 ungefähr eine feste Anzahl Byte an >-komprimierten Daten pro Sekunde ist. >-.IP "" > Diese BCJ\-Filter haben bekannte Probleme mit dem Kompressionsverhältnis: > .RS > .IP \(bu 3 >@@ -983,19 +1063,19 @@ > dennoch die Adressumwandlung aus, wodurch die Kompression bei diesen Dateien > schlechter wird. > .IP \(bu 3 >-Bei der Anwendung eines BCJ\-Filters auf ein Archiv, das mehrere ähnliche >-Binärdateien enthält, kann das Kompressionsverhältnis schlechter sein als >-ohne BCJ\-Filter. Das kommt daher, weil der BCJ\-Filter die Grenzen der >-Binärdateien nicht erkennt und den Zähler der Adressumwandlung für jede >-Binärdatei nicht zurücksetzt. >+Falls ein BCJ\-Filter auf ein Archiv angewendet wird, ist es möglich, dass >+das Kompressionsverhältnis schlechter als ohne Filter wird. Falls es >+beispielsweise ähnliche oder sogar identische ausführbare Dateien gibt, dann >+werden diese durch die Filterung wahrscheinlich »unähnlicher« und >+verschlechtern dadurch das Kompressionsverhältnis. Der Inhalt >+nicht\-ausführbarer Dateien im gleichen Archiv kann sich ebenfalls darauf >+auswirken. In der Praxis werden Sie durch Versuche mit oder ohne BCJ\-Filter >+selbst herausfinden müssen, was situationsbezogen besser ist. > .RE > .IP "" >-Beide der oben genannten Probleme werden in der Zukunft in einem neuen >-Filter nicht mehr auftreten. Die alten BCJ\-Filter werden noch in >-eingebetteten Systemen von Nutzen sein, weil der Dekoder des neuen Filters >-gröÃer sein und mehr Speicher beanspruchen wird. >-.IP "" >-Verschiedene Befehlssätze haben unterschiedliche Ausrichtungen: >+Verschiedene Befehlssätze haben unterschiedliche Ausrichtungen: Die >+ausführbare Datei muss in den Eingabedateien einem Vielfachen dieses Wertes >+entsprechen, damit dieser Filter funktioniert. > .RS > .RS > .PP >@@ -1005,11 +1085,12 @@ > l n l. > Filter;Ausrichtung;Hinweise > x86;1;32\-Bit oder 64\-Bit x86 >+ARM;4; >+ARM\-Thumb;2; >+ARM64;4;4096\-Byte\-Ausrichtung ist optimal > PowerPC;4;Nur Big Endian >-ARM;4;Nur Little Endian >-ARM\-Thumb;2;Nur Little Endian >-IA\-64;16;Big oder Little Endian >-SPARC;4;Big oder Little Endian >+IA\-64;16;Itanium >+SPARC;4; > .TE > .RE > .RE >@@ -1018,9 +1099,10 @@ > das Kompressionsverhältnis dadurch etwas verbessert werden, dass die > LZMA2\-Optionen so gesetzt werden, dass sie der Ausrichtung des gewählten > BCJ\-Filters entsprechen. Zum Beispiel ist es beim IA\-64\-Filter eine gute >-Wahl, \fBpb=4\fP mit LZMA2 zu setzen (2^4=16). Der x86\-Filter bildet dabei eine >-Ausnahme; Sie sollten bei der für LZMA2 voreingestellten 4\-Byte\-Ausrichtung >-bleiben, wenn Sie x86\-Binärdateien komprimieren. >+Wahl, \fBpb=4\fP oder sogar \fBpb=4,lp=4,lc=0\fP mit LZMA2 zu setzen (2^4=16). Der >+x86\-Filter bildet dabei eine Ausnahme; Sie sollten bei der für LZMA2 >+voreingestellten 4\-Byte\-Ausrichtung bleiben, wenn Sie x86\-Binärdateien >+komprimieren. > .IP "" > Alle BCJ\-Filter unterstützen die gleichen \fIOptionen\fP: > .RS >@@ -1129,8 +1211,9 @@ > .TP > \fB\-\-info\-memory\fP > zeigt in einem menschenlesbaren Format an, wieviel physischen Speicher (RAM) >-das System nach Annahme von \fBxz\fP hat, sowie die Speicherbedarfsbegrenzung >-für Kompression und Dekompression, und beendet das Programm erfolgreich. >+und wie viele Prozessor\-Threads das System nach Annahme von \fBxz\fP hat, sowie >+die Speicherbedarfsbegrenzung für Kompression und Dekompression, und beendet >+das Programm erfolgreich. > .TP > \fB\-h\fP, \fB\-\-help\fP > zeigt eine Hilfemeldung mit den am häufigsten genutzten Optionen an und >@@ -1184,15 +1267,33 @@ > \fBxz \-\-robot \-\-info\-memory\fP gibt eine einzelne Zeile mit drei durch > Tabulatoren getrennten Spalten aus: > .IP 1. 4 >-Gesamter physischer Speicher (RAM) in Byte >+Gesamter physischer Speicher (RAM) in Byte. > .IP 2. 4 >-Speicherbedarfsbegrenzung für die Kompression in Byte. Ein spezieller Wert >-von Null bezeichnet die Standardeinstellung, die im Einzelthread\-Modus >-bedeutet, dass keine Begrenzung vorhanden ist. >+Speicherbedarfsbegrenzung für die Kompression in Byte >+(\fB\-\-memlimit\-compress\fP). Ein spezieller Wert von \fB0\fP bezeichnet die >+Standardeinstellung, die im Einzelthread\-Modus bedeutet, dass keine >+Begrenzung vorhanden ist. > .IP 3. 4 >-Speicherbedarfsbegrenzung für die Dekompression in Byte. Ein spezieller Wert >-von Null bezeichnet die Standardeinstellung, die im Einzelthread\-Modus >-bedeutet, dass keine Begrenzung vorhanden ist. >+Speicherbedarfsbegrenzung für die Dekompression in Byte >+(\fB\-\-memlimit\-decompress\fP). Ein spezieller Wert von \fB0\fP bezeichnet die >+Standardeinstellung, die im Einzelthread\-Modus bedeutet, dass keine >+Begrenzung vorhanden ist. >+.IP 4. 4 >+Seit \fBxz\fP 5.3.4alpha: Die Speichernutzung für Multithread\-Dekompression in >+Byte (\fB\-\-memlimit\-mt\-decompress\fP). Dies ist niemals \fB0\fP, da ein >+systemspezifischer Vorgabewert (gezeigt in Spalte 5) verwendet wird, falls >+keine Grenze ausdrücklich angegeben wurde. Dies ist auÃerdem niemals gröÃer >+als der Wert in in Spalte 3, selbst wenn mit \fB\-\-memlimit\-mt\-decompress\fP ein >+gröÃerer Wert angegeben wurde. >+.IP 5. 4 >+Seit \fBxz\fP 5.3.4alpha: Eine systemspezifisch vorgegebene Begrenzung des >+Speicherverbrauchs, die zur Begrenzung der Anzahl der Threads beim >+Komprimieren mit automatischer Anzahl der Threads (\fB\-\-threads=0\fP) und wenn >+keine Speicherbedarfsbegrenzung angegeben wurde (\fB\-\-memlimit\-compress\fP) >+verwendet wird. Dies wird auch als Standardwert für >+\fB\-\-memlimit\-mt\-decompress\fP verwendet. >+.IP 6. 4 >+Seit \fBxz\fP 5.3.4alpha: Anzahl der verfügbaren Prozessorthreads. > .PP > In der Zukunft könnte die Ausgabe von \fBxz \-\-robot \-\-info\-memory\fP weitere > Spalten enthalten, aber niemals mehr als eine einzelne Zeile. >@@ -1429,9 +1530,9 @@ > .TP > \fBXZ_OPT\fP > Dies dient der Ãbergabe von Optionen an \fBxz\fP, wenn es nicht möglich ist, >-die Optionen direkt in der Befehlszeile von \fBxz\fP zu übergeben. Dies ist >-beispielsweise der Fall, wenn \fBxz\fP von einem Skript oder Dienstprogramm >-ausgeführt wird, zum Beispiel GNU \fBtar\fP(1): >+die Optionen direkt in der Befehlszeile von \fBxz\fP zu übergeben. Dies ist der >+Fall, wenn \fBxz\fP von einem Skript oder Dienstprogramm ausgeführt wird, zum >+Beispiel GNU \fBtar\fP(1): > .RS > .RS > .PP >@@ -1449,8 +1550,7 @@ > .RS > .PP > .nf >-\f(CWXZ_OPT=${XZ_OPT\-"\-7e"} >-export XZ_OPT\fP >+\f(CWXZ_OPT=${XZ_OPT\-"\-7e"} export XZ_OPT\fP > .fi > .RE > .RE >@@ -1623,8 +1723,8 @@ > .RE > .PP > \fIbaz.tar.xz\fP mit der Voreinstellung \fB\-4e\fP (\fB\-4 \-\-extreme\fP) erzeugen, was >-langsamer ist als beispielsweise die Vorgabe \fB\-6\fP, aber weniger Speicher >-für Kompression und Dekompression benötigt (48\ MiB beziehungsweise 5\ MiB): >+langsamer ist als die Vorgabe \fB\-6\fP, aber weniger Speicher für Kompression >+und Dekompression benötigt (48\ MiB beziehungsweise 5\ MiB): > .RS > .PP > .nf >@@ -1647,8 +1747,7 @@ > .RS > .PP > .nf >-\f(CWfind . \-type f \e! \-name '*.xz' \-print0 \e >- | xargs \-0r \-P4 \-n16 xz \-T1\fP >+\f(CWfind . \-type f \e! \-name '*.xz' \-print0 \e | xargs \-0r \-P4 \-n16 xz \-T1\fP > .fi > .RE > .PP >@@ -1680,11 +1779,7 @@ > .RS > .PP > .nf >-\f(CWif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" || >- [ "$XZ_VERSION" \-lt 50000002 ]; then >- echo "Ihre Version von Xz ist zu alt." >-fi >-unset XZ_VERSION LIBLZMA_VERSION\fP >+\f(CWif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" || [ "$XZ_VERSION" \-lt 50000002 ]; then echo "Ihre Version von Xz ist zu alt." fi unset XZ_VERSION LIBLZMA_VERSION\fP > .fi > .RE > .PP >@@ -1693,12 +1788,7 @@ > .RS > .PP > .nf >-\f(CWNEWLIM=$((123 << 20)) # 123 MiB >-OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3) >-if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then >- XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM" >- export XZ_OPT >-fi\fP >+\f(CWNEWLIM=$((123 << 20))\ \ # 123 MiB OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3) if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM" export XZ_OPT fi\fP > .fi > .RE > . >@@ -1717,7 +1807,7 @@ > tab(;); > c c > n n. >-Voreinstellung;KompCPU >+Voreinst.;KomprCPU > \-0;0 > \-1;1 > \-2;2 >@@ -1845,4 +1935,4 @@ > .br > XZ Embedded: <https://tukaani.org/xz/embedded.html> > .br >-LZMA\-SDK: <http://7\-zip.org/sdk.html> >+LZMA SDK: <https://7\-zip.org/sdk.html> >diff -ur xz-5.2.5/po4a/man/de/xzdec.1 xz-5.4.3/po4a/man/de/xzdec.1 >--- xz-5.2.5/po4a/man/de/xzdec.1 2020-03-17 17:31:37 >+++ xz-5.4.3/po4a/man/de/xzdec.1 2023-05-04 17:33:07 >@@ -19,8 +19,7 @@ > .SH BESCHREIBUNG > \fBxzdec\fP ist ein auf Liblzma basierendes Nur\-Dekompressionswerkzeug für > \&\fB.xz\fP\-Dateien (und \fBnur\fP für \fB.xz\fP\-Dateien). \fBxzdec\fP ist als direkter >-Ersatz für \fBxz\fP(1) in jenen Situationen konzipiert, wo ein Skript \fBxz >-\-\-decompress \-\-stdout\fP (und eventuelle einige andere höufig genutzte >+Ersatz für \fBxz\fP(1) in jenen Situationen konzipiert, wo ein Skript \fBxz \-\-decompress \-\-stdout\fP (und eventuelle einige andere höufig genutzte > Optionen) zum Dekomprimieren von \fB.xz\fP\-Dateien. \fBlzmadec\fP ist weitgehend > identisch zu \fBxzdec\fP, mit der Ausnahme, dass \fBlzmadec\fP \fB.lzma\fP\-Dateien > anstelle von \fB.xz\fP\-Dateien unterstützt. >diff -ur xz-5.2.5/po4a/man/de/xzdiff.1 xz-5.4.3/po4a/man/de/xzdiff.1 >--- xz-5.2.5/po4a/man/de/xzdiff.1 2020-03-17 17:31:37 >+++ xz-5.4.3/po4a/man/de/xzdiff.1 2023-05-04 17:33:07 >@@ -11,7 +11,7 @@ > .\" This file was generated with po4a. Translate the source file. > .\" > .\"******************************************************************* >-.TH XZDIFF 1 "19. März 2011" Tukaani XZ\-Dienstprogramme >+.TH XZDIFF 1 "4. Juni 2021" Tukaani XZ\-Dienstprogramme > .SH BEZEICHNUNG > xzcmp, xzdiff, lzcmp, lzdiff \- komprimierte Dateien vergleichen > .SH ÃBERSICHT >@@ -25,20 +25,21 @@ > .SH BESCHREIBUNG > Die Dienstprogramme \fBxzcmp\fP und \fBxzdiff\fP führen die Programme \fBcmp\fP(1) > beziehungsweise \fBdiff\fP(1) mit Dateien aus, die mittels \fBxz\fP(1), >-\fBlzma\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1) oder \fBlzop\fP(1) komprimiert wurden. Alle >-angegebenen Optionen werden direkt an \fBcmp\fP(1) oder \fBdiff\fP(1) >+\fBlzma\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1) oder \fBzstd\fP komprimiert >+wurden. Alle angegebenen Optionen werden direkt an \fBcmp\fP(1) oder \fBdiff\fP(1) > übergeben. Wird nur eine Datei angegeben, wird diese \fIDatei1\fP (die eine > Endung entsprechend eines der unterstützten Kompressionsformate haben muss) > mit der \fIDatei1\fP verglichen, von der die Kompressionsformat\-Endung entfernt > wird. Werden zwei Dateien angegeben, dann werden deren Inhalte (falls nötig, > unkomprimiert) an \fBcmp\fP(1) oder \fBdiff\fP(1) weitergeleitet. Der Exit\-Status >-von \fBcmp\fP(1) oder \fBdiff\fP(1) wird dabei bewahrt. >+von \fBcmp\fP(1) oder \fBdiff\fP(1) wird dabei bewahrt (sofern kein >+Dekompressionsfehler auftrat; in diesem Fall ist der Exit\-Status 2). > .PP > Die Namen \fBlzcmp\fP und \fBlzdiff\fP dienen der Abwärtskompatibilität zu den > LZMA\-Dienstprogrammen. > .SH "SIEHE AUCH" > \fBcmp\fP(1), \fBdiff\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1), >-\fBzdiff\fP(1) >+\fBzstd\fP(1), \fBzdiff\fP(1) > .SH FEHLER > Die Meldungen der Programme \fBcmp\fP(1) oder \fBdiff\fP(1) können auf temporäre > Dateinamen verweisen anstatt auf die tatsächlich angegebenen Dateinamen. >diff -ur xz-5.2.5/po4a/man/de/xzgrep.1 xz-5.4.3/po4a/man/de/xzgrep.1 >--- xz-5.2.5/po4a/man/de/xzgrep.1 2020-03-17 17:31:37 >+++ xz-5.4.3/po4a/man/de/xzgrep.1 2023-05-04 17:33:07 >@@ -11,11 +11,11 @@ > .\" This file was generated with po4a. Translate the source file. > .\" > .\"******************************************************************* >-.TH XZGREP 1 "19. März 2011" Tukaani XZ\-Dienstprogramme >+.TH XZGREP 1 "19. Juli 2022" Tukaani XZ\-Dienstprogramme > .SH BEZEICHNUNG > xzgrep \- komprimierte Dateien nach einem regulären Ausdruck durchsuchen > .SH ÃBERSICHT >-\fBxzgrep\fP [\fIgrep\-Optionen\fP] [\fB\-e\fP] \fIMuster\fP \fIDateiname\fP ⦠>+\fBxzgrep\fP [\fIgrep_Optionen\fP] [\fB\-e\fP] \fIMuster\fP [\fIDatei â¦\fP] > .br > \fBxzegrep\fP ⦠> .br >@@ -28,24 +28,37 @@ > \fBlzfgrep\fP ⦠> .SH BESCHREIBUNG > \fBxzgrep\fP wendet \fBgrep\fP(1) auf \fIDateien\fP an, die entweder unkomprimiert >-oder mit \fBxz\fP(1), \fBlzma\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1) oder \fBlzop\fP(1) >-komprimiert sein können. Alle angegebenen Optionen werden direkt an >+oder mit \fBxz\fP(1), \fBlzma\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1) oder >+\fBzstd\fP komprimiert sein können. Alle angegebenen Optionen werden direkt an > \fBgrep\fP(1) übergeben. > .PP > Wenn keine \fIDatei\fP angegeben ist, wird die Standardeingabe dekomprimiert > (falls nötig) und an \fBgrep\fP übergeben. Beim Lesen aus der Standardeingabe >-keine Dateien unterstützt, die mit \fBgzip\fP(1), \fBbzip2\fP(1) oder \fBlzop\fP(1) >-komprimiert sind. >+keine Dateien unterstützt, die mit \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1) oder >+\fBzstd\fP komprimiert sind. > .PP > Wenn \fBxzgrep\fP als \fBxzegrep\fP oder \fBxzfgrep\fP aufgerufen wird, dann wird >-\fBegrep\fP(1) oder \fBfgrep\fP(1) anstelle von \fBgrep\fP(1) verwendet. Genauso >+\fBgrep \-E\fP oder \fBgrep \-F\fP anstelle von \fBgrep\fP(1) verwendet. Genauso > verhalten sich die Befehle \fBlzgrep\fP, \fBlzegrep\fP und \fBlzfgrep\fP, die die > Abwärtskompatibilität zu den LZMA\-Dienstprogrammen gewährleisten. >-.PP >+.SH EXIT\-STATUS >+.TP >+0 >+In mindestens einer der Eingabedateien wurde mindestens ein Treffer >+gefunden. Es sind keine Fehler aufgetreten. >+.TP >+1 >+In keiner der Eingabedateien wurde ein Treffer gefunden. Es sind keine >+Fehler aufgetreten. >+.TP >+>1 >+Ein oder mehrere Fehler sind aufgetreten. Es ist unbekannt, ob Treffer >+gefunden wurden. > .SH UMGEBUNGSVARIABLEN > .TP > \fBGREP\fP > Wenn die Umgebungsvariable \fBGREP\fP gesetzt ist, verwendet \fBxzgrep\fP deren >-Inhalt anstelle von \fBgrep\fP(1), \fBegrep\fP(1) oder \fBfgrep\fP(1). >+Inhalt anstelle von \fBgrep\fP(1), \fBgrep \-E\fP oder \fBgrep \-F\fP. > .SH "SIEHE AUCH" >-\fBgrep\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1), \fBzgrep\fP(1) >+\fBgrep\fP(1), \fBxz\fP(1), \fBgzip\fP(1), \fBbzip2\fP(1), \fBlzop\fP(1), \fBzstd\fP(1), >+\fBzgrep\fP(1) >Only in xz-5.4.3/po4a/man: fr >Only in xz-5.4.3/po4a/man: ko >Only in xz-5.4.3/po4a/man: pt_BR >Only in xz-5.4.3/po4a/man: ro >Only in xz-5.4.3/po4a/man: uk >diff -ur xz-5.2.5/po4a/po4a.conf xz-5.4.3/po4a/po4a.conf >--- xz-5.2.5/po4a/po4a.conf 2020-03-17 17:28:50 >+++ xz-5.4.3/po4a/po4a.conf 2023-05-04 17:21:05 >@@ -2,7 +2,7 @@ > # to get a new .po file. After translating the .po file, run > # "update-po" again to generate the translated man pages. > >-[po4a_langs] de >+[po4a_langs] de fr ko pt_BR ro uk > [po4a_paths] xz-man.pot $lang:$lang.po > > [type: man] ../src/xz/xz.1 $lang:man/$lang/xz.1 >Only in xz-5.4.3/po4a: pt_BR.po >Only in xz-5.4.3/po4a: ro.po >Only in xz-5.4.3/po4a: uk.po >diff -ur xz-5.2.5/po4a/update-po xz-5.4.3/po4a/update-po >--- xz-5.2.5/po4a/update-po 2020-03-17 17:28:50 >+++ xz-5.4.3/po4a/update-po 2023-05-04 17:21:05 >@@ -26,7 +26,7 @@ > if test ! -f po4a.conf; then > cd `dirname "$0"` || exit 1 > if test ! -f po4a.conf; then >- echo "update-po: Error: Cannot find po4a.conf." >&2 >+ echo "po4a/update-po: Error: Cannot find po4a.conf." >&2 > exit 1 > fi > fi >@@ -41,5 +41,5 @@ > po4a --force --verbose \ > --package-name="XZ Utils" \ > --package-version="$PACKAGE_VERSION" \ >- --copyright-holder="This file is put in the public domain." \ >+ --copyright-holder="[See the headers in the input files.]" \ > po4a.conf >diff -ur xz-5.2.5/po4a/xz-man.pot xz-5.4.3/po4a/xz-man.pot >--- xz-5.2.5/po4a/xz-man.pot 2020-03-17 17:31:37 >+++ xz-5.4.3/po4a/xz-man.pot 2023-05-04 17:33:07 >@@ -1,19 +1,19 @@ > # SOME DESCRIPTIVE TITLE >-# Copyright (C) YEAR This file is put in the public domain. >+# Copyright (C) YEAR [See the headers in the input files.] > # This file is distributed under the same license as the XZ Utils package. > # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. > # > #, fuzzy > msgid "" > msgstr "" >-"Project-Id-Version: XZ Utils 5.2.5\n" >-"POT-Creation-Date: 2020-03-17 16:31+0200\n" >+"Project-Id-Version: XZ Utils 5.4.3\n" >+"POT-Creation-Date: 2023-05-04 22:33+0800\n" > "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" > "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" > "Language-Team: LANGUAGE <LL@li.org>\n" > "Language: \n" > "MIME-Version: 1.0\n" >-"Content-Type: text/plain; charset=CHARSET\n" >+"Content-Type: text/plain; charset=UTF-8\n" > "Content-Transfer-Encoding: 8bit\n" > > #. type: TH >@@ -25,23 +25,29 @@ > #. type: TH > #: ../src/xz/xz.1:8 > #, no-wrap >-msgid "2020-02-01" >+msgid "2022-12-01" > msgstr "" > > #. type: TH >-#: ../src/xz/xz.1:8 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7 ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9 ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7 >+#: ../src/xz/xz.1:8 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7 >+#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9 >+#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7 > #, no-wrap > msgid "Tukaani" > msgstr "" > > #. type: TH >-#: ../src/xz/xz.1:8 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7 ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9 ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7 >+#: ../src/xz/xz.1:8 ../src/xzdec/xzdec.1:7 ../src/lzmainfo/lzmainfo.1:7 >+#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9 >+#: ../src/scripts/xzless.1:10 ../src/scripts/xzmore.1:7 > #, no-wrap > msgid "XZ Utils" > msgstr "" > > #. type: SH >-#: ../src/xz/xz.1:10 ../src/xzdec/xzdec.1:8 ../src/lzmainfo/lzmainfo.1:8 ../src/scripts/xzdiff.1:10 ../src/scripts/xzgrep.1:10 ../src/scripts/xzless.1:11 ../src/scripts/xzmore.1:8 >+#: ../src/xz/xz.1:10 ../src/xzdec/xzdec.1:8 ../src/lzmainfo/lzmainfo.1:8 >+#: ../src/scripts/xzdiff.1:10 ../src/scripts/xzgrep.1:10 >+#: ../src/scripts/xzless.1:11 ../src/scripts/xzmore.1:8 > #, no-wrap > msgid "NAME" > msgstr "" >@@ -54,7 +60,9 @@ > msgstr "" > > #. type: SH >-#: ../src/xz/xz.1:13 ../src/xzdec/xzdec.1:10 ../src/lzmainfo/lzmainfo.1:10 ../src/scripts/xzdiff.1:12 ../src/scripts/xzgrep.1:12 ../src/scripts/xzless.1:13 ../src/scripts/xzmore.1:10 >+#: ../src/xz/xz.1:13 ../src/xzdec/xzdec.1:10 ../src/lzmainfo/lzmainfo.1:10 >+#: ../src/scripts/xzdiff.1:12 ../src/scripts/xzgrep.1:12 >+#: ../src/scripts/xzless.1:13 ../src/scripts/xzmore.1:10 > #, no-wrap > msgid "SYNOPSIS" > msgstr "" >@@ -104,22 +112,25 @@ > msgstr "" > > #. type: SH >-#: ../src/xz/xz.1:51 ../src/xzdec/xzdec.1:18 ../src/lzmainfo/lzmainfo.1:15 ../src/scripts/xzdiff.1:24 ../src/scripts/xzgrep.1:33 ../src/scripts/xzless.1:19 ../src/scripts/xzmore.1:16 >+#: ../src/xz/xz.1:51 ../src/xzdec/xzdec.1:18 ../src/lzmainfo/lzmainfo.1:15 >+#: ../src/scripts/xzdiff.1:24 ../src/scripts/xzgrep.1:33 >+#: ../src/scripts/xzless.1:19 ../src/scripts/xzmore.1:16 > #, no-wrap > msgid "DESCRIPTION" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:65 >+#: ../src/xz/xz.1:70 > msgid "" > "B<xz> is a general-purpose data compression tool with command line syntax " > "similar to B<gzip>(1) and B<bzip2>(1). The native file format is the " > "B<.xz> format, but the legacy B<.lzma> format used by LZMA Utils and raw " >-"compressed streams with no container format headers are also supported." >+"compressed streams with no container format headers are also supported. In " >+"addition, decompression of the B<.lz> format used by B<lzip> is supported." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:87 >+#: ../src/xz/xz.1:92 > msgid "" > "B<xz> compresses or decompresses each I<file> according to the selected " > "operation mode. If no I<files> are given or I<file> is B<->, B<xz> reads " >@@ -130,66 +141,73 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:97 >+#: ../src/xz/xz.1:102 > msgid "" > "Unless B<--stdout> is specified, I<files> other than B<-> are written to a " > "new file whose name is derived from the source I<file> name:" > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:97 ../src/xz/xz.1:103 ../src/xz/xz.1:127 ../src/xz/xz.1:132 ../src/xz/xz.1:135 ../src/xz/xz.1:138 ../src/xz/xz.1:154 ../src/xz/xz.1:395 ../src/xz/xz.1:398 ../src/xz/xz.1:405 ../src/xz/xz.1:621 ../src/xz/xz.1:623 ../src/xz/xz.1:722 ../src/xz/xz.1:733 ../src/xz/xz.1:742 ../src/xz/xz.1:750 ../src/xz/xz.1:965 ../src/xz/xz.1:974 ../src/xz/xz.1:986 ../src/xz/xz.1:1552 ../src/xz/xz.1:1558 ../src/xz/xz.1:1674 ../src/xz/xz.1:1678 ../src/xz/xz.1:1681 ../src/xz/xz.1:1684 ../src/xz/xz.1:1688 ../src/xz/xz.1:1695 ../src/xz/xz.1:1697 >+#: ../src/xz/xz.1:102 ../src/xz/xz.1:108 ../src/xz/xz.1:133 ../src/xz/xz.1:138 >+#: ../src/xz/xz.1:141 ../src/xz/xz.1:144 ../src/xz/xz.1:160 ../src/xz/xz.1:421 >+#: ../src/xz/xz.1:424 ../src/xz/xz.1:431 ../src/xz/xz.1:676 ../src/xz/xz.1:678 >+#: ../src/xz/xz.1:777 ../src/xz/xz.1:788 ../src/xz/xz.1:797 ../src/xz/xz.1:805 >+#: ../src/xz/xz.1:1033 ../src/xz/xz.1:1042 ../src/xz/xz.1:1054 >+#: ../src/xz/xz.1:1729 ../src/xz/xz.1:1735 ../src/xz/xz.1:1853 >+#: ../src/xz/xz.1:1857 ../src/xz/xz.1:1860 ../src/xz/xz.1:1863 >+#: ../src/xz/xz.1:1867 ../src/xz/xz.1:1874 ../src/xz/xz.1:1876 > #, no-wrap > msgid "\\(bu" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:103 >+#: ../src/xz/xz.1:108 > msgid "" > "When compressing, the suffix of the target file format (B<.xz> or B<.lzma>) " > "is appended to the source filename to get the target filename." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:117 >+#: ../src/xz/xz.1:123 > msgid "" >-"When decompressing, the B<.xz> or B<.lzma> suffix is removed from the " >-"filename to get the target filename. B<xz> also recognizes the suffixes " >+"When decompressing, the B<.xz>, B<.lzma>, or B<.lz> suffix is removed from " >+"the filename to get the target filename. B<xz> also recognizes the suffixes " > "B<.txz> and B<.tlz>, and replaces them with the B<.tar> suffix." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:121 >+#: ../src/xz/xz.1:127 > msgid "" > "If the target file already exists, an error is displayed and the I<file> is " > "skipped." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:127 >+#: ../src/xz/xz.1:133 > msgid "" > "Unless writing to standard output, B<xz> will display a warning and skip the " > "I<file> if any of the following applies:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:132 >+#: ../src/xz/xz.1:138 > msgid "" > "I<File> is not a regular file. Symbolic links are not followed, and thus " > "they are not considered to be regular files." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:135 >+#: ../src/xz/xz.1:141 > msgid "I<File> has more than one hard link." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:138 >+#: ../src/xz/xz.1:144 > msgid "I<File> has setuid, setgid, or sticky bit set." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:154 >+#: ../src/xz/xz.1:160 > msgid "" > "The operation mode is set to compress and the I<file> already has a suffix " > "of the target file format (B<.xz> or B<.txz> when compressing to the B<.xz> " >@@ -197,15 +215,15 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:163 >+#: ../src/xz/xz.1:170 > msgid "" > "The operation mode is set to decompress and the I<file> doesn't have a " >-"suffix of any of the supported file formats (B<.xz>, B<.txz>, B<.lzma>, or " >-"B<.tlz>)." >+"suffix of any of the supported file formats (B<.xz>, B<.txz>, B<.lzma>, " >+"B<.tlz>, or B<.lz>)." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:178 >+#: ../src/xz/xz.1:185 > msgid "" > "After successfully compressing or decompressing the I<file>, B<xz> copies " > "the owner, group, permissions, access time, and modification time from the " >@@ -217,15 +235,15 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:187 >+#: ../src/xz/xz.1:195 > msgid "" > "Once the target file has been successfully closed, the source I<file> is " > "removed unless B<--keep> was specified. The source I<file> is never removed " >-"if the output is written to standard output." >+"if the output is written to standard output or if an error occurs." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:199 >+#: ../src/xz/xz.1:207 > msgid "" > "Sending B<SIGINFO> or B<SIGUSR1> to the B<xz> process makes it print " > "progress information to standard error. This has only limited use since " >@@ -234,13 +252,13 @@ > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:200 >+#: ../src/xz/xz.1:208 > #, no-wrap > msgid "Memory usage" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:216 >+#: ../src/xz/xz.1:224 > msgid "" > "The memory usage of B<xz> varies from a few hundred kilobytes to several " > "gigabytes depending on the compression settings. The settings used when " >@@ -253,22 +271,22 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:228 >+#: ../src/xz/xz.1:236 > msgid "" > "Especially users of older systems may find the possibility of very large " > "memory usage annoying. To prevent uncomfortable surprises, B<xz> has a " > "built-in memory usage limiter, which is disabled by default. While some " > "operating systems provide ways to limit the memory usage of processes, " >-"relying on it wasn't deemed to be flexible enough (e.g. using B<ulimit>(1) " >-"to limit virtual memory tends to cripple B<mmap>(2))." >+"relying on it wasn't deemed to be flexible enough (for example, using " >+"B<ulimit>(1) to limit virtual memory tends to cripple B<mmap>(2))." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:248 >+#: ../src/xz/xz.1:258 > msgid "" > "The memory usage limiter can be enabled with the command line option " > "B<--memlimit=>I<limit>. Often it is more convenient to enable the limiter " >-"by default by setting the environment variable B<XZ_DEFAULTS>, e.g.\\& " >+"by default by setting the environment variable B<XZ_DEFAULTS>, for example, " > "B<XZ_DEFAULTS=--memlimit=150MiB>. It is possible to set the limits " > "separately for compression and decompression by using " > "B<--memlimit-compress=>I<limit> and B<--memlimit-decompress=>I<limit>. " >@@ -279,7 +297,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:265 >+#: ../src/xz/xz.1:277 > msgid "" > "If the specified memory usage limit is exceeded when decompressing, B<xz> " > "will display an error and decompressing the file will fail. If the limit is " >@@ -287,55 +305,55 @@ > "the limit is no longer exceeded (except when using B<--format=raw> or " > "B<--no-adjust>). This way the operation won't fail unless the limit is very " > "small. The scaling of the settings is done in steps that don't match the " >-"compression level presets, e.g. if the limit is only slightly less than the " >-"amount required for B<xz -9>, the settings will be scaled down only a " >-"little, not all the way down to B<xz -8>." >+"compression level presets, for example, if the limit is only slightly less " >+"than the amount required for B<xz -9>, the settings will be scaled down only " >+"a little, not all the way down to B<xz -8>." > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:266 >+#: ../src/xz/xz.1:278 > #, no-wrap > msgid "Concatenation and padding with .xz files" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:274 >+#: ../src/xz/xz.1:286 > msgid "" > "It is possible to concatenate B<.xz> files as is. B<xz> will decompress " > "such files as if they were a single B<.xz> file." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:283 >+#: ../src/xz/xz.1:295 > msgid "" > "It is possible to insert padding between the concatenated parts or after the " > "last part. The padding must consist of null bytes and the size of the " >-"padding must be a multiple of four bytes. This can be useful e.g. if the " >-"B<.xz> file is stored on a medium that measures file sizes in 512-byte " >-"blocks." >+"padding must be a multiple of four bytes. This can be useful, for example, " >+"if the B<.xz> file is stored on a medium that measures file sizes in " >+"512-byte blocks." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:287 >+#: ../src/xz/xz.1:299 > msgid "" > "Concatenation and padding are not allowed with B<.lzma> files or raw " > "streams." > msgstr "" > > #. type: SH >-#: ../src/xz/xz.1:288 ../src/xzdec/xzdec.1:61 >+#: ../src/xz/xz.1:300 ../src/xzdec/xzdec.1:61 > #, no-wrap > msgid "OPTIONS" > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:290 >+#: ../src/xz/xz.1:302 > #, no-wrap > msgid "Integer suffixes and special values" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:294 >+#: ../src/xz/xz.1:306 > msgid "" > "In most places where an integer argument is expected, an optional suffix is " > "supported to easily indicate large integers. There must be no space between " >@@ -343,70 +361,70 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:294 >+#: ../src/xz/xz.1:306 > #, no-wrap > msgid "B<KiB>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:305 >+#: ../src/xz/xz.1:317 > msgid "" > "Multiply the integer by 1,024 (2^10). B<Ki>, B<k>, B<kB>, B<K>, and B<KB> " > "are accepted as synonyms for B<KiB>." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:305 >+#: ../src/xz/xz.1:317 > #, no-wrap > msgid "B<MiB>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:315 >+#: ../src/xz/xz.1:327 > msgid "" > "Multiply the integer by 1,048,576 (2^20). B<Mi>, B<m>, B<M>, and B<MB> are " > "accepted as synonyms for B<MiB>." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:315 >+#: ../src/xz/xz.1:327 > #, no-wrap > msgid "B<GiB>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:325 >+#: ../src/xz/xz.1:337 > msgid "" > "Multiply the integer by 1,073,741,824 (2^30). B<Gi>, B<g>, B<G>, and B<GB> " > "are accepted as synonyms for B<GiB>." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:330 >+#: ../src/xz/xz.1:342 > msgid "" > "The special value B<max> can be used to indicate the maximum integer value " > "supported by the option." > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:331 >+#: ../src/xz/xz.1:343 > #, no-wrap > msgid "Operation mode" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:334 >+#: ../src/xz/xz.1:346 > msgid "If multiple operation mode options are given, the last one takes effect." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:334 >+#: ../src/xz/xz.1:346 > #, no-wrap > msgid "B<-z>, B<--compress>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:343 >+#: ../src/xz/xz.1:355 > msgid "" > "Compress. This is the default operation mode when no operation mode option " > "is specified and no other operation mode is implied from the command name " >@@ -414,24 +432,24 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:343 ../src/xzdec/xzdec.1:62 >+#: ../src/xz/xz.1:355 ../src/xzdec/xzdec.1:62 > #, no-wrap > msgid "B<-d>, B<--decompress>, B<--uncompress>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:346 >+#: ../src/xz/xz.1:358 > msgid "Decompress." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:346 >+#: ../src/xz/xz.1:358 > #, no-wrap > msgid "B<-t>, B<--test>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:355 >+#: ../src/xz/xz.1:367 > msgid "" > "Test the integrity of compressed I<files>. This option is equivalent to " > "B<--decompress --stdout> except that the decompressed data is discarded " >@@ -440,13 +458,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:355 >+#: ../src/xz/xz.1:367 > #, no-wrap > msgid "B<-l>, B<--list>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:364 >+#: ../src/xz/xz.1:376 > msgid "" > "Print information about compressed I<files>. No uncompressed output is " > "produced, and no files are created or removed. In list mode, the program " >@@ -455,60 +473,70 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:379 >+#: ../src/xz/xz.1:391 > msgid "" > "The default listing shows basic information about I<files>, one file per " > "line. To get more detailed information, use also the B<--verbose> option. " > "For even more information, use B<--verbose> twice, but note that this may be " > "slow, because getting all the extra information requires many seeks. The " >-"width of verbose output exceeds 80 characters, so piping the output to " >-"e.g.\\& B<less\\ -S> may be convenient if the terminal isn't wide enough." >+"width of verbose output exceeds 80 characters, so piping the output to, for " >+"example, B<less\\ -S> may be convenient if the terminal isn't wide enough." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:386 >+#: ../src/xz/xz.1:398 > msgid "" > "The exact output may vary between B<xz> versions and different locales. For " > "machine-readable output, B<--robot --list> should be used." > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:387 >+#: ../src/xz/xz.1:399 > #, no-wrap > msgid "Operation modifiers" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:388 ../src/xzdec/xzdec.1:69 >+#: ../src/xz/xz.1:400 ../src/xzdec/xzdec.1:69 > #, no-wrap > msgid "B<-k>, B<--keep>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:391 >+#: ../src/xz/xz.1:403 > msgid "Don't delete the input files." > msgstr "" > >+#. type: Plain text >+#: ../src/xz/xz.1:417 >+msgid "" >+"Since B<xz> 5.2.6, this option also makes B<xz> compress or decompress even " >+"if the input is a symbolic link to a regular file, has more than one hard " >+"link, or has the setuid, setgid, or sticky bit set. The setuid, setgid, and " >+"sticky bits are not copied to the target file. In earlier versions this was " >+"only done with B<--force>." >+msgstr "" >+ > #. type: TP >-#: ../src/xz/xz.1:391 >+#: ../src/xz/xz.1:417 > #, no-wrap > msgid "B<-f>, B<--force>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:394 >+#: ../src/xz/xz.1:420 > msgid "This option has several effects:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:398 >+#: ../src/xz/xz.1:424 > msgid "" > "If the target file already exists, delete it before compressing or " > "decompressing." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:405 >+#: ../src/xz/xz.1:431 > msgid "" > "Compress or decompress even if the input is a symbolic link to a regular " > "file, has more than one hard link, or has the setuid, setgid, or sticky bit " >@@ -516,7 +544,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:430 >+#: ../src/xz/xz.1:456 > msgid "" > "When used with B<--decompress> B<--stdout> and B<xz> cannot recognize the " > "type of the source file, copy the source file as is to standard output. " >@@ -529,26 +557,26 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:431 ../src/xzdec/xzdec.1:76 >+#: ../src/xz/xz.1:457 ../src/xzdec/xzdec.1:76 > #, no-wrap > msgid "B<-c>, B<--stdout>, B<--to-stdout>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:437 >+#: ../src/xz/xz.1:463 > msgid "" > "Write the compressed or decompressed data to standard output instead of a " > "file. This implies B<--keep>." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:437 >+#: ../src/xz/xz.1:463 > #, no-wrap > msgid "B<--single-stream>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:446 >+#: ../src/xz/xz.1:472 > msgid "" > "Decompress only the first B<.xz> stream, and silently ignore possible " > "remaining input data following the stream. Normally such trailing garbage " >@@ -556,7 +584,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:455 >+#: ../src/xz/xz.1:481 > msgid "" > "B<xz> never decompresses more than one stream from B<.lzma> files or raw " > "streams, but this option still makes B<xz> ignore the possible trailing data " >@@ -564,20 +592,20 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:460 >+#: ../src/xz/xz.1:486 > msgid "" > "This option has no effect if the operation mode is not B<--decompress> or " > "B<--test>." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:460 >+#: ../src/xz/xz.1:486 > #, no-wrap > msgid "B<--no-sparse>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:472 >+#: ../src/xz/xz.1:498 > msgid "" > "Disable creation of sparse files. By default, if decompressing into a " > "regular file, B<xz> tries to make the file sparse if the decompressed data " >@@ -589,13 +617,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:472 >+#: ../src/xz/xz.1:498 > #, no-wrap > msgid "B<-S> I<.suf>, B<--suffix=>I<.suf>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:484 >+#: ../src/xz/xz.1:510 > msgid "" > "When compressing, use I<.suf> as the suffix for the target file instead of " > "B<.xz> or B<.lzma>. If not writing to standard output and the source file " >@@ -604,16 +632,16 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:497 >+#: ../src/xz/xz.1:524 > msgid "" > "When decompressing, recognize files with the suffix I<.suf> in addition to " >-"files with the B<.xz>, B<.txz>, B<.lzma>, or B<.tlz> suffix. If the source " >-"file has the suffix I<.suf>, the suffix is removed to get the target " >+"files with the B<.xz>, B<.txz>, B<.lzma>, B<.tlz>, or B<.lz> suffix. If the " >+"source file has the suffix I<.suf>, the suffix is removed to get the target " > "filename." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:503 >+#: ../src/xz/xz.1:530 > msgid "" > "When compressing or decompressing raw streams (B<--format=raw>), the suffix " > "must always be specified unless writing to standard output, because there is " >@@ -621,13 +649,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:503 >+#: ../src/xz/xz.1:530 > #, no-wrap > msgid "B<--files>[B<=>I<file>]" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:517 >+#: ../src/xz/xz.1:544 > msgid "" > "Read the filenames to process from I<file>; if I<file> is omitted, filenames " > "are read from standard input. Filenames must be terminated with the newline " >@@ -637,43 +665,43 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:517 >+#: ../src/xz/xz.1:544 > #, no-wrap > msgid "B<--files0>[B<=>I<file>]" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:521 >+#: ../src/xz/xz.1:548 > msgid "" > "This is identical to B<--files>[B<=>I<file>] except that each filename must " > "be terminated with the null character." > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:522 >+#: ../src/xz/xz.1:549 > #, no-wrap > msgid "Basic file format and compression options" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:523 >+#: ../src/xz/xz.1:550 > #, no-wrap > msgid "B<-F> I<format>, B<--format=>I<format>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:528 >+#: ../src/xz/xz.1:555 > msgid "Specify the file I<format> to compress or decompress:" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:529 >+#: ../src/xz/xz.1:556 > #, no-wrap > msgid "B<auto>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:541 >+#: ../src/xz/xz.1:568 > msgid "" > "This is the default. When compressing, B<auto> is equivalent to B<xz>. " > "When decompressing, the format of the input file is automatically detected. " >@@ -682,26 +710,26 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:541 >+#: ../src/xz/xz.1:568 > #, no-wrap > msgid "B<xz>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:548 >+#: ../src/xz/xz.1:575 > msgid "" > "Compress to the B<.xz> file format, or accept only B<.xz> files when " > "decompressing." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:548 >+#: ../src/xz/xz.1:575 > #, no-wrap > msgid "B<lzma>, B<alone>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:558 >+#: ../src/xz/xz.1:585 > msgid "" > "Compress to the legacy B<.lzma> file format, or accept only B<.lzma> files " > "when decompressing. The alternative name B<alone> is provided for backwards " >@@ -709,13 +737,44 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:558 >+#: ../src/xz/xz.1:585 > #, no-wrap >+msgid "B<lzip>" >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:591 >+msgid "Accept only B<.lz> files when decompressing. Compression is not supported." >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:604 >+msgid "" >+"The B<.lz> format version 0 and the unextended version 1 are supported. " >+"Version 0 files were produced by B<lzip> 1.3 and older. Such files aren't " >+"common but may be found from file archives as a few source packages were " >+"released in this format. People might have old personal files in this " >+"format too. Decompression support for the format version 0 was removed in " >+"B<lzip> 1.18." >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:613 >+msgid "" >+"B<lzip> 1.4 and later create files in the format version 1. The sync flush " >+"marker extension to the format version 1 was added in B<lzip> 1.6. This " >+"extension is rarely used and isn't supported by B<xz> (diagnosed as corrupt " >+"input)." >+msgstr "" >+ >+#. type: TP >+#: ../src/xz/xz.1:613 >+#, no-wrap > msgid "B<raw>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:566 >+#: ../src/xz/xz.1:621 > msgid "" > "Compress or uncompress a raw stream (no headers). This is meant for " > "advanced users only. To decode raw streams, you need use B<--format=raw> " >@@ -724,13 +783,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:567 >+#: ../src/xz/xz.1:622 > #, no-wrap > msgid "B<-C> I<check>, B<--check=>I<check>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:582 >+#: ../src/xz/xz.1:637 > msgid "" > "Specify the type of the integrity check. The check is calculated from the " > "uncompressed data and stored in the B<.xz> file. This option has an effect " >@@ -740,18 +799,18 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:586 >+#: ../src/xz/xz.1:641 > msgid "Supported I<check> types:" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:587 >+#: ../src/xz/xz.1:642 > #, no-wrap > msgid "B<none>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:593 >+#: ../src/xz/xz.1:648 > msgid "" > "Don't calculate an integrity check at all. This is usually a bad idea. " > "This can be useful when integrity of the data is verified by other means " >@@ -759,24 +818,24 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:593 >+#: ../src/xz/xz.1:648 > #, no-wrap > msgid "B<crc32>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:596 >+#: ../src/xz/xz.1:651 > msgid "Calculate CRC32 using the polynomial from IEEE-802.3 (Ethernet)." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:596 >+#: ../src/xz/xz.1:651 > #, no-wrap > msgid "B<crc64>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:601 >+#: ../src/xz/xz.1:656 > msgid "" > "Calculate CRC64 using the polynomial from ECMA-182. This is the default, " > "since it is slightly better than CRC32 at detecting damaged files and the " >@@ -784,50 +843,50 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:601 >+#: ../src/xz/xz.1:656 > #, no-wrap > msgid "B<sha256>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:605 >+#: ../src/xz/xz.1:660 > msgid "Calculate SHA-256. This is somewhat slower than CRC32 and CRC64." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:611 >+#: ../src/xz/xz.1:666 > msgid "" > "Integrity of the B<.xz> headers is always verified with CRC32. It is not " > "possible to change or disable it." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:611 >+#: ../src/xz/xz.1:666 > #, no-wrap > msgid "B<--ignore-check>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:617 >+#: ../src/xz/xz.1:672 > msgid "" > "Don't verify the integrity check of the compressed data when decompressing. " > "The CRC32 values in the B<.xz> headers will still be verified normally." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:620 >+#: ../src/xz/xz.1:675 > msgid "" > "B<Do not use this option unless you know what you are doing.> Possible " > "reasons to use this option:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:623 >+#: ../src/xz/xz.1:678 > msgid "Trying to recover data from a corrupt .xz file." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:629 >+#: ../src/xz/xz.1:684 > msgid "" > "Speeding up decompression. This matters mostly with SHA-256 or with files " > "that have compressed extremely well. It's recommended to not use this " >@@ -836,13 +895,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:630 >+#: ../src/xz/xz.1:685 > #, no-wrap > msgid "B<-0> ... B<-9>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:639 >+#: ../src/xz/xz.1:694 > msgid "" > "Select a compression preset level. The default is B<-6>. If multiple " > "preset levels are specified, the last one takes effect. If a custom filter " >@@ -851,7 +910,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:654 >+#: ../src/xz/xz.1:709 > msgid "" > "The differences between the presets are more significant than with " > "B<gzip>(1) and B<bzip2>(1). The selected compression settings determine " >@@ -862,13 +921,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:655 >+#: ../src/xz/xz.1:710 > #, no-wrap > msgid "B<-0> ... B<-3>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:667 >+#: ../src/xz/xz.1:722 > msgid "" > "These are somewhat fast presets. B<-0> is sometimes faster than B<gzip -9> " > "while compressing much better. The higher ones often have speed comparable " >@@ -877,29 +936,29 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:667 >+#: ../src/xz/xz.1:722 > #, no-wrap > msgid "B<-4> ... B<-6>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:681 >+#: ../src/xz/xz.1:736 > msgid "" > "Good to very good compression while keeping decompressor memory usage " > "reasonable even for old systems. B<-6> is the default, which is usually a " >-"good choice e.g. for distributing files that need to be decompressible even " >-"on systems with only 16\\ MiB RAM. (B<-5e> or B<-6e> may be worth " >-"considering too. See B<--extreme>.)" >+"good choice for distributing files that need to be decompressible even on " >+"systems with only 16\\ MiB RAM. (B<-5e> or B<-6e> may be worth considering " >+"too. See B<--extreme>.)" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:681 >+#: ../src/xz/xz.1:736 > #, no-wrap > msgid "B<-7 ... -9>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:688 >+#: ../src/xz/xz.1:743 > msgid "" > "These are like B<-6> but with higher compressor and decompressor memory " > "requirements. These are useful only when compressing files bigger than 8\\ " >@@ -907,7 +966,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:696 >+#: ../src/xz/xz.1:751 > msgid "" > "On the same hardware, the decompression speed is approximately a constant " > "number of bytes of compressed data per second. In other words, the better " >@@ -917,263 +976,282 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:698 >+#: ../src/xz/xz.1:753 > msgid "The following table summarises the features of the presets:" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 ../src/xz/xz.1:2623 >+#: ../src/xz/xz.1:760 ../src/xz/xz.1:841 ../src/xz/xz.1:2839 > #, no-wrap > msgid "Preset" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 >+#: ../src/xz/xz.1:760 ../src/xz/xz.1:841 > #, no-wrap > msgid "DictSize" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 ../src/xz/xz.1:2623 >+#: ../src/xz/xz.1:760 ../src/xz/xz.1:841 ../src/xz/xz.1:2839 > #, no-wrap > msgid "CompCPU" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 >+#: ../src/xz/xz.1:760 ../src/xz/xz.1:841 > #, no-wrap > msgid "CompMem" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:705 ../src/xz/xz.1:786 >+#: ../src/xz/xz.1:760 ../src/xz/xz.1:841 > #, no-wrap > msgid "DecMem" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:706 ../src/xz/xz.1:2234 ../src/xz/xz.1:2259 ../src/xz/xz.1:2624 >+#: ../src/xz/xz.1:761 ../src/xz/xz.1:2450 ../src/xz/xz.1:2475 >+#: ../src/xz/xz.1:2840 > #, no-wrap > msgid "-0" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:706 ../src/xz/xz.1:787 ../src/xz/xz.1:2234 >+#: ../src/xz/xz.1:761 ../src/xz/xz.1:842 ../src/xz/xz.1:2450 > #, no-wrap > msgid "256 KiB" > msgstr "" > >-#. type: tbl table >-#: ../src/xz/xz.1:706 ../src/xz/xz.1:2624 >+#. type: TP >+#: ../src/xz/xz.1:761 ../src/xz/xz.1:2840 ../src/scripts/xzgrep.1:82 > #, no-wrap > msgid "0" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:706 ../src/xz/xz.1:708 ../src/xz/xz.1:789 ../src/xz/xz.1:2259 >+#: ../src/xz/xz.1:761 ../src/xz/xz.1:763 ../src/xz/xz.1:844 ../src/xz/xz.1:2475 > #, no-wrap > msgid "3 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:706 ../src/xz/xz.1:707 ../src/xz/xz.1:787 ../src/xz/xz.1:788 ../src/xz/xz.1:2235 ../src/xz/xz.1:2236 ../src/xz/xz.1:2238 >+#: ../src/xz/xz.1:761 ../src/xz/xz.1:762 ../src/xz/xz.1:842 ../src/xz/xz.1:843 >+#: ../src/xz/xz.1:2451 ../src/xz/xz.1:2452 ../src/xz/xz.1:2454 > #, no-wrap > msgid "1 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:707 ../src/xz/xz.1:2235 ../src/xz/xz.1:2260 ../src/xz/xz.1:2625 >+#: ../src/xz/xz.1:762 ../src/xz/xz.1:2451 ../src/xz/xz.1:2476 >+#: ../src/xz/xz.1:2841 > #, no-wrap > msgid "-1" > msgstr "" > >-#. type: tbl table >-#: ../src/xz/xz.1:707 ../src/xz/xz.1:1582 ../src/xz/xz.1:2625 >+#. type: TP >+#: ../src/xz/xz.1:762 ../src/xz/xz.1:1758 ../src/xz/xz.1:2841 >+#: ../src/scripts/xzgrep.1:86 > #, no-wrap > msgid "1" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:707 ../src/xz/xz.1:711 ../src/xz/xz.1:712 ../src/xz/xz.1:792 ../src/xz/xz.1:793 ../src/xz/xz.1:2260 >+#: ../src/xz/xz.1:762 ../src/xz/xz.1:766 ../src/xz/xz.1:767 ../src/xz/xz.1:847 >+#: ../src/xz/xz.1:848 ../src/xz/xz.1:2476 > #, no-wrap > msgid "9 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:707 ../src/xz/xz.1:708 ../src/xz/xz.1:788 ../src/xz/xz.1:789 ../src/xz/xz.1:2236 ../src/xz/xz.1:2239 ../src/xz/xz.1:2260 >+#: ../src/xz/xz.1:762 ../src/xz/xz.1:763 ../src/xz/xz.1:843 ../src/xz/xz.1:844 >+#: ../src/xz/xz.1:2452 ../src/xz/xz.1:2455 ../src/xz/xz.1:2476 > #, no-wrap > msgid "2 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:708 ../src/xz/xz.1:2236 ../src/xz/xz.1:2261 ../src/xz/xz.1:2626 >+#: ../src/xz/xz.1:763 ../src/xz/xz.1:2452 ../src/xz/xz.1:2477 >+#: ../src/xz/xz.1:2842 > #, no-wrap > msgid "-2" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:708 ../src/xz/xz.1:1585 ../src/xz/xz.1:2626 >+#: ../src/xz/xz.1:763 ../src/xz/xz.1:1760 ../src/xz/xz.1:2842 > #, no-wrap > msgid "2" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:708 ../src/xz/xz.1:713 ../src/xz/xz.1:794 ../src/xz/xz.1:2261 >+#: ../src/xz/xz.1:763 ../src/xz/xz.1:768 ../src/xz/xz.1:849 ../src/xz/xz.1:2477 > #, no-wrap > msgid "17 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:709 ../src/xz/xz.1:2237 ../src/xz/xz.1:2262 ../src/xz/xz.1:2627 >+#: ../src/xz/xz.1:764 ../src/xz/xz.1:2453 ../src/xz/xz.1:2478 >+#: ../src/xz/xz.1:2843 > #, no-wrap > msgid "-3" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:709 ../src/xz/xz.1:710 ../src/xz/xz.1:787 ../src/xz/xz.1:790 ../src/xz/xz.1:791 ../src/xz/xz.1:2237 ../src/xz/xz.1:2238 ../src/xz/xz.1:2240 >+#: ../src/xz/xz.1:764 ../src/xz/xz.1:765 ../src/xz/xz.1:842 ../src/xz/xz.1:845 >+#: ../src/xz/xz.1:846 ../src/xz/xz.1:2453 ../src/xz/xz.1:2454 >+#: ../src/xz/xz.1:2456 > #, no-wrap > msgid "4 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:709 ../src/xz/xz.1:2627 >+#: ../src/xz/xz.1:764 ../src/xz/xz.1:2843 > #, no-wrap > msgid "3" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:709 ../src/xz/xz.1:714 ../src/xz/xz.1:795 ../src/xz/xz.1:2242 ../src/xz/xz.1:2243 ../src/xz/xz.1:2262 >+#: ../src/xz/xz.1:764 ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2458 >+#: ../src/xz/xz.1:2459 ../src/xz/xz.1:2478 > #, no-wrap > msgid "32 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:709 ../src/xz/xz.1:710 ../src/xz/xz.1:790 ../src/xz/xz.1:791 >+#: ../src/xz/xz.1:764 ../src/xz/xz.1:765 ../src/xz/xz.1:845 ../src/xz/xz.1:846 > #, no-wrap > msgid "5 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:710 ../src/xz/xz.1:2238 ../src/xz/xz.1:2263 ../src/xz/xz.1:2628 >+#: ../src/xz/xz.1:765 ../src/xz/xz.1:2454 ../src/xz/xz.1:2479 >+#: ../src/xz/xz.1:2844 > #, no-wrap > msgid "-4" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:710 ../src/xz/xz.1:1583 ../src/xz/xz.1:1584 ../src/xz/xz.1:1587 ../src/xz/xz.1:2628 >+#: ../src/xz/xz.1:765 ../src/xz/xz.1:1759 ../src/xz/xz.1:1761 >+#: ../src/xz/xz.1:1762 ../src/xz/xz.1:1764 ../src/xz/xz.1:2844 > #, no-wrap > msgid "4" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:710 ../src/xz/xz.1:790 ../src/xz/xz.1:791 ../src/xz/xz.1:2263 >+#: ../src/xz/xz.1:765 ../src/xz/xz.1:845 ../src/xz/xz.1:846 ../src/xz/xz.1:2479 > #, no-wrap > msgid "48 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:711 ../src/xz/xz.1:2239 ../src/xz/xz.1:2264 ../src/xz/xz.1:2629 >+#: ../src/xz/xz.1:766 ../src/xz/xz.1:2455 ../src/xz/xz.1:2480 >+#: ../src/xz/xz.1:2845 > #, no-wrap > msgid "-5" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:711 ../src/xz/xz.1:712 ../src/xz/xz.1:792 ../src/xz/xz.1:793 ../src/xz/xz.1:2239 ../src/xz/xz.1:2240 ../src/xz/xz.1:2241 >+#: ../src/xz/xz.1:766 ../src/xz/xz.1:767 ../src/xz/xz.1:847 ../src/xz/xz.1:848 >+#: ../src/xz/xz.1:2455 ../src/xz/xz.1:2456 ../src/xz/xz.1:2457 > #, no-wrap > msgid "8 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:711 ../src/xz/xz.1:2629 >+#: ../src/xz/xz.1:766 ../src/xz/xz.1:2845 > #, no-wrap > msgid "5" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:711 ../src/xz/xz.1:712 ../src/xz/xz.1:792 ../src/xz/xz.1:793 ../src/xz/xz.1:2264 ../src/xz/xz.1:2265 >+#: ../src/xz/xz.1:766 ../src/xz/xz.1:767 ../src/xz/xz.1:847 ../src/xz/xz.1:848 >+#: ../src/xz/xz.1:2480 ../src/xz/xz.1:2481 > #, no-wrap > msgid "94 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:712 ../src/xz/xz.1:2240 ../src/xz/xz.1:2265 ../src/xz/xz.1:2630 >+#: ../src/xz/xz.1:767 ../src/xz/xz.1:2456 ../src/xz/xz.1:2481 >+#: ../src/xz/xz.1:2846 > #, no-wrap > msgid "-6" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:712 ../src/xz/xz.1:713 ../src/xz/xz.1:714 ../src/xz/xz.1:715 ../src/xz/xz.1:2630 >+#: ../src/xz/xz.1:767 ../src/xz/xz.1:768 ../src/xz/xz.1:769 ../src/xz/xz.1:770 >+#: ../src/xz/xz.1:2846 > #, no-wrap > msgid "6" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:713 ../src/xz/xz.1:2241 ../src/xz/xz.1:2266 >+#: ../src/xz/xz.1:768 ../src/xz/xz.1:2457 ../src/xz/xz.1:2482 > #, no-wrap > msgid "-7" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:713 ../src/xz/xz.1:794 ../src/xz/xz.1:2241 ../src/xz/xz.1:2242 ../src/xz/xz.1:2263 >+#: ../src/xz/xz.1:768 ../src/xz/xz.1:849 ../src/xz/xz.1:2457 >+#: ../src/xz/xz.1:2458 ../src/xz/xz.1:2479 > #, no-wrap > msgid "16 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:713 ../src/xz/xz.1:794 ../src/xz/xz.1:2266 >+#: ../src/xz/xz.1:768 ../src/xz/xz.1:849 ../src/xz/xz.1:2482 > #, no-wrap > msgid "186 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:714 ../src/xz/xz.1:2242 ../src/xz/xz.1:2267 >+#: ../src/xz/xz.1:769 ../src/xz/xz.1:2458 ../src/xz/xz.1:2483 > #, no-wrap > msgid "-8" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:714 ../src/xz/xz.1:795 ../src/xz/xz.1:2267 >+#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 ../src/xz/xz.1:2483 > #, no-wrap > msgid "370 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:714 ../src/xz/xz.1:795 >+#: ../src/xz/xz.1:769 ../src/xz/xz.1:850 > #, no-wrap > msgid "33 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:715 ../src/xz/xz.1:2243 ../src/xz/xz.1:2268 >+#: ../src/xz/xz.1:770 ../src/xz/xz.1:2459 ../src/xz/xz.1:2484 > #, no-wrap > msgid "-9" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:715 ../src/xz/xz.1:796 ../src/xz/xz.1:2243 >+#: ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2459 > #, no-wrap > msgid "64 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:715 ../src/xz/xz.1:796 ../src/xz/xz.1:2268 >+#: ../src/xz/xz.1:770 ../src/xz/xz.1:851 ../src/xz/xz.1:2484 > #, no-wrap > msgid "674 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:715 ../src/xz/xz.1:796 >+#: ../src/xz/xz.1:770 ../src/xz/xz.1:851 > #, no-wrap > msgid "65 MiB" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:721 >+#: ../src/xz/xz.1:776 > msgid "Column descriptions:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:733 >+#: ../src/xz/xz.1:788 > msgid "" > "DictSize is the LZMA2 dictionary size. It is waste of memory to use a " > "dictionary bigger than the size of the uncompressed file. This is why it is " >@@ -1183,7 +1261,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:742 >+#: ../src/xz/xz.1:797 > msgid "" > "CompCPU is a simplified representation of the LZMA2 settings that affect " > "compression speed. The dictionary size affects speed too, so while CompCPU " >@@ -1193,7 +1271,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:750 >+#: ../src/xz/xz.1:805 > msgid "" > "CompMem contains the compressor memory requirements in the single-threaded " > "mode. It may vary slightly between B<xz> versions. Memory requirements of " >@@ -1202,7 +1280,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:757 >+#: ../src/xz/xz.1:812 > msgid "" > "DecMem contains the decompressor memory requirements. That is, the " > "compression settings determine the memory requirements of the decompressor. " >@@ -1212,13 +1290,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:758 >+#: ../src/xz/xz.1:813 > #, no-wrap > msgid "B<-e>, B<--extreme>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:767 >+#: ../src/xz/xz.1:822 > msgid "" > "Use a slower variant of the selected compression preset level (B<-0> " > "... B<-9>) to hopefully get a little bit better compression ratio, but with " >@@ -1228,7 +1306,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:779 >+#: ../src/xz/xz.1:834 > msgid "" > "Since there are two presets with dictionary sizes 4\\ MiB and 8\\ MiB, the " > "presets B<-3e> and B<-5e> use slightly faster settings (lower CompCPU) than " >@@ -1236,91 +1314,93 @@ > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:787 >+#: ../src/xz/xz.1:842 > #, no-wrap > msgid "-0e" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:787 ../src/xz/xz.1:788 ../src/xz/xz.1:789 ../src/xz/xz.1:791 ../src/xz/xz.1:793 ../src/xz/xz.1:794 ../src/xz/xz.1:795 ../src/xz/xz.1:796 ../src/xz/xz.1:2632 >+#: ../src/xz/xz.1:842 ../src/xz/xz.1:843 ../src/xz/xz.1:844 ../src/xz/xz.1:846 >+#: ../src/xz/xz.1:848 ../src/xz/xz.1:849 ../src/xz/xz.1:850 ../src/xz/xz.1:851 >+#: ../src/xz/xz.1:2848 > #, no-wrap > msgid "8" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:788 >+#: ../src/xz/xz.1:843 > #, no-wrap > msgid "-1e" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:788 >+#: ../src/xz/xz.1:843 > #, no-wrap > msgid "13 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:789 >+#: ../src/xz/xz.1:844 > #, no-wrap > msgid "-2e" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:789 >+#: ../src/xz/xz.1:844 > #, no-wrap > msgid "25 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:790 >+#: ../src/xz/xz.1:845 > #, no-wrap > msgid "-3e" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:790 ../src/xz/xz.1:792 ../src/xz/xz.1:2631 >+#: ../src/xz/xz.1:845 ../src/xz/xz.1:847 ../src/xz/xz.1:2847 > #, no-wrap > msgid "7" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:791 >+#: ../src/xz/xz.1:846 > #, no-wrap > msgid "-4e" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:792 ../src/xz/xz.1:2631 >+#: ../src/xz/xz.1:847 ../src/xz/xz.1:2847 > #, no-wrap > msgid "-5e" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:793 ../src/xz/xz.1:2632 >+#: ../src/xz/xz.1:848 ../src/xz/xz.1:2848 > #, no-wrap > msgid "-6e" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:794 >+#: ../src/xz/xz.1:849 > #, no-wrap > msgid "-7e" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:795 >+#: ../src/xz/xz.1:850 > #, no-wrap > msgid "-8e" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:796 >+#: ../src/xz/xz.1:851 > #, no-wrap > msgid "-9e" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:808 >+#: ../src/xz/xz.1:863 > msgid "" > "For example, there are a total of four presets that use 8\\ MiB dictionary, " > "whose order from the fastest to the slowest is B<-5>, B<-6>, B<-5e>, and " >@@ -1328,19 +1408,19 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:808 >+#: ../src/xz/xz.1:863 > #, no-wrap > msgid "B<--fast>" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:811 >+#: ../src/xz/xz.1:866 > #, no-wrap > msgid "B<--best>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:822 >+#: ../src/xz/xz.1:877 > msgid "" > "These are somewhat misleading aliases for B<-0> and B<-9>, respectively. " > "These are provided only for backwards compatibility with LZMA Utils. Avoid " >@@ -1348,13 +1428,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:822 >+#: ../src/xz/xz.1:877 > #, no-wrap > msgid "B<--block-size=>I<size>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:835 >+#: ../src/xz/xz.1:890 > msgid "" > "When compressing to the B<.xz> format, split the input data into blocks of " > "I<size> bytes. The blocks are compressed independently from each other, " >@@ -1365,20 +1445,20 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:853 >+#: ../src/xz/xz.1:908 > msgid "" > "In multi-threaded mode about three times I<size> bytes will be allocated in " > "each thread for buffering input and output. The default I<size> is three " > "times the LZMA2 dictionary size or 1 MiB, whichever is more. Typically a " >-"good value is 2-4 times the size of the LZMA2 dictionary or at least 1 MiB. " >-"Using I<size> less than the LZMA2 dictionary size is waste of RAM because " >-"then the LZMA2 dictionary buffer will never get fully used. The sizes of " >-"the blocks are stored in the block headers, which a future version of B<xz> " >-"will use for multi-threaded decompression." >+"good value is 2\\(en4 times the size of the LZMA2 dictionary or at least 1 " >+"MiB. Using I<size> less than the LZMA2 dictionary size is waste of RAM " >+"because then the LZMA2 dictionary buffer will never get fully used. The " >+"sizes of the blocks are stored in the block headers, which a future version " >+"of B<xz> will use for multi-threaded decompression." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:862 >+#: ../src/xz/xz.1:917 > msgid "" > "In single-threaded mode no block splitting is done by default. Setting this " > "option doesn't affect memory usage. No size information is stored in block " >@@ -1389,20 +1469,20 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:862 >+#: ../src/xz/xz.1:917 > #, no-wrap > msgid "B<--block-list=>I<sizes>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:868 >+#: ../src/xz/xz.1:923 > msgid "" > "When compressing to the B<.xz> format, start a new block after the given " > "intervals of uncompressed data." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:874 >+#: ../src/xz/xz.1:929 > msgid "" > "The uncompressed I<sizes> of the blocks are specified as a comma-separated " > "list. Omitting a size (two or more consecutive commas) is a shorthand to " >@@ -1410,7 +1490,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:884 >+#: ../src/xz/xz.1:939 > msgid "" > "If the input file is bigger than the sum of I<sizes>, the last value in " > "I<sizes> is repeated until the end of the file. A special value of B<0> may " >@@ -1419,7 +1499,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:899 >+#: ../src/xz/xz.1:954 > msgid "" > "If one specifies I<sizes> that exceed the encoder's block size (either the " > "default value in threaded mode or the value specified with " >@@ -1431,7 +1511,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:905 >+#: ../src/xz/xz.1:960 > msgid "" > "In multi-threaded mode the sizes of the blocks are stored in the block " > "headers. This isn't done in single-threaded mode, so the encoded output " >@@ -1439,13 +1519,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:905 >+#: ../src/xz/xz.1:960 > #, no-wrap > msgid "B<--flush-timeout=>I<timeout>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:922 >+#: ../src/xz/xz.1:977 > msgid "" > "When compressing, if more than I<timeout> milliseconds (a positive integer) " > "has passed since the previous flush and reading more input would block, all " >@@ -1457,7 +1537,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:930 >+#: ../src/xz/xz.1:985 > msgid "" > "This feature is disabled by default. If this option is specified more than " > "once, the last one takes effect. The special I<timeout> value of B<0> can " >@@ -1465,56 +1545,71 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:932 >+#: ../src/xz/xz.1:987 > msgid "This feature is not available on non-POSIX systems." > msgstr "" > > #. FIXME > #. type: Plain text >-#: ../src/xz/xz.1:940 >+#: ../src/xz/xz.1:995 > msgid "" > "B<This feature is still experimental.> Currently B<xz> is unsuitable for " > "decompressing the stream in real time due to how B<xz> does buffering." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:940 >+#: ../src/xz/xz.1:995 > #, no-wrap > msgid "B<--memlimit-compress=>I<limit>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:945 >+#: ../src/xz/xz.1:1000 > msgid "" > "Set a memory usage limit for compression. If this option is specified " > "multiple times, the last one takes effect." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:960 >+#: ../src/xz/xz.1:1013 > msgid "" >-"If the compression settings exceed the I<limit>, B<xz> will adjust the " >-"settings downwards so that the limit is no longer exceeded and display a " >-"notice that automatic adjustment was done. Such adjustments are not made " >-"when compressing with B<--format=raw> or if B<--no-adjust> has been " >-"specified. In those cases, an error is displayed and B<xz> will exit with " >-"exit status 1." >+"If the compression settings exceed the I<limit>, B<xz> will attempt to " >+"adjust the settings downwards so that the limit is no longer exceeded and " >+"display a notice that automatic adjustment was done. The adjustments are " >+"done in this order: reducing the number of threads, switching to " >+"single-threaded mode if even one thread in multi-threaded mode exceeds the " >+"I<limit>, and finally reducing the LZMA2 dictionary size." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:964 >+#: ../src/xz/xz.1:1021 >+msgid "" >+"When compressing with B<--format=raw> or if B<--no-adjust> has been " >+"specified, only the number of threads may be reduced since it can be done " >+"without affecting the compressed output." >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1028 >+msgid "" >+"If the I<limit> cannot be met even with the adjustments described above, an " >+"error is displayed and B<xz> will exit with exit status 1." >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1032 > msgid "The I<limit> can be specified in multiple ways:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:974 >+#: ../src/xz/xz.1:1042 > msgid "" > "The I<limit> can be an absolute value in bytes. Using an integer suffix " > "like B<MiB> can be useful. Example: B<--memlimit-compress=80MiB>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:986 >+#: ../src/xz/xz.1:1054 > msgid "" > "The I<limit> can be specified as a percentage of total physical memory " > "(RAM). This can be useful especially when setting the B<XZ_DEFAULTS> " >@@ -1524,39 +1619,37 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1006 >+#: ../src/xz/xz.1:1064 > msgid "" > "The I<limit> can be reset back to its default value by setting it to B<0>. " > "This is currently equivalent to setting the I<limit> to B<max> (no memory " >-"usage limit). Once multithreading support has been implemented, there may " >-"be a difference between B<0> and B<max> for the multithreaded case, so it is " >-"recommended to use B<0> instead of B<max> until the details have been " >-"decided." >+"usage limit)." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1026 >+#: ../src/xz/xz.1:1088 > msgid "" > "For 32-bit B<xz> there is a special case: if the I<limit> would be over " >-"B<4020\\ MiB>, the I<limit> is set to B<4020\\ MiB>. (The values B<0> and " >-"B<max> aren't affected by this. A similar feature doesn't exist for " >-"decompression.) This can be helpful when a 32-bit executable has access to " >-"4\\ GiB address space while hopefully doing no harm in other situations." >+"B<4020\\ MiB>, the I<limit> is set to B<4020\\ MiB>. On MIPS32 B<2000\\ " >+"MiB> is used instead. (The values B<0> and B<max> aren't affected by this. " >+"A similar feature doesn't exist for decompression.) This can be helpful " >+"when a 32-bit executable has access to 4\\ GiB address space (2 GiB on " >+"MIPS32) while hopefully doing no harm in other situations." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1029 >+#: ../src/xz/xz.1:1091 > msgid "See also the section B<Memory usage>." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1029 >+#: ../src/xz/xz.1:1091 > #, no-wrap > msgid "B<--memlimit-decompress=>I<limit>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1043 >+#: ../src/xz/xz.1:1105 > msgid "" > "Set a memory usage limit for decompression. This also affects the B<--list> " > "mode. If the operation is not possible without exceeding the I<limit>, " >@@ -1565,52 +1658,142 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1043 >+#: ../src/xz/xz.1:1105 > #, no-wrap >+msgid "B<--memlimit-mt-decompress=>I<limit>" >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1127 >+msgid "" >+"Set a memory usage limit for multi-threaded decompression. This can only " >+"affect the number of threads; this will never make B<xz> refuse to " >+"decompress a file. If I<limit> is too low to allow any multi-threading, the " >+"I<limit> is ignored and B<xz> will continue in single-threaded mode. Note " >+"that if also B<--memlimit-decompress> is used, it will always apply to both " >+"single-threaded and multi-threaded modes, and so the effective I<limit> for " >+"multi-threading will never be higher than the limit set with " >+"B<--memlimit-decompress>." >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1134 >+msgid "" >+"In contrast to the other memory usage limit options, " >+"B<--memlimit-mt-decompress=>I<limit> has a system-specific default " >+"I<limit>. B<xz --info-memory> can be used to see the current value." >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1150 >+msgid "" >+"This option and its default value exist because without any limit the " >+"threaded decompressor could end up allocating an insane amount of memory " >+"with some input files. If the default I<limit> is too low on your system, " >+"feel free to increase the I<limit> but never set it to a value larger than " >+"the amount of usable RAM as with appropriate input files B<xz> will attempt " >+"to use that amount of memory even with a low number of threads. Running out " >+"of memory or swapping will not improve decompression performance." >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1162 >+msgid "" >+"See B<--memlimit-compress=>I<limit> for possible ways to specify the " >+"I<limit>. Setting I<limit> to B<0> resets the I<limit> to the default " >+"system-specific value." >+msgstr "" >+ >+#. type: TP >+#: ../src/xz/xz.1:1163 >+#, no-wrap > msgid "B<-M> I<limit>, B<--memlimit=>I<limit>, B<--memory=>I<limit>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1047 >+#: ../src/xz/xz.1:1169 > msgid "" >-"This is equivalent to specifying B<--memlimit-compress=>I<limit " >-">B<--memlimit-decompress=>I<limit>." >+"This is equivalent to specifying B<--memlimit-compress=>I<limit> " >+"B<--memlimit-decompress=>I<limit> B<--memlimit-mt-decompress=>I<limit>." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1047 >+#: ../src/xz/xz.1:1169 > #, no-wrap > msgid "B<--no-adjust>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1055 >+#: ../src/xz/xz.1:1179 > msgid "" >-"Display an error and exit if the compression settings exceed the memory " >-"usage limit. The default is to adjust the settings downwards so that the " >-"memory usage limit is not exceeded. Automatic adjusting is always disabled " >-"when creating raw streams (B<--format=raw>)." >+"Display an error and exit if the memory usage limit cannot be met without " >+"adjusting settings that affect the compressed output. That is, this " >+"prevents B<xz> from switching the encoder from multi-threaded mode to " >+"single-threaded mode and from reducing the LZMA2 dictionary size. Even when " >+"this option is used the number of threads may be reduced to meet the memory " >+"usage limit as that won't affect the compressed output." > msgstr "" > >+#. type: Plain text >+#: ../src/xz/xz.1:1182 >+msgid "" >+"Automatic adjusting is always disabled when creating raw streams " >+"(B<--format=raw>)." >+msgstr "" >+ > #. type: TP >-#: ../src/xz/xz.1:1055 >+#: ../src/xz/xz.1:1182 > #, no-wrap > msgid "B<-T> I<threads>, B<--threads=>I<threads>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1070 >+#: ../src/xz/xz.1:1197 > msgid "" > "Specify the number of worker threads to use. Setting I<threads> to a " >-"special value B<0> makes B<xz> use as many threads as there are CPU cores on " >-"the system. The actual number of threads can be less than I<threads> if the " >-"input file is not big enough for threading with the given settings or if " >-"using more threads would exceed the memory usage limit." >+"special value B<0> makes B<xz> use up to as many threads as the processor(s) " >+"on the system support. The actual number of threads can be fewer than " >+"I<threads> if the input file is not big enough for threading with the given " >+"settings or if using more threads would exceed the memory usage limit." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1077 >+#: ../src/xz/xz.1:1216 > msgid "" >+"The single-threaded and multi-threaded compressors produce different " >+"output. Single-threaded compressor will give the smallest file size but " >+"only the output from the multi-threaded compressor can be decompressed using " >+"multiple threads. Setting I<threads> to B<1> will use the single-threaded " >+"mode. Setting I<threads> to any other value, including B<0>, will use the " >+"multi-threaded compressor even if the system supports only one hardware " >+"thread. (B<xz> 5.2.x used single-threaded mode in this situation.)" >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1235 >+msgid "" >+"To use multi-threaded mode with only one thread, set I<threads> to B<+1>. " >+"The B<+> prefix has no effect with values other than B<1>. A memory usage " >+"limit can still make B<xz> switch to single-threaded mode unless " >+"B<--no-adjust> is used. Support for the B<+> prefix was added in B<xz> " >+"5.4.0." >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1250 >+msgid "" >+"If an automatic number of threads has been requested and no memory usage " >+"limit has been specified, then a system-specific default soft limit will be " >+"used to possibly limit the number of threads. It is a soft limit in sense " >+"that it is ignored if the number of threads becomes one, thus a soft limit " >+"will never stop B<xz> from compressing or decompressing. This default soft " >+"limit will not make B<xz> switch from multi-threaded mode to single-threaded " >+"mode. The active limits can be seen with B<xz --info-memory>." >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:1257 >+msgid "" > "Currently the only threading method is to split the input into blocks and " > "compress them independently from each other. The default block size depends " > "on the compression level and can be overridden with the " >@@ -1618,34 +1801,34 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1085 >+#: ../src/xz/xz.1:1265 > msgid "" >-"Threaded decompression hasn't been implemented yet. It will only work on " >-"files that contain multiple blocks with size information in block headers. " >-"All files compressed in multi-threaded mode meet this condition, but files " >-"compressed in single-threaded mode don't even if B<--block-size=>I<size> is " >-"used." >+"Threaded decompression only works on files that contain multiple blocks with " >+"size information in block headers. All large enough files compressed in " >+"multi-threaded mode meet this condition, but files compressed in " >+"single-threaded mode don't even if B<--block-size=>I<size> has been used." > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:1086 ../src/xz/xz.1:2603 >+#: ../src/xz/xz.1:1266 ../src/xz/xz.1:2819 > #, no-wrap > msgid "Custom compressor filter chains" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1097 >+#: ../src/xz/xz.1:1282 > msgid "" > "A custom filter chain allows specifying the compression settings in detail " > "instead of relying on the settings associated to the presets. When a custom " >-"filter chain is specified, preset options (B<-0> ... B<-9> and B<--extreme>) " >-"earlier on the command line are forgotten. If a preset option is specified " >-"after one or more custom filter chain options, the new preset takes effect " >-"and the custom filter chain options specified earlier are forgotten." >+"filter chain is specified, preset options (B<-0> \\&...\\& B<-9> and " >+"B<--extreme>) earlier on the command line are forgotten. If a preset " >+"option is specified after one or more custom filter chain options, the new " >+"preset takes effect and the custom filter chain options specified earlier " >+"are forgotten." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1104 >+#: ../src/xz/xz.1:1289 > msgid "" > "A filter chain is comparable to piping on the command line. When " > "compressing, the uncompressed input goes to the first filter, whose output " >@@ -1655,7 +1838,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1112 >+#: ../src/xz/xz.1:1297 > msgid "" > "Many filters have limitations on where they can be in the filter chain: some " > "filters can work only as the last filter in the chain, some only as a " >@@ -1665,7 +1848,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1120 >+#: ../src/xz/xz.1:1305 > msgid "" > "A custom filter chain is specified by using one or more filter options in " > "the order they are wanted in the filter chain. That is, the order of filter " >@@ -1675,7 +1858,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1129 >+#: ../src/xz/xz.1:1314 > msgid "" > "Filters take filter-specific I<options> as a comma-separated list. Extra " > "commas in I<options> are ignored. Every option has a default value, so you " >@@ -1683,7 +1866,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1138 >+#: ../src/xz/xz.1:1323 > msgid "" > "To see the whole filter chain and I<options>, use B<xz -vv> (that is, use " > "B<--verbose> twice). This works also for viewing the filter chain options " >@@ -1691,26 +1874,26 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1138 >+#: ../src/xz/xz.1:1323 > #, no-wrap > msgid "B<--lzma1>[B<=>I<options>]" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1141 >+#: ../src/xz/xz.1:1326 > #, no-wrap > msgid "B<--lzma2>[B<=>I<options>]" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1146 >+#: ../src/xz/xz.1:1331 > msgid "" > "Add LZMA1 or LZMA2 filter to the filter chain. These filters can be used " > "only as the last filter in the chain." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1158 >+#: ../src/xz/xz.1:1343 > msgid "" > "LZMA1 is a legacy filter, which is supported almost solely due to the legacy " > "B<.lzma> file format, which supports only LZMA1. LZMA2 is an updated " >@@ -1720,35 +1903,35 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1161 >+#: ../src/xz/xz.1:1346 > msgid "LZMA1 and LZMA2 share the same set of I<options>:" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1162 >+#: ../src/xz/xz.1:1347 > #, no-wrap > msgid "B<preset=>I<preset>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1186 >+#: ../src/xz/xz.1:1374 > msgid "" > "Reset all LZMA1 or LZMA2 I<options> to I<preset>. I<Preset> consist of an " > "integer, which may be followed by single-letter preset modifiers. The " > "integer can be from B<0> to B<9>, matching the command line options B<-0> " >-"... B<-9>. The only supported modifier is currently B<e>, which matches " >-"B<--extreme>. If no B<preset> is specified, the default values of LZMA1 or " >-"LZMA2 I<options> are taken from the preset B<6>." >+"\\&...\\& B<-9>. The only supported modifier is currently B<e>, which " >+"matches B<--extreme>. If no B<preset> is specified, the default values of " >+"LZMA1 or LZMA2 I<options> are taken from the preset B<6>." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1186 >+#: ../src/xz/xz.1:1374 > #, no-wrap > msgid "B<dict=>I<size>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1201 >+#: ../src/xz/xz.1:1389 > msgid "" > "Dictionary (history buffer) I<size> indicates how many bytes of the " > "recently processed uncompressed data is kept in memory. The algorithm tries " >@@ -1760,7 +1943,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1210 >+#: ../src/xz/xz.1:1398 > msgid "" > "Typical dictionary I<size> is from 64\\ KiB to 64\\ MiB. The minimum is 4\\ " > "KiB. The maximum for compression is currently 1.5\\ GiB (1536\\ MiB). The " >@@ -1769,7 +1952,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1237 >+#: ../src/xz/xz.1:1425 > msgid "" > "Dictionary I<size> and match finder (I<mf>) together determine the memory " > "usage of the LZMA1 or LZMA2 encoder. The same (or bigger) dictionary " >@@ -1782,13 +1965,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1237 >+#: ../src/xz/xz.1:1425 > #, no-wrap > msgid "B<lc=>I<lc>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1246 >+#: ../src/xz/xz.1:1434 > msgid "" > "Specify the number of literal context bits. The minimum is 0 and the " > "maximum is 4; the default is 3. In addition, the sum of I<lc> and I<lp> " >@@ -1796,47 +1979,48 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1251 >+#: ../src/xz/xz.1:1439 > msgid "" > "All bytes that cannot be encoded as matches are encoded as literals. That " > "is, literals are simply 8-bit bytes that are encoded one at a time." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1265 >+#: ../src/xz/xz.1:1453 > msgid "" > "The literal coding makes an assumption that the highest I<lc> bits of the " >-"previous uncompressed byte correlate with the next byte. E.g. in typical " >-"English text, an upper-case letter is often followed by a lower-case letter, " >-"and a lower-case letter is usually followed by another lower-case letter. " >-"In the US-ASCII character set, the highest three bits are 010 for upper-case " >-"letters and 011 for lower-case letters. When I<lc> is at least 3, the " >-"literal coding can take advantage of this property in the uncompressed data." >+"previous uncompressed byte correlate with the next byte. For example, in " >+"typical English text, an upper-case letter is often followed by a lower-case " >+"letter, and a lower-case letter is usually followed by another lower-case " >+"letter. In the US-ASCII character set, the highest three bits are 010 for " >+"upper-case letters and 011 for lower-case letters. When I<lc> is at least " >+"3, the literal coding can take advantage of this property in the " >+"uncompressed data." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1274 >+#: ../src/xz/xz.1:1462 > msgid "" > "The default value (3) is usually good. If you want maximum compression, " > "test B<lc=4>. Sometimes it helps a little, and sometimes it makes " >-"compression worse. If it makes it worse, test e.g.\\& B<lc=2> too." >+"compression worse. If it makes it worse, test B<lc=2> too." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1274 >+#: ../src/xz/xz.1:1462 > #, no-wrap > msgid "B<lp=>I<lp>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1278 >+#: ../src/xz/xz.1:1466 > msgid "" > "Specify the number of literal position bits. The minimum is 0 and the " > "maximum is 4; the default is 0." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1285 >+#: ../src/xz/xz.1:1473 > msgid "" > "I<Lp> affects what kind of alignment in the uncompressed data is assumed " > "when encoding literals. See I<pb> below for more information about " >@@ -1844,20 +2028,20 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1285 >+#: ../src/xz/xz.1:1473 > #, no-wrap > msgid "B<pb=>I<pb>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1289 >+#: ../src/xz/xz.1:1477 > msgid "" > "Specify the number of position bits. The minimum is 0 and the maximum is 4; " > "the default is 2." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1296 >+#: ../src/xz/xz.1:1484 > msgid "" > "I<Pb> affects what kind of alignment in the uncompressed data is assumed in " > "general. The default means four-byte alignment (2^I<pb>=2^2=4), which is " >@@ -1865,17 +2049,17 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1310 >+#: ../src/xz/xz.1:1498 > msgid "" >-"When the aligment is known, setting I<pb> accordingly may reduce the file " >-"size a little. E.g. with text files having one-byte alignment (US-ASCII, " >-"ISO-8859-*, UTF-8), setting B<pb=0> can improve compression slightly. For " >-"UTF-16 text, B<pb=1> is a good choice. If the alignment is an odd number " >-"like 3 bytes, B<pb=0> might be the best choice." >+"When the alignment is known, setting I<pb> accordingly may reduce the file " >+"size a little. For example, with text files having one-byte alignment " >+"(US-ASCII, ISO-8859-*, UTF-8), setting B<pb=0> can improve compression " >+"slightly. For UTF-16 text, B<pb=1> is a good choice. If the alignment is " >+"an odd number like 3 bytes, B<pb=0> might be the best choice." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1318 >+#: ../src/xz/xz.1:1506 > msgid "" > "Even though the assumed alignment can be adjusted with I<pb> and I<lp>, " > "LZMA1 and LZMA2 still slightly favor 16-byte alignment. It might be worth " >@@ -1884,22 +2068,22 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1318 >+#: ../src/xz/xz.1:1506 > #, no-wrap > msgid "B<mf=>I<mf>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1333 >+#: ../src/xz/xz.1:1521 > msgid "" > "Match finder has a major effect on encoder speed, memory usage, and " > "compression ratio. Usually Hash Chain match finders are faster than Binary " > "Tree match finders. The default depends on the I<preset>: 0 uses B<hc3>, " >-"1-3 use B<hc4>, and the rest use B<bt4>." >+"1\\(en3 use B<hc4>, and the rest use B<bt4>." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1339 >+#: ../src/xz/xz.1:1527 > msgid "" > "The following match finders are supported. The memory usage formulas below " > "are rough approximations, which are closest to the reality when I<dict> is a " >@@ -1907,154 +2091,155 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1340 >+#: ../src/xz/xz.1:1528 > #, no-wrap > msgid "B<hc3>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1343 >+#: ../src/xz/xz.1:1531 > msgid "Hash Chain with 2- and 3-byte hashing" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1347 ../src/xz/xz.1:1396 >+#: ../src/xz/xz.1:1535 ../src/xz/xz.1:1584 > msgid "Minimum value for I<nice>: 3" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1349 ../src/xz/xz.1:1368 ../src/xz/xz.1:1398 ../src/xz/xz.1:1417 >+#: ../src/xz/xz.1:1537 ../src/xz/xz.1:1556 ../src/xz/xz.1:1586 >+#: ../src/xz/xz.1:1605 > msgid "Memory usage:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1354 >+#: ../src/xz/xz.1:1542 > msgid "I<dict> * 7.5 (if I<dict> E<lt>= 16 MiB);" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1359 >+#: ../src/xz/xz.1:1547 > msgid "I<dict> * 5.5 + 64 MiB (if I<dict> E<gt> 16 MiB)" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1359 >+#: ../src/xz/xz.1:1547 > #, no-wrap > msgid "B<hc4>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1362 >+#: ../src/xz/xz.1:1550 > msgid "Hash Chain with 2-, 3-, and 4-byte hashing" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1366 ../src/xz/xz.1:1415 >+#: ../src/xz/xz.1:1554 ../src/xz/xz.1:1603 > msgid "Minimum value for I<nice>: 4" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1373 >+#: ../src/xz/xz.1:1561 > msgid "I<dict> * 7.5 (if I<dict> E<lt>= 32 MiB);" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1378 >+#: ../src/xz/xz.1:1566 > msgid "I<dict> * 6.5 (if I<dict> E<gt> 32 MiB)" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1378 >+#: ../src/xz/xz.1:1566 > #, no-wrap > msgid "B<bt2>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1381 >+#: ../src/xz/xz.1:1569 > msgid "Binary Tree with 2-byte hashing" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1385 >+#: ../src/xz/xz.1:1573 > msgid "Minimum value for I<nice>: 2" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1389 >+#: ../src/xz/xz.1:1577 > msgid "Memory usage: I<dict> * 9.5" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1389 >+#: ../src/xz/xz.1:1577 > #, no-wrap > msgid "B<bt3>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1392 >+#: ../src/xz/xz.1:1580 > msgid "Binary Tree with 2- and 3-byte hashing" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1403 >+#: ../src/xz/xz.1:1591 > msgid "I<dict> * 11.5 (if I<dict> E<lt>= 16 MiB);" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1408 >+#: ../src/xz/xz.1:1596 > msgid "I<dict> * 9.5 + 64 MiB (if I<dict> E<gt> 16 MiB)" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1408 >+#: ../src/xz/xz.1:1596 > #, no-wrap > msgid "B<bt4>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1411 >+#: ../src/xz/xz.1:1599 > msgid "Binary Tree with 2-, 3-, and 4-byte hashing" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1422 >+#: ../src/xz/xz.1:1610 > msgid "I<dict> * 11.5 (if I<dict> E<lt>= 32 MiB);" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1427 >+#: ../src/xz/xz.1:1615 > msgid "I<dict> * 10.5 (if I<dict> E<gt> 32 MiB)" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1428 >+#: ../src/xz/xz.1:1616 > #, no-wrap > msgid "B<mode=>I<mode>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1449 >+#: ../src/xz/xz.1:1637 > msgid "" > "Compression I<mode> specifies the method to analyze the data produced by the " > "match finder. Supported I<modes> are B<fast> and B<normal>. The default is " >-"B<fast> for I<presets> 0-3 and B<normal> for I<presets> 4-9." >+"B<fast> for I<presets> 0\\(en3 and B<normal> for I<presets> 4\\(en9." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1458 >+#: ../src/xz/xz.1:1646 > msgid "" > "Usually B<fast> is used with Hash Chain match finders and B<normal> with " > "Binary Tree match finders. This is also what the I<presets> do." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1458 >+#: ../src/xz/xz.1:1646 > #, no-wrap > msgid "B<nice=>I<nice>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1465 >+#: ../src/xz/xz.1:1653 > msgid "" > "Specify what is considered to be a nice length for a match. Once a match of " > "at least I<nice> bytes is found, the algorithm stops looking for possibly " >@@ -2062,20 +2247,21 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1472 >+#: ../src/xz/xz.1:1660 > msgid "" >-"I<Nice> can be 2-273 bytes. Higher values tend to give better compression " >-"ratio at the expense of speed. The default depends on the I<preset>." >+"I<Nice> can be 2\\(en273 bytes. Higher values tend to give better " >+"compression ratio at the expense of speed. The default depends on the " >+"I<preset>." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1472 >+#: ../src/xz/xz.1:1660 > #, no-wrap > msgid "B<depth=>I<depth>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1482 >+#: ../src/xz/xz.1:1670 > msgid "" > "Specify the maximum search depth in the match finder. The default is the " > "special value of 0, which makes the compressor determine a reasonable " >@@ -2083,239 +2269,230 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1493 >+#: ../src/xz/xz.1:1681 > msgid "" >-"Reasonable I<depth> for Hash Chains is 4-100 and 16-1000 for Binary Trees. " >-"Using very high values for I<depth> can make the encoder extremely slow with " >-"some files. Avoid setting the I<depth> over 1000 unless you are prepared to " >-"interrupt the compression in case it is taking far too long." >+"Reasonable I<depth> for Hash Chains is 4\\(en100 and 16\\(en1000 for Binary " >+"Trees. Using very high values for I<depth> can make the encoder extremely " >+"slow with some files. Avoid setting the I<depth> over 1000 unless you are " >+"prepared to interrupt the compression in case it is taking far too long." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1504 >+#: ../src/xz/xz.1:1692 > msgid "" > "When decoding raw streams (B<--format=raw>), LZMA2 needs only the dictionary " > "I<size>. LZMA1 needs also I<lc>, I<lp>, and I<pb>." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1504 >+#: ../src/xz/xz.1:1692 > #, no-wrap > msgid "B<--x86>[B<=>I<options>]" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1507 >+#: ../src/xz/xz.1:1695 > #, no-wrap >-msgid "B<--powerpc>[B<=>I<options>]" >+msgid "B<--arm>[B<=>I<options>]" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1509 >+#: ../src/xz/xz.1:1697 > #, no-wrap >-msgid "B<--ia64>[B<=>I<options>]" >+msgid "B<--armthumb>[B<=>I<options>]" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1511 >+#: ../src/xz/xz.1:1699 > #, no-wrap >-msgid "B<--arm>[B<=>I<options>]" >+msgid "B<--arm64>[B<=>I<options>]" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1513 >+#: ../src/xz/xz.1:1701 > #, no-wrap >-msgid "B<--armthumb>[B<=>I<options>]" >+msgid "B<--powerpc>[B<=>I<options>]" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1515 >+#: ../src/xz/xz.1:1703 > #, no-wrap >+msgid "B<--ia64>[B<=>I<options>]" >+msgstr "" >+ >+#. type: TP >+#: ../src/xz/xz.1:1705 >+#, no-wrap > msgid "B<--sparc>[B<=>I<options>]" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1521 >+#: ../src/xz/xz.1:1711 > msgid "" > "Add a branch/call/jump (BCJ) filter to the filter chain. These filters can " > "be used only as a non-last filter in the filter chain." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1533 >+#: ../src/xz/xz.1:1725 > msgid "" > "A BCJ filter converts relative addresses in the machine code to their " >-"absolute counterparts. This doesn't change the size of the data, but it " >-"increases redundancy, which can help LZMA2 to produce 0-15\\ % smaller " >+"absolute counterparts. This doesn't change the size of the data but it " >+"increases redundancy, which can help LZMA2 to produce 0\\(en15\\ % smaller " > "B<.xz> file. The BCJ filters are always reversible, so using a BCJ filter " > "for wrong type of data doesn't cause any data loss, although it may make the " >-"compression ratio slightly worse." >+"compression ratio slightly worse. The BCJ filters are very fast and use an " >+"insignificant amount of memory." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1540 >-msgid "" >-"It is fine to apply a BCJ filter on a whole executable; there's no need to " >-"apply it only on the executable section. Applying a BCJ filter on an " >-"archive that contains both executable and non-executable files may or may " >-"not give good results, so it generally isn't good to blindly apply a BCJ " >-"filter when compressing binary packages for distribution." >-msgstr "" >- >-#. type: Plain text >-#: ../src/xz/xz.1:1548 >-msgid "" >-"These BCJ filters are very fast and use insignificant amount of memory. If " >-"a BCJ filter improves compression ratio of a file, it can improve " >-"decompression speed at the same time. This is because, on the same " >-"hardware, the decompression speed of LZMA2 is roughly a fixed number of " >-"bytes of compressed data per second." >-msgstr "" >- >-#. type: Plain text >-#: ../src/xz/xz.1:1551 >+#: ../src/xz/xz.1:1728 > msgid "These BCJ filters have known problems related to the compression ratio:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1558 >+#: ../src/xz/xz.1:1735 > msgid "" >-"Some types of files containing executable code (e.g. object files, static " >-"libraries, and Linux kernel modules) have the addresses in the instructions " >-"filled with filler values. These BCJ filters will still do the address " >-"conversion, which will make the compression worse with these files." >+"Some types of files containing executable code (for example, object files, " >+"static libraries, and Linux kernel modules) have the addresses in the " >+"instructions filled with filler values. These BCJ filters will still do the " >+"address conversion, which will make the compression worse with these files." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1565 >+#: ../src/xz/xz.1:1745 > msgid "" >-"Applying a BCJ filter on an archive containing multiple similar executables " >-"can make the compression ratio worse than not using a BCJ filter. This is " >-"because the BCJ filter doesn't detect the boundaries of the executable " >-"files, and doesn't reset the address conversion counter for each executable." >+"If a BCJ filter is applied on an archive, it is possible that it makes the " >+"compression ratio worse than not using a BCJ filter. For example, if there " >+"are similar or even identical executables then filtering will likely make " >+"the files less similar and thus compression is worse. The contents of " >+"non-executable files in the same archive can matter too. In practice one " >+"has to try with and without a BCJ filter to see which is better in each " >+"situation." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1572 >+#: ../src/xz/xz.1:1750 > msgid "" >-"Both of the above problems will be fixed in the future in a new filter. The " >-"old BCJ filters will still be useful in embedded systems, because the " >-"decoder of the new filter will be bigger and use more memory." >+"Different instruction sets have different alignment: the executable file " >+"must be aligned to a multiple of this value in the input data to make the " >+"filter work." > msgstr "" > >-#. type: Plain text >-#: ../src/xz/xz.1:1574 >-msgid "Different instruction sets have different alignment:" >-msgstr "" >- > #. type: tbl table >-#: ../src/xz/xz.1:1581 >+#: ../src/xz/xz.1:1757 > #, no-wrap > msgid "Filter" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:1581 >+#: ../src/xz/xz.1:1757 > #, no-wrap > msgid "Alignment" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:1581 >+#: ../src/xz/xz.1:1757 > #, no-wrap > msgid "Notes" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:1582 >+#: ../src/xz/xz.1:1758 > #, no-wrap > msgid "x86" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:1582 >+#: ../src/xz/xz.1:1758 > #, no-wrap > msgid "32-bit or 64-bit x86" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:1583 >+#: ../src/xz/xz.1:1759 > #, no-wrap >-msgid "PowerPC" >+msgid "ARM" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:1583 >+#: ../src/xz/xz.1:1760 > #, no-wrap >-msgid "Big endian only" >+msgid "ARM-Thumb" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:1584 >+#: ../src/xz/xz.1:1761 > #, no-wrap >-msgid "ARM" >+msgid "ARM64" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:1584 ../src/xz/xz.1:1585 >+#: ../src/xz/xz.1:1761 > #, no-wrap >-msgid "Little endian only" >+msgid "4096-byte alignment is best" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:1585 >+#: ../src/xz/xz.1:1762 > #, no-wrap >-msgid "ARM-Thumb" >+msgid "PowerPC" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:1586 >+#: ../src/xz/xz.1:1762 > #, no-wrap >+msgid "Big endian only" >+msgstr "" >+ >+#. type: tbl table >+#: ../src/xz/xz.1:1763 >+#, no-wrap > msgid "IA-64" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:1586 >+#: ../src/xz/xz.1:1763 > #, no-wrap > msgid "16" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:1586 ../src/xz/xz.1:1587 >+#: ../src/xz/xz.1:1763 > #, no-wrap >-msgid "Big or little endian" >+msgid "Itanium" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:1587 >+#: ../src/xz/xz.1:1764 > #, no-wrap > msgid "SPARC" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1602 >+#: ../src/xz/xz.1:1781 > msgid "" > "Since the BCJ-filtered data is usually compressed with LZMA2, the " > "compression ratio may be improved slightly if the LZMA2 options are set to " > "match the alignment of the selected BCJ filter. For example, with the IA-64 " >-"filter, it's good to set B<pb=4> with LZMA2 (2^4=16). The x86 filter is an " >-"exception; it's usually good to stick to LZMA2's default four-byte alignment " >-"when compressing x86 executables." >+"filter, it's good to set B<pb=4> or even B<pb=4,lp=4,lc=0> with LZMA2 " >+"(2^4=16). The x86 filter is an exception; it's usually good to stick to " >+"LZMA2's default four-byte alignment when compressing x86 executables." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1605 >+#: ../src/xz/xz.1:1784 > msgid "All BCJ filters support the same I<options>:" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1606 >+#: ../src/xz/xz.1:1785 > #, no-wrap > msgid "B<start=>I<offset>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1620 >+#: ../src/xz/xz.1:1799 > msgid "" > "Specify the start I<offset> that is used when converting between relative " > "and absolute addresses. The I<offset> must be a multiple of the alignment " >@@ -2324,67 +2501,68 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1621 >+#: ../src/xz/xz.1:1800 > #, no-wrap > msgid "B<--delta>[B<=>I<options>]" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1626 >+#: ../src/xz/xz.1:1805 > msgid "" > "Add the Delta filter to the filter chain. The Delta filter can be only used " > "as a non-last filter in the filter chain." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1635 >+#: ../src/xz/xz.1:1814 > msgid "" > "Currently only simple byte-wise delta calculation is supported. It can be " >-"useful when compressing e.g. uncompressed bitmap images or uncompressed PCM " >-"audio. However, special purpose algorithms may give significantly better " >-"results than Delta + LZMA2. This is true especially with audio, which " >-"compresses faster and better e.g. with B<flac>(1)." >+"useful when compressing, for example, uncompressed bitmap images or " >+"uncompressed PCM audio. However, special purpose algorithms may give " >+"significantly better results than Delta + LZMA2. This is true especially " >+"with audio, which compresses faster and better, for example, with " >+"B<flac>(1)." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1638 >+#: ../src/xz/xz.1:1817 > msgid "Supported I<options>:" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1639 >+#: ../src/xz/xz.1:1818 > #, no-wrap > msgid "B<dist=>I<distance>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1647 >+#: ../src/xz/xz.1:1826 > msgid "" > "Specify the I<distance> of the delta calculation in bytes. I<distance> must " >-"be 1-256. The default is 1." >+"be 1\\(en256. The default is 1." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1652 >+#: ../src/xz/xz.1:1831 > msgid "" > "For example, with B<dist=2> and eight-byte input A1 B1 A2 B3 A3 B5 A4 B7, " > "the output will be A1 B1 01 02 01 02 01 02." > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:1654 >+#: ../src/xz/xz.1:1833 > #, no-wrap > msgid "Other options" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1655 ../src/xzdec/xzdec.1:83 >+#: ../src/xz/xz.1:1834 ../src/xzdec/xzdec.1:83 > #, no-wrap > msgid "B<-q>, B<--quiet>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1662 >+#: ../src/xz/xz.1:1841 > msgid "" > "Suppress warnings and notices. Specify this twice to suppress errors too. " > "This option has no effect on the exit status. That is, even if a warning " >@@ -2392,13 +2570,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1662 >+#: ../src/xz/xz.1:1841 > #, no-wrap > msgid "B<-v>, B<--verbose>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1671 >+#: ../src/xz/xz.1:1850 > msgid "" > "Be verbose. If standard error is connected to a terminal, B<xz> will " > "display a progress indicator. Specifying B<--verbose> twice will give even " >@@ -2406,40 +2584,40 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1673 >+#: ../src/xz/xz.1:1852 > msgid "The progress indicator shows the following information:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1678 >+#: ../src/xz/xz.1:1857 > msgid "" > "Completion percentage is shown if the size of the input file is known. That " > "is, the percentage cannot be shown in pipes." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1681 >+#: ../src/xz/xz.1:1860 > msgid "" > "Amount of compressed data produced (compressing) or consumed " > "(decompressing)." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1684 >+#: ../src/xz/xz.1:1863 > msgid "" > "Amount of uncompressed data consumed (compressing) or produced " > "(decompressing)." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1688 >+#: ../src/xz/xz.1:1867 > msgid "" > "Compression ratio, which is calculated by dividing the amount of compressed " > "data processed so far by the amount of uncompressed data processed so far." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1695 >+#: ../src/xz/xz.1:1874 > msgid "" > "Compression or decompression speed. This is measured as the amount of " > "uncompressed data consumed (compression) or produced (decompression) per " >@@ -2448,39 +2626,39 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1697 >+#: ../src/xz/xz.1:1876 > msgid "Elapsed time in the format M:SS or H:MM:SS." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1705 >+#: ../src/xz/xz.1:1884 > msgid "" > "Estimated remaining time is shown only when the size of the input file is " > "known and a couple of seconds have already passed since B<xz> started " > "processing the file. The time is shown in a less precise format which never " >-"has any colons, e.g. 2 min 30 s." >+"has any colons, for example, 2 min 30 s." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1720 >+#: ../src/xz/xz.1:1899 > msgid "" > "When standard error is not a terminal, B<--verbose> will make B<xz> print " > "the filename, compressed size, uncompressed size, compression ratio, and " > "possibly also the speed and elapsed time on a single line to standard error " > "after compressing or decompressing the file. The speed and elapsed time are " > "included only when the operation took at least a few seconds. If the " >-"operation didn't finish, e.g. due to user interruption, also the completion " >-"percentage is printed if the size of the input file is known." >+"operation didn't finish, for example, due to user interruption, also the " >+"completion percentage is printed if the size of the input file is known." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1720 ../src/xzdec/xzdec.1:89 >+#: ../src/xz/xz.1:1899 ../src/xzdec/xzdec.1:89 > #, no-wrap > msgid "B<-Q>, B<--no-warn>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1730 >+#: ../src/xz/xz.1:1909 > msgid "" > "Don't set the exit status to 2 even if a condition worth a warning was " > "detected. This option doesn't affect the verbosity level, thus both " >@@ -2489,13 +2667,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1730 >+#: ../src/xz/xz.1:1909 > #, no-wrap > msgid "B<--robot>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1742 >+#: ../src/xz/xz.1:1921 > msgid "" > "Print messages in a machine-parsable format. This is intended to ease " > "writing frontends that want to use B<xz> instead of liblzma, which may be " >@@ -2505,66 +2683,66 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1742 >+#: ../src/xz/xz.1:1921 > #, no-wrap > msgid "B<--info-memory>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1748 >+#: ../src/xz/xz.1:1928 > msgid "" >-"Display, in human-readable format, how much physical memory (RAM) B<xz> " >-"thinks the system has and the memory usage limits for compression and " >-"decompression, and exit successfully." >+"Display, in human-readable format, how much physical memory (RAM) and how " >+"many processor threads B<xz> thinks the system has and the memory usage " >+"limits for compression and decompression, and exit successfully." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1748 ../src/xzdec/xzdec.1:96 >+#: ../src/xz/xz.1:1928 ../src/xzdec/xzdec.1:96 > #, no-wrap > msgid "B<-h>, B<--help>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1752 >+#: ../src/xz/xz.1:1932 > msgid "" > "Display a help message describing the most commonly used options, and exit " > "successfully." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1752 >+#: ../src/xz/xz.1:1932 > #, no-wrap > msgid "B<-H>, B<--long-help>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1757 >+#: ../src/xz/xz.1:1937 > msgid "" > "Display a help message describing all features of B<xz>, and exit " > "successfully" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1757 ../src/xzdec/xzdec.1:99 >+#: ../src/xz/xz.1:1937 ../src/xzdec/xzdec.1:99 > #, no-wrap > msgid "B<-V>, B<--version>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1766 >+#: ../src/xz/xz.1:1946 > msgid "" > "Display the version number of B<xz> and liblzma in human readable format. " > "To get machine-parsable output, specify B<--robot> before B<--version>." > msgstr "" > > #. type: SH >-#: ../src/xz/xz.1:1767 >+#: ../src/xz/xz.1:1947 > #, no-wrap > msgid "ROBOT MODE" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1783 >+#: ../src/xz/xz.1:1963 > msgid "" > "The robot mode is activated with the B<--robot> option. It makes the output " > "of B<xz> easier to parse by other programs. Currently B<--robot> is " >@@ -2573,155 +2751,204 @@ > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:1784 >+#: ../src/xz/xz.1:1964 > #, no-wrap > msgid "Version" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1789 >+#: ../src/xz/xz.1:1969 > msgid "" > "B<xz --robot --version> will print the version number of B<xz> and liblzma " > "in the following format:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1791 >+#: ../src/xz/xz.1:1971 > msgid "B<XZ_VERSION=>I<XYYYZZZS>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1793 >+#: ../src/xz/xz.1:1973 > msgid "B<LIBLZMA_VERSION=>I<XYYYZZZS>" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1793 >+#: ../src/xz/xz.1:1973 > #, no-wrap > msgid "I<X>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1796 >+#: ../src/xz/xz.1:1976 > msgid "Major version." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1796 >+#: ../src/xz/xz.1:1976 > #, no-wrap > msgid "I<YYY>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1801 >+#: ../src/xz/xz.1:1981 > msgid "" > "Minor version. Even numbers are stable. Odd numbers are alpha or beta " > "versions." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1801 >+#: ../src/xz/xz.1:1981 > #, no-wrap > msgid "I<ZZZ>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1805 >+#: ../src/xz/xz.1:1985 > msgid "Patch level for stable releases or just a counter for development releases." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1805 >+#: ../src/xz/xz.1:1985 > #, no-wrap > msgid "I<S>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1813 >+#: ../src/xz/xz.1:1993 > msgid "" > "Stability. 0 is alpha, 1 is beta, and 2 is stable. I<S> should be always 2 " > "when I<YYY> is even." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1818 >+#: ../src/xz/xz.1:1998 > msgid "" > "I<XYYYZZZS> are the same on both lines if B<xz> and liblzma are from the " > "same XZ Utils release." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1824 >+#: ../src/xz/xz.1:2004 > msgid "Examples: 4.999.9beta is B<49990091> and 5.0.0 is B<50000002>." > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:1825 >+#: ../src/xz/xz.1:2005 > #, no-wrap > msgid "Memory limit information" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1828 >+#: ../src/xz/xz.1:2008 > msgid "" > "B<xz --robot --info-memory> prints a single line with three tab-separated " > "columns:" > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:1828 >+#: ../src/xz/xz.1:2008 > #, no-wrap > msgid "1." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1830 >-msgid "Total amount of physical memory (RAM) in bytes" >+#: ../src/xz/xz.1:2010 >+msgid "Total amount of physical memory (RAM) in bytes." > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:1830 ../src/xz/xz.1:1910 ../src/xz/xz.1:1947 ../src/xz/xz.1:1973 ../src/xz/xz.1:2043 ../src/xz/xz.1:2070 >+#: ../src/xz/xz.1:2010 ../src/xz/xz.1:2125 ../src/xz/xz.1:2162 >+#: ../src/xz/xz.1:2188 ../src/xz/xz.1:2258 ../src/xz/xz.1:2285 > #, no-wrap > msgid "2." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1834 >+#: ../src/xz/xz.1:2017 > msgid "" >-"Memory usage limit for compression in bytes. A special value of zero " >-"indicates the default setting, which for single-threaded mode is the same as " >-"no limit." >+"Memory usage limit for compression in bytes (B<--memlimit-compress>). A " >+"special value of B<0> indicates the default setting which for " >+"single-threaded mode is the same as no limit." > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:1834 ../src/xz/xz.1:1912 ../src/xz/xz.1:1949 ../src/xz/xz.1:1975 ../src/xz/xz.1:2048 ../src/xz/xz.1:2072 >+#: ../src/xz/xz.1:2017 ../src/xz/xz.1:2127 ../src/xz/xz.1:2164 >+#: ../src/xz/xz.1:2190 ../src/xz/xz.1:2263 ../src/xz/xz.1:2287 > #, no-wrap > msgid "3." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1838 >+#: ../src/xz/xz.1:2024 > msgid "" >-"Memory usage limit for decompression in bytes. A special value of zero " >-"indicates the default setting, which for single-threaded mode is the same as " >-"no limit." >+"Memory usage limit for decompression in bytes (B<--memlimit-decompress>). A " >+"special value of B<0> indicates the default setting which for " >+"single-threaded mode is the same as no limit." > msgstr "" > >+#. type: IP >+#: ../src/xz/xz.1:2024 ../src/xz/xz.1:2129 ../src/xz/xz.1:2166 >+#: ../src/xz/xz.1:2193 ../src/xz/xz.1:2273 ../src/xz/xz.1:2289 >+#, no-wrap >+msgid "4." >+msgstr "" >+ > #. type: Plain text >-#: ../src/xz/xz.1:1842 >+#: ../src/xz/xz.1:2036 > msgid "" >+"Since B<xz> 5.3.4alpha: Memory usage for multi-threaded decompression in " >+"bytes (B<--memlimit-mt-decompress>). This is never zero because a " >+"system-specific default value shown in the column 5 is used if no limit has " >+"been specified explicitly. This is also never greater than the value in the " >+"column 3 even if a larger value has been specified with " >+"B<--memlimit-mt-decompress>." >+msgstr "" >+ >+#. type: IP >+#: ../src/xz/xz.1:2036 ../src/xz/xz.1:2131 ../src/xz/xz.1:2168 >+#: ../src/xz/xz.1:2195 ../src/xz/xz.1:2291 >+#, no-wrap >+msgid "5." >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:2048 >+msgid "" >+"Since B<xz> 5.3.4alpha: A system-specific default memory usage limit that is " >+"used to limit the number of threads when compressing with an automatic " >+"number of threads (B<--threads=0>) and no memory usage limit has been " >+"specified (B<--memlimit-compress>). This is also used as the default value " >+"for B<--memlimit-mt-decompress>." >+msgstr "" >+ >+#. type: IP >+#: ../src/xz/xz.1:2048 ../src/xz/xz.1:2133 ../src/xz/xz.1:2170 >+#: ../src/xz/xz.1:2197 ../src/xz/xz.1:2293 >+#, no-wrap >+msgid "6." >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:2053 >+msgid "Since B<xz> 5.3.4alpha: Number of available processor threads." >+msgstr "" >+ >+#. type: Plain text >+#: ../src/xz/xz.1:2057 >+msgid "" > "In the future, the output of B<xz --robot --info-memory> may have more " > "columns, but never more than a single line." > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:1843 >+#: ../src/xz/xz.1:2058 > #, no-wrap > msgid "List mode" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1848 >+#: ../src/xz/xz.1:2063 > msgid "" > "B<xz --robot --list> uses tab-separated output. The first column of every " > "line has a string that indicates the type of the information found on that " >@@ -2729,52 +2956,52 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1848 >+#: ../src/xz/xz.1:2063 > #, no-wrap > msgid "B<name>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1852 >+#: ../src/xz/xz.1:2067 > msgid "" > "This is always the first line when starting to list a file. The second " > "column on the line is the filename." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1852 >+#: ../src/xz/xz.1:2067 > #, no-wrap > msgid "B<file>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1860 >+#: ../src/xz/xz.1:2075 > msgid "" > "This line contains overall information about the B<.xz> file. This line is " > "always printed after the B<name> line." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1860 >+#: ../src/xz/xz.1:2075 > #, no-wrap > msgid "B<stream>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1870 >+#: ../src/xz/xz.1:2085 > msgid "" > "This line type is used only when B<--verbose> was specified. There are as " > "many B<stream> lines as there are streams in the B<.xz> file." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1870 >+#: ../src/xz/xz.1:2085 > #, no-wrap > msgid "B<block>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1885 >+#: ../src/xz/xz.1:2100 > msgid "" > "This line type is used only when B<--verbose> was specified. There are as " > "many B<block> lines as there are blocks in the B<.xz> file. The B<block> " >@@ -2783,13 +3010,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1885 >+#: ../src/xz/xz.1:2100 > #, no-wrap > msgid "B<summary>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1900 >+#: ../src/xz/xz.1:2115 > msgid "" > "This line type is used only when B<--verbose> was specified twice. This " > "line is printed after all B<block> lines. Like the B<file> line, the " >@@ -2797,76 +3024,59 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:1900 >+#: ../src/xz/xz.1:2115 > #, no-wrap > msgid "B<totals>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1904 >+#: ../src/xz/xz.1:2119 > msgid "" > "This line is always the very last line of the list output. It shows the " > "total counts and sizes." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1908 >+#: ../src/xz/xz.1:2123 > msgid "The columns of the B<file> lines:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1912 >+#: ../src/xz/xz.1:2127 > msgid "Number of streams in the file" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1914 >+#: ../src/xz/xz.1:2129 > msgid "Total number of blocks in the stream(s)" > msgstr "" > >-#. type: IP >-#: ../src/xz/xz.1:1914 ../src/xz/xz.1:1951 ../src/xz/xz.1:1978 ../src/xz/xz.1:2058 ../src/xz/xz.1:2074 >-#, no-wrap >-msgid "4." >-msgstr "" >- > #. type: Plain text >-#: ../src/xz/xz.1:1916 >+#: ../src/xz/xz.1:2131 > msgid "Compressed size of the file" > msgstr "" > >-#. type: IP >-#: ../src/xz/xz.1:1916 ../src/xz/xz.1:1953 ../src/xz/xz.1:1980 ../src/xz/xz.1:2076 >-#, no-wrap >-msgid "5." >-msgstr "" >- > #. type: Plain text >-#: ../src/xz/xz.1:1918 >+#: ../src/xz/xz.1:2133 > msgid "Uncompressed size of the file" > msgstr "" > >-#. type: IP >-#: ../src/xz/xz.1:1918 ../src/xz/xz.1:1955 ../src/xz/xz.1:1982 ../src/xz/xz.1:2078 >-#, no-wrap >-msgid "6." >-msgstr "" >- > #. type: Plain text >-#: ../src/xz/xz.1:1924 >+#: ../src/xz/xz.1:2139 > msgid "" >-"Compression ratio, for example B<0.123.> If ratio is over 9.999, three " >+"Compression ratio, for example, B<0.123>. If ratio is over 9.999, three " > "dashes (B<--->) are displayed instead of the ratio." > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:1924 ../src/xz/xz.1:1957 ../src/xz/xz.1:1984 ../src/xz/xz.1:2080 >+#: ../src/xz/xz.1:2139 ../src/xz/xz.1:2172 ../src/xz/xz.1:2199 >+#: ../src/xz/xz.1:2295 > #, no-wrap > msgid "7." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1937 >+#: ../src/xz/xz.1:2152 > msgid "" > "Comma-separated list of integrity check names. The following strings are " > "used for the known check types: B<None>, B<CRC32>, B<CRC64>, and " >@@ -2875,115 +3085,116 @@ > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:1937 ../src/xz/xz.1:1959 ../src/xz/xz.1:1986 ../src/xz/xz.1:2083 >+#: ../src/xz/xz.1:2152 ../src/xz/xz.1:2174 ../src/xz/xz.1:2201 >+#: ../src/xz/xz.1:2298 > #, no-wrap > msgid "8." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1939 >+#: ../src/xz/xz.1:2154 > msgid "Total size of stream padding in the file" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1945 >+#: ../src/xz/xz.1:2160 > msgid "The columns of the B<stream> lines:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1949 >+#: ../src/xz/xz.1:2164 > msgid "Stream number (the first stream is 1)" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1951 >+#: ../src/xz/xz.1:2166 > msgid "Number of blocks in the stream" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1953 >+#: ../src/xz/xz.1:2168 > msgid "Compressed start offset" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1955 >+#: ../src/xz/xz.1:2170 > msgid "Uncompressed start offset" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1957 >+#: ../src/xz/xz.1:2172 > msgid "Compressed size (does not include stream padding)" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1959 ../src/xz/xz.1:1988 ../src/xz/xz.1:2078 >+#: ../src/xz/xz.1:2174 ../src/xz/xz.1:2203 ../src/xz/xz.1:2293 > msgid "Uncompressed size" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1961 ../src/xz/xz.1:1990 >+#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2205 > msgid "Compression ratio" > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:1961 ../src/xz/xz.1:1988 ../src/xz/xz.1:2085 >+#: ../src/xz/xz.1:2176 ../src/xz/xz.1:2203 ../src/xz/xz.1:2300 > #, no-wrap > msgid "9." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1963 ../src/xz/xz.1:1992 >+#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2207 > msgid "Name of the integrity check" > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:1963 ../src/xz/xz.1:1990 ../src/xz/xz.1:2101 >+#: ../src/xz/xz.1:2178 ../src/xz/xz.1:2205 ../src/xz/xz.1:2316 > #, no-wrap > msgid "10." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1965 >+#: ../src/xz/xz.1:2180 > msgid "Size of stream padding" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1971 >+#: ../src/xz/xz.1:2186 > msgid "The columns of the B<block> lines:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1975 >+#: ../src/xz/xz.1:2190 > msgid "Number of the stream containing this block" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1978 >+#: ../src/xz/xz.1:2193 > msgid "Block number relative to the beginning of the stream (the first block is 1)" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1980 >+#: ../src/xz/xz.1:2195 > msgid "Block number relative to the beginning of the file" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1982 >+#: ../src/xz/xz.1:2197 > msgid "Compressed start offset relative to the beginning of the file" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1984 >+#: ../src/xz/xz.1:2199 > msgid "Uncompressed start offset relative to the beginning of the file" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:1986 >+#: ../src/xz/xz.1:2201 > msgid "Total compressed size of the block (includes headers)" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2004 >+#: ../src/xz/xz.1:2219 > msgid "" > "If B<--verbose> was specified twice, additional columns are included on the " > "B<block> lines. These are not displayed with a single B<--verbose>, because " >@@ -2991,35 +3202,35 @@ > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:2006 ../src/xz/xz.1:2106 >+#: ../src/xz/xz.1:2221 ../src/xz/xz.1:2321 > #, no-wrap > msgid "11." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2008 >+#: ../src/xz/xz.1:2223 > msgid "Value of the integrity check in hexadecimal" > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:2008 ../src/xz/xz.1:2116 >+#: ../src/xz/xz.1:2223 ../src/xz/xz.1:2331 > #, no-wrap > msgid "12." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2010 >+#: ../src/xz/xz.1:2225 > msgid "Block header size" > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:2010 >+#: ../src/xz/xz.1:2225 > #, no-wrap > msgid "13." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2020 >+#: ../src/xz/xz.1:2235 > msgid "" > "Block flags: B<c> indicates that compressed size is present, and B<u> " > "indicates that uncompressed size is present. If the flag is not set, a dash " >@@ -3028,39 +3239,39 @@ > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:2020 >+#: ../src/xz/xz.1:2235 > #, no-wrap > msgid "14." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2023 >+#: ../src/xz/xz.1:2238 > msgid "" > "Size of the actual compressed data in the block (this excludes the block " > "header, block padding, and check fields)" > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:2023 >+#: ../src/xz/xz.1:2238 > #, no-wrap > msgid "15." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2028 >+#: ../src/xz/xz.1:2243 > msgid "" > "Amount of memory (in bytes) required to decompress this block with this " > "B<xz> version" > msgstr "" > > #. type: IP >-#: ../src/xz/xz.1:2028 >+#: ../src/xz/xz.1:2243 > #, no-wrap > msgid "16." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2035 >+#: ../src/xz/xz.1:2250 > msgid "" > "Filter chain. Note that most of the options used at compression time cannot " > "be known, because only the options that are needed for decompression are " >@@ -3068,151 +3279,152 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2041 >+#: ../src/xz/xz.1:2256 > msgid "The columns of the B<summary> lines:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2048 >+#: ../src/xz/xz.1:2263 > msgid "" > "Amount of memory (in bytes) required to decompress this file with this B<xz> " > "version" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2054 ../src/xz/xz.1:2112 >+#: ../src/xz/xz.1:2269 ../src/xz/xz.1:2327 > msgid "" > "B<yes> or B<no> indicating if all block headers have both compressed size " > "and uncompressed size stored in them" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2058 ../src/xz/xz.1:2116 >+#: ../src/xz/xz.1:2273 ../src/xz/xz.1:2331 > msgid "I<Since> B<xz> I<5.1.2alpha:>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2062 ../src/xz/xz.1:2120 >+#: ../src/xz/xz.1:2277 ../src/xz/xz.1:2335 > msgid "Minimum B<xz> version required to decompress the file" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2068 >+#: ../src/xz/xz.1:2283 > msgid "The columns of the B<totals> line:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2072 >+#: ../src/xz/xz.1:2287 > msgid "Number of streams" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2074 >+#: ../src/xz/xz.1:2289 > msgid "Number of blocks" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2076 >+#: ../src/xz/xz.1:2291 > msgid "Compressed size" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2080 >+#: ../src/xz/xz.1:2295 > msgid "Average compression ratio" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2083 >+#: ../src/xz/xz.1:2298 > msgid "Comma-separated list of integrity check names that were present in the files" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2085 >+#: ../src/xz/xz.1:2300 > msgid "Stream padding size" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2091 >+#: ../src/xz/xz.1:2306 > msgid "" > "Number of files. This is here to keep the order of the earlier columns the " > "same as on B<file> lines." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2099 >+#: ../src/xz/xz.1:2314 > msgid "" > "If B<--verbose> was specified twice, additional columns are included on the " > "B<totals> line:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2106 >+#: ../src/xz/xz.1:2321 > msgid "" > "Maximum amount of memory (in bytes) required to decompress the files with " > "this B<xz> version" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2126 >+#: ../src/xz/xz.1:2341 > msgid "" > "Future versions may add new line types and new columns can be added to the " > "existing line types, but the existing columns won't be changed." > msgstr "" > > #. type: SH >-#: ../src/xz/xz.1:2127 ../src/xzdec/xzdec.1:104 ../src/lzmainfo/lzmainfo.1:44 >+#: ../src/xz/xz.1:2342 ../src/xzdec/xzdec.1:104 ../src/lzmainfo/lzmainfo.1:44 >+#: ../src/scripts/xzgrep.1:81 > #, no-wrap > msgid "EXIT STATUS" > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:2128 ../src/xzdec/xzdec.1:105 ../src/lzmainfo/lzmainfo.1:45 >+#: ../src/xz/xz.1:2343 ../src/xzdec/xzdec.1:105 ../src/lzmainfo/lzmainfo.1:45 > #, no-wrap > msgid "B<0>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2131 ../src/lzmainfo/lzmainfo.1:48 >+#: ../src/xz/xz.1:2346 ../src/lzmainfo/lzmainfo.1:48 > msgid "All is good." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:2131 ../src/xzdec/xzdec.1:108 ../src/lzmainfo/lzmainfo.1:48 >+#: ../src/xz/xz.1:2346 ../src/xzdec/xzdec.1:108 ../src/lzmainfo/lzmainfo.1:48 > #, no-wrap > msgid "B<1>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2134 ../src/xzdec/xzdec.1:111 ../src/lzmainfo/lzmainfo.1:51 >+#: ../src/xz/xz.1:2349 ../src/xzdec/xzdec.1:111 ../src/lzmainfo/lzmainfo.1:51 > msgid "An error occurred." > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:2134 >+#: ../src/xz/xz.1:2349 > #, no-wrap > msgid "B<2>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2138 >+#: ../src/xz/xz.1:2353 > msgid "Something worth a warning occurred, but no actual errors occurred." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2141 >+#: ../src/xz/xz.1:2356 > msgid "" > "Notices (not warnings or errors) printed on standard error don't affect the " > "exit status." > msgstr "" > > #. type: SH >-#: ../src/xz/xz.1:2142 ../src/scripts/xzgrep.1:80 ../src/scripts/xzless.1:52 >+#: ../src/xz/xz.1:2357 ../src/scripts/xzgrep.1:94 ../src/scripts/xzless.1:52 > #, no-wrap > msgid "ENVIRONMENT" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2155 >+#: ../src/xz/xz.1:2370 > msgid "" > "B<xz> parses space-separated lists of options from the environment variables " > "B<XZ_DEFAULTS> and B<XZ_OPT>, in this order, before parsing the options from " >@@ -3222,13 +3434,13 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:2155 >+#: ../src/xz/xz.1:2370 > #, no-wrap > msgid "B<XZ_DEFAULTS>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2164 >+#: ../src/xz/xz.1:2379 > msgid "" > "User-specific or system-wide default options. Typically this is set in a " > "shell initialization script to enable B<xz>'s memory usage limiter by " >@@ -3237,36 +3449,36 @@ > msgstr "" > > #. type: TP >-#: ../src/xz/xz.1:2164 >+#: ../src/xz/xz.1:2379 > #, no-wrap > msgid "B<XZ_OPT>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2175 >+#: ../src/xz/xz.1:2390 > msgid "" > "This is for passing options to B<xz> when it is not possible to set the " >-"options directly on the B<xz> command line. This is the case e.g. when " >-"B<xz> is run by a script or tool, e.g. GNU B<tar>(1):" >+"options directly on the B<xz> command line. This is the case when B<xz> is " >+"run by a script or tool, for example, GNU B<tar>(1):" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2181 >+#: ../src/xz/xz.1:2396 > #, no-wrap > msgid "CW<XZ_OPT=-2v tar caf foo.tar.xz foo>\n" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2194 >+#: ../src/xz/xz.1:2410 > msgid "" >-"Scripts may use B<XZ_OPT> e.g. to set script-specific default compression " >-"options. It is still recommended to allow users to override B<XZ_OPT> if " >-"that is reasonable, e.g. in B<sh>(1) scripts one may use something like " >-"this:" >+"Scripts may use B<XZ_OPT>, for example, to set script-specific default " >+"compression options. It is still recommended to allow users to override " >+"B<XZ_OPT> if that is reasonable. For example, in B<sh>(1) scripts one may " >+"use something like this:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2201 >+#: ../src/xz/xz.1:2417 > #, no-wrap > msgid "" > "CW<XZ_OPT=${XZ_OPT-\"-7e\"}\n" >@@ -3274,13 +3486,13 @@ > msgstr "" > > #. type: SH >-#: ../src/xz/xz.1:2206 >+#: ../src/xz/xz.1:2422 > #, no-wrap > msgid "LZMA UTILS COMPATIBILITY" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2219 >+#: ../src/xz/xz.1:2435 > msgid "" > "The command line syntax of B<xz> is practically a superset of B<lzma>, " > "B<unlzma>, and B<lzcat> as found from LZMA Utils 4.32.x. In most cases, it " >@@ -3290,13 +3502,13 @@ > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:2220 >+#: ../src/xz/xz.1:2436 > #, no-wrap > msgid "Compression preset levels" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2227 >+#: ../src/xz/xz.1:2443 > msgid "" > "The numbering of the compression level presets is not identical in B<xz> and " > "LZMA Utils. The most important difference is how dictionary sizes are " >@@ -3305,43 +3517,43 @@ > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:2233 ../src/xz/xz.1:2258 >+#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474 > #, no-wrap > msgid "Level" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:2233 ../src/xz/xz.1:2258 >+#: ../src/xz/xz.1:2449 ../src/xz/xz.1:2474 > #, no-wrap > msgid "xz" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:2233 >+#: ../src/xz/xz.1:2449 > #, no-wrap > msgid "LZMA Utils" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:2234 ../src/xz/xz.1:2259 >+#: ../src/xz/xz.1:2450 ../src/xz/xz.1:2475 > #, no-wrap > msgid "N/A" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:2235 >+#: ../src/xz/xz.1:2451 > #, no-wrap > msgid "64 KiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:2237 >+#: ../src/xz/xz.1:2453 > #, no-wrap > msgid "512 KiB" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2252 >+#: ../src/xz/xz.1:2468 > msgid "" > "The dictionary size differences affect the compressor memory usage too, but " > "there are some other differences between LZMA Utils and XZ Utils, which make " >@@ -3349,72 +3561,73 @@ > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:2258 >+#: ../src/xz/xz.1:2474 > #, no-wrap > msgid "LZMA Utils 4.32.x" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:2261 ../src/xz/xz.1:2262 >+#: ../src/xz/xz.1:2477 ../src/xz/xz.1:2478 > #, no-wrap > msgid "12 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:2264 >+#: ../src/xz/xz.1:2480 > #, no-wrap > msgid "26 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:2265 >+#: ../src/xz/xz.1:2481 > #, no-wrap > msgid "45 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:2266 >+#: ../src/xz/xz.1:2482 > #, no-wrap > msgid "83 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:2267 >+#: ../src/xz/xz.1:2483 > #, no-wrap > msgid "159 MiB" > msgstr "" > > #. type: tbl table >-#: ../src/xz/xz.1:2268 >+#: ../src/xz/xz.1:2484 > #, no-wrap > msgid "311 MiB" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2277 >+#: ../src/xz/xz.1:2493 > msgid "" > "The default preset level in LZMA Utils is B<-7> while in XZ Utils it is " > "B<-6>, so both use an 8 MiB dictionary by default." > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:2278 >+#: ../src/xz/xz.1:2494 > #, no-wrap > msgid "Streamed vs. non-streamed .lzma files" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2288 >+#: ../src/xz/xz.1:2504 > msgid "" > "The uncompressed size of the file can be stored in the B<.lzma> header. " > "LZMA Utils does that when compressing regular files. The alternative is to " > "mark that uncompressed size is unknown and use end-of-payload marker to " > "indicate where the decompressor should stop. LZMA Utils uses this method " >-"when uncompressed size isn't known, which is the case for example in pipes." >+"when uncompressed size isn't known, which is the case, for example, in " >+"pipes." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2309 >+#: ../src/xz/xz.1:2525 > msgid "" > "B<xz> supports decompressing B<.lzma> files with or without end-of-payload " > "marker, but all B<.lzma> files created by B<xz> will use end-of-payload " >@@ -3426,13 +3639,13 @@ > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:2310 >+#: ../src/xz/xz.1:2526 > #, no-wrap > msgid "Unsupported .lzma files" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2333 >+#: ../src/xz/xz.1:2549 > msgid "" > "The B<.lzma> format allows I<lc> values up to 8, and I<lp> values up to 4. " > "LZMA Utils can decompress files with any I<lc> and I<lp>, but always creates " >@@ -3441,7 +3654,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2344 >+#: ../src/xz/xz.1:2560 > msgid "" > "The implementation of the LZMA1 filter in liblzma requires that the sum of " > "I<lc> and I<lp> must not exceed 4. Thus, B<.lzma> files, which exceed this " >@@ -3449,7 +3662,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2359 >+#: ../src/xz/xz.1:2575 > msgid "" > "LZMA Utils creates only B<.lzma> files which have a dictionary size of " > "2^I<n> (a power of 2) but accepts files with any dictionary size. liblzma " >@@ -3459,20 +3672,20 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2364 >+#: ../src/xz/xz.1:2580 > msgid "" > "These limitations shouldn't be a problem in practice, since practically all " > "B<.lzma> files have been compressed with settings that liblzma will accept." > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:2365 >+#: ../src/xz/xz.1:2581 > #, no-wrap > msgid "Trailing garbage" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2375 >+#: ../src/xz/xz.1:2591 > msgid "" > "When decompressing, LZMA Utils silently ignore everything after the first " > "B<.lzma> stream. In most situations, this is a bug. This also means that " >@@ -3480,7 +3693,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2385 >+#: ../src/xz/xz.1:2601 > msgid "" > "If there is data left after the first B<.lzma> stream, B<xz> considers the " > "file to be corrupt unless B<--single-stream> was used. This may break " >@@ -3488,19 +3701,19 @@ > msgstr "" > > #. type: SH >-#: ../src/xz/xz.1:2386 ../src/xzdec/xzdec.1:117 >+#: ../src/xz/xz.1:2602 ../src/xzdec/xzdec.1:117 > #, no-wrap > msgid "NOTES" > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:2388 >+#: ../src/xz/xz.1:2604 > #, no-wrap > msgid "Compressed output may vary" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2399 >+#: ../src/xz/xz.1:2615 > msgid "" > "The exact compressed output produced from the same uncompressed input file " > "may vary between XZ Utils versions even if compression options are " >@@ -3511,7 +3724,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2409 >+#: ../src/xz/xz.1:2625 > msgid "" > "The above means that once B<--rsyncable> has been implemented, the resulting " > "files won't necessarily be rsyncable unless both old and new files have been " >@@ -3521,13 +3734,13 @@ > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:2410 >+#: ../src/xz/xz.1:2626 > #, no-wrap > msgid "Embedded .xz decompressors" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2427 >+#: ../src/xz/xz.1:2643 > msgid "" > "Embedded B<.xz> decompressor implementations like XZ Embedded don't " > "necessarily support files created with integrity I<check> types other than " >@@ -3537,7 +3750,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2437 >+#: ../src/xz/xz.1:2653 > msgid "" > "Outside embedded systems, all B<.xz> format decompressors support all the " > "I<check> types, or at least are able to decompress the file without " >@@ -3545,90 +3758,90 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2440 >+#: ../src/xz/xz.1:2656 > msgid "XZ Embedded supports BCJ filters, but only with the default start offset." > msgstr "" > > #. type: SH >-#: ../src/xz/xz.1:2441 >+#: ../src/xz/xz.1:2657 > #, no-wrap > msgid "EXAMPLES" > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:2443 >+#: ../src/xz/xz.1:2659 > #, no-wrap > msgid "Basics" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2453 >+#: ../src/xz/xz.1:2669 > msgid "" > "Compress the file I<foo> into I<foo.xz> using the default compression level " > "(B<-6>), and remove I<foo> if compression is successful:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2458 >+#: ../src/xz/xz.1:2674 > #, no-wrap > msgid "CW<xz foo>\n" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2469 >+#: ../src/xz/xz.1:2685 > msgid "" > "Decompress I<bar.xz> into I<bar> and don't remove I<bar.xz> even if " > "decompression is successful:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2474 >+#: ../src/xz/xz.1:2690 > #, no-wrap > msgid "CW<xz -dk bar.xz>\n" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2487 >+#: ../src/xz/xz.1:2703 > msgid "" > "Create I<baz.tar.xz> with the preset B<-4e> (B<-4 --extreme>), which is " >-"slower than e.g. the default B<-6>, but needs less memory for compression " >-"and decompression (48\\ MiB and 5\\ MiB, respectively):" >+"slower than the default B<-6>, but needs less memory for compression and " >+"decompression (48\\ MiB and 5\\ MiB, respectively):" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2492 >+#: ../src/xz/xz.1:2708 > #, no-wrap > msgid "CW<tar cf - baz | xz -4e E<gt> baz.tar.xz>\n" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2498 >+#: ../src/xz/xz.1:2714 > msgid "" > "A mix of compressed and uncompressed files can be decompressed to standard " > "output with a single command:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2503 >+#: ../src/xz/xz.1:2719 > #, no-wrap > msgid "CW<xz -dcf a.txt b.txt.xz c.txt d.txt.lzma E<gt> abcd.txt>\n" > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:2507 >+#: ../src/xz/xz.1:2723 > #, no-wrap > msgid "Parallel compression of many files" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2513 >+#: ../src/xz/xz.1:2729 > msgid "" > "On GNU and *BSD, B<find>(1) and B<xargs>(1) can be used to parallelize " > "compression of many files:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2519 >+#: ../src/xz/xz.1:2735 > #, no-wrap > msgid "" > "CW<find . -type f \\e! -name '*.xz' -print0 \\e\n" >@@ -3636,7 +3849,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2541 >+#: ../src/xz/xz.1:2757 > msgid "" > "The B<-P> option to B<xargs>(1) sets the number of parallel B<xz> " > "processes. The best value for the B<-n> option depends on how many files " >@@ -3647,33 +3860,33 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2549 >+#: ../src/xz/xz.1:2765 > msgid "" > "The option B<-T1> for B<xz> is there to force it to single-threaded mode, " > "because B<xargs>(1) is used to control the amount of parallelization." > msgstr "" > > #. type: SS >-#: ../src/xz/xz.1:2550 >+#: ../src/xz/xz.1:2766 > #, no-wrap > msgid "Robot mode" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2553 >+#: ../src/xz/xz.1:2769 > msgid "" > "Calculate how many bytes have been saved in total after compressing multiple " > "files:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2558 >+#: ../src/xz/xz.1:2774 > #, no-wrap > msgid "CW<xz --robot --list *.xz | awk '/^totals/{print $5-$4}'>\n" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2573 >+#: ../src/xz/xz.1:2789 > msgid "" > "A script may want to know that it is using new enough B<xz>. The following " > "B<sh>(1) script checks that the version number of the B<xz> tool is at " >@@ -3682,7 +3895,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2582 >+#: ../src/xz/xz.1:2798 > #, no-wrap > msgid "" > "CW<if ! eval \"$(xz --robot --version 2E<gt> /dev/null)\" ||\n" >@@ -3693,17 +3906,17 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2589 >+#: ../src/xz/xz.1:2805 > msgid "" > "Set a memory usage limit for decompression using B<XZ_OPT>, but if a limit " > "has already been set, don't increase it:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2599 >+#: ../src/xz/xz.1:2815 > #, no-wrap > msgid "" >-"CW<NEWLIM=$((123 E<lt>E<lt> 20)) # 123 MiB\n" >+"CW<NEWLIM=$((123 E<lt>E<lt> 20))\\ \\ # 123 MiB\n" > "OLDLIM=$(xz --robot --info-memory | cut -f3)\n" > "if [ $OLDLIM -eq 0 -o $OLDLIM -gt $NEWLIM ]; then\n" > " XZ_OPT=\"$XZ_OPT --memlimit-decompress=$NEWLIM\"\n" >@@ -3712,7 +3925,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2609 >+#: ../src/xz/xz.1:2825 > msgid "" > "The simplest use for custom filter chains is customizing a LZMA2 preset. " > "This can be useful, because the presets cover only a subset of the " >@@ -3720,7 +3933,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2617 >+#: ../src/xz/xz.1:2833 > msgid "" > "The CompCPU columns of the tables from the descriptions of the options B<-0> " > "... B<-9> and B<--extreme> are useful when customizing LZMA2 presets. Here " >@@ -3728,22 +3941,22 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2642 >+#: ../src/xz/xz.1:2858 > msgid "" >-"If you know that a file requires somewhat big dictionary (e.g. 32 MiB) to " >-"compress well, but you want to compress it quicker than B<xz -8> would do, a " >-"preset with a low CompCPU value (e.g. 1) can be modified to use a bigger " >-"dictionary:" >+"If you know that a file requires somewhat big dictionary (for example, 32\\ " >+"MiB) to compress well, but you want to compress it quicker than B<xz -8> " >+"would do, a preset with a low CompCPU value (for example, 1) can be " >+"modified to use a bigger dictionary:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2647 >+#: ../src/xz/xz.1:2863 > #, no-wrap > msgid "CW<xz --lzma2=preset=1,dict=32MiB foo.tar>\n" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2663 >+#: ../src/xz/xz.1:2879 > msgid "" > "With certain files, the above command may be faster than B<xz -6> while " > "compressing significantly better. However, it must be emphasized that only " >@@ -3756,7 +3969,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2670 >+#: ../src/xz/xz.1:2886 > msgid "" > "If very high compressor and decompressor memory usage is fine, and the file " > "being compressed is at least several hundred megabytes, it may be useful to " >@@ -3764,13 +3977,13 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2675 >+#: ../src/xz/xz.1:2891 > #, no-wrap > msgid "CW<xz -vv --lzma2=dict=192MiB big_foo.tar>\n" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2688 >+#: ../src/xz/xz.1:2904 > msgid "" > "Using B<-vv> (B<--verbose --verbose>) like in the above example can be " > "useful to see the memory requirements of the compressor and decompressor. " >@@ -3779,56 +3992,56 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2701 >+#: ../src/xz/xz.1:2916 > msgid "" > "Sometimes the compression time doesn't matter, but the decompressor memory " >-"usage has to be kept low e.g. to make it possible to decompress the file on " >-"an embedded system. The following command uses B<-6e> (B<-6 --extreme>) as " >-"a base and sets the dictionary to only 64\\ KiB. The resulting file can be " >-"decompressed with XZ Embedded (that's why there is B<--check=crc32>) using " >-"about 100\\ KiB of memory." >+"usage has to be kept low, for example, to make it possible to decompress the " >+"file on an embedded system. The following command uses B<-6e> (B<-6 " >+"--extreme>) as a base and sets the dictionary to only 64\\ KiB. The " >+"resulting file can be decompressed with XZ Embedded (that's why there is " >+"B<--check=crc32>) using about 100\\ KiB of memory." > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2706 >+#: ../src/xz/xz.1:2921 > #, no-wrap > msgid "CW<xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo>\n" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2729 >+#: ../src/xz/xz.1:2944 > msgid "" > "If you want to squeeze out as many bytes as possible, adjusting the number " > "of literal context bits (I<lc>) and number of position bits (I<pb>) can " > "sometimes help. Adjusting the number of literal position bits (I<lp>) " >-"might help too, but usually I<lc> and I<pb> are more important. E.g. a " >-"source code archive contains mostly US-ASCII text, so something like the " >-"following might give slightly (like 0.1\\ %) smaller file than B<xz -6e> " >-"(try also without B<lc=4>):" >+"might help too, but usually I<lc> and I<pb> are more important. For " >+"example, a source code archive contains mostly US-ASCII text, so something " >+"like the following might give slightly (like 0.1\\ %) smaller file than B<xz " >+"-6e> (try also without B<lc=4>):" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2734 >+#: ../src/xz/xz.1:2949 > #, no-wrap > msgid "CW<xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar>\n" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2742 >+#: ../src/xz/xz.1:2957 > msgid "" > "Using another filter together with LZMA2 can improve compression with " >-"certain file types. E.g. to compress a x86-32 or x86-64 shared library " >-"using the x86 BCJ filter:" >+"certain file types. For example, to compress a x86-32 or x86-64 shared " >+"library using the x86 BCJ filter:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2747 >+#: ../src/xz/xz.1:2962 > #, no-wrap > msgid "CW<xz --x86 --lzma2 libfoo.so>\n" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2761 >+#: ../src/xz/xz.1:2976 > msgid "" > "Note that the order of the filter options is significant. If B<--x86> is " > "specified after B<--lzma2>, B<xz> will give an error, because there cannot " >@@ -3837,7 +4050,7 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2767 >+#: ../src/xz/xz.1:2982 > msgid "" > "The Delta filter together with LZMA2 can give good results with bitmap " > "images. It should usually beat PNG, which has a few more advanced filters " >@@ -3845,55 +4058,57 @@ > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2777 >+#: ../src/xz/xz.1:2992 > msgid "" >-"The image has to be saved in uncompressed format, e.g. as uncompressed " >-"TIFF. The distance parameter of the Delta filter is set to match the number " >-"of bytes per pixel in the image. E.g. 24-bit RGB bitmap needs B<dist=3>, " >-"and it is also good to pass B<pb=0> to LZMA2 to accommodate the three-byte " >-"alignment:" >+"The image has to be saved in uncompressed format, for example, as " >+"uncompressed TIFF. The distance parameter of the Delta filter is set to " >+"match the number of bytes per pixel in the image. For example, 24-bit RGB " >+"bitmap needs B<dist=3>, and it is also good to pass B<pb=0> to LZMA2 to " >+"accommodate the three-byte alignment:" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2782 >+#: ../src/xz/xz.1:2997 > #, no-wrap > msgid "CW<xz --delta=dist=3 --lzma2=pb=0 foo.tiff>\n" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2790 >+#: ../src/xz/xz.1:3005 > msgid "" >-"If multiple images have been put into a single archive (e.g.\\& B<.tar>), " >-"the Delta filter will work on that too as long as all images have the same " >-"number of bytes per pixel." >+"If multiple images have been put into a single archive (for example, " >+"B<.tar>), the Delta filter will work on that too as long as all images have " >+"the same number of bytes per pixel." > msgstr "" > > #. type: SH >-#: ../src/xz/xz.1:2791 ../src/xzdec/xzdec.1:143 ../src/lzmainfo/lzmainfo.1:59 ../src/scripts/xzdiff.1:64 ../src/scripts/xzgrep.1:92 ../src/scripts/xzless.1:65 ../src/scripts/xzmore.1:51 >+#: ../src/xz/xz.1:3006 ../src/xzdec/xzdec.1:143 ../src/lzmainfo/lzmainfo.1:59 >+#: ../src/scripts/xzdiff.1:65 ../src/scripts/xzgrep.1:106 >+#: ../src/scripts/xzless.1:65 ../src/scripts/xzmore.1:51 > #, no-wrap > msgid "SEE ALSO" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2800 >+#: ../src/xz/xz.1:3015 > msgid "" > "B<xzdec>(1), B<xzdiff>(1), B<xzgrep>(1), B<xzless>(1), B<xzmore>(1), " > "B<gzip>(1), B<bzip2>(1), B<7z>(1)" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2802 >+#: ../src/xz/xz.1:3017 > msgid "XZ Utils: E<lt>https://tukaani.org/xz/E<gt>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2804 ../src/xzdec/xzdec.1:146 >+#: ../src/xz/xz.1:3019 ../src/xzdec/xzdec.1:146 > msgid "XZ Embedded: E<lt>https://tukaani.org/xz/embedded.htmlE<gt>" > msgstr "" > > #. type: Plain text >-#: ../src/xz/xz.1:2805 >-msgid "LZMA SDK: E<lt>http://7-zip.org/sdk.htmlE<gt>" >+#: ../src/xz/xz.1:3020 >+msgid "LZMA SDK: E<lt>https://7-zip.org/sdk.htmlE<gt>" > msgstr "" > > #. type: TH >@@ -4069,7 +4284,7 @@ > msgstr "" > > #. type: SH >-#: ../src/lzmainfo/lzmainfo.1:51 ../src/scripts/xzdiff.1:72 >+#: ../src/lzmainfo/lzmainfo.1:51 ../src/scripts/xzdiff.1:74 > #, no-wrap > msgid "BUGS" > msgstr "" >@@ -4088,9 +4303,9 @@ > msgstr "" > > #. type: TH >-#: ../src/scripts/xzdiff.1:9 ../src/scripts/xzgrep.1:9 >+#: ../src/scripts/xzdiff.1:9 > #, no-wrap >-msgid "2011-03-19" >+msgid "2021-06-04" > msgstr "" > > #. type: Plain text >@@ -4119,34 +4334,35 @@ > msgstr "" > > #. type: Plain text >-#: ../src/scripts/xzdiff.1:58 >+#: ../src/scripts/xzdiff.1:59 > msgid "" > "B<xzcmp> and B<xzdiff> invoke B<cmp>(1) or B<diff>(1) on files compressed " >-"with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), or B<lzop>(1). All " >-"options specified are passed directly to B<cmp>(1) or B<diff>(1). If only " >-"one file is specified, then the files compared are I<file1> (which must have " >-"a suffix of a supported compression format) and I<file1> from which the " >-"compression format suffix has been stripped. If two files are specified, " >-"then they are uncompressed if necessary and fed to B<cmp>(1) or " >-"B<diff>(1). The exit status from B<cmp>(1) or B<diff>(1) is preserved." >+"with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), or " >+"B<zstd>(1). All options specified are passed directly to B<cmp>(1) or " >+"B<diff>(1). If only one file is specified, then the files compared are " >+"I<file1> (which must have a suffix of a supported compression format) and " >+"I<file1> from which the compression format suffix has been stripped. If two " >+"files are specified, then they are uncompressed if necessary and fed to " >+"B<cmp>(1) or B<diff>(1). The exit status from B<cmp>(1) or B<diff>(1) is " >+"preserved unless a decompression error occurs; then exit status is 2." > msgstr "" > > #. type: Plain text >-#: ../src/scripts/xzdiff.1:64 >+#: ../src/scripts/xzdiff.1:65 > msgid "" > "The names B<lzcmp> and B<lzdiff> are provided for backward compatibility " > "with LZMA Utils." > msgstr "" > > #. type: Plain text >-#: ../src/scripts/xzdiff.1:72 >+#: ../src/scripts/xzdiff.1:74 > msgid "" > "B<cmp>(1), B<diff>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), " >-"B<zdiff>(1)" >+"B<zstd>(1), B<zdiff>(1)" > msgstr "" > > #. type: Plain text >-#: ../src/scripts/xzdiff.1:77 >+#: ../src/scripts/xzdiff.1:79 > msgid "" > "Messages from the B<cmp>(1) or B<diff>(1) programs refer to temporary " > "filenames instead of those specified." >@@ -4158,6 +4374,12 @@ > msgid "XZGREP" > msgstr "" > >+#. type: TH >+#: ../src/scripts/xzgrep.1:9 >+#, no-wrap >+msgid "2022-07-19" >+msgstr "" >+ > #. type: Plain text > #: ../src/scripts/xzgrep.1:12 > msgid "xzgrep - search compressed files for a regular expression" >@@ -4165,75 +4387,101 @@ > > #. type: Plain text > #: ../src/scripts/xzgrep.1:18 >-msgid "B<xzgrep> [I<grep_options>] [B<-e>] I<pattern> I<file>..." >+msgid "B<xzgrep> [I<grep_options>] [B<-e>] I<pattern> [I<file...>]" > msgstr "" > > #. type: Plain text > #: ../src/scripts/xzgrep.1:21 >-msgid "B<xzegrep> ..." >+msgid "B<xzegrep> \\&..." > msgstr "" > > #. type: Plain text > #: ../src/scripts/xzgrep.1:24 >-msgid "B<xzfgrep> ..." >+msgid "B<xzfgrep> \\&..." > msgstr "" > > #. type: Plain text > #: ../src/scripts/xzgrep.1:27 >-msgid "B<lzgrep> ..." >+msgid "B<lzgrep> \\&..." > msgstr "" > > #. type: Plain text > #: ../src/scripts/xzgrep.1:30 >-msgid "B<lzegrep> ..." >+msgid "B<lzegrep> \\&..." > msgstr "" > > #. type: Plain text > #: ../src/scripts/xzgrep.1:33 >-msgid "B<lzfgrep> ..." >+msgid "B<lzfgrep> \\&..." > msgstr "" > > #. type: Plain text >-#: ../src/scripts/xzgrep.1:48 >+#: ../src/scripts/xzgrep.1:49 > msgid "" > "B<xzgrep> invokes B<grep>(1) on I<files> which may be either uncompressed " >-"or compressed with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), or " >-"B<lzop>(1). All options specified are passed directly to B<grep>(1)." >+"or compressed with B<xz>(1), B<lzma>(1), B<gzip>(1), B<bzip2>(1), " >+"B<lzop>(1), or B<zstd>(1). All options specified are passed directly to " >+"B<grep>(1)." > msgstr "" > > #. type: Plain text >-#: ../src/scripts/xzgrep.1:60 >+#: ../src/scripts/xzgrep.1:62 > msgid "" > "If no I<file> is specified, then standard input is decompressed if necessary " > "and fed to B<grep>(1). When reading from standard input, B<gzip>(1), " >-"B<bzip2>(1), and B<lzop>(1) compressed files are not supported." >+"B<bzip2>(1), B<lzop>(1), and B<zstd>(1) compressed files are not supported." > msgstr "" > > #. type: Plain text >-#: ../src/scripts/xzgrep.1:79 >+#: ../src/scripts/xzgrep.1:81 > msgid "" >-"If B<xzgrep> is invoked as B<xzegrep> or B<xzfgrep> then B<egrep>(1) or " >-"B<fgrep>(1) is used instead of B<grep>(1). The same applies to names " >+"If B<xzgrep> is invoked as B<xzegrep> or B<xzfgrep> then B<grep -E> or " >+"B<grep -F> is used instead of B<grep>(1). The same applies to names " > "B<lzgrep>, B<lzegrep>, and B<lzfgrep>, which are provided for backward " > "compatibility with LZMA Utils." > msgstr "" > >+#. type: Plain text >+#: ../src/scripts/xzgrep.1:86 >+msgid "" >+"At least one match was found from at least one of the input files. No " >+"errors occurred." >+msgstr "" >+ >+#. type: Plain text >+#: ../src/scripts/xzgrep.1:90 >+msgid "No matches were found from any of the input files. No errors occurred." >+msgstr "" >+ > #. type: TP >-#: ../src/scripts/xzgrep.1:81 >+#: ../src/scripts/xzgrep.1:90 > #, no-wrap >+msgid "E<gt>1" >+msgstr "" >+ >+#. type: Plain text >+#: ../src/scripts/xzgrep.1:94 >+msgid "One or more errors occurred. It is unknown if matches were found." >+msgstr "" >+ >+#. type: TP >+#: ../src/scripts/xzgrep.1:95 >+#, no-wrap > msgid "B<GREP>" > msgstr "" > > #. type: Plain text >-#: ../src/scripts/xzgrep.1:92 >+#: ../src/scripts/xzgrep.1:106 > msgid "" > "If the B<GREP> environment variable is set, B<xzgrep> uses it instead of " >-"B<grep>(1), B<egrep>(1), or B<fgrep>(1)." >+"B<grep>(1), B<grep -E>, or B<grep -F>." > msgstr "" > > #. type: Plain text >-#: ../src/scripts/xzgrep.1:98 >-msgid "B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zgrep>(1)" >+#: ../src/scripts/xzgrep.1:113 >+msgid "" >+"B<grep>(1), B<xz>(1), B<gzip>(1), B<bzip2>(1), B<lzop>(1), B<zstd>(1), " >+"B<zgrep>(1)" > msgstr "" > > #. type: TH >diff -ur xz-5.2.5/src/Makefile.in xz-5.4.3/src/Makefile.in >--- xz-5.2.5/src/Makefile.in 2020-03-17 17:29:35 >+++ xz-5.4.3/src/Makefile.in 2023-05-04 17:31:30 >@@ -1,7 +1,7 @@ >-# Makefile.in generated by automake 1.16.1 from Makefile.am. >+# Makefile.in generated by automake 1.16.5 from Makefile.am. > # @configure_input@ > >-# Copyright (C) 1994-2018 Free Software Foundation, Inc. >+# Copyright (C) 1994-2021 Free Software Foundation, Inc. > > # This Makefile.in is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -168,8 +168,6 @@ > unique=`for i in $$list; do \ > if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ > done | $(am__uniquify_input)` >-ETAGS = etags >-CTAGS = ctags > DIST_SUBDIRS = liblzma xzdec xz lzmainfo scripts > am__DIST_COMMON = $(srcdir)/Makefile.in > DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) >@@ -218,6 +216,8 @@ > CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ > CPP = @CPP@ > CPPFLAGS = @CPPFLAGS@ >+CSCOPE = @CSCOPE@ >+CTAGS = @CTAGS@ > CYGPATH_W = @CYGPATH_W@ > DEFS = @DEFS@ > DEPDIR = @DEPDIR@ >@@ -228,8 +228,10 @@ > ECHO_N = @ECHO_N@ > ECHO_T = @ECHO_T@ > EGREP = @EGREP@ >+ETAGS = @ETAGS@ > EXEEXT = @EXEEXT@ > FGREP = @FGREP@ >+FILECMD = @FILECMD@ > GETOPT_H = @GETOPT_H@ > GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ > GMSGFMT = @GMSGFMT@ >@@ -282,6 +284,7 @@ > PREFERABLY_POSIX_SHELL = @PREFERABLY_POSIX_SHELL@ > PTHREAD_CC = @PTHREAD_CC@ > PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ >+PTHREAD_CXX = @PTHREAD_CXX@ > PTHREAD_LIBS = @PTHREAD_LIBS@ > RANLIB = @RANLIB@ > RC = @RC@ >@@ -340,6 +343,7 @@ > prefix = @prefix@ > program_transform_name = @program_transform_name@ > psdir = @psdir@ >+runstatedir = @runstatedir@ > sbindir = @sbindir@ > sharedstatedir = @sharedstatedir@ > srcdir = @srcdir@ >@@ -510,7 +514,6 @@ > > distclean-tags: > -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags >- > distdir: $(BUILT_SOURCES) > $(MAKE) $(AM_MAKEFLAGS) distdir-am > >diff -ur xz-5.2.5/src/common/common_w32res.rc xz-5.4.3/src/common/common_w32res.rc >--- xz-5.2.5/src/common/common_w32res.rc 2020-03-17 17:28:50 >+++ xz-5.4.3/src/common/common_w32res.rc 2023-05-04 17:21:05 >@@ -6,7 +6,9 @@ > */ > > #include <winresrc.h> >-#include "config.h" >+#ifdef HAVE_CONFIG_H >+# include "config.h" >+#endif > #define LZMA_H_INTERNAL > #define LZMA_H_INTERNAL_RC > #include "lzma/version.h" >diff -ur xz-5.2.5/src/common/mythread.h xz-5.4.3/src/common/mythread.h >--- xz-5.2.5/src/common/mythread.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/common/mythread.h 2023-05-04 17:21:05 >@@ -100,12 +100,18 @@ > // Using pthreads // > //////////////////// > >-#include <sys/time.h> > #include <pthread.h> > #include <signal.h> > #include <time.h> > #include <errno.h> > >+// If clock_gettime() isn't available, use gettimeofday() from <sys/time.h> >+// as a fallback. gettimeofday() is in SUSv2 and thus is supported on all >+// relevant POSIX systems. >+#ifndef HAVE_CLOCK_GETTIME >+# include <sys/time.h> >+#endif >+ > #define MYTHREAD_RET_TYPE void * > #define MYTHREAD_RET_VALUE NULL > >@@ -219,8 +225,8 @@ > mythread_cond_init(mythread_cond *mycond) > { > #ifdef HAVE_CLOCK_GETTIME >- // NOTE: HAVE_DECL_CLOCK_MONOTONIC is always defined to 0 or 1. >-# if defined(HAVE_PTHREAD_CONDATTR_SETCLOCK) && HAVE_DECL_CLOCK_MONOTONIC >+# if defined(HAVE_PTHREAD_CONDATTR_SETCLOCK) && \ >+ defined(HAVE_CLOCK_MONOTONIC) > struct timespec ts; > pthread_condattr_t condattr; > >@@ -294,8 +300,8 @@ > mythread_condtime_set(mythread_condtime *condtime, const mythread_cond *cond, > uint32_t timeout_ms) > { >- condtime->tv_sec = timeout_ms / 1000; >- condtime->tv_nsec = (timeout_ms % 1000) * 1000000; >+ condtime->tv_sec = (time_t)(timeout_ms / 1000); >+ condtime->tv_nsec = (long)((timeout_ms % 1000) * 1000000); > > #ifdef HAVE_CLOCK_GETTIME > struct timespec now; >@@ -370,10 +376,11 @@ > BOOL pending_; \ > if (!InitOnceBeginInitialize(&once_, 0, &pending_, NULL)) \ > abort(); \ >- if (pending_) \ >+ if (pending_) { \ > func(); \ >- if (!InitOnceComplete(&once, 0, NULL)) \ >- abort(); \ >+ if (!InitOnceComplete(&once, 0, NULL)) \ >+ abort(); \ >+ } \ > } while (0) > #endif > >diff -ur xz-5.2.5/src/common/sysdefs.h xz-5.4.3/src/common/sysdefs.h >--- xz-5.2.5/src/common/sysdefs.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/common/sysdefs.h 2023-05-04 17:21:05 >@@ -127,7 +127,7 @@ > #include <stdlib.h> > #include <assert.h> > >-// Pre-C99 systems lack stdbool.h. All the code in LZMA Utils must be written >+// Pre-C99 systems lack stdbool.h. All the code in XZ Utils must be written > // so that it works with fake bool type, for example: > // > // bool foo = (flags & 0x100) != 0; >@@ -149,17 +149,7 @@ > # define __bool_true_false_are_defined 1 > #endif > >-// string.h should be enough but let's include strings.h and memory.h too if >-// they exists, since that shouldn't do any harm, but may improve portability. > #include <string.h> >- >-#ifdef HAVE_STRINGS_H >-# include <strings.h> >-#endif >- >-#ifdef HAVE_MEMORY_H >-# include <memory.h> >-#endif > > // As of MSVC 2013, inline and restrict are supported with > // non-standard keywords. >diff -ur xz-5.2.5/src/common/tuklib_common.h xz-5.4.3/src/common/tuklib_common.h >--- xz-5.2.5/src/common/tuklib_common.h 2020-03-17 17:28:54 >+++ xz-5.4.3/src/common/tuklib_common.h 2023-05-04 17:21:05 >@@ -14,7 +14,7 @@ > #define TUKLIB_COMMON_H > > // The config file may be replaced by a package-specific file. >-// It should include at least stddef.h, inttypes.h, and limits.h. >+// It should include at least stddef.h, stdbool.h, inttypes.h, and limits.h. > #include "tuklib_config.h" > > // TUKLIB_SYMBOL_PREFIX is prefixed to all symbols exported by >diff -ur xz-5.2.5/src/common/tuklib_config.h xz-5.4.3/src/common/tuklib_config.h >--- xz-5.2.5/src/common/tuklib_config.h 2020-03-17 17:28:54 >+++ xz-5.4.3/src/common/tuklib_config.h 2023-05-04 17:21:05 >@@ -1,7 +1,10 @@ >+// If config.h isn't available, assume that the headers required by >+// tuklib_common.h are available. This is required by crc32_tablegen.c. > #ifdef HAVE_CONFIG_H > # include "sysdefs.h" > #else > # include <stddef.h> >+# include <stdbool.h> > # include <inttypes.h> > # include <limits.h> > #endif >diff -ur xz-5.2.5/src/common/tuklib_cpucores.c xz-5.4.3/src/common/tuklib_cpucores.c >--- xz-5.2.5/src/common/tuklib_cpucores.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/common/tuklib_cpucores.c 2023-05-04 17:21:05 >@@ -72,7 +72,16 @@ > } > > #elif defined(TUKLIB_CPUCORES_SYSCTL) >+ // On OpenBSD HW_NCPUONLINE tells the number of processor cores that >+ // are online so it is preferred over HW_NCPU which also counts cores >+ // that aren't currently available. The number of cores online is >+ // often less than HW_NCPU because OpenBSD disables simultaneous >+ // multi-threading (SMT) by default. >+# ifdef HW_NCPUONLINE >+ int name[2] = { CTL_HW, HW_NCPUONLINE }; >+# else > int name[2] = { CTL_HW, HW_NCPU }; >+# endif > int cpus; > size_t cpus_size = sizeof(cpus); > if (sysctl(name, 2, &cpus, &cpus_size, NULL, 0) != -1 >diff -ur xz-5.2.5/src/common/tuklib_integer.h xz-5.4.3/src/common/tuklib_integer.h >--- xz-5.2.5/src/common/tuklib_integer.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/common/tuklib_integer.h 2023-05-04 17:21:05 >@@ -17,8 +17,8 @@ > /// - Byte swapping: bswapXX(num) > /// - Byte order conversions to/from native (byteswaps if Y isn't > /// the native endianness): convXXYe(num) >-/// - Unaligned reads (16/32-bit only): readXXYe(ptr) >-/// - Unaligned writes (16/32-bit only): writeXXYe(ptr, num) >+/// - Unaligned reads: readXXYe(ptr) >+/// - Unaligned writes: writeXXYe(ptr, num) > /// - Aligned reads: aligned_readXXYe(ptr) > /// - Aligned writes: aligned_writeXXYe(ptr, num) > /// >@@ -52,6 +52,12 @@ > // and such functions. > #if defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) > # include <immintrin.h> >+// Only include <intrin.h> when it is needed. GCC and Clang can both >+// use __builtin's, so we only need Windows instrincs when using MSVC. >+// GCC and Clang can set _MSC_VER on Windows, so we need to exclude these >+// cases explicitly. >+#elif defined(_MSC_VER) && !TUKLIB_GNUC_REQ(3, 4) && !defined(__clang__) >+# include <intrin.h> > #endif > > >@@ -343,6 +349,46 @@ > } > > >+static inline uint64_t >+read64be(const uint8_t *buf) >+{ >+#if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) >+ uint64_t num = read64ne(buf); >+ return conv64be(num); >+#else >+ uint64_t num = (uint64_t)buf[0] << 56; >+ num |= (uint64_t)buf[1] << 48; >+ num |= (uint64_t)buf[2] << 40; >+ num |= (uint64_t)buf[3] << 32; >+ num |= (uint64_t)buf[4] << 24; >+ num |= (uint64_t)buf[5] << 16; >+ num |= (uint64_t)buf[6] << 8; >+ num |= (uint64_t)buf[7]; >+ return num; >+#endif >+} >+ >+ >+static inline uint64_t >+read64le(const uint8_t *buf) >+{ >+#if !defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) >+ uint64_t num = read64ne(buf); >+ return conv64le(num); >+#else >+ uint64_t num = (uint64_t)buf[0]; >+ num |= (uint64_t)buf[1] << 8; >+ num |= (uint64_t)buf[2] << 16; >+ num |= (uint64_t)buf[3] << 24; >+ num |= (uint64_t)buf[4] << 32; >+ num |= (uint64_t)buf[5] << 40; >+ num |= (uint64_t)buf[6] << 48; >+ num |= (uint64_t)buf[7] << 56; >+ return num; >+#endif >+} >+ >+ > // NOTE: Possible byte swapping must be done in a macro to allow the compiler > // to optimize byte swapping of constants when using glibc's or *BSD's > // byte swapping macros. The actual write is done in an inline function >@@ -350,11 +396,13 @@ > #if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) > # define write16be(buf, num) write16ne(buf, conv16be(num)) > # define write32be(buf, num) write32ne(buf, conv32be(num)) >+# define write64be(buf, num) write64ne(buf, conv64be(num)) > #endif > > #if !defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS) > # define write16le(buf, num) write16ne(buf, conv16le(num)) > # define write32le(buf, num) write32ne(buf, conv32le(num)) >+# define write64le(buf, num) write64ne(buf, conv64le(num)) > #endif > > >@@ -588,7 +636,7 @@ > #if defined(__INTEL_COMPILER) > return _bit_scan_reverse(n); > >-#elif TUKLIB_GNUC_REQ(3, 4) && UINT_MAX == UINT32_MAX >+#elif (TUKLIB_GNUC_REQ(3, 4) || defined(__clang__)) && UINT_MAX == UINT32_MAX > // GCC >= 3.4 has __builtin_clz(), which gives good results on > // multiple architectures. On x86, __builtin_clz() ^ 31U becomes > // either plain BSR (so the XOR gets optimized away) or LZCNT and >@@ -642,7 +690,7 @@ > #if defined(__INTEL_COMPILER) > return _bit_scan_reverse(n) ^ 31U; > >-#elif TUKLIB_GNUC_REQ(3, 4) && UINT_MAX == UINT32_MAX >+#elif (TUKLIB_GNUC_REQ(3, 4) || defined(__clang__)) && UINT_MAX == UINT32_MAX > return (uint32_t)__builtin_clz(n); > > #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) >@@ -694,7 +742,7 @@ > #if defined(__INTEL_COMPILER) > return _bit_scan_forward(n); > >-#elif TUKLIB_GNUC_REQ(3, 4) && UINT_MAX >= UINT32_MAX >+#elif (TUKLIB_GNUC_REQ(3, 4) || defined(__clang__)) && UINT_MAX >= UINT32_MAX > return (uint32_t)__builtin_ctz(n); > > #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) >diff -ur xz-5.2.5/src/common/tuklib_mbstr_fw.c xz-5.4.3/src/common/tuklib_mbstr_fw.c >--- xz-5.2.5/src/common/tuklib_mbstr_fw.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/common/tuklib_mbstr_fw.c 2023-05-04 17:21:05 >@@ -27,5 +27,5 @@ > if (width < (size_t)columns_min) > len += (size_t)columns_min - width; > >- return len; >+ return (int)len; > } >diff -ur xz-5.2.5/src/common/tuklib_physmem.c xz-5.4.3/src/common/tuklib_physmem.c >--- xz-5.2.5/src/common/tuklib_physmem.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/common/tuklib_physmem.c 2023-05-04 17:21:05 >@@ -73,6 +73,17 @@ > #endif > > >+// With GCC >= 8.1 with -Wextra and Clang >= 13 with -Wcast-function-type >+// will warn about the Windows-specific code. >+#if defined(__has_warning) >+# if __has_warning("-Wcast-function-type") >+# define CAN_DISABLE_WCAST_FUNCTION_TYPE 1 >+# endif >+#elif TUKLIB_GNUC_REQ(8,1) >+# define CAN_DISABLE_WCAST_FUNCTION_TYPE 1 >+#endif >+ >+ > extern uint64_t > tuklib_physmem(void) > { >@@ -84,11 +95,18 @@ > // supports reporting values greater than 4 GiB. To keep the > // code working also on older Windows versions, use > // GlobalMemoryStatusEx() conditionally. >- HMODULE kernel32 = GetModuleHandle("kernel32.dll"); >+ HMODULE kernel32 = GetModuleHandle(TEXT("kernel32.dll")); > if (kernel32 != NULL) { > typedef BOOL (WINAPI *gmse_type)(LPMEMORYSTATUSEX); >+#ifdef CAN_DISABLE_WCAST_FUNCTION_TYPE >+# pragma GCC diagnostic push >+# pragma GCC diagnostic ignored "-Wcast-function-type" >+#endif > gmse_type gmse = (gmse_type)GetProcAddress( > kernel32, "GlobalMemoryStatusEx"); >+#ifdef CAN_DISABLE_WCAST_FUNCTION_TYPE >+# pragma GCC diagnostic pop >+#endif > if (gmse != NULL) { > MEMORYSTATUSEX meminfo; > meminfo.dwLength = sizeof(meminfo); >diff -ur xz-5.2.5/src/common/tuklib_progname.c xz-5.4.3/src/common/tuklib_progname.c >--- xz-5.2.5/src/common/tuklib_progname.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/common/tuklib_progname.c 2023-05-04 17:21:05 >@@ -14,7 +14,7 @@ > #include <string.h> > > >-#if !HAVE_DECL_PROGRAM_INVOCATION_NAME >+#ifndef HAVE_PROGRAM_INVOCATION_NAME > char *progname = NULL; > #endif > >diff -ur xz-5.2.5/src/common/tuklib_progname.h xz-5.4.3/src/common/tuklib_progname.h >--- xz-5.2.5/src/common/tuklib_progname.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/common/tuklib_progname.h 2023-05-04 17:21:05 >@@ -18,7 +18,7 @@ > > TUKLIB_DECLS_BEGIN > >-#if HAVE_DECL_PROGRAM_INVOCATION_NAME >+#ifdef HAVE_PROGRAM_INVOCATION_NAME > # define progname program_invocation_name > #else > # define progname TUKLIB_SYMBOL(tuklib_progname) >diff -ur xz-5.2.5/src/liblzma/Makefile.am xz-5.4.3/src/liblzma/Makefile.am >--- xz-5.2.5/src/liblzma/Makefile.am 2020-03-17 17:28:54 >+++ xz-5.4.3/src/liblzma/Makefile.am 2023-05-04 17:22:00 >@@ -24,12 +24,16 @@ > -I$(top_srcdir)/src/liblzma/simple \ > -I$(top_srcdir)/src/common \ > -DTUKLIB_SYMBOL_PREFIX=lzma_ >-liblzma_la_LDFLAGS = -no-undefined -version-info 7:5:2 >+liblzma_la_LDFLAGS = -no-undefined -version-info 9:3:4 > >-EXTRA_DIST += liblzma.map validate_map.sh >-if COND_SYMVERS >+EXTRA_DIST += liblzma_generic.map liblzma_linux.map validate_map.sh >+if COND_SYMVERS_GENERIC > liblzma_la_LDFLAGS += \ >- -Wl,--version-script=$(top_srcdir)/src/liblzma/liblzma.map >+ -Wl,--version-script=$(top_srcdir)/src/liblzma/liblzma_generic.map >+endif >+if COND_SYMVERS_LINUX >+liblzma_la_LDFLAGS += \ >+ -Wl,--version-script=$(top_srcdir)/src/liblzma/liblzma_linux.map > endif > > liblzma_la_SOURCES += ../common/tuklib_physmem.c >diff -ur xz-5.2.5/src/liblzma/Makefile.in xz-5.4.3/src/liblzma/Makefile.in >--- xz-5.2.5/src/liblzma/Makefile.in 2020-03-17 17:29:35 >+++ xz-5.4.3/src/liblzma/Makefile.in 2023-05-04 17:31:30 >@@ -1,7 +1,7 @@ >-# Makefile.in generated by automake 1.16.1 from Makefile.am. >+# Makefile.in generated by automake 1.16.5 from Makefile.am. > # @configure_input@ > >-# Copyright (C) 1994-2018 Free Software Foundation, Inc. >+# Copyright (C) 1994-2021 Free Software Foundation, Inc. > > # This Makefile.in is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -89,12 +89,19 @@ > POST_UNINSTALL = : > build_triplet = @build@ > host_triplet = @host@ >-@COND_SYMVERS_TRUE@am__append_1 = \ >-@COND_SYMVERS_TRUE@ -Wl,--version-script=$(top_srcdir)/src/liblzma/liblzma.map >+@COND_SYMVERS_GENERIC_TRUE@am__append_1 = \ >+@COND_SYMVERS_GENERIC_TRUE@ -Wl,--version-script=$(top_srcdir)/src/liblzma/liblzma_generic.map > >-@COND_THREADS_TRUE@am__append_2 = ../common/tuklib_cpucores.c >-@COND_THREADS_TRUE@am__append_3 = common/hardware_cputhreads.c >-@COND_MAIN_ENCODER_TRUE@am__append_4 = \ >+@COND_SYMVERS_LINUX_TRUE@am__append_2 = \ >+@COND_SYMVERS_LINUX_TRUE@ -Wl,--version-script=$(top_srcdir)/src/liblzma/liblzma_linux.map >+ >+@COND_THREADS_TRUE@am__append_3 = ../common/tuklib_cpucores.c >+@COND_THREADS_TRUE@am__append_4 = \ >+@COND_THREADS_TRUE@ common/hardware_cputhreads.c \ >+@COND_THREADS_TRUE@ common/outqueue.c \ >+@COND_THREADS_TRUE@ common/outqueue.h >+ >+@COND_MAIN_ENCODER_TRUE@am__append_5 = \ > @COND_MAIN_ENCODER_TRUE@ common/alone_encoder.c \ > @COND_MAIN_ENCODER_TRUE@ common/block_buffer_encoder.c \ > @COND_MAIN_ENCODER_TRUE@ common/block_buffer_encoder.h \ >@@ -115,12 +122,13 @@ > @COND_MAIN_ENCODER_TRUE@ common/stream_flags_encoder.c \ > @COND_MAIN_ENCODER_TRUE@ common/vli_encoder.c > >-@COND_MAIN_ENCODER_TRUE@@COND_THREADS_TRUE@am__append_5 = \ >-@COND_MAIN_ENCODER_TRUE@@COND_THREADS_TRUE@ common/outqueue.c \ >-@COND_MAIN_ENCODER_TRUE@@COND_THREADS_TRUE@ common/outqueue.h \ >+@COND_MAIN_ENCODER_TRUE@@COND_THREADS_TRUE@am__append_6 = \ > @COND_MAIN_ENCODER_TRUE@@COND_THREADS_TRUE@ common/stream_encoder_mt.c > >-@COND_MAIN_DECODER_TRUE@am__append_6 = \ >+@COND_MAIN_ENCODER_TRUE@@COND_MICROLZMA_TRUE@am__append_7 = \ >+@COND_MAIN_ENCODER_TRUE@@COND_MICROLZMA_TRUE@ common/microlzma_encoder.c >+ >+@COND_MAIN_DECODER_TRUE@am__append_8 = \ > @COND_MAIN_DECODER_TRUE@ common/alone_decoder.c \ > @COND_MAIN_DECODER_TRUE@ common/alone_decoder.h \ > @COND_MAIN_DECODER_TRUE@ common/auto_decoder.c \ >@@ -129,11 +137,13 @@ > @COND_MAIN_DECODER_TRUE@ common/block_decoder.h \ > @COND_MAIN_DECODER_TRUE@ common/block_header_decoder.c \ > @COND_MAIN_DECODER_TRUE@ common/easy_decoder_memusage.c \ >+@COND_MAIN_DECODER_TRUE@ common/file_info.c \ > @COND_MAIN_DECODER_TRUE@ common/filter_buffer_decoder.c \ > @COND_MAIN_DECODER_TRUE@ common/filter_decoder.c \ > @COND_MAIN_DECODER_TRUE@ common/filter_decoder.h \ > @COND_MAIN_DECODER_TRUE@ common/filter_flags_decoder.c \ > @COND_MAIN_DECODER_TRUE@ common/index_decoder.c \ >+@COND_MAIN_DECODER_TRUE@ common/index_decoder.h \ > @COND_MAIN_DECODER_TRUE@ common/index_hash.c \ > @COND_MAIN_DECODER_TRUE@ common/stream_buffer_decoder.c \ > @COND_MAIN_DECODER_TRUE@ common/stream_decoder.c \ >@@ -141,39 +151,51 @@ > @COND_MAIN_DECODER_TRUE@ common/stream_flags_decoder.c \ > @COND_MAIN_DECODER_TRUE@ common/vli_decoder.c > >-@COND_CHECK_CRC32_TRUE@@COND_SMALL_TRUE@am__append_7 = check/crc32_small.c >-@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__append_8 = \ >+@COND_MAIN_DECODER_TRUE@@COND_THREADS_TRUE@am__append_9 = \ >+@COND_MAIN_DECODER_TRUE@@COND_THREADS_TRUE@ common/stream_decoder_mt.c >+ >+@COND_MAIN_DECODER_TRUE@@COND_MICROLZMA_TRUE@am__append_10 = \ >+@COND_MAIN_DECODER_TRUE@@COND_MICROLZMA_TRUE@ common/microlzma_decoder.c >+ >+@COND_LZIP_DECODER_TRUE@@COND_MAIN_DECODER_TRUE@am__append_11 = \ >+@COND_LZIP_DECODER_TRUE@@COND_MAIN_DECODER_TRUE@ common/lzip_decoder.c \ >+@COND_LZIP_DECODER_TRUE@@COND_MAIN_DECODER_TRUE@ common/lzip_decoder.h >+ >+@COND_CHECK_CRC32_TRUE@@COND_SMALL_TRUE@am__append_12 = check/crc32_small.c >+@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__append_13 = \ > @COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@ check/crc32_table.c \ > @COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@ check/crc32_table_le.h \ > @COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@ check/crc32_table_be.h > >-@COND_ASM_X86_TRUE@@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__append_9 = check/crc32_x86.S >-@COND_ASM_X86_FALSE@@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__append_10 = check/crc32_fast.c >-@COND_CHECK_CRC64_TRUE@@COND_SMALL_TRUE@am__append_11 = check/crc64_small.c >-@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__append_12 = \ >+@COND_ASM_X86_TRUE@@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__append_14 = check/crc32_x86.S >+@COND_ASM_X86_FALSE@@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__append_15 = check/crc32_fast.c >+@COND_CHECK_CRC64_TRUE@@COND_SMALL_TRUE@am__append_16 = check/crc64_small.c >+@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__append_17 = \ > @COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@ check/crc64_table.c \ > @COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@ check/crc64_table_le.h \ > @COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@ check/crc64_table_be.h > >-@COND_ASM_X86_TRUE@@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__append_13 = check/crc64_x86.S >-@COND_ASM_X86_FALSE@@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__append_14 = check/crc64_fast.c >-@COND_CHECK_SHA256_TRUE@@COND_INTERNAL_SHA256_TRUE@am__append_15 = check/sha256.c >-@COND_ENCODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@am__append_16 = \ >+@COND_ASM_X86_TRUE@@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__append_18 = check/crc64_x86.S >+@COND_ASM_X86_FALSE@@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__append_19 = check/crc64_fast.c >+@COND_CHECK_SHA256_TRUE@@COND_INTERNAL_SHA256_TRUE@am__append_20 = check/sha256.c >+@COND_ENCODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@am__append_21 = \ > @COND_ENCODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@ lz/lz_encoder.c \ > @COND_ENCODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@ lz/lz_encoder.h \ > @COND_ENCODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@ lz/lz_encoder_hash.h \ > @COND_ENCODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@ lz/lz_encoder_hash_table.h \ > @COND_ENCODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@ lz/lz_encoder_mf.c > >-@COND_DECODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@am__append_17 = \ >+@COND_DECODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@am__append_22 = \ > @COND_DECODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@ lz/lz_decoder.c \ > @COND_DECODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@ lz/lz_decoder.h > >-@COND_FILTER_LZMA1_TRUE@am__append_18 = lzma/fastpos_tablegen.c \ >+@COND_FILTER_LZMA1_TRUE@am__append_23 = lzma/fastpos_tablegen.c \ > @COND_FILTER_LZMA1_TRUE@ rangecoder/price_tablegen.c >-@COND_FILTER_LZMA1_TRUE@am__append_19 = lzma/lzma_common.h \ >+@COND_FILTER_LZMA1_TRUE@am__append_24 = \ >+@COND_FILTER_LZMA1_TRUE@ lzma/lzma_common.h \ > @COND_FILTER_LZMA1_TRUE@ lzma/lzma_encoder_presets.c >-@COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__append_20 = \ >+ >+@COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__append_25 = \ > @COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@ lzma/fastpos.h \ > @COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@ lzma/lzma_encoder.h \ > @COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@ lzma/lzma_encoder.c \ >@@ -181,62 +203,63 @@ > @COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@ lzma/lzma_encoder_optimum_fast.c \ > @COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@ lzma/lzma_encoder_optimum_normal.c > >-@COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@@COND_SMALL_FALSE@am__append_21 = lzma/fastpos_table.c >-@COND_DECODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__append_22 = \ >+@COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@@COND_SMALL_FALSE@am__append_26 = lzma/fastpos_table.c >+@COND_DECODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__append_27 = \ > @COND_DECODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@ lzma/lzma_decoder.c \ > @COND_DECODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@ lzma/lzma_decoder.h > >-@COND_ENCODER_LZMA2_TRUE@@COND_FILTER_LZMA1_TRUE@am__append_23 = \ >+@COND_ENCODER_LZMA2_TRUE@@COND_FILTER_LZMA1_TRUE@am__append_28 = \ > @COND_ENCODER_LZMA2_TRUE@@COND_FILTER_LZMA1_TRUE@ lzma/lzma2_encoder.c \ > @COND_ENCODER_LZMA2_TRUE@@COND_FILTER_LZMA1_TRUE@ lzma/lzma2_encoder.h > >-@COND_DECODER_LZMA2_TRUE@@COND_FILTER_LZMA1_TRUE@am__append_24 = \ >+@COND_DECODER_LZMA2_TRUE@@COND_FILTER_LZMA1_TRUE@am__append_29 = \ > @COND_DECODER_LZMA2_TRUE@@COND_FILTER_LZMA1_TRUE@ lzma/lzma2_decoder.c \ > @COND_DECODER_LZMA2_TRUE@@COND_FILTER_LZMA1_TRUE@ lzma/lzma2_decoder.h > >-@COND_FILTER_LZMA1_TRUE@am__append_25 = rangecoder/range_common.h >-@COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__append_26 = \ >+@COND_FILTER_LZMA1_TRUE@am__append_30 = rangecoder/range_common.h >+@COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__append_31 = \ > @COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@ rangecoder/range_encoder.h \ > @COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@ rangecoder/price.h \ > @COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@ rangecoder/price_table.c > >-@COND_DECODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__append_27 = rangecoder/range_decoder.h >-@COND_FILTER_DELTA_TRUE@am__append_28 = \ >+@COND_DECODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__append_32 = rangecoder/range_decoder.h >+@COND_FILTER_DELTA_TRUE@am__append_33 = \ > @COND_FILTER_DELTA_TRUE@ delta/delta_common.c \ > @COND_FILTER_DELTA_TRUE@ delta/delta_common.h \ > @COND_FILTER_DELTA_TRUE@ delta/delta_private.h > >-@COND_ENCODER_DELTA_TRUE@@COND_FILTER_DELTA_TRUE@am__append_29 = \ >+@COND_ENCODER_DELTA_TRUE@@COND_FILTER_DELTA_TRUE@am__append_34 = \ > @COND_ENCODER_DELTA_TRUE@@COND_FILTER_DELTA_TRUE@ delta/delta_encoder.c \ > @COND_ENCODER_DELTA_TRUE@@COND_FILTER_DELTA_TRUE@ delta/delta_encoder.h > >-@COND_DECODER_DELTA_TRUE@@COND_FILTER_DELTA_TRUE@am__append_30 = \ >+@COND_DECODER_DELTA_TRUE@@COND_FILTER_DELTA_TRUE@am__append_35 = \ > @COND_DECODER_DELTA_TRUE@@COND_FILTER_DELTA_TRUE@ delta/delta_decoder.c \ > @COND_DECODER_DELTA_TRUE@@COND_FILTER_DELTA_TRUE@ delta/delta_decoder.h > >-@COND_FILTER_SIMPLE_TRUE@am__append_31 = \ >+@COND_FILTER_SIMPLE_TRUE@am__append_36 = \ > @COND_FILTER_SIMPLE_TRUE@ simple/simple_coder.c \ > @COND_FILTER_SIMPLE_TRUE@ simple/simple_coder.h \ > @COND_FILTER_SIMPLE_TRUE@ simple/simple_private.h > >-@COND_ENCODER_SIMPLE_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_32 = \ >+@COND_ENCODER_SIMPLE_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_37 = \ > @COND_ENCODER_SIMPLE_TRUE@@COND_FILTER_SIMPLE_TRUE@ simple/simple_encoder.c \ > @COND_ENCODER_SIMPLE_TRUE@@COND_FILTER_SIMPLE_TRUE@ simple/simple_encoder.h > >-@COND_DECODER_SIMPLE_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_33 = \ >+@COND_DECODER_SIMPLE_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_38 = \ > @COND_DECODER_SIMPLE_TRUE@@COND_FILTER_SIMPLE_TRUE@ simple/simple_decoder.c \ > @COND_DECODER_SIMPLE_TRUE@@COND_FILTER_SIMPLE_TRUE@ simple/simple_decoder.h > >-@COND_FILTER_SIMPLE_TRUE@@COND_FILTER_X86_TRUE@am__append_34 = simple/x86.c >-@COND_FILTER_POWERPC_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_35 = simple/powerpc.c >-@COND_FILTER_IA64_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_36 = simple/ia64.c >-@COND_FILTER_ARM_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_37 = simple/arm.c >-@COND_FILTER_ARMTHUMB_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_38 = simple/armthumb.c >-@COND_FILTER_SIMPLE_TRUE@@COND_FILTER_SPARC_TRUE@am__append_39 = simple/sparc.c >-@COND_W32_TRUE@am__append_40 = liblzma.def liblzma.def.in empty.c >-@COND_W32_TRUE@am__append_41 = liblzma_w32res.rc >-@COND_W32_TRUE@am__append_42 = -Xlinker --output-def -Xlinker liblzma.def.in >-@COND_SHARED_TRUE@@COND_W32_TRUE@am__append_43 = liblzma.def >+@COND_FILTER_SIMPLE_TRUE@@COND_FILTER_X86_TRUE@am__append_39 = simple/x86.c >+@COND_FILTER_POWERPC_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_40 = simple/powerpc.c >+@COND_FILTER_IA64_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_41 = simple/ia64.c >+@COND_FILTER_ARM_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_42 = simple/arm.c >+@COND_FILTER_ARMTHUMB_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_43 = simple/armthumb.c >+@COND_FILTER_ARM64_TRUE@@COND_FILTER_SIMPLE_TRUE@am__append_44 = simple/arm64.c >+@COND_FILTER_SIMPLE_TRUE@@COND_FILTER_SPARC_TRUE@am__append_45 = simple/sparc.c >+@COND_W32_TRUE@am__append_46 = liblzma.def liblzma.def.in empty.c >+@COND_W32_TRUE@am__append_47 = liblzma_w32res.rc >+@COND_W32_TRUE@am__append_48 = -Xlinker --output-def -Xlinker liblzma.def.in >+@COND_SHARED_TRUE@@COND_W32_TRUE@am__append_49 = liblzma.def > subdir = src/liblzma > ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 > am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_capsicum.m4 \ >@@ -300,8 +323,9 @@ > common/easy_preset.h common/filter_common.c \ > common/filter_common.h common/hardware_physmem.c \ > common/index.c common/index.h common/stream_flags_common.c \ >- common/stream_flags_common.h common/vli_size.c \ >- common/hardware_cputhreads.c common/alone_encoder.c \ >+ common/stream_flags_common.h common/string_conversion.c \ >+ common/vli_size.c common/hardware_cputhreads.c \ >+ common/outqueue.c common/outqueue.h common/alone_encoder.c \ > common/block_buffer_encoder.c common/block_buffer_encoder.h \ > common/block_encoder.c common/block_encoder.h \ > common/block_header_encoder.c common/easy_buffer_encoder.c \ >@@ -311,17 +335,20 @@ > common/index_encoder.c common/index_encoder.h \ > common/stream_buffer_encoder.c common/stream_encoder.c \ > common/stream_flags_encoder.c common/vli_encoder.c \ >- common/outqueue.c common/outqueue.h common/stream_encoder_mt.c \ >+ common/stream_encoder_mt.c common/microlzma_encoder.c \ > common/alone_decoder.c common/alone_decoder.h \ > common/auto_decoder.c common/block_buffer_decoder.c \ > common/block_decoder.c common/block_decoder.h \ > common/block_header_decoder.c common/easy_decoder_memusage.c \ >- common/filter_buffer_decoder.c common/filter_decoder.c \ >- common/filter_decoder.h common/filter_flags_decoder.c \ >- common/index_decoder.c common/index_hash.c \ >+ common/file_info.c common/filter_buffer_decoder.c \ >+ common/filter_decoder.c common/filter_decoder.h \ >+ common/filter_flags_decoder.c common/index_decoder.c \ >+ common/index_decoder.h common/index_hash.c \ > common/stream_buffer_decoder.c common/stream_decoder.c \ > common/stream_decoder.h common/stream_flags_decoder.c \ >- common/vli_decoder.c check/check.c check/check.h \ >+ common/vli_decoder.c common/stream_decoder_mt.c \ >+ common/microlzma_decoder.c common/lzip_decoder.c \ >+ common/lzip_decoder.h check/check.c check/check.h \ > check/crc_macros.h check/crc32_small.c check/crc32_table.c \ > check/crc32_table_le.h check/crc32_table_be.h \ > check/crc32_x86.S check/crc32_fast.c check/crc64_small.c \ >@@ -346,10 +373,11 @@ > simple/simple_private.h simple/simple_encoder.c \ > simple/simple_encoder.h simple/simple_decoder.c \ > simple/simple_decoder.h simple/x86.c simple/powerpc.c \ >- simple/ia64.c simple/arm.c simple/armthumb.c simple/sparc.c \ >- liblzma_w32res.rc >+ simple/ia64.c simple/arm.c simple/armthumb.c simple/arm64.c \ >+ simple/sparc.c liblzma_w32res.rc > @COND_THREADS_TRUE@am__objects_1 = liblzma_la-tuklib_cpucores.lo >-@COND_THREADS_TRUE@am__objects_2 = liblzma_la-hardware_cputhreads.lo >+@COND_THREADS_TRUE@am__objects_2 = liblzma_la-hardware_cputhreads.lo \ >+@COND_THREADS_TRUE@ liblzma_la-outqueue.lo > @COND_MAIN_ENCODER_TRUE@am__objects_3 = liblzma_la-alone_encoder.lo \ > @COND_MAIN_ENCODER_TRUE@ liblzma_la-block_buffer_encoder.lo \ > @COND_MAIN_ENCODER_TRUE@ liblzma_la-block_encoder.lo \ >@@ -365,14 +393,15 @@ > @COND_MAIN_ENCODER_TRUE@ liblzma_la-stream_encoder.lo \ > @COND_MAIN_ENCODER_TRUE@ liblzma_la-stream_flags_encoder.lo \ > @COND_MAIN_ENCODER_TRUE@ liblzma_la-vli_encoder.lo >-@COND_MAIN_ENCODER_TRUE@@COND_THREADS_TRUE@am__objects_4 = liblzma_la-outqueue.lo \ >-@COND_MAIN_ENCODER_TRUE@@COND_THREADS_TRUE@ liblzma_la-stream_encoder_mt.lo >-@COND_MAIN_DECODER_TRUE@am__objects_5 = liblzma_la-alone_decoder.lo \ >+@COND_MAIN_ENCODER_TRUE@@COND_THREADS_TRUE@am__objects_4 = liblzma_la-stream_encoder_mt.lo >+@COND_MAIN_ENCODER_TRUE@@COND_MICROLZMA_TRUE@am__objects_5 = liblzma_la-microlzma_encoder.lo >+@COND_MAIN_DECODER_TRUE@am__objects_6 = liblzma_la-alone_decoder.lo \ > @COND_MAIN_DECODER_TRUE@ liblzma_la-auto_decoder.lo \ > @COND_MAIN_DECODER_TRUE@ liblzma_la-block_buffer_decoder.lo \ > @COND_MAIN_DECODER_TRUE@ liblzma_la-block_decoder.lo \ > @COND_MAIN_DECODER_TRUE@ liblzma_la-block_header_decoder.lo \ > @COND_MAIN_DECODER_TRUE@ liblzma_la-easy_decoder_memusage.lo \ >+@COND_MAIN_DECODER_TRUE@ liblzma_la-file_info.lo \ > @COND_MAIN_DECODER_TRUE@ liblzma_la-filter_buffer_decoder.lo \ > @COND_MAIN_DECODER_TRUE@ liblzma_la-filter_decoder.lo \ > @COND_MAIN_DECODER_TRUE@ liblzma_la-filter_flags_decoder.lo \ >@@ -382,60 +411,67 @@ > @COND_MAIN_DECODER_TRUE@ liblzma_la-stream_decoder.lo \ > @COND_MAIN_DECODER_TRUE@ liblzma_la-stream_flags_decoder.lo \ > @COND_MAIN_DECODER_TRUE@ liblzma_la-vli_decoder.lo >-@COND_CHECK_CRC32_TRUE@@COND_SMALL_TRUE@am__objects_6 = liblzma_la-crc32_small.lo >-@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__objects_7 = liblzma_la-crc32_table.lo >-@COND_ASM_X86_TRUE@@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__objects_8 = liblzma_la-crc32_x86.lo >-@COND_ASM_X86_FALSE@@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__objects_9 = liblzma_la-crc32_fast.lo >-@COND_CHECK_CRC64_TRUE@@COND_SMALL_TRUE@am__objects_10 = liblzma_la-crc64_small.lo >-@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__objects_11 = liblzma_la-crc64_table.lo >-@COND_ASM_X86_TRUE@@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__objects_12 = liblzma_la-crc64_x86.lo >-@COND_ASM_X86_FALSE@@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__objects_13 = liblzma_la-crc64_fast.lo >-@COND_CHECK_SHA256_TRUE@@COND_INTERNAL_SHA256_TRUE@am__objects_14 = liblzma_la-sha256.lo >-@COND_ENCODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@am__objects_15 = liblzma_la-lz_encoder.lo \ >+@COND_MAIN_DECODER_TRUE@@COND_THREADS_TRUE@am__objects_7 = liblzma_la-stream_decoder_mt.lo >+@COND_MAIN_DECODER_TRUE@@COND_MICROLZMA_TRUE@am__objects_8 = liblzma_la-microlzma_decoder.lo >+@COND_LZIP_DECODER_TRUE@@COND_MAIN_DECODER_TRUE@am__objects_9 = liblzma_la-lzip_decoder.lo >+@COND_CHECK_CRC32_TRUE@@COND_SMALL_TRUE@am__objects_10 = liblzma_la-crc32_small.lo >+@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__objects_11 = liblzma_la-crc32_table.lo >+@COND_ASM_X86_TRUE@@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__objects_12 = liblzma_la-crc32_x86.lo >+@COND_ASM_X86_FALSE@@COND_CHECK_CRC32_TRUE@@COND_SMALL_FALSE@am__objects_13 = liblzma_la-crc32_fast.lo >+@COND_CHECK_CRC64_TRUE@@COND_SMALL_TRUE@am__objects_14 = liblzma_la-crc64_small.lo >+@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__objects_15 = liblzma_la-crc64_table.lo >+@COND_ASM_X86_TRUE@@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__objects_16 = liblzma_la-crc64_x86.lo >+@COND_ASM_X86_FALSE@@COND_CHECK_CRC64_TRUE@@COND_SMALL_FALSE@am__objects_17 = liblzma_la-crc64_fast.lo >+@COND_CHECK_SHA256_TRUE@@COND_INTERNAL_SHA256_TRUE@am__objects_18 = liblzma_la-sha256.lo >+@COND_ENCODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@am__objects_19 = liblzma_la-lz_encoder.lo \ > @COND_ENCODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@ liblzma_la-lz_encoder_mf.lo >-@COND_DECODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@am__objects_16 = liblzma_la-lz_decoder.lo >-@COND_FILTER_LZMA1_TRUE@am__objects_17 = \ >+@COND_DECODER_LZ_TRUE@@COND_FILTER_LZ_TRUE@am__objects_20 = liblzma_la-lz_decoder.lo >+@COND_FILTER_LZMA1_TRUE@am__objects_21 = \ > @COND_FILTER_LZMA1_TRUE@ liblzma_la-lzma_encoder_presets.lo >-@COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__objects_18 = liblzma_la-lzma_encoder.lo \ >+@COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__objects_22 = liblzma_la-lzma_encoder.lo \ > @COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@ liblzma_la-lzma_encoder_optimum_fast.lo \ > @COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@ liblzma_la-lzma_encoder_optimum_normal.lo >-@COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@@COND_SMALL_FALSE@am__objects_19 = liblzma_la-fastpos_table.lo >-@COND_DECODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__objects_20 = liblzma_la-lzma_decoder.lo >-@COND_ENCODER_LZMA2_TRUE@@COND_FILTER_LZMA1_TRUE@am__objects_21 = liblzma_la-lzma2_encoder.lo >-@COND_DECODER_LZMA2_TRUE@@COND_FILTER_LZMA1_TRUE@am__objects_22 = liblzma_la-lzma2_decoder.lo >-am__objects_23 = >-@COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__objects_24 = liblzma_la-price_table.lo >-@COND_FILTER_DELTA_TRUE@am__objects_25 = liblzma_la-delta_common.lo >-@COND_ENCODER_DELTA_TRUE@@COND_FILTER_DELTA_TRUE@am__objects_26 = liblzma_la-delta_encoder.lo >-@COND_DECODER_DELTA_TRUE@@COND_FILTER_DELTA_TRUE@am__objects_27 = liblzma_la-delta_decoder.lo >-@COND_FILTER_SIMPLE_TRUE@am__objects_28 = liblzma_la-simple_coder.lo >-@COND_ENCODER_SIMPLE_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_29 = liblzma_la-simple_encoder.lo >-@COND_DECODER_SIMPLE_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_30 = liblzma_la-simple_decoder.lo >-@COND_FILTER_SIMPLE_TRUE@@COND_FILTER_X86_TRUE@am__objects_31 = liblzma_la-x86.lo >-@COND_FILTER_POWERPC_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_32 = liblzma_la-powerpc.lo >-@COND_FILTER_IA64_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_33 = liblzma_la-ia64.lo >-@COND_FILTER_ARM_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_34 = liblzma_la-arm.lo >-@COND_FILTER_ARMTHUMB_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_35 = liblzma_la-armthumb.lo >-@COND_FILTER_SIMPLE_TRUE@@COND_FILTER_SPARC_TRUE@am__objects_36 = liblzma_la-sparc.lo >-@COND_W32_TRUE@am__objects_37 = liblzma_w32res.lo >+@COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@@COND_SMALL_FALSE@am__objects_23 = liblzma_la-fastpos_table.lo >+@COND_DECODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__objects_24 = liblzma_la-lzma_decoder.lo >+@COND_ENCODER_LZMA2_TRUE@@COND_FILTER_LZMA1_TRUE@am__objects_25 = liblzma_la-lzma2_encoder.lo >+@COND_DECODER_LZMA2_TRUE@@COND_FILTER_LZMA1_TRUE@am__objects_26 = liblzma_la-lzma2_decoder.lo >+am__objects_27 = >+@COND_ENCODER_LZMA1_TRUE@@COND_FILTER_LZMA1_TRUE@am__objects_28 = liblzma_la-price_table.lo >+@COND_FILTER_DELTA_TRUE@am__objects_29 = liblzma_la-delta_common.lo >+@COND_ENCODER_DELTA_TRUE@@COND_FILTER_DELTA_TRUE@am__objects_30 = liblzma_la-delta_encoder.lo >+@COND_DECODER_DELTA_TRUE@@COND_FILTER_DELTA_TRUE@am__objects_31 = liblzma_la-delta_decoder.lo >+@COND_FILTER_SIMPLE_TRUE@am__objects_32 = liblzma_la-simple_coder.lo >+@COND_ENCODER_SIMPLE_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_33 = liblzma_la-simple_encoder.lo >+@COND_DECODER_SIMPLE_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_34 = liblzma_la-simple_decoder.lo >+@COND_FILTER_SIMPLE_TRUE@@COND_FILTER_X86_TRUE@am__objects_35 = liblzma_la-x86.lo >+@COND_FILTER_POWERPC_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_36 = liblzma_la-powerpc.lo >+@COND_FILTER_IA64_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_37 = liblzma_la-ia64.lo >+@COND_FILTER_ARM_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_38 = liblzma_la-arm.lo >+@COND_FILTER_ARMTHUMB_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_39 = liblzma_la-armthumb.lo >+@COND_FILTER_ARM64_TRUE@@COND_FILTER_SIMPLE_TRUE@am__objects_40 = liblzma_la-arm64.lo >+@COND_FILTER_SIMPLE_TRUE@@COND_FILTER_SPARC_TRUE@am__objects_41 = liblzma_la-sparc.lo >+@COND_W32_TRUE@am__objects_42 = liblzma_w32res.lo > am_liblzma_la_OBJECTS = liblzma_la-tuklib_physmem.lo $(am__objects_1) \ > liblzma_la-common.lo liblzma_la-block_util.lo \ > liblzma_la-easy_preset.lo liblzma_la-filter_common.lo \ > liblzma_la-hardware_physmem.lo liblzma_la-index.lo \ >- liblzma_la-stream_flags_common.lo liblzma_la-vli_size.lo \ >+ liblzma_la-stream_flags_common.lo \ >+ liblzma_la-string_conversion.lo liblzma_la-vli_size.lo \ > $(am__objects_2) $(am__objects_3) $(am__objects_4) \ >- $(am__objects_5) liblzma_la-check.lo $(am__objects_6) \ >- $(am__objects_7) $(am__objects_8) $(am__objects_9) \ >+ $(am__objects_5) $(am__objects_6) $(am__objects_7) \ >+ $(am__objects_8) $(am__objects_9) liblzma_la-check.lo \ > $(am__objects_10) $(am__objects_11) $(am__objects_12) \ > $(am__objects_13) $(am__objects_14) $(am__objects_15) \ > $(am__objects_16) $(am__objects_17) $(am__objects_18) \ > $(am__objects_19) $(am__objects_20) $(am__objects_21) \ > $(am__objects_22) $(am__objects_23) $(am__objects_24) \ >- $(am__objects_23) $(am__objects_25) $(am__objects_26) \ >- $(am__objects_27) $(am__objects_28) $(am__objects_29) \ >+ $(am__objects_25) $(am__objects_26) $(am__objects_27) \ >+ $(am__objects_28) $(am__objects_27) $(am__objects_29) \ > $(am__objects_30) $(am__objects_31) $(am__objects_32) \ > $(am__objects_33) $(am__objects_34) $(am__objects_35) \ >- $(am__objects_36) $(am__objects_37) >+ $(am__objects_36) $(am__objects_37) $(am__objects_38) \ >+ $(am__objects_39) $(am__objects_40) $(am__objects_41) \ >+ $(am__objects_42) > liblzma_la_OBJECTS = $(am_liblzma_la_OBJECTS) > AM_V_lt = $(am__v_lt_@AM_V@) > am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) >@@ -462,6 +498,7 @@ > am__depfiles_remade = ./$(DEPDIR)/liblzma_la-alone_decoder.Plo \ > ./$(DEPDIR)/liblzma_la-alone_encoder.Plo \ > ./$(DEPDIR)/liblzma_la-arm.Plo \ >+ ./$(DEPDIR)/liblzma_la-arm64.Plo \ > ./$(DEPDIR)/liblzma_la-armthumb.Plo \ > ./$(DEPDIR)/liblzma_la-auto_decoder.Plo \ > ./$(DEPDIR)/liblzma_la-block_buffer_decoder.Plo \ >@@ -490,6 +527,7 @@ > ./$(DEPDIR)/liblzma_la-easy_encoder_memusage.Plo \ > ./$(DEPDIR)/liblzma_la-easy_preset.Plo \ > ./$(DEPDIR)/liblzma_la-fastpos_table.Plo \ >+ ./$(DEPDIR)/liblzma_la-file_info.Plo \ > ./$(DEPDIR)/liblzma_la-filter_buffer_decoder.Plo \ > ./$(DEPDIR)/liblzma_la-filter_buffer_encoder.Plo \ > ./$(DEPDIR)/liblzma_la-filter_common.Plo \ >@@ -507,6 +545,7 @@ > ./$(DEPDIR)/liblzma_la-lz_decoder.Plo \ > ./$(DEPDIR)/liblzma_la-lz_encoder.Plo \ > ./$(DEPDIR)/liblzma_la-lz_encoder_mf.Plo \ >+ ./$(DEPDIR)/liblzma_la-lzip_decoder.Plo \ > ./$(DEPDIR)/liblzma_la-lzma2_decoder.Plo \ > ./$(DEPDIR)/liblzma_la-lzma2_encoder.Plo \ > ./$(DEPDIR)/liblzma_la-lzma_decoder.Plo \ >@@ -514,6 +553,8 @@ > ./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_fast.Plo \ > ./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_normal.Plo \ > ./$(DEPDIR)/liblzma_la-lzma_encoder_presets.Plo \ >+ ./$(DEPDIR)/liblzma_la-microlzma_decoder.Plo \ >+ ./$(DEPDIR)/liblzma_la-microlzma_encoder.Plo \ > ./$(DEPDIR)/liblzma_la-outqueue.Plo \ > ./$(DEPDIR)/liblzma_la-powerpc.Plo \ > ./$(DEPDIR)/liblzma_la-price_table.Plo \ >@@ -525,11 +566,13 @@ > ./$(DEPDIR)/liblzma_la-stream_buffer_decoder.Plo \ > ./$(DEPDIR)/liblzma_la-stream_buffer_encoder.Plo \ > ./$(DEPDIR)/liblzma_la-stream_decoder.Plo \ >+ ./$(DEPDIR)/liblzma_la-stream_decoder_mt.Plo \ > ./$(DEPDIR)/liblzma_la-stream_encoder.Plo \ > ./$(DEPDIR)/liblzma_la-stream_encoder_mt.Plo \ > ./$(DEPDIR)/liblzma_la-stream_flags_common.Plo \ > ./$(DEPDIR)/liblzma_la-stream_flags_decoder.Plo \ > ./$(DEPDIR)/liblzma_la-stream_flags_encoder.Plo \ >+ ./$(DEPDIR)/liblzma_la-string_conversion.Plo \ > ./$(DEPDIR)/liblzma_la-tuklib_cpucores.Plo \ > ./$(DEPDIR)/liblzma_la-tuklib_physmem.Plo \ > ./$(DEPDIR)/liblzma_la-vli_decoder.Plo \ >@@ -606,8 +649,6 @@ > unique=`for i in $$list; do \ > if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ > done | $(am__uniquify_input)` >-ETAGS = etags >-CTAGS = ctags > DIST_SUBDIRS = $(SUBDIRS) > am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/check/Makefile.inc \ > $(srcdir)/common/Makefile.inc $(srcdir)/delta/Makefile.inc \ >@@ -660,6 +701,8 @@ > CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ > CPP = @CPP@ > CPPFLAGS = @CPPFLAGS@ >+CSCOPE = @CSCOPE@ >+CTAGS = @CTAGS@ > CYGPATH_W = @CYGPATH_W@ > DEFS = @DEFS@ > DEPDIR = @DEPDIR@ >@@ -670,8 +713,10 @@ > ECHO_N = @ECHO_N@ > ECHO_T = @ECHO_T@ > EGREP = @EGREP@ >+ETAGS = @ETAGS@ > EXEEXT = @EXEEXT@ > FGREP = @FGREP@ >+FILECMD = @FILECMD@ > GETOPT_H = @GETOPT_H@ > GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ > GMSGFMT = @GMSGFMT@ >@@ -724,6 +769,7 @@ > PREFERABLY_POSIX_SHELL = @PREFERABLY_POSIX_SHELL@ > PTHREAD_CC = @PTHREAD_CC@ > PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ >+PTHREAD_CXX = @PTHREAD_CXX@ > PTHREAD_LIBS = @PTHREAD_LIBS@ > RANLIB = @RANLIB@ > RC = @RC@ >@@ -782,6 +828,7 @@ > prefix = @prefix@ > program_transform_name = @program_transform_name@ > psdir = @psdir@ >+runstatedir = @runstatedir@ > sbindir = @sbindir@ > sharedstatedir = @sharedstatedir@ > srcdir = @srcdir@ >@@ -792,31 +839,34 @@ > top_srcdir = @top_srcdir@ > xz = @xz@ > SUBDIRS = api >-EXTRA_DIST = liblzma.map validate_map.sh check/crc32_tablegen.c \ >- check/crc64_tablegen.c $(am__append_18) liblzma.pc.in >-CLEANFILES = $(am__append_40) >-doc_DATA = $(am__append_43) >+EXTRA_DIST = liblzma_generic.map liblzma_linux.map validate_map.sh \ >+ check/crc32_tablegen.c check/crc64_tablegen.c $(am__append_23) \ >+ liblzma.pc.in >+CLEANFILES = $(am__append_46) >+doc_DATA = $(am__append_49) > lib_LTLIBRARIES = liblzma.la >-liblzma_la_SOURCES = ../common/tuklib_physmem.c $(am__append_2) \ >+liblzma_la_SOURCES = ../common/tuklib_physmem.c $(am__append_3) \ > common/common.c common/common.h common/memcmplen.h \ > common/block_util.c common/easy_preset.c common/easy_preset.h \ > common/filter_common.c common/filter_common.h \ > common/hardware_physmem.c common/index.c common/index.h \ > common/stream_flags_common.c common/stream_flags_common.h \ >- common/vli_size.c $(am__append_3) $(am__append_4) \ >- $(am__append_5) $(am__append_6) check/check.c check/check.h \ >- check/crc_macros.h $(am__append_7) $(am__append_8) \ >- $(am__append_9) $(am__append_10) $(am__append_11) \ >- $(am__append_12) $(am__append_13) $(am__append_14) \ >- $(am__append_15) $(am__append_16) $(am__append_17) \ >- $(am__append_19) $(am__append_20) $(am__append_21) \ >- $(am__append_22) $(am__append_23) $(am__append_24) \ >- $(am__append_25) $(am__append_26) $(am__append_27) \ >- $(am__append_28) $(am__append_29) $(am__append_30) \ >- $(am__append_31) $(am__append_32) $(am__append_33) \ >- $(am__append_34) $(am__append_35) $(am__append_36) \ >- $(am__append_37) $(am__append_38) $(am__append_39) \ >- $(am__append_41) >+ common/string_conversion.c common/vli_size.c $(am__append_4) \ >+ $(am__append_5) $(am__append_6) $(am__append_7) \ >+ $(am__append_8) $(am__append_9) $(am__append_10) \ >+ $(am__append_11) check/check.c check/check.h \ >+ check/crc_macros.h $(am__append_12) $(am__append_13) \ >+ $(am__append_14) $(am__append_15) $(am__append_16) \ >+ $(am__append_17) $(am__append_18) $(am__append_19) \ >+ $(am__append_20) $(am__append_21) $(am__append_22) \ >+ $(am__append_24) $(am__append_25) $(am__append_26) \ >+ $(am__append_27) $(am__append_28) $(am__append_29) \ >+ $(am__append_30) $(am__append_31) $(am__append_32) \ >+ $(am__append_33) $(am__append_34) $(am__append_35) \ >+ $(am__append_36) $(am__append_37) $(am__append_38) \ >+ $(am__append_39) $(am__append_40) $(am__append_41) \ >+ $(am__append_42) $(am__append_43) $(am__append_44) \ >+ $(am__append_45) $(am__append_47) > liblzma_la_CPPFLAGS = \ > -I$(top_srcdir)/src/liblzma/api \ > -I$(top_srcdir)/src/liblzma/common \ >@@ -829,8 +879,8 @@ > -I$(top_srcdir)/src/common \ > -DTUKLIB_SYMBOL_PREFIX=lzma_ > >-liblzma_la_LDFLAGS = -no-undefined -version-info 7:5:2 $(am__append_1) \ >- $(am__append_42) >+liblzma_la_LDFLAGS = -no-undefined -version-info 9:3:4 $(am__append_1) \ >+ $(am__append_2) $(am__append_48) > pkgconfigdir = $(libdir)/pkgconfig > pkgconfig_DATA = liblzma.pc > pc_verbose = $(pc_verbose_@AM_V@) >@@ -918,6 +968,7 @@ > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-alone_decoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-alone_encoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-arm.Plo@am__quote@ # am--include-marker >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-arm64.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-armthumb.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-auto_decoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-block_buffer_decoder.Plo@am__quote@ # am--include-marker >@@ -946,6 +997,7 @@ > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-easy_encoder_memusage.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-easy_preset.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-fastpos_table.Plo@am__quote@ # am--include-marker >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-file_info.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_buffer_decoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_buffer_encoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-filter_common.Plo@am__quote@ # am--include-marker >@@ -963,6 +1015,7 @@ > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lz_decoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lz_encoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lz_encoder_mf.Plo@am__quote@ # am--include-marker >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzip_decoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma2_decoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma2_encoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_decoder.Plo@am__quote@ # am--include-marker >@@ -970,6 +1023,8 @@ > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_fast.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_normal.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-lzma_encoder_presets.Plo@am__quote@ # am--include-marker >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-microlzma_decoder.Plo@am__quote@ # am--include-marker >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-microlzma_encoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-outqueue.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-powerpc.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-price_table.Plo@am__quote@ # am--include-marker >@@ -981,11 +1036,13 @@ > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_buffer_decoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_buffer_encoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_decoder.Plo@am__quote@ # am--include-marker >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_decoder_mt.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_encoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_encoder_mt.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_flags_common.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_flags_decoder.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-stream_flags_encoder.Plo@am__quote@ # am--include-marker >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-string_conversion.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-tuklib_cpucores.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-tuklib_physmem.Plo@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblzma_la-vli_decoder.Plo@am__quote@ # am--include-marker >@@ -1118,6 +1175,13 @@ > @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ > @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-stream_flags_common.lo `test -f 'common/stream_flags_common.c' || echo '$(srcdir)/'`common/stream_flags_common.c > >+liblzma_la-string_conversion.lo: common/string_conversion.c >+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-string_conversion.lo -MD -MP -MF $(DEPDIR)/liblzma_la-string_conversion.Tpo -c -o liblzma_la-string_conversion.lo `test -f 'common/string_conversion.c' || echo '$(srcdir)/'`common/string_conversion.c >+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-string_conversion.Tpo $(DEPDIR)/liblzma_la-string_conversion.Plo >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='common/string_conversion.c' object='liblzma_la-string_conversion.lo' libtool=yes @AMDEPBACKSLASH@ >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-string_conversion.lo `test -f 'common/string_conversion.c' || echo '$(srcdir)/'`common/string_conversion.c >+ > liblzma_la-vli_size.lo: common/vli_size.c > @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-vli_size.lo -MD -MP -MF $(DEPDIR)/liblzma_la-vli_size.Tpo -c -o liblzma_la-vli_size.lo `test -f 'common/vli_size.c' || echo '$(srcdir)/'`common/vli_size.c > @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-vli_size.Tpo $(DEPDIR)/liblzma_la-vli_size.Plo >@@ -1132,6 +1196,13 @@ > @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ > @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-hardware_cputhreads.lo `test -f 'common/hardware_cputhreads.c' || echo '$(srcdir)/'`common/hardware_cputhreads.c > >+liblzma_la-outqueue.lo: common/outqueue.c >+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-outqueue.lo -MD -MP -MF $(DEPDIR)/liblzma_la-outqueue.Tpo -c -o liblzma_la-outqueue.lo `test -f 'common/outqueue.c' || echo '$(srcdir)/'`common/outqueue.c >+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-outqueue.Tpo $(DEPDIR)/liblzma_la-outqueue.Plo >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='common/outqueue.c' object='liblzma_la-outqueue.lo' libtool=yes @AMDEPBACKSLASH@ >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-outqueue.lo `test -f 'common/outqueue.c' || echo '$(srcdir)/'`common/outqueue.c >+ > liblzma_la-alone_encoder.lo: common/alone_encoder.c > @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-alone_encoder.lo -MD -MP -MF $(DEPDIR)/liblzma_la-alone_encoder.Tpo -c -o liblzma_la-alone_encoder.lo `test -f 'common/alone_encoder.c' || echo '$(srcdir)/'`common/alone_encoder.c > @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-alone_encoder.Tpo $(DEPDIR)/liblzma_la-alone_encoder.Plo >@@ -1237,13 +1308,6 @@ > @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ > @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-vli_encoder.lo `test -f 'common/vli_encoder.c' || echo '$(srcdir)/'`common/vli_encoder.c > >-liblzma_la-outqueue.lo: common/outqueue.c >-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-outqueue.lo -MD -MP -MF $(DEPDIR)/liblzma_la-outqueue.Tpo -c -o liblzma_la-outqueue.lo `test -f 'common/outqueue.c' || echo '$(srcdir)/'`common/outqueue.c >-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-outqueue.Tpo $(DEPDIR)/liblzma_la-outqueue.Plo >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='common/outqueue.c' object='liblzma_la-outqueue.lo' libtool=yes @AMDEPBACKSLASH@ >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-outqueue.lo `test -f 'common/outqueue.c' || echo '$(srcdir)/'`common/outqueue.c >- > liblzma_la-stream_encoder_mt.lo: common/stream_encoder_mt.c > @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-stream_encoder_mt.lo -MD -MP -MF $(DEPDIR)/liblzma_la-stream_encoder_mt.Tpo -c -o liblzma_la-stream_encoder_mt.lo `test -f 'common/stream_encoder_mt.c' || echo '$(srcdir)/'`common/stream_encoder_mt.c > @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-stream_encoder_mt.Tpo $(DEPDIR)/liblzma_la-stream_encoder_mt.Plo >@@ -1251,6 +1315,13 @@ > @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ > @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-stream_encoder_mt.lo `test -f 'common/stream_encoder_mt.c' || echo '$(srcdir)/'`common/stream_encoder_mt.c > >+liblzma_la-microlzma_encoder.lo: common/microlzma_encoder.c >+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-microlzma_encoder.lo -MD -MP -MF $(DEPDIR)/liblzma_la-microlzma_encoder.Tpo -c -o liblzma_la-microlzma_encoder.lo `test -f 'common/microlzma_encoder.c' || echo '$(srcdir)/'`common/microlzma_encoder.c >+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-microlzma_encoder.Tpo $(DEPDIR)/liblzma_la-microlzma_encoder.Plo >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='common/microlzma_encoder.c' object='liblzma_la-microlzma_encoder.lo' libtool=yes @AMDEPBACKSLASH@ >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-microlzma_encoder.lo `test -f 'common/microlzma_encoder.c' || echo '$(srcdir)/'`common/microlzma_encoder.c >+ > liblzma_la-alone_decoder.lo: common/alone_decoder.c > @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-alone_decoder.lo -MD -MP -MF $(DEPDIR)/liblzma_la-alone_decoder.Tpo -c -o liblzma_la-alone_decoder.lo `test -f 'common/alone_decoder.c' || echo '$(srcdir)/'`common/alone_decoder.c > @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-alone_decoder.Tpo $(DEPDIR)/liblzma_la-alone_decoder.Plo >@@ -1293,6 +1364,13 @@ > @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ > @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-easy_decoder_memusage.lo `test -f 'common/easy_decoder_memusage.c' || echo '$(srcdir)/'`common/easy_decoder_memusage.c > >+liblzma_la-file_info.lo: common/file_info.c >+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-file_info.lo -MD -MP -MF $(DEPDIR)/liblzma_la-file_info.Tpo -c -o liblzma_la-file_info.lo `test -f 'common/file_info.c' || echo '$(srcdir)/'`common/file_info.c >+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-file_info.Tpo $(DEPDIR)/liblzma_la-file_info.Plo >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='common/file_info.c' object='liblzma_la-file_info.lo' libtool=yes @AMDEPBACKSLASH@ >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-file_info.lo `test -f 'common/file_info.c' || echo '$(srcdir)/'`common/file_info.c >+ > liblzma_la-filter_buffer_decoder.lo: common/filter_buffer_decoder.c > @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-filter_buffer_decoder.lo -MD -MP -MF $(DEPDIR)/liblzma_la-filter_buffer_decoder.Tpo -c -o liblzma_la-filter_buffer_decoder.lo `test -f 'common/filter_buffer_decoder.c' || echo '$(srcdir)/'`common/filter_buffer_decoder.c > @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-filter_buffer_decoder.Tpo $(DEPDIR)/liblzma_la-filter_buffer_decoder.Plo >@@ -1356,6 +1434,27 @@ > @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ > @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-vli_decoder.lo `test -f 'common/vli_decoder.c' || echo '$(srcdir)/'`common/vli_decoder.c > >+liblzma_la-stream_decoder_mt.lo: common/stream_decoder_mt.c >+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-stream_decoder_mt.lo -MD -MP -MF $(DEPDIR)/liblzma_la-stream_decoder_mt.Tpo -c -o liblzma_la-stream_decoder_mt.lo `test -f 'common/stream_decoder_mt.c' || echo '$(srcdir)/'`common/stream_decoder_mt.c >+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-stream_decoder_mt.Tpo $(DEPDIR)/liblzma_la-stream_decoder_mt.Plo >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='common/stream_decoder_mt.c' object='liblzma_la-stream_decoder_mt.lo' libtool=yes @AMDEPBACKSLASH@ >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-stream_decoder_mt.lo `test -f 'common/stream_decoder_mt.c' || echo '$(srcdir)/'`common/stream_decoder_mt.c >+ >+liblzma_la-microlzma_decoder.lo: common/microlzma_decoder.c >+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-microlzma_decoder.lo -MD -MP -MF $(DEPDIR)/liblzma_la-microlzma_decoder.Tpo -c -o liblzma_la-microlzma_decoder.lo `test -f 'common/microlzma_decoder.c' || echo '$(srcdir)/'`common/microlzma_decoder.c >+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-microlzma_decoder.Tpo $(DEPDIR)/liblzma_la-microlzma_decoder.Plo >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='common/microlzma_decoder.c' object='liblzma_la-microlzma_decoder.lo' libtool=yes @AMDEPBACKSLASH@ >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-microlzma_decoder.lo `test -f 'common/microlzma_decoder.c' || echo '$(srcdir)/'`common/microlzma_decoder.c >+ >+liblzma_la-lzip_decoder.lo: common/lzip_decoder.c >+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-lzip_decoder.lo -MD -MP -MF $(DEPDIR)/liblzma_la-lzip_decoder.Tpo -c -o liblzma_la-lzip_decoder.lo `test -f 'common/lzip_decoder.c' || echo '$(srcdir)/'`common/lzip_decoder.c >+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-lzip_decoder.Tpo $(DEPDIR)/liblzma_la-lzip_decoder.Plo >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='common/lzip_decoder.c' object='liblzma_la-lzip_decoder.lo' libtool=yes @AMDEPBACKSLASH@ >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-lzip_decoder.lo `test -f 'common/lzip_decoder.c' || echo '$(srcdir)/'`common/lzip_decoder.c >+ > liblzma_la-check.lo: check/check.c > @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-check.lo -MD -MP -MF $(DEPDIR)/liblzma_la-check.Tpo -c -o liblzma_la-check.lo `test -f 'check/check.c' || echo '$(srcdir)/'`check/check.c > @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-check.Tpo $(DEPDIR)/liblzma_la-check.Plo >@@ -1573,6 +1672,13 @@ > @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ > @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-armthumb.lo `test -f 'simple/armthumb.c' || echo '$(srcdir)/'`simple/armthumb.c > >+liblzma_la-arm64.lo: simple/arm64.c >+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-arm64.lo -MD -MP -MF $(DEPDIR)/liblzma_la-arm64.Tpo -c -o liblzma_la-arm64.lo `test -f 'simple/arm64.c' || echo '$(srcdir)/'`simple/arm64.c >+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-arm64.Tpo $(DEPDIR)/liblzma_la-arm64.Plo >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='simple/arm64.c' object='liblzma_la-arm64.lo' libtool=yes @AMDEPBACKSLASH@ >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblzma_la-arm64.lo `test -f 'simple/arm64.c' || echo '$(srcdir)/'`simple/arm64.c >+ > liblzma_la-sparc.lo: simple/sparc.c > @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblzma_la-sparc.lo -MD -MP -MF $(DEPDIR)/liblzma_la-sparc.Tpo -c -o liblzma_la-sparc.lo `test -f 'simple/sparc.c' || echo '$(srcdir)/'`simple/sparc.c > @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblzma_la-sparc.Tpo $(DEPDIR)/liblzma_la-sparc.Plo >@@ -1726,7 +1832,6 @@ > > distclean-tags: > -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags >- > distdir: $(BUILT_SOURCES) > $(MAKE) $(AM_MAKEFLAGS) distdir-am > >@@ -1833,6 +1938,7 @@ > -rm -f ./$(DEPDIR)/liblzma_la-alone_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-alone_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-arm.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-arm64.Plo > -rm -f ./$(DEPDIR)/liblzma_la-armthumb.Plo > -rm -f ./$(DEPDIR)/liblzma_la-auto_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-block_buffer_decoder.Plo >@@ -1861,6 +1967,7 @@ > -rm -f ./$(DEPDIR)/liblzma_la-easy_encoder_memusage.Plo > -rm -f ./$(DEPDIR)/liblzma_la-easy_preset.Plo > -rm -f ./$(DEPDIR)/liblzma_la-fastpos_table.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-file_info.Plo > -rm -f ./$(DEPDIR)/liblzma_la-filter_buffer_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-filter_buffer_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-filter_common.Plo >@@ -1878,6 +1985,7 @@ > -rm -f ./$(DEPDIR)/liblzma_la-lz_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lz_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lz_encoder_mf.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-lzip_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lzma2_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lzma2_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lzma_decoder.Plo >@@ -1885,6 +1993,8 @@ > -rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_fast.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_normal.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder_presets.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-microlzma_decoder.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-microlzma_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-outqueue.Plo > -rm -f ./$(DEPDIR)/liblzma_la-powerpc.Plo > -rm -f ./$(DEPDIR)/liblzma_la-price_table.Plo >@@ -1896,11 +2006,13 @@ > -rm -f ./$(DEPDIR)/liblzma_la-stream_buffer_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_buffer_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_decoder.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-stream_decoder_mt.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_encoder_mt.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_flags_common.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_flags_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_flags_encoder.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-string_conversion.Plo > -rm -f ./$(DEPDIR)/liblzma_la-tuklib_cpucores.Plo > -rm -f ./$(DEPDIR)/liblzma_la-tuklib_physmem.Plo > -rm -f ./$(DEPDIR)/liblzma_la-vli_decoder.Plo >@@ -1955,6 +2067,7 @@ > -rm -f ./$(DEPDIR)/liblzma_la-alone_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-alone_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-arm.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-arm64.Plo > -rm -f ./$(DEPDIR)/liblzma_la-armthumb.Plo > -rm -f ./$(DEPDIR)/liblzma_la-auto_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-block_buffer_decoder.Plo >@@ -1983,6 +2096,7 @@ > -rm -f ./$(DEPDIR)/liblzma_la-easy_encoder_memusage.Plo > -rm -f ./$(DEPDIR)/liblzma_la-easy_preset.Plo > -rm -f ./$(DEPDIR)/liblzma_la-fastpos_table.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-file_info.Plo > -rm -f ./$(DEPDIR)/liblzma_la-filter_buffer_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-filter_buffer_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-filter_common.Plo >@@ -2000,6 +2114,7 @@ > -rm -f ./$(DEPDIR)/liblzma_la-lz_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lz_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lz_encoder_mf.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-lzip_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lzma2_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lzma2_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lzma_decoder.Plo >@@ -2007,6 +2122,8 @@ > -rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_fast.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder_optimum_normal.Plo > -rm -f ./$(DEPDIR)/liblzma_la-lzma_encoder_presets.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-microlzma_decoder.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-microlzma_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-outqueue.Plo > -rm -f ./$(DEPDIR)/liblzma_la-powerpc.Plo > -rm -f ./$(DEPDIR)/liblzma_la-price_table.Plo >@@ -2018,11 +2135,13 @@ > -rm -f ./$(DEPDIR)/liblzma_la-stream_buffer_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_buffer_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_decoder.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-stream_decoder_mt.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_encoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_encoder_mt.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_flags_common.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_flags_decoder.Plo > -rm -f ./$(DEPDIR)/liblzma_la-stream_flags_encoder.Plo >+ -rm -f ./$(DEPDIR)/liblzma_la-string_conversion.Plo > -rm -f ./$(DEPDIR)/liblzma_la-tuklib_cpucores.Plo > -rm -f ./$(DEPDIR)/liblzma_la-tuklib_physmem.Plo > -rm -f ./$(DEPDIR)/liblzma_la-vli_decoder.Plo >diff -ur xz-5.2.5/src/liblzma/api/Makefile.in xz-5.4.3/src/liblzma/api/Makefile.in >--- xz-5.2.5/src/liblzma/api/Makefile.in 2020-03-17 17:29:35 >+++ xz-5.4.3/src/liblzma/api/Makefile.in 2023-05-04 17:31:30 >@@ -1,7 +1,7 @@ >-# Makefile.in generated by automake 1.16.1 from Makefile.am. >+# Makefile.in generated by automake 1.16.5 from Makefile.am. > # @configure_input@ > >-# Copyright (C) 1994-2018 Free Software Foundation, Inc. >+# Copyright (C) 1994-2021 Free Software Foundation, Inc. > > # This Makefile.in is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -180,8 +180,6 @@ > unique=`for i in $$list; do \ > if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ > done | $(am__uniquify_input)` >-ETAGS = etags >-CTAGS = ctags > am__DIST_COMMON = $(srcdir)/Makefile.in > DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) > ACLOCAL = @ACLOCAL@ >@@ -204,6 +202,8 @@ > CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ > CPP = @CPP@ > CPPFLAGS = @CPPFLAGS@ >+CSCOPE = @CSCOPE@ >+CTAGS = @CTAGS@ > CYGPATH_W = @CYGPATH_W@ > DEFS = @DEFS@ > DEPDIR = @DEPDIR@ >@@ -214,8 +214,10 @@ > ECHO_N = @ECHO_N@ > ECHO_T = @ECHO_T@ > EGREP = @EGREP@ >+ETAGS = @ETAGS@ > EXEEXT = @EXEEXT@ > FGREP = @FGREP@ >+FILECMD = @FILECMD@ > GETOPT_H = @GETOPT_H@ > GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ > GMSGFMT = @GMSGFMT@ >@@ -268,6 +270,7 @@ > PREFERABLY_POSIX_SHELL = @PREFERABLY_POSIX_SHELL@ > PTHREAD_CC = @PTHREAD_CC@ > PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ >+PTHREAD_CXX = @PTHREAD_CXX@ > PTHREAD_LIBS = @PTHREAD_LIBS@ > RANLIB = @RANLIB@ > RC = @RC@ >@@ -326,6 +329,7 @@ > prefix = @prefix@ > program_transform_name = @program_transform_name@ > psdir = @psdir@ >+runstatedir = @runstatedir@ > sbindir = @sbindir@ > sharedstatedir = @sharedstatedir@ > srcdir = @srcdir@ >@@ -466,7 +470,6 @@ > > distclean-tags: > -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags >- > distdir: $(BUILT_SOURCES) > $(MAKE) $(AM_MAKEFLAGS) distdir-am > >diff -ur xz-5.2.5/src/liblzma/api/lzma/base.h xz-5.4.3/src/liblzma/api/lzma/base.h >--- xz-5.2.5/src/liblzma/api/lzma/base.h 2020-03-17 17:28:54 >+++ xz-5.4.3/src/liblzma/api/lzma/base.h 2023-05-04 17:21:05 >@@ -1,6 +1,7 @@ > /** > * \file lzma/base.h > * \brief Data types and functions used in many places in liblzma API >+ * \note Never include this file directly. Use <lzma.h> instead. > */ > > /* >@@ -8,8 +9,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -138,13 +137,19 @@ > */ > > LZMA_MEMLIMIT_ERROR = 6, >- /** >+ /**< > * \brief Memory usage limit was reached > * > * Decoder would need more memory than allowed by the > * specified memory usage limit. To continue decoding, > * the memory usage limit has to be increased with > * lzma_memlimit_set(). >+ * >+ * liblzma 5.2.6 and earlier had a bug in single-threaded .xz >+ * decoder (lzma_stream_decoder()) which made it impossible >+ * to continue decoding after LZMA_MEMLIMIT_ERROR even if >+ * the limit was increased using lzma_memlimit_set(). >+ * Other decoders worked correctly. > */ > > LZMA_FORMAT_ERROR = 7, >@@ -234,6 +239,36 @@ > * can be a sign of a bug in liblzma. See the documentation > * how to report bugs. > */ >+ >+ LZMA_SEEK_NEEDED = 12, >+ /**< >+ * \brief Request to change the input file position >+ * >+ * Some coders can do random access in the input file. The >+ * initialization functions of these coders take the file size >+ * as an argument. No other coders can return LZMA_SEEK_NEEDED. >+ * >+ * When this value is returned, the application must seek to >+ * the file position given in lzma_stream.seek_pos. This value >+ * is guaranteed to never exceed the file size that was >+ * specified at the coder initialization. >+ * >+ * After seeking the application should read new input and >+ * pass it normally via lzma_stream.next_in and .avail_in. >+ */ >+ >+ /* >+ * These eumerations may be used internally by liblzma >+ * but they will never be returned to applications. >+ */ >+ LZMA_RET_INTERNAL1 = 101, >+ LZMA_RET_INTERNAL2 = 102, >+ LZMA_RET_INTERNAL3 = 103, >+ LZMA_RET_INTERNAL4 = 104, >+ LZMA_RET_INTERNAL5 = 105, >+ LZMA_RET_INTERNAL6 = 106, >+ LZMA_RET_INTERNAL7 = 107, >+ LZMA_RET_INTERNAL8 = 108 > } lzma_ret; > > >@@ -241,7 +276,7 @@ > * \brief The `action' argument for lzma_code() > * > * After the first use of LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, LZMA_FULL_BARRIER, >- * or LZMA_FINISH, the same `action' must is used until lzma_code() returns >+ * or LZMA_FINISH, the same `action' must be used until lzma_code() returns > * LZMA_STREAM_END. Also, the amount of input (that is, strm->avail_in) must > * not be modified by the application until lzma_code() returns > * LZMA_STREAM_END. Changing the `action' or modifying the amount of input >@@ -447,7 +482,7 @@ > * > * The lzma_stream structure is used for > * - passing pointers to input and output buffers to liblzma; >- * - defining custom memory hander functions; and >+ * - defining custom memory handler functions; and > * - holding a pointer to coder-specific internal data structures. > * > * Typical usage: >@@ -510,15 +545,44 @@ > * you should not touch these, because the names of these variables > * may change. > */ >+ >+ /** \private Reserved member. */ > void *reserved_ptr1; >+ >+ /** \private Reserved member. */ > void *reserved_ptr2; >+ >+ /** \private Reserved member. */ > void *reserved_ptr3; >+ >+ /** \private Reserved member. */ > void *reserved_ptr4; >- uint64_t reserved_int1; >+ >+ /** >+ * \brief New seek input position for LZMA_SEEK_NEEDED >+ * >+ * When lzma_code() returns LZMA_SEEK_NEEDED, the new input position >+ * needed by liblzma will be available seek_pos. The value is >+ * guaranteed to not exceed the file size that was specified when >+ * this lzma_stream was initialized. >+ * >+ * In all other situations the value of this variable is undefined. >+ */ >+ uint64_t seek_pos; >+ >+ /** \private Reserved member. */ > uint64_t reserved_int2; >+ >+ /** \private Reserved member. */ > size_t reserved_int3; >+ >+ /** \private Reserved member. */ > size_t reserved_int4; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum1; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum2; > > } lzma_stream; >@@ -559,6 +623,14 @@ > * > * See the description of the coder-specific initialization function to find > * out what `action' values are supported by the coder. >+ * >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. >+ * \param action Action for this function to take. Must be a valid >+ * lzma_action enum value. >+ * >+ * \return Any valid lzma_ret. See the lzma_ret enum description for more >+ * information. > */ > extern LZMA_API(lzma_ret) lzma_code(lzma_stream *strm, lzma_action action) > lzma_nothrow lzma_attr_warn_unused_result; >@@ -567,15 +639,15 @@ > /** > * \brief Free memory allocated for the coder data structures > * >- * \param strm Pointer to lzma_stream that is at least initialized >- * with LZMA_STREAM_INIT. >- * > * After lzma_end(strm), strm->internal is guaranteed to be NULL. No other > * members of the lzma_stream structure are touched. > * > * \note zlib indicates an error if application end()s unfinished > * stream structure. liblzma doesn't do this, and assumes that > * application knows what it is doing. >+ * >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. > */ > extern LZMA_API(void) lzma_end(lzma_stream *strm) lzma_nothrow; > >@@ -594,6 +666,11 @@ > * mode by taking into account the progress made by each thread. In > * single-threaded mode *progress_in and *progress_out are set to > * strm->total_in and strm->total_out, respectively. >+ * >+ * \param strm Pointer to lzma_stream that is at least >+ * initialized with LZMA_STREAM_INIT. >+ * \param[out] progress_in Pointer to the number of input bytes processed. >+ * \param[out] progress_out Pointer to the number of output bytes processed. > */ > extern LZMA_API(void) lzma_get_progress(lzma_stream *strm, > uint64_t *progress_in, uint64_t *progress_out) lzma_nothrow; >@@ -612,6 +689,9 @@ > * this may give misleading information if decoding .xz Streams that have > * multiple Blocks, because each Block can have different memory requirements. > * >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. >+ * > * \return How much memory is currently allocated for the filter > * decoders. If no filter chain is currently allocated, > * some non-zero value is still returned, which is less than >@@ -631,6 +711,9 @@ > * This function is supported only when *strm has been initialized with > * a function that takes a memlimit argument. > * >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. >+ * > * \return On success, the current memory usage limit is returned > * (always non-zero). On error, zero is returned. > */ >@@ -649,7 +732,13 @@ > * return LZMA_OK. Later versions treat 0 as if 1 had been specified (so > * lzma_memlimit_get() will return 1 even if you specify 0 here). > * >- * \return - LZMA_OK: New memory usage limit successfully set. >+ * liblzma 5.2.6 and earlier had a bug in single-threaded .xz decoder >+ * (lzma_stream_decoder()) which made it impossible to continue decoding >+ * after LZMA_MEMLIMIT_ERROR even if the limit was increased using >+ * lzma_memlimit_set(). Other decoders worked correctly. >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: New memory usage limit successfully set. > * - LZMA_MEMLIMIT_ERROR: The new limit is too small. > * The limit was not changed. > * - LZMA_PROG_ERROR: Invalid arguments, e.g. *strm doesn't >diff -ur xz-5.2.5/src/liblzma/api/lzma/bcj.h xz-5.4.3/src/liblzma/api/lzma/bcj.h >--- xz-5.2.5/src/liblzma/api/lzma/bcj.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/api/lzma/bcj.h 2023-05-04 17:21:05 >@@ -1,6 +1,7 @@ > /** > * \file lzma/bcj.h > * \brief Branch/Call/Jump conversion filters >+ * \note Never include this file directly. Use <lzma.h> instead. > */ > > /* >@@ -8,8 +9,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -19,35 +18,40 @@ > > /* Filter IDs for lzma_filter.id */ > >+/** >+ * \brief Filter for x86 binaries >+ */ > #define LZMA_FILTER_X86 LZMA_VLI_C(0x04) >- /**< >- * Filter for x86 binaries >- */ > >+/** >+ * \brief Filter for Big endian PowerPC binaries >+ */ > #define LZMA_FILTER_POWERPC LZMA_VLI_C(0x05) >- /**< >- * Filter for Big endian PowerPC binaries >- */ > >+/** >+ * \brief Filter for IA-64 (Itanium) binaries >+ */ > #define LZMA_FILTER_IA64 LZMA_VLI_C(0x06) >- /**< >- * Filter for IA-64 (Itanium) binaries. >- */ > >+/** >+ * \brief Filter for ARM binaries >+ */ > #define LZMA_FILTER_ARM LZMA_VLI_C(0x07) >- /**< >- * Filter for ARM binaries. >- */ > >+/** >+ * \brief Filter for ARM-Thumb binaries >+ */ > #define LZMA_FILTER_ARMTHUMB LZMA_VLI_C(0x08) >- /**< >- * Filter for ARM-Thumb binaries. >- */ > >+/** >+ * \brief Filter for SPARC binaries >+ */ > #define LZMA_FILTER_SPARC LZMA_VLI_C(0x09) >- /**< >- * Filter for SPARC binaries. >- */ >+ >+/** >+ * \brief Filter for ARM64 binaries >+ */ >+#define LZMA_FILTER_ARM64 LZMA_VLI_C(0x0A) > > > /** >diff -ur xz-5.2.5/src/liblzma/api/lzma/block.h xz-5.4.3/src/liblzma/api/lzma/block.h >--- xz-5.2.5/src/liblzma/api/lzma/block.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/api/lzma/block.h 2023-05-04 17:21:05 >@@ -1,6 +1,7 @@ > /** > * \file lzma/block.h > * \brief .xz Block handling >+ * \note Never include this file directly. Use <lzma.h> instead. > */ > > /* >@@ -8,8 +9,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -32,19 +31,28 @@ > * \brief Block format version > * > * To prevent API and ABI breakages when new features are needed, >- * a version number is used to indicate which fields in this >+ * a version number is used to indicate which members in this > * structure are in use: > * - liblzma >= 5.0.0: version = 0 is supported. > * - liblzma >= 5.1.4beta: Support for version = 1 was added, >- * which adds the ignore_check field. >+ * which adds the ignore_check member. > * > * If version is greater than one, most Block related functions > * will return LZMA_OPTIONS_ERROR (lzma_block_header_decode() works > * with any version value). > * > * Read by: >- * - All functions that take pointer to lzma_block as argument, >- * including lzma_block_header_decode(). >+ * - lzma_block_header_size() >+ * - lzma_block_header_encode() >+ * - lzma_block_header_decode() >+ * - lzma_block_compressed_size() >+ * - lzma_block_unpadded_size() >+ * - lzma_block_total_size() >+ * - lzma_block_encoder() >+ * - lzma_block_decoder() >+ * - lzma_block_buffer_encode() >+ * - lzma_block_uncomp_encode() >+ * - lzma_block_buffer_decode() > * > * Written by: > * - lzma_block_header_decode() >@@ -52,7 +60,7 @@ > uint32_t version; > > /** >- * \brief Size of the Block Header field >+ * \brief Size of the Block Header field in bytes > * > * This is always a multiple of four. > * >@@ -68,6 +76,7 @@ > * Written by: > * - lzma_block_header_size() > * - lzma_block_buffer_encode() >+ * - lzma_block_uncomp_encode() > */ > uint32_t header_size; > # define LZMA_BLOCK_HEADER_SIZE_MIN 8 >@@ -143,6 +152,7 @@ > * - lzma_block_encoder() > * - lzma_block_decoder() > * - lzma_block_buffer_encode() >+ * - lzma_block_uncomp_encode() > * - lzma_block_buffer_decode() > */ > lzma_vli compressed_size; >@@ -167,6 +177,7 @@ > * - lzma_block_encoder() > * - lzma_block_decoder() > * - lzma_block_buffer_encode() >+ * - lzma_block_uncomp_encode() > * - lzma_block_buffer_decode() > */ > lzma_vli uncompressed_size; >@@ -212,6 +223,7 @@ > * - lzma_block_encoder() > * - lzma_block_decoder() > * - lzma_block_buffer_encode() >+ * - lzma_block_uncomp_encode() > * - lzma_block_buffer_decode() > */ > uint8_t raw_check[LZMA_CHECK_SIZE_MAX]; >@@ -223,26 +235,56 @@ > * with the currently supported options, so it is safe to leave these > * uninitialized. > */ >+ >+ /** \private Reserved member. */ > void *reserved_ptr1; >+ >+ /** \private Reserved member. */ > void *reserved_ptr2; >+ >+ /** \private Reserved member. */ > void *reserved_ptr3; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int1; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int2; >+ >+ /** \private Reserved member. */ > lzma_vli reserved_int3; >+ >+ /** \private Reserved member. */ > lzma_vli reserved_int4; >+ >+ /** \private Reserved member. */ > lzma_vli reserved_int5; >+ >+ /** \private Reserved member. */ > lzma_vli reserved_int6; >+ >+ /** \private Reserved member. */ > lzma_vli reserved_int7; >+ >+ /** \private Reserved member. */ > lzma_vli reserved_int8; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum1; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum2; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum3; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum4; > > /** > * \brief A flag to Block decoder to not verify the Check field > * >- * This field is supported by liblzma >= 5.1.4beta if .version >= 1. >+ * This member is supported by liblzma >= 5.1.4beta if .version >= 1. > * > * If this is set to true, the integrity check won't be calculated > * and verified. Unless you know what you are doing, you should >@@ -260,12 +302,25 @@ > */ > lzma_bool ignore_check; > >+ /** \private Reserved member. */ > lzma_bool reserved_bool2; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool3; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool4; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool5; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool6; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool7; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool8; > > } lzma_block; >@@ -280,7 +335,8 @@ > * Note that if the first byte is 0x00, it indicates beginning of Index; use > * this macro only when the byte is not 0x00. > * >- * There is no encoding macro, because Block Header encoder is enough for that. >+ * There is no encoding macro because lzma_block_header_size() and >+ * lzma_block_header_encode() should be used. > */ > #define lzma_block_header_size_decode(b) (((uint32_t)(b) + 1) * 4) > >@@ -294,17 +350,20 @@ > * four and doesn't exceed LZMA_BLOCK_HEADER_SIZE_MAX. Increasing header_size > * just means that lzma_block_header_encode() will add Header Padding. > * >- * \return - LZMA_OK: Size calculated successfully and stored to >- * block->header_size. >- * - LZMA_OPTIONS_ERROR: Unsupported version, filters or >- * filter options. >- * - LZMA_PROG_ERROR: Invalid values like compressed_size == 0. >- * > * \note This doesn't check that all the options are valid i.e. this > * may return LZMA_OK even if lzma_block_header_encode() or > * lzma_block_encoder() would fail. If you want to validate the > * filter chain, consider using lzma_memlimit_encoder() which as > * a side-effect validates the filter chain. >+ * >+ * \param block Block options >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Size calculated successfully and stored to >+ * block->header_size. >+ * - LZMA_OPTIONS_ERROR: Unsupported version, filters or >+ * filter options. >+ * - LZMA_PROG_ERROR: Invalid values like compressed_size == 0. > */ > extern LZMA_API(lzma_ret) lzma_block_header_size(lzma_block *block) > lzma_nothrow lzma_attr_warn_unused_result; >@@ -318,11 +377,12 @@ > * lzma_block_header_size() is used, the Block Header will be padded to the > * specified size. > * >- * \param out Beginning of the output buffer. This must be >- * at least block->header_size bytes. > * \param block Block options to be encoded. >+ * \param[out] out Beginning of the output buffer. This must be >+ * at least block->header_size bytes. > * >- * \return - LZMA_OK: Encoding was successful. block->header_size >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Encoding was successful. block->header_size > * bytes were written to output buffer. > * - LZMA_OPTIONS_ERROR: Invalid or unsupported options. > * - LZMA_PROG_ERROR: Invalid arguments, for example >@@ -354,14 +414,15 @@ > * block->filters must have been allocated, but they don't need to be > * initialized (possible existing filter options are not freed). > * >- * \param block Destination for Block options. >+ * \param[out] block Destination for Block options > * \param allocator lzma_allocator for custom allocator functions. > * Set to NULL to use malloc() (and also free() > * if an error occurs). > * \param in Beginning of the input buffer. This must be > * at least block->header_size bytes. > * >- * \return - LZMA_OK: Decoding was successful. block->header_size >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Decoding was successful. block->header_size > * bytes were read from the input buffer. > * - LZMA_OPTIONS_ERROR: The Block Header specifies some > * unsupported options such as unsupported filters. This can >@@ -398,7 +459,12 @@ > * field so that it can properly validate Compressed Size if it > * was present in Block Header. > * >- * \return - LZMA_OK: block->compressed_size was set successfully. >+ * \param block Block options: block->header_size must >+ * already be set with lzma_block_header_size(). >+ * \param unpadded_size Unpadded Size from the Index field in bytes >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: block->compressed_size was set successfully. > * - LZMA_DATA_ERROR: unpadded_size is too small compared to > * block->header_size and lzma_check_size(block->check). > * - LZMA_PROG_ERROR: Some values are invalid. For example, >@@ -419,6 +485,9 @@ > * Compressed Size, and size of the Check field. This is where this function > * is needed. > * >+ * \param block Block options: block->header_size must already be >+ * set with lzma_block_header_size(). >+ * > * \return Unpadded Size on success, or zero on error. > */ > extern LZMA_API(lzma_vli) lzma_block_unpadded_size(const lzma_block *block) >@@ -431,6 +500,9 @@ > * This is equivalent to lzma_block_unpadded_size() except that the returned > * value includes the size of the Block Padding field. > * >+ * \param block Block options: block->header_size must already be >+ * set with lzma_block_header_size(). >+ * > * \return On success, total encoded size of the Block. On error, > * zero is returned. > */ >@@ -444,7 +516,17 @@ > * Valid actions for lzma_code() are LZMA_RUN, LZMA_SYNC_FLUSH (only if the > * filter chain supports it), and LZMA_FINISH. > * >- * \return - LZMA_OK: All good, continue with lzma_code(). >+ * The Block encoder encodes the Block Data, Block Padding, and Check value. >+ * It does NOT encode the Block Header which can be encoded with >+ * lzma_block_header_encode(). >+ * >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. >+ * \param block Block options: block->version, block->check, >+ * and block->filters must have been initialized. >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: All good, continue with lzma_code(). > * - LZMA_MEM_ERROR > * - LZMA_OPTIONS_ERROR > * - LZMA_UNSUPPORTED_CHECK: block->check specifies a Check ID >@@ -463,10 +545,16 @@ > * Valid actions for lzma_code() are LZMA_RUN and LZMA_FINISH. Using > * LZMA_FINISH is not required. It is supported only for convenience. > * >- * \return - LZMA_OK: All good, continue with lzma_code(). >- * - LZMA_UNSUPPORTED_CHECK: Initialization was successful, but >- * the given Check ID is not supported, thus Check will be >- * ignored. >+ * The Block decoder decodes the Block Data, Block Padding, and Check value. >+ * It does NOT decode the Block Header which can be decoded with >+ * lzma_block_header_decode(). >+ * >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. >+ * \param block Block options >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: All good, continue with lzma_code(). > * - LZMA_PROG_ERROR > * - LZMA_MEM_ERROR > */ >@@ -480,6 +568,11 @@ > * > * This is equivalent to lzma_stream_buffer_bound() but for .xz Blocks. > * See the documentation of lzma_stream_buffer_bound(). >+ * >+ * \param uncompressed_size Size of the data to be encoded with the >+ * single-call Block encoder. >+ * >+ * \return Maximum output size in bytes for single-call Block encoding. > */ > extern LZMA_API(size_t) lzma_block_buffer_bound(size_t uncompressed_size) > lzma_nothrow; >@@ -508,13 +601,14 @@ > * Set to NULL to use malloc() and free(). > * \param in Beginning of the input buffer > * \param in_size Size of the input buffer >- * \param out Beginning of the output buffer >- * \param out_pos The next byte will be written to out[*out_pos]. >+ * \param[out] out Beginning of the output buffer >+ * \param[out] out_pos The next byte will be written to out[*out_pos]. > * *out_pos is updated only if encoding succeeds. > * \param out_size Size of the out buffer; the first byte into > * which no data is written to is out[out_size]. > * >- * \return - LZMA_OK: Encoding was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Encoding was successful. > * - LZMA_BUF_ERROR: Not enough output buffer space. > * - LZMA_UNSUPPORTED_CHECK > * - LZMA_OPTIONS_ERROR >@@ -540,6 +634,25 @@ > * Since the data won't be compressed, this function ignores block->filters. > * This function doesn't take lzma_allocator because this function doesn't > * allocate any memory from the heap. >+ * >+ * \param block Block options: block->version, block->check, >+ * and block->filters must have been initialized. >+ * \param in Beginning of the input buffer >+ * \param in_size Size of the input buffer >+ * \param[out] out Beginning of the output buffer >+ * \param[out] out_pos The next byte will be written to out[*out_pos]. >+ * *out_pos is updated only if encoding succeeds. >+ * \param out_size Size of the out buffer; the first byte into >+ * which no data is written to is out[out_size]. >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Encoding was successful. >+ * - LZMA_BUF_ERROR: Not enough output buffer space. >+ * - LZMA_UNSUPPORTED_CHECK >+ * - LZMA_OPTIONS_ERROR >+ * - LZMA_MEM_ERROR >+ * - LZMA_DATA_ERROR >+ * - LZMA_PROG_ERROR > */ > extern LZMA_API(lzma_ret) lzma_block_uncomp_encode(lzma_block *block, > const uint8_t *in, size_t in_size, >@@ -553,7 +666,7 @@ > * This is single-call equivalent of lzma_block_decoder(), and requires that > * the caller has already decoded Block Header and checked its memory usage. > * >- * \param block Block options just like with lzma_block_decoder(). >+ * \param block Block options > * \param allocator lzma_allocator for custom allocator functions. > * Set to NULL to use malloc() and free(). > * \param in Beginning of the input buffer >@@ -561,13 +674,14 @@ > * *in_pos is updated only if decoding succeeds. > * \param in_size Size of the input buffer; the first byte that > * won't be read is in[in_size]. >- * \param out Beginning of the output buffer >- * \param out_pos The next byte will be written to out[*out_pos]. >+ * \param[out] out Beginning of the output buffer >+ * \param[out] out_pos The next byte will be written to out[*out_pos]. > * *out_pos is updated only if encoding succeeds. > * \param out_size Size of the out buffer; the first byte into > * which no data is written to is out[out_size]. > * >- * \return - LZMA_OK: Decoding was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Decoding was successful. > * - LZMA_OPTIONS_ERROR > * - LZMA_DATA_ERROR > * - LZMA_MEM_ERROR >diff -ur xz-5.2.5/src/liblzma/api/lzma/check.h xz-5.4.3/src/liblzma/api/lzma/check.h >--- xz-5.2.5/src/liblzma/api/lzma/check.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/api/lzma/check.h 2023-05-04 17:21:05 >@@ -1,6 +1,7 @@ > /** > * \file lzma/check.h > * \brief Integrity checks >+ * \note Never include this file directly. Use <lzma.h> instead. > */ > > /* >@@ -8,8 +9,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -71,12 +70,17 @@ > /** > * \brief Test if the given Check ID is supported > * >- * Return true if the given Check ID is supported by this liblzma build. >- * Otherwise false is returned. It is safe to call this with a value that >- * is not in the range [0, 15]; in that case the return value is always false. >+ * LZMA_CHECK_NONE and LZMA_CHECK_CRC32 are always supported (even if >+ * liblzma is built with limited features). > * >- * You can assume that LZMA_CHECK_NONE and LZMA_CHECK_CRC32 are always >- * supported (even if liblzma is built with limited features). >+ * \note It is safe to call this with a value that is not in the >+ * range [0, 15]; in that case the return value is always false. >+ * >+ * \param check Check ID >+ * >+ * \return lzma_bool: >+ * - true if Check ID is supported by this liblzma build. >+ * - false otherwise. > */ > extern LZMA_API(lzma_bool) lzma_check_is_supported(lzma_check check) > lzma_nothrow lzma_attr_const; >@@ -90,7 +94,10 @@ > * the Check field with the specified Check ID. The values are: > * { 0, 4, 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 32, 64, 64, 64 } > * >- * If the argument is not in the range [0, 15], UINT32_MAX is returned. >+ * \param check Check ID >+ * >+ * \return Size of the Check field in bytes. If the argument is not in >+ * the range [0, 15], UINT32_MAX is returned. > */ > extern LZMA_API(uint32_t) lzma_check_size(lzma_check check) > lzma_nothrow lzma_attr_const; >@@ -126,25 +133,32 @@ > * > * Calculate CRC64 using the polynomial from the ECMA-182 standard. > * >- * This function is used similarly to lzma_crc32(). See its documentation. >+ * This function is used similarly to lzma_crc32(). >+ * >+ * \param buf Pointer to the input buffer >+ * \param size Size of the input buffer >+ * \param crc Previously returned CRC value. This is used to >+ * calculate the CRC of a big buffer in smaller chunks. >+ * Set to zero when starting a new calculation. >+ * >+ * \return Updated CRC value, which can be passed to this function >+ * again to continue CRC calculation. > */ > extern LZMA_API(uint64_t) lzma_crc64( > const uint8_t *buf, size_t size, uint64_t crc) > lzma_nothrow lzma_attr_pure; > > >-/* >- * SHA-256 functions are currently not exported to public API. >- * Contact Lasse Collin if you think it should be. >- */ >- >- > /** > * \brief Get the type of the integrity check > * > * This function can be called only immediately after lzma_code() has > * returned LZMA_NO_CHECK, LZMA_UNSUPPORTED_CHECK, or LZMA_GET_CHECK. > * Calling this function in any other situation has undefined behavior. >+ * >+ * \param strm Pointer to lzma_stream meeting the above conditions. >+ * >+ * \return Check ID in the lzma_stream, or undefined if called improperly. > */ > extern LZMA_API(lzma_check) lzma_get_check(const lzma_stream *strm) > lzma_nothrow; >diff -ur xz-5.2.5/src/liblzma/api/lzma/container.h xz-5.4.3/src/liblzma/api/lzma/container.h >--- xz-5.2.5/src/liblzma/api/lzma/container.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/api/lzma/container.h 2023-05-04 17:21:05 >@@ -1,6 +1,7 @@ > /** > * \file lzma/container.h > * \brief File formats >+ * \note Never include this file directly. Use <lzma.h> instead. > */ > > /* >@@ -8,8 +9,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -51,7 +50,7 @@ > * > * This flag modifies the preset to make the encoding significantly slower > * while improving the compression ratio only marginally. This is useful >- * when you don't mind wasting time to get as small result as possible. >+ * when you don't mind spending time to get as small result as possible. > * > * This flag doesn't affect the memory usage requirements of the decoder (at > * least not significantly). The memory usage of the encoder may be increased >@@ -69,7 +68,15 @@ > * > * Set this to zero if no flags are wanted. > * >- * No flags are currently supported. >+ * Encoder: No flags are currently supported. >+ * >+ * Decoder: Bitwise-or of zero or more of the decoder flags: >+ * - LZMA_TELL_NO_CHECK >+ * - LZMA_TELL_UNSUPPORTED_CHECK >+ * - LZMA_TELL_ANY_CHECK >+ * - LZMA_IGNORE_CHECK >+ * - LZMA_CONCATENATED >+ * - LZMA_FAIL_FAST > */ > uint32_t flags; > >@@ -79,7 +86,7 @@ > uint32_t threads; > > /** >- * \brief Maximum uncompressed size of a Block >+ * \brief Encoder only: Maximum uncompressed size of a Block > * > * The encoder will start a new .xz Block every block_size bytes. > * Using LZMA_FULL_FLUSH or LZMA_FULL_BARRIER with lzma_code() >@@ -106,7 +113,7 @@ > /** > * \brief Timeout to allow lzma_code() to return early > * >- * Multithreading can make liblzma to consume input and produce >+ * Multithreading can make liblzma consume input and produce > * output in a very bursty way: it may first read a lot of input > * to fill internal buffers, then no input or output occurs for > * a while. >@@ -123,19 +130,18 @@ > * LZMA_OK. Reasonable values are 100 ms or more. The xz command > * line tool uses 300 ms. > * >- * If long blocking times are fine for you, set timeout to a special >- * value of 0, which will disable the timeout mechanism and will make >+ * If long blocking times are acceptable, set timeout to a special >+ * value of 0. This will disable the timeout mechanism and will make > * lzma_code() block until all the input is consumed or the output > * buffer has been filled. > * > * \note Even with a timeout, lzma_code() might sometimes take >- * somewhat long time to return. No timing guarantees >- * are made. >+ * a long time to return. No timing guarantees are made. > */ > uint32_t timeout; > > /** >- * \brief Compression preset (level and possible flags) >+ * \brief Encoder only: Compression preset > * > * The preset is set just like with lzma_easy_encoder(). > * The preset is ignored if filters below is non-NULL. >@@ -143,7 +149,7 @@ > uint32_t preset; > > /** >- * \brief Filter chain (alternative to a preset) >+ * \brief Encoder only: Filter chain (alternative to a preset) > * > * If this is NULL, the preset above is used. Otherwise the preset > * is ignored and the filter chain specified here is used. >@@ -151,7 +157,7 @@ > const lzma_filter *filters; > > /** >- * \brief Integrity check type >+ * \brief Encoder only: Integrity check type > * > * See check.h for available checks. The xz command line tool > * defaults to LZMA_CHECK_CRC64, which is a good choice if you >@@ -166,20 +172,86 @@ > * with the currently supported options, so it is safe to leave these > * uninitialized. > */ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum1; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum2; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum3; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int1; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int2; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int3; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int4; >- uint64_t reserved_int5; >- uint64_t reserved_int6; >+ >+ /** >+ * \brief Memory usage limit to reduce the number of threads >+ * >+ * Encoder: Ignored. >+ * >+ * Decoder: >+ * >+ * If the number of threads has been set so high that more than >+ * memlimit_threading bytes of memory would be needed, the number >+ * of threads will be reduced so that the memory usage will not exceed >+ * memlimit_threading bytes. However, if memlimit_threading cannot >+ * be met even in single-threaded mode, then decoding will continue >+ * in single-threaded mode and memlimit_threading may be exceeded >+ * even by a large amount. That is, memlimit_threading will never make >+ * lzma_code() return LZMA_MEMLIMIT_ERROR. To truly cap the memory >+ * usage, see memlimit_stop below. >+ * >+ * Setting memlimit_threading to UINT64_MAX or a similar huge value >+ * means that liblzma is allowed to keep the whole compressed file >+ * and the whole uncompressed file in memory in addition to the memory >+ * needed by the decompressor data structures used by each thread! >+ * In other words, a reasonable value limit must be set here or it >+ * will cause problems sooner or later. If you have no idea what >+ * a reasonable value could be, try lzma_physmem() / 4 as a starting >+ * point. Setting this limit will never prevent decompression of >+ * a file; this will only reduce the number of threads. >+ * >+ * If memlimit_threading is greater than memlimit_stop, then the value >+ * of memlimit_stop will be used for both. >+ */ >+ uint64_t memlimit_threading; >+ >+ /** >+ * \brief Memory usage limit that should never be exceeded >+ * >+ * Encoder: Ignored. >+ * >+ * Decoder: If decompressing will need more than this amount of >+ * memory even in the single-threaded mode, then lzma_code() will >+ * return LZMA_MEMLIMIT_ERROR. >+ */ >+ uint64_t memlimit_stop; >+ >+ /** \private Reserved member. */ > uint64_t reserved_int7; >+ >+ /** \private Reserved member. */ > uint64_t reserved_int8; >+ >+ /** \private Reserved member. */ > void *reserved_ptr1; >+ >+ /** \private Reserved member. */ > void *reserved_ptr2; >+ >+ /** \private Reserved member. */ > void *reserved_ptr3; >+ >+ /** \private Reserved member. */ > void *reserved_ptr4; > > } lzma_mt; >@@ -193,8 +265,7 @@ > * \param preset Compression preset (level and possible flags) > * > * \return Number of bytes of memory required for the given >- * preset when encoding. If an error occurs, for example >- * due to unsupported preset, UINT64_MAX is returned. >+ * preset when encoding or UINT64_MAX on error. > */ > extern LZMA_API(uint64_t) lzma_easy_encoder_memusage(uint32_t preset) > lzma_nothrow lzma_attr_pure; >@@ -208,9 +279,8 @@ > * \param preset Compression preset (level and possible flags) > * > * \return Number of bytes of memory required to decompress a file >- * that was compressed using the given preset. If an error >- * occurs, for example due to unsupported preset, UINT64_MAX >- * is returned. >+ * that was compressed using the given preset or UINT64_MAX >+ * on error. > */ > extern LZMA_API(uint64_t) lzma_easy_decoder_memusage(uint32_t preset) > lzma_nothrow lzma_attr_pure; >@@ -220,8 +290,17 @@ > * \brief Initialize .xz Stream encoder using a preset number > * > * This function is intended for those who just want to use the basic features >- * if liblzma (that is, most developers out there). >+ * of liblzma (that is, most developers out there). > * >+ * If initialization fails (return value is not LZMA_OK), all the memory >+ * allocated for *strm by liblzma is always freed. Thus, there is no need >+ * to call lzma_end() after failed initialization. >+ * >+ * If initialization succeeds, use lzma_code() to do the actual encoding. >+ * Valid values for `action' (the second argument of lzma_code()) are >+ * LZMA_RUN, LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, and LZMA_FINISH. In future, >+ * there may be compression levels or flags that don't support LZMA_SYNC_FLUSH. >+ * > * \param strm Pointer to lzma_stream that is at least initialized > * with LZMA_STREAM_INIT. > * \param preset Compression preset to use. A preset consist of level >@@ -236,7 +315,8 @@ > * unsure. LZMA_CHECK_CRC32 is good too as long as the > * uncompressed file is not many gigabytes. > * >- * \return - LZMA_OK: Initialization succeeded. Use lzma_code() to >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Initialization succeeded. Use lzma_code() to > * encode your data. > * - LZMA_MEM_ERROR: Memory allocation failed. > * - LZMA_OPTIONS_ERROR: The given compression preset is not >@@ -245,15 +325,6 @@ > * supported by this liblzma build. > * - LZMA_PROG_ERROR: One or more of the parameters have values > * that will never be valid. For example, strm == NULL. >- * >- * If initialization fails (return value is not LZMA_OK), all the memory >- * allocated for *strm by liblzma is always freed. Thus, there is no need >- * to call lzma_end() after failed initialization. >- * >- * If initialization succeeds, use lzma_code() to do the actual encoding. >- * Valid values for `action' (the second argument of lzma_code()) are >- * LZMA_RUN, LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, and LZMA_FINISH. In future, >- * there may be compression levels or flags that don't support LZMA_SYNC_FLUSH. > */ > extern LZMA_API(lzma_ret) lzma_easy_encoder( > lzma_stream *strm, uint32_t preset, lzma_check check) >@@ -274,13 +345,14 @@ > * Set to NULL to use malloc() and free(). > * \param in Beginning of the input buffer > * \param in_size Size of the input buffer >- * \param out Beginning of the output buffer >- * \param out_pos The next byte will be written to out[*out_pos]. >+ * \param[out] out Beginning of the output buffer >+ * \param[out] out_pos The next byte will be written to out[*out_pos]. > * *out_pos is updated only if encoding succeeds. > * \param out_size Size of the out buffer; the first byte into > * which no data is written to is out[out_size]. > * >- * \return - LZMA_OK: Encoding was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Encoding was successful. > * - LZMA_BUF_ERROR: Not enough output buffer space. > * - LZMA_UNSUPPORTED_CHECK > * - LZMA_OPTIONS_ERROR >@@ -298,14 +370,16 @@ > /** > * \brief Initialize .xz Stream encoder using a custom filter chain > * >- * \param strm Pointer to properly prepared lzma_stream >- * \param filters Array of filters. This must be terminated with >- * filters[n].id = LZMA_VLI_UNKNOWN. See filter.h for >- * more information. >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. >+ * \param filters Array of filters terminated with >+ * .id == LZMA_VLI_UNKNOWN. See filters.h for more >+ * information. > * \param check Type of the integrity check to calculate from > * uncompressed data. > * >- * \return - LZMA_OK: Initialization was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Initialization was successful. > * - LZMA_MEM_ERROR > * - LZMA_UNSUPPORTED_CHECK > * - LZMA_OPTIONS_ERROR >@@ -345,10 +419,12 @@ > * LZMA_FULL_BARRIER, and LZMA_FINISH. Support for LZMA_SYNC_FLUSH might be > * added in the future. > * >- * \param strm Pointer to properly prepared lzma_stream >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. > * \param options Pointer to multithreaded compression options > * >- * \return - LZMA_OK >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_MEM_ERROR > * - LZMA_UNSUPPORTED_CHECK > * - LZMA_OPTIONS_ERROR >@@ -374,7 +450,12 @@ > * No kind of flushing is supported, because the file format doesn't make > * it possible. > * >- * \return - LZMA_OK >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. >+ * \param options Pointer to encoder options >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_MEM_ERROR > * - LZMA_OPTIONS_ERROR > * - LZMA_PROG_ERROR >@@ -405,6 +486,11 @@ > * will) have larger maximum expansion when encoding > * uncompressible data. Currently there is no function to > * calculate the maximum expansion of multi-call encoding. >+ * >+ * \param uncompressed_size Size in bytes of the uncompressed >+ * input data >+ * >+ * \return Maximum number of bytes needed to store the compressed data. > */ > extern LZMA_API(size_t) lzma_stream_buffer_bound(size_t uncompressed_size) > lzma_nothrow; >@@ -413,22 +499,23 @@ > /** > * \brief Single-call .xz Stream encoder > * >- * \param filters Array of filters. This must be terminated with >- * filters[n].id = LZMA_VLI_UNKNOWN. See filter.h >- * for more information. >+ * \param filters Array of filters terminated with >+ * .id == LZMA_VLI_UNKNOWN. See filters.h for more >+ * information. > * \param check Type of the integrity check to calculate from > * uncompressed data. > * \param allocator lzma_allocator for custom allocator functions. > * Set to NULL to use malloc() and free(). > * \param in Beginning of the input buffer > * \param in_size Size of the input buffer >- * \param out Beginning of the output buffer >- * \param out_pos The next byte will be written to out[*out_pos]. >+ * \param[out] out Beginning of the output buffer >+ * \param[out] out_pos The next byte will be written to out[*out_pos]. > * *out_pos is updated only if encoding succeeds. > * \param out_size Size of the out buffer; the first byte into > * which no data is written to is out[out_size]. > * >- * \return - LZMA_OK: Encoding was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Encoding was successful. > * - LZMA_BUF_ERROR: Not enough output buffer space. > * - LZMA_UNSUPPORTED_CHECK > * - LZMA_OPTIONS_ERROR >@@ -444,6 +531,65 @@ > lzma_nothrow lzma_attr_warn_unused_result; > > >+/** >+ * \brief MicroLZMA encoder >+ * >+ * The MicroLZMA format is a raw LZMA stream whose first byte (always 0x00) >+ * has been replaced with bitwise-negation of the LZMA properties (lc/lp/pb). >+ * This encoding ensures that the first byte of MicroLZMA stream is never >+ * 0x00. There is no end of payload marker and thus the uncompressed size >+ * must be stored separately. For the best error detection the dictionary >+ * size should be stored separately as well but alternatively one may use >+ * the uncompressed size as the dictionary size when decoding. >+ * >+ * With the MicroLZMA encoder, lzma_code() behaves slightly unusually. >+ * The action argument must be LZMA_FINISH and the return value will never be >+ * LZMA_OK. Thus the encoding is always done with a single lzma_code() after >+ * the initialization. The benefit of the combination of initialization >+ * function and lzma_code() is that memory allocations can be re-used for >+ * better performance. >+ * >+ * lzma_code() will try to encode as much input as is possible to fit into >+ * the given output buffer. If not all input can be encoded, the stream will >+ * be finished without encoding all the input. The caller must check both >+ * input and output buffer usage after lzma_code() (total_in and total_out >+ * in lzma_stream can be convenient). Often lzma_code() can fill the output >+ * buffer completely if there is a lot of input, but sometimes a few bytes >+ * may remain unused because the next LZMA symbol would require more space. >+ * >+ * lzma_stream.avail_out must be at least 6. Otherwise LZMA_PROG_ERROR >+ * will be returned. >+ * >+ * The LZMA dictionary should be reasonably low to speed up the encoder >+ * re-initialization. A good value is bigger than the resulting >+ * uncompressed size of most of the output chunks. For example, if output >+ * size is 4 KiB, dictionary size of 32 KiB or 64 KiB is good. If the >+ * data compresses extremely well, even 128 KiB may be useful. >+ * >+ * The MicroLZMA format and this encoder variant were made with the EROFS >+ * file system in mind. This format may be convenient in other embedded >+ * uses too where many small streams are needed. XZ Embedded includes a >+ * decoder for this format. >+ * >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. >+ * \param options Pointer to encoder options >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_STREAM_END: All good. Check the amounts of input used >+ * and output produced. Store the amount of input used >+ * (uncompressed size) as it needs to be known to decompress >+ * the data. >+ * - LZMA_OPTIONS_ERROR >+ * - LZMA_MEM_ERROR >+ * - LZMA_PROG_ERROR: In addition to the generic reasons for this >+ * error code, this may also be returned if there isn't enough >+ * output space (6 bytes) to create a valid MicroLZMA stream. >+ */ >+extern LZMA_API(lzma_ret) lzma_microlzma_encoder( >+ lzma_stream *strm, const lzma_options_lzma *options); >+ >+ > /************ > * Decoding * > ************/ >@@ -501,8 +647,8 @@ > /** > * This flag enables decoding of concatenated files with file formats that > * allow concatenating compressed files as is. From the formats currently >- * supported by liblzma, only the .xz format allows concatenated files. >- * Concatenated files are not allowed with the legacy .lzma format. >+ * supported by liblzma, only the .xz and .lz formats allow concatenated >+ * files. Concatenated files are not allowed with the legacy .lzma format. > * > * This flag also affects the usage of the `action' argument for lzma_code(). > * When LZMA_CONCATENATED is used, lzma_code() won't return LZMA_STREAM_END >@@ -516,9 +662,39 @@ > > > /** >+ * This flag makes the threaded decoder report errors (like LZMA_DATA_ERROR) >+ * as soon as they are detected. This saves time when the application has no >+ * interest in a partially decompressed truncated or corrupt file. Note that >+ * due to timing randomness, if the same truncated or corrupt input is >+ * decompressed multiple times with this flag, a different amount of output >+ * may be produced by different runs, and even the error code might vary. >+ * >+ * When using LZMA_FAIL_FAST, it is recommended to use LZMA_FINISH to tell >+ * the decoder when no more input will be coming because it can help fast >+ * detection and reporting of truncated files. Note that in this situation >+ * truncated files might be diagnosed with LZMA_DATA_ERROR instead of >+ * LZMA_OK or LZMA_BUF_ERROR! >+ * >+ * Without this flag the threaded decoder will provide as much output as >+ * possible at first and then report the pending error. This default behavior >+ * matches the single-threaded decoder and provides repeatable behavior >+ * with truncated or corrupt input. There are a few special cases where the >+ * behavior can still differ like memory allocation failures (LZMA_MEM_ERROR). >+ * >+ * Single-threaded decoders currently ignore this flag. >+ * >+ * Support for this flag was added in liblzma 5.3.3alpha. Note that in older >+ * versions this flag isn't supported (LZMA_OPTIONS_ERROR) even by functions >+ * that ignore this flag in newer liblzma versions. >+ */ >+#define LZMA_FAIL_FAST UINT32_C(0x20) >+ >+ >+/** > * \brief Initialize .xz Stream decoder > * >- * \param strm Pointer to properly prepared lzma_stream >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. > * \param memlimit Memory usage limit as bytes. Use UINT64_MAX > * to effectively disable the limiter. liblzma > * 5.2.3 and earlier don't allow 0 here and return >@@ -526,9 +702,11 @@ > * had been specified. > * \param flags Bitwise-or of zero or more of the decoder flags: > * LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, >- * LZMA_TELL_ANY_CHECK, LZMA_CONCATENATED >+ * LZMA_TELL_ANY_CHECK, LZMA_IGNORE_CHECK, >+ * LZMA_CONCATENATED, LZMA_FAIL_FAST > * >- * \return - LZMA_OK: Initialization was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Initialization was successful. > * - LZMA_MEM_ERROR: Cannot allocate memory. > * - LZMA_OPTIONS_ERROR: Unsupported flags > * - LZMA_PROG_ERROR >@@ -539,21 +717,67 @@ > > > /** >- * \brief Decode .xz Streams and .lzma files with autodetection >+ * \brief Initialize multithreaded .xz Stream decoder > * >- * This decoder autodetects between the .xz and .lzma file formats, and >- * calls lzma_stream_decoder() or lzma_alone_decoder() once the type >- * of the input file has been detected. >+ * The decoder can decode multiple Blocks in parallel. This requires that each >+ * Block Header contains the Compressed Size and Uncompressed size fields >+ * which are added by the multi-threaded encoder, see lzma_stream_encoder_mt(). > * >- * \param strm Pointer to properly prepared lzma_stream >+ * A Stream with one Block will only utilize one thread. A Stream with multiple >+ * Blocks but without size information in Block Headers will be processed in >+ * single-threaded mode in the same way as done by lzma_stream_decoder(). >+ * Concatenated Streams are processed one Stream at a time; no inter-Stream >+ * parallelization is done. >+ * >+ * This function behaves like lzma_stream_decoder() when options->threads == 1 >+ * and options->memlimit_threading <= 1. >+ * >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. >+ * \param options Pointer to multithreaded compression options >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Initialization was successful. >+ * - LZMA_MEM_ERROR: Cannot allocate memory. >+ * - LZMA_MEMLIMIT_ERROR: Memory usage limit was reached. >+ * - LZMA_OPTIONS_ERROR: Unsupported flags. >+ * - LZMA_PROG_ERROR >+ */ >+extern LZMA_API(lzma_ret) lzma_stream_decoder_mt( >+ lzma_stream *strm, const lzma_mt *options) >+ lzma_nothrow lzma_attr_warn_unused_result; >+ >+ >+/** >+ * \brief Decode .xz, .lzma, and .lz (lzip) files with autodetection >+ * >+ * This decoder autodetects between the .xz, .lzma, and .lz file formats, >+ * and calls lzma_stream_decoder(), lzma_alone_decoder(), or >+ * lzma_lzip_decoder() once the type of the input file has been detected. >+ * >+ * Support for .lz was added in 5.4.0. >+ * >+ * If the flag LZMA_CONCATENATED is used and the input is a .lzma file: >+ * For historical reasons concatenated .lzma files aren't supported. >+ * If there is trailing data after one .lzma stream, lzma_code() will >+ * return LZMA_DATA_ERROR. (lzma_alone_decoder() doesn't have such a check >+ * as it doesn't support any decoder flags. It will return LZMA_STREAM_END >+ * after one .lzma stream.) >+ * >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. > * \param memlimit Memory usage limit as bytes. Use UINT64_MAX > * to effectively disable the limiter. liblzma > * 5.2.3 and earlier don't allow 0 here and return > * LZMA_PROG_ERROR; later versions treat 0 as if 1 > * had been specified. >- * \param flags Bitwise-or of flags, or zero for no flags. >+ * \param flags Bitwise-or of zero or more of the decoder flags: >+ * LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, >+ * LZMA_TELL_ANY_CHECK, LZMA_IGNORE_CHECK, >+ * LZMA_CONCATENATED, LZMA_FAIL_FAST > * >- * \return - LZMA_OK: Initialization was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Initialization was successful. > * - LZMA_MEM_ERROR: Cannot allocate memory. > * - LZMA_OPTIONS_ERROR: Unsupported flags > * - LZMA_PROG_ERROR >@@ -566,18 +790,20 @@ > /** > * \brief Initialize .lzma decoder (legacy file format) > * >- * \param strm Pointer to properly prepared lzma_stream >+ * Valid `action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH. >+ * There is no need to use LZMA_FINISH, but it's allowed because it may >+ * simplify certain types of applications. >+ * >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. > * \param memlimit Memory usage limit as bytes. Use UINT64_MAX > * to effectively disable the limiter. liblzma > * 5.2.3 and earlier don't allow 0 here and return > * LZMA_PROG_ERROR; later versions treat 0 as if 1 > * had been specified. > * >- * Valid `action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH. >- * There is no need to use LZMA_FINISH, but it's allowed because it may >- * simplify certain types of applications. >- * >- * \return - LZMA_OK >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_MEM_ERROR > * - LZMA_PROG_ERROR > */ >@@ -587,6 +813,66 @@ > > > /** >+ * \brief Initialize .lz (lzip) decoder (a foreign file format) >+ * >+ * This decoder supports the .lz format version 0 and the unextended .lz >+ * format version 1: >+ * >+ * - Files in the format version 0 were produced by lzip 1.3 and older. >+ * Such files aren't common but may be found from file archives >+ * as a few source packages were released in this format. People >+ * might have old personal files in this format too. Decompression >+ * support for the format version 0 was removed in lzip 1.18. >+ * >+ * - lzip 1.3 added decompression support for .lz format version 1 files. >+ * Compression support was added in lzip 1.4. In lzip 1.6 the .lz format >+ * version 1 was extended to support the Sync Flush marker. This extension >+ * is not supported by liblzma. lzma_code() will return LZMA_DATA_ERROR >+ * at the location of the Sync Flush marker. In practice files with >+ * the Sync Flush marker are very rare and thus liblzma can decompress >+ * almost all .lz files. >+ * >+ * Just like with lzma_stream_decoder() for .xz files, LZMA_CONCATENATED >+ * should be used when decompressing normal standalone .lz files. >+ * >+ * The .lz format allows putting non-.lz data at the end of a file after at >+ * least one valid .lz member. That is, one can append custom data at the end >+ * of a .lz file and the decoder is required to ignore it. In liblzma this >+ * is relevant only when LZMA_CONCATENATED is used. In that case lzma_code() >+ * will return LZMA_STREAM_END and leave lzma_stream.next_in pointing to >+ * the first byte of the non-.lz data. An exception to this is if the first >+ * 1-3 bytes of the non-.lz data are identical to the .lz magic bytes >+ * (0x4C, 0x5A, 0x49, 0x50; "LZIP" in US-ASCII). In such a case the 1-3 bytes >+ * will have been ignored by lzma_code(). If one wishes to locate the non-.lz >+ * data reliably, one must ensure that the first byte isn't 0x4C. Actually >+ * one should ensure that none of the first four bytes of trailing data are >+ * equal to the magic bytes because lzip >= 1.20 requires it by default. >+ * >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. >+ * \param memlimit Memory usage limit as bytes. Use UINT64_MAX >+ * to effectively disable the limiter. >+ * \param flags Bitwise-or of flags, or zero for no flags. >+ * All decoder flags listed above are supported >+ * although only LZMA_CONCATENATED and (in very rare >+ * cases) LZMA_IGNORE_CHECK are actually useful. >+ * LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, >+ * and LZMA_FAIL_FAST do nothing. LZMA_TELL_ANY_CHECK >+ * is supported for consistency only as CRC32 is >+ * always used in the .lz format. >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Initialization was successful. >+ * - LZMA_MEM_ERROR: Cannot allocate memory. >+ * - LZMA_OPTIONS_ERROR: Unsupported flags >+ * - LZMA_PROG_ERROR >+ */ >+extern LZMA_API(lzma_ret) lzma_lzip_decoder( >+ lzma_stream *strm, uint64_t memlimit, uint32_t flags) >+ lzma_nothrow lzma_attr_warn_unused_result; >+ >+ >+/** > * \brief Single-call .xz Stream decoder > * > * \param memlimit Pointer to how much memory the decoder is allowed >@@ -595,7 +881,8 @@ > * returned. > * \param flags Bitwise-or of zero or more of the decoder flags: > * LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, >- * LZMA_CONCATENATED. Note that LZMA_TELL_ANY_CHECK >+ * LZMA_IGNORE_CHECK, LZMA_CONCATENATED, >+ * LZMA_FAIL_FAST. Note that LZMA_TELL_ANY_CHECK > * is not allowed and will return LZMA_PROG_ERROR. > * \param allocator lzma_allocator for custom allocator functions. > * Set to NULL to use malloc() and free(). >@@ -604,13 +891,14 @@ > * *in_pos is updated only if decoding succeeds. > * \param in_size Size of the input buffer; the first byte that > * won't be read is in[in_size]. >- * \param out Beginning of the output buffer >- * \param out_pos The next byte will be written to out[*out_pos]. >+ * \param[out] out Beginning of the output buffer >+ * \param[out] out_pos The next byte will be written to out[*out_pos]. > * *out_pos is updated only if decoding succeeds. > * \param out_size Size of the out buffer; the first byte into > * which no data is written to is out[out_size]. > * >- * \return - LZMA_OK: Decoding was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Decoding was successful. > * - LZMA_FORMAT_ERROR > * - LZMA_OPTIONS_ERROR > * - LZMA_DATA_ERROR >@@ -630,3 +918,50 @@ > const uint8_t *in, size_t *in_pos, size_t in_size, > uint8_t *out, size_t *out_pos, size_t out_size) > lzma_nothrow lzma_attr_warn_unused_result; >+ >+ >+/** >+ * \brief MicroLZMA decoder >+ * >+ * See lzma_microlzma_encoder() for more information. >+ * >+ * The lzma_code() usage with this decoder is completely normal. The >+ * special behavior of lzma_code() applies to lzma_microlzma_encoder() only. >+ * >+ * \param strm Pointer to lzma_stream that is at least initialized >+ * with LZMA_STREAM_INIT. >+ * \param comp_size Compressed size of the MicroLZMA stream. >+ * The caller must somehow know this exactly. >+ * \param uncomp_size Uncompressed size of the MicroLZMA stream. >+ * If the exact uncompressed size isn't known, this >+ * can be set to a value that is at most as big as >+ * the exact uncompressed size would be, but then the >+ * next argument uncomp_size_is_exact must be false. >+ * \param uncomp_size_is_exact >+ * If true, uncomp_size must be exactly correct. >+ * This will improve error detection at the end of >+ * the stream. If the exact uncompressed size isn't >+ * known, this must be false. uncomp_size must still >+ * be at most as big as the exact uncompressed size >+ * is. Setting this to false when the exact size is >+ * known will work but error detection at the end of >+ * the stream will be weaker. >+ * \param dict_size LZMA dictionary size that was used when >+ * compressing the data. It is OK to use a bigger >+ * value too but liblzma will then allocate more >+ * memory than would actually be required and error >+ * detection will be slightly worse. (Note that with >+ * the implementation in XZ Embedded it doesn't >+ * affect the memory usage if one specifies bigger >+ * dictionary than actually required.) >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK >+ * - LZMA_MEM_ERROR >+ * - LZMA_OPTIONS_ERROR >+ * - LZMA_PROG_ERROR >+ */ >+extern LZMA_API(lzma_ret) lzma_microlzma_decoder( >+ lzma_stream *strm, uint64_t comp_size, >+ uint64_t uncomp_size, lzma_bool uncomp_size_is_exact, >+ uint32_t dict_size); >diff -ur xz-5.2.5/src/liblzma/api/lzma/delta.h xz-5.4.3/src/liblzma/api/lzma/delta.h >--- xz-5.2.5/src/liblzma/api/lzma/delta.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/api/lzma/delta.h 2023-05-04 17:21:05 >@@ -1,6 +1,7 @@ > /** > * \file lzma/delta.h > * \brief Delta filter >+ * \note Never include this file directly. Use <lzma.h> instead. > */ > > /* >@@ -8,8 +9,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -57,7 +56,15 @@ > * - 24-bit RGB image data: distance = 3 bytes > */ > uint32_t dist; >+ >+ /** >+ * \brief Minimum value for lzma_options_delta.dist. >+ */ > # define LZMA_DELTA_DIST_MIN 1 >+ >+ /** >+ * \brief Maximum value for lzma_options_delta.dist. >+ */ > # define LZMA_DELTA_DIST_MAX 256 > > /* >@@ -67,11 +74,23 @@ > * when type is LZMA_DELTA_TYPE_BYTE, so it is safe to leave these > * uninitialized. > */ >+ >+ /** \private Reserved member. */ > uint32_t reserved_int1; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int2; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int3; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int4; >+ >+ /** \private Reserved member. */ > void *reserved_ptr1; >+ >+ /** \private Reserved member. */ > void *reserved_ptr2; > > } lzma_options_delta; >diff -ur xz-5.2.5/src/liblzma/api/lzma/filter.h xz-5.4.3/src/liblzma/api/lzma/filter.h >--- xz-5.2.5/src/liblzma/api/lzma/filter.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/api/lzma/filter.h 2023-05-04 17:21:05 >@@ -1,6 +1,7 @@ > /** > * \file lzma/filter.h > * \brief Common filter related types and functions >+ * \note Never include this file directly. Use <lzma.h> instead. > */ > > /* >@@ -8,8 +9,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -29,7 +28,7 @@ > /** > * \brief Filter options > * >- * This structure is used to pass Filter ID and a pointer filter's >+ * This structure is used to pass a Filter ID and a pointer to the filter's > * options to liblzma. A few functions work with a single lzma_filter > * structure, while most functions expect a filter chain. > * >@@ -37,8 +36,8 @@ > * The array is terminated with .id = LZMA_VLI_UNKNOWN. Thus, the filter > * array must have LZMA_FILTERS_MAX + 1 elements (that is, five) to > * be able to hold any arbitrary filter chain. This is important when >- * using lzma_block_header_decode() from block.h, because too small >- * array would make liblzma write past the end of the filters array. >+ * using lzma_block_header_decode() from block.h, because a filter array >+ * that is too small would make liblzma write past the end of the array. > */ > typedef struct { > /** >@@ -68,12 +67,12 @@ > /** > * \brief Test if the given Filter ID is supported for encoding > * >- * Return true if the give Filter ID is supported for encoding by this >- * liblzma build. Otherwise false is returned. >+ * \param id Filter ID > * >- * There is no way to list which filters are available in this particular >- * liblzma version and build. It would be useless, because the application >- * couldn't know what kind of options the filter would need. >+ * \return lzma_bool: >+ * - true if the Filter ID is supported for encoding by this >+ * liblzma build. >+ * - false otherwise. > */ > extern LZMA_API(lzma_bool) lzma_filter_encoder_is_supported(lzma_vli id) > lzma_nothrow lzma_attr_const; >@@ -82,8 +81,12 @@ > /** > * \brief Test if the given Filter ID is supported for decoding > * >- * Return true if the give Filter ID is supported for decoding by this >- * liblzma build. Otherwise false is returned. >+ * \param id Filter ID >+ * >+ * \return lzma_bool: >+ * - true if the Filter ID is supported for decoding by this >+ * liblzma build. >+ * - false otherwise. > */ > extern LZMA_API(lzma_bool) lzma_filter_decoder_is_supported(lzma_vli id) > lzma_nothrow lzma_attr_const; >@@ -108,9 +111,18 @@ > * need to be initialized by the caller in any way. > * > * If an error occurs, memory possibly already allocated by this function >- * is always freed. >+ * is always freed. liblzma versions older than 5.2.7 may modify the dest >+ * array and leave its contents in an undefined state if an error occurs. >+ * liblzma 5.2.7 and newer only modify the dest array when returning LZMA_OK. > * >- * \return - LZMA_OK >+ * \param src Array of filters terminated with >+ * .id == LZMA_VLI_UNKNOWN. >+ * \param[out] dest Destination filter array >+ * \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_MEM_ERROR > * - LZMA_OPTIONS_ERROR: Unsupported Filter ID and its options > * is not NULL. >@@ -118,10 +130,37 @@ > */ > extern LZMA_API(lzma_ret) lzma_filters_copy( > const lzma_filter *src, lzma_filter *dest, >- const lzma_allocator *allocator) lzma_nothrow; >+ const lzma_allocator *allocator) >+ lzma_nothrow lzma_attr_warn_unused_result; > > > /** >+ * \brief Free the options in the array of lzma_filter structures >+ * >+ * This frees the filter chain options. The filters array itself is not freed. >+ * >+ * The filters array must have at most LZMA_FILTERS_MAX + 1 elements >+ * including the terminating element which must have .id = LZMA_VLI_UNKNOWN. >+ * For all elements before the terminating element: >+ * - options will be freed using the given lzma_allocator or, >+ * if allocator is NULL, using free(). >+ * - options will be set to NULL. >+ * - id will be set to LZMA_VLI_UNKNOWN. >+ * >+ * If filters is NULL, this does nothing. Again, this never frees the >+ * filters array itself. >+ * >+ * \param filters Array of filters terminated with >+ * .id == LZMA_VLI_UNKNOWN. >+ * \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). >+ */ >+extern LZMA_API(void) lzma_filters_free( >+ lzma_filter *filters, const lzma_allocator *allocator) >+ lzma_nothrow; >+ >+ >+/** > * \brief Calculate approximate memory requirements for raw encoder > * > * This function can be used to calculate the memory requirements for >@@ -132,9 +171,7 @@ > * .id == LZMA_VLI_UNKNOWN. > * > * \return Number of bytes of memory required for the given >- * filter chain when encoding. If an error occurs, >- * for example due to unsupported filter chain, >- * UINT64_MAX is returned. >+ * filter chain when encoding or UINT64_MAX on error. > */ > extern LZMA_API(uint64_t) lzma_raw_encoder_memusage(const lzma_filter *filters) > lzma_nothrow lzma_attr_pure; >@@ -151,9 +188,7 @@ > * .id == LZMA_VLI_UNKNOWN. > * > * \return Number of bytes of memory required for the given >- * filter chain when decoding. If an error occurs, >- * for example due to unsupported filter chain, >- * UINT64_MAX is returned. >+ * filter chain when decoding or UINT64_MAX on error. > */ > extern LZMA_API(uint64_t) lzma_raw_decoder_memusage(const lzma_filter *filters) > lzma_nothrow lzma_attr_pure; >@@ -164,14 +199,16 @@ > * > * This function may be useful when implementing custom file formats. > * >- * \param strm Pointer to properly prepared lzma_stream >- * \param filters Array of lzma_filter structures. The end of the >- * array must be marked with .id = LZMA_VLI_UNKNOWN. >- * > * The `action' with lzma_code() can be LZMA_RUN, LZMA_SYNC_FLUSH (if the > * filter chain supports it), or LZMA_FINISH. > * >- * \return - LZMA_OK >+ * \param strm Pointer to lzma_stream that is at least >+ * initialized with LZMA_STREAM_INIT. >+ * \param filters Array of filters terminated with >+ * .id == LZMA_VLI_UNKNOWN. >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_MEM_ERROR > * - LZMA_OPTIONS_ERROR > * - LZMA_PROG_ERROR >@@ -189,7 +226,13 @@ > * The `action' with lzma_code() can be LZMA_RUN or LZMA_FINISH. Using > * LZMA_FINISH is not required, it is supported just for convenience. > * >- * \return - LZMA_OK >+ * \param strm Pointer to lzma_stream that is at least >+ * initialized with LZMA_STREAM_INIT. >+ * \param filters Array of filters terminated with >+ * .id == LZMA_VLI_UNKNOWN. >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_MEM_ERROR > * - LZMA_OPTIONS_ERROR > * - LZMA_PROG_ERROR >@@ -202,24 +245,36 @@ > /** > * \brief Update the filter chain in the encoder > * >- * This function is for advanced users only. This function has two slightly >- * different purposes: >+ * This function may be called after lzma_code() has returned LZMA_STREAM_END >+ * when LZMA_FULL_BARRIER, LZMA_FULL_FLUSH, or LZMA_SYNC_FLUSH was used: > * >- * - After LZMA_FULL_FLUSH when using Stream encoder: Set a new filter >- * chain, which will be used starting from the next Block. >+ * - After LZMA_FULL_BARRIER or LZMA_FULL_FLUSH: Single-threaded .xz Stream >+ * encoder (lzma_stream_encoder()) and (since liblzma 5.4.0) multi-threaded >+ * Stream encoder (lzma_stream_encoder_mt()) allow setting a new filter >+ * chain to be used for the next Block(s). > * >- * - After LZMA_SYNC_FLUSH using Raw, Block, or Stream encoder: Change >- * the filter-specific options in the middle of encoding. The actual >- * filters in the chain (Filter IDs) cannot be changed. In the future, >- * it might become possible to change the filter options without >- * using LZMA_SYNC_FLUSH. >+ * - After LZMA_SYNC_FLUSH: Raw encoder (lzma_raw_encoder()), >+ * Block encocder (lzma_block_encoder()), and single-threaded .xz Stream >+ * encoder (lzma_stream_encoder()) allow changing certain filter-specific >+ * options in the middle of encoding. The actual filters in the chain >+ * (Filter IDs) must not be changed! Currently only the lc, lp, and pb >+ * options of LZMA2 (not LZMA1) can be changed this way. > * >- * While rarely useful, this function may be called also when no data has >- * been compressed yet. In that case, this function will behave as if >- * LZMA_FULL_FLUSH (Stream encoder) or LZMA_SYNC_FLUSH (Raw or Block >+ * - In the future some filters might allow changing some of their options >+ * without any barrier or flushing but currently such filters don't exist. >+ * >+ * This function may also be called when no data has been compressed yet >+ * although this is rarely useful. In that case, this function will behave >+ * as if LZMA_FULL_FLUSH (Stream encoders) or LZMA_SYNC_FLUSH (Raw or Block > * encoder) had been used right before calling this function. > * >- * \return - LZMA_OK >+ * \param strm Pointer to lzma_stream that is at least >+ * initialized with LZMA_STREAM_INIT. >+ * \param filters Array of filters terminated with >+ * .id == LZMA_VLI_UNKNOWN. >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_MEM_ERROR > * - LZMA_MEMLIMIT_ERROR > * - LZMA_OPTIONS_ERROR >@@ -232,29 +287,30 @@ > /** > * \brief Single-call raw encoder > * >- * \param filters Array of lzma_filter structures. The end of the >- * array must be marked with .id = LZMA_VLI_UNKNOWN. >+ * \note There is no function to calculate how big output buffer >+ * would surely be big enough. (lzma_stream_buffer_bound() >+ * works only for lzma_stream_buffer_encode(); raw encoder >+ * won't necessarily meet that bound.) >+ * >+ * \param filters Array of filters terminated with >+ * .id == LZMA_VLI_UNKNOWN. > * \param allocator lzma_allocator for custom allocator functions. > * Set to NULL to use malloc() and free(). > * \param in Beginning of the input buffer > * \param in_size Size of the input buffer >- * \param out Beginning of the output buffer >- * \param out_pos The next byte will be written to out[*out_pos]. >+ * \param[out] out Beginning of the output buffer >+ * \param[out] out_pos The next byte will be written to out[*out_pos]. > * *out_pos is updated only if encoding succeeds. > * \param out_size Size of the out buffer; the first byte into > * which no data is written to is out[out_size]. > * >- * \return - LZMA_OK: Encoding was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Encoding was successful. > * - LZMA_BUF_ERROR: Not enough output buffer space. > * - LZMA_OPTIONS_ERROR > * - LZMA_MEM_ERROR > * - LZMA_DATA_ERROR > * - LZMA_PROG_ERROR >- * >- * \note There is no function to calculate how big output buffer >- * would surely be big enough. (lzma_stream_buffer_bound() >- * works only for lzma_stream_buffer_encode(); raw encoder >- * won't necessarily meet that bound.) > */ > extern LZMA_API(lzma_ret) lzma_raw_buffer_encode( > const lzma_filter *filters, const lzma_allocator *allocator, >@@ -265,8 +321,8 @@ > /** > * \brief Single-call raw decoder > * >- * \param filters Array of lzma_filter structures. The end of the >- * array must be marked with .id = LZMA_VLI_UNKNOWN. >+ * \param filters Array of filters terminated with >+ * .id == LZMA_VLI_UNKNOWN. > * \param allocator lzma_allocator for custom allocator functions. > * Set to NULL to use malloc() and free(). > * \param in Beginning of the input buffer >@@ -274,11 +330,19 @@ > * *in_pos is updated only if decoding succeeds. > * \param in_size Size of the input buffer; the first byte that > * won't be read is in[in_size]. >- * \param out Beginning of the output buffer >- * \param out_pos The next byte will be written to out[*out_pos]. >+ * \param[out] out Beginning of the output buffer >+ * \param[out] out_pos The next byte will be written to out[*out_pos]. > * *out_pos is updated only if encoding succeeds. > * \param out_size Size of the out buffer; the first byte into > * which no data is written to is out[out_size]. >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Decoding was successful. >+ * - LZMA_BUF_ERROR: Not enough output buffer space. >+ * - LZMA_OPTIONS_ERROR >+ * - LZMA_MEM_ERROR >+ * - LZMA_DATA_ERROR >+ * - LZMA_PROG_ERROR > */ > extern LZMA_API(lzma_ret) lzma_raw_buffer_decode( > const lzma_filter *filters, const lzma_allocator *allocator, >@@ -292,18 +356,19 @@ > * This function may be useful when implementing custom file formats > * using the raw encoder and decoder. > * >- * \param size Pointer to uint32_t to hold the size of the properties >+ * \note This function validates the Filter ID, but does not >+ * necessarily validate the options. Thus, it is possible >+ * that this returns LZMA_OK while the following call to >+ * lzma_properties_encode() returns LZMA_OPTIONS_ERROR. >+ * >+ * \param[out] size Pointer to uint32_t to hold the size of the properties > * \param filter Filter ID and options (the size of the properties may > * vary depending on the options) > * >- * \return - LZMA_OK >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_OPTIONS_ERROR > * - LZMA_PROG_ERROR >- * >- * \note This function validates the Filter ID, but does not >- * necessarily validate the options. Thus, it is possible >- * that this returns LZMA_OK while the following call to >- * lzma_properties_encode() returns LZMA_OPTIONS_ERROR. > */ > extern LZMA_API(lzma_ret) lzma_properties_size( > uint32_t *size, const lzma_filter *filter) lzma_nothrow; >@@ -312,15 +377,6 @@ > /** > * \brief Encode the Filter Properties field > * >- * \param filter Filter ID and options >- * \param props Buffer to hold the encoded options. The size of >- * buffer must have been already determined with >- * lzma_properties_size(). >- * >- * \return - LZMA_OK >- * - LZMA_OPTIONS_ERROR >- * - LZMA_PROG_ERROR >- * > * \note Even this function won't validate more options than actually > * necessary. Thus, it is possible that encoding the properties > * succeeds but using the same options to initialize the encoder >@@ -330,6 +386,15 @@ > * of the Filter Properties field is zero, calling > * lzma_properties_encode() is not required, but it > * won't do any harm either. >+ * >+ * \param filter Filter ID and options >+ * \param[out] props Buffer to hold the encoded options. The size of >+ * the buffer must have been already determined with >+ * lzma_properties_size(). >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK >+ * - LZMA_PROG_ERROR > */ > extern LZMA_API(lzma_ret) lzma_properties_encode( > const lzma_filter *filter, uint8_t *props) lzma_nothrow; >@@ -345,15 +410,16 @@ > * it's application's responsibility to free it when > * appropriate. filter->options is set to NULL if > * there are no properties or if an error occurs. >- * \param allocator Custom memory allocator used to allocate the >- * options. Set to NULL to use the default malloc(), >+ * \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). > * and in case of an error, also free(). > * \param props Input buffer containing the properties. > * \param props_size Size of the properties. This must be the exact > * size; giving too much or too little input will > * return LZMA_OPTIONS_ERROR. > * >- * \return - LZMA_OK >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_OPTIONS_ERROR > * - LZMA_MEM_ERROR > */ >@@ -368,18 +434,19 @@ > * Knowing the size of Filter Flags is useful to know when allocating > * memory to hold the encoded Filter Flags. > * >- * \param size Pointer to integer to hold the calculated size >+ * \note If you need to calculate size of List of Filter Flags, >+ * you need to loop over every lzma_filter entry. >+ * >+ * \param[out] size Pointer to integer to hold the calculated size > * \param filter Filter ID and associated options whose encoded > * size is to be calculated > * >- * \return - LZMA_OK: *size set successfully. Note that this doesn't >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: *size set successfully. Note that this doesn't > * guarantee that filter->options is valid, thus > * lzma_filter_flags_encode() may still fail. > * - LZMA_OPTIONS_ERROR: Unknown Filter ID or unsupported options. > * - LZMA_PROG_ERROR: Invalid options >- * >- * \note If you need to calculate size of List of Filter Flags, >- * you need to loop over every lzma_filter entry. > */ > extern LZMA_API(lzma_ret) lzma_filter_flags_size( > uint32_t *size, const lzma_filter *filter) >@@ -393,12 +460,13 @@ > * This is due to how this function is used internally by liblzma. > * > * \param filter Filter ID and options to be encoded >- * \param out Beginning of the output buffer >- * \param out_pos out[*out_pos] is the next write position. This >+ * \param[out] out Beginning of the output buffer >+ * \param[out] out_pos out[*out_pos] is the next write position. This > * is updated by the encoder. > * \param out_size out[out_size] is the first byte to not write. > * >- * \return - LZMA_OK: Encoding was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Encoding was successful. > * - LZMA_OPTIONS_ERROR: Invalid or unsupported options. > * - LZMA_PROG_ERROR: Invalid options or not enough output > * buffer space (you should have checked it with >@@ -413,14 +481,290 @@ > * \brief Decode Filter Flags from given buffer > * > * The decoded result is stored into *filter. The old value of >- * filter->options is not free()d. >+ * filter->options is not free()d. If anything other than LZMA_OK >+ * is returned, filter->options is set to NULL. > * >- * \return - LZMA_OK >+ * \param[out] filter Destination filter. The decoded Filter ID will >+ * be stored in filter->id. If options are needed >+ * they will be allocated and the pointer will be >+ * stored in filter->options. >+ * \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). >+ * \param in Beginning of the input buffer >+ * \param[out] in_pos The next byte will be read from in[*in_pos]. >+ * *in_pos is updated only if decoding succeeds. >+ * \param in_size Size of the input buffer; the first byte that >+ * won't be read is in[in_size]. >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_OPTIONS_ERROR > * - LZMA_MEM_ERROR >+ * - LZMA_DATA_ERROR > * - LZMA_PROG_ERROR > */ > extern LZMA_API(lzma_ret) lzma_filter_flags_decode( > lzma_filter *filter, const lzma_allocator *allocator, > const uint8_t *in, size_t *in_pos, size_t in_size) >+ lzma_nothrow lzma_attr_warn_unused_result; >+ >+ >+/*********** >+ * Strings * >+ ***********/ >+ >+/** >+ * \brief Allow or show all filters >+ * >+ * By default only the filters supported in the .xz format are accept by >+ * lzma_str_to_filters() or shown by lzma_str_list_filters(). >+ */ >+#define LZMA_STR_ALL_FILTERS UINT32_C(0x01) >+ >+ >+/** >+ * \brief Do not validate the filter chain in lzma_str_to_filters() >+ * >+ * By default lzma_str_to_filters() can return an error if the filter chain >+ * as a whole isn't usable in the .xz format or in the raw encoder or decoder. >+ * With this flag, this validation is skipped. This flag doesn't affect the >+ * handling of the individual filter options. To allow non-.xz filters also >+ * LZMA_STR_ALL_FILTERS is needed. >+ */ >+#define LZMA_STR_NO_VALIDATION UINT32_C(0x02) >+ >+ >+/** >+ * \brief Stringify encoder options >+ * >+ * Show the filter-specific options that the encoder will use. >+ * This may be useful for verbose diagnostic messages. >+ * >+ * Note that if options were decoded from .xz headers then the encoder options >+ * may be undefined. This flag shouldn't be used in such a situation. >+ */ >+#define LZMA_STR_ENCODER UINT32_C(0x10) >+ >+ >+/** >+ * \brief Stringify decoder options >+ * >+ * Show the filter-specific options that the decoder will use. >+ * This may be useful for showing what filter options were decoded >+ * from file headers. >+ */ >+#define LZMA_STR_DECODER UINT32_C(0x20) >+ >+ >+/** >+ * \brief Produce xz-compatible getopt_long() syntax >+ * >+ * That is, "delta:dist=2 lzma2:dict=4MiB,pb=1,lp=1" becomes >+ * "--delta=dist=2 --lzma2=dict=4MiB,pb=1,lp=1". >+ * >+ * This syntax is compatible with xz 5.0.0 as long as the filters and >+ * their options are supported too. >+ */ >+#define LZMA_STR_GETOPT_LONG UINT32_C(0x40) >+ >+ >+/** >+ * \brief Use two dashes "--" instead of a space to separate filters >+ * >+ * That is, "delta:dist=2 lzma2:pb=1,lp=1" becomes >+ * "delta:dist=2--lzma2:pb=1,lp=1". This looks slightly odd but this >+ * kind of strings should be usable on the command line without quoting. >+ * However, it is possible that future versions with new filter options >+ * might produce strings that require shell quoting anyway as the exact >+ * set of possible characters isn't frozen for now. >+ * >+ * It is guaranteed that the single quote (') will never be used in >+ * filter chain strings (even if LZMA_STR_NO_SPACES isn't used). >+ */ >+#define LZMA_STR_NO_SPACES UINT32_C(0x80) >+ >+ >+/** >+ * \brief Convert a string to a filter chain >+ * >+ * This tries to make it easier to write applications that allow users >+ * to set custom compression options. This only handles the filter >+ * configuration (including presets) but not the number of threads, >+ * block size, check type, or memory limits. >+ * >+ * The input string can be either a preset or a filter chain. Presets >+ * begin with a digit 0-9 and may be followed by zero or more flags >+ * which are lower-case letters. Currently only "e" is supported, matching >+ * LZMA_PRESET_EXTREME. For partial xz command line syntax compatibility, >+ * a preset string may start with a single dash "-". >+ * >+ * A filter chain consists of one or more "filtername:opt1=value1,opt2=value2" >+ * strings separated by one or more spaces. Leading and trailing spaces are >+ * ignored. All names and values must be lower-case. Extra commas in the >+ * option list are ignored. The order of filters is significant: when >+ * encoding, the uncompressed input data goes to the leftmost filter first. >+ * Normally "lzma2" is the last filter in the chain. >+ * >+ * If one wishes to avoid spaces, for example, to avoid shell quoting, >+ * it is possible to use two dashes "--" instead of spaces to separate >+ * the filters. >+ * >+ * For xz command line compatibility, each filter may be prefixed with >+ * two dashes "--" and the colon ":" separating the filter name from >+ * the options may be replaced with an equals sign "=". >+ * >+ * By default, only filters that can be used in the .xz format are accepted. >+ * To allow all filters (LZMA1) use the flag LZMA_STR_ALL_FILTERS. >+ * >+ * By default, very basic validation is done for the filter chain as a whole, >+ * for example, that LZMA2 is only used as the last filter in the chain. >+ * The validation isn't perfect though and it's possible that this function >+ * succeeds but using the filter chain for encoding or decoding will still >+ * result in LZMA_OPTIONS_ERROR. To disable this validation, use the flag >+ * LZMA_STR_NO_VALIDATION. >+ * >+ * The available filter names and their options are available via >+ * lzma_str_list_filters(). See the xz man page for the description >+ * of filter names and options. >+ * >+ * For command line applications, below is an example how an error message >+ * can be displayed. Note the use of an empty string for the field width. >+ * If "^" was used there it would create an off-by-one error except at >+ * the very beginning of the line. >+ * >+ * \code{.c} >+ * const char *str = ...; // From user >+ * lzma_filter filters[LZMA_FILTERS_MAX + 1]; >+ * int pos; >+ * const char *msg = lzma_str_to_filters(str, &pos, filters, 0, NULL); >+ * if (msg != NULL) { >+ * printf("%s: Error in XZ compression options:\n", argv[0]); >+ * printf("%s: %s\n", argv[0], str); >+ * printf("%s: %*s^\n", argv[0], errpos, ""); >+ * printf("%s: %s\n", argv[0], msg); >+ * } >+ * \endcode >+ * >+ * \param str User-supplied string describing a preset or >+ * a filter chain. If a default value is needed and >+ * you don't know what would be good, use "6" since >+ * that is the default preset in xz too. >+ * \param[out] error_pos If this isn't NULL, this value will be set on >+ * both success and on all errors. This tells the >+ * location of the error in the string. This is >+ * an int to make it straightforward to use this >+ * as printf() field width. The value is guaranteed >+ * to be in the range [0, INT_MAX] even if strlen(str) >+ * somehow was greater than INT_MAX. >+ * \param[out] filters An array of lzma_filter structures. There must >+ * be LZMA_FILTERS_MAX + 1 (that is, five) elements >+ * in the array. The old contents are ignored so it >+ * doesn't need to be initialized. This array is >+ * modified only if this function returns NULL. >+ * Once the allocated filter options are no longer >+ * needed, lzma_filters_free() can be used to free the >+ * options (it doesn't free the filters array itself). >+ * \param flags Bitwise-or of zero or more of the flags >+ * LZMA_STR_ALL_FILTERS and LZMA_STR_NO_VALIDATION. >+ * \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). >+ * >+ * \return On success, NULL is returned. On error, a statically-allocated >+ * error message is returned which together with the error_pos >+ * should give some idea what is wrong. >+ */ >+extern LZMA_API(const char *) lzma_str_to_filters( >+ const char *str, int *error_pos, lzma_filter *filters, >+ uint32_t flags, const lzma_allocator *allocator) >+ lzma_nothrow lzma_attr_warn_unused_result; >+ >+ >+/** >+ * \brief Convert a filter chain to a string >+ * >+ * Use cases: >+ * >+ * - Verbose output showing the full encoder options to the user >+ * (use LZMA_STR_ENCODER in flags) >+ * >+ * - Showing the filters and options that are required to decode a file >+ * (use LZMA_STR_DECODER in flags) >+ * >+ * - Showing the filter names without any options in informational messages >+ * where the technical details aren't important (no flags). In this case >+ * the .options in the filters array are ignored and may be NULL even if >+ * a filter has a mandatory options structure. >+ * >+ * Note that even if the filter chain was specified using a preset, >+ * the resulting filter chain isn't reversed to a preset. So if you >+ * specify "6" to lzma_str_to_filters() then lzma_str_from_filters() >+ * will produce a string containing "lzma2". >+ * >+ * \param[out] str On success *str will be set to point to an >+ * allocated string describing the given filter >+ * chain. Old value is ignored. On error *str is >+ * always set to NULL. >+ * \param filters Array of filters terminated with >+ * .id == LZMA_VLI_UNKNOWN. >+ * \param flags Bitwise-or of zero or more of the flags >+ * LZMA_STR_ENCODER, LZMA_STR_DECODER, >+ * LZMA_STR_GETOPT_LONG, and LZMA_STR_NO_SPACES. >+ * \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK >+ * - LZMA_OPTIONS_ERROR: Empty filter chain >+ * (filters[0].id == LZMA_VLI_UNKNOWN) or the filter chain >+ * includes a Filter ID that is not supported by this function. >+ * - LZMA_MEM_ERROR >+ * - LZMA_PROG_ERROR >+ */ >+extern LZMA_API(lzma_ret) lzma_str_from_filters( >+ char **str, const lzma_filter *filters, uint32_t flags, >+ const lzma_allocator *allocator) >+ lzma_nothrow lzma_attr_warn_unused_result; >+ >+ >+/** >+ * \brief List available filters and/or their options (for help message) >+ * >+ * If a filter_id is given then only one line is created which contains the >+ * filter name. If LZMA_STR_ENCODER or LZMA_STR_DECODER is used then the >+ * options required for encoding or decoding are listed on the same line too. >+ * >+ * If filter_id is LZMA_VLI_UNKNOWN then all supported .xz-compatible filters >+ * are listed: >+ * >+ * - If neither LZMA_STR_ENCODER nor LZMA_STR_DECODER is used then >+ * the supported filter names are listed on a single line separated >+ * by spaces. >+ * >+ * - If LZMA_STR_ENCODER or LZMA_STR_DECODER is used then filters and >+ * the supported options are listed one filter per line. There won't >+ * be a newline after the last filter. >+ * >+ * - If LZMA_STR_ALL_FILTERS is used then the list will include also >+ * those filters that cannot be used in the .xz format (LZMA1). >+ * >+ * \param str On success *str will be set to point to an >+ * allocated string listing the filters and options. >+ * Old value is ignored. On error *str is always set >+ * to NULL. >+ * \param filter_id Filter ID or LZMA_VLI_UNKNOWN. >+ * \param flags Bitwise-or of zero or more of the flags >+ * LZMA_STR_ALL_FILTERS, LZMA_STR_ENCODER, >+ * LZMA_STR_DECODER, and LZMA_STR_GETOPT_LONG. >+ * \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK >+ * - LZMA_OPTIONS_ERROR: Unsupported filter_id or flags >+ * - LZMA_MEM_ERROR >+ * - LZMA_PROG_ERROR >+ */ >+extern LZMA_API(lzma_ret) lzma_str_list_filters( >+ char **str, lzma_vli filter_id, uint32_t flags, >+ const lzma_allocator *allocator) > lzma_nothrow lzma_attr_warn_unused_result; >diff -ur xz-5.2.5/src/liblzma/api/lzma/hardware.h xz-5.4.3/src/liblzma/api/lzma/hardware.h >--- xz-5.2.5/src/liblzma/api/lzma/hardware.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/api/lzma/hardware.h 2023-05-04 17:21:05 >@@ -1,6 +1,7 @@ > /** > * \file lzma/hardware.h > * \brief Hardware information >+ * \note Never include this file directly. Use <lzma.h> instead. > * > * Since liblzma can consume a lot of system resources, it also provides > * ways to limit the resource usage. Applications linking against liblzma >@@ -25,8 +26,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -57,7 +56,7 @@ > * If the hardware supports more than one thread per CPU core, the number > * of hardware threads is returned if that information is available. > * >- * \brief On success, the number of available CPU threads or cores is >+ * \return On success, the number of available CPU threads or cores is > * returned. If this information isn't available or an error > * occurs, zero is returned. > */ >diff -ur xz-5.2.5/src/liblzma/api/lzma/index.h xz-5.4.3/src/liblzma/api/lzma/index.h >--- xz-5.2.5/src/liblzma/api/lzma/index.h 2020-03-17 17:28:54 >+++ xz-5.4.3/src/liblzma/api/lzma/index.h 2023-05-04 17:22:00 >@@ -1,6 +1,7 @@ > /** > * \file lzma/index.h > * \brief Handling of .xz Index and related information >+ * \note Never include this file directly. Use <lzma.h> instead. > */ > > /* >@@ -8,8 +9,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -50,8 +49,13 @@ > */ > const lzma_stream_flags *flags; > >+ /** \private Reserved member. */ > const void *reserved_ptr1; >+ >+ /** \private Reserved member. */ > const void *reserved_ptr2; >+ >+ /** \private Reserved member. */ > const void *reserved_ptr3; > > /** >@@ -107,9 +111,17 @@ > */ > lzma_vli padding; > >+ >+ /** \private Reserved member. */ > lzma_vli reserved_vli1; >+ >+ /** \private Reserved member. */ > lzma_vli reserved_vli2; >+ >+ /** \private Reserved member. */ > lzma_vli reserved_vli3; >+ >+ /** \private Reserved member. */ > lzma_vli reserved_vli4; > } stream; > >@@ -196,25 +208,46 @@ > */ > lzma_vli total_size; > >+ /** \private Reserved member. */ > lzma_vli reserved_vli1; >+ >+ /** \private Reserved member. */ > lzma_vli reserved_vli2; >+ >+ /** \private Reserved member. */ > lzma_vli reserved_vli3; >+ >+ /** \private Reserved member. */ > lzma_vli reserved_vli4; > >+ /** \private Reserved member. */ > const void *reserved_ptr1; >+ >+ /** \private Reserved member. */ > const void *reserved_ptr2; >+ >+ /** \private Reserved member. */ > const void *reserved_ptr3; >+ >+ /** \private Reserved member. */ > const void *reserved_ptr4; > } block; > >- /* >+ /** >+ * \private Internal struct. >+ * > * Internal data which is used to store the state of the iterator. > * The exact format may vary between liblzma versions, so don't > * touch these in any way. > */ > union { >+ /** \private Internal member. */ > const void *p; >+ >+ /** \private Internal member. */ > size_t s; >+ >+ /** \private Internal member. */ > lzma_vli v; > } internal[6]; > } lzma_index_iter; >@@ -272,16 +305,21 @@ > * \brief Calculate memory usage of lzma_index > * > * On disk, the size of the Index field depends on both the number of Records >- * stored and how big values the Records store (due to variable-length integer >+ * stored and the size of the Records (due to variable-length integer > * encoding). When the Index is kept in lzma_index structure, the memory usage > * depends only on the number of Records/Blocks stored in the Index(es), and > * in case of concatenated lzma_indexes, the number of Streams. The size in > * RAM is almost always significantly bigger than in the encoded form on disk. > * >- * This function calculates an approximate amount of memory needed hold >+ * This function calculates an approximate amount of memory needed to hold > * the given number of Streams and Blocks in lzma_index structure. This > * value may vary between CPU architectures and also between liblzma versions > * if the internal implementation is modified. >+ * >+ * \param streams Number of Streams >+ * \param blocks Number of Blocks >+ * >+ * \return Approximate memory in bytes needed in a lzma_index structure. > */ > extern LZMA_API(uint64_t) lzma_index_memusage( > lzma_vli streams, lzma_vli blocks) lzma_nothrow; >@@ -292,6 +330,10 @@ > * > * This is a shorthand for lzma_index_memusage(lzma_index_stream_count(i), > * lzma_index_block_count(i)). >+ * >+ * \param i Pointer to lzma_index structure >+ * >+ * \return Approximate memory in bytes used by the lzma_index structure. > */ > extern LZMA_API(uint64_t) lzma_index_memused(const lzma_index *i) > lzma_nothrow; >@@ -300,6 +342,9 @@ > /** > * \brief Allocate and initialize a new lzma_index structure > * >+ * \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). >+ * > * \return On success, a pointer to an empty initialized lzma_index is > * returned. If allocation fails, NULL is returned. > */ >@@ -311,6 +356,10 @@ > * \brief Deallocate lzma_index > * > * If i is NULL, this does nothing. >+ * >+ * \param i Pointer to lzma_index structure to deallocate >+ * \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). > */ > extern LZMA_API(void) lzma_index_end( > lzma_index *i, const lzma_allocator *allocator) lzma_nothrow; >@@ -320,8 +369,9 @@ > * \brief Add a new Block to lzma_index > * > * \param i Pointer to a lzma_index structure >- * \param allocator Pointer to lzma_allocator, or NULL to >- * use malloc() >+ * \param allocator lzma_allocator for custom allocator >+ * functions. Set to NULL to use malloc() >+ * and free(). > * \param unpadded_size Unpadded Size of a Block. This can be > * calculated with lzma_block_unpadded_size() > * after encoding or decoding the Block. >@@ -334,7 +384,8 @@ > * lzma_index_append() it is possible to read the next Block with > * an existing iterator. > * >- * \return - LZMA_OK >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_MEM_ERROR > * - LZMA_DATA_ERROR: Compressed or uncompressed size of the > * Stream or size of the Index field would grow too big. >@@ -354,11 +405,15 @@ > * lzma_index, because to decode Blocks, knowing the integrity check type > * is needed. > * >- * The given Stream Flags are copied into internal preallocated structure >- * in the lzma_index, thus the caller doesn't need to keep the *stream_flags >- * available after calling this function. >+ * \param i Pointer to lzma_index structure >+ * \param stream_flags Pointer to lzma_stream_flags structure. This >+ * is copied into the internal preallocated >+ * structure, so the caller doesn't need to keep >+ * the flags' data available after calling this >+ * function. > * >- * \return - LZMA_OK >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_OPTIONS_ERROR: Unsupported stream_flags->version. > * - LZMA_PROG_ERROR > */ >@@ -376,6 +431,10 @@ > * showing the Check types to the user. > * > * The bitmask is 1 << check_id, e.g. CRC32 is 1 << 1 and SHA-256 is 1 << 10. >+ * >+ * \param i Pointer to lzma_index structure >+ * >+ * \return Bitmask indicating which Check types are used in the lzma_index > */ > extern LZMA_API(uint32_t) lzma_index_checks(const lzma_index *i) > lzma_nothrow lzma_attr_pure; >@@ -390,7 +449,8 @@ > * > * By default, the amount of Stream Padding is assumed to be zero bytes. > * >- * \return - LZMA_OK >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_DATA_ERROR: The file size would grow too big. > * - LZMA_PROG_ERROR > */ >@@ -401,6 +461,10 @@ > > /** > * \brief Get the number of Streams >+ * >+ * \param i Pointer to lzma_index structure >+ * >+ * \return Number of Streams in the lzma_index > */ > extern LZMA_API(lzma_vli) lzma_index_stream_count(const lzma_index *i) > lzma_nothrow lzma_attr_pure; >@@ -411,6 +475,10 @@ > * > * This returns the total number of Blocks in lzma_index. To get number > * of Blocks in individual Streams, use lzma_index_iter. >+ * >+ * \param i Pointer to lzma_index structure >+ * >+ * \return Number of blocks in the lzma_index > */ > extern LZMA_API(lzma_vli) lzma_index_block_count(const lzma_index *i) > lzma_nothrow lzma_attr_pure; >@@ -420,6 +488,10 @@ > * \brief Get the size of the Index field as bytes > * > * This is needed to verify the Backward Size field in the Stream Footer. >+ * >+ * \param i Pointer to lzma_index structure >+ * >+ * \return Size in bytes of the Index > */ > extern LZMA_API(lzma_vli) lzma_index_size(const lzma_index *i) > lzma_nothrow lzma_attr_pure; >@@ -431,6 +503,11 @@ > * If multiple lzma_indexes have been combined, this works as if the Blocks > * were in a single Stream. This is useful if you are going to combine > * Blocks from multiple Streams into a single new Stream. >+ * >+ * \param i Pointer to lzma_index structure >+ * >+ * \return Size in bytes of the Stream (if all Blocks are combined >+ * into one Stream). > */ > extern LZMA_API(lzma_vli) lzma_index_stream_size(const lzma_index *i) > lzma_nothrow lzma_attr_pure; >@@ -441,6 +518,10 @@ > * > * This doesn't include the Stream Header, Stream Footer, Stream Padding, > * or Index fields. >+ * >+ * \param i Pointer to lzma_index structure >+ * >+ * \return Size in bytes of all Blocks in the Stream(s) > */ > extern LZMA_API(lzma_vli) lzma_index_total_size(const lzma_index *i) > lzma_nothrow lzma_attr_pure; >@@ -453,6 +534,10 @@ > * no Stream Padding, this function is identical to lzma_index_stream_size(). > * If multiple lzma_indexes have been combined, this includes also the headers > * of each separate Stream and the possible Stream Padding fields. >+ * >+ * \param i Pointer to lzma_index structure >+ * >+ * \return Total size of the .xz file in bytes > */ > extern LZMA_API(lzma_vli) lzma_index_file_size(const lzma_index *i) > lzma_nothrow lzma_attr_pure; >@@ -460,6 +545,10 @@ > > /** > * \brief Get the uncompressed size of the file >+ * >+ * \param i Pointer to lzma_index structure >+ * >+ * \return Size in bytes of the uncompressed data in the file > */ > extern LZMA_API(lzma_vli) lzma_index_uncompressed_size(const lzma_index *i) > lzma_nothrow lzma_attr_pure; >@@ -468,9 +557,6 @@ > /** > * \brief Initialize an iterator > * >- * \param iter Pointer to a lzma_index_iter structure >- * \param i lzma_index to which the iterator will be associated >- * > * This function associates the iterator with the given lzma_index, and calls > * lzma_index_iter_rewind() on the iterator. > * >@@ -483,6 +569,9 @@ > * > * It is safe to make copies of an initialized lzma_index_iter, for example, > * to easily restart reading at some particular position. >+ * >+ * \param iter Pointer to a lzma_index_iter structure >+ * \param i lzma_index to which the iterator will be associated > */ > extern LZMA_API(void) lzma_index_iter_init( > lzma_index_iter *iter, const lzma_index *i) lzma_nothrow; >@@ -493,6 +582,8 @@ > * > * Rewind the iterator so that next call to lzma_index_iter_next() will > * return the first Block or Stream. >+ * >+ * \param iter Pointer to a lzma_index_iter structure > */ > extern LZMA_API(void) lzma_index_iter_rewind(lzma_index_iter *iter) > lzma_nothrow; >@@ -505,11 +596,11 @@ > * \param mode Specify what kind of information the caller wants > * to get. See lzma_index_iter_mode for details. > * >- * \return If next Block or Stream matching the mode was found, *iter >- * is updated and this function returns false. If no Block or >- * Stream matching the mode is found, *iter is not modified >- * and this function returns true. If mode is set to an unknown >- * value, *iter is not modified and this function returns true. >+ * \return lzma_bool: >+ * - true if no Block or Stream matching the mode is found. >+ * *iter is not updated (failure). >+ * - false if the next Block or Stream matching the mode was >+ * found. *iter is updated (success). > */ > extern LZMA_API(lzma_bool) lzma_index_iter_next( > lzma_index_iter *iter, lzma_index_iter_mode mode) >@@ -523,21 +614,26 @@ > * the Index field(s) and use lzma_index_iter_locate() to do random-access > * reading with granularity of Block size. > * >- * \param iter Iterator that was earlier initialized with >- * lzma_index_iter_init(). >- * \param target Uncompressed target offset which the caller would >- * like to locate from the Stream >- * > * If the target is smaller than the uncompressed size of the Stream (can be > * checked with lzma_index_uncompressed_size()): > * - Information about the Stream and Block containing the requested > * uncompressed offset is stored into *iter. > * - Internal state of the iterator is adjusted so that > * lzma_index_iter_next() can be used to read subsequent Blocks or Streams. >- * - This function returns false. > * >- * If target is greater than the uncompressed size of the Stream, *iter >- * is not modified, and this function returns true. >+ * If the target is greater than the uncompressed size of the Stream, *iter >+ * is not modified. >+ * >+ * \param iter Iterator that was earlier initialized with >+ * lzma_index_iter_init(). >+ * \param target Uncompressed target offset which the caller would >+ * like to locate from the Stream >+ * >+ * \return lzma_bool: >+ * - true if the target is greater than or equal to the >+ * uncompressed size of the Stream (failure) >+ * - false if the target is smaller than the uncompressed size >+ * of the Stream (success) > */ > extern LZMA_API(lzma_bool) lzma_index_iter_locate( > lzma_index_iter *iter, lzma_vli target) lzma_nothrow; >@@ -550,15 +646,16 @@ > * multi-Stream .xz file, or when combining multiple Streams into single > * Stream. > * >- * \param dest lzma_index after which src is appended >+ * \param[out] dest lzma_index after which src is appended > * \param src lzma_index to be appended after dest. If this > * function succeeds, the memory allocated for src > * is freed or moved to be part of dest, and all > * iterators pointing to src will become invalid. >- * \param allocator Custom memory allocator; can be NULL to use >- * malloc() and free(). >+* \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). > * >- * \return - LZMA_OK: lzma_indexes were concatenated successfully. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: lzma_indexes were concatenated successfully. > * src is now a dangling pointer. > * - LZMA_DATA_ERROR: *dest would grow too big. > * - LZMA_MEM_ERROR >@@ -572,6 +669,10 @@ > /** > * \brief Duplicate lzma_index > * >+ * \param i Pointer to lzma_index structure to be duplicated >+ * \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). >+ * > * \return A copy of the lzma_index, or NULL if memory allocation failed. > */ > extern LZMA_API(lzma_index *) lzma_index_dup( >@@ -588,7 +689,8 @@ > * The valid `action' values for lzma_code() are LZMA_RUN and LZMA_FINISH. > * It is enough to use only one of them (you can choose freely). > * >- * \return - LZMA_OK: Initialization succeeded, continue with lzma_code(). >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Initialization succeeded, continue with lzma_code(). > * - LZMA_MEM_ERROR > * - LZMA_PROG_ERROR > */ >@@ -601,7 +703,7 @@ > * \brief Initialize .xz Index decoder > * > * \param strm Pointer to properly prepared lzma_stream >- * \param i The decoded Index will be made available via >+ * \param[out] i The decoded Index will be made available via > * this pointer. Initially this function will > * set *i to NULL (the old value is ignored). If > * decoding succeeds (lzma_code() returns >@@ -617,11 +719,12 @@ > * There is no need to use LZMA_FINISH, but it's allowed because it may > * simplify certain types of applications. > * >- * \return - LZMA_OK: Initialization succeeded, continue with lzma_code(). >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Initialization succeeded, continue with lzma_code(). > * - LZMA_MEM_ERROR > * - LZMA_PROG_ERROR > * >- * liblzma 5.2.3 and older list also LZMA_MEMLIMIT_ERROR here >+ * \note liblzma 5.2.3 and older list also LZMA_MEMLIMIT_ERROR here > * but that error code has never been possible from this > * initialization function. > */ >@@ -633,21 +736,23 @@ > /** > * \brief Single-call .xz Index encoder > * >+ * \note This function doesn't take allocator argument since all >+ * the internal data is allocated on stack. >+ * > * \param i lzma_index to be encoded >- * \param out Beginning of the output buffer >- * \param out_pos The next byte will be written to out[*out_pos]. >+ * \param[out] out Beginning of the output buffer >+ * \param[out] out_pos The next byte will be written to out[*out_pos]. > * *out_pos is updated only if encoding succeeds. > * \param out_size Size of the out buffer; the first byte into > * which no data is written to is out[out_size]. > * >- * \return - LZMA_OK: Encoding was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Encoding was successful. > * - LZMA_BUF_ERROR: Output buffer is too small. Use > * lzma_index_size() to find out how much output > * space is needed. > * - LZMA_PROG_ERROR > * >- * \note This function doesn't take allocator argument since all >- * the internal data is allocated on stack. > */ > extern LZMA_API(lzma_ret) lzma_index_buffer_encode(const lzma_index *i, > uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow; >@@ -656,24 +761,26 @@ > /** > * \brief Single-call .xz Index decoder > * >- * \param i If decoding succeeds, *i will point to a new >+ * \param[out] i If decoding succeeds, *i will point to a new > * lzma_index, which the application has to > * later free with lzma_index_end(). If an error > * occurs, *i will be NULL. The old value of *i > * is always ignored and thus doesn't need to be > * initialized by the caller. >- * \param memlimit Pointer to how much memory the resulting >+ * \param[out] memlimit Pointer to how much memory the resulting > * lzma_index is allowed to require. The value > * pointed by this pointer is modified if and only > * if LZMA_MEMLIMIT_ERROR is returned. >- * \param allocator Pointer to lzma_allocator, or NULL to use malloc() >+ * \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). > * \param in Beginning of the input buffer > * \param in_pos The next byte will be read from in[*in_pos]. > * *in_pos is updated only if decoding succeeds. > * \param in_size Size of the input buffer; the first byte that > * won't be read is in[in_size]. > * >- * \return - LZMA_OK: Decoding was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Decoding was successful. > * - LZMA_MEM_ERROR > * - LZMA_MEMLIMIT_ERROR: Memory usage limit was reached. > * The minimum required memlimit value was stored to *memlimit. >@@ -683,4 +790,71 @@ > extern LZMA_API(lzma_ret) lzma_index_buffer_decode(lzma_index **i, > uint64_t *memlimit, const lzma_allocator *allocator, > const uint8_t *in, size_t *in_pos, size_t in_size) >+ lzma_nothrow; >+ >+ >+/** >+ * \brief Initialize a .xz file information decoder >+ * >+ * This decoder decodes the Stream Header, Stream Footer, Index, and >+ * Stream Padding field(s) from the input .xz file and stores the resulting >+ * combined index in *dest_index. This information can be used to get the >+ * uncompressed file size with lzma_index_uncompressed_size(*dest_index) or, >+ * for example, to implement random access reading by locating the Blocks >+ * in the Streams. >+ * >+ * To get the required information from the .xz file, lzma_code() may ask >+ * the application to seek in the input file by returning LZMA_SEEK_NEEDED >+ * and having the target file position specified in lzma_stream.seek_pos. >+ * The number of seeks required depends on the input file and how big buffers >+ * the application provides. When possible, the decoder will seek backward >+ * and forward in the given buffer to avoid useless seek requests. Thus, if >+ * the application provides the whole file at once, no external seeking will >+ * be required (that is, lzma_code() won't return LZMA_SEEK_NEEDED). >+ * >+ * The value in lzma_stream.total_in can be used to estimate how much data >+ * liblzma had to read to get the file information. However, due to seeking >+ * and the way total_in is updated, the value of total_in will be somewhat >+ * inaccurate (a little too big). Thus, total_in is a good estimate but don't >+ * expect to see the same exact value for the same file if you change the >+ * input buffer size or switch to a different liblzma version. >+ * >+ * Valid `action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH. >+ * You only need to use LZMA_RUN; LZMA_FINISH is only supported because it >+ * might be convenient for some applications. If you use LZMA_FINISH and if >+ * lzma_code() asks the application to seek, remember to reset `action' back >+ * to LZMA_RUN unless you hit the end of the file again. >+ * >+ * Possible return values from lzma_code(): >+ * - LZMA_OK: All OK so far, more input needed >+ * - LZMA_SEEK_NEEDED: Provide more input starting from the absolute >+ * file position strm->seek_pos >+ * - LZMA_STREAM_END: Decoding was successful, *dest_index has been set >+ * - LZMA_FORMAT_ERROR: The input file is not in the .xz format (the >+ * expected magic bytes were not found from the beginning of the file) >+ * - LZMA_OPTIONS_ERROR: File looks valid but contains headers that aren't >+ * supported by this version of liblzma >+ * - LZMA_DATA_ERROR: File is corrupt >+ * - LZMA_BUF_ERROR >+ * - LZMA_MEM_ERROR >+ * - LZMA_MEMLIMIT_ERROR >+ * - LZMA_PROG_ERROR >+ * >+ * \param strm Pointer to a properly prepared lzma_stream >+ * \param[out] dest_index Pointer to a pointer where the decoder will put >+ * the decoded lzma_index. The old value >+ * of *dest_index is ignored (not freed). >+ * \param memlimit How much memory the resulting lzma_index is >+ * allowed to require. Use UINT64_MAX to >+ * effectively disable the limiter. >+ * \param file_size Size of the input .xz file >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK >+ * - LZMA_MEM_ERROR >+ * - LZMA_PROG_ERROR >+ */ >+extern LZMA_API(lzma_ret) lzma_file_info_decoder( >+ lzma_stream *strm, lzma_index **dest_index, >+ uint64_t memlimit, uint64_t file_size) > lzma_nothrow; >diff -ur xz-5.2.5/src/liblzma/api/lzma/index_hash.h xz-5.4.3/src/liblzma/api/lzma/index_hash.h >--- xz-5.2.5/src/liblzma/api/lzma/index_hash.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/api/lzma/index_hash.h 2023-05-04 17:21:05 >@@ -1,6 +1,7 @@ > /** > * \file lzma/index_hash.h > * \brief Validate Index by using a hash function >+ * \note Never include this file directly. Use <lzma.h> instead. > * > * Hashing makes it possible to use constant amount of memory to validate > * Index of arbitrary size. >@@ -11,8 +12,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -28,13 +27,21 @@ > /** > * \brief Allocate and initialize a new lzma_index_hash structure > * >- * If index_hash is NULL, a new lzma_index_hash structure is allocated, >- * initialized, and a pointer to it returned. If allocation fails, NULL >- * is returned. >+ * If index_hash is NULL, this function allocates and initializes a new >+ * lzma_index_hash structure and returns a pointer to it. If allocation >+ * fails, NULL is returned. > * >- * If index_hash is non-NULL, it is reinitialized and the same pointer >- * returned. In this case, return value cannot be NULL or a different >- * pointer than the index_hash that was given as an argument. >+ * If index_hash is non-NULL, this function reinitializes the lzma_index_hash >+ * structure and returns the same pointer. In this case, return value cannot >+ * be NULL or a different pointer than the index_hash that was given as >+ * an argument. >+ * >+ * \param index_hash Pointer to a lzma_index_hash structure or NULL. >+ * \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). >+ * >+ * \return Initialized lzma_index_hash structure on success or >+ * NULL on failure. > */ > extern LZMA_API(lzma_index_hash *) lzma_index_hash_init( > lzma_index_hash *index_hash, const lzma_allocator *allocator) >@@ -43,6 +50,10 @@ > > /** > * \brief Deallocate lzma_index_hash structure >+ * >+ * \param index_hash Pointer to a lzma_index_hash structure to free. >+ * \param allocator lzma_allocator for custom allocator functions. >+ * Set to NULL to use malloc() and free(). > */ > extern LZMA_API(void) lzma_index_hash_end( > lzma_index_hash *index_hash, const lzma_allocator *allocator) >@@ -52,11 +63,12 @@ > /** > * \brief Add a new Record to an Index hash > * >- * \param index Pointer to a lzma_index_hash structure >+ * \param index_hash Pointer to a lzma_index_hash structure > * \param unpadded_size Unpadded Size of a Block > * \param uncompressed_size Uncompressed Size of a Block > * >- * \return - LZMA_OK >+ * \return Possible lzma_ret values: >+ * - LZMA_OK > * - LZMA_DATA_ERROR: Compressed or uncompressed size of the > * Stream or size of the Index field would grow too big. > * - LZMA_PROG_ERROR: Invalid arguments or this function is being >@@ -81,10 +93,11 @@ > * > * \param index_hash Pointer to a lzma_index_hash structure > * \param in Pointer to the beginning of the input buffer >- * \param in_pos in[*in_pos] is the next byte to process >+ * \param[out] in_pos in[*in_pos] is the next byte to process > * \param in_size in[in_size] is the first byte not to process > * >- * \return - LZMA_OK: So far good, but more input is needed. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: So far good, but more input is needed. > * - LZMA_STREAM_END: Index decoded successfully and it matches > * the Records given with lzma_index_hash_append(). > * - LZMA_DATA_ERROR: Index is corrupt or doesn't match the >@@ -101,6 +114,10 @@ > * \brief Get the size of the Index field as bytes > * > * This is needed to verify the Backward Size field in the Stream Footer. >+ * >+ * \param index_hash Pointer to a lzma_index_hash structure >+ * >+ * \return Size of the Index field in bytes. > */ > extern LZMA_API(lzma_vli) lzma_index_hash_size( > const lzma_index_hash *index_hash) >diff -ur xz-5.2.5/src/liblzma/api/lzma/lzma12.h xz-5.4.3/src/liblzma/api/lzma/lzma12.h >--- xz-5.2.5/src/liblzma/api/lzma/lzma12.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/api/lzma/lzma12.h 2023-05-04 17:21:05 >@@ -1,6 +1,7 @@ > /** > * \file lzma/lzma12.h > * \brief LZMA1 and LZMA2 filters >+ * \note Never include this file directly. Use <lzma.h> instead. > */ > > /* >@@ -8,8 +9,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -18,18 +17,41 @@ > > > /** >- * \brief LZMA1 Filter ID >+ * \brief LZMA1 Filter ID (for raw encoder/decoder only, not in .xz) > * > * LZMA1 is the very same thing as what was called just LZMA in LZMA Utils, > * 7-Zip, and LZMA SDK. It's called LZMA1 here to prevent developers from > * accidentally using LZMA when they actually want LZMA2. >- * >- * LZMA1 shouldn't be used for new applications unless you _really_ know >- * what you are doing. LZMA2 is almost always a better choice. > */ > #define LZMA_FILTER_LZMA1 LZMA_VLI_C(0x4000000000000001) > > /** >+ * \brief LZMA1 Filter ID with extended options (for raw encoder/decoder) >+ * >+ * This is like LZMA_FILTER_LZMA1 but with this ID a few extra options >+ * are supported in the lzma_options_lzma structure: >+ * >+ * - A flag to tell the encoder if the end of payload marker (EOPM) alias >+ * end of stream (EOS) marker must be written at the end of the stream. >+ * In contrast, LZMA_FILTER_LZMA1 always writes the end marker. >+ * >+ * - Decoder needs to be told the uncompressed size of the stream >+ * or that it is unknown (using the special value UINT64_MAX). >+ * If the size is known, a flag can be set to allow the presence of >+ * the end marker anyway. In contrast, LZMA_FILTER_LZMA1 always >+ * behaves as if the uncompressed size was unknown. >+ * >+ * This allows handling file formats where LZMA1 streams are used but where >+ * the end marker isn't allowed or where it might not (always) be present. >+ * This extended LZMA1 functionality is provided as a Filter ID for raw >+ * encoder and decoder instead of adding new encoder and decoder initialization >+ * functions because this way it is possible to also use extra filters, >+ * for example, LZMA_FILTER_X86 in a filter chain with LZMA_FILTER_LZMA1EXT, >+ * which might be needed to handle some file formats. >+ */ >+#define LZMA_FILTER_LZMA1EXT LZMA_VLI_C(0x4000000000000002) >+ >+/** > * \brief LZMA2 Filter ID > * > * Usually you want this instead of LZMA1. Compared to LZMA1, LZMA2 adds >@@ -114,16 +136,20 @@ > /** > * \brief Test if given match finder is supported > * >- * Return true if the given match finder is supported by this liblzma build. >- * Otherwise false is returned. It is safe to call this with a value that >- * isn't listed in lzma_match_finder enumeration; the return value will be >- * false. >+ * It is safe to call this with a value that isn't listed in >+ * lzma_match_finder enumeration; the return value will be false. > * > * There is no way to list which match finders are available in this > * particular liblzma version and build. It would be useless, because > * a new match finder, which the application developer wasn't aware, > * could require giving additional options to the encoder that the older > * match finders don't need. >+ * >+ * \param match_finder Match finder ID >+ * >+ * \return lzma_bool: >+ * - true if the match finder is supported by this liblzma build. >+ * - false otherwise. > */ > extern LZMA_API(lzma_bool) lzma_mf_is_supported(lzma_match_finder match_finder) > lzma_nothrow lzma_attr_const; >@@ -158,14 +184,20 @@ > /** > * \brief Test if given compression mode is supported > * >- * Return true if the given compression mode is supported by this liblzma >- * build. Otherwise false is returned. It is safe to call this with a value >- * that isn't listed in lzma_mode enumeration; the return value will be false. >+ * It is safe to call this with a value that isn't listed in lzma_mode >+ * enumeration; the return value will be false. > * > * There is no way to list which modes are available in this particular > * liblzma version and build. It would be useless, because a new compression > * mode, which the application developer wasn't aware, could require giving > * additional options to the encoder that the older modes don't need. >+ * >+ * \param mode Mode ID. >+ * >+ * \return lzma_bool: >+ * - true if the compression mode is supported by this liblzma >+ * build. >+ * - false otherwise. > */ > extern LZMA_API(lzma_bool) lzma_mode_is_supported(lzma_mode mode) > lzma_nothrow lzma_attr_const; >@@ -374,6 +406,82 @@ > */ > uint32_t depth; > >+ /** >+ * \brief For LZMA_FILTER_LZMA1EXT: Extended flags >+ * >+ * This is used only with LZMA_FILTER_LZMA1EXT. >+ * >+ * Currently only one flag is supported, LZMA_LZMA1EXT_ALLOW_EOPM: >+ * >+ * - Encoder: If the flag is set, then end marker is written just >+ * like it is with LZMA_FILTER_LZMA1. Without this flag the >+ * end marker isn't written and the application has to store >+ * the uncompressed size somewhere outside the compressed stream. >+ * To decompress streams without the end marker, the appliation >+ * has to set the correct uncompressed size in ext_size_low and >+ * ext_size_high. >+ * >+ * - Decoder: If the uncompressed size in ext_size_low and >+ * ext_size_high is set to the special value UINT64_MAX >+ * (indicating unknown uncompressed size) then this flag is >+ * ignored and the end marker must always be present, that is, >+ * the behavior is identical to LZMA_FILTER_LZMA1. >+ * >+ * Otherwise, if this flag isn't set, then the input stream >+ * must not have the end marker; if the end marker is detected >+ * then it will result in LZMA_DATA_ERROR. This is useful when >+ * it is known that the stream must not have the end marker and >+ * strict validation is wanted. >+ * >+ * If this flag is set, then it is autodetected if the end marker >+ * is present after the specified number of uncompressed bytes >+ * has been decompressed (ext_size_low and ext_size_high). The >+ * end marker isn't allowed in any other position. This behavior >+ * is useful when uncompressed size is known but the end marker >+ * may or may not be present. This is the case, for example, >+ * in .7z files (valid .7z files that have the end marker in >+ * LZMA1 streams are rare but they do exist). >+ */ >+ uint32_t ext_flags; >+# define LZMA_LZMA1EXT_ALLOW_EOPM UINT32_C(0x01) >+ >+ /** >+ * \brief For LZMA_FILTER_LZMA1EXT: Uncompressed size (low bits) >+ * >+ * The 64-bit uncompressed size is needed for decompression with >+ * LZMA_FILTER_LZMA1EXT. The size is ignored by the encoder. >+ * >+ * The special value UINT64_MAX indicates that the uncompressed size >+ * is unknown and that the end of payload marker (also known as >+ * end of stream marker) must be present to indicate the end of >+ * the LZMA1 stream. Any other value indicates the expected >+ * uncompressed size of the LZMA1 stream. (If LZMA1 was used together >+ * with filters that change the size of the data then the uncompressed >+ * size of the LZMA1 stream could be different than the final >+ * uncompressed size of the filtered stream.) >+ * >+ * ext_size_low holds the least significant 32 bits of the >+ * uncompressed size. The most significant 32 bits must be set >+ * in ext_size_high. The macro lzma_ext_size_set(opt_lzma, u64size) >+ * can be used to set these members. >+ * >+ * The 64-bit uncompressed size is split into two uint32_t variables >+ * because there were no reserved uint64_t members and using the >+ * same options structure for LZMA_FILTER_LZMA1, LZMA_FILTER_LZMA1EXT, >+ * and LZMA_FILTER_LZMA2 was otherwise more convenient than having >+ * a new options structure for LZMA_FILTER_LZMA1EXT. (Replacing two >+ * uint32_t members with one uint64_t changes the ABI on some systems >+ * as the alignment of this struct can increase from 4 bytes to 8.) >+ */ >+ uint32_t ext_size_low; >+ >+ /** >+ * \brief For LZMA_FILTER_LZMA1EXT: Uncompressed size (high bits) >+ * >+ * This holds the most significant 32 bits of the uncompressed size. >+ */ >+ uint32_t ext_size_high; >+ > /* > * Reserved space to allow possible future extensions without > * breaking the ABI. You should not touch these, because the names >@@ -381,25 +489,57 @@ > * with the currently supported options, so it is safe to leave these > * uninitialized. > */ >- uint32_t reserved_int1; >- uint32_t reserved_int2; >- uint32_t reserved_int3; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int4; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int5; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int6; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int7; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int8; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum1; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum2; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum3; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum4; >+ >+ /** \private Reserved member. */ > void *reserved_ptr1; >+ >+ /** \private Reserved member. */ > void *reserved_ptr2; > > } lzma_options_lzma; > > > /** >+ * \brief Macro to set the 64-bit uncompressed size in ext_size_* >+ * >+ * This might be convenient when decoding using LZMA_FILTER_LZMA1EXT. >+ * This isn't used with LZMA_FILTER_LZMA1 or LZMA_FILTER_LZMA2. >+ */ >+#define lzma_set_ext_size(opt_lzma2, u64size) \ >+do { \ >+ (opt_lzma2).ext_size_low = (uint32_t)(u64size); \ >+ (opt_lzma2).ext_size_high = (uint32_t)((uint64_t)(u64size) >> 32); \ >+} while (0) >+ >+ >+/** > * \brief Set a compression preset to lzma_options_lzma structure > * > * 0 is the fastest and 9 is the slowest. These match the switches -0 .. -9 >@@ -408,13 +548,22 @@ > * The flags are defined in container.h, because the flags are used also > * with lzma_easy_encoder(). > * >- * The preset values are subject to changes between liblzma versions. >+ * The preset levels are subject to changes between liblzma versions. > * > * This function is available only if LZMA1 or LZMA2 encoder has been enabled > * when building liblzma. > * >- * \return On success, false is returned. If the preset is not >- * supported, true is returned. >+ * If features (like certain match finders) have been disabled at build time, >+ * then the function may return success (false) even though the resulting >+ * LZMA1/LZMA2 options may not be usable for encoder initialization >+ * (LZMA_OPTIONS_ERROR). >+ * >+ * \param[out] options Pointer to LZMA1 or LZMA2 options to be filled >+ * \param preset Preset level bitwse-ORed with preset flags >+ * >+ * \return lzma_bool: >+ * - true if the preset is not supported (failure). >+ * - false otherwise (success). > */ > extern LZMA_API(lzma_bool) lzma_lzma_preset( > lzma_options_lzma *options, uint32_t preset) lzma_nothrow; >diff -ur xz-5.2.5/src/liblzma/api/lzma/stream_flags.h xz-5.4.3/src/liblzma/api/lzma/stream_flags.h >--- xz-5.2.5/src/liblzma/api/lzma/stream_flags.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/api/lzma/stream_flags.h 2023-05-04 17:21:05 >@@ -1,6 +1,7 @@ > /** > * \file lzma/stream_flags.h > * \brief .xz Stream Header and Stream Footer encoder and decoder >+ * \note Never include this file directly. Use <lzma.h> instead. > */ > > /* >@@ -8,8 +9,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -36,7 +35,7 @@ > * > * To prevent API and ABI breakages if new features are needed in > * Stream Header or Stream Footer, a version number is used to >- * indicate which fields in this structure are in use. For now, >+ * indicate which members in this structure are in use. For now, > * version must always be zero. With non-zero version, the > * lzma_stream_header_encode() and lzma_stream_footer_encode() > * will return LZMA_OPTIONS_ERROR. >@@ -67,7 +66,15 @@ > * Footer have been decoded. > */ > lzma_vli backward_size; >+ >+ /** >+ * \brief Minimum value for lzma_stream_flags.backward_size >+ */ > # define LZMA_BACKWARD_SIZE_MIN 4 >+ >+ /** >+ * \brief Maximum value for lzma_stream_flags.backward_size >+ */ > # define LZMA_BACKWARD_SIZE_MAX (LZMA_VLI_C(1) << 34) > > /** >@@ -87,19 +94,47 @@ > * is just two bytes plus Backward Size of four bytes. But it's > * nice to have the proper types when they are needed.) > */ >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum1; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum2; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum3; >+ >+ /** \private Reserved member. */ > lzma_reserved_enum reserved_enum4; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool1; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool2; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool3; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool4; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool5; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool6; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool7; >+ >+ /** \private Reserved member. */ > lzma_bool reserved_bool8; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int1; >+ >+ /** \private Reserved member. */ > uint32_t reserved_int2; > > } lzma_stream_flags; >@@ -111,10 +146,11 @@ > * \param options Stream Header options to be encoded. > * options->backward_size is ignored and doesn't > * need to be initialized. >- * \param out Beginning of the output buffer of >+ * \param[out] out Beginning of the output buffer of > * LZMA_STREAM_HEADER_SIZE bytes. > * >- * \return - LZMA_OK: Encoding was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Encoding was successful. > * - LZMA_OPTIONS_ERROR: options->version is not supported by > * this liblzma version. > * - LZMA_PROG_ERROR: Invalid options. >@@ -128,10 +164,11 @@ > * \brief Encode Stream Footer > * > * \param options Stream Footer options to be encoded. >- * \param out Beginning of the output buffer of >+ * \param[out] out Beginning of the output buffer of > * LZMA_STREAM_HEADER_SIZE bytes. > * >- * \return - LZMA_OK: Encoding was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Encoding was successful. > * - LZMA_OPTIONS_ERROR: options->version is not supported by > * this liblzma version. > * - LZMA_PROG_ERROR: Invalid options. >@@ -144,32 +181,33 @@ > /** > * \brief Decode Stream Header > * >- * \param options Target for the decoded Stream Header options. >- * \param in Beginning of the input buffer of >- * LZMA_STREAM_HEADER_SIZE bytes. >- * > * options->backward_size is always set to LZMA_VLI_UNKNOWN. This is to > * help comparing Stream Flags from Stream Header and Stream Footer with > * lzma_stream_flags_compare(). > * >- * \return - LZMA_OK: Decoding was successful. >- * - LZMA_FORMAT_ERROR: Magic bytes don't match, thus the given >- * buffer cannot be Stream Header. >- * - LZMA_DATA_ERROR: CRC32 doesn't match, thus the header >- * is corrupt. >- * - LZMA_OPTIONS_ERROR: Unsupported options are present >- * in the header. >- * > * \note When decoding .xz files that contain multiple Streams, it may > * make sense to print "file format not recognized" only if >- * decoding of the Stream Header of the _first_ Stream gives >+ * decoding of the Stream Header of the \a first Stream gives > * LZMA_FORMAT_ERROR. If non-first Stream Header gives > * LZMA_FORMAT_ERROR, the message used for LZMA_DATA_ERROR is > * probably more appropriate. >+ * For example, the Stream decoder in liblzma uses >+ * LZMA_DATA_ERROR if LZMA_FORMAT_ERROR is returned by >+ * lzma_stream_header_decode() when decoding non-first Stream. > * >- * For example, Stream decoder in liblzma uses LZMA_DATA_ERROR if >- * LZMA_FORMAT_ERROR is returned by lzma_stream_header_decode() >- * when decoding non-first Stream. >+ * \param[out] options Target for the decoded Stream Header options. >+ * \param in Beginning of the input buffer of >+ * LZMA_STREAM_HEADER_SIZE bytes. >+ * >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Decoding was successful. >+ * - LZMA_FORMAT_ERROR: Magic bytes don't match, thus the given >+ * buffer cannot be Stream Header. >+ * - LZMA_DATA_ERROR: CRC32 doesn't match, thus the header >+ * is corrupt. >+ * - LZMA_OPTIONS_ERROR: Unsupported options are present >+ * in the header. > */ > extern LZMA_API(lzma_ret) lzma_stream_header_decode( > lzma_stream_flags *options, const uint8_t *in) >@@ -179,24 +217,25 @@ > /** > * \brief Decode Stream Footer > * >- * \param options Target for the decoded Stream Header options. >+ * \note If Stream Header was already decoded successfully, but >+ * decoding Stream Footer returns LZMA_FORMAT_ERROR, the >+ * application should probably report some other error message >+ * than "file format not recognized". The file likely >+ * is corrupt (possibly truncated). The Stream decoder in liblzma >+ * uses LZMA_DATA_ERROR in this situation. >+ * >+ * \param[out] options Target for the decoded Stream Footer options. > * \param in Beginning of the input buffer of > * LZMA_STREAM_HEADER_SIZE bytes. > * >- * \return - LZMA_OK: Decoding was successful. >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Decoding was successful. > * - LZMA_FORMAT_ERROR: Magic bytes don't match, thus the given > * buffer cannot be Stream Footer. > * - LZMA_DATA_ERROR: CRC32 doesn't match, thus the Stream Footer > * is corrupt. > * - LZMA_OPTIONS_ERROR: Unsupported options are present > * in Stream Footer. >- * >- * \note If Stream Header was already decoded successfully, but >- * decoding Stream Footer returns LZMA_FORMAT_ERROR, the >- * application should probably report some other error message >- * than "file format not recognized", since the file more likely >- * is corrupt (possibly truncated). Stream decoder in liblzma >- * uses LZMA_DATA_ERROR in this situation. > */ > extern LZMA_API(lzma_ret) lzma_stream_footer_decode( > lzma_stream_flags *options, const uint8_t *in) >@@ -209,7 +248,11 @@ > * backward_size values are compared only if both are not > * LZMA_VLI_UNKNOWN. > * >- * \return - LZMA_OK: Both are equal. If either had backward_size set >+ * \param a Pointer to lzma_stream_flags structure >+ * \param b Pointer to lzma_stream_flags structure >+ * >+ * \return Possible lzma_ret values: >+ * - LZMA_OK: Both are equal. If either had backward_size set > * to LZMA_VLI_UNKNOWN, backward_size values were not > * compared or validated. > * - LZMA_DATA_ERROR: The structures differ. >diff -ur xz-5.2.5/src/liblzma/api/lzma/version.h xz-5.4.3/src/liblzma/api/lzma/version.h >--- xz-5.2.5/src/liblzma/api/lzma/version.h 2020-03-17 17:28:54 >+++ xz-5.4.3/src/liblzma/api/lzma/version.h 2023-05-04 17:22:00 >@@ -1,6 +1,7 @@ > /** > * \file lzma/version.h > * \brief Version number >+ * \note Never include this file directly. Use <lzma.h> instead. > */ > > /* >@@ -8,8 +9,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -17,14 +16,26 @@ > #endif > > >-/* >- * Version number split into components >- */ >+/** \brief Major version number of the liblzma release. */ > #define LZMA_VERSION_MAJOR 5 >-#define LZMA_VERSION_MINOR 2 >-#define LZMA_VERSION_PATCH 5 >+ >+/** \brief Minor version number of the liblzma release. */ >+#define LZMA_VERSION_MINOR 4 >+ >+/** \brief Patch version number of the liblzma release. */ >+#define LZMA_VERSION_PATCH 3 >+ >+/** >+ * \brief Version stability marker >+ * >+ * This will always be one of three values: >+ * - LZMA_VERSION_STABILITY_ALPHA >+ * - LZMA_VERSION_STABILITY_BETA >+ * - LZMA_VERSION_STABILITY_STABLE >+ */ > #define LZMA_VERSION_STABILITY LZMA_VERSION_STABILITY_STABLE > >+/** \brief Commit version number of the liblzma release */ > #ifndef LZMA_VERSION_COMMIT > # define LZMA_VERSION_COMMIT "" > #endif >@@ -101,9 +112,10 @@ > /** > * \brief Run-time version number as an integer > * >- * Return the value of LZMA_VERSION macro at the compile time of liblzma. >- * This allows the application to compare if it was built against the same, >+ * This allows an application to compare if it was built against the same, > * older, or newer version of liblzma that is currently running. >+ * >+ * \return The value of LZMA_VERSION macro at the compile time of liblzma > */ > extern LZMA_API(uint32_t) lzma_version_number(void) > lzma_nothrow lzma_attr_const; >@@ -112,8 +124,10 @@ > /** > * \brief Run-time version as a string > * >- * This function may be useful if you want to display which version of >- * liblzma your application is currently using. >+ * This function may be useful to display which version of liblzma an >+ * application is currently using. >+ * >+ * \return Run-time version of liblzma > */ > extern LZMA_API(const char *) lzma_version_string(void) > lzma_nothrow lzma_attr_const; >diff -ur xz-5.2.5/src/liblzma/api/lzma/vli.h xz-5.4.3/src/liblzma/api/lzma/vli.h >--- xz-5.2.5/src/liblzma/api/lzma/vli.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/api/lzma/vli.h 2023-05-04 17:21:05 >@@ -1,6 +1,7 @@ > /** > * \file lzma/vli.h > * \brief Variable-length integer handling >+ * \note Never include this file directly. Use <lzma.h> instead. > * > * In the .xz format, most integers are encoded in a variable-length > * representation, which is sometimes called little endian base-128 encoding. >@@ -19,8 +20,6 @@ > * > * This file has been put into the public domain. > * You can do whatever you want with this file. >- * >- * See ../lzma.h for information about liblzma as a whole. > */ > > #ifndef LZMA_H_INTERNAL >@@ -70,7 +69,8 @@ > * for example in the uncompressed_size and compressed_size variables. > * > * \return True if the integer is representable as VLI or if it >- * indicates unknown value. >+ * indicates unknown value. False if the integer cannot be >+ * represented as VLI. > */ > #define lzma_vli_is_valid(vli) \ > ((vli) <= LZMA_VLI_MAX || (vli) == LZMA_VLI_UNKNOWN) >@@ -86,12 +86,12 @@ > * integer has been encoded. > * > * \param vli Integer to be encoded >- * \param vli_pos How many VLI-encoded bytes have already been written >+ * \param[out] vli_pos How many VLI-encoded bytes have already been written > * out. When starting to encode a new integer in > * multi-call mode, *vli_pos must be set to zero. > * To use single-call encoding, set vli_pos to NULL. >- * \param out Beginning of the output buffer >- * \param out_pos The next byte will be written to out[*out_pos]. >+ * \param[out] out Beginning of the output buffer >+ * \param[out] out_pos The next byte will be written to out[*out_pos]. > * \param out_size Size of the out buffer; the first byte into > * which no data is written to is out[out_size]. > * >@@ -121,15 +121,15 @@ > * > * Like lzma_vli_encode(), this function has single-call and multi-call modes. > * >- * \param vli Pointer to decoded integer. The decoder will >+ * \param[out] vli Pointer to decoded integer. The decoder will > * initialize it to zero when *vli_pos == 0, so > * application isn't required to initialize *vli. >- * \param vli_pos How many bytes have already been decoded. When >+ * \param[out] vli_pos How many bytes have already been decoded. When > * starting to decode a new integer in multi-call > * mode, *vli_pos must be initialized to zero. To > * use single-call decoding, set vli_pos to NULL. > * \param in Beginning of the input buffer >- * \param in_pos The next byte will be read from in[*in_pos]. >+ * \param[out] in_pos The next byte will be read from in[*in_pos]. > * \param in_size Size of the input buffer; the first byte that > * won't be read is in[in_size]. > * >@@ -158,6 +158,8 @@ > > /** > * \brief Get the number of bytes required to encode a VLI >+ * >+ * \param vli Integer whose encoded size is to be determined > * > * \return Number of bytes on success (1-9). If vli isn't valid, > * zero is returned. >diff -ur xz-5.2.5/src/liblzma/api/lzma.h xz-5.4.3/src/liblzma/api/lzma.h >--- xz-5.2.5/src/liblzma/api/lzma.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/api/lzma.h 2023-05-04 17:21:05 >@@ -1,22 +1,23 @@ > /** > * \file api/lzma.h > * \brief The public API of liblzma data compression library >+ * \mainpage > * > * liblzma is a public domain general-purpose data compression library with > * a zlib-like API. The native file format is .xz, but also the old .lzma > * format and raw (no headers) streams are supported. Multiple compression > * algorithms (filters) are supported. Currently LZMA2 is the primary filter. > * >- * liblzma is part of XZ Utils <http://tukaani.org/xz/>. XZ Utils includes >+ * liblzma is part of XZ Utils <https://tukaani.org/xz/>. XZ Utils includes > * a gzip-like command line tool named xz and some other tools. XZ Utils >- * is developed and maintained by Lasse Collin. >+ * is developed and maintained by Lasse Collin and Jia Tan. > * > * Major parts of liblzma are based on Igor Pavlov's public domain LZMA SDK >- * <http://7-zip.org/sdk.html>. >+ * <https://7-zip.org/sdk.html>. > * > * The SHA-256 implementation is based on the public domain code found from >- * 7-Zip <http://7-zip.org/>, which has a modified version of the public >- * domain SHA-256 code found from Crypto++ <http://www.cryptopp.com/>. >+ * 7-Zip <https://7-zip.org/>, which has a modified version of the public >+ * domain SHA-256 code found from Crypto++ <https://www.cryptopp.com/>. > * The SHA-256 code in Crypto++ was written by Kevin Springle and Wei Dai. > */ > >@@ -219,7 +220,8 @@ > */ > #ifndef lzma_nothrow > # if defined(__cplusplus) >-# if __cplusplus >= 201103L >+# if __cplusplus >= 201103L || (defined(_MSVC_LANG) \ >+ && _MSVC_LANG >= 201103L) > # define lzma_nothrow noexcept > # else > # define lzma_nothrow throw() >diff -ur xz-5.2.5/src/liblzma/check/check.h xz-5.4.3/src/liblzma/check/check.h >--- xz-5.2.5/src/liblzma/check/check.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/check/check.h 2023-05-04 17:21:05 >@@ -108,10 +108,6 @@ > > > /// \brief Initialize *check depending on type >-/// >-/// \return LZMA_OK on success. LZMA_UNSUPPORTED_CHECK if the type is not >-/// supported by the current version or build of liblzma. >-/// LZMA_PROG_ERROR if type > LZMA_CHECK_ID_MAX. > extern void lzma_check_init(lzma_check_state *check, lzma_check type); > > /// Update the check state >diff -ur xz-5.2.5/src/liblzma/check/crc32_small.c xz-5.4.3/src/liblzma/check/crc32_small.c >--- xz-5.2.5/src/liblzma/check/crc32_small.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/check/crc32_small.c 2023-05-04 17:21:05 >@@ -16,6 +16,9 @@ > uint32_t lzma_crc32_table[1][256]; > > >+#ifdef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR >+__attribute__((__constructor__)) >+#endif > static void > crc32_init(void) > { >@@ -37,18 +40,22 @@ > } > > >+#ifndef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR > extern void > lzma_crc32_init(void) > { > mythread_once(crc32_init); > return; > } >+#endif > > > extern LZMA_API(uint32_t) > lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc) > { >+#ifndef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR > lzma_crc32_init(); >+#endif > > crc = ~crc; > >diff -ur xz-5.2.5/src/liblzma/check/crc32_x86.S xz-5.4.3/src/liblzma/check/crc32_x86.S >--- xz-5.2.5/src/liblzma/check/crc32_x86.S 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/check/crc32_x86.S 2023-05-04 17:21:05 >@@ -51,6 +51,14 @@ > * extern uint32_t lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc); > */ > >+/* When Intel CET is enabled, include <cet.h> in assembly code to mark >+ Intel CET support. */ >+#ifdef __CET__ >+# include <cet.h> >+#else >+# define _CET_ENDBR >+#endif >+ > /* > * On some systems, the functions need to be prefixed. The prefix is > * usually an underscore. >@@ -83,6 +91,7 @@ > > ALIGN(4, 16) > LZMA_CRC32: >+ _CET_ENDBR > /* > * Register usage: > * %eax crc >@@ -195,7 +204,7 @@ > > /* > * Read the next four bytes, for which the CRC is calculated >- * on the next interation of the loop. >+ * on the next iteration of the loop. > */ > movl 12(%esi), %ecx > >@@ -296,9 +305,9 @@ > > /* > * This is needed to support non-executable stack. It's ugly to >- * use __linux__ here, but I don't know a way to detect when >+ * use __FreeBSD__ and __linux__ here, but I don't know a way to detect when > * we are using GNU assembler. > */ >-#if defined(__ELF__) && defined(__linux__) >+#if defined(__ELF__) && (defined(__FreeBSD__) || defined(__linux__)) > .section .note.GNU-stack,"",@progbits > #endif >diff -ur xz-5.2.5/src/liblzma/check/crc64_fast.c xz-5.4.3/src/liblzma/check/crc64_fast.c >--- xz-5.2.5/src/liblzma/check/crc64_fast.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/check/crc64_fast.c 2023-05-04 17:21:05 >@@ -3,11 +3,25 @@ > /// \file crc64.c > /// \brief CRC64 calculation > /// >-/// Calculate the CRC64 using the slice-by-four algorithm. This is the same >-/// idea that is used in crc32_fast.c, but for CRC64 we use only four tables >+/// There are two methods in this file. crc64_generic uses the >+/// the slice-by-four algorithm. This is the same idea that is >+/// used in crc32_fast.c, but for CRC64 we use only four tables > /// instead of eight to avoid increasing CPU cache usage. >+/// >+/// crc64_clmul uses 32/64-bit x86 SSSE3, SSE4.1, and CLMUL instructions. >+/// It was derived from >+/// https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf >+/// and the public domain code from https://github.com/rawrunprotected/crc >+/// (URLs were checked on 2022-11-07). >+/// >+/// FIXME: Builds for 32-bit x86 use crc64_x86.S by default instead >+/// of this file and thus CLMUL version isn't available on 32-bit x86 >+/// unless configured with --disable-assembler. Even then the lookup table >+/// isn't omitted in crc64_table.c since it doesn't know that assembly >+/// code has been disabled. > // >-// Author: Lasse Collin >+// Authors: Lasse Collin >+// Ilya Kurdyukov > // > // This file has been put into the public domain. > // You can do whatever you want with this file. >@@ -15,6 +29,54 @@ > /////////////////////////////////////////////////////////////////////////////// > > #include "check.h" >+ >+#undef CRC_GENERIC >+#undef CRC_CLMUL >+#undef CRC_USE_GENERIC_FOR_SMALL_INPUTS >+ >+// If CLMUL cannot be used then only the generic slice-by-four is built. >+#if !defined(HAVE_USABLE_CLMUL) >+# define CRC_GENERIC 1 >+ >+// If CLMUL is allowed unconditionally in the compiler options then the >+// generic version can be omitted. Note that this doesn't work with MSVC >+// as I don't know how to detect the features here. >+// >+// NOTE: Keep this this in sync with crc64_table.c. >+#elif (defined(__SSSE3__) && defined(__SSE4_1__) && defined(__PCLMUL__)) \ >+ || (defined(__e2k__) && __iset__ >= 6) >+# define CRC_CLMUL 1 >+ >+// Otherwise build both and detect at runtime which version to use. >+#else >+# define CRC_GENERIC 1 >+# define CRC_CLMUL 1 >+ >+/* >+ // The generic code is much faster with 1-8-byte inputs and has >+ // similar performance up to 16 bytes at least in microbenchmarks >+ // (it depends on input buffer alignment too). If both versions are >+ // built, this #define will use the generic version for inputs up to >+ // 16 bytes and CLMUL for bigger inputs. It saves a little in code >+ // size since the special cases for 0-16-byte inputs will be omitted >+ // from the CLMUL code. >+# define CRC_USE_GENERIC_FOR_SMALL_INPUTS 1 >+*/ >+ >+# if defined(_MSC_VER) >+# include <intrin.h> >+# elif defined(HAVE_CPUID_H) >+# include <cpuid.h> >+# endif >+#endif >+ >+ >+///////////////////////////////// >+// Generic slice-by-four CRC64 // >+///////////////////////////////// >+ >+#ifdef CRC_GENERIC >+ > #include "crc_macros.h" > > >@@ -26,8 +88,8 @@ > > > // See the comments in crc32_fast.c. They aren't duplicated here. >-extern LZMA_API(uint64_t) >-lzma_crc64(const uint8_t *buf, size_t size, uint64_t crc) >+static uint64_t >+crc64_generic(const uint8_t *buf, size_t size, uint64_t crc) > { > crc = ~crc; > >@@ -46,10 +108,11 @@ > > while (buf < limit) { > #ifdef WORDS_BIGENDIAN >- const uint32_t tmp = (crc >> 32) >+ const uint32_t tmp = (uint32_t)(crc >> 32) > ^ aligned_read32ne(buf); > #else >- const uint32_t tmp = crc ^ aligned_read32ne(buf); >+ const uint32_t tmp = (uint32_t)crc >+ ^ aligned_read32ne(buf); > #endif > buf += 4; > >@@ -69,4 +132,399 @@ > #endif > > return ~crc; >+} >+#endif >+ >+ >+///////////////////// >+// x86 CLMUL CRC64 // >+///////////////////// >+ >+#ifdef CRC_CLMUL >+ >+#include <immintrin.h> >+ >+ >+/* >+// These functions were used to generate the constants >+// at the top of crc64_clmul(). >+static uint64_t >+calc_lo(uint64_t poly) >+{ >+ uint64_t a = poly; >+ uint64_t b = 0; >+ >+ for (unsigned i = 0; i < 64; ++i) { >+ b = (b >> 1) | (a << 63); >+ a = (a >> 1) ^ (a & 1 ? poly : 0); >+ } >+ >+ return b; >+} >+ >+static uint64_t >+calc_hi(uint64_t poly, uint64_t a) >+{ >+ for (unsigned i = 0; i < 64; ++i) >+ a = (a >> 1) ^ (a & 1 ? poly : 0); >+ >+ return a; >+} >+*/ >+ >+ >+#define MASK_L(in, mask, r) \ >+ r = _mm_shuffle_epi8(in, mask) >+ >+#define MASK_H(in, mask, r) \ >+ r = _mm_shuffle_epi8(in, _mm_xor_si128(mask, vsign)) >+ >+#define MASK_LH(in, mask, low, high) \ >+ MASK_L(in, mask, low); \ >+ MASK_H(in, mask, high) >+ >+ >+// MSVC (VS2015 - VS2022) produces bad 32-bit x86 code from the CLMUL CRC >+// code when optimizations are enabled (release build). According to the bug >+// report, the ebx register is corrupted and the calculated result is wrong. >+// Trying to workaround the problem with "__asm mov ebx, ebx" didn't help. >+// The following pragma works and performance is still good. x86-64 builds >+// aren't affected by this problem. >+// >+// NOTE: Another pragma after the function restores the optimizations. >+// If the #if condition here is updated, the other one must be updated too. >+#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__clang__) \ >+ && defined(_M_IX86) >+# pragma optimize("g", off) >+#endif >+ >+// EDG-based compilers (Intel's classic compiler and compiler for E2K) can >+// define __GNUC__ but the attribute must not be used with them. >+// The new Clang-based ICX needs the attribute. >+// >+// NOTE: Build systems check for this too, keep them in sync with this. >+#if (defined(__GNUC__) || defined(__clang__)) && !defined(__EDG__) >+__attribute__((__target__("ssse3,sse4.1,pclmul"))) >+#endif >+static uint64_t >+crc64_clmul(const uint8_t *buf, size_t size, uint64_t crc) >+{ >+ // The prototypes of the intrinsics use signed types while most of >+ // the values are treated as unsigned here. These warnings in this >+ // function have been checked and found to be harmless so silence them. >+#if TUKLIB_GNUC_REQ(4, 6) || defined(__clang__) >+# pragma GCC diagnostic push >+# pragma GCC diagnostic ignored "-Wsign-conversion" >+# pragma GCC diagnostic ignored "-Wconversion" >+#endif >+ >+#ifndef CRC_USE_GENERIC_FOR_SMALL_INPUTS >+ // The code assumes that there is at least one byte of input. >+ if (size == 0) >+ return crc; >+#endif >+ >+ // const uint64_t poly = 0xc96c5795d7870f42; // CRC polynomial >+ const uint64_t p = 0x92d8af2baf0e1e85; // (poly << 1) | 1 >+ const uint64_t mu = 0x9c3e466c172963d5; // (calc_lo(poly) << 1) | 1 >+ const uint64_t k2 = 0xdabe95afc7875f40; // calc_hi(poly, 1) >+ const uint64_t k1 = 0xe05dd497ca393ae4; // calc_hi(poly, k2) >+ const __m128i vfold0 = _mm_set_epi64x(p, mu); >+ const __m128i vfold1 = _mm_set_epi64x(k2, k1); >+ >+ // Create a vector with 8-bit values 0 to 15. This is used to >+ // construct control masks for _mm_blendv_epi8 and _mm_shuffle_epi8. >+ const __m128i vramp = _mm_setr_epi32( >+ 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c); >+ >+ // This is used to inverse the control mask of _mm_shuffle_epi8 >+ // so that bytes that wouldn't be picked with the original mask >+ // will be picked and vice versa. >+ const __m128i vsign = _mm_set1_epi8(0x80); >+ >+ // Memory addresses A to D and the distances between them: >+ // >+ // A B C D >+ // [skip_start][size][skip_end] >+ // [ size2 ] >+ // >+ // A and D are 16-byte aligned. B and C are 1-byte aligned. >+ // skip_start and skip_end are 0-15 bytes. size is at least 1 byte. >+ // >+ // A = aligned_buf will initially point to this address. >+ // B = The address pointed by the caller-supplied buf. >+ // C = buf + size == aligned_buf + size2 >+ // D = buf + size + skip_end == aligned_buf + size2 + skip_end >+ const size_t skip_start = (size_t)((uintptr_t)buf & 15); >+ const size_t skip_end = (size_t)((0U - (uintptr_t)(buf + size)) & 15); >+ const __m128i *aligned_buf = (const __m128i *)( >+ (uintptr_t)buf & ~(uintptr_t)15); >+ >+ // If size2 <= 16 then the whole input fits into a single 16-byte >+ // vector. If size2 > 16 then at least two 16-byte vectors must >+ // be processed. If size2 > 16 && size <= 16 then there is only >+ // one 16-byte vector's worth of input but it is unaligned in memory. >+ // >+ // NOTE: There is no integer overflow here if the arguments are valid. >+ // If this overflowed, buf + size would too. >+ size_t size2 = skip_start + size; >+ >+ // Masks to be used with _mm_blendv_epi8 and _mm_shuffle_epi8: >+ // The first skip_start or skip_end bytes in the vectors will have >+ // the high bit (0x80) set. _mm_blendv_epi8 and _mm_shuffle_epi8 >+ // will produce zeros for these positions. (Bitwise-xor of these >+ // masks with vsign will produce the opposite behavior.) >+ const __m128i mask_start >+ = _mm_sub_epi8(vramp, _mm_set1_epi8(skip_start)); >+ const __m128i mask_end = _mm_sub_epi8(vramp, _mm_set1_epi8(skip_end)); >+ >+ // Get the first 1-16 bytes into data0. If loading less than 16 bytes, >+ // the bytes are loaded to the high bits of the vector and the least >+ // significant positions are filled with zeros. >+ const __m128i data0 = _mm_blendv_epi8(_mm_load_si128(aligned_buf), >+ _mm_setzero_si128(), mask_start); >+ ++aligned_buf; >+ >+#if defined(__i386__) || defined(_M_IX86) >+ const __m128i initial_crc = _mm_set_epi64x(0, ~crc); >+#else >+ // GCC and Clang would produce good code with _mm_set_epi64x >+ // but MSVC needs _mm_cvtsi64_si128 on x86-64. >+ const __m128i initial_crc = _mm_cvtsi64_si128(~crc); >+#endif >+ >+ __m128i v0, v1, v2, v3; >+ >+#ifndef CRC_USE_GENERIC_FOR_SMALL_INPUTS >+ if (size <= 16) { >+ // Right-shift initial_crc by 1-16 bytes based on "size" >+ // and store the result in v1 (high bytes) and v0 (low bytes). >+ // >+ // NOTE: The highest 8 bytes of initial_crc are zeros so >+ // v1 will be filled with zeros if size >= 8. The highest 8 >+ // bytes of v1 will always become zeros. >+ // >+ // [ v1 ][ v0 ] >+ // [ initial_crc ] size == 1 >+ // [ initial_crc ] size == 2 >+ // [ initial_crc ] size == 15 >+ // [ initial_crc ] size == 16 (all in v0) >+ const __m128i mask_low = _mm_add_epi8( >+ vramp, _mm_set1_epi8(size - 16)); >+ MASK_LH(initial_crc, mask_low, v0, v1); >+ >+ if (size2 <= 16) { >+ // There are 1-16 bytes of input and it is all >+ // in data0. Copy the input bytes to v3. If there >+ // are fewer than 16 bytes, the low bytes in v3 >+ // will be filled with zeros. That is, the input >+ // bytes are stored to the same position as >+ // (part of) initial_crc is in v0. >+ MASK_L(data0, mask_end, v3); >+ } else { >+ // There are 2-16 bytes of input but not all bytes >+ // are in data0. >+ const __m128i data1 = _mm_load_si128(aligned_buf); >+ >+ // Collect the 2-16 input bytes from data0 and data1 >+ // to v2 and v3, and bitwise-xor them with the >+ // low bits of initial_crc in v0. Note that the >+ // the second xor is below this else-block as it >+ // is shared with the other branch. >+ MASK_H(data0, mask_end, v2); >+ MASK_L(data1, mask_end, v3); >+ v0 = _mm_xor_si128(v0, v2); >+ } >+ >+ v0 = _mm_xor_si128(v0, v3); >+ v1 = _mm_alignr_epi8(v1, v0, 8); >+ } else >+#endif >+ { >+ const __m128i data1 = _mm_load_si128(aligned_buf); >+ MASK_LH(initial_crc, mask_start, v0, v1); >+ v0 = _mm_xor_si128(v0, data0); >+ v1 = _mm_xor_si128(v1, data1); >+ >+#define FOLD \ >+ v1 = _mm_xor_si128(v1, _mm_clmulepi64_si128(v0, vfold1, 0x00)); \ >+ v0 = _mm_xor_si128(v1, _mm_clmulepi64_si128(v0, vfold1, 0x11)); >+ >+ while (size2 > 32) { >+ ++aligned_buf; >+ size2 -= 16; >+ FOLD >+ v1 = _mm_load_si128(aligned_buf); >+ } >+ >+ if (size2 < 32) { >+ MASK_H(v0, mask_end, v2); >+ MASK_L(v0, mask_end, v0); >+ MASK_L(v1, mask_end, v3); >+ v1 = _mm_or_si128(v2, v3); >+ } >+ >+ FOLD >+ v1 = _mm_srli_si128(v0, 8); >+#undef FOLD >+ } >+ >+ v1 = _mm_xor_si128(_mm_clmulepi64_si128(v0, vfold1, 0x10), v1); >+ v0 = _mm_clmulepi64_si128(v1, vfold0, 0x00); >+ v2 = _mm_clmulepi64_si128(v0, vfold0, 0x10); >+ v0 = _mm_xor_si128(_mm_xor_si128(v2, _mm_slli_si128(v0, 8)), v1); >+ >+#if defined(__i386__) || defined(_M_IX86) >+ return ~(((uint64_t)(uint32_t)_mm_extract_epi32(v0, 3) << 32) | >+ (uint64_t)(uint32_t)_mm_extract_epi32(v0, 2)); >+#else >+ return ~(uint64_t)_mm_extract_epi64(v0, 1); >+#endif >+ >+#if TUKLIB_GNUC_REQ(4, 6) || defined(__clang__) >+# pragma GCC diagnostic pop >+#endif >+} >+#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__clang__) \ >+ && defined(_M_IX86) >+# pragma optimize("", on) >+#endif >+#endif >+ >+ >+//////////////////////// >+// Detect CPU support // >+//////////////////////// >+ >+#if defined(CRC_GENERIC) && defined(CRC_CLMUL) >+static inline bool >+is_clmul_supported(void) >+{ >+ int success = 1; >+ uint32_t r[4]; // eax, ebx, ecx, edx >+ >+#if defined(_MSC_VER) >+ // This needs <intrin.h> with MSVC. ICC has it as a built-in >+ // on all platforms. >+ __cpuid(r, 1); >+#elif defined(HAVE_CPUID_H) >+ // Compared to just using __asm__ to run CPUID, this also checks >+ // that CPUID is supported and saves and restores ebx as that is >+ // needed with GCC < 5 with position-independent code (PIC). >+ success = __get_cpuid(1, &r[0], &r[1], &r[2], &r[3]); >+#else >+ // Just a fallback that shouldn't be needed. >+ __asm__("cpuid\n\t" >+ : "=a"(r[0]), "=b"(r[1]), "=c"(r[2]), "=d"(r[3]) >+ : "a"(1), "c"(0)); >+#endif >+ >+ // Returns true if these are supported: >+ // CLMUL (bit 1 in ecx) >+ // SSSE3 (bit 9 in ecx) >+ // SSE4.1 (bit 19 in ecx) >+ const uint32_t ecx_mask = (1 << 1) | (1 << 9) | (1 << 19); >+ return success && (r[2] & ecx_mask) == ecx_mask; >+ >+ // Alternative methods that weren't used: >+ // - ICC's _may_i_use_cpu_feature: the other methods should work too. >+ // - GCC >= 6 / Clang / ICX __builtin_cpu_supports("pclmul") >+ // >+ // CPUID decding is needed with MSVC anyway and older GCC. This keeps >+ // the feature checks in the build system simpler too. The nice thing >+ // about __builtin_cpu_supports would be that it generates very short >+ // code as is it only reads a variable set at startup but a few bytes >+ // doesn't matter here. >+} >+ >+ >+#ifdef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR >+# define CRC64_FUNC_INIT >+# define CRC64_SET_FUNC_ATTR __attribute__((__constructor__)) >+#else >+# define CRC64_FUNC_INIT = &crc64_dispatch >+# define CRC64_SET_FUNC_ATTR >+static uint64_t crc64_dispatch(const uint8_t *buf, size_t size, uint64_t crc); >+#endif >+ >+ >+// Pointer to the the selected CRC64 method. >+static uint64_t (*crc64_func)(const uint8_t *buf, size_t size, uint64_t crc) >+ CRC64_FUNC_INIT; >+ >+ >+CRC64_SET_FUNC_ATTR >+static void >+crc64_set_func(void) >+{ >+ crc64_func = is_clmul_supported() ? &crc64_clmul : &crc64_generic; >+ return; >+} >+ >+ >+#ifndef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR >+static uint64_t >+crc64_dispatch(const uint8_t *buf, size_t size, uint64_t crc) >+{ >+ // When __attribute__((__constructor__)) isn't supported, set the >+ // function pointer without any locking. If multiple threads run >+ // the detection code in parallel, they will all end up setting >+ // the pointer to the same value. This avoids the use of >+ // mythread_once() on every call to lzma_crc64() but this likely >+ // isn't strictly standards compliant. Let's change it if it breaks. >+ crc64_set_func(); >+ return crc64_func(buf, size, crc); >+} >+#endif >+#endif >+ >+ >+extern LZMA_API(uint64_t) >+lzma_crc64(const uint8_t *buf, size_t size, uint64_t crc) >+{ >+#if defined(CRC_GENERIC) && defined(CRC_CLMUL) >+ // If CLMUL is available, it is the best for non-tiny inputs, >+ // being over twice as fast as the generic slice-by-four version. >+ // However, for size <= 16 it's different. In the extreme case >+ // of size == 1 the generic version can be five times faster. >+ // At size >= 8 the CLMUL starts to become reasonable. It >+ // varies depending on the alignment of buf too. >+ // >+ // The above doesn't include the overhead of mythread_once(). >+ // At least on x86-64 GNU/Linux, pthread_once() is very fast but >+ // it still makes lzma_crc64(buf, 1, crc) 50-100 % slower. When >+ // size reaches 12-16 bytes the overhead becomes negligible. >+ // >+ // So using the generic version for size <= 16 may give better >+ // performance with tiny inputs but if such inputs happen rarely >+ // it's not so obvious because then the lookup table of the >+ // generic version may not be in the processor cache. >+#ifdef CRC_USE_GENERIC_FOR_SMALL_INPUTS >+ if (size <= 16) >+ return crc64_generic(buf, size, crc); >+#endif >+ >+/* >+#ifndef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR >+ // See crc64_dispatch(). This would be the alternative which uses >+ // locking and doesn't use crc64_dispatch(). Note that on Windows >+ // this method needs Vista threads. >+ mythread_once(crc64_set_func); >+#endif >+*/ >+ >+ return crc64_func(buf, size, crc); >+ >+#elif defined(CRC_CLMUL) >+ // If CLMUL is used unconditionally without runtime CPU detection >+ // then omitting the generic version and its 8 KiB lookup table >+ // makes the library smaller. >+ // >+ // FIXME: Lookup table isn't currently omitted on 32-bit x86, >+ // see crc64_table.c. >+ return crc64_clmul(buf, size, crc); >+ >+#else >+ return crc64_generic(buf, size, crc); >+#endif > } >diff -ur xz-5.2.5/src/liblzma/check/crc64_small.c xz-5.4.3/src/liblzma/check/crc64_small.c >--- xz-5.2.5/src/liblzma/check/crc64_small.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/check/crc64_small.c 2023-05-04 17:21:05 >@@ -16,6 +16,9 @@ > static uint64_t crc64_table[256]; > > >+#ifdef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR >+__attribute__((__constructor__)) >+#endif > static void > crc64_init(void) > { >@@ -40,7 +43,9 @@ > extern LZMA_API(uint64_t) > lzma_crc64(const uint8_t *buf, size_t size, uint64_t crc) > { >+#ifndef HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR > mythread_once(crc64_init); >+#endif > > crc = ~crc; > >diff -ur xz-5.2.5/src/liblzma/check/crc64_table.c xz-5.4.3/src/liblzma/check/crc64_table.c >--- xz-5.2.5/src/liblzma/check/crc64_table.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/check/crc64_table.c 2023-05-04 17:21:05 >@@ -12,11 +12,24 @@ > > #include "common.h" > >+ >+// FIXME: Compared to crc64_fast.c this has to check for __x86_64__ too >+// so that in 32-bit builds crc64_x86.S won't break due to a missing table. >+#if (defined(__x86_64__) && defined(__SSSE3__) \ >+ && defined(__SSE4_1__) && defined(__PCLMUL__)) \ >+ || (defined(__e2k__) && __iset__ >= 6) >+// No table needed but something has to be exported to keep some toolchains >+// happy. Also use a declaration to silence compiler warnings. >+extern const char lzma_crc64_dummy; >+const char lzma_crc64_dummy; >+ >+#else > // Having the declaration here silences clang -Wmissing-variable-declarations. > extern const uint64_t lzma_crc64_table[4][256]; > >-#ifdef WORDS_BIGENDIAN >-# include "crc64_table_be.h" >-#else >-# include "crc64_table_le.h" >+# if defined(WORDS_BIGENDIAN) >+# include "crc64_table_be.h" >+# else >+# include "crc64_table_le.h" >+# endif > #endif >diff -ur xz-5.2.5/src/liblzma/check/crc64_x86.S xz-5.4.3/src/liblzma/check/crc64_x86.S >--- xz-5.2.5/src/liblzma/check/crc64_x86.S 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/check/crc64_x86.S 2023-05-04 17:21:05 >@@ -41,6 +41,14 @@ > * extern uint64_t lzma_crc64(const uint8_t *buf, size_t size, uint64_t crc); > */ > >+/* When Intel CET is enabled, include <cet.h> in assembly code to mark >+ Intel CET support. */ >+#ifdef __CET__ >+# include <cet.h> >+#else >+# define _CET_ENDBR >+#endif >+ > /* > * On some systems, the functions need to be prefixed. The prefix is > * usually an underscore. >@@ -73,6 +81,7 @@ > > ALIGN(4, 16) > LZMA_CRC64: >+ _CET_ENDBR > /* > * Register usage: > * %eax crc LSB >@@ -279,9 +288,9 @@ > > /* > * This is needed to support non-executable stack. It's ugly to >- * use __linux__ here, but I don't know a way to detect when >+ * use __FreeBSD__ and __linux__ here, but I don't know a way to detect when > * we are using GNU assembler. > */ >-#if defined(__ELF__) && defined(__linux__) >+#if defined(__ELF__) && (defined(__FreeBSD__) || defined(__linux__)) > .section .note.GNU-stack,"",@progbits > #endif >diff -ur xz-5.2.5/src/liblzma/check/sha256.c xz-5.4.3/src/liblzma/check/sha256.c >--- xz-5.2.5/src/liblzma/check/sha256.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/check/sha256.c 2023-05-04 17:21:05 >@@ -8,7 +8,7 @@ > /// conditionally to keep the code working on older boxes. > // > // This code is based on the code found from 7-Zip, which has a modified >-// version of the SHA-256 found from Crypto++ <http://www.cryptopp.com/>. >+// version of the SHA-256 found from Crypto++ <https://www.cryptopp.com/>. > // The code was modified a little to fit into liblzma. > // > // Authors: Kevin Springle >diff -ur xz-5.2.5/src/liblzma/common/Makefile.inc xz-5.4.3/src/liblzma/common/Makefile.inc >--- xz-5.2.5/src/liblzma/common/Makefile.inc 2020-03-17 17:28:54 >+++ xz-5.4.3/src/liblzma/common/Makefile.inc 2023-05-04 17:21:05 >@@ -19,10 +19,14 @@ > common/index.h \ > common/stream_flags_common.c \ > common/stream_flags_common.h \ >+ common/string_conversion.c \ > common/vli_size.c > > if COND_THREADS >-liblzma_la_SOURCES += common/hardware_cputhreads.c >+liblzma_la_SOURCES += \ >+ common/hardware_cputhreads.c \ >+ common/outqueue.c \ >+ common/outqueue.h > endif > > if COND_MAIN_ENCODER >@@ -49,11 +53,14 @@ > > if COND_THREADS > liblzma_la_SOURCES += \ >- common/outqueue.c \ >- common/outqueue.h \ > common/stream_encoder_mt.c > endif >+ >+if COND_MICROLZMA >+liblzma_la_SOURCES += \ >+ common/microlzma_encoder.c > endif >+endif > > if COND_MAIN_DECODER > liblzma_la_SOURCES += \ >@@ -65,15 +72,33 @@ > common/block_decoder.h \ > common/block_header_decoder.c \ > common/easy_decoder_memusage.c \ >+ common/file_info.c \ > common/filter_buffer_decoder.c \ > common/filter_decoder.c \ > common/filter_decoder.h \ > common/filter_flags_decoder.c \ > common/index_decoder.c \ >+ common/index_decoder.h \ > common/index_hash.c \ > common/stream_buffer_decoder.c \ > common/stream_decoder.c \ > common/stream_decoder.h \ > common/stream_flags_decoder.c \ > common/vli_decoder.c >+ >+if COND_THREADS >+liblzma_la_SOURCES += \ >+ common/stream_decoder_mt.c >+endif >+ >+if COND_MICROLZMA >+liblzma_la_SOURCES += \ >+ common/microlzma_decoder.c >+endif >+ >+if COND_LZIP_DECODER >+liblzma_la_SOURCES += \ >+ common/lzip_decoder.c \ >+ common/lzip_decoder.h >+endif > endif >diff -ur xz-5.2.5/src/liblzma/common/alone_decoder.c xz-5.4.3/src/liblzma/common/alone_decoder.c >--- xz-5.2.5/src/liblzma/common/alone_decoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/alone_decoder.c 2023-05-04 17:21:05 >@@ -110,12 +110,24 @@ > // Another hack to ditch false positives: Assume that > // if the uncompressed size is known, it must be less > // than 256 GiB. >+ // >+ // FIXME? Without picky we allow > LZMA_VLI_MAX which doesn't >+ // really matter in this specific situation (> LZMA_VLI_MAX is >+ // safe in the LZMA decoder) but it's somewhat weird still. > if (coder->picky > && coder->uncompressed_size != LZMA_VLI_UNKNOWN > && coder->uncompressed_size > >= (LZMA_VLI_C(1) << 38)) > return LZMA_FORMAT_ERROR; > >+ // Use LZMA_FILTER_LZMA1EXT features to specify the >+ // uncompressed size and that the end marker is allowed >+ // even when the uncompressed size is known. Both .lzma >+ // header and LZMA1EXT use UINT64_MAX indicate that size >+ // is unknown. >+ coder->options.ext_flags = LZMA_LZMA1EXT_ALLOW_EOPM; >+ lzma_set_ext_size(coder->options, coder->uncompressed_size); >+ > // Calculate the memory usage so that it is ready > // for SEQ_CODER_INIT. > coder->memusage = lzma_lzma_decoder_memusage(&coder->options) >@@ -132,6 +144,7 @@ > > lzma_filter_info filters[2] = { > { >+ .id = LZMA_FILTER_LZMA1EXT, > .init = &lzma_lzma_decoder_init, > .options = &coder->options, > }, { >@@ -139,14 +152,8 @@ > } > }; > >- const lzma_ret ret = lzma_next_filter_init(&coder->next, >- allocator, filters); >- if (ret != LZMA_OK) >- return ret; >- >- // Use a hack to set the uncompressed size. >- lzma_lz_decoder_uncompressed(coder->next.coder, >- coder->uncompressed_size); >+ return_if_error(lzma_next_filter_init(&coder->next, >+ allocator, filters)); > > coder->sequence = SEQ_CODE; > break; >diff -ur xz-5.2.5/src/liblzma/common/alone_encoder.c xz-5.4.3/src/liblzma/common/alone_encoder.c >--- xz-5.2.5/src/liblzma/common/alone_encoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/alone_encoder.c 2023-05-04 17:21:05 >@@ -75,7 +75,6 @@ > } > > >-// At least for now, this is not used by any internal function. > static lzma_ret > alone_encoder_init(lzma_next_coder *next, const lzma_allocator *allocator, > const lzma_options_lzma *options) >@@ -129,6 +128,7 @@ > // Initialize the LZMA encoder. > const lzma_filter_info filters[2] = { > { >+ .id = LZMA_FILTER_LZMA1, > .init = &lzma_lzma_encoder_init, > .options = (void *)(options), > }, { >@@ -138,16 +138,6 @@ > > return lzma_next_filter_init(&coder->next, allocator, filters); > } >- >- >-/* >-extern lzma_ret >-lzma_alone_encoder_init(lzma_next_coder *next, const lzma_allocator *allocator, >- const lzma_options_alone *options) >-{ >- lzma_next_coder_init(&alone_encoder_init, next, allocator, options); >-} >-*/ > > > extern LZMA_API(lzma_ret) >diff -ur xz-5.2.5/src/liblzma/common/auto_decoder.c xz-5.4.3/src/liblzma/common/auto_decoder.c >--- xz-5.2.5/src/liblzma/common/auto_decoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/auto_decoder.c 2023-05-04 17:21:05 >@@ -1,7 +1,7 @@ > /////////////////////////////////////////////////////////////////////////////// > // > /// \file auto_decoder.c >-/// \brief Autodetect between .xz Stream and .lzma (LZMA_Alone) formats >+/// \brief Autodetect between .xz, .lzma (LZMA_Alone), and .lz (lzip) > // > // Author: Lasse Collin > // >@@ -12,10 +12,13 @@ > > #include "stream_decoder.h" > #include "alone_decoder.h" >+#ifdef HAVE_LZIP_DECODER >+# include "lzip_decoder.h" >+#endif > > > typedef struct { >- /// Stream decoder or LZMA_Alone decoder >+ /// .xz Stream decoder, LZMA_Alone decoder, or lzip decoder > lzma_next_coder next; > > uint64_t memlimit; >@@ -46,14 +49,22 @@ > // SEQ_CODE even if we return some LZMA_*_CHECK. > coder->sequence = SEQ_CODE; > >- // Detect the file format. For now this is simple, since if >- // it doesn't start with 0xFD (the first magic byte of the >- // new format), it has to be LZMA_Alone, or something that >- // we don't support at all. >+ // Detect the file format. .xz files start with 0xFD which >+ // cannot be the first byte of .lzma (LZMA_Alone) format. >+ // The .lz format starts with 0x4C which could be the >+ // first byte of a .lzma file but luckily it would mean >+ // lc/lp/pb being 4/3/1 which liblzma doesn't support because >+ // lc + lp > 4. So using just 0x4C to detect .lz is OK here. > if (in[*in_pos] == 0xFD) { > return_if_error(lzma_stream_decoder_init( > &coder->next, allocator, > coder->memlimit, coder->flags)); >+#ifdef HAVE_LZIP_DECODER >+ } else if (in[*in_pos] == 0x4C) { >+ return_if_error(lzma_lzip_decoder_init( >+ &coder->next, allocator, >+ coder->memlimit, coder->flags)); >+#endif > } else { > return_if_error(lzma_alone_decoder_init(&coder->next, > allocator, coder->memlimit, true)); >@@ -86,8 +97,8 @@ > // Fall through > > case SEQ_FINISH: >- // When LZMA_DECODE_CONCATENATED was used and we were decoding >- // LZMA_Alone file, we need to check check that there is no >+ // When LZMA_CONCATENATED was used and we were decoding >+ // a LZMA_Alone file, we need to check that there is no > // trailing garbage and wait for LZMA_FINISH. > if (*in_pos < in_size) > return LZMA_DATA_ERROR; >diff -ur xz-5.2.5/src/liblzma/common/block_buffer_encoder.c xz-5.4.3/src/liblzma/common/block_buffer_encoder.c >--- xz-5.2.5/src/liblzma/common/block_buffer_encoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/block_buffer_encoder.c 2023-05-04 17:21:05 >@@ -325,6 +325,24 @@ > } > > >+#ifdef HAVE_SYMBOL_VERSIONS_LINUX >+// This is for compatibility with binaries linked against liblzma that >+// has been patched with xz-5.2.2-compat-libs.patch from RHEL/CentOS 7. >+LZMA_SYMVER_API("lzma_block_uncomp_encode@XZ_5.2.2", >+ lzma_ret, lzma_block_uncomp_encode_522)(lzma_block *block, >+ const uint8_t *in, size_t in_size, >+ uint8_t *out, size_t *out_pos, size_t out_size) >+ lzma_nothrow lzma_attr_warn_unused_result >+ __attribute__((__alias__("lzma_block_uncomp_encode_52"))); >+ >+LZMA_SYMVER_API("lzma_block_uncomp_encode@@XZ_5.2", >+ lzma_ret, lzma_block_uncomp_encode_52)(lzma_block *block, >+ const uint8_t *in, size_t in_size, >+ uint8_t *out, size_t *out_pos, size_t out_size) >+ lzma_nothrow lzma_attr_warn_unused_result; >+ >+#define lzma_block_uncomp_encode lzma_block_uncomp_encode_52 >+#endif > extern LZMA_API(lzma_ret) > lzma_block_uncomp_encode(lzma_block *block, > const uint8_t *in, size_t in_size, >diff -ur xz-5.2.5/src/liblzma/common/block_decoder.c xz-5.4.3/src/liblzma/common/block_decoder.c >--- xz-5.2.5/src/liblzma/common/block_decoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/block_decoder.c 2023-05-04 17:21:05 >@@ -40,6 +40,9 @@ > /// is unknown. > lzma_vli compressed_limit; > >+ /// Maximum allowed Uncompressed Size. >+ lzma_vli uncompressed_limit; >+ > /// Position when reading the Check field > size_t check_pos; > >@@ -52,21 +55,6 @@ > > > static inline bool >-update_size(lzma_vli *size, lzma_vli add, lzma_vli limit) >-{ >- if (limit > LZMA_VLI_MAX) >- limit = LZMA_VLI_MAX; >- >- if (limit < *size || limit - *size < add) >- return true; >- >- *size += add; >- >- return false; >-} >- >- >-static inline bool > is_size_valid(lzma_vli size, lzma_vli reference) > { > return reference == LZMA_VLI_UNKNOWN || reference == size; >@@ -86,23 +74,59 @@ > const size_t in_start = *in_pos; > const size_t out_start = *out_pos; > >+ // Limit the amount of input and output space that we give >+ // to the raw decoder based on the information we have >+ // (or don't have) from Block Header. >+ const size_t in_stop = *in_pos + (size_t)my_min( >+ in_size - *in_pos, >+ coder->compressed_limit - coder->compressed_size); >+ const size_t out_stop = *out_pos + (size_t)my_min( >+ out_size - *out_pos, >+ coder->uncompressed_limit - coder->uncompressed_size); >+ > const lzma_ret ret = coder->next.code(coder->next.coder, >- allocator, in, in_pos, in_size, >- out, out_pos, out_size, action); >+ allocator, in, in_pos, in_stop, >+ out, out_pos, out_stop, action); > > const size_t in_used = *in_pos - in_start; > const size_t out_used = *out_pos - out_start; > >- // NOTE: We compare to compressed_limit here, which prevents >- // the total size of the Block growing past LZMA_VLI_MAX. >- if (update_size(&coder->compressed_size, in_used, >- coder->compressed_limit) >- || update_size(&coder->uncompressed_size, >- out_used, >- coder->block->uncompressed_size)) >- return LZMA_DATA_ERROR; >+ // Because we have limited the input and output sizes, >+ // we know that these cannot grow too big or overflow. >+ coder->compressed_size += in_used; >+ coder->uncompressed_size += out_used; > >- if (!coder->ignore_check) >+ if (ret == LZMA_OK) { >+ const bool comp_done = coder->compressed_size >+ == coder->block->compressed_size; >+ const bool uncomp_done = coder->uncompressed_size >+ == coder->block->uncompressed_size; >+ >+ // If both input and output amounts match the sizes >+ // in Block Header but we still got LZMA_OK instead >+ // of LZMA_STREAM_END, the file is broken. >+ if (comp_done && uncomp_done) >+ return LZMA_DATA_ERROR; >+ >+ // If the decoder has consumed all the input that it >+ // needs but it still couldn't fill the output buffer >+ // or return LZMA_STREAM_END, the file is broken. >+ if (comp_done && *out_pos < out_size) >+ return LZMA_DATA_ERROR; >+ >+ // If the decoder has produced all the output but >+ // it still didn't return LZMA_STREAM_END or consume >+ // more input (for example, detecting an end of >+ // payload marker may need more input but produce >+ // no output) the file is broken. >+ if (uncomp_done && *in_pos < in_size) >+ return LZMA_DATA_ERROR; >+ } >+ >+ // Don't waste time updating the integrity check if it will be >+ // ignored. Also skip it if no new output was produced. This >+ // avoids null pointer + 0 (undefined behavior) when out == 0. >+ if (!coder->ignore_check && out_used > 0) > lzma_check_update(&coder->check, coder->block->check, > out + out_start, out_used); > >@@ -229,6 +253,14 @@ > - block->header_size > - lzma_check_size(block->check) > : block->compressed_size; >+ >+ // With Uncompressed Size this is simpler. If Block Header lacks >+ // the size info, then LZMA_VLI_MAX is the maximum possible >+ // Uncompressed Size. >+ coder->uncompressed_limit >+ = block->uncompressed_size == LZMA_VLI_UNKNOWN >+ ? LZMA_VLI_MAX >+ : block->uncompressed_size; > > // Initialize the check. It's caller's problem if the Check ID is not > // supported, and the Block decoder cannot verify the Check field. >diff -ur xz-5.2.5/src/liblzma/common/block_encoder.c xz-5.4.3/src/liblzma/common/block_encoder.c >--- xz-5.2.5/src/liblzma/common/block_encoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/block_encoder.c 2023-05-04 17:21:05 >@@ -77,8 +77,11 @@ > // checked it at the beginning of this function. > coder->uncompressed_size += in_used; > >- lzma_check_update(&coder->check, coder->block->check, >- in + in_start, in_used); >+ // Call lzma_check_update() only if input was consumed. This >+ // avoids null pointer + 0 (undefined behavior) when in == 0. >+ if (in_used > 0) >+ lzma_check_update(&coder->check, coder->block->check, >+ in + in_start, in_used); > > if (ret != LZMA_STREAM_END || action == LZMA_SYNC_FLUSH) > return ret; >@@ -217,6 +220,7 @@ > lzma_next_strm_init(lzma_block_encoder_init, strm, block); > > strm->internal->supported_actions[LZMA_RUN] = true; >+ strm->internal->supported_actions[LZMA_SYNC_FLUSH] = true; > strm->internal->supported_actions[LZMA_FINISH] = true; > > return LZMA_OK; >diff -ur xz-5.2.5/src/liblzma/common/block_header_decoder.c xz-5.4.3/src/liblzma/common/block_header_decoder.c >--- xz-5.2.5/src/liblzma/common/block_header_decoder.c 2020-03-17 17:28:54 >+++ xz-5.4.3/src/liblzma/common/block_header_decoder.c 2023-05-04 17:21:05 >@@ -14,22 +14,6 @@ > #include "check.h" > > >-static void >-free_properties(lzma_block *block, const lzma_allocator *allocator) >-{ >- // Free allocated filter options. The last array member is not >- // touched after the initialization in the beginning of >- // lzma_block_header_decode(), so we don't need to touch that here. >- for (size_t i = 0; i < LZMA_FILTERS_MAX; ++i) { >- lzma_free(block->filters[i].options, allocator); >- block->filters[i].id = LZMA_VLI_UNKNOWN; >- block->filters[i].options = NULL; >- } >- >- return; >-} >- >- > extern LZMA_API(lzma_ret) > lzma_block_header_decode(lzma_block *block, > const lzma_allocator *allocator, const uint8_t *in) >@@ -39,6 +23,10 @@ > // are invalid or over 63 bits, or if the header is too small > // to contain the claimed information. > >+ // Catch unexpected NULL pointers. >+ if (block == NULL || block->filters == NULL || in == NULL) >+ return LZMA_PROG_ERROR; >+ > // Initialize the filter options array. This way the caller can > // safely free() the options even if an error occurs in this function. > for (size_t i = 0; i <= LZMA_FILTERS_MAX; ++i) { >@@ -67,8 +55,11 @@ > const size_t in_size = block->header_size - 4; > > // Verify CRC32 >- if (lzma_crc32(in, in_size, 0) != read32le(in + in_size)) >+ if (lzma_crc32(in, in_size, 0) != read32le(in + in_size)) { >+#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION > return LZMA_DATA_ERROR; >+#endif >+ } > > // Check for unsupported flags. > if (in[1] & 0x3C) >@@ -104,7 +95,7 @@ > &block->filters[i], allocator, > in, &in_pos, in_size); > if (ret != LZMA_OK) { >- free_properties(block, allocator); >+ lzma_filters_free(block->filters, allocator); > return ret; > } > } >@@ -112,7 +103,7 @@ > // Padding > while (in_pos < in_size) { > if (in[in_pos++] != 0x00) { >- free_properties(block, allocator); >+ lzma_filters_free(block->filters, allocator); > > // Possibly some new field present so use > // LZMA_OPTIONS_ERROR instead of LZMA_DATA_ERROR. >diff -ur xz-5.2.5/src/liblzma/common/common.c xz-5.4.3/src/liblzma/common/common.c >--- xz-5.2.5/src/liblzma/common/common.c 2020-03-17 17:28:54 >+++ xz-5.4.3/src/liblzma/common/common.c 2023-05-04 17:21:05 >@@ -211,7 +211,6 @@ > || strm->reserved_ptr2 != NULL > || strm->reserved_ptr3 != NULL > || strm->reserved_ptr4 != NULL >- || strm->reserved_int1 != 0 > || strm->reserved_int2 != 0 > || strm->reserved_int3 != 0 > || strm->reserved_int4 != 0 >@@ -289,19 +288,25 @@ > strm->next_in, &in_pos, strm->avail_in, > strm->next_out, &out_pos, strm->avail_out, action); > >- strm->next_in += in_pos; >- strm->avail_in -= in_pos; >- strm->total_in += in_pos; >+ // Updating next_in and next_out has to be skipped when they are NULL >+ // to avoid null pointer + 0 (undefined behavior). Do this by checking >+ // in_pos > 0 and out_pos > 0 because this way NULL + non-zero (a bug) >+ // will get caught one way or other. >+ if (in_pos > 0) { >+ strm->next_in += in_pos; >+ strm->avail_in -= in_pos; >+ strm->total_in += in_pos; >+ } > >- strm->next_out += out_pos; >- strm->avail_out -= out_pos; >- strm->total_out += out_pos; >+ if (out_pos > 0) { >+ strm->next_out += out_pos; >+ strm->avail_out -= out_pos; >+ strm->total_out += out_pos; >+ } > > strm->internal->avail_in = strm->avail_in; > >- // Cast is needed to silence a warning about LZMA_TIMED_OUT, which >- // isn't part of lzma_ret enumeration. >- switch ((unsigned int)(ret)) { >+ switch (ret) { > case LZMA_OK: > // Don't return LZMA_BUF_ERROR when it happens the first time. > // This is to avoid returning LZMA_BUF_ERROR when avail_out >@@ -322,6 +327,17 @@ > ret = LZMA_OK; > break; > >+ case LZMA_SEEK_NEEDED: >+ strm->internal->allow_buf_error = false; >+ >+ // If LZMA_FINISH was used, reset it back to the >+ // LZMA_RUN-based state so that new input can be supplied >+ // by the application. >+ if (strm->internal->sequence == ISEQ_FINISH) >+ strm->internal->sequence = ISEQ_RUN; >+ >+ break; >+ > case LZMA_STREAM_END: > if (strm->internal->sequence == ISEQ_SYNC_FLUSH > || strm->internal->sequence == ISEQ_FULL_FLUSH >@@ -366,6 +382,20 @@ > } > > >+#ifdef HAVE_SYMBOL_VERSIONS_LINUX >+// This is for compatibility with binaries linked against liblzma that >+// has been patched with xz-5.2.2-compat-libs.patch from RHEL/CentOS 7. >+LZMA_SYMVER_API("lzma_get_progress@XZ_5.2.2", >+ void, lzma_get_progress_522)(lzma_stream *strm, >+ uint64_t *progress_in, uint64_t *progress_out) lzma_nothrow >+ __attribute__((__alias__("lzma_get_progress_52"))); >+ >+LZMA_SYMVER_API("lzma_get_progress@@XZ_5.2", >+ void, lzma_get_progress_52)(lzma_stream *strm, >+ uint64_t *progress_in, uint64_t *progress_out) lzma_nothrow; >+ >+#define lzma_get_progress lzma_get_progress_52 >+#endif > extern LZMA_API(void) > lzma_get_progress(lzma_stream *strm, > uint64_t *progress_in, uint64_t *progress_out) >diff -ur xz-5.2.5/src/liblzma/common/common.h xz-5.4.3/src/liblzma/common/common.h >--- xz-5.2.5/src/liblzma/common/common.h 2020-03-17 17:28:54 >+++ xz-5.4.3/src/liblzma/common/common.h 2023-05-04 17:21:05 >@@ -34,6 +34,59 @@ > > #include "lzma.h" > >+// This is for detecting modern GCC and Clang attributes >+// like __symver__ in GCC >= 10. >+#ifdef __has_attribute >+# define lzma_has_attribute(attr) __has_attribute(attr) >+#else >+# define lzma_has_attribute(attr) 0 >+#endif >+ >+// The extra symbol versioning in the C files may only be used when >+// building a shared library. If HAVE_SYMBOL_VERSIONS_LINUX is defined >+// to 2 then symbol versioning is done only if also PIC is defined. >+// By default Libtool defines PIC when building a shared library and >+// doesn't define it when building a static library but it can be >+// overriden with --with-pic and --without-pic. configure let's rely >+// on PIC if neither --with-pic or --without-pic was used. >+#if defined(HAVE_SYMBOL_VERSIONS_LINUX) \ >+ && (HAVE_SYMBOL_VERSIONS_LINUX == 2 && !defined(PIC)) >+# undef HAVE_SYMBOL_VERSIONS_LINUX >+#endif >+ >+#ifdef HAVE_SYMBOL_VERSIONS_LINUX >+// To keep link-time optimization (LTO, -flto) working with GCC, >+// the __symver__ attribute must be used instead of __asm__(".symver ..."). >+// Otherwise the symbol versions may be lost, resulting in broken liblzma >+// that has wrong default versions in the exported symbol list! >+// The attribute was added in GCC 10; LTO with older GCC is not supported. >+// >+// To keep -Wmissing-prototypes happy, use LZMA_SYMVER_API only with function >+// declarations (including those with __alias__ attribute) and LZMA_API with >+// the function definitions. This means a little bit of silly copy-and-paste >+// between declarations and definitions though. >+// >+// As of GCC 12.2, the __symver__ attribute supports only @ and @@ but the >+// very convenient @@@ isn't supported (it's supported by GNU assembler >+// since 2000). When using @@ instead of @@@, the internal name must not be >+// the same as the external name to avoid problems in some situations. This >+// is why "#define foo_52 foo" is needed for the default symbol versions. >+// >+// __has_attribute is supported before GCC 10 and it is supported in Clang 14 >+// too (which doesn't support __symver__) so use it to detect if __symver__ >+// is available. This should be far more reliable than looking at compiler >+// version macros as nowadays especially __GNUC__ is defined by many compilers. >+# if lzma_has_attribute(__symver__) >+# define LZMA_SYMVER_API(extnamever, type, intname) \ >+ extern __attribute__((__symver__(extnamever))) \ >+ LZMA_API(type) intname >+# else >+# define LZMA_SYMVER_API(extnamever, type, intname) \ >+ __asm__(".symver " #intname "," extnamever); \ >+ extern LZMA_API(type) intname >+# endif >+#endif >+ > // These allow helping the compiler in some often-executed branches, whose > // result is almost always the same. > #ifdef __GNUC__ >@@ -67,14 +120,15 @@ > #define LZMA_FILTER_RESERVED_START (LZMA_VLI_C(1) << 62) > > >-/// Supported flags that can be passed to lzma_stream_decoder() >-/// or lzma_auto_decoder(). >+/// Supported flags that can be passed to lzma_stream_decoder(), >+/// lzma_auto_decoder(), or lzma_stream_decoder_mt(). > #define LZMA_SUPPORTED_FLAGS \ > ( LZMA_TELL_NO_CHECK \ > | LZMA_TELL_UNSUPPORTED_CHECK \ > | LZMA_TELL_ANY_CHECK \ > | LZMA_IGNORE_CHECK \ >- | LZMA_CONCATENATED ) >+ | LZMA_CONCATENATED \ >+ | LZMA_FAIL_FAST ) > > > /// Largest valid lzma_action value as unsigned integer. >@@ -83,11 +137,14 @@ > > /// Special return value (lzma_ret) to indicate that a timeout was reached > /// and lzma_code() must not return LZMA_BUF_ERROR. This is converted to >-/// LZMA_OK in lzma_code(). This is not in the lzma_ret enumeration because >-/// there's no need to have it in the public API. >-#define LZMA_TIMED_OUT 32 >+/// LZMA_OK in lzma_code(). >+#define LZMA_TIMED_OUT LZMA_RET_INTERNAL1 > >+/// Special return value (lzma_ret) for use in stream_decoder_mt.c to >+/// indicate Index was detected instead of a Block Header. >+#define LZMA_INDEX_DETECTED LZMA_RET_INTERNAL2 > >+ > typedef struct lzma_next_coder_s lzma_next_coder; > > typedef struct lzma_filter_info_s lzma_filter_info; >@@ -118,8 +175,11 @@ > /// an array of lzma_filter_info structures. This array is used with > /// lzma_next_filter_init to initialize the filter chain. > struct lzma_filter_info_s { >- /// Filter ID. This is used only by the encoder >- /// with lzma_filters_update(). >+ /// Filter ID. This can be used to share the same initiazation >+ /// function *and* data structures with different Filter IDs >+ /// (LZMA_FILTER_LZMA1EXT does it), and also by the encoder >+ /// with lzma_filters_update() if filter chain is updated >+ /// in the middle of a raw stream or Block (LZMA_SYNC_FLUSH). > lzma_vli id; > > /// Pointer to function used to initialize the filter. >@@ -173,6 +233,16 @@ > lzma_ret (*update)(void *coder, const lzma_allocator *allocator, > const lzma_filter *filters, > const lzma_filter *reversed_filters); >+ >+ /// Set how many bytes of output this coder may produce at maximum. >+ /// On success LZMA_OK must be returned. >+ /// If the filter chain as a whole cannot support this feature, >+ /// this must return LZMA_OPTIONS_ERROR. >+ /// If no input has been given to the coder and the requested limit >+ /// is too small, this must return LZMA_BUF_ERROR. If input has been >+ /// seen, LZMA_OK is allowed too. >+ lzma_ret (*set_out_limit)(void *coder, uint64_t *uncomp_size, >+ uint64_t out_limit); > }; > > >@@ -188,6 +258,7 @@ > .get_check = NULL, \ > .memconfig = NULL, \ > .update = NULL, \ >+ .set_out_limit = NULL, \ > } > > >Only in xz-5.4.3/src/liblzma/common: file_info.c >diff -ur xz-5.2.5/src/liblzma/common/filter_common.c xz-5.4.3/src/liblzma/common/filter_common.c >--- xz-5.2.5/src/liblzma/common/filter_common.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/filter_common.c 2023-05-04 17:21:05 >@@ -42,6 +42,13 @@ > .last_ok = true, > .changes_size = true, > }, >+ { >+ .id = LZMA_FILTER_LZMA1EXT, >+ .options_size = sizeof(lzma_options_lzma), >+ .non_last_ok = false, >+ .last_ok = true, >+ .changes_size = true, >+ }, > #endif > #if defined(HAVE_ENCODER_LZMA2) || defined(HAVE_DECODER_LZMA2) > { >@@ -97,6 +104,15 @@ > .changes_size = false, > }, > #endif >+#if defined(HAVE_ENCODER_ARM64) || defined(HAVE_DECODER_ARM64) >+ { >+ .id = LZMA_FILTER_ARM64, >+ .options_size = sizeof(lzma_options_bcj), >+ .non_last_ok = true, >+ .last_ok = false, >+ .changes_size = false, >+ }, >+#endif > #if defined(HAVE_ENCODER_SPARC) || defined(HAVE_DECODER_SPARC) > { > .id = LZMA_FILTER_SPARC, >@@ -122,12 +138,16 @@ > > > extern LZMA_API(lzma_ret) >-lzma_filters_copy(const lzma_filter *src, lzma_filter *dest, >+lzma_filters_copy(const lzma_filter *src, lzma_filter *real_dest, > const lzma_allocator *allocator) > { >- if (src == NULL || dest == NULL) >+ if (src == NULL || real_dest == NULL) > return LZMA_PROG_ERROR; > >+ // Use a temporary destination so that the real destination >+ // will never be modied if an error occurs. >+ lzma_filter dest[LZMA_FILTERS_MAX + 1]; >+ > lzma_ret ret; > size_t i; > for (i = 0; src[i].id != LZMA_VLI_UNKNOWN; ++i) { >@@ -173,26 +193,54 @@ > } > > // Terminate the filter array. >- assert(i <= LZMA_FILTERS_MAX + 1); >+ assert(i < LZMA_FILTERS_MAX + 1); > dest[i].id = LZMA_VLI_UNKNOWN; > dest[i].options = NULL; > >+ // Copy it to the caller-supplied array now that we know that >+ // no errors occurred. >+ memcpy(real_dest, dest, (i + 1) * sizeof(lzma_filter)); >+ > return LZMA_OK; > > error: > // Free the options which we have already allocated. >- while (i-- > 0) { >+ while (i-- > 0) > lzma_free(dest[i].options, allocator); >- dest[i].options = NULL; >- } > > return ret; > } > > >-static lzma_ret >-validate_chain(const lzma_filter *filters, size_t *count) >+extern LZMA_API(void) >+lzma_filters_free(lzma_filter *filters, const lzma_allocator *allocator) > { >+ if (filters == NULL) >+ return; >+ >+ for (size_t i = 0; filters[i].id != LZMA_VLI_UNKNOWN; ++i) { >+ if (i == LZMA_FILTERS_MAX) { >+ // The API says that LZMA_FILTERS_MAX + 1 is the >+ // maximum allowed size including the terminating >+ // element. Thus, we should never get here but in >+ // case there is a bug and we do anyway, don't go >+ // past the (probable) end of the array. >+ assert(0); >+ break; >+ } >+ >+ lzma_free(filters[i].options, allocator); >+ filters[i].options = NULL; >+ filters[i].id = LZMA_VLI_UNKNOWN; >+ } >+ >+ return; >+} >+ >+ >+extern lzma_ret >+lzma_validate_chain(const lzma_filter *filters, size_t *count) >+{ > // There must be at least one filter. > if (filters == NULL || filters[0].id == LZMA_VLI_UNKNOWN) > return LZMA_PROG_ERROR; >@@ -245,7 +293,7 @@ > { > // Do some basic validation and get the number of filters. > size_t count; >- return_if_error(validate_chain(options, &count)); >+ return_if_error(lzma_validate_chain(options, &count)); > > // Set the filter functions and copy the options pointer. > lzma_filter_info filters[LZMA_FILTERS_MAX + 1]; >@@ -298,7 +346,7 @@ > // The chain has to have at least one filter. > { > size_t tmp; >- if (validate_chain(filters, &tmp) != LZMA_OK) >+ if (lzma_validate_chain(filters, &tmp) != LZMA_OK) > return UINT64_MAX; > } > >diff -ur xz-5.2.5/src/liblzma/common/filter_common.h xz-5.4.3/src/liblzma/common/filter_common.h >--- xz-5.2.5/src/liblzma/common/filter_common.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/filter_common.h 2023-05-04 17:21:05 >@@ -35,6 +35,9 @@ > typedef const lzma_filter_coder *(*lzma_filter_find)(lzma_vli id); > > >+extern lzma_ret lzma_validate_chain(const lzma_filter *filters, size_t *count); >+ >+ > extern lzma_ret lzma_raw_coder_init( > lzma_next_coder *next, const lzma_allocator *allocator, > const lzma_filter *filters, >diff -ur xz-5.2.5/src/liblzma/common/filter_decoder.c xz-5.4.3/src/liblzma/common/filter_decoder.c >--- xz-5.2.5/src/liblzma/common/filter_decoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/filter_decoder.c 2023-05-04 17:21:05 >@@ -50,6 +50,12 @@ > .memusage = &lzma_lzma_decoder_memusage, > .props_decode = &lzma_lzma_props_decode, > }, >+ { >+ .id = LZMA_FILTER_LZMA1EXT, >+ .init = &lzma_lzma_decoder_init, >+ .memusage = &lzma_lzma_decoder_memusage, >+ .props_decode = &lzma_lzma_props_decode, >+ }, > #endif > #ifdef HAVE_DECODER_LZMA2 > { >@@ -95,6 +101,14 @@ > { > .id = LZMA_FILTER_ARMTHUMB, > .init = &lzma_simple_armthumb_decoder_init, >+ .memusage = NULL, >+ .props_decode = &lzma_simple_props_decode, >+ }, >+#endif >+#ifdef HAVE_DECODER_ARM64 >+ { >+ .id = LZMA_FILTER_ARM64, >+ .init = &lzma_simple_arm64_decoder_init, > .memusage = NULL, > .props_decode = &lzma_simple_props_decode, > }, >diff -ur xz-5.2.5/src/liblzma/common/filter_encoder.c xz-5.4.3/src/liblzma/common/filter_encoder.c >--- xz-5.2.5/src/liblzma/common/filter_encoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/filter_encoder.c 2023-05-04 17:21:05 >@@ -37,9 +37,12 @@ > uint64_t (*block_size)(const void *options); > > /// Tells the size of the Filter Properties field. If options are >- /// invalid, UINT32_MAX is returned. If this is NULL, props_size_fixed >- /// is used. >+ /// invalid, LZMA_OPTIONS_ERROR is returned and size is set to >+ /// UINT32_MAX. > lzma_ret (*props_size_get)(uint32_t *size, const void *options); >+ >+ /// Some filters will always have the same size Filter Properties >+ /// field. If props_size_get is NULL, this value is used. > uint32_t props_size_fixed; > > /// Encodes Filter Properties. >@@ -59,18 +62,27 @@ > .id = LZMA_FILTER_LZMA1, > .init = &lzma_lzma_encoder_init, > .memusage = &lzma_lzma_encoder_memusage, >- .block_size = NULL, // FIXME >+ .block_size = NULL, // Not needed for LZMA1 > .props_size_get = NULL, > .props_size_fixed = 5, > .props_encode = &lzma_lzma_props_encode, > }, >+ { >+ .id = LZMA_FILTER_LZMA1EXT, >+ .init = &lzma_lzma_encoder_init, >+ .memusage = &lzma_lzma_encoder_memusage, >+ .block_size = NULL, // Not needed for LZMA1 >+ .props_size_get = NULL, >+ .props_size_fixed = 5, >+ .props_encode = &lzma_lzma_props_encode, >+ }, > #endif > #ifdef HAVE_ENCODER_LZMA2 > { > .id = LZMA_FILTER_LZMA2, > .init = &lzma_lzma2_encoder_init, > .memusage = &lzma_lzma2_encoder_memusage, >- .block_size = &lzma_lzma2_block_size, // FIXME >+ .block_size = &lzma_lzma2_block_size, > .props_size_get = NULL, > .props_size_fixed = 1, > .props_encode = &lzma_lzma2_props_encode, >@@ -120,6 +132,16 @@ > { > .id = LZMA_FILTER_ARMTHUMB, > .init = &lzma_simple_armthumb_encoder_init, >+ .memusage = NULL, >+ .block_size = NULL, >+ .props_size_get = &lzma_simple_props_size, >+ .props_encode = &lzma_simple_props_encode, >+ }, >+#endif >+#ifdef HAVE_ENCODER_ARM64 >+ { >+ .id = LZMA_FILTER_ARM64, >+ .init = &lzma_simple_arm64_encoder_init, > .memusage = NULL, > .block_size = NULL, > .props_size_get = &lzma_simple_props_size, >diff -ur xz-5.2.5/src/liblzma/common/hardware_cputhreads.c xz-5.4.3/src/liblzma/common/hardware_cputhreads.c >--- xz-5.2.5/src/liblzma/common/hardware_cputhreads.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/hardware_cputhreads.c 2023-05-04 17:21:05 >@@ -15,6 +15,18 @@ > #include "tuklib_cpucores.h" > > >+#ifdef HAVE_SYMBOL_VERSIONS_LINUX >+// This is for compatibility with binaries linked against liblzma that >+// has been patched with xz-5.2.2-compat-libs.patch from RHEL/CentOS 7. >+LZMA_SYMVER_API("lzma_cputhreads@XZ_5.2.2", >+ uint32_t, lzma_cputhreads_522)(void) lzma_nothrow >+ __attribute__((__alias__("lzma_cputhreads_52"))); >+ >+LZMA_SYMVER_API("lzma_cputhreads@@XZ_5.2", >+ uint32_t, lzma_cputhreads_52)(void) lzma_nothrow; >+ >+#define lzma_cputhreads lzma_cputhreads_52 >+#endif > extern LZMA_API(uint32_t) > lzma_cputhreads(void) > { >diff -ur xz-5.2.5/src/liblzma/common/index.c xz-5.4.3/src/liblzma/common/index.c >--- xz-5.2.5/src/liblzma/common/index.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/index.c 2023-05-04 17:21:05 >@@ -10,6 +10,7 @@ > // > /////////////////////////////////////////////////////////////////////////////// > >+#include "common.h" > #include "index.h" > #include "stream_flags_common.h" > >@@ -656,6 +657,10 @@ > const uint32_t index_list_size_add = lzma_vli_size(unpadded_size) > + lzma_vli_size(uncompressed_size); > >+ // Check that uncompressed size will not overflow. >+ if (uncompressed_base + uncompressed_size > LZMA_VLI_MAX) >+ return LZMA_DATA_ERROR; >+ > // Check that the file size will stay within limits. > if (index_file_size(s->node.compressed_base, > compressed_base + unpadded_size, s->record_count + 1, >@@ -767,6 +772,9 @@ > lzma_index_cat(lzma_index *restrict dest, lzma_index *restrict src, > const lzma_allocator *allocator) > { >+ if (dest == NULL || src == NULL) >+ return LZMA_PROG_ERROR; >+ > const lzma_vli dest_file_size = lzma_index_file_size(dest); > > // Check that we don't exceed the file size limits. >@@ -835,6 +843,11 @@ > } > } > >+ // dest->checks includes the check types of all except the last Stream >+ // in dest. Set the bit for the check type of the last Stream now so >+ // that it won't get lost when Stream(s) from src are appended to dest. >+ dest->checks = lzma_index_checks(dest); >+ > // Add all the Streams from src to dest. Update the base offsets > // of each Stream from src. > const index_cat_info info = { >@@ -851,7 +864,7 @@ > dest->total_size += src->total_size; > dest->record_count += src->record_count; > dest->index_list_size += src->index_list_size; >- dest->checks = lzma_index_checks(dest) | src->checks; >+ dest->checks |= src->checks; > > // There's nothing else left in src than the base structure. > lzma_free(src, allocator); >@@ -1226,7 +1239,7 @@ > > // Use binary search to locate the exact Record. It is the first > // Record whose uncompressed_sum is greater than target. >- // This is because we want the rightmost Record that fullfills the >+ // This is because we want the rightmost Record that fulfills the > // search criterion. It is possible that there are empty Blocks; > // we don't want to return them. > size_t left = 0; >diff -ur xz-5.2.5/src/liblzma/common/index.h xz-5.4.3/src/liblzma/common/index.h >--- xz-5.2.5/src/liblzma/common/index.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/index.h 2023-05-04 17:21:05 >@@ -2,6 +2,13 @@ > // > /// \file index.h > /// \brief Handling of Index >+/// \note This header file does not include common.h or lzma.h because >+/// this file is needed by both liblzma internally and by the >+/// tests. Including common.h will include and define many things >+/// the tests do not need and prevents issues with header file >+/// include order. This way, if lzma.h or common.h are not >+/// included before this file it will break on every OS instead >+/// of causing more subtle errors. > // > // Author: Lasse Collin > // >@@ -13,14 +20,15 @@ > #ifndef LZMA_INDEX_H > #define LZMA_INDEX_H > >-#include "common.h" > >- > /// Minimum Unpadded Size > #define UNPADDED_SIZE_MIN LZMA_VLI_C(5) > > /// Maximum Unpadded Size > #define UNPADDED_SIZE_MAX (LZMA_VLI_MAX & ~LZMA_VLI_C(3)) >+ >+/// Index Indicator based on xz specification >+#define INDEX_INDICATOR 0 > > > /// Get the size of the Index Padding field. This is needed by Index encoder >diff -ur xz-5.2.5/src/liblzma/common/index_decoder.c xz-5.4.3/src/liblzma/common/index_decoder.c >--- xz-5.2.5/src/liblzma/common/index_decoder.c 2020-03-17 17:28:54 >+++ xz-5.4.3/src/liblzma/common/index_decoder.c 2023-05-04 17:21:05 >@@ -10,7 +10,7 @@ > // > /////////////////////////////////////////////////////////////////////////////// > >-#include "index.h" >+#include "index_decoder.h" > #include "check.h" > > >@@ -80,7 +80,7 @@ > // format". One could argue that the application should > // verify the Index Indicator before trying to decode the > // Index, but well, I suppose it is simpler this way. >- if (in[(*in_pos)++] != 0x00) >+ if (in[(*in_pos)++] != INDEX_INDICATOR) > return LZMA_DATA_ERROR; > > coder->sequence = SEQ_COUNT; >@@ -180,8 +180,11 @@ > return LZMA_OK; > > if (((coder->crc32 >> (coder->pos * 8)) & 0xFF) >- != in[(*in_pos)++]) >+ != in[(*in_pos)++]) { >+#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION > return LZMA_DATA_ERROR; >+#endif >+ } > > } while (++coder->pos < 4); > >@@ -200,9 +203,16 @@ > } > > out: >- // Update the CRC32, >- coder->crc32 = lzma_crc32(in + in_start, >- *in_pos - in_start, coder->crc32); >+ // Update the CRC32. >+ // >+ // Avoid null pointer + 0 (undefined behavior) in "in + in_start". >+ // In such a case we had no input and thus in_used == 0. >+ { >+ const size_t in_used = *in_pos - in_start; >+ if (in_used > 0) >+ coder->crc32 = lzma_crc32(in + in_start, >+ in_used, coder->crc32); >+ } > > return ret; > } >@@ -265,11 +275,11 @@ > } > > >-static lzma_ret >-index_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator, >+extern lzma_ret >+lzma_index_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator, > lzma_index **i, uint64_t memlimit) > { >- lzma_next_coder_init(&index_decoder_init, next, allocator); >+ lzma_next_coder_init(&lzma_index_decoder_init, next, allocator); > > if (i == NULL) > return LZMA_PROG_ERROR; >@@ -296,7 +306,7 @@ > extern LZMA_API(lzma_ret) > lzma_index_decoder(lzma_stream *strm, lzma_index **i, uint64_t memlimit) > { >- lzma_next_strm_init(index_decoder_init, strm, i, memlimit); >+ lzma_next_strm_init(lzma_index_decoder_init, strm, i, memlimit); > > strm->internal->supported_actions[LZMA_RUN] = true; > strm->internal->supported_actions[LZMA_FINISH] = true; >Only in xz-5.4.3/src/liblzma/common: index_decoder.h >diff -ur xz-5.2.5/src/liblzma/common/index_encoder.c xz-5.4.3/src/liblzma/common/index_encoder.c >--- xz-5.2.5/src/liblzma/common/index_encoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/index_encoder.c 2023-05-04 17:21:05 >@@ -65,7 +65,7 @@ > while (*out_pos < out_size) > switch (coder->sequence) { > case SEQ_INDICATOR: >- out[*out_pos] = 0x00; >+ out[*out_pos] = INDEX_INDICATOR; > ++*out_pos; > coder->sequence = SEQ_COUNT; > break; >@@ -153,8 +153,15 @@ > > out: > // Update the CRC32. >- coder->crc32 = lzma_crc32(out + out_start, >- *out_pos - out_start, coder->crc32); >+ // >+ // Avoid null pointer + 0 (undefined behavior) in "out + out_start". >+ // In such a case we had no input and thus out_used == 0. >+ { >+ const size_t out_used = *out_pos - out_start; >+ if (out_used > 0) >+ coder->crc32 = lzma_crc32(out + out_start, >+ out_used, coder->crc32); >+ } > > return ret; > } >diff -ur xz-5.2.5/src/liblzma/common/index_hash.c xz-5.4.3/src/liblzma/common/index_hash.c >--- xz-5.2.5/src/liblzma/common/index_hash.c 2020-03-17 17:28:54 >+++ xz-5.4.3/src/liblzma/common/index_hash.c 2023-05-04 17:21:05 >@@ -122,7 +122,7 @@ > > > /// Updates the sizes and the hash without any validation. >-static lzma_ret >+static void > hash_append(lzma_index_hash_info *info, lzma_vli unpadded_size, > lzma_vli uncompressed_size) > { >@@ -136,7 +136,7 @@ > lzma_check_update(&info->check, LZMA_CHECK_BEST, > (const uint8_t *)(sizes), sizeof(sizes)); > >- return LZMA_OK; >+ return; > } > > >@@ -145,15 +145,14 @@ > lzma_vli uncompressed_size) > { > // Validate the arguments. >- if (index_hash->sequence != SEQ_BLOCK >+ if (index_hash == NULL || index_hash->sequence != SEQ_BLOCK > || unpadded_size < UNPADDED_SIZE_MIN > || unpadded_size > UNPADDED_SIZE_MAX > || uncompressed_size > LZMA_VLI_MAX) > return LZMA_PROG_ERROR; > > // Update the hash. >- return_if_error(hash_append(&index_hash->blocks, >- unpadded_size, uncompressed_size)); >+ hash_append(&index_hash->blocks, unpadded_size, uncompressed_size); > > // Validate the properties of *info are still in allowed limits. > if (index_hash->blocks.blocks_size > LZMA_VLI_MAX >@@ -191,7 +190,7 @@ > switch (index_hash->sequence) { > case SEQ_BLOCK: > // Check the Index Indicator is present. >- if (in[(*in_pos)++] != 0x00) >+ if (in[(*in_pos)++] != INDEX_INDICATOR) > return LZMA_DATA_ERROR; > > index_hash->sequence = SEQ_COUNT; >@@ -239,9 +238,9 @@ > index_hash->sequence = SEQ_UNCOMPRESSED; > } else { > // Update the hash. >- return_if_error(hash_append(&index_hash->records, >+ hash_append(&index_hash->records, > index_hash->unpadded_size, >- index_hash->uncompressed_size)); >+ index_hash->uncompressed_size); > > // Verify that we don't go over the known sizes. Note > // that this validation is simpler than the one used >@@ -313,8 +312,11 @@ > return LZMA_OK; > > if (((index_hash->crc32 >> (index_hash->pos * 8)) >- & 0xFF) != in[(*in_pos)++]) >+ & 0xFF) != in[(*in_pos)++]) { >+#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION > return LZMA_DATA_ERROR; >+#endif >+ } > > } while (++index_hash->pos < 4); > >@@ -326,9 +328,16 @@ > } > > out: >- // Update the CRC32, >- index_hash->crc32 = lzma_crc32(in + in_start, >- *in_pos - in_start, index_hash->crc32); >+ // Update the CRC32. >+ // >+ // Avoid null pointer + 0 (undefined behavior) in "in + in_start". >+ // In such a case we had no input and thus in_used == 0. >+ { >+ const size_t in_used = *in_pos - in_start; >+ if (in_used > 0) >+ index_hash->crc32 = lzma_crc32(in + in_start, >+ in_used, index_hash->crc32); >+ } > > return ret; > } >Only in xz-5.4.3/src/liblzma/common: lzip_decoder.c >Only in xz-5.4.3/src/liblzma/common: lzip_decoder.h >diff -ur xz-5.2.5/src/liblzma/common/memcmplen.h xz-5.4.3/src/liblzma/common/memcmplen.h >--- xz-5.2.5/src/liblzma/common/memcmplen.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/memcmplen.h 2023-05-04 17:21:05 >@@ -19,7 +19,17 @@ > # include <immintrin.h> > #endif > >+// Only include <intrin.h> if it is needed. The header is only needed >+// on Windows when using an MSVC compatible compiler. The Intel compiler >+// can use the intrinsics without the header file. >+#if defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ >+ && (defined(_MSC_VER) \ >+ && defined(_M_X64) \ >+ && !defined(__INTEL_COMPILER)) >+# include <intrin.h> >+#endif > >+ > /// Find out how many equal bytes the two buffers have. > /// > /// \param buf1 First buffer >@@ -51,10 +61,6 @@ > || (defined(__INTEL_COMPILER) && defined(__x86_64__)) \ > || (defined(__INTEL_COMPILER) && defined(_M_X64)) \ > || (defined(_MSC_VER) && defined(_M_X64))) >- // NOTE: This will use 64-bit unaligned access which >- // TUKLIB_FAST_UNALIGNED_ACCESS wasn't meant to permit, but >- // it's convenient here at least as long as it's x86-64 only. >- // > // I keep this x86-64 only for now since that's where I know this > // to be a good method. This may be fine on other 64-bit CPUs too. > // On big endian one should use xor instead of subtraction and switch >@@ -80,12 +86,12 @@ > > #elif defined(TUKLIB_FAST_UNALIGNED_ACCESS) \ > && defined(HAVE__MM_MOVEMASK_EPI8) \ >- && ((defined(__GNUC__) && defined(__SSE2_MATH__)) \ >- || (defined(__INTEL_COMPILER) && defined(__SSE2__)) \ >+ && (defined(__SSE2__) \ > || (defined(_MSC_VER) && defined(_M_IX86_FP) \ > && _M_IX86_FP >= 2)) >- // NOTE: Like above, this will use 128-bit unaligned access which >- // TUKLIB_FAST_UNALIGNED_ACCESS wasn't meant to permit. >+ // NOTE: This will use 128-bit unaligned access which >+ // TUKLIB_FAST_UNALIGNED_ACCESS wasn't meant to permit, >+ // but it's convenient here since this is x86-only. > // > // SSE2 version for 32-bit and 64-bit x86. On x86-64 the above > // version is sometimes significantly faster and sometimes >@@ -93,7 +99,8 @@ > // version isn't used on x86-64. > # define LZMA_MEMCMPLEN_EXTRA 16 > while (len < limit) { >- const uint32_t x = 0xFFFF ^ _mm_movemask_epi8(_mm_cmpeq_epi8( >+ const uint32_t x = 0xFFFF ^ (uint32_t)_mm_movemask_epi8( >+ _mm_cmpeq_epi8( > _mm_loadu_si128((const __m128i *)(buf1 + len)), > _mm_loadu_si128((const __m128i *)(buf2 + len)))); > >Only in xz-5.4.3/src/liblzma/common: microlzma_decoder.c >Only in xz-5.4.3/src/liblzma/common: microlzma_encoder.c >diff -ur xz-5.2.5/src/liblzma/common/outqueue.c xz-5.4.3/src/liblzma/common/outqueue.c >--- xz-5.2.5/src/liblzma/common/outqueue.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/outqueue.c 2023-05-04 17:21:05 >@@ -13,84 +13,121 @@ > #include "outqueue.h" > > >-/// This is to ease integer overflow checking: We may allocate up to >-/// 2 * LZMA_THREADS_MAX buffers and we need some extra memory for other >-/// data structures (that's the second /2). >-#define BUF_SIZE_MAX (UINT64_MAX / LZMA_THREADS_MAX / 2 / 2) >+/// Get the maximum number of buffers that may be allocated based >+/// on the number of threads. For now this is twice the number of threads. >+/// It's a compromise between RAM usage and keeping the worker threads busy >+/// when buffers finish out of order. >+#define GET_BUFS_LIMIT(threads) (2 * (threads)) > > >-static lzma_ret >-get_options(uint64_t *bufs_alloc_size, uint32_t *bufs_count, >- uint64_t buf_size_max, uint32_t threads) >+extern uint64_t >+lzma_outq_memusage(uint64_t buf_size_max, uint32_t threads) > { >- if (threads > LZMA_THREADS_MAX || buf_size_max > BUF_SIZE_MAX) >- return LZMA_OPTIONS_ERROR; >- >- // The number of buffers is twice the number of threads. >- // This wastes RAM but keeps the threads busy when buffers >- // finish out of order. >+ // This is to ease integer overflow checking: We may allocate up to >+ // GET_BUFS_LIMIT(LZMA_THREADS_MAX) buffers and we need some extra >+ // memory for other data structures too (that's the /2). > // >- // NOTE: If this is changed, update BUF_SIZE_MAX too. >- *bufs_count = threads * 2; >- *bufs_alloc_size = *bufs_count * buf_size_max; >+ // lzma_outq_prealloc_buf() will still accept bigger buffers than this. >+ const uint64_t limit >+ = UINT64_MAX / GET_BUFS_LIMIT(LZMA_THREADS_MAX) / 2; > >- return LZMA_OK; >+ if (threads > LZMA_THREADS_MAX || buf_size_max > limit) >+ return UINT64_MAX; >+ >+ return GET_BUFS_LIMIT(threads) >+ * lzma_outq_outbuf_memusage(buf_size_max); > } > > >-extern uint64_t >-lzma_outq_memusage(uint64_t buf_size_max, uint32_t threads) >+static void >+move_head_to_cache(lzma_outq *outq, const lzma_allocator *allocator) > { >- uint64_t bufs_alloc_size; >- uint32_t bufs_count; >+ assert(outq->head != NULL); >+ assert(outq->tail != NULL); >+ assert(outq->bufs_in_use > 0); > >- if (get_options(&bufs_alloc_size, &bufs_count, buf_size_max, threads) >- != LZMA_OK) >- return UINT64_MAX; >+ lzma_outbuf *buf = outq->head; >+ outq->head = buf->next; >+ if (outq->head == NULL) >+ outq->tail = NULL; > >- return sizeof(lzma_outq) + bufs_count * sizeof(lzma_outbuf) >- + bufs_alloc_size; >+ if (outq->cache != NULL && outq->cache->allocated != buf->allocated) >+ lzma_outq_clear_cache(outq, allocator); >+ >+ buf->next = outq->cache; >+ outq->cache = buf; >+ >+ --outq->bufs_in_use; >+ outq->mem_in_use -= lzma_outq_outbuf_memusage(buf->allocated); >+ >+ return; > } > > >-extern lzma_ret >-lzma_outq_init(lzma_outq *outq, const lzma_allocator *allocator, >- uint64_t buf_size_max, uint32_t threads) >+static void >+free_one_cached_buffer(lzma_outq *outq, const lzma_allocator *allocator) > { >- uint64_t bufs_alloc_size; >- uint32_t bufs_count; >+ assert(outq->cache != NULL); > >- // Set bufs_count and bufs_alloc_size. >- return_if_error(get_options(&bufs_alloc_size, &bufs_count, >- buf_size_max, threads)); >+ lzma_outbuf *buf = outq->cache; >+ outq->cache = buf->next; > >- // Allocate memory if needed. >- if (outq->buf_size_max != buf_size_max >- || outq->bufs_allocated != bufs_count) { >- lzma_outq_end(outq, allocator); >+ --outq->bufs_allocated; >+ outq->mem_allocated -= lzma_outq_outbuf_memusage(buf->allocated); > >-#if SIZE_MAX < UINT64_MAX >- if (bufs_alloc_size > SIZE_MAX) >- return LZMA_MEM_ERROR; >-#endif >+ lzma_free(buf, allocator); >+ return; >+} > >- outq->bufs = lzma_alloc(bufs_count * sizeof(lzma_outbuf), >- allocator); >- outq->bufs_mem = lzma_alloc((size_t)(bufs_alloc_size), >- allocator); > >- if (outq->bufs == NULL || outq->bufs_mem == NULL) { >- lzma_outq_end(outq, allocator); >- return LZMA_MEM_ERROR; >- } >- } >+extern void >+lzma_outq_clear_cache(lzma_outq *outq, const lzma_allocator *allocator) >+{ >+ while (outq->cache != NULL) >+ free_one_cached_buffer(outq, allocator); > >- // Initialize the rest of the main structure. Initialization of >- // outq->bufs[] is done when they are actually needed. >- outq->buf_size_max = (size_t)(buf_size_max); >- outq->bufs_allocated = bufs_count; >- outq->bufs_pos = 0; >- outq->bufs_used = 0; >+ return; >+} >+ >+ >+extern void >+lzma_outq_clear_cache2(lzma_outq *outq, const lzma_allocator *allocator, >+ size_t keep_size) >+{ >+ if (outq->cache == NULL) >+ return; >+ >+ // Free all but one. >+ while (outq->cache->next != NULL) >+ free_one_cached_buffer(outq, allocator); >+ >+ // Free the last one only if its size doesn't equal to keep_size. >+ if (outq->cache->allocated != keep_size) >+ free_one_cached_buffer(outq, allocator); >+ >+ return; >+} >+ >+ >+extern lzma_ret >+lzma_outq_init(lzma_outq *outq, const lzma_allocator *allocator, >+ uint32_t threads) >+{ >+ if (threads > LZMA_THREADS_MAX) >+ return LZMA_OPTIONS_ERROR; >+ >+ const uint32_t bufs_limit = GET_BUFS_LIMIT(threads); >+ >+ // Clear head/tail. >+ while (outq->head != NULL) >+ move_head_to_cache(outq, allocator); >+ >+ // If new buf_limit is lower than the old one, we may need to free >+ // a few cached buffers. >+ while (bufs_limit < outq->bufs_allocated) >+ free_one_cached_buffer(outq, allocator); >+ >+ outq->bufs_limit = bufs_limit; > outq->read_pos = 0; > > return LZMA_OK; >@@ -100,33 +137,81 @@ > extern void > lzma_outq_end(lzma_outq *outq, const lzma_allocator *allocator) > { >- lzma_free(outq->bufs, allocator); >- outq->bufs = NULL; >+ while (outq->head != NULL) >+ move_head_to_cache(outq, allocator); > >- lzma_free(outq->bufs_mem, allocator); >- outq->bufs_mem = NULL; >- >+ lzma_outq_clear_cache(outq, allocator); > return; > } > > >-extern lzma_outbuf * >-lzma_outq_get_buf(lzma_outq *outq) >+extern lzma_ret >+lzma_outq_prealloc_buf(lzma_outq *outq, const lzma_allocator *allocator, >+ size_t size) > { > // Caller must have checked it with lzma_outq_has_buf(). >- assert(outq->bufs_used < outq->bufs_allocated); >+ assert(outq->bufs_in_use < outq->bufs_limit); > >- // Initialize the new buffer. >- lzma_outbuf *buf = &outq->bufs[outq->bufs_pos]; >- buf->buf = outq->bufs_mem + outq->bufs_pos * outq->buf_size_max; >- buf->size = 0; >+ // If there already is appropriately-sized buffer in the cache, >+ // we need to do nothing. >+ if (outq->cache != NULL && outq->cache->allocated == size) >+ return LZMA_OK; >+ >+ if (size > SIZE_MAX - sizeof(lzma_outbuf)) >+ return LZMA_MEM_ERROR; >+ >+ const size_t alloc_size = lzma_outq_outbuf_memusage(size); >+ >+ // The cache may have buffers but their size is wrong. >+ lzma_outq_clear_cache(outq, allocator); >+ >+ outq->cache = lzma_alloc(alloc_size, allocator); >+ if (outq->cache == NULL) >+ return LZMA_MEM_ERROR; >+ >+ outq->cache->next = NULL; >+ outq->cache->allocated = size; >+ >+ ++outq->bufs_allocated; >+ outq->mem_allocated += alloc_size; >+ >+ return LZMA_OK; >+} >+ >+ >+extern lzma_outbuf * >+lzma_outq_get_buf(lzma_outq *outq, void *worker) >+{ >+ // Caller must have used lzma_outq_prealloc_buf() to ensure these. >+ assert(outq->bufs_in_use < outq->bufs_limit); >+ assert(outq->bufs_in_use < outq->bufs_allocated); >+ assert(outq->cache != NULL); >+ >+ lzma_outbuf *buf = outq->cache; >+ outq->cache = buf->next; >+ buf->next = NULL; >+ >+ if (outq->tail != NULL) { >+ assert(outq->head != NULL); >+ outq->tail->next = buf; >+ } else { >+ assert(outq->head == NULL); >+ outq->head = buf; >+ } >+ >+ outq->tail = buf; >+ >+ buf->worker = worker; > buf->finished = false; >+ buf->finish_ret = LZMA_STREAM_END; >+ buf->pos = 0; >+ buf->decoder_in_pos = 0; > >- // Update the queue state. >- if (++outq->bufs_pos == outq->bufs_allocated) >- outq->bufs_pos = 0; >+ buf->unpadded_size = 0; >+ buf->uncompressed_size = 0; > >- ++outq->bufs_used; >+ ++outq->bufs_in_use; >+ outq->mem_in_use += lzma_outq_outbuf_memusage(buf->allocated); > > return buf; > } >@@ -135,50 +220,68 @@ > extern bool > lzma_outq_is_readable(const lzma_outq *outq) > { >- uint32_t i = outq->bufs_pos - outq->bufs_used; >- if (outq->bufs_pos < outq->bufs_used) >- i += outq->bufs_allocated; >+ if (outq->head == NULL) >+ return false; > >- return outq->bufs[i].finished; >+ return outq->read_pos < outq->head->pos || outq->head->finished; > } > > > extern lzma_ret >-lzma_outq_read(lzma_outq *restrict outq, uint8_t *restrict out, >- size_t *restrict out_pos, size_t out_size, >+lzma_outq_read(lzma_outq *restrict outq, >+ const lzma_allocator *restrict allocator, >+ uint8_t *restrict out, size_t *restrict out_pos, >+ size_t out_size, > lzma_vli *restrict unpadded_size, > lzma_vli *restrict uncompressed_size) > { > // There must be at least one buffer from which to read. >- if (outq->bufs_used == 0) >+ if (outq->bufs_in_use == 0) > return LZMA_OK; > > // Get the buffer. >- uint32_t i = outq->bufs_pos - outq->bufs_used; >- if (outq->bufs_pos < outq->bufs_used) >- i += outq->bufs_allocated; >+ lzma_outbuf *buf = outq->head; > >- lzma_outbuf *buf = &outq->bufs[i]; >- >- // If it isn't finished yet, we cannot read from it. >- if (!buf->finished) >- return LZMA_OK; >- > // Copy from the buffer to output. >- lzma_bufcpy(buf->buf, &outq->read_pos, buf->size, >+ // >+ // FIXME? In threaded decoder it may be bad to do this copy while >+ // the mutex is being held. >+ lzma_bufcpy(buf->buf, &outq->read_pos, buf->pos, > out, out_pos, out_size); > > // Return if we didn't get all the data from the buffer. >- if (outq->read_pos < buf->size) >+ if (!buf->finished || outq->read_pos < buf->pos) > return LZMA_OK; > > // The buffer was finished. Tell the caller its size information. >- *unpadded_size = buf->unpadded_size; >- *uncompressed_size = buf->uncompressed_size; >+ if (unpadded_size != NULL) >+ *unpadded_size = buf->unpadded_size; > >+ if (uncompressed_size != NULL) >+ *uncompressed_size = buf->uncompressed_size; >+ >+ // Remember the return value. >+ const lzma_ret finish_ret = buf->finish_ret; >+ > // Free this buffer for further use. >- --outq->bufs_used; >+ move_head_to_cache(outq, allocator); > outq->read_pos = 0; > >- return LZMA_STREAM_END; >+ return finish_ret; >+} >+ >+ >+extern void >+lzma_outq_enable_partial_output(lzma_outq *outq, >+ void (*enable_partial_output)(void *worker)) >+{ >+ if (outq->head != NULL && !outq->head->finished >+ && outq->head->worker != NULL) { >+ enable_partial_output(outq->head->worker); >+ >+ // Set it to NULL since calling it twice is pointless. >+ outq->head->worker = NULL; >+ } >+ >+ return; > } >diff -ur xz-5.2.5/src/liblzma/common/outqueue.h xz-5.4.3/src/liblzma/common/outqueue.h >--- xz-5.2.5/src/liblzma/common/outqueue.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/outqueue.h 2023-05-04 17:21:05 >@@ -14,49 +14,92 @@ > > > /// Output buffer for a single thread >-typedef struct { >- /// Pointer to the output buffer of lzma_outq.buf_size_max bytes >- uint8_t *buf; >+typedef struct lzma_outbuf_s lzma_outbuf; >+struct lzma_outbuf_s { >+ /// Pointer to the next buffer. This is used for the cached buffers. >+ /// The worker thread must not modify this. >+ lzma_outbuf *next; > >- /// Amount of data written to buf >- size_t size; >+ /// This initialized by lzma_outq_get_buf() and >+ /// is used by lzma_outq_enable_partial_output(). >+ /// The worker thread must not modify this. >+ void *worker; > >- /// Additional size information >- lzma_vli unpadded_size; >- lzma_vli uncompressed_size; >+ /// Amount of memory allocated for buf[]. >+ /// The worker thread must not modify this. >+ size_t allocated; > >+ /// Writing position in the worker thread or, in other words, the >+ /// amount of finished data written to buf[] which can be copied out >+ /// >+ /// \note This is read by another thread and thus access >+ /// to this variable needs a mutex. >+ size_t pos; >+ >+ /// Decompression: Position in the input buffer in the worker thread >+ /// that matches the output "pos" above. This is used to detect if >+ /// more output might be possible from the worker thread: if it has >+ /// consumed all its input, then more output isn't possible. >+ /// >+ /// \note This is read by another thread and thus access >+ /// to this variable needs a mutex. >+ size_t decoder_in_pos; >+ > /// True when no more data will be written into this buffer. > /// > /// \note This is read by another thread and thus access > /// to this variable needs a mutex. > bool finished; > >-} lzma_outbuf; >+ /// Return value for lzma_outq_read() when the last byte from >+ /// a finished buffer has been read. Defaults to LZMA_STREAM_END. >+ /// This must *not* be LZMA_OK. The idea is to allow a decoder to >+ /// pass an error code to the main thread, setting the code here >+ /// together with finished = true. >+ lzma_ret finish_ret; > >+ /// Additional size information. lzma_outq_read() may read these >+ /// when "finished" is true. >+ lzma_vli unpadded_size; >+ lzma_vli uncompressed_size; > >+ /// Buffer of "allocated" bytes >+ uint8_t buf[]; >+}; >+ >+ > typedef struct { >- /// Array of buffers that are used cyclically. >- lzma_outbuf *bufs; >+ /// Linked list of buffers in use. The next output byte will be >+ /// read from the head and buffers for the next thread will be >+ /// appended to the tail. tail->next is always NULL. >+ lzma_outbuf *head; >+ lzma_outbuf *tail; > >- /// Memory allocated for all the buffers >- uint8_t *bufs_mem; >+ /// Number of bytes read from head->buf[] in lzma_outq_read() >+ size_t read_pos; > >- /// Amount of buffer space available in each buffer >- size_t buf_size_max; >+ /// Linked list of allocated buffers that aren't currently used. >+ /// This way buffers of similar size can be reused and don't >+ /// need to be reallocated every time. For simplicity, all >+ /// cached buffers in the list have the same allocated size. >+ lzma_outbuf *cache; > >- /// Number of buffers allocated >- uint32_t bufs_allocated; >+ /// Total amount of memory allocated for buffers >+ uint64_t mem_allocated; > >- /// Position in the bufs array. The next buffer to be taken >- /// into use is bufs[bufs_pos]. >- uint32_t bufs_pos; >+ /// Amount of memory used by the buffers that are in use in >+ /// the head...tail linked list. >+ uint64_t mem_in_use; > >- /// Number of buffers in use >- uint32_t bufs_used; >+ /// Number of buffers in use in the head...tail list. If and only if >+ /// this is zero, the pointers head and tail above are NULL. >+ uint32_t bufs_in_use; > >- /// Position in the buffer in lzma_outq_read() >- size_t read_pos; >+ /// Number of buffers allocated (in use + cached) >+ uint32_t bufs_allocated; > >+ /// Maximum allowed number of allocated buffers >+ uint32_t bufs_limit; > } lzma_outq; > > >@@ -76,32 +119,60 @@ > /// function knows that there are no previous > /// allocations to free. > /// \param allocator Pointer to allocator or NULL >-/// \param buf_size_max Maximum amount of data that a single buffer >-/// in the queue may need to store. > /// \param threads Number of buffers that may be in use > /// concurrently. Note that more than this number >-/// of buffers will actually get allocated to >+/// of buffers may actually get allocated to > /// improve performance when buffers finish >-/// out of order. >+/// out of order. The actual maximum number of >+/// allocated buffers is derived from the number >+/// of threads. > /// > /// \return - LZMA_OK > /// - LZMA_MEM_ERROR > /// >-extern lzma_ret lzma_outq_init( >- lzma_outq *outq, const lzma_allocator *allocator, >- uint64_t buf_size_max, uint32_t threads); >+extern lzma_ret lzma_outq_init(lzma_outq *outq, >+ const lzma_allocator *allocator, uint32_t threads); > > > /// \brief Free the memory associated with the output queue > extern void lzma_outq_end(lzma_outq *outq, const lzma_allocator *allocator); > > >+/// \brief Free all cached buffers that consume memory but aren't in use >+extern void lzma_outq_clear_cache( >+ lzma_outq *outq, const lzma_allocator *allocator); >+ >+ >+/// \brief Like lzma_outq_clear_cache() but might keep one buffer >+/// >+/// One buffer is not freed if its size is equal to keep_size. >+/// This is useful if the caller knows that it will soon need a buffer of >+/// keep_size bytes. This way it won't be freed and immediately reallocated. >+extern void lzma_outq_clear_cache2( >+ lzma_outq *outq, const lzma_allocator *allocator, >+ size_t keep_size); >+ >+ >+/// \brief Preallocate a new buffer into cache >+/// >+/// Splitting the buffer allocation into a separate function makes it >+/// possible to ensure that way lzma_outq_get_buf() cannot fail. >+/// If the preallocated buffer isn't actually used (for example, some >+/// other error occurs), the caller has to do nothing as the buffer will >+/// be used later or cleared from the cache when not needed. >+/// >+/// \return LZMA_OK on success, LZMA_MEM_ERROR if allocation fails >+/// >+extern lzma_ret lzma_outq_prealloc_buf( >+ lzma_outq *outq, const lzma_allocator *allocator, size_t size); >+ >+ > /// \brief Get a new buffer > /// >-/// lzma_outq_has_buf() must be used to check that there is a buffer >+/// lzma_outq_prealloc_buf() must be used to ensure that there is a buffer > /// available before calling lzma_outq_get_buf(). > /// >-extern lzma_outbuf *lzma_outq_get_buf(lzma_outq *outq); >+extern lzma_outbuf *lzma_outq_get_buf(lzma_outq *outq, void *worker); > > > /// \brief Test if there is data ready to be read >@@ -126,17 +197,32 @@ > /// \return - LZMA: All OK. Either no data was available or the buffer > /// being read didn't become empty yet. > /// - LZMA_STREAM_END: The buffer being read was finished. >-/// *unpadded_size and *uncompressed_size were set. >+/// *unpadded_size and *uncompressed_size were set if they >+/// were not NULL. > /// >-/// \note This reads lzma_outbuf.finished variables and thus call >-/// to this function needs to be protected with a mutex. >+/// \note This reads lzma_outbuf.finished and .pos variables and thus >+/// calls to this function need to be protected with a mutex. > /// > extern lzma_ret lzma_outq_read(lzma_outq *restrict outq, >+ const lzma_allocator *restrict allocator, > uint8_t *restrict out, size_t *restrict out_pos, > size_t out_size, lzma_vli *restrict unpadded_size, > lzma_vli *restrict uncompressed_size); > > >+/// \brief Enable partial output from a worker thread >+/// >+/// If the buffer at the head of the output queue isn't finished, >+/// this will call enable_partial_output on the worker associated with >+/// that output buffer. >+/// >+/// \note This reads a lzma_outbuf.finished variable and thus >+/// calls to this function need to be protected with a mutex. >+/// >+extern void lzma_outq_enable_partial_output(lzma_outq *outq, >+ void (*enable_partial_output)(void *worker)); >+ >+ > /// \brief Test if there is at least one buffer free > /// > /// This must be used before getting a new buffer with lzma_outq_get_buf(). >@@ -144,7 +230,7 @@ > static inline bool > lzma_outq_has_buf(const lzma_outq *outq) > { >- return outq->bufs_used < outq->bufs_allocated; >+ return outq->bufs_in_use < outq->bufs_limit; > } > > >@@ -152,5 +238,17 @@ > static inline bool > lzma_outq_is_empty(const lzma_outq *outq) > { >- return outq->bufs_used == 0; >+ return outq->bufs_in_use == 0; >+} >+ >+ >+/// \brief Get the amount of memory needed for a single lzma_outbuf >+/// >+/// \note Caller must check that the argument is significantly less >+/// than SIZE_MAX to avoid an integer overflow! >+static inline uint64_t >+lzma_outq_outbuf_memusage(size_t buf_size) >+{ >+ assert(buf_size <= SIZE_MAX - sizeof(lzma_outbuf)); >+ return sizeof(lzma_outbuf) + buf_size; > } >diff -ur xz-5.2.5/src/liblzma/common/stream_buffer_encoder.c xz-5.4.3/src/liblzma/common/stream_buffer_encoder.c >--- xz-5.2.5/src/liblzma/common/stream_buffer_encoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/stream_buffer_encoder.c 2023-05-04 17:21:05 >@@ -10,6 +10,7 @@ > // > /////////////////////////////////////////////////////////////////////////////// > >+#include "common.h" > #include "index.h" > > >diff -ur xz-5.2.5/src/liblzma/common/stream_decoder.c xz-5.4.3/src/liblzma/common/stream_decoder.c >--- xz-5.2.5/src/liblzma/common/stream_decoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/stream_decoder.c 2023-05-04 17:21:05 >@@ -12,21 +12,21 @@ > > #include "stream_decoder.h" > #include "block_decoder.h" >+#include "index.h" > > > typedef struct { > enum { > SEQ_STREAM_HEADER, > SEQ_BLOCK_HEADER, >- SEQ_BLOCK, >+ SEQ_BLOCK_INIT, >+ SEQ_BLOCK_RUN, > SEQ_INDEX, > SEQ_STREAM_FOOTER, > SEQ_STREAM_PADDING, > } sequence; > >- /// Block or Metadata decoder. This takes little memory and the same >- /// data structure can be used to decode every Block Header, so it's >- /// a good idea to have a separate lzma_next_coder structure for it. >+ /// Block decoder > lzma_next_coder block_decoder; > > /// Block options decoded by the Block Header decoder and used by >@@ -63,9 +63,9 @@ > > /// If true, we will decode concatenated Streams that possibly have > /// Stream Padding between or after them. LZMA_STREAM_END is returned >- /// once the application isn't giving us any new input, and we aren't >- /// in the middle of a Stream, and possible Stream Padding is a >- /// multiple of four bytes. >+ /// once the application isn't giving us any new input (LZMA_FINISH), >+ /// and we aren't in the middle of a Stream, and possible >+ /// Stream Padding is a multiple of four bytes. > bool concatenated; > > /// When decoding concatenated Streams, this is true as long as we >@@ -165,7 +165,7 @@ > > if (coder->pos == 0) { > // Detect if it's Index. >- if (in[*in_pos] == 0x00) { >+ if (in[*in_pos] == INDEX_INDICATOR) { > coder->sequence = SEQ_INDEX; > break; > } >@@ -187,7 +187,16 @@ > return LZMA_OK; > > coder->pos = 0; >+ coder->sequence = SEQ_BLOCK_INIT; >+ } > >+ // Fall through >+ >+ case SEQ_BLOCK_INIT: { >+ // Checking memusage and doing the initialization needs >+ // its own sequence point because we need to be able to >+ // retry if we return LZMA_MEMLIMIT_ERROR. >+ > // Version 1 is needed to support the .ignore_check option. > coder->block_options.version = 1; > >@@ -235,22 +244,20 @@ > > // Free the allocated filter options since they are needed > // only to initialize the Block decoder. >- for (size_t i = 0; i < LZMA_FILTERS_MAX; ++i) >- lzma_free(filters[i].options, allocator); >- >+ lzma_filters_free(filters, allocator); > coder->block_options.filters = NULL; > >- // Check if memory usage calculation and Block enocoder >+ // Check if memory usage calculation and Block decoder > // initialization succeeded. > if (ret != LZMA_OK) > return ret; > >- coder->sequence = SEQ_BLOCK; >+ coder->sequence = SEQ_BLOCK_RUN; > } > > // Fall through > >- case SEQ_BLOCK: { >+ case SEQ_BLOCK_RUN: { > const lzma_ret ret = coder->block_decoder.code( > coder->block_decoder.coder, allocator, > in, in_pos, in_size, out, out_pos, out_size, >Only in xz-5.4.3/src/liblzma/common: stream_decoder_mt.c >diff -ur xz-5.2.5/src/liblzma/common/stream_encoder.c xz-5.4.3/src/liblzma/common/stream_encoder.c >--- xz-5.2.5/src/liblzma/common/stream_encoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/stream_encoder.c 2023-05-04 17:21:05 >@@ -219,8 +219,7 @@ > lzma_next_end(&coder->index_encoder, allocator); > lzma_index_end(coder->index, allocator); > >- for (size_t i = 0; coder->filters[i].id != LZMA_VLI_UNKNOWN; ++i) >- lzma_free(coder->filters[i].options, allocator); >+ lzma_filters_free(coder->filters, allocator); > > lzma_free(coder, allocator); > return; >@@ -233,38 +232,54 @@ > const lzma_filter *reversed_filters) > { > lzma_stream_coder *coder = coder_ptr; >+ lzma_ret ret; > >+ // Make a copy to a temporary buffer first. This way it is easier >+ // to keep the encoder state unchanged if an error occurs with >+ // lzma_filters_copy(). >+ lzma_filter temp[LZMA_FILTERS_MAX + 1]; >+ return_if_error(lzma_filters_copy(filters, temp, allocator)); >+ > if (coder->sequence <= SEQ_BLOCK_INIT) { > // There is no incomplete Block waiting to be finished, > // thus we can change the whole filter chain. Start by > // trying to initialize the Block encoder with the new > // chain. This way we detect if the chain is valid. > coder->block_encoder_is_initialized = false; >- coder->block_options.filters = (lzma_filter *)(filters); >- const lzma_ret ret = block_encoder_init(coder, allocator); >+ coder->block_options.filters = temp; >+ ret = block_encoder_init(coder, allocator); > coder->block_options.filters = coder->filters; > if (ret != LZMA_OK) >- return ret; >+ goto error; > > coder->block_encoder_is_initialized = true; > > } else if (coder->sequence <= SEQ_BLOCK_ENCODE) { > // We are in the middle of a Block. Try to update only > // the filter-specific options. >- return_if_error(coder->block_encoder.update( >+ ret = coder->block_encoder.update( > coder->block_encoder.coder, allocator, >- filters, reversed_filters)); >+ filters, reversed_filters); >+ if (ret != LZMA_OK) >+ goto error; > } else { > // Trying to update the filter chain when we are already > // encoding Index or Stream Footer. >- return LZMA_PROG_ERROR; >+ ret = LZMA_PROG_ERROR; >+ goto error; > } > >- // Free the copy of the old chain and make a copy of the new chain. >- for (size_t i = 0; coder->filters[i].id != LZMA_VLI_UNKNOWN; ++i) >- lzma_free(coder->filters[i].options, allocator); >+ // Free the options of the old chain. >+ lzma_filters_free(coder->filters, allocator); > >- return lzma_filters_copy(filters, coder->filters, allocator); >+ // Copy the new filter chain in place. >+ memcpy(coder->filters, temp, sizeof(temp)); >+ >+ return LZMA_OK; >+ >+error: >+ lzma_filters_free(temp, allocator); >+ return ret; > } > > >@@ -319,7 +334,7 @@ > > // Initialize the Block encoder. This way we detect unsupported > // filter chains when initializing the Stream encoder instead of >- // giving an error after Stream Header has already written out. >+ // giving an error after Stream Header has already been written out. > return stream_encoder_update(coder, allocator, filters, NULL); > } > >diff -ur xz-5.2.5/src/liblzma/common/stream_encoder_mt.c xz-5.4.3/src/liblzma/common/stream_encoder_mt.c >--- xz-5.2.5/src/liblzma/common/stream_encoder_mt.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/common/stream_encoder_mt.c 2023-05-04 17:21:05 >@@ -85,6 +85,11 @@ > /// Compression options for this Block > lzma_block block_options; > >+ /// Filter chain for this thread. By copying the filters array >+ /// to each thread it is possible to change the filter chain >+ /// between Blocks using lzma_filters_update(). >+ lzma_filter filters[LZMA_FILTERS_MAX + 1]; >+ > /// Next structure in the stack of free worker threads. > worker_thread *next; > >@@ -109,10 +114,23 @@ > /// LZMA_FULL_FLUSH or LZMA_FULL_BARRIER is used earlier. > size_t block_size; > >- /// The filter chain currently in use >+ /// The filter chain to use for the next Block. >+ /// This can be updated using lzma_filters_update() >+ /// after LZMA_FULL_BARRIER or LZMA_FULL_FLUSH. > lzma_filter filters[LZMA_FILTERS_MAX + 1]; > >+ /// A copy of filters[] will be put here when attempting to get >+ /// a new worker thread. This will be copied to a worker thread >+ /// when a thread becomes free and then this cache is marked as >+ /// empty by setting [0].id = LZMA_VLI_UNKNOWN. Without this cache >+ /// the filter options from filters[] would get uselessly copied >+ /// multiple times (allocated and freed) when waiting for a new free >+ /// worker thread. >+ /// >+ /// This is freed if filters[] is updated via lzma_filters_update(). >+ lzma_filter filters_cache[LZMA_FILTERS_MAX + 1]; > >+ > /// Index to hold sizes of the Blocks > lzma_index *index; > >@@ -133,7 +151,10 @@ > /// Output buffer queue for compressed data > lzma_outq outq; > >+ /// How much memory to allocate for each lzma_outbuf.buf >+ size_t outbuf_alloc_size; > >+ > /// Maximum wait time if cannot use all the input and cannot > /// fill the output buffer. This is in milliseconds. > uint32_t timeout; >@@ -196,7 +217,7 @@ > > > static worker_state >-worker_encode(worker_thread *thr, worker_state state) >+worker_encode(worker_thread *thr, size_t *out_pos, worker_state state) > { > assert(thr->progress_in == 0); > assert(thr->progress_out == 0); >@@ -205,12 +226,9 @@ > thr->block_options = (lzma_block){ > .version = 0, > .check = thr->coder->stream_flags.check, >- .compressed_size = thr->coder->outq.buf_size_max, >+ .compressed_size = thr->outbuf->allocated, > .uncompressed_size = thr->coder->block_size, >- >- // TODO: To allow changing the filter chain, the filters >- // array must be copied to each worker_thread. >- .filters = thr->coder->filters, >+ .filters = thr->filters, > }; > > // Calculate maximum size of the Block Header. This amount is >@@ -234,12 +252,12 @@ > size_t in_pos = 0; > size_t in_size = 0; > >- thr->outbuf->size = thr->block_options.header_size; >- const size_t out_size = thr->coder->outq.buf_size_max; >+ *out_pos = thr->block_options.header_size; >+ const size_t out_size = thr->outbuf->allocated; > > do { > mythread_sync(thr->mutex) { >- // Store in_pos and out_pos into *thr so that >+ // Store in_pos and *out_pos into *thr so that > // an application may read them via > // lzma_get_progress() to get progress information. > // >@@ -247,7 +265,7 @@ > // finishes. Instead, the final values are taken > // later from thr->outbuf. > thr->progress_in = in_pos; >- thr->progress_out = thr->outbuf->size; >+ thr->progress_out = *out_pos; > > while (in_size == thr->in_size > && thr->state == THR_RUN) >@@ -277,8 +295,8 @@ > ret = thr->block_encoder.code( > thr->block_encoder.coder, thr->allocator, > thr->in, &in_pos, in_limit, thr->outbuf->buf, >- &thr->outbuf->size, out_size, action); >- } while (ret == LZMA_OK && thr->outbuf->size < out_size); >+ out_pos, out_size, action); >+ } while (ret == LZMA_OK && *out_pos < out_size); > > switch (ret) { > case LZMA_STREAM_END: >@@ -313,10 +331,10 @@ > return state; > > // Do the encoding. This takes care of the Block Header too. >- thr->outbuf->size = 0; >+ *out_pos = 0; > ret = lzma_block_uncomp_encode(&thr->block_options, > thr->in, in_size, thr->outbuf->buf, >- &thr->outbuf->size, out_size); >+ out_pos, out_size); > > // It shouldn't fail. > if (ret != LZMA_OK) { >@@ -367,11 +385,13 @@ > } > } > >+ size_t out_pos = 0; >+ > assert(state != THR_IDLE); > assert(state != THR_STOP); > > if (state <= THR_FINISH) >- state = worker_encode(thr, state); >+ state = worker_encode(thr, &out_pos, state); > > if (state == THR_EXIT) > break; >@@ -387,14 +407,17 @@ > } > > mythread_sync(thr->coder->mutex) { >- // Mark the output buffer as finished if >- // no errors occurred. >- thr->outbuf->finished = state == THR_FINISH; >+ // If no errors occurred, make the encoded data >+ // available to be copied out. >+ if (state == THR_FINISH) { >+ thr->outbuf->pos = out_pos; >+ thr->outbuf->finished = true; >+ } > > // Update the main progress info. > thr->coder->progress_in > += thr->outbuf->uncompressed_size; >- thr->coder->progress_out += thr->outbuf->size; >+ thr->coder->progress_out += out_pos; > thr->progress_in = 0; > thr->progress_out = 0; > >@@ -407,6 +430,8 @@ > } > > // Exiting, free the resources. >+ lzma_filters_free(thr->filters, thr->allocator); >+ > mythread_mutex_destroy(&thr->mutex); > mythread_cond_destroy(&thr->cond); > >@@ -490,6 +515,7 @@ > thr->progress_in = 0; > thr->progress_out = 0; > thr->block_encoder = LZMA_NEXT_CODER_INIT; >+ thr->filters[0].id = LZMA_VLI_UNKNOWN; > > if (mythread_create(&thr->thread_id, &worker_start, thr)) > goto error_thread; >@@ -519,6 +545,18 @@ > if (!lzma_outq_has_buf(&coder->outq)) > return LZMA_OK; > >+ // That's also true if we cannot allocate memory for the output >+ // buffer in the output queue. >+ return_if_error(lzma_outq_prealloc_buf(&coder->outq, allocator, >+ coder->outbuf_alloc_size)); >+ >+ // Make a thread-specific copy of the filter chain. Put it in >+ // the cache array first so that if we cannot get a new thread yet, >+ // the allocation is ready when we try again. >+ if (coder->filters_cache[0].id == LZMA_VLI_UNKNOWN) >+ return_if_error(lzma_filters_copy( >+ coder->filters, coder->filters_cache, allocator)); >+ > // If there is a free structure on the stack, use it. > mythread_sync(coder->mutex) { > if (coder->threads_free != NULL) { >@@ -541,7 +579,16 @@ > mythread_sync(coder->thr->mutex) { > coder->thr->state = THR_RUN; > coder->thr->in_size = 0; >- coder->thr->outbuf = lzma_outq_get_buf(&coder->outq); >+ coder->thr->outbuf = lzma_outq_get_buf(&coder->outq, NULL); >+ >+ // Free the old thread-specific filter options and replace >+ // them with the already-allocated new options from >+ // coder->filters_cache[]. Then mark the cache as empty. >+ lzma_filters_free(coder->thr->filters, allocator); >+ memcpy(coder->thr->filters, coder->filters_cache, >+ sizeof(coder->filters_cache)); >+ coder->filters_cache[0].id = LZMA_VLI_UNKNOWN; >+ > mythread_cond_signal(&coder->thr->cond); > } > >@@ -598,7 +645,7 @@ > } > > if (block_error) { >- lzma_ret ret; >+ lzma_ret ret = LZMA_OK; // Init to silence a warning. > > mythread_sync(coder->mutex) { > ret = coder->thread_error; >@@ -627,9 +674,13 @@ > // to true here and calculate the absolute time when > // we must return if there's nothing to do. > // >- // The idea of *has_blocked is to avoid unneeded calls >- // to mythread_condtime_set(), which may do a syscall >- // depending on the operating system. >+ // This way if we block multiple times for short moments >+ // less than "timeout" milliseconds, we will return once >+ // "timeout" amount of time has passed since the *first* >+ // blocking occurred. If the absolute time was calculated >+ // again every time we block, "timeout" would effectively >+ // be meaningless if we never consecutively block longer >+ // than "timeout" ms. > *has_blocked = true; > mythread_condtime_set(wait_abs, &coder->cond, coder->timeout); > } >@@ -704,7 +755,7 @@ > } > > // Try to read compressed data to out[]. >- ret = lzma_outq_read(&coder->outq, >+ ret = lzma_outq_read(&coder->outq, allocator, > out, out_pos, out_size, > &unpadded_size, > &uncompressed_size); >@@ -715,6 +766,10 @@ > ret = lzma_index_append(coder->index, > allocator, unpadded_size, > uncompressed_size); >+ if (ret != LZMA_OK) { >+ threads_stop(coder, false); >+ return ret; >+ } > > // If we didn't fill the output buffer yet, > // try to read more data. Maybe the next >@@ -724,8 +779,7 @@ > } > > if (ret != LZMA_OK) { >- // coder->thread_error was set or >- // lzma_index_append() failed. >+ // coder->thread_error was set. > threads_stop(coder, false); > return ret; > } >@@ -846,8 +900,8 @@ > threads_end(coder, allocator); > lzma_outq_end(&coder->outq, allocator); > >- for (size_t i = 0; coder->filters[i].id != LZMA_VLI_UNKNOWN; ++i) >- lzma_free(coder->filters[i].options, allocator); >+ lzma_filters_free(coder->filters, allocator); >+ lzma_filters_free(coder->filters_cache, allocator); > > lzma_next_end(&coder->index_encoder, allocator); > lzma_index_end(coder->index, allocator); >@@ -860,6 +914,45 @@ > } > > >+static lzma_ret >+stream_encoder_mt_update(void *coder_ptr, const lzma_allocator *allocator, >+ const lzma_filter *filters, >+ const lzma_filter *reversed_filters >+ lzma_attribute((__unused__))) >+{ >+ lzma_stream_coder *coder = coder_ptr; >+ >+ // Applications shouldn't attempt to change the options when >+ // we are already encoding the Index or Stream Footer. >+ if (coder->sequence > SEQ_BLOCK) >+ return LZMA_PROG_ERROR; >+ >+ // For now the threaded encoder doesn't support changing >+ // the options in the middle of a Block. >+ if (coder->thr != NULL) >+ return LZMA_PROG_ERROR; >+ >+ // Check if the filter chain seems mostly valid. See the comment >+ // in stream_encoder_mt_init(). >+ if (lzma_raw_encoder_memusage(filters) == UINT64_MAX) >+ return LZMA_OPTIONS_ERROR; >+ >+ // Make a copy to a temporary buffer first. This way the encoder >+ // state stays unchanged if an error occurs in lzma_filters_copy(). >+ lzma_filter temp[LZMA_FILTERS_MAX + 1]; >+ return_if_error(lzma_filters_copy(filters, temp, allocator)); >+ >+ // Free the options of the old chain as well as the cache. >+ lzma_filters_free(coder->filters, allocator); >+ lzma_filters_free(coder->filters_cache, allocator); >+ >+ // Copy the new filter chain in place. >+ memcpy(coder->filters, temp, sizeof(temp)); >+ >+ return LZMA_OK; >+} >+ >+ > /// Options handling for lzma_stream_encoder_mt_init() and > /// lzma_stream_encoder_mt_memusage() > static lzma_ret >@@ -951,14 +1044,16 @@ > &block_size, &outbuf_size_max)); > > #if SIZE_MAX < UINT64_MAX >- if (block_size > SIZE_MAX) >+ if (block_size > SIZE_MAX || outbuf_size_max > SIZE_MAX) > return LZMA_MEM_ERROR; > #endif > > // Validate the filter chain so that we can give an error in this > // function instead of delaying it to the first call to lzma_code(). > // The memory usage calculation verifies the filter chain as >- // a side effect so we take advantage of that. >+ // a side effect so we take advantage of that. It's not a perfect >+ // check though as raw encoder allows LZMA1 too but such problems >+ // will be caught eventually with Block Header encoder. > if (lzma_raw_encoder_memusage(filters) == UINT64_MAX) > return LZMA_OPTIONS_ERROR; > >@@ -998,9 +1093,10 @@ > next->code = &stream_encode_mt; > next->end = &stream_encoder_mt_end; > next->get_progress = &get_progress; >-// next->update = &stream_encoder_mt_update; >+ next->update = &stream_encoder_mt_update; > > coder->filters[0].id = LZMA_VLI_UNKNOWN; >+ coder->filters_cache[0].id = LZMA_VLI_UNKNOWN; > coder->index_encoder = LZMA_NEXT_CODER_INIT; > coder->index = NULL; > memzero(&coder->outq, sizeof(coder->outq)); >@@ -1012,6 +1108,7 @@ > // Basic initializations > coder->sequence = SEQ_STREAM_HEADER; > coder->block_size = (size_t)(block_size); >+ coder->outbuf_alloc_size = (size_t)(outbuf_size_max); > coder->thread_error = LZMA_OK; > coder->thr = NULL; > >@@ -1041,15 +1138,16 @@ > > // Output queue > return_if_error(lzma_outq_init(&coder->outq, allocator, >- outbuf_size_max, options->threads)); >+ options->threads)); > > // Timeout > coder->timeout = options->timeout; > >- // Free the old filter chain and copy the new one. >- for (size_t i = 0; coder->filters[i].id != LZMA_VLI_UNKNOWN; ++i) >- lzma_free(coder->filters[i].options, allocator); >+ // Free the old filter chain and the cache. >+ lzma_filters_free(coder->filters, allocator); >+ lzma_filters_free(coder->filters_cache, allocator); > >+ // Copy the new filter chain. > return_if_error(lzma_filters_copy( > filters, coder->filters, allocator)); > >@@ -1075,6 +1173,31 @@ > } > > >+#ifdef HAVE_SYMBOL_VERSIONS_LINUX >+// These are for compatibility with binaries linked against liblzma that >+// has been patched with xz-5.2.2-compat-libs.patch from RHEL/CentOS 7. >+// Actually that patch didn't create lzma_stream_encoder_mt@XZ_5.2.2 >+// but it has been added here anyway since someone might misread the >+// RHEL patch and think both @XZ_5.1.2alpha and @XZ_5.2.2 exist. >+LZMA_SYMVER_API("lzma_stream_encoder_mt@XZ_5.1.2alpha", >+ lzma_ret, lzma_stream_encoder_mt_512a)( >+ lzma_stream *strm, const lzma_mt *options) >+ lzma_nothrow lzma_attr_warn_unused_result >+ __attribute__((__alias__("lzma_stream_encoder_mt_52"))); >+ >+LZMA_SYMVER_API("lzma_stream_encoder_mt@XZ_5.2.2", >+ lzma_ret, lzma_stream_encoder_mt_522)( >+ lzma_stream *strm, const lzma_mt *options) >+ lzma_nothrow lzma_attr_warn_unused_result >+ __attribute__((__alias__("lzma_stream_encoder_mt_52"))); >+ >+LZMA_SYMVER_API("lzma_stream_encoder_mt@@XZ_5.2", >+ lzma_ret, lzma_stream_encoder_mt_52)( >+ lzma_stream *strm, const lzma_mt *options) >+ lzma_nothrow lzma_attr_warn_unused_result; >+ >+#define lzma_stream_encoder_mt lzma_stream_encoder_mt_52 >+#endif > extern LZMA_API(lzma_ret) > lzma_stream_encoder_mt(lzma_stream *strm, const lzma_mt *options) > { >@@ -1090,6 +1213,23 @@ > } > > >+#ifdef HAVE_SYMBOL_VERSIONS_LINUX >+LZMA_SYMVER_API("lzma_stream_encoder_mt_memusage@XZ_5.1.2alpha", >+ uint64_t, lzma_stream_encoder_mt_memusage_512a)( >+ const lzma_mt *options) lzma_nothrow lzma_attr_pure >+ __attribute__((__alias__("lzma_stream_encoder_mt_memusage_52"))); >+ >+LZMA_SYMVER_API("lzma_stream_encoder_mt_memusage@XZ_5.2.2", >+ uint64_t, lzma_stream_encoder_mt_memusage_522)( >+ const lzma_mt *options) lzma_nothrow lzma_attr_pure >+ __attribute__((__alias__("lzma_stream_encoder_mt_memusage_52"))); >+ >+LZMA_SYMVER_API("lzma_stream_encoder_mt_memusage@@XZ_5.2", >+ uint64_t, lzma_stream_encoder_mt_memusage_52)( >+ const lzma_mt *options) lzma_nothrow lzma_attr_pure; >+ >+#define lzma_stream_encoder_mt_memusage lzma_stream_encoder_mt_memusage_52 >+#endif > // This function name is a monster but it's consistent with the older > // monster names. :-( 31 chars is the max that C99 requires so in that > // sense it's not too long. ;-) >diff -ur xz-5.2.5/src/liblzma/common/stream_flags_decoder.c xz-5.4.3/src/liblzma/common/stream_flags_decoder.c >--- xz-5.2.5/src/liblzma/common/stream_flags_decoder.c 2020-03-17 17:28:54 >+++ xz-5.4.3/src/liblzma/common/stream_flags_decoder.c 2023-05-04 17:21:05 >@@ -39,8 +39,11 @@ > const uint32_t crc = lzma_crc32(in + sizeof(lzma_header_magic), > LZMA_STREAM_FLAGS_SIZE, 0); > if (crc != read32le(in + sizeof(lzma_header_magic) >- + LZMA_STREAM_FLAGS_SIZE)) >+ + LZMA_STREAM_FLAGS_SIZE)) { >+#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION > return LZMA_DATA_ERROR; >+#endif >+ } > > // Stream Flags > if (stream_flags_decode(options, in + sizeof(lzma_header_magic))) >@@ -67,8 +70,11 @@ > // CRC32 > const uint32_t crc = lzma_crc32(in + sizeof(uint32_t), > sizeof(uint32_t) + LZMA_STREAM_FLAGS_SIZE, 0); >- if (crc != read32le(in)) >+ if (crc != read32le(in)) { >+#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION > return LZMA_DATA_ERROR; >+#endif >+ } > > // Stream Flags > if (stream_flags_decode(options, in + sizeof(uint32_t) * 2)) >Only in xz-5.4.3/src/liblzma/common: string_conversion.c >diff -ur xz-5.2.5/src/liblzma/delta/delta_decoder.c xz-5.4.3/src/liblzma/delta/delta_decoder.c >--- xz-5.2.5/src/liblzma/delta/delta_decoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/delta/delta_decoder.c 2023-05-04 17:21:05 >@@ -42,7 +42,12 @@ > in, in_pos, in_size, out, out_pos, out_size, > action); > >- decode_buffer(coder, out + out_start, *out_pos - out_start); >+ // out might be NULL. In that case size == 0. Null pointer + 0 is >+ // undefined behavior so skip the call in that case as it would >+ // do nothing anyway. >+ const size_t size = *out_pos - out_start; >+ if (size > 0) >+ decode_buffer(coder, out + out_start, size); > > return ret; > } >diff -ur xz-5.2.5/src/liblzma/delta/delta_encoder.c xz-5.4.3/src/liblzma/delta/delta_encoder.c >--- xz-5.2.5/src/liblzma/delta/delta_encoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/delta/delta_encoder.c 2023-05-04 17:21:05 >@@ -63,7 +63,12 @@ > const size_t out_avail = out_size - *out_pos; > const size_t size = my_min(in_avail, out_avail); > >- copy_and_encode(coder, in + *in_pos, out + *out_pos, size); >+ // in and out might be NULL. In such cases size == 0. >+ // Null pointer + 0 is undefined behavior so skip >+ // the call in that case as it would do nothing anyway. >+ if (size > 0) >+ copy_and_encode(coder, in + *in_pos, out + *out_pos, >+ size); > > *in_pos += size; > *out_pos += size; >@@ -78,7 +83,10 @@ > in, in_pos, in_size, out, out_pos, out_size, > action); > >- encode_in_place(coder, out + out_start, *out_pos - out_start); >+ // Like above, avoid null pointer + 0. >+ const size_t size = *out_pos - out_start; >+ if (size > 0) >+ encode_in_place(coder, out + out_start, size); > } > > return ret; >Only in xz-5.2.5/src/liblzma: liblzma.map >Only in xz-5.4.3/src/liblzma: liblzma_generic.map >Only in xz-5.4.3/src/liblzma: liblzma_linux.map >diff -ur xz-5.2.5/src/liblzma/lz/lz_decoder.c xz-5.4.3/src/liblzma/lz/lz_decoder.c >--- xz-5.2.5/src/liblzma/lz/lz_decoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/lz/lz_decoder.c 2023-05-04 17:21:05 >@@ -212,7 +212,8 @@ > lzma_lz_decoder_init(lzma_next_coder *next, const lzma_allocator *allocator, > const lzma_filter_info *filters, > lzma_ret (*lz_init)(lzma_lz_decoder *lz, >- const lzma_allocator *allocator, const void *options, >+ const lzma_allocator *allocator, >+ lzma_vli id, const void *options, > lzma_lz_options *lz_options)) > { > // Allocate the base structure if it isn't already allocated. >@@ -236,7 +237,7 @@ > // us the dictionary size. > lzma_lz_options lz_options; > return_if_error(lz_init(&coder->lz, allocator, >- filters[0].options, &lz_options)); >+ filters[0].id, filters[0].options, &lz_options)); > > // If the dictionary size is very small, increase it to 4096 bytes. > // This is to prevent constant wrapping of the dictionary, which >@@ -300,12 +301,4 @@ > lzma_lz_decoder_memusage(size_t dictionary_size) > { > return sizeof(lzma_coder) + (uint64_t)(dictionary_size); >-} >- >- >-extern void >-lzma_lz_decoder_uncompressed(void *coder_ptr, lzma_vli uncompressed_size) >-{ >- lzma_coder *coder = coder_ptr; >- coder->lz.set_uncompressed(coder->lz.coder, uncompressed_size); > } >diff -ur xz-5.2.5/src/liblzma/lz/lz_decoder.h xz-5.4.3/src/liblzma/lz/lz_decoder.h >--- xz-5.2.5/src/liblzma/lz/lz_decoder.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/lz/lz_decoder.h 2023-05-04 17:21:05 >@@ -62,8 +62,10 @@ > > void (*reset)(void *coder, const void *options); > >- /// Set the uncompressed size >- void (*set_uncompressed)(void *coder, lzma_vli uncompressed_size); >+ /// Set the uncompressed size. If uncompressed_size == LZMA_VLI_UNKNOWN >+ /// then allow_eopm will always be true. >+ void (*set_uncompressed)(void *coder, lzma_vli uncompressed_size, >+ bool allow_eopm); > > /// Free allocated resources > void (*end)(void *coder, const lzma_allocator *allocator); >@@ -85,13 +87,11 @@ > const lzma_allocator *allocator, > const lzma_filter_info *filters, > lzma_ret (*lz_init)(lzma_lz_decoder *lz, >- const lzma_allocator *allocator, const void *options, >+ const lzma_allocator *allocator, >+ lzma_vli id, const void *options, > lzma_lz_options *lz_options)); > > extern uint64_t lzma_lz_decoder_memusage(size_t dictionary_size); >- >-extern void lzma_lz_decoder_uncompressed( >- void *coder, lzma_vli uncompressed_size); > > > ////////////////////// >diff -ur xz-5.2.5/src/liblzma/lz/lz_encoder.c xz-5.4.3/src/liblzma/lz/lz_encoder.c >--- xz-5.2.5/src/liblzma/lz/lz_encoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/lz/lz_encoder.c 2023-05-04 17:21:05 >@@ -293,11 +293,15 @@ > return true; > } > >- // Calculate the sizes of mf->hash and mf->son and check that >- // nice_len is big enough for the selected match finder. >- const uint32_t hash_bytes = lz_options->match_finder & 0x0F; >- if (hash_bytes > mf->nice_len) >- return true; >+ // Calculate the sizes of mf->hash and mf->son. >+ // >+ // NOTE: Since 5.3.5beta the LZMA encoder ensures that nice_len >+ // is big enough for the selected match finder. This makes it >+ // easier for applications as nice_len = 2 will always be accepted >+ // even though the effective value can be slightly bigger. >+ const uint32_t hash_bytes >+ = mf_get_hash_bytes(lz_options->match_finder); >+ assert(hash_bytes <= mf->nice_len); > > const bool is_bt = (lz_options->match_finder & 0x10) != 0; > uint32_t hs; >@@ -521,14 +525,30 @@ > } > > >+static lzma_ret >+lz_encoder_set_out_limit(void *coder_ptr, uint64_t *uncomp_size, >+ uint64_t out_limit) >+{ >+ lzma_coder *coder = coder_ptr; >+ >+ // This is supported only if there are no other filters chained. >+ if (coder->next.code == NULL && coder->lz.set_out_limit != NULL) >+ return coder->lz.set_out_limit( >+ coder->lz.coder, uncomp_size, out_limit); >+ >+ return LZMA_OPTIONS_ERROR; >+} >+ >+ > extern lzma_ret > lzma_lz_encoder_init(lzma_next_coder *next, const lzma_allocator *allocator, > const lzma_filter_info *filters, > lzma_ret (*lz_init)(lzma_lz_encoder *lz, >- const lzma_allocator *allocator, const void *options, >+ const lzma_allocator *allocator, >+ lzma_vli id, const void *options, > lzma_lz_options *lz_options)) > { >-#ifdef HAVE_SMALL >+#if defined(HAVE_SMALL) && !defined(HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR) > // We need that the CRC32 table has been initialized. > lzma_crc32_init(); > #endif >@@ -544,6 +564,7 @@ > next->code = &lz_encode; > next->end = &lz_encoder_end; > next->update = &lz_encoder_update; >+ next->set_out_limit = &lz_encoder_set_out_limit; > > coder->lz.coder = NULL; > coder->lz.code = NULL; >@@ -565,7 +586,7 @@ > // Initialize the LZ-based encoder. > lzma_lz_options lz_options; > return_if_error(lz_init(&coder->lz, allocator, >- filters[0].options, &lz_options)); >+ filters[0].id, filters[0].options, &lz_options)); > > // Setup the size information into coder->mf and deallocate > // old buffers if they have wrong size. >@@ -585,32 +606,28 @@ > extern LZMA_API(lzma_bool) > lzma_mf_is_supported(lzma_match_finder mf) > { >- bool ret = false; >- >+ switch (mf) { > #ifdef HAVE_MF_HC3 >- if (mf == LZMA_MF_HC3) >- ret = true; >+ case LZMA_MF_HC3: >+ return true; > #endif >- > #ifdef HAVE_MF_HC4 >- if (mf == LZMA_MF_HC4) >- ret = true; >+ case LZMA_MF_HC4: >+ return true; > #endif >- > #ifdef HAVE_MF_BT2 >- if (mf == LZMA_MF_BT2) >- ret = true; >+ case LZMA_MF_BT2: >+ return true; > #endif >- > #ifdef HAVE_MF_BT3 >- if (mf == LZMA_MF_BT3) >- ret = true; >+ case LZMA_MF_BT3: >+ return true; > #endif >- > #ifdef HAVE_MF_BT4 >- if (mf == LZMA_MF_BT4) >- ret = true; >+ case LZMA_MF_BT4: >+ return true; > #endif >- >- return ret; >+ default: >+ return false; >+ } > } >diff -ur xz-5.2.5/src/liblzma/lz/lz_encoder.h xz-5.4.3/src/liblzma/lz/lz_encoder.h >--- xz-5.2.5/src/liblzma/lz/lz_encoder.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/lz/lz_encoder.h 2023-05-04 17:21:05 >@@ -204,6 +204,10 @@ > /// Update the options in the middle of the encoding. > lzma_ret (*options_update)(void *coder, const lzma_filter *filter); > >+ /// Set maximum allowed output size >+ lzma_ret (*set_out_limit)(void *coder, uint64_t *uncomp_size, >+ uint64_t out_limit); >+ > } lzma_lz_encoder; > > >@@ -216,6 +220,15 @@ > // are called `read ahead'. > > >+/// Get how many bytes the match finder hashes in its initial step. >+/// This is also the minimum nice_len value with the match finder. >+static inline uint32_t >+mf_get_hash_bytes(lzma_match_finder match_finder) >+{ >+ return (uint32_t)match_finder & 0x0F; >+} >+ >+ > /// Get pointer to the first byte not ran through the match finder > static inline const uint8_t * > mf_ptr(const lzma_mf *mf) >@@ -298,7 +311,8 @@ > lzma_next_coder *next, const lzma_allocator *allocator, > const lzma_filter_info *filters, > lzma_ret (*lz_init)(lzma_lz_encoder *lz, >- const lzma_allocator *allocator, const void *options, >+ const lzma_allocator *allocator, >+ lzma_vli id, const void *options, > lzma_lz_options *lz_options)); > > >diff -ur xz-5.2.5/src/liblzma/lz/lz_encoder_mf.c xz-5.4.3/src/liblzma/lz/lz_encoder_mf.c >--- xz-5.2.5/src/liblzma/lz/lz_encoder_mf.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/lz/lz_encoder_mf.c 2023-05-04 17:21:05 >@@ -220,10 +220,11 @@ > /// of matches found. > #define call_find(func, len_best) \ > do { \ >- matches_count = func(len_limit, pos, cur, cur_match, mf->depth, \ >- mf->son, mf->cyclic_pos, mf->cyclic_size, \ >+ matches_count = (uint32_t)(func(len_limit, pos, cur, cur_match, \ >+ mf->depth, mf->son, \ >+ mf->cyclic_pos, mf->cyclic_size, \ > matches + matches_count, len_best) \ >- - matches; \ >+ - matches); \ > move_pos(mf); \ > return matches_count; \ > } while (0) >@@ -242,8 +243,8 @@ > /// \param cur_match Start position of the current match candidate > /// \param depth Maximum length of the hash chain > /// \param son lzma_mf.son (contains the hash chain) >-/// \param cyclic_pos >-/// \param cyclic_size >+/// \param cyclic_pos lzma_mf.cyclic_pos >+/// \param cyclic_size lzma_mf_cyclic_size > /// \param matches Array to hold the matches. > /// \param len_best The length of the longest match found so far. > static lzma_match * >diff -ur xz-5.2.5/src/liblzma/lzma/Makefile.inc xz-5.4.3/src/liblzma/lzma/Makefile.inc >--- xz-5.2.5/src/liblzma/lzma/Makefile.inc 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/lzma/Makefile.inc 2023-05-04 17:21:05 >@@ -7,12 +7,9 @@ > > EXTRA_DIST += lzma/fastpos_tablegen.c > >-liblzma_la_SOURCES += lzma/lzma_common.h >- >-if COND_FILTER_LZMA1 > liblzma_la_SOURCES += \ >+ lzma/lzma_common.h \ > lzma/lzma_encoder_presets.c >-endif > > if COND_ENCODER_LZMA1 > liblzma_la_SOURCES += \ >diff -ur xz-5.2.5/src/liblzma/lzma/lzma2_decoder.c xz-5.4.3/src/liblzma/lzma/lzma2_decoder.c >--- xz-5.2.5/src/liblzma/lzma/lzma2_decoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/lzma/lzma2_decoder.c 2023-05-04 17:21:05 >@@ -139,7 +139,7 @@ > coder->uncompressed_size += in[(*in_pos)++] + 1U; > coder->sequence = SEQ_COMPRESSED_0; > coder->lzma.set_uncompressed(coder->lzma.coder, >- coder->uncompressed_size); >+ coder->uncompressed_size, false); > break; > > case SEQ_COMPRESSED_0: >@@ -226,7 +226,8 @@ > > static lzma_ret > lzma2_decoder_init(lzma_lz_decoder *lz, const lzma_allocator *allocator, >- const void *opt, lzma_lz_options *lz_options) >+ lzma_vli id lzma_attribute((__unused__)), const void *opt, >+ lzma_lz_options *lz_options) > { > lzma_lzma2_coder *coder = lz->coder; > if (coder == NULL) { >diff -ur xz-5.2.5/src/liblzma/lzma/lzma2_encoder.c xz-5.4.3/src/liblzma/lzma/lzma2_encoder.c >--- xz-5.2.5/src/liblzma/lzma/lzma2_encoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/lzma/lzma2_encoder.c 2023-05-04 17:21:05 >@@ -310,7 +310,8 @@ > > static lzma_ret > lzma2_encoder_init(lzma_lz_encoder *lz, const lzma_allocator *allocator, >- const void *options, lzma_lz_options *lz_options) >+ lzma_vli id lzma_attribute((__unused__)), const void *options, >+ lzma_lz_options *lz_options) > { > if (options == NULL) > return LZMA_PROG_ERROR; >@@ -340,7 +341,7 @@ > > // Initialize LZMA encoder > return_if_error(lzma_lzma_encoder_create(&coder->lzma, allocator, >- &coder->opt_cur, lz_options)); >+ LZMA_FILTER_LZMA2, &coder->opt_cur, lz_options)); > > // Make sure that we will always have enough history available in > // case we need to use uncompressed chunks. They are used when the >@@ -378,6 +379,9 @@ > extern lzma_ret > lzma_lzma2_props_encode(const void *options, uint8_t *out) > { >+ if (options == NULL) >+ return LZMA_PROG_ERROR; >+ > const lzma_options_lzma *const opt = options; > uint32_t d = my_max(opt->dict_size, LZMA_DICT_SIZE_MIN); > >diff -ur xz-5.2.5/src/liblzma/lzma/lzma_decoder.c xz-5.4.3/src/liblzma/lzma/lzma_decoder.c >--- xz-5.2.5/src/liblzma/lzma/lzma_decoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/lzma/lzma_decoder.c 2023-05-04 17:21:05 >@@ -238,6 +238,11 @@ > /// payload marker is expected. > lzma_vli uncompressed_size; > >+ /// True if end of payload marker (EOPM) is allowed even when >+ /// uncompressed_size is known; false if EOPM must not be present. >+ /// This is ignored if uncompressed_size == LZMA_VLI_UNKNOWN. >+ bool allow_eopm; >+ > //////////////////////////////// > // State of incomplete symbol // > //////////////////////////////// >@@ -343,12 +348,24 @@ > > lzma_ret ret = LZMA_OK; > >- // If uncompressed size is known, there must be no end of payload >- // marker. >- const bool no_eopm = coder->uncompressed_size >- != LZMA_VLI_UNKNOWN; >- if (no_eopm && coder->uncompressed_size < dict.limit - dict.pos) >+ // This is true when the next LZMA symbol is allowed to be EOPM. >+ // That is, if this is false, then EOPM is considered >+ // an invalid symbol and we will return LZMA_DATA_ERROR. >+ // >+ // EOPM is always required (not just allowed) when >+ // the uncompressed size isn't known. When uncompressed size >+ // is known, eopm_is_valid may be set to true later. >+ bool eopm_is_valid = coder->uncompressed_size == LZMA_VLI_UNKNOWN; >+ >+ // If uncompressed size is known and there is enough output space >+ // to decode all the data, limit the available buffer space so that >+ // the main loop won't try to decode past the end of the stream. >+ bool might_finish_without_eopm = false; >+ if (coder->uncompressed_size != LZMA_VLI_UNKNOWN >+ && coder->uncompressed_size <= dict.limit - dict.pos) { > dict.limit = dict.pos + (size_t)(coder->uncompressed_size); >+ might_finish_without_eopm = true; >+ } > > // The main decoder loop. The "switch" is used to restart the decoder at > // correct location. Once restarted, the "switch" is no longer used. >@@ -361,9 +378,33 @@ > > case SEQ_NORMALIZE: > case SEQ_IS_MATCH: >- if (unlikely(no_eopm && dict.pos == dict.limit)) >- break; >+ if (unlikely(might_finish_without_eopm >+ && dict.pos == dict.limit)) { >+ // In rare cases there is a useless byte that needs >+ // to be read anyway. >+ rc_normalize(SEQ_NORMALIZE); > >+ // If the range decoder state is such that we can >+ // be at the end of the LZMA stream, then the >+ // decoding is finished. >+ if (rc_is_finished(rc)) { >+ ret = LZMA_STREAM_END; >+ goto out; >+ } >+ >+ // If the caller hasn't allowed EOPM to be present >+ // together with known uncompressed size, then the >+ // LZMA stream is corrupt. >+ if (!coder->allow_eopm) { >+ ret = LZMA_DATA_ERROR; >+ goto out; >+ } >+ >+ // Otherwise continue decoding with the expectation >+ // that the next LZMA symbol is EOPM. >+ eopm_is_valid = true; >+ } >+ > rc_if_0(coder->is_match[state][pos_state], SEQ_IS_MATCH) { > rc_update_0(coder->is_match[state][pos_state]); > >@@ -658,11 +699,18 @@ > > if (rep0 == UINT32_MAX) { > // End of payload marker was >- // found. It must not be >- // present if uncompressed >- // size is known. >- if (coder->uncompressed_size >- != LZMA_VLI_UNKNOWN) { >+ // found. It may only be >+ // present if >+ // - uncompressed size is >+ // unknown or >+ // - after known uncompressed >+ // size amount of bytes has >+ // been decompressed and >+ // caller has indicated >+ // that EOPM might be used >+ // (it's not allowed in >+ // LZMA2). >+ if (!eopm_is_valid) { > ret = LZMA_DATA_ERROR; > goto out; > } >@@ -671,7 +719,9 @@ > // LZMA1 stream with > // end-of-payload marker. > rc_normalize(SEQ_EOPM); >- ret = LZMA_STREAM_END; >+ ret = rc_is_finished(rc) >+ ? LZMA_STREAM_END >+ : LZMA_DATA_ERROR; > goto out; > } > } >@@ -793,9 +843,6 @@ > } > } > >- rc_normalize(SEQ_NORMALIZE); >- coder->sequence = SEQ_IS_MATCH; >- > out: > // Save state > >@@ -822,24 +869,21 @@ > if (coder->uncompressed_size != LZMA_VLI_UNKNOWN) { > coder->uncompressed_size -= dict.pos - dict_start; > >- // Since there cannot be end of payload marker if the >- // uncompressed size was known, we check here if we >- // finished decoding. >+ // If we have gotten all the output but the decoder wants >+ // to write more output, the file is corrupt. There are >+ // three SEQ values where output is produced. > if (coder->uncompressed_size == 0 && ret == LZMA_OK >- && coder->sequence != SEQ_NORMALIZE) >- ret = coder->sequence == SEQ_IS_MATCH >- ? LZMA_STREAM_END : LZMA_DATA_ERROR; >+ && (coder->sequence == SEQ_LITERAL_WRITE >+ || coder->sequence == SEQ_SHORTREP >+ || coder->sequence == SEQ_COPY)) >+ ret = LZMA_DATA_ERROR; > } > >- // We can do an additional check in the range decoder to catch some >- // corrupted files. > if (ret == LZMA_STREAM_END) { >- if (!rc_is_finished(coder->rc)) >- ret = LZMA_DATA_ERROR; >- > // Reset the range decoder so that it is ready to reinitialize > // for a new LZMA2 chunk. > rc_reset(coder->rc); >+ coder->sequence = SEQ_IS_MATCH; > } > > return ret; >@@ -848,10 +892,12 @@ > > > static void >-lzma_decoder_uncompressed(void *coder_ptr, lzma_vli uncompressed_size) >+lzma_decoder_uncompressed(void *coder_ptr, lzma_vli uncompressed_size, >+ bool allow_eopm) > { > lzma_lzma1_decoder *coder = coder_ptr; > coder->uncompressed_size = uncompressed_size; >+ coder->allow_eopm = allow_eopm; > } > > >@@ -940,7 +986,7 @@ > > extern lzma_ret > lzma_lzma_decoder_create(lzma_lz_decoder *lz, const lzma_allocator *allocator, >- const void *opt, lzma_lz_options *lz_options) >+ const lzma_options_lzma *options, lzma_lz_options *lz_options) > { > if (lz->coder == NULL) { > lz->coder = lzma_alloc(sizeof(lzma_lzma1_decoder), allocator); >@@ -954,7 +1000,6 @@ > > // All dictionary sizes are OK here. LZ decoder will take care of > // the special cases. >- const lzma_options_lzma *options = opt; > lz_options->dict_size = options->dict_size; > lz_options->preset_dict = options->preset_dict; > lz_options->preset_dict_size = options->preset_dict_size; >@@ -968,16 +1013,40 @@ > /// the LZ initialization). > static lzma_ret > lzma_decoder_init(lzma_lz_decoder *lz, const lzma_allocator *allocator, >- const void *options, lzma_lz_options *lz_options) >+ lzma_vli id, const void *options, lzma_lz_options *lz_options) > { > if (!is_lclppb_valid(options)) > return LZMA_PROG_ERROR; > >+ lzma_vli uncomp_size = LZMA_VLI_UNKNOWN; >+ bool allow_eopm = true; >+ >+ if (id == LZMA_FILTER_LZMA1EXT) { >+ const lzma_options_lzma *opt = options; >+ >+ // Only one flag is supported. >+ if (opt->ext_flags & ~LZMA_LZMA1EXT_ALLOW_EOPM) >+ return LZMA_OPTIONS_ERROR; >+ >+ // FIXME? Using lzma_vli instead of uint64_t is weird because >+ // this has nothing to do with .xz headers and variable-length >+ // integer encoding. On the other hand, using LZMA_VLI_UNKNOWN >+ // instead of UINT64_MAX is clearer when unknown size is >+ // meant. A problem with using lzma_vli is that now we >+ // allow > LZMA_VLI_MAX which is fine in this file but >+ // it's still confusing. Note that alone_decoder.c also >+ // allows > LZMA_VLI_MAX when setting uncompressed size. >+ uncomp_size = opt->ext_size_low >+ + ((uint64_t)(opt->ext_size_high) << 32); >+ allow_eopm = (opt->ext_flags & LZMA_LZMA1EXT_ALLOW_EOPM) != 0 >+ || uncomp_size == LZMA_VLI_UNKNOWN; >+ } >+ > return_if_error(lzma_lzma_decoder_create( > lz, allocator, options, lz_options)); > > lzma_decoder_reset(lz->coder, options); >- lzma_decoder_uncompressed(lz->coder, LZMA_VLI_UNKNOWN); >+ lzma_decoder_uncompressed(lz->coder, uncomp_size, allow_eopm); > > return LZMA_OK; > } >diff -ur xz-5.2.5/src/liblzma/lzma/lzma_decoder.h xz-5.4.3/src/liblzma/lzma/lzma_decoder.h >--- xz-5.2.5/src/liblzma/lzma/lzma_decoder.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/lzma/lzma_decoder.h 2023-05-04 17:21:05 >@@ -42,7 +42,7 @@ > /// LZMA2 decoders. > extern lzma_ret lzma_lzma_decoder_create( > lzma_lz_decoder *lz, const lzma_allocator *allocator, >- const void *opt, lzma_lz_options *lz_options); >+ const lzma_options_lzma *opt, lzma_lz_options *lz_options); > > /// Gets memory usage without validating lc/lp/pb. This is used by LZMA2 > /// decoder, because raw LZMA2 decoding doesn't need lc/lp/pb. >diff -ur xz-5.2.5/src/liblzma/lzma/lzma_encoder.c xz-5.4.3/src/liblzma/lzma/lzma_encoder.c >--- xz-5.2.5/src/liblzma/lzma/lzma_encoder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/lzma/lzma_encoder.c 2023-05-04 17:21:05 >@@ -268,6 +268,7 @@ > encode_init(lzma_lzma1_encoder *coder, lzma_mf *mf) > { > assert(mf_position(mf) == 0); >+ assert(coder->uncomp_size == 0); > > if (mf->read_pos == mf->read_limit) { > if (mf->action == LZMA_RUN) >@@ -283,6 +284,7 @@ > mf->read_ahead = 0; > rc_bit(&coder->rc, &coder->is_match[0][0], 0); > rc_bittree(&coder->rc, coder->literal[0], 8, mf->buffer[0]); >+ ++coder->uncomp_size; > } > > // Initialization is done (except if empty file). >@@ -317,21 +319,28 @@ > if (!coder->is_initialized && !encode_init(coder, mf)) > return LZMA_OK; > >- // Get the lowest bits of the uncompressed offset from the LZ layer. >- uint32_t position = mf_position(mf); >+ // Encode pending output bytes from the range encoder. >+ // At the start of the stream, encode_init() encodes one literal. >+ // Later there can be pending output only with LZMA1 because LZMA2 >+ // ensures that there is always enough output space. Thus when using >+ // LZMA2, rc_encode() calls in this function will always return false. >+ if (rc_encode(&coder->rc, out, out_pos, out_size)) { >+ // We don't get here with LZMA2. >+ assert(limit == UINT32_MAX); >+ return LZMA_OK; >+ } > >- while (true) { >- // Encode pending bits, if any. Calling this before encoding >- // the next symbol is needed only with plain LZMA, since >- // LZMA2 always provides big enough buffer to flush >- // everything out from the range encoder. For the same reason, >- // rc_encode() never returns true when this function is used >- // as part of LZMA2 encoder. >- if (rc_encode(&coder->rc, out, out_pos, out_size)) { >- assert(limit == UINT32_MAX); >- return LZMA_OK; >- } >+ // If the range encoder was flushed in an earlier call to this >+ // function but there wasn't enough output buffer space, those >+ // bytes would have now been encoded by the above rc_encode() call >+ // and the stream has now been finished. This can only happen with >+ // LZMA1 as LZMA2 always provides enough output buffer space. >+ if (coder->is_flushed) { >+ assert(limit == UINT32_MAX); >+ return LZMA_STREAM_END; >+ } > >+ while (true) { > // With LZMA2 we need to take care that compressed size of > // a chunk doesn't get too big. > // FIXME? Check if this could be improved. >@@ -365,38 +374,65 @@ > if (coder->fast_mode) > lzma_lzma_optimum_fast(coder, mf, &back, &len); > else >- lzma_lzma_optimum_normal( >- coder, mf, &back, &len, position); >+ lzma_lzma_optimum_normal(coder, mf, &back, &len, >+ (uint32_t)(coder->uncomp_size)); > >- encode_symbol(coder, mf, back, len, position); >+ encode_symbol(coder, mf, back, len, >+ (uint32_t)(coder->uncomp_size)); > >- position += len; >- } >+ // If output size limiting is active (out_limit != 0), check >+ // if encoding this LZMA symbol would make the output size >+ // exceed the specified limit. >+ if (coder->out_limit != 0 && rc_encode_dummy( >+ &coder->rc, coder->out_limit)) { >+ // The most recent LZMA symbol would make the output >+ // too big. Throw it away. >+ rc_forget(&coder->rc); > >- if (!coder->is_flushed) { >- coder->is_flushed = true; >+ // FIXME: Tell the LZ layer to not read more input as >+ // it would be waste of time. This doesn't matter if >+ // output-size-limited encoding is done with a single >+ // call though. > >- // We don't support encoding plain LZMA streams without EOPM, >- // and LZMA2 doesn't use EOPM at LZMA level. >- if (limit == UINT32_MAX) >- encode_eopm(coder, position); >+ break; >+ } > >- // Flush the remaining bytes from the range encoder. >- rc_flush(&coder->rc); >+ // This symbol will be encoded so update the uncompressed size. >+ coder->uncomp_size += len; > >- // Copy the remaining bytes to the output buffer. If there >- // isn't enough output space, we will copy out the remaining >- // bytes on the next call to this function by using >- // the rc_encode() call in the encoding loop above. >+ // Encode the LZMA symbol. > if (rc_encode(&coder->rc, out, out_pos, out_size)) { >+ // Once again, this can only happen with LZMA1. > assert(limit == UINT32_MAX); > return LZMA_OK; > } > } > >- // Make it ready for the next LZMA2 chunk. >- coder->is_flushed = false; >+ // Make the uncompressed size available to the application. >+ if (coder->uncomp_size_ptr != NULL) >+ *coder->uncomp_size_ptr = coder->uncomp_size; > >+ // LZMA2 doesn't use EOPM at LZMA level. >+ // >+ // Plain LZMA streams without EOPM aren't supported except when >+ // output size limiting is enabled. >+ if (coder->use_eopm) >+ encode_eopm(coder, (uint32_t)(coder->uncomp_size)); >+ >+ // Flush the remaining bytes from the range encoder. >+ rc_flush(&coder->rc); >+ >+ // Copy the remaining bytes to the output buffer. If there >+ // isn't enough output space, we will copy out the remaining >+ // bytes on the next call to this function. >+ if (rc_encode(&coder->rc, out, out_pos, out_size)) { >+ // This cannot happen with LZMA2. >+ assert(limit == UINT32_MAX); >+ >+ coder->is_flushed = true; >+ return LZMA_OK; >+ } >+ > return LZMA_STREAM_END; > } > >@@ -414,6 +450,23 @@ > } > > >+static lzma_ret >+lzma_lzma_set_out_limit( >+ void *coder_ptr, uint64_t *uncomp_size, uint64_t out_limit) >+{ >+ // Minimum output size is 5 bytes but that cannot hold any output >+ // so we use 6 bytes. >+ if (out_limit < 6) >+ return LZMA_BUF_ERROR; >+ >+ lzma_lzma1_encoder *coder = coder_ptr; >+ coder->out_limit = out_limit; >+ coder->uncomp_size_ptr = uncomp_size; >+ coder->use_eopm = false; >+ return LZMA_OK; >+} >+ >+ > //////////////////// > // Initialization // > //////////////////// >@@ -440,7 +493,8 @@ > lz_options->dict_size = options->dict_size; > lz_options->after_size = LOOP_INPUT_MAX; > lz_options->match_len_max = MATCH_LEN_MAX; >- lz_options->nice_len = options->nice_len; >+ lz_options->nice_len = my_max(mf_get_hash_bytes(options->mf), >+ options->nice_len); > lz_options->match_finder = options->mf; > lz_options->depth = options->depth; > lz_options->preset_dict = options->preset_dict; >@@ -546,10 +600,13 @@ > > > extern lzma_ret >-lzma_lzma_encoder_create(void **coder_ptr, >- const lzma_allocator *allocator, >- const lzma_options_lzma *options, lzma_lz_options *lz_options) >+lzma_lzma_encoder_create(void **coder_ptr, const lzma_allocator *allocator, >+ lzma_vli id, const lzma_options_lzma *options, >+ lzma_lz_options *lz_options) > { >+ assert(id == LZMA_FILTER_LZMA1 || id == LZMA_FILTER_LZMA1EXT >+ || id == LZMA_FILTER_LZMA2); >+ > // Allocate lzma_lzma1_encoder if it wasn't already allocated. > if (*coder_ptr == NULL) { > *coder_ptr = lzma_alloc(sizeof(lzma_lzma1_encoder), allocator); >@@ -559,10 +616,9 @@ > > lzma_lzma1_encoder *coder = *coder_ptr; > >- // Set compression mode. We haven't validates the options yet, >- // but it's OK here, since nothing bad happens with invalid >- // options in the code below, and they will get rejected by >- // lzma_lzma_encoder_reset() call at the end of this function. >+ // Set compression mode. Note that we haven't validated the options >+ // yet. Invalid options will get rejected by lzma_lzma_encoder_reset() >+ // call at the end of this function. > switch (options->mode) { > case LZMA_MODE_FAST: > coder->fast_mode = true; >@@ -573,6 +629,18 @@ > > // Set dist_table_size. > // Round the dictionary size up to next 2^n. >+ // >+ // Currently the maximum encoder dictionary size >+ // is 1.5 GiB due to lz_encoder.c and here we need >+ // to be below 2 GiB to make the rounded up value >+ // fit in an uint32_t and avoid an infite while-loop >+ // (and undefined behavior due to a too large shift). >+ // So do the same check as in LZ encoder, >+ // limiting to 1.5 GiB. >+ if (options->dict_size > (UINT32_C(1) << 30) >+ + (UINT32_C(1) << 29)) >+ return LZMA_OPTIONS_ERROR; >+ > uint32_t log_size = 0; > while ((UINT32_C(1) << log_size) < options->dict_size) > ++log_size; >@@ -580,10 +648,14 @@ > coder->dist_table_size = log_size * 2; > > // Length encoders' price table size >+ const uint32_t nice_len = my_max( >+ mf_get_hash_bytes(options->mf), >+ options->nice_len); >+ > coder->match_len_encoder.table_size >- = options->nice_len + 1 - MATCH_LEN_MIN; >+ = nice_len + 1 - MATCH_LEN_MIN; > coder->rep_len_encoder.table_size >- = options->nice_len + 1 - MATCH_LEN_MIN; >+ = nice_len + 1 - MATCH_LEN_MIN; > break; > } > >@@ -598,7 +670,38 @@ > coder->is_initialized = options->preset_dict != NULL > && options->preset_dict_size > 0; > coder->is_flushed = false; >+ coder->uncomp_size = 0; >+ coder->uncomp_size_ptr = NULL; > >+ // Output size limitting is disabled by default. >+ coder->out_limit = 0; >+ >+ // Determine if end marker is wanted: >+ // - It is never used with LZMA2. >+ // - It is always used with LZMA_FILTER_LZMA1 (unless >+ // lzma_lzma_set_out_limit() is called later). >+ // - LZMA_FILTER_LZMA1EXT has a flag for it in the options. >+ coder->use_eopm = (id == LZMA_FILTER_LZMA1); >+ if (id == LZMA_FILTER_LZMA1EXT) { >+ // Check if unsupported flags are present. >+ if (options->ext_flags & ~LZMA_LZMA1EXT_ALLOW_EOPM) >+ return LZMA_OPTIONS_ERROR; >+ >+ coder->use_eopm = (options->ext_flags >+ & LZMA_LZMA1EXT_ALLOW_EOPM) != 0; >+ >+ // TODO? As long as there are no filters that change the size >+ // of the data, it is enough to look at lzma_stream.total_in >+ // after encoding has been finished to know the uncompressed >+ // size of the LZMA1 stream. But in the future there could be >+ // filters that change the size of the data and then total_in >+ // doesn't work as the LZMA1 stream size might be different >+ // due to another filter in the chain. The problem is simple >+ // to solve: Add another flag to ext_flags and then set >+ // coder->uncomp_size_ptr to the address stored in >+ // lzma_options_lzma.reserved_ptr2 (or _ptr1). >+ } >+ > set_lz_options(lz_options, options); > > return lzma_lzma_encoder_reset(coder, options); >@@ -607,11 +710,12 @@ > > static lzma_ret > lzma_encoder_init(lzma_lz_encoder *lz, const lzma_allocator *allocator, >- const void *options, lzma_lz_options *lz_options) >+ lzma_vli id, const void *options, lzma_lz_options *lz_options) > { > lz->code = &lzma_encode; >+ lz->set_out_limit = &lzma_lzma_set_out_limit; > return lzma_lzma_encoder_create( >- &lz->coder, allocator, options, lz_options); >+ &lz->coder, allocator, id, options, lz_options); > } > > >@@ -658,6 +762,9 @@ > extern lzma_ret > lzma_lzma_props_encode(const void *options, uint8_t *out) > { >+ if (options == NULL) >+ return LZMA_PROG_ERROR; >+ > const lzma_options_lzma *const opt = options; > > if (lzma_lzma_lclppb_encode(opt, out)) >diff -ur xz-5.2.5/src/liblzma/lzma/lzma_encoder.h xz-5.4.3/src/liblzma/lzma/lzma_encoder.h >--- xz-5.2.5/src/liblzma/lzma/lzma_encoder.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/lzma/lzma_encoder.h 2023-05-04 17:21:05 >@@ -40,7 +40,8 @@ > /// Initializes raw LZMA encoder; this is used by LZMA2. > extern lzma_ret lzma_lzma_encoder_create( > void **coder_ptr, const lzma_allocator *allocator, >- const lzma_options_lzma *options, lzma_lz_options *lz_options); >+ lzma_vli id, const lzma_options_lzma *options, >+ lzma_lz_options *lz_options); > > > /// Resets an already initialized LZMA encoder; this is used by LZMA2. >diff -ur xz-5.2.5/src/liblzma/lzma/lzma_encoder_private.h xz-5.4.3/src/liblzma/lzma/lzma_encoder_private.h >--- xz-5.2.5/src/liblzma/lzma/lzma_encoder_private.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/lzma/lzma_encoder_private.h 2023-05-04 17:21:05 >@@ -72,6 +72,18 @@ > /// Range encoder > lzma_range_encoder rc; > >+ /// Uncompressed size (doesn't include possible preset dictionary) >+ uint64_t uncomp_size; >+ >+ /// If non-zero, produce at most this much output. >+ /// Some input may then be missing from the output. >+ uint64_t out_limit; >+ >+ /// If the above out_limit is non-zero, *uncomp_size_ptr is set to >+ /// the amount of uncompressed data that we were able to fit >+ /// in the output buffer. >+ uint64_t *uncomp_size_ptr; >+ > /// State > lzma_lzma_state state; > >@@ -98,6 +110,9 @@ > /// True if the range encoder has been flushed, but not all bytes > /// have been written to the output buffer yet. > bool is_flushed; >+ >+ /// True if end of payload marker will be written. >+ bool use_eopm; > > uint32_t pos_mask; ///< (1 << pos_bits) - 1 > uint32_t literal_context_bits; >diff -ur xz-5.2.5/src/liblzma/rangecoder/range_encoder.h xz-5.4.3/src/liblzma/rangecoder/range_encoder.h >--- xz-5.2.5/src/liblzma/rangecoder/range_encoder.h 2020-03-17 17:28:54 >+++ xz-5.4.3/src/liblzma/rangecoder/range_encoder.h 2023-05-04 17:21:05 >@@ -19,9 +19,9 @@ > > > /// Maximum number of symbols that can be put pending into lzma_range_encoder >-/// structure between calls to lzma_rc_encode(). For LZMA, 52+5 is enough >+/// structure between calls to lzma_rc_encode(). For LZMA, 48+5 is enough > /// (match with big distance and length followed by range encoder flush). >-#define RC_SYMBOLS_MAX 58 >+#define RC_SYMBOLS_MAX 53 > > > typedef struct { >@@ -30,6 +30,9 @@ > uint32_t range; > uint8_t cache; > >+ /// Number of bytes written out by rc_encode() -> rc_shift_low() >+ uint64_t out_total; >+ > /// Number of symbols in the tables > size_t count; > >@@ -58,12 +61,22 @@ > rc->cache_size = 1; > rc->range = UINT32_MAX; > rc->cache = 0; >+ rc->out_total = 0; > rc->count = 0; > rc->pos = 0; > } > > > static inline void >+rc_forget(lzma_range_encoder *rc) >+{ >+ // This must not be called when rc_encode() is partially done. >+ assert(rc->pos == 0); >+ rc->count = 0; >+} >+ >+ >+static inline void > rc_bit(lzma_range_encoder *rc, probability *prob, uint32_t bit) > { > rc->symbols[rc->count] = bit; >@@ -132,6 +145,7 @@ > > out[*out_pos] = rc->cache + (uint8_t)(rc->low >> 32); > ++*out_pos; >+ ++rc->out_total; > rc->cache = 0xFF; > > } while (--rc->cache_size != 0); >@@ -146,7 +160,35 @@ > } > > >+// NOTE: The last two arguments are uint64_t instead of size_t because in >+// the dummy version these refer to the size of the whole range-encoded >+// output stream, not just to the currently available output buffer space. > static inline bool >+rc_shift_low_dummy(uint64_t *low, uint64_t *cache_size, uint8_t *cache, >+ uint64_t *out_pos, uint64_t out_size) >+{ >+ if ((uint32_t)(*low) < (uint32_t)(0xFF000000) >+ || (uint32_t)(*low >> 32) != 0) { >+ do { >+ if (*out_pos == out_size) >+ return true; >+ >+ ++*out_pos; >+ *cache = 0xFF; >+ >+ } while (--*cache_size != 0); >+ >+ *cache = (*low >> 24) & 0xFF; >+ } >+ >+ ++*cache_size; >+ *low = (*low & 0x00FFFFFF) << RC_SHIFT_BITS; >+ >+ return false; >+} >+ >+ >+static inline bool > rc_encode(lzma_range_encoder *rc, > uint8_t *out, size_t *out_pos, size_t out_size) > { >@@ -217,6 +259,83 @@ > > rc->count = 0; > rc->pos = 0; >+ >+ return false; >+} >+ >+ >+static inline bool >+rc_encode_dummy(const lzma_range_encoder *rc, uint64_t out_limit) >+{ >+ assert(rc->count <= RC_SYMBOLS_MAX); >+ >+ uint64_t low = rc->low; >+ uint64_t cache_size = rc->cache_size; >+ uint32_t range = rc->range; >+ uint8_t cache = rc->cache; >+ uint64_t out_pos = rc->out_total; >+ >+ size_t pos = rc->pos; >+ >+ while (true) { >+ // Normalize >+ if (range < RC_TOP_VALUE) { >+ if (rc_shift_low_dummy(&low, &cache_size, &cache, >+ &out_pos, out_limit)) >+ return true; >+ >+ range <<= RC_SHIFT_BITS; >+ } >+ >+ // This check is here because the normalization above must >+ // be done before flushing the last bytes. >+ if (pos == rc->count) >+ break; >+ >+ // Encode a bit >+ switch (rc->symbols[pos]) { >+ case RC_BIT_0: { >+ probability prob = *rc->probs[pos]; >+ range = (range >> RC_BIT_MODEL_TOTAL_BITS) >+ * prob; >+ break; >+ } >+ >+ case RC_BIT_1: { >+ probability prob = *rc->probs[pos]; >+ const uint32_t bound = prob * (range >+ >> RC_BIT_MODEL_TOTAL_BITS); >+ low += bound; >+ range -= bound; >+ break; >+ } >+ >+ case RC_DIRECT_0: >+ range >>= 1; >+ break; >+ >+ case RC_DIRECT_1: >+ range >>= 1; >+ low += range; >+ break; >+ >+ case RC_FLUSH: >+ default: >+ assert(0); >+ break; >+ } >+ >+ ++pos; >+ } >+ >+ // Flush the last bytes. This isn't in rc->symbols[] so we do >+ // it after the above loop to take into account the size of >+ // the flushing that will be done at the end of the stream. >+ for (pos = 0; pos < 5; ++pos) { >+ if (rc_shift_low_dummy(&low, &cache_size, >+ &cache, &out_pos, out_limit)) >+ return true; >+ } > > return false; > } >diff -ur xz-5.2.5/src/liblzma/simple/Makefile.inc xz-5.4.3/src/liblzma/simple/Makefile.inc >--- xz-5.2.5/src/liblzma/simple/Makefile.inc 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/simple/Makefile.inc 2023-05-04 17:21:05 >@@ -42,6 +42,10 @@ > liblzma_la_SOURCES += simple/armthumb.c > endif > >+if COND_FILTER_ARM64 >+liblzma_la_SOURCES += simple/arm64.c >+endif >+ > if COND_FILTER_SPARC > liblzma_la_SOURCES += simple/sparc.c > endif >diff -ur xz-5.2.5/src/liblzma/simple/arm.c xz-5.4.3/src/liblzma/simple/arm.c >--- xz-5.2.5/src/liblzma/simple/arm.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/simple/arm.c 2023-05-04 17:21:05 >@@ -53,6 +53,7 @@ > } > > >+#ifdef HAVE_ENCODER_ARM > extern lzma_ret > lzma_simple_arm_encoder_init(lzma_next_coder *next, > const lzma_allocator *allocator, >@@ -60,8 +61,10 @@ > { > return arm_coder_init(next, allocator, filters, true); > } >+#endif > > >+#ifdef HAVE_DECODER_ARM > extern lzma_ret > lzma_simple_arm_decoder_init(lzma_next_coder *next, > const lzma_allocator *allocator, >@@ -69,3 +72,4 @@ > { > return arm_coder_init(next, allocator, filters, false); > } >+#endif >Only in xz-5.4.3/src/liblzma/simple: arm64.c >diff -ur xz-5.2.5/src/liblzma/simple/armthumb.c xz-5.4.3/src/liblzma/simple/armthumb.c >--- xz-5.2.5/src/liblzma/simple/armthumb.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/simple/armthumb.c 2023-05-04 17:21:05 >@@ -58,6 +58,7 @@ > } > > >+#ifdef HAVE_ENCODER_ARMTHUMB > extern lzma_ret > lzma_simple_armthumb_encoder_init(lzma_next_coder *next, > const lzma_allocator *allocator, >@@ -65,8 +66,10 @@ > { > return armthumb_coder_init(next, allocator, filters, true); > } >+#endif > > >+#ifdef HAVE_DECODER_ARMTHUMB > extern lzma_ret > lzma_simple_armthumb_decoder_init(lzma_next_coder *next, > const lzma_allocator *allocator, >@@ -74,3 +77,4 @@ > { > return armthumb_coder_init(next, allocator, filters, false); > } >+#endif >diff -ur xz-5.2.5/src/liblzma/simple/ia64.c xz-5.4.3/src/liblzma/simple/ia64.c >--- xz-5.2.5/src/liblzma/simple/ia64.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/simple/ia64.c 2023-05-04 17:21:05 >@@ -94,6 +94,7 @@ > } > > >+#ifdef HAVE_ENCODER_IA64 > extern lzma_ret > lzma_simple_ia64_encoder_init(lzma_next_coder *next, > const lzma_allocator *allocator, >@@ -101,8 +102,10 @@ > { > return ia64_coder_init(next, allocator, filters, true); > } >+#endif > > >+#ifdef HAVE_DECODER_IA64 > extern lzma_ret > lzma_simple_ia64_decoder_init(lzma_next_coder *next, > const lzma_allocator *allocator, >@@ -110,3 +113,4 @@ > { > return ia64_coder_init(next, allocator, filters, false); > } >+#endif >diff -ur xz-5.2.5/src/liblzma/simple/powerpc.c xz-5.4.3/src/liblzma/simple/powerpc.c >--- xz-5.2.5/src/liblzma/simple/powerpc.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/simple/powerpc.c 2023-05-04 17:21:05 >@@ -58,6 +58,7 @@ > } > > >+#ifdef HAVE_ENCODER_POWERPC > extern lzma_ret > lzma_simple_powerpc_encoder_init(lzma_next_coder *next, > const lzma_allocator *allocator, >@@ -65,8 +66,10 @@ > { > return powerpc_coder_init(next, allocator, filters, true); > } >+#endif > > >+#ifdef HAVE_DECODER_POWERPC > extern lzma_ret > lzma_simple_powerpc_decoder_init(lzma_next_coder *next, > const lzma_allocator *allocator, >@@ -74,3 +77,4 @@ > { > return powerpc_coder_init(next, allocator, filters, false); > } >+#endif >diff -ur xz-5.2.5/src/liblzma/simple/simple_coder.c xz-5.4.3/src/liblzma/simple/simple_coder.c >--- xz-5.2.5/src/liblzma/simple/simple_coder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/simple/simple_coder.c 2023-05-04 17:21:05 >@@ -139,9 +139,11 @@ > return ret; > } > >- // Filter out[]. >+ // Filter out[] unless there is nothing to filter. >+ // This way we avoid null pointer + 0 (undefined behavior) >+ // when out == NULL. > const size_t size = *out_pos - out_start; >- const size_t filtered = call_filter( >+ const size_t filtered = size == 0 ? 0 : call_filter( > coder, out + out_start, size); > > const size_t unfiltered = size - filtered; >diff -ur xz-5.2.5/src/liblzma/simple/simple_coder.h xz-5.4.3/src/liblzma/simple/simple_coder.h >--- xz-5.2.5/src/liblzma/simple/simple_coder.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/simple/simple_coder.h 2023-05-04 17:21:05 >@@ -61,6 +61,15 @@ > const lzma_filter_info *filters); > > >+extern lzma_ret lzma_simple_arm64_encoder_init(lzma_next_coder *next, >+ const lzma_allocator *allocator, >+ const lzma_filter_info *filters); >+ >+extern lzma_ret lzma_simple_arm64_decoder_init(lzma_next_coder *next, >+ const lzma_allocator *allocator, >+ const lzma_filter_info *filters); >+ >+ > extern lzma_ret lzma_simple_sparc_encoder_init(lzma_next_coder *next, > const lzma_allocator *allocator, > const lzma_filter_info *filters); >diff -ur xz-5.2.5/src/liblzma/simple/sparc.c xz-5.4.3/src/liblzma/simple/sparc.c >--- xz-5.2.5/src/liblzma/simple/sparc.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/simple/sparc.c 2023-05-04 17:21:05 >@@ -65,6 +65,7 @@ > } > > >+#ifdef HAVE_ENCODER_SPARC > extern lzma_ret > lzma_simple_sparc_encoder_init(lzma_next_coder *next, > const lzma_allocator *allocator, >@@ -72,8 +73,10 @@ > { > return sparc_coder_init(next, allocator, filters, true); > } >+#endif > > >+#ifdef HAVE_DECODER_SPARC > extern lzma_ret > lzma_simple_sparc_decoder_init(lzma_next_coder *next, > const lzma_allocator *allocator, >@@ -81,3 +84,4 @@ > { > return sparc_coder_init(next, allocator, filters, false); > } >+#endif >diff -ur xz-5.2.5/src/liblzma/simple/x86.c xz-5.4.3/src/liblzma/simple/x86.c >--- xz-5.2.5/src/liblzma/simple/x86.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/simple/x86.c 2023-05-04 17:21:05 >@@ -141,6 +141,7 @@ > } > > >+#ifdef HAVE_ENCODER_X86 > extern lzma_ret > lzma_simple_x86_encoder_init(lzma_next_coder *next, > const lzma_allocator *allocator, >@@ -148,8 +149,10 @@ > { > return x86_coder_init(next, allocator, filters, true); > } >+#endif > > >+#ifdef HAVE_DECODER_X86 > extern lzma_ret > lzma_simple_x86_decoder_init(lzma_next_coder *next, > const lzma_allocator *allocator, >@@ -157,3 +160,4 @@ > { > return x86_coder_init(next, allocator, filters, false); > } >+#endif >diff -ur xz-5.2.5/src/liblzma/validate_map.sh xz-5.4.3/src/liblzma/validate_map.sh >--- xz-5.2.5/src/liblzma/validate_map.sh 2020-03-17 17:28:50 >+++ xz-5.4.3/src/liblzma/validate_map.sh 2023-05-04 17:21:05 >@@ -2,8 +2,80 @@ > > ############################################################################### > # >-# Check liblzma.map for certain types of errors >+# Check liblzma_*.map for certain types of errors. > # >+# liblzma_generic.map is for FreeBSD and Solaris and possibly others >+# except GNU/Linux. >+# >+# liblzma_linux.map is for GNU/Linux only. This and the matching extra code >+# in the .c files make liblzma >= 5.2.7 compatible with binaries that were >+# linked against ill-patched liblzma in RHEL/CentOS 7. By providing the >+# compatibility in official XZ Utils release will hopefully prevent people >+# from further copying the broken patch to other places when they want >+# compatibility with binaries linked on RHEL/CentOS 7. The long version >+# of the story: >+# >+# 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. >+# Adding compatibility in an official XZ Utils release should work >+# as a vaccine against this ill patch and stop it from spreading. >+# The vaccine is kept GNU/Linux-only as other OSes should be immune >+# (hopefully it hasn't spread via some build script to other OSes). >+# > # Author: Lasse Collin > # > # This file has been put into the public domain. >@@ -18,11 +90,11 @@ > > cd "$(dirname "$0")" > >-# Get the list of symbols that aren't defined in liblzma.map. >+# Get the list of symbols that aren't defined in liblzma_generic.map. > SYMS=$(sed -n 's/^extern LZMA_API([^)]*) \([a-z0-9_]*\)(.*$/\1;/p' \ > api/lzma/*.h \ > | sort \ >- | grep -Fve "$(sed '/[{}:*]/d;/^$/d;s/^ //' liblzma.map)") >+ | grep -Fve "$(sed '/[{}:*]/d;/^$/d;s/^ //' liblzma_generic.map)") > > # Check that there are no old alpha or beta versions listed. > VER=$(cd ../.. && sh build-aux/version.sh) >@@ -30,21 +102,41 @@ > case $VER in > *alpha | *beta) > NAMES=$(sed -n 's/^.*XZ_\([^ ]*\)\(alpha\|beta\) .*$/\1\2/p' \ >- liblzma.map | grep -Fv "$VER") >+ liblzma_generic.map | grep -Fv "$VER") > ;; > esac > > # Check for duplicate lines. It can catch missing dependencies. >-DUPS=$(sort liblzma.map | sed '/^$/d;/^global:$/d' | uniq -d) >+DUPS=$(sort liblzma_generic.map | sed '/^$/d;/^global:$/d' | uniq -d) > >+# Check that liblzma_linux.map is in sync with liblzma_generic.map. >+# The RHEL/CentOS 7 compatibility symbols are in a fixed location >+# so it makes it easy to remove them for comparison with liblzma_generic.map. >+# >+# NOTE: Putting XZ_5.2 before the compatibility symbols XZ_5.1.2alpha >+# and XZ_5.2.2 in liblzma_linux.map is important: If liblzma_linux.map is >+# incorrectly used without #define HAVE_SYMBOL_VERSIONS_LINUX, only the first >+# occurrence of each function name will be used from liblzma_linux.map; >+# the rest are ignored by the linker. Thus having XZ_5.2 before the >+# compatibility symbols means that @@XZ_5.2 will be used for the symbols >+# listed under XZ_5.2 {...} and the same function names later in >+# the file under XZ_5.1.2alpha {...} and XZ_5.2.2 {...} will be >+# ignored (@XZ_5.1.2alpha or @XZ_5.2.2 won't be added at all when >+# the #define HAVE_SYMBOL_VERSIONS_LINUX isn't used). >+IN_SYNC= >+if ! sed '109,123d' liblzma_linux.map \ >+ | cmp -s - liblzma_generic.map; then >+ IN_SYNC=no >+fi >+ > # Print error messages if needed. >-if test -n "$SYMS$NAMES$DUPS"; then >+if test -n "$SYMS$NAMES$DUPS$IN_SYNC"; then > echo >- echo 'validate_map.sh found problems from liblzma.map:' >+ echo 'validate_map.sh found problems from liblzma_*.map:' > echo > > if test -n "$SYMS"; then >- echo 'liblzma.map lacks the following symbols:' >+ echo 'liblzma_generic.map lacks the following symbols:' > echo "$SYMS" > echo > fi >@@ -58,6 +150,11 @@ > if test -n "$DUPS"; then > echo 'Duplicate lines:' > echo "$DUPS" >+ echo >+ fi >+ >+ if test -n "$IN_SYNC"; then >+ echo "liblzma_generic.map and liblzma_linux.map aren't in sync" > echo > fi > >diff -ur xz-5.2.5/src/lzmainfo/Makefile.in xz-5.4.3/src/lzmainfo/Makefile.in >--- xz-5.2.5/src/lzmainfo/Makefile.in 2020-03-17 17:29:35 >+++ xz-5.4.3/src/lzmainfo/Makefile.in 2023-05-04 17:31:30 >@@ -1,7 +1,7 @@ >-# Makefile.in generated by automake 1.16.1 from Makefile.am. >+# Makefile.in generated by automake 1.16.5 from Makefile.am. > # @configure_input@ > >-# Copyright (C) 1994-2018 Free Software Foundation, Inc. >+# Copyright (C) 1994-2021 Free Software Foundation, Inc. > > # This Makefile.in is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -224,8 +224,6 @@ > unique=`for i in $$list; do \ > if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ > done | $(am__uniquify_input)` >-ETAGS = etags >-CTAGS = ctags > am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ > $(top_srcdir)/build-aux/depcomp > DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) >@@ -249,6 +247,8 @@ > CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ > CPP = @CPP@ > CPPFLAGS = @CPPFLAGS@ >+CSCOPE = @CSCOPE@ >+CTAGS = @CTAGS@ > CYGPATH_W = @CYGPATH_W@ > DEFS = @DEFS@ > DEPDIR = @DEPDIR@ >@@ -259,8 +259,10 @@ > ECHO_N = @ECHO_N@ > ECHO_T = @ECHO_T@ > EGREP = @EGREP@ >+ETAGS = @ETAGS@ > EXEEXT = @EXEEXT@ > FGREP = @FGREP@ >+FILECMD = @FILECMD@ > GETOPT_H = @GETOPT_H@ > GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ > GMSGFMT = @GMSGFMT@ >@@ -313,6 +315,7 @@ > PREFERABLY_POSIX_SHELL = @PREFERABLY_POSIX_SHELL@ > PTHREAD_CC = @PTHREAD_CC@ > PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ >+PTHREAD_CXX = @PTHREAD_CXX@ > PTHREAD_LIBS = @PTHREAD_LIBS@ > RANLIB = @RANLIB@ > RC = @RC@ >@@ -371,6 +374,7 @@ > prefix = @prefix@ > program_transform_name = @program_transform_name@ > psdir = @psdir@ >+runstatedir = @runstatedir@ > sbindir = @sbindir@ > sharedstatedir = @sharedstatedir@ > srcdir = @srcdir@ >@@ -657,7 +661,6 @@ > > distclean-tags: > -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags >- > distdir: $(BUILT_SOURCES) > $(MAKE) $(AM_MAKEFLAGS) distdir-am > >diff -ur xz-5.2.5/src/scripts/Makefile.in xz-5.4.3/src/scripts/Makefile.in >--- xz-5.2.5/src/scripts/Makefile.in 2020-03-17 17:29:36 >+++ xz-5.4.3/src/scripts/Makefile.in 2023-05-04 17:31:30 >@@ -1,7 +1,7 @@ >-# Makefile.in generated by automake 1.16.1 from Makefile.am. >+# Makefile.in generated by automake 1.16.5 from Makefile.am. > # @configure_input@ > >-# Copyright (C) 1994-2018 Free Software Foundation, Inc. >+# Copyright (C) 1994-2021 Free Software Foundation, Inc. > > # This Makefile.in is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -199,6 +199,8 @@ > CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ > CPP = @CPP@ > CPPFLAGS = @CPPFLAGS@ >+CSCOPE = @CSCOPE@ >+CTAGS = @CTAGS@ > CYGPATH_W = @CYGPATH_W@ > DEFS = @DEFS@ > DEPDIR = @DEPDIR@ >@@ -209,8 +211,10 @@ > ECHO_N = @ECHO_N@ > ECHO_T = @ECHO_T@ > EGREP = @EGREP@ >+ETAGS = @ETAGS@ > EXEEXT = @EXEEXT@ > FGREP = @FGREP@ >+FILECMD = @FILECMD@ > GETOPT_H = @GETOPT_H@ > GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ > GMSGFMT = @GMSGFMT@ >@@ -263,6 +267,7 @@ > PREFERABLY_POSIX_SHELL = @PREFERABLY_POSIX_SHELL@ > PTHREAD_CC = @PTHREAD_CC@ > PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ >+PTHREAD_CXX = @PTHREAD_CXX@ > PTHREAD_LIBS = @PTHREAD_LIBS@ > RANLIB = @RANLIB@ > RC = @RC@ >@@ -321,6 +326,7 @@ > prefix = @prefix@ > program_transform_name = @program_transform_name@ > psdir = @psdir@ >+runstatedir = @runstatedir@ > sbindir = @sbindir@ > sharedstatedir = @sharedstatedir@ > srcdir = @srcdir@ >@@ -462,7 +468,6 @@ > ctags CTAGS: > > cscope cscopelist: >- > > distdir: $(BUILT_SOURCES) > $(MAKE) $(AM_MAKEFLAGS) distdir-am >diff -ur xz-5.2.5/src/scripts/xzdiff.1 xz-5.4.3/src/scripts/xzdiff.1 >--- xz-5.2.5/src/scripts/xzdiff.1 2020-03-17 17:28:50 >+++ xz-5.4.3/src/scripts/xzdiff.1 2023-05-04 17:21:05 >@@ -6,7 +6,7 @@ > .\" > .\" License: GNU GPLv2+ > .\" >-.TH XZDIFF 1 "2011-03-19" "Tukaani" "XZ Utils" >+.TH XZDIFF 1 "2021-06-04" "Tukaani" "XZ Utils" > .SH NAME > xzcmp, xzdiff, lzcmp, lzdiff \- compare compressed files > .SH SYNOPSIS >@@ -34,8 +34,9 @@ > .BR lzma (1), > .BR gzip (1), > .BR bzip2 (1), >+.BR lzop (1), > or >-.BR lzop (1). >+.BR zstd (1). > All options specified are passed directly to > .BR cmp (1) > or >@@ -54,7 +55,7 @@ > .BR cmp (1) > or > .BR diff (1) >-is preserved. >+is preserved unless a decompression error occurs; then exit status is 2. > .PP > The names > .B lzcmp >@@ -68,6 +69,7 @@ > .BR gzip (1), > .BR bzip2 (1), > .BR lzop (1), >+.BR zstd (1), > .BR zdiff (1) > .SH BUGS > Messages from the >diff -ur xz-5.2.5/src/scripts/xzdiff.in xz-5.4.3/src/scripts/xzdiff.in >--- xz-5.2.5/src/scripts/xzdiff.in 2020-03-17 17:28:50 >+++ xz-5.4.3/src/scripts/xzdiff.in 2023-05-04 17:21:05 >@@ -51,7 +51,7 @@ > while :; do > case $1 in > --h*) printf '%s\n' "$usage" || exit 2; exit;; >- --v*) echo "$version" || exit 2; exit;; >+ --v*) printf '%s\n' "$version" || exit 2; exit;; > --) shift; break;; > -*\'*) cmp="$cmp '"`printf '%sX\n' "$1" | sed "$escape"`;; > -?*) cmp="$cmp '$1'";; >@@ -65,14 +65,15 @@ > test "X$file" = X- || <"$file" || exit 2 > done > >-xz1=$xz >-xz2=$xz >+# xz needs -qQ to ignore warnings like unsupported check type. >+xz1="$xz -qQ" >+xz2="$xz -qQ" > xz_status=0 > exec 3>&1 > > if test $# -eq 1; then > case $1 in >- *[-.]xz | *[-.]lzma | *.t[lx]z) >+ *[-.]xz | *[-.]lzma | *[-.]lz | *.t[lx]z) > ;; > *[-.]bz2 | *.tbz | *.tbz2) > xz1=bzip2;; >@@ -80,19 +81,23 @@ > xz1=gzip;; > *[-.]lzo | *.tzo) > xz1=lzop;; >+ *[-.]zst | *.tzst) >+ xz1='zstd -q';; > *) >- echo >&2 "$0: $1: Unknown compressed file name suffix" >+ printf '%s\n' "$0: $1: Unknown compressed file name suffix" >&2 > exit 2;; > esac > case $1 in >- *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *[-.]lzo) >- FILE=`expr "X$1" : 'X\(.*\)[-.][abglmoxzZ2]*$'`;; >+ *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *[-.]lz | *[-.]lzo | *[-.]zst) >+ FILE=`expr "X$1" : 'X\(.*\)[-.][abglmostxzZ2]*$'`;; > *.t[abglx]z) > FILE=`expr "X$1" : 'X\(.*[-.]t\)[abglx]z$'`ar;; > *.tbz2) > FILE=`expr "X$1" : 'X\(.*[-.]t\)bz2$'`ar;; > *.tzo) > FILE=`expr "X$1" : 'X\(.*[-.]t\)zo$'`ar;; >+ *.tzst) >+ FILE=`expr "X$1" : 'X\(.*[-.]t\)zst$'`ar;; > esac > xz_status=$( > exec 4>&1 >@@ -103,36 +108,33 @@ > *[-.]bz2 | *.tbz | *.tbz2) xz1=bzip2;; > *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) xz1=gzip;; > *[-.]lzo | *.tzo) xz1=lzop;; >+ *[-.]zst | *.tzst) xz1='zstd -q';; > esac > case $2 in > *[-.]bz2 | *.tbz | *.tbz2) xz2=bzip2;; > *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) xz2=gzip;; > *[-.]lzo | *.tzo) xz2=lzop;; >+ *[-.]zst | *.tzst) xz2='zstd -q';; > esac > case $1 in >- *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | *[-.]lzo | *.tzo | -) >+ *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *[-.]lz | *.t[abglx]z | *.tbz2 | *[-.]lzo | *.tzo | *[-.]zst | *.tzst | -) > case "$2" in >- *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | *[-.]lzo | *.tzo | -) >+ *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *[-.]lz | *.t[abglx]z | *.tbz2 | *[-.]lzo | *.tzo | *[-.]zst | *.tzst | -) > if test "$1$2" = --; then > xz_status=$( > exec 4>&1 >- ($xz1 -cdfq - 4>&-; echo $? >&4) 3>&- | >+ ($xz1 -cdf - 4>&-; echo $? >&4) 3>&- | > eval "$cmp" - - >&3 > ) > elif # Reject Solaris 8's buggy /bin/bash 2.03. > echo X | (echo X | eval "$cmp" /dev/fd/5 - >/dev/null 2>&1) 5<&0; then >+ # NOTE: xz_status will contain two numbers. > xz_status=$( > exec 4>&1 >- ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- | >- ( ($xz2 -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- 5<&- </dev/null | >+ ($xz1 -cdf -- "$1" 4>&-; echo $? >&4) 3>&- | >+ ( ($xz2 -cdf -- "$2" 4>&-; echo $? >&4) 3>&- 5<&- </dev/null | > eval "$cmp" /dev/fd/5 - >&3) 5<&0 > ) >- cmp_status=$? >- case $xz_status in >- *[1-9]*) xz_status=1;; >- *) xz_status=0;; >- esac >- (exit $cmp_status) > else > F=`expr "/$2" : '.*/\(.*\)[-.][ablmotxz2]*$'` || F=$prog > tmp= >@@ -161,10 +163,10 @@ > mkdir -- "${TMPDIR-/tmp}/$prog.$$" || exit 2 > tmp="${TMPDIR-/tmp}/$prog.$$" > fi >- $xz2 -cdfq -- "$2" > "$tmp/$F" || exit 2 >+ $xz2 -cdf -- "$2" > "$tmp/$F" || exit 2 > xz_status=$( > exec 4>&1 >- ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- | >+ ($xz1 -cdf -- "$1" 4>&-; echo $? >&4) 3>&- | > eval "$cmp" - '"$tmp/$F"' >&3 > ) > cmp_status=$? >@@ -175,16 +177,16 @@ > *) > xz_status=$( > exec 4>&1 >- ($xz1 -cdfq -- "$1" 4>&-; echo $? >&4) 3>&- | >+ ($xz1 -cdf -- "$1" 4>&-; echo $? >&4) 3>&- | > eval "$cmp" - '"$2"' >&3 > );; > esac;; > *) > case "$2" in >- *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *.t[abglx]z | *.tbz2 | *[-.]lzo | *.tzo | -) >+ *[-.][zZ] | *_z | *[-.][gx]z | *[-.]bz2 | *[-.]lzma | *[-.]lz | *.t[abglx]z | *.tbz2 | *[-.]lzo | *.tzo | *[-.]zst | *.tzst | -) > xz_status=$( > exec 4>&1 >- ($xz2 -cdfq -- "$2" 4>&-; echo $? >&4) 3>&- | >+ ($xz2 -cdf -- "$2" 4>&-; echo $? >&4) 3>&- | > eval "$cmp" '"$1"' - >&3 > );; > *) >@@ -192,10 +194,22 @@ > esac;; > esac > else >- echo >&2 "$0: Invalid number of operands; try \`${0##*/} --help' for help" >+ printf '%s\n' "$0: Invalid number of operands; try \`${0##*/} --help' for help" >&2 > exit 2 > fi > > cmp_status=$? >-test "$xz_status" -eq 0 || exit 2 >+for num in $xz_status ; do >+ # 0 from decompressor means successful decompression. SIGPIPE from >+ # decompressor is possible when diff or cmp exits before the whole file >+ # has been decompressed. In that case we want to retain the exit status >+ # from diff or cmp. Note that using "trap '' PIPE" is not possible >+ # because gzip changes its behavior (including exit status) if SIGPIPE >+ # is ignored. >+ test "$num" -eq 0 && continue >+ test "$num" -ge 128 \ >+ && test "$(kill -l "$num" 2> /dev/null)" = "PIPE" \ >+ && continue >+ exit 2 >+done > exit $cmp_status >diff -ur xz-5.2.5/src/scripts/xzgrep.1 xz-5.4.3/src/scripts/xzgrep.1 >--- xz-5.2.5/src/scripts/xzgrep.1 2020-03-17 17:28:50 >+++ xz-5.4.3/src/scripts/xzgrep.1 2023-05-04 17:21:05 >@@ -6,7 +6,7 @@ > .\" > .\" License: GNU GPLv2+ > .\" >-.TH XZGREP 1 "2011-03-19" "Tukaani" "XZ Utils" >+.TH XZGREP 1 "2022-07-19" "Tukaani" "XZ Utils" > .SH NAME > xzgrep \- search compressed files for a regular expression > .SH SYNOPSIS >@@ -14,22 +14,22 @@ > .RI [ grep_options ] > .RB [ \-e ] > .I pattern >-.IR file "..." >+.RI [ file... ] > .br > .B xzegrep >-.RB ... >+\&... > .br > .B xzfgrep >-.RB ... >+\&... > .br > .B lzgrep >-.RB ... >+\&... > .br > .B lzegrep >-.RB ... >+\&... > .br > .B lzfgrep >-.RB ... >+\&... > .SH DESCRIPTION > .B xzgrep > invokes >@@ -41,8 +41,9 @@ > .BR lzma (1), > .BR gzip (1), > .BR bzip2 (1), >+.BR lzop (1), > or >-.BR lzop (1). >+.BR zstd (1). > All options specified are passed directly to > .BR grep (1). > .PP >@@ -54,8 +55,9 @@ > When reading from standard input, > .BR gzip (1), > .BR bzip2 (1), >+.BR lzop (1), > and >-.BR lzop (1) >+.BR zstd (1) > compressed files are not supported. > .PP > If >@@ -65,9 +67,9 @@ > or > .B xzfgrep > then >-.BR egrep (1) >+.B grep \-E > or >-.BR fgrep (1) >+.B grep \-F > is used instead of > .BR grep (1). > The same applies to names >@@ -76,7 +78,19 @@ > and > .BR lzfgrep , > which are provided for backward compatibility with LZMA Utils. >-.PP >+.SH EXIT STATUS >+.TP >+0 >+At least one match was found from at least one of the input files. >+No errors occurred. >+.TP >+1 >+No matches were found from any of the input files. >+No errors occurred. >+.TP >+>1 >+One or more errors occurred. >+It is unknown if matches were found. > .SH ENVIRONMENT > .TP > .B GREP >@@ -86,13 +100,14 @@ > .B xzgrep > uses it instead of > .BR grep (1), >-.BR egrep (1), >+.BR "grep \-E" , > or >-.BR fgrep (1). >+.BR "grep \-F" . > .SH "SEE ALSO" > .BR grep (1), > .BR xz (1), > .BR gzip (1), > .BR bzip2 (1), > .BR lzop (1), >+.BR zstd (1), > .BR zgrep (1) >diff -ur xz-5.2.5/src/scripts/xzgrep.in xz-5.4.3/src/scripts/xzgrep.in >--- xz-5.2.5/src/scripts/xzgrep.in 2020-03-17 17:28:50 >+++ xz-5.4.3/src/scripts/xzgrep.in 2023-05-04 17:21:05 >@@ -29,8 +29,8 @@ > unset GZIP BZIP BZIP2 LZOP > > case ${0##*/} in >- *egrep*) prog=xzegrep; grep=${GREP:-egrep};; >- *fgrep*) prog=xzfgrep; grep=${GREP:-fgrep};; >+ *egrep*) prog=xzegrep; grep=${GREP:-grep -E};; >+ *fgrep*) prog=xzfgrep; grep=${GREP:-grep -F};; > *) prog=xzgrep; grep=${GREP:-grep};; > esac > >@@ -57,22 +57,45 @@ > no_filename=0 > with_filename=0 > >+# See if -H and --label options are supported (GNU and *BSDs). >+if test f:x = "$(eval "echo x | $grep -H --label=f x 2> /dev/null")"; then >+ grep_supports_label=1 >+else >+ grep_supports_label=0 >+fi >+ > while test $# -ne 0; do > option=$1 > shift > optarg= > > case $option in >- (-[0123456789abcdhHiIKLlnoqrRsTuUvVwxyzZ]?*) >- arg2=-\'$(expr "X${option}X" : 'X-.[0-9]*\(.*\)' | sed "$escape") >+ (-[0123456789abcdEFGhHiIKlLnoPqrRsTuUvVwxyzZ]*[!0123456789]*) >+ # Something like -Fiv was specified, that is, $option contains more >+ # than one option of which the first option (in this example -F) >+ # doesn't take an argument. Split the first option into a standalone >+ # argument and continue parsing the rest of the options (in this example, >+ # replace -Fiv with -iv in the argument list and set option=-F). >+ # >+ # If there are digits [0-9] they are treated as if they were a single >+ # option character because this syntax is an alias for -C for GNU grep. >+ # For example, "grep -25F" is equivalent to "grep -C25 -F". If only >+ # digits are specified like "grep -25" we don't get here because the >+ # above pattern in the case-statement doesn't match such strings. >+ arg2=-\'$(LC_ALL=C expr "X${option}X" : 'X-.[0-9]*\(.*\)' | >+ LC_ALL=C sed "$escape") > eval "set -- $arg2 "'${1+"$@"}' >- option=$(expr "X$option" : 'X\(-.[0-9]*\)');; >+ option=$(LC_ALL=C expr "X$option" : 'X\(-.[0-9]*\)');; > (--binary-*=* | --[lm]a*=* | --reg*=*) >+ # These options require an argument and an argument has been provided >+ # with the --foo=argument syntax. All is good. > ;; >- (-[ABCDefm] | --binary-* | --file | --[lm]a* | --reg*) >+ (-[ABCDefmX] | --binary-* | --file | --[lm]a* | --reg*) >+ # These options require an argument which should now be in $1. >+ # If it isn't, display an error and exit. > case ${1?"$option option requires an argument"} in > (*\'*) >- optarg=" '"$(printf '%sX\n' "$1" | sed "$escape");; >+ optarg=" '"$(printf '%sX\n' "$1" | LC_ALL=C sed "$escape");; > (*) > optarg=" '$1'";; > esac >@@ -84,7 +107,8 @@ > (*) > case $option in > (*\'*) >- operands="$operands '"$(printf '%sX\n' "$option" | sed "$escape");; >+ operands="$operands '"$(printf '%sX\n' "$option" | >+ LC_ALL=C sed "$escape");; > (*) > operands="$operands '$option'";; > esac >@@ -99,7 +123,7 @@ > (-[ef]* | --file | --file=* | --reg*) > have_pat=1;; > (--h | --he | --hel | --help) >- echo "$usage" || exit 2 >+ printf '%s\n' "$usage" || exit 2 > exit;; > (-H | --wi | --wit | --with | --with- | --with-f | --with-fi \ > | --with-fil | --with-file | --with-filen | --with-filena | --with-filenam \ >@@ -115,13 +139,13 @@ > (-h | --no-f*) > no_filename=1;; > (-V | --v | --ve | --ver | --vers | --versi | --versio | --version) >- echo "$version" || exit 2 >+ printf '%s\n' "$version" || exit 2 > exit;; > esac > > case $option in > (*\'?*) >- option=\'$(expr "X${option}X" : 'X\(.*\)' | sed "$escape");; >+ option=\'$(printf '%sX\n' "$option" | LC_ALL=C sed "$escape");; > (*) > option="'$option'";; > esac >@@ -129,18 +153,14 @@ > grep="$grep $option$optarg" > done > >-if test $files_with_matches -eq 1 || test $files_without_matches -eq 1; then >- grep="$grep -q" >-fi >- > eval "set -- $operands "'${1+"$@"}' > > if test $have_pat -eq 0; then > case ${1?"Missing pattern; try \`${0##*/} --help' for help"} in > (*\'*) >- grep="$grep -- '"$(printf '%sX\n' "$1" | sed "$escape");; >+ grep="$grep -e '"$(printf '%sX\n' "$1" | LC_ALL=C sed "$escape");; > (*) >- grep="$grep -- '$1'";; >+ grep="$grep -e '$1'";; > esac > shift > fi >@@ -156,19 +176,22 @@ > > for i; do > case $i in >- *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) uncompress="gzip -cdfq";; >- *[-.]bz2 | *[-.]tbz | *.tbz2) uncompress="bzip2 -cdfq";; >- *[-.]lzo | *[-.]tzo) uncompress="lzop -cdfq";; >- *) uncompress="$xz -cdfq";; >+ *[-.][zZ] | *_z | *[-.]gz | *.t[ag]z) uncompress="gzip -cdf";; >+ *[-.]bz2 | *[-.]tbz | *.tbz2) uncompress="bzip2 -cdf";; >+ *[-.]lzo | *[-.]tzo) uncompress="lzop -cdf";; >+ *[-.]zst | *[-.]tzst) uncompress="zstd -cdfq";; # zstd needs -q. >+ *) uncompress="$xz -cdfqQ";; # -qQ to ignore warnings like unsupp. check. > esac >- # Fail if xz or grep (or sed) fails. >+ # xz_status will hold the decompressor's exit status. >+ # Exit status of grep (and in rare cases, printf or sed) is >+ # available as the exit status of this assignment command. > xz_status=$( > exec 5>&1 > ($uncompress -- "$i" 5>&-; echo $? >&5) 3>&- | > if test $files_with_matches -eq 1; then >- eval "$grep" && { printf '%s\n' "$i" || exit 2; } >+ eval "$grep -q" && { printf '%s\n' "$i" || exit 2; } > elif test $files_without_matches -eq 1; then >- eval "$grep" || { >+ eval "$grep -q" || { > r=$? > if test $r -eq 1; then > printf '%s\n' "$i" || r=2 >@@ -178,39 +201,98 @@ > elif test $with_filename -eq 0 && > { test $# -eq 1 || test $no_filename -eq 1; }; then > eval "$grep" >+ elif test $grep_supports_label -eq 1; then >+ # The grep implementation in use allows us to specify the filename >+ # that grep will prefix to the output lines. This is faster and >+ # less prone to security bugs than the fallback method that uses sed. >+ # This also avoids confusing output with GNU grep >= 3.5 (2020-09-27) >+ # which prints "binary file matches" to stderr instead of stdout. >+ # >+ # If reading from stdin, let grep use whatever name it prefers for >+ # stdin. With GNU grep it is a locale-specific translated string. >+ if test "x$i" = "x-"; then >+ eval "$grep -H" >+ else >+ eval "$grep -H --label \"\$i\"" >+ fi > else >+ # Append a colon so that the last character will never be a newline >+ # which would otherwise get lost in shell command substitution. >+ i="$i:" >+ >+ # Escape & \ | and newlines only if such characters are present >+ # (speed optimization). > case $i in > (*' > '* | *'&'* | *'\'* | *'|'*) >- i=$(printf '%s\n' "$i" | >- sed ' >- $!N >- $s/[&\|]/\\&/g >- $s/\n/\\n/g >- ');; >+ # If sed fails, set i to a known safe string to ensure that >+ # failing sed did not create a half-escaped dangerous string. >+ i=$(printf '%s\n' "$i" | LC_ALL=C sed 's/[&\|]/\\&/g; $!s/$/\\/') || >+ i='(unknown filename):';; > esac >- sed_script="s|^|$i:|" > >- # Fail if grep or sed fails. >+ # $i already ends with a colon so do not add it here. >+ sed_script="s|^|$i|" >+ >+ # If grep or sed fails, pick the larger value of the two exit statuses. >+ # If sed fails, use at least 2 since we use >= 2 to indicate errors. > r=$( > exec 4>&1 >- (eval "$grep" 4>&-; echo $? >&4) 3>&- | sed "$sed_script" >&3 4>&- >- ) || r=2 >+ (eval "$grep" 4>&-; echo $? >&4) 3>&- | >+ LC_ALL=C sed "$sed_script" >&3 4>&- >+ ) || { >+ sed_status=$? >+ test "$sed_status" -lt 2 && sed_status=2 >+ test "$r" -lt "$sed_status" && r=$sed_status >+ } > exit $r > fi >&3 5>&- > ) > r=$? > >- # fail occurred previously, nothing worse can happen >- test $res -gt 1 && continue >+ # If grep or sed or other non-decompression command failed with a signal, >+ # exit immediately and ignore the possible remaining files. >+ # >+ # NOTE: Instead of 128 + signal_number, some shells use >+ # 256 + signal_number (ksh) or 384 + signal_number (yash). >+ # This is fine for us since their "exit" and "kill -l" commands take >+ # this into account. (At least the versions I tried do but there is >+ # a report of an old ksh variant whose "exit" truncates the exit status >+ # to 8 bits without any special handling for values indicating a signal.) >+ test "$r" -ge 128 && exit "$r" > >- test "$xz_status" -eq 0 || test "$xz_status" -eq 2 \ >- || test "$(kill -l "$xz_status" 2> /dev/null)" = "PIPE" || r=2 >+ if test -z "$xz_status"; then >+ # Something unusual happened, for example, we got a signal and >+ # the exit status of the decompressor was never echoed and thus >+ # $xz_status is empty. Exit immediately and ignore the possible >+ # remaining files. >+ exit 2 >+ elif test "$xz_status" -ge 128; then >+ # The decompressor died due to a signal. SIGPIPE is ignored since it can >+ # occur if grep exits before the whole file has been decompressed (grep -q >+ # can do that). If the decompressor died with some other signal, exit >+ # immediately and ignore the possible remaining files. >+ test "$(kill -l "$xz_status" 2> /dev/null)" != "PIPE" && exit "$xz_status" >+ elif test "$xz_status" -gt 0; then >+ # Decompression failed but we will continue with the remaining >+ # files anwyway. Set exit status to at least 2 to indicate an error. >+ test "$r" -lt 2 && r=2 >+ fi > >- # still no match >- test $r -eq 1 && continue >- >- # 0 == match, >=2 == fail >- res=$r >+ # Since res=1 is the initial value, we only need to care about >+ # matches (r == 0) and errors (r >= 2) here; r == 1 can be ignored. >+ if test "$r" -ge 2; then >+ # An error occurred in decompressor, grep, or some other command. Update >+ # res unless a larger error code has been seen with an earlier file. >+ test "$res" -lt "$r" && res=$r >+ elif test "$r" -eq 0; then >+ # grep found a match and no errors occurred. Update res if no errors have >+ # occurred with earlier files. >+ test "$res" -eq 1 && res=0 >+ fi > done >-exit $res >+ >+# 0: At least one file matched and no errors occurred. >+# 1: No matches were found and no errors occurred. >+# >=2: Error. It's unknown if matches were found. >+exit "$res" >diff -ur xz-5.2.5/src/scripts/xzless.in xz-5.4.3/src/scripts/xzless.in >--- xz-5.2.5/src/scripts/xzless.in 2020-03-17 17:28:50 >+++ xz-5.4.3/src/scripts/xzless.in 2023-05-04 17:21:05 >@@ -33,8 +33,8 @@ > Report bugs to <@PACKAGE_BUGREPORT@>." > > case $1 in >- --help) echo "$usage" || exit 2; exit;; >- --version) echo "$version" || exit 2; exit;; >+ --help) printf '%s\n' "$usage" || exit 2; exit;; >+ --version) printf '%s\n' "$version" || exit 2; exit;; > esac > > if test "${LESSMETACHARS+set}" != set; then >@@ -47,12 +47,12 @@ > LESSMETACHARS="$space$tab$nl'"';*?"()<>[|&^`#\$%=~' > fi > >-if test "$(less -V | { read _ ver _ && echo ${ver}; })" -ge 429; then >+if test "$(less -V | { read _ ver _ && echo ${ver%%.*}; })" -ge 429; then > # less 429 or later: LESSOPEN pipe will be used on > # standard input if $LESSOPEN begins with |-. >- LESSOPEN="|-$xz -cdfq -- %s" >+ LESSOPEN="|-$xz -cdfqQ -- %s" > else >- LESSOPEN="|$xz -cdfq -- %s" >+ LESSOPEN="|$xz -cdfqQ -- %s" > fi > export LESSMETACHARS LESSOPEN > >diff -ur xz-5.2.5/src/scripts/xzmore.in xz-5.4.3/src/scripts/xzmore.in >--- xz-5.2.5/src/scripts/xzmore.in 2020-03-17 17:28:50 >+++ xz-5.4.3/src/scripts/xzmore.in 2023-05-04 17:21:05 >@@ -31,8 +31,8 @@ > Report bugs to <@PACKAGE_BUGREPORT@>." > > case $1 in >- --help) echo "$usage" || exit 2; exit;; >- --version) echo "$version" || exit 2; exit;; >+ --help) printf '%s\n' "$usage" || exit 2; exit;; >+ --version) printf '%s\n' "$version" || exit 2; exit;; > esac > > oldtty=`stty -g 2>/dev/null` >@@ -50,9 +50,9 @@ > > if test $# = 0; then > if test -t 0; then >- echo "$usage"; exit 1 >+ printf '%s\n' "$usage"; exit 1 > else >- $xz -cdfq | eval "${PAGER:-more}" >+ $xz -cdfqQ | eval "${PAGER:-more}" > fi > else > FIRST=1 >@@ -69,8 +69,8 @@ > esac > fi > if test "$ANS" != 's'; then >- echo "------> $FILE <------" >- $xz -cdfq -- "$FILE" | eval "${PAGER:-more}" >+ printf '%s\n' "------> $FILE <------" >+ $xz -cdfqQ -- "$FILE" | eval "${PAGER:-more}" > fi > if test -t 1; then > FIRST=0 >diff -ur xz-5.2.5/src/xz/Makefile.in xz-5.4.3/src/xz/Makefile.in >--- xz-5.2.5/src/xz/Makefile.in 2020-03-17 17:29:36 >+++ xz-5.4.3/src/xz/Makefile.in 2023-05-04 17:31:30 >@@ -1,7 +1,7 @@ >-# Makefile.in generated by automake 1.16.1 from Makefile.am. >+# Makefile.in generated by automake 1.16.5 from Makefile.am. > # @configure_input@ > >-# Copyright (C) 1994-2018 Free Software Foundation, Inc. >+# Copyright (C) 1994-2021 Free Software Foundation, Inc. > > # This Makefile.in is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -246,8 +246,6 @@ > unique=`for i in $$list; do \ > if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ > done | $(am__uniquify_input)` >-ETAGS = etags >-CTAGS = ctags > am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ > $(top_srcdir)/build-aux/depcomp > DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) >@@ -271,6 +269,8 @@ > CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ > CPP = @CPP@ > CPPFLAGS = @CPPFLAGS@ >+CSCOPE = @CSCOPE@ >+CTAGS = @CTAGS@ > CYGPATH_W = @CYGPATH_W@ > DEFS = @DEFS@ > DEPDIR = @DEPDIR@ >@@ -281,8 +281,10 @@ > ECHO_N = @ECHO_N@ > ECHO_T = @ECHO_T@ > EGREP = @EGREP@ >+ETAGS = @ETAGS@ > EXEEXT = @EXEEXT@ > FGREP = @FGREP@ >+FILECMD = @FILECMD@ > GETOPT_H = @GETOPT_H@ > GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ > GMSGFMT = @GMSGFMT@ >@@ -335,6 +337,7 @@ > PREFERABLY_POSIX_SHELL = @PREFERABLY_POSIX_SHELL@ > PTHREAD_CC = @PTHREAD_CC@ > PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ >+PTHREAD_CXX = @PTHREAD_CXX@ > PTHREAD_LIBS = @PTHREAD_LIBS@ > RANLIB = @RANLIB@ > RC = @RC@ >@@ -393,6 +396,7 @@ > prefix = @prefix@ > program_transform_name = @program_transform_name@ > psdir = @psdir@ >+runstatedir = @runstatedir@ > sbindir = @sbindir@ > sharedstatedir = @sharedstatedir@ > srcdir = @srcdir@ >@@ -897,7 +901,6 @@ > > distclean-tags: > -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags >- > distdir: $(BUILT_SOURCES) > $(MAKE) $(AM_MAKEFLAGS) distdir-am > >diff -ur xz-5.2.5/src/xz/args.c xz-5.4.3/src/xz/args.c >--- xz-5.2.5/src/xz/args.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/args.c 2023-05-04 17:21:05 >@@ -29,19 +29,29 @@ > const char stdin_filename[] = "(stdin)"; > > >-/// Parse and set the memory usage limit for compression and/or decompression. >+/// Parse and set the memory usage limit for compression, decompression, >+/// and/or multithreaded decompression. > static void >-parse_memlimit(const char *name, const char *name_percentage, char *str, >- bool set_compress, bool set_decompress) >+parse_memlimit(const char *name, const char *name_percentage, const char *str, >+ bool set_compress, bool set_decompress, bool set_mtdec) > { > bool is_percentage = false; > uint64_t value; > > const size_t len = strlen(str); > if (len > 0 && str[len - 1] == '%') { >- str[len - 1] = '\0'; >+ // Make a copy so that we can get rid of %. >+ // >+ // In the past str wasn't const and we modified it directly >+ // but that modified argv[] and thus affected what was visible >+ // in "ps auxf" or similar tools which was confusing. For >+ // example, --memlimit=50% would show up as --memlimit=50 >+ // since the percent sign was overwritten here. >+ char *s = xstrdup(str); >+ s[len - 1] = '\0'; > is_percentage = true; >- value = str_to_uint64(name_percentage, str, 1, 100); >+ value = str_to_uint64(name_percentage, s, 1, 100); >+ free(s); > } else { > // On 32-bit systems, SIZE_MAX would make more sense than > // UINT64_MAX. But use UINT64_MAX still so that scripts >@@ -49,15 +59,19 @@ > value = str_to_uint64(name, str, 0, UINT64_MAX); > } > >- hardware_memlimit_set( >- value, set_compress, set_decompress, is_percentage); >+ hardware_memlimit_set(value, set_compress, set_decompress, set_mtdec, >+ is_percentage); > return; > } > > > static void >-parse_block_list(char *str) >+parse_block_list(const char *str_const) > { >+ // We need a modifiable string in the for-loop. >+ char *str_start = xstrdup(str_const); >+ char *str = str_start; >+ > // It must be non-empty and not begin with a comma. > if (str[0] == '\0' || str[0] == ',') > message_fatal(_("%s: Invalid argument to --block-list"), str); >@@ -112,6 +126,8 @@ > > // Terminate the array. > opt_block_list[count] = 0; >+ >+ free(str_start); > return; > } > >@@ -125,6 +141,7 @@ > OPT_IA64, > OPT_ARM, > OPT_ARMTHUMB, >+ OPT_ARM64, > OPT_SPARC, > OPT_DELTA, > OPT_LZMA1, >@@ -138,6 +155,7 @@ > OPT_BLOCK_LIST, > OPT_MEM_COMPRESS, > OPT_MEM_DECOMPRESS, >+ OPT_MEM_MT_DECOMPRESS, > OPT_NO_ADJUST, > OPT_INFO_MEMORY, > OPT_ROBOT, >@@ -176,6 +194,7 @@ > { "block-list", required_argument, NULL, OPT_BLOCK_LIST }, > { "memlimit-compress", required_argument, NULL, OPT_MEM_COMPRESS }, > { "memlimit-decompress", required_argument, NULL, OPT_MEM_DECOMPRESS }, >+ { "memlimit-mt-decompress", required_argument, NULL, OPT_MEM_MT_DECOMPRESS }, > { "memlimit", required_argument, NULL, 'M' }, > { "memory", required_argument, NULL, 'M' }, // Old alias > { "no-adjust", no_argument, NULL, OPT_NO_ADJUST }, >@@ -194,6 +213,7 @@ > { "ia64", optional_argument, NULL, OPT_IA64 }, > { "arm", optional_argument, NULL, OPT_ARM }, > { "armthumb", optional_argument, NULL, OPT_ARMTHUMB }, >+ { "arm64", optional_argument, NULL, OPT_ARM64 }, > { "sparc", optional_argument, NULL, OPT_SPARC }, > { "delta", optional_argument, NULL, OPT_DELTA }, > >@@ -225,20 +245,27 @@ > case OPT_MEM_COMPRESS: > parse_memlimit("memlimit-compress", > "memlimit-compress%", optarg, >- true, false); >+ true, false, false); > break; > > // --memlimit-decompress > case OPT_MEM_DECOMPRESS: > parse_memlimit("memlimit-decompress", > "memlimit-decompress%", optarg, >- false, true); >+ false, true, false); > break; > >+ // --memlimit-mt-decompress >+ case OPT_MEM_MT_DECOMPRESS: >+ parse_memlimit("memlimit-mt-decompress", >+ "memlimit-mt-decompress%", optarg, >+ false, false, true); >+ break; >+ > // --memlimit > case 'M': > parse_memlimit("memlimit", "memlimit%", optarg, >- true, true); >+ true, true, true); > break; > > // --suffix >@@ -246,11 +273,23 @@ > suffix_set(optarg); > break; > >- case 'T': >+ case 'T': { >+ // Since xz 5.4.0: Ignore leading '+' first. >+ const char *s = optarg; >+ if (optarg[0] == '+') >+ ++s; >+ > // The max is from src/liblzma/common/common.h. >- hardware_threads_set(str_to_uint64("threads", >- optarg, 0, 16384)); >+ uint32_t t = str_to_uint64("threads", s, 0, 16384); >+ >+ // If leading '+' was used then use multi-threaded >+ // mode even if exactly one thread was specified. >+ if (t == 1 && optarg[0] == '+') >+ t = UINT32_MAX; >+ >+ hardware_threads_set(t); > break; >+ } > > // --version > case 'V': >@@ -360,6 +399,11 @@ > options_bcj(optarg)); > break; > >+ case OPT_ARM64: >+ coder_add_filter(LZMA_FILTER_ARM64, >+ options_bcj(optarg)); >+ break; >+ > case OPT_SPARC: > coder_add_filter(LZMA_FILTER_SPARC, > options_bcj(optarg)); >@@ -395,8 +439,9 @@ > { "xz", FORMAT_XZ }, > { "lzma", FORMAT_LZMA }, > { "alone", FORMAT_LZMA }, >- // { "gzip", FORMAT_GZIP }, >- // { "gz", FORMAT_GZIP }, >+#ifdef HAVE_LZIP_DECODER >+ { "lzip", FORMAT_LZIP }, >+#endif > { "raw", FORMAT_RAW }, > }; > >@@ -475,7 +520,7 @@ > "or `--files0'.")); > > if (optarg == NULL) { >- args->files_name = (char *)stdin_filename; >+ args->files_name = stdin_filename; > args->files_file = stdin; > } else { > args->files_name = optarg; >@@ -651,6 +696,12 @@ > "at build time")); > #endif > >+#ifdef HAVE_LZIP_DECODER >+ if (opt_mode == MODE_COMPRESS && opt_format == FORMAT_LZIP) >+ message_fatal(_("Compression of lzip files (.lz) " >+ "is not supported")); >+#endif >+ > // Never remove the source file when the destination is not on disk. > // In test mode the data is written nowhere, but setting opt_stdout > // will make the rest of the code behave well. >@@ -669,8 +720,17 @@ > // be done also when uncompressing raw data, since for raw decoding > // the options given on the command line are used to know what kind > // of raw data we are supposed to decode. >- if (opt_mode == MODE_COMPRESS || opt_format == FORMAT_RAW) >+ if (opt_mode == MODE_COMPRESS || (opt_format == FORMAT_RAW >+ && opt_mode != MODE_LIST)) > coder_set_compression_settings(); >+ >+ // If raw format is used and a custom suffix is not provided, >+ // then only stdout mode can be used when compressing or decompressing. >+ if (opt_format == FORMAT_RAW && !suffix_is_set() && !opt_stdout >+ && (opt_mode == MODE_COMPRESS >+ || opt_mode == MODE_DECOMPRESS)) >+ message_fatal(_("With --format=raw, --suffix=.SUF is " >+ "required unless writing to stdout")); > > // If no filenames are given, use stdin. > if (argv[optind] == NULL && args->files_name == NULL) { >diff -ur xz-5.2.5/src/xz/args.h xz-5.4.3/src/xz/args.h >--- xz-5.2.5/src/xz/args.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/args.h 2023-05-04 17:21:05 >@@ -19,7 +19,7 @@ > > /// Name of the file from which to read filenames. This is NULL > /// if --files or --files0 was not used. >- char *files_name; >+ const char *files_name; > > /// File opened for reading from which filenames are read. This is > /// non-NULL only if files_name is non-NULL. >diff -ur xz-5.2.5/src/xz/coder.c xz-5.4.3/src/xz/coder.c >--- xz-5.2.5/src/xz/coder.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/coder.c 2023-05-04 17:21:05 >@@ -51,7 +51,12 @@ > /// This becomes false if the --check=CHECK option is used. > static bool check_default = true; > >-#if defined(HAVE_ENCODERS) && defined(MYTHREAD_ENABLED) >+/// Indicates if unconsumed input is allowed to remain after >+/// decoding has successfully finished. This is set for each file >+/// in coder_init(). >+static bool allow_trailing_input; >+ >+#ifdef MYTHREAD_ENABLED > static lzma_mt mt_options = { > .flags = 0, > .timeout = 300, >@@ -136,6 +141,11 @@ > extern void > coder_set_compression_settings(void) > { >+#ifdef HAVE_LZIP_DECODER >+ // .lz compression isn't supported. >+ assert(opt_format != FORMAT_LZIP); >+#endif >+ > // The default check type is CRC64, but fallback to CRC32 > // if CRC64 isn't supported by the copy of liblzma we are > // using. CRC32 is always supported. >@@ -211,7 +221,7 @@ > } > } > >- if (hardware_threads_get() > 1) { >+ if (hardware_threads_is_mt()) { > message(V_WARNING, _("Switching to single-threaded " > "mode due to --flush-timeout")); > hardware_threads_set(1); >@@ -220,12 +230,16 @@ > > // Get the memory usage. Note that if --format=raw was used, > // we can be decompressing. >- const uint64_t memory_limit = hardware_memlimit_get(opt_mode); >+ // >+ // If multithreaded .xz compression is done, this value will be >+ // replaced. >+ uint64_t memory_limit = hardware_memlimit_get(opt_mode); > uint64_t memory_usage = UINT64_MAX; > if (opt_mode == MODE_COMPRESS) { > #ifdef HAVE_ENCODERS > # ifdef MYTHREAD_ENABLED >- if (opt_format == FORMAT_XZ && hardware_threads_get() > 1) { >+ if (opt_format == FORMAT_XZ && hardware_threads_is_mt()) { >+ memory_limit = hardware_memlimit_mtenc_get(); > mt_options.threads = hardware_threads_get(); > mt_options.block_size = opt_block_size; > mt_options.check = check; >@@ -269,47 +283,90 @@ > if (memory_usage <= memory_limit) > return; > >- // If --no-adjust was used or we didn't find LZMA1 or >- // LZMA2 as the last filter, give an error immediately. >- // --format=raw implies --no-adjust. >- if (!opt_auto_adjust || opt_format == FORMAT_RAW) >+ // With --format=raw settings are never adjusted to meet >+ // the memory usage limit. >+ if (opt_format == FORMAT_RAW) > memlimit_too_small(memory_usage); > > assert(opt_mode == MODE_COMPRESS); > > #ifdef HAVE_ENCODERS > # ifdef MYTHREAD_ENABLED >- if (opt_format == FORMAT_XZ && mt_options.threads > 1) { >+ if (opt_format == FORMAT_XZ && hardware_threads_is_mt()) { > // Try to reduce the number of threads before > // adjusting the compression settings down. >- do { >- // FIXME? The real single-threaded mode has >- // lower memory usage, but it's not comparable >- // because it doesn't write the size info >- // into Block Headers. >- if (--mt_options.threads == 0) >- memlimit_too_small(memory_usage); >- >+ while (mt_options.threads > 1) { >+ // Reduce the number of threads by one and check >+ // the memory usage. >+ --mt_options.threads; > memory_usage = lzma_stream_encoder_mt_memusage( > &mt_options); > if (memory_usage == UINT64_MAX) > message_bug(); > >- } while (memory_usage > memory_limit); >+ if (memory_usage <= memory_limit) { >+ // The memory usage is now low enough. >+ message(V_WARNING, _("Reduced the number of " >+ "threads from %s to %s to not exceed " >+ "the memory usage limit of %s MiB"), >+ uint64_to_str( >+ hardware_threads_get(), 0), >+ uint64_to_str(mt_options.threads, 1), >+ uint64_to_str(round_up_to_mib( >+ memory_limit), 2)); >+ return; >+ } >+ } > >- message(V_WARNING, _("Adjusted the number of threads " >- "from %s to %s to not exceed " >- "the memory usage limit of %s MiB"), >- uint64_to_str(hardware_threads_get(), 0), >- uint64_to_str(mt_options.threads, 1), >- uint64_to_str(round_up_to_mib( >- memory_limit), 2)); >+ // If the memory usage limit is only a soft limit (automatic >+ // number of threads and no --memlimit-compress), the limit >+ // is only used to reduce the number of threads and once at >+ // just one thread, the limit is completely ignored. This >+ // way -T0 won't use insane amount of memory but at the same >+ // time the soft limit will never make xz fail and never make >+ // xz change settings that would affect the compressed output. >+ if (hardware_memlimit_mtenc_is_default()) { >+ message(V_WARNING, _("Reduced the number of threads " >+ "from %s to one. The automatic memory usage " >+ "limit of %s MiB is still being exceeded. " >+ "%s MiB of memory is required. " >+ "Continuing anyway."), >+ uint64_to_str(hardware_threads_get(), 0), >+ uint64_to_str( >+ round_up_to_mib(memory_limit), 1), >+ uint64_to_str( >+ round_up_to_mib(memory_usage), 2)); >+ return; >+ } >+ >+ // If --no-adjust was used, we cannot drop to single-threaded >+ // mode since it produces different compressed output. >+ // >+ // NOTE: In xz 5.2.x, --no-adjust also prevented reducing >+ // the number of threads. This changed in 5.3.3alpha. >+ if (!opt_auto_adjust) >+ memlimit_too_small(memory_usage); >+ >+ // Switch to single-threaded mode. It uses >+ // less memory than using one thread in >+ // the multithreaded mode but the output >+ // is also different. >+ hardware_threads_set(1); >+ memory_usage = lzma_raw_encoder_memusage(filters); >+ message(V_WARNING, _("Switching to single-threaded mode " >+ "to not exceed the memory usage limit of %s MiB"), >+ uint64_to_str(round_up_to_mib(memory_limit), 0)); > } > # endif > > if (memory_usage <= memory_limit) > return; > >+ // Don't adjust LZMA2 or LZMA1 dictionary size if --no-adjust >+ // was specified as that would change the compressed output. >+ if (!opt_auto_adjust) >+ memlimit_too_small(memory_usage); >+ > // Look for the last filter if it is LZMA2 or LZMA1, so we can make > // it use less RAM. With other filters we don't know what to do. > size_t i = 0; >@@ -423,7 +480,19 @@ > > return true; > } >+ >+ >+#ifdef HAVE_LZIP_DECODER >+/// Return true if the data in in_buf seems to be in the .lz format. >+static bool >+is_format_lzip(void) >+{ >+ static const uint8_t magic[4] = { 0x4C, 0x5A, 0x49, 0x50 }; >+ return strm.avail_in >= sizeof(magic) >+ && memcmp(in_buf.u8, magic, sizeof(magic)) == 0; >+} > #endif >+#endif > > > /// Detect the input file type (for now, this done only when decompressing), >@@ -436,6 +505,12 @@ > { > lzma_ret ret = LZMA_PROG_ERROR; > >+ // In most cases if there is input left when coding finishes, >+ // something has gone wrong. Exceptions are --single-stream >+ // and decoding .lz files which can contain trailing non-.lz data. >+ // These will be handled later in this function. >+ allow_trailing_input = false; >+ > if (opt_mode == MODE_COMPRESS) { > #ifdef HAVE_ENCODERS > switch (opt_format) { >@@ -446,7 +521,7 @@ > > case FORMAT_XZ: > # ifdef MYTHREAD_ENABLED >- if (hardware_threads_get() > 1) >+ if (hardware_threads_is_mt()) > ret = lzma_stream_encoder_mt( > &strm, &mt_options); > else >@@ -459,6 +534,14 @@ > ret = lzma_alone_encoder(&strm, filters[0].options); > break; > >+# ifdef HAVE_LZIP_DECODER >+ case FORMAT_LZIP: >+ // args.c should disallow this. >+ assert(0); >+ ret = LZMA_PROG_ERROR; >+ break; >+# endif >+ > case FORMAT_RAW: > ret = lzma_raw_encoder(&strm, filters); > break; >@@ -475,7 +558,9 @@ > else > flags |= LZMA_TELL_UNSUPPORTED_CHECK; > >- if (!opt_single_stream) >+ if (opt_single_stream) >+ allow_trailing_input = true; >+ else > flags |= LZMA_CONCATENATED; > > // We abuse FORMAT_AUTO to indicate unknown file format, >@@ -484,8 +569,14 @@ > > switch (opt_format) { > case FORMAT_AUTO: >+ // .lz is checked before .lzma since .lzma detection >+ // is more complicated (no magic bytes). > if (is_format_xz()) > init_format = FORMAT_XZ; >+# ifdef HAVE_LZIP_DECODER >+ else if (is_format_lzip()) >+ init_format = FORMAT_LZIP; >+# endif > else if (is_format_lzma()) > init_format = FORMAT_LZMA; > break; >@@ -500,6 +591,13 @@ > init_format = FORMAT_LZMA; > break; > >+# ifdef HAVE_LZIP_DECODER >+ case FORMAT_LZIP: >+ if (is_format_lzip()) >+ init_format = FORMAT_LZIP; >+ break; >+# endif >+ > case FORMAT_RAW: > init_format = FORMAT_RAW; > break; >@@ -513,16 +611,42 @@ > // is needed, because we don't want to do use > // passthru mode with --test. > if (opt_mode == MODE_DECOMPRESS >- && opt_stdout && opt_force) >+ && opt_stdout && opt_force) { >+ // These are needed for progress info. >+ strm.total_in = 0; >+ strm.total_out = 0; > return CODER_INIT_PASSTHRU; >+ } > > ret = LZMA_FORMAT_ERROR; > break; > > case FORMAT_XZ: >+# ifdef MYTHREAD_ENABLED >+ mt_options.flags = flags; >+ >+ mt_options.threads = hardware_threads_get(); >+ mt_options.memlimit_stop >+ = hardware_memlimit_get(MODE_DECOMPRESS); >+ >+ // If single-threaded mode was requested, set the >+ // memlimit for threading to zero. This forces the >+ // decoder to use single-threaded mode which matches >+ // the behavior of lzma_stream_decoder(). >+ // >+ // Otherwise use the limit for threaded decompression >+ // which has a sane default (users are still free to >+ // make it insanely high though). >+ mt_options.memlimit_threading >+ = mt_options.threads == 1 >+ ? 0 : hardware_memlimit_mtdec_get(); >+ >+ ret = lzma_stream_decoder_mt(&strm, &mt_options); >+# else > ret = lzma_stream_decoder(&strm, > hardware_memlimit_get( > MODE_DECOMPRESS), flags); >+# endif > break; > > case FORMAT_LZMA: >@@ -531,6 +655,15 @@ > MODE_DECOMPRESS)); > break; > >+# ifdef HAVE_LZIP_DECODER >+ case FORMAT_LZIP: >+ allow_trailing_input = true; >+ ret = lzma_lzip_decoder(&strm, >+ hardware_memlimit_get( >+ MODE_DECOMPRESS), flags); >+ break; >+# endif >+ > case FORMAT_RAW: > // Memory usage has already been checked in > // coder_set_compression_settings(). >@@ -542,10 +675,30 @@ > // memory usage limit in case it happens in the first > // Block of the first Stream, which is where it very > // probably will happen if it is going to happen. >+ // >+ // This will also catch unsupported check type which >+ // we treat as a warning only. If there are empty >+ // concatenated Streams with unsupported check type then >+ // the message can be shown more than once here. The loop >+ // is used in case there is first a warning about >+ // unsupported check type and then the first Block >+ // would exceed the memlimit. > if (ret == LZMA_OK && init_format != FORMAT_RAW) { > strm.next_out = NULL; > strm.avail_out = 0; >- ret = lzma_code(&strm, LZMA_RUN); >+ while ((ret = lzma_code(&strm, LZMA_RUN)) >+ == LZMA_UNSUPPORTED_CHECK) >+ message_warning("%s: %s", pair->src_name, >+ message_strm(ret)); >+ >+ // With --single-stream lzma_code won't wait for >+ // LZMA_FINISH and thus it can return LZMA_STREAM_END >+ // if the file has no uncompressed data inside. >+ // So treat LZMA_STREAM_END as LZMA_OK here. >+ // When lzma_code() is called again in coder_normal() >+ // it will return LZMA_STREAM_END again. >+ if (ret == LZMA_STREAM_END) >+ ret = LZMA_OK; > } > #endif > } >@@ -574,7 +727,7 @@ > { > if (*next_block_remaining > 0) { > // The Block at *list_pos has previously been split up. >- assert(hardware_threads_get() == 1); >+ assert(!hardware_threads_is_mt()); > assert(opt_block_size > 0); > assert(opt_block_list != NULL); > >@@ -602,7 +755,7 @@ > // If in single-threaded mode, split up the Block if needed. > // This is not needed in multi-threaded mode because liblzma > // will do this due to how threaded encoding works. >- if (hardware_threads_get() == 1 && opt_block_size > 0 >+ if (!hardware_threads_is_mt() && opt_block_size > 0 > && *block_remaining > opt_block_size) { > *next_block_remaining > = *block_remaining - opt_block_size; >@@ -662,7 +815,7 @@ > // --block-size doesn't do anything here in threaded mode, > // because the threaded encoder will take care of splitting > // to fixed-sized Blocks. >- if (hardware_threads_get() == 1 && opt_block_size > 0) >+ if (!hardware_threads_is_mt() && opt_block_size > 0) > block_remaining = opt_block_size; > > // If --block-list was used, start with the first size. >@@ -676,7 +829,7 @@ > // mode the size info isn't written into Block Headers. > if (opt_block_list != NULL) { > if (block_remaining < opt_block_list[list_pos]) { >- assert(hardware_threads_get() == 1); >+ assert(!hardware_threads_is_mt()); > next_block_remaining = opt_block_list[list_pos] > - block_remaining; > } else { >@@ -740,7 +893,7 @@ > } else { > // Start a new Block after LZMA_FULL_BARRIER. > if (opt_block_list == NULL) { >- assert(hardware_threads_get() == 1); >+ assert(!hardware_threads_is_mt()); > assert(opt_block_size > 0); > block_remaining = opt_block_size; > } else { >@@ -756,9 +909,9 @@ > > } else if (ret != LZMA_OK) { > // Determine if the return value indicates that we >- // won't continue coding. >- const bool stop = ret != LZMA_NO_CHECK >- && ret != LZMA_UNSUPPORTED_CHECK; >+ // won't continue coding. LZMA_NO_CHECK would be >+ // here too if LZMA_TELL_ANY_CHECK was used. >+ const bool stop = ret != LZMA_UNSUPPORTED_CHECK; > > if (stop) { > // Write the remaining bytes even if something >@@ -771,7 +924,7 @@ > } > > if (ret == LZMA_STREAM_END) { >- if (opt_single_stream) { >+ if (allow_trailing_input) { > io_fix_src_pos(pair, strm.avail_in); > success = true; > break; >@@ -779,7 +932,9 @@ > > // Check that there is no trailing garbage. > // This is needed for LZMA_Alone and raw >- // streams. >+ // streams. This is *not* done with .lz files >+ // as that format specifically requires >+ // allowing trailing garbage. > if (strm.avail_in == 0 && !pair->src_eof) { > // Try reading one more byte. > // Hopefully we don't get any more >@@ -907,6 +1062,15 @@ > mytime_set_start_time(); > > // Initialize the progress indicator. >+ // >+ // NOTE: When reading from stdin, fstat() >+ // isn't called on it and thus src_st.st_size >+ // is zero. If stdin pointed to a regular >+ // file, it would still be possible to know >+ // the file size but then we would also need >+ // to take into account the current reading >+ // position since with stdin it isn't >+ // necessarily at the beginning of the file. > const bool is_passthru = init_ret > == CODER_INIT_PASSTHRU; > const uint64_t in_size >diff -ur xz-5.2.5/src/xz/coder.h xz-5.4.3/src/xz/coder.h >--- xz-5.2.5/src/xz/coder.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/coder.h 2023-05-04 17:21:05 >@@ -23,7 +23,9 @@ > FORMAT_AUTO, > FORMAT_XZ, > FORMAT_LZMA, >- // HEADER_GZIP, >+#ifdef HAVE_LZIP_DECODER >+ FORMAT_LZIP, >+#endif > FORMAT_RAW, > }; > >@@ -64,7 +66,8 @@ > /// Add a filter to the custom filter chain > extern void coder_add_filter(lzma_vli id, void *options); > >-/// >+/// Set and partially validate compression settings. This can also be used >+/// in decompression or test mode with the raw format. > extern void coder_set_compression_settings(void); > > /// Compress or decompress the given file >diff -ur xz-5.2.5/src/xz/file_io.c xz-5.4.3/src/xz/file_io.c >--- xz-5.2.5/src/xz/file_io.c 2020-03-17 17:28:54 >+++ xz-5.4.3/src/xz/file_io.c 2023-05-04 17:21:05 >@@ -140,7 +140,7 @@ > // handler. So ignore the errors and try to avoid warnings with > // GCC and glibc when _FORTIFY_SOURCE=2 is used. > uint8_t b = '\0'; >- const int ret = write(user_abort_pipe[1], &b, 1); >+ const ssize_t ret = write(user_abort_pipe[1], &b, 1); > (void)ret; > return; > } >@@ -192,15 +192,26 @@ > // Capsicum needs FreeBSD 10.0 or later. > cap_rights_t rights; > >+ if (cap_enter()) >+ goto error; >+ > if (cap_rights_limit(src_fd, cap_rights_init(&rights, > CAP_EVENT, CAP_FCNTL, CAP_LOOKUP, CAP_READ, CAP_SEEK))) > goto error; > >+ if (src_fd != STDIN_FILENO && cap_rights_limit( >+ STDIN_FILENO, cap_rights_clear(&rights))) >+ goto error; >+ > if (cap_rights_limit(STDOUT_FILENO, cap_rights_init(&rights, > CAP_EVENT, CAP_FCNTL, CAP_FSTAT, CAP_LOOKUP, > CAP_WRITE, CAP_SEEK))) > goto error; > >+ if (cap_rights_limit(STDERR_FILENO, cap_rights_init(&rights, >+ CAP_WRITE))) >+ goto error; >+ > if (cap_rights_limit(user_abort_pipe[0], cap_rights_init(&rights, > CAP_EVENT))) > goto error; >@@ -209,9 +220,17 @@ > CAP_WRITE))) > goto error; > >- if (cap_enter()) >+#elif defined(HAVE_PLEDGE) >+ // pledge() was introduced in OpenBSD 5.9. >+ // >+ // main() unconditionally calls pledge() with fairly relaxed >+ // promises which work in all situations. Here we make the >+ // sandbox more strict. >+ if (pledge("stdio", "")) > goto error; > >+ (void)src_fd; >+ > #else > # error ENABLE_SANDBOX is defined but no sandboxing method was found. > #endif >@@ -221,7 +240,16 @@ > return; > > error: >- message(V_DEBUG, _("Failed to enable the sandbox")); >+#ifdef HAVE_CAPSICUM >+ // If a kernel is configured without capability mode support or >+ // used in an emulator that does not implement the capability >+ // system calls, then the Capsicum system calls will fail and set >+ // errno to ENOSYS. In that case xz will silently run without >+ // the sandbox. >+ if (errno == ENOSYS) >+ return; >+#endif >+ message_fatal(_("Failed to enable the sandbox")); > } > #endif // ENABLE_SANDBOX > >@@ -330,14 +358,14 @@ > // it is possible that the user has put a new file in place > // of the original file, and in that case it obviously > // shouldn't be removed. >- message_error(_("%s: File seems to have been moved, " >+ message_warning(_("%s: File seems to have been moved, " > "not removing"), name); > else > #endif > // There's a race condition between lstat() and unlink() > // but at least we have tried to avoid removing wrong file. > if (unlink(name)) >- message_error(_("%s: Cannot remove: %s"), >+ message_warning(_("%s: Cannot remove: %s"), > name, strerror(errno)); > > return; >@@ -368,7 +396,14 @@ > > mode_t mode; > >- if (fchown(pair->dest_fd, (uid_t)(-1), pair->src_st.st_gid)) { >+ // With BSD semantics the new dest file may have a group that >+ // does not belong to the user. If the src file has the same gid >+ // nothing has to be done. Nevertheless OpenBSD fchown(2) fails >+ // in this case which seems to be POSIX compliant. As there is >+ // nothing to do, skip the system call. >+ if (pair->dest_st.st_gid != pair->src_st.st_gid >+ && fchown(pair->dest_fd, (uid_t)(-1), >+ pair->src_st.st_gid)) { > message_warning(_("%s: Cannot set the file group: %s"), > pair->dest_name, strerror(errno)); > // We can still safely copy some additional permissions: >@@ -536,8 +571,9 @@ > } > > // Symlinks are not followed unless writing to stdout or --force >- // was used. >- const bool follow_symlinks = opt_stdout || opt_force; >+ // or --keep was used. >+ const bool follow_symlinks >+ = opt_stdout || opt_force || opt_keep_original; > > // We accept only regular files if we are writing the output > // to disk too. bzip2 allows overriding this with --force but >@@ -674,7 +710,7 @@ > } > > #ifndef TUKLIB_DOSLIKE >- if (reg_files_only && !opt_force) { >+ if (reg_files_only && !opt_force && !opt_keep_original) { > if (pair->src_st.st_mode & (S_ISUID | S_ISGID)) { > // gzip rejects setuid and setgid files even > // when --force was used. bzip2 doesn't check >@@ -683,7 +719,7 @@ > // and setgid bits there. > // > // We accept setuid and setgid files if >- // --force was used. We drop these bits >+ // --force or --keep was used. We drop these bits > // explicitly in io_copy_attr(). > message_warning(_("%s: File has setuid or " > "setgid bit set, skipping"), >@@ -740,13 +776,19 @@ > extern file_pair * > io_open_src(const char *src_name) > { >- if (is_empty_filename(src_name)) >+ if (src_name[0] == '\0') { >+ message_error(_("Empty filename, skipping")); > return NULL; >+ } > > // Since we have only one file open at a time, we can use > // a statically allocated structure. > static file_pair pair; > >+ // This implicitly also initializes src_st.st_size to zero >+ // which is expected to be <= 0 by default. fstat() isn't >+ // called when reading from standard input but src_st.st_size >+ // is still read. > pair = (file_pair){ > .src_name = src_name, > .dest_name = NULL, >@@ -1183,15 +1225,35 @@ > > > extern bool >-io_pread(file_pair *pair, io_buf *buf, size_t size, off_t pos) >+io_seek_src(file_pair *pair, uint64_t pos) > { >- // Using lseek() and read() is more portable than pread() and >- // for us it is as good as real pread(). >- if (lseek(pair->src_fd, pos, SEEK_SET) != pos) { >+ // Caller must not attempt to seek past the end of the input file >+ // (seeking to 100 in a 100-byte file is seeking to the end of >+ // the file, not past the end of the file, and thus that is allowed). >+ // >+ // This also validates that pos can be safely cast to off_t. >+ if (pos > (uint64_t)(pair->src_st.st_size)) >+ message_bug(); >+ >+ if (lseek(pair->src_fd, (off_t)(pos), SEEK_SET) == -1) { > message_error(_("%s: Error seeking the file: %s"), > pair->src_name, strerror(errno)); > return true; > } >+ >+ pair->src_eof = false; >+ >+ return false; >+} >+ >+ >+extern bool >+io_pread(file_pair *pair, io_buf *buf, size_t size, uint64_t pos) >+{ >+ // Using lseek() and read() is more portable than pread() and >+ // for us it is as good as real pread(). >+ if (io_seek_src(pair, pos)) >+ return true; > > const size_t amount = io_read(pair, buf, size); > if (amount == SIZE_MAX) >diff -ur xz-5.2.5/src/xz/file_io.h xz-5.4.3/src/xz/file_io.h >--- xz-5.2.5/src/xz/file_io.h 2020-03-17 17:28:54 >+++ xz-5.4.3/src/xz/file_io.h 2023-05-04 17:21:05 >@@ -139,6 +139,19 @@ > extern void io_fix_src_pos(file_pair *pair, size_t rewind_size); > > >+/// \brief Seek to the given absolute position in the source file >+/// >+/// This calls lseek() and also clears pair->src_eof. >+/// >+/// \param pair Seekable source file >+/// \param pos Offset relative to the beginning of the file, >+/// from which the data should be read. >+/// >+/// \return On success, false is returned. On error, error message >+/// is printed and true is returned. >+extern bool io_seek_src(file_pair *pair, uint64_t pos); >+ >+ > /// \brief Read from source file from given offset to a buffer > /// > /// This is remotely similar to standard pread(). This uses lseek() though, >@@ -152,7 +165,7 @@ > /// > /// \return On success, false is returned. On error, error message > /// is printed and true is returned. >-extern bool io_pread(file_pair *pair, io_buf *buf, size_t size, off_t pos); >+extern bool io_pread(file_pair *pair, io_buf *buf, size_t size, uint64_t pos); > > > /// \brief Writes a buffer to the destination file >diff -ur xz-5.2.5/src/xz/hardware.c xz-5.4.3/src/xz/hardware.c >--- xz-5.2.5/src/xz/hardware.c 2020-03-17 17:28:54 >+++ xz-5.4.3/src/xz/hardware.c 2023-05-04 17:21:05 >@@ -17,12 +17,43 @@ > /// the --threads=NUM command line option. > static uint32_t threads_max = 1; > >+/// True when the number of threads is automatically determined based >+/// on the available hardware threads. >+static bool threads_are_automatic = false; >+ >+/// If true, then try to use multi-threaded mode (if memlimit allows) >+/// even if only one thread was requested explicitly (-T+1). >+static bool use_mt_mode_with_one_thread = false; >+ > /// Memory usage limit for compression >-static uint64_t memlimit_compress; >+static uint64_t memlimit_compress = 0; > > /// Memory usage limit for decompression >-static uint64_t memlimit_decompress; >+static uint64_t memlimit_decompress = 0; > >+/// Default memory usage for multithreaded modes: >+/// >+/// - Default value for --memlimit-compress when automatic number of threads >+/// is used. However, if the limit wouldn't allow even one thread then >+/// the limit is ignored in coder.c and one thread will be used anyway. >+/// This mess is a compromise: we wish to prevent -T0 from using too >+/// many threads but we also don't want xz to give an error due to >+/// a memlimit that the user didn't explicitly set. >+/// >+/// - Default value for --memlimit-mt-decompress >+/// >+/// This value is caluclated in hardware_init() and cannot be changed later. >+static uint64_t memlimit_mt_default; >+ >+/// Memory usage limit for multithreaded decompression. This is a soft limit: >+/// if reducing the number of threads to one isn't enough to keep memory >+/// usage below this limit, then one thread is used and this limit is ignored. >+/// memlimit_decompress is still obeyed. >+/// >+/// This can be set with --memlimit-mt-decompress. The default value for >+/// this is memlimit_mt_default. >+static uint64_t memlimit_mtdec; >+ > /// Total amount of physical RAM > static uint64_t total_ram; > >@@ -30,8 +61,17 @@ > extern void > hardware_threads_set(uint32_t n) > { >+ // Reset these to false first and set them to true when appropriate. >+ threads_are_automatic = false; >+ use_mt_mode_with_one_thread = false; >+ > if (n == 0) { > // Automatic number of threads was requested. >+ // If there is only one hardware thread, multi-threaded >+ // mode will still be used if memory limit allows. >+ threads_are_automatic = true; >+ use_mt_mode_with_one_thread = true; >+ > // If threading support was enabled at build time, > // use the number of available CPU cores. Otherwise > // use one thread since disabling threading support >@@ -43,6 +83,9 @@ > #else > threads_max = 1; > #endif >+ } else if (n == UINT32_MAX) { >+ use_mt_mode_with_one_thread = true; >+ threads_max = 1; > } else { > threads_max = n; > } >@@ -58,9 +101,21 @@ > } > > >+extern bool >+hardware_threads_is_mt(void) >+{ >+#ifdef MYTHREAD_ENABLED >+ return threads_max > 1 || use_mt_mode_with_one_thread; >+#else >+ return false; >+#endif >+} >+ >+ > extern void > hardware_memlimit_set(uint64_t new_memlimit, >- bool set_compress, bool set_decompress, bool is_percentage) >+ bool set_compress, bool set_decompress, bool set_mtdec, >+ bool is_percentage) > { > if (is_percentage) { > assert(new_memlimit > 0); >@@ -91,7 +146,13 @@ > // Use a value less than SIZE_MAX so that there's some room > // for the xz program and so on. Don't use 4000 MiB because > // it could look like someone mixed up base-2 and base-10. >+#ifdef __mips__ >+ // For MIPS32, due to architectural pecularities, >+ // the limit is even lower. >+ const uint64_t limit_max = UINT64_C(2000) << 20; >+#else > const uint64_t limit_max = UINT64_C(4020) << 20; >+#endif > > // UINT64_MAX is a special case for the string "max" so > // that has to be handled specially. >@@ -104,6 +165,9 @@ > if (set_decompress) > memlimit_decompress = new_memlimit; > >+ if (set_mtdec) >+ memlimit_mtdec = new_memlimit; >+ > return; > } > >@@ -111,32 +175,69 @@ > extern uint64_t > hardware_memlimit_get(enum operation_mode mode) > { >- // Zero is a special value that indicates the default. Currently >- // the default simply disables the limit. Once there is threading >- // support, this might be a little more complex, because there will >- // probably be a special case where a user asks for "optimal" number >- // of threads instead of a specific number (this might even become >- // the default mode). Each thread may use a significant amount of >- // memory. When there are no memory usage limits set, we need some >- // default soft limit for calculating the "optimal" number of >- // threads. >+ // 0 is a special value that indicates the default. >+ // It disables the limit in single-threaded mode. >+ // >+ // NOTE: For multithreaded decompression, this is the hard limit >+ // (memlimit_stop). hardware_memlimit_mtdec_get() gives the >+ // soft limit (memlimit_threaded). > const uint64_t memlimit = mode == MODE_COMPRESS > ? memlimit_compress : memlimit_decompress; > return memlimit != 0 ? memlimit : UINT64_MAX; > } > > >+extern uint64_t >+hardware_memlimit_mtenc_get(void) >+{ >+ return hardware_memlimit_mtenc_is_default() >+ ? memlimit_mt_default >+ : hardware_memlimit_get(MODE_COMPRESS); >+} >+ >+ >+extern bool >+hardware_memlimit_mtenc_is_default(void) >+{ >+ return memlimit_compress == 0 && threads_are_automatic; >+} >+ >+ >+extern uint64_t >+hardware_memlimit_mtdec_get(void) >+{ >+ uint64_t m = memlimit_mtdec != 0 >+ ? memlimit_mtdec >+ : memlimit_mt_default; >+ >+ // Cap the value to memlimit_decompress if it has been specified. >+ // This is nice for --info-memory. It wouldn't be needed for liblzma >+ // since it does this anyway. >+ if (memlimit_decompress != 0 && m > memlimit_decompress) >+ m = memlimit_decompress; >+ >+ return m; >+} >+ >+ > /// Helper for hardware_memlimit_show() to print one human-readable info line. > static void >-memlimit_show(const char *str, uint64_t value) >+memlimit_show(const char *str, size_t str_columns, uint64_t value) > { >+ // Calculate the field width so that str will be padded to take >+ // str_columns on the terminal. >+ // >+ // NOTE: If the string is invalid, this will be -1. Using -1 as >+ // the field width is fine here so it's not handled specially. >+ const int fw = tuklib_mbstr_fw(str, (int)(str_columns)); >+ > // The memory usage limit is considered to be disabled if value > // is 0 or UINT64_MAX. This might get a bit more complex once there > // is threading support. See the comment in hardware_memlimit_get(). > if (value == 0 || value == UINT64_MAX) >- printf("%s %s\n", str, _("Disabled")); >+ printf(" %-*s %s\n", fw, str, _("Disabled")); > else >- printf("%s %s MiB (%s B)\n", str, >+ printf(" %-*s %s MiB (%s B)\n", fw, str, > uint64_to_str(round_up_to_mib(value), 0), > uint64_to_str(value, 1)); > >@@ -147,18 +248,60 @@ > extern void > hardware_memlimit_show(void) > { >+ uint32_t cputhreads = 1; >+#ifdef MYTHREAD_ENABLED >+ cputhreads = lzma_cputhreads(); >+ if (cputhreads == 0) >+ cputhreads = 1; >+#endif >+ > if (opt_robot) { >- printf("%" PRIu64 "\t%" PRIu64 "\t%" PRIu64 "\n", total_ram, >- memlimit_compress, memlimit_decompress); >+ printf("%" PRIu64 "\t%" PRIu64 "\t%" PRIu64 "\t%" PRIu64 >+ "\t%" PRIu64 "\t%" PRIu32 "\n", >+ total_ram, >+ memlimit_compress, >+ memlimit_decompress, >+ hardware_memlimit_mtdec_get(), >+ memlimit_mt_default, >+ cputhreads); > } else { >- // TRANSLATORS: Test with "xz --info-memory" to see if >- // the alignment looks nice. >- memlimit_show(_("Total amount of physical memory (RAM): "), >- total_ram); >- memlimit_show(_("Memory usage limit for compression: "), >- memlimit_compress); >- memlimit_show(_("Memory usage limit for decompression: "), >- memlimit_decompress); >+ const char *msgs[] = { >+ _("Amount of physical memory (RAM):"), >+ _("Number of processor threads:"), >+ _("Compression:"), >+ _("Decompression:"), >+ _("Multi-threaded decompression:"), >+ _("Default for -T0:"), >+ }; >+ >+ size_t width_max = 1; >+ for (unsigned i = 0; i < ARRAY_SIZE(msgs); ++i) { >+ size_t w = tuklib_mbstr_width(msgs[i], NULL); >+ >+ // When debugging, catch invalid strings with >+ // an assertion. Otherwise fallback to 1 so >+ // that the columns just won't be aligned. >+ assert(w != (size_t)-1); >+ if (w == (size_t)-1) >+ w = 1; >+ >+ if (width_max < w) >+ width_max = w; >+ } >+ >+ puts(_("Hardware information:")); >+ memlimit_show(msgs[0], width_max, total_ram); >+ printf(" %-*s %" PRIu32 "\n", >+ tuklib_mbstr_fw(msgs[1], (int)(width_max)), >+ msgs[1], cputhreads); >+ >+ putchar('\n'); >+ puts(_("Memory usage limits:")); >+ memlimit_show(msgs[2], width_max, memlimit_compress); >+ memlimit_show(msgs[3], width_max, memlimit_decompress); >+ memlimit_show(msgs[4], width_max, >+ hardware_memlimit_mtdec_get()); >+ memlimit_show(msgs[5], width_max, memlimit_mt_default); > } > > tuklib_exit(E_SUCCESS, E_ERROR, message_verbosity_get() != V_SILENT); >@@ -174,7 +317,22 @@ > if (total_ram == 0) > total_ram = (uint64_t)(ASSUME_RAM) * 1024 * 1024; > >- // Set the defaults. >- hardware_memlimit_set(0, true, true, false); >+ // FIXME? There may be better methods to determine the default value. >+ // One Linux-specific suggestion is to use MemAvailable from >+ // /proc/meminfo as the starting point. >+ memlimit_mt_default = total_ram / 4; >+ >+#if SIZE_MAX == UINT32_MAX >+ // A too high value may cause 32-bit xz to run out of address space. >+ // Use a conservative maximum value here. A few typical address space >+ // sizes with Linux: >+ // - x86-64 with 32-bit xz: 4 GiB >+ // - x86: 3 GiB >+ // - MIPS32: 2 GiB >+ const size_t mem_ceiling = 1400U << 20; >+ if (memlimit_mt_default > mem_ceiling) >+ memlimit_mt_default = mem_ceiling; >+#endif >+ > return; > } >diff -ur xz-5.2.5/src/xz/hardware.h xz-5.4.3/src/xz/hardware.h >--- xz-5.2.5/src/xz/hardware.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/hardware.h 2023-05-04 17:21:05 >@@ -16,22 +16,59 @@ > > > /// Set the maximum number of worker threads. >+/// A special value of UINT32_MAX sets one thread in multi-threaded mode. > extern void hardware_threads_set(uint32_t threadlimit); > > /// Get the maximum number of worker threads. > extern uint32_t hardware_threads_get(void); > >+/// Returns true if multithreaded mode should be used for .xz compression. >+/// This can be true even if the number of threads is one. >+extern bool hardware_threads_is_mt(void); > >-/// Set the memory usage limit. There are separate limits for compression >-/// and decompression (the latter includes also --list), one or both can >-/// be set with a single call to this function. Zero indicates resetting >-/// the limit back to the defaults. The limit can also be set as a percentage >-/// of installed RAM; the percentage must be in the range [1, 100]. >+ >+/// Set the memory usage limit. There are separate limits for compression, >+/// decompression (also includes --list), and multithreaded decompression. >+/// Any combination of these can be set with a single call to this function. >+/// Zero indicates resetting the limit back to the defaults. >+/// The limit can also be set as a percentage of installed RAM; the >+/// percentage must be in the range [1, 100]. > extern void hardware_memlimit_set(uint64_t new_memlimit, >- bool set_compress, bool set_decompress, bool is_percentage); >+ bool set_compress, bool set_decompress, bool set_mtdec, >+ bool is_percentage); > > /// Get the current memory usage limit for compression or decompression. >+/// This is a hard limit that will not be exceeded. This is obeyed in >+/// both single-threaded and multithreaded modes. > extern uint64_t hardware_memlimit_get(enum operation_mode mode); >+ >+/// This returns a system-specific default value if all of the following >+/// conditions are true: >+/// >+/// - An automatic number of threads was requested (--threads=0). >+/// >+/// - --memlimit-compress wasn't used or it was reset to the default >+/// value by setting it to 0. >+/// >+/// Otherwise this is identical to hardware_memlimit_get(MODE_COMPRESS). >+/// >+/// The idea is to keep automatic thread count reasonable so that too >+/// high memory usage is avoided and, with 32-bit xz, running out of >+/// address space is avoided. >+extern uint64_t hardware_memlimit_mtenc_get(void); >+ >+/// Returns true if the value returned by hardware_memlimit_mtenc_get() is >+/// a system-specific default value. coder.c uses this to ignore the default >+/// memlimit in case it's too small even for a single thread in multithreaded >+/// mode. This way the default limit will never make xz fail or affect the >+/// compressed output; it will only make xz reduce the number of threads. >+extern bool hardware_memlimit_mtenc_is_default(void); >+ >+/// Get the current memory usage limit for multithreaded decompression. >+/// This is only used to reduce the number of threads. This limit can be >+/// exceeded if the number of threads are reduce to one. Then the value >+/// from hardware_memlimit_get() will be honored like in single-threaded mode. >+extern uint64_t hardware_memlimit_mtdec_get(void); > > /// Display the amount of RAM and memory usage limits and exit. > extern void hardware_memlimit_show(void) lzma_attribute((__noreturn__)); >diff -ur xz-5.2.5/src/xz/list.c xz-5.4.3/src/xz/list.c >--- xz-5.2.5/src/xz/list.c 2020-03-17 17:28:54 >+++ xz-5.4.3/src/xz/list.c 2023-05-04 17:21:05 >@@ -52,23 +52,126 @@ > uint64_t memusage; > > /// The filter chain of this Block in human-readable form >- char filter_chain[FILTERS_STR_SIZE]; >+ char *filter_chain; > > } block_header_info; > >+#define BLOCK_HEADER_INFO_INIT { .filter_chain = NULL } >+#define block_header_info_end(bhi) free((bhi)->filter_chain) > >+ >+/// Strings ending in a colon. These are used for lines like >+/// " Foo: 123 MiB". These are grouped because translated strings >+/// may have different maximum string length, and we want to pad all >+/// strings so that the values are aligned nicely. >+static const char *colon_strs[] = { >+ N_("Streams:"), >+ N_("Blocks:"), >+ N_("Compressed size:"), >+ N_("Uncompressed size:"), >+ N_("Ratio:"), >+ N_("Check:"), >+ N_("Stream Padding:"), >+ N_("Memory needed:"), >+ N_("Sizes in headers:"), >+ // This won't be aligned because it's so long: >+ //N_("Minimum XZ Utils version:"), >+ N_("Number of files:"), >+}; >+ >+/// Enum matching the above strings. >+enum { >+ COLON_STR_STREAMS, >+ COLON_STR_BLOCKS, >+ COLON_STR_COMPRESSED_SIZE, >+ COLON_STR_UNCOMPRESSED_SIZE, >+ COLON_STR_RATIO, >+ COLON_STR_CHECK, >+ COLON_STR_STREAM_PADDING, >+ COLON_STR_MEMORY_NEEDED, >+ COLON_STR_SIZES_IN_HEADERS, >+ //COLON_STR_MINIMUM_XZ_VERSION, >+ COLON_STR_NUMBER_OF_FILES, >+}; >+ >+/// Field widths to use with printf to pad the strings to use the same number >+/// of columns on a terminal. >+static int colon_strs_fw[ARRAY_SIZE(colon_strs)]; >+ >+/// Convenience macro to get the translated string and its field width >+/// using a COLON_STR_foo enum. >+#define COLON_STR(num) colon_strs_fw[num], _(colon_strs[num]) >+ >+ >+/// Column headings >+static struct { >+ /// Table column heading string >+ const char *str; >+ >+ /// Number of terminal-columns to use for this table-column. >+ /// If a translated string is longer than the initial value, >+ /// this value will be increased in init_headings(). >+ int columns; >+ >+ /// Field width to use for printf() to pad "str" to use "columns" >+ /// number of columns on a terminal. This is calculated in >+ /// init_headings(). >+ int fw; >+ >+} headings[] = { >+ { N_("Stream"), 6, 0 }, >+ { N_("Block"), 9, 0 }, >+ { N_("Blocks"), 9, 0 }, >+ { N_("CompOffset"), 15, 0 }, >+ { N_("UncompOffset"), 15, 0 }, >+ { N_("CompSize"), 15, 0 }, >+ { N_("UncompSize"), 15, 0 }, >+ { N_("TotalSize"), 15, 0 }, >+ { N_("Ratio"), 5, 0 }, >+ { N_("Check"), 10, 0 }, >+ { N_("CheckVal"), 1, 0 }, >+ { N_("Padding"), 7, 0 }, >+ { N_("Header"), 5, 0 }, >+ { N_("Flags"), 2, 0 }, >+ { N_("MemUsage"), 7 + 4, 0 }, // +4 is for " MiB" >+ { N_("Filters"), 1, 0 }, >+}; >+ >+/// Enum matching the above strings. >+enum { >+ HEADING_STREAM, >+ HEADING_BLOCK, >+ HEADING_BLOCKS, >+ HEADING_COMPOFFSET, >+ HEADING_UNCOMPOFFSET, >+ HEADING_COMPSIZE, >+ HEADING_UNCOMPSIZE, >+ HEADING_TOTALSIZE, >+ HEADING_RATIO, >+ HEADING_CHECK, >+ HEADING_CHECKVAL, >+ HEADING_PADDING, >+ HEADING_HEADERSIZE, >+ HEADING_HEADERFLAGS, >+ HEADING_MEMUSAGE, >+ HEADING_FILTERS, >+}; >+ >+#define HEADING_STR(num) headings[num].fw, _(headings[num].str) >+ >+ > /// Check ID to string mapping > static const char check_names[LZMA_CHECK_ID_MAX + 1][12] = { > // TRANSLATORS: Indicates that there is no integrity check. >- // This string is used in tables, so the width must not >- // exceed ten columns with a fixed-width font. >+ // This string is used in tables. In older xz version this >+ // string was limited to ten columns in a fixed-width font, but >+ // nowadays there is no strict length restriction anymore. > N_("None"), > "CRC32", > // TRANSLATORS: Indicates that integrity check name is not known, >- // but the Check ID is known (here 2). This and other "Unknown-N" >- // strings are used in tables, so the width must not exceed ten >- // columns with a fixed-width font. It's OK to omit the dash if >- // you need space for one extra letter, but don't use spaces. >+ // but the Check ID is known (here 2). In older xz version these >+ // strings were limited to ten columns in a fixed-width font, but >+ // nowadays there is no strict length restriction anymore. > N_("Unknown-2"), > N_("Unknown-3"), > "CRC64", >@@ -112,6 +215,104 @@ > } totals = { 0, 0, 0, 0, 0, 0, 0, 0, 50000002, true }; > > >+/// Initialize colon_strs_fw[]. >+static void >+init_colon_strs(void) >+{ >+ // Lengths of translated strings as bytes. >+ size_t lens[ARRAY_SIZE(colon_strs)]; >+ >+ // Lengths of translated strings as columns. >+ size_t widths[ARRAY_SIZE(colon_strs)]; >+ >+ // Maximum number of columns needed by a translated string. >+ size_t width_max = 0; >+ >+ for (unsigned i = 0; i < ARRAY_SIZE(colon_strs); ++i) { >+ widths[i] = tuklib_mbstr_width(_(colon_strs[i]), &lens[i]); >+ >+ // If debugging is enabled, catch invalid strings with >+ // an assertion. However, when not debugging, use the >+ // byte count as the fallback width. This shouldn't >+ // ever happen unless there is a bad string in the >+ // translations, but in such case I guess it's better >+ // to try to print something useful instead of failing >+ // completely. >+ assert(widths[i] != (size_t)-1); >+ if (widths[i] == (size_t)-1) >+ widths[i] = lens[i]; >+ >+ if (widths[i] > width_max) >+ width_max = widths[i]; >+ } >+ >+ // Calculate the field width for printf("%*s") so that the strings >+ // will use width_max columns on a terminal. >+ for (unsigned i = 0; i < ARRAY_SIZE(colon_strs); ++i) >+ colon_strs_fw[i] = (int)(lens[i] + width_max - widths[i]); >+ >+ return; >+} >+ >+ >+/// Initialize headings[]. >+static void >+init_headings(void) >+{ >+ // Before going through the heading strings themselves, treat >+ // the Check heading specially: Look at the widths of the various >+ // check names and increase the width of the Check column if needed. >+ // The width of the heading name "Check" will then be handled normally >+ // with other heading names in the second loop in this function. >+ for (unsigned i = 0; i < ARRAY_SIZE(check_names); ++i) { >+ size_t len; >+ size_t w = tuklib_mbstr_width(_(check_names[i]), &len); >+ >+ // Error handling like in init_colon_strs(). >+ assert(w != (size_t)-1); >+ if (w == (size_t)-1) >+ w = len; >+ >+ // If the translated string is wider than the minimum width >+ // set at compile time, increase the width. >+ if ((size_t)(headings[HEADING_CHECK].columns) < w) >+ headings[HEADING_CHECK].columns = (int)w; >+ } >+ >+ for (unsigned i = 0; i < ARRAY_SIZE(headings); ++i) { >+ size_t len; >+ size_t w = tuklib_mbstr_width(_(headings[i].str), &len); >+ >+ // Error handling like in init_colon_strs(). >+ assert(w != (size_t)-1); >+ if (w == (size_t)-1) >+ w = len; >+ >+ // If the translated string is wider than the minimum width >+ // set at compile time, increase the width. >+ if ((size_t)(headings[i].columns) < w) >+ headings[i].columns = (int)w; >+ >+ // Calculate the field width for printf("%*s") so that >+ // the string uses .columns number of columns on a terminal. >+ headings[i].fw = (int)(len + (size_t)headings[i].columns - w); >+ } >+ >+ return; >+} >+ >+ >+/// Initialize the printf field widths that are needed to get nicely aligned >+/// output with translated strings. >+static void >+init_field_widths(void) >+{ >+ init_colon_strs(); >+ init_headings(); >+ return; >+} >+ >+ > /// Convert XZ Utils version number to a string. > static const char * > xz_ver_to_str(uint32_t ver) >@@ -143,9 +344,6 @@ > /// > /// \return On success, false is returned. On error, true is returned. > /// >-// TODO: This function is pretty big. liblzma should have a function that >-// takes a callback function to parse the Index(es) from a .xz file to make >-// it easy for applications. > static bool > parse_indexes(xz_file_info *xfi, file_pair *pair) > { >@@ -161,238 +359,74 @@ > } > > io_buf buf; >- lzma_stream_flags header_flags; >- lzma_stream_flags footer_flags; >- lzma_ret ret; >- >- // lzma_stream for the Index decoder > lzma_stream strm = LZMA_STREAM_INIT; >+ lzma_index *idx = NULL; > >- // All Indexes decoded so far >- lzma_index *combined_index = NULL; >+ lzma_ret ret = lzma_file_info_decoder(&strm, &idx, >+ hardware_memlimit_get(MODE_LIST), >+ (uint64_t)(pair->src_st.st_size)); >+ if (ret != LZMA_OK) { >+ message_error("%s: %s", pair->src_name, message_strm(ret)); >+ return true; >+ } > >- // The Index currently being decoded >- lzma_index *this_index = NULL; >- >- // Current position in the file. We parse the file backwards so >- // initialize it to point to the end of the file. >- off_t pos = pair->src_st.st_size; >- >- // Each loop iteration decodes one Index. >- do { >- // Check that there is enough data left to contain at least >- // the Stream Header and Stream Footer. This check cannot >- // fail in the first pass of this loop. >- if (pos < 2 * LZMA_STREAM_HEADER_SIZE) { >- message_error("%s: %s", pair->src_name, >- message_strm(LZMA_DATA_ERROR)); >- goto error; >+ while (true) { >+ if (strm.avail_in == 0) { >+ strm.next_in = buf.u8; >+ strm.avail_in = io_read(pair, &buf, IO_BUFFER_SIZE); >+ if (strm.avail_in == SIZE_MAX) >+ goto error; > } > >- pos -= LZMA_STREAM_HEADER_SIZE; >- lzma_vli stream_padding = 0; >+ ret = lzma_code(&strm, LZMA_RUN); > >- // Locate the Stream Footer. There may be Stream Padding which >- // we must skip when reading backwards. >- while (true) { >- if (pos < LZMA_STREAM_HEADER_SIZE) { >- message_error("%s: %s", pair->src_name, >- message_strm( >- LZMA_DATA_ERROR)); >- goto error; >- } >+ switch (ret) { >+ case LZMA_OK: >+ break; > >- if (io_pread(pair, &buf, >- LZMA_STREAM_HEADER_SIZE, pos)) >+ case LZMA_SEEK_NEEDED: >+ // liblzma won't ask us to seek past the known size >+ // of the input file. >+ assert(strm.seek_pos >+ <= (uint64_t)(pair->src_st.st_size)); >+ if (io_seek_src(pair, strm.seek_pos)) > goto error; > >- // Stream Padding is always a multiple of four bytes. >- int i = 2; >- if (buf.u32[i] != 0) >- break; >+ // avail_in must be zero so that we will read new >+ // input. >+ strm.avail_in = 0; >+ break; > >- // To avoid calling io_pread() for every four bytes >- // of Stream Padding, take advantage that we read >- // 12 bytes (LZMA_STREAM_HEADER_SIZE) already and >- // check them too before calling io_pread() again. >- do { >- stream_padding += 4; >- pos -= 4; >- --i; >- } while (i >= 0 && buf.u32[i] == 0); >- } >+ case LZMA_STREAM_END: { >+ lzma_end(&strm); >+ xfi->idx = idx; > >- // Decode the Stream Footer. >- ret = lzma_stream_footer_decode(&footer_flags, buf.u8); >- if (ret != LZMA_OK) { >- message_error("%s: %s", pair->src_name, >- message_strm(ret)); >- goto error; >- } >+ // Calculate xfi->stream_padding. >+ lzma_index_iter iter; >+ lzma_index_iter_init(&iter, xfi->idx); >+ while (!lzma_index_iter_next(&iter, >+ LZMA_INDEX_ITER_STREAM)) >+ xfi->stream_padding += iter.stream.padding; > >- // Check that the Stream Footer doesn't specify something >- // that we don't support. This can only happen if the xz >- // version is older than liblzma and liblzma supports >- // something new. >- // >- // It is enough to check Stream Footer. Stream Header must >- // match when it is compared against Stream Footer with >- // lzma_stream_flags_compare(). >- if (footer_flags.version != 0) { >- message_error("%s: %s", pair->src_name, >- message_strm(LZMA_OPTIONS_ERROR)); >- goto error; >+ return false; > } > >- // Check that the size of the Index field looks sane. >- lzma_vli index_size = footer_flags.backward_size; >- if ((lzma_vli)(pos) < index_size + LZMA_STREAM_HEADER_SIZE) { >+ default: > message_error("%s: %s", pair->src_name, >- message_strm(LZMA_DATA_ERROR)); >- goto error; >- } >- >- // Set pos to the beginning of the Index. >- pos -= index_size; >- >- // See how much memory we can use for decoding this Index. >- uint64_t memlimit = hardware_memlimit_get(MODE_LIST); >- uint64_t memused = 0; >- if (combined_index != NULL) { >- memused = lzma_index_memused(combined_index); >- if (memused > memlimit) >- message_bug(); >- >- memlimit -= memused; >- } >- >- // Decode the Index. >- ret = lzma_index_decoder(&strm, &this_index, memlimit); >- if (ret != LZMA_OK) { >- message_error("%s: %s", pair->src_name, > message_strm(ret)); >- goto error; >- } > >- do { >- // Don't give the decoder more input than the >- // Index size. >- strm.avail_in = my_min(IO_BUFFER_SIZE, index_size); >- if (io_pread(pair, &buf, strm.avail_in, pos)) >- goto error; >- >- pos += strm.avail_in; >- index_size -= strm.avail_in; >- >- strm.next_in = buf.u8; >- ret = lzma_code(&strm, LZMA_RUN); >- >- } while (ret == LZMA_OK); >- >- // If the decoding seems to be successful, check also that >- // the Index decoder consumed as much input as indicated >- // by the Backward Size field. >- if (ret == LZMA_STREAM_END) >- if (index_size != 0 || strm.avail_in != 0) >- ret = LZMA_DATA_ERROR; >- >- if (ret != LZMA_STREAM_END) { >- // LZMA_BUFFER_ERROR means that the Index decoder >- // would have liked more input than what the Index >- // size should be according to Stream Footer. >- // The message for LZMA_DATA_ERROR makes more >- // sense in that case. >- if (ret == LZMA_BUF_ERROR) >- ret = LZMA_DATA_ERROR; >- >- message_error("%s: %s", pair->src_name, >- message_strm(ret)); >- > // If the error was too low memory usage limit, > // show also how much memory would have been needed. >- if (ret == LZMA_MEMLIMIT_ERROR) { >- uint64_t needed = lzma_memusage(&strm); >- if (UINT64_MAX - needed < memused) >- needed = UINT64_MAX; >- else >- needed += memused; >+ if (ret == LZMA_MEMLIMIT_ERROR) >+ message_mem_needed(V_ERROR, >+ lzma_memusage(&strm)); > >- message_mem_needed(V_ERROR, needed); >- } >- > goto error; > } >+ } > >- // Decode the Stream Header and check that its Stream Flags >- // match the Stream Footer. >- pos -= footer_flags.backward_size + LZMA_STREAM_HEADER_SIZE; >- if ((lzma_vli)(pos) < lzma_index_total_size(this_index)) { >- message_error("%s: %s", pair->src_name, >- message_strm(LZMA_DATA_ERROR)); >- goto error; >- } >- >- pos -= lzma_index_total_size(this_index); >- if (io_pread(pair, &buf, LZMA_STREAM_HEADER_SIZE, pos)) >- goto error; >- >- ret = lzma_stream_header_decode(&header_flags, buf.u8); >- if (ret != LZMA_OK) { >- message_error("%s: %s", pair->src_name, >- message_strm(ret)); >- goto error; >- } >- >- ret = lzma_stream_flags_compare(&header_flags, &footer_flags); >- if (ret != LZMA_OK) { >- message_error("%s: %s", pair->src_name, >- message_strm(ret)); >- goto error; >- } >- >- // Store the decoded Stream Flags into this_index. This is >- // needed so that we can print which Check is used in each >- // Stream. >- ret = lzma_index_stream_flags(this_index, &footer_flags); >- if (ret != LZMA_OK) >- message_bug(); >- >- // Store also the size of the Stream Padding field. It is >- // needed to show the offsets of the Streams correctly. >- ret = lzma_index_stream_padding(this_index, stream_padding); >- if (ret != LZMA_OK) >- message_bug(); >- >- if (combined_index != NULL) { >- // Append the earlier decoded Indexes >- // after this_index. >- ret = lzma_index_cat( >- this_index, combined_index, NULL); >- if (ret != LZMA_OK) { >- message_error("%s: %s", pair->src_name, >- message_strm(ret)); >- goto error; >- } >- } >- >- combined_index = this_index; >- this_index = NULL; >- >- xfi->stream_padding += stream_padding; >- >- } while (pos > 0); >- >- lzma_end(&strm); >- >- // All OK. Make combined_index available to the caller. >- xfi->idx = combined_index; >- return false; >- > error: >- // Something went wrong, free the allocated memory. > lzma_end(&strm); >- lzma_index_end(combined_index, NULL); >- lzma_index_end(this_index, NULL); > return true; > } > >@@ -454,6 +488,10 @@ > // Check the Block Flags. These must be done before calling > // lzma_block_compressed_size(), because it overwrites > // block.compressed_size. >+ // >+ // NOTE: If you add new characters here, update the minimum number of >+ // columns in headings[HEADING_HEADERFLAGS] to match the number of >+ // characters used here. > bhi->flags[0] = block.compressed_size != LZMA_VLI_UNKNOWN > ? 'c' : '-'; > bhi->flags[1] = block.uncompressed_size != LZMA_VLI_UNKNOWN >@@ -488,9 +526,7 @@ > > case LZMA_DATA_ERROR: > // Free the memory allocated by lzma_block_header_decode(). >- for (size_t i = 0; filters[i].id != LZMA_VLI_UNKNOWN; ++i) >- free(filters[i].options); >- >+ lzma_filters_free(filters, NULL); > goto data_error; > > default: >@@ -509,26 +545,43 @@ > > // Determine the minimum XZ Utils version that supports this Block. > // >- // Currently the only thing that 5.0.0 doesn't support is empty >- // LZMA2 Block. This decoder bug was fixed in 5.0.2. >- { >+ // - ARM64 filter needs 5.4.0. >+ // >+ // - 5.0.0 doesn't support empty LZMA2 streams and thus empty >+ // Blocks that use LZMA2. This decoder bug was fixed in 5.0.2. >+ if (xfi->min_version < 50040002U) { >+ for (size_t i = 0; filters[i].id != LZMA_VLI_UNKNOWN; ++i) { >+ if (filters[i].id == LZMA_FILTER_ARM64) { >+ xfi->min_version = 50040002U; >+ break; >+ } >+ } >+ } >+ >+ if (xfi->min_version < 50000022U) { > size_t i = 0; > while (filters[i + 1].id != LZMA_VLI_UNKNOWN) > ++i; > > if (filters[i].id == LZMA_FILTER_LZMA2 >- && iter->block.uncompressed_size == 0 >- && xfi->min_version < 50000022U) >+ && iter->block.uncompressed_size == 0) > xfi->min_version = 50000022U; > } > > // Convert the filter chain to human readable form. >- message_filters_to_str(bhi->filter_chain, filters, false); >+ const lzma_ret str_ret = lzma_str_from_filters( >+ &bhi->filter_chain, filters, >+ LZMA_STR_DECODER | LZMA_STR_GETOPT_LONG, NULL); > > // Free the memory allocated by lzma_block_header_decode(). >- for (size_t i = 0; filters[i].id != LZMA_VLI_UNKNOWN; ++i) >- free(filters[i].options); >+ lzma_filters_free(filters, NULL); > >+ // Check if the stringification succeeded. >+ if (str_ret != LZMA_OK) { >+ message_error("%s: %s", pair->src_name, message_strm(str_ret)); >+ return true; >+ } >+ > return false; > > data_error: >@@ -553,7 +606,7 @@ > > // Locate and read the Check field. > const uint32_t size = lzma_check_size(iter->stream.flags->check); >- const off_t offset = iter->block.compressed_file_offset >+ const uint64_t offset = iter->block.compressed_file_offset > + iter->block.total_size - size; > io_buf buf; > if (io_pread(pair, &buf, size, offset)) >@@ -714,20 +767,20 @@ > char checks_str[CHECKS_STR_SIZE]; > get_check_names(checks_str, checks, true); > >- printf(_(" Streams: %s\n"), >+ printf(" %-*s %s\n", COLON_STR(COLON_STR_STREAMS), > uint64_to_str(stream_count, 0)); >- printf(_(" Blocks: %s\n"), >+ printf(" %-*s %s\n", COLON_STR(COLON_STR_BLOCKS), > uint64_to_str(block_count, 0)); >- printf(_(" Compressed size: %s\n"), >+ printf(" %-*s %s\n", COLON_STR(COLON_STR_COMPRESSED_SIZE), > uint64_to_nicestr(compressed_size, > NICESTR_B, NICESTR_TIB, true, 0)); >- printf(_(" Uncompressed size: %s\n"), >+ printf(" %-*s %s\n", COLON_STR(COLON_STR_UNCOMPRESSED_SIZE), > uint64_to_nicestr(uncompressed_size, > NICESTR_B, NICESTR_TIB, true, 0)); >- printf(_(" Ratio: %s\n"), >+ printf(" %-*s %s\n", COLON_STR(COLON_STR_RATIO), > get_ratio(compressed_size, uncompressed_size)); >- printf(_(" Check: %s\n"), checks_str); >- printf(_(" Stream padding: %s\n"), >+ printf(" %-*s %s\n", COLON_STR(COLON_STR_CHECK), checks_str); >+ printf(" %-*s %s\n", COLON_STR(COLON_STR_STREAM_PADDING), > uint64_to_nicestr(stream_padding, > NICESTR_B, NICESTR_TIB, true, 0)); > return; >@@ -752,13 +805,19 @@ > > // Print information about the Streams. > // >- // TRANSLATORS: The second line is column headings. All except >- // Check are right aligned; Check is left aligned. Test with >- // "xz -lv foo.xz". >- puts(_(" Streams:\n Stream Blocks" >- " CompOffset UncompOffset" >- " CompSize UncompSize Ratio" >- " Check Padding")); >+ // All except Check are right aligned; Check is left aligned. >+ // Test with "xz -lv foo.xz". >+ printf(" %s\n %*s %*s %*s %*s %*s %*s %*s %-*s %*s\n", >+ _(colon_strs[COLON_STR_STREAMS]), >+ HEADING_STR(HEADING_STREAM), >+ HEADING_STR(HEADING_BLOCKS), >+ HEADING_STR(HEADING_COMPOFFSET), >+ HEADING_STR(HEADING_UNCOMPOFFSET), >+ HEADING_STR(HEADING_COMPSIZE), >+ HEADING_STR(HEADING_UNCOMPSIZE), >+ HEADING_STR(HEADING_RATIO), >+ HEADING_STR(HEADING_CHECK), >+ HEADING_STR(HEADING_PADDING)); > > lzma_index_iter iter; > lzma_index_iter_init(&iter, xfi->idx); >@@ -771,10 +830,18 @@ > uint64_to_str(iter.stream.uncompressed_offset, 3), > }; > printf(" %*s %*s %*s %*s ", >- tuklib_mbstr_fw(cols1[0], 6), cols1[0], >- tuklib_mbstr_fw(cols1[1], 9), cols1[1], >- tuklib_mbstr_fw(cols1[2], 15), cols1[2], >- tuklib_mbstr_fw(cols1[3], 15), cols1[3]); >+ tuklib_mbstr_fw(cols1[0], >+ headings[HEADING_STREAM].columns), >+ cols1[0], >+ tuklib_mbstr_fw(cols1[1], >+ headings[HEADING_BLOCKS].columns), >+ cols1[1], >+ tuklib_mbstr_fw(cols1[2], >+ headings[HEADING_COMPOFFSET].columns), >+ cols1[2], >+ tuklib_mbstr_fw(cols1[3], >+ headings[HEADING_UNCOMPOFFSET].columns), >+ cols1[3]); > > const char *cols2[5] = { > uint64_to_str(iter.stream.compressed_size, 0), >@@ -785,11 +852,21 @@ > uint64_to_str(iter.stream.padding, 2), > }; > printf("%*s %*s %*s %-*s %*s\n", >- tuklib_mbstr_fw(cols2[0], 15), cols2[0], >- tuklib_mbstr_fw(cols2[1], 15), cols2[1], >- tuklib_mbstr_fw(cols2[2], 5), cols2[2], >- tuklib_mbstr_fw(cols2[3], 10), cols2[3], >- tuklib_mbstr_fw(cols2[4], 7), cols2[4]); >+ tuklib_mbstr_fw(cols2[0], >+ headings[HEADING_COMPSIZE].columns), >+ cols2[0], >+ tuklib_mbstr_fw(cols2[1], >+ headings[HEADING_UNCOMPSIZE].columns), >+ cols2[1], >+ tuklib_mbstr_fw(cols2[2], >+ headings[HEADING_RATIO].columns), >+ cols2[2], >+ tuklib_mbstr_fw(cols2[3], >+ headings[HEADING_CHECK].columns), >+ cols2[3], >+ tuklib_mbstr_fw(cols2[4], >+ headings[HEADING_PADDING].columns), >+ cols2[4]); > > // Update the maximum Check size. > if (lzma_check_size(iter.stream.flags->check) > check_max) >@@ -799,32 +876,47 @@ > // Cache the verbosity level to a local variable. > const bool detailed = message_verbosity_get() >= V_DEBUG; > >- // Information collected from Block Headers >- block_header_info bhi; >- > // Print information about the Blocks but only if there is > // at least one Block. > if (lzma_index_block_count(xfi->idx) > 0) { >- // Calculate the width of the CheckVal field. >- const int checkval_width = my_max(8, 2 * check_max); >+ // Calculate the width of the CheckVal column. This can be >+ // used as is as the field width for printf() when printing >+ // the actual check value as it is hexadecimal. However, to >+ // print the column heading, further calculation is needed >+ // to handle a translated string (it's done a few lines later). >+ assert(check_max <= LZMA_CHECK_SIZE_MAX); >+ const int checkval_width = my_max( >+ headings[HEADING_CHECKVAL].columns, >+ (int)(2 * check_max)); > >- // TRANSLATORS: The second line is column headings. All >- // except Check are right aligned; Check is left aligned. >- printf(_(" Blocks:\n Stream Block" >- " CompOffset UncompOffset" >- " TotalSize UncompSize Ratio Check")); >+ // All except Check are right aligned; Check is left aligned. >+ printf(" %s\n %*s %*s %*s %*s %*s %*s %*s %-*s", >+ _(colon_strs[COLON_STR_BLOCKS]), >+ HEADING_STR(HEADING_STREAM), >+ HEADING_STR(HEADING_BLOCK), >+ HEADING_STR(HEADING_COMPOFFSET), >+ HEADING_STR(HEADING_UNCOMPOFFSET), >+ HEADING_STR(HEADING_TOTALSIZE), >+ HEADING_STR(HEADING_UNCOMPSIZE), >+ HEADING_STR(HEADING_RATIO), >+ detailed ? headings[HEADING_CHECK].fw : 1, >+ _(headings[HEADING_CHECK].str)); > > if (detailed) { >- // TRANSLATORS: These are additional column headings >- // for the most verbose listing mode. CheckVal >- // (Check value), Flags, and Filters are left aligned. >- // Header (Block Header Size), CompSize, and MemUsage >- // are right aligned. %*s is replaced with 0-120 >- // spaces to make the CheckVal column wide enough. >- // Test with "xz -lvv foo.xz". >- printf(_(" CheckVal %*s Header Flags " >- "CompSize MemUsage Filters"), >- checkval_width - 8, ""); >+ // CheckVal (Check value), Flags, and Filters are >+ // left aligned. Block Header Size, CompSize, and >+ // MemUsage are right aligned. Test with >+ // "xz -lvv foo.xz". >+ printf(" %-*s %*s %-*s %*s %*s %s", >+ headings[HEADING_CHECKVAL].fw >+ + checkval_width >+ - headings[HEADING_CHECKVAL].columns, >+ _(headings[HEADING_CHECKVAL].str), >+ HEADING_STR(HEADING_HEADERSIZE), >+ HEADING_STR(HEADING_HEADERFLAGS), >+ HEADING_STR(HEADING_COMPSIZE), >+ HEADING_STR(HEADING_MEMUSAGE), >+ _(headings[HEADING_FILTERS].str)); > } > > putchar('\n'); >@@ -833,8 +925,11 @@ > > // Iterate over the Blocks. > while (!lzma_index_iter_next(&iter, LZMA_INDEX_ITER_BLOCK)) { >+ // If in detailed mode, collect the information from >+ // Block Header before starting to print the next line. >+ block_header_info bhi = BLOCK_HEADER_INFO_INIT; > if (detailed && parse_details(pair, &iter, &bhi, xfi)) >- return true; >+ return true; > > const char *cols1[4] = { > uint64_to_str(iter.stream.number, 0), >@@ -846,10 +941,18 @@ > iter.block.uncompressed_file_offset, 3) > }; > printf(" %*s %*s %*s %*s ", >- tuklib_mbstr_fw(cols1[0], 6), cols1[0], >- tuklib_mbstr_fw(cols1[1], 9), cols1[1], >- tuklib_mbstr_fw(cols1[2], 15), cols1[2], >- tuklib_mbstr_fw(cols1[3], 15), cols1[3]); >+ tuklib_mbstr_fw(cols1[0], >+ headings[HEADING_STREAM].columns), >+ cols1[0], >+ tuklib_mbstr_fw(cols1[1], >+ headings[HEADING_BLOCK].columns), >+ cols1[1], >+ tuklib_mbstr_fw(cols1[2], >+ headings[HEADING_COMPOFFSET].columns), >+ cols1[2], >+ tuklib_mbstr_fw(cols1[3], headings[ >+ HEADING_UNCOMPOFFSET].columns), >+ cols1[3]); > > const char *cols2[4] = { > uint64_to_str(iter.block.total_size, 0), >@@ -860,11 +963,18 @@ > _(check_names[iter.stream.flags->check]) > }; > printf("%*s %*s %*s %-*s", >- tuklib_mbstr_fw(cols2[0], 15), cols2[0], >- tuklib_mbstr_fw(cols2[1], 15), cols2[1], >- tuklib_mbstr_fw(cols2[2], 5), cols2[2], >- tuklib_mbstr_fw(cols2[3], detailed ? 11 : 1), >- cols2[3]); >+ tuklib_mbstr_fw(cols2[0], >+ headings[HEADING_TOTALSIZE].columns), >+ cols2[0], >+ tuklib_mbstr_fw(cols2[1], >+ headings[HEADING_UNCOMPSIZE].columns), >+ cols2[1], >+ tuklib_mbstr_fw(cols2[2], >+ headings[HEADING_RATIO].columns), >+ cols2[2], >+ tuklib_mbstr_fw(cols2[3], detailed >+ ? headings[HEADING_CHECK].columns : 1), >+ cols2[3]); > > if (detailed) { > const lzma_vli compressed_size >@@ -885,25 +995,35 @@ > }; > // Show MiB for memory usage, because it > // is the only size which is not in bytes. >- printf("%-*s %*s %-5s %*s %*s MiB %s", >+ printf(" %-*s %*s %-*s %*s %*s MiB %s", > checkval_width, cols3[0], >- tuklib_mbstr_fw(cols3[1], 6), cols3[1], >+ tuklib_mbstr_fw(cols3[1], headings[ >+ HEADING_HEADERSIZE].columns), >+ cols3[1], >+ tuklib_mbstr_fw(cols3[2], headings[ >+ HEADING_HEADERFLAGS].columns), > cols3[2], >- tuklib_mbstr_fw(cols3[3], 15), >- cols3[3], >- tuklib_mbstr_fw(cols3[4], 7), cols3[4], >+ tuklib_mbstr_fw(cols3[3], headings[ >+ HEADING_COMPSIZE].columns), >+ cols3[3], >+ tuklib_mbstr_fw(cols3[4], headings[ >+ HEADING_MEMUSAGE].columns - 4), >+ cols3[4], > cols3[5]); > } > > putchar('\n'); >+ block_header_info_end(&bhi); > } > } > > if (detailed) { >- printf(_(" Memory needed: %s MiB\n"), uint64_to_str( >+ printf(" %-*s %s MiB\n", COLON_STR(COLON_STR_MEMORY_NEEDED), >+ uint64_to_str( > round_up_to_mib(xfi->memusage_max), 0)); >- printf(_(" Sizes in headers: %s\n"), >+ printf(" %-*s %s\n", COLON_STR(COLON_STR_SIZES_IN_HEADERS), > xfi->all_have_sizes ? _("Yes") : _("No")); >+ //printf(" %-*s %s\n", COLON_STR(COLON_STR_MINIMUM_XZ_VERSION), > printf(_(" Minimum XZ Utils version: %s\n"), > xz_ver_to_str(xfi->min_version)); > } >@@ -951,9 +1071,9 @@ > iter.stream.padding); > > lzma_index_iter_rewind(&iter); >- block_header_info bhi; > > while (!lzma_index_iter_next(&iter, LZMA_INDEX_ITER_BLOCK)) { >+ block_header_info bhi = BLOCK_HEADER_INFO_INIT; > if (message_verbosity_get() >= V_DEBUG > && parse_details( > pair, &iter, &bhi, xfi)) >@@ -984,6 +1104,7 @@ > bhi.filter_chain); > > putchar('\n'); >+ block_header_info_end(&bhi); > } > } > >@@ -1068,17 +1189,19 @@ > { > putchar('\n'); > puts(_("Totals:")); >- printf(_(" Number of files: %s\n"), >+ printf(" %-*s %s\n", COLON_STR(COLON_STR_NUMBER_OF_FILES), > uint64_to_str(totals.files, 0)); > print_adv_helper(totals.streams, totals.blocks, > totals.compressed_size, totals.uncompressed_size, > totals.checks, totals.stream_padding); > > if (message_verbosity_get() >= V_DEBUG) { >- printf(_(" Memory needed: %s MiB\n"), uint64_to_str( >+ printf(" %-*s %s MiB\n", COLON_STR(COLON_STR_MEMORY_NEEDED), >+ uint64_to_str( > round_up_to_mib(totals.memusage_max), 0)); >- printf(_(" Sizes in headers: %s\n"), >+ printf(" %-*s %s\n", COLON_STR(COLON_STR_SIZES_IN_HEADERS), > totals.all_have_sizes ? _("Yes") : _("No")); >+ //printf(" %-*s %s\n", COLON_STR(COLON_STR_MINIMUM_XZ_VERSION), > printf(_(" Minimum XZ Utils version: %s\n"), > xz_ver_to_str(totals.min_version)); > } >@@ -1153,6 +1276,8 @@ > "standard input")); > return; > } >+ >+ init_field_widths(); > > // Unset opt_stdout so that io_open_src() won't accept special files. > // Set opt_force so that io_open_src() will follow symlinks. >diff -ur xz-5.2.5/src/xz/main.c xz-5.4.3/src/xz/main.c >--- xz-5.2.5/src/xz/main.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/main.c 2023-05-04 17:21:05 >@@ -142,6 +142,20 @@ > int > main(int argc, char **argv) > { >+#ifdef HAVE_PLEDGE >+ // OpenBSD's pledge(2) sandbox >+ // >+ // Unconditionally enable sandboxing with fairly relaxed promises. >+ // This is still way better than having no sandbox at all. :-) >+ // More strict promises will be made later in file_io.c if possible. >+ if (pledge("stdio rpath wpath cpath fattr", "")) { >+ // Don't translate the string or use message_fatal() as >+ // those haven't been initialized yet. >+ fprintf(stderr, "%s: Failed to enable the sandbox\n", argv[0]); >+ return E_ERROR; >+ } >+#endif >+ > #if defined(_WIN32) && !defined(__CYGWIN__) > InitializeCriticalSection(&exit_status_cs); > #endif >diff -ur xz-5.2.5/src/xz/message.c xz-5.4.3/src/xz/message.c >--- xz-5.2.5/src/xz/message.c 2020-03-17 17:28:54 >+++ xz-5.4.3/src/xz/message.c 2023-05-04 17:21:05 >@@ -355,11 +355,8 @@ > if (elapsed < 3000) > return ""; > >- static const char unit[][8] = { >- "KiB/s", >- "MiB/s", >- "GiB/s", >- }; >+ // The first character of KiB/s, MiB/s, or GiB/s: >+ static const char unit[] = { 'K', 'M', 'G' }; > > size_t unit_index = 0; > >@@ -381,7 +378,7 @@ > // - 999 KiB/s > // Use big enough buffer to hold e.g. a multibyte decimal point. > static char buf[16]; >- snprintf(buf, sizeof(buf), "%.*f %s", >+ snprintf(buf, sizeof(buf), "%.*f %ciB/s", > speed > 9.9 ? 0 : 1, speed, unit[unit_index]); > return buf; > } >@@ -726,7 +723,16 @@ > // This is a translatable string because French needs > // a space before a colon. > fprintf(stderr, _("%s: "), progname); >+ >+#ifdef __clang__ >+# pragma GCC diagnostic push >+# pragma GCC diagnostic ignored "-Wformat-nonliteral" >+#endif > vfprintf(stderr, fmt, ap); >+#ifdef __clang__ >+# pragma GCC diagnostic pop >+#endif >+ > fputc('\n', stderr); > > signals_unblock(); >@@ -832,6 +838,15 @@ > case LZMA_STREAM_END: > case LZMA_GET_CHECK: > case LZMA_PROG_ERROR: >+ case LZMA_SEEK_NEEDED: >+ case LZMA_RET_INTERNAL1: >+ case LZMA_RET_INTERNAL2: >+ case LZMA_RET_INTERNAL3: >+ case LZMA_RET_INTERNAL4: >+ case LZMA_RET_INTERNAL5: >+ case LZMA_RET_INTERNAL6: >+ case LZMA_RET_INTERNAL7: >+ case LZMA_RET_INTERNAL8: > // Without "default", compiler will warn if new constants > // are added to lzma_ret, it is not too easy to forget to > // add the new constants to this function. >@@ -894,167 +909,20 @@ > } > > >-/// \brief Convert uint32_t to a nice string for --lzma[12]=dict=SIZE >-/// >-/// The idea is to use KiB or MiB suffix when possible. >-static const char * >-uint32_to_optstr(uint32_t num) >-{ >- static char buf[16]; >- >- if ((num & ((UINT32_C(1) << 20) - 1)) == 0) >- snprintf(buf, sizeof(buf), "%" PRIu32 "MiB", num >> 20); >- else if ((num & ((UINT32_C(1) << 10) - 1)) == 0) >- snprintf(buf, sizeof(buf), "%" PRIu32 "KiB", num >> 10); >- else >- snprintf(buf, sizeof(buf), "%" PRIu32, num); >- >- return buf; >-} >- >- > extern void >-message_filters_to_str(char buf[FILTERS_STR_SIZE], >- const lzma_filter *filters, bool all_known) >-{ >- char *pos = buf; >- size_t left = FILTERS_STR_SIZE; >- >- for (size_t i = 0; filters[i].id != LZMA_VLI_UNKNOWN; ++i) { >- // Add the dashes for the filter option. A space is >- // needed after the first and later filters. >- my_snprintf(&pos, &left, "%s", i == 0 ? "--" : " --"); >- >- switch (filters[i].id) { >- case LZMA_FILTER_LZMA1: >- case LZMA_FILTER_LZMA2: { >- const lzma_options_lzma *opt = filters[i].options; >- const char *mode = NULL; >- const char *mf = NULL; >- >- if (all_known) { >- switch (opt->mode) { >- case LZMA_MODE_FAST: >- mode = "fast"; >- break; >- >- case LZMA_MODE_NORMAL: >- mode = "normal"; >- break; >- >- default: >- mode = "UNKNOWN"; >- break; >- } >- >- switch (opt->mf) { >- case LZMA_MF_HC3: >- mf = "hc3"; >- break; >- >- case LZMA_MF_HC4: >- mf = "hc4"; >- break; >- >- case LZMA_MF_BT2: >- mf = "bt2"; >- break; >- >- case LZMA_MF_BT3: >- mf = "bt3"; >- break; >- >- case LZMA_MF_BT4: >- mf = "bt4"; >- break; >- >- default: >- mf = "UNKNOWN"; >- break; >- } >- } >- >- // Add the filter name and dictionary size, which >- // is always known. >- my_snprintf(&pos, &left, "lzma%c=dict=%s", >- filters[i].id == LZMA_FILTER_LZMA2 >- ? '2' : '1', >- uint32_to_optstr(opt->dict_size)); >- >- // With LZMA1 also lc/lp/pb are known when >- // decompressing, but this function is never >- // used to print information about .lzma headers. >- assert(filters[i].id == LZMA_FILTER_LZMA2 >- || all_known); >- >- // Print the rest of the options, which are known >- // only when compressing. >- if (all_known) >- my_snprintf(&pos, &left, >- ",lc=%" PRIu32 ",lp=%" PRIu32 >- ",pb=%" PRIu32 >- ",mode=%s,nice=%" PRIu32 ",mf=%s" >- ",depth=%" PRIu32, >- opt->lc, opt->lp, opt->pb, >- mode, opt->nice_len, mf, opt->depth); >- break; >- } >- >- case LZMA_FILTER_X86: >- case LZMA_FILTER_POWERPC: >- case LZMA_FILTER_IA64: >- case LZMA_FILTER_ARM: >- case LZMA_FILTER_ARMTHUMB: >- case LZMA_FILTER_SPARC: { >- static const char bcj_names[][9] = { >- "x86", >- "powerpc", >- "ia64", >- "arm", >- "armthumb", >- "sparc", >- }; >- >- const lzma_options_bcj *opt = filters[i].options; >- my_snprintf(&pos, &left, "%s", bcj_names[filters[i].id >- - LZMA_FILTER_X86]); >- >- // Show the start offset only when really needed. >- if (opt != NULL && opt->start_offset != 0) >- my_snprintf(&pos, &left, "=start=%" PRIu32, >- opt->start_offset); >- >- break; >- } >- >- case LZMA_FILTER_DELTA: { >- const lzma_options_delta *opt = filters[i].options; >- my_snprintf(&pos, &left, "delta=dist=%" PRIu32, >- opt->dist); >- break; >- } >- >- default: >- // This should be possible only if liblzma is >- // newer than the xz tool. >- my_snprintf(&pos, &left, "UNKNOWN"); >- break; >- } >- } >- >- return; >-} >- >- >-extern void > message_filters_show(enum message_verbosity v, const lzma_filter *filters) > { > if (v > verbosity) > return; > >- char buf[FILTERS_STR_SIZE]; >- message_filters_to_str(buf, filters, true); >+ char *buf; >+ const lzma_ret ret = lzma_str_from_filters(&buf, filters, >+ LZMA_STR_ENCODER | LZMA_STR_GETOPT_LONG, NULL); >+ if (ret != LZMA_OK) >+ message_fatal("%s", message_strm(ret)); >+ > fprintf(stderr, _("%s: Filter chain: %s\n"), progname, buf); >+ free(buf); > return; > } > >@@ -1116,6 +984,9 @@ > " -k, --keep keep (don't delete) input files\n" > " -f, --force force overwrite of output file and (de)compress links\n" > " -c, --stdout write to standard output and don't delete input files")); >+ // NOTE: --to-stdout isn't included above because it's not >+ // the recommended spelling. It was copied from gzip but other >+ // compressors with gzip-like syntax don't support it. > > if (long_help) { > puts(_( >@@ -1134,7 +1005,7 @@ > puts(_("\n Basic file format and compression options:\n")); > puts(_( > " -F, --format=FMT file format to encode or decode; possible values are\n" >-" `auto' (default), `xz', `lzma', and `raw'\n" >+" `auto' (default), `xz', `lzma', `lzip', and `raw'\n" > " -C, --check=CHECK integrity check type: `none' (use with caution),\n" > " `crc32', `crc64' (default), or `sha256'")); > puts(_( >@@ -1171,9 +1042,11 @@ > puts(_( // xgettext:no-c-format > " --memlimit-compress=LIMIT\n" > " --memlimit-decompress=LIMIT\n" >+" --memlimit-mt-decompress=LIMIT\n" > " -M, --memlimit=LIMIT\n" > " set memory usage limit for compression, decompression,\n" >-" or both; LIMIT is in bytes, % of RAM, or 0 for defaults")); >+" threaded decompression, or all of these; LIMIT is in\n" >+" bytes, % of RAM, or 0 for defaults")); > > puts(_( > " --no-adjust if compression settings exceed the memory usage limit,\n" >@@ -1208,10 +1081,11 @@ > puts(_( > "\n" > " --x86[=OPTS] x86 BCJ filter (32-bit and 64-bit)\n" >+" --arm[=OPTS] ARM BCJ filter\n" >+" --armthumb[=OPTS] ARM-Thumb BCJ filter\n" >+" --arm64[=OPTS] ARM64 BCJ filter\n" > " --powerpc[=OPTS] PowerPC BCJ filter (big endian only)\n" > " --ia64[=OPTS] IA-64 (Itanium) BCJ filter\n" >-" --arm[=OPTS] ARM BCJ filter (little endian only)\n" >-" --armthumb[=OPTS] ARM-Thumb BCJ filter (little endian only)\n" > " --sparc[=OPTS] SPARC BCJ filter\n" > " Valid OPTS for all BCJ filters:\n" > " start=NUM start offset for conversions (default=0)")); >diff -ur xz-5.2.5/src/xz/message.h xz-5.4.3/src/xz/message.h >--- xz-5.2.5/src/xz/message.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/message.h 2023-05-04 17:21:05 >@@ -90,22 +90,6 @@ > extern void message_mem_needed(enum message_verbosity v, uint64_t memusage); > > >-/// Buffer size for message_filters_to_str() >-#define FILTERS_STR_SIZE 512 >- >- >-/// \brief Get the filter chain as a string >-/// >-/// \param buf Pointer to caller allocated buffer to hold >-/// the filter chain string >-/// \param filters Pointer to the filter chain >-/// \param all_known If true, all filter options are printed. >-/// If false, only the options that get stored >-/// into .xz headers are printed. >-extern void message_filters_to_str(char buf[FILTERS_STR_SIZE], >- const lzma_filter *filters, bool all_known); >- >- > /// Print the filter chain. > extern void message_filters_show( > enum message_verbosity v, const lzma_filter *filters); >diff -ur xz-5.2.5/src/xz/mytime.c xz-5.4.3/src/xz/mytime.c >--- xz-5.2.5/src/xz/mytime.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/mytime.c 2023-05-04 17:22:00 >@@ -12,7 +12,9 @@ > > #include "private.h" > >-#if !(defined(HAVE_CLOCK_GETTIME) && HAVE_DECL_CLOCK_MONOTONIC) >+#if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_CLOCK_MONOTONIC) >+# include <time.h> >+#else > # include <sys/time.h> > #endif > >@@ -28,8 +30,7 @@ > static uint64_t > mytime_now(void) > { >- // NOTE: HAVE_DECL_CLOCK_MONOTONIC is always defined to 0 or 1. >-#if defined(HAVE_CLOCK_GETTIME) && HAVE_DECL_CLOCK_MONOTONIC >+#if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_CLOCK_MONOTONIC) > // If CLOCK_MONOTONIC was available at compile time but for some > // reason isn't at runtime, fallback to CLOCK_REALTIME which > // according to POSIX is mandatory for all implementations. >diff -ur xz-5.2.5/src/xz/options.c xz-5.4.3/src/xz/options.c >--- xz-5.2.5/src/xz/options.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/options.c 2023-05-04 17:21:05 >@@ -49,13 +49,13 @@ > /// is called, which should update the given value to filter-specific > /// options structure. > /// >+/// This returns only if no errors occur. >+/// > /// \param str String containing the options from the command line > /// \param opts Filter-specific option map > /// \param set Filter-specific function to update filter_options > /// \param filter_options Pointer to filter-specific options structure > /// >-/// \return Returns only if no errors occur. >-/// > static void > parse_options(const char *str, const option_map *opts, > void (*set)(void *filter_options, >@@ -353,11 +353,6 @@ > > if (options->lc + options->lp > LZMA_LCLP_MAX) > message_fatal(_("The sum of lc and lp must not exceed 4")); >- >- const uint32_t nice_len_min = options->mf & 0x0F; >- if (options->nice_len < nice_len_min) >- message_fatal(_("The selected match finder requires at " >- "least nice=%" PRIu32), nice_len_min); > > return options; > } >diff -ur xz-5.2.5/src/xz/private.h xz-5.4.3/src/xz/private.h >--- xz-5.2.5/src/xz/private.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/private.h 2023-05-04 17:22:00 >@@ -45,7 +45,7 @@ > # define STDERR_FILENO (fileno(stderr)) > #endif > >-#ifdef HAVE_CAPSICUM >+#if defined(HAVE_CAPSICUM) || defined(HAVE_PLEDGE) > # define ENABLE_SANDBOX 1 > #endif > >diff -ur xz-5.2.5/src/xz/suffix.c xz-5.4.3/src/xz/suffix.c >--- xz-5.2.5/src/xz/suffix.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/suffix.c 2023-05-04 17:21:05 >@@ -18,6 +18,9 @@ > > // For case-insensitive filename suffix on case-insensitive systems > #if defined(TUKLIB_DOSLIKE) || defined(__VMS) >+# ifdef HAVE_STRINGS_H >+# include <strings.h> >+# endif > # define strcmp strcasecmp > #endif > >@@ -119,23 +122,16 @@ > #ifdef __DJGPP__ > { ".lzm", "" }, > #endif >- { ".tlz", ".tar" }, >- // { ".gz", "" }, >- // { ".tgz", ".tar" }, >+ { ".tlz", ".tar" }, // Both .tar.lzma and .tar.lz >+#ifdef HAVE_LZIP_DECODER >+ { ".lz", "" }, >+#endif > }; > > const char *new_suffix = ""; > size_t new_len = 0; > >- if (opt_format == FORMAT_RAW) { >- // Don't check for known suffixes when --format=raw was used. >- if (custom_suffix == NULL) { >- message_error(_("%s: With --format=raw, " >- "--suffix=.SUF is required unless " >- "writing to stdout"), src_name); >- return NULL; >- } >- } else { >+ if (opt_format != FORMAT_RAW) { > for (size_t i = 0; i < ARRAY_SIZE(suffixes); ++i) { > new_len = test_suffix(suffixes[i].compressed, > src_name, src_len); >@@ -208,12 +204,15 @@ > #endif > ".tlz", > NULL >-/* >+#ifdef HAVE_LZIP_DECODER >+ // This is needed to keep the table indexing in sync with >+ // enum format_type from coder.h. > }, { >- ".gz", >- ".tgz", >- NULL >+/* >+ ".lz", > */ >+ NULL >+#endif > }, { > // --format=raw requires specifying the suffix > // manually or using stdout. >@@ -221,8 +220,11 @@ > } > }; > >- // args.c ensures this. >+ // args.c ensures these. > assert(opt_format != FORMAT_AUTO); >+#ifdef HAVE_LZIP_DECODER >+ assert(opt_format != FORMAT_LZIP); >+#endif > > const size_t format = opt_format - 1; > const char *const *suffixes = all_suffixes[format]; >@@ -252,15 +254,6 @@ > } > } > >- // TODO: Hmm, maybe it would be better to validate this in args.c, >- // since the suffix handling when decoding is weird now. >- if (opt_format == FORMAT_RAW && custom_suffix == NULL) { >- message_error(_("%s: With --format=raw, " >- "--suffix=.SUF is required unless " >- "writing to stdout"), src_name); >- return NULL; >- } >- > const char *suffix = custom_suffix != NULL > ? custom_suffix : suffixes[0]; > size_t suffix_len = strlen(suffix); >@@ -299,9 +292,11 @@ > // xz foo.tar -> foo.txz > // xz -F lzma foo.tar -> foo.tlz > static const char *const tar_suffixes[] = { >- ".txz", >- ".tlz", >- // ".tgz", >+ ".txz", // .tar.xz >+ ".tlz", // .tar.lzma >+/* >+ ".tlz", // .tar.lz >+*/ > }; > suffix = tar_suffixes[format]; > suffix_len = 4; >@@ -396,4 +391,11 @@ > free(custom_suffix); > custom_suffix = xstrdup(suffix); > return; >+} >+ >+ >+extern bool >+suffix_is_set(void) >+{ >+ return custom_suffix != NULL; > } >diff -ur xz-5.2.5/src/xz/suffix.h xz-5.4.3/src/xz/suffix.h >--- xz-5.2.5/src/xz/suffix.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/suffix.h 2023-05-04 17:21:05 >@@ -26,3 +26,11 @@ > /// suffix, thus if this is called multiple times, the old suffixes are freed > /// and forgotten. > extern void suffix_set(const char *suffix); >+ >+ >+/// \brief Check if a custom suffix has been set >+/// >+/// Returns true if the internal tracking of the suffix string has been set >+/// and false if the string has not been set. This will keep the suffix >+/// string encapsulated instead of extern-ing the variable. >+extern bool suffix_is_set(void); >diff -ur xz-5.2.5/src/xz/util.c xz-5.4.3/src/xz/util.c >--- xz-5.2.5/src/xz/util.c 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/util.c 2023-05-04 17:21:05 >@@ -261,18 +261,6 @@ > > > extern bool >-is_empty_filename(const char *filename) >-{ >- if (filename[0] == '\0') { >- message_error(_("Empty filename, skipping")); >- return true; >- } >- >- return false; >-} >- >- >-extern bool > is_tty_stdin(void) > { > const bool ret = isatty(STDIN_FILENO); >diff -ur xz-5.2.5/src/xz/util.h xz-5.4.3/src/xz/util.h >--- xz-5.2.5/src/xz/util.h 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/util.h 2023-05-04 17:21:05 >@@ -105,10 +105,6 @@ > lzma_attribute((__format__(__printf__, 3, 4))); > > >-/// \brief Check if filename is empty and print an error message >-extern bool is_empty_filename(const char *filename); >- >- > /// \brief Test if stdin is a terminal > /// > /// If stdin is a terminal, an error message is printed and exit status set >diff -ur xz-5.2.5/src/xz/xz.1 xz-5.4.3/src/xz/xz.1 >--- xz-5.2.5/src/xz/xz.1 2020-03-17 17:28:50 >+++ xz-5.4.3/src/xz/xz.1 2023-05-04 17:21:05 >@@ -5,7 +5,7 @@ > .\" This file has been put into the public domain. > .\" You can do whatever you want with this file. > .\" >-.TH XZ 1 "2020-02-01" "Tukaani" "XZ Utils" >+.TH XZ 1 "2022-12-01" "Tukaani" "XZ Utils" > . > .SH NAME > xz, unxz, xzcat, lzma, unlzma, lzcat \- Compress or decompress .xz and .lzma files >@@ -62,6 +62,11 @@ > format used by LZMA Utils and > raw compressed streams with no container format headers > are also supported. >+In addition, decompression of the >+.B .lz >+format used by >+.B lzip >+is supported. > .PP > .B xz > compresses or decompresses each >@@ -102,9 +107,10 @@ > is appended to the source filename to get the target filename. > .IP \(bu 3 > When decompressing, the >-.B .xz >+.BR .xz , >+.BR .lzma , > or >-.B .lzma >+.B .lz > suffix is removed from the filename to get the target filename. > .B xz > also recognizes the suffixes >@@ -158,8 +164,9 @@ > .RB ( .xz , > .BR .txz , > .BR .lzma , >+.BR .tlz , > or >-.BR .tlz ). >+.BR .lz ). > .PP > After successfully compressing or decompressing the > .IR file , >@@ -183,7 +190,8 @@ > was specified. > The source > .I file >-is never removed if the output is written to standard output. >+is never removed if the output is written to standard output >+or if an error occurs. > .PP > Sending > .B SIGINFO >@@ -221,7 +229,7 @@ > has a built-in memory usage limiter, which is disabled by default. > While some operating systems provide ways to limit > the memory usage of processes, relying on it >-wasn't deemed to be flexible enough (e.g. using >+wasn't deemed to be flexible enough (for example, using > .BR ulimit (1) > to limit virtual memory tends to cripple > .BR mmap (2)). >@@ -231,19 +239,21 @@ > Often it is more convenient to enable the limiter > by default by setting the environment variable > .BR XZ_DEFAULTS , >-e.g.\& >+for example, > .BR XZ_DEFAULTS=\-\-memlimit=150MiB . > It is possible to set the limits separately >-for compression and decompression >-by using \fB\-\-memlimit\-compress=\fIlimit\fR and >-\fB\-\-memlimit\-decompress=\fIlimit\fR. >+for compression and decompression by using >+.BI \-\-memlimit\-compress= limit >+and \fB\-\-memlimit\-decompress=\fIlimit\fR. > Using these two options outside > .B XZ_DEFAULTS > is rarely useful because a single run of > .B xz > cannot do both compression and decompression and > .BI \-\-memlimit= limit >-(or \fB\-M\fR \fIlimit\fR) >+(or >+.B \-M >+.IR limit ) > is shorter to type on the command line. > .PP > If the specified memory usage limit is exceeded when decompressing, >@@ -252,11 +262,13 @@ > If the limit is exceeded when compressing, > .B xz > will try to scale the settings down so that the limit >-is no longer exceeded (except when using \fB\-\-format=raw\fR >-or \fB\-\-no\-adjust\fR). >+is no longer exceeded (except when using >+.B \-\-format=raw >+or >+.BR \-\-no\-adjust ). > This way the operation won't fail unless the limit is very small. > The scaling of the settings is done in steps that don't >-match the compression level presets, e.g. if the limit is >+match the compression level presets, for example, if the limit is > only slightly less than the amount required for > .BR "xz \-9" , > the settings will be scaled down only a little, >@@ -276,7 +288,7 @@ > or after the last part. > The padding must consist of null bytes and the size > of the padding must be a multiple of four bytes. >-This can be useful e.g. if the >+This can be useful, for example, if the > .B .xz > file is stored on a medium that measures file sizes > in 512-byte blocks. >@@ -373,7 +385,7 @@ > twice, but note that this may be slow, because getting all the extra > information requires many seeks. > The width of verbose output exceeds >-80 characters, so piping the output to e.g.\& >+80 characters, so piping the output to, for example, > .B "less\ \-S" > may be convenient if the terminal isn't wide enough. > .IP "" >@@ -388,6 +400,20 @@ > .TP > .BR \-k ", " \-\-keep > Don't delete the input files. >+.IP "" >+Since >+.B xz >+5.2.6, >+this option also makes >+.B xz >+compress or decompress even if the input is >+a symbolic link to a regular file, >+has more than one hard link, >+or has the setuid, setgid, or sticky bit set. >+The setuid, setgid, and sticky bits are not copied >+to the target file. >+In earlier versions this was only done with >+.BR \-\-force . > .TP > .BR \-f ", " \-\-force > This option has several effects: >@@ -405,7 +431,7 @@ > .IP \(bu 3 > When used with > .B \-\-decompress >-.BR \-\-stdout >+.B \-\-stdout > and > .B xz > cannot recognize the type of the source file, >@@ -488,8 +514,9 @@ > .BR .xz , > .BR .txz , > .BR .lzma , >+.BR .tlz , > or >-.B .tlz >+.B .lz > suffix. > If the source file has the suffix > .IR .suf , >@@ -556,6 +583,34 @@ > .B alone > is provided for backwards compatibility with LZMA Utils. > .TP >+.B lzip >+Accept only >+.B .lz >+files when decompressing. >+Compression is not supported. >+.IP "" >+The >+.B .lz >+format version 0 and the unextended version 1 are supported. >+Version 0 files were produced by >+.B lzip >+1.3 and older. >+Such files aren't common but may be found from file archives >+as a few source packages were released in this format. >+People might have old personal files in this format too. >+Decompression support for the format version 0 was removed in >+.B lzip >+1.18. >+.IP "" >+.B lzip >+1.4 and later create files in the format version 1. >+The sync flush marker extension to the format version 1 was added in >+.B lzip >+1.6. >+This extension is rarely used and isn't supported by >+.B xz >+(diagnosed as corrupt input). >+.TP > .B raw > Compress or uncompress a raw stream (no headers). > This is meant for advanced users only. >@@ -670,7 +725,7 @@ > decompressor memory usage reasonable even for old systems. > .B \-6 > is the default, which is usually a good choice >-e.g. for distributing files that need to be decompressible >+for distributing files that need to be decompressible > even on systems with only 16\ MiB RAM. > .RB ( \-5e > or >@@ -840,7 +895,7 @@ > .I size > is three times the LZMA2 dictionary size or 1 MiB, > whichever is more. >-Typically a good value is 2\-4 times >+Typically a good value is 2\(en4 times > the size of the LZMA2 dictionary or at least 1 MiB. > Using > .I size >@@ -946,15 +1001,28 @@ > If the compression settings exceed the > .IR limit , > .B xz >-will adjust the settings downwards so that >+will attempt to adjust the settings downwards so that > the limit is no longer exceeded and display a notice that > automatic adjustment was done. >-Such adjustments are not made when compressing with >+The adjustments are done in this order: >+reducing the number of threads, >+switching to single-threaded mode >+if even one thread in multi-threaded mode exceeds the >+.IR limit , >+and finally reducing the LZMA2 dictionary size. >+.IP "" >+When compressing with > .B \-\-format=raw > or if > .B \-\-no\-adjust >-has been specified. >-In those cases, an error is displayed and >+has been specified, >+only the number of threads may be reduced >+since it can be done without affecting the compressed output. >+.IP "" >+If the >+.I limit >+cannot be met even with the adjustments described above, >+an error is displayed and > .B xz > will exit with exit status 1. > .IP "" >@@ -993,20 +1061,10 @@ > to > .B max > (no memory usage limit). >-Once multithreading support has been implemented, >-there may be a difference between >-.B 0 >-and >-.B max >-for the multithreaded case, so it is recommended to use >-.B 0 >-instead of >-.B max >-until the details have been decided. > .RE > .IP "" > For 32-bit >-.BR xz >+.B xz > there is a special case: if the > .I limit > would be over >@@ -1015,6 +1073,9 @@ > .I limit > is set to > .BR "4020\ MiB" . >+On MIPS32 >+.B "2000\ MiB" >+is used instead. > (The values > .B 0 > and >@@ -1022,7 +1083,8 @@ > aren't affected by this. > A similar feature doesn't exist for decompression.) > This can be helpful when a 32-bit executable has access >-to 4\ GiB address space while hopefully doing no harm in other situations. >+to 4\ GiB address space (2 GiB on MIPS32) >+while hopefully doing no harm in other situations. > .IP "" > See also the section > .BR "Memory usage" . >@@ -1041,15 +1103,80 @@ > for possible ways to specify the > .IR limit . > .TP >+.BI \-\-memlimit\-mt\-decompress= limit >+Set a memory usage limit for multi-threaded decompression. >+This can only affect the number of threads; >+this will never make >+.B xz >+refuse to decompress a file. >+If >+.I limit >+is too low to allow any multi-threading, the >+.I limit >+is ignored and >+.B xz >+will continue in single-threaded mode. >+Note that if also >+.B \-\-memlimit\-decompress >+is used, >+it will always apply to both single-threaded and multi-threaded modes, >+and so the effective >+.I limit >+for multi-threading will never be higher than the limit set with >+.BR \-\-memlimit\-decompress . >+.IP "" >+In contrast to the other memory usage limit options, >+.BI \-\-memlimit\-mt\-decompress= limit >+has a system-specific default >+.IR limit . >+.B "xz \-\-info\-memory" >+can be used to see the current value. >+.IP "" >+This option and its default value exist >+because without any limit the threaded decompressor >+could end up allocating an insane amount of memory with some input files. >+If the default >+.I limit >+is too low on your system, >+feel free to increase the >+.I limit >+but never set it to a value larger than the amount of usable RAM >+as with appropriate input files >+.B xz >+will attempt to use that amount of memory >+even with a low number of threads. >+Running out of memory or swapping >+will not improve decompression performance. >+.IP "" >+See >+.BI \-\-memlimit\-compress= limit >+for possible ways to specify the >+.IR limit . >+Setting >+.I limit >+to >+.B 0 >+resets the >+.I limit >+to the default system-specific value. >+.IP "" >+.TP > \fB\-M\fR \fIlimit\fR, \fB\-\-memlimit=\fIlimit\fR, \fB\-\-memory=\fIlimit >-This is equivalent to specifying \fB\-\-memlimit\-compress=\fIlimit >-\fB\-\-memlimit\-decompress=\fIlimit\fR. >+This is equivalent to specifying >+.BI \-\-memlimit\-compress= limit >+.BI \-\-memlimit-decompress= limit >+\fB\-\-memlimit\-mt\-decompress=\fIlimit\fR. > .TP > .B \-\-no\-adjust >-Display an error and exit if the compression settings exceed >-the memory usage limit. >-The default is to adjust the settings downwards so >-that the memory usage limit is not exceeded. >+Display an error and exit if the memory usage limit cannot be >+met without adjusting settings that affect the compressed output. >+That is, this prevents >+.B xz >+from switching the encoder from multi-threaded mode to single-threaded mode >+and from reducing the LZMA2 dictionary size. >+Even when this option is used the number of threads may be reduced >+to meet the memory usage limit as that won't affect the compressed output. >+.IP "" > Automatic adjusting is always disabled when creating raw streams > .RB ( \-\-format=raw ). > .TP >@@ -1061,13 +1188,66 @@ > .B 0 > makes > .B xz >-use as many threads as there are CPU cores on the system. >-The actual number of threads can be less than >+use up to as many threads as the processor(s) on the system support. >+The actual number of threads can be fewer than > .I threads > if the input file is not big enough > for threading with the given settings or > if using more threads would exceed the memory usage limit. > .IP "" >+The single-threaded and multi-threaded compressors produce different output. >+Single-threaded compressor will give the smallest file size but >+only the output from the multi-threaded compressor can be decompressed >+using multiple threads. >+Setting >+.I threads >+to >+.B 1 >+will use the single-threaded mode. >+Setting >+.I threads >+to any other value, including >+.BR 0 , >+will use the multi-threaded compressor >+even if the system supports only one hardware thread. >+.RB ( xz >+5.2.x >+used single-threaded mode in this situation.) >+.IP "" >+To use multi-threaded mode with only one thread, set >+.I threads >+to >+.BR +1 . >+The >+.B + >+prefix has no effect with values other than >+.BR 1 . >+A memory usage limit can still make >+.B xz >+switch to single-threaded mode unless >+.B \-\-no\-adjust >+is used. >+Support for the >+.B + >+prefix was added in >+.B xz >+5.4.0. >+.IP "" >+If an automatic number of threads has been requested and >+no memory usage limit has been specified, >+then a system-specific default soft limit will be used to possibly >+limit the number of threads. >+It is a soft limit in sense that it is ignored >+if the number of threads becomes one, >+thus a soft limit will never stop >+.B xz >+from compressing or decompressing. >+This default soft limit will not make >+.B xz >+switch from multi-threaded mode to single-threaded mode. >+The active limits can be seen with >+.BR "xz \-\-info\-memory" . >+.IP "" > Currently the only threading method is to split the input into > blocks and compress them independently from each other. > The default block size depends on the compression level and >@@ -1075,20 +1255,25 @@ > .BI \-\-block\-size= size > option. > .IP "" >-Threaded decompression hasn't been implemented yet. >-It will only work on files that contain multiple blocks >-with size information in block headers. >-All files compressed in multi-threaded mode meet this condition, >+Threaded decompression only works on files that contain >+multiple blocks with size information in block headers. >+All large enough files compressed in multi-threaded mode >+meet this condition, > but files compressed in single-threaded mode don't even if > .BI \-\-block\-size= size >-is used. >+has been used. > . > .SS "Custom compressor filter chains" > A custom filter chain allows specifying > the compression settings in detail instead of relying on > the settings associated to the presets. > When a custom filter chain is specified, >-preset options (\fB\-0\fR ... \fB\-9\fR and \fB\-\-extreme\fR) >+preset options >+.RB ( \-0 >+\&...\& >+.B \-9 >+and >+.BR \-\-extreme ) > earlier on the command line are forgotten. > If a preset option is specified > after one or more custom filter chain options, >@@ -1172,7 +1357,10 @@ > .B 0 > to > .BR 9 , >-matching the command line options \fB\-0\fR ... \fB\-9\fR. >+matching the command line options >+.B \-0 >+\&...\& >+.BR \-9 . > The only supported modifier is currently > .BR e , > which matches >@@ -1253,7 +1441,7 @@ > .I lc > bits of the previous uncompressed byte correlate > with the next byte. >-E.g. in typical English text, an upper-case letter is >+For example, in typical English text, an upper-case letter is > often followed by a lower-case letter, and a lower-case > letter is usually followed by another lower-case letter. > In the US-ASCII character set, the highest three bits are 010 >@@ -1268,7 +1456,7 @@ > .BR lc=4 . > Sometimes it helps a little, and > sometimes it makes compression worse. >-If it makes it worse, test e.g.\& >+If it makes it worse, test > .B lc=2 > too. > .TP >@@ -1294,10 +1482,10 @@ > .RI (2^ pb =2^2=4), > which is often a good choice when there's no better guess. > .IP "" >-When the aligment is known, setting >+When the alignment is known, setting > .I pb > accordingly may reduce the file size a little. >-E.g. with text files having one-byte >+For example, with text files having one-byte > alignment (US-ASCII, ISO-8859-*, UTF-8), setting > .B pb=0 > can improve compression slightly. >@@ -1325,7 +1513,7 @@ > .IR preset : > 0 uses > .BR hc3 , >-1\-3 >+1\(en3 > use > .BR hc4 , > and the rest use >@@ -1441,11 +1629,11 @@ > .B fast > for > .I presets >-0\-3 and >+0\(en3 and > .B normal > for > .I presets >-4\-9. >+4\(en9. > .IP "" > Usually > .B fast >@@ -1464,7 +1652,7 @@ > looking for possibly better matches. > .IP "" > .I Nice >-can be 2\-273 bytes. >+can be 2\(en273 bytes. > Higher values tend to give better compression ratio > at the expense of speed. > The default depends on the >@@ -1482,7 +1670,7 @@ > .IP "" > Reasonable > .I depth >-for Hash Chains is 4\-100 and 16\-1000 for Binary Trees. >+for Hash Chains is 4\(en100 and 16\(en1000 for Binary Trees. > Using very high values for > .I depth > can make the encoder extremely slow with some files. >@@ -1505,14 +1693,16 @@ > \fB\-\-x86\fR[\fB=\fIoptions\fR] > .PD 0 > .TP >-\fB\-\-powerpc\fR[\fB=\fIoptions\fR] >-.TP >-\fB\-\-ia64\fR[\fB=\fIoptions\fR] >-.TP > \fB\-\-arm\fR[\fB=\fIoptions\fR] > .TP > \fB\-\-armthumb\fR[\fB=\fIoptions\fR] > .TP >+\fB\-\-arm64\fR[\fB=\fIoptions\fR] >+.TP >+\fB\-\-powerpc\fR[\fB=\fIoptions\fR] >+.TP >+\fB\-\-ia64\fR[\fB=\fIoptions\fR] >+.TP > \fB\-\-sparc\fR[\fB=\fIoptions\fR] > .PD > Add a branch/call/jump (BCJ) filter to the filter chain. >@@ -1521,56 +1711,42 @@ > .IP "" > A BCJ filter converts relative addresses in > the machine code to their absolute counterparts. >-This doesn't change the size of the data, >+This doesn't change the size of the data > but it increases redundancy, >-which can help LZMA2 to produce 0\-15\ % smaller >+which can help LZMA2 to produce 0\(en15\ % smaller > .B .xz > file. > The BCJ filters are always reversible, > so using a BCJ filter for wrong type of data > doesn't cause any data loss, although it may make > the compression ratio slightly worse. >+The BCJ filters are very fast and >+use an insignificant amount of memory. > .IP "" >-It is fine to apply a BCJ filter on a whole executable; >-there's no need to apply it only on the executable section. >-Applying a BCJ filter on an archive that contains both executable >-and non-executable files may or may not give good results, >-so it generally isn't good to blindly apply a BCJ filter when >-compressing binary packages for distribution. >-.IP "" >-These BCJ filters are very fast and >-use insignificant amount of memory. >-If a BCJ filter improves compression ratio of a file, >-it can improve decompression speed at the same time. >-This is because, on the same hardware, >-the decompression speed of LZMA2 is roughly >-a fixed number of bytes of compressed data per second. >-.IP "" > These BCJ filters have known problems related to > the compression ratio: > .RS > .IP \(bu 3 > Some types of files containing executable code >-(e.g. object files, static libraries, and Linux kernel modules) >+(for example, object files, static libraries, and Linux kernel modules) > have the addresses in the instructions filled with filler values. > These BCJ filters will still do the address conversion, > which will make the compression worse with these files. > .IP \(bu 3 >-Applying a BCJ filter on an archive containing multiple similar >-executables can make the compression ratio worse than not using >-a BCJ filter. >-This is because the BCJ filter doesn't detect the boundaries >-of the executable files, and doesn't reset >-the address conversion counter for each executable. >+If a BCJ filter is applied on an archive, >+it is possible that it makes the compression ratio >+worse than not using a BCJ filter. >+For example, if there are similar or even identical executables >+then filtering will likely make the files less similar >+and thus compression is worse. >+The contents of non-executable files in the same archive can matter too. >+In practice one has to try with and without a BCJ filter to see >+which is better in each situation. > .RE > .IP "" >-Both of the above problems will be fixed >-in the future in a new filter. >-The old BCJ filters will still be useful in embedded systems, >-because the decoder of the new filter will be bigger >-and use more memory. >-.IP "" > Different instruction sets have different alignment: >+the executable file must be aligned to a multiple of >+this value in the input data to make the filter work. > .RS > .RS > .PP >@@ -1580,11 +1756,12 @@ > l n l. > Filter;Alignment;Notes > x86;1;32-bit or 64-bit x86 >+ARM;4; >+ARM-Thumb;2; >+ARM64;4;4096-byte alignment is best > PowerPC;4;Big endian only >-ARM;4;Little endian only >-ARM-Thumb;2;Little endian only >-IA-64;16;Big or little endian >-SPARC;4;Big or little endian >+IA-64;16;Itanium >+SPARC;4; > .TE > .RE > .RE >@@ -1595,6 +1772,8 @@ > alignment of the selected BCJ filter. > For example, with the IA-64 filter, it's good to set > .B pb=4 >+or even >+.B pb=4,lp=4,lc=0 > with LZMA2 (2^4=16). > The x86 filter is an exception; > it's usually good to stick to LZMA2's default >@@ -1625,12 +1804,12 @@ > in the filter chain. > .IP "" > Currently only simple byte-wise delta calculation is supported. >-It can be useful when compressing e.g. uncompressed bitmap images >+It can be useful when compressing, for example, uncompressed bitmap images > or uncompressed PCM audio. > However, special purpose algorithms may give significantly better > results than Delta + LZMA2. > This is true especially with audio, >-which compresses faster and better e.g. with >+which compresses faster and better, for example, with > .BR flac (1). > .IP "" > Supported >@@ -1642,7 +1821,7 @@ > .I distance > of the delta calculation in bytes. > .I distance >-must be 1\-256. >+must be 1\(en256. > The default is 1. > .IP "" > For example, with >@@ -1701,7 +1880,7 @@ > .B xz > started processing the file. > The time is shown in a less precise format which >-never has any colons, e.g. 2 min 30 s. >+never has any colons, for example, 2 min 30 s. > .RE > .IP "" > When standard error is not a terminal, >@@ -1714,7 +1893,7 @@ > decompressing the file. > The speed and elapsed time are included only when > the operation took at least a few seconds. >-If the operation didn't finish, e.g. due to user interruption, >+If the operation didn't finish, for example, due to user interruption, > also the completion percentage is printed > if the size of the input file is known. > .TP >@@ -1740,8 +1919,9 @@ > .B "ROBOT MODE" > for details. > .TP >-.BR \-\-info\-memory >+.B \-\-info\-memory > Display, in human-readable format, how much physical memory (RAM) >+and how many processor threads > .B xz > thinks the system has and the memory usage limits for compression > and decompression, and exit successfully. >@@ -1826,15 +2006,50 @@ > .B "xz \-\-robot \-\-info\-memory" > prints a single line with three tab-separated columns: > .IP 1. 4 >-Total amount of physical memory (RAM) in bytes >+Total amount of physical memory (RAM) in bytes. > .IP 2. 4 >-Memory usage limit for compression in bytes. >-A special value of zero indicates the default setting, >+Memory usage limit for compression in bytes >+.RB ( \-\-memlimit\-compress ). >+A special value of >+.B 0 >+indicates the default setting > which for single-threaded mode is the same as no limit. > .IP 3. 4 >-Memory usage limit for decompression in bytes. >-A special value of zero indicates the default setting, >+Memory usage limit for decompression in bytes >+.RB ( \-\-memlimit\-decompress ). >+A special value of >+.B 0 >+indicates the default setting > which for single-threaded mode is the same as no limit. >+.IP 4. 4 >+Since >+.B xz >+5.3.4alpha: >+Memory usage for multi-threaded decompression in bytes >+.RB ( \-\-memlimit\-mt\-decompress ). >+This is never zero because a system-specific default value >+shown in the column 5 >+is used if no limit has been specified explicitly. >+This is also never greater than the value in the column 3 >+even if a larger value has been specified with >+.BR \-\-memlimit\-mt\-decompress . >+.IP 5. 4 >+Since >+.B xz >+5.3.4alpha: >+A system-specific default memory usage limit >+that is used to limit the number of threads >+when compressing with an automatic number of threads >+.RB ( \-\-threads=0 ) >+and no memory usage limit has been specified >+.RB ( \-\-memlimit\-compress ). >+This is also used as the default value for >+.BR \-\-memlimit\-mt\-decompress . >+.IP 6. 4 >+Since >+.B xz >+5.3.4alpha: >+Number of available processor threads. > .PP > In the future, the output of > .B "xz \-\-robot \-\-info\-memory" >@@ -1916,8 +2131,8 @@ > .IP 5. 4 > Uncompressed size of the file > .IP 6. 4 >-Compression ratio, for example >-.BR 0.123. >+Compression ratio, for example, >+.BR 0.123 . > If ratio is over 9.999, three dashes > .RB ( \-\-\- ) > are displayed instead of the ratio. >@@ -2168,9 +2383,9 @@ > when it is not possible to set the options directly on the > .B xz > command line. >-This is the case e.g. when >+This is the case when > .B xz >-is run by a script or tool, e.g. GNU >+is run by a script or tool, for example, GNU > .BR tar (1): > .RS > .RS >@@ -2184,11 +2399,12 @@ > .RE > .IP "" > Scripts may use >-.B XZ_OPT >-e.g. to set script-specific default compression options. >+.BR XZ_OPT , >+for example, to set script-specific default compression options. > It is still recommended to allow users to override > .B XZ_OPT >-if that is reasonable, e.g. in >+if that is reasonable. >+For example, in > .BR sh (1) > scripts one may use something like this: > .RS >@@ -2210,7 +2426,7 @@ > .BR lzma , > .BR unlzma , > and >-.BR lzcat >+.B lzcat > as found from LZMA Utils 4.32.x. > In most cases, it is possible to replace > LZMA Utils with XZ Utils without breaking existing scripts. >@@ -2284,7 +2500,7 @@ > and use end-of-payload marker to indicate > where the decompressor should stop. > LZMA Utils uses this method when uncompressed size isn't known, >-which is the case for example in pipes. >+which is the case, for example, in pipes. > .PP > .B xz > supports decompressing >@@ -2480,7 +2696,7 @@ > with the preset > .B \-4e > .RB ( "\-4 \-\-extreme" ), >-which is slower than e.g. the default >+which is slower than the default > .BR \-6 , > but needs less memory for compression and decompression (48\ MiB > and 5\ MiB, respectively): >@@ -2590,7 +2806,7 @@ > .PP > .nf > .ft CW >-NEWLIM=$((123 << 20)) # 123 MiB >+NEWLIM=$((123 << 20))\ \ # 123 MiB > OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3) > if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then > XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM" >@@ -2634,10 +2850,10 @@ > .RE > .PP > If you know that a file requires >-somewhat big dictionary (e.g. 32 MiB) to compress well, >+somewhat big dictionary (for example, 32\ MiB) to compress well, > but you want to compress it quicker than > .B "xz \-8" >-would do, a preset with a low CompCPU value (e.g. 1) >+would do, a preset with a low CompCPU value (for example, 1) > can be modified to use a bigger dictionary: > .RS > .PP >@@ -2687,9 +2903,8 @@ > so the above command isn't useful for small files. > .PP > Sometimes the compression time doesn't matter, >-but the decompressor memory usage has to be kept low >-e.g. to make it possible to decompress the file on >-an embedded system. >+but the decompressor memory usage has to be kept low, for example, >+to make it possible to decompress the file on an embedded system. > The following command uses > .B \-6e > .RB ( "\-6 \-\-extreme" ) >@@ -2720,7 +2935,7 @@ > and > .I pb > are more important. >-E.g. a source code archive contains mostly US-ASCII text, >+For example, a source code archive contains mostly US-ASCII text, > so something like the following might give > slightly (like 0.1\ %) smaller file than > .B "xz \-6e" >@@ -2737,7 +2952,7 @@ > .PP > Using another filter together with LZMA2 can improve > compression with certain file types. >-E.g. to compress a x86-32 or x86-64 shared library >+For example, to compress a x86-32 or x86-64 shared library > using the x86 BCJ filter: > .RS > .PP >@@ -2766,10 +2981,10 @@ > delta but uses Deflate for the actual compression. > .PP > The image has to be saved in uncompressed format, >-e.g. as uncompressed TIFF. >+for example, as uncompressed TIFF. > The distance parameter of the Delta filter is set > to match the number of bytes per pixel in the image. >-E.g. 24-bit RGB bitmap needs >+For example, 24-bit RGB bitmap needs > .BR dist=3 , > and it is also good to pass > .B pb=0 >@@ -2783,7 +2998,7 @@ > .fi > .RE > .PP >-If multiple images have been put into a single archive (e.g.\& >+If multiple images have been put into a single archive (for example, > .BR .tar ), > the Delta filter will work on that too as long as all images > have the same number of bytes per pixel. >@@ -2802,4 +3017,4 @@ > .br > XZ Embedded: <https://tukaani.org/xz/embedded.html> > .br >-LZMA SDK: <http://7-zip.org/sdk.html> >+LZMA SDK: <https://7-zip.org/sdk.html> >diff -ur xz-5.2.5/src/xzdec/Makefile.in xz-5.4.3/src/xzdec/Makefile.in >--- xz-5.2.5/src/xzdec/Makefile.in 2020-03-17 17:29:36 >+++ xz-5.4.3/src/xzdec/Makefile.in 2023-05-04 17:31:30 >@@ -1,7 +1,7 @@ >-# Makefile.in generated by automake 1.16.1 from Makefile.am. >+# Makefile.in generated by automake 1.16.5 from Makefile.am. > # @configure_input@ > >-# Copyright (C) 1994-2018 Free Software Foundation, Inc. >+# Copyright (C) 1994-2021 Free Software Foundation, Inc. > > # This Makefile.in is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -251,8 +251,6 @@ > unique=`for i in $$list; do \ > if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ > done | $(am__uniquify_input)` >-ETAGS = etags >-CTAGS = ctags > am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ > $(top_srcdir)/build-aux/depcomp > DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) >@@ -276,6 +274,8 @@ > CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ > CPP = @CPP@ > CPPFLAGS = @CPPFLAGS@ >+CSCOPE = @CSCOPE@ >+CTAGS = @CTAGS@ > CYGPATH_W = @CYGPATH_W@ > DEFS = @DEFS@ > DEPDIR = @DEPDIR@ >@@ -286,8 +286,10 @@ > ECHO_N = @ECHO_N@ > ECHO_T = @ECHO_T@ > EGREP = @EGREP@ >+ETAGS = @ETAGS@ > EXEEXT = @EXEEXT@ > FGREP = @FGREP@ >+FILECMD = @FILECMD@ > GETOPT_H = @GETOPT_H@ > GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ > GMSGFMT = @GMSGFMT@ >@@ -340,6 +342,7 @@ > PREFERABLY_POSIX_SHELL = @PREFERABLY_POSIX_SHELL@ > PTHREAD_CC = @PTHREAD_CC@ > PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ >+PTHREAD_CXX = @PTHREAD_CXX@ > PTHREAD_LIBS = @PTHREAD_LIBS@ > RANLIB = @RANLIB@ > RC = @RC@ >@@ -398,6 +401,7 @@ > prefix = @prefix@ > program_transform_name = @program_transform_name@ > psdir = @psdir@ >+runstatedir = @runstatedir@ > sbindir = @sbindir@ > sharedstatedir = @sharedstatedir@ > srcdir = @srcdir@ >@@ -739,7 +743,6 @@ > > distclean-tags: > -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags >- > distdir: $(BUILT_SOURCES) > $(MAKE) $(AM_MAKEFLAGS) distdir-am > >diff -ur xz-5.2.5/tests/Makefile.am xz-5.4.3/tests/Makefile.am >--- xz-5.2.5/tests/Makefile.am 2020-03-17 17:28:54 >+++ xz-5.4.3/tests/Makefile.am 2023-05-04 17:21:05 >@@ -7,9 +7,16 @@ > > EXTRA_DIST = \ > files \ >+ ossfuzz \ >+ tuktest.h \ > tests.h \ > test_files.sh \ > test_compress.sh \ >+ test_compress_prepared_bcj_sparc \ >+ test_compress_prepared_bcj_x86 \ >+ test_compress_generated_abc \ >+ test_compress_generated_random \ >+ test_compress_generated_text \ > test_scripts.sh \ > bcj_test.c \ > compress_prepared_bcj_sparc \ >@@ -19,6 +26,7 @@ > AM_CPPFLAGS = \ > -I$(top_srcdir)/src/common \ > -I$(top_srcdir)/src/liblzma/api \ >+ -I$(top_srcdir)/src/liblzma \ > -I$(top_builddir)/lib > > LDADD = $(top_builddir)/src/liblzma/liblzma.la >@@ -32,21 +40,37 @@ > check_PROGRAMS = \ > create_compress_files \ > test_check \ >+ test_hardware \ > test_stream_flags \ > test_filter_flags \ >+ test_filter_str \ > test_block_header \ > test_index \ >- test_bcj_exact_size >+ test_index_hash \ >+ test_bcj_exact_size \ >+ test_memlimit \ >+ test_lzip_decoder \ >+ test_vli > > TESTS = \ > test_check \ >+ test_hardware \ > test_stream_flags \ > test_filter_flags \ >+ test_filter_str \ > test_block_header \ > test_index \ >+ test_index_hash \ > test_bcj_exact_size \ >+ test_memlimit \ >+ test_lzip_decoder \ >+ test_vli \ > test_files.sh \ >- test_compress.sh >+ test_compress_prepared_bcj_sparc \ >+ test_compress_prepared_bcj_x86 \ >+ test_compress_generated_abc \ >+ test_compress_generated_random \ >+ test_compress_generated_text > > if COND_SCRIPTS > TESTS += test_scripts.sh >diff -ur xz-5.2.5/tests/Makefile.in xz-5.4.3/tests/Makefile.in >--- xz-5.2.5/tests/Makefile.in 2020-03-17 17:29:36 >+++ xz-5.4.3/tests/Makefile.in 2023-05-04 17:31:30 >@@ -1,7 +1,7 @@ >-# Makefile.in generated by automake 1.16.1 from Makefile.am. >+# Makefile.in generated by automake 1.16.5 from Makefile.am. > # @configure_input@ > >-# Copyright (C) 1994-2018 Free Software Foundation, Inc. >+# Copyright (C) 1994-2021 Free Software Foundation, Inc. > > # This Makefile.in is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, >@@ -89,13 +89,22 @@ > host_triplet = @host@ > @COND_GNULIB_TRUE@am__append_1 = $(top_builddir)/lib/libgnu.a > check_PROGRAMS = create_compress_files$(EXEEXT) test_check$(EXEEXT) \ >- test_stream_flags$(EXEEXT) test_filter_flags$(EXEEXT) \ >+ test_hardware$(EXEEXT) test_stream_flags$(EXEEXT) \ >+ test_filter_flags$(EXEEXT) test_filter_str$(EXEEXT) \ > test_block_header$(EXEEXT) test_index$(EXEEXT) \ >- test_bcj_exact_size$(EXEEXT) >-TESTS = test_check$(EXEEXT) test_stream_flags$(EXEEXT) \ >- test_filter_flags$(EXEEXT) test_block_header$(EXEEXT) \ >- test_index$(EXEEXT) test_bcj_exact_size$(EXEEXT) test_files.sh \ >- test_compress.sh $(am__append_2) >+ test_index_hash$(EXEEXT) test_bcj_exact_size$(EXEEXT) \ >+ test_memlimit$(EXEEXT) test_lzip_decoder$(EXEEXT) \ >+ test_vli$(EXEEXT) >+TESTS = test_check$(EXEEXT) test_hardware$(EXEEXT) \ >+ test_stream_flags$(EXEEXT) test_filter_flags$(EXEEXT) \ >+ test_filter_str$(EXEEXT) test_block_header$(EXEEXT) \ >+ test_index$(EXEEXT) test_index_hash$(EXEEXT) \ >+ test_bcj_exact_size$(EXEEXT) test_memlimit$(EXEEXT) \ >+ test_lzip_decoder$(EXEEXT) test_vli$(EXEEXT) test_files.sh \ >+ test_compress_prepared_bcj_sparc \ >+ test_compress_prepared_bcj_x86 test_compress_generated_abc \ >+ test_compress_generated_random test_compress_generated_text \ >+ $(am__append_2) > @COND_SCRIPTS_TRUE@am__append_2 = test_scripts.sh > subdir = tests > ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 >@@ -157,17 +166,48 @@ > test_filter_flags_DEPENDENCIES = \ > $(top_builddir)/src/liblzma/liblzma.la $(am__append_1) \ > $(am__DEPENDENCIES_1) >+test_filter_str_SOURCES = test_filter_str.c >+test_filter_str_OBJECTS = test_filter_str.$(OBJEXT) >+test_filter_str_LDADD = $(LDADD) >+test_filter_str_DEPENDENCIES = $(top_builddir)/src/liblzma/liblzma.la \ >+ $(am__append_1) $(am__DEPENDENCIES_1) >+test_hardware_SOURCES = test_hardware.c >+test_hardware_OBJECTS = test_hardware.$(OBJEXT) >+test_hardware_LDADD = $(LDADD) >+test_hardware_DEPENDENCIES = $(top_builddir)/src/liblzma/liblzma.la \ >+ $(am__append_1) $(am__DEPENDENCIES_1) > test_index_SOURCES = test_index.c > test_index_OBJECTS = test_index.$(OBJEXT) > test_index_LDADD = $(LDADD) > test_index_DEPENDENCIES = $(top_builddir)/src/liblzma/liblzma.la \ > $(am__append_1) $(am__DEPENDENCIES_1) >+test_index_hash_SOURCES = test_index_hash.c >+test_index_hash_OBJECTS = test_index_hash.$(OBJEXT) >+test_index_hash_LDADD = $(LDADD) >+test_index_hash_DEPENDENCIES = $(top_builddir)/src/liblzma/liblzma.la \ >+ $(am__append_1) $(am__DEPENDENCIES_1) >+test_lzip_decoder_SOURCES = test_lzip_decoder.c >+test_lzip_decoder_OBJECTS = test_lzip_decoder.$(OBJEXT) >+test_lzip_decoder_LDADD = $(LDADD) >+test_lzip_decoder_DEPENDENCIES = \ >+ $(top_builddir)/src/liblzma/liblzma.la $(am__append_1) \ >+ $(am__DEPENDENCIES_1) >+test_memlimit_SOURCES = test_memlimit.c >+test_memlimit_OBJECTS = test_memlimit.$(OBJEXT) >+test_memlimit_LDADD = $(LDADD) >+test_memlimit_DEPENDENCIES = $(top_builddir)/src/liblzma/liblzma.la \ >+ $(am__append_1) $(am__DEPENDENCIES_1) > test_stream_flags_SOURCES = test_stream_flags.c > test_stream_flags_OBJECTS = test_stream_flags.$(OBJEXT) > test_stream_flags_LDADD = $(LDADD) > test_stream_flags_DEPENDENCIES = \ > $(top_builddir)/src/liblzma/liblzma.la $(am__append_1) \ > $(am__DEPENDENCIES_1) >+test_vli_SOURCES = test_vli.c >+test_vli_OBJECTS = test_vli.$(OBJEXT) >+test_vli_LDADD = $(LDADD) >+test_vli_DEPENDENCIES = $(top_builddir)/src/liblzma/liblzma.la \ >+ $(am__append_1) $(am__DEPENDENCIES_1) > AM_V_P = $(am__v_P_@AM_V@) > am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) > am__v_P_0 = false >@@ -186,8 +226,11 @@ > am__depfiles_remade = ./$(DEPDIR)/create_compress_files.Po \ > ./$(DEPDIR)/test_bcj_exact_size.Po \ > ./$(DEPDIR)/test_block_header.Po ./$(DEPDIR)/test_check.Po \ >- ./$(DEPDIR)/test_filter_flags.Po ./$(DEPDIR)/test_index.Po \ >- ./$(DEPDIR)/test_stream_flags.Po >+ ./$(DEPDIR)/test_filter_flags.Po \ >+ ./$(DEPDIR)/test_filter_str.Po ./$(DEPDIR)/test_hardware.Po \ >+ ./$(DEPDIR)/test_index.Po ./$(DEPDIR)/test_index_hash.Po \ >+ ./$(DEPDIR)/test_lzip_decoder.Po ./$(DEPDIR)/test_memlimit.Po \ >+ ./$(DEPDIR)/test_stream_flags.Po ./$(DEPDIR)/test_vli.Po > am__mv = mv -f > COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ > $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) >@@ -209,10 +252,14 @@ > am__v_CCLD_1 = > SOURCES = create_compress_files.c test_bcj_exact_size.c \ > test_block_header.c test_check.c test_filter_flags.c \ >- test_index.c test_stream_flags.c >+ test_filter_str.c test_hardware.c test_index.c \ >+ test_index_hash.c test_lzip_decoder.c test_memlimit.c \ >+ test_stream_flags.c test_vli.c > DIST_SOURCES = create_compress_files.c test_bcj_exact_size.c \ > test_block_header.c test_check.c test_filter_flags.c \ >- test_index.c test_stream_flags.c >+ test_filter_str.c test_hardware.c test_index.c \ >+ test_index_hash.c test_lzip_decoder.c test_memlimit.c \ >+ test_stream_flags.c test_vli.c > am__can_run_installinfo = \ > case $$AM_UPDATE_INFO_DIR in \ > n|no|NO) false;; \ >@@ -235,8 +282,6 @@ > unique=`for i in $$list; do \ > if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ > done | $(am__uniquify_input)` >-ETAGS = etags >-CTAGS = ctags > am__tty_colors_dummy = \ > mgn= red= grn= lgn= blu= brg= std=; \ > am__color_tests=no >@@ -259,8 +304,192 @@ > std='[m'; \ > fi; \ > } >+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; >+am__vpath_adj = case $$p in \ >+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ >+ *) f=$$p;; \ >+ esac; >+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; >+am__install_max = 40 >+am__nobase_strip_setup = \ >+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` >+am__nobase_strip = \ >+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" >+am__nobase_list = $(am__nobase_strip_setup); \ >+ for p in $$list; do echo "$$p $$p"; done | \ >+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ >+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ >+ if (++n[$$2] == $(am__install_max)) \ >+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ >+ END { for (dir in files) print dir, files[dir] }' >+am__base_list = \ >+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ >+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' >+am__uninstall_files_from_dir = { \ >+ test -z "$$files" \ >+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ >+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ >+ $(am__cd) "$$dir" && rm -f $$files; }; \ >+ } >+am__recheck_rx = ^[ ]*:recheck:[ ]* >+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* >+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* >+# A command that, given a newline-separated list of test names on the >+# standard input, print the name of the tests that are to be re-run >+# upon "make recheck". >+am__list_recheck_tests = $(AWK) '{ \ >+ recheck = 1; \ >+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ >+ { \ >+ if (rc < 0) \ >+ { \ >+ if ((getline line2 < ($$0 ".log")) < 0) \ >+ recheck = 0; \ >+ break; \ >+ } \ >+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ >+ { \ >+ recheck = 0; \ >+ break; \ >+ } \ >+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ >+ { \ >+ break; \ >+ } \ >+ }; \ >+ if (recheck) \ >+ print $$0; \ >+ close ($$0 ".trs"); \ >+ close ($$0 ".log"); \ >+}' >+# A command that, given a newline-separated list of test names on the >+# standard input, create the global log from their .trs and .log files. >+am__create_global_log = $(AWK) ' \ >+function fatal(msg) \ >+{ \ >+ print "fatal: making $@: " msg | "cat >&2"; \ >+ exit 1; \ >+} \ >+function rst_section(header) \ >+{ \ >+ print header; \ >+ len = length(header); \ >+ for (i = 1; i <= len; i = i + 1) \ >+ printf "="; \ >+ printf "\n\n"; \ >+} \ >+{ \ >+ copy_in_global_log = 1; \ >+ global_test_result = "RUN"; \ >+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ >+ { \ >+ if (rc < 0) \ >+ fatal("failed to read from " $$0 ".trs"); \ >+ if (line ~ /$(am__global_test_result_rx)/) \ >+ { \ >+ sub("$(am__global_test_result_rx)", "", line); \ >+ sub("[ ]*$$", "", line); \ >+ global_test_result = line; \ >+ } \ >+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ >+ copy_in_global_log = 0; \ >+ }; \ >+ if (copy_in_global_log) \ >+ { \ >+ rst_section(global_test_result ": " $$0); \ >+ while ((rc = (getline line < ($$0 ".log"))) != 0) \ >+ { \ >+ if (rc < 0) \ >+ fatal("failed to read from " $$0 ".log"); \ >+ print line; \ >+ }; \ >+ printf "\n"; \ >+ }; \ >+ close ($$0 ".trs"); \ >+ close ($$0 ".log"); \ >+}' >+# Restructured Text title. >+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } >+# Solaris 10 'make', and several other traditional 'make' implementations, >+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it >+# by disabling -e (using the XSI extension "set +e") if it's set. >+am__sh_e_setup = case $$- in *e*) set +e;; esac >+# Default flags passed to test drivers. >+am__common_driver_flags = \ >+ --color-tests "$$am__color_tests" \ >+ --enable-hard-errors "$$am__enable_hard_errors" \ >+ --expect-failure "$$am__expect_failure" >+# To be inserted before the command running the test. Creates the >+# directory for the log if needed. Stores in $dir the directory >+# containing $f, in $tst the test, in $log the log. Executes the >+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and >+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that >+# will run the test scripts (or their associated LOG_COMPILER, if >+# thy have one). >+am__check_pre = \ >+$(am__sh_e_setup); \ >+$(am__vpath_adj_setup) $(am__vpath_adj) \ >+$(am__tty_colors); \ >+srcdir=$(srcdir); export srcdir; \ >+case "$@" in \ >+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ >+ *) am__odir=.;; \ >+esac; \ >+test "x$$am__odir" = x"." || test -d "$$am__odir" \ >+ || $(MKDIR_P) "$$am__odir" || exit $$?; \ >+if test -f "./$$f"; then dir=./; \ >+elif test -f "$$f"; then dir=; \ >+else dir="$(srcdir)/"; fi; \ >+tst=$$dir$$f; log='$@'; \ >+if test -n '$(DISABLE_HARD_ERRORS)'; then \ >+ am__enable_hard_errors=no; \ >+else \ >+ am__enable_hard_errors=yes; \ >+fi; \ >+case " $(XFAIL_TESTS) " in \ >+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ >+ am__expect_failure=yes;; \ >+ *) \ >+ am__expect_failure=no;; \ >+esac; \ >+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) >+# A shell command to get the names of the tests scripts with any registered >+# extension removed (i.e., equivalently, the names of the test logs, with >+# the '.log' extension removed). The result is saved in the shell variable >+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, >+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", >+# since that might cause problem with VPATH rewrites for suffix-less tests. >+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. >+am__set_TESTS_bases = \ >+ bases='$(TEST_LOGS)'; \ >+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ >+ bases=`echo $$bases` >+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)' >+RECHECK_LOGS = $(TEST_LOGS) >+AM_RECURSIVE_TARGETS = check recheck >+TEST_SUITE_LOG = test-suite.log >+TEST_EXTENSIONS = @EXEEXT@ .test >+LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver >+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) >+am__set_b = \ >+ case '$@' in \ >+ */*) \ >+ case '$*' in \ >+ */*) b='$*';; \ >+ *) b=`echo '$@' | sed 's/\.log$$//'`; \ >+ esac;; \ >+ *) \ >+ b='$*';; \ >+ esac >+am__test_logs1 = $(TESTS:=.log) >+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) >+TEST_LOGS = $(am__test_logs2:.test.log=.log) >+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver >+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ >+ $(TEST_LOG_FLAGS) > am__DIST_COMMON = $(srcdir)/Makefile.in \ >- $(top_srcdir)/build-aux/depcomp >+ $(top_srcdir)/build-aux/depcomp \ >+ $(top_srcdir)/build-aux/test-driver > DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) > ACLOCAL = @ACLOCAL@ > AMTAR = @AMTAR@ >@@ -282,6 +511,8 @@ > CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ > CPP = @CPP@ > CPPFLAGS = @CPPFLAGS@ >+CSCOPE = @CSCOPE@ >+CTAGS = @CTAGS@ > CYGPATH_W = @CYGPATH_W@ > DEFS = @DEFS@ > DEPDIR = @DEPDIR@ >@@ -292,8 +523,10 @@ > ECHO_N = @ECHO_N@ > ECHO_T = @ECHO_T@ > EGREP = @EGREP@ >+ETAGS = @ETAGS@ > EXEEXT = @EXEEXT@ > FGREP = @FGREP@ >+FILECMD = @FILECMD@ > GETOPT_H = @GETOPT_H@ > GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ > GMSGFMT = @GMSGFMT@ >@@ -346,6 +579,7 @@ > PREFERABLY_POSIX_SHELL = @PREFERABLY_POSIX_SHELL@ > PTHREAD_CC = @PTHREAD_CC@ > PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ >+PTHREAD_CXX = @PTHREAD_CXX@ > PTHREAD_LIBS = @PTHREAD_LIBS@ > RANLIB = @RANLIB@ > RC = @RC@ >@@ -404,6 +638,7 @@ > prefix = @prefix@ > program_transform_name = @program_transform_name@ > psdir = @psdir@ >+runstatedir = @runstatedir@ > sbindir = @sbindir@ > sharedstatedir = @sharedstatedir@ > srcdir = @srcdir@ >@@ -415,9 +650,16 @@ > xz = @xz@ > EXTRA_DIST = \ > files \ >+ ossfuzz \ >+ tuktest.h \ > tests.h \ > test_files.sh \ > test_compress.sh \ >+ test_compress_prepared_bcj_sparc \ >+ test_compress_prepared_bcj_x86 \ >+ test_compress_generated_abc \ >+ test_compress_generated_random \ >+ test_compress_generated_text \ > test_scripts.sh \ > bcj_test.c \ > compress_prepared_bcj_sparc \ >@@ -427,6 +669,7 @@ > AM_CPPFLAGS = \ > -I$(top_srcdir)/src/common \ > -I$(top_srcdir)/src/liblzma/api \ >+ -I$(top_srcdir)/src/liblzma \ > -I$(top_builddir)/lib > > LDADD = $(top_builddir)/src/liblzma/liblzma.la $(am__append_1) \ >@@ -434,7 +677,7 @@ > all: all-am > > .SUFFIXES: >-.SUFFIXES: .c .lo .o .obj >+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs > $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) > @for dep in $?; do \ > case '$(am__configure_deps)' in \ >@@ -494,14 +737,38 @@ > @rm -f test_filter_flags$(EXEEXT) > $(AM_V_CCLD)$(LINK) $(test_filter_flags_OBJECTS) $(test_filter_flags_LDADD) $(LIBS) > >+test_filter_str$(EXEEXT): $(test_filter_str_OBJECTS) $(test_filter_str_DEPENDENCIES) $(EXTRA_test_filter_str_DEPENDENCIES) >+ @rm -f test_filter_str$(EXEEXT) >+ $(AM_V_CCLD)$(LINK) $(test_filter_str_OBJECTS) $(test_filter_str_LDADD) $(LIBS) >+ >+test_hardware$(EXEEXT): $(test_hardware_OBJECTS) $(test_hardware_DEPENDENCIES) $(EXTRA_test_hardware_DEPENDENCIES) >+ @rm -f test_hardware$(EXEEXT) >+ $(AM_V_CCLD)$(LINK) $(test_hardware_OBJECTS) $(test_hardware_LDADD) $(LIBS) >+ > test_index$(EXEEXT): $(test_index_OBJECTS) $(test_index_DEPENDENCIES) $(EXTRA_test_index_DEPENDENCIES) > @rm -f test_index$(EXEEXT) > $(AM_V_CCLD)$(LINK) $(test_index_OBJECTS) $(test_index_LDADD) $(LIBS) > >+test_index_hash$(EXEEXT): $(test_index_hash_OBJECTS) $(test_index_hash_DEPENDENCIES) $(EXTRA_test_index_hash_DEPENDENCIES) >+ @rm -f test_index_hash$(EXEEXT) >+ $(AM_V_CCLD)$(LINK) $(test_index_hash_OBJECTS) $(test_index_hash_LDADD) $(LIBS) >+ >+test_lzip_decoder$(EXEEXT): $(test_lzip_decoder_OBJECTS) $(test_lzip_decoder_DEPENDENCIES) $(EXTRA_test_lzip_decoder_DEPENDENCIES) >+ @rm -f test_lzip_decoder$(EXEEXT) >+ $(AM_V_CCLD)$(LINK) $(test_lzip_decoder_OBJECTS) $(test_lzip_decoder_LDADD) $(LIBS) >+ >+test_memlimit$(EXEEXT): $(test_memlimit_OBJECTS) $(test_memlimit_DEPENDENCIES) $(EXTRA_test_memlimit_DEPENDENCIES) >+ @rm -f test_memlimit$(EXEEXT) >+ $(AM_V_CCLD)$(LINK) $(test_memlimit_OBJECTS) $(test_memlimit_LDADD) $(LIBS) >+ > test_stream_flags$(EXEEXT): $(test_stream_flags_OBJECTS) $(test_stream_flags_DEPENDENCIES) $(EXTRA_test_stream_flags_DEPENDENCIES) > @rm -f test_stream_flags$(EXEEXT) > $(AM_V_CCLD)$(LINK) $(test_stream_flags_OBJECTS) $(test_stream_flags_LDADD) $(LIBS) > >+test_vli$(EXEEXT): $(test_vli_OBJECTS) $(test_vli_DEPENDENCIES) $(EXTRA_test_vli_DEPENDENCIES) >+ @rm -f test_vli$(EXEEXT) >+ $(AM_V_CCLD)$(LINK) $(test_vli_OBJECTS) $(test_vli_LDADD) $(LIBS) >+ > mostlyclean-compile: > -rm -f *.$(OBJEXT) > >@@ -513,8 +780,14 @@ > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_block_header.Po@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_check.Po@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_filter_flags.Po@am__quote@ # am--include-marker >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_filter_str.Po@am__quote@ # am--include-marker >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_hardware.Po@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_index.Po@am__quote@ # am--include-marker >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_index_hash.Po@am__quote@ # am--include-marker >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_lzip_decoder.Po@am__quote@ # am--include-marker >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_memlimit.Po@am__quote@ # am--include-marker > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_stream_flags.Po@am__quote@ # am--include-marker >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_vli.Po@am__quote@ # am--include-marker > > $(am__depfiles_remade): > @$(MKDIR_P) $(@D) >@@ -601,99 +874,294 @@ > distclean-tags: > -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags > >-check-TESTS: $(TESTS) >- @failed=0; all=0; xfail=0; xpass=0; skip=0; \ >- srcdir=$(srcdir); export srcdir; \ >- list=' $(TESTS) '; \ >- $(am__tty_colors); \ >- if test -n "$$list"; then \ >- for tst in $$list; do \ >- if test -f ./$$tst; then dir=./; \ >- elif test -f $$tst; then dir=; \ >- else dir="$(srcdir)/"; fi; \ >- if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ >- all=`expr $$all + 1`; \ >- case " $(XFAIL_TESTS) " in \ >- *[\ \ ]$$tst[\ \ ]*) \ >- xpass=`expr $$xpass + 1`; \ >- failed=`expr $$failed + 1`; \ >- col=$$red; res=XPASS; \ >- ;; \ >- *) \ >- col=$$grn; res=PASS; \ >- ;; \ >- esac; \ >- elif test $$? -ne 77; then \ >- all=`expr $$all + 1`; \ >- case " $(XFAIL_TESTS) " in \ >- *[\ \ ]$$tst[\ \ ]*) \ >- xfail=`expr $$xfail + 1`; \ >- col=$$lgn; res=XFAIL; \ >- ;; \ >- *) \ >- failed=`expr $$failed + 1`; \ >- col=$$red; res=FAIL; \ >- ;; \ >- esac; \ >- else \ >- skip=`expr $$skip + 1`; \ >- col=$$blu; res=SKIP; \ >- fi; \ >- echo "$${col}$$res$${std}: $$tst"; \ >- done; \ >- if test "$$all" -eq 1; then \ >- tests="test"; \ >- All=""; \ >- else \ >- tests="tests"; \ >- All="All "; \ >+# Recover from deleted '.trs' file; this should ensure that >+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create >+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells >+# to avoid problems with "make -n". >+.log.trs: >+ rm -f $< $@ >+ $(MAKE) $(AM_MAKEFLAGS) $< >+ >+# Leading 'am--fnord' is there to ensure the list of targets does not >+# expand to empty, as could happen e.g. with make check TESTS=''. >+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) >+am--force-recheck: >+ @: >+ >+$(TEST_SUITE_LOG): $(TEST_LOGS) >+ @$(am__set_TESTS_bases); \ >+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ >+ redo_bases=`for i in $$bases; do \ >+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ >+ done`; \ >+ if test -n "$$redo_bases"; then \ >+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ >+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ >+ if $(am__make_dryrun); then :; else \ >+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ > fi; \ >- if test "$$failed" -eq 0; then \ >- if test "$$xfail" -eq 0; then \ >- banner="$$All$$all $$tests passed"; \ >+ fi; \ >+ if test -n "$$am__remaking_logs"; then \ >+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ >+ "recursion detected" >&2; \ >+ elif test -n "$$redo_logs"; then \ >+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ >+ fi; \ >+ if $(am__make_dryrun); then :; else \ >+ st=0; \ >+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ >+ for i in $$redo_bases; do \ >+ test -f $$i.trs && test -r $$i.trs \ >+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ >+ test -f $$i.log && test -r $$i.log \ >+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ >+ done; \ >+ test $$st -eq 0 || exit 1; \ >+ fi >+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ >+ ws='[ ]'; \ >+ results=`for b in $$bases; do echo $$b.trs; done`; \ >+ test -n "$$results" || results=/dev/null; \ >+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ >+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ >+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ >+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ >+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ >+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ >+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ >+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ >+ success=true; \ >+ else \ >+ success=false; \ >+ fi; \ >+ br='==================='; br=$$br$$br$$br$$br; \ >+ result_count () \ >+ { \ >+ if test x"$$1" = x"--maybe-color"; then \ >+ maybe_colorize=yes; \ >+ elif test x"$$1" = x"--no-color"; then \ >+ maybe_colorize=no; \ > else \ >- if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ >- banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ >+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ > fi; \ >- else \ >- if test "$$xpass" -eq 0; then \ >- banner="$$failed of $$all $$tests failed"; \ >+ shift; \ >+ desc=$$1 count=$$2; \ >+ if test $$maybe_colorize = yes && test $$count -gt 0; then \ >+ color_start=$$3 color_end=$$std; \ > else \ >- if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ >- banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ >+ color_start= color_end=; \ > fi; \ >- fi; \ >- dashes="$$banner"; \ >- skipped=""; \ >- if test "$$skip" -ne 0; then \ >- if test "$$skip" -eq 1; then \ >- skipped="($$skip test was not run)"; \ >- else \ >- skipped="($$skip tests were not run)"; \ >- fi; \ >- test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ >- dashes="$$skipped"; \ >- fi; \ >- report=""; \ >- if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ >- report="Please report to $(PACKAGE_BUGREPORT)"; \ >- test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ >- dashes="$$report"; \ >- fi; \ >- dashes=`echo "$$dashes" | sed s/./=/g`; \ >- if test "$$failed" -eq 0; then \ >- col="$$grn"; \ >- else \ >- col="$$red"; \ >- fi; \ >- echo "$${col}$$dashes$${std}"; \ >- echo "$${col}$$banner$${std}"; \ >- test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ >- test -z "$$report" || echo "$${col}$$report$${std}"; \ >- echo "$${col}$$dashes$${std}"; \ >- test "$$failed" -eq 0; \ >- else :; fi >+ echo "$${color_start}# $$desc $$count$${color_end}"; \ >+ }; \ >+ create_testsuite_report () \ >+ { \ >+ result_count $$1 "TOTAL:" $$all "$$brg"; \ >+ result_count $$1 "PASS: " $$pass "$$grn"; \ >+ result_count $$1 "SKIP: " $$skip "$$blu"; \ >+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ >+ result_count $$1 "FAIL: " $$fail "$$red"; \ >+ result_count $$1 "XPASS:" $$xpass "$$red"; \ >+ result_count $$1 "ERROR:" $$error "$$mgn"; \ >+ }; \ >+ { \ >+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ >+ $(am__rst_title); \ >+ create_testsuite_report --no-color; \ >+ echo; \ >+ echo ".. contents:: :depth: 2"; \ >+ echo; \ >+ for b in $$bases; do echo $$b; done \ >+ | $(am__create_global_log); \ >+ } >$(TEST_SUITE_LOG).tmp || exit 1; \ >+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ >+ if $$success; then \ >+ col="$$grn"; \ >+ else \ >+ col="$$red"; \ >+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ >+ fi; \ >+ echo "$${col}$$br$${std}"; \ >+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \ >+ echo "$${col}$$br$${std}"; \ >+ create_testsuite_report --maybe-color; \ >+ echo "$$col$$br$$std"; \ >+ if $$success; then :; else \ >+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ >+ if test -n "$(PACKAGE_BUGREPORT)"; then \ >+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ >+ fi; \ >+ echo "$$col$$br$$std"; \ >+ fi; \ >+ $$success || exit 1 > >+check-TESTS: $(check_PROGRAMS) >+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list >+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list >+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) >+ @set +e; $(am__set_TESTS_bases); \ >+ log_list=`for i in $$bases; do echo $$i.log; done`; \ >+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ >+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ >+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ >+ exit $$?; >+recheck: all $(check_PROGRAMS) >+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) >+ @set +e; $(am__set_TESTS_bases); \ >+ bases=`for i in $$bases; do echo $$i; done \ >+ | $(am__list_recheck_tests)` || exit 1; \ >+ log_list=`for i in $$bases; do echo $$i.log; done`; \ >+ log_list=`echo $$log_list`; \ >+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ >+ am__force_recheck=am--force-recheck \ >+ TEST_LOGS="$$log_list"; \ >+ exit $$? >+test_check.log: test_check$(EXEEXT) >+ @p='test_check$(EXEEXT)'; \ >+ b='test_check'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_hardware.log: test_hardware$(EXEEXT) >+ @p='test_hardware$(EXEEXT)'; \ >+ b='test_hardware'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_stream_flags.log: test_stream_flags$(EXEEXT) >+ @p='test_stream_flags$(EXEEXT)'; \ >+ b='test_stream_flags'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_filter_flags.log: test_filter_flags$(EXEEXT) >+ @p='test_filter_flags$(EXEEXT)'; \ >+ b='test_filter_flags'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_filter_str.log: test_filter_str$(EXEEXT) >+ @p='test_filter_str$(EXEEXT)'; \ >+ b='test_filter_str'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_block_header.log: test_block_header$(EXEEXT) >+ @p='test_block_header$(EXEEXT)'; \ >+ b='test_block_header'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_index.log: test_index$(EXEEXT) >+ @p='test_index$(EXEEXT)'; \ >+ b='test_index'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_index_hash.log: test_index_hash$(EXEEXT) >+ @p='test_index_hash$(EXEEXT)'; \ >+ b='test_index_hash'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_bcj_exact_size.log: test_bcj_exact_size$(EXEEXT) >+ @p='test_bcj_exact_size$(EXEEXT)'; \ >+ b='test_bcj_exact_size'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_memlimit.log: test_memlimit$(EXEEXT) >+ @p='test_memlimit$(EXEEXT)'; \ >+ b='test_memlimit'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_lzip_decoder.log: test_lzip_decoder$(EXEEXT) >+ @p='test_lzip_decoder$(EXEEXT)'; \ >+ b='test_lzip_decoder'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_vli.log: test_vli$(EXEEXT) >+ @p='test_vli$(EXEEXT)'; \ >+ b='test_vli'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_files.sh.log: test_files.sh >+ @p='test_files.sh'; \ >+ b='test_files.sh'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_compress_prepared_bcj_sparc.log: test_compress_prepared_bcj_sparc >+ @p='test_compress_prepared_bcj_sparc'; \ >+ b='test_compress_prepared_bcj_sparc'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_compress_prepared_bcj_x86.log: test_compress_prepared_bcj_x86 >+ @p='test_compress_prepared_bcj_x86'; \ >+ b='test_compress_prepared_bcj_x86'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_compress_generated_abc.log: test_compress_generated_abc >+ @p='test_compress_generated_abc'; \ >+ b='test_compress_generated_abc'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_compress_generated_random.log: test_compress_generated_random >+ @p='test_compress_generated_random'; \ >+ b='test_compress_generated_random'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_compress_generated_text.log: test_compress_generated_text >+ @p='test_compress_generated_text'; \ >+ b='test_compress_generated_text'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+test_scripts.sh.log: test_scripts.sh >+ @p='test_scripts.sh'; \ >+ b='test_scripts.sh'; \ >+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+.test.log: >+ @p='$<'; \ >+ $(am__set_b); \ >+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ >+ --log-file $$b.log --trs-file $$b.trs \ >+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ >+ "$$tst" $(AM_TESTS_FD_REDIRECT) >+@am__EXEEXT_TRUE@.test$(EXEEXT).log: >+@am__EXEEXT_TRUE@ @p='$<'; \ >+@am__EXEEXT_TRUE@ $(am__set_b); \ >+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ >+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ >+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ >+@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) > distdir: $(BUILT_SOURCES) > $(MAKE) $(AM_MAKEFLAGS) distdir-am > >@@ -753,6 +1221,9 @@ > "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ > fi > mostlyclean-generic: >+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) >+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) >+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) > > clean-generic: > >@@ -774,8 +1245,14 @@ > -rm -f ./$(DEPDIR)/test_block_header.Po > -rm -f ./$(DEPDIR)/test_check.Po > -rm -f ./$(DEPDIR)/test_filter_flags.Po >+ -rm -f ./$(DEPDIR)/test_filter_str.Po >+ -rm -f ./$(DEPDIR)/test_hardware.Po > -rm -f ./$(DEPDIR)/test_index.Po >+ -rm -f ./$(DEPDIR)/test_index_hash.Po >+ -rm -f ./$(DEPDIR)/test_lzip_decoder.Po >+ -rm -f ./$(DEPDIR)/test_memlimit.Po > -rm -f ./$(DEPDIR)/test_stream_flags.Po >+ -rm -f ./$(DEPDIR)/test_vli.Po > -rm -f Makefile > distclean-am: clean-am distclean-compile distclean-generic \ > distclean-tags >@@ -826,8 +1303,14 @@ > -rm -f ./$(DEPDIR)/test_block_header.Po > -rm -f ./$(DEPDIR)/test_check.Po > -rm -f ./$(DEPDIR)/test_filter_flags.Po >+ -rm -f ./$(DEPDIR)/test_filter_str.Po >+ -rm -f ./$(DEPDIR)/test_hardware.Po > -rm -f ./$(DEPDIR)/test_index.Po >+ -rm -f ./$(DEPDIR)/test_index_hash.Po >+ -rm -f ./$(DEPDIR)/test_lzip_decoder.Po >+ -rm -f ./$(DEPDIR)/test_memlimit.Po > -rm -f ./$(DEPDIR)/test_stream_flags.Po >+ -rm -f ./$(DEPDIR)/test_vli.Po > -rm -f Makefile > maintainer-clean-am: distclean-am maintainer-clean-generic > >@@ -860,7 +1343,8 @@ > install-strip installcheck installcheck-am installdirs \ > maintainer-clean maintainer-clean-generic mostlyclean \ > mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ >- pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am >+ pdf pdf-am ps ps-am recheck tags tags-am uninstall \ >+ uninstall-am > > .PRECIOUS: Makefile > >diff -ur xz-5.2.5/tests/create_compress_files.c xz-5.4.3/tests/create_compress_files.c >--- xz-5.2.5/tests/create_compress_files.c 2020-03-17 17:28:50 >+++ xz-5.4.3/tests/create_compress_files.c 2023-05-04 17:21:05 >@@ -17,10 +17,15 @@ > #include <stdio.h> > > >+// If a command-line argument was given, only create the file if its >+// name was specified on the command line. If no args were given then >+// all files are created. >+// > // Avoid re-creating the test files every time the tests are run. >-#define create_test(name) \ >+#define maybe_create_test(argc, argv, name) \ > do { \ >- if (!file_exists("compress_generated_" #name)) { \ >+ if ((argc < 2 || strcmp(argv[1], "compress_generated_" #name) == 0) \ >+ && !file_exists("compress_generated_" #name)) { \ > FILE *file = file_create("compress_generated_" #name); \ > write_ ## name(file); \ > file_finish(file, "compress_generated_" #name); \ >@@ -53,7 +58,7 @@ > > if (file == NULL) { > perror(filename); >- exit(1); >+ exit(EXIT_FAILURE); > } > > return file; >@@ -68,7 +73,7 @@ > > if (ferror_fail || fclose_fail) { > perror(filename); >- exit(1); >+ exit(EXIT_FAILURE); > } > } > >@@ -80,7 +85,7 @@ > { > for (size_t i = 0; i < 12345; ++i) > if (fwrite("abc\n", 4, 1, file) != 1) >- exit(1); >+ exit(EXIT_FAILURE); > } > > >@@ -149,10 +154,10 @@ > > > int >-main(void) >+main(int argc, char **argv) > { >- create_test(abc); >- create_test(random); >- create_test(text); >- return 0; >+ maybe_create_test(argc, argv, abc); >+ maybe_create_test(argc, argv, random); >+ maybe_create_test(argc, argv, text); >+ return EXIT_SUCCESS; > } >diff -ur xz-5.2.5/tests/files/README xz-5.4.3/tests/files/README >--- xz-5.2.5/tests/files/README 2020-03-17 17:28:50 >+++ xz-5.4.3/tests/files/README 2023-05-04 17:21:05 >@@ -1,31 +1,31 @@ > >-.xz Test Files >----------------- >+.xz and .lzma Test Files >+------------------------ > > 0. Introduction > >- This directory contains bunch of files to test handling of .xz files >- in .xz decoder implementations. Many of the files have been created >- by hand with a hex editor, thus there is no better "source code" than >- the files themselves. All the test files (*.xz) and this README have >- been put into the public domain. >+ This directory contains bunch of files to test handling of .xz, >+ .lzma (LZMA_Alone), and .lz (lzip) files in decoder implementations. >+ Many of the files have been created by hand with a hex editor, thus >+ there is no better "source code" than the files themselves. All the >+ test files and this README have been put into the public domain. > > > 1. File Types > >- Good files (good-*.xz) must decode successfully without requiring >+ Good files (good-*) must decode successfully without requiring > a lot of CPU time or RAM. > >- Unsupported files (unsupported-*.xz) are good files, but headers >+ Unsupported files (unsupported-*) are good files, but headers > indicate features not supported by the current file format > specification. > >- Bad files (bad-*.xz) must cause the decoder to give an error. Like >- with the good files, these files must not require a lot of CPU time >- or RAM before they get detected to be broken. >+ Bad files (bad-*) must cause the decoder to give an error. Like >+ with the good files, these files must not require a lot of CPU >+ time or RAM before they get detected to be broken. > > >-2. Descriptions of Individual Files >+2. Descriptions of Individual .xz Files > > 2.1. Good Files > >@@ -69,10 +69,17 @@ > uncompressed file is compress_prepared_bcj_x86 found from the tests > directory. > >- good-1-sparc-lzma2.xz uses the SPARC filter and LZMA. The >+ good-1-sparc-lzma2.xz uses the SPARC filter and LZMA2. The > uncompressed file is compress_prepared_bcj_sparc found from the tests > directory. > >+ good-1-arm64-lzma2-1.xz uses the ARM64 filter and LZMA2. The >+ uncompressed data is constructed so that it tests integer >+ wrap around and sign extension. >+ >+ good-1-arm64-lzma2-2.xz is like good-1-arm64-lzma2-1.xz but with >+ non-zero start offset. XZ Embedded doesn't support this file. >+ > good-1-lzma2-1.xz has two LZMA2 chunks, of which the second sets > new properties. > >@@ -93,7 +100,12 @@ > > good-1-3delta-lzma2.xz has three Delta filters and LZMA2. > >+ good-1-empty-bcj-lzma2.xz has an empty Block that uses PowerPC BCJ >+ and LZMA2. liblzma from XZ Utils 5.0.1 and older may incorrectly >+ return LZMA_BUF_ERROR in some cases. See commit message >+ d8db706acb8316f9861abd432cfbe001dd6d0c5c for the details. > >+ > 2.2. Unsupported Files > > unsupported-check.xz uses Check ID 0x02 which isn't supported by >@@ -204,11 +216,28 @@ > file gets rejected specifically due to Unpadded Size having an invalid > value. > >+ bad-3-index-uncomp-overflow.xz has Index whose Uncompressed Size >+ fields have huge values whose sum exceeds the maximum allowed size >+ of 2^63 - 1 bytes. In this file the sum is exactly 2^64. >+ lzma_index_append() in liblzma <= 5.2.6 lacks the integer overflow >+ check for the uncompressed size and thus doesn't catch the error >+ when decoding the Index field in this file. This makes "xz -l" >+ not detect the error and will display 0 as the uncompressed size. >+ Note that regular decompression isn't affected by this bug because >+ it uses lzma_index_hash_append() instead. >+ > bad-2-compressed_data_padding.xz has non-null byte in the padding of > the Compressed Data field of the first Block. > > bad-1-check-crc32.xz has wrong Check (CRC32). > >+ bad-1-check-crc32-2.xz has Compressed Size and Uncompressed Size in >+ Block Header but wrong Check (CRC32) in the actual data. This file >+ differs by one byte from good-1-block_header-1.xz: the last byte of >+ the Check field is wrong. This file is useful for testing error >+ detection in the threaded decoder when a worker thread is configured >+ to pass input one byte at a time to the Block decoder. >+ > bad-1-check-crc64.xz has wrong Check (CRC64). > > bad-1-check-sha256.xz has wrong Check (SHA-256). >@@ -237,4 +266,144 @@ > > bad-1-lzma2-8.xz is like good-1-lzma2-4.xz but doesn't set new > properties in the third LZMA2 chunk. >+ >+ bad-1-lzma2-9.xz has LZMA2 stream that is truncated at the end of >+ a LZMA2 chunk (no end marker). The uncompressed size of the partial >+ LZMA2 stream exceeds the value stored in the Block Header. >+ >+ bad-1-lzma2-10.xz has LZMA2 stream that, from point of view of a >+ LZMA2 decoder, extends past the end of Block (and even the end of >+ the file). Uncompressed Size in Block Header is bigger than the >+ invalid LZMA2 stream may produce (even if a decoder reads until >+ the end of the file). The Check type is None to nullify certain >+ simple size-based sanity checks in a Block decoder. >+ >+ bad-1-lzma2-11.xz has LZMA2 stream that lacks the end of >+ payload marker. When Compressed Size bytes have been decoded, >+ Uncompressed Size bytes of output will have been produced but >+ the LZMA2 decoder doesn't indicate end of stream. >+ >+ >+3. Descriptions of Individual .lzma Files >+ >+3.1. Good Files >+ >+ good-unknown_size-with_eopm.lzma has unknown size in the header >+ and end of payload marker at the end. >+ >+ good-known_size-without_eopm.lzma has a known size in the header >+ and no end of payload marker at the end. >+ >+ good-known_size-with_eopm.lzma has a known size in the header >+ and end of payload marker at the end. XZ Utils 5.2.5 and older >+ will give an error at the end of the file after producing the >+ correct uncompressed output. >+ >+ >+3.2. Bad Files >+ >+ bad-unknown_size-without_eopm.lzma has unknown size in the header >+ but no end of payload marker at the end. This file might be seen >+ by a decoder as if it were truncated. >+ >+ bad-too_big_size-with_eopm.lzma has too big uncompressed size in >+ the header and the end of payload marker will be detected before >+ the specified number of bytes have been decoded. >+ >+ bad-too_small_size-without_eopm-1.lzma has too small uncompressed >+ size in the header. The decoder will look for end of payload marker >+ but instead find a literal that would produce more output. >+ >+ bad-too_small_size-without_eopm-2.lzma is like -1 above but instead >+ of a literal the problem occurs with a short repeated match. >+ >+ bad-too_small_size-without_eopm-3.lzma is like -1 above but instead >+ of a literal the problem occurs in the middle of a match. >+ >+ >+4. Descriptions of Individual .lz (lzip) Files >+ >+4.1. Good Files >+ >+ good-1-v0.lz contains a single version 0 member. lzip 1.17 and >+ *older* can decompress this; support for version 0 was removed >+ in lzip 1.18. >+ >+ good-1-v0-trailing-1.lz is like good-1-v0.lz but contains >+ trailing data that the decompressor must ignore. >+ >+ good-1-v1.lz contains a single version 1 member. lzip 1.3 and >+ newer can decompress this. >+ >+ good-1-v1-trailing-1.lz is like good-1-v1.lz but contains >+ trailing data that the decompressor must ignore. >+ >+ good-1-v1-trailing-2.lz is like good-1-v1.lz but contains >+ trailing data whose first three bytes match the .lz magic bytes. >+ With lzip >= 1.20 this file results in an error unless one uses >+ the command line option --loose-trailing. lzip 1.3 to 1.19 decode >+ this file successfully by default. XZ Utils uses the old behavior >+ because it allows lzma_code() to stop at the first byte of the >+ trailing data as long as the first byte isn't 0x4C (L in US-ASCII); >+ otherwise the first 1-3 bytes that equal to the magic bytes are >+ consumed and lost in lzma_code(), and this is visible in xz too: >+ >+ $ ( xz -dc ; cat ) < good-1-v1-trailing-2.lz >+ Hello >+ World! >+ Trailing garbage >+ >+ $ ( xz -dc --single-stream ; cat ) < good-1-v1-trailing-2.lz >+ Hello >+ World! >+ LZITrailing garbage >+ >+ good-2-v0-v1.lz contains two members of which the first is >+ version 0 and the second version 1. lzip versions 1.3 to 1.17 >+ (inclusive) can decompress this. >+ >+ good-2-v1-v0.lz contains two members of which the first is >+ version 1 and the second version 0. lzip versions 1.3 to 1.17 >+ (inclusive) can decompress this. >+ >+ good-2-v1-v1.lz contains two version 1 members. lzip versions 1.3 >+ and newer can decompress this. >+ >+ >+4.2. Unsupported Files >+ >+ unsupported-1-v234.lz is like good-1-v1.lz except the version >+ field has been set to 234 (0xEA) which, as of writing, isn't >+ defined or supported by any .lz implementation. >+ >+ >+4.3. Bad Files >+ >+ bad-1-v1-magic-1.lz is like good-1-v1.lz but the first magic byte >+ is wrong. >+ >+ bad-1-v1-magic-2.lz is like good-1-v1.lz but the last (fourth) >+ magic byte is wrong. >+ >+ bad-1-v1-dict-1.lz has too low value in the dictionary size field. >+ >+ bad-1-v1-dict-2.lz has too high value in the dictionary size field. >+ >+ bad-1-v1-crc32.lz has wrong CRC32 value. >+ >+ bad-1-v0-uncomp-size.lz is version 0 format with incorrect value >+ in the uncompressed size field. >+ >+ bad-1-v1-uncomp-size.lz is version 1 format with incorrect value >+ in the uncompressed size field. >+ >+ bad-1-v1-member-size.lz has incorrect value in the member size >+ field. >+ >+ bad-1-v1-trailing-magic.lz has the four .lz magic bytes as trailing >+ data. This should be detected as a truncated file and thus result >+ in an error. That is, the last four bytes of the file should not be >+ ignored as trailing garbage. lzip >= 1.18 matches this behavior >+ while older versions ignore the last four bytes and don't indicate >+ an error. > >Only in xz-5.4.3/tests/files: bad-1-check-crc32-2.xz >Only in xz-5.4.3/tests/files: bad-1-lzma2-10.xz >Only in xz-5.4.3/tests/files: bad-1-lzma2-11.xz >Only in xz-5.4.3/tests/files: bad-1-lzma2-9.xz >Only in xz-5.4.3/tests/files: bad-1-v0-uncomp-size.lz >Only in xz-5.4.3/tests/files: bad-1-v1-crc32.lz >Only in xz-5.4.3/tests/files: bad-1-v1-dict-1.lz >Only in xz-5.4.3/tests/files: bad-1-v1-dict-2.lz >Only in xz-5.4.3/tests/files: bad-1-v1-magic-1.lz >Only in xz-5.4.3/tests/files: bad-1-v1-magic-2.lz >Only in xz-5.4.3/tests/files: bad-1-v1-member-size.lz >Only in xz-5.4.3/tests/files: bad-1-v1-trailing-magic.lz >Only in xz-5.4.3/tests/files: bad-1-v1-uncomp-size.lz >Only in xz-5.4.3/tests/files: bad-3-index-uncomp-overflow.xz >Only in xz-5.4.3/tests/files: bad-too_big_size-with_eopm.lzma >Only in xz-5.4.3/tests/files: bad-too_small_size-without_eopm-1.lzma >Only in xz-5.4.3/tests/files: bad-too_small_size-without_eopm-2.lzma >Only in xz-5.4.3/tests/files: bad-too_small_size-without_eopm-3.lzma >Only in xz-5.4.3/tests/files: bad-unknown_size-without_eopm.lzma >Only in xz-5.4.3/tests/files: good-1-arm64-lzma2-1.xz >Only in xz-5.4.3/tests/files: good-1-arm64-lzma2-2.xz >Only in xz-5.4.3/tests/files: good-1-empty-bcj-lzma2.xz >Only in xz-5.4.3/tests/files: good-1-v0-trailing-1.lz >Only in xz-5.4.3/tests/files: good-1-v0.lz >Only in xz-5.4.3/tests/files: good-1-v1-trailing-1.lz >Only in xz-5.4.3/tests/files: good-1-v1-trailing-2.lz >Only in xz-5.4.3/tests/files: good-1-v1.lz >Only in xz-5.4.3/tests/files: good-2-v0-v1.lz >Only in xz-5.4.3/tests/files: good-2-v1-v0.lz >Only in xz-5.4.3/tests/files: good-2-v1-v1.lz >Only in xz-5.4.3/tests/files: good-known_size-with_eopm.lzma >Only in xz-5.4.3/tests/files: good-known_size-without_eopm.lzma >Only in xz-5.4.3/tests/files: good-unknown_size-with_eopm.lzma >Only in xz-5.4.3/tests/files: unsupported-1-v234.lz >Only in xz-5.4.3/tests: ossfuzz >diff -ur xz-5.2.5/tests/test_bcj_exact_size.c xz-5.4.3/tests/test_bcj_exact_size.c >--- xz-5.2.5/tests/test_bcj_exact_size.c 2020-03-17 17:28:50 >+++ xz-5.4.3/tests/test_bcj_exact_size.c 2023-05-04 17:21:05 >@@ -15,25 +15,33 @@ > #include "tests.h" > > >-/// Something to be compressed >-static const uint8_t in[16] = "0123456789ABCDEF"; >+static void >+test_exact_size(void) >+{ >+#if !defined(HAVE_ENCODERS) || !defined(HAVE_DECODERS) >+ assert_skip("Encoder or decoder support disabled"); >+#else >+ if (!lzma_filter_encoder_is_supported(LZMA_FILTER_POWERPC) >+ || !lzma_filter_decoder_is_supported( >+ LZMA_FILTER_POWERPC)) >+ assert_skip("PowerPC BCJ encoder and/or decoder " >+ "is disabled"); > >-/// in[] after compression >-static uint8_t compressed[1024]; >-static size_t compressed_size = 0; >+ // Something to be compressed >+ const uint8_t in[16] = "0123456789ABCDEF"; > >-/// Output buffer for decompressing compressed[] >-static uint8_t out[sizeof(in)]; >+ // in[] after compression >+ uint8_t compressed[1024]; >+ size_t compressed_size = 0; > >+ // Output buffer for decompressing compressed[] >+ uint8_t out[sizeof(in)]; > >-static void >-compress(void) >-{ > // Compress with PowerPC BCJ and LZMA2. PowerPC BCJ is used because > // it has fixed 4-byte alignment which makes triggering the potential > // bug easy. > lzma_options_lzma opt_lzma2; >- succeed(lzma_lzma_preset(&opt_lzma2, 0)); >+ assert_false(lzma_lzma_preset(&opt_lzma2, 0)); > > lzma_filter filters[3] = { > { .id = LZMA_FILTER_POWERPC, .options = NULL }, >@@ -41,18 +49,16 @@ > { .id = LZMA_VLI_UNKNOWN, .options = NULL }, > }; > >- expect(lzma_stream_buffer_encode(filters, LZMA_CHECK_CRC32, NULL, >+ assert_lzma_ret(lzma_stream_buffer_encode( >+ filters, LZMA_CHECK_CRC32, NULL, > in, sizeof(in), >- compressed, &compressed_size, sizeof(compressed)) >- == LZMA_OK); >-} >+ compressed, &compressed_size, sizeof(compressed)), >+ LZMA_OK); > >- >-static void >-decompress(void) >-{ >+ // Decompress so that we won't give more output space than >+ // the Stream will need. > lzma_stream strm = LZMA_STREAM_INIT; >- expect(lzma_stream_decoder(&strm, 10 << 20, 0) == LZMA_OK); >+ assert_lzma_ret(lzma_stream_decoder(&strm, 10 << 20, 0), LZMA_OK); > > strm.next_in = compressed; > strm.next_out = out; >@@ -63,51 +69,56 @@ > > const lzma_ret ret = lzma_code(&strm, LZMA_RUN); > if (ret == LZMA_STREAM_END) { >- expect(strm.total_in == compressed_size); >- expect(strm.total_out == sizeof(in)); >+ assert_uint_eq(strm.total_in, compressed_size); >+ assert_uint_eq(strm.total_out, sizeof(in)); > lzma_end(&strm); > return; > } > >- expect(ret == LZMA_OK); >+ assert_lzma_ret(ret, LZMA_OK); > > if (strm.total_out < sizeof(in)) > strm.avail_out = 1; > } >+#endif > } > > > static void >-decompress_empty(void) >+test_empty_block(void) > { >+#ifndef HAVE_DECODERS >+ assert_skip("Decoder support disabled"); >+#else >+ if (!lzma_filter_decoder_is_supported(LZMA_FILTER_POWERPC)) >+ assert_skip("PowerPC BCJ decoder is disabled"); >+ > // An empty file with one Block using PowerPC BCJ and LZMA2. >- static const uint8_t empty_bcj_lzma2[] = { >- 0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00, 0x00, 0x01, >- 0x69, 0x22, 0xDE, 0x36, 0x02, 0x01, 0x05, 0x00, >- 0x21, 0x01, 0x00, 0x00, 0x7F, 0xE0, 0xF1, 0xC8, >- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >- 0x00, 0x01, 0x11, 0x00, 0x3B, 0x96, 0x5F, 0x73, >- 0x90, 0x42, 0x99, 0x0D, 0x01, 0x00, 0x00, 0x00, >- 0x00, 0x01, 0x59, 0x5A >- }; >+ size_t in_size; >+ uint8_t *empty_bcj_lzma2 = tuktest_file_from_srcdir( >+ "files/good-1-empty-bcj-lzma2.xz", &in_size); > > // Decompress without giving any output space. > uint64_t memlimit = 1 << 20; >+ uint8_t out[1]; > size_t in_pos = 0; > size_t out_pos = 0; >- expect(lzma_stream_buffer_decode(&memlimit, 0, NULL, >- empty_bcj_lzma2, &in_pos, sizeof(empty_bcj_lzma2), >- out, &out_pos, 0) == LZMA_OK); >- expect(in_pos == sizeof(empty_bcj_lzma2)); >- expect(out_pos == 0); >+ assert_lzma_ret(lzma_stream_buffer_decode(&memlimit, 0, NULL, >+ empty_bcj_lzma2, &in_pos, in_size, out, &out_pos, 0), >+ LZMA_OK); >+ assert_uint_eq(in_pos, in_size); >+ assert_uint_eq(out_pos, 0); >+#endif > } > > > extern int >-main(void) >+main(int argc, char **argv) > { >- compress(); >- decompress(); >- decompress_empty(); >- return 0; >+ tuktest_start(argc, argv); >+ >+ tuktest_run(test_exact_size); >+ tuktest_run(test_empty_block); >+ >+ return tuktest_end(); > } >diff -ur xz-5.2.5/tests/test_block_header.c xz-5.4.3/tests/test_block_header.c >--- xz-5.2.5/tests/test_block_header.c 2020-03-17 17:28:50 >+++ xz-5.4.3/tests/test_block_header.c 2023-05-04 17:21:05 >@@ -3,7 +3,8 @@ > /// \file test_block_header.c > /// \brief Tests Block Header coders > // >-// Author: Lasse Collin >+// Authors: Lasse Collin >+// Jia Tan > // > // This file has been put into the public domain. > // You can do whatever you want with this file. >@@ -13,12 +14,10 @@ > #include "tests.h" > > >-static uint8_t buf[LZMA_BLOCK_HEADER_SIZE_MAX]; >-static lzma_block known_options; >-static lzma_block decoded_options; >- > static lzma_options_lzma opt_lzma; > >+ >+#ifdef HAVE_ENCODERS > static lzma_filter filters_none[1] = { > { > .id = LZMA_VLI_UNKNOWN, >@@ -36,6 +35,9 @@ > }; > > >+// These filters are only used in test_lzma_block_header_decode() >+// which only runs if encoders and decoders are configured. >+#ifdef HAVE_DECODERS > static lzma_filter filters_four[5] = { > { > .id = LZMA_FILTER_X86, >@@ -53,6 +55,7 @@ > .id = LZMA_VLI_UNKNOWN, > } > }; >+#endif > > > static lzma_filter filters_five[6] = { >@@ -75,167 +78,437 @@ > .id = LZMA_VLI_UNKNOWN, > } > }; >+#endif > > > static void >-code(void) >+test_lzma_block_header_size(void) > { >- expect(lzma_block_header_encode(&known_options, buf) == LZMA_OK); >+#ifndef HAVE_ENCODERS >+ assert_skip("Encoder support disabled"); >+#else >+ if (!lzma_filter_encoder_is_supported(LZMA_FILTER_X86)) >+ assert_skip("x86 BCJ encoder is disabled"); > >- lzma_filter filters[LZMA_FILTERS_MAX + 1]; >- memcrap(filters, sizeof(filters)); >- memcrap(&decoded_options, sizeof(decoded_options)); >+ lzma_block block = { >+ .version = 0, >+ .filters = filters_one, >+ .compressed_size = LZMA_VLI_UNKNOWN, >+ .uncompressed_size = LZMA_VLI_UNKNOWN, >+ .check = LZMA_CHECK_CRC32 >+ }; > >- decoded_options.header_size = known_options.header_size; >- decoded_options.check = known_options.check; >- decoded_options.filters = filters; >- expect(lzma_block_header_decode(&decoded_options, NULL, buf) >- == LZMA_OK); >+ // Test that all initial options are valid >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK); >+ assert_uint(block.header_size, >=, LZMA_BLOCK_HEADER_SIZE_MIN); >+ assert_uint(block.header_size, <=, LZMA_BLOCK_HEADER_SIZE_MAX); >+ assert_uint_eq(block.header_size % 4, 0); > >- expect(known_options.compressed_size >- == decoded_options.compressed_size); >- expect(known_options.uncompressed_size >- == decoded_options.uncompressed_size); >+ // Test invalid version number >+ for (uint32_t i = 2; i < 20; i++) { >+ block.version = i; >+ assert_lzma_ret(lzma_block_header_size(&block), >+ LZMA_OPTIONS_ERROR); >+ } > >- for (size_t i = 0; known_options.filters[i].id >- != LZMA_VLI_UNKNOWN; ++i) >- expect(known_options.filters[i].id == filters[i].id); >+ block.version = 1; > >- for (size_t i = 0; i < LZMA_FILTERS_MAX; ++i) >- free(decoded_options.filters[i].options); >+ // Test invalid compressed size >+ block.compressed_size = 0; >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_PROG_ERROR); >+ >+ block.compressed_size = LZMA_VLI_MAX + 1; >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_PROG_ERROR); >+ block.compressed_size = LZMA_VLI_UNKNOWN; >+ >+ // Test invalid uncompressed size >+ block.uncompressed_size = LZMA_VLI_MAX + 1; >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_PROG_ERROR); >+ block.uncompressed_size = LZMA_VLI_MAX; >+ >+ // Test invalid filters >+ block.filters = NULL; >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_PROG_ERROR); >+ >+ block.filters = filters_none; >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_PROG_ERROR); >+ >+ block.filters = filters_five; >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_PROG_ERROR); >+ >+ block.filters = filters_one; >+ >+ // Test setting compressed_size to something valid >+ block.compressed_size = 4096; >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK); >+ assert_uint(block.header_size, >=, LZMA_BLOCK_HEADER_SIZE_MIN); >+ assert_uint(block.header_size, <=, LZMA_BLOCK_HEADER_SIZE_MAX); >+ assert_uint_eq(block.header_size % 4, 0); >+ >+ // Test setting uncompressed_size to something valid >+ block.uncompressed_size = 4096; >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK); >+ assert_uint(block.header_size, >=, LZMA_BLOCK_HEADER_SIZE_MIN); >+ assert_uint(block.header_size, <=, LZMA_BLOCK_HEADER_SIZE_MAX); >+ assert_uint_eq(block.header_size % 4, 0); >+ >+ // This should pass, but header_size will be an invalid value >+ // because the total block size will not be able to fit in a valid >+ // lzma_vli. This way a temporary value can be used to reserve >+ // space for the header and later the actual value can be set. >+ block.compressed_size = LZMA_VLI_MAX; >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK); >+ assert_uint(block.header_size, >=, LZMA_BLOCK_HEADER_SIZE_MIN); >+ assert_uint(block.header_size, <=, LZMA_BLOCK_HEADER_SIZE_MAX); >+ assert_uint_eq(block.header_size % 4, 0); >+ >+ // Use an invalid value for a filter option. This should still pass >+ // because the size of the LZMA2 properties is known by liblzma >+ // without reading any of the options so it doesn't validate them. >+ lzma_options_lzma bad_ops; >+ assert_false(lzma_lzma_preset(&bad_ops, 1)); >+ bad_ops.pb = 0x1000; >+ >+ lzma_filter bad_filters[2] = { >+ { >+ .id = LZMA_FILTER_LZMA2, >+ .options = &bad_ops >+ }, >+ { >+ .id = LZMA_VLI_UNKNOWN, >+ .options = NULL >+ } >+ }; >+ >+ block.filters = bad_filters; >+ >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK); >+ assert_uint(block.header_size, >=, LZMA_BLOCK_HEADER_SIZE_MIN); >+ assert_uint(block.header_size, <=, LZMA_BLOCK_HEADER_SIZE_MAX); >+ assert_uint_eq(block.header_size % 4, 0); >+ >+ // Use an invalid block option. The check type isn't stored in >+ // the Block Header and so _header_size ignores it. >+ block.check = INVALID_LZMA_CHECK_ID; >+ block.ignore_check = false; >+ >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK); >+ assert_uint(block.header_size, >=, LZMA_BLOCK_HEADER_SIZE_MIN); >+ assert_uint(block.header_size, <=, LZMA_BLOCK_HEADER_SIZE_MAX); >+ assert_uint_eq(block.header_size % 4, 0); >+#endif > } > > > static void >-test1(void) >+test_lzma_block_header_encode(void) > { >- known_options = (lzma_block){ >- .check = LZMA_CHECK_NONE, >+#if !defined(HAVE_ENCODERS) || !defined(HAVE_DECODERS) >+ assert_skip("Encoder or decoder support disabled"); >+#else >+ >+ if (!lzma_filter_encoder_is_supported(LZMA_FILTER_X86) >+ || !lzma_filter_decoder_is_supported(LZMA_FILTER_X86)) >+ assert_skip("x86 BCJ encoder and/or decoder " >+ "is disabled"); >+ >+ lzma_block block = { >+ .version = 1, >+ .filters = filters_one, > .compressed_size = LZMA_VLI_UNKNOWN, > .uncompressed_size = LZMA_VLI_UNKNOWN, >- .filters = NULL, >+ .check = LZMA_CHECK_CRC32, > }; > >- expect(lzma_block_header_size(&known_options) == LZMA_PROG_ERROR); >+ // Ensure all block options are valid before changes are tested >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK); > >- known_options.filters = filters_none; >- expect(lzma_block_header_size(&known_options) == LZMA_PROG_ERROR); >+ uint8_t out[LZMA_BLOCK_HEADER_SIZE_MAX]; > >- known_options.filters = filters_five; >- expect(lzma_block_header_size(&known_options) == LZMA_PROG_ERROR); >+ // Test invalid block version >+ for (uint32_t i = 2; i < 20; i++) { >+ block.version = i; >+ assert_lzma_ret(lzma_block_header_encode(&block, out), >+ LZMA_PROG_ERROR); >+ } > >- known_options.filters = filters_one; >- expect(lzma_block_header_size(&known_options) == LZMA_OK); >+ block.version = 1; > >- // Some invalid value, which gets ignored. >- known_options.check = (lzma_check)(99); >- expect(lzma_block_header_size(&known_options) == LZMA_OK); >+ // Test invalid header size (< min, > max, % 4 != 0) >+ block.header_size = LZMA_BLOCK_HEADER_SIZE_MIN - 4; >+ assert_lzma_ret(lzma_block_header_encode(&block, out), >+ LZMA_PROG_ERROR); >+ block.header_size = LZMA_BLOCK_HEADER_SIZE_MIN + 2; >+ assert_lzma_ret(lzma_block_header_encode(&block, out), >+ LZMA_PROG_ERROR); >+ block.header_size = LZMA_BLOCK_HEADER_SIZE_MAX + 4; >+ assert_lzma_ret(lzma_block_header_encode(&block, out), >+ LZMA_PROG_ERROR); >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK); > >- known_options.compressed_size = 5; >- expect(lzma_block_header_size(&known_options) == LZMA_OK); >+ // Test invalid compressed_size >+ block.compressed_size = 0; >+ assert_lzma_ret(lzma_block_header_encode(&block, out), >+ LZMA_PROG_ERROR); >+ block.compressed_size = LZMA_VLI_MAX + 1; >+ assert_lzma_ret(lzma_block_header_encode(&block, out), >+ LZMA_PROG_ERROR); > >- known_options.compressed_size = 0; // Cannot be zero. >- expect(lzma_block_header_size(&known_options) == LZMA_PROG_ERROR); >+ // This test passes test_lzma_block_header_size, but should >+ // fail here because there is not enough space to encode the >+ // proper block size because the total size is too big to fit >+ // in an lzma_vli >+ block.compressed_size = LZMA_VLI_MAX; >+ assert_lzma_ret(lzma_block_header_encode(&block, out), >+ LZMA_PROG_ERROR); >+ block.compressed_size = LZMA_VLI_UNKNOWN; > >- // LZMA_VLI_MAX is too big to keep the total size of the Block >- // a valid VLI, but lzma_block_header_size() is not meant >- // to validate it. (lzma_block_header_encode() must validate it.) >- known_options.compressed_size = LZMA_VLI_MAX; >- expect(lzma_block_header_size(&known_options) == LZMA_OK); >+ // Test invalid uncompressed size >+ block.uncompressed_size = LZMA_VLI_MAX + 1; >+ assert_lzma_ret(lzma_block_header_encode(&block, out), >+ LZMA_PROG_ERROR); >+ block.uncompressed_size = LZMA_VLI_UNKNOWN; > >- known_options.compressed_size = LZMA_VLI_UNKNOWN; >- known_options.uncompressed_size = 0; >- expect(lzma_block_header_size(&known_options) == LZMA_OK); >+ // Test invalid block check >+ block.check = INVALID_LZMA_CHECK_ID; >+ block.ignore_check = false; >+ assert_lzma_ret(lzma_block_header_encode(&block, out), >+ LZMA_PROG_ERROR); >+ block.check = LZMA_CHECK_CRC32; > >- known_options.uncompressed_size = LZMA_VLI_MAX + 1; >- expect(lzma_block_header_size(&known_options) == LZMA_PROG_ERROR); >+ // Test invalid filters >+ block.filters = NULL; >+ assert_lzma_ret(lzma_block_header_encode(&block, out), >+ LZMA_PROG_ERROR); >+ >+ block.filters = filters_none; >+ assert_lzma_ret(lzma_block_header_encode(&block, out), >+ LZMA_PROG_ERROR); >+ >+ block.filters = filters_five; >+ block.header_size = LZMA_BLOCK_HEADER_SIZE_MAX - 4; >+ assert_lzma_ret(lzma_block_header_encode(&block, out), >+ LZMA_PROG_ERROR); >+ >+ // Test valid encoding and verify bytes of block header. >+ // More complicated tests for encoding headers are included >+ // in test_lzma_block_header_decode. >+ block.filters = filters_one; >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK); >+ assert_lzma_ret(lzma_block_header_encode(&block, out), LZMA_OK); >+ >+ // First read block header size from out and verify >+ // that it == (encoded size + 1) * 4 >+ uint32_t header_size = (out[0] + 1U) * 4; >+ assert_uint_eq(header_size, block.header_size); >+ >+ // Next read block flags >+ uint8_t flags = out[1]; >+ >+ // Should have number of filters = 1 >+ assert_uint_eq((flags & 0x3) + 1, 1); >+ >+ // Bits 2-7 must be empty not set >+ assert_uint_eq(flags & (0xFF - 0x3), 0); >+ >+ // Verify filter flags >+ // Decode Filter ID >+ lzma_vli filter_id = 0; >+ size_t pos = 2; >+ assert_lzma_ret(lzma_vli_decode(&filter_id, NULL, out, >+ &pos, header_size), LZMA_OK); >+ assert_uint_eq(filter_id, filters_one[0].id); >+ >+ // Decode Size of Properties >+ lzma_vli prop_size = 0; >+ assert_lzma_ret(lzma_vli_decode(&prop_size, NULL, out, >+ &pos, header_size), LZMA_OK); >+ >+ // LZMA2 has 1 byte prop size >+ assert_uint_eq(prop_size, 1); >+ uint8_t expected_filter_props = 0; >+ assert_lzma_ret(lzma_properties_encode(filters_one, >+ &expected_filter_props), LZMA_OK); >+ assert_uint_eq(out[pos], expected_filter_props); >+ pos++; >+ >+ // Check null-padding >+ for (size_t i = pos; i < header_size - 4; i++) >+ assert_uint_eq(out[i], 0); >+ >+ // Check CRC32 >+ assert_uint_eq(read32le(&out[header_size - 4]), lzma_crc32(out, >+ header_size - 4, 0)); >+#endif > } > > >+#if defined(HAVE_ENCODERS) && defined(HAVE_DECODERS) >+// Helper function to compare two lzma_block structures field by field > static void >-test2(void) >+compare_blocks(lzma_block *block_expected, lzma_block *block_actual) > { >- known_options = (lzma_block){ >- .check = LZMA_CHECK_CRC32, >- .compressed_size = LZMA_VLI_UNKNOWN, >- .uncompressed_size = LZMA_VLI_UNKNOWN, >- .filters = filters_four, >- }; >+ assert_uint_eq(block_actual->version, block_expected->version); >+ assert_uint_eq(block_actual->compressed_size, >+ block_expected->compressed_size); >+ assert_uint_eq(block_actual->uncompressed_size, >+ block_expected->uncompressed_size); >+ assert_uint_eq(block_actual->check, block_expected->check); >+ assert_uint_eq(block_actual->header_size, block_expected->header_size); > >- expect(lzma_block_header_size(&known_options) == LZMA_OK); >- code(); >+ // Compare filter IDs >+ assert_true(block_expected->filters && block_actual->filters); >+ lzma_filter expected_filter = block_expected->filters[0]; >+ uint32_t filter_count = 0; >+ while (expected_filter.id != LZMA_VLI_UNKNOWN) { >+ assert_uint_eq(block_actual->filters[filter_count].id, >+ expected_filter.id); >+ expected_filter = block_expected->filters[++filter_count]; >+ } > >- known_options.compressed_size = 123456; >- known_options.uncompressed_size = 234567; >- expect(lzma_block_header_size(&known_options) == LZMA_OK); >- code(); >- >- // We can make the sizes smaller while keeping the header size >- // the same. >- known_options.compressed_size = 12; >- known_options.uncompressed_size = 23; >- code(); >+ assert_uint_eq(block_actual->filters[filter_count].id, >+ LZMA_VLI_UNKNOWN); > } >+#endif > > > static void >-test3(void) >+test_lzma_block_header_decode(void) > { >- known_options = (lzma_block){ >- .check = LZMA_CHECK_CRC32, >+#if !defined(HAVE_ENCODERS) || !defined(HAVE_DECODERS) >+ assert_skip("Encoder or decoder support disabled"); >+#else >+ if (!lzma_filter_encoder_is_supported(LZMA_FILTER_X86) >+ || !lzma_filter_decoder_is_supported(LZMA_FILTER_X86)) >+ assert_skip("x86 BCJ encoder and/or decoder " >+ "is disabled"); >+ >+ lzma_block block = { >+ .filters = filters_one, > .compressed_size = LZMA_VLI_UNKNOWN, > .uncompressed_size = LZMA_VLI_UNKNOWN, >- .filters = filters_one, >+ .check = LZMA_CHECK_CRC32, >+ .version = 0 > }; > >- expect(lzma_block_header_size(&known_options) == LZMA_OK); >- known_options.header_size += 4; >- expect(lzma_block_header_encode(&known_options, buf) == LZMA_OK); >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK); > >- lzma_filter filters[LZMA_FILTERS_MAX + 1]; >- decoded_options.header_size = known_options.header_size; >- decoded_options.check = known_options.check; >- decoded_options.filters = filters; >+ // Encode block header with simple options >+ uint8_t out[LZMA_BLOCK_HEADER_SIZE_MAX]; >+ assert_lzma_ret(lzma_block_header_encode(&block, out), LZMA_OK); > >- // Wrong size >- ++buf[0]; >- expect(lzma_block_header_decode(&decoded_options, NULL, buf) >- == LZMA_PROG_ERROR); >- --buf[0]; >+ // Decode block header and check that the options match >+ lzma_filter decoded_filters[LZMA_FILTERS_MAX + 1]; >+ lzma_block decoded_block = { >+ .version = 0, >+ .filters = decoded_filters, >+ .check = LZMA_CHECK_CRC32 >+ }; >+ decoded_block.header_size = lzma_block_header_size_decode(out[0]); > >- // Wrong CRC32 >- buf[known_options.header_size - 1] ^= 1; >- expect(lzma_block_header_decode(&decoded_options, NULL, buf) >- == LZMA_DATA_ERROR); >- buf[known_options.header_size - 1] ^= 1; >+ assert_lzma_ret(lzma_block_header_decode(&decoded_block, NULL, out), >+ LZMA_OK); >+ compare_blocks(&block, &decoded_block); > >- // Unsupported filter >- // NOTE: This may need updating when new IDs become supported. >- buf[2] ^= 0x1F; >- write32le(buf + known_options.header_size - 4, >- lzma_crc32(buf, known_options.header_size - 4, 0)); >- expect(lzma_block_header_decode(&decoded_options, NULL, buf) >- == LZMA_OPTIONS_ERROR); >- buf[2] ^= 0x1F; >+ // Reset output buffer and decoded_block >+ memzero(out, LZMA_BLOCK_HEADER_SIZE_MAX); >+ memzero(&decoded_block, sizeof(lzma_block)); >+ decoded_block.filters = decoded_filters; >+ decoded_block.check = LZMA_CHECK_CRC32; > >- // Non-nul Padding >- buf[known_options.header_size - 4 - 1] ^= 1; >- write32le(buf + known_options.header_size - 4, >- lzma_crc32(buf, known_options.header_size - 4, 0)); >- expect(lzma_block_header_decode(&decoded_options, NULL, buf) >- == LZMA_OPTIONS_ERROR); >- buf[known_options.header_size - 4 - 1] ^= 1; >+ // Test with compressed size set >+ block.compressed_size = 4096; >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK); >+ assert_lzma_ret(lzma_block_header_encode(&block, out), LZMA_OK); >+ decoded_block.header_size = lzma_block_header_size_decode(out[0]); >+ assert_lzma_ret(lzma_block_header_decode(&decoded_block, NULL, out), >+ LZMA_OK); >+ compare_blocks(&block, &decoded_block); >+ >+ memzero(out, LZMA_BLOCK_HEADER_SIZE_MAX); >+ memzero(&decoded_block, sizeof(lzma_block)); >+ decoded_block.filters = decoded_filters; >+ decoded_block.check = LZMA_CHECK_CRC32; >+ >+ // Test with uncompressed size set >+ block.uncompressed_size = 4096; >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK); >+ assert_lzma_ret(lzma_block_header_encode(&block, out), LZMA_OK); >+ decoded_block.header_size = lzma_block_header_size_decode(out[0]); >+ assert_lzma_ret(lzma_block_header_decode(&decoded_block, NULL, out), >+ LZMA_OK); >+ compare_blocks(&block, &decoded_block); >+ >+ memzero(out, LZMA_BLOCK_HEADER_SIZE_MAX); >+ memzero(&decoded_block, sizeof(lzma_block)); >+ decoded_block.filters = decoded_filters; >+ decoded_block.check = LZMA_CHECK_CRC32; >+ >+ // Test with multiple filters >+ block.filters = filters_four; >+ assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK); >+ assert_lzma_ret(lzma_block_header_encode(&block, out), LZMA_OK); >+ decoded_block.header_size = lzma_block_header_size_decode(out[0]); >+ assert_lzma_ret(lzma_block_header_decode(&decoded_block, NULL, out), >+ LZMA_OK); >+ compare_blocks(&block, &decoded_block); >+ >+ memzero(&decoded_block, sizeof(lzma_block)); >+ decoded_block.filters = decoded_filters; >+ decoded_block.check = LZMA_CHECK_CRC32; >+ decoded_block.header_size = lzma_block_header_size_decode(out[0]); >+ >+ // Test with too high version. The decoder will set it to a version >+ // that it supports. >+ decoded_block.version = 2; >+ assert_lzma_ret(lzma_block_header_decode(&decoded_block, NULL, out), >+ LZMA_OK); >+ assert_uint_eq(decoded_block.version, 1); >+ >+ // Test bad check type >+ decoded_block.check = INVALID_LZMA_CHECK_ID; >+ assert_lzma_ret(lzma_block_header_decode(&decoded_block, NULL, out), >+ LZMA_PROG_ERROR); >+ decoded_block.check = LZMA_CHECK_CRC32; >+ >+ // Test bad check value >+ out[decoded_block.header_size - 1] -= 10; >+ assert_lzma_ret(lzma_block_header_decode(&decoded_block, NULL, out), >+ LZMA_DATA_ERROR); >+ out[decoded_block.header_size - 1] += 10; >+ >+ // Test non-NULL padding >+ out[decoded_block.header_size - 5] = 1; >+ >+ // Recompute CRC32 >+ write32le(&out[decoded_block.header_size - 4], lzma_crc32(out, >+ decoded_block.header_size - 4, 0)); >+ assert_lzma_ret(lzma_block_header_decode(&decoded_block, NULL, out), >+ LZMA_OPTIONS_ERROR); >+ >+ // Test unsupported flags >+ out[1] = 0xFF; >+ >+ // Recompute CRC32 >+ write32le(&out[decoded_block.header_size - 4], lzma_crc32(out, >+ decoded_block.header_size - 4, 0)); >+ assert_lzma_ret(lzma_block_header_decode(&decoded_block, NULL, out), >+ LZMA_OPTIONS_ERROR); >+#endif > } > > >-int >-main(void) >+extern int >+main(int argc, char **argv) > { >- succeed(lzma_lzma_preset(&opt_lzma, 1)); >+ tuktest_start(argc, argv); > >- test1(); >- test2(); >- test3(); >+ if (lzma_lzma_preset(&opt_lzma, 1)) >+ tuktest_error("lzma_lzma_preset() failed"); > >- return 0; >+ tuktest_run(test_lzma_block_header_size); >+ tuktest_run(test_lzma_block_header_encode); >+ tuktest_run(test_lzma_block_header_decode); >+ >+ return tuktest_end(); > } >diff -ur xz-5.2.5/tests/test_check.c xz-5.4.3/tests/test_check.c >--- xz-5.2.5/tests/test_check.c 2020-03-17 17:28:50 >+++ xz-5.4.3/tests/test_check.c 2023-05-04 17:21:05 >@@ -2,10 +2,9 @@ > // > /// \file test_check.c > /// \brief Tests integrity checks >-/// >-/// \todo Add SHA256 > // >-// Author: Lasse Collin >+// Authors: Lasse Collin >+// Jia Tan > // > // This file has been put into the public domain. > // You can do whatever you want with this file. >@@ -13,6 +12,7 @@ > /////////////////////////////////////////////////////////////////////////////// > > #include "tests.h" >+#include "mythread.h" > > > // These must be specified as numbers so that the test works on EBCDIC >@@ -23,66 +23,368 @@ > static const uint8_t test_unaligned[12] > = { 120, 120, 120, 49, 50, 51, 52, 53, 54, 55, 56, 57 }; > >+// 2 MB is more than enough for the tests. Actually a tiny value would >+// work because we don't actually decompress the files, we only test >+// decoding of the Stream Header fields. >+#define TEST_CHECK_MEMLIMIT (2U << 20) > >-static bool >-test_crc32(void) >+static size_t no_check_size; >+static uint8_t *no_check_xz_data; >+ >+static size_t unsupported_check_size; >+static uint8_t *unsupported_check_xz_data; >+ >+#ifdef HAVE_CHECK_CRC32 >+static size_t crc32_size; >+static uint8_t *crc32_xz_data; >+#endif >+ >+#ifdef HAVE_CHECK_CRC64 >+static size_t crc64_size; >+static uint8_t *crc64_xz_data; >+#endif >+ >+#ifdef HAVE_CHECK_SHA256 >+static size_t sha256_size; >+static uint8_t *sha256_xz_data; >+#endif >+ >+ >+#ifdef HAVE_CHECK_CRC64 >+static const uint8_t * >+get_random256(uint32_t *seed) > { >- static const uint32_t test_vector = 0xCBF43926; >+ static uint8_t buf[256]; > >+ for (size_t i = 0; i < sizeof(buf); ++i) { >+ *seed = *seed * 1103515245 + 12345; >+ buf[i] = (uint8_t)(*seed >> 22); >+ } >+ >+ return buf; >+} >+#endif >+ >+ >+static void >+test_lzma_crc32(void) >+{ >+ // CRC32 is always enabled. >+ assert_true(lzma_check_is_supported(LZMA_CHECK_CRC32)); >+ >+ const uint32_t test_vector = 0xCBF43926; >+ > // Test 1 >- uint32_t crc = lzma_crc32(test_string, sizeof(test_string), 0); >- if (crc != test_vector) >- return true; >+ assert_uint_eq(lzma_crc32(test_string, sizeof(test_string), 0), >+ test_vector); > > // Test 2 >- crc = lzma_crc32(test_unaligned + 3, sizeof(test_string), 0); >- if (crc != test_vector) >- return true; >+ assert_uint_eq(lzma_crc32(test_unaligned + 3, sizeof(test_string), 0), >+ test_vector); > > // Test 3 >- crc = 0; >+ uint32_t crc = 0; > for (size_t i = 0; i < sizeof(test_string); ++i) > crc = lzma_crc32(test_string + i, 1, crc); >- if (crc != test_vector) >- return true; >- >- return false; >+ assert_uint_eq(crc, test_vector); > } > > >-static bool >-test_crc64(void) >+static void >+test_lzma_crc64(void) > { >- static const uint64_t test_vector = 0x995DC9BBDF1939FA; >+ // CRC64 can be disabled. >+ if (!lzma_check_is_supported(LZMA_CHECK_CRC64)) >+ assert_skip("CRC64 support is disabled"); > >+ // If CRC64 is disabled then lzma_crc64() will be missing. >+ // Using an ifdef here avoids a linker error. >+#ifdef HAVE_CHECK_CRC64 >+ const uint64_t test_vector = 0x995DC9BBDF1939FA; >+ > // Test 1 >- uint64_t crc = lzma_crc64(test_string, sizeof(test_string), 0); >- if (crc != test_vector) >- return true; >+ assert_uint_eq(lzma_crc64(test_string, sizeof(test_string), 0), >+ test_vector); > > // Test 2 >- crc = lzma_crc64(test_unaligned + 3, sizeof(test_string), 0); >- if (crc != test_vector) >- return true; >+ assert_uint_eq(lzma_crc64(test_unaligned + 3, sizeof(test_string), 0), >+ test_vector); > > // Test 3 >- crc = 0; >+ uint64_t crc = 0; > for (size_t i = 0; i < sizeof(test_string); ++i) > crc = lzma_crc64(test_string + i, 1, crc); >- if (crc != test_vector) >- return true; >+ assert_uint_eq(crc, test_vector); > >- return false; >+ // Test 4: The CLMUL implementation works on 16-byte chunks. >+ // Test combination of different start and end alignments >+ // and also short buffer lengths where special handling is needed. >+ uint32_t seed = 29; >+ crc = 0x96E30D5184B7FA2C; // Random initial value >+ for (size_t start = 0; start < 32; ++start) >+ for (size_t size = 1; size < 256 - 32; ++size) >+ crc = lzma_crc64(get_random256(&seed), size, crc); >+ >+ assert_uint_eq(crc, 0x23AB787177231C9F); >+#endif > } > > >-int >-main(void) >+static void >+test_lzma_supported_checks(void) > { >- bool error = false; >+ static const lzma_check expected_check_ids[] = { >+ LZMA_CHECK_NONE, >+#ifdef HAVE_CHECK_CRC32 >+ LZMA_CHECK_CRC32, >+#endif >+#ifdef HAVE_CHECK_CRC64 >+ LZMA_CHECK_CRC64, >+#endif >+#ifdef HAVE_CHECK_SHA256 >+ LZMA_CHECK_SHA256, >+#endif >+ }; > >- error |= test_crc32(); >- error |= test_crc64(); >+ for (lzma_check i = 0; i <= LZMA_CHECK_ID_MAX + 1; i++) { >+ bool matched = false; >+ for (unsigned int j = 0; j < ARRAY_SIZE(expected_check_ids); >+ j++) { >+ if (expected_check_ids[j] == i) { >+ matched = true; >+ break; >+ } >+ } > >- return error ? 1 : 0; >+ if (matched) >+ assert_true(lzma_check_is_supported(i)); >+ else >+ assert_false(lzma_check_is_supported(i)); >+ } >+} >+ >+ >+static void >+test_lzma_check_size(void) >+{ >+ // Expected check sizes taken from src/liblzma/api/lzma/check.h >+ static const uint32_t expected_check_sizes[] = { >+ 0, 4, 4, 4, 8, 8, 8, 16, 16, 16, >+ 32, 32, 32, 64, 64, 64 >+ }; >+ >+ for (lzma_check i = 0; i < ARRAY_SIZE(expected_check_sizes); i++) >+ assert_uint_eq(expected_check_sizes[i], lzma_check_size(i)); >+ >+ assert_uint_eq(lzma_check_size(INVALID_LZMA_CHECK_ID), UINT32_MAX); >+} >+ >+ >+// Test the single threaded decoder for lzma_get_check >+static void >+test_lzma_get_check_st(void) >+{ >+#ifndef HAVE_DECODERS >+ assert_skip("Decoder support disabled"); >+#else >+ const uint32_t flags = LZMA_TELL_ANY_CHECK | >+ LZMA_TELL_UNSUPPORTED_CHECK | >+ LZMA_TELL_NO_CHECK; >+ >+ uint8_t outbuf[128]; >+ lzma_stream strm = LZMA_STREAM_INIT; >+ >+ // Test a file with no integrity check: >+ assert_lzma_ret(lzma_stream_decoder(&strm, TEST_CHECK_MEMLIMIT, >+ flags), LZMA_OK); >+ strm.next_in = no_check_xz_data; >+ strm.avail_in = no_check_size; >+ strm.next_out = outbuf; >+ strm.avail_out = sizeof(outbuf); >+ >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_NO_CHECK); >+ assert_lzma_check(lzma_get_check(&strm), LZMA_CHECK_NONE); >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_STREAM_END); >+ >+ // Test a file with an unsupported integrity check type: >+ assert_lzma_ret(lzma_stream_decoder(&strm, TEST_CHECK_MEMLIMIT, >+ flags), LZMA_OK); >+ strm.next_in = unsupported_check_xz_data; >+ strm.avail_in = unsupported_check_size; >+ strm.next_out = outbuf; >+ strm.avail_out = sizeof(outbuf); >+ >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_UNSUPPORTED_CHECK); >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_STREAM_END); >+ >+ // Test a file with CRC32 as the integrity check: >+#ifdef HAVE_CHECK_CRC32 >+ assert_lzma_ret(lzma_stream_decoder(&strm, TEST_CHECK_MEMLIMIT, >+ flags), LZMA_OK); >+ strm.next_in = crc32_xz_data; >+ strm.avail_in = crc32_size; >+ strm.next_out = outbuf; >+ strm.avail_out = sizeof(outbuf); >+ >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_GET_CHECK); >+ assert_lzma_check(lzma_get_check(&strm), LZMA_CHECK_CRC32); >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_STREAM_END); >+#endif >+ >+ // Test a file with CRC64 as the integrity check: >+#ifdef HAVE_CHECK_CRC64 >+ assert_lzma_ret(lzma_stream_decoder(&strm, TEST_CHECK_MEMLIMIT, >+ flags), LZMA_OK); >+ strm.next_in = crc64_xz_data; >+ strm.avail_in = crc64_size; >+ strm.next_out = outbuf; >+ strm.avail_out = sizeof(outbuf); >+ >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_GET_CHECK); >+ assert_lzma_check(lzma_get_check(&strm), LZMA_CHECK_CRC64); >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_STREAM_END); >+#endif >+ >+ // Test a file with SHA-256 as the integrity check: >+#ifdef HAVE_CHECK_SHA256 >+ assert_lzma_ret(lzma_stream_decoder(&strm, TEST_CHECK_MEMLIMIT, >+ flags), LZMA_OK); >+ strm.next_in = sha256_xz_data; >+ strm.avail_in = sha256_size; >+ strm.next_out = outbuf; >+ strm.avail_out = sizeof(outbuf); >+ >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_GET_CHECK); >+ assert_lzma_check(lzma_get_check(&strm), LZMA_CHECK_SHA256); >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_STREAM_END); >+#endif >+ >+ lzma_end(&strm); >+#endif >+} >+ >+ >+static void >+test_lzma_get_check_mt(void) >+{ >+#ifndef MYTHREAD_ENABLED >+ assert_skip("Threading support disabled"); >+#elif !defined(HAVE_DECODERS) >+ assert_skip("Decoder support disabled"); >+#else >+ const uint32_t flags = LZMA_TELL_ANY_CHECK | >+ LZMA_TELL_UNSUPPORTED_CHECK | >+ LZMA_TELL_NO_CHECK; >+ >+ const lzma_mt options = { >+ .flags = flags, >+ .threads = 2, >+ .timeout = 0, >+ .memlimit_threading = TEST_CHECK_MEMLIMIT, >+ .memlimit_stop = TEST_CHECK_MEMLIMIT >+ }; >+ >+ uint8_t outbuf[128]; >+ lzma_stream strm = LZMA_STREAM_INIT; >+ >+ // Test a file with no integrity check: >+ assert_lzma_ret(lzma_stream_decoder_mt(&strm, &options), LZMA_OK); >+ strm.next_in = no_check_xz_data; >+ strm.avail_in = no_check_size; >+ strm.next_out = outbuf; >+ strm.avail_out = sizeof(outbuf); >+ >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_NO_CHECK); >+ assert_lzma_check(lzma_get_check(&strm), LZMA_CHECK_NONE); >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_STREAM_END); >+ >+ // Test a file with an unsupported integrity check type: >+ assert_lzma_ret(lzma_stream_decoder_mt(&strm, &options), LZMA_OK); >+ strm.next_in = unsupported_check_xz_data; >+ strm.avail_in = unsupported_check_size; >+ strm.next_out = outbuf; >+ strm.avail_out = sizeof(outbuf); >+ >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_UNSUPPORTED_CHECK); >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_STREAM_END); >+ >+ // Test a file with CRC32 as the integrity check: >+#ifdef HAVE_CHECK_CRC32 >+ assert_lzma_ret(lzma_stream_decoder_mt(&strm, &options), LZMA_OK); >+ strm.next_in = crc32_xz_data; >+ strm.avail_in = crc32_size; >+ strm.next_out = outbuf; >+ strm.avail_out = sizeof(outbuf); >+ >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_GET_CHECK); >+ assert_lzma_check(lzma_get_check(&strm), LZMA_CHECK_CRC32); >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_STREAM_END); >+#endif >+ >+ // Test a file with CRC64 as the integrity check: >+#ifdef HAVE_CHECK_CRC64 >+ assert_lzma_ret(lzma_stream_decoder_mt(&strm, &options), LZMA_OK); >+ strm.next_in = crc64_xz_data; >+ strm.avail_in = crc64_size; >+ strm.next_out = outbuf; >+ strm.avail_out = sizeof(outbuf); >+ >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_GET_CHECK); >+ assert_lzma_check(lzma_get_check(&strm), LZMA_CHECK_CRC64); >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_STREAM_END); >+#endif >+ >+ // Test a file with SHA-256 as the integrity check: >+#ifdef HAVE_CHECK_SHA256 >+ assert_lzma_ret(lzma_stream_decoder_mt(&strm,&options), LZMA_OK); >+ strm.next_in = sha256_xz_data; >+ strm.avail_in = sha256_size; >+ strm.next_out = outbuf; >+ strm.avail_out = sizeof(outbuf); >+ >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_GET_CHECK); >+ assert_lzma_check(lzma_get_check(&strm), LZMA_CHECK_SHA256); >+ assert_lzma_ret(lzma_code(&strm, LZMA_RUN), LZMA_STREAM_END); >+#endif >+ >+ lzma_end(&strm); >+#endif >+} >+ >+ >+extern int >+main(int argc, char **argv) >+{ >+ tuktest_start(argc, argv); >+ >+ no_check_xz_data = tuktest_file_from_srcdir( >+ "files/good-1-check-none.xz", &no_check_size); >+ >+ unsupported_check_xz_data = tuktest_file_from_srcdir( >+ "files/unsupported-check.xz", >+ &unsupported_check_size); >+ >+#ifdef HAVE_CHECK_CRC32 >+ crc32_xz_data = tuktest_file_from_srcdir( >+ "files/good-1-check-crc32.xz", &crc32_size); >+#endif >+ >+#ifdef HAVE_CHECK_CRC64 >+ crc64_xz_data = tuktest_file_from_srcdir( >+ "files/good-1-check-crc64.xz", &crc64_size); >+#endif >+ >+#ifdef HAVE_CHECK_SHA256 >+ sha256_xz_data = tuktest_file_from_srcdir( >+ "files/good-1-check-sha256.xz", &sha256_size); >+#endif >+ >+ tuktest_run(test_lzma_crc32); >+ tuktest_run(test_lzma_crc64); >+ tuktest_run(test_lzma_supported_checks); >+ tuktest_run(test_lzma_check_size); >+ tuktest_run(test_lzma_get_check_st); >+ tuktest_run(test_lzma_get_check_mt); >+ >+ return tuktest_end(); > } >diff -ur xz-5.2.5/tests/test_compress.sh xz-5.4.3/tests/test_compress.sh >--- xz-5.2.5/tests/test_compress.sh 2020-03-17 17:28:50 >+++ xz-5.4.3/tests/test_compress.sh 2023-05-04 17:21:05 >@@ -13,130 +13,137 @@ > if test -x ../src/xz/xz ; then > : > else >- (exit 77) > exit 77 > fi > >+# If compression or decompression support is missing, this test is skipped. >+# This isn't perfect as if only some compressors or decompressors are disabled >+# then this script can still fail because for now this doesn't check the >+# availability of each filter. >+if grep 'define HAVE_ENCODERS' ../config.h > /dev/null \ >+ && grep 'define HAVE_DECODERS' ../config.h > /dev/null ; then >+ : >+else >+ echo "Compression or decompression support is disabled, skipping this test." >+ exit 77 >+fi >+ > # Find out if our shell supports functions. > eval 'unset foo ; foo() { return 42; } ; foo' > if test $? != 42 ; then > echo "/bin/sh doesn't support functions, skipping this test." >- (exit 77) > exit 77 > fi > > test_xz() { >- if $XZ -c "$@" "$FILE" > tmp_compressed; then >+ if $XZ -c "$@" "$FILE" > "$TMP_COMP"; then > : > else > echo "Compressing failed: $* $FILE" >- (exit 1) > exit 1 > fi > >- if $XZ -cd tmp_compressed > tmp_uncompressed ; then >+ if $XZ -cd "$TMP_COMP" > "$TMP_UNCOMP" ; then > : > else > echo "Decompressing failed: $* $FILE" >- (exit 1) > exit 1 > fi > >- if cmp tmp_uncompressed "$FILE" ; then >+ if cmp "$TMP_UNCOMP" "$FILE" ; then > : > else > echo "Decompressed file does not match" \ > "the original: $* $FILE" >- (exit 1) > exit 1 > fi > > if test -n "$XZDEC" ; then >- if $XZDEC tmp_compressed > tmp_uncompressed ; then >+ if $XZDEC "$TMP_COMP" > "$TMP_UNCOMP" ; then > : > else > echo "Decompressing failed: $* $FILE" >- (exit 1) > exit 1 > fi > >- if cmp tmp_uncompressed "$FILE" ; then >+ if cmp "$TMP_UNCOMP" "$FILE" ; then > : > else > echo "Decompressed file does not match" \ > "the original: $* $FILE" >- (exit 1) > exit 1 > fi > fi >- >- # Show progress: >- echo . | tr -d '\n\r' > } > > XZ="../src/xz/xz --memlimit-compress=48MiB --memlimit-decompress=5MiB \ >- --no-adjust --threads=1 --check=crc64" >+ --no-adjust --threads=1 --check=crc32" >+grep "define HAVE_CHECK_CRC64" ../config.h > /dev/null \ >+ && XZ="$XZ --check=crc64" > XZDEC="../src/xzdec/xzdec" # No memory usage limiter available > test -x ../src/xzdec/xzdec || XZDEC= > >-# Create the required input files. >-if ./create_compress_files ; then >- : >-else >- rm -f compress_* >- echo "Failed to create files to test compression." >- (exit 1) >- exit 1 >-fi >+# Create the required input file if needed. >+# >+# Derive temporary filenames for compressed and uncompressed outputs >+# from the input filename. This is needed when multiple tests are >+# run in parallel. >+FILE=$1 >+TMP_COMP="tmp_comp_$FILE" >+TMP_UNCOMP="tmp_uncomp_$FILE" > >+case $FILE in >+ # compress_generated files will be created in the build directory >+ # in the /tests/ sub-directory. >+ compress_generated_*) >+ if ./create_compress_files "$FILE" ; then >+ : >+ else >+ rm -f "$FILE" >+ echo "Failed to create the file '$FILE'." >+ exit 1 >+ fi >+ ;; >+ # compress_prepared files exist in the source directory since they >+ # do not need to be copied or regenerated. >+ compress_prepared_*) >+ FILE="$srcdir/$FILE" >+ ;; >+ '') >+ echo "No test file was specified." >+ exit 1 >+ ;; >+esac >+ > # Remove temporary now (in case they are something weird), and on exit. >-rm -f tmp_compressed tmp_uncompressed >-trap 'rm -f tmp_compressed tmp_uncompressed' 0 >+rm -f "$TMP_COMP" "$TMP_UNCOMP" >+trap 'rm -f "$TMP_COMP" "$TMP_UNCOMP"' 0 > >-# Compress and decompress each file with various filter configurations. >-# This takes quite a bit of time. >-echo "test_compress.sh:" >-for FILE in compress_generated_* "$srcdir"/compress_prepared_* >-do >- MSG=`echo "x$FILE" | sed 's,^x,,; s,^.*/,,; s,^compress_,,'` >- echo " $MSG" | tr -d '\n\r' >- >- # Don't test with empty arguments; it breaks some ancient >- # proprietary /bin/sh versions due to $@ used in test_xz(). >- test_xz -1 >- test_xz -2 >- test_xz -3 >- test_xz -4 >- >- # Disabled until Subblock format is stable. >-# --subblock \ >-# --subblock=size=1 \ >-# --subblock=size=1,rle=1 \ >-# --subblock=size=1,rle=4 \ >-# --subblock=size=4,rle=4 \ >-# --subblock=size=8,rle=4 \ >-# --subblock=size=8,rle=8 \ >-# --subblock=size=4096,rle=12 \ >+# Compress and decompress the file with various filter configurations. > # >- for ARGS in \ >- --delta=dist=1 \ >- --delta=dist=4 \ >- --delta=dist=256 \ >- --x86 \ >- --powerpc \ >- --ia64 \ >- --arm \ >- --armthumb \ >- --sparc >- do >- test_xz $ARGS --lzma2=dict=64KiB,nice=32,mode=fast >+# Don't test with empty arguments; it breaks some ancient >+# proprietary /bin/sh versions due to $@ used in test_xz(). >+test_xz -1 >+test_xz -2 >+test_xz -3 >+test_xz -4 > >- # Disabled until Subblock format is stable. >- # test_xz --subblock $ARGS --lzma2=dict=64KiB,nice=32,mode=fast >- done >+test_filter() >+{ >+ grep "define HAVE_ENCODER_$1" ../config.h > /dev/null || return >+ grep "define HAVE_DECODER_$1" ../config.h > /dev/null || return >+ shift >+ test_xz "$@" --lzma2=dict=64KiB,nice=32,mode=fast >+} > >- echo >-done >+test_filter DELTA --delta=dist=1 >+test_filter DELTA --delta=dist=4 >+test_filter DELTA --delta=dist=256 >+test_filter X86 --x86 >+test_filter POWERPC --power >+test_filter IA64 --ia64 >+test_filter ARM --arm >+test_filter ARMTHUMB --armthumb >+test_filter SPARC --sparc > >-(exit 0) > exit 0 >Only in xz-5.4.3/tests: test_compress_generated_abc >Only in xz-5.4.3/tests: test_compress_generated_random >Only in xz-5.4.3/tests: test_compress_generated_text >Only in xz-5.4.3/tests: test_compress_prepared_bcj_sparc >Only in xz-5.4.3/tests: test_compress_prepared_bcj_x86 >diff -ur xz-5.2.5/tests/test_files.sh xz-5.4.3/tests/test_files.sh >--- xz-5.2.5/tests/test_files.sh 2020-03-17 17:28:50 >+++ xz-5.4.3/tests/test_files.sh 2023-05-04 17:21:05 >@@ -15,25 +15,83 @@ > test -x "$XZ" || XZ= > test -x "$XZDEC" || XZDEC= > if test -z "$XZ$XZDEC"; then >- (exit 77) >+ echo "xz and xzdec were not built, skipping this test." > exit 77 > fi > >+# If decompression support is missing, this test is skipped. >+# This isn't perfect as if only some decompressors are disabled >+# then some good files might not decompress and the test fails >+# for a (kind of) wrong reason. >+if grep 'define HAVE_DECODERS' ../config.h > /dev/null ; then >+ : >+else >+ echo "Decompression support is disabled, skipping this test." >+ exit 77 >+fi >+ >+# If a feature was disabled at build time, make it possible to skip >+# some of the test files. Use exit status 77 if any files were skipped. >+EXIT_STATUS=0 >+have_feature() >+{ >+ grep "define HAVE_$1" ../config.h > /dev/null && return 0 >+ printf '%s: Skipping because HAVE_%s is not enabled\n' "$2" "$1" >+ EXIT_STATUS=77 >+ return 1 >+} >+ >+ >+####### >+# .xz # >+####### >+ >+# If these integrity check types were disabled at build time, >+# allow the tests to pass still. >+NO_WARN= >+grep 'define HAVE_CHECK_CRC64' ../config.h > /dev/null || NO_WARN=-qQ >+grep 'define HAVE_CHECK_SHA256' ../config.h > /dev/null || NO_WARN=-qQ >+ > for I in "$srcdir"/files/good-*.xz > do >- if test -z "$XZ" || "$XZ" -dc "$I" > /dev/null; then >+ # If features were disabled at build time, keep this still working. >+ case $I in >+ */good-1-*delta-lzma2*.xz) >+ have_feature DECODER_DELTA "$I" || continue >+ ;; >+ esac >+ case $I in >+ */good-1-empty-bcj-lzma2.xz) >+ have_feature DECODER_POWERPC "$I" || continue >+ ;; >+ esac >+ case $I in >+ */good-1-sparc-lzma2.xz) >+ have_feature DECODER_SPARC "$I" || continue >+ ;; >+ esac >+ case $I in >+ */good-1-x86-lzma2.xz) >+ have_feature DECODER_X86 "$I" || continue >+ ;; >+ esac >+ case $I in >+ */good-1-arm64-lzma2-*.xz) >+ have_feature DECODER_ARM64 "$I" || continue >+ ;; >+ esac >+ >+ if test -z "$XZ" || "$XZ" $NO_WARN -dc "$I" > /dev/null; then > : > else > echo "Good file failed: $I" >- (exit 1) > exit 1 > fi > >- if test -z "$XZDEC" || "$XZDEC" "$I" > /dev/null; then >+ if test -z "$XZDEC" || "$XZDEC" $NO_WARN "$I" > /dev/null; then > : > else > echo "Good file failed: $I" >- (exit 1) > exit 1 > fi > done >@@ -42,16 +100,98 @@ > do > if test -n "$XZ" && "$XZ" -dc "$I" > /dev/null 2>&1; then > echo "Bad file succeeded: $I" >- (exit 1) > exit 1 > fi > >- if test -n "$XZDEC" && "$XZDEC" "$I" > /dev/null 2>&1; then >+ # xzdec doesn't warn about unsupported check so skip this if any of >+ # the check types were disabled at built time (NO_WARN isn't empty). >+ if test -n "$XZDEC" && test -z "$NO_WARN" \ >+ && "$XZDEC" "$I" > /dev/null 2>&1; then > echo "Bad file succeeded: $I" >- (exit 1) > exit 1 > fi > done > >-(exit 0) >-exit 0 >+# Testing for the lzma_index_append() bug in <= 5.2.6 needs "xz -l": >+I="$srcdir/files/bad-3-index-uncomp-overflow.xz" >+if test -n "$XZ" && "$XZ" -l "$I" > /dev/null 2>&1; then >+ echo "Bad file succeeded with xz -l: $I" >+ exit 1 >+fi >+ >+for I in "$srcdir"/files/unsupported-*.xz >+do >+ # Test these only with xz as unsupported-check.xz will exit >+ # successfully with xzdec because it doesn't warn about >+ # unsupported check type. >+ if test -n "$XZ" && "$XZ" -dc "$I" > /dev/null 2>&1; then >+ echo "Unsupported file succeeded: $I" >+ exit 1 >+ fi >+done >+ >+# Test that this passes with --no-warn (-Q). >+I="$srcdir/files/unsupported-check.xz" >+if test -z "$XZ" || "$XZ" -dcqQ "$I" > /dev/null; then >+ : >+else >+ echo "Unsupported file failed with xz -Q: $I" >+ exit 1 >+fi >+ >+if test -z "$XZDEC" || "$XZDEC" -qQ "$I" > /dev/null; then >+ : >+else >+ echo "Unsupported file failed with xzdec -Q: $I" >+ exit 1 >+fi >+ >+ >+######### >+# .lzma # >+######### >+ >+for I in "$srcdir"/files/good-*.lzma >+do >+ if test -z "$XZ" || "$XZ" -dc "$I" > /dev/null; then >+ : >+ else >+ echo "Good file failed: $I" >+ exit 1 >+ fi >+done >+ >+for I in "$srcdir"/files/bad-*.lzma >+do >+ if test -n "$XZ" && "$XZ" -dc "$I" > /dev/null 2>&1; then >+ echo "Bad file succeeded: $I" >+ exit 1 >+ fi >+done >+ >+ >+####### >+# .lz # >+####### >+ >+if grep 'define HAVE_LZIP_DECODER' ../config.h > /dev/null ; then >+ for I in "$srcdir"/files/good-*.lz >+ do >+ if test -z "$XZ" || "$XZ" -dc "$I" > /dev/null; then >+ : >+ else >+ echo "Good file failed: $I" >+ exit 1 >+ fi >+ done >+ >+ for I in "$srcdir"/files/bad-*.lz "$srcdir"/files/unsupported-*.lz >+ do >+ if test -n "$XZ" && "$XZ" -dc "$I" > /dev/null 2>&1; then >+ echo "Bad file succeeded: $I" >+ exit 1 >+ fi >+ done >+fi >+ >+exit "$EXIT_STATUS" >diff -ur xz-5.2.5/tests/test_filter_flags.c xz-5.4.3/tests/test_filter_flags.c >--- xz-5.2.5/tests/test_filter_flags.c 2020-03-17 17:28:50 >+++ xz-5.4.3/tests/test_filter_flags.c 2023-05-04 17:21:05 >@@ -3,7 +3,8 @@ > /// \file test_filter_flags.c > /// \brief Tests Filter Flags coders > // >-// Author: Lasse Collin >+// Authors: Jia Tan >+// Lasse Collin > // > // This file has been put into the public domain. > // You can do whatever you want with this file. >@@ -12,247 +13,515 @@ > > #include "tests.h" > >+// FIXME: This is from src/liblzma/common/common.h but it cannot be >+// included here. This constant is needed in only a few files, perhaps >+// move it to some other internal header or create a new one? >+#define LZMA_FILTER_RESERVED_START (LZMA_VLI_C(1) << 62) > >-static uint8_t buffer[4096]; >-static lzma_filter known_flags; >-static lzma_filter decoded_flags; >-static lzma_stream strm = LZMA_STREAM_INIT; > >+#if defined(HAVE_ENCODERS) >+// No tests are run without encoders, so init the global filters >+// only when the encoders are enabled. >+static lzma_filter lzma1_filter = { LZMA_FILTER_LZMA1, NULL }; >+static lzma_filter lzma2_filter = { LZMA_FILTER_LZMA2, NULL }; >+static lzma_filter delta_filter = { LZMA_FILTER_DELTA, NULL }; > >-static bool >-encode(uint32_t known_size) >-{ >- memcrap(buffer, sizeof(buffer)); >+static lzma_filter bcj_filters_encoders[] = { >+#ifdef HAVE_ENCODER_X86 >+ { LZMA_FILTER_X86, NULL }, >+#endif >+#ifdef HAVE_ENCODER_POWERPC >+ { LZMA_FILTER_POWERPC, NULL }, >+#endif >+#ifdef HAVE_ENCODER_IA64 >+ { LZMA_FILTER_IA64, NULL }, >+#endif >+#ifdef HAVE_ENCODER_ARM >+ { LZMA_FILTER_ARM, NULL }, >+#endif >+#ifdef HAVE_ENCODER_ARM64 >+ { LZMA_FILTER_ARM64, NULL }, >+#endif >+#ifdef HAVE_ENCODER_ARMTHUMB >+ { LZMA_FILTER_ARMTHUMB, NULL }, >+#endif >+#ifdef HAVE_ENCODER_SPARC >+ { LZMA_FILTER_SPARC, NULL }, >+#endif >+}; > >- uint32_t tmp; >- if (lzma_filter_flags_size(&tmp, &known_flags) != LZMA_OK) >- return true; >+// HAVE_ENCODERS ifdef not termianted here because decoders are >+// only used if encoders are, but encoders can still be used >+// even if decoders are not. > >- if (tmp != known_size) >- return true; >+#ifdef HAVE_DECODERS >+static lzma_filter bcj_filters_decoders[] = { >+#ifdef HAVE_DECODER_X86 >+ { LZMA_FILTER_X86, NULL }, >+#endif >+#ifdef HAVE_DECODER_POWERPC >+ { LZMA_FILTER_POWERPC, NULL }, >+#endif >+#ifdef HAVE_DECODER_IA64 >+ { LZMA_FILTER_IA64, NULL }, >+#endif >+#ifdef HAVE_DECODER_ARM >+ { LZMA_FILTER_ARM, NULL }, >+#endif >+#ifdef HAVE_DECODER_ARM64 >+ { LZMA_FILTER_ARM64, NULL }, >+#endif >+#ifdef HAVE_DECODER_ARMTHUMB >+ { LZMA_FILTER_ARMTHUMB, NULL }, >+#endif >+#ifdef HAVE_DECODER_SPARC >+ { LZMA_FILTER_SPARC, NULL }, >+#endif >+}; >+#endif >+#endif > >- size_t out_pos = 0; >- if (lzma_filter_flags_encode(&known_flags, >- buffer, &out_pos, known_size) != LZMA_OK) >- return true; > >- if (out_pos != known_size) >- return true; >+static void >+test_lzma_filter_flags_size(void) >+{ >+#ifndef HAVE_ENCODERS >+ assert_skip("Encoder support disabled"); >+#else >+ // For each supported filter, test that the size can be calculated >+ // and that the size calculated is reasonable. A reasonable size >+ // must be greater than 0, but less than the maximum size for the >+ // block header. >+ uint32_t size = 0; >+ if (lzma_filter_encoder_is_supported(LZMA_FILTER_LZMA1)) { >+ assert_lzma_ret(lzma_filter_flags_size(&size, >+ &lzma1_filter), LZMA_PROG_ERROR); >+ } > >- return false; >-} >+ if (lzma_filter_encoder_is_supported(LZMA_FILTER_LZMA2)) { >+ assert_lzma_ret(lzma_filter_flags_size(&size, >+ &lzma2_filter), LZMA_OK); >+ assert_true(size != 0 && size < LZMA_BLOCK_HEADER_SIZE_MAX); >+ } > >+ // Do not use macro ARRAY_SIZE() in the for loop condition directly. >+ // If the BCJ filters are not configured and built, then ARRAY_SIZE() >+ // will return 0 and cause a warning because the for loop will never >+ // execute since any unsigned number cannot be < 0 (-Werror=type-limits). >+ const uint32_t bcj_array_size = ARRAY_SIZE(bcj_filters_encoders); >+ for (uint32_t i = 0; i < bcj_array_size; i++) { >+ assert_lzma_ret(lzma_filter_flags_size(&size, >+ &bcj_filters_encoders[i]), LZMA_OK); >+ assert_true(size != 0 && size < LZMA_BLOCK_HEADER_SIZE_MAX); >+ } > >-static bool >-decode_ret(uint32_t known_size, lzma_ret expected_ret) >-{ >- memcrap(&decoded_flags, sizeof(decoded_flags)); >+ if (lzma_filter_encoder_is_supported(LZMA_FILTER_DELTA)) { >+ assert_lzma_ret(lzma_filter_flags_size(&size, >+ &delta_filter), LZMA_OK); >+ assert_true(size != 0 && size < LZMA_BLOCK_HEADER_SIZE_MAX); >+ } > >- size_t pos = 0; >- if (lzma_filter_flags_decode(&decoded_flags, NULL, >- buffer, &pos, known_size) != expected_ret >- || pos != known_size) >- return true; >+ // Test invalid Filter IDs >+ lzma_filter bad_filter = { 2, NULL }; > >- return false; >+ assert_lzma_ret(lzma_filter_flags_size(&size, &bad_filter), >+ LZMA_OPTIONS_ERROR); >+ bad_filter.id = LZMA_VLI_MAX; >+ assert_lzma_ret(lzma_filter_flags_size(&size, &bad_filter), >+ LZMA_PROG_ERROR); >+ bad_filter.id = LZMA_FILTER_RESERVED_START; >+ assert_lzma_ret(lzma_filter_flags_size(&size, &bad_filter), >+ LZMA_PROG_ERROR); >+#endif > } > > >-static bool >-decode(uint32_t known_size) >+// Helper function for test_lzma_filter_flags_encode. >+// The should_encode parameter represents if the encoding operation >+// is expected to fail. >+// Avoid data -> encode -> decode -> compare to data. >+// Instead create expected encoding and compare to result from >+// lzma_filter_flags_encode. >+// Filter Flags in .xz are encoded as: >+// |Filter ID (VLI)|Size of Properties (VLI)|Filter Properties| >+#if defined(HAVE_ENCODERS) && defined(HAVE_DECODERS) >+static void >+verify_filter_flags_encode(lzma_filter *filter, bool should_encode) > { >- if (decode_ret(known_size, LZMA_OK)) >- return true; >+ uint32_t size = 0; > >- if (known_flags.id != decoded_flags.id) >- return true; >+ // First calculate the size of Filter Flags to know how much >+ // memory to allocate to hold the encoded Filter Flags >+ assert_lzma_ret(lzma_filter_flags_size(&size, filter), LZMA_OK); >+ uint8_t *encoded_out = tuktest_malloc(size * sizeof(uint8_t)); >+ size_t out_pos = 0; >+ if (!should_encode) { >+ assert_false(lzma_filter_flags_encode(filter, encoded_out, >+ &out_pos, size) == LZMA_OK); >+ return; >+ } > >- return false; >+ // Next encode the Filter Flags for the provided filter >+ assert_lzma_ret(lzma_filter_flags_encode(filter, encoded_out, >+ &out_pos, size), LZMA_OK); >+ assert_uint_eq(size, out_pos); >+ >+ // Next decode the VLI for the Filter ID and verify it matches >+ // the expected Filter ID >+ size_t filter_id_vli_size = 0; >+ lzma_vli filter_id = 0; >+ assert_lzma_ret(lzma_vli_decode(&filter_id, NULL, encoded_out, >+ &filter_id_vli_size, size), LZMA_OK); >+ assert_uint_eq(filter->id, filter_id); >+ >+ // Next decode the Size of Properites and ensure it equals >+ // the expected size. >+ // Expected size should be: >+ // total filter flag length - size of filter id VLI + size of >+ // property size VLI >+ // Not verifying the contents of Filter Properties since >+ // that belongs in a different test >+ size_t size_of_properties_vli_size = 0; >+ lzma_vli size_of_properties = 0; >+ assert_lzma_ret(lzma_vli_decode(&size_of_properties, NULL, >+ encoded_out + filter_id_vli_size, >+ &size_of_properties_vli_size, size), LZMA_OK); >+ assert_uint_eq(size - (size_of_properties_vli_size + >+ filter_id_vli_size), size_of_properties); > } >+#endif > > >-#if defined(HAVE_ENCODER_X86) && defined(HAVE_DECODER_X86) > static void >-test_bcj(void) >+test_lzma_filter_flags_encode(void) > { >- // Test 1 >- known_flags.id = LZMA_FILTER_X86; >- known_flags.options = NULL; >+#if !defined(HAVE_ENCODERS) || !defined(HAVE_DECODERS) >+ assert_skip("Encoder or decoder support disabled"); >+#else >+ // No test for LZMA1 since the .xz format does not support LZMA1 >+ // and so the flags cannot be encoded for that filter >+ if (lzma_filter_encoder_is_supported(LZMA_FILTER_LZMA2)) { >+ // Test with NULL options that should fail >+ lzma_options_lzma *options = lzma2_filter.options; >+ lzma2_filter.options = NULL; >+ verify_filter_flags_encode(&lzma2_filter, false); > >- expect(!encode(2)); >- expect(!decode(2)); >- expect(decoded_flags.options == NULL); >+ // Place options back in the filter, and test should pass >+ lzma2_filter.options = options; >+ verify_filter_flags_encode(&lzma2_filter, true); >+ } > >- // Test 2 >- lzma_options_bcj options; >- options.start_offset = 0; >- known_flags.options = &options; >- expect(!encode(2)); >- expect(!decode(2)); >- expect(decoded_flags.options == NULL); >+ // NOTE: Many BCJ filters require that start_offset is a multiple >+ // of some power of two. The Filter Flags encoder and decoder don't >+ // completely validate the options and thus 257 passes the tests >+ // with all BCJ filters. It would be caught when initializing >+ // a filter chain encoder or decoder. >+ lzma_options_bcj bcj_options = { >+ .start_offset = 257 >+ }; > >- // Test 3 >- options.start_offset = 123456; >- known_flags.options = &options; >- expect(!encode(6)); >- expect(!decode(6)); >- expect(decoded_flags.options != NULL); >+ const uint32_t bcj_array_size = ARRAY_SIZE(bcj_filters_encoders); >+ for (uint32_t i = 0; i < bcj_array_size; i++) { >+ // NULL options should pass for bcj filters >+ verify_filter_flags_encode(&bcj_filters_encoders[i], true); >+ lzma_filter bcj_with_options = { >+ bcj_filters_encoders[i].id, &bcj_options }; >+ verify_filter_flags_encode(&bcj_with_options, true); >+ } > >- lzma_options_bcj *decoded = decoded_flags.options; >- expect(decoded->start_offset == options.start_offset); >+ if (lzma_filter_encoder_is_supported(LZMA_FILTER_DELTA)) { >+ lzma_options_delta delta_opts_below_min = { >+ .type = LZMA_DELTA_TYPE_BYTE, >+ .dist = LZMA_DELTA_DIST_MIN - 1 >+ }; > >- free(decoded); >-} >-#endif >+ lzma_options_delta delta_opts_above_max = { >+ .type = LZMA_DELTA_TYPE_BYTE, >+ .dist = LZMA_DELTA_DIST_MAX + 1 >+ }; > >+ verify_filter_flags_encode(&delta_filter, true); > >-#if defined(HAVE_ENCODER_DELTA) && defined(HAVE_DECODER_DELTA) >-static void >-test_delta(void) >-{ >- // Test 1 >- known_flags.id = LZMA_FILTER_DELTA; >- known_flags.options = NULL; >- expect(encode(99)); >+ lzma_filter delta_filter_bad_options = { >+ LZMA_FILTER_DELTA, &delta_opts_below_min }; > >- // Test 2 >- lzma_options_delta options = { >- .type = LZMA_DELTA_TYPE_BYTE, >- .dist = 0 >- }; >- known_flags.options = &options; >- expect(encode(99)); >+ // Next test error case using minimum - 1 delta distance >+ verify_filter_flags_encode(&delta_filter_bad_options, false); > >- // Test 3 >- options.dist = LZMA_DELTA_DIST_MIN; >- expect(!encode(3)); >- expect(!decode(3)); >- expect(((lzma_options_delta *)(decoded_flags.options))->dist >- == options.dist); >+ // Next test error case using maximum + 1 delta distance >+ delta_filter_bad_options.options = &delta_opts_above_max; >+ verify_filter_flags_encode(&delta_filter_bad_options, false); > >- free(decoded_flags.options); >+ // Next test NULL case >+ delta_filter_bad_options.options = NULL; >+ verify_filter_flags_encode(&delta_filter_bad_options, false); >+ } > >- // Test 4 >- options.dist = LZMA_DELTA_DIST_MAX; >- expect(!encode(3)); >- expect(!decode(3)); >- expect(((lzma_options_delta *)(decoded_flags.options))->dist >- == options.dist); >+ // Test expected failing cases >+ lzma_filter bad_filter = { LZMA_FILTER_RESERVED_START, NULL }; >+ size_t out_pos = 0; >+ size_t out_size = LZMA_BLOCK_HEADER_SIZE_MAX; >+ uint8_t out[LZMA_BLOCK_HEADER_SIZE_MAX]; > >- free(decoded_flags.options); > >- // Test 5 >- options.dist = LZMA_DELTA_DIST_MAX + 1; >- expect(encode(99)); >-} >+ // Filter ID outside of valid range >+ assert_lzma_ret(lzma_filter_flags_encode(&bad_filter, out, &out_pos, >+ out_size), LZMA_PROG_ERROR); >+ out_pos = 0; >+ bad_filter.id = LZMA_VLI_MAX + 1; >+ assert_lzma_ret(lzma_filter_flags_encode(&bad_filter, out, &out_pos, >+ out_size), LZMA_PROG_ERROR); >+ out_pos = 0; >+ >+ // Invalid Filter ID >+ bad_filter.id = 2; >+ assert_lzma_ret(lzma_filter_flags_encode(&bad_filter, out, &out_pos, >+ out_size), LZMA_OPTIONS_ERROR); >+ out_pos = 0; >+ >+ // Out size too small >+ if (lzma_filter_encoder_is_supported(LZMA_FILTER_LZMA2)) { >+ uint32_t bad_size = 0; >+ >+ // First test with 0 output size >+ assert_lzma_ret(lzma_filter_flags_encode( >+ &lzma2_filter, out, &out_pos, 0), >+ LZMA_PROG_ERROR); >+ >+ // Next calculate the size needed to encode and >+ // use less than that >+ assert_lzma_ret(lzma_filter_flags_size(&bad_size, >+ &lzma2_filter), LZMA_OK); >+ >+ assert_lzma_ret(lzma_filter_flags_encode( >+ &lzma2_filter, out, &out_pos, >+ bad_size - 1), LZMA_PROG_ERROR); >+ out_pos = 0; >+ } >+ >+ // Invalid options >+ if (lzma_filter_encoder_is_supported(LZMA_FILTER_DELTA)) { >+ bad_filter.id = LZMA_FILTER_DELTA; >+ >+ // First test with NULL options >+ assert_lzma_ret(lzma_filter_flags_encode(&bad_filter, out, >+ &out_pos, out_size), LZMA_PROG_ERROR); >+ out_pos = 0; >+ >+ // Next test with invalid options >+ lzma_options_delta bad_options = { >+ .dist = LZMA_DELTA_DIST_MAX + 1, >+ .type = LZMA_DELTA_TYPE_BYTE >+ }; >+ bad_filter.options = &bad_options; >+ >+ assert_lzma_ret(lzma_filter_flags_encode(&bad_filter, out, >+ &out_pos, out_size), LZMA_PROG_ERROR); >+ } > #endif >+} > >-/* >-#ifdef HAVE_FILTER_LZMA >+ >+// Helper function for test_lzma_filter_flags_decode. >+// Encodes the filter_in without using lzma_filter_flags_encode. >+// Leaves the specific assertions of filter_out options to the caller >+// because it is agnostic to the type of options used in the call >+#if defined(HAVE_ENCODERS) && defined(HAVE_DECODERS) > static void >-validate_lzma(void) >+verify_filter_flags_decode(lzma_filter *filter_in, lzma_filter *filter_out) > { >- const lzma_options_lzma *known = known_flags.options; >- const lzma_options_lzma *decoded = decoded_flags.options; >+ uint32_t total_size = 0; > >- expect(known->dictionary_size <= decoded->dictionary_size); >+ assert_lzma_ret(lzma_filter_flags_size(&total_size, filter_in), >+ LZMA_OK); >+ assert_uint(total_size, >, 0); >+ uint8_t *filter_flag_buffer = tuktest_malloc(total_size); > >- if (known->dictionary_size == 1) >- expect(decoded->dictionary_size == 1); >- else >- expect(known->dictionary_size + known->dictionary_size / 2 >- > decoded->dictionary_size); >- >- expect(known->literal_context_bits == decoded->literal_context_bits); >- expect(known->literal_pos_bits == decoded->literal_pos_bits); >- expect(known->pos_bits == decoded->pos_bits); >+ uint32_t properties_size = 0; >+ size_t out_pos = 0; >+ size_t in_pos = 0; >+ assert_lzma_ret(lzma_properties_size(&properties_size, filter_in), >+ LZMA_OK); >+ assert_lzma_ret(lzma_vli_encode(filter_in->id, NULL, >+ filter_flag_buffer, &out_pos, total_size), LZMA_OK); >+ assert_lzma_ret(lzma_vli_encode(properties_size, NULL, >+ filter_flag_buffer, &out_pos, total_size), >+ LZMA_OK); >+ assert_lzma_ret(lzma_properties_encode(filter_in, >+ filter_flag_buffer + out_pos), LZMA_OK); >+ assert_lzma_ret(lzma_filter_flags_decode(filter_out, NULL, >+ filter_flag_buffer, &in_pos, total_size), >+ LZMA_OK); >+ assert_uint_eq(filter_in->id, filter_out->id); > } >+#endif > > > static void >-test_lzma(void) >+test_lzma_filter_flags_decode(void) > { >- // Test 1 >- known_flags.id = LZMA_FILTER_LZMA1; >- known_flags.options = NULL; >- expect(encode(99)); >+#if !defined(HAVE_ENCODERS) || !defined(HAVE_DECODERS) >+ assert_skip("Encoder or decoder support disabled"); >+#else >+ // For each filter, only run the decoder test if both the encoder >+ // and decoder are enabled. This is because verify_filter_flags_decode >+ // uses lzma_filter_flags_size which requires the encoder. >+ if (lzma_filter_decoder_is_supported(LZMA_FILTER_LZMA2) && >+ lzma_filter_encoder_is_supported(LZMA_FILTER_LZMA2)) { >+ lzma_filter lzma2_decoded = { LZMA_FILTER_LZMA2, NULL }; > >- // Test 2 >- lzma_options_lzma options = { >- .dictionary_size = 0, >- .literal_context_bits = 0, >- .literal_pos_bits = 0, >- .pos_bits = 0, >- .preset_dictionary = NULL, >- .preset_dictionary_size = 0, >- .mode = LZMA_MODE_INVALID, >- .fast_bytes = 0, >- .match_finder = LZMA_MF_INVALID, >- .match_finder_cycles = 0, >- }; >+ verify_filter_flags_decode(&lzma2_filter, &lzma2_decoded); > >- // Test 3 (empty dictionary not allowed) >- known_flags.options = &options; >- expect(encode(99)); >+ lzma_options_lzma *expected = lzma2_filter.options; >+ lzma_options_lzma *decoded = lzma2_decoded.options; > >- // Test 4 (brute-force test some valid dictionary sizes) >- options.dictionary_size = LZMA_DICTIONARY_SIZE_MIN; >- while (options.dictionary_size != LZMA_DICTIONARY_SIZE_MAX) { >- if (++options.dictionary_size == 5000) >- options.dictionary_size = LZMA_DICTIONARY_SIZE_MAX - 5; >+ // Only the dictionary size is encoded and decoded >+ // so only compare those >+ assert_uint_eq(decoded->dict_size, expected->dict_size); > >- expect(!encode(4)); >- expect(!decode(4)); >- validate_lzma(); >- >- free(decoded_flags.options); >+ // The decoded options must be freed by the caller >+ free(decoded); > } > >- // Test 5 (too big dictionary size) >- options.dictionary_size = LZMA_DICTIONARY_SIZE_MAX + 1; >- expect(encode(99)); >+ const uint32_t bcj_array_size = ARRAY_SIZE(bcj_filters_decoders); >+ for (uint32_t i = 0; i < bcj_array_size; i++) { >+ if (lzma_filter_encoder_is_supported( >+ bcj_filters_decoders[i].id)) { >+ lzma_filter bcj_decoded = { >+ bcj_filters_decoders[i].id, NULL }; > >- // Test 6 (brute-force test lc/lp/pb) >- options.dictionary_size = LZMA_DICTIONARY_SIZE_MIN; >- for (uint32_t lc = LZMA_LITERAL_CONTEXT_BITS_MIN; >- lc <= LZMA_LITERAL_CONTEXT_BITS_MAX; ++lc) { >- for (uint32_t lp = LZMA_LITERAL_POS_BITS_MIN; >- lp <= LZMA_LITERAL_POS_BITS_MAX; ++lp) { >- for (uint32_t pb = LZMA_POS_BITS_MIN; >- pb <= LZMA_POS_BITS_MAX; ++pb) { >- if (lc + lp > LZMA_LITERAL_BITS_MAX) >- continue; >+ lzma_filter bcj_encoded = { >+ bcj_filters_decoders[i].id, NULL }; > >- options.literal_context_bits = lc; >- options.literal_pos_bits = lp; >- options.pos_bits = pb; >+ // First test without options >+ verify_filter_flags_decode(&bcj_encoded, >+ &bcj_decoded); >+ assert_true(bcj_decoded.options == NULL); > >- expect(!encode(4)); >- expect(!decode(4)); >- validate_lzma(); >+ // Next test with offset >+ lzma_options_bcj options = { >+ .start_offset = 257 >+ }; > >- free(decoded_flags.options); >- } >+ bcj_encoded.options = &options; >+ verify_filter_flags_decode(&bcj_encoded, >+ &bcj_decoded); >+ lzma_options_bcj *decoded_opts = bcj_decoded.options; >+ assert_uint_eq(decoded_opts->start_offset, >+ options.start_offset); >+ free(decoded_opts); > } > } >-} >+ >+ if (lzma_filter_decoder_is_supported(LZMA_FILTER_DELTA) && >+ lzma_filter_encoder_is_supported(LZMA_FILTER_DELTA)) { >+ lzma_filter delta_decoded = { LZMA_FILTER_DELTA, NULL }; >+ >+ verify_filter_flags_decode(&delta_filter, &delta_decoded); >+ lzma_options_delta *expected = delta_filter.options; >+ lzma_options_delta *decoded = delta_decoded.options; >+ assert_uint_eq(expected->dist, decoded->dist); >+ assert_uint_eq(expected->type, decoded->type); >+ >+ free(decoded); >+ } >+ >+ // Test expected failing cases >+ uint8_t bad_encoded_filter[LZMA_BLOCK_HEADER_SIZE_MAX]; >+ lzma_filter bad_filter; >+ >+ // Filter ID outside of valid range >+ lzma_vli bad_filter_id = LZMA_FILTER_RESERVED_START; >+ size_t bad_encoded_out_pos = 0; >+ size_t in_pos = 0; >+ >+ assert_lzma_ret(lzma_vli_encode(bad_filter_id, NULL, >+ bad_encoded_filter, &bad_encoded_out_pos, >+ LZMA_BLOCK_HEADER_SIZE_MAX), LZMA_OK); >+ >+ assert_lzma_ret(lzma_filter_flags_decode(&bad_filter, NULL, >+ bad_encoded_filter, &in_pos, >+ LZMA_BLOCK_HEADER_SIZE_MAX), LZMA_DATA_ERROR); >+ >+ bad_encoded_out_pos = 0; >+ in_pos = 0; >+ >+ // Invalid Filter ID >+ bad_filter_id = 2; >+ bad_encoded_out_pos = 0; >+ in_pos = 0; >+ >+ assert_lzma_ret(lzma_vli_encode(bad_filter_id, NULL, >+ bad_encoded_filter, &bad_encoded_out_pos, >+ LZMA_BLOCK_HEADER_SIZE_MAX), LZMA_OK); >+ >+ // Next encode Size of Properties with the value of 0 >+ assert_lzma_ret(lzma_vli_encode(0, NULL, >+ bad_encoded_filter, &bad_encoded_out_pos, >+ LZMA_BLOCK_HEADER_SIZE_MAX), LZMA_OK); >+ >+ // Decode should fail on bad Filter ID >+ assert_lzma_ret(lzma_filter_flags_decode(&bad_filter, NULL, >+ bad_encoded_filter, &in_pos, >+ LZMA_BLOCK_HEADER_SIZE_MAX), LZMA_OPTIONS_ERROR); >+ bad_encoded_out_pos = 0; >+ in_pos = 0; >+ >+ // Outsize too small >+ // Encode the LZMA2 filter normally, but then set >+ // the out size when decoding as too small >+ if (lzma_filter_encoder_is_supported(LZMA_FILTER_LZMA2) && >+ lzma_filter_decoder_is_supported(LZMA_FILTER_LZMA2)) { >+ uint32_t filter_flag_size = 0; >+ assert_lzma_ret(lzma_filter_flags_size(&filter_flag_size, >+ &lzma2_filter), LZMA_OK); >+ >+ assert_lzma_ret(lzma_filter_flags_encode(&lzma2_filter, >+ bad_encoded_filter, &bad_encoded_out_pos, >+ LZMA_BLOCK_HEADER_SIZE_MAX), LZMA_OK); >+ >+ assert_lzma_ret(lzma_filter_flags_decode(&bad_filter, NULL, >+ bad_encoded_filter, &in_pos, >+ filter_flag_size - 1), LZMA_DATA_ERROR); >+ } > #endif >-*/ >+} > >-int >-main(void) >+ >+extern int >+main(int argc, char **argv) > { >-#if defined(HAVE_ENCODER_X86) && defined(HAVE_DECODER_X86) >- test_bcj(); >-#endif >-#if defined(HAVE_ENCODER_DELTA) && defined(HAVE_DECODER_DELTA) >- test_delta(); >-#endif >-// #ifdef HAVE_FILTER_LZMA >-// test_lzma(); >-// #endif >+ tuktest_start(argc, argv); > >- lzma_end(&strm); >+#ifdef HAVE_ENCODERS >+ // Only init filter options if encoder is supported because decoder >+ // tests requires encoder support, so the decoder tests will only >+ // run if for a given filter both the encoder and decoder are enabled. >+ if (lzma_filter_encoder_is_supported(LZMA_FILTER_LZMA1)) { >+ lzma_options_lzma *options = tuktest_malloc( >+ sizeof(lzma_options_lzma)); >+ lzma_lzma_preset(options, LZMA_PRESET_DEFAULT); >+ lzma1_filter.options = options; >+ } > >- return 0; >+ if (lzma_filter_encoder_is_supported(LZMA_FILTER_LZMA2)) { >+ lzma_options_lzma *options = tuktest_malloc( >+ sizeof(lzma_options_lzma)); >+ lzma_lzma_preset(options, LZMA_PRESET_DEFAULT); >+ lzma2_filter.options = options; >+ } >+ >+ if (lzma_filter_encoder_is_supported(LZMA_FILTER_DELTA)) { >+ lzma_options_delta *options = tuktest_malloc( >+ sizeof(lzma_options_delta)); >+ options->dist = LZMA_DELTA_DIST_MIN; >+ options->type = LZMA_DELTA_TYPE_BYTE; >+ delta_filter.options = options; >+ } >+#endif >+ >+ tuktest_run(test_lzma_filter_flags_size); >+ tuktest_run(test_lzma_filter_flags_encode); >+ tuktest_run(test_lzma_filter_flags_decode); >+ return tuktest_end(); > } >Only in xz-5.4.3/tests: test_filter_str.c >Only in xz-5.4.3/tests: test_hardware.c >diff -ur xz-5.2.5/tests/test_index.c xz-5.4.3/tests/test_index.c >--- xz-5.2.5/tests/test_index.c 2020-03-17 17:28:50 >+++ xz-5.4.3/tests/test_index.c 2023-05-04 17:22:00 >@@ -2,9 +2,13 @@ > // > /// \file test_index.c > /// \brief Tests functions handling the lzma_index structure >+/// >+/// \todo Implement tests for lzma_file_info_decoder > // >-// Author: Lasse Collin >+// Authors: Jia Tan >+// Lasse Collin > // >+// > // This file has been put into the public domain. > // You can do whatever you want with this file. > // >@@ -12,624 +16,1222 @@ > > #include "tests.h" > >-#define MEMLIMIT (LZMA_VLI_C(1) << 20) >+// liblzma internal header file needed for: >+// UNPADDED_SIZE_MIN >+// UNPADDED_SIZE_MAX >+// vli_ceil4 >+#include "common/index.h" > >-#define SMALL_COUNT 3 >-#define BIG_COUNT 5555 > >+#define MEMLIMIT (UINT64_C(1) << 20) > >-static lzma_index * >-create_empty(void) >+static uint8_t *decode_buffer; >+static size_t decode_buffer_size = 0; >+static lzma_index *decode_test_index; >+ >+ >+static void >+test_lzma_index_memusage(void) > { >- lzma_index *i = lzma_index_init(NULL); >- expect(i != NULL); >- return i; >+ // The return value from lzma_index_memusage is an approximation >+ // of the amount of memory needed for lzma_index for a given >+ // amount of Streams and Blocks. It will be an upperbound, >+ // so this test will mostly sanity check and error check the >+ // function. >+ >+ // The maximum number of Streams should be UINT32_MAX in the >+ // current implementation even though the parameter is lzma_vli. >+ assert_uint_eq(lzma_index_memusage((lzma_vli)UINT32_MAX + 1, 1), >+ UINT64_MAX); >+ >+ // The maximum number of Blocks should be LZMA_VLI_MAX >+ assert_uint_eq(lzma_index_memusage(1, LZMA_VLI_MAX), UINT64_MAX); >+ >+ // Number of Streams must be non-zero >+ assert_uint_eq(lzma_index_memusage(0, 1), UINT64_MAX); >+ >+ // Number of Blocks CAN be zero >+ assert_uint(lzma_index_memusage(1, 0), !=, UINT64_MAX); >+ >+ // Arbitrary values for Stream and Block should work without error >+ // and should always increase >+ uint64_t previous = 1; >+ lzma_vli streams = 1; >+ lzma_vli blocks = 1; >+ >+ // Test 100 different increasing values for Streams and Block >+ for (int i = 0; i < 100; i++) { >+ uint64_t current = lzma_index_memusage(streams, blocks); >+ assert_uint(current, >, previous); >+ previous = current; >+ streams += 29; >+ blocks += 107; >+ } >+ >+ // Force integer overflow in calculation (should result in an error) >+ assert_uint_eq(lzma_index_memusage(UINT32_MAX, LZMA_VLI_MAX), >+ UINT64_MAX); > } > > >-static lzma_index * >-create_small(void) >+static void >+test_lzma_index_memused(void) > { >- lzma_index *i = lzma_index_init(NULL); >- expect(i != NULL); >- expect(lzma_index_append(i, NULL, 101, 555) == LZMA_OK); >- expect(lzma_index_append(i, NULL, 602, 777) == LZMA_OK); >- expect(lzma_index_append(i, NULL, 804, 999) == LZMA_OK); >- return i; >+ // Very similar to test_lzma_index_memusage above since >+ // lzma_index_memused is essentially a wrapper for >+ // lzma_index_memusage >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); >+ >+ // Test with empty Index >+ assert_uint(lzma_index_memused(idx), <, UINT64_MAX); >+ >+ // Append small Blocks and then test again (should pass). >+ for (lzma_vli i = 0; i < 10; i++) >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN, 1), LZMA_OK); >+ >+ assert_uint(lzma_index_memused(idx), <, UINT64_MAX); >+ >+ lzma_index_end(idx, NULL); > } > > >-static lzma_index * >-create_big(void) >+static void >+test_lzma_index_append(void) > { >- lzma_index *i = lzma_index_init(NULL); >- expect(i != NULL); >+ // Basic input-ouput test done here. >+ // Less trivial tests for this function are done throughout >+ // other tests. > >- lzma_vli total_size = 0; >- lzma_vli uncompressed_size = 0; >+ // First test with NULL lzma_index >+ assert_lzma_ret(lzma_index_append(NULL, NULL, UNPADDED_SIZE_MIN, >+ 1), LZMA_PROG_ERROR); > >- // Add pseudo-random sizes (but always the same size values). >- uint32_t n = 11; >- for (size_t j = 0; j < BIG_COUNT; ++j) { >- n = 7019 * n + 7607; >- const uint32_t t = n * 3011; >- expect(lzma_index_append(i, NULL, t, n) == LZMA_OK); >- total_size += (t + 3) & ~LZMA_VLI_C(3); >- uncompressed_size += n; >- } >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); > >- expect(lzma_index_block_count(i) == BIG_COUNT); >- expect(lzma_index_total_size(i) == total_size); >- expect(lzma_index_uncompressed_size(i) == uncompressed_size); >- expect(lzma_index_total_size(i) + lzma_index_size(i) >- + 2 * LZMA_STREAM_HEADER_SIZE >- == lzma_index_stream_size(i)); >+ // Test with invalid Unpadded Size >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN - 1, 1), LZMA_PROG_ERROR); >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MAX + 1, 1), LZMA_PROG_ERROR); > >- return i; >+ // Test with invalid Uncompressed Size >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MAX, LZMA_VLI_MAX + 1), >+ LZMA_PROG_ERROR); >+ >+ // Test expected successful Block appends >+ assert_lzma_ret(lzma_index_append(idx, NULL, UNPADDED_SIZE_MIN, >+ 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN * 2, >+ 2), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN * 3, >+ 3), LZMA_OK); >+ >+ lzma_index_end(idx, NULL); >+ >+ // Test uncompressed .xz file size growing too large. >+ // Should result in LZMA_DATA_ERROR. >+ idx = lzma_index_init(NULL); >+ >+ assert_lzma_ret(lzma_index_append(idx, NULL, UNPADDED_SIZE_MAX, >+ 1), LZMA_DATA_ERROR); >+ >+ // Test compressed size growing too large. >+ // Should result in LZMA_DATA_ERROR. >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN, LZMA_VLI_MAX), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN, 1), LZMA_DATA_ERROR); >+ >+ // Currently not testing for error case when the size of the Index >+ // grows too large to be stored. This was not practical to test for >+ // since too many Blocks needed to be created to cause this. >+ >+ lzma_index_end(idx, NULL); > } > > >-static bool >-is_equal(const lzma_index *a, const lzma_index *b) >+static void >+test_lzma_index_stream_flags(void) > { >- // Compare only the Stream and Block sizes and offsets. >- lzma_index_iter ra, rb; >- lzma_index_iter_init(&ra, a); >- lzma_index_iter_init(&rb, b); >+ // Only trivial tests done here testing for basic functionality. >+ // More in-depth testing for this function will be done in >+ // test_lzma_index_checks. > >- while (true) { >- bool reta = lzma_index_iter_next(&ra, LZMA_INDEX_ITER_ANY); >- bool retb = lzma_index_iter_next(&rb, LZMA_INDEX_ITER_ANY); >- if (reta) >- return !(reta ^ retb); >+ // Testing for NULL inputs >+ assert_lzma_ret(lzma_index_stream_flags(NULL, NULL), >+ LZMA_PROG_ERROR); > >- if (ra.stream.number != rb.stream.number >- || ra.stream.block_count >- != rb.stream.block_count >- || ra.stream.compressed_offset >- != rb.stream.compressed_offset >- || ra.stream.uncompressed_offset >- != rb.stream.uncompressed_offset >- || ra.stream.compressed_size >- != rb.stream.compressed_size >- || ra.stream.uncompressed_size >- != rb.stream.uncompressed_size >- || ra.stream.padding >- != rb.stream.padding) >- return false; >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); > >- if (ra.stream.block_count == 0) >- continue; >+ assert_lzma_ret(lzma_index_stream_flags(idx, NULL), >+ LZMA_PROG_ERROR); > >- if (ra.block.number_in_file != rb.block.number_in_file >- || ra.block.compressed_file_offset >- != rb.block.compressed_file_offset >- || ra.block.uncompressed_file_offset >- != rb.block.uncompressed_file_offset >- || ra.block.number_in_stream >- != rb.block.number_in_stream >- || ra.block.compressed_stream_offset >- != rb.block.compressed_stream_offset >- || ra.block.uncompressed_stream_offset >- != rb.block.uncompressed_stream_offset >- || ra.block.uncompressed_size >- != rb.block.uncompressed_size >- || ra.block.unpadded_size >- != rb.block.unpadded_size >- || ra.block.total_size >- != rb.block.total_size) >- return false; >+ lzma_stream_flags stream_flags = { >+ .version = 0, >+ .backward_size = LZMA_BACKWARD_SIZE_MIN, >+ .check = LZMA_CHECK_CRC32 >+ }; >+ >+ assert_lzma_ret(lzma_index_stream_flags(idx, &stream_flags), >+ LZMA_OK); >+ >+ lzma_index_end(idx, NULL); >+} >+ >+ >+static void >+test_lzma_index_checks(void) >+{ >+ // Tests should still pass, even if some of the check types >+ // are disabled. >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); >+ >+ lzma_stream_flags stream_flags = { >+ .version = 0, >+ .backward_size = LZMA_BACKWARD_SIZE_MIN, >+ .check = LZMA_CHECK_NONE >+ }; >+ >+ // First set the check type to None >+ assert_lzma_ret(lzma_index_stream_flags(idx, &stream_flags), >+ LZMA_OK); >+ assert_uint_eq(lzma_index_checks(idx), >+ UINT32_C(1) << LZMA_CHECK_NONE); >+ >+ // Set the check type to CRC32 and repeat >+ stream_flags.check = LZMA_CHECK_CRC32; >+ assert_lzma_ret(lzma_index_stream_flags(idx, &stream_flags), >+ LZMA_OK); >+ assert_uint_eq(lzma_index_checks(idx), >+ UINT32_C(1) << LZMA_CHECK_CRC32); >+ >+ // Set the check type to CRC64 and repeat >+ stream_flags.check = LZMA_CHECK_CRC64; >+ assert_lzma_ret(lzma_index_stream_flags(idx, &stream_flags), >+ LZMA_OK); >+ assert_uint_eq(lzma_index_checks(idx), >+ UINT32_C(1) << LZMA_CHECK_CRC64); >+ >+ // Set the check type to SHA256 and repeat >+ stream_flags.check = LZMA_CHECK_SHA256; >+ assert_lzma_ret(lzma_index_stream_flags(idx, &stream_flags), >+ LZMA_OK); >+ assert_uint_eq(lzma_index_checks(idx), >+ UINT32_C(1) << LZMA_CHECK_SHA256); >+ >+ // Create second lzma_index and cat to first >+ lzma_index *second = lzma_index_init(NULL); >+ assert_true(second != NULL); >+ >+ // Set the check type to CRC32 for the second lzma_index >+ stream_flags.check = LZMA_CHECK_CRC32; >+ assert_lzma_ret(lzma_index_stream_flags(second, &stream_flags), >+ LZMA_OK); >+ >+ assert_uint_eq(lzma_index_checks(second), >+ UINT32_C(1) << LZMA_CHECK_CRC32); >+ >+ assert_lzma_ret(lzma_index_cat(idx, second, NULL), LZMA_OK); >+ >+ // Index should now have both CRC32 and SHA256 >+ assert_uint_eq(lzma_index_checks(idx), >+ (UINT32_C(1) << LZMA_CHECK_CRC32) | >+ (UINT32_C(1) << LZMA_CHECK_SHA256)); >+ >+ // Change the check type of the second Stream to SHA256 >+ stream_flags.check = LZMA_CHECK_SHA256; >+ assert_lzma_ret(lzma_index_stream_flags(idx, &stream_flags), >+ LZMA_OK); >+ >+ // Index should now have only SHA256 >+ assert_uint_eq(lzma_index_checks(idx), >+ UINT32_C(1) << LZMA_CHECK_SHA256); >+ >+ // Test with a third Stream >+ lzma_index *third = lzma_index_init(NULL); >+ assert_true(third != NULL); >+ >+ stream_flags.check = LZMA_CHECK_CRC64; >+ assert_lzma_ret(lzma_index_stream_flags(third, &stream_flags), >+ LZMA_OK); >+ >+ assert_uint_eq(lzma_index_checks(third), >+ UINT32_C(1) << LZMA_CHECK_CRC64); >+ >+ assert_lzma_ret(lzma_index_cat(idx, third, NULL), LZMA_OK); >+ >+ // Index should now have CRC64 and SHA256 >+ assert_uint_eq(lzma_index_checks(idx), >+ (UINT32_C(1) << LZMA_CHECK_CRC64) | >+ (UINT32_C(1) << LZMA_CHECK_SHA256)); >+ >+ lzma_index_end(idx, NULL); >+} >+ >+ >+static void >+test_lzma_index_stream_padding(void) >+{ >+ // Test NULL lzma_index >+ assert_lzma_ret(lzma_index_stream_padding(NULL, 0), >+ LZMA_PROG_ERROR); >+ >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); >+ >+ // Test Stream Padding not a multiple of 4 >+ assert_lzma_ret(lzma_index_stream_padding(idx, 3), >+ LZMA_PROG_ERROR); >+ >+ // Test Stream Padding too large >+ assert_lzma_ret(lzma_index_stream_padding(idx, LZMA_VLI_MAX - 3), >+ LZMA_DATA_ERROR); >+ >+ // Test Stream Padding valid >+ assert_lzma_ret(lzma_index_stream_padding(idx, 0x1000), >+ LZMA_OK); >+ assert_lzma_ret(lzma_index_stream_padding(idx, 4), >+ LZMA_OK); >+ assert_lzma_ret(lzma_index_stream_padding(idx, 0), >+ LZMA_OK); >+ >+ // Test Stream Padding causing the file size to grow too large >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ LZMA_VLI_MAX - 0x1000, 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_stream_padding(idx, 0x1000), >+ LZMA_DATA_ERROR); >+ >+ lzma_index_end(idx, NULL); >+} >+ >+ >+static void >+test_lzma_index_stream_count(void) >+{ >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); >+ >+ assert_uint_eq(lzma_index_stream_count(idx), 1); >+ >+ // Appending Blocks should not change the Stream count value >+ assert_lzma_ret(lzma_index_append(idx, NULL, UNPADDED_SIZE_MIN, >+ 1), LZMA_OK); >+ >+ assert_uint_eq(lzma_index_stream_count(idx), 1); >+ >+ // Test with multiple Streams >+ for (uint32_t i = 0; i < 100; i++) { >+ lzma_index *idx_cat = lzma_index_init(NULL); >+ assert_true(idx != NULL); >+ assert_lzma_ret(lzma_index_cat(idx, idx_cat, NULL), LZMA_OK); >+ assert_uint_eq(lzma_index_stream_count(idx), i + 2); > } >+ >+ lzma_index_end(idx, NULL); > } > > > static void >-test_equal(void) >+test_lzma_index_block_count(void) > { >- lzma_index *a = create_empty(); >- lzma_index *b = create_small(); >- lzma_index *c = create_big(); >- expect(a && b && c); >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); > >- expect(is_equal(a, a)); >- expect(is_equal(b, b)); >- expect(is_equal(c, c)); >+ assert_uint_eq(lzma_index_block_count(idx), 0); > >- expect(!is_equal(a, b)); >- expect(!is_equal(a, c)); >- expect(!is_equal(b, c)); >+ const uint32_t iterations = 0x1000; >+ for (uint32_t i = 0; i < iterations; i++) { >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN, 1), LZMA_OK); >+ assert_uint_eq(lzma_index_block_count(idx), i + 1); >+ } > >- lzma_index_end(a, NULL); >- lzma_index_end(b, NULL); >- lzma_index_end(c, NULL); >+ // Create new lzma_index with a few Blocks >+ lzma_index *second = lzma_index_init(NULL); >+ assert_true(second != NULL); >+ >+ assert_lzma_ret(lzma_index_append(second, NULL, >+ UNPADDED_SIZE_MIN, 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(second, NULL, >+ UNPADDED_SIZE_MIN, 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(second, NULL, >+ UNPADDED_SIZE_MIN, 1), LZMA_OK); >+ >+ assert_uint_eq(lzma_index_block_count(second), 3); >+ >+ // Concatenate the lzma_indexes together and the result should have >+ // the sum of the two individual counts. >+ assert_lzma_ret(lzma_index_cat(idx, second, NULL), LZMA_OK); >+ assert_uint_eq(lzma_index_block_count(idx), iterations + 3); >+ >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN, 1), LZMA_OK); >+ >+ assert_uint_eq(lzma_index_block_count(idx), iterations + 4); >+ >+ lzma_index_end(idx, NULL); > } > > > static void >-test_overflow(void) >+test_lzma_index_size(void) > { >- // Integer overflow tests >- lzma_index *i = create_empty(); >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); > >- expect(lzma_index_append(i, NULL, LZMA_VLI_MAX - 5, 1234) >- == LZMA_DATA_ERROR); >+ // Base size should be: >+ // 1 byte Index Indicator >+ // 1 byte Number of Records >+ // 0 bytes Records >+ // 2 bytes Index Padding >+ // 4 bytes CRC32 >+ // Total: 8 bytes >+ assert_uint_eq(lzma_index_size(idx), 8); > >- // TODO >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN, 1), LZMA_OK); > >- lzma_index_end(i, NULL); >+ // New size should be: >+ // 1 byte Index Indicator >+ // 1 byte Number of Records >+ // 2 bytes Records >+ // 0 bytes Index Padding >+ // 4 bytes CRC32 >+ // Total: 8 bytes >+ assert_uint_eq(lzma_index_size(idx), 8); >+ >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ LZMA_VLI_MAX / 4, LZMA_VLI_MAX / 4), LZMA_OK); >+ >+ // New size should be: >+ // 1 byte Index Indicator >+ // 1 byte Number of Records >+ // 20 bytes Records >+ // 2 bytes Index Padding >+ // 4 bytes CRC32 >+ // Total: 28 bytes >+ assert_uint_eq(lzma_index_size(idx), 28); >+ >+ lzma_index_end(idx, NULL); > } > > > static void >-test_copy(const lzma_index *i) >+test_lzma_index_stream_size(void) > { >- lzma_index *d = lzma_index_dup(i, NULL); >- expect(d != NULL); >- expect(is_equal(i, d)); >- lzma_index_end(d, NULL); >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); >+ >+ // Stream size calculated by: >+ // Size of Stream Header (12 bytes) >+ // Size of all Blocks >+ // Size of the Index >+ // Size of the Stream Footer (12 bytes) >+ >+ // First test with empty Index >+ // Stream size should be: >+ // Size of Stream Header - 12 bytes >+ // Size of all Blocks - 0 bytes >+ // Size of Index - 8 bytes >+ // Size of Stream Footer - 12 bytes >+ // Total: 32 bytes >+ assert_uint_eq(lzma_index_stream_size(idx), 32); >+ >+ // Next, append a few Blocks and retest >+ assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK); >+ >+ // Stream size should be: >+ // Size of Stream Header - 12 bytes >+ // Size of all Blocks - 3000 bytes >+ // Size of Index - 16 bytes >+ // Size of Stream Footer - 12 bytes >+ // Total: 3040 bytes >+ assert_uint_eq(lzma_index_stream_size(idx), 3040); >+ >+ lzma_index *second = lzma_index_init(NULL); >+ assert_true(second != NULL); >+ >+ assert_uint_eq(lzma_index_stream_size(second), 32); >+ assert_lzma_ret(lzma_index_append(second, NULL, 1000, 1), LZMA_OK); >+ >+ // Stream size should be: >+ // Size of Stream Header - 12 bytes >+ // Size of all Blocks - 1000 bytes >+ // Size of Index - 12 bytes >+ // Size of Stream Footer - 12 bytes >+ // Total: 1036 bytes >+ assert_uint_eq(lzma_index_stream_size(second), 1036); >+ >+ assert_lzma_ret(lzma_index_cat(idx, second, NULL), LZMA_OK); >+ >+ // Stream size should be: >+ // Size of Stream Header - 12 bytes >+ // Size of all Blocks - 4000 bytes >+ // Size of Index - 20 bytes >+ // Size of Stream Footer - 12 bytes >+ // Total: 4044 bytes >+ assert_uint_eq(lzma_index_stream_size(idx), 4044); >+ >+ lzma_index_end(idx, NULL); > } > > > static void >-test_read(lzma_index *i) >+test_lzma_index_total_size(void) > { >- lzma_index_iter r; >- lzma_index_iter_init(&r, i); >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); > >- // Try twice so we see that rewinding works. >- for (size_t j = 0; j < 2; ++j) { >- lzma_vli total_size = 0; >- lzma_vli uncompressed_size = 0; >- lzma_vli stream_offset = LZMA_STREAM_HEADER_SIZE; >- lzma_vli uncompressed_offset = 0; >- uint32_t count = 0; >+ // First test empty lzma_index. >+ // Result should be 0 since no Blocks have been added. >+ assert_uint_eq(lzma_index_total_size(idx), 0); > >- while (!lzma_index_iter_next(&r, LZMA_INDEX_ITER_BLOCK)) { >- ++count; >+ // Add a few Blocks and retest after each append >+ assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK); >+ assert_uint_eq(lzma_index_total_size(idx), 1000); > >- total_size += r.block.total_size; >- uncompressed_size += r.block.uncompressed_size; >+ assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK); >+ assert_uint_eq(lzma_index_total_size(idx), 2000); > >- expect(r.block.compressed_file_offset >- == stream_offset); >- expect(r.block.uncompressed_file_offset >- == uncompressed_offset); >+ assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK); >+ assert_uint_eq(lzma_index_total_size(idx), 3000); > >- stream_offset += r.block.total_size; >- uncompressed_offset += r.block.uncompressed_size; >- } >+ // Create second lzma_index and append Blocks to it. >+ lzma_index *second = lzma_index_init(NULL); >+ assert_true(second != NULL); > >- expect(lzma_index_total_size(i) == total_size); >- expect(lzma_index_uncompressed_size(i) == uncompressed_size); >- expect(lzma_index_block_count(i) == count); >+ assert_uint_eq(lzma_index_total_size(second), 0); > >- lzma_index_iter_rewind(&r); >- } >+ assert_lzma_ret(lzma_index_append(second, NULL, 100, 1), LZMA_OK); >+ assert_uint_eq(lzma_index_total_size(second), 100); >+ >+ assert_lzma_ret(lzma_index_append(second, NULL, 100, 1), LZMA_OK); >+ assert_uint_eq(lzma_index_total_size(second), 200); >+ >+ // Concatenate the Streams together >+ assert_lzma_ret(lzma_index_cat(idx, second, NULL), LZMA_OK); >+ >+ // The resulting total size should be the size of all Blocks >+ // from both Streams >+ assert_uint_eq(lzma_index_total_size(idx), 3200); >+ >+ lzma_index_end(idx, NULL); > } > > > static void >-test_code(lzma_index *i) >+test_lzma_index_file_size(void) > { >- const size_t alloc_size = 128 * 1024; >- uint8_t *buf = malloc(alloc_size); >- expect(buf != NULL); >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); > >- // Encode >- lzma_stream strm = LZMA_STREAM_INIT; >- expect(lzma_index_encoder(&strm, i) == LZMA_OK); >- const lzma_vli index_size = lzma_index_size(i); >- succeed(coder_loop(&strm, NULL, 0, buf, index_size, >- LZMA_STREAM_END, LZMA_RUN)); >+ // Should be the same as test_lzma_index_stream_size with >+ // only one Stream and no Stream Padding. >+ assert_uint_eq(lzma_index_file_size(idx), 32); > >- // Decode >- lzma_index *d; >- expect(lzma_index_decoder(&strm, &d, MEMLIMIT) == LZMA_OK); >- expect(d == NULL); >- succeed(decoder_loop(&strm, buf, index_size)); >+ assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK); > >- expect(is_equal(i, d)); >+ assert_uint_eq(lzma_index_file_size(idx), 3040); > >- lzma_index_end(d, NULL); >- lzma_end(&strm); >+ // Next add Stream Padding >+ assert_lzma_ret(lzma_index_stream_padding(idx, 1000), >+ LZMA_OK); > >- // Decode with hashing >- lzma_index_hash *h = lzma_index_hash_init(NULL, NULL); >- expect(h != NULL); >- lzma_index_iter r; >- lzma_index_iter_init(&r, i); >- while (!lzma_index_iter_next(&r, LZMA_INDEX_ITER_BLOCK)) >- expect(lzma_index_hash_append(h, r.block.unpadded_size, >- r.block.uncompressed_size) == LZMA_OK); >- size_t pos = 0; >- while (pos < index_size - 1) >- expect(lzma_index_hash_decode(h, buf, &pos, pos + 1) >- == LZMA_OK); >- expect(lzma_index_hash_decode(h, buf, &pos, pos + 1) >- == LZMA_STREAM_END); >+ assert_uint_eq(lzma_index_file_size(idx), 4040); > >- lzma_index_hash_end(h, NULL); >+ // Create second lzma_index. >+ // Very similar to test_lzma_index_stream_size, but >+ // the values should include the headers of the second Stream. >+ lzma_index *second = lzma_index_init(NULL); >+ assert_true(second != NULL); > >- // Encode buffer >- size_t buf_pos = 1; >- expect(lzma_index_buffer_encode(i, buf, &buf_pos, index_size) >- == LZMA_BUF_ERROR); >- expect(buf_pos == 1); >+ assert_lzma_ret(lzma_index_append(second, NULL, 1000, 1), LZMA_OK); >+ assert_uint_eq(lzma_index_stream_size(second), 1036); > >- succeed(lzma_index_buffer_encode(i, buf, &buf_pos, index_size + 1)); >- expect(buf_pos == index_size + 1); >+ assert_lzma_ret(lzma_index_cat(idx, second, NULL), LZMA_OK); > >- // Decode buffer >- buf_pos = 1; >- uint64_t memlimit = MEMLIMIT; >- expect(lzma_index_buffer_decode(&d, &memlimit, NULL, buf, &buf_pos, >- index_size) == LZMA_DATA_ERROR); >- expect(buf_pos == 1); >- expect(d == NULL); >+ // .xz file size should be: >+ // Size of 2 Stream Headers - 12 * 2 bytes >+ // Size of all Blocks - 3000 + 1000 bytes >+ // Size of 2 Indexes - 16 + 12 bytes >+ // Size of Stream Padding - 1000 bytes >+ // Size of 2 Stream Footers - 12 * 2 bytes >+ // Total: 5076 bytes >+ assert_uint_eq(lzma_index_file_size(idx), 5076); > >- succeed(lzma_index_buffer_decode(&d, &memlimit, NULL, buf, &buf_pos, >- index_size + 1)); >- expect(buf_pos == index_size + 1); >- expect(is_equal(i, d)); >+ lzma_index_end(idx, NULL); >+} > >- lzma_index_end(d, NULL); > >- free(buf); >+static void >+test_lzma_index_uncompressed_size(void) >+{ >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); >+ >+ // Empty lzma_index should have 0 uncompressed .xz file size. >+ assert_uint_eq(lzma_index_uncompressed_size(idx), 0); >+ >+ // Append a few small Blocks >+ assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 10), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 100), LZMA_OK); >+ >+ assert_uint_eq(lzma_index_uncompressed_size(idx), 111); >+ >+ // Create another lzma_index >+ lzma_index *second = lzma_index_init(NULL); >+ assert_true(second != NULL); >+ >+ // Append a few small Blocks >+ assert_lzma_ret(lzma_index_append(second, NULL, 1000, 2), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(second, NULL, 1000, 20), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(second, NULL, 1000, 200), LZMA_OK); >+ >+ assert_uint_eq(lzma_index_uncompressed_size(second), 222); >+ >+ // Concatenate second lzma_index to first >+ assert_lzma_ret(lzma_index_cat(idx, second, NULL), LZMA_OK); >+ >+ // New uncompressed .xz file size should be the sum of the two Streams >+ assert_uint_eq(lzma_index_uncompressed_size(idx), 333); >+ >+ // Append one more Block to the lzma_index and ensure that >+ // it is properly updated >+ assert_lzma_ret(lzma_index_append(idx, NULL, 1000, 111), LZMA_OK); >+ assert_uint_eq(lzma_index_uncompressed_size(idx), 444); >+ >+ lzma_index_end(idx, NULL); > } > > > static void >-test_many(lzma_index *i) >+test_lzma_index_iter_init(void) > { >- test_copy(i); >- test_read(i); >- test_code(i); >+ // Testing basic init functionality. >+ // The init function should call rewind on the iterator. >+ lzma_index *first = lzma_index_init(NULL); >+ assert_true(first != NULL); >+ >+ lzma_index *second = lzma_index_init(NULL); >+ assert_true(second != NULL); >+ >+ lzma_index *third = lzma_index_init(NULL); >+ assert_true(third != NULL); >+ >+ assert_lzma_ret(lzma_index_cat(first, second, NULL), LZMA_OK); >+ assert_lzma_ret(lzma_index_cat(first, third, NULL), LZMA_OK); >+ >+ lzma_index_iter iter; >+ lzma_index_iter_init(&iter, first); >+ >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_STREAM)); >+ assert_uint_eq(iter.stream.number, 1); >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_STREAM)); >+ assert_uint_eq(iter.stream.number, 2); >+ >+ lzma_index_iter_init(&iter, first); >+ >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_STREAM)); >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_STREAM)); >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_STREAM)); >+ assert_uint_eq(iter.stream.number, 3); > } > > > static void >-test_cat(void) >+test_lzma_index_iter_rewind(void) > { >- lzma_index *a, *b, *c; >- lzma_index_iter r; >+ lzma_index *first = lzma_index_init(NULL); >+ assert_true(first != NULL); > >- // Empty Indexes >- a = create_empty(); >- b = create_empty(); >- expect(lzma_index_cat(a, b, NULL) == LZMA_OK); >- expect(lzma_index_block_count(a) == 0); >- expect(lzma_index_stream_size(a) == 2 * LZMA_STREAM_HEADER_SIZE + 8); >- expect(lzma_index_file_size(a) >- == 2 * (2 * LZMA_STREAM_HEADER_SIZE + 8)); >- lzma_index_iter_init(&r, a); >- expect(lzma_index_iter_next(&r, LZMA_INDEX_ITER_BLOCK)); >+ lzma_index_iter iter; >+ lzma_index_iter_init(&iter, first); > >- b = create_empty(); >- expect(lzma_index_cat(a, b, NULL) == LZMA_OK); >- expect(lzma_index_block_count(a) == 0); >- expect(lzma_index_stream_size(a) == 2 * LZMA_STREAM_HEADER_SIZE + 8); >- expect(lzma_index_file_size(a) >- == 3 * (2 * LZMA_STREAM_HEADER_SIZE + 8)); >+ // Append 3 Blocks and iterate over each. This is to test >+ // the LZMA_INDEX_ITER_BLOCK mode. >+ for (uint32_t i = 0; i < 3; i++) { >+ assert_lzma_ret(lzma_index_append(first, NULL, >+ UNPADDED_SIZE_MIN, 1), LZMA_OK); >+ assert_false(lzma_index_iter_next(&iter, >+ LZMA_INDEX_ITER_BLOCK)); >+ assert_uint_eq(iter.block.number_in_file, i + 1); >+ } > >- b = create_empty(); >- c = create_empty(); >- expect(lzma_index_stream_padding(b, 4) == LZMA_OK); >- expect(lzma_index_cat(b, c, NULL) == LZMA_OK); >- expect(lzma_index_block_count(b) == 0); >- expect(lzma_index_stream_size(b) == 2 * LZMA_STREAM_HEADER_SIZE + 8); >- expect(lzma_index_file_size(b) >- == 2 * (2 * LZMA_STREAM_HEADER_SIZE + 8) + 4); >+ // Rewind back to the begining and iterate over the Blocks again >+ lzma_index_iter_rewind(&iter); > >- expect(lzma_index_stream_padding(a, 8) == LZMA_OK); >- expect(lzma_index_cat(a, b, NULL) == LZMA_OK); >- expect(lzma_index_block_count(a) == 0); >- expect(lzma_index_stream_size(a) == 2 * LZMA_STREAM_HEADER_SIZE + 8); >- expect(lzma_index_file_size(a) >- == 5 * (2 * LZMA_STREAM_HEADER_SIZE + 8) + 4 + 8); >+ // Should be able to re-iterate over the Blocks again. >+ for (uint32_t i = 0; i < 3; i++) { >+ assert_false(lzma_index_iter_next(&iter, >+ LZMA_INDEX_ITER_BLOCK)); >+ assert_uint_eq(iter.block.number_in_file, i + 1); >+ } > >- expect(lzma_index_iter_next(&r, LZMA_INDEX_ITER_BLOCK)); >- lzma_index_iter_rewind(&r); >- expect(lzma_index_iter_next(&r, LZMA_INDEX_ITER_BLOCK)); >- lzma_index_end(a, NULL); >+ // Next concatenate two more lzma_indexes, iterate over them, >+ // rewind, and iterate over them again. This is to test >+ // the LZMA_INDEX_ITER_STREAM mode. >+ lzma_index *second = lzma_index_init(NULL); >+ assert_true(second != NULL); > >- // Small Indexes >- a = create_small(); >- lzma_vli stream_size = lzma_index_stream_size(a); >- lzma_index_iter_init(&r, a); >- for (int i = SMALL_COUNT; i >= 0; --i) >- expect(!lzma_index_iter_next(&r, LZMA_INDEX_ITER_BLOCK) >- ^ (i == 0)); >+ lzma_index *third = lzma_index_init(NULL); >+ assert_true(third != NULL); > >- b = create_small(); >- expect(lzma_index_stream_padding(a, 4) == LZMA_OK); >- expect(lzma_index_cat(a, b, NULL) == LZMA_OK); >- expect(lzma_index_file_size(a) == stream_size * 2 + 4); >- expect(lzma_index_stream_size(a) > stream_size); >- expect(lzma_index_stream_size(a) < stream_size * 2); >- for (int i = SMALL_COUNT; i >= 0; --i) >- expect(!lzma_index_iter_next(&r, LZMA_INDEX_ITER_BLOCK) >- ^ (i == 0)); >+ assert_lzma_ret(lzma_index_cat(first, second, NULL), LZMA_OK); >+ assert_lzma_ret(lzma_index_cat(first, third, NULL), LZMA_OK); > >- lzma_index_iter_rewind(&r); >- for (int i = SMALL_COUNT * 2; i >= 0; --i) >- expect(!lzma_index_iter_next(&r, LZMA_INDEX_ITER_BLOCK) >- ^ (i == 0)); >+ assert_false(lzma_index_iter_next(&iter, >+ LZMA_INDEX_ITER_STREAM)); >+ assert_false(lzma_index_iter_next(&iter, >+ LZMA_INDEX_ITER_STREAM)); > >- b = create_small(); >- c = create_small(); >- expect(lzma_index_stream_padding(b, 8) == LZMA_OK); >- expect(lzma_index_cat(b, c, NULL) == LZMA_OK); >- expect(lzma_index_stream_padding(a, 12) == LZMA_OK); >- expect(lzma_index_cat(a, b, NULL) == LZMA_OK); >- expect(lzma_index_file_size(a) == stream_size * 4 + 4 + 8 + 12); >+ assert_uint_eq(iter.stream.number, 3); > >- expect(lzma_index_block_count(a) == SMALL_COUNT * 4); >- for (int i = SMALL_COUNT * 2; i >= 0; --i) >- expect(!lzma_index_iter_next(&r, LZMA_INDEX_ITER_BLOCK) >- ^ (i == 0)); >+ lzma_index_iter_rewind(&iter); > >- lzma_index_iter_rewind(&r); >- for (int i = SMALL_COUNT * 4; i >= 0; --i) >- expect(!lzma_index_iter_next(&r, LZMA_INDEX_ITER_BLOCK) >- ^ (i == 0)); >+ for (uint32_t i = 0; i < 3; i++) { >+ assert_false(lzma_index_iter_next(&iter, >+ LZMA_INDEX_ITER_STREAM)); >+ assert_uint_eq(iter.stream.number, i + 1); >+ } > >- lzma_index_end(a, NULL); >+ lzma_index_end(first, NULL); >+} > >- // Mix of empty and small >- a = create_empty(); >- b = create_small(); >- expect(lzma_index_stream_padding(a, 4) == LZMA_OK); >- expect(lzma_index_cat(a, b, NULL) == LZMA_OK); >- lzma_index_iter_init(&r, a); >- for (int i = SMALL_COUNT; i >= 0; --i) >- expect(!lzma_index_iter_next(&r, LZMA_INDEX_ITER_BLOCK) >- ^ (i == 0)); > >- lzma_index_end(a, NULL); >+static void >+test_lzma_index_iter_next(void) >+{ >+ lzma_index *first = lzma_index_init(NULL); >+ assert_true(first != NULL); > >- // Big Indexes >- a = create_big(); >- stream_size = lzma_index_stream_size(a); >- b = create_big(); >- expect(lzma_index_stream_padding(a, 4) == LZMA_OK); >- expect(lzma_index_cat(a, b, NULL) == LZMA_OK); >- expect(lzma_index_file_size(a) == stream_size * 2 + 4); >- expect(lzma_index_stream_size(a) > stream_size); >- expect(lzma_index_stream_size(a) < stream_size * 2); >+ lzma_index_iter iter; >+ lzma_index_iter_init(&iter, first); > >- b = create_big(); >- c = create_big(); >- expect(lzma_index_stream_padding(b, 8) == LZMA_OK); >- expect(lzma_index_cat(b, c, NULL) == LZMA_OK); >- expect(lzma_index_stream_padding(a, 12) == LZMA_OK); >- expect(lzma_index_cat(a, b, NULL) == LZMA_OK); >- expect(lzma_index_file_size(a) == stream_size * 4 + 4 + 8 + 12); >+ // First test bad mode values >+ for (uint32_t i = LZMA_INDEX_ITER_NONEMPTY_BLOCK + 1; i < 100; i++) >+ assert_true(lzma_index_iter_next(&iter, i)); > >- lzma_index_iter_init(&r, a); >- for (int i = BIG_COUNT * 4; i >= 0; --i) >- expect(!lzma_index_iter_next(&r, LZMA_INDEX_ITER_BLOCK) >- ^ (i == 0)); >+ // Test iterating over Blocks >+ assert_lzma_ret(lzma_index_append(first, NULL, >+ UNPADDED_SIZE_MIN, 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(first, NULL, >+ UNPADDED_SIZE_MIN * 2, 10), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(first, NULL, >+ UNPADDED_SIZE_MIN * 3, 100), LZMA_OK); > >- lzma_index_end(a, NULL); >+ // For Blocks, need to verify: >+ // - number_in_file (overall Block number) >+ // - compressed_file_offset >+ // - uncompressed_file_offset >+ // - number_in_stream (Block number relative to current Stream) >+ // - compressed_stream_offset >+ // - uncompressed_stream_offset >+ // - uncompressed_size >+ // - unpadded_size >+ // - total_size >+ >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_BLOCK)); >+ >+ // Verify Block data stored correctly >+ assert_uint_eq(iter.block.number_in_file, 1); >+ >+ // Should start right after the Stream Header >+ assert_uint_eq(iter.block.compressed_file_offset, >+ LZMA_STREAM_HEADER_SIZE); >+ assert_uint_eq(iter.block.uncompressed_file_offset, 0); >+ assert_uint_eq(iter.block.number_in_stream, 1); >+ assert_uint_eq(iter.block.compressed_stream_offset, >+ LZMA_STREAM_HEADER_SIZE); >+ assert_uint_eq(iter.block.uncompressed_stream_offset, 0); >+ assert_uint_eq(iter.block.unpadded_size, UNPADDED_SIZE_MIN); >+ assert_uint_eq(iter.block.total_size, vli_ceil4(UNPADDED_SIZE_MIN)); >+ >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_BLOCK)); >+ >+ // Verify Block data stored correctly >+ assert_uint_eq(iter.block.number_in_file, 2); >+ assert_uint_eq(iter.block.compressed_file_offset, >+ LZMA_STREAM_HEADER_SIZE + >+ vli_ceil4(UNPADDED_SIZE_MIN)); >+ assert_uint_eq(iter.block.uncompressed_file_offset, 1); >+ assert_uint_eq(iter.block.number_in_stream, 2); >+ assert_uint_eq(iter.block.compressed_stream_offset, >+ LZMA_STREAM_HEADER_SIZE + >+ vli_ceil4(UNPADDED_SIZE_MIN)); >+ assert_uint_eq(iter.block.uncompressed_stream_offset, 1); >+ assert_uint_eq(iter.block.unpadded_size, UNPADDED_SIZE_MIN * 2); >+ assert_uint_eq(iter.block.total_size, vli_ceil4(UNPADDED_SIZE_MIN * 2)); >+ >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_BLOCK)); >+ >+ // Verify Block data stored correctly >+ assert_uint_eq(iter.block.number_in_file, 3); >+ assert_uint_eq(iter.block.compressed_file_offset, >+ LZMA_STREAM_HEADER_SIZE + >+ vli_ceil4(UNPADDED_SIZE_MIN) + >+ vli_ceil4(UNPADDED_SIZE_MIN * 2)); >+ assert_uint_eq(iter.block.uncompressed_file_offset, 11); >+ assert_uint_eq(iter.block.number_in_stream, 3); >+ assert_uint_eq(iter.block.compressed_stream_offset, >+ LZMA_STREAM_HEADER_SIZE + >+ vli_ceil4(UNPADDED_SIZE_MIN) + >+ vli_ceil4(UNPADDED_SIZE_MIN * 2)); >+ assert_uint_eq(iter.block.uncompressed_stream_offset, 11); >+ assert_uint_eq(iter.block.unpadded_size, UNPADDED_SIZE_MIN * 3); >+ assert_uint_eq(iter.block.total_size, >+ vli_ceil4(UNPADDED_SIZE_MIN * 3)); >+ >+ // Only three Blocks were added, so this should return true >+ assert_true(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_BLOCK)); >+ >+ const lzma_vli second_stream_compressed_start = >+ LZMA_STREAM_HEADER_SIZE * 2 + >+ vli_ceil4(UNPADDED_SIZE_MIN) + >+ vli_ceil4(UNPADDED_SIZE_MIN * 2) + >+ vli_ceil4(UNPADDED_SIZE_MIN * 3) + >+ lzma_index_size(first); >+ const lzma_vli second_stream_uncompressed_start = 1 + 10 + 100; >+ >+ // Test iterating over Streams. >+ // The second Stream will have 0 Blocks >+ lzma_index *second = lzma_index_init(NULL); >+ assert_true(second != NULL); >+ >+ // Set Stream Flags for Stream 2 >+ lzma_stream_flags flags = { >+ .version = 0, >+ .backward_size = LZMA_BACKWARD_SIZE_MIN, >+ .check = LZMA_CHECK_CRC32 >+ }; >+ >+ assert_lzma_ret(lzma_index_stream_flags(second, &flags), LZMA_OK); >+ >+ // The Second stream will have 8 bytes of Stream Padding >+ assert_lzma_ret(lzma_index_stream_padding(second, 8), LZMA_OK); >+ >+ const lzma_vli second_stream_index_size = lzma_index_size(second); >+ >+ // The third Stream will have 2 Blocks >+ lzma_index *third = lzma_index_init(NULL); >+ assert_true(third != NULL); >+ >+ assert_lzma_ret(lzma_index_append(third, NULL, 32, 20), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(third, NULL, 64, 40), LZMA_OK); >+ >+ const lzma_vli third_stream_index_size = lzma_index_size(third); >+ >+ assert_lzma_ret(lzma_index_cat(first, second, NULL), LZMA_OK); >+ assert_lzma_ret(lzma_index_cat(first, third, NULL), LZMA_OK); >+ >+ // For Streams, need to verify: >+ // - flags (Stream Flags) >+ // - number (Stream count) >+ // - block_count >+ // - compressed_offset >+ // - uncompressed_offset >+ // - compressed_size >+ // - uncompressed_size >+ // - padding (Stream Padding) >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_STREAM)); >+ >+ // Verify Stream >+ assert_uint_eq(iter.stream.flags->backward_size, >+ LZMA_BACKWARD_SIZE_MIN); >+ assert_uint_eq(iter.stream.flags->check, LZMA_CHECK_CRC32); >+ assert_uint_eq(iter.stream.number, 2); >+ assert_uint_eq(iter.stream.block_count, 0); >+ assert_uint_eq(iter.stream.compressed_offset, >+ second_stream_compressed_start); >+ assert_uint_eq(iter.stream.uncompressed_offset, >+ second_stream_uncompressed_start); >+ assert_uint_eq(iter.stream.compressed_size, >+ LZMA_STREAM_HEADER_SIZE * 2 + >+ second_stream_index_size); >+ assert_uint_eq(iter.stream.uncompressed_size, 0); >+ assert_uint_eq(iter.stream.padding, 8); >+ >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_STREAM)); >+ >+ // Verify Stream >+ const lzma_vli third_stream_compressed_start = >+ second_stream_compressed_start + >+ LZMA_STREAM_HEADER_SIZE * 2 + >+ 8 + // Stream padding >+ second_stream_index_size; >+ const lzma_vli third_stream_uncompressed_start = >+ second_stream_uncompressed_start; >+ >+ assert_uint_eq(iter.stream.number, 3); >+ assert_uint_eq(iter.stream.block_count, 2); >+ assert_uint_eq(iter.stream.compressed_offset, >+ third_stream_compressed_start); >+ assert_uint_eq(iter.stream.uncompressed_offset, >+ third_stream_uncompressed_start); >+ assert_uint_eq(iter.stream.compressed_size, >+ LZMA_STREAM_HEADER_SIZE * 2 + >+ 96 + // Total compressed size >+ third_stream_index_size); >+ assert_uint_eq(iter.stream.uncompressed_size, 60); >+ assert_uint_eq(iter.stream.padding, 0); >+ >+ assert_true(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_STREAM)); >+ >+ // Even after a failing call to next with ITER_STREAM mode, >+ // should still be able to iterate over the 2 Blocks in >+ // Stream 3. >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_BLOCK)); >+ >+ // Verify both Blocks >+ >+ // Next call to iterate Block should return true because the >+ // first Block can already be read from the LZMA_INDEX_ITER_STREAM >+ // call. >+ assert_true(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_BLOCK)); >+ >+ // Rewind to test LZMA_INDEX_ITER_ANY >+ lzma_index_iter_rewind(&iter); >+ >+ // Iterate past the first three Blocks >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_ANY)); >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_ANY)); >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_ANY)); >+ >+ // Iterate past the next Stream >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_ANY)); >+ >+ // Iterate past the next Stream >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_ANY)); >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_ANY)); >+ >+ // Last call should fail >+ assert_true(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_ANY)); >+ >+ // Rewind to test LZMA_INDEX_ITER_NONEMPTY_BLOCK >+ lzma_index_iter_rewind(&iter); >+ >+ // Iterate past the first three Blocks >+ assert_false(lzma_index_iter_next(&iter, >+ LZMA_INDEX_ITER_NONEMPTY_BLOCK)); >+ assert_false(lzma_index_iter_next(&iter, >+ LZMA_INDEX_ITER_NONEMPTY_BLOCK)); >+ assert_false(lzma_index_iter_next(&iter, >+ LZMA_INDEX_ITER_NONEMPTY_BLOCK)); >+ >+ // Skip past the next Stream which has no Blocks. >+ // We will get to the first Block of the third Stream. >+ assert_false(lzma_index_iter_next(&iter, >+ LZMA_INDEX_ITER_NONEMPTY_BLOCK)); >+ >+ // Iterate past the second (the last) Block in the third Stream >+ assert_false(lzma_index_iter_next(&iter, >+ LZMA_INDEX_ITER_NONEMPTY_BLOCK)); >+ >+ // Last call should fail since there is nothing left to iterate over. >+ assert_true(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_ANY)); >+ >+ lzma_index_end(first, NULL); > } > > > static void >-test_locate(void) >+test_lzma_index_iter_locate(void) > { >- lzma_index *i = lzma_index_init(NULL); >- expect(i != NULL); >- lzma_index_iter r; >- lzma_index_iter_init(&r, i); >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); > >+ lzma_index_iter iter; >+ lzma_index_iter_init(&iter, idx); >+ > // Cannot locate anything from an empty Index. >- expect(lzma_index_iter_locate(&r, 0)); >- expect(lzma_index_iter_locate(&r, 555)); >+ assert_true(lzma_index_iter_locate(&iter, 0)); >+ assert_true(lzma_index_iter_locate(&iter, 555)); > > // One empty Record: nothing is found since there's no uncompressed > // data. >- expect(lzma_index_append(i, NULL, 16, 0) == LZMA_OK); >- expect(lzma_index_iter_locate(&r, 0)); >+ assert_lzma_ret(lzma_index_append(idx, NULL, 16, 0), LZMA_OK); >+ assert_true(lzma_index_iter_locate(&iter, 0)); > > // Non-empty Record and we can find something. >- expect(lzma_index_append(i, NULL, 32, 5) == LZMA_OK); >- expect(!lzma_index_iter_locate(&r, 0)); >- expect(r.block.total_size == 32); >- expect(r.block.uncompressed_size == 5); >- expect(r.block.compressed_file_offset >- == LZMA_STREAM_HEADER_SIZE + 16); >- expect(r.block.uncompressed_file_offset == 0); >+ assert_lzma_ret(lzma_index_append(idx, NULL, 32, 5), LZMA_OK); >+ assert_false(lzma_index_iter_locate(&iter, 0)); >+ assert_uint_eq(iter.block.total_size, 32); >+ assert_uint_eq(iter.block.uncompressed_size, 5); >+ assert_uint_eq(iter.block.compressed_file_offset, >+ LZMA_STREAM_HEADER_SIZE + 16); >+ assert_uint_eq(iter.block.uncompressed_file_offset, 0); > > // Still cannot find anything past the end. >- expect(lzma_index_iter_locate(&r, 5)); >+ assert_true(lzma_index_iter_locate(&iter, 5)); > > // Add the third Record. >- expect(lzma_index_append(i, NULL, 40, 11) == LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, 40, 11), LZMA_OK); > >- expect(!lzma_index_iter_locate(&r, 0)); >- expect(r.block.total_size == 32); >- expect(r.block.uncompressed_size == 5); >- expect(r.block.compressed_file_offset >- == LZMA_STREAM_HEADER_SIZE + 16); >- expect(r.block.uncompressed_file_offset == 0); >+ assert_false(lzma_index_iter_locate(&iter, 0)); >+ assert_uint_eq(iter.block.total_size, 32); >+ assert_uint_eq(iter.block.uncompressed_size, 5); >+ assert_uint_eq(iter.block.compressed_file_offset, >+ LZMA_STREAM_HEADER_SIZE + 16); >+ assert_uint_eq(iter.block.uncompressed_file_offset, 0); > >- expect(!lzma_index_iter_next(&r, LZMA_INDEX_ITER_BLOCK)); >- expect(r.block.total_size == 40); >- expect(r.block.uncompressed_size == 11); >- expect(r.block.compressed_file_offset >- == LZMA_STREAM_HEADER_SIZE + 16 + 32); >- expect(r.block.uncompressed_file_offset == 5); >+ assert_false(lzma_index_iter_next(&iter, LZMA_INDEX_ITER_BLOCK)); >+ assert_uint_eq(iter.block.total_size, 40); >+ assert_uint_eq(iter.block.uncompressed_size, 11); >+ assert_uint_eq(iter.block.compressed_file_offset, >+ LZMA_STREAM_HEADER_SIZE + 16 + 32); >+ assert_uint_eq(iter.block.uncompressed_file_offset, 5); > >- expect(!lzma_index_iter_locate(&r, 2)); >- expect(r.block.total_size == 32); >- expect(r.block.uncompressed_size == 5); >- expect(r.block.compressed_file_offset >- == LZMA_STREAM_HEADER_SIZE + 16); >- expect(r.block.uncompressed_file_offset == 0); >+ assert_false(lzma_index_iter_locate(&iter, 2)); >+ assert_uint_eq(iter.block.total_size, 32); >+ assert_uint_eq(iter.block.uncompressed_size, 5); >+ assert_uint_eq(iter.block.compressed_file_offset, >+ LZMA_STREAM_HEADER_SIZE + 16); >+ assert_uint_eq(iter.block.uncompressed_file_offset, 0); > >- expect(!lzma_index_iter_locate(&r, 5)); >- expect(r.block.total_size == 40); >- expect(r.block.uncompressed_size == 11); >- expect(r.block.compressed_file_offset >- == LZMA_STREAM_HEADER_SIZE + 16 + 32); >- expect(r.block.uncompressed_file_offset == 5); >+ assert_false(lzma_index_iter_locate(&iter, 5)); >+ assert_uint_eq(iter.block.total_size, 40); >+ assert_uint_eq(iter.block.uncompressed_size, 11); >+ assert_uint_eq(iter.block.compressed_file_offset, >+ LZMA_STREAM_HEADER_SIZE + 16 + 32); >+ assert_uint_eq(iter.block.uncompressed_file_offset, 5); > >- expect(!lzma_index_iter_locate(&r, 5 + 11 - 1)); >- expect(r.block.total_size == 40); >- expect(r.block.uncompressed_size == 11); >- expect(r.block.compressed_file_offset >- == LZMA_STREAM_HEADER_SIZE + 16 + 32); >- expect(r.block.uncompressed_file_offset == 5); >+ assert_false(lzma_index_iter_locate(&iter, 5 + 11 - 1)); >+ assert_uint_eq(iter.block.total_size, 40); >+ assert_uint_eq(iter.block.uncompressed_size, 11); >+ assert_uint_eq(iter.block.compressed_file_offset, >+ LZMA_STREAM_HEADER_SIZE + 16 + 32); >+ assert_uint_eq(iter.block.uncompressed_file_offset, 5); > >- expect(lzma_index_iter_locate(&r, 5 + 11)); >- expect(lzma_index_iter_locate(&r, 5 + 15)); >+ assert_true(lzma_index_iter_locate(&iter, 5 + 11)); >+ assert_true(lzma_index_iter_locate(&iter, 5 + 15)); > > // Large Index >- lzma_index_end(i, NULL); >- i = lzma_index_init(NULL); >- expect(i != NULL); >- lzma_index_iter_init(&r, i); >+ lzma_index_end(idx, NULL); >+ idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); >+ lzma_index_iter_init(&iter, idx); > >- for (size_t n = 4; n <= 4 * 5555; n += 4) >- expect(lzma_index_append(i, NULL, n + 8, n) == LZMA_OK); >+ for (uint32_t n = 4; n <= 4 * 5555; n += 4) >+ assert_lzma_ret(lzma_index_append(idx, NULL, n + 8, n), >+ LZMA_OK); > >- expect(lzma_index_block_count(i) == 5555); >+ assert_uint_eq(lzma_index_block_count(idx), 5555); > > // First Record >- expect(!lzma_index_iter_locate(&r, 0)); >- expect(r.block.total_size == 4 + 8); >- expect(r.block.uncompressed_size == 4); >- expect(r.block.compressed_file_offset == LZMA_STREAM_HEADER_SIZE); >- expect(r.block.uncompressed_file_offset == 0); >+ assert_false(lzma_index_iter_locate(&iter, 0)); >+ assert_uint_eq(iter.block.total_size, 4 + 8); >+ assert_uint_eq(iter.block.uncompressed_size, 4); >+ assert_uint_eq(iter.block.compressed_file_offset, >+ LZMA_STREAM_HEADER_SIZE); >+ assert_uint_eq(iter.block.uncompressed_file_offset, 0); > >- expect(!lzma_index_iter_locate(&r, 3)); >- expect(r.block.total_size == 4 + 8); >- expect(r.block.uncompressed_size == 4); >- expect(r.block.compressed_file_offset == LZMA_STREAM_HEADER_SIZE); >- expect(r.block.uncompressed_file_offset == 0); >+ assert_false(lzma_index_iter_locate(&iter, 3)); >+ assert_uint_eq(iter.block.total_size, 4 + 8); >+ assert_uint_eq(iter.block.uncompressed_size, 4); >+ assert_uint_eq(iter.block.compressed_file_offset, >+ LZMA_STREAM_HEADER_SIZE); >+ assert_uint_eq(iter.block.uncompressed_file_offset, 0); > > // Second Record >- expect(!lzma_index_iter_locate(&r, 4)); >- expect(r.block.total_size == 2 * 4 + 8); >- expect(r.block.uncompressed_size == 2 * 4); >- expect(r.block.compressed_file_offset >- == LZMA_STREAM_HEADER_SIZE + 4 + 8); >- expect(r.block.uncompressed_file_offset == 4); >+ assert_false(lzma_index_iter_locate(&iter, 4)); >+ assert_uint_eq(iter.block.total_size, 2 * 4 + 8); >+ assert_uint_eq(iter.block.uncompressed_size, 2 * 4); >+ assert_uint_eq(iter.block.compressed_file_offset, >+ LZMA_STREAM_HEADER_SIZE + 4 + 8); >+ assert_uint_eq(iter.block.uncompressed_file_offset, 4); > > // Last Record >- expect(!lzma_index_iter_locate( >- &r, lzma_index_uncompressed_size(i) - 1)); >- expect(r.block.total_size == 4 * 5555 + 8); >- expect(r.block.uncompressed_size == 4 * 5555); >- expect(r.block.compressed_file_offset == lzma_index_total_size(i) >+ assert_false(lzma_index_iter_locate( >+ &iter, lzma_index_uncompressed_size(idx) - 1)); >+ assert_uint_eq(iter.block.total_size, 4 * 5555 + 8); >+ assert_uint_eq(iter.block.uncompressed_size, 4 * 5555); >+ assert_uint_eq(iter.block.compressed_file_offset, >+ lzma_index_total_size(idx) > + LZMA_STREAM_HEADER_SIZE - 4 * 5555 - 8); >- expect(r.block.uncompressed_file_offset >- == lzma_index_uncompressed_size(i) - 4 * 5555); >+ assert_uint_eq(iter.block.uncompressed_file_offset, >+ lzma_index_uncompressed_size(idx) - 4 * 5555); > > // Allocation chunk boundaries. See INDEX_GROUP_SIZE in > // liblzma/common/index.c. >- const size_t group_multiple = 256 * 4; >- const size_t radius = 8; >- const size_t start = group_multiple - radius; >+ const uint32_t group_multiple = 256 * 4; >+ const uint32_t radius = 8; >+ const uint32_t start = group_multiple - radius; > lzma_vli ubase = 0; > lzma_vli tbase = 0; >- size_t n; >+ uint32_t n; > for (n = 1; n < start; ++n) { > ubase += n * 4; > tbase += n * 4 + 8; > } > > while (n < start + 2 * radius) { >- expect(!lzma_index_iter_locate(&r, ubase + n * 4)); >+ assert_false(lzma_index_iter_locate(&iter, ubase + n * 4)); > >- expect(r.block.compressed_file_offset == tbase + n * 4 + 8 >+ assert_uint_eq(iter.block.compressed_file_offset, >+ tbase + n * 4 + 8 > + LZMA_STREAM_HEADER_SIZE); >- expect(r.block.uncompressed_file_offset == ubase + n * 4); >+ assert_uint_eq(iter.block.uncompressed_file_offset, >+ ubase + n * 4); > > tbase += n * 4 + 8; > ubase += n * 4; > ++n; > >- expect(r.block.total_size == n * 4 + 8); >- expect(r.block.uncompressed_size == n * 4); >+ assert_uint_eq(iter.block.total_size, n * 4 + 8); >+ assert_uint_eq(iter.block.uncompressed_size, n * 4); > } > > // Do it also backwards. > while (n > start) { >- expect(!lzma_index_iter_locate(&r, ubase + (n - 1) * 4)); >+ assert_false(lzma_index_iter_locate( >+ &iter, ubase + (n - 1) * 4)); > >- expect(r.block.total_size == n * 4 + 8); >- expect(r.block.uncompressed_size == n * 4); >+ assert_uint_eq(iter.block.total_size, n * 4 + 8); >+ assert_uint_eq(iter.block.uncompressed_size, n * 4); > > --n; > tbase -= n * 4 + 8; > ubase -= n * 4; > >- expect(r.block.compressed_file_offset == tbase + n * 4 + 8 >+ assert_uint_eq(iter.block.compressed_file_offset, >+ tbase + n * 4 + 8 > + LZMA_STREAM_HEADER_SIZE); >- expect(r.block.uncompressed_file_offset == ubase + n * 4); >+ assert_uint_eq(iter.block.uncompressed_file_offset, >+ ubase + n * 4); > } > > // Test locating in concatenated Index. >- lzma_index_end(i, NULL); >- i = lzma_index_init(NULL); >- expect(i != NULL); >- lzma_index_iter_init(&r, i); >+ lzma_index_end(idx, NULL); >+ idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); >+ lzma_index_iter_init(&iter, idx); > for (n = 0; n < group_multiple; ++n) >- expect(lzma_index_append(i, NULL, 8, 0) == LZMA_OK); >- expect(lzma_index_append(i, NULL, 16, 1) == LZMA_OK); >- expect(!lzma_index_iter_locate(&r, 0)); >- expect(r.block.total_size == 16); >- expect(r.block.uncompressed_size == 1); >- expect(r.block.compressed_file_offset >- == LZMA_STREAM_HEADER_SIZE + group_multiple * 8); >- expect(r.block.uncompressed_file_offset == 0); >+ assert_lzma_ret(lzma_index_append(idx, NULL, 8, 0), >+ LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, 16, 1), LZMA_OK); >+ assert_false(lzma_index_iter_locate(&iter, 0)); >+ assert_uint_eq(iter.block.total_size, 16); >+ assert_uint_eq(iter.block.uncompressed_size, 1); >+ assert_uint_eq(iter.block.compressed_file_offset, >+ LZMA_STREAM_HEADER_SIZE + group_multiple * 8); >+ assert_uint_eq(iter.block.uncompressed_file_offset, 0); > >- lzma_index_end(i, NULL); >+ lzma_index_end(idx, NULL); > } > > > static void >-test_corrupt(void) >+test_lzma_index_cat(void) > { >- const size_t alloc_size = 128 * 1024; >- uint8_t *buf = malloc(alloc_size); >- expect(buf != NULL); >- lzma_stream strm = LZMA_STREAM_INIT; >+ // Most complex tests for this function are done in other tests. >+ // This will mostly test basic functionality. > >- lzma_index *i = create_empty(); >- expect(lzma_index_append(i, NULL, 0, 1) == LZMA_PROG_ERROR); >- lzma_index_end(i, NULL); >+ lzma_index *dest = lzma_index_init(NULL); >+ assert_true(dest != NULL); > >- // Create a valid Index and corrupt it in different ways. >- i = create_small(); >- expect(lzma_index_encoder(&strm, i) == LZMA_OK); >- succeed(coder_loop(&strm, NULL, 0, buf, 20, >- LZMA_STREAM_END, LZMA_RUN)); >- lzma_index_end(i, NULL); >+ lzma_index *src = lzma_index_init(NULL); >+ assert_true(src != NULL); > >- // Wrong Index Indicator >- buf[0] ^= 1; >- expect(lzma_index_decoder(&strm, &i, MEMLIMIT) == LZMA_OK); >- succeed(decoder_loop_ret(&strm, buf, 1, LZMA_DATA_ERROR)); >- buf[0] ^= 1; >+ // First test NULL dest or src >+ assert_lzma_ret(lzma_index_cat(NULL, NULL, NULL), LZMA_PROG_ERROR); >+ assert_lzma_ret(lzma_index_cat(dest, NULL, NULL), LZMA_PROG_ERROR); >+ assert_lzma_ret(lzma_index_cat(NULL, src, NULL), LZMA_PROG_ERROR); > >- // Wrong Number of Records and thus CRC32 fails. >- --buf[1]; >- expect(lzma_index_decoder(&strm, &i, MEMLIMIT) == LZMA_OK); >- succeed(decoder_loop_ret(&strm, buf, 10, LZMA_DATA_ERROR)); >- ++buf[1]; >+ // Check for uncompressed size overflow >+ assert_lzma_ret(lzma_index_append(dest, NULL, >+ (UNPADDED_SIZE_MAX / 2) + 1, 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(src, NULL, >+ (UNPADDED_SIZE_MAX / 2) + 1, 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_cat(dest, src, NULL), LZMA_DATA_ERROR); > >- // Padding not NULs >- buf[15] ^= 1; >- expect(lzma_index_decoder(&strm, &i, MEMLIMIT) == LZMA_OK); >- succeed(decoder_loop_ret(&strm, buf, 16, LZMA_DATA_ERROR)); >+ // Check for compressed size overflow >+ dest = lzma_index_init(NULL); >+ assert_true(dest != NULL); > >- lzma_end(&strm); >- free(buf); >+ src = lzma_index_init(NULL); >+ assert_true(src != NULL); >+ >+ assert_lzma_ret(lzma_index_append(dest, NULL, >+ UNPADDED_SIZE_MIN, LZMA_VLI_MAX - 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(src, NULL, >+ UNPADDED_SIZE_MIN, LZMA_VLI_MAX - 1), LZMA_OK); >+ assert_lzma_ret(lzma_index_cat(dest, src, NULL), LZMA_DATA_ERROR); >+ >+ lzma_index_end(dest, NULL); >+ lzma_index_end(src, NULL); > } > > >+// Helper function for test_lzma_index_dup(). >+static bool >+index_is_equal(const lzma_index *a, const lzma_index *b) >+{ >+ // Compare only the Stream and Block sizes and offsets. >+ lzma_index_iter ra, rb; >+ lzma_index_iter_init(&ra, a); >+ lzma_index_iter_init(&rb, b); >+ >+ while (true) { >+ bool reta = lzma_index_iter_next(&ra, LZMA_INDEX_ITER_ANY); >+ bool retb = lzma_index_iter_next(&rb, LZMA_INDEX_ITER_ANY); >+ >+ // If both iterators finish at the same time, then the Indexes >+ // are identical. >+ if (reta) >+ return retb; >+ >+ if (ra.stream.number != rb.stream.number >+ || ra.stream.block_count >+ != rb.stream.block_count >+ || ra.stream.compressed_offset >+ != rb.stream.compressed_offset >+ || ra.stream.uncompressed_offset >+ != rb.stream.uncompressed_offset >+ || ra.stream.compressed_size >+ != rb.stream.compressed_size >+ || ra.stream.uncompressed_size >+ != rb.stream.uncompressed_size >+ || ra.stream.padding >+ != rb.stream.padding) >+ return false; >+ >+ if (ra.stream.block_count == 0) >+ continue; >+ >+ if (ra.block.number_in_file != rb.block.number_in_file >+ || ra.block.compressed_file_offset >+ != rb.block.compressed_file_offset >+ || ra.block.uncompressed_file_offset >+ != rb.block.uncompressed_file_offset >+ || ra.block.number_in_stream >+ != rb.block.number_in_stream >+ || ra.block.compressed_stream_offset >+ != rb.block.compressed_stream_offset >+ || ra.block.uncompressed_stream_offset >+ != rb.block.uncompressed_stream_offset >+ || ra.block.uncompressed_size >+ != rb.block.uncompressed_size >+ || ra.block.unpadded_size >+ != rb.block.unpadded_size >+ || ra.block.total_size >+ != rb.block.total_size) >+ return false; >+ } >+} >+ >+ > // Allocator that succeeds for the first two allocation but fails the rest. > static void * > my_alloc(void *opaque, size_t a, size_t b) >@@ -643,47 +1245,440 @@ > return malloc(a * b); > } > >-static const lzma_allocator my_allocator = { &my_alloc, NULL, NULL }; >+static const lzma_allocator test_index_dup_alloc = { &my_alloc, NULL, NULL }; > > >-int >-main(void) >+static void >+test_lzma_index_dup(void) > { >- test_equal(); >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); > >- test_overflow(); >+ // Test for the bug fix 21515d79d778b8730a434f151b07202d52a04611: >+ // liblzma: Fix lzma_index_dup() for empty Streams. >+ assert_lzma_ret(lzma_index_stream_padding(idx, 4), LZMA_OK); >+ lzma_index *copy = lzma_index_dup(idx, NULL); >+ assert_true(copy != NULL); >+ assert_true(index_is_equal(idx, copy)); >+ lzma_index_end(copy, NULL); > >- lzma_index *i = create_empty(); >- test_many(i); >- lzma_index_end(i, NULL); >+ // Test for the bug fix 3bf857edfef51374f6f3fffae3d817f57d3264a0: >+ // liblzma: Fix a memory leak in error path of lzma_index_dup(). >+ // Use Valgrind to see that there are no leaks. >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN, 10), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN * 2, 100), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN * 3, 1000), LZMA_OK); > >- i = create_small(); >- test_many(i); >- lzma_index_end(i, NULL); >+ assert_true(lzma_index_dup(idx, &test_index_dup_alloc) == NULL); > >- i = create_big(); >- test_many(i); >- lzma_index_end(i, NULL); >+ // Test a few streams and blocks >+ lzma_index *second = lzma_index_init(NULL); >+ assert_true(second != NULL); > >- test_cat(); >+ assert_lzma_ret(lzma_index_stream_padding(second, 16), LZMA_OK); > >- test_locate(); >+ lzma_index *third = lzma_index_init(NULL); >+ assert_true(third != NULL); > >- test_corrupt(); >+ assert_lzma_ret(lzma_index_append(third, NULL, >+ UNPADDED_SIZE_MIN * 10, 40), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(third, NULL, >+ UNPADDED_SIZE_MIN * 20, 400), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(third, NULL, >+ UNPADDED_SIZE_MIN * 30, 4000), LZMA_OK); > >- // Test for the bug fix 21515d79d778b8730a434f151b07202d52a04611: >- // liblzma: Fix lzma_index_dup() for empty Streams. >- i = create_empty(); >- expect(lzma_index_stream_padding(i, 4) == LZMA_OK); >- test_copy(i); >- lzma_index_end(i, NULL); >+ assert_lzma_ret(lzma_index_cat(idx, second, NULL), LZMA_OK); >+ assert_lzma_ret(lzma_index_cat(idx, third, NULL), LZMA_OK); > >- // Test for the bug fix 3bf857edfef51374f6f3fffae3d817f57d3264a0: >- // liblzma: Fix a memory leak in error path of lzma_index_dup(). >- // Use Valgrind to see that there are no leaks. >- i = create_small(); >- expect(lzma_index_dup(i, &my_allocator) == NULL); >- lzma_index_end(i, NULL); >+ copy = lzma_index_dup(idx, NULL); >+ assert_true(copy != NULL); >+ assert_true(index_is_equal(idx, copy)); > >- return 0; >+ lzma_index_end(idx, NULL); >+} >+ >+#if defined(HAVE_ENCODERS) && defined(HAVE_DECODERS) >+static void >+verify_index_buffer(const lzma_index *idx, const uint8_t *buffer, >+ const size_t buffer_size) >+{ >+ lzma_index_iter iter; >+ lzma_index_iter_init(&iter, idx); >+ >+ size_t buffer_pos = 0; >+ >+ // Verify Index Indicator >+ assert_uint_eq(buffer[buffer_pos++], 0); >+ >+ // Get Number of Records >+ lzma_vli number_of_records = 0; >+ lzma_vli block_count = 0; >+ assert_lzma_ret(lzma_vli_decode(&number_of_records, NULL, buffer, >+ &buffer_pos, buffer_size), LZMA_OK); >+ >+ while (!lzma_index_iter_next(&iter, LZMA_INDEX_ITER_ANY)) { >+ // Verify each Record (Unpadded Size, then Uncompressed Size). >+ // Verify Unpadded Size. >+ lzma_vli unpadded_size, uncompressed_size; >+ assert_lzma_ret(lzma_vli_decode(&unpadded_size, >+ NULL, buffer, &buffer_pos, >+ buffer_size), LZMA_OK); >+ assert_uint_eq(unpadded_size, >+ iter.block.unpadded_size); >+ >+ // Verify Uncompressed Size >+ assert_lzma_ret(lzma_vli_decode(&uncompressed_size, >+ NULL, buffer, &buffer_pos, >+ buffer_size), LZMA_OK); >+ assert_uint_eq(uncompressed_size, >+ iter.block.uncompressed_size); >+ >+ block_count++; >+ } >+ >+ // Verify Number of Records >+ assert_uint_eq(number_of_records, block_count); >+ >+ // Verify Index Padding >+ for (; buffer_pos % 4 != 0; buffer_pos++) >+ assert_uint_eq(buffer[buffer_pos], 0); >+ >+ // Verify CRC32 >+ uint32_t crc32 = lzma_crc32(buffer, buffer_pos, 0); >+ assert_uint_eq(read32le(buffer + buffer_pos), crc32); >+} >+ >+ >+// In a few places the Index size is needed as a size_t but lzma_index_size() >+// returns lzma_vli. >+static size_t >+get_index_size(const lzma_index *idx) >+{ >+ const lzma_vli size = lzma_index_size(idx); >+ assert_uint(size, <, SIZE_MAX); >+ return (size_t)size; >+} >+#endif >+ >+ >+static void >+test_lzma_index_encoder(void) >+{ >+#if !defined(HAVE_ENCODERS) || !defined(HAVE_DECODERS) >+ assert_skip("Encoder or decoder support disabled"); >+#else >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); >+ >+ lzma_stream strm = LZMA_STREAM_INIT; >+ >+ // First do basic NULL checks >+ assert_lzma_ret(lzma_index_encoder(NULL, NULL), LZMA_PROG_ERROR); >+ assert_lzma_ret(lzma_index_encoder(&strm, NULL), LZMA_PROG_ERROR); >+ assert_lzma_ret(lzma_index_encoder(NULL, idx), LZMA_PROG_ERROR); >+ >+ // Append three small Blocks >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN, 10), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN * 2, 100), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN * 3, 1000), LZMA_OK); >+ >+ // Encode this lzma_index into a buffer >+ size_t buffer_size = get_index_size(idx); >+ uint8_t *buffer = tuktest_malloc(buffer_size); >+ >+ assert_lzma_ret(lzma_index_encoder(&strm, idx), LZMA_OK); >+ >+ strm.avail_out = buffer_size; >+ strm.next_out = buffer; >+ >+ assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_STREAM_END); >+ assert_uint_eq(strm.avail_out, 0); >+ >+ lzma_end(&strm); >+ >+ verify_index_buffer(idx, buffer, buffer_size); >+ >+ // Test with multiple Streams concatenated into 1 Index >+ lzma_index *second = lzma_index_init(NULL); >+ assert_true(second != NULL); >+ >+ // Include 1 Block >+ assert_lzma_ret(lzma_index_append(second, NULL, >+ UNPADDED_SIZE_MIN * 4, 20), LZMA_OK); >+ >+ // Include Stream Padding >+ assert_lzma_ret(lzma_index_stream_padding(second, 16), LZMA_OK); >+ >+ assert_lzma_ret(lzma_index_cat(idx, second, NULL), LZMA_OK); >+ buffer_size = get_index_size(idx); >+ buffer = tuktest_malloc(buffer_size); >+ assert_lzma_ret(lzma_index_encoder(&strm, idx), LZMA_OK); >+ >+ strm.avail_out = buffer_size; >+ strm.next_out = buffer; >+ >+ assert_lzma_ret(lzma_code(&strm, LZMA_FINISH), LZMA_STREAM_END); >+ assert_uint_eq(strm.avail_out, 0); >+ >+ verify_index_buffer(idx, buffer, buffer_size); >+ >+ lzma_end(&strm); >+#endif >+} >+ >+static void >+generate_index_decode_buffer(void) >+{ >+#ifdef HAVE_ENCODERS >+ decode_test_index = lzma_index_init(NULL); >+ if (decode_test_index == NULL) >+ return; >+ >+ // Add 4 Blocks >+ for (uint32_t i = 1; i < 5; i++) >+ if (lzma_index_append(decode_test_index, NULL, >+ 0x1000 * i, 0x100 * i) != LZMA_OK) >+ return; >+ >+ size_t size = lzma_index_size(decode_test_index); >+ decode_buffer = tuktest_malloc(size); >+ >+ if (lzma_index_buffer_encode(decode_test_index, >+ decode_buffer, &decode_buffer_size, size) != LZMA_OK) >+ decode_buffer_size = 0; >+#endif >+} >+ >+ >+#ifdef HAVE_DECODERS >+static void >+decode_index(const uint8_t *buffer, const size_t size, lzma_stream *strm, >+ lzma_ret expected_error) >+{ >+ strm->avail_in = size; >+ strm->next_in = buffer; >+ assert_lzma_ret(lzma_code(strm, LZMA_FINISH), expected_error); >+} >+#endif >+ >+ >+static void >+test_lzma_index_decoder(void) >+{ >+#ifndef HAVE_DECODERS >+ assert_skip("Decoder support disabled"); >+#else >+ if (decode_buffer_size == 0) >+ assert_skip("Could not initialize decode test buffer"); >+ >+ lzma_stream strm = LZMA_STREAM_INIT; >+ >+ assert_lzma_ret(lzma_index_decoder(NULL, NULL, MEMLIMIT), >+ LZMA_PROG_ERROR); >+ assert_lzma_ret(lzma_index_decoder(&strm, NULL, MEMLIMIT), >+ LZMA_PROG_ERROR); >+ assert_lzma_ret(lzma_index_decoder(NULL, &decode_test_index, >+ MEMLIMIT), LZMA_PROG_ERROR); >+ >+ // Do actual decode >+ lzma_index *idx; >+ assert_lzma_ret(lzma_index_decoder(&strm, &idx, MEMLIMIT), >+ LZMA_OK); >+ >+ decode_index(decode_buffer, decode_buffer_size, &strm, >+ LZMA_STREAM_END); >+ >+ // Compare results with expected >+ assert_true(index_is_equal(decode_test_index, idx)); >+ >+ lzma_index_end(idx, NULL); >+ >+ // Test again with too low memory limit >+ assert_lzma_ret(lzma_index_decoder(&strm, &idx, 0), LZMA_OK); >+ >+ decode_index(decode_buffer, decode_buffer_size, &strm, >+ LZMA_MEMLIMIT_ERROR); >+ >+ uint8_t *corrupt_buffer = tuktest_malloc(decode_buffer_size); >+ memcpy(corrupt_buffer, decode_buffer, decode_buffer_size); >+ >+ assert_lzma_ret(lzma_index_decoder(&strm, &idx, MEMLIMIT), >+ LZMA_OK); >+ >+ // First corrupt the Index Indicator >+ corrupt_buffer[0] ^= 1; >+ decode_index(corrupt_buffer, decode_buffer_size, &strm, >+ LZMA_DATA_ERROR); >+ corrupt_buffer[0] ^= 1; >+ >+ // Corrupt something in the middle of Index >+ corrupt_buffer[decode_buffer_size / 2] ^= 1; >+ assert_lzma_ret(lzma_index_decoder(&strm, &idx, MEMLIMIT), >+ LZMA_OK); >+ decode_index(corrupt_buffer, decode_buffer_size, &strm, >+ LZMA_DATA_ERROR); >+ corrupt_buffer[decode_buffer_size / 2] ^= 1; >+ >+ // Corrupt CRC32 >+ corrupt_buffer[decode_buffer_size - 1] ^= 1; >+ assert_lzma_ret(lzma_index_decoder(&strm, &idx, MEMLIMIT), >+ LZMA_OK); >+ decode_index(corrupt_buffer, decode_buffer_size, &strm, >+ LZMA_DATA_ERROR); >+ corrupt_buffer[decode_buffer_size - 1] ^= 1; >+ >+ // Corrupt Index Padding by setting it to non-zero >+ corrupt_buffer[decode_buffer_size - 5] ^= 1; >+ assert_lzma_ret(lzma_index_decoder(&strm, &idx, MEMLIMIT), >+ LZMA_OK); >+ decode_index(corrupt_buffer, decode_buffer_size, &strm, >+ LZMA_DATA_ERROR); >+ corrupt_buffer[decode_buffer_size - 1] ^= 1; >+ >+ lzma_end(&strm); >+#endif >+} >+ >+ >+static void >+test_lzma_index_buffer_encode(void) >+{ >+#if !defined(HAVE_ENCODERS) || !defined(HAVE_DECODERS) >+ assert_skip("Encoder or decoder support disabled"); >+#else >+ // More simple test than test_lzma_index_encoder() because >+ // currently lzma_index_buffer_encode() is mostly a wrapper >+ // around lzma_index_encoder() anyway. >+ lzma_index *idx = lzma_index_init(NULL); >+ assert_true(idx != NULL); >+ >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN, 10), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN * 2, 100), LZMA_OK); >+ assert_lzma_ret(lzma_index_append(idx, NULL, >+ UNPADDED_SIZE_MIN * 3, 1000), LZMA_OK); >+ >+ size_t buffer_size = get_index_size(idx); >+ uint8_t *buffer = tuktest_malloc(buffer_size); >+ size_t out_pos = 1; >+ >+ // First test bad arguments >+ assert_lzma_ret(lzma_index_buffer_encode(NULL, NULL, NULL, 0), >+ LZMA_PROG_ERROR); >+ assert_lzma_ret(lzma_index_buffer_encode(idx, NULL, NULL, 0), >+ LZMA_PROG_ERROR); >+ assert_lzma_ret(lzma_index_buffer_encode(idx, buffer, NULL, 0), >+ LZMA_PROG_ERROR); >+ assert_lzma_ret(lzma_index_buffer_encode(idx, buffer, &out_pos, >+ 0), LZMA_PROG_ERROR); >+ out_pos = 0; >+ assert_lzma_ret(lzma_index_buffer_encode(idx, buffer, &out_pos, >+ 1), LZMA_BUF_ERROR); >+ >+ // Do encoding >+ assert_lzma_ret(lzma_index_buffer_encode(idx, buffer, &out_pos, >+ buffer_size), LZMA_OK); >+ assert_uint_eq(out_pos, buffer_size); >+ >+ // Validate results >+ verify_index_buffer(idx, buffer, buffer_size); >+#endif >+} >+ >+ >+static void >+test_lzma_index_buffer_decode(void) >+{ >+#ifndef HAVE_DECODERS >+ assert_skip("Decoder support disabled"); >+#else >+ if (decode_buffer_size == 0) >+ assert_skip("Could not initialize decode test buffer"); >+ >+ // Simple test since test_lzma_index_decoder() covers most of the >+ // lzma_index_buffer_decode() code anyway. >+ >+ // First test NULL checks >+ assert_lzma_ret(lzma_index_buffer_decode(NULL, NULL, NULL, NULL, >+ NULL, 0), LZMA_PROG_ERROR); >+ >+ lzma_index *idx; >+ uint64_t memlimit = MEMLIMIT; >+ size_t in_pos = 0; >+ >+ assert_lzma_ret(lzma_index_buffer_decode(&idx, NULL, NULL, NULL, >+ NULL, 0), LZMA_PROG_ERROR); >+ >+ assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL, >+ NULL, NULL, 0), LZMA_PROG_ERROR); >+ >+ assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL, >+ decode_buffer, NULL, 0), LZMA_PROG_ERROR); >+ >+ assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL, >+ decode_buffer, NULL, 0), LZMA_PROG_ERROR); >+ >+ assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL, >+ decode_buffer, &in_pos, 0), LZMA_DATA_ERROR); >+ >+ in_pos = 1; >+ assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL, >+ decode_buffer, &in_pos, 0), LZMA_PROG_ERROR); >+ in_pos = 0; >+ >+ // Test expected successful decode >+ assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL, >+ decode_buffer, &in_pos, decode_buffer_size), LZMA_OK); >+ >+ assert_true(index_is_equal(decode_test_index, idx)); >+ >+ // Test too small memlimit >+ in_pos = 0; >+ memlimit = 1; >+ assert_lzma_ret(lzma_index_buffer_decode(&idx, &memlimit, NULL, >+ decode_buffer, &in_pos, decode_buffer_size), >+ LZMA_MEMLIMIT_ERROR); >+ assert_uint(memlimit, >, 1); >+ assert_uint(memlimit, <, MEMLIMIT); >+#endif >+} >+ >+ >+extern int >+main(int argc, char **argv) >+{ >+ tuktest_start(argc, argv); >+ generate_index_decode_buffer(); >+ tuktest_run(test_lzma_index_memusage); >+ tuktest_run(test_lzma_index_memused); >+ tuktest_run(test_lzma_index_append); >+ tuktest_run(test_lzma_index_stream_flags); >+ tuktest_run(test_lzma_index_checks); >+ tuktest_run(test_lzma_index_stream_padding); >+ tuktest_run(test_lzma_index_stream_count); >+ tuktest_run(test_lzma_index_block_count); >+ tuktest_run(test_lzma_index_size); >+ tuktest_run(test_lzma_index_stream_size); >+ tuktest_run(test_lzma_index_total_size); >+ tuktest_run(test_lzma_index_file_size); >+ tuktest_run(test_lzma_index_uncompressed_size); >+ tuktest_run(test_lzma_index_iter_init); >+ tuktest_run(test_lzma_index_iter_rewind); >+ tuktest_run(test_lzma_index_iter_next); >+ tuktest_run(test_lzma_index_iter_locate); >+ tuktest_run(test_lzma_index_cat); >+ tuktest_run(test_lzma_index_dup); >+ tuktest_run(test_lzma_index_encoder); >+ tuktest_run(test_lzma_index_decoder); >+ tuktest_run(test_lzma_index_buffer_encode); >+ tuktest_run(test_lzma_index_buffer_decode); >+ lzma_index_end(decode_test_index, NULL); >+ return tuktest_end(); > } >Only in xz-5.4.3/tests: test_index_hash.c >Only in xz-5.4.3/tests: test_lzip_decoder.c >Only in xz-5.4.3/tests: test_memlimit.c >diff -ur xz-5.2.5/tests/test_scripts.sh xz-5.4.3/tests/test_scripts.sh >--- xz-5.2.5/tests/test_scripts.sh 2020-03-17 17:28:50 >+++ xz-5.4.3/tests/test_scripts.sh 2023-05-04 17:21:05 >@@ -16,10 +16,20 @@ > > for i in XZ XZDIFF XZGREP; do > eval test -x "\$$i" && continue >- (exit 77) > exit 77 > done > >+# If decompression support is missing, this test is skipped. >+# Installing the scripts in this case is a bit silly but they >+# could still be used with other decompression tools so configure >+# doesn't automatically disable scripts if decoders are disabled. >+if grep 'define HAVE_DECODERS' ../config.h > /dev/null ; then >+ : >+else >+ echo "Decompression support is disabled, skipping this test." >+ exit 77 >+fi >+ > PATH=`pwd`/../src/xz:$PATH > export PATH > >@@ -32,7 +42,6 @@ > status=$? > if test "$status" != 0 ; then > echo "xzdiff with no changes exited with status $status != 0" >- (exit 1) > exit 1 > fi > >@@ -40,7 +49,6 @@ > status=$? > if test "$status" != 1 ; then > echo "xzdiff with changes exited with status $status != 1" >- (exit 1) > exit 1 > fi > >@@ -48,7 +56,6 @@ > status=$? > if test "$status" != 2 ; then > echo "xzdiff with missing operand exited with status $status != 2" >- (exit 1) > exit 1 > fi > >@@ -68,9 +75,7 @@ > : > else > echo "unexpected output from xzgrep" >- (exit 1) > exit 1 > fi > >-(exit 0) > exit 0 >diff -ur xz-5.2.5/tests/test_stream_flags.c xz-5.4.3/tests/test_stream_flags.c >--- xz-5.2.5/tests/test_stream_flags.c 2020-03-17 17:28:50 >+++ xz-5.4.3/tests/test_stream_flags.c 2023-05-04 17:21:05 >@@ -3,7 +3,8 @@ > /// \file test_stream_flags.c > /// \brief Tests Stream Header and Stream Footer coders > // >-// Author: Lasse Collin >+// Authors: Jia Tan >+// Lasse Collin > // > // This file has been put into the public domain. > // You can do whatever you want with this file. >@@ -13,168 +14,466 @@ > #include "tests.h" > > >-static lzma_stream_flags known_flags; >-static lzma_stream_flags decoded_flags; >-static uint8_t buffer[LZMA_STREAM_HEADER_SIZE]; >+// Size of the Stream Flags field >+// (taken from src/liblzma/common/stream_flags_common.h) >+#define XZ_STREAM_FLAGS_SIZE 2 > >+#ifdef HAVE_ENCODERS >+// Header and footer magic bytes for .xz file format >+// (taken from src/liblzma/common/stream_flags_common.c) >+static const uint8_t xz_header_magic[6] >+ = { 0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00 }; >+static const uint8_t xz_footer_magic[2] = { 0x59, 0x5A }; >+#endif > >-static bool >-validate(void) >+ >+#ifdef HAVE_ENCODERS >+static void >+stream_header_encode_helper(lzma_check check) > { >- // TODO: This could require the specific error type as an argument. >- // We could also test that lzma_stream_flags_compare() gives >- // the correct return values in different situations. >- return lzma_stream_flags_compare(&known_flags, &decoded_flags) >- != LZMA_OK; >+ lzma_stream_flags flags = { >+ .version = 0, >+ .check = check, >+ }; >+ >+ uint8_t header[LZMA_STREAM_HEADER_SIZE]; >+ >+ // Encode Stream Header >+ assert_lzma_ret(lzma_stream_header_encode(&flags, header), LZMA_OK); >+ >+ // Stream Header must start with Header Magic Bytes >+ const uint32_t magic_size = sizeof(xz_header_magic); >+ assert_array_eq(header, xz_header_magic, magic_size); >+ >+ // Next must come Stream Flags >+ const uint8_t *encoded_stream_flags = header + magic_size; >+ >+ // First byte is always null-byte. >+ // Second byte must have the Check ID in the lowest four bits >+ // and the highest four bits zero. >+ const uint8_t expected_stream_flags[] = { 0, check }; >+ assert_array_eq(encoded_stream_flags, expected_stream_flags, >+ XZ_STREAM_FLAGS_SIZE); >+ >+ // Last part is the CRC32 of the Stream Flags >+ const uint8_t *crc_ptr = encoded_stream_flags + XZ_STREAM_FLAGS_SIZE; >+ const uint32_t expected_crc = lzma_crc32(expected_stream_flags, >+ XZ_STREAM_FLAGS_SIZE, 0); >+ assert_uint_eq(read32le(crc_ptr), expected_crc); > } >+#endif > > >-static bool >-test_header_decoder(lzma_ret expected_ret) >+static void >+test_lzma_stream_header_encode(void) > { >- memcrap(&decoded_flags, sizeof(decoded_flags)); >+#ifndef HAVE_ENCODERS >+ assert_skip("Encoder support disabled"); >+#else >+ for (lzma_check i = 0; i < LZMA_CHECK_ID_MAX; i++) >+ stream_header_encode_helper(i); > >- if (lzma_stream_header_decode(&decoded_flags, buffer) != expected_ret) >- return true; >+ lzma_stream_flags flags = { >+ .version = 0, >+ .check = LZMA_CHECK_CRC32 >+ }; > >- if (expected_ret != LZMA_OK) >- return false; >+ uint8_t header[LZMA_STREAM_HEADER_SIZE]; > >- // Header doesn't have Backward Size, so make >- // lzma_stream_flags_compare() ignore it. >- decoded_flags.backward_size = LZMA_VLI_UNKNOWN; >- return validate(); >+ // Should fail if version > 0 >+ flags.version = 1; >+ assert_lzma_ret(lzma_stream_header_encode(&flags, header), >+ LZMA_OPTIONS_ERROR); >+ flags.version = 0; >+ >+ // Should fail if Check ID is invalid >+ flags.check = INVALID_LZMA_CHECK_ID; >+ assert_lzma_ret(lzma_stream_header_encode(&flags, header), >+ LZMA_PROG_ERROR); >+ flags.check = LZMA_CHECK_CRC32; >+ >+ // Should pass even if Backward Size is invalid >+ // because Stream Header doesn't have that field. >+ flags.backward_size = LZMA_VLI_MAX + 1; >+ assert_lzma_ret(lzma_stream_header_encode(&flags, header), LZMA_OK); >+#endif > } > > >+#if defined(HAVE_ENCODERS) > static void >-test_header(void) >+stream_footer_encode_helper(lzma_check check) > { >- memcrap(buffer, sizeof(buffer)); >- expect(lzma_stream_header_encode(&known_flags, buffer) == LZMA_OK); >- succeed(test_header_decoder(LZMA_OK)); >+ lzma_stream_flags flags = { >+ .version = 0, >+ .check = check, >+ .backward_size = LZMA_BACKWARD_SIZE_MIN, >+ }; >+ >+ uint8_t footer[LZMA_STREAM_HEADER_SIZE]; >+ >+ // Encode Stream Footer >+ assert_lzma_ret(lzma_stream_footer_encode(&flags, footer), LZMA_OK); >+ >+ // Stream Footer must start with CRC32 >+ const uint32_t crc = read32le(footer); >+ const uint32_t expected_crc = lzma_crc32(footer + sizeof(uint32_t), >+ LZMA_STREAM_HEADER_SIZE - (sizeof(uint32_t) + >+ sizeof(xz_footer_magic)), 0); >+ assert_uint_eq(crc, expected_crc); >+ >+ // Next the Backward Size >+ const uint32_t backwards_size = read32le(footer + sizeof(uint32_t)); >+ const uint32_t expected_backwards_size = flags.backward_size / 4 - 1; >+ assert_uint_eq(backwards_size, expected_backwards_size); >+ >+ // Next the Stream Flags >+ const uint8_t *stream_flags = footer + sizeof(uint32_t) * 2; >+ >+ // First byte must be null >+ assert_uint_eq(stream_flags[0], 0); >+ >+ // Second byte must have the Check ID in the lowest four bits >+ // and the highest four bits zero. >+ assert_uint_eq(stream_flags[1], check); >+ >+ // And ends with Footer Magic Bytes >+ const uint8_t *expected_footer_magic = stream_flags + >+ XZ_STREAM_FLAGS_SIZE; >+ assert_array_eq(expected_footer_magic, xz_footer_magic, >+ sizeof(xz_footer_magic)); > } >+#endif > > >-static bool >-test_footer_decoder(lzma_ret expected_ret) >+static void >+test_lzma_stream_footer_encode(void) > { >- memcrap(&decoded_flags, sizeof(decoded_flags)); >+#ifndef HAVE_ENCODERS >+ assert_skip("Encoder support disabled"); >+#else >+ for (lzma_check i = 0; i < LZMA_CHECK_ID_MAX; i++) >+ stream_footer_encode_helper(i); > >- if (lzma_stream_footer_decode(&decoded_flags, buffer) != expected_ret) >- return true; >+ lzma_stream_flags flags = { >+ .version = 0, >+ .backward_size = LZMA_BACKWARD_SIZE_MIN, >+ .check = LZMA_CHECK_CRC32 >+ }; > >- if (expected_ret != LZMA_OK) >- return false; >+ uint8_t footer[LZMA_STREAM_HEADER_SIZE]; > >- return validate(); >+ // Should fail if version > 0 >+ flags.version = 1; >+ assert_lzma_ret(lzma_stream_footer_encode(&flags, footer), >+ LZMA_OPTIONS_ERROR); >+ flags.version = 0; >+ >+ // Should fail if Check ID is invalid >+ flags.check = INVALID_LZMA_CHECK_ID; >+ assert_lzma_ret(lzma_stream_footer_encode(&flags, footer), >+ LZMA_PROG_ERROR); >+ >+ // Should fail if Backward Size is invalid >+ flags.backward_size -= 1; >+ assert_lzma_ret(lzma_stream_footer_encode(&flags, footer), >+ LZMA_PROG_ERROR); >+ flags.backward_size += 2; >+ assert_lzma_ret(lzma_stream_footer_encode(&flags, footer), >+ LZMA_PROG_ERROR); >+ flags.backward_size = LZMA_BACKWARD_SIZE_MAX + 4; >+ assert_lzma_ret(lzma_stream_footer_encode(&flags, footer), >+ LZMA_PROG_ERROR); >+#endif > } > > >+#if defined(HAVE_ENCODERS) && defined(HAVE_DECODERS) > static void >-test_footer(void) >+stream_header_decode_helper(lzma_check check) > { >- memcrap(buffer, sizeof(buffer)); >- expect(lzma_stream_footer_encode(&known_flags, buffer) == LZMA_OK); >- succeed(test_footer_decoder(LZMA_OK)); >+ lzma_stream_flags flags = { >+ .version = 0, >+ .check = check >+ }; >+ >+ uint8_t header[LZMA_STREAM_HEADER_SIZE]; >+ >+ assert_lzma_ret(lzma_stream_header_encode(&flags, header), LZMA_OK); >+ >+ lzma_stream_flags dest_flags; >+ assert_lzma_ret(lzma_stream_header_decode(&dest_flags, header), >+ LZMA_OK); >+ >+ // Version should be 0 >+ assert_uint_eq(dest_flags.version, 0); >+ >+ // Backward Size should be LZMA_VLI_UNKNOWN >+ assert_uint_eq(dest_flags.backward_size, LZMA_VLI_UNKNOWN); >+ >+ // Check ID must equal the argument given to this function. >+ assert_uint_eq(dest_flags.check, check); > } >+#endif > > > static void >-test_encode_invalid(void) >+test_lzma_stream_header_decode(void) > { >- known_flags.check = (lzma_check)(LZMA_CHECK_ID_MAX + 1); >- known_flags.backward_size = 1024; >+#if !defined(HAVE_ENCODERS) || !defined(HAVE_DECODERS) >+ assert_skip("Encoder or decoder support disabled"); >+#else >+ for (lzma_check i = 0; i < LZMA_CHECK_ID_MAX; i++) >+ stream_header_decode_helper(i); > >- expect(lzma_stream_header_encode(&known_flags, buffer) >- == LZMA_PROG_ERROR); >+ lzma_stream_flags flags = { >+ .version = 0, >+ .check = LZMA_CHECK_CRC32 >+ }; > >- expect(lzma_stream_footer_encode(&known_flags, buffer) >- == LZMA_PROG_ERROR); >+ uint8_t header[LZMA_STREAM_HEADER_SIZE]; >+ lzma_stream_flags dest; > >- known_flags.check = (lzma_check)(-1); >+ // First encode known flags to header buffer >+ assert_lzma_ret(lzma_stream_header_encode(&flags, header), LZMA_OK); > >- expect(lzma_stream_header_encode(&known_flags, buffer) >- == LZMA_PROG_ERROR); >+ // Should fail if magic bytes do not match >+ header[0] ^= 1; >+ assert_lzma_ret(lzma_stream_header_decode(&dest, header), >+ LZMA_FORMAT_ERROR); >+ header[0] ^= 1; > >- expect(lzma_stream_footer_encode(&known_flags, buffer) >- == LZMA_PROG_ERROR); >+ // Should fail if a reserved bit is set >+ uint8_t *stream_flags = header + sizeof(xz_header_magic); >+ stream_flags[0] = 1; > >- known_flags.check = LZMA_CHECK_NONE; >- known_flags.backward_size = 0; >+ // Need to adjust CRC32 after making a change since the CRC32 >+ // is verified before decoding the Stream Flags field. >+ uint8_t *crc32_ptr = header + sizeof(xz_header_magic) >+ + XZ_STREAM_FLAGS_SIZE; >+ const uint32_t crc_orig = read32le(crc32_ptr); >+ uint32_t new_crc32 = lzma_crc32( >+ stream_flags, XZ_STREAM_FLAGS_SIZE, 0); >+ write32le(crc32_ptr, new_crc32); >+ assert_lzma_ret(lzma_stream_header_decode(&dest, header), >+ LZMA_OPTIONS_ERROR); >+ stream_flags[0] = 0; >+ write32le(crc32_ptr, crc_orig); > >- // Header encoder ignores backward_size. >- expect(lzma_stream_header_encode(&known_flags, buffer) == LZMA_OK); >+ // Should fail if upper bits of check ID are set >+ stream_flags[1] |= 0xF0; >+ new_crc32 = lzma_crc32(stream_flags, XZ_STREAM_FLAGS_SIZE, 0); >+ write32le(crc32_ptr, new_crc32); >+ assert_lzma_ret(lzma_stream_header_decode(&dest, header), >+ LZMA_OPTIONS_ERROR); >+ stream_flags[1] = flags.check; >+ write32le(crc32_ptr, crc_orig); > >- expect(lzma_stream_footer_encode(&known_flags, buffer) >- == LZMA_PROG_ERROR); >+ // Should fail if CRC32 does not match. >+ // First, alter a byte in the Stream Flags. >+ stream_flags[0] = 1; >+ assert_lzma_ret(lzma_stream_header_decode(&dest, header), >+ LZMA_DATA_ERROR); >+ stream_flags[0] = 0; > >- known_flags.backward_size = LZMA_VLI_MAX; >+ // Next, change the CRC32. >+ *crc32_ptr ^= 1; >+ assert_lzma_ret(lzma_stream_header_decode(&dest, header), >+ LZMA_DATA_ERROR); >+#endif >+} > >- expect(lzma_stream_header_encode(&known_flags, buffer) == LZMA_OK); > >- expect(lzma_stream_footer_encode(&known_flags, buffer) >- == LZMA_PROG_ERROR); >+#if defined(HAVE_ENCODERS) && defined(HAVE_DECODERS) >+static void >+stream_footer_decode_helper(lzma_check check) >+{ >+ lzma_stream_flags flags = { >+ .version = 0, >+ .backward_size = LZMA_BACKWARD_SIZE_MIN, >+ .check = check, >+ }; >+ >+ uint8_t footer[LZMA_STREAM_HEADER_SIZE]; >+ assert_lzma_ret(lzma_stream_footer_encode(&flags, footer), LZMA_OK); >+ >+ lzma_stream_flags dest_flags; >+ assert_lzma_ret(lzma_stream_footer_decode(&dest_flags, footer), >+ LZMA_OK); >+ >+ // Version should be 0. >+ assert_uint_eq(dest_flags.version, 0); >+ >+ // Backward Size should equal the value from the flags. >+ assert_uint_eq(dest_flags.backward_size, flags.backward_size); >+ >+ // Check ID must equal argument given to this function. >+ assert_uint_eq(dest_flags.check, check); > } >+#endif > > > static void >-test_decode_invalid(void) >+test_lzma_stream_footer_decode(void) > { >- known_flags.check = LZMA_CHECK_NONE; >- known_flags.backward_size = 1024; >+#if !defined(HAVE_ENCODERS) || !defined(HAVE_DECODERS) >+ assert_skip("Encoder or decoder support disabled"); >+#else >+ for (lzma_check i = 0; i < LZMA_CHECK_ID_MAX; i++) >+ stream_footer_decode_helper(i); > >- expect(lzma_stream_header_encode(&known_flags, buffer) == LZMA_OK); >+ lzma_stream_flags flags = { >+ .version = 0, >+ .check = LZMA_CHECK_CRC32, >+ .backward_size = LZMA_BACKWARD_SIZE_MIN >+ }; > >- // Test 1 (invalid Magic Bytes) >- buffer[5] ^= 1; >- succeed(test_header_decoder(LZMA_FORMAT_ERROR)); >- buffer[5] ^= 1; >+ uint8_t footer[LZMA_STREAM_HEADER_SIZE]; >+ lzma_stream_flags dest; > >- // Test 2a (valid CRC32) >- uint32_t crc = lzma_crc32(buffer + 6, 2, 0); >- write32le(buffer + 8, crc); >- succeed(test_header_decoder(LZMA_OK)); >+ // First encode known flags to the footer buffer >+ assert_lzma_ret(lzma_stream_footer_encode(&flags, footer), LZMA_OK); > >- // Test 2b (invalid Stream Flags with valid CRC32) >- buffer[6] ^= 0x20; >- crc = lzma_crc32(buffer + 6, 2, 0); >- write32le(buffer + 8, crc); >- succeed(test_header_decoder(LZMA_OPTIONS_ERROR)); >+ // Should fail if magic bytes do not match >+ footer[LZMA_STREAM_HEADER_SIZE - 1] ^= 1; >+ assert_lzma_ret(lzma_stream_footer_decode(&dest, footer), >+ LZMA_FORMAT_ERROR); >+ footer[LZMA_STREAM_HEADER_SIZE - 1] ^= 1; > >- // Test 3 (invalid CRC32) >- expect(lzma_stream_header_encode(&known_flags, buffer) == LZMA_OK); >- buffer[9] ^= 1; >- succeed(test_header_decoder(LZMA_DATA_ERROR)); >+ // Should fail if a reserved bit is set. >+ // In the Stream Footer, the Stream Flags follow the CRC32 (4 bytes) >+ // and the Backward Size (4 bytes) >+ uint8_t *stream_flags = footer + sizeof(uint32_t) * 2; >+ stream_flags[0] = 1; > >- // Test 4 (invalid Stream Flags with valid CRC32) >- expect(lzma_stream_footer_encode(&known_flags, buffer) == LZMA_OK); >- buffer[9] ^= 0x40; >- crc = lzma_crc32(buffer + 4, 6, 0); >- write32le(buffer, crc); >- succeed(test_footer_decoder(LZMA_OPTIONS_ERROR)); >+ // Need to adjust the CRC32 so it will not fail that check instead >+ uint8_t *crc32_ptr = footer; >+ const uint32_t crc_orig = read32le(crc32_ptr); >+ uint8_t *backward_size = footer + sizeof(uint32_t); >+ uint32_t new_crc32 = lzma_crc32(backward_size, sizeof(uint32_t) + >+ XZ_STREAM_FLAGS_SIZE, 0); >+ write32le(crc32_ptr, new_crc32); >+ assert_lzma_ret(lzma_stream_footer_decode(&dest, footer), >+ LZMA_OPTIONS_ERROR); >+ stream_flags[0] = 0; >+ write32le(crc32_ptr, crc_orig); > >- // Test 5 (invalid Magic Bytes) >- expect(lzma_stream_footer_encode(&known_flags, buffer) == LZMA_OK); >- buffer[11] ^= 1; >- succeed(test_footer_decoder(LZMA_FORMAT_ERROR)); >+ // Should fail if upper bits of check ID are set >+ stream_flags[1] |= 0xF0; >+ new_crc32 = lzma_crc32(backward_size, sizeof(uint32_t) + >+ XZ_STREAM_FLAGS_SIZE, 0); >+ write32le(crc32_ptr, new_crc32); >+ assert_lzma_ret(lzma_stream_footer_decode(&dest, footer), >+ LZMA_OPTIONS_ERROR); >+ stream_flags[1] = flags.check; >+ write32le(crc32_ptr, crc_orig); >+ >+ // Should fail if CRC32 does not match. >+ // First, alter a byte in the Stream Flags. >+ stream_flags[0] = 1; >+ assert_lzma_ret(lzma_stream_footer_decode(&dest, footer), >+ LZMA_DATA_ERROR); >+ stream_flags[0] = 0; >+ >+ // Next, change the CRC32 >+ *crc32_ptr ^= 1; >+ assert_lzma_ret(lzma_stream_footer_decode(&dest, footer), >+ LZMA_DATA_ERROR); >+#endif > } > > >-int >-main(void) >+static void >+test_lzma_stream_flags_compare(void) > { >- // Valid headers >- known_flags.backward_size = 1024; >- for (lzma_check check = LZMA_CHECK_NONE; >- check <= LZMA_CHECK_ID_MAX; ++check) { >- test_header(); >- test_footer(); >+ lzma_stream_flags first = { >+ .version = 0, >+ .backward_size = LZMA_BACKWARD_SIZE_MIN, >+ .check = LZMA_CHECK_CRC32, >+ }; >+ >+ lzma_stream_flags second = first; >+ >+ // First test should pass >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), LZMA_OK); >+ >+ // Altering either version should cause an error >+ first.version = 1; >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), >+ LZMA_OPTIONS_ERROR); >+ second.version = 1; >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), >+ LZMA_OPTIONS_ERROR); >+ first.version = 0; >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), >+ LZMA_OPTIONS_ERROR); >+ second.version = 0; >+ >+ // Check types must be under the maximum >+ first.check = INVALID_LZMA_CHECK_ID; >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), >+ LZMA_PROG_ERROR); >+ second.check = INVALID_LZMA_CHECK_ID; >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), >+ LZMA_PROG_ERROR); >+ first.check = LZMA_CHECK_CRC32; >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), >+ LZMA_PROG_ERROR); >+ second.check = LZMA_CHECK_CRC32; >+ >+ // Check types must be equal >+ for (lzma_check i = 0; i < LZMA_CHECK_ID_MAX; i++) { >+ first.check = i; >+ if (i == second.check) >+ assert_lzma_ret(lzma_stream_flags_compare(&first, >+ &second), LZMA_OK); >+ else >+ assert_lzma_ret(lzma_stream_flags_compare(&first, >+ &second), LZMA_DATA_ERROR); > } >+ first.check = LZMA_CHECK_CRC32; > >- // Invalid headers >- test_encode_invalid(); >- test_decode_invalid(); >+ // Backward Size comparison is skipped if either are LZMA_VLI_UNKNOWN >+ first.backward_size = LZMA_VLI_UNKNOWN; >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), LZMA_OK); >+ second.backward_size = LZMA_VLI_MAX + 1; >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), LZMA_OK); >+ second.backward_size = LZMA_BACKWARD_SIZE_MIN; > >- return 0; >+ // Backward Sizes need to be valid >+ first.backward_size = LZMA_VLI_MAX + 4; >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), >+ LZMA_PROG_ERROR); >+ second.backward_size = LZMA_VLI_MAX + 4; >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), >+ LZMA_PROG_ERROR); >+ first.backward_size = LZMA_BACKWARD_SIZE_MIN; >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), >+ LZMA_PROG_ERROR); >+ second.backward_size = LZMA_BACKWARD_SIZE_MIN; >+ >+ // Backward Sizes must be equal >+ second.backward_size = first.backward_size + 4; >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), >+ LZMA_DATA_ERROR); >+ >+ // Should fail if Backward Sizes are > LZMA_BACKWARD_SIZE_MAX >+ // even though they are equal >+ first.backward_size = LZMA_BACKWARD_SIZE_MAX + 1; >+ second.backward_size = LZMA_BACKWARD_SIZE_MAX + 1; >+ assert_lzma_ret(lzma_stream_flags_compare(&first, &second), >+ LZMA_PROG_ERROR); >+} >+ >+ >+extern int >+main(int argc, char **argv) >+{ >+ tuktest_start(argc, argv); >+ tuktest_run(test_lzma_stream_header_encode); >+ tuktest_run(test_lzma_stream_footer_encode); >+ tuktest_run(test_lzma_stream_header_decode); >+ tuktest_run(test_lzma_stream_footer_decode); >+ tuktest_run(test_lzma_stream_flags_compare); >+ return tuktest_end(); > } >Only in xz-5.4.3/tests: test_vli.c >diff -ur xz-5.2.5/tests/tests.h xz-5.4.3/tests/tests.h >--- xz-5.2.5/tests/tests.h 2020-03-17 17:28:50 >+++ xz-5.4.3/tests/tests.h 2023-05-04 17:21:05 >@@ -16,104 +16,60 @@ > #include "sysdefs.h" > #include "tuklib_integer.h" > #include "lzma.h" >+#include "tuktest.h" > >-#include <stdio.h> > >-#define memcrap(buf, size) memset(buf, 0xFD, size) >+// Invalid value for the lzma_check enumeration. This must be positive >+// but small enough to fit into signed char since the underlying type might >+// one some platform be a signed char. >+// >+// Don't put LZMA_ at the beginning of the name so that it is obvious that >+// this constant doesn't come from the API headers. >+#define INVALID_LZMA_CHECK_ID ((lzma_check)(LZMA_CHECK_ID_MAX + 1)) > >-#define expect(test) ((test) ? 0 : (fprintf(stderr, "%s:%d: %s\n", \ >- __FILE__, __LINE__, #test), abort(), 0)) > >-#define succeed(test) expect(!(test)) >+// This table and macro allow getting more readable error messages when >+// comparing the lzma_ret enumeration values. >+static const char enum_strings_lzma_ret[][24] = { >+ "LZMA_OK", >+ "LZMA_STREAM_END", >+ "LZMA_NO_CHECK", >+ "LZMA_UNSUPPORTED_CHECK", >+ "LZMA_GET_CHECK", >+ "LZMA_MEM_ERROR", >+ "LZMA_MEMLIMIT_ERROR", >+ "LZMA_FORMAT_ERROR", >+ "LZMA_OPTIONS_ERROR", >+ "LZMA_DATA_ERROR", >+ "LZMA_BUF_ERROR", >+ "LZMA_PROG_ERROR", >+ "LZMA_SEEK_NEEDED", >+}; > >-#define fail(test) expect(test) >+#define assert_lzma_ret(test_expr, ref_val) \ >+ assert_enum_eq(test_expr, ref_val, enum_strings_lzma_ret) > > >-static inline const char * >-lzma_ret_sym(lzma_ret ret) >-{ >- if ((unsigned int)(ret) > LZMA_PROG_ERROR) >- return "UNKNOWN_ERROR"; >+static const char enum_strings_lzma_check[][24] = { >+ "LZMA_CHECK_NONE", >+ "LZMA_CHECK_CRC32", >+ "LZMA_CHECK_UNKNOWN_2", >+ "LZMA_CHECK_UNKNOWN_3", >+ "LZMA_CHECK_CRC64", >+ "LZMA_CHECK_UNKNOWN_5", >+ "LZMA_CHECK_UNKNOWN_6", >+ "LZMA_CHECK_UNKNOWN_7", >+ "LZMA_CHECK_UNKNOWN_8", >+ "LZMA_CHECK_UNKNOWN_9", >+ "LZMA_CHECK_SHA256", >+ "LZMA_CHECK_UNKNOWN_11", >+ "LZMA_CHECK_UNKNOWN_12", >+ "LZMA_CHECK_UNKNOWN_13", >+ "LZMA_CHECK_UNKNOWN_14", >+ "LZMA_CHECK_UNKNOWN_15", >+}; > >- static const char *msgs[] = { >- "LZMA_OK", >- "LZMA_STREAM_END", >- "LZMA_NO_CHECK", >- "LZMA_UNSUPPORTED_CHECK", >- "LZMA_GET_CHECK", >- "LZMA_MEM_ERROR", >- "LZMA_MEMLIMIT_ERROR", >- "LZMA_FORMAT_ERROR", >- "LZMA_OPTIONS_ERROR", >- "LZMA_DATA_ERROR", >- "LZMA_BUF_ERROR", >- "LZMA_PROG_ERROR" >- }; >- >- return msgs[ret]; >-} >- >- >-static inline bool >-coder_loop(lzma_stream *strm, uint8_t *in, size_t in_size, >- uint8_t *out, size_t out_size, >- lzma_ret expected_ret, lzma_action finishing_action) >-{ >- size_t in_left = in_size; >- size_t out_left = out_size > 0 ? out_size + 1 : 0; >- lzma_action action = LZMA_RUN; >- lzma_ret ret; >- >- strm->next_in = NULL; >- strm->avail_in = 0; >- strm->next_out = NULL; >- strm->avail_out = 0; >- >- while (true) { >- if (in_left > 0) { >- if (--in_left == 0) >- action = finishing_action; >- >- strm->next_in = in++; >- strm->avail_in = 1; >- } >- >- if (out_left > 0) { >- --out_left; >- strm->next_out = out++; >- strm->avail_out = 1; >- } >- >- ret = lzma_code(strm, action); >- if (ret != LZMA_OK) >- break; >- } >- >- bool error = false; >- >- if (ret != expected_ret) >- error = true; >- >- if (strm->total_in != in_size || strm->total_out != out_size) >- error = true; >- >- return error; >-} >- >- >-static inline bool >-decoder_loop_ret(lzma_stream *strm, uint8_t *in, size_t in_size, >- lzma_ret expected_ret) >-{ >- return coder_loop(strm, in, in_size, NULL, 0, expected_ret, LZMA_RUN); >-} >- >- >-static inline bool >-decoder_loop(lzma_stream *strm, uint8_t *in, size_t in_size) >-{ >- return coder_loop(strm, in, in_size, NULL, 0, >- LZMA_STREAM_END, LZMA_RUN); >-} >+#define assert_lzma_check(test_expr, ref_val) \ >+ assert_enum_eq(test_expr, ref_val, enum_strings_lzma_check) > > #endif >Only in xz-5.4.3/tests: tuktest.h >diff -ur xz-5.2.5/windows/INSTALL-MSVC.txt xz-5.4.3/windows/INSTALL-MSVC.txt >--- xz-5.2.5/windows/INSTALL-MSVC.txt 2020-03-17 17:28:50 >+++ xz-5.4.3/windows/INSTALL-MSVC.txt 2023-05-04 17:21:05 >@@ -18,8 +18,12 @@ > Building > -------- > >- The following files in this directory are for MSVC: >+ It is recommended to use CMake to generate build files for MSVC. >+ The project files in vs201x directories will be removed in the >+ future (5.4.x releases will include them still). > >+ Descriptions of the files in the vs201x directories: >+ > config.h liblzma configuration #defines for MSVC. > liblzma.vcxproj This builds static liblzma. > liblzma_dll.vcxproj This builds liblzma.dll. >@@ -34,18 +38,19 @@ > This means that you may need to either install Windows SDK 8.1 or > you may need to set the target platform version before building. > >- Currently no test programs are built or run under MSVC. >+ Currently no test programs are built or run under MSVC from the >+ project files. CMake-based builds include tests too. > >- MSVC gives a bunch of compiler warnings. Some warnings are specific >- to 32-bit or 64-bit build and some appear for both builds. These >- are known and shouldn't be a problem. Some of them will probably >- be fixed in the future. > >- > Notes > ----- > > liblzma API headers declare the functions with __declspec(dllimport) > by default. To avoid this when using static liblzma from your code, > #define LZMA_API_STATIC before #including <lzma.h>. >+ >+ MSVC gives a bunch of compiler warnings. Some warnings are specific >+ to 32-bit or 64-bit build and some appear for both builds. These >+ are known and shouldn't be a problem. Some of them will probably >+ be fixed in the future. > >diff -ur xz-5.2.5/windows/INSTALL-MinGW.txt xz-5.4.3/windows/INSTALL-MinGW.txt >--- xz-5.2.5/windows/INSTALL-MinGW.txt 2020-03-17 17:28:50 >+++ xz-5.4.3/windows/INSTALL-MinGW.txt 2023-05-04 17:21:05 >@@ -32,7 +32,7 @@ > So you need to pick between MinGW and MinGW-w32 when building > 32-bit version. You don't need both. > >- You might find 7-Zip <http://7-zip.org/> handy when extracting >+ You might find 7-Zip <https://7-zip.org/> handy when extracting > some files. The ready-made build script build.bash will also use > 7-Zip to create the distributable .zip and .7z files. > >@@ -50,7 +50,7 @@ > > You can download MSYS from MinGW's Sourceforge page: > >- http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/ >+ https://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/ > > I recommend using MSYS 1.0.11 (MSYS-1.0.11.exe or > msysCORE-1.0.11-bin.tar.gz) because that package includes all the >@@ -69,7 +69,7 @@ > > You can download the required packages from MinGW's Sourceforge page: > >- http://sourceforge.net/projects/mingw/files/ >+ https://sourceforge.net/projects/mingw/files/ > > These version numbers were the latest when I wrote this document, but > you probably should pick the latest versions: >@@ -94,9 +94,9 @@ > toolchain. For XZ Utils 5.2.0 I used the packages from these > directories: > >- http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/4.9.2/threads-win32/sjlj/ >+ https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/4.9.2/threads-win32/sjlj/ > >- http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.2/threads-win32/sjlj/ >+ https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.2/threads-win32/sjlj/ > > If you install both MinGW-w32 and MinGW-w64, remember to extract > them into different directories. build.bash looks at >diff -ur xz-5.2.5/windows/README-Windows.txt xz-5.4.3/windows/README-Windows.txt >--- xz-5.2.5/windows/README-Windows.txt 2020-03-17 17:28:50 >+++ xz-5.4.3/windows/README-Windows.txt 2023-05-04 17:21:05 >@@ -118,5 +118,5 @@ > Reporting bugs > -------------- > >- Report bugs to <lasse.collin@tukaani.org> (in English or Finnish). >+ Report bugs to <xz@tukaani.org>. > >diff -ur xz-5.2.5/windows/build.bash xz-5.4.3/windows/build.bash >--- xz-5.2.5/windows/build.bash 2020-03-17 17:28:50 >+++ xz-5.4.3/windows/build.bash 2023-05-04 17:21:05 >@@ -163,7 +163,7 @@ > > # Copy the headers, the .def file, and the docs. > # They are the same for all architectures and builds. >-mkdir -pv pkg/{include/lzma,doc/{manuals,examples}} >+mkdir -pv pkg/{include/lzma,doc/{api,manuals,examples}} > txtcp pkg/include "" src/liblzma/api/lzma.h > txtcp pkg/include/lzma "" src/liblzma/api/lzma/*.h > txtcp pkg/doc "" src/liblzma/liblzma.def >@@ -171,6 +171,7 @@ > txtcp pkg/doc "" doc/*.txt windows/README-Windows.txt > txtcp pkg/doc/manuals "" doc/man/txt/{xz,xzdec,lzmainfo}.txt > cp -v doc/man/pdf-*/{xz,xzdec,lzmainfo}-*.pdf pkg/doc/manuals >+cp -v doc/api/* pkg/doc/api > txtcp pkg/doc/examples "" doc/examples/* > > if [ -f windows/COPYING-Windows.txt ]; then >diff -ur xz-5.2.5/windows/vs2013/config.h xz-5.4.3/windows/vs2013/config.h >--- xz-5.2.5/windows/vs2013/config.h 2020-03-17 17:28:50 >+++ xz-5.4.3/windows/vs2013/config.h 2023-05-04 17:21:05 >@@ -21,6 +21,9 @@ > /* Define to 1 if arm decoder is enabled. */ > #define HAVE_DECODER_ARM 1 > >+/* Define to 1 if arm64 decoder is enabled. */ >+#define HAVE_DECODER_ARM64 1 >+ > /* Define to 1 if armthumb decoder is enabled. */ > #define HAVE_DECODER_ARMTHUMB 1 > >@@ -51,6 +54,9 @@ > /* Define to 1 if arm encoder is enabled. */ > #define HAVE_ENCODER_ARM 1 > >+/* Define to 1 if arm64 encoder is enabled. */ >+#define HAVE_ENCODER_ARM64 1 >+ > /* Define to 1 if armthumb encoder is enabled. */ > #define HAVE_ENCODER_ARMTHUMB 1 > >@@ -80,6 +86,9 @@ > > /* Define to 1 if you have the <limits.h> header file. */ > #define HAVE_LIMITS_H 1 >+ >+/* Define to 1 if .lz (lzip) decompression support is enabled. */ >+#define HAVE_LZIP_DECODER 1 > > /* Define to 1 to enable bt2 match finder. */ > #define HAVE_MF_BT2 1 >diff -ur xz-5.2.5/windows/vs2013/liblzma.vcxproj xz-5.4.3/windows/vs2013/liblzma.vcxproj >--- xz-5.2.5/windows/vs2013/liblzma.vcxproj 2020-03-17 17:28:54 >+++ xz-5.4.3/windows/vs2013/liblzma.vcxproj 2023-05-04 17:21:05 >@@ -229,6 +229,7 @@ > <ClCompile Include="..\..\src\liblzma\common\easy_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\easy_encoder_memusage.c" /> > <ClCompile Include="..\..\src\liblzma\common\easy_preset.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\file_info.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_buffer_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_buffer_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_common.c" /> >@@ -242,15 +243,20 @@ > <ClCompile Include="..\..\src\liblzma\common\index_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\index_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\index_hash.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\lzip_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\microlzma_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\microlzma_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\outqueue.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_buffer_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_buffer_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\stream_decoder_mt.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_encoder_mt.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_common.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_encoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\string_conversion.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_size.c" /> >@@ -270,6 +276,7 @@ > <ClCompile Include="..\..\src\liblzma\lz\lz_encoder_mf.c" /> > <ClCompile Include="..\..\src\liblzma\rangecoder\price_table.c" /> > <ClCompile Include="..\..\src\liblzma\simple\arm.c" /> >+ <ClCompile Include="..\..\src\liblzma\simple\arm64.c" /> > <ClCompile Include="..\..\src\liblzma\simple\armthumb.c" /> > <ClCompile Include="..\..\src\liblzma\simple\ia64.c" /> > <ClCompile Include="..\..\src\liblzma\simple\powerpc.c" /> >@@ -318,8 +325,10 @@ > <ClInclude Include="..\..\src\liblzma\common\filter_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\filter_encoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\index.h" /> >+ <ClInclude Include="..\..\src\liblzma\common\index_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\index_encoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\memcmplen.h" /> >+ <ClInclude Include="..\..\src\liblzma\common\lzip_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\outqueue.h" /> > <ClInclude Include="..\..\src\liblzma\common\stream_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\stream_flags_common.h" /> >@@ -351,4 +360,4 @@ > <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> > <ImportGroup Label="ExtensionTargets"> > </ImportGroup> >-</Project> >\ No newline at end of file >+</Project> >diff -ur xz-5.2.5/windows/vs2013/liblzma_dll.vcxproj xz-5.4.3/windows/vs2013/liblzma_dll.vcxproj >--- xz-5.2.5/windows/vs2013/liblzma_dll.vcxproj 2020-03-17 17:28:54 >+++ xz-5.4.3/windows/vs2013/liblzma_dll.vcxproj 2023-05-04 17:21:05 >@@ -137,6 +137,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> >@@ -154,6 +155,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> >@@ -173,6 +175,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> >@@ -191,6 +194,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'"> >@@ -210,6 +214,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'"> >@@ -228,6 +233,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemGroup> >@@ -255,6 +261,7 @@ > <ClCompile Include="..\..\src\liblzma\common\easy_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\easy_encoder_memusage.c" /> > <ClCompile Include="..\..\src\liblzma\common\easy_preset.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\file_info.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_buffer_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_buffer_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_common.c" /> >@@ -268,15 +275,20 @@ > <ClCompile Include="..\..\src\liblzma\common\index_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\index_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\index_hash.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\lzip_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\microlzma_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\microlzma_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\outqueue.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_buffer_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_buffer_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\stream_decoder_mt.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_encoder_mt.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_common.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_encoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\string_conversion.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_size.c" /> >@@ -296,6 +308,7 @@ > <ClCompile Include="..\..\src\liblzma\lz\lz_encoder_mf.c" /> > <ClCompile Include="..\..\src\liblzma\rangecoder\price_table.c" /> > <ClCompile Include="..\..\src\liblzma\simple\arm.c" /> >+ <ClCompile Include="..\..\src\liblzma\simple\arm64.c" /> > <ClCompile Include="..\..\src\liblzma\simple\armthumb.c" /> > <ClCompile Include="..\..\src\liblzma\simple\ia64.c" /> > <ClCompile Include="..\..\src\liblzma\simple\powerpc.c" /> >@@ -344,8 +357,10 @@ > <ClInclude Include="..\..\src\liblzma\common\filter_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\filter_encoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\index.h" /> >+ <ClInclude Include="..\..\src\liblzma\common\index_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\index_encoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\memcmplen.h" /> >+ <ClInclude Include="..\..\src\liblzma\common\lzip_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\outqueue.h" /> > <ClInclude Include="..\..\src\liblzma\common\stream_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\stream_flags_common.h" /> >@@ -380,4 +395,4 @@ > <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> > <ImportGroup Label="ExtensionTargets"> > </ImportGroup> >-</Project> >\ No newline at end of file >+</Project> >diff -ur xz-5.2.5/windows/vs2017/config.h xz-5.4.3/windows/vs2017/config.h >--- xz-5.2.5/windows/vs2017/config.h 2020-03-17 17:28:50 >+++ xz-5.4.3/windows/vs2017/config.h 2023-05-04 17:21:05 >@@ -21,6 +21,9 @@ > /* Define to 1 if arm decoder is enabled. */ > #define HAVE_DECODER_ARM 1 > >+/* Define to 1 if arm64 decoder is enabled. */ >+#define HAVE_DECODER_ARM64 1 >+ > /* Define to 1 if armthumb decoder is enabled. */ > #define HAVE_DECODER_ARMTHUMB 1 > >@@ -51,6 +54,9 @@ > /* Define to 1 if arm encoder is enabled. */ > #define HAVE_ENCODER_ARM 1 > >+/* Define to 1 if arm64 encoder is enabled. */ >+#define HAVE_ENCODER_ARM64 1 >+ > /* Define to 1 if armthumb encoder is enabled. */ > #define HAVE_ENCODER_ARMTHUMB 1 > >@@ -80,6 +86,9 @@ > > /* Define to 1 if you have the <limits.h> header file. */ > #define HAVE_LIMITS_H 1 >+ >+/* Define to 1 if .lz (lzip) decompression support is enabled. */ >+#define HAVE_LZIP_DECODER 1 > > /* Define to 1 to enable bt2 match finder. */ > #define HAVE_MF_BT2 1 >diff -ur xz-5.2.5/windows/vs2017/liblzma.vcxproj xz-5.4.3/windows/vs2017/liblzma.vcxproj >--- xz-5.2.5/windows/vs2017/liblzma.vcxproj 2020-03-17 17:28:54 >+++ xz-5.4.3/windows/vs2017/liblzma.vcxproj 2023-05-04 17:21:05 >@@ -229,6 +229,7 @@ > <ClCompile Include="..\..\src\liblzma\common\easy_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\easy_encoder_memusage.c" /> > <ClCompile Include="..\..\src\liblzma\common\easy_preset.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\file_info.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_buffer_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_buffer_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_common.c" /> >@@ -242,15 +243,20 @@ > <ClCompile Include="..\..\src\liblzma\common\index_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\index_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\index_hash.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\lzip_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\microlzma_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\microlzma_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\outqueue.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_buffer_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_buffer_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\stream_decoder_mt.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_encoder_mt.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_common.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_encoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\string_conversion.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_size.c" /> >@@ -270,6 +276,7 @@ > <ClCompile Include="..\..\src\liblzma\lz\lz_encoder_mf.c" /> > <ClCompile Include="..\..\src\liblzma\rangecoder\price_table.c" /> > <ClCompile Include="..\..\src\liblzma\simple\arm.c" /> >+ <ClCompile Include="..\..\src\liblzma\simple\arm64.c" /> > <ClCompile Include="..\..\src\liblzma\simple\armthumb.c" /> > <ClCompile Include="..\..\src\liblzma\simple\ia64.c" /> > <ClCompile Include="..\..\src\liblzma\simple\powerpc.c" /> >@@ -318,8 +325,10 @@ > <ClInclude Include="..\..\src\liblzma\common\filter_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\filter_encoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\index.h" /> >+ <ClInclude Include="..\..\src\liblzma\common\index_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\index_encoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\memcmplen.h" /> >+ <ClInclude Include="..\..\src\liblzma\common\lzip_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\outqueue.h" /> > <ClInclude Include="..\..\src\liblzma\common\stream_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\stream_flags_common.h" /> >diff -ur xz-5.2.5/windows/vs2017/liblzma_dll.vcxproj xz-5.4.3/windows/vs2017/liblzma_dll.vcxproj >--- xz-5.2.5/windows/vs2017/liblzma_dll.vcxproj 2020-03-17 17:28:54 >+++ xz-5.4.3/windows/vs2017/liblzma_dll.vcxproj 2023-05-04 17:21:05 >@@ -137,6 +137,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> >@@ -154,6 +155,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> >@@ -173,6 +175,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> >@@ -191,6 +194,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'"> >@@ -210,6 +214,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'"> >@@ -228,6 +233,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemGroup> >@@ -255,6 +261,7 @@ > <ClCompile Include="..\..\src\liblzma\common\easy_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\easy_encoder_memusage.c" /> > <ClCompile Include="..\..\src\liblzma\common\easy_preset.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\file_info.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_buffer_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_buffer_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_common.c" /> >@@ -268,15 +275,20 @@ > <ClCompile Include="..\..\src\liblzma\common\index_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\index_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\index_hash.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\lzip_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\microlzma_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\microlzma_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\outqueue.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_buffer_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_buffer_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\stream_decoder_mt.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_encoder_mt.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_common.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_encoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\string_conversion.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_size.c" /> >@@ -296,6 +308,7 @@ > <ClCompile Include="..\..\src\liblzma\lz\lz_encoder_mf.c" /> > <ClCompile Include="..\..\src\liblzma\rangecoder\price_table.c" /> > <ClCompile Include="..\..\src\liblzma\simple\arm.c" /> >+ <ClCompile Include="..\..\src\liblzma\simple\arm64.c" /> > <ClCompile Include="..\..\src\liblzma\simple\armthumb.c" /> > <ClCompile Include="..\..\src\liblzma\simple\ia64.c" /> > <ClCompile Include="..\..\src\liblzma\simple\powerpc.c" /> >@@ -344,8 +357,10 @@ > <ClInclude Include="..\..\src\liblzma\common\filter_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\filter_encoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\index.h" /> >+ <ClInclude Include="..\..\src\liblzma\common\index_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\index_encoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\memcmplen.h" /> >+ <ClInclude Include="..\..\src\liblzma\common\lzip_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\outqueue.h" /> > <ClInclude Include="..\..\src\liblzma\common\stream_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\stream_flags_common.h" /> >diff -ur xz-5.2.5/windows/vs2019/config.h xz-5.4.3/windows/vs2019/config.h >--- xz-5.2.5/windows/vs2019/config.h 2020-03-17 17:28:50 >+++ xz-5.4.3/windows/vs2019/config.h 2023-05-04 17:21:05 >@@ -21,6 +21,9 @@ > /* Define to 1 if arm decoder is enabled. */ > #define HAVE_DECODER_ARM 1 > >+/* Define to 1 if arm64 decoder is enabled. */ >+#define HAVE_DECODER_ARM64 1 >+ > /* Define to 1 if armthumb decoder is enabled. */ > #define HAVE_DECODER_ARMTHUMB 1 > >@@ -51,6 +54,9 @@ > /* Define to 1 if arm encoder is enabled. */ > #define HAVE_ENCODER_ARM 1 > >+/* Define to 1 if arm64 encoder is enabled. */ >+#define HAVE_ENCODER_ARM64 1 >+ > /* Define to 1 if armthumb encoder is enabled. */ > #define HAVE_ENCODER_ARMTHUMB 1 > >@@ -80,6 +86,9 @@ > > /* Define to 1 if you have the <limits.h> header file. */ > #define HAVE_LIMITS_H 1 >+ >+/* Define to 1 if .lz (lzip) decompression support is enabled. */ >+#define HAVE_LZIP_DECODER 1 > > /* Define to 1 to enable bt2 match finder. */ > #define HAVE_MF_BT2 1 >diff -ur xz-5.2.5/windows/vs2019/liblzma.vcxproj xz-5.4.3/windows/vs2019/liblzma.vcxproj >--- xz-5.2.5/windows/vs2019/liblzma.vcxproj 2020-03-17 17:28:54 >+++ xz-5.4.3/windows/vs2019/liblzma.vcxproj 2023-05-04 17:21:05 >@@ -230,6 +230,7 @@ > <ClCompile Include="..\..\src\liblzma\common\easy_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\easy_encoder_memusage.c" /> > <ClCompile Include="..\..\src\liblzma\common\easy_preset.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\file_info.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_buffer_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_buffer_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_common.c" /> >@@ -243,15 +244,20 @@ > <ClCompile Include="..\..\src\liblzma\common\index_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\index_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\index_hash.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\lzip_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\microlzma_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\microlzma_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\outqueue.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_buffer_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_buffer_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\stream_decoder_mt.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_encoder_mt.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_common.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_encoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\string_conversion.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_size.c" /> >@@ -271,6 +277,7 @@ > <ClCompile Include="..\..\src\liblzma\lz\lz_encoder_mf.c" /> > <ClCompile Include="..\..\src\liblzma\rangecoder\price_table.c" /> > <ClCompile Include="..\..\src\liblzma\simple\arm.c" /> >+ <ClCompile Include="..\..\src\liblzma\simple\arm64.c" /> > <ClCompile Include="..\..\src\liblzma\simple\armthumb.c" /> > <ClCompile Include="..\..\src\liblzma\simple\ia64.c" /> > <ClCompile Include="..\..\src\liblzma\simple\powerpc.c" /> >@@ -319,8 +326,10 @@ > <ClInclude Include="..\..\src\liblzma\common\filter_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\filter_encoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\index.h" /> >+ <ClInclude Include="..\..\src\liblzma\common\index_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\index_encoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\memcmplen.h" /> >+ <ClInclude Include="..\..\src\liblzma\common\lzip_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\outqueue.h" /> > <ClInclude Include="..\..\src\liblzma\common\stream_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\stream_flags_common.h" /> >@@ -352,4 +361,4 @@ > <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> > <ImportGroup Label="ExtensionTargets"> > </ImportGroup> >-</Project> >\ No newline at end of file >+</Project> >diff -ur xz-5.2.5/windows/vs2019/liblzma_dll.vcxproj xz-5.4.3/windows/vs2019/liblzma_dll.vcxproj >--- xz-5.2.5/windows/vs2019/liblzma_dll.vcxproj 2020-03-17 17:28:54 >+++ xz-5.4.3/windows/vs2019/liblzma_dll.vcxproj 2023-05-04 17:21:05 >@@ -138,6 +138,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> >@@ -155,6 +156,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> >@@ -174,6 +176,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> >@@ -192,6 +195,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|Win32'"> >@@ -211,6 +215,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseMT|x64'"> >@@ -229,6 +234,7 @@ > </Link> > <ResourceCompile> > <AdditionalIncludeDirectories>./;../../src/liblzma/common;../../src/common;../../src/liblzma/api;</AdditionalIncludeDirectories> >+ <PreprocessorDefinitions>HAVE_CONFIG_H</PreprocessorDefinitions> > </ResourceCompile> > </ItemDefinitionGroup> > <ItemGroup> >@@ -256,6 +262,7 @@ > <ClCompile Include="..\..\src\liblzma\common\easy_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\easy_encoder_memusage.c" /> > <ClCompile Include="..\..\src\liblzma\common\easy_preset.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\file_info.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_buffer_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_buffer_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\filter_common.c" /> >@@ -269,15 +276,20 @@ > <ClCompile Include="..\..\src\liblzma\common\index_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\index_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\index_hash.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\lzip_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\microlzma_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\microlzma_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\outqueue.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_buffer_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_buffer_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_decoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\stream_decoder_mt.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_encoder_mt.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_common.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\stream_flags_encoder.c" /> >+ <ClCompile Include="..\..\src\liblzma\common\string_conversion.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_decoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_encoder.c" /> > <ClCompile Include="..\..\src\liblzma\common\vli_size.c" /> >@@ -297,6 +309,7 @@ > <ClCompile Include="..\..\src\liblzma\lz\lz_encoder_mf.c" /> > <ClCompile Include="..\..\src\liblzma\rangecoder\price_table.c" /> > <ClCompile Include="..\..\src\liblzma\simple\arm.c" /> >+ <ClCompile Include="..\..\src\liblzma\simple\arm64.c" /> > <ClCompile Include="..\..\src\liblzma\simple\armthumb.c" /> > <ClCompile Include="..\..\src\liblzma\simple\ia64.c" /> > <ClCompile Include="..\..\src\liblzma\simple\powerpc.c" /> >@@ -345,8 +358,10 @@ > <ClInclude Include="..\..\src\liblzma\common\filter_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\filter_encoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\index.h" /> >+ <ClInclude Include="..\..\src\liblzma\common\index_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\index_encoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\memcmplen.h" /> >+ <ClInclude Include="..\..\src\liblzma\common\lzip_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\outqueue.h" /> > <ClInclude Include="..\..\src\liblzma\common\stream_decoder.h" /> > <ClInclude Include="..\..\src\liblzma\common\stream_flags_common.h" /> >@@ -381,4 +396,4 @@ > <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> > <ImportGroup Label="ExtensionTargets"> > </ImportGroup> >-</Project> >\ No newline at end of file >+</Project>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 46323
: 13317 |
13318
|
13370